Baixe o app para aproveitar ainda mais
Prévia do material em texto
Revisão: Uso Revisão: Uso de seleção condicionalde seleção condicionalçç 9Condicional Simples : if ¾ execução de comando (simples ou composto) depende de 1 condição: pode ou não ser executado. 9Seleção Dupla : if else9Seleção Dupla : if-else ¾ 2 comandos (simples ou composto), cuja execução é mutuamente exclusiva: nunca acontece de seremmutuamente exclusiva: nunca acontece de serem executados juntos ou de nenhum dos 2 ser executado. 9Seleção múltipla : switchç m p ¾ grupos de 1 ou mais comandos cuja decisão de execução depende da comparação de um valor obtido com diversos possíveis valores pré-estabelecidos (+ de 2).p p ( ) ¾ Adequado para a implementação de menus. ¾ Indequado para associar comandos a intervalos ou diversos valores 1 Exercícios feitosExercícios feitosExercícios feitosExercícios feitos E 1 E 1 F •• Ex1: Ex1: Fazer um programa para imprimir o conceito de um aluno, dada a sua nota. Supor notas inteiras somente. O critério para conceitos é o seguinte:p g • nota inferiores a 6 - conceito D t 6 7 it C• notas 6 e 7 - conceito C • notas 8 e 9 - conceito B • nota 10 - conceito A 2 Define conceito Define conceito Define conceito Define conceito // uso de switch case:// uso de switch case: switch (nota) { case 0: case 1: case 2: case 3: case 4: case 5:conceito = ‘D’case 5:conceito = D break; case 6: case 7: conceito = ‘C’ break;break; case 8: case 9: conceito = ‘B’ break; 10 it ‘A’case 10: conceito= ‘A’; break; default: printf(“Nota informada invalida!”); // não precisa break }} 3 Mas se as notas são em reais? Mas se as notas são em reais? Mas se as notas são em reais? Mas se as notas são em reais? // so de ifs aninhados para cobrir o inter alo// uso de ifs aninhados para cobrir o intervalo : if (nota >= 0 && nota < 6) conceito= ‘D'; else if (nota >= 6 && nota < 7) conceito= ‘C’; else if (nota >= 7 && nota < 9) conceito= ‘B’;; else if (nota >= 9 && nota <= 10) conceito= ‘A’;co ce to ; else printf(‘Nota invalida!’); 4 Problema simples:Problema simples: a partir da média de um aluno informar se foi aprovado ou reprovadoaluno, informar se foi aprovado ou reprovado Algoritmo UmConceitoAlgoritmo UmConceito { Informa se um aluno foi ou não aprovado, sendo dada a sua média }dada a sua média } entrada: média saída: ‘Aprovado’ ou ‘Reprovado’p p 1. Ler média 2. Se média >= 6,0 escrever ‘Aprovado’ senão escrever ‘Reprovado’ 3. Terminar. 5 Mesmo problema em escala maior:Mesmo problema em escala maior: a partir da média dos alunos de uma turma, informar p se foram aprovados ou reprovadosAlgoritmo AprovadoReprovado { Informa se os alunos foram ou não aprovados, sendo dadas suas médias } { supor 5 alunos na turma }{ supor 5 alunos na turma } entrada: n1, n2, n3, n4, n5, med1, med2, med3, med4, med5 {numeros/médias} saída: para cada aluno, numero e ‘Aprovado’ ou ‘Reprovado’ 1. Ler n1, med1, n2, med2, n3, med3, n4, med4, n5, med5 2. Se med1 >= 6,0 escrever n1, ‘Aprovado’ senão escrever n1, ‘Reprovado’ 4 S d2 > 6 04. Se med2 >= 6,0 escrever n2, ‘Aprovado’ senão escrever n2, ‘Reprovado’ 6 Se med3 >= 6 06. Se med3 >= 6,0 escrever n3, ‘Aprovado’ senão escrever n3, ‘Reprovado’ 8. Se med4 >= 6,0 , escrever n4, ‘Aprovado’ senão escrever n4, ‘Reprovado’ 10. Se med5 >= 6,0 6 escrever n5, ‘Aprovado’ senão escrever n5, ‘Reprovado’ 11. Terminar. mmesmo exercício – solução usando somente duas variáveis Algoritmo AprovadoReprovado entradas : numeros, médias saídas: para cada aluno, numero e ‘Aprovado’ ou ‘Reprovado’ 1 Ler numero média1. Ler numero, média 2. Se média >= 6,0 escrever numero, ‘Aprovado’ senão escrever numero, ‘Reprovado’ 3. Ler numero, média 4. Se média >= 6,0 escrever numero ‘Aprovado’ senão escrever numero ‘Reprovado’escrever numero, Aprovado senão escrever numero, Reprovado 5. Ler numero, média 6. Se média >= 6,0 escrever numero, ‘Aprovado’ senão escrever numero, ‘Reprovado’ 7. Ler numero, média 8. Se média >= 6,08. Se média 6,0 escrever numero, ‘Aprovado’ senão escrever numero, ‘Reprovado’ 9. Ler numero, média 10 S édi > 6 0 7 10. Se média >= 6,0 escrever numero, ‘Aprovado’ senão escrever numero, ‘Reprovado’ 11. Terminar. AlgoritmoAlgoritmo AprovadoReprovadoAprovadoReprovadogg p pp p entradas : numeros, médias saídas: para cada aluno, numero e ‘Aprovado’ ou ‘Reprovado’ 1. Repetir 5 vezes: 1.1 Ler numero, média 1 2 S édi 6 01.2. Se média >= 6,0 escrever numero, ‘Aprovado’ senão escrever numero ‘Reprovado’senão escrever numero, ‘Reprovado’ 2 Terminar2. Terminar. Estruturas de repetição 8 Estruturas de repetição Comandos de repetição (loop)Comandos de repetição (loop) Obj ti ti d ú fi it d Comandos de repetição (loop)Comandos de repetição (loop) Objetivo: repetir comando um número finito de vezes Controle da repetição 9 contagem: • repetir um determinado número de vezes 9 teste:9 teste: • repetir enquanto uma condição não for atingidag • repetir até uma condição ser atingida ComandosComandos iterativositerativosComandosComandos iterativositerativos •• para ... (nro. vezes)p ( ) •• enquanto (condição) ... •• faça ... enquanto (condição) 10 Comando de repetiçãoComando de repetição para número fixo de repetiçõespara número fixo de repetiçõespara núm ro f o r p t çõ spara núm ro f o r p t çõ s Pseudolinguagem para (<atribuição(ões)> ; <condição_do_laço>;<incremento(s)/decremento(s)>) <comando> g g <comando> 1 comando atribuição(ões): inicialização(ões) da(s) variável(eis) de controle; condição_do_laço: condição que controla a execução do laço; 11 incremento(s)/decremento(s): incrementos e/ou decrementos da(s) variável(eis) de controle. AlgoritmoAlgoritmo AprovadoReprovadoAprovadoReprovadogg p pp p entradas : numeros, médias saídas: para cada aluno, numero e ‘Aprovado’ ou ‘Reprovado’ Cabeçalho que controla a repetição 1.Para (contador = 1; contador <=5 ; contador + 1) início Comando a ser ç q p ç ler numero, média se média >= 6,0 repetido escrever numero, ‘Aprovado’ senão escrever numero, ‘Reprovado’ fim 2. Terminar. 12 Comando de repetiçãoComando de repetição para número fixo de repetiçõespara número fixo de repetiçõespara núm ro f o r p t çõ spara núm ro f o r p t çõ s Li C 1 comando Linguagem C for ( <expressão 1> ; <expressão 2> ; <expressão3> ) ( p ; p ; p ) <comando> E ã 1 l d i iá i d Expressão 1: envolvendo uma ou mais variáveis de controle que na primeira execução do comando serão inicializadas inicializadas. Expressão 2: resultado examinado a cada tentativa de execução do comando, para definir quando ele ç p q deverá parar de ser executado. Expressão 3: incrementos/decrementos de variáveis. Só t d d d ã d d 13 Só executados da segunda execução do comando em diante. Comando de repetição – número fixo de vezes for (expressão 1; expressão 2; expressão3) C ( p p p ) comando; inicializações condição ? V comando F incremento Linguagem g g algorítmica para (inicialização(ões); condição; condição; incremento(s)/decremento(s)) comando // Determina se alunos foram aprovados ou reprovados #include <stdio h>#include <stdio.h> int main ( ) { int contador, numaluno; Controle de repetiçãoComando a ser { int contador, numaluno; float media; for (contador = 1; contador < 6; contador ++) repetição repetido ( ; ; ) { scanf (“%d”, &numaluno); scanf(“%f”, &media); if (media >= 6.0) printf (“O aluno %d foi aprovado”, numaluno); else printf (“O aluno %d foi reprovado”, numaluno); } t 0 15 return 0; }ExemplosExemplos //tabuada de multiplicacao do 5 #include <stdio.h> int main ( ) Utilização da int main ( ) { int i; for (i = 1; i <= 10; i++) variável de controle for (i = 1; i <= 10; i++) printf("%3d X %2d = %3d\n", i , 5, i*5); return 0; } no comando e após o for //apresenta minusculas, utilizando valor de posicao na tabela ASCII #include <stdio.h> } int main ( ) { int i; for (i = 97; i <= 122; i++) //97 e 122: posicoes iniciais e finais das minusculas printf("%3c", i); printf(”\nCaractere da tabela ASCII apos a ultima minuscula %c\n", i); 16 return 0; } //programa de teste #include <stdio.h> int main ( ) E lE lint main ( ) { int i, a, b; ExemploExemplo int i, a, b; float lido, soma; soma = 0; Utilização de variáveis e de scanf (“%d”, &a); scanf (“%d”, &b); for (i = a; i<=b + 7; i++) expressões no cabeçalho for (i = a; i<=b + 7; i++) { scanf (“%f”, &lido);( , ); printf(“\n%f”, lido); soma = soma + lido; } printf(“\n%10.2f”, soma); return 0; 17 return 0; } for (<expressão 1>; <expressão 2> ; <expressão 3> ) Comando de repetição para número fixo de repetiçõesComando de repetição para número fixo de repetições for (<expressão 1>; <expressão 2> ; <expressão 3> ) <comando> E 1 *inicialização(ões) de variável(eis) de controle realizadas Expressão 1 *inicialização(ões) de variável(eis) de controle realizadas apenas uma vez,ao ser iniciada a execução do for. Ex.: i = 1 ou k = 10 Expressão 2 teste de variável de controle realizado a cada iteração que E ã 3 á Expressão 2 teste de variável de controle realizado a cada iteração, que controla quando o for deve concluir. Se resultado da avaliação da expressão for zero, o for é encerrado. Ex.: j <= 10 Expressão 3 *incremento(s) ou decremento(s) de variável(eis) efetuados a cada nova tentativa de execução do for (a partir da segunda). Ex.: j++ ou i = i – 2 * M i d i i i li ã i Variável(eis) de controle: • tipo deve ser tipo primitivo * Mais de uma inicialização ou mais de um incremento/decremento, em um mesmo for, devem ser separados entre si por vírgula• tipo deve ser tipo primitivo • pode(m) ser utilizada(s) no comando; entre si por vírgula. Ex.: j = 1 i = 10 //inicializações 18 no comando; • não deve(m) ser alterada(s) no comando. j = 1 , i = 10 //inicializações j = j + 2 , i-- // increm. e decrem. //for usando duas variáveis #include <stdlib.h> #include <stdio.h> Exemplo int main ( ) { int i, j;Utilização de for (i = 1, j = 10; i <= 10; i++, j--) printf("\ni = %4d j = %4d", i , j); printf("\n\n"); (" ") mais de uma variável de system("PAUSE"); return 0; } controle Execução:Execução: 19 Comando de repetiçãoComando de repetição para número fixo de repetiçõespara número fixo de repetiçõespara núm ro f o r p t çõ spara núm ro f o r p t çõ s - número conhecido - for (i = -10; i<=10;i++) printf(“%3d” i);printf( %3d , i); ú d h id- número desconhecido - scanf ( “%d” &n );scanf ( “%d”, &n ); for (i = 1; i<= n; i++) { Mas o número de Repetições é definido ANTES do início do FOR { scanf(“%d”, &numero); printf(“%d “ numero); ANTES do início do FOR 20 printf( %d , numero); } Cálculo do FatorialCálculo do FatorialCálculo do FatorialCálculo do Fatorial //calcula fatorial #i l d < tdi h> Incrementando #include <stdio.h> int main ( ) { Decrementando{ int num, fat, i; scanf (“%d”, &num); f t 1 //calcula fatorial #include <stdio.h> i t i ( )fat = 1; for (i = 1; i<= num;i++) fat = fat * i; int main ( ) { int num fat i;fat fat i; printf ( “Fatorial = %d” , fat); return 0; } int num, fat, i; scanf (“%d”, &num); fat = 1; f (i i> 1 i )} for (i = num;i>= 1; i--) fat = fat * i; printf ( “Fatorial = %d” , fat); 21 printf ( Fatorial %d , fat); return 0; } Cálculo do fatorial de um Cálculo do fatorial de um número lidonúmero lidonúmero lidonúmero lido //calcula fatorial #i l d < tdi h>#include <stdio.h> int main ( ) { { int num, fat, i; scanf(“%d”, &num); if (num < 0)if (num < 0) fat = 0; // indicacao de que nao tem fatorial para negativo else { fat = 1; for (i= 2; i <= num; i++)for (i= 2; i <= num; i++) fat = fat * i; } 22 printf ( “Fatorial = %d” , fat); return 0; } Problema:Problema: Ler 4 valores inteiros e contar e apresentar quantos valores negativos foram lidosvalores negativos foram lidos. Problema:Problema: Calcular a idade média de um Calcular a idade média de um grupo de n pessoas. O programag p p p g deve ler quantas pessoas, ler suas idades e mostrar a médiasuas idades e mostrar a média. Problema:Problema: Ler 500 valores Ler 500 valores –– informar o informar o maior e sua maior e sua posição (ordem de posição (ordem de leitura)leitura)leitura).leitura). Problema:Problema: Imprimir Imprimir os números os números divisíveis divisíveis por 5 entre dois limites por 5 entre dois limites fornecidos e fornecidos e calcular seu calcular seu fornecidos, e fornecidos, e calcular seu calcular seu produtoproduto.. ExercícioExercícioExercícioExercício • Foram entrevistados 500 alunos de uma universidadeForam entrevistados 500 alunos de uma universidade. • De cada um deles foram colhidas as seguintes informações:informações: - o código do curso que frequenta - ( 1-engenharia; 2-computação; 3-administração) - a idade. • Faça um programa que processe estes dados e que f i t i f õforneça as seguintes informações: - número de alunos por curso; número de alunos com idade entre 20 e 25 anos por curso;- número de alunos com idade entre 20 e 25 anos, por curso; - qual o curso com menor média de idade. - qual a idade do aluno mais moço, e qual a do mais velho, e seuq ç q curso. 27 SoluçõesSoluções Procure resolver os exercícios Procure resolver os exercícios sem consultar as soluções. 28 /*Le 4 valores inteiros. Conta e apresenta quantos valores negativos foram lidos Entradas: quatro valores inteirosEntradas: quatro valores inteiros Saida: impressao da quantidade de numeros negativos lidos */ #include <stdlib.h> #include <stdio.h> int main( )int main( ) { int valor, conta_negativos, i; conta_negativos = 0; // inicializa com zero f ( ) g for (i = 1; i <=4; i++) { printf("Forneca um valor inteiro: "); scanf("%d" &valor);scanf( %d , &valor); if (valor < 0) conta_negativos++; // soma 1 } printf("\n Dos 4 valores lidos printf( \n Dos 4 valores lidos, %d sao negativos \n", conta_negativos); system("PAUSE"); return 0; }} /* Calcula a idade média de n pessoas Entradas: n idades de n pessoasEntradas: n, idades de n pessoas Saída: idade média das pessoas */ # include <stdio.h> # include <stdlib.h> ( )int main ( ) { int soma_idades, idade, contador, n; float media idades;float media_idades; soma_idades = 0; // inicializa acumulador em 0 printf("informe o nro de pessoas:"); scanf ("%d", &n); for (contador = 1; contador <= n; contador ++) { printf("informe idade %d :", contador); f ("%d" &id d )scanf ("%d", &idade); // vai acumulando idades lidas soma_idades = soma_idades + idade; } } // cast, para resultado ser real media_idades = (float) soma_idades/n; printf("\nA media das 5 idades lidas eh %.2f.\n", media_idades); system("pause"); system( pause ); return 0; } // t l d t i i i//entre valores, determina maior e sua posicao #include <stdio.h> int main ( ) {{ float n; // lido } float maior; // guarda o maior lido int posicao; // posicao do maior nos lidos int k; // variavel de controle do forint k; // variavelde controle do for scanf(“%f”, &n); // por enquanto o primeiro eh o maior maior = n; posicao = 1;posicao 1; for (k = 2; k <= 500; k++) { scanf(“%f”, &n); if (n >= maior) O que acontece se entre os números lidos if (n >= maior) { maior = n; posicao = k; existem valores iguais ?p ; } } // do for printf(“\nMaior lido: %7.2f na posicao %d\n”, maior posicao); 31 maior, posicao); return 0; } Algoritmo DivisiveisPorCinco ; Entradas: LimSup, LimInf S íd t d di i í i 5 t li it d dSaídas: todos os divisíveis por 5 entre os limites dados produto destes inícioc o 1. Ler (LimInf, LimSup); 2. se LimInf > LimSup então in erter os limitesentão inverter os limites 3. Inicializar o Produto em 1 4. Para K de limite inferior até o limite superiorp faça se K divisível por 5 então início 4 1 Escrever (K)4.1 Escrever (K) 4.2 acumular Produto fim 32 5. Escrever(Produto) 6. Fim //i i di i i i i t li it i f d i d t//imprime divisiveis por cinco entre um limite informado, mais seu produto #include <stdio.h> int main ( ) {{ int liminf, limsup; // limites long int produto; // produto int aux, k; // variaveis auxiliares f(“%d %d” &li i f &li ) // bt li itscanf(“%d %d”, &liminf, &limsup); // obter os limites if (liminf > limsup) // testa se limites estao em ordem correta { // inverte os valores dos limites aux = liminf;aux liminf; liminf = limsup; limsup = aux; } d t 1 // i i i li d d tproduto = 1; // inicializacao de produto for (k = liminf; k <= limsup; k++) if (k % 5 == 0) // se k for zero ? {{ printf(“\n%d”, k); produto = produto * k; } 33 printf(“\nProduto: %d”, produto); return 0; } //Alunos cursos e idades #include <stdio.h> int main ( ) { int idade; 34 int idade; int curso; // 1-engenharia; 2-computacao; 3-administracao int cont; // var. de controle do for int n1, n2, n3; // numero de alunos por curso int nrid1, nrid2, nrid3; //alunos entre 20 e 25 anos / curso i t id1 id2 id3 // d id d d lint id1, id2, id3; // soma das idades de alunos por curso float media1, media2, media3; //media das idades int meid1, meid2, meid3; // menor idade por curso int maid1, maid2, maid3; // maior idade por curso //inicializacao de contadores n1 =0; n2=0; n3=0; nrid1 = 0; nrid2 = 0; nrid3 = 0; id1=0; id2=0; id3=0; meid1=99; meid2=99; meid3=99; maid1=0; maid2=0; maid3=0; media1=0; media2=0; media3 = 0; for (cont = 1; cont <= 500; cont++) // ler e acumular valores {{ scanf(“%d %d”, &curso, &idade); switch (curso) { case 1: n1= n1 + 1 ; // soma alunos deste curso if (idade > 20 && idade < 25)if (idade >= 20 && idade <= 25) nrid1= nrid1 + 1; // quantos tem idade nos limites id1= id1 + idade; // soma idades deste curso para media if (idade < meid1) meid1 = idade; // quarda menor if (idade > maid1) maid1 = idade; // quarda maior ( ) ; q break; case 2: (...); break; ; case 3: (...); 34 break; ; } // fim do switch case } // fim do comando for // saida de dados printf(“\nAlunos por curso: %d %d %d”, n1, n2, n3); printf(“\nAlunos entre 20 e 25 anos: “); printf(“\n Engenharia : %d” nrid1); 35 printf( \n Engenharia : %d , nrid1); printf(“\n Computacao : %d”, nrid2); printf(“\n Administracao : %d”, nrid3); // Procurar curso com menor media de idade if ( 1 > 0) di 1 id1/ 1if (n1 > 0) media1=id1/n1; if (n2 > 0) media2=id2/n2; if (n3 > 0) media3=id3/n3; if ((media1 != 0) && (media1<=media2 && media1<=media3))if ((media1 ! 0) && (media1< media2 && media1< media3)) printf( “\nEngenharia tem a menor media de idades”); if ((media2 != 0) && (media2<=media1 && media2<=media3)) printf( “\nComputacao tem a menor media de idades”); if ((media3 != 0) && (media3<=media2 && media3<=media1))if ((media3 != 0) && (media3<=media2 && media3<=media1)) printf( “\nAdministracao tem a menor media de idades”); // procurar a idade do mais moco e do mais velho e seu curso if ((meid1 != 99) &&(meid1 <= meid2 && meid1 <= meid3 )) printf(“\nMais jovem Engenharia %d anos” meid1);printf( \nMais jovem – Engenharia - %d anos , meid1); if ((meid2 != 99) &&( (meid2 <= meid1 && meid2 <= meid3 )) printf(“\nMais jovem – Computacao - %d anos”, meid2); if ((meid3 != 99) &&( (meid3 <= meid2 && meid3 <= meid1 )) printf(“\nMais jovem Administracao %d anos” meid3);printf( \nMais jovem – Administracao - %d anos , meid3); if ((maid1 != 0) && (maid1 >= maid2 && maid1 >= maid3 )) printf(“\nMais velho – Engenharia - %d anos”, maid1); if ((maid2 != 0) && (maid2 >= maid1 && maid2 >= maid3 )) i tf(“\ M i lh C t %d ” id2) 35 printf(“\nMais velho – Computacao - %d anos”, maid2); if ((maid3 != 0) && (maid3 >= maid2 && maid3 >= maid1 )) printf(“\nMais velho – Administracao - %d anos”, maid3); return 0; }
Compartilhar