Baixe o app para aproveitar ainda mais
Prévia do material em texto
Comandos Comandos for for aninhadosaninhadosmm ff for ( <expressão 1> ; <expressão 2> ; <expressão3> ) <comando> 1 comando Comando: 1 comando ... - qualquer comando -> pode ser comando for ... for (i = 1; i <= 10; i++) { scanf (“%d”, &n); f (j 1 j j ) ... for (i = 1; i <= 5; i++) for (j=1; j<=3; j++)for (j = 1;j < n; j++) printf(“%d ”, j); } for (j 1; j< 3; j++) printf(“%d %d”, i , j); ... 1 ... Ex: Processar as notas de 3 turmas de alunos. Para cada turma, ler inicialmente o número de alunos da turma. Depois para cada aluno ler suas 3 notas calcular e informar a Depois, para cada aluno, ler suas 3 notas, calcular e informar a média. No final, fornecer a média das notas de cada turma. //calcula media de alunos e media de uma turma #include <stdio h>#include <stdio.h> int main ( ) { float n1, n2, n3; // notas de um aluno i t l // d l d tint nalunos; // numero de alunos de uma turma float media, soma; int turma, al; // variavel de controle para turmas e alunos for (turma = 1; turma <=3 ;turma++) // para cada turma ( ) p { soma = 0; // soma as medias de todos os alunos desta turma scanf (“%d”, &nalunos); // obtem o número de alunos desta turma for (al = 1; al <= nalunos; al++) // para cada aluno desta turmafor (al 1; al < nalunos; al++) // para cada aluno desta turma { scanf(“%f %f %f”, &n1, &n2, &n3); // obtem as notas de um aluno media = (n1 + n2 + n3)/3; printf(“Media do al no %d %6 2f” al media)printf(“Media do aluno %d: %6.2f”, al, media); soma = soma + media; // acumula a media para esta turma } // do processamento de um aluno printf(“Media da turma %d: %7.2f”, turma , soma/nalunos); 2 } // do processamento de uma turma return 0; } Ex: Processar as notas dos alunos de uma turma. Ler o número de alunos da turma. Para cada aluno ler suas 3 notas com FOR calcular e informar a Para cada aluno, ler suas 3 notas com FOR , calcular e informar a média. No final, dar a média da turma. //calcula media de alunos e media de uma turma #include <stdio h>#include <stdio.h> int main ( ) { float nota; // notas de um aluno float media, soma, somanota; , , ; int nalunos, indnota turma, al; // variavel de controle para turmas e alunos for (turma = 1; turma <=3 ;turma++) // para cada turma { soma = 0; // soma as medias de todos os alunos desta turma scanf (“%d” &nalunos); // obtem o numero de alunos desta turmascanf (“%d”, &nalunos); // obtem o numero de alunos desta turma for (al = 1; al <= nalunos; al++) // para cada aluno desta turma { somanota=0; for ( indnota= 1; indnota <= 3; indnota++) {{ scanf(“%f , ¬a); // obtem as notas de um aluno somanota += nota; // acumula as notas de um aluno } media = somanota/3; i tf(“M di d l %d %6 2f” l di ) C l ?printf(“Media do aluno %d: %6.2f”, al, media); soma += media; // acumula a media para esta turma } // do processamento de um aluno printf(“Media da turma %d: %7.2f”, turma , soma/nalunos); } // do processamento de uma turma Como resolver se o número de alunos da turma ã é h id ? 3 } // do processamento de uma turma return 0; } não é conhecido Comandos iterativosComandos iterativosComandos iterativosComandos iterativos •• para ... p •• enquanto ... •• faça ... enquanto ... 4 Comando Comando whilewhile enquanto <condição> while <condição> Pseudolinguagem Linguagem C enquanto <condição> <comando > while <condição> <comando > 1 m d condição F 1 comando d V comando 5 ... a = 6; b = 0; Exemplos 6 0... a = 1; while (a < 5) a = a + 1; while ((a - 2) > (b + 1)) { printf(“%d %d”, a , b); 6 0 5 0 4 0a = a + 1; printf(“%d”, a); ... a = a - 1; } printf(“%d”, a); 5 4 0 3 ... ... ... for (a = 1; a <= 5; a++) printf(“%d”, a); a = 1; while (a <= 5) { ... a = 0; while (a < 5) { 1 2 1 2 3{ printf(“%d”, a); a = a + 1; } { a = a + 1; printf(“%d”, a); } 3 4 5 3 4 5}printf(“%d”, a);... } printf(“%d”, a);... 5 6 5 5 6 Valor de a antes e depois do comando é diferente!!! Comando Comando whilewhile : sintaxe: sintaxe while (expressão condicional) { ATENÇÃO: as chaves só são obrigatórias quando // comando(s) a serem repetidos } obrigatórias quando mais de um comando for controlado pelo while (laço de } // comandos após o while ( ç repetição). 1. A condição definida em expressão condicional é avaliada: 9 se verdadeira: i bloco de comandos é executado;i- bloco de comandos é executado; ii-retorna ao cabeçalho 9 se falsa: i-encerra comando whilei-encerra comando while. Observação: A avaliação da condição do comando while ocorre antes do início do trecho a ser repetido: bloco subordinado pode não ser executado nenhuma vez! 7 p ... ExemplosExemplos Utilização de variável inteira simulando booleana O mesmo que testar se variável é ... segue = 1; while (segue) { ... s = 0; f(“%d” & ) diferente de zero. { scanf(“%d”, &a); if (a) printf(“%d”, a); l scanf(“%d”, &a); while (a) { else segue = 0; } printf(“%d”, a); s = s + 1; scanf(“%d”, &a);... ... parar = 0; ( , ); } printf(“%d”, s); ... while (!parar) { scanf(“%d”, &a); if (a != 0) ... 1a f t t dif (a != 0)printf(“%d”, a); else parar = 1; } • 1a vez que a for testado já deve ter um valor; • s informa quantos valores 8 } ... s informa quantos valores foram lidos. Ex: Processar as notas dos alunos de uma turma. Para cada aluno, ler suas 3 notas, calcular e informar a média. Para encerrar entra a primeira nota com valor superior a 100, logo não válido válido. No final, informar a média da turma. //Processa notas dos alunos de uma turma #include <stdio.h>#include <stdio.h> int main ( ) { float n1, n2, n3; //notas de um aluno float media, soma; int al; //variavel de contar alunos n1 = 1; // inicializar em qualquer valor menor ou igual 100 0 l 0soma = 0; al = 0; while (n1 <= 100) { scanf(“%f %f %f” &n1 &n2 &n3); Calcula média da n t inválidscanf( %f %f %f , &n1, &n2, &n3); // obtem as notas de um aluno media = (n1 + n2 + n3)/3; soma = soma + media; nota inválida ; al = al + 1; printf(“Media do aluno %d : %6.2f”, al, media); } // do processamento de um aluno f(“ %f / ) 9 printf(“Media da turma: %f”, soma/al); return 0; } Ex: Processar as notas dos alunos de uma turma. Para cada aluno, ler suas 3 notas, calcular e informar a média. Para encerrar entrar com primeira nota >100. No final, informar a média da turma. //Calcula media de alunos Igual ao exemplo anterior, exceto por parar quando for lida a primeira nota com valor zero (não é nota válida, é só um sinal). #include <stdio.h> int main ( ) { float n1 n2 n3; // notas de um alunofloat n1, n2, n3; // notas de um aluno float media, soma; int al; // variavel de contar alunos soma = 0; al = 0; scanf (“%f %f %f” &n1 &n2 &n3); // obtem as notas do primeiro alunoscanf (“%f %f %f”, &n1, &n2, &n3); // obtem as notas do primeiro aluno while ((n1>= 0) && (n1<= 100)) { media = (n1 + n2 + n3) / 3;( ) soma = soma + media; al = al + 1; printf(“Media do aluno %d: %7.2 “, al, media); scanf (“%f %f %f”, &n1, &n2, &n3); // obtem as notas do proximo alunoscanf ( %f %f %f , &n1, &n2, &n3); // obtem as notas do proximo aluno } // fim do processamento de um aluno printf(“\nMedia da turma: %7.2f\n”, soma/al); return 0; } 10 } Cuidado a tomar: se o ‘sinal de parada’ faz ou não parte dos dados. Comando do...Comando do...whilewhile faça do Pseudolinguagem Linguagem C ç <comando > enquanto <condição> <comando > while <condição>enquanto <condição> while <condição>1 m d comando 1 comando V condição V F 11 F ... ExemplosExemplos ... achou = 0; // 0 = falso 1 ... do a = 0; do { 1 do { scanf(“%d”,&numero); i tf(“%d” ) 1 2 3 { scanf(“%d”,&numero); printf(“%d”, numero) }a = a + 1; printf(“%d”, a); } hil ( < 5) printf(“%d”, numero); if (numero == 250) achou = 1; } 3 4 5 } while (numero != 250); while (a < 5); ... } while ( ! achou); // com achou = 1 pára ... for (a = 1; a<=5; a++) ... ... 1 for (a = 1; a<=5; a++) printf(“%d”, a); do { scanf(“%d”, &numero); i tf(“%d” ) a = 1; do { printf(“%d” a); 1 2 3 printf(“%d”, numero); printf(‘Outro ? (1 = sim / 0 = nao) ’); scanf(“%d”, &resposta) } printf(“%d”, a); a = a + 1; } while (a <= 5) 3 4 5 12 } while (resposta == 1); ... while (a <= 5) printf(“%d”, a);... 5 6 ExemploExemplo //escreve 20 vezes Bom dia #include <stdio.h> #include <stdlib.h> //para o comando de limpar a tela int main ( ) {{ int cont,i; system("color f1"); cont = 0;cont = 0; do { for (i=1;i<=cont;i++) printf(" "); p ( ); printf("Bom Dia !!!\n"); cont = cont + 1; } hil ( t 20)while (cont < 20); system("cls"); //Limpa tela return 0; } 13 } /*Programa Peso_ideal, utilizando o do-while como recurso para consistência do sexo informado: */ #include <stdio.h> #include <stdlib.h> // para usar o system(“cls") #include <ctype.h> // para usar toupper int main() {{ float altura,pesoideal; char sexo; dodo { // laço para só ir adiante qundo sexo informado for correto printf("digite o sexo M/F\n"); scanf(" %c", &sexo); // branco antes do %c faz com que ignore return t ( )sexo = toupper(sexo); } while (sexo != 'M' && sexo != 'F'); printf("digite a altura\n"); scanf("%f",&altura);scanf( %f ,&altura); if (sexo=='M') pesoideal = altura*72.7 - 58; else id l lt *62 1 44 7pesoideal = altura*62.1 - 44.7; printf("seu peso ideal é %f/n",pesoideal); printf("o sexo eh %c\n",sexo); getchar(); 14 getchar(); system(“cls"); return 0; } Comando Comando whilewhile Diagramas de sintaxe while expressão comandop comando Comando Comando do...do...whilewhile do comando expressãowhile 15 Comparação entre os Comparação entre os pp Comandos de RepetiçãoComandos de Repetição comando verifica condição repetições Antes da execução for início 0 ou + Número de repetições é conhecidoconhecido while início 0 ou + (?) Número de repetições não é ( ) conhecido Número de repetições não é do-while final 1 ou + (?) repetições não é conhecido e pelo menos uma execução deve 16 execução deve ocorrer //gera linhas de tracos, quantas o usuario desejar #include <stdio.h> int main ( ) { int i, ch; h 1 // 1 ich = 1; // 1 = sim while (ch) { i = 1; //quando ch for 0, while vai parar i = 1; while (i <= 80) { printf(“-”); // escreve uma linha com 80 caracteres ‘-’ printf( - ); i = i + 1 } // fim do segundo while dodo { printf(“\nOutra ? (1 = sim / 0 = nao) “); scanf (“%d” , &ch); // é ( , ); } while (ch < 0 || ch >1 ); } // fim do primeiro while t 0 // repete leitura até que //valor fornecido seja válido 17 return 0; } Comandos de RepetiçãoComandos de Repetiçãopp na Programação Estruturadana Programação Estruturada ó • Comandos de repetição só podem ser interrompidos por alterações previstas p p ç p nas suas expressões • A variável de controle do FOR só deve • A variável de controle do FOR só deve ser alterada pela operação do cabeçalho • O uso de break para interromper repetições é absolutamente vetadorepetições é absolutamente vetado 18 1 – Complete o programa abaixo, de forma que os números pares entre 10 e 100 sejam gerados, somados e a que soma obtida seja informada na tela Para isto utilize o comando while o comando do while informada na tela. Para isto, utilize o comando while, o comando do_while e o comando for. A tela de execução do programa deve ser como mostrada abaixo. /* soma pares e mostra equivalências entre for, while e do while: */ #include <stdio.h> #include <stdlib.h> int main ( )nt ma n ( ) { system("color f1"); // muda cor neste comando!!! int par, soma; // usando while:// usando while: ........... // usando do while: ........... // usando for:// usando for: ............ return 0; } 19 /* soma pares e mostra equivalências entre for, while e do while: */ #include <stdio.h> int main ( ) { i t int par, soma; // usando while: soma = 0; par = 10; // valor inicial hil ( 100)while (par <=100) { soma = soma + par; par=par + 2; } // usando do while: } printf("\n\nWhile - soma = %d", soma); soma = 0; par = 10; // valor inicialpar = 10; // valor inicial do { soma = soma + par; par=par + 2; // usando for: p p ; } while (par <=100); printf("\n\nDo-while - soma = %d", soma); f ( 10 0 100 2)for ( par = 10, soma = 0; par <=100; par=par + 2) soma = soma + par; printf("\n\nFor - soma = %d\n\n", soma); 20 return 0; }
Compartilhar