Universidade do Sul de Santa Catarina UNISUL – 2014 / 1 Engenharia Elétrica Algoritmos Prof. Paulo Villa Aula 3 Slides adaptados do Prof. Frederico Ferlini Introdução 2 • Algoritmo da aula passada: Escrever um algoritmo que lê 3 valores reais a, b e c e calcula as médias: • • • • Aritmética: ma = (a+b+c)/3 Harmônica: mh = 3/(1/a + 1/b + 1/c) Geométrica: mg = (a*b*c)^(1/3) Ponderada: mp = (1*a + 2*b + 3*c)/(1 + 2 + 3) Prof. Paulo Villa Escrever um algoritmo que calcula a media de consumo de combustível de um veiculo • media = km_rodado/litros_consumidos Introdução 3 • Algoritmos Sequenciais “Um algoritmo sequencial é aquele cuja execução é efetuada na ordem em que as instruções ocorrem, sem omissão de passos. A passagem de um passo a outro é natural e automática e cada passo é executado uma única vez” Prof. Paulo Villa Algoritmo Com Seleção 4 • Algoritmos Condicionais “Um algoritmo em que se tem a execução de determinados passos subordinada à veracidade de uma condição é denominada de algoritmo de seleção” Prof. Paulo Villa Algoritmo Com Seleção 5 Se <condição> entao <instrução> Fimse* Se <condição> entao <instrução_1> Senao <instrução_2> Prof. Paulo Villa Fimse* *Fimse serve para distinguir as instruções do fluxo normal do algoritmo daquelas que dependem da condição para serem executadas ou não. Algoritmo Com Seleção Instrução: é qualquer uma das ações já vistas: Exemplos: Ler a b ← 𝑎2 − 1 x1 ← 𝑎+𝑏+𝑐 3 Escrever x1 Prof. Paulo Villa Condição: é uma expressão lógica 6 Expressão Lógica 7 • Álgebra Booleana: baseada em preposições As preposições são assertivas que podem estar corretas (verdadeiras) ou incorretas (falsas). A álgebra booleana assume apenas dois estados: não existem outros estados possíveis além de “verdadeiro” e do “falso” Exemplo: Prof. Paulo Villa • Considerando somente números inteiros e positivos: 1. O resultado da multiplicação de um número par por X é par 2. O resultado da multiplicação de um número ímpar por X é ímpar A afirmação 1 é verdadeira, enquanto, a preposição 2 é falsa Expressão Lógica • A afirmação 2 pode se tornar verdadeira se colocarmos uma condição C1: O resultado da multiplicação de um número ímpar por X é ímpar se X for ímpar Para essa asserção ser verdadeira então: • A1 – O número tem que ser ímpar • A2 – X tem que ser ímpar Prof. Paulo Villa A condição C1 é verdadeira se A1 E A2 forem verdadeiras 8 Expressão Lógica • Outro exemplo Geralmente, em cadastros de pessoas, só há duas opções de sexo possíveis: masculino ou feminino No caso de verificarmos se todos os cadastros estão corretos devemos considerar as duas afirmações • A3 – A pessoa X é do sexo masculino • A4 – A pessoa X é do sexo feminino Prof. Paulo Villa C2: O cadastro de uma pessoa está correto se ela tem um sexo válido Para condição C2 acima ser verdadeira: • A3 OU A4 tem que ser verdadeira 9 Expressão Lógica 10 • Outro exemplo Quando o cadastro está incorreto? No caso de verificarmos se todos os cadastros estão corretos devemos considerar as duas afirmações • A3 – A pessoa X é do sexo masculino • A4 – A pessoa X é do sexo feminino C3: O cadastro de uma pessoa está incorreto se ela tem um sexo inválido Prof. Paulo Villa Para condição C3 acima ser verdadeira: • (NÃO A3 ) E (NÃO A4) 11 Operadores Lógicos Tabela Verdade (dos operadores lógicos NÃO, E e OU) A B NÃO A NÃO B AEB A OU B F F V V F F F V V F F V V F F V F V V V F F V V Prof. Paulo Villa Sendo: A e B operandos lógicos: NÃO (~, ¬, NOT) – operação unária de negação E (^, ., AND) – operação de produto lógico OU (v, +, OR) – operação de soma lógica) 12 Operadores de Relação Outras condições que resultam em valor lógico: Relação SÍMBOLO Resultado Maior Menor Maior ou igual A>B A<B A≥B V/F V/F V/F Menor ou igual diferente A≤B A≠B V/F V /F Prof. Paulo Villa 13 Exemplo • Algoritmo que determina qual quadrante de um plano se encontra um ponto dado as suas coordenadas X e Y, ou então, se está sobre um dos eixos cartesianos ou na origem: Prof. Paulo Villa X =0 Y =0 Mensagem de Saída Ponto na Origem =0 ≠0 >0 ≠0 =0 >0 Ponto Sobre o Eixo Y Ponto Sobre o Eixo X Ponto no Quadrante 1 <0 >0 Ponto no Quadrante 2 <0 <0 Ponto no Quadrante 3 >0 <0 Ponto no Quadrante 4 14 Solução com condições Concatenada Prof. Paulo Villa algoritmo "PosicaoPonto" var x, y : inteiro inicio leia(x) leia(y) se ((x = 0) E (y = 0)) entao escreval("Ponto na origem") fimse se ((x = 0) E (y <> 0)) entao escreval("Ponto sobre o eixo y") fimse se ((x <> 0) E (y = 0)) entao escreval("Ponto sobre eixo x") fimse se ((x > 0) E (y > 0)) entao escreval("Ponto no quadrante 1") fimse se ((x < 0) E (y > 0)) entao escreval("Ponto no quadrante 2") fimse se ((x < 0) E (y < 0)) entao escreval("Ponto no quadrante 3") fimse se ((x > 0) E (y < 0)) entao escreval("Ponto no quadrante 4") fimse fimalgoritmo y Quadrante 2 Quadrante 1 x Quadrante 3 Quadrante 4 15 Solução com condições Aninhadas Prof. Paulo Villa algoritmo "PosicaoPonto2" var x, y : inteiro Inicio leia(x) leia(y) se (x <> 0) entao se (y = 0) entao escreval("Ponto sobre o eixo x") senao se (x > 0) entao se (y > 0) entao escreval("Ponto no quadrante 1") senao escreval("Ponto no quadrante 4") fimse senao se (y > 0) entao escreval("Ponto no quadrante 2") senao escreval("Ponto no quadrante 3") fimse fimse fimse senao se (y = 0) entao escreval("Ponto na origem") senao escreval("Ponto sobre o eixo y") fimse fimse fimalgoritmo y Quadrante 2 Quadrante 1 x Quadrante 3 Quadrante 4 16 Solução com condições Aninhadas Prof. Paulo Villa algoritmo "PosicaoPonto2" var x, y : inteiro Inicio leia(x) leia(y) se (x <> 0) entao se (y = 0) entao escreval("Ponto sobre o eixo x") senao se (x > 0) entao se (y > 0) entao escreval("Ponto no quadrante 1") senao escreval("Ponto no quadrante 4") fimse senao se (y > 0) entao escreval("Ponto no quadrante 2") senao escreval("Ponto no quadrante 3") fimse fimse fimse senao se (y = 0) entao escreval("Ponto na origem") senao escreval("Ponto sobre o eixo y") fimse fimse fimalgoritmo y Quadrante 2 Quadrante 1 x Quadrante 3 Quadrante 4