Universidade Estácio de Sá Resende Lógica de Programação Introdução a Algoritmos Prof. Paulo Tong http://professortong.com [email protected] 1 Conteúdo ● Fornecer o conceito de algoritmos, estruturas de dados. ● Introduzir as estruturas básicas de controle. ● Apresentar o conceito de programação estruturada e modularização. 2 Introdução ● O conceito central da programação e da ciência da computação em geral é o de algoritmo. ● A programação é a arte de ou técnica de construir e formular algoritmos de uma forma sistemática. ● Programas de computadores são formulações concretas de algoritmos abstratos, baseados em representações e estrutura especificas de dados. 3 ● Em um algoritmo devemos distinguir dois aspectos complementares: – Estático: Texto contendo instruções (comandos) que devem ser executados em uma ordem prescrita. – Dinâmico: Os efeitos que tais comandos podem ter durante a execução dos mesmos no tempo, dado um conjunto de “valores iniciais”. ● A execução de um algoritmo é um evento dinâmico, evoluindo no tempo. ● Daí vem a dificuldade no entendimento de algoritmos, ou seja, como visualizar as estruturas dinâmicas. 4 Conceitos Básicos: Algoritmos ● Ação – Evento que ocorre num período de tempo finito, estabelecendo um efeito intencionado e bem definido, como por exemplo: ● Caminhar até a próxima esquina. ● Colocar um livro em cima de uma mesa. ● Atribuir o valor 3.14 a uma variável. – Estamos interessados primeiramente nos efeitos que as ações produzem. – Ações de efeito imprevisíveis não nos interessam. – Algoritmos determinísticos. 5 Conceitos Básicos: Algoritmos ● Estado – O conjunto de propriedades do objeto que são relevantes para nós na situação considerada. ● Batatas com casca ou descascadas. ● Valor de uma variável em um certo instante de execução. ● Processo ou Evento – Uma sequência temporal de ações. ● ● ● ● Trazer a cesta com batatas; Pegar a panela do armário; Descascar as batatas; Guardar a cesta; R1 6 Conceitos Básicos: Algoritmos ● Padrão de Comportamento – Suponha que no dia seguinte alguém relate o mesmo evento. – Pode-se dizer que temos o mesmo evento? – Não, pois ocorreram em momentos diferentes. – O que eles tem em comum? ● O mesmo padrão de comportamento. 7 Exercício ● Qual é o padrão de comportamento utilizados para gerar essas duas sequências? a) 1, 5, 9, 13, 17, 21 b) 1, 1, 2, 3, 5, 8, 13, 21, 34, 55 8 Conceitos Básicos: Algoritmos ● Algoritmo – É a descrição de um padrão de comportamento, expressado em termos de um repertório bem definido e finito de ações “primitivas”, das quais damos por certo que elas podem ser executadas. – Norma executável para estabelecer um certo efeito desejado, que na prática será geralmente a obtenção de uma solução a um certo tipo de problema. 9 Conceitos Básicos: Algoritmos ● Considere o evento R2 ● ● ● ● ● Trazer a cesta com batatas; Pegar a panela do armário; Colocar o avental; Descascar as batatas; Guardar a cesta; ● O efeito ainda é o mesmo de R1, ou seja, batatas descascadas. ● Considere agora que uma condição é usada para colocar o avental – Somente se estiver usando roupa branca. 10 Conceitos Básicos: Algoritmos ● Podemos escrever uma algoritmos que cubra os dois eventos. ● ● ● ● ● Trazer a cesta com batatas; Pegar a panela do armário; SE “roupa é branca” ENTÃO “colocar o avental”; Descascar as batatas; Guardar a cesta; ● Conectivo condicional: SE...ENTÃO – A execução ou não da ação está condicionada ao resultado da inspeção (Verdadeiro ou Falso). 11 Conceitos Básicos: Algoritmos ● Suponha que exista 20 batatas a serem descascadas. ● ● ● ● ● ● ● ● Trazer a cesta com batatas; Pegar a panela do armário; SE “roupa é branca” ENTÃO “colocar o avental”; Descascar as batatas; .... .... Descascar as batatas; Guardar a cesta; – Qual seria uma forma mais inteligente de fazer isso? 12 Conceitos Básicos: Algoritmos ● Concectivo repetitivo: ENQUANTO...FAÇA ● ● ● ● Trazer a cesta com batatas; Pegar a panela do armário; SE “roupa é branca” ENTÃO “colocar o avental”; ENQUANTO “houver batatas” FAÇA – Descascar as batatas; ● Guardar a cesta; – A execução de ENQUANTO “inspeção” FAÇA “ação”, corresponde à execução repetida do comando SE...ENTÃO. – Isso exemplifica o poderio do conceito de algoritmo ● Texto estático capaz de cobrir toda uma classe de acontecimentos. 13 Conceitos Básicos: Algoritmos ● Nessa relação entre um texto estático e eventos evoluindo no tempo reside um grande perigo: – É fácil construir um algoritmo que não seja executável em tempo finito. – Ex: Enquanto “roupa é branca” Faça “Descasque uma batata” ● Algoritmos devem ser determinísticos – Dadas as mesmas condições iniciais, ele deve produzir o mesmo resultado no fim. 14 Conceitos Básicos: Programas ● Computadores: Máquinas capazes de seguir uma certa espécie de algoritmos, chamados programas. ● Capazes de entender linguagem de máquina Algoritmo na forma natural “linguagem de programação” Compilador Linguagem de Máquina 15 Conceitos Básicos: Programas ● Tipos de programas – Fonte: Texto com um programa que o usuário pode ler. Escrito em uma linguagem de programação ● C, C++, Pascal, Fortran, Basic, Cobol, etc... – Objeto: Código de máquina gerado pelo compilador – Executável: Resultado de um link-editor que une vários códigos objetos e produz um executável (.exe no DOS). 16 Conceitos Básicos: Estruturas de Dados ● Um programa de computador precisa representar e armazenar dados. Isso se dá por intermédio das estruturas de dados. ● Uma estrutura de dados retrata as relações lógicas existente entre os dados. ● Tipos primitivos: – Inteiro, real, lógico e caracter ● Tipos compostos podem ser construídos com base nos tipos primitivos. 17 Programação Estruturada ● Uma metodologia de projeto de programas visando: – – – – Facilitar a escrita dos programas. Facilitar a leitura. Permitir a verificação a priori Facilitar a manutenção e modificação. ● Modularização – Uma boa estratégia para resolver um problema complexo é dividí-lo em partes e resolver cada parte separadamente. – Dividir e conquistar. – Módulos coesos ● Cada módulo implementa uma tarefa bem definida 18 Programação Estruturada ● Estruturas de Controle – Aumentam consideravelmente a legibilidade e compreensão dos programas. – Proíbe o uso de comandos de desvio (GOTO) 19 Por que tenho que ver tudo isso? ● Algoritmos, estrutura de dados, programação e redes de computadores. ● O que tudo isso tem haver? 20 Introdução à Lógica de Programação 21