Desenvolvendo Algoritmos Fundamentos de Lógica Marco Antonio Montebello Júnior [email protected] Agenda Regras para construção de uma algoritmo Tipos de algoritmos Tipos de dados e variáveis Operadores Aritméticos Relacionais Lógicos Estrutura Seqüencial Estruturas de Decisão Fundamentos de Lógica 2 Algoritmo O algoritmo deve ser fácil de se interpretar e fácil de codificar. Ou seja, ele deve ser o intermediário entre a linguagem falada e a linguagem de programação. Fundamentos de Lógica 3 Regras para construção do algoritmo Descrever a seqüência de instruções, de maneira simples e objetiva. Usar somente um verbo por frase Imaginar que você está desenvolvendo um algoritmo para pessoas que não trabalham com informática Usar frases curtas e simples Ser objetivo Procurar usar palavras que não tenham sentido dúbio Fundamentos de Lógica 4 Fases Para montar um algoritmo, precisamos primeiro dividir o problema apresentado em três fases fundamentais: ENTRADA: São os dados de entrada do algoritmo PROCESSAMENTO: São os procedimentos utilizados para chegar ao resultado final SAÍDA: São os dados já processados Entrada Processamento Fundamentos de Lógica Saída 5 Fases Analogia com um homem Fundamentos de Lógica 6 Tipo: Pseudocódigo – Português Estruturado Utiliza linguagem estruturada e se assemelha, na forma, a um programa escrito na linguagem de programação. É um tipo de algoritmo que utiliza uma linguagem flexível, intermediária entre a linguagem natural e a linguagem de programação. “Pseudocódigo” significa “falso código”; o nome se deve à proximidade que existe entre um algoritmo escrito em pseudocódigo e a maneira pela qual um programa é escrito em uma linguagem de programação Fundamentos de Lógica 7 Pseudocódigo Trocar uma lâmpada (V1) pegar uma escada; posicionar a escada embaixo da lâmpada; buscar uma lâmpada nova; subir na escada; retirar lâmpada velha; colocar lâmpada nova. Fundamentos de Lógica 8 Pseudocódigo Trocar 10 lâmpadas SE estiverem queimadas ir até o interruptor do primeiro soquete; enquanto a quantidade de soquetes testados for menor que 10, faça acionar o interruptor; se a lâmpada não acender, então pegar uma escada; posicionar a escada embaixo da lâmpada; buscar uma lâmpada nova; acionar o interruptor; subir na escada; retirar lâmpada queimada; colocar lâmpada nova; enquanto a lâmpada não acender, faça retirar lâmpada queimada; colocar lâmpada nova; ir até o interruptor do próximo soquete; Fundamentos de Lógica 9 Tipo: Descrição Narrativa Utiliza linguagem natural para especificar os passos para a realização das tarefas. Não é muito utilizada Fundamentos de Lógica 10 Tipo: Fluxograma Utiliza-se de figuras geométricas para ilustrar os passos a serem seguidos na resolução dos problemas. Diagrama de Blocos. É bastante utilizado Fundamentos de Lógica 11 Fluxograma - Simbologia Cada instrução ou ação a ser executada deve ser representada por meio de um símbolo gráfico. Terminal: representa o início e o final do fluxograma. Vídeo: representa a saída de informações por meio do monitor de vídeo. Processamento: representa a execução de operações ou ações. Decisão: representa uma ação lógica que resultará na escolha de uma das seqüências de instruções. Teclado: representa a entrada de dados para as variáveis por meio do teclado. Preparação: representa uma ação de preparação para o processamento. Fundamentos de Lógica 12 Fluxograma - Simbologia Conector: utilizado para interligar partes do fluxograma ou para desviar o fluxo corrente para um determinado trecho do fluxograma. Conector de Páginas: utilizado para interligar partes do fluxograma em páginas distintas. Seta de orientação do fluxo. Início Nome, Idade "Nome: ", Nome Fundamentos de Lógica "Idade: ", Idade Fim 13 Fluxograma início ir para o primeiro soquete posicionar escada não acendeu? soquetes restantes < 10 F buscar lâmpada nova V acionar o interruptor retirar a lâmpada queimada subir na escada colocar lâmpada nova V acionar o interruptor não acendeu? F F retirar a lâmpada queimada ir ao próximo soquete colocar lâmpada nova V pegar uma escada acionar o interruptor Fundamentos de Lógica fim 14 Tipo: Diagrama de Chapin Conhecido também como diagrama de Shneiderman ou diagrama N-S. Apresenta a solução do problema por meio de um diagrama de quadros com uma visão hierárquica e estruturada Fundamentos de Lógica 15 Diagrama de Chapin ir para o primeiro soquete soquetes testados < 10 acionar o interruptor lâmpada não acendeu pegar uma escada colocar a escada embaixo do soquete buscar lâmpada nova acionar o interruptor subir na escada retirar lâmpada queimada colocar lâmpada nova lâmpada não acendeu retirar lâmpada queimada colocar lâmpada nova ir para o próximo soquete Fundamentos de Lógica 16 Formas de Representação Gráficas (Fluxograma e Chapin) Vantagens Maior clareza no fluxo de execução Linguagem visual Desvantagens Requer conhecimento de convenções gráficas Mais trabalhoso em decorrência de seus desenhos Dificuldade para fazer correções Textuais (Português Estruturado) Apresenta mais vantagens, desde que se tomem alguns cuidados: Riqueza gramatical de nossa língua pode levar a ambigüidades A frase “O pregador foi grampeado durante o conserto” tem “8” sentidos diferentes quando pronunciada Para resolver, utilizaremos um conjunto restrito de regras, conhecido como Português Estruturado Fundamentos de Lógica 17 Tipos de dados e variáveis Tipos Primitivos São os tipos básicos de informação dos algoritmos Inteiro: informação pertencente ao conjunto dos números inteiros relativos (positiva ou negativa). Real: informação pertencente ao conjunto dos números reais. Caractere: informação alfanumérica (caracteres alfabéticos, numéricos e especiais) Lógico: informação biestável (admite apenas 2 valores: verdadeiro ou falso) Fundamentos de Lógica 18 Tipos de dados e variáveis Constantes São valores que não sofrem nenhuma variação no decorrer do tempo São exemplos de constantes: Valor de PI; Velocidade da luz; 5; “Não fume”. Fundamentos de Lógica 19 Tipos de dados e variáveis Variáveis São valores que podem sofrer alteração no decorrer do tempo. Exemplo: Cotação do dólar; Peso de uma pessoa; Preço da gasolina. São como gavetas que podem receber diversos tipos de objetos Fundamentos de Lógica 20 Tipos de dados e variáveis Variáveis Identificadores: São os nomes escolhidos para as informações variáveis. Deve iniciar por caractere alfabético; Pode ser seguido por mais caracteres alfabéticos ou numéricos; Não devem ser usados caracteres especiais. Declaração: Processo de reservar e etiquetar gavetas; Só podem armazenar valores de um mesmo tipo, de maneira que também são classificadas como sendo numéricos, lógicos e literais. Fundamentos de Lógica 21 Operadores Aritméticos Utilizados para a realização de cálculos matemáticos Operador Função Exemplos + Adição 2 + 3, X + Y - Subtração 4 - 2, N – M * Multiplicação 3 * 4, A * B / Divisão 10 / 2, C / D Potenciação (x elevado a y) pot(2, 3) Raiz quadrada (de x) rad(9) Mod Resto da divisão 9 mod 4 resulta 1 Div Quociente da divisão inteira 9 div 4 resulta 2 pot(x,y) rad(x) Fundamentos de Lógica 22 Operadores Relacionais Utilizados para a estabelecer relação de comparação entre valores Operador Função Exemplos = Igual a 3 = 3, X = Y > Maior que 5 > 4, X > Y < Menor que 3 < 6, X < Y >= Maior ou igual a 5 >= 3, X >= Y <= Menor ou igual a 3 <= 5, X <= Y Diferente de 8 <> 9, X <> Y, 7 != 9 <> ou != Fundamentos de Lógica 23 Operadores Relacionais A=5 B=3 Expressão A=B A <> B A>B A<B A >= B A <= B Resultado Falso (F) Verdadeiro (V) Verdadeiro (V) Falso (F) Verdadeiro (V) Falso (F) Fundamentos de Lógica 24 Operadores Lógicos Utilizados para a efetuar avaliações lógicas entre valores Operador não (not) ! e (and) && ou (or) || Função Exemplos Negação: inverte o valor da expressão não V, não X ou condição, se verdadeira inverte para falsa e vice-versa. Conjugação: é verdadeira se todas as condições forem verdadeira V e V, X e Y Disjunção: é verdadeira se pelo menos uma condição for verdadeira V ou V, X ou Y Fundamentos de Lógica 25 Operadores Lógicos Tabela Verdade Conjunto de todas as possibilidades de cada operador lógico. A não A !A A B AeB A && B A B A ou B A || B F V F F F F F F V F F V F F V V V F F V F V V V V V V V Fundamentos de Lógica 26 Estrutura Seqüencial O fluxo de controle segue a mesma seqüência linear da nossa escrita, ou seja: De cima para baixo; Da esquerda para direita Cada ação é seguida de um ; Objetiva separar uma ação da outra Indica que a próxima ação da seqüência deve ser executada Fundamentos de Lógica 27 Estrutura Seqüencial Algoritmo – Média Aritmética início // declaração de variáveis real: N1, N2, N3, N4, // notas bimestrais MA; // média anual // entrada de dados leia (N1, N2, N3, N4); // processamento MA ← (N1 + N2 + N3 + N4) / 4; // saída de dados escreva (MA); fim Fundamentos de Lógica 28 Estruturas de Decisão São aquelas que permitem alterar o fluxo de execução, de forma a selecionar qual parte deve ser executada Essa “decisão” de execução é tomada a partir de uma condição, que pode resultar apenas em verdadeiro ou falso Uma condição é representada por expressões relacionais ou lógicas As estruturas de seleção podem ser classificadas em simples, compostas ou encadeadas. Fundamentos de Lógica 29 Estruturas de Decisão Fundamentos de Lógica 30 Estruturas de Decisão Simples Quando a <condição> for verdadeira o “bloco verdadeiro” é executado. Quando a <condição> for falsa o “bloco verdadeiro” não é executado. se <condição> então início // início do bloco verdadeiro comando 1; comando 2; ... comando n; fim; // fim do bloco verdadeiro fim_se; Fundamentos de Lógica 31 Estruturas de Decisão Simples Algoritmo – Média Aritmética com Aprovação início // declaração de variáveis real:N1, N2, N3, N4, // notas bimestrais MA; // média anual // entrada de dados leia (N1, N2, N3, N4); // processamento MA ← (N1 + N2 + N3 + N4) / 4; // saída de dados escreva (MA); se (MA >= 7) então escreva (“Aluno Aprovado !”); fim_se; fim. Fundamentos de Lógica 32 Estruturas de Decisão Composta Quando a <condição> for verdadeira o “bloco verdadeiro” é executado Quando a <condição> for falsa o “bloco falso” é executado se <condição> então início // início do bloco verdadeiro comando 1; comando n; fim; // fim do bloco verdadeiro senão início // início do bloco falso comando 1; comando n; fim; // fim do bloco falso fim_se; Fundamentos de Lógica 33 Estruturas de Decisão Composta Algoritmo – Média Aritmética com aprovação e reprovação início // declaração de variáveis real: N1, N2, N3, N4, // notas bimestrais MA; // média anual leia (N1, N2, N3, N4); MA ← (N1 + N2 + N3 + N4) / 4; escreva (MA); se (MA >= 7) então início escreva (“Aluno Aprovado!”); escreva (“Parabéns!”); fim; senão início escreva (“Aluno Reprovado!”); escreva (“Estude mais!”); fim; fim_se; fim. Fundamentos de Lógica 34 Estruturas de Decisão Encadeada (aninhada) Ocorre quando uma seleção tem como ação uma outra seleção Uma seleção encadeada pode ser: Heterogênea: Quando não é possível identificar padrão de comportamento Homogênea: Quando é possível identificar padrão de comportamento se – então – se: quando depois de cada então ocorre outro se se – senão – se: quando depois de cada senão ocorre outro se Fundamentos de Lógica 35 Estruturas de Decisão Encadeada – Heterogênea Algoritmo – Tipos de Triângulo início inteiro: A, B, C; // tamanho dos lados leia (A, B, C); se (A<B+C) e (B<A+C) e (C<A+B) então se (A=B) e (B=C) então escreva (“Triangulo Equilátero”); senão se (A=B) ou (B=C) ou (A=C) então escreva (“Triângulo Isósceles”); senão escreva (“Triangulo Escaleno”); fim_se; fim_se; senão escreva (“Estes valores não formam um triângulo”); fim_se; fim. Fundamentos de Lógica 36 Estruturas de Decisão Encadeada – Homogênea se – então – se se <Cond1> então se <Cond2> então se <Cond3> então se <Cond4> então W; fim_se; fim_se; fim_se; fim_se; É equivalente a: se <Cond1> e <Cond2> e <Cond3> e <Cond4> então W; fimse; Fundamentos de Lógica 37 Estruturas de Decisão Encadeada – Homogênea se X=V1 então C1; fim_se; se X=V2 então C2; fim_se; se X=V3 então C3; fim_se; se X=V4 então C4; fim_se; se X=V1 então C1; senão se X=V2 então C2; senão se X=V3 então C3; senão se X=V4 se – senão – se então C4; fim_se; fim_se; fim_se; fim_se; X=V1 X=V2 X=V3 X=V4 Ação X=V1 X=V2 X=V3 X=V4 Ação V F F F C1 V - - - C1 F V F F C2 F V - - C2 F F V F C3 F F V - C3 F F F V C4 F F F V C4 Fundamentos de Lógica 38 Estruturas de Decisão Múltipla Escolha Seleções encadeadas homogêneas se-senão-se são bastante freqüentes para o tratamento de listas de valor Para simplificar a escrita, pode-se utilizar o comando escolha. Adaptando o algoritmo anterior: escolha X caso V1: C1; caso V2: C2; caso V3: C3; caso V4: C4; fim_escolha; Fundamentos de Lógica 39 Estruturas de Decisão Múltipla Escolha Algoritmo – Múltipla Escolha início real: Preço; inteiro: Origem; leia (Preço, Origem); escolha Origem caso 1: escreva (Preço, “ – produto do Sul”); caso 2: escreva (Preço, “ – produto do Norte”); caso 3: escreva (Preço, “ – produto do Leste”); caso 4: escreva (Preço, “ – produto do Oeste”); caso 7, 8, 9: escreva (Preço, “ – produto do Sudeste”); caso 10..20: escreva (Preço, “ – produto do Centro-Oeste”); caso 5, 6, 25..50: escreva (Preço, “ – produto do Nordeste”); caso contrário: escreva (Preço, “ – produto importado”); fimescolha; fim. Fundamentos de Lógica 40