Baixe o app para aproveitar ainda mais
Prévia do material em texto
Comandos Comandos d d ld d lcondicionais e de seleçãocondicionais e de seleção Condicional • seleção simples • seleção dupla • seleção múltipla 1 Comando condicional simplesComando condicional simples C Linguagem algorítmica if ( expressão lógica ) comando ; se < expressão lógica > < comando >; < expressão lógica > verdadeira 1 só expressão lógica falsa < comando > comando < comando > 2 Comando condicional simplesComando condicional simples if ( expressão lógica ) C Linguagem algorítmica if ( expressão lógica ) { comando1; d se < expressão lógica > < comandoS >comandon; } < comandoS > < expressão lógica > verdadeira expressão lógica falsa < comando1 > + de 1 < comando2 > comando 3 Comando de seleção duplaComando de seleção dupla C se < expressão lógica >if (expressão lógica) Linguagem algorítmica p g < comando > senão < comando > ( p g ) comando; else comando; < expressão lógica > verdadeirafalsa < comando >< comando > 4 Comando de seleção duplaComando de seleção dupla C se < expressão lógica >if (expressão lógica) Linguagem algorítmica p g < comando > senão < comando > ( p g ) comando; else comando; < expressão lógica > verdadeirafalsa < comando1 >< comando1 > + de 1 < comando2 >< comando2 > comando 5 ‘If’ aninhados‘If’ aninhados if ( expressão lógica ) if (expressão lógica)comando; lcomando ; elsecomando; comando: comando: - comando simples - comando composto (entre chaves!)m mp ( ) Qualquer comando!Qualquer comando! Inclusive outro if Cuidado: - else sempre se refere ao if mais próximo! Solução para modificar: uso de chaves. 6 ‘Ifs’ encadeados‘Ifs’ encadeados If (< condição >) { if (< condição 1 >) if (< condição 2 >) if (< condição 3 >) < comando >; if (< condição >) if (< condição 3 >) < comando >; { < comandos >; if (< condição 1 >) if (< condição 2 >) if (< condição 3 >)} < comandos >; } if (< condição 3 >) < comando >; else d} Quaisquer comandos <comando>; else <comando>;Quaisquer comandoscomando ; 7 ‘If’ encadeados ‘If’ encadeados –– cuidado !cuidado ! if (< condição 1 >) if (< condição 1 >)( ç ) if (< condição 2 >) if (< condição 3 >) < comando >; ( ç ) if (< condição 2 >) { if (< condição 3 >)< comando >; else // do 2º if <comando>; if (< condição 3 >) < comando >; } else // do 2º if <comando>;if (< condição 1 >)if (< condição 2 >) { ATENÇÃO: ao aninhar- se ifs, usar chaves, se á i { if (< condição 3 >) < comando >; necessário, para que os elses correspondam aos ifs corretos ou para else <comando>; } aos ifs corretos ou para documentação. } else <comando>; 8 Em C:Em C: /* Obtem coordenadas e informa localização, utilizando if: */ #include <stdio.h> #include <stdlib.h>#include stdlib.h int main ( ) { float x , y; i tf("\ C d d ")printf("\n Coordenadas: x = "); scanf("%f", &x); printf(" e y = "); scanf("%f", &y); Refazer, d scanf( %f , &y);if ( x == 0 && y == 0 ) printf("\n Ponto na origem"); if ( x > 0 && y > 0 ) i tf("\ P t d t 1") usando encadeamento! printf("\n Ponto no quadrante 1"); if ( x < 0 && y > 0 ) printf("\n Ponto no quadrante 2"); if ( x < 0 && y < 0 )( y ) printf("\n Ponto no quadrante 3"); if ( x > 0 && y < 0 ) printf("\n Ponto no quadrante 4"); if ( 0 && ! 0 )if ( x == 0 && y != 0 ) printf("\n Ponto no eixo dos y"); if ( x != 0 && y == 0 ) printf("\n Ponto no eixo dos x");p ( ); printf("\n"); return 0; } 9 /* Obtem coordenadas e informa localização, utilizando if_else */ // identifica origem e eixosg { if ( x == 0 ) // x = 0: possibilidade de origem ou eixo y if (y == 0 ) // y também = 0: localizou origem i tf("\ P t i ")printf("\n Ponto na origem"); else // só pode ser eixo y printf("\n Ponto no eixo dos y"); else // x certamente é diferente de zero: não testa mais!else // x certamente é diferente de zero: não testa mais! if ( y == 0 ) // localizou eixo y printf("\n Ponto no eixo dos x"); else // só sobraram os quadrantes!!!q if ( x > 0 ) // quadrantes 1 ou 4, dependendo de y if ( y > 0 ) // quadrante 1 printf("\n Ponto no quadrante 1"); l // d 4 i ielse // quadrante 4, sem precisar mais testes printf("\n Ponto no quadrante 4"); else // x é < 0: sobraram quadrantes 2 e 3, // dependendo de y// dependendo de y if ( y > 0 ) printf("\n Ponto no quadrante 2"); else // sobrou x < 0 e y < 0: não precisa testarelse // sobrou x < 0 e y < 0: não precisa testar printf("\n Ponto no quadrante 3"); } 10 ExercícioExercícioExercícioExercício • Tendo como dados de entrada o sexo (M ou F) e a altura de uma pessoa (em (M ou F) e a altura de uma pessoa (em metros), informe o peso ideal (em kg) , sabendo que para homens o pesosabendo que para homens o peso ideal é obtido por altura x 72,7 - 58 e, lh lt 62 1 44 7para mulheres, por altura x 62,1 - 44,7. 11 Tendo como dados de entrada o sexo (M ou F) e a altura de uma pessoa (em metros), informe o peso ideal (em kg) , sabendo que para homens o peso ideal é obtido por altura x 72 7 - 58 e parapara homens o peso ideal é obtido por altura x 72,7 58 e, para mulheres, por altura x 62,1 - 44,7. Al it P Id lAlgoritmo PesoIdeal {Ler sexo e altura e calcular peso ideal} Entrada: sexo - M ou F - e altura (m); Saída: peso ideal (kg) 1 - início 2 - ler sexo 3 - ler altura 4 - se sexo = ‘m’ // pode aceitar maiúscula 4.1 pesoideal := altura * 72.7 - 584.1 pesoideal : altura 72.7 58 4.2 senão 4.2.1 pesoideal := altura * 62.1 - 44.7 // pode consistir sexo errado 5 - imprimir pesoideal5 - imprimir pesoideal 6 - fim 12 //Ler sexo e altura e calcular peso ideal: #include <stdio.h>#include stdio.h #include <stdlib.h> int main() { { float altura,pesoideal; char sexo; printf("digite o sexo (M/F):\n"); Se digita outro caractere???printf( digite o sexo (M/F):\n ); scanf("%c", &sexo); printf("digite a altura:\n"); scanf("%f" &altura); Imprime resultado... scanf( %f ,&altura); if (sexo=='M' || sexo=='m') pesoideal = altura*72 7 58;pesoideal = altura*72.7 - 58; else if (sexo=='f' || sexo=='F') pesoideal = altura*62.1 - 44.7; else printf("sexo informado inválido\n");else printf( sexo informado inválido\n ); printf("seu peso ideal é %.2f kg\n",pesoideal); return 0; }} 13 //Ler sexo e altura e calcular peso ideal: #include <stdio.h># nclude std o.h #include <stdlib.h> int main() { { float altura,pesoideal; char sexo; printf("digite o sexo (M/F):\n"); else {printf( digite o sexo (M/F):\n ); scanf("%c", &sexo); printf("digite a altura:\n"); scanf("%f" &altura); { printf("sexo informado inválido\n"); pesoideal = 0; }scanf( %f ,&altura); if (sexo=='M' || sexo=='m') pesoideal = altura*72 7 58; } if (pesoideal > 0) printf("seu peso ideal é %.2f kg\n",pesoideal); pesoideal = altura*72.7 - 58; else if (sexo=='f' || sexo=='F') pesoideal = altura*62.1 - 44.7; else printf("sexo informado inválido\n");else printf( sexo informado inválido\n ); printf("seu peso ideal é %.2f kg\n",pesoideal); return 0; }} 14 //Ler sexo e altura e calcular peso ideal: #include <stdio.h> #include <stdlib.h> //Ler sexo e altura e calcular peso ideal: #include <stdio.h> #include <stdlib.h> #i l d h // f l int main() { fl t lt s id l #include <ctype.h> // para usar funções toupper – maiúsculas – e tolower int main() { float altura,pesoideal; char sexo; printf("digite o sexo (M/F):\n"); scanf("%c", &sexo); { float altura,pesoideal; char sexo; printf("digite o sexo (M/F):\n"); scanf("%c" &sexo); ( , )printf("digite a altura:\n");scanf("%f",&altura); if ((sexo=='M') || (sexo=='m')) transformar minúscula em maiúscula ou vice versa scanf( %c , &sexo); printf("digite a altura:\n"); scanf("%f",&altura); if ( l ( ) ' ') // ( ( ) 'M‘)if ((sexo== M ) || (sexo== m ))pesoideal = altura*72.7 - 58; else if ((sexo=='f') || (sexo=='F')) pesoideal = altura*62.1 - 44.7; ls maiúscula ou vice-versaif ( tolower(sexo)=='m') // ou (toupper(sexo)=='M‘) pesoideal = altura*72.7 - 58; else if (tolower(sexo) =='f') pesoideal = altura*62.1 - 44.7;else { printf("sexo informado inválido\n"); pesoideal = 0; pesoideal altura 62.1 44.7; else { printf("sexo informado inválido\n"); pesoideal = 0;p} if (pesoideal > 0) printf("seu peso ideal é %.2f kg\n",pesoideal); system("pause"); pesoideal = 0; } if (pesoideal > 0) printf("seu peso ideal é %.2f kg\n",pesoideal); t 0 system( pause ); return 0; } return 0; } 15 Exercícios propostosExercícios propostosExercícios propostosExercícios propostos l • Fazer o algoritmo e programa C para calcular e informar as raízes de uma equação do 2º grau. Os valores das variáveis a b e c devem ser variáveis a, b e c devem ser fornecidos via teclado. 16 Raízes de equação do 20 grau início Ler A, B, C F A = 0 Disc ←B2 – 4.A.C B √ DFV Disc < 0 -B+√ D2.A R1 ← FV V -B-√ D 2 A R2 ← Escrever ‘não é eq. 2o grau’ E V Escrever 2.A Escrever ‘Raízes imaginárias’ Escrever R1, R2 fim17 Algoritmo Equação do Segundo Grau { informa as raízes de uma equação do segundo grau }{ q ç g g } entradas: os 3 coeficientes da equação saídas: as 2 raízes ou mensagens 1. Ler os 3 coeficientes 2. se o primeiro coeficiente for nulo escrever que não é eq. do segundo grau senão 2.1 calcular o discriminante 2 2 se o discriminante for menor que zero2.2 se o discriminante for menor que zero escrever que as raízes são imaginárias senão 2.2.1 calcular as 2 raízessenão 2.2.1 calcular as 2 raízes 2.2.2 escrever as raízes calculadas 3. Terminar 18 // informa as raizes de uma equacao do segundo grau #include<stdio.h> #include<math.h> int main ( ) { float a, b, c; // coeficientes da equacao float disc; // discriminantefloat disc; // discriminante float r1, r2; // raizes scanf(“%f”, &a); scanf(“%f”, &b); scanf(“%f”, &c);scanf( %f , &c); if (a == 0) { printf(“\nNao eh equacao do segundo grau!”); printf(“\nRaiz = %7 2f “ - c / b );printf( \nRaiz = %7.2f , - c / b ); } else { disc = b * b – 4 * a * c;disc = b b – 4 a c; if (disc < 0) printf (“\nRaizes imaginarias !”); else {{ r1 = ( - b + sqrt ( disc ) ) / ( 2 * a ); r2 = ( - b - sqrt ( disc ) ) / ( 2 * a ); printf(“\nRaizes: %8.2f , %8.2f\n”, r1, r2); }} } return 0; }19 ExercícioExercícioExercícioExercício Tendo como dados de entrada 3 valores inteiros e positivos, verificar se estes valores podem ser os lados de 1 triângulo. Em caso positivo, identificar o triângulo formado (eqüilátero, isósceles ou escaleno). Saída: é a informação referente ao triângulo! Objetivos: verificar se 3 valores inteiros d f 1 t iâ l itipodem formar 1 triângulo e, em caso positivo, se o triângulo formado é eqüilátero, isósceles ou escalenoescaleno. 20 ExercícioExercício P t : Presupostos: • Nenhum lado de 1 triângulo pode ser maior ou igual a soma dos outros dois ladosigual a soma dos outros dois lados • Escaleno: 3 lados diferentes • Isósceles: apenas 2 lados iguaisp g • Equilátero: 3 lados iguais E t té iEstratégia: • Identificar seqüência eficaz. 21 ExercíciosExercícios: Algoritmo EhTrianguloAlgoritmo EhTriangulo {Ler valores e.....} Entrada: a,b,c {3 valores inteiros, maiores que 0} Saída: mensagem 1- Início 2- Ler a,b,c2 Ler a,b,c 3- Se (a > 0) e (b > 0) e (c > 0) {valores válidos} 3.1 se (a >= b + c) ou (b >= a + c) ou (c >= a + b) {não é triângulo} 3 1 1 escreve ‘ Não forma triângulo’3.1.1 escreve ‘ Não forma triângulo’ 3.1.2 senão {é triângulo} 3.1.2.1 se (a=b) e (b=c) {identifica equilátero} 3.1.2.1.1 escreve ‘Triângulo Equilátero’ 3.1.2.1.2 senão 3.1.2.1.2.1 se (a=b) ou (b=c) ou (a=c)( ) ( ) ( ) 3.1.2.1.2.1.1 escreve ‘Triângulo Isósceles’ 3.1.2.1.2.1.2 senão escreve ‘Triângulo Escaleno’ 3 2 senão escreve ‘Numeros fornecidos não são inteiros positivos’3.2 senão escreve Numeros fornecidos não são inteiros positivos 4 - Fim 22 /* verificar se 3 valores fornecidos são inteiros positivos e se podem formar 1 triângulo, identificando o tipo de triângulo formado */ #include<stdio h>#include stdio.h #include<stdlib.h> #include<math.h> int main()() { int a,b,c; // obtem valores: printf("digite A:"); if (a>0 && b>0 && c>0) //valores informados válidos { // verifica se é triângulo: if ( (a >= b + c) && (b >= c + a) && (c >= b + a))printf( digite A: ); scanf("%d",&a); printf("digite B:"); scanf("%d",&b); printf("di ite C:"); if ( (a >= b + c) && (b >= c + a) && (c >= b + a)) printf(" Valores informados não formam triângulo!"); else // se chega aqui, é triângulo! if ( a==b && b==c) // identifica equilátero â áprintf("digite C:"); scanf("%d",&c); printf(" Valores informados formam um triângulo equilátero."); else if (a == b || b == c || c == a) // identifica isósceles printf(" Valores informados formam um triângulo isósceles ");printf( Valores informados formam um triângulo isósceles. ); else // sobrou triângulo escaleno printf(" Valores informados formam um triângulo escaleno."); } else // valores informados inválidoselse // valores informados inválidos printf("\nForneca 3 valores inteiros e positivos!"); printf("\n"); system("pause"); y p return 0; } 23 Ex:Ex: Fazer o trecho de um programa C que, dependendo do conteúdo de “codigo”, atribua o conteúdo especificado na tabela abaixo à variável “resultado”. Codigo ResultadoCodigo Resultado 1 Resultado + 5 2 Inalterado2 Inalterado 3 Resultado – 2 4 Inalterado 5 Resultado – 2 6 2* (Resultado +1) 7 Inalterado7 Inalterado 8 0 9 09 0 10 0 11 123 24 ... { uso de seleção dupla} if (Codigo == 1) Ex:Ex: calcular expressões de acordo com a tabela abaixo R lt dCódi ( g ) Resultado = Resultado + 5; else if (Codigo == 3 || Codigo == 5) Resultado + 51 Inalterado4 Resultado –23 Inalterado2 ResultadoCódigo if (Codigo 3 || Codigo 5) Resultado = Resultado – 2; else if (Codigo == 6) 08 Inalterado7 2* (Resultado +1)6 Resultado –25 Inalterado4 if (Codigo == 6) Resultado = 2 * (Resultado + 1); else if (C di > 7 & C di < 11) 12311 010 09 08 if (Codigo > 7 & Codigo < 11) Resultado = 0; else código inválido? if (Codigo == 11) Resultado = 123; ... Resultado = 123; else Resultado = 123; elseelse If (Codigo == 4 || Codigo == 2 || Codigo == 7) Resultado = Resultado; else printf(“código inválido!”); else If (Codigo != 4 & Codigo != 2 & Codigo != 7) Resultado = Resultado; else printf(“código inválido!”);p ( g );p ( g ); 25 Exercícios Ex: Ex: Faça o algoritmo e o programa C Ex: Ex: Faça o algoritmo e o programa C correspondente que recebe três valores reais, diferentes entre si e imprime os três valores diferentes entre si, e imprime os três valores em ordem crescente. Estratégia:Estratégia: d f d lIdentificar o maior e o menor deles. 26 //lê 3 nros reais e imprime em ordem crescente fl t bfloat a,b,c; { printf("digite A,B,C:"); f("%f%f%f" & &b & )scanf("%f%f%f",&a, &b,&c); If (a > b) && (a > c) {a é o maior valor} if (b > c)if (b > c) printf(“% 4.2 f”, c, “%4.2 f “, b, “%4.2f”, a) {e b maior que c} else printf(“% 4.2f ”, b, “% 4.2 f “, c, “%4.2f”, a) {e c maior que b} else If (b > ) && (b > ) {b é i l }If (b > a) && (b > c) {b é o maior valor} { if a > c printf (“% 4.2 f”, c,“% 4.2 f”, a, “% 4.2 f”, b); {e a maior que c}printf ( % 4.2 f , c, % 4.2 f , a, % 4.2 f , b); {e a maior que c} else printf (“% 4.2 f”, a, “% 4.2 f”, c, “%4.2f”, b); {e c maior que a} } else {c é o maior valor}else {c é o maior valor} if a > b printf(“% 4.2 f”, b, “% 4.2f “, a, “%4.2f”, c);{e a maior que c} else printf(“% 4.2 f ”, a, “% 4.2 f “, b, “%4.2f”, c) ; {e c maior que p f( , , , , , ) ; { q a} } 27
Compartilhar