Baixe Introdução à Computação e outras Notas de aula em PDF para Introdução à Computação, somente na Docsity!
estruturas de controle de seleção
Do ponto de vista lógico, um algoritmo pode ser constituído por três
categorias de estruturas:
sequencial,
seletiva,
repetitiva.
Em correspondência:
fluxos sequenciais (desenvolvidos nas primeiras aulas),
fluxos alternativos,
fluxos repetitivos.
agora
estruturas de controle de seleção
• permitem a definição de fluxos de
processamento alternativos;
• a partir de alguma condição, um
determinado bloco de instruções será
executado;
• o fluxo de processamento pode sofrer
“um desvio” sob certas circunstâncias.
estruturas de controle de seleção
análise
dependendo do dia do pagamento, o valor a ser cobrado será
calculado
• efetuando-se um desconto (antes do dia 9), ou
• mantendo-se o valor original (dia 9 ao dia 15), ou
• acrescendo-se multa e juros (após o dia 15).
a “base” para a escolha do
modo de cálculo é o dia do
pagamento.
estruturas de controle de seleção
forma geral – seleção de um ramo
se expr então bloco ;
próxima instrução ;
expr é uma expressão lógica (booleana);
essa expressão é avaliada e se o valor lógico resultante for verdade
(true) o bloco será executado, caso contrário (false) não ocorre a
execução do bloco , sendo executada diretamente a próxima instrução.
as alternativas são:
ou executa-se o bloco (expressão verdadeira) ,
ou não se executa o bloco (expressão falsa).
estruturas de controle de seleção
forma geral – seleção de um ramo
se expr então bloco ;
próxima instrução ;
expr bloco
próxima instrução
falso verdadeiro
if( expr ){
bloco ;
próxima instrução ;
estruturas de controle de seleção
forma geral – seleção de dois ramos
se expr então bloco A ;
senão bloco B ;
próxima instrução ;
expr é uma expressão lógica (booleana);
essa expressão é avaliada e se o valor lógico resultante for verdade
(true) o bloco A será executado, caso contrário (false) o bloco B será
executado, a próxima instrução é executada em seguida.
as alternativas são:
ou executa-se o bloco A (expressão verdadeira) ,
ou executa-se o bloco B (expressão falsa).
estruturas de controle de seleção
forma geral – seleção de dois ramos
se expr então bloco A ;
senão bloco B ;
próxima instrução ;
if( expr ){
bloco A ;
else{
bloco B ;
próxima instrução ;
expr bloco A
próxima instrução
falso verdadeiro
bloco B
estruturas de controle de seleção
exemplo
principal( )
imprima “valor a? “; leia a;
imprima “valor b? “; leia b;
max a;
se b>max então max b;
imprima “maior: “, max;
int main( ){ float a, b, max; cout <<“valor a? “; cin>>a; cout <<“valor b? “; cin>>b; max= a; if(b>max){ max= b; } cout <<“maior valor: “<< max<<endl; system(“PAUSE“ ); return(0); }
principal( )
imprima “valor a? “; leia a;
imprima “valor b? “; leia b;
imprima “valor c? “; leia c;
se b<a então temp b ; b a;
a temp;
se c<b então temp c ; c b;
b temp;
se b<a então temp b ; b a;
a temp;
imprima “a= “,a, “b= “,b, “c= “,c;
exercício
O algoritmo abaixo deve receber a entrada de três valores e exibir esses mesmos
três valores dispostos em ordem crescente. Complete sua descrição.
principal( ) imprima “valor a? “; leia a; imprima “valor b? “; leia b; imprima “valor c? “; leia c; se b<a então temp b ; b a; a temp; se c<b então temp c ; c b; b temp; se b<a então temp b ; b a; a temp; imprima “a= “,a, “b= “,b, “c= “,c;
código do programa
int main( ){ float a, b, c, temp; cout<<"valor a? "; cin>>a; cout<<"valor b? "; cin>>b; cout<<"valor c? "; cin>>c; if(b<a){ temp= b; b= a; a= temp; } if(c<b){ temp= c; c= b; b= temp; } if(b<a){ temp= b; b= a; a= temp; } cout<<a<<" "<<b<<" "<<c<<endl; system("PAUSE"); return(0); }
principal( )
imprima "a? "; leia a;
imprima "b? "; leia b;
imprima "c? "; leia c;
d bb-4a*c;
se d>0 então imprima "duas";
senão se d=0 então imprima "uma";
senão imprima "nenhuma";
estruturas de controle de seleção - exemplo
d= bb-4a*c;
if(d>0){
cout<<"DUAS ";
else{
if(d==0){
cout<<"UMA ";
else{
cout<<"NENHUMA ";
tipo booleano (lógico)
natureza valores lógicos: verdadeiro ou falso
operações não negação!
e conjunção &&
ou disjunção ||
valores resultantes nas operações lógicas
não e F V ou F V
F V F F F F F V
V F V F V V V V
tipo booleano (lógico)
observação:
a linguagem C não possui o tipo lógico (booleano);
em C++ o tipo lógico é especificado por bool, mas nos dois casos (compilador C ou
compilador C++) , internamente, a avaliação é feita por valores numéricos,
sendo o valor 0 representante de FALSE e
o valor 1 representante de TRUE (ou qualquer valor não nulo).
int main( ){
float a;
bool b;
cout<<"digite o valor: ";
cin>>a;
b= a<10 ;
cout<< "resultado: " << b << "\n\n";
system("PAUSE");
return(0);
tipo booleano (lógico)
exemplos de expressões lógicas:
a+x<0 ou b=0 a+x<0 || b== 0
a≠0 e b - 6≥a a!= 0 && b- 6 >=a
não(a=0 ou a=1) !(a==0 || a==1)