Curso Disciplina Professor Sistemas de Informação Algoritmos e Programação Flávio Euripedes de Oliveira 1. Tema central Introdução à Lógica de Programação 2. Objetivos 1. Apresentar uma introdução sobre noções básicas de lógica; 2. Definir silogismos; 3. Introduzir conceitos de lógica de programação; 4. Apresentar conceitos de algoritmos, bem como suas características e exemplos; 5. Verificar o aprendizado do aluno através da aplicação de exercícios. 3. Recursos 1. Lousa 4. Referências Bibliográficas FORBELLONE, André Luiz Villar; EBERSPACHER, Henri. Lógica de Programação: a construção de algoritmos e estruturas de dados. 3 ed. São Paulo: Pearson Education, 2005. MANZANO, Jose Augusto N G. Algoritmos: logica para desenvolvimento de programação de computadores. São Paulo: Érica, 2001. 5. Informações Qualquer informação, dúvida ou sugestões quanto ao conteúdo e exercícios propostos neste material poderão ser encaminhadas ao professor através do e-mail: [email protected] 1 6. Conteúdo 6.1. Noções de lógica Lógica: do grego Logiké, arte de raciocinar. Definição 1: Ciência que tem como objetivo o estudo dos métodos e princípios que permitem distinguir raciocínios válidos de outros não válidos. Raciocínio: Encadeamento de argumentos ou juízos para chegar a uma demonstração (conclusão). Definição 2: A lógica estuda a “correção do raciocínio”. Definição 3: A lógica tem em vista a “ordem da razão”. Isso dá a entender que a nossa razão pode funcionar desordenadamente. Por isso a lógica estuda e ensina a colocar “ordem no pensamento”. OBS: É muito comum num diálogo entre duas pessoas, uma pessoa A tentando convencer uma pessoa B sobre algo, mas por falta de argumentos ou simplesmente pelo fato dos argumentos não estarem dispostos de maneira ordenada, essa pessoa acaba perdendo seu poder de convencimento. Já uma pessoa C com os mesmos argumentos que pessoa A poderia facilmente convencer B se seus pensamentos (argumentos) estiverem em ordem. Silogismo: Raciocínio formado de três proposições: a primeira, chamada premissa maior, a segunda, premissa menor, e a terceira, conclusão. (A conclusão se infere da maior por intermédio da menor). Exemplo 01: 1. Todo mamífero é um animal Todo cavalo é um mamífero 2 Portanto, todo cavalo é um animal EXERCÍCIO: Pedir para os alunos criar um exemplo de silogismo válido. Exemplos 02: 2. Minas Gerais é um estado do Brasil Todos os araxaenses são de Minas Gerais Portanto, todos os araxaenses são brasileiros Será que existe uma maneira de representar o silogismo acima? Uma maneira de se fazer isso é através da representação abaixo: Brasil Minas Gerais Araxá Silogismos: representam, na Lógica Proposicional, um argumento composto por duas premissas e uma conclusão. OBS: a relação pode ser válida ou não. Exemplo de um silogismo inválido: Minas Gerais está localizado no Brasil Todos os araxaenses são de Minas Gerais 3 Portanto, todos os araxaenses estão no Brasil (Não necessariamente, pois pode haver araxaenses morando em outros países). Existe lógica no nosso dia-a-dia? Sim, praticamente utilizamos lógica em todas as nossas ações diárias, exemplo: Exemplo 01: A gaveta está fechada. A caneta está dentro da gaveta. Precisamos primeiro abrir a gaveta para depois pegar a caneta. EXERCÍCIOI: Pedir aos alunos para criarem um exemplo em que a lógica se faz presente no diaa-dia. Exercício 02: Marta é mais velha que Rosa Rosa é mais velha que Jane Portanto, Marta é mais velha que Jane 6.2. Lógica de Programação Como o ser humano expressa seu raciocínio? Através da palavra falada ou escrita, que por sua vez se baseia em um determinado idioma, que segue uma série de padrões (gramática). OBS: Um mesmo raciocínio pode ser expresso em idiomas diferentes, mas continuará representando o mesmo raciocício, usando portanto apenas uma outra convenção. O mesmo acontece com a Lógica de Programação, que pode ser concebida pela mente treinada e pode ser representada em qualquer uma das inúmeras linguagens de programação existentes. Como cada linguagem de programação possui seu próprio conjunto de comandos, faz-se necessário estudar uma maneira de especificar o problema em questão, independente da linguagem de programação. A solução para isso é a utilização de algoritmos. 4 6.3. Algoritmos Definição: “Sequência de passos que visam atingir um objetivo bem definido” (FORBELLONE, 2000). Definição: “Sequência ordenada, e não ambígua, de passos que levam a solução de um dado problema” (TREMBLAY). 6.3.1. Características Todo algoritmo deve apresentar algumas características básicas: Possui início e fim; Não dar margem a dupla interpretação; Sempre que executado, sob as mesmas condições, deverá produzir o mesmo resultado; Capacidade de receber dado(s) de entrada do mundo exterior. OBS: Codificação, termo muito comum em computação, refere-se ao fato de passar o algoritmo para uma linguagem de programação. 6.3.2. Exemplos Algoritmo 01: Trocar uma lâmpada 1. pegar uma escada; 2. posicionar a escada embaixo da lâmpada; 3. buscar uma lâmpada nova; 4. subir na escada; 5. retirar a lâmpada velha; 6. colocar a lâmpada nova; 7. descer da escada; 8. jogar a lâmpada velha no lixo. 5 Continuação: E se a lâmpada não estivesse queimada? 1. pegar uma escada; 2. posicionar a escada embaixo da lâmpada; 3. buscar uma lâmpada nova; 4. acionar o interruptor; 5. se a lâmpada não acender, então: → Inclusão do teste seletivo 5.1. subir na escada; 5.2. retirar a lâmpada velha; 5.3. colocar a lâmpada nova; 5.4. descer da escada; 5.5. jogar a lâmpada velha no lixo. EXERCÍCIO: Há maneiras de otimizar o algoritmo anterior? Sim, veja como ficaria: 1. acionar o interruptor 2. se a lâmpada não acender, então: → Inclusão do teste seletivo 2.1. pegar uma escada; 2.2. posicionar a escada embaixo da lâmpada; 2.3. buscar uma lâmpada nova; 2.4. subir na escada; 2.5. retirar a lâmpada velha; 2.6. colocar a lâmpada nova; 2.7. descer da escada; 2.8. jogar a lâmpada velha no lixo. Continuação: E se a lâmpada nova também estiver queimada? 1. acionar o interruptor 2. se a lâmpada não acender, então: → Inclusão do teste seletivo 6 2.1. pegar uma escada 2.2. posicionar a escada embaixo da lâmpada 2.3. enquanto a lâmpada não acender, faça: → Inclusão do teste repetitivo, com cond. parada. 2.3.1. buscar uma lâmpada nova; 2.3.2. subir na escada; 2.3.3. retirar lâmpada velha; 2.3.4. colocar a lâmpada nova; 2.3.5. descer da escada; 2.3.6. jogar a lâmpada velha no lixo; 2.3.7. acionar interruptor. 2.3.8. fim do enquanto 2.4. Guardar escada 7