Baixe o app para aproveitar ainda mais
Prévia do material em texto
LÓGICA DE PROGRAMAÇÃO Unidade III – ESTRUTURAS DE TOMADA DE DECISÃO PROFESSORA GELLARS TAVARES gellarstavares@yahoo.com.br 2014 LÓGICA DE PROGRAMAÇÃO – Professora Gellars Tavares – ano 2014 Página 2 CURSO: ENGENHARIA DISCIPLINA: LÓGICA DE PROGRAMAÇÃO PROFESSORA: GELLARS TAVARES INTRODUÇÃO Como visto na conceituação de algoritmo, o mesmo é preponderantemente sequêncial, ou seja, todas as suas instruções serão executadas, uma única vez, uma após a outra. Entretanto, a complexidade inerente aos problemas a serem resolvidos pelo computador implica na necessidade de estruturas mais complexas para que algoritmos possam ser projetados para a sua solução. Durante o desenvolvimento de um algoritmo, frequentemente existe a necessidade de se tomar decisões e excutar ou não determinadas instruções, de acordo com o panorama atual de alguns dados. Para tanto foram projetadas as instruções de seleção ou decisão. Estas permitem definir um conjunto de instruções que poderão ser executadas ou não, dependendo do resultado de um teste realizado em cima de alguns dados. Desta forma, algumas instruções serão ou não executadas durante a execução do programa, interferindo diretamente no andamento do programa, conduzindo a algoritmos e programas que não são totalmente sequenciais. As instruções de seleção ou decisão encontradas no pseudocódigo são as seguintes: estrutura de seleção simples, estrutura de seleção composta, estrutura de seleção encadeada e estrutura de seleção de múltipla escolha. ESTRUTURA DE SELEÇÃO SIMPLES Esta estrutura de seleção permite definir um único conjunto de instruções ou comandos que será ou não executado em função do resultado da realização de um teste sobre os dados. Sua sintaxe é dada a seguir: LÓGICA DE PROGRAMAÇÃO – Professora Gellars Tavares – ano 2014 Página 3 Nesta estrutura, um teste sobre os dados é executado através da especificação de uma expressão a ser avaliada. Tal expressão é definida pela cláusula <condição>. Esta, por sua vez, será avaliada e, em resultando um valor verdadeiro, o <conjunto de instruções> será executado. Caso o resultado da avaliação da <condição> não seja verdadeiro, serão executadas as instruções imediatamente seguintes ao término da estrutura, dada pela palavra reservada FIM SE. ESTRUTURA DE SELEÇÃO COMPOSTA Uma estrutura de seleção composta permite definir dois conjuntos de instruções passíveis de execução. Estes dois conjuntos de instruções, por sua vez, são excludentes, ou seja, somente um dos dois será executado. A escolha de qual dos dois conjuntos de instruções será executado dependerá também do resultado da avaliação de um teste sobre os dados. Desta forma, um deles será executado quando o resultado da avaliação do teste for verdadeiro, enquanto o outro somente será executado quando o resultado da avaliação do teste for falso. Tal instrução possui a seguinte sintaxe: Alguns autores consideram a estrutura de seleção composta e a estrutura de seleção simples como uma estrutura única, tendo a cláusula SENÃO como opcional. Na estrutura de seleção composta, um teste sobre os dados, especificado na cláusula <condição> será realizado. Caso o resultado da avaliação deste teste seja verdadeiro, as instruções constantes no <conjunto de instruções1> serão executadas sendo, em caso contrário (o resultado da avaliação do teste é falso) as instruções constantes no <conjunto de instruções2> serão executadas. Após a execução LÓGICA DE PROGRAMAÇÃO – Professora Gellars Tavares – ano 2014 Página 4 de um dos dois conjuntos de instruções, o fluxo de execução do algoritmo segue normalmente com as instruções imediatamente seguintes ao final da estrutura, dada pela palavra reservada FIM SE. Como exemplo, pode-se ter o seguinte trecho de algoritmo: EXEMPLO: Construir um algoritmo que leia dois números e efetue a adição. Caso o valor somado seja maior ou igual a 10, este deverá ser apresentado somando-se a ele mais 5, caso o valor somado não seja maior ou igual a 10, este deverá ser apresentado subtraindo-se 7. ALGORITMO LINGUAGEM C++ algoritmo teste #include <iostream> inteiro V1, V2, SOMA; using namespace std; inicio int main() escreva"Digite valor: "; { leia V1; int v1, v2, soma; escreva"Digite valor: "; cout<<"Digite valor: "; leia V2; cin>>v1; SOMA V1 + V2; cout<<"Digite outro valor: "; se (soma >= 10) então cin>>v2; escreva soma + 5; soma = v1 + v2; senão if (soma >= 10) escreva soma - 7; cout << soma + 5<<" \n"; fim se; else fim cout << soma - 7<<endl; system("pause"); return 0; } Fazem o mesmo LÓGICA DE PROGRAMAÇÃO – Professora Gellars Tavares – ano 2014 Página 5 ESTRUTURA DE SELEÇÃO ENCADEADA Uma estrutura de seleção encadeada nada mais é do que uma combinação entre as estruturas de seleção simples e compostas, possibilitando, desta forma, a especificação de vários conjuntos de instruções passíveis de execução. Entretanto, da mesma forma como na estrutura de seleção composta, somente um dos conjuntos de instruções especificados será executado, dependendo do resultado de testes sobre os dados. Um exemplo de sintaxe para esta estrutura é dado abaixo: O exemplo acima combina duas estruturas de seleção composta, juntamente com uma estrutura de seleção simples, permitindo a especificação de três conjuntos de instruções. Entretanto, somente um deles deverá ser executado. A combinação de estrutras de seleção simples e composta é livre, desde que se observe a hierarquização das mesmas. LÓGICA DE PROGRAMAÇÃO – Professora Gellars Tavares – ano 2014 Página 6 EXEMPLO: Ler três números, possíveis lados de um triângulo e imprimir a classificação segundo os ângulos. ALGORITMO LINGUAGEM C++ algoritmo triangulo #include <iostream> real a,b,c; #include <conio.h> inicio using namespace std; escreva “primeiro numero: "; int main() leia a; { escreva"segundo numero: "; float a, b, c; leia b; cout<<"digite primeiro numero: "; escreva"terceiro numero: "; cin>>a; leia c; cout<<"digite segundo numero: "; se (a > b + c e b > a + c e c > a + b) então cin>>b; escreva"as medidas não formam um triangulo"; cout<<"digite terceiro numero: "; senão cin>>c; se (a == b e a == c) então if (a > b + c && b > a + c && c > a + b) escreva"triangulo equilatero"; cout<<"as medidas não formam um triangulo \n"; senão else se (a == b || a == c || b == c) então if (a = b && a = c) escreva"triangulo isoscele"; cout<<"triangulo equilatero \n"; senão else escreva"triangulo escaleno"; if (a = b || a = c || b = c) cout<<"triangulo isosceles \n"; fim else cout<<"triangulo escaleno \n"; getch(); //precisa biblioteca conio.h return 0; } ESTRUTURA DE SELEÇÃO DE MÚLTIPLA ESCOLHA A seleção escolha-caso permite inserirmos múltiplas condições com apenas um teste. A vantagem é que o algoritmo poderá descrever vários blocos de execução e o teste, não necessariamente será lógico. Para que possamos substituir se...então..senão pela estrutura de escolha, é necessário que algumas exigências sejam atendidas na linha que escolhemos: 1- A variável tem que ser a mesma em todos os testes. 2- A variável tem que ser do tipo enumerável: inteira ou de um caracter. Um exemplo de sintaxe para esta estrutura é dado abaixo: LÓGICA DE PROGRAMAÇÃO – Professora Gellars Tavares – ano 2014 Página 7 Como exemplo, pode-se ter o seguintetrecho de algoritmo: EXEMPLO: Sabe-se que uma determinada equipe de natação possui uma empresa que patrocina o pagamento do salário de seus nadadores e, além disso, paga um valor adicional ao salário mensal em função da produtividade de cada nadador. A produtividade é paga de acordo com a tabela: CLASSE NÍVEL VALOR ADICIONAL 1 EXCELENTE 50% 2 BOM 40% 3 MÉDIO 30% 4 REGULAR 20% Elabore um algoritmo e programa em C++ que leia o salário e o código da classe do nadador, calcule e imprima o seu salário final. LÓGICA DE PROGRAMAÇÃO – Professora Gellars Tavares – ano 2014 Página 8 Vamos resolver primeiro com a estrutura do se...senão: ALGORITMO LINGUAGEM C++ algoritmo menu #include <iostream> inteiro cod; using namespace std; real sal int main() inicio { escreva “Digite salario: “; int cod; leia sal; float sal; escreva “1 – EXCELENTE “; escreva “2 – BOM “; cout<”Digite salario: “; escreva “3 – MEDIO “; cin>>leia sal; escreva “4 – REGULAR “; cout<<”1 – EXCELENTE \n“; escreva “ESCOLHA UMA CLASSE: “; cout<<”2 – BOM \n“; leia cod; cout<<”3 – MEDIO \n“; se (cod == 1) cout<<”4 – REGULAR \n“; escreva”SALARIO”, sal + sa l * 0.5; cout<<”ESCOLHA UMA CLASSE: “; senão cin>>cod; se (cod == 2) escreva”SALARIO”, sal + sal * 0.4; if (cod == 1) senão cout<<”SALARIO”<<sal + sal * 0.5<<”\n”; se (cod == 3) escreva”SALARIO”, sal + sal * 0.3; else senão if (cod == 2) se (cod == 4) escreva”SALARIO”, sal + sal * 0.2; cout<<”SALARIO”<<sal+sal*0.4<<”\n”; senão else escreva “OPCAO INVALIDA”; if (cod == 3) fim se cout<<”SALARIO”<<sal+sal*0.3<<”\n”; fim se else fim se if (cod == 4) fim se cout<<”SALARIO”<<sal+sal*0.2<<”\n”; fim else cout<<”OPCAO INVALIDA \n”; system("pause"); } LÓGICA DE PROGRAMAÇÃO – Professora Gellars Tavares – ano 2014 Página 9 Agora veremos com a estrutura do escolha: ALGORITMO LINGUAGEM C++ algoritmo menu #include <iostream> inteiro cod; using namespace std; real sal int main() inicio { escreva “Digite salario: “; int cod; leia sal; float sal; escreva “1 – EXCELENTE “; escreva “2 – BOM “; cout<”Digite salario: “; escreva “3 – MEDIO “; cin>>leia sal; escreva “4 – REGULAR “; cout<<”1 – EXCELENTE \n“; escreva “ESCOLHA UMA CLASSE: “; cout<<”2 – BOM \n“; leia cod; cout<<”3 – MEDIO \n“; escolha (cod) cout<<”4 – REGULAR \n“; caso 1: escreva”SALARIO”, sal + sa l * 0.5; cout<<”ESCOLHA UMA CLASSE: “; pare; cin>>cod; caso 2: escreva”SALARIO”, sal + sal * 0.4; switch (cod) { pare; case 1: cout<<”SALARIO”<<sal+sal*0.5<<”\n”; caso 3: escreva”SALARIO”, sal + sal * 0.3; break; pare; case 2: cout<<”SALARIO”<<sal+sal*0.4<<”\n”; caso 4: escreva”SALARIO”, sal + sal * 0.2; break; pare; case 3: cout<<”SALARIO”<<sal+sal*0.3<<”\n”; senão break; escreva “OPCAO INVALIDA”; case 4: cout<<”SALARIO”<<sal+sal*0.2<<”\n”; fim escolha; break; fim default : cout<<”OPCAO INVALIDA \n”; } system("pause"); }
Compartilhar