Escolar Documentos
Profissional Documentos
Cultura Documentos
COMPUTADORES:
Instruções de controle:
estruturas de repetição
Galeno J. de Sena
UNESP / Guaratinguetá / Brazil
(galeno.sena@unesp.br)
Instrução while:
Estrutura algorítmica:
enquanto (<condição>) faça
início Estrutura enquanto:
<instrução_1>; ➢ O bloco contendo as instruções
<instrução_2>; será executado repetidamente
... enquanto a <condição> for
<instrução_n>; verdadeira
fim; ➢ Laço de repetição, laço de
iteração, loop, looping, ...
Instrução while:
Forma Geral (sintaxe):
while (<condição>)
<bloco de instruções>
<bloco de instruções>:
<condição>: expressão { <instrução_1>;
relacional ou lógica <instrução_2>;
...
<instrução_n>; }
Instrução do-while:
Forma Geral
do
(sintaxe): <bloco de instruções>
while (<condição>);
<bloco de instruções>:
<condição>: expressão { <instrução_1>;
relacional ou lógica <instrução_2>;
...
<instrução_n> }
do
<bloco de instruções>
while (<condição>);
Semântica:
1. O <bloco de instruções> é
executado
2. A <condição> é avaliada
3. Se o resultado for verdadeiro:
O controle retorna ao passo 1
4. Se o resultado for falso:
O controle é desviado para a
instrução seguinte ao do-while
<bloco de instruções>:
<condição>: expressão { <instrução_1>;
relacional ou lógica <instrução_2>;
...
<instrução_n>; }
1. A expressão de <inicialização> é
executada: a variável contadora é
inicializada
2. A <condição> é avaliada
3. Se o resultado da avaliação for falso:
O controle será desviado para a
instrução seguinte ao for
4. Se o resultado for verdadeiro:
a. O <bloco de instruções> será
executado
b. A expressão de <atualização> é
executada: incremento ou decremento
da variável de controle
c. O fluxo de execução retorna ao
passo 2
© UNESP/Sena, G. J. PC-IC-2021 FEG/UNESP
Instruções de controle:
Estruturas de repetição: laço for
Exemplo:
Gera uma sequência de inteiros de 1 a n
#include <stdio.h>
int main()
{
int i, n;
printf("\nEntre com n: \n");
scanf("%d", &n);
// gera sequência de 1 a n
puts("Sequencia: ");
for (i=1; i<=n; i++) {
printf("%d\n", i);
}
}
Exemplo:
Gera a tabuada de um
valor n (1<=n<=9)
// tabuada de n, 1 <= n <= 9
#include<stdio.h>
#include<stdlib.h>
main() {
int i, n; //declaração de variáveis
// entrada de n
do {
printf("\nEntre com n (entre 1 e 9): ");
scanf("%d", &n);
} while(n<1 || n>9);
// gera tabuada
printf("\nTabuada de %d: \n", n);
for (i = 1; i <=10; i++)
printf("\n%2d x %2d = %2d" , n, i, n*i);
}
© UNESP/Sena, G. J. PC-IC-2021 FEG/UNESP
Instruções de controle:
Estruturas de repetição: laço for
Exemplo:
Gera a saída dos múltiplos de 4, no intervalo: [4,100]
#include<stdio.h>
main() {
int i; // variável contadora
// gera e mostra os múltiplos
for (i = 4; i<=100 ; i += 4) {// incrementa de 3 em 3.
printf("%3d\t", i);
}
}
Exemplo:
O laço for mais interno é executado
// for's "aninhados" (encaixados) repetidamente, para cada iteração do laço
// nested for loops for mais externo!
#include <stdio.h>
int main() {
int i, j; // declaração
// estruturas for "aninhadas"
for (i=0; i<2; i++) {
for (j=0; j<3; j++) {
printf("i = %d \t j = %d\n", i, j);
}
}
}
Exemplo:
Programa que mostra o uso de uma variável do tipo char como
variável contadora em um laço for
#include<stdio.h>
/* mostra as letras minúsculas/maiúsculas
com os respectivos códigos ASCII */
main()
{
char ch, CH;
for (ch = 'a', CH = 'A'; ch <= 'z', CH <= 'Z'; ch++, CH++) {
printf("\nCaractere: %c Codigo (ASCII): %d", CH, (int) CH);
printf("\t\tCaractere: %c Codigo (ASCII): %d", ch, (int) ch);
}
}
Instrução break:
Finaliza a execução de um laço de repetição, desviando o controle para o
primeiro comando subsequente ao laço (ou, equivalentemente, para fora
do laço)
o No caso de várias estruturas de repetição “aninhadas”, o comando
break transferirá o controle para fora do laço que o contém, mas não
para fora de todas as estruturas de repetição externas
o Laços de repetição: while, do-while, for; utilizado também para sair de
um switch
#include <stdio.h>
#include <math.h>
main() {
int n, i;
float r, v;
// número de esferas
Exemplo: printf("Quantas esferas? ");
Cálculo do volume scanf("%d", &n);
i = 1;
de n esferas, // calcula volumes de n esferas
interropendo-se a while (i <= n) {
// raio da i-ésima esfera
execução se raio <= 0 printf("Raio: ");
scanf("%f", &r);
if (r <= 0) {
puts("\nRaio invalido!");
break; // sai do laço while
}
// cálculo/saída do volume
v = (4./3.)*acos(-1.0)*pow(r,3); // pi=arccos(-1)
printf("Volume da %da esfera = %.2f\n", i, v);
i++;
}
}
Instrução continue:
Durante a execução de um laço de repetição, caso o controle encontre
uma instrução continue, o restante do <bloco de instruções> do laço será
ignorado:
o Estruturas com while/do-while: o controle é desviado para a execução
da expressão de <condição> do laço
o Estrutura com for: o controle é desviado inicialmente para a execução
da expressão de <atualização> do laço e, depois, para a expressão de
<condição>