LÓGICA E LINGUAGEM DE PROGRAMAÇÃO Introdução
PARA DESCONTRAIR 03/05/2016 IFPR QUEDAS DO IGUAÇU - LÓGICA E LINGUAGEM DE PROGRAMAÇÃO - DANILO GIACOBO 2
OBJETIVOS DA AULA Apresentar os conceitos elementares de lógica e sua aplicação no cotidiano; Definir algoritmo; Estabelecer uma relação entre lógica e algoritmos: a lógica de programação; Exemplificar a aplicação dos algoritmos utilizando situações do dia-a-dia; Comparar as principais formas de representação dos algoritmos; e Exercitar o conhecimento aprendido com exercícios diversos. 03/05/2016 IFPR QUEDAS DO IGUAÇU - LÓGICA E LINGUAGEM DE PROGRAMAÇÃO - DANILO GIACOBO 3
PROGRAMAR PARA QUE? Escrever páginas web Acertar seu relógio Aprender a usar mapas Mostrar para seus amigos que você sabe programar Parecer estranho Entender melhor como seu computador funciona Cozinhar Salvar o mundo Software livre 03/05/2016 IFPR QUEDAS DO IGUAÇU - LÓGICA E LINGUAGEM DE PROGRAMAÇÃO - DANILO GIACOBO 4
NOÇÕES DE LÓGICA Lógica é a ciência que estuda as formas de pensamento. Lógica é a parte da filosofia que trata das formas do pensamento em geral (dedução, indução, hipótese, inferência etc.) e das operações intelectuais que visam à determinação do que é verdadeiro ou não. Aristóteles é o autor do primeiro trabalho sobre lógica. A lógica é frequentemente dividida em três partes: o raciocínio indutivo, o raciocínio abdutivo e o raciocínio dedutivo. 03/05/2016 IFPR QUEDAS DO IGUAÇU - LÓGICA E LINGUAGEM DE PROGRAMAÇÃO - DANILO GIACOBO 5
NOÇÕES DE LÓGICA A Lógica nos acompanha diariamente: Um bebê sabe que precisa chorar para receber atenção. Um casal com três filhos notou que um vaso estava quebrado, enquanto duas das crianças estavam na escola. Quem é o culpado? Pegar um chiclete. Retirar o papel. Mastigar o chiclete. Jogar o papel no lixo. Se um carro está com a seta esquerda ligada. Significa que ele vai virar à direita ou à esquerda? O pensamento (e a lógica) pode ser expresso por meio da linguagem oral ou escrita. Um mesmo pensamento pode ser expresso em inúmeros idiomas, tanto oralmente quanto por escrito. 03/05/2016 IFPR QUEDAS DO IGUAÇU - LÓGICA E LINGUAGEM DE PROGRAMAÇÃO - DANILO GIACOBO 6
NOÇÕES DE LÓGICA O que é Lógica? A Lógica ensina a colocar ordem no pensamento. Exemplos: a. Todo mamífero é um animal. Todo cavalo é um mamífero. Portanto, todo cavalo é um animal. b. Kaiton é país do planeta Stix. Todos os Xinpins são de Kaiton. Logo, todos os Xinpins são Stixianos. 03/05/2016 IFPR QUEDAS DO IGUAÇU - LÓGICA E LINGUAGEM DE PROGRAMAÇÃO - DANILO GIACOBO 7
NOÇÕES DE LÓGICA Existe Lógica no dia-a-dia? Sempre que pensamos, a lógica ou a ilógica necessariamente nos acompanham. Exemplos: a. A gaveta está fechada. A caneta está dentro da gaveta. Precisamos primeiro abrir a gaveta para depois pegar a caneta. b. Anacleto é mais velho que Felisberto. Felisberto é mais velho que Marivaldo. Portanto, Anacleto é mais velho que Marivaldo. 03/05/2016 IFPR QUEDAS DO IGUAÇU - LÓGICA E LINGUAGEM DE PROGRAMAÇÃO - DANILO GIACOBO 8
NOÇÕES DE LÓGICA Mas e a lógica de programação? Significa usar a lógica para resolver problemas computacionais. o O raciocínio é algo abstrato, intangível; o Os seres humanos têm a capacidade de expressá-lo por meio da palavra; o Um mesmo raciocínio pode ser expresso em inúmeros idiomas; o A lógica de programação pode ser representada por inúmeras linguagens de programação; o Algoritmos são uma representação fiel do raciocínio da lógica de programação. 03/05/2016 IFPR QUEDAS DO IGUAÇU - LÓGICA E LINGUAGEM DE PROGRAMAÇÃO - DANILO GIACOBO 9
NOÇÕES DE LÓGICA O que é um algoritmo? o O objetivo principal do estudo da Lógica de Programação é a construção de algoritmos coerentes e válidos. o Um algoritmo pode ser definido como uma sequência de passos que visam atingir um objetivo bem definido. o Algoritmos são comuns em nosso cotidiano. Exemplo: manual de instalação de uma TV. o Quando elaboramos um algoritmo, devemos especificar ações claras e precisas, que a partir de um estado inicial, após um período de tempo finito, produzem um estado final previsível e bem definido. o Algoritmo é a descrição de um conjunto de comandos que, obedecidos, resultam em uma sucessão finita de ações. 03/05/2016 IFPR QUEDAS DO IGUAÇU - LÓGICA E LINGUAGEM DE PROGRAMAÇÃO - DANILO GIACOBO 10
ALGORITMIZANDO A LÓGICA Por que é importante construir um algoritmo? o Um algoritmo tem por objetivo representar mais fielmente o raciocínio envolvido na Lógica de Programação. o Um algoritmo permite abstrair uma série de detalhes computacionais. o Uma solução algorítmica para um problema pode ser traduzida para qualquer linguagem de programação. Este processo é chamado de codificação. o Alguns algoritmos presentes em nosso dia-a-dia: receita de bolo, orientação para se chegar em algum endereço, realização de alguma tarefa rotineira. 03/05/2016 IFPR QUEDAS DO IGUAÇU - LÓGICA E LINGUAGEM DE PROGRAMAÇÃO - DANILO GIACOBO 11
ALGORITMOS - O QUE SÃO? Um algoritmo é uma sequência de instruções que resolve uma determinada tarefa. Essas instruções podem ser executadas por um computador ou até mesmo por um ser humano. Um algoritmo pode ser comparado a uma receita de bolo, onde cada passo da preparação do bolo corresponde a uma instrução do algoritmo. Normalmente, desenvolver algoritmos eficientes não é uma tarefa simples. No meio acadêmico, diversas técnicas para o desenvolvimento de algoritmos mais eficientes são estudadas pela Ciência da Computação. 03/05/2016 IFPR QUEDAS DO IGUAÇU - LÓGICA E LINGUAGEM DE PROGRAMAÇÃO - DANILO GIACOBO 12
ALGORITMOS - EXEMPLOS Algoritmo 1 - Somar três números Passo 1 - Receber os três números. Passo 2 - Somar os três números. Passo 3 - Mostrar o resultado obtido. 03/05/2016 IFPR QUEDAS DO IGUAÇU - LÓGICA E LINGUAGEM DE PROGRAMAÇÃO - DANILO GIACOBO 13
ALGORITMOS - EXEMPLOS Algoritmo 2 - Fazer um sanduíche Passo 1 - Pegar o pão. Passo 2 - Cortar o pão ao meio. Passo 3 - Pegar a maionese. Passo 4 - Passar a maionese no pão. Passo 5 - Pegar e cortar a alface e o tomate. Passo 6 - Colocar a alface e o tomate no pão. Passo 7 - Pegar o hambúrguer. Passo 8 - Fritar o hambúrguer. Passo 9 - Colocar o hambúrguer no pão. 03/05/2016 IFPR QUEDAS DO IGUAÇU - LÓGICA E LINGUAGEM DE PROGRAMAÇÃO - DANILO GIACOBO 14
ALGORITMOS - EXEMPLOS Algoritmo 3 - Ir para a escola Passo 1 - Acordar cedo. Passo 2 - Ir ao banheiro. Passo 3 - Abrir o armário para escolher uma roupa. Passo 4 - Se o tempo estiver quente, pegar uma camiseta e uma calça jeans; Caso contrário, pegar um agasalho e uma calça jeans. Passo 5 - Vestir a roupa escolhida. Passo 6 - Tomar café. Passo 7 - Pegar uma condução. Passo 8 - Descer próximo à escola. 03/05/2016 IFPR QUEDAS DO IGUAÇU - LÓGICA E LINGUAGEM DE PROGRAMAÇÃO - DANILO GIACOBO 15
ALGORITMOS - EXEMPLOS Algoritmo 4 - Sacar dinheiro no banco 24 horas Passo 1 - Ir até um banco 24 horas. Passo 2 - Colocar o cartão. Passo 3 - Digitar a senha. Passo 4 - Solicitar a quantia desejada. Passo 5 - Se o saldo for maior ou igual à quantia desejada, sacar; Caso contrário, mostrar mensagem de impossibilidade de saque. Passo 6 - Retirar o cartão. Passo 7 - Sair do banco 24 horas. 03/05/2016 IFPR QUEDAS DO IGUAÇU - LÓGICA E LINGUAGEM DE PROGRAMAÇÃO - DANILO GIACOBO 16
ALGORITMOS - TORRES DE HANÓI As Torres de Hanói é um quebra-cabeça composto por uma base contendo três torres (A, B e C) e três discos de diâmetros distintos (1, 2 e 3). Neste quebra-cabeça, o objetivo é encontrar uma forma de mover todos os discos da torre A para a torre C, usando a torre B como espaço auxiliar, de modo que: apenas um disco seja movido de cada vez; nenhum disco seja posicionado sobre outro disco de diâmetro menor; os discos sejam imediatamente transferidos de uma torre para outra. 03/05/2016 IFPR QUEDAS DO IGUAÇU - LÓGICA E LINGUAGEM DE PROGRAMAÇÃO - DANILO GIACOBO 17
ALGORITMOS - TORRES DE HANÓI Há várias soluções possíveis para este problema. Uma delas é a seguinte: 1º passo: mova o disco do topo da torre A para o topo da torre C. 2º passo: mova o disco do topo da torre A para o topo da torre B. 3º passo: mova o disco do topo da torre C para o topo da torre B. 4º passo: mova o disco do topo da torre A para o topo da torre C. 5º passo: mova o disco do topo da torre B para o topo da torre A. 6º passo: mova o disco do topo da torre B para o topo da torre C. 7º passo: mova o disco do topo da torre A para o topo da torre C. 03/05/2016 IFPR QUEDAS DO IGUAÇU - LÓGICA E LINGUAGEM DE PROGRAMAÇÃO - DANILO GIACOBO 18
ALGORITMIZANDO A LÓGICA Vamos a um exemplo? ALGORITMO 1.1 Troca de lâmpada Pegar uma escada; Posicionar a escada embaixo da lâmpada; Buscar uma lâmpada nova; Subir na escada; Retirar a lâmpada velha; Colocar a lâmpada nova. 03/05/2016 IFPR QUEDAS DO IGUAÇU - LÓGICA E LINGUAGEM DE PROGRAMAÇÃO - DANILO GIACOBO 19
ALGORITMIZANDO A LÓGICA E se a lâmpada não estiver queimada? ALGORITMO 1.2 Troca de lâmpada com teste Pegar uma escada; Posicionar a escada embaixo da lâmpada; Buscar uma lâmpada nova; Acionar o interruptor; Se a lâmpada não acender, então Subir na escada; Retirar a lâmpada velha; Colocar a lâmpada nova. 03/05/2016 IFPR QUEDAS DO IGUAÇU - LÓGICA E LINGUAGEM DE PROGRAMAÇÃO - DANILO GIACOBO 20
ALGORITMIZANDO A LÓGICA Podemos melhorar o algoritmo anterior? ALGORITMO 1.3 Troca de lâmpada com teste no início 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 a lâmpada queimada; Colocar a lâmpada nova. 03/05/2016 IFPR QUEDAS DO IGUAÇU - LÓGICA E LINGUAGEM DE PROGRAMAÇÃO - DANILO GIACOBO 21
ALGORITMIZANDO A LÓGICA E se a nova lâmpada não funcionar? ALGORITMO 1.4 Troca de lâmpada com teste e repetição indefinida 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 a lâmpada queimada; Colocar a lâmpada nova; Se a lâmpada não acender, então Retirar a lâmpada queimada; Colocar a lâmpada nova; Até quando??? 03/05/2016 IFPR QUEDAS DO IGUAÇU - LÓGICA E LINGUAGEM DE PROGRAMAÇÃO - DANILO GIACOBO 22
ALGORITMIZANDO A LÓGICA Como corrigir o algoritmo anterior? ALGORITMO 1.5 Troca de lâmpada com teste e condição de parada 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 a lâmpada queimada; Colocar a lâmpada nova; Enquanto a lâmpada não acender, faça Retirar a lâmpada queimada; Colocar uma lâmpada nova; 03/05/2016 IFPR QUEDAS DO IGUAÇU - LÓGICA E LINGUAGEM DE PROGRAMAÇÃO - DANILO GIACOBO 23
ALGORITMIZANDO A LÓGICA E se eu tivesse que trocar várias lâmpadas? ALGORITMO 1.6 Troca de lâmpada com teste para 10 soquetes Acionar o interruptor do primeiro soquete; 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 a lâmpada queimada; Colocar a lâmpada nova; Enquanto a lâmpada não acender, faça Retirar a lâmpada queimada; Colocar uma lâmpada nova; Acionar o interruptor do segundo soquete; 03/05/2016 IFPR QUEDAS DO IGUAÇU - LÓGICA E LINGUAGEM DE PROGRAMAÇÃO - DANILO GIACOBO 24
ALGORITMIZANDO A LÓGICA ALGORITMO 1.7 Troca de lâmpada com teste para 10 soquetes com repetição Ir até o interruptor do primeiro soquete; Enquanto a quantidade de soquetes testados for menor que dez, 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 a lâmpada queimada; Colocar a lâmpada nova; Enquanto a lâmpada não acender, faça Retirar a lâmpada queimada; Colocar uma lâmpada nova; Ir até o interruptor do próximo soquete; 03/05/2016 IFPR QUEDAS DO IGUAÇU - LÓGICA E LINGUAGEM DE PROGRAMAÇÃO - DANILO GIACOBO 25
ALGORITMIZANDO A LÓGICA Algumas considerações: Construção de algoritmos usando uma linguagem coloquial; Estrutura Sequencial: conjunto de ações executadas sequencialmente; Estrutura Seletiva: teste condicional para executar ou não um conjunto de ações; Estrutura de Repetição: repetição de um mesmo trecho do algoritmo; Um programa de computador tradicional não tem conhecimento prévio nem adquire experiências; Programadores: Construtores de Algoritmos. 03/05/2016 IFPR QUEDAS DO IGUAÇU - LÓGICA E LINGUAGEM DE PROGRAMAÇÃO - DANILO GIACOBO 26
ALGORITMIZANDO A LÓGICA De que maneira representaremos o algoritmo? o Um algoritmo é uma linha de raciocínio, que pode ser descrito de diversas maneiras, de forma gráfica ou textual; o Os algoritmos vistos até aqui estavam na forma textual, usando português coloquial. o As formas gráficas são mais puras por serem mais fiéis ao raciocínio original, substituindo um grande número de palavras por convenções de desenhos. o No material de apoio há um representação do algoritmo 1.7 em formato de fluxograma tradicional e outro em Chapin. o Quais as vantagens e desvantagens das representações textuais e gráficas? 03/05/2016 IFPR QUEDAS DO IGUAÇU - LÓGICA E LINGUAGEM DE PROGRAMAÇÃO - DANILO GIACOBO 27
ALGORITMIZANDO A LÓGICA Qual o problema de usar a língua pátria para escrever algoritmos? Vejamos a seguinte frase: O pregador foi grampeado durante o conserto. Esse exemplo, quando falado, pode ter até oito sentidos diferentes. Você sabe quais? o O computador é desprovido do raciocínio necessário para interpretar a frase. o Para evitar esse e outros problemas, utilizaremos um conjunto de regras que visam restringir e estruturar o uso do português na representação dos algoritmos. 03/05/2016 IFPR QUEDAS DO IGUAÇU - LÓGICA E LINGUAGEM DE PROGRAMAÇÃO - DANILO GIACOBO 28
MÉTODO PARA A CONSTRUÇÃO DE ALGORITMOS Para a construção de qualquer tipo de algoritmo, é necessário seguir estes passos: Compreender completamente o problema a ser resolvido, destacando os pontos mais importantes e os objetos que o compõem. Definir os dados de entrada, ou seja, quais dados serão fornecidos e quais objetos fazem parte desse cenário problema. Definir o processamento, ou seja, quais cálculos serão efetuados e quais as restrições para esses cálculos. O processamento é responsável pela transformação dos dados de entrada em dados de saída. Além disso, deve-se verificar quais objetos são responsáveis pelas atividades. Definir os dados de saída, ou seja, quais dados serão gerados depois do processamento. Construir o algoritmo usando um dos tipos descritos nos próximos slides. Testar o algoritmo realizando simulações. 03/05/2016 IFPR QUEDAS DO IGUAÇU - LÓGICA E LINGUAGEM DE PROGRAMAÇÃO - DANILO GIACOBO 29
TIPOS DE ALGORITMOS Os três tipos mais utilizados de algoritmos são: descrição narrativa, fluxograma, pseudocódigo ou portugol. Descrição Narrativa A descrição narrativa consiste em analisar o enunciado do problema e escrever, usando uma linguagem natural (por exemplo, a língua portuguesa), os passos a serem seguidos para sua resolução. Vantagem: não é necessário aprender nenhum conceito novo, pois uma língua natural neste ponto, já é bem conhecida. Desvantagem: a língua natural abre espaço para várias interpretações, o que posteriormente dificultará a transcrição desse algoritmo para programa. 03/05/2016 IFPR QUEDAS DO IGUAÇU - LÓGICA E LINGUAGEM DE PROGRAMAÇÃO - DANILO GIACOBO 30
TIPOS DE ALGORITMOS Os três tipos mais utilizados de algoritmos são: descrição narrativa, fluxograma, pseudocódigo ou portugol. Fluxograma O fluxograma consiste em analisar o enunciado do problema e escrever, utilizando símbolos gráficos predefinidos, os passos a serem seguidos para sua resolução. Vantagem: o entendimento de elementos gráficos é mais simples que o entendimento de textos. Desvantagem: é necessário aprender a simbologia dos fluxogramas, e além disso, o algoritmo resultante não apresenta muitos detalhes, dificultando sua transcrição para um programa. 03/05/2016 IFPR QUEDAS DO IGUAÇU - LÓGICA E LINGUAGEM DE PROGRAMAÇÃO - DANILO GIACOBO 31
FLUXOGRAMA Símbolo Significado Símbolo utilizado para indicar o início e o fim do algoritmo. Símbolo que permite indicar o sentido do fluxo de dados. Serve exclusivamente para conectar os símbolos ou blocos existentes. Símbolo utilizado para indicar cálculos e atribuições de valores. Símbolo utilizado para representar a entrada de dados. Símbolo utilizado para representar a saída de dados. Símbolo utilizado para indicar que deve ser tomada uma decisão, apontando a possibilidade de desvios. 03/05/2016 IFPR QUEDAS DO IGUAÇU - LÓGICA E LINGUAGEM DE PROGRAMAÇÃO - DANILO GIACOBO 32
TIPOS DE ALGORITMOS Os três tipos mais utilizados de algoritmos são: descrição narrativa, fluxograma, pseudocódigo ou portugol. Pseudocódigo ou portugol O pseudocódigo ou portugol consiste em analisar o enunciado do problema e escrever, por meio de regras predefinidas, os passos a serem seguidos para sua resolução. Vantagem: a passagem do algoritmo para qualquer linguagem de programação é quase imediata, bastando conhecer as palavras reservadas da linguagem que será utilizada. Desvantagem: é necessário aprender as regras do pseudocódigo, que serão apresentadas nas próximas aulas. 03/05/2016 IFPR QUEDAS DO IGUAÇU - LÓGICA E LINGUAGEM DE PROGRAMAÇÃO - DANILO GIACOBO 33
RESUMO A lógica se relaciona com a ordem da razão, com a correção do pensamento ; É necessário utilizar processos lógicos de programação para construir algoritmos; Um algoritmo é uma sequência de passos bem definidos que têm por objetivo solucionar um determinado problema; O exemplo das lâmpadas introduziu o conceito de fluxo de execução. A estrutura sequencial significa que o algoritmo é executado passo a passo, sequencialmente, da primeira à última ação. A estrutura de seleção permite que uma ação seja ou não executada, dependendo do valor resultante da inspeção de uma condição. A estrutura de repetição permite que trechos de algoritmos sejam repetidos até que uma condição seja satisfeita ou enquanto uma condição não estiver satisfeita. 03/05/2016 IFPR QUEDAS DO IGUAÇU - LÓGICA E LINGUAGEM DE PROGRAMAÇÃO - DANILO GIACOBO 34
SOFTWARES o Criação de Fluxogramas online http://www.draw.io 03/05/2016 IFPR QUEDAS DO IGUAÇU - LÓGICA E LINGUAGEM DE PROGRAMAÇÃO - DANILO GIACOBO 35
PÁGINAS NA INTERNET o Racha Cuca http://rachacuca.com.br/ o Oito sites infalíveis para aprender programação por conta própria http://computerworld.com.br/gratis-oito-sites-infaliveis-para-aprender-programacao-porconta-propria 03/05/2016 IFPR QUEDAS DO IGUAÇU - LÓGICA E LINGUAGEM DE PROGRAMAÇÃO - DANILO GIACOBO 36
VÍDEOS NA INTERNET o Uma breve história da lógica https://www.youtube.com/watch?v=ozmbmbp3one o Historia de la Lógica https://www.youtube.com/watch?v=tl_wrb3m6me o Piada Tunes - Portuga e a Lógica - ANIMATUNES https://www.youtube.com/watch?v=ziy0py8hauw o Desafio de lógica dos cinco triângulos - Matchstick Puzzles https://www.youtube.com/watch?v=m9oukyxpbs4 03/05/2016 IFPR QUEDAS DO IGUAÇU - LÓGICA E LINGUAGEM DE PROGRAMAÇÃO - DANILO GIACOBO 37
REFERÊNCIAS BIBLIOGRÁFICAS FARRER, H. Algoritmos Estruturados. 3. ed. São Paulo: LTC, 1999. 260 p. FORBELLONE, A. L. V.; EBERSPACHER, H. F. Lógica de Programação: a construção de algoritmos e estruturas de dados. 3. ed. São Paulo: Prentice Hall Brasil, 2005. 232 p. 03/05/2016 IFPR QUEDAS DO IGUAÇU - LÓGICA E LINGUAGEM DE PROGRAMAÇÃO - DANILO GIACOBO 38