Baixe o app para aproveitar ainda mais
Prévia do material em texto
INF01202INF01202INF01202INF01202 Algoritmos e ProgramaçãoAlgoritmos e ProgramaçãoAlgoritmos e ProgramaçãoAlgoritmos e Programação Prof. Anderson Maciel amaciel@inf.ufrgs.br Slide 1 Aula 4 – Comandos de seleção condicional Comandos de seleção condicionalComandos de seleção condicionalçç • Condicional Simples if <condição>ç <comando> • Seleção Dupla Seleção Dupla if <condição> <comando> else < comando > • Seleção múltiplaç m p switch <expressão> Slide 2 Comando condicional simplesComando condicional simples C Linguagem algorítmica Comando condicional simplesComando condicional simples if ( expressão lógica ) comando ; se < expressão lógica > < comando >; < expressão lógica > verdadeira expressão lógica falsa < comando >< comando > Slide 3 Comando condicional simplesComando condicional simples Ex1: Ler um valor e no caso Algoritmo: 1. Início. 2. Ler Valor.Ex1: Ler um valor e, no caso de ser menor do que 10, emitir uma mensagem. 3. Se Valor < 10 3.1 escrever mensagem 4. Fim. /* Lê valor e informa se maior que 10 */ #include <stdio.h> #include <stdlib h>#include <stdlib.h> int main() // programa principal {{ int val1; // declaração da variável informada printf("Valor 1:\n"); // mensagem impressa na tela scanf("%d", &val1); // leitura da informação digitada( ) ç g if (val1 < 10) printf("%d é menor que 10\n", val1); // mensagem return 0; } Slide 4 } Ex2: Processar uma venda de livros em uma livraria. Obter código do tipo de livro vendido (A, B, C) e número de unidades. Preços: Tipo A: R$ 10 00Preços: Tipo A: R$ 10,00 Tipo B: R$ 20,00 Tipo C: R$ 30,00 Calcular e informar preço a pagar. Caso tenham sido vendidas mais p ç p g de 10 livros, emitir uma mensagem. Algoritmo UmaVenda {processa uma venda e avisa caso tenham sido vendidas maisde 10 unidades } entradas: codigo {do tipo do livro} nro_livros {vendidos} saídas: apagar mensagem {caso tenham sido vendidas mais de 10 unidades} 1. início se codigo = ´A´ 2. ler codigo, nro_livros 3. calcular preço a pagar 4. informar apagar se codigo = A apagar ← nro_livros * 10; se codigo = ´B´ apagar← nro livros * 20;4. informar apagar 5. se nro_livros > 10 5.1 informar “mais de 10 livros vendidos” 6 fim apagar ← nro_livros 20; se codigo = ´C’ apagar ← nro_livros * 30; Slide 5 6. fim Ex2: Processar uma venda de livros em uma livraria. Obter código do tipo de livro vendido (A, B, C) e número de unidades. Preços: Tipo A: R$ 10 00Preços: Tipo A: R$ 10,00 Tipo B: R$ 20,00 Tipo C: R$ 30,00 Calcular e informar preço a pagar. Caso tenham sido vendidas mais p ç p g de 10 livros, emitir uma mensagem. Algoritmo UmaVenda {processa uma venda e avisa caso tenham sido vendidas maisde 10 unidades }{p } entradas: codigo {do tipo do livro} nro_livros {vendidos} saídas: apagar mensagem {caso tenham sido vendidas mais de 10 unidades}mensagem {caso tenham sido vendidas mais de 10 unidades} 1. início 2. ler codigo, nro_livros 3. se codigo = ´A´ 3 1 li * 103.1 apagar ← nro_livros * 10; 4. se codigo = ´B´ 4.1 apagar ← nro_livros * 20; 5 se codigo = ´C’5 se codigo = C 5.1 apagar ← nro_livros * 30; 6. informar apagar 7. se nro_livros > 10 Slide 6 _ 7.1 informar “mais de 10 livros vendidos” 8. fim 1. início 2. ler codigo, nro_livros 3. se codigo = ´A´ 3 1 apagar ← nro livros * 10;/* processa uma venda e avisa caso se mais de 10 unidades vendidas foram vendidas */ #include<stdio.h> #include<stdlib h> 3.1 apagar ← nro_livros * 10; 4. se codigo = ´B´ 4.1 apagar ← nro_livros * 20; 5 se codigo = ´C’ 5.1 apagar ← nro_livros * 30; #include<stdlib.h> int main(void) { char codigo; p g _ ; 6. informar apagar 7. se nro_livros > 10 7.1 informar “mais de 10 livros ven 8. fim char codigo; int nro_livros; float apagar; printf("digite o codigo do produto e número de unidades:\n"); f("% %d " & di & li ) scanf("%c %d ",&codigo, &nro_livros); if (codigo == 'a'|| codigo == 'A') apagar = nro_livros*10; if (codigo == 'b'|| codigo == 'B') if (codigo b || codigo B ) apagar = nro_livros*20; if (codigo == 'c' || codigo == 'B') apagar = nro_livros*30; i tf(" l ’ R$ %4 2f\ " )printf("o valor a pagar e’ R$ %4.2f\n",apagar); if (nro_livros > 10) printf("Foram vendidas mais de 10 unidades do tipo %c",codigo); system("pause"); Slide 7 system( pause ); return (0); } LocalizaçãoLocalização de um de um pontoponto no no planoplano Dados um par de valores x e y que representam Dados um par de valores x e y, que representam as coordenadas de um ponto no plano, determinar a localização do ponto: se em um quadrante, em ç p q , um dos eixos ou na origem. Saída: mensagem adequada Entradas: coordenadas x e y de um ponto– Entradas: coordenadas x e y de um ponto. – Processamento: testes, verificando onde o par de valores se enquadrade valores se enquadra. Slide 8 Eixo dos Ys Quadrante 1 x = 0 e y ≠ 0 x > 0 e y > 0 Quadrante 2 0 0 x > 0 e y > 0 Origem Eixo dos Xsx = 0 e y = 0 x < 0 e y > 0 0 0 Origem Quadrante 4Quadrante 3 x ≠ 0 e y = 0 Quadrante 4Quadrante 3 x > 0 e y <0x < 0 e y < 0 Slide 9 Passos do AlgoritmoPassos do Algoritmog mg m • leitura dos valores de x e y. • determinação, pela avaliação de condições, de onde o ponto se encontra: se em um quadrante, em um eixo ou na origem. i d d é i di d l li ã d • escrita da mensagem, onde é indicada a localização do ponto – apenas 1 mensagem por par de valores. Slide 10 Escrita do algoritmo em Escrita do algoritmo em d lid lipseudolinguagempseudolinguagem Algoritmo LocalizaQuadranteAlgoritmo LocalizaQuadrante Entradas: x, y (coordenadas) Saída: mensagem (localização) 1. início 2. ler x , y 3 0 0 “ i ”3. se x = 0 e y = 0 escrever “ponto na origem” 4. se x > 0 e y > 0 escrever “quadrante 1” 5 etc5. etc… (...) 9. se x ≠ 0 e y = 0 escrever “eixo dos x”y 10.fim Slide 11 Em Em C:C: /* Obtem coordenadas e informa localização */ #include <stdio.h> #include <stdlib.h> i t i ( )C:C: int main ( ) { float x , y; printf("\n Coordenadas: x = ");p ( ); scanf("%f", &x); printf(" e y = "); scanf("%f", &y); if ( x == 0 && y == 0 )if ( x 0 && y 0 ) printf("\n Ponto na origem"); if ( x > 0 && y > 0 ) printf("\n Ponto no quadrante 1"); if ( x < 0 && y > 0 )if ( x < 0 && y > 0 ) printf("\n Ponto no quadrante 2"); if ( x < 0 && y < 0 ) printf("\n Ponto no quadrante 3"); if ( x > 0 && y < 0 ) printf("\n Ponto no quadrante 4"); if ( x == 0 && y != 0 ) printf("\n Ponto no eixo dos y");printf( \n Ponto no eixo dos y ); if ( x != 0 && y == 0 ) printf("\n Ponto no eixo dos x"); printf("\n"); system("pause"); Slide 12 system( pause ); return 0; } Comando Simples e CompostoComando Simples e Composto Comando simplesComando simples Comando Simples e CompostoComando Simples e Composto comando; Comando simplesComando simples ; 1 só comando Comando compostoComando composto {{ < comandos, separados por ponto e vírgula > } 1 comando (bloco) Slide 13 1 comando (bloco) Comando 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 Slide 14 Ex2: Processar uma venda de livros em uma livraria. Obter código do tipo de livro vendido (A, B, C) e número de unidades. Preços: Tipo A: R$ 10 00Preços: Tipo A: R$ 10,00 Tipo B: R$ 20,00 Tipo C: R$ 30,00 Calcular e informar preço a pagar. Se olivro for do Tipo A, dar 10% de p ç p g p , desconto. Caso tenham sido vendidas mais de 10 livros, emitir uma mensagem. Al it U V dAlgoritmo UmaVenda {processa uma venda e avisa caso tenham sido vendidas mais de 10 unidades } entradas: codigo {do tipo do livro} nro_livros {vendidos} saídas: apagar mensagem {caso tenham sido vendidas mais de 10 unidades}g { } 1. início 2. ler codigo, nro_livros 3. calcular preço a pagar se codigo = ´A´ apagar ← nro_livros * 10; apagar ← apagar * 0.9; di ´B´3. calcular preço a pagar 4. informar apagar 5. se nro_livros > 10 5 1 informar “mais de 10 livros vendidos” se codigo = ´B´ apagar ← nro_livros * 20; Slide 15 5.1 informar mais de 10 livros vendidos 6. fim 1. início 2. ler codigo, nro_livros 3. se codigo = ´A´ 3 1 apagar ← nro livros * 10;/* processa uma venda e avisa caso se mais de 10 unidades vendidas foram vendidas */ #include<stdio.h> #include<stdlib h> 3.1 apagar ← nro_livros * 10; 3.2 apagar ← apagar * 0.9; 4. se codigo = ´B´ 4.1 apagar ← nro_livros * 20; 5. informar apagar#include<stdlib.h> int main(void) { char codigo; p g 6. se nro_livros > 10 6.1 informar “mais de 10 livros vendid 7. fim char codigo; int nro_livros; float apagar; printf("digite o codigo do produto e número de unidades:\n"); scanf("%c %d " &codigo &nro livros);scanf( %c %d ,&codigo, &nro_livros); if (codigo == 'a'|| codigo == 'A') { apagar = nro_livros*10; * 0 9apagar = apagar * 0.9; } if (codigo == 'b' || codigo == 'B') apagar = nro livros*20;apagar nro_livros 20; printf("o valor a pagar e’ R$ %4.2f\n",apagar); if (nro_livros > 10) printf("Foram vendidas mais de 10 unidades do tipo %c",codigo); system("pause"); Slide 16 system( pause ); return (0); } Ex1: Fazer um programa que leia um número natural e informe se o número lido é par ou ímpar Algoritmo Par ou Ímpar número lido é par ou ímpar Algoritmo Par ou Ímpar { Verifica se um valor lido do teclado é par ou ímpar } entrada: o valor a ser testado saídas: Mensagem de “par” ou “ímpar”saídas: Mensagem de par ou ímpar 1. início 2. ler o valor 3. verificar se valor é par 4. se ( ehpar ) 4 1 escrever ‘par’ Redundância!!! 4.1 escrever par 5 se ( não ( ehpar) ) 5.1 escrever ‘ímpar’ Comando de seleção dupla6. fim seleção dupla Slide 17 Comandos de seleção condicionalComandos de seleção condicionalçç 9C d l l9Condicional Simples if (condição) comando;comando; • Seleção Dupla if (condição)if (condição) comando; else comando; • Seleção múltipla switch (variável)( ) { expressão; } Slide 18 } 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 > Slide 19 1. início 2. ler o valor 3. verificar se valor é par 4 se (ehpar) Algoritmo Par ou Ímpar ( p ) 4.1 escrever ‘par’ 5 se (não (ehpar)) 5.1 escrever ‘ímpar’ 6. fimAlgoritmo Par ou Ímpar { Verifica se um valor lido do teclado é par ou ímpar } entrada: o valor a ser testado saídas: Mensagem de “par” ou “ímpar” 1. início 2 ler o valor2. ler o valor 3. verificar se valor é par 4 se ( ehpar ) resto da divisão inteira = 0 4. se ( ehpar ) 4.1 escrever ‘par’ 4.2 senão 4.2.1 escrever ‘ímpar’ 6. fim Slide 20 Algoritmo Par ou ÍmparAlgoritmo Par ou Ímpar { Verifica se um valor lido do teclado é par ou ímpar } entrada: o valor a ser testado saídas: Mensagem de “par” ou “ímpar” 1. início 2 ler o valor2. ler o valor 3. verificar se valor é par3. se (valor % 2 = 0)3.1 ehpar = 1 ( true é diferente de zero) 4 se (ehpar) é 3.2 senão 3.2.1 ehpar = 0 ( false é igual a zero) 4.1 escrever ‘par’ (executa se par é verdadeiro) 4.2 senão escrever ‘ímpar’ (executa se par é falso)esc e e pa (executa se par é falso) 5. fim Slide 21 // Determina se valor inteiro é par ou impar, analisando resto da divisão por 2 #include <stdio.h> #include <stdlib.h> int main()int main() { int valor, ehpar; printf("digite o valor a ser testado\n");printf( digite o valor a ser testado\n ); scanf("%d",&valor); if ((valor % 2) == 0) // analisa resto da divisão inteira ehpar = 1; // verdadeirop ; else ehpar = 0; // falso if (ehpar) // equivale a (ehpar == 1) (<>0 é true)mesmo teste ( p ) printf("PAR!\n"); else printf("IMPAR!\n"); // ehpar == 0 - false (" ") mesmo teste 2 vezes! system("pause"); return 0; } Slide 22 // Determina se valor inteiro é par ou impar, analisando resto da divisão por 2 #include <stdio.h> #include <stdlib.h> int main()int main() { int valor, ehpar; printf("digite o valor a ser testado\n");printf( digite o valor a ser testado\n ); scanf("%d",&valor); if ((valor % 2) == 0) // analisa resto da divisão inteira ehpar = 1; // verdadeiro// integra em um só “if”:p ;else ehpar = 0; // falso if (ehpar) // equivale a (ehpar == 1) (<>0 é true) // integra em um só if : if ((valor % 2) == 0) // analisa resto da divisão inteira printf("PAR!\n"); // se true l ( p ) printf("PAR!\n"); else printf("IMPAR!\n"); // ehpar == 0 - false (" ") else printf("IMPAR!\n"); // se false system("pause"); return 0; } Slide 23 Ex1: Fazer um programa que leia um número natural e informe se o número lido é par ou ímpar // Determina se valor inteiro é par ou impar, analisando resto da divisão por 2 #include <stdio.h> #include <stdlib.h> int main()int main() { int valor, ehpar; printf("digite o valor a ser testado\n"); Consistir valor informado! printf( digite o valor a ser testado\n ); scanf("%d",&valor); if ((valor % 2) == 0) // analisa resto da divisão inteira printf("PAR!\n"); // se true 1 i í iprintf( PAR!\n ); // se true else printf("IMPAR!\n"); // se false 1. início 2. ler o valor 3. se valor > 0 3.1 início 3 1 2 ifi l éreturn 0; } 3.1.2 verificar se valor é par 3.1.3 se par 3.1.3.1 escrever ‘par’ 3.1.4 se não par 3 1 4 1 escrever ‘ímpar’ Slide 24 3.1.4.1 escrever ímpar’ 3.1 fim 4. fim // Determina se valor inteiro é par ou impar, analisando resto da divisão por 2 #include <stdio.h> #include <stdlib.h> int main()int main() { int valor, ehpar; printf("digite o valor a ser testado\n");printf( digite o valor a ser testado\n ); scanf("%d",&valor); if (valor >=0) { // integra em um só “if”:{ g f if ((valor % 2) == 0) // analisa resto da divisão inteira printf("PAR!\n"); // se true else else printf("IMPAR!\n"); // se false } return 0; return 0; } Slide 25
Compartilhar