Lógica de Programação Sumário • • • • • • • Briefing Representação de Algoritmos Dados Variáveis Expressões Tabelas Verdade Representação de Algoritmos – Pseudocódigo e VisuAlg • • • • • Instruções Primitivas Estrutura de Decisão Estrutura de Repetição Vetores Procedimentos e Funções 2 Lógica de Programação Briefing Briefing • Lógica – Do grego “Logos” – Estudo do raciocínio válido • Aquilo que pode ocorrer – Áreas da ciência • • • • Filosofia Matemática Semântica Informática 4 Briefing • Filosofia » Você é prisioneiro de uma tribo indígena que conhece todos os segredos do Universo e portanto sabem de tudo. Você está para receber sua sentença de morte. O cacique o desafia: - Faça uma afirmação qualquer. Se o que você falar for mentira você morrerá na fogueira, se falar uma verdade você será afogado. Se não pudermos definir sua afirmação como verdade ou mentira, nós te libertaremos. O que você diria? 5 Briefing • Filosofia » Solução: Afirme que você morrerá na fogueira! » Explicação: • Se você realmente morrer na fogueira, isto é uma verdade, portanto deveria morrer afogado • Mas se você morrer afogado a informação seria uma mentira e, portanto, deveria morrer na fogueira » Mesmo prevendo o futuro, haveria um impasse • Você seria libertado 6 Briefing • Matemática » Você deve colocar os números nas intersecções destes três aros, de modo que nas três linhas a soma seja dois. 7 Briefing • Matemática » Solução: -2 +3 +1 +2 0 -1 8 Briefing • Semântica » Qual afirmação está correta? • A afirmação abaixo é verdadeira • A afirmação acima é falsa 9 Briefing • Semântica » Solução: ? » Resultado • Eu, Robô • Blade Runner • Wall-E • ... 10 Briefing • Informática – Lógica de programação • Técnica de encadear pensamentos para atingir um determinado objetivo – Algoritmo • Uma sequência finita de passos, logicamente colocados, que levam a execução de uma determinada tarefa 11 Briefing • Informática – Algoritmo • “Receita de bolo” • Deve ter passos claros e precisos • Softwares são algoritmos construídos com alguma linguagem de programação 12 Atividade (classwork) • Escreva um parágrafo que conceitue a palavra “Lógica”, na sua opinião sem a consulta de quaisquer recursos literários ou bibliográficos • Pesquise e escreva sobre o Paradoxo de Epiménides e busque exemplos deste tipo de problema 13 Lógica de Programação Representação de Algoritmos Linguagem Natural Representação de Algoritmos • Linguagem Natural – Narrativa – Sequência de passos – Trilha evolutiva – Podem conter decisões que modificam o curso e os passos a serem seguidos 15 Representação de Algoritmos • Linguagem Natural – Ex: Preparar um bolo • Início: Coloque no liquidificador a laranja picada (sem casca e sem o pavio central), os ovos, o óleo e o açúcar • Ligue o liquidificador e bata por 3 minutos • Despeje o conteúdo em uma vasilha e adicione a farinha e o fermento • Misture bem • Asse em forno médio e pré-aquecido por 35 minutos • Faça a cobertura, despejando o suco de laranja com açúcar e o leite sobre o bolo ainda quente • Fim: Deixe esfriar e sirva 16 Representação de Algoritmos • Linguagem Natural – Ex1: Preparar um churrasco 17 Representação de Algoritmos • Linguagem Natural – Ex2: Projetar e construir um novo carro 18 Atividade (classwork) • Cite 5 exemplos de problemas que possam ser resolvidos com algoritmos • Elabore um algoritmo em linguagem natural para cada problema citado 19 Lógica de Programação Representação de Algoritmos Fluxograma Representação de Algoritmos • Fluxograma – Representação gráfica – Figuras geométricas representam ações distintas – Muito popular – Fácil entendimento das ideias contidas no algoritmo 21 Representação de Algoritmos • Fluxograma – Figuras 22 Representação de Algoritmos • Fluxograma – Ex: Preparar um bolo INÍCIO Junte a laranja picada, ovos, óleo e açúcar Ligue o liquidificador e bata por 3 minutos Despeje em uma vasilha e adicione farinha e fermento Despeje o suco de laranja, açúcar e leite sobre o bolo para cobertura Asse em forno médio por 35min Misture bem Deixe esfriar e sirva FIM 23 Representação de Algoritmos • Fluxograma – Ex1: Preparar um churrasco 24 Representação de Algoritmos • Fluxograma – Ex2: Projetar e construir um novo carro 25 Atividade (classwork) • Cite 5 exemplos de problemas que possam ser resolvidos com algoritmos • Elabore um algoritmo com fluxogramas para cada problema citado 26 Lógica de Programação Dados Dados • O que são dados? • Dados são... 28 Dados Não neste contexto!!! • O que são dados na informática? 29 Dados • O que é dado? • O que é informação? • O que é conhecimento? 30 Dados 31 Dados • Os dados possuem tipos diferentes, dependendo da forma que possuem e o que proporcionam ao sistema • A memória do computador trabalha de forma diferente com cada tipo de dado • Os tipos de dados são: – Numéricos – Lógicos – Literais 32 Dados • Numéricos – Inteiros • São valores numéricos (positivos ou negativos) que não possuem casas decimais – Idade (28,5 anos?) – Dia (dia 15,2?) – Unidades (2,1 maçãs?) 33 Dados • Numéricos – Reais • São valores numéricos (positivos ou negativos) que podem possuir casas decimais – Peso (78,6 kg) – Largura de um terreno (12,5 m) – – – – Número real positivo (23.4) Número real negativo (-12.9) Uma casa decimal (0.0) Duas casas decimais (-0.32) 34 Dados • Numéricos – Os números devem ser tratados da seguinte maneira: •2 = Inteiro • 2.0 = Real • 2.1 = Real 35 Dados • Lógicos – São também conhecidos como booleanos – Sua ideologia de uso reflete a maneira de funcionamento dos computadores – São usados para representar dois tipos de valores possíveis: • V (valor lógico verdadeiro) • F (valor lógico falso) 36 Dados • Lógicos – Verdadeiro pode ser simbolizado por: • • • • V TRUE 1 SIM – Falso por: • • • • F FALSE 0 NÃO 37 Dados • Lógicos – O colaborador é professor? • V – Portanto, o colaborador não é técnico administrativo, diretor, atendente ou qualquer outra função – O colaborador é professor? • F – O colaborador é técnico administrativo? • F – O colaborador é atendente? • F – Portanto, o colaborador exerce outra função 38 Dados • Literais – Letras, números e caracteres especiais podem ser dados de tipo literal – Uma sequência de dados deste tipo é caracterizada por estar entre aspas duplas (“”) – É também conhecido por tipo de dado alfanumérico (alfa = letras; numérico = números) ou string 39 Dados • Literais – Exemplos de dados literais: • • • • • • • “25” “Fulano” “24 de Fevereiro” “30.2” “20/02/2002” “-32a9ff34” “$#@” 40 Atividade (homework) • Cite 10 exemplos de dados para cada tipo de dado: – Numérico inteiro – Numérico real – Literal 41 Lógica de Programação Variáveis Variáveis • As variáveis são espaços criados na memória do computador para guardar informações • Estas informações são armazenadas por período temporário pela aplicação a ser executada (software) • Seus valores, diferente das constantes podem variar 43 Variáveis • Imagine um armário: 38 Idade 1200.00 Salário Cidade Ijuí Nº filhos RS Estado 3 Nome Fulano Ciclano 44 Variáveis • Cada “gaveta” armazena um tipo de dado • Se o valor na gaveta identificada for substituído, o dado anterior se perderá • Cada gaveta pode possuir somente UM dado (valor) 45 Variáveis • Existem algumas regras a serem seguidas ao nomearmos uma variável: – Começar com uma letra – Os demais caracteres podem ser letras, números ou ‘_’ (underline, underscore) – Não podem ser utilizados nomes reservados, como: escreva, leia, var, etc. – Procure utilizar nomes sugestivos para suas variáveis 46 Lógica de Programação Expressões Aritméticas Expressões • Aritméticas – São expressões cujo resultado é um valor numérico (inteiro ou real) – São utilizados somente operadores aritméticos e variáveis numéricas para este tipo de expressão 48 Expressões • Aritméticas – São utilizados os seguintes operadores Operador Operação + Adição - Subtração * Multiplicação / Divisão + Manutenção de sinal - Inversão de sinal DIV Parte inteira da divisão MOD Resto da divisão 49 Expressões • Aritméticas – Os tipos de dados do resultado das expressões são: Inteiro +, -, * Inteiro = Inteiro Inteiro +, -, * Real = Real Real +, -, * Inteiro = Real Real +, -, * Real = Real Qualquer / Qualquer = Real Inteiro DIV Inteiro = Inteiro Inteiro MOD Inteiro = Inteiro 50 Expressões • Aritméticas – Os elementos obedecem uma hierarquia de execução • Parênteses • Multiplicação ou Divisão (o que vier primeiro) • Soma e Subtração (o que vier primeiro) – Media = Nota1 + Nota2 + Nota3 / 3 – Media = (Nota1 + Nota2 + Nota3) / 3 51 Atividades (classwork) • Verifique o tipo de dado numérico resultante das seguintes expressões aritméticas: a) b) c) d) e) f) g) h) i) j) k) l) 7*2 0.6 + 3.2 - 5 + 9.0 4 DIV 1 4.5 * 2 1 + 1 + (2 MOD 4) (10 + 2) * 2 - 0.8 / - 2 1 - 0.5 + 9 7 * (- 2 + 3.4) (10 DIV 2) + 0.2 (90 MOD 33) - 0.2 52 Lógica de Programação Expressões Lógicas Expressões • Lógicas – As expressões lógicas são aquelas cujo o resultado da sua avaliação tem um resultado lógico (V ou F) Comparador Operador OU OR v E AND ^ NÃO NOT ¬ == Igual <> Diferente < Menor <= Menor ou Igual > Maior >= Maior ou Igual 54 Expressões • Lógicas – Comparadores • A = 5, B = 3 – – – – – – A=B A <> B A>B A<B A>=B A<=B Falso Verdadeiro Verdadeiro Falso Verdadeiro Falso 55 Expressões • Lógicas – Operadores • OU – O resultado será verdadeiro se pelo menos UM resultado de uma expressão lógica for verdadeiro •E – O resultado será verdadeiro somente se TODOS os resultados das expressões lógicas forem verdadeiros • NÃO – O resultado final é o inverso do resultado da expressão lógica 56 Expressões • Lógicas 1º Valor Operador 2º Valor Resultado V E V V V E F F F E V F F E F F V OU V V V OU F V F OU V V F OU F F V NÃO F F NÃO V 57 Expressões • Lógicas – Exemplos • Se eu usar casaco OU blusão, me manterei aquecido OU = 58 Expressões • Lógicas – Exemplos • Se não houver placas de proibida a ultrapassagem E não houver faixa contínua, posso ultrapassar o veículo não E não = 59 Expressões • Lógicas – Exemplos • Se não for homem, é mulher não = 60 Expressões • Lógicas – A = 2, B = 3 – C = 2, D = 3 A == B A <> B A<B A<=B A>B A>=B F V V V F F A == B ^ C == D A == B v C == D ¬ (A == B) C == A v B <> D C == A ^ B <> D F F V V F 61 Atividades (mix) • Lista de exercícios (1-2) – ½ Classwork – ½ Homework 62 Lógica de Programação Expressões Literais Expressões • Literais – Seu resultado proporciona um valor literal – Ocorre com menos frequência nos sistemas do que as expressões aritméticas e lógicas – O operador varia de uma linguagem de programação para outra (+)(,)(.)... • A operação para unir dois valores literais (strings) é chamado de concatenação 64 Expressões • Literais – Exemplo • Suponha que esteja sendo utilizada uma linguagem que o operador de concatenação seja “+” • Imagine que queremos construir a expressão “REFRIGERANTE”, havendo a string “REFRI” e “GERANTE” • “REFRI” + “GERANTE” = “REFRIGERANTE” 65 Lógica de Programação Expressões Lógicas Tabelas Verdade Expressões • Lógicas (Tabelas Verdade) – Considere as variáveis A e B. Como não sabemos seus valores, se faz necessário desenvolver todas as combinações lógicas possíveis (Tabela Verdade) A B NÃO A NÃO B A OU B AEB V V F F V V V F F V V F F V V F V F F F V V F F 67 Expressões • Lógicas (Tabelas Verdade) – As tabelas verdade são utilizadas para verificar se uma fórmula é verdadeira ou falsa, e quando que ela é verdadeira ou falsa – São utilizadas em interrogatórios, para verificar se um indivíduo está mentindo ou não – São utilizadas para quando não se sabe o valor verdadeiro de cada variável da fórmula – Todas as probabilidades 68 Expressões • Lógicas (Tabelas Verdade) – Verifique quando a seguinte expressão é falsa: A v ¬B A B ¬B A v ¬B V V F V V F V V F V F F F F V V • Falso quando A for falso e B for verdadeiro 69 Atividades (classwork) • Informe a tabela verdade das seguintes expressões lógicas, informando em cada questão quando que o resultado é falso ou verdadeiro: a) b) c) d) e) f) g) h) i) A^B AvB A v ¬B ¬A ¬A ^ B A ^ ¬B ¬A ^ ¬B A v ¬A B ^ ¬B v A 70 Lógica de Programação Representação de Algoritmos Pseudocódigo e VisuAlg Representação de Algoritmos • Pseudocódigo, algoritmo ou português estruturado – Utilizado para elaborar a sequência lógica pela linguagem natural, antes de utilizar uma linguagem de programação – Permite a tradução de um algoritmo para uma linguagem de programação específica, diretamente – VisuAlg 72 Representação de Algoritmos • Pseudocódigo, algoritmo ou português estruturado – Ex: Alô Mundo! (Hello World!) 73 Lógica de Programação Instruções Primitivas Instruções Primitivas • As instruções primitivas exercem funções básicas e essenciais para a operação dos computadores sendo: – Entrada de dados – Saída de dados • Servem para que o sistema se comunique com: – Usuário – Periféricos 75 Instruções Primitivas • Aplicativos, softwares e programas que não utilizam instruções primitivas é incapaz de se comunicar com o mundo exterior • Programas sem comunicação com o mundo externo não tem qualquer utilidade 76 Instruções Primitivas • De atribuição – Principal maneira de se armazenar informação em uma variável • <nome_da_variável> <- <expressão> – O tipo da variável deve estar conciso com o valor a ser atribuído (inteiro, real, literal, ...) – No fluxograma é ilustrado pelo bloco PROCESSAMENTO var = 1+1 77 Instruções Primitivas • De saída de dados – Somente a instrução de atribuição não é suficiente para haver comunicação, pois o valor fica armazenado na memória – As instruções de saída são os meios pelos quais as informações são exibidas ao usuário e/ou periféricos • escreva(“Alô Mundo!”) • escreva(<variável>) – No fluxograma é representado pelo bloco IMPRESSÃO DE RESULTADOS Escreva “Alô Mundo” 78 Instruções Primitivas • De entrada de dados – Somente a instrução e saída não é suficiente, pois não há dinamicidade no sistema – Cada vez que o programa é executado, novos valores podem ser atribuídos às variáveis • leia(<variável>) – No fluxograma é ilustrado pelo bloco ENTRADA DE DADOS NATURAL leia Nome 79 Lógica de Programação Estrutura de Decisão Tipo SE Estrutura de Decisão • As estruturas de decisão englobam os princípios da condição • O fluxo de instruções a ser seguido é escolhido em função do resultado da condição • Podem existir várias condições a serem avaliadas para a definição do fluxo a ser seguido • Condição = Expressão lógica • As decisões podem ser tomadas por SE e ESCOLHA 81 Estrutura de Decisão • Tipo Se – Nesta estrutura uma única condição é avaliada – Se o resultado for verdadeiro (V, T, 1), então um determinado conjunto de instruções será executado. Caso contrário, ou seja, o resultado for falso (F, F, 0) outro conjunto de instruções será executado – É obrigatório que o algoritmo prossiga por alguma das condições (verdadeiro ou falso) 82 Estrutura de Decisão • Tipo Se – Condições • idade < 18 • genero = ‘Masculino’ • altura >= 1.60 83 Estrutura de Decisão • Tipo Se – Sintaxes ... V <comando composto 1> <condição> F <comando composto 2> 84 Estrutura de Decisão • Tipo Se – Sintaxes ... V <comando composto> <condição> F 85 Lógica de Programação Estrutura de Decisão Tipo ESCOLHA Estrutura de Decisão • Tipo Escolha – Generalização do SE – Pode haver uma ou mais condições a serem testadas e um comando composto diferente associado a cada uma das condições 87 Estrutura de Decisão • Tipo Escolha – Sintaxes ... <Condição_1> V <Comando_com posto_1> F V <Condição_2> <Comando_com posto_2> F… <Condição_n> V <Comando_com posto_n> F <Comando_com posto_s> 88 Atividades (classwork) • Transcreva os exercícios da aula passada utilizando o tipo ESCOLHA no VisuAlg – a) b) c) • Elabore o fluxograma para cada exercício – a) b) c) 89 Lógica de Programação Estrutura de Repetição Laços Contados Estrutura de Repetição • São comuns os trechos de código que devem ser repetidos em um algoritmo • Este trecho de código pode conter valores diferentes, seja pela entrada ou pela saída de dados • As estruturas de repetição também são conhecidas por laços de repetição ou loops • Existem dois tipos de estruturas de repetição: laços contados e laços condicionais Lógica de Programação (Leonardo Minelli) 91 Estrutura de Repetição • Laços Contados – São utilizados para quando sabe-se ao certo quantas vezes o comando composto no interior do bloco deverá ser executado – Instrução dotada de mecanismos para contar quantas vezes o laço é executado 5x Lógica de Programação (Leonardo Minelli) 92 Estrutura de Repetição • Laços Contados – Semântica • O valor <inicio> é atribuído a variável <variavel> • O valor <variavel> é comparado com o valor <final> – Se <variavel> for menor ou igual que <final> » Comando composto é executado » Ao final do comando é atribuído +1 para <variavel> – Se <variavel> for maior que <final> » Comando composto não é executado • Finaliza-se o laço 93 Estrutura de Repetição • Laços Contados – Semântica • <variavel> é uma variável do tipo inteiro • <inicio>, <final>, <passo> podem ser constantes ou variáveis • <passo> se não atribuído terá o valor de 1. Significa de quanto em quanto será acrescido o valor a cada execução do laço de repetição, podendo ser positivo ou negativo 94 Estrutura de Repetição • Laços Contados – Fluxograma ... V <condição> F ... <comando composto> 95 Lógica de Programação Estrutura de Repetição Laços Condicionais Estrutura de Repetição • Laços Condicionais – Diferente dos laços contados, com os laços condicionais não se sabe ao certo quantas vezes a repetição será executada – Existem dois tipos de instruções que expressam este tipo de laço • Enquanto • Repita 97 Estrutura de Repetição • Laços Condicionais – Enquanto • No início da instrução a condição é testada – Se for falsa, os comandos compostos não serão executados, nem por uma vez – Se for verdadeira, os comandos compostos serão executados • Se repetirá até que a condição proposta seja falsa. • Atenção: – O controle para saída do laço é de responsabilidade do criador do código! Em um momento a condição deve ser falsa para que o laço pare de ser executado. Quando isto ocorre, é chamado de laço infinito ou looping 98 Estrutura de Repetição • Laços Condicionais – Enquanto • Semântica – <condição> é qualquer expressão lógica 99 Estrutura de Repetição • Laços Condicionais – Repita • Semelhante ao enquanto • A condição é testada ao final do laço – Diferente do enquanto, que é no início • Sempre será executado pelo menos uma vez 100 Estrutura de Repetição • Laços Condicionais – Repita • Semântica – <condição> é qualquer expressão lógica 101 Lógica de Programação Vetores Unidimensionais Vetores • Todas as variáveis, até agora, possuem somente um valor, correto? – Lembram do armário e das gavetas? 103 ... Variáveis • Imagine um armário: 38 Idade 1200.00 Salário Cidade Ijuí Nº filhos RS Estado 3 Nome Fulano Ciclano 104 Vetores • Só podíamos armazenar um valor por vez em cada variável • Se precisássemos armazenar 10 nomes, necessitaríamos de 10 variáveis de tipo literal! – nome1, nome2, nome3, ... nome10 • O vetor veio para acabar com estes problemas! 105 Vetores • O que é um vetor? – Segundo a matemática... • Segmento de reta orientado que possuem a mesma intensidade, mesma direção e mesmo sentido! • SANTOS, Reginaldo J. 106 Vetores • O que é um vetor? 107 Vetores • O que é um vetor? – Segundo a informática... • Vetor é uma variável que, a partir de posições diferentes, consegue armazenar várias informações do mesmo tipo • Sua posição inicial será SEMPRE 0 (zero) • Existem basicamente dois tipos de vetores – Unidimensionais – Bidimensionais 108 Vetores • Unidimensionais – Vetores unidimensionais são semelhantes a uma “trilha” de informações – Pensando em um vetor com países que falam português, por exemplo, um vetor unidimensional seria o seguinte: pt[0,1,2,3,4,5,6,7] pt[0..7] Brasil São Tomé e Príncipe Cabo Verde Timor Leste Moçambique Portugal Guiné-Bissau Angola 109 Vetores • Unidimensionais – VisuAlg • <variavel> : vetor[<inicio>..<final>] de <tipo de dado> • Este comando criará um vetor unidimensional com o nome <variavel>, que iniciará em <inicio> e irá até <final>, possuindo o tipo de dado <tipo de dado> – Literal – Inteiro – Real 110 Lógica de Programação Vetores Bidimensionais Vetores • Bidimensionais – O que é um vetor? • Vetores Bidimensionais = Matrizes • Matriz – É uma tabela de “m” linhas e “n” colunas sobre um conjunto, normalmente um corpo “F”, representada sobre a forma de um quadro “s” 112 Vetores • Bidimensionais – Veja o quadro dos países que falam português... 113 Vetores • Bidimensionais pt pt[1,1] pt[1,2] pt[1,3] pt[1,4] pt[2,1] pt[2,2] pt[2,3] pt[2,4] 114 Vetores • Bidimensionais – Ex: pt[1,1] = Brasil pt[1,2] = São Tomé e Príncipe pt[1,3] = Cabo Verde pt[1,4] = Timor Leste pt[2,1] = Moçambique pt[2,2] = Portugal pt[2,3] = Guiné-Bissau pt[2,4] = Angola 115 Lógica de Programação Procedimentos e Funções Procedimentos e Funções • Subalgoritmos e subprogramas são blocos independentes de comandos que visam dividir as operações do programa • Os subalgoritmos podem ser de dois tipos – Procedimentos – Funções 117 Procedimentos e Funções • Procedimentos – Os procedimentos não possuem valores de retorno – Os valores são processados e manipulados dentro do bloco 118 Procedimentos e Funções • Procedimentos 119 Procedimentos e Funções • Funções – Assim como na matemática, as funções recebem valores que são passados por parâmetros 120