Documente Academic
Documente Profesional
Documente Cultură
Estruturas de Repetição
3.1 Laços
Computadores são frequentemente usados para repetir uma mesma operação muitas ve-
zes. Para fazer isso, utiliza-se um comando de repetição. Um comando de repetição faz
com que um comando ou um conjunto de comandos seja executado zero, uma ou mais
vezes. O conjunto de comandos que se repete em um programa é denominado de laço de
repetição (ou simplesmente laço) ou loop. Há dois tipos de laço no Scilab:
27
3.2 Laço Controlado Logicamente / UFRN-DCA - 26 de Abril de 2004 28
1.
-->i = i + 1
i =
2.
-->i = i + 1
i =
3.
-->i = i + 1
i =
4.
Solução: este programa realiza a tarefa de ler as notas de um aluno e calcular a sua média.
O programa deverá repetir esta tarefa cinco vezes (usando while). O contador é usado
para contar o número de repetições.
1 i = 1;
2 while i <= 5
3 nota1 = input("Digite a 1a. nota bimestral");
4 nota2 = input("Digite a 2a. nota bimestral");
5 nota3 = input("Digite a 3a. nota bimestral");
6 nota4 = input("Digite a 4a. nota bimestral");
7 media = (nota1 + nota2 + nota3 + nota4)/4;
8 printf("Media = %g\n",media);
9 i = i + 1;
10 end
11 printf("Fim do programa");
Resultado
Digite a 1a. nota bimestral-->7.5
Digite a 2a. nota bimestral-->8.2
Digite a 3a. nota bimestral-->8.3
Digite a 4a. nota bimestral-->7.2
Media = 7.8
Digite a 1a. nota bimestral-->6.5
Digite a 2a. nota bimestral-->6.2
Digite a 3a. nota bimestral-->8.2
Digite a 4a. nota bimestral-->7.0
Media = 6.975
Digite a 1a. nota bimestral-->8.2
Digite a 2a. nota bimestral-->7.8
Digite a 3a. nota bimestral-->4.8
Digite a 4a. nota bimestral-->8.3
3.2 Laço Controlado Logicamente / UFRN-DCA - 26 de Abril de 2004 29
Media = 7.275
Digite a 1a. nota bimestral-->6.5
Digite a 2a. nota bimestral-->7.1
Digite a 3a. nota bimestral-->8.3
Digite a 4a. nota bimestral-->6.8
Media = 7.175
Digite a 1a. nota bimestral-->9.1
Digite a 2a. nota bimestral-->8.5
Digite a 3a. nota bimestral-->9.3
Digite a 4a. nota bimestral-->9.5
Media = 9.1
Fim do programa
Comentário.
O programa começa inicializando a variável i com o valor um (linha 1). O laço while
incrementa o valor da variável i com o valor de um toda vez que o corpo do laço (linhas
3-9) é executado. Depois que o corpo do laço tem sido executado cinco vezes, a variável
i possui valor seis e a expressão i <= 5 é falsa. Por causa disso o laço termina e o
programa passa a executar a linha seguinte imediatamente após o fim do laço (que é a
linha 11).
20.
-->x = 2.5
x =
2.5
-->soma = 0
soma =
0.
-->soma = soma + x
soma =
2.5
-->soma = soma + x
soma =
5.
Qual o valor da variável soma após repetir a execução do último comando mais duas
vezes?
Solução:
1 cont= 1;
2 soma = 0;
3 while cont <= 100
4 soma = soma + cont;
5 cont = cont + 1;
6 end
7 printf("Soma total = %g\n",soma);
Resultado
Soma total = 5050
Exercício resolvido 3.3.1. Elabore um programa para escrever todos os números pares
inteiros entre 1 e 50.
Solução:
1 for i=2:2:50
2 printf("%g ",i);
3 end
Resultado
2 4 6 8 10 12 14 16 18 20 22 24 26 28 30 32 34 36 38 40 42 44 46 48 50
Comentário. O primeiro número par é 2, logo o variável de controle deve iniciar com
2. Porque os números devem ser escritos de dois em dois, o passo deve ser igual a 2. O
valor final na variável de controle é, obviamente, 50.
1 fat = 1;
2 for cont=2:5
3 fat = fat * cont;
4 end
5 printf("O fatorial de 5 é igual a %g\n",fat);
6
Resultado
O fatorial de 5 é igual a 120
Comentário. Note que a cada interação do laço, a variável fat assume os seguintes
valores
Exercício resolvido 3.3.3. Elabore um programa para calcular o fatorial para qualquer
valor n fornecido pelo usuário. Sabendo que:
• N ! = 1 × 2 × 3 × . . . × (N − 1) × N ;
• 0! = 1, por definição.
Solução:
a b r(resto)
544 119 68
119 68 51
68 51 17
51 17 0
17 0
1 a = input("Digite um número");
2 b = input("Digite um número");
3 r = 1;
4 while r <> 0
5 r = modulo(a, b);
6 a = b;
7 b = r;
8 end
9 printf("O M.D.C. é %g\n",a);
Este programa escreve quatro vezes o caracter x em uma linha como segue:
xxxx
Pode-se usar laços aninhados para produzir diversas linhas de xxxx, conforme ilustra do
no seguinte exemplo:
Exercício resolvido 3.5.1. O seguinte programa gera uma sequencia de quatro x’s por
linha. O número de linhas é digitado pelo usuário.
O próximo programa escreve a tabuada de 1 até 10. Este programa usa o string de
formatação %f em vez de %g para que os dados permaneçam alinhados na tabela da
tabuada. O string de formatação %f permite especificar o número de caracteres que será
ocupado pelo dado escrito com printf e também o número de dígitos depois do ponto
decimal. Por exemplo, o string %5.2f escreva um número ocupando cinco caracteres
com dois dígitos depois do ponto decimal. Exemplo:
-->a = 223.345547867783;
-->printf("%5.2f",a);
23.35
Exercício resolvido 3.5.2. Elaborar um programa para escrever a tabuada de 1 até 10.
1 printf(" 1 2 3 4 5 6 7 8 9 10\n");
2 printf(" ------------------------------------------------\n");
3 for i=1:10
4 printf("%2.0f ",i);
5 for j = 1:10
6 printf("%3.0f ",i*j);
7 end
8 printf("\n");
9 end
Resultado
1 2 3 4 5 6 7 8 9 10
------------------------------------------------
1 1 2 3 4 5 6 7 8 9 10
2 2 4 6 8 10 12 14 16 18 20
3 3 6 9 12 15 18 21 24 27 30
4 4 8 12 16 20 24 28 32 36 40
5 5 10 15 20 25 30 35 40 45 50
6 6 12 18 24 30 36 42 48 54 60
7 7 14 21 28 35 42 49 56 63 70
8 8 16 24 32 40 48 56 64 72 80
9 9 18 27 36 45 54 63 72 81 90
10 10 20 30 40 50 60 70 80 90 100
3.5 Laços Aninhados / UFRN-DCA - 26 de Abril de 2004 35