Baixe o app para aproveitar ainda mais
Prévia do material em texto
8/30/2014 1 ESTRUTURA CONDICIONAL A U LA 6 130ENGENHARIAS – LÓGICA DE PROGRAMAÇÃO – Henry Lubanco / Joelio Piraciaba 131 Tem como objetivo executar um conjunto de comandos caso uma condição lógica seja atendida. Quando a resposta lógica for falsa, nada será executado. Sintaxe Se CONDIÇÃO ENTÃO COMANDO Estruturas de tomada de decisão A pergunta lógica deve ser formulada para que haja apenas duas respostas válidas (Verdadeiro ou Falso) Exemplo: A > B? X <= 0? NOME = “JOSE” ENGENHARIAS – LÓGICA DE PROGRAMAÇÃO – Henry Lubanco / Joelio Piraciaba 132 Sintaxe SE condição ENTÃO INÍCIO comando1 comando2 comando3 FIM Os comandos 1, 2 e 3 só serão executados se a condição for verdadeira As palavras início e fim serão necessárias apenas quando dois ou mais comandos forem executados Estruturas de tomada de decisão ENGENHARIAS – LÓGICA DE PROGRAMAÇÃO – Henry Lubanco / Joelio Piraciaba 133 Exemplo em linguagem C/C++ if (condição) comando; O comando só será executado se a condição for verdadeira Estruturas de tomada de decisão ENGENHARIAS – LÓGICA DE PROGRAMAÇÃO – Henry Lubanco / Joelio Piraciaba 134 Exemplo em linguagem C/C++ if (condição) { comando1; comando2; comando3; } Em C/C++, torna-se obrigatória a utilização de chaves quando existe mais de um comando a executar. Os comandos entre chaves { } só serão executados se a condição for verdadeira. Estruturas de tomada de decisão ENGENHARIAS – LÓGICA DE PROGRAMAÇÃO – Henry Lubanco / Joelio Piraciaba 135 Na estrutura composta, quando a resposta da pergunta lógica for falsa, um outro bloco de comandos será executado SE condição ENTÃO comando1 SENÃO comando2 Se a condição for verdadeira, será executado o comando1; caso contrário, será executado o comando2. Estruturas de tomada de decisão ENGENHARIAS – LÓGICA DE PROGRAMAÇÃO – Henry Lubanco / Joelio Piraciaba 8/30/2014 2 136 SE condição ENTÃO INÍCIO comando1 comando2 fim SENÃO INÍCIO comando3 comando4 fim Estruturas de tomada de decisão VERDADEIRO FALSO ENGENHARIAS – LÓGICA DE PROGRAMAÇÃO – Henry Lubanco / Joelio Piraciaba 137 Observe, no exemplo anterior, que se a condição for verdadeira, o comando1 e o comando2 serão executados; caso contrario, o comando3 e o comando4 serão executados. Estruturas de tomada de decisão ENGENHARIAS – LÓGICA DE PROGRAMAÇÃO – Henry Lubanco / Joelio Piraciaba 138 Em linguagem C/C++ a estrutura condicional composta segue a seguinte estrutura if (condição) comando1; else comando2; Se a condição for verdadeira, apenas o comando1 será executado, caso contrário apenas o comando2 será executado. Observe ainda que em cada bloco só existe um comando e por isso não é necessário delimitar entre chaves. Estruturas de tomada de decisão ENGENHARIAS – LÓGICA DE PROGRAMAÇÃO – Henry Lubanco / Joelio Piraciaba 139 Exemplo if (condição) { comando1; comando2; } else { comando3; comando4; } Estruturas de tomada de decisão VERDADEIRO FALSO ENGENHARIAS – LÓGICA DE PROGRAMAÇÃO – Henry Lubanco / Joelio Piraciaba 140 Na estrutura aninhada, os blocos de comandos possuem outra estrutura condicional. Isso poderá ocorrer dentro do se e/ou dentro do senão. A estrutura interna poderá ser uma estrutura condicional simples ou composta, devendo o programador analisar cada caso. Estruturas de tomada de decisão ENGENHARIAS – LÓGICA DE PROGRAMAÇÃO – Henry Lubanco / Joelio Piraciaba 141 SE condiçãoA ENTÃO inicio comando1A SE condiçãoB comando1B SENÃO comando2B fim SENÃO comando2A Estruturas de tomada de decisão V V V V F F ENGENHARIAS – LÓGICA DE PROGRAMAÇÃO – Henry Lubanco / Joelio Piraciaba 8/30/2014 3 142 Exemplo em C/C++ if (A > B) { cout << “o valor de A e maior que o valor de B”; if (B > 0) cout << “o valores das variaveis A e B são positivos”; else cout << “o valor de B nao e positivo”; } else cout << “o valor de A não e maior que o valor de B”; Estruturas de tomada de decisão ENGENHARIAS – LÓGICA DE PROGRAMAÇÃO – Henry Lubanco / Joelio Piraciaba 143 Os operadores lógicos são usados para fazer conjunção (e), disjunção (ou) além da negação (não) Exemplos: SE ((A>B) e (A>C)) Observe que a condição só será atendida caso as duas condições sejam verdadeiras. SE ((A>B) ou (A>C)) Observe que, para que a condição seja atendida, basta que uma das duas condições seja verdadeira. SE (A≠0) Observe que a condição será aceita caso o valor de A seja diferente de 0. Operadores Lógicos ENGENHARIAS – LÓGICA DE PROGRAMAÇÃO – Henry Lubanco / Joelio Piraciaba 144 Tabela verdade dos operadores lógicos Operadores Lógicos ENGENHARIAS – LÓGICA DE PROGRAMAÇÃO – Henry Lubanco / Joelio Piraciaba 145 Em linguagem C/C++ usamos as simbologias: E && ou || Não ! Exemplo: if ((a>b) && (a>c)) A condição será atendida caso a seja maior que b e maior que c if ((a>b) || (c>b)) A condição será atendida caso a seja maior que b ou c seja maior que b if (x!=y) A condição será atendida caso x não seja igual a y Operadores Lógicos ENGENHARIAS – LÓGICA DE PROGRAMAÇÃO – Henry Lubanco / Joelio Piraciaba 146 Dado o seguinte algoritmo: se media >= 5 então imprima "Aprovado" senão imprima "Reprovado" fim se Identifique qual a estrutura de controle utilizada ( ) Condicional simples ( X) Condicional composta ( ) Condicional aninhada ( ) Condicional múltipla escolha ( ) Condicional de repetição Exercício resolvido ENGENHARIAS – LÓGICA DE PROGRAMAÇÃO – Henry Lubanco / Joelio Piraciaba 147 Qual o resultado da variável Z após a execução do código abaixo? x = 5; y = 7; z = 3; if ((x-1) > 2) y = y + 1; else y = y – 1; z = z + x + y; ( ) 11 ( ) 13 ( X) 16 ( ) 17 ( ) 20 Exercício resolvido ENGENHARIAS – LÓGICA DE PROGRAMAÇÃO – Henry Lubanco / Joelio Piraciaba 8/30/2014 4 148 Faça um algoritmo que leia duas notas e mostre qual foi a maior nota digitada. Logo após transforme esse algoritmo em um programa C++ Algoritmo declare nota1, nota2 : Real; escreva (“Informe a primeira nota”); leia (nota1); escreva (“Informe a segunda nota”); leia (nota2); se (nota1 > nota2) então escreva (“A primeira nota foi maior”); senão se (nota1 < nota2) então escreva (“A segunda nota foi maior”); senao escreva (“As notas foram iguais”); fim se fim se Fim algoritmo Exercício resolvido ENGENHARIAS – LÓGICA DE PROGRAMAÇÃO – Henry Lubanco / Joelio Piraciaba 149 Faça um algoritmo que descubra se um ano é bissexto deve-se verificar se ele é divisível por 4. Entretanto, os anos divisíveis por 100 (apesar de divisíveis por 4) são exceção: eles não são bissextos. Os anos divisíveis por 400 (apesar de divisíveis por 100) são a exceção da exceção: eles também são bissextos. Por exemplo: 1996 é bissexto (divisível por 4) 1900 não é bissexto (divisível por 4, seria bissexto, mas é também divisível por 100) 2000 é bissexto (apesar de divisível por 100, não seria bissexto, mas é também divisível por 400) Exercício resolvido ENGENHARIAS – LÓGICA DE PROGRAMAÇÃO – Henry Lubanco / Joelio Piraciaba 150 algoritmo "Descobrir se o ano é bissexto“ declare ano inteiro Inicio escreva("Digite o ano: ") leia(ano) se (ano % 4) = 0 entao se (ano % 100) = 0 então se (ano % 400) = 0 então escreva("Ano bissexto") senão escreva ("Ano não é bissexto") fimse senão escreva("Ano bissexto") fimse fimse Fim algoritmo Exercício resolvido (solução) ENGENHARIAS – LÓGICA DE PROGRAMAÇÃO – Henry Lubanco / Joelio Piraciaba 151 A nota final de um estudante é calculada a partir de três notas atribuídas, respectivamente, a um trabalho de laboratório, a uma avaliação semestral e a um exame final. Amédia das três notas mencionadas obedece aos pesos a seguir Faça um programa que receba as três notas, calcule e mostre a media ponderada e o conceito conforme a tabela a seguir Exercício resolvido ENGENHARIAS – LÓGICA DE PROGRAMAÇÃO – Henry Lubanco / Joelio Piraciaba 152 ALGORITMO DECLARE nota_trab, aval_sem, exame, media NUMÉRICO ESCREVA "Digite a nota do trabalho de laboratório: " LEIA nota_trab ESCREVA "Digite a nota da avaliação semestral: " LEIA aval_sem ESCREVA "Digite a nota do exame final: " LEIA exame media (nota_trab* 2 + aval_sem * 3 + exame * 5 ) / 10 ESCREVA "Média ponderada:.“ , media SE media >= 8 E media <= 10 ENTÃO ESCREVA "Obteve conceito A“ SE media >= 7 E media < 8 ENTÃO ESCREVA "Obteve conceito B“ SE media >= 6 E media < 7 ENTÃO ESCREVA "Obteve conceito C“ SE media >= 5 E media < 6 ENTÃO ESCREVA "Obteve conceito D“ SE media >= 0 E media < 5 ENTÃO ESCREVA "Obteve conceito E“ FIM_ALGORITMO. Exercício (solução) ENGENHARIAS – LÓGICA DE PROGRAMAÇÃO – Henry Lubanco / Joelio Piraciaba 153 Faça um programa que receba três notas de um aluno, calcule e mostre a média aritmética e a mensagem constante na tabela a seguir. Aos alunos que ficaram para exame, calcule e mostre a nota que deverão tirar para serem aprovados, considerando que a média exigida é 6,0. Exercício resolvido ENGENHARIAS – LÓGICA DE PROGRAMAÇÃO – Henry Lubanco / Joelio Piraciaba 8/30/2014 5 154 ALGORITMO DECLARE nota1, nota2, nota3, media, nota_exame NUMÉRICO ESCREVA "Digite a primeira nota: " LEIA nota1 ESCREVA "Digite a segunda nota: “ LEIA nota2 ESCREVA "Digite a terceira nota: “ LEIA nota3 media (nota1+ nota2 + nota3) / 3 ESCREVA "Média aritmética:",media SE media >= 0 E media < 3 ENTÃO ESCREVA "Reprovado“ SE media >= 3 E media < 7 ENTÃO INÍCIO ESCREVA "Exame" nota_exame 12 – media ESCREVA "Deve tirarnota", nota_exame, "para ser aprovado" FIM SE media >= 7 E media <= 10 ENTÃO ESCREVA "Aprovado" FIM_ALGORITMO. Exercício (solução) ENGENHARIAS – LÓGICA DE PROGRAMAÇÃO – Henry Lubanco / Joelio Piraciaba 155 Observe os valores abaixo e responda com int (inteira), Double (real), char (caracter), String (conjunto de caracteres) e boolean (lógica). Observe os nomes abaixo e responda com V, se forem nomes válidos para identificadores e com NV, se forem nomes inválidos. Exercício resolvido 21 ( int ) 3.5 ( float ) false ( bool ) “BOLA” ( string ) “true” ( string ) ‘@’ ( char ) A ( V ) B-2 ( NV ) TESTE ( V ) A_2 ( V ) C#2 ( NV ) void ( NV ) ENGENHARIAS – LÓGICA DE PROGRAMAÇÃO – Henry Lubanco / Joelio Piraciaba 156 Sabendo que a tarefa de processar o dado é executar com ele uma ação que produza algum tipo de resultado, entre as tarefas comuns a esta função identifique como verdadeiras ou falsas as afirmações abaixo Exercício resolvido Operações aritméticas: somar, subtrair, multiplicar, dividir, ...;(V) Movimentação de dados: memória-CPU, CPU-memória, registrador-registrador, ...;(V) Operação física de energia(F) Desvios: alteração da sequência de execução das instruções, Operações de entrada ou saída;(V) Operações lógicas: and, or, xor, not,... ;(V) ENGENHARIAS – LÓGICA DE PROGRAMAÇÃO – Henry Lubanco / Joelio Piraciaba 157 Dados X = 2, Y = 5, Z = 9, variável nome contendo MARIA e variável SIM contendo false, responda se as expressões são V ou F Exercício resolvido (X + Y > Z) && (nome == “MARIA”) (F) SIM || (Y <= Z) (V) !(Z < 10) || (X * Y > Z) (V) !(NOME == “MARIA”) && SIM (F) ((X != 2) || (Y < Z)) && (Z > X + Y) (V) Precedências (), !, * / %, + -, < > <= >=, == !=, &&, || ENGENHARIAS – LÓGICA DE PROGRAMAÇÃO – Henry Lubanco / Joelio Piraciaba 158 Dadas as variáveis numéricas A e B, contendo os valores 2 e 6, respectivamente; a variável L, contendo o literal FALSO; e a variável lógica V, contendo o valor lógico verdadeiro, assinale a expressão lógica cujo resultado possui valor lógico falso Exercício resolvido A > B ou V ( ) A > B e V ou L = "FALSO” ( ) A > B ou L = "FALSO" ( ) A - B < 2 e L ≠ "VERDADEIRO" e V ( ) A < B e L = "LITERAL" (X) ENGENHARIAS – LÓGICA DE PROGRAMAÇÃO – Henry Lubanco / Joelio Piraciaba 159 Dados os seguintes valores das variáveis: A=3 e B=-2, assinale respectivamente o resultado das três expressões relacionais: A ≠ B A >= B B <= A Exercício resolvido Falso, Verdadeiro, Falso ( ) Verdadeiro, Falso, Verdadeiro ( ) Verdadeiro, Verdadeiro, Falso ( ) Falso, Falso, Falso ( ) Verdadeiro, Verdadeiro, Verdadeiro (X) ENGENHARIAS – LÓGICA DE PROGRAMAÇÃO – Henry Lubanco / Joelio Piraciaba 8/30/2014 6 160 A execução de uma expressão lógica obedece como prioridade a ordem dos operadores: Exercício resolvido OR, AND e NOT (F) AND, OR e NOT (F) NOT, AND e OR (V) NOT, OR e AND (F) AND, NOT e OR (F) ENGENHARIAS – LÓGICA DE PROGRAMAÇÃO – Henry Lubanco / Joelio Piraciaba 161 Uma bomba é acionada quando a caixa d´agua possui menos de 3000 litros de água e a cisterna possui mais de 1000 litros de água. Também é possível acionar a bomba caso haja menos de 3000 litros de água na caixa, mais de 300 litros de água na cisterna e a vazão de entrada for de, pelo menos, 3m3 por segundo. Crie a expressão lógica para identificar se a bomba será acionada ou não. Exercício ENGENHARIAS – LÓGICA DE PROGRAMAÇÃO – Henry Lubanco / Joelio Piraciaba 162 A ponte que liga o nada a lugar algum está com o tráfego controlado, sendo liberado para passar até 5 caminhões por vez. Poderá ser liberada também se houver até 15 carros ou ainda até 10 carros e 2 caminhões. Crie a expressão lógica para identificar se a ponte poderá ser liberada ou não. Exercício ENGENHARIAS – LÓGICA DE PROGRAMAÇÃO – Henry Lubanco / Joelio Piraciaba ESTRUTURA CONDICIONAL MÚLTIPLA ESCOLHAA U LA 7 163ENGENHARIAS – LÓGICA DE PROGRAMAÇÃO – Henry Lubanco / Joelio Piraciaba 164 Muitos programas são desenvolvidos de modo que eles possam realizar varias tarefas (condições), independentemente. Por exemplo, um programa que gerencie um caixa eletrônico de um banco deve oferecer ao usuário algumas opções em relação a ação que ele pretende realizar na sua conta como a Emissão do saldo atual; Emissão de um extrato; Realização de um saque; Realização de um depósito. ESTRUTURA MÚLTIPLA ESCOLHA ENGENHARIAS – LÓGICA DE PROGRAMAÇÃO – Henry Lubanco / Joelio Piraciaba 165 Um menu de opções com a indicação das diversas tarefas que o programa pode executar e a permissão de que o usuário escolha a tarefa pretendida. Como, em geral, são varias as opções disponíveis (cada uma delas com uma sequência especifica de comandos) e só uma das opções será a escolhida, e necessária uma estrutura que decide entre varias sequencias de comandos qual vai ser executada ou quais vão ser executadas. O comando switch tem este objetivo. ESTRUTURA MÚLTIPLA ESCOLHA ENGENHARIAS – LÓGICA DE PROGRAMAÇÃO – Henry Lubanco / Joelio Piraciaba 8/30/2014 7 166 ESTRUTURA MÚLTIPLA ESCOLHA ENGENHARIAS – LÓGICA DE PROGRAMAÇÃO – Henry Lubanco / Joelio Piraciaba escolha(opção) inicio caso 1: inicio bloco de comandos fim caso 2: inicio bloco de comandos fim senao: inicio bloco de comandos fim fim_escolha switch( variável int n ou char ) { case op1 : { bloco de comandos; break; } case op2: { bloco de comandos; break; } default : { bloco de comandos; } } COMPARAÇÃO DA SINTAXE ENTRE PSEUDOCÓDIGO X C++ 167 A condição argumento do comando deve resultar num valor do tipo int ou num valor do tipo chare, opcionalmente, a ultima instrução de cada uma das sequencias. A semântica é que a condição é avaliada e as sequencias de instruções situadas entre o valor da condição apresentado nos cases e um comando break ou o delimitador do comando são executadas. ESTRUTURA MÚLTIPLA ESCOLHA ENGENHARIAS – LÓGICA DE PROGRAMAÇÃO – Henry Lubanco / Joelio Piraciaba 168 Se o valor da condição for diferente de todas as opções dadas pelas constantes associadas aos cases, a sequência de instruções vinculada ao default será executada. ESTRUTURA MÚLTIPLA ESCOLHA ENGENHARIAS – LÓGICA DE PROGRAMAÇÃO – Henry Lubanco / Joelio Piraciaba 169 Exemplo #include<iostream> using namespace std; int main(){ int numero; cout<<"Digite um numero: "; cin>>numero; switch(numero){ case 1: cout<<"Voce digitou 1"; break; case 2: cout<<"Voce digitou 2"; break; case 3: cout<<"Voce digitou 3"; break; default: cout<<"Opcao Invalida!"; } system("pause"); EXIT_SUCCESS; } ESTRUTURA MÚLTIPLA ESCOLHA ENGENHARIAS – LÓGICA DE PROGRAMAÇÃO – Henry Lubanco / Joelio Piraciaba 170 Exemplo #include<iostream> using namespace std; int main(){ int numero; cout<<"Digite um numero: "; cin>>numero; switch(numero){ case 1: case 2: case 3: cout<<"Primeiro trimestre"; break; case 4: case 5: case 6: cout<<"Segundo trimestre"; break; case 7: case 8: case 9: cout<<"Terceiro trimestre"; break; case 10: case 11: case 12: cout<<"Quarto trimestre"; break; } system("pause"); EXIT_SUCCESS; } ESTRUTURA MÚLTIPLA ESCOLHA ENGENHARIAS – LÓGICA DE PROGRAMAÇÃO – Henry Lubanco / Joelio Piraciaba 171 Exemplo #include<iostream> using namespace std; int main() { int x; cout<<"Digite um número inteiro entre 1 e 5 \n"; cin>>x; switch (x) { case 1: cout<<"Valor de x: "<< x; break; case 2: cout<<"Valor do dobro de x: " << 2*x; break; case 3: cout<<"Valor do triplo de x: "<< 3*x; break; default: cout<<"Valor digitado: "<< x; } system("pause"); } ESTRUTURA MÚLTIPLA ESCOLHA ENGENHARIAS – LÓGICA DE PROGRAMAÇÃO – Henry Lubanco / Joelio Piraciaba 8/30/2014 8 172 A sequencia de instruções vinculada a uma opção case pode ser vazia, caso em que, evidentemente, nada e executado; Se apenas uma sequência de comandos deve ser executada, deve-se encerra-la com um break; A opção default e opcional: se ela não aparece na estrutura e o valor da condição for diferente de todos os valores disponíveis, nada e executado e a instrução logo após o comando switch passa a ser executada. ESTRUTURA MÚLTIPLA ESCOLHA ENGENHARIAS – LÓGICA DE PROGRAMAÇÃO – Henry Lubanco / Joelio Piraciaba
Compartilhar