Você está na página 1de 7

Algoritmos com seleo

Algoritmos com seleo

Um algoritmo no qual a execuo de determinados passos est subordinada veracidade de uma condio denominado de algoritmo de seleo. Uma seleo permite a escolha de uma ou de um conjunto de instrues (bloco) a ser executado quando determinadas condies, representada por expresses lgicas ou relacionais, so ou no satisfeitas. Em algoritmos necessitamos de aes diferentes dependendo da avaliao de certas condies. O uso de condies ou comandos de deciso permite a alterao do fluxo de execuo das instrues de um algoritmo. Com isso, diferentes instrues sero executadas de acordo com a entrada fornecida ao algoritmo.

Seleo simples

Se <condio> ento <instruo> Instruo: qualquer uma das instrues j vistas ou ainda a serem vistas ou uma seqncia de instrues. Quando existe uma seqncia de instrues necessria a marcao de incio e fim de bloco. Uma seqncia de instrues Se <condio> ento incio <instruo 1> ... <instruo n> fim

Uma nica instruo Se <condio> ento <instruo>

Prof. Vincius Jacques Garcia

Prof. Vincius Jacques Garcia

Algoritmos com seleo condio

Algoritmos com seleo condio


<condio> uma expresso lgica, composta por relaes e operadores lgicos. Relaes:

Resultam em um valor lgico verdadeiro (V) ou falso (F). Exemplos:

= : igual < : menor > : maior <= : menor ou igual >= : maior ou igual <> : diferente no : negao e : produto lgico ou : soma lgica

a<2

(a=b) (a=b)e(a<2) no ( a > 10 ) ( a > 10 ) ou ( b < 30 )

Operadores lgicos:

Prof. Vincius Jacques Garcia

Prof. Vincius Jacques Garcia

Algoritmos com seleo condio


Algoritmos com seleo

Expresses lgicas: tem resultado verdadeiro (V) ou falso (F). possvel traduzir os resultados das operaes atravs de tabelas-verade:

Exemplo com uma instruo no corpo do comando se:

Exemplo com um bloco de instrues no corpo do comando se:

Negao
Op V F no O p F V

Produto lgico (e)


O p1 O p2 F F F V V F V V O p1 e O p2 F F F V

Soma lgica (ou)


O p1 O p2 F F F V V F V V O p1 ou O p2 F V V V

Algoritmo Verifica var a: inteiro; incio escreva(Entre com o valor: ); leia(a); se ( a=5 ) ento escreva(Condio verdadeira.); escreva(Fim do algoritmo.); fim

Algoritmo Verifica var a: inteiro; incio escreva(Entre com o valor: ); leia(a); se ( a=5 ) ento incio escreva(Condio verdadeira.); escreva(O valor , a); fim escreva(Fim do algoritmo.); fim

Prof. Vincius Jacques Garcia

Prof. Vincius Jacques Garcia

Algoritmos com seleo

Algoritmos com seleo

Teste de mesa para o algoritmo Verifica


Algoritmo Verifica var a: inteiro; incio 1. escreva(Entre com o valor: ); 2. leia(a); 3. se ( a=5 ) ento incio 4. escreva(Condio verdadeira.); 5. escreva(O valor , a); fim 6. escreva(Fim do algoritmo.); fim

Para a=2: a=5:

Instruo Linha a 1 1 ? 2 2 [2] [5] 3 5 3 2 4 5 4 6 2 5 5 {5} 6 6 5

Um condio tambm pode compreender uma comparao de expresses aritmticas (relaes) por meio de operadores relacionais (=, <, >, <=, >=, <>). Uma condio tambm pode incluir uma combinao de comparaes por meio de operadores lgicos (no, e, ou). Exerccio 1: faa um algoritmo que leia um valor e verifique se ele positivo, escrevendo a mensagem positivo.

Qual a condio para um nmero ser positivo?

Prof. Vincius Jacques Garcia

Prof. Vincius Jacques Garcia

Algoritmos com seleo

Algoritmos com seleo

Resoluo do Exerccio 1:
Algoritmo Positivo var numero: inteiro; incio leia (numero); se (numero>0) ento escreva( positivo); fim

Seleo composta

se <condio> ento <instruo> seno <instruo> Se a condio for verdadeira executada a instruo relacionada ao ento. Se a condio for falsa executada a instruo relacionada ao seno. Quando houver mais de uma instruo, preciso incluir os marcadores de incio e fim de bloco.

Prof. Vincius Jacques Garcia

Prof. Vincius Jacques Garcia

Algoritmos com seleo

Algoritmos com seleo

Teste de mesa para o algoritmo Verifica2


Algoritmo Verifica2 var a: inteiro; incio 1. escreva(Entre com o valor: ); 2. leia(a); 3. se ( a=5 ) ento incio 4. escreva(Condio verdadeira.); 5. escreva(O valor , a); fim seno incio 6. escreva(Condio falsa.); 7. escreva(O valor no 5, , a); fim 8. escreva(Fim do algoritmo.); fim

a=2: Para a=5:

Exerccio 2: faa um algoritmo que leia um valor e verifique se ele positivo, com a mensagem positivo. Caso contrrio deve ser escrita a mensagem No positivo. Resoluo do Exerccio 2:
Algoritmo Positivo var numero: inteiro; incio leia (numero); se (numero>0) ento escreva( positivo); seno escreva(No positivo); fim

Instruo Linha 1 1 2 2 3 3 6 4 4 7 5 5 6 8

a ? [2] [5] 2 5 2 5 {2} {5} 2 5

Prof. Vincius Jacques Garcia

Prof. Vincius Jacques Garcia

Algoritmos com seleo

Algoritmos com seleo

Exerccio 3: faa um algoritmo que leia a idade de uma pessoa e diga-lhe se maior de idade ou no. Represente o valor que indica maior de idade como uma constante que valer 18. Resoluo do Exerccio 3:
Algoritmo Maior_idade constante LIMITE = 18; var idade: inteiro; incio escreva(Entre com a idade: ); leia(idade); se (idade>=LIMITE) ento escreva( maior de idade.); seno escreva( menor de idade.); fim

Exerccio 4: faa um algoritmo que leia dois nmeros inteiros e determine qual dos dois maior. Resoluo do Exerccio 4:

Algoritmo Maior_idade var n1, n2: inteiro; incio escreva(Entre com 1o. valor: ); leia(n1); escreva(Entre com 2o. valor: ); leia(n2); se ( n1>n2 ) ento escreva(O valor maior : , n1); seno escreva(O valor maior : , n2); fim

Prof. Vincius Jacques Garcia

Prof. Vincius Jacques Garcia

Algoritmos com seleo

Algoritmos com seleo

Estruturas aninhadas

A instruo dentro de um comando de seleo pode ser um outro comando de seleo. Quando isto ocorre, tem-se as estruturas aninhadas (uma dentro da outra). Essas estruturas so justificadas pela complexidade crescente dos problemas que desejamos resolver, que exigem o uso de comandos mais elaborados. Se <condio 1> ento Se <condio 2> ento <instruo 1> seno <instruo 2> seno Se <condio 3> ento <instruo 3>

Exerccio 5: faa um algoritmo que leia um valor e verifique se ele positivo, negativo ou zero, escrevendo as mensagens correspondentes. Resoluo do Exerccio 5:
Algoritmo PositivoNegativoZero var numero: inteiro; incio escreva(Entre com o nmero); leia(numero); se ( numero>0 ) ento escreva( positivo.); seno se ( numero<0 ) ento escreva( negativo.); seno escreva( zero.); fim

Prof. Vincius Jacques Garcia

Prof. Vincius Jacques Garcia

Algoritmos com seleo

Algoritmos com seleo

Exerccio 6: faa um algoritmo que leia trs nmeros inteiros e determine quantos so iguais.
Resoluo do Exerccio 6:
7. se ( n1 = n2 e n2 = n3 ) ento 8. escreva(Os trs valores so iguais.); seno 9. se ( n1 <> n2 e n1 <> n3 e n2 <> n3 ) ento 10. escreva(No h valores iguais.); seno 11. escreva(H dois valores iguais e um diferente.); 12. escreva(Fim do programa.); fim

Outra forma de resoluo do Exerccio 6:


seno se ( n1 = n3 ) ento escreva(H dois valores iguais e um diferente.); seno se ( n2 = n3 ) ento escreva(H dois valores iguais e um diferente.); seno escreva(Todos os valores so diferentes.); escreva(Fim do programa.);

Algoritmo IguaisDiferentes var n1, n2, n3: inteiro; incio 1. escreva(Entre com o 1o. valor: ); 2. leia(n1); 3. escreva(Entre com o 2o. valor: ); 4. leia(n2); 5. escreva(Entre com o 3o. valor: ); 6. leia(n3);

Prof. Vincius Jacques Garcia

Prof. Vincius Jacques Garcia

Algoritmo IguaisDiferentes var n1, n2, n3: inteiro; incio 1. escreva(Entre com o 1o. valor: ); 2. leia(n1); 3. escreva(Entre com o 2o. valor: ); 4. leia(n2); 5. escreva(Entre com o 3o. valor: ); 6. leia(n3); 7. se ( n1 = n2 ) ento 8. se ( n2 = n3 ) ento 9. escreva(Os trs valores so iguais.); seno 10. escreva(H dois valores iguais e um diferente.);

11. 12.

13. 14.

15. 16. fim

Algoritmos com seleo mltipla

Algoritmos com seleo mltipla

Seleo mltipla

Quando um conjunto de valores inteiros precisa ser testado e aes diferentes so associadas a esses valores, estamos diante da seleo encadeada do tipo se-seno-se. Neste caso, podemos utilizar uma estrutura especfica chamada de seleo de mltipla escolha, que realizada atravs do uso da instruo Caso.
Instruo pode ser apenas uma ou uma seqncia de instrues. Neste caso haver necessidade de incluir os marcadores de incio e fim de bloco.

O uso do comando caso muito oportuno em algoritmos que executem vrias funes e o usurio precisa determinar a operao escolhida para execuo. Este tipo de construo chamada de menu. Exemplo: escrever um algoritmo que seja capaz de identificar se um nmero lido igual a 1, 5 ou 10.
Algoritmo Exemplo var n1: inteiro; incio escreva(Entre com o valor: ); leia(n1); caso n1 seja: 1: escreva(Valor introduzido vlido: 1); 5: escreva(Valor introduzido vlido: 5); 10: escreva(Valor introduzido vlido: 10); seno escreva(Valor invlido: , n1); fim

Caso <valor inteiro/caractere/valor booleano> seja <valor 1> : <instruo 1> <valor 2> : <instruo 2> <valor 3> : <instruo 3> seno <instruo 4>
Prof. Vincius Jacques Garcia

Prof. Vincius Jacques Garcia

Algoritmos com seleo mltipla

Algoritmos com seleo mltipla

Exerccio 7: construa um algoritmo que, tendo como dados de entrada o preo de um produto e seu cdigo de origem, mostre o preo junto com a sua procedncia. Caso o cdigo no seja nenhum dos especificados, o produto deve ser considerado importado.
Cdigo de origem Procedncia 1 Sul 2 Norte 3 Leste 4 Nordeste 5 Sudeste

Exerccio 7.1: construa um algoritmo que, tendo como dados de entrada o preo de um produto e seu cdigo de origem, mostre o preo junto com a sua procedncia. Caso o cdigo no seja nenhum dos especificados, o produto deve ser considerado importado.
Cdigo de origem 1 2 3 ou 4 5, 6 ou 7 8 Procedncia Sul Norte Leste Nordeste Sudeste

Prof. Vincius Jacques Garcia

Prof. Vincius Jacques Garcia

Exerccios
1. 2.

Exerccios
5.

3.

4.

Faa um algoritmo que receba um nmero inteiro, verifique e mostre se este nmero par ou mpar. Faa um algoritmo que receba trs nmeros obrigatoriamente em ordem crescente e um quarto que no siga esta regra. Mostre em seguida os quatro nmeros em ordem decrescente. Faa um algoritmo que receba duas datas, no formato dd (dia, dois dgitos), mm (ms, dois dgitos) e aaaa (ano, quatro dgitos), e determine a ordem cronolgica entre elas. Faa um algoritmo que simule uma calculadora com as quatro operaes bsicas (+, -, *, /). O algorito deve solicitar ao usurio a entrada de dois operandos e da operao a ser executada, na forma de um menu. Dependendo da opo escolhida, deve ser executada a operao solicitada e escrito seu resultado. Utilize uma varivel caractere para armazenar a operao e utilize o comando caso para escolher a operao a ser executada a partir do operador.

Faa um algoritmo que receba trs notas de um aluno, calcule e mostre a mdia aritmtica (sabendo-se que todas elas tem o mesmo peso) e a mensagem que segue na tabela abaixo). Para alunos em exame, calcule e mostre a nota que deve ser alcanada no exame para obter aprovao, considerando que a mdia no exame 6.

Mdia aritmtica [0,3) [3,7) [7,10)


6.

Mensagem Reprovado Exame Aprovado

Escreva um algoritmo que leia trs valores que representam os lados de um tringulo. Primeiramente, verifique se os lados podem formar um tringulo (a soma de dois lados no pode ser menor que o terceiro lado). Caso os lados fornecidos possam formar um tringulo, indique se ele equiltero, issceles ou escaleno.

Prof. Vincius Jacques Garcia

Prof. Vincius Jacques Garcia

Exerccios
7.

A nota final de um estudante calculada a partir de trs notas: N1 = trabalho de laboratrio N2 = Avaliao semestral N3 = Exame final Faa um programa que receba as trs notas, calcule e mostre a mdia ponderada e o respectivo conceito associado sabendo-se que utilizada a seguinte tabela para converter as notas em conceitos:
[8 , 1 0 ] [7 ,8 ) [6 ,7 ) [5 ,6 ) [0 ,5 ) A B C D E

Prof. Vincius Jacques Garcia