Algoritmos com seleção. Maria Aparecida C. Livi - Alg. c/ seleção - v. 11 Dados um par de...
Transcript of Algoritmos com seleção. Maria Aparecida C. Livi - Alg. c/ seleção - v. 11 Dados um par de...
Algoritmos com seleção
Maria Aparecida C. Livi - Alg. c/ seleção - v. 11
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 um dos eixos ou na origem.
Problema1: Localização de um ponto no plano.
Maria Aparecida C. Livi - Alg. c/ seleção - v. 11
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 um dos eixos ou na origem.
Problema1: Localização de um ponto no plano.
Saída: mensagem adequada Entradas: coordenadas x e y de um ponto Processamento:
série de testes, verificando em qual caso o par de valores enquadra-se.
Maria Aparecida C. Livi - Alg. c/ seleção - v. 11
Quadrante 1Quadrante 2
Quadrante 4Quadrante 3
Eixo dos Xs
Eixo dos Ys
Origem
Maria Aparecida C. Livi - Alg. c/ seleção - v. 11
Passos do Algoritmo Leitura dos valores de x e y. Determinação de em que
quadrante, se em um eixo ou se na origem, o ponto encontra-se.
Escrita da mensagem, onde é indicada a localização do ponto.
Maria Aparecida C. Livi - Alg. c/ seleção - v. 11
Escrita do algoritmo em linguagem algorítmica:
Início Localizacao Ler x , y Se x = 0 e y = 0 então escrever “Ponto
na origem” Se x > 0 e y > 0 então escrever “Quadrante 1” etc…Fim Localizacao
Maria Aparecida C. Livi - Alg. c/ seleção - v. 11
Algoritmo com seleção
Algoritmo em que a execução de
determinados passos está
subordinada a uma condição.
Maria Aparecida C. Livi - Alg. c/ seleção - v. 11
Condição
Expressão lógica:
expressão cujo resultado é um
valor lógico (verdadeiro ou falso).
Maria Aparecida C. Livi - Alg. c/ seleção - v. 11
•Relacionais
•Lógicos
Operadores em expressões lógicas:
Maria Aparecida C. Livi - Alg. c/ seleção - v. 11
OPERADORES RELACIONAIS:
< (menor)
> (maior)
<= (menor ou igual)
>= (maior ou igual)
== (igual)
!= (diferente)
Maria Aparecida C. Livi - Alg. c/ seleção - v. 11
OPERADORES LÓGICOS:
E lógico: &&
Ou lógico: ||
Negação: !
Maria Aparecida C. Livi - Alg. c/ seleção - v. 11
TABELAS VERDADE DOS
OPERADORES LÓGICOS:
Sejam X e Y operandos lógicos e R o resultado de uma particular operação
lógica.
Maria Aparecida C. Livi - Alg. c/ seleção - v. 11
&&X Y RV V VV F FF V FF F F
E lógico : &&
Maria Aparecida C. Livi - Alg. c/ seleção - v. 11
| |X Y RV V VV F VF V VF F F
Ou lógico : ||
Maria Aparecida C. Livi - Alg. c/ seleção - v. 11
X RV FF V
!
Negação : !
Maria Aparecida C. Livi - Alg. c/ seleção - v. 11
((Código > 0) && (Código < 101))
((Contador > Maximo ) || (Valor == Procurado))
( ! (Concluído))
Exemplos de condições em linguagem C:
Maria Aparecida C. Livi - Alg. c/ seleção - v. 11
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 um dos eixos ou na origem.
Saída: mensagem adequada Entradas: coordenadas x e y de um ponto Processamento:
série de testes, verificando em qual caso o par de valores enquadra-se.
Retomando o Problema1: Localização de um ponto no plano.
Maria Aparecida C. Livi - Alg. c/ seleção - v. 11
Implementação de algoritmos com seleção em linguagem C:
Além das instruções já vistas: Scanf Printf atribuição --> =
Nova instrução:
if
Maria Aparecida C. Livi - Alg. c/ seleção - v. 11
Comando IF: sintaxe
Forma geral:if (condição) comando;else comando;
Maria Aparecida C. Livi - Alg. c/ seleção - v. 11
A parte do comando IF que inicia no else é opcional.Sempre onde aparecer comando, pode ser escrito: um comando apenas
if (idade > 17) votante = votante + 1;
ou mais de um comando, obrigatoriamente entre chaves ({ }), formando um bloco.
if (valor1 <= 0 || valor2 <= 0) printf(“valores deveriam ser positivos”);
else { soma = valor1 + valor2;
printf(“soma = %d”, soma); }
Comando IF: sintaxe
Maria Aparecida C. Livi - Alg. c/ seleção - v. 11
int main ( ){ float x , y; printf("\n Coordenadas: x = "); scanf("%f ", &x); printf(” y = "); scanf(" %f", &y); if ((x>0) && (y >0)) printf("\n Ponto no quadrante 1"); (...) if ((x==0) && (y = =0)) printf("\n Ponto na origem"); if ((x==0) && (y != 0)) printf("\n Ponto no eixo dos y"); if ((x!=0) && (y ==0)) printf("\n Ponto no eixo dos x"); return 0;}
Problema 1 “Localização de ponto no plano”
Maria Aparecida C. Livi - Alg. c/ seleção - v. 11
Características da solução do Problema1:
Usa sucessivos ifs sem else. Em cada condição avaliada é
indicado apenas o que fazer se condição for verdadeira.
Se condição for falsa, o próximo comando será executado.
Maria Aparecida C. Livi - Alg. c/ seleção - v. 11
Recebida uma idade, fornecer uma das seguintes mensagens:Eh criança : <= 13Eh jovem: > 13 e <= 21Eh adulto: > 21 e <= 70Eh idoso: > 70.
Problema2: Retorna mensagem com base em idade fornecida.
Saída: mensagem adequada. Entrada: idade. Processamento:
série de testes, verificando em qual caso a idade fornecida se encaixa.
Maria Aparecida C. Livi - Alg. c/ seleção - v. 11
int main(){ int idade; printf("\n Digite a idade: "); scanf("%d", &idade); if (idade > 70) printf("\n Idoso"); if ((idade > 21) && (idade <=70)) printf("\n Adulto"); if ((idade > 13)&&(idade <=21)) printf("\n jovem"); if (idade <=13) printf("\n crianca"); return 0; }
Problema 2
“Retorna mensagem
com base em idade
fornecida”
Maria Aparecida C. Livi - Alg. c/ seleção - v. 11
Características da solução do Problema 2:
Usa sucessivos ifs sem else. Em cada condição avaliada é
indicado apenas o que fazer se condição for verdadeira.
Se condição for falsa, o próximo comando será executado.
Maria Aparecida C. Livi - Alg. c/ seleção - v. 11
Problema 3:
Informa se um número inteiro é par ou ímpar
Saída: mensagem.
Entradas: um valor inteiro.
Processamento: determinar se o número é par ou ímpar.
Maria Aparecida C. Livi - Alg. c/ seleção - v. 11
// Le um valor inteiro e retorna se ele eh par ou imparint main ( ){ int numero; printf("\n Digite um numero inteiro: "); scanf("%d", &numero); if (numero % 2 == 0) printf("\n Numero %d eh par\n", numero); else printf("\n Numero %d eh impar\n", numero); system(”PAUSE"); return 0; }
Problema 3
”Informa se número é par ou ímpar”
Maria Aparecida C. Livi - Alg. c/ seleção - v. 11
Características da solução do Problema 3:
Definição do ramo do else, para o caso da condição do if não se verificar.
Maria Aparecida C. Livi - Alg. c/ seleção - v. 11
Problema 4:
Lidos dois valores, apresenta-os em ordem crescente.
Saída: os dois valores lidos apresentados em ordem crescente.
Entradas: dois valores em ordem qualquer.
Processamento: preparação da apresentação dos dois valores.
Maria Aparecida C. Livi - Alg. c/ seleção - v. 11
int main( ){ int a , b; printf("\n O primeiro numero: "); scanf("%d", &a); printf("\n O segundo numero: "); scanf("%d", &b); if (a > b) printf("\n Em ordem crescente: %d e %d ", b , a); else if (b > a) printf("\n Em ordem crescente: %d e %d ", a , b); else printf("\n %d e %d são iguais", a , b);
return 0;}
Problema 4
”Apresenta dois números inteiros lidos em ordem crescente com base em testes realizados”
Maria Aparecida C. Livi - Alg. c/ seleção - v. 11
Características da solução do Problema 4:
Uso de ifs aninhados.
Obs.: um else sempre se refere ao if imediatamente anterior.
Maria Aparecida C. Livi - Alg. c/ seleção - v. 11
Problema 5:Soma ou multiplica dois
valores inteiros lidos, dependendo de um caractere fornecido pelo usuário.
Saída: soma ou multiplicação dos dois valores inteiros lidos.
Entradas: uma letra (S ou M) e dois valores inteiros.
Processamento: realização do cálculo solicitado.
Maria Aparecida C. Livi - Alg. c/ seleção - v. 11
{ char codigo; int valor1, valor2, result; printf("\n Digite o codigo (S - Soma ou M - multiplicacao): "); scanf("%c", &codigo); printf("\n Digite o valor 1: "); scanf("%d", &valor1); printf("\n Digite o valor 2: "); scanf("%d", &valor2); if (codigo = = 'S') { result = valor1 + valor2; printf("\n Resultado da soma: %d\n", result); } if (codigo = = 'M') { result = valor1 * valor2; printf("\n Resultado da multiplicacao: %d\n", result); } system("pause"); return 0; }
Problema 5
”Som ou multiplica
dois valores inteiros
lidos”
Maria Aparecida C. Livi - Alg. c/ seleção - v. 11
Lembretes importantes no uso do comando if:
Condições devem estar sempre entre parênteses.
É possível usar colocar mais de um comandono if, após a condição ou após o else, mas então os comandos devem estarentre chaves (constituindo-se em um bloco).
É possível aninhar ifs, e então cada else vai corresponder ao if imediatamente anterior.