Baixe o app para aproveitar ainda mais
Prévia do material em texto
Algoritmos Aula 2 17/08/2017 diegoquirino@gmail.com 1 Agenda Na aula de hoje iremos aprender: 1. O processo para a geração de um programa 2. Definição de algoritmo 3. Dinâmica: desafio da Torre de Hanói 4. Representação dos algoritmos • Descrição Narrativa • Fluxograma • Pseudocódigo 5. O Pseudocódigo • Variáveis (e seus tipos), Instruções (E/S), Operadores e Expressões 17/08/2017 diegoquirino@gmail.com 2 Geração de Programas Processo de geração 17/08/2017 diegoquirino@gmail.com 3 Elaboração de um Programa... Problema Programa 17/08/2017 diegoquirino@gmail.com 4 A forma correta de elaborar um programa Problema Análise Algoritmo Programa 17/08/2017 diegoquirino@gmail.com 5 Processo de Geração de um Programa (I) 1. Problema: aspiração (ou a necessidade) que se deseja resolver/satisfazer. 2. Análise do Problema: conjunto de atividades relacionadas ao entendimento do problema. • Ler atentamente o enunciado do problema até entendê-lo • Identificar os dados de entrada • Identificar as saídas (resultados esperados) • Identificar o que o programa deve fazer (seu objetivo) • Identificar se existes valores ou dados intermediários necessários para transformar entradas em saídas 17/08/2017 diegoquirino@gmail.com 6 Processo de Geração de um Programa (II) 1. Analisado o Problema, devemos pensar em como estruturar uma solução viável (dentre as muitas disponíveis)! 2. Para resolver um problema no computador é necessário que seja, primeiramente, encontrada uma maneira de descrever este problema de uma forma clara e precisa! 3. É preciso definir o caminho a ser tomado... 17/08/2017 diegoquirino@gmail.com 7 Algoritmo Definição e características fundamentais 17/08/2017 diegoquirino@gmail.com 8 Definição •Algoritmo é uma sequência finita de passos lógicos necessários para realizar uma determinada tarefa 17/08/2017 diegoquirino@gmail.com 9 Exemplo •Na informática, o ALGORITMO é o PROJETO DO PROGRAMA. •O ALGORITMO NÃO É A (ÚNICA) SOLUÇÃO DE UM PROBLEMA! MAS UM DENTRE OS CAMINHOS EXISTENTES PARA SE CHEGAR A ELA! 17/08/2017 diegoquirino@gmail.com 10 Características Fundamentais 1. Ter início e fim. 2. Ser escrito em termos de ações ou comandos bem definidos. 1. Deve ser fácil de interpretar e de codificar. • Ou seja, deve ser intermediário entre a linguagem falada e a linguagem de programação 2. Ter uma sequência lógica. 17/08/2017 diegoquirino@gmail.com 11 Para mim, que nunca fiz um bolo, vai ficar difícil fazer um desse jeito! Os algoritmos estão presentes no dia-a-dia! Preparo de Bolo (dado os ingredientes disponíveis), segue o modo de preparo: 1. Bata a margarina, as gemas e o açúcar até ficar cremoso 2. Junte o leite e a farinha e continue batendo 3. Acrescente o fermento e as claras em neve 4. Unte a forma com manteiga e leve ao forno para assar 17/08/2017 diegoquirino@gmail.com 12 Os algoritmos estão presentes no dia-a-dia! Preparo de Bolo (dado os ingredientes disponíveis), segue o modo de preparo: 1. Bata a margarina, as gemas e o açúcar por 15 minutos 2. Junte o leite e a farinha e bata por 5 minutos à mão 3. Acrescente o fermento e, por último, as claras em neve 4. Unte a forma com manteiga e, em seguida, deposite a massa 5. Leve ao forno para assar por 30 minutos 17/08/2017 diegoquirino@gmail.com 13 Desafio: Torre de Hanói • Escreva um algoritmo informal para resolver o problema da Torre de Hanói. Atente que, na Torre de Hanói: 1. Deve-se mover todos os discos do primeiro eixo para o terceiro mantendo-se a ordem original; 2. Em cada movimento, pode-se mover apenas um disco; 3. Um disco nunca poderá ser sobreposto por outro maior. 17/08/2017 diegoquirino@gmail.com 14 Passo 1 •1. Mova o disco MENOR para o TERCEIRO eixo 17/08/2017 diegoquirino@gmail.com 15 Passo 2 •2. Mova o disco MÉDIO para o SEGUNDO eixo 17/08/2017 diegoquirino@gmail.com 16 Passo 3 •3. Mova o disco MENOR para o SEGUNDO eixo 17/08/2017 diegoquirino@gmail.com 17 Passo 4 •4. Mova o disco MAIOR para o TERCEIRO eixo 17/08/2017 diegoquirino@gmail.com 18 Passo 5 •5. Mova o disco MENOR para o PRIMEIRO eixo 17/08/2017 diegoquirino@gmail.com 19 Passo 6 •6. Mova o disco MÉDIO para o TERCEIRO eixo 17/08/2017 diegoquirino@gmail.com 20 Passo 7 •7. Mova o disco MENOR para o TERCEIRO eixo 17/08/2017 diegoquirino@gmail.com 21 Algoritmo Início 1. Mova o disco MENOR para o TERCEIRO eixo 2. Mova o disco MÉDIO para o SEGUNDO eixo 3. Mova o disco MENOR para o SEGUNDO eixo 4. Mova o disco MAIOR para o TERCEIRO eixo 5. Mova o disco MENOR para o PRIMEIRO eixo 6. Mova o disco MÉDIO para o TERCEIRO eixo 7. Mova o disco MENOR para o TERCEIRO eixo Fim 17/08/2017 diegoquirino@gmail.com 22 Representação As formas de especificar os algoritmos 17/08/2017 diegoquirino@gmail.com 23 Formas de Representação 1. Descrição Narrativa 2. Fluxograma convencional 3. Pseudocódigo 17/08/2017 diegoquirino@gmail.com 24 Descrição Narrativa 1. Especificação verbal dos passos em linguagem natural. 2. Desvantagens: • A linguagem natural é imprecisa (possibilita ambiguidades). • Proporciona maior trabalho na codificação. 3. Devem ser escritos de maneira que todas as linhas contenham uma única instrução. 17/08/2017 diegoquirino@gmail.com 25 Descrição Narrativa: Exemplos 17/08/2017 diegoquirino@gmail.com 26 1. Receita (para cozinhar, por exemplo) 2. Manual de instrução (para realizar uma atividade: instalar um equipamento, fazer 3. Descrever um trajeto (mapas, localização) 4. Descrever as atividades realizadas no dia (entre outras) Fluxograma 1. Uso de símbolos para representar as instruções. 2. Apresenta a lógica de um algoritmo, enfatizando passos individuais (objetos gráficos) e o fluxo de execução (setas). 3. Desvantagens: • Fluxogramas detalhados podem obscurecer a estrutura do programa. • Permite transferências arbitrárias de controle 17/08/2017 diegoquirino@gmail.com 27 Elementos do Fluxograma 17/08/2017 diegoquirino@gmail.com 28 Fluxograma: Exemplo Algoritmo da Soma de dois termos: Descrição Narrativa Início 1. Ter o 1º número 2. Ter o 2º número 3. Some o primeiro com o segundo número 4. Exiba o resultado Fim 17/08/2017 diegoquirino@gmail.com 29 Início Fim Ter o 2º número Ter o 1º número Some o primeiro com o segundo número Exiba o resultado Pseudocódigo Português estruturado ou ainda portugol (português + algoritmo) 17/08/2017 diegoquirino@gmail.com 30 Pseudocódigo 1. Funciona como uma linguagem simplificada de programação, logo, facilita a codificação futura. 2. É uma descrição textual, estruturada e regida por regras que descrevem os passos executados no algoritmo. 3. Possui características similares às linguagens de programação: • Utiliza palavras-chave (ex: escreva, se-então, etc.); • Identação/Endentação (alinhamento dos blocos de comandos); • Possui um comando por linha; 17/08/2017 diegoquirino@gmail.com 31 Conceitos Importantes 1. Constantes: • Informações (dados) que permanecem sempre com o mesmo conteúdo, é um valor fixo (invariável). Exemplos: números, letras, palavras etc. 2. Variáveis: • É um espaço da memória do computador que "reservamos" para guardar informações (dados). 17/08/2017 diegoquirino@gmail.com 32 Variáveis 1. Conteúdo: • O conteúdo de uma variável pode variar de acordo com as instruções do algoritmo. 2. Identificador: • As variáveis são referenciadas através de um nome (identificador). Exemplos: produto,idade, a, x, nota1, peso, etc 17/08/2017 diegoquirino@gmail.com 33 Regras sobre Identificadores 17/08/2017 diegoquirino@gmail.com 34 Principais tipos de conteúdo 17/08/2017 diegoquirino@gmail.com 35 Palavras Reservadas 17/08/2017 diegoquirino@gmail.com 36 Atribuição •A atribuição é uma notação utilizada para atribuir um valor a uma variável. A operação de atribuição, normalmente, é representada por uma seta apontando para a esquerda. 17/08/2017 diegoquirino@gmail.com 37 Instruções • Instruções são os comandos básicos que efetuam tarefas essenciais para a operação dos computadores, como entrada e saída de dados, e movimentação dos mesmos na memória. 1. Instruções de Saída de dados: ESCREVER • SINTAXE: escreva(<conteúdo,variáveis,etc.>) 2. Instrução de Entrada de dados: LER • SINTAXE: leia(<variável>) 17/08/2017 diegoquirino@gmail.com 38 Observação sobre E/S •A interface com o usuário deve ser amigável, portanto: 1. Toda vez que um programa estiver esperando que o usuário forneça a ele um determinado dado (operação de leitura), ele deve antes enviar uma mensagem dizendo ao usuário o que ele deve digitar, por meio de uma instrução de saída de dados; 2. Antes de enviar qualquer resultado ao usuário, um programa deve escrever uma mensagem explicando o significado do mesmo. 17/08/2017 diegoquirino@gmail.com 39 Bloco de Comandos •Definição: Um bloco de instruções apresenta o início e o término do conjunto de instruções que serão executados em sequência. 17/08/2017 diegoquirino@gmail.com 40 Algoritmo “<nome do algoritmo>” Var <declaração de variáveis>: <tipo das variáveis> início <primeira instrução do bloco> <segunda instrução do bloco> ... <última instrução do bloco> fimalgoritmo Comentários 1. Os comentários são declarações não compiladas que podem conter qualquer informação textual que você queira adicioná- lo ao código-fonte para referência e documentação de seu programa. 2. São representados por duas barras normais ( // ). Todo texto que você digitar após as duas barras será comentário. 3. Exemplo: 17/08/2017 diegoquirino@gmail.com 41 Vamos ao VisuAlg Praticar os conceitos aprendidos Algoritmo da soma 17/08/2017 diegoquirino@gmail.com 42 Bibliografia Complementar 17/08/2017 diegoquirino@gmail.com 43 1. FORBELLONE, A. L. V.; EBERSPÄCHER, H. F. Lógica de Programação: a construção de algoritmos e estrutura de dados. 3ª ed. São Paulo: Prentice Hall, 2005. 2. Paul Barry, David Griffiths. Use a Cabeça! Programação. 1ª Ed. São Paulo: Alta Books, 2010 3. CODE. Site: http://code.org/learn 4. University of Rhode Island. Site: http://www.urionlinejudge.com.br Dúvidas? Contato: diegoquirino@gmail.com 17/08/2017 diegoquirino@gmail.com 44
Compartilhar