Algoritmos e Programação Thyago Maia Tavares de Farias Aula 2 Sumário Por que criamos algoritmos? Representações de um algoritmo Regras básicas para Português Estruturado Linearização de expressões Modularização de expressões Por que criamos algoritmos? Linguagem natural não pode ser interpretada por um computador; Computadores são projetados para executar tarefas bem determinadas a partir de determinadas instruções; Para desenvolver software, utilizamos linguagens de programação; A linguagem algorítmica é similar a uma linguagem de programação; Logo, aprendendo a criar algoritmos, estamos aptos a programar em qualquer linguagem de programação; Por que criamos algoritmos? LINGUAGEM NATURAL PORTUGUÊS, INGLÊS... INSTRUÇÕES ALTO NÍVEL ALGORITMO ADAPTAÇÃO CÓDIGO-FONTE EM LINGUAGEM DE PROGRAMAÇÃO BAIXO NÍVEL 01000101001.... LINGUAGEM DE MÁQUINA COMPILAÇÃO TRADUÇÃO Representações de um Algoritmo Descrição narrativa; Fluxograma Pseudocódigo, Português Estruturado ou Portugol; SUBJETIVIDADE PRECISÃO Representações de um Algoritmo Descrição Narrativa: Preferencialmente um verbo por frase; Frases curtas e simples; Objetividade; Evitar palavras com sentido dúbio; Exemplo Descrição Narrativa: Dobro de um número (Dobro = Número x 2): Digitar um número; Gravar em uma variável; Multiplicar o número digitado por 2; Gravar o resultado em outra variável; Mostrar o resultado da operação. Representações de um algoritmo Fluxogramas Descrevem o fluxo de ação de um determinado trabalho lógico, seja manual ou mecânico; Usa símbolos convencionais, permitindo poucas variações; Representado por símbolos geométricos; Exemplo Fluxograma para lidar com uma lâmpada que não funciona A LÂMPADA ESTÁ PLUGADA ? LÂMPADA NÃO FUNCIONA NÃO PLUGUE A LÂMPADA SIM TROQUE A LÂMPADA SIM VERIFIQUE O BOCAL NÃO A LÂMPADA ESTÁ QUEIMADA ? Representações de um algoritmo Português estruturado (Portugol) Linguagem mais restrita que o português em linguagem natural; Simplificação extrema do português; Significados bem definidos para todos os termos utilizados nas instruções; Possui um conjunto de palavras e regras específicas (sintaxe da linguagem); Representação utilizada no curso; Representações de um algoritmo Português estruturado (Portugol) Normalmente as implementações são feitas em papel, escritos a mão; Atualmente também são utilizados programas que interpretam, testam e executam algoritmos; Desafio Escreva um algoritmo que ajude o homem do barco a levar o lobo, a ovelha e a caixa de verduras para o outro lado do lago. Utilize a descrição narrativa para representar o algoritmo. Lembrando que lobos comem ovelhas e ovelhas comem as verduras da caixa quando o homem está na outra margem! Resposta do desafio 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. Pega a ovelha Vai para a outra margem Deixa a ovelha Volta a margem inicial Pega a caixa de verduras Vai para a outra margem Deixa a caixa de verduras e pega a ovelha Volta a margem inicial Deixa a ovelha e pega o lobo Vai para a outra margem Deixa o lobo Volta a margem inicial Pega a ovelha Vai para a outra margem Deixa a ovelha Linearização de expressões Para contrução de algoritmos que realizam cálculos matemáticos, TODAS expressões aritméticas devem ser linearizadas; Linearizadas = Colocadas em linha; Linearização de expressões Operadores aritméticos disponíveis para o português estruturado: Adição (+) Subtração (-) Multiplicação (*) Divisão (/) Divisão inteira (\) Exponenciação (^ ou Exp) Módulo, ou resto da divisão (%) Linearização de expressões Operadores relacionais Realizam a comparação entre dois operandos ou duas expressões e resultam em valores lógicos (verdadeiro ou falso) Ex.: 2+5 > 4 resultaria VERDADEIRO; Ex.: 2 = 7 resultaria FALSO; Linearização de expressões Operadores relacionais disponíveis no Português estruturado: Maior (>) Menor (<) Maior ou igual (>=) Menor ou igual (<=) Igual (=) Diferente (<>) Linearização de expressões Operadores lógicos Atuam em expressões, também resultando em valores lógicos VERDADEIRO ou FALSO; Tipos de operadores: E: Resulta verdadeiro se AMBAS AS PARTES forem verdadeiras; OU: Resulta verdadeiro se UMA DAS PARTES é verdadeira; NÃO: Nega uma afirmação. Se verdadeiro, torna-se falso; Se falso, torna-se verdadeiro; Linearização de expressões Exemplos: (2+5 > 4) e (3 <> 3) resulta FALSO (2=2) ou (3<1) resulta VERDADEIRO Pois VERDADEIRO e FALSO resulta FALSO; Pois VERDADEIRO ou FALSO resulta VERDADEIRO; NAO (3<1) resulta VERDADEIRO Pois FALSO resulta VERDADEIRO devido a inversão de valores definido por NÃO; Linearização de expressões Tabelas-Verdade A V V F F Mostra os resultados das aplicações dos operadores lógicos conforme os valores dos operandos envolvidos: B V F V F A E B A OU B NAO A NÃO B V V F F F V V F F V V F F F V V Modularização de expressões É a divisão de uma expressão por partes; Proporciona maior compreensão; Define prioridades na resolução das mesmas; Modularizamos expressões através dos parênteses ( ); Podemos utilizar parênteses dentro de parênteses (( )); Indicam quais sub-expressões serão executados primeiro; Modularização de expressões Exemplo: (2+2)/2 resulta 2; Mas 2+2/2 resulta 3; Ordem de prioridade dos operadores aritméticos: 1. 2. 3. 4. 5. Exponenciação Multiplicação Divisão Adição Subtração Modularização de expressões Ordem de prioridade dos operadores lógicos: 1. 2. 3. E OU NÃO Exemplo: (2>3) ou (3<2) e (2<3) resultaria FALSO (2>3) e (3<2) ou (2<3) resultaria VERDADEIRO Modularização de Expressões Ordem de prioridade dos operadores disponíveis no Português estruturado: 1. 2. 3. Operadores aritméticos Operadores relacionais Operadores lógicos Exercícios Escreva as expressões abaixo na forma linearizada: Respostas 1ª expressão: a + b/c 2ª expressão: ((2/3 – (5-3)) + 1) * 5 Exercícios Escreva as seguintes expressões linearizadas na forma matemática convencional: 4 + (5/3) * 8 – 4/2 – 5 8/4 – 2 + (5 + 4) / (3 – 1) Exercícios Resolva as expressões lógicas, determinando se a expressão é VERDADEIRA ou FALSA: 2>3 (6 < 8) OU (3 > 7) NÃO (2 < 3) (2=2) E (1 > 10) OU (5<4) Respostas Resolva as expressões lógicas, determinando se a expressão é VERDADEIRA ou FALSA: 2 > 3 = FALSO (6 < 8) OU (3 > 7) = VERDADEIRO NÃO (2 < 3) = FALSO (2=2) E (1 > 10) OU (5<4) = FALSO Forma geral de um algoritmo Algoritmo “nome do algoritmo” Var Aqui declaramos as variáveis dos algoritmo Inicio Aqui declaramos as instruções do algoritmo fimalgoritmo