GMA038 - 2015/1 Universidade Federal de Uberlândia Faculdade de Computação Conceitos básicos de algoritmos Prof. Renato Pimentel GMA038 - Intro. Ciênc. Computação Algoritmos: conceitos básicos 1 Computação Dados → Informações vindas de usuários ou de outras máquinas; Processamento → transformação dos dados, de acordo com os desejos do usuário ou de outra máquina; Resultados → aquilo que vem do processamento, e que servirá aos propósitos do usuário. Dados Dados GMA038 - Intro. Ciênc. Computação Prof. Renato Pimentel Processamento Processamento Algoritmos: conceitos básicos Resultados Resultados 2 1 GMA038 - 2015/1 Computação Objetivo básico → auxiliar os seres humanos em trabalhos repetitivos e braçais, diminuindo esforços e economizando tempo; O computador é capaz de auxiliar em qualquer coisa que lhe seja solicitada; Entretanto: Não tem iniciativa; Nenhuma independência; Não é criativo nem inteligente. Por isso, é necessário que ele receba suas instruções nos mínimos detalhes, para que tenha condições de realizar suas tarefas → Programação. GMA038 - Intro. Ciênc. Computação Algoritmos: conceitos básicos 3 Programação Quando queremos criar ou desenvolver um software para realizar determinado tipo de processamento de dados: Escrever um programa (ou vários programas interligados); Devemos escrever o programa usando uma linguagem que tanto o computador quanto o criador de software entendam – linguagem de programação. GMA038 - Intro. Ciênc. Computação Prof. Renato Pimentel Algoritmos: conceitos básicos 4 2 GMA038 - 2015/1 Etapas envolvidas no processo de programação Análise: enunciado do problema: Dados de entrada; Processamento (resolução); Dados de saída. Algoritmo → descrever o problema, com suas soluções; Codificação → algoritmo é transformado em códigos da linguagem de programação escolhida para se trabalhar. GMA038 - Intro. Ciênc. Computação Algoritmos: conceitos básicos 5 Programa Nada mais é do que a codificação de um algoritmo em uma linguagem de programação. Uma definição mais formal: Conjunto Conjunto de de instruções instruções passo passo aa passo passo que que orientam orientam oo computador computador aa fazer fazer as as tarefas tarefas necessárias necessárias ee produzir produzir o(s) o(s) resultado(s) resultado(s) desejado(s) desejado(s) GMA038 - Intro. Ciênc. Computação Prof. Renato Pimentel Algoritmos: conceitos básicos 6 3 GMA038 - 2015/1 Algoritmo Sequência Sequência finita finita ee não não ambígua* ambígua* de de instruções instruções ou ou operações operações (passos), (passos), cuja cuja execução, execução, em em um um tempo tempo finito, finito, resolva resolva um um problema problema * cada instrução deve ser precisamente definida, sem permitir mais de uma interpretação. GMA038 - Intro. Ciênc. Computação Algoritmos: conceitos básicos 7 Algoritmo IMPORTANTE → para a grande maioria dos problemas, é possível haver mais de um algoritmo de resolução; Algoritmos não são operações exclusivas de um computador: A grande maioria das coisas que fazemos no dia a dia, fazemos por via de algoritmos. GMA038 - Intro. Ciênc. Computação Prof. Renato Pimentel Algoritmos: conceitos básicos 8 4 GMA038 - 2015/1 Exemplos cotidianos de algoritmos GMA038 - Intro. Ciênc. Computação Algoritmos: conceitos básicos 9 Algoritmo 1 – somar três números Passo 1 – receber três números. Passo 2 – somar os três números. Passo 3 – mostrar o resultado obtido. GMA038 - Intro. Ciênc. Computação Prof. Renato Pimentel Algoritmos: conceitos básicos 10 5 GMA038 - 2015/1 Algoritmo 2 – sacar dinheiro no caixa eletrônico Passo 1 – ir até um caixa eletrônico Passo 2 – colocar o cartão Passo 3 – digitar a senha Passo 4 – solicitar a quantia desejada Passo 5 – se saldo for maior ou igual à quantia desejada, realizar o saque; caso contrário, não realizar o saque ou sacar uma quantia menor Passo 6 – retirar o cartão Passo 7 – sair do caixa eletrônico GMA038 - Intro. Ciênc. Computação Algoritmos: conceitos básicos 11 Note pelos exemplos que podem existir maneiras diferentes de se resolver determinados problemas, de maneira que ao final o resultado seja o mesmo GMA038 - Intro. Ciênc. Computação Prof. Renato Pimentel Algoritmos: conceitos básicos 12 6 GMA038 - 2015/1 Método para construção de algoritmos (a) Compreender completamente o problema a ser resolvido, destacando pontos mais importantes e objetos que o compõem; (b) Definir os dados de entrada, isto é, quais dados serão fornecidos e quais objetos fazem parte do problema; (c) Definir o processamento, isto é, quais cálculos serão efetuados; quais as restrições para estes cálculos; Processamento: responsável pela transformação de dados de entrada em dados de saída. Deve-se também verificar quais objetos são responsáveis por cada atividade de processamento. GMA038 - Intro. Ciênc. Computação Algoritmos: conceitos básicos 13 Método para construção de algoritmos (d) Definir os dados de saída, isto é, quais dados são gerados após o processamento; (e) Construir o algoritmo; (f) Testar o algoritmo, através de simulações. GMA038 - Intro. Ciênc. Computação Prof. Renato Pimentel Algoritmos: conceitos básicos 14 7 GMA038 - 2015/1 Em suma: Entrada Entrada de de dados dados Processamento Processamento Saída Saída de de dados dados GMA038 - Intro. Ciênc. Computação Algoritmos: conceitos básicos 15 Dicas Precisa-se descrever a sequência de instruções, de maneira simples e objetiva: Somente um verbo por frase; Frases curtas e simples; Ser objetivo; Evitar frases com sentido dúbio. GMA038 - Intro. Ciênc. Computação Prof. Renato Pimentel Algoritmos: conceitos básicos 16 8 GMA038 - 2015/1 Representação de algoritmos 1. Descrição narrativa Escrever, utilizando uma linguagem natural (exemplo: língua portuguesa), os passos a serem seguidos para resolução do problema. Vantagem: nenhum conceito novo necessário Desvantagem: pode abrir espaço para interpretações Dificultará transcrição deste algoritmo para um programa GMA038 - Intro. Ciênc. Computação Algoritmos: conceitos básicos 17 Exemplo de descrição narrativa Exemplo: 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 alface e tomate Passo 6 – colocar alface e 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 GMA038 - Intro. Ciênc. Computação Prof. Renato Pimentel Algoritmos: conceitos básicos 18 9 GMA038 - 2015/1 Representação de algoritmos 2. Fluxograma Escrever, usando símbolos gráficos predefinidos, os passos a serem seguidos para a resolução do problema. Diagrama: representação visual dos algoritmos Também utilizado em outras áreas: Exemplo: processos dentro de uma linha de produção Vantagem: entendimento mais simples. Útil nas fases iniciais de aprendizado de programação Desvantagem: algoritmo resultante com poucos detalhes; aprendizado da simbologia necessário. GMA038 - Intro. Ciênc. Computação Algoritmos: conceitos básicos 19 Exemplo de fluxograma Imprimir maior dentre dois números, A e B. Início Leia A e B A > B? Sim Não Escreva A Escreva B Fim GMA038 - Intro. Ciênc. Computação Prof. Renato Pimentel Algoritmos: conceitos básicos 20 10 GMA038 - 2015/1 Exemplo de fluxograma Representação alternativa: Início Leia A e B A > B? Não Sim A← B Escreva A GMA038 - Intro. Ciênc. Computação Algoritmos: conceitos básicos 21 Representação de algoritmos 3. Pseudocódigo Linguagem intermediária entre linguagem natural e linguagem de programação Escrever, por meio de regras predefinidas, os passos a serem seguidos para resolução do problema Vantagem: codificação em linguagem de programação é quase imediata Desvantagem: é necessário aprender as regras do pseudocódigo – será apresentado nas próximas aulas GMA038 - Intro. Ciênc. Computação Prof. Renato Pimentel Algoritmos: conceitos básicos 22 11 GMA038 - 2015/1 Exemplo de pseudocódigo Como seria o pseudocódigo do algoritmo dado no fluxograma do penúltimo slide? Declare Declare A, A, BB numérico numérico Início Início Escreva Escreva “Digite “Digite dois dois valores” valores” Leia Leia A, A, BB Se Se AA << BB Então Então AA ←← BB Fim Fim Se Se Escreva Escreva AA Fim Fim GMA038 - Intro. Ciênc. Computação Algoritmos: conceitos básicos 23 Simbologia de fluxogramas Início e fim Podem ser círculos ou formas ovais Normalmente contêm a palavras “Início”, “Fim”, ou alguma expressão sinalizando o início ou fim do processo. Início Fim Escreva A GMA038 - Intro. Ciênc. Computação Prof. Renato Pimentel Algoritmos: conceitos básicos 24 12 GMA038 - 2015/1 Simbologia de fluxogramas Processo e operações Representação por retângulos. Leia A e B Indica uma tarefa a ser executada pelo algoritmo. M=N+P Usado para cálculos e atribuições de valores. Escreva B GMA038 - Intro. Ciênc. Computação Algoritmos: conceitos básicos 25 Simbologia de fluxogramas Condição ou decisão Representação por losangos. Normalmente contém uma pergunta do tipo Sim/Não ou um teste de Verdadeiro/Falso. A > B? Mudanças no fluxo – possibilidade de desvios. GMA038 - Intro. Ciênc. Computação Prof. Renato Pimentel Algoritmos: conceitos básicos 26 13 GMA038 - 2015/1 Simbologia de fluxogramas Setas Conectam dois símbolos quaisquer. Indicam o fluxo de dados – ordem das operações a serem realizadas. GMA038 - Intro. Ciênc. Computação A > B? Não Sim A ← B Escreva A Algoritmos: conceitos básicos 27 Outro exemplo de algoritmo Faça um algoritmo para calcular a média aritmética entre duas notas de um aluno e mostrar sua situação, que pode ser “aprovado” - caso a média seja maior ou igual a 60, ou “reprovado”, caso reprovado. Utilize: Descrição narrativa Pseudocódigo Fluxograma GMA038 - Intro. Ciênc. Computação Prof. Renato Pimentel Algoritmos: conceitos básicos 28 14 GMA038 - 2015/1 Descrição narrativa Passo 1: receber duas notas Passo 2: calcular a média aritmética Passo 3: mostrar média aritmética Passo 4: se média for maior ou igual a 60, então situação do aluno é aprovado; caso contrário, a situação é reprovado. GMA038 - Intro. Ciênc. Computação Algoritmos: conceitos básicos 29 Pseudocódigo Declare N1, N2, M numérico Início Escreva “digite as duas notas” Leia N1, N2 M ← (N1+N2)/2 Escreva “Média =”, M Se M >= 60 Então Escreva “aprovado” Senão Escreva “reprovado” Fim Se Fim GMA038 - Intro. Ciênc. Computação Prof. Renato Pimentel Algoritmos: conceitos básicos 30 15 GMA038 - 2015/1 Fluxograma Início Leia N1, N2 M = (N1 + N2)/2 Escreva M Sim M >= 60? Escreva “aprovado” Não Escreva “reprovado” Fim GMA038 - Intro. Ciênc. Computação Algoritmos: conceitos básicos 31 Testando o algoritmo: teste de mesa Consiste do acompanhamento manual (linha a linha) da execução do algoritmo, visando: Avaliar se os resultados obtidos correspondem àqueles esperados/desejados. Detectar, se existentes, os erros de comandos e/ou fluxo de execução. Durante os testes, deve-se definir os valores de entrada, visando avaliar as seguintes situações: Casos extremos (valores limítrofes da validade); Exceções do problema (valores inválidos). GMA038 - Intro. Ciênc. Computação Prof. Renato Pimentel Algoritmos: conceitos básicos 32 16 GMA038 - 2015/1 Teste de mesa: exemplo Declare P1, P2, P3, P4 inteiro media real inicio leia P1, P2, P3, P4 media ← (P1+P2+P3+P4)/4 escreva(media) se media < 6 entao escreva “REPROVADO” senao escreva “APROVADO” fim se fim Algoritmos: conceitos básicos GMA038 - Intro. Ciênc. Computação 33 Teste de mesa: exemplo Declare P1, P2, P3, P4 inteiro media real inicio leia P1, P2, P3, P4 media ← (P1+P2+P3+P4)/4 escreva(media) se media < 6 entao escreva “REPROVADO” senao escreva “APROVADO” fim se fim GMA038 - Intro. Ciênc. Computação Prof. Renato Pimentel Algoritmos: conceitos básicos 34 17 GMA038 - 2015/1 Metodologia de programação: Refinando o algoritmo GMA038 - Intro. Ciênc. Computação Algoritmos: conceitos básicos 35 Metodologias de programação A resolução de um problema começa com a definição dos dados e tarefas básicas. Esta definição inicial é feita em nível bem alto e geral. Não há preocupação com os detalhes (refinamento). GMA038 - Intro. Ciênc. Computação Prof. Renato Pimentel Algoritmos: conceitos básicos 36 18 GMA038 - 2015/1 Metodologias de programação Refinamentos sucessivos (top-down) Consiste em decompor uma ou várias tarefas em subtarefas mais detalhadas. É um processo iterativo, isto é, subtarefas podem ser decompostas em subtarefas ainda mais detalhadas. Algoritmos: conceitos básicos GMA038 - Intro. Ciênc. Computação 37 Refinamentos sucessivos Exemplo: trocar um pneu furado Levantar o carro parcialmente; Retirar o pneu furado; Instalar o novo pneu; Abaixar o carro GMA038 - Intro. Ciênc. Computação Prof. Renato Pimentel Algoritmos: conceitos básicos 38 19 GMA038 - 2015/1 Refinamentos sucessivos Exemplo: trocar um pneu furado Retirar o estepe; Levantar o carro parcialmente; Retirar o pneu furado; Instalar o novo pneu; Abaixar o carro; Apertar bem as porcas Algoritmos: conceitos básicos GMA038 - Intro. Ciênc. Computação 39 Refinamentos sucessivos Exemplo: trocar um pneu furado Pegar as ferramentas no porta-malas; Retirar o estepe; Instalar o macaco; Levantar o carro parcialmente; Afrouxar os parafusos do pneu furado; Retirar o pneu furado; Instalar o novo pneu; Abaixar o carro; Apertar bem as porcas; Guardar o pneu furado e as ferramentas GMA038 - Intro. Ciênc. Computação Prof. Renato Pimentel Algoritmos: conceitos básicos 40 20 GMA038 - 2015/1 Refinamentos sucessivos O algoritmo ainda pode ser refinado de várias maneiras: O que fazer se o macaco não estiver no porta-malas? O que fazer se o estepe também estiver vazio? Deve-se puxar sempre o freio de mão antes de executar estas operações. Limpar as mãos; Consertar o pneu furado; Etc... GMA038 - Intro. Ciênc. Computação Algoritmos: conceitos básicos 41 Tipos de dados e variáveis GMA038 - Intro. Ciênc. Computação Prof. Renato Pimentel Algoritmos: conceitos básicos 42 21 GMA038 - 2015/1 Variáveis Todo algoritmo – e, consequentemente, todo programa – recebem dados. Dados são armazenados no computador, para posteriormente serem processados. Armazenamento durante a execução do programa: memória primária (RAM). Representação de dados na memória: bits e bytes. Porções de memória (sequências de bits / bytes) que armazenam os dados são identificadas e acessadas através de endereços. Algoritmos: conceitos básicos GMA038 - Intro. Ciênc. Computação 43 Exemplo: programa para folha de pagamento Índice de pagamento: localização 3 Horas trabalhadas: localização 6 Resultado (Salário): localização 8 Escolha arbitrária: qualquer localização pode ser usada; Programador não precisa se preocupar com endereço: cada endereço pode receber um nome, chamado endereço simbólico. Ex.: índice, horas, salário GMA038 - Intro. Ciênc. Computação Prof. Renato Pimentel Algoritmos: conceitos básicos 44 22 GMA038 - 2015/1 Variável Endereço simbólico: variável Possui um nome (identificador) e um tipo; Representa uma posição de memória, onde é guardado um dado ou valor; Seu conteúdo pode ser alterado durante a execução do programa, mas não sua posição; Pode assumir valores distintos, mas somente um único valor a cada instante da execução do programa/algoritmo. Exemplos (slide anterior): Horas, Salario, Indice. GMA038 - Intro. Ciênc. Computação Algoritmos: conceitos básicos 45 Tipos de dados Toda variável possui um determinado tipo. Tipo de uma variável: determina o conjunto de valores (e operações) que a variável pode aceitar. Tipos de dados primitivos (básicos): Numéricos; Inteiros; Reais. Lógicos; Literais ou de texto. GMA038 - Intro. Ciênc. Computação Prof. Renato Pimentel Algoritmos: conceitos básicos 46 23 GMA038 - 2015/1 Dados numéricos Positivos ou negativos; Dois grupos: Inteiros; Reais. Inteiros: Sem parte fracionária; Exemplos: -23, 98, 0, -357, 237, -2 Reais: Possuem parte fracionária; Exemplos: 23.45, -34.88, -247.0, -346.89 GMA038 - Intro. Ciênc. Computação Algoritmos: conceitos básicos 47 Dados numéricos Observação: Observação: notação notação de de dados dados reais reais no no computador: computador: língua língua inglesa inglesa (ponto, (ponto, ee não não vírgula, vírgula, separa separa parte parte inteira inteira da da parte parte fracionária fracionária GMA038 - Intro. Ciênc. Computação Prof. Renato Pimentel Algoritmos: conceitos básicos 48 24 GMA038 - 2015/1 Dados lógicos Podem assumir somente dois valores: Verdadeiro Falso Também chamados de boolianos (álgebra de Boole). GMA038 - Intro. Ciênc. Computação Algoritmos: conceitos básicos 49 Dados literais ou caracteres Formados por um único caractere ou uma cadeia de caracteres. Caractere: Letras maiúsculas; Letras minúsculas; Algarismos (não podem ser utilizados para cálculos); Caracteres especiais (ex.: &, #, @, ?, +, etc.) Exemplos: “aluno”, “1234”, “0.34”, “1+2”, “1ab”, “0”, “x”, etc. GMA038 - Intro. Ciênc. Computação Prof. Renato Pimentel Algoritmos: conceitos básicos 50 25 GMA038 - 2015/1 Identificando variáveis Toda variável, além de um tipo, deve possuir um nome (identificador). Algumas regras para identificar uma variável: Podem ser utilizados algarismos, letras maiúsculas, letras minúsculas; No início: somente uma letra ou símbolo “_”; Não permitidos: espaço em branco, caracteres especiais (@, $, +, -, %, etc.); Não permitidos: palavras reservadas da linguagem de programação em uso. Exemplos: x, y, salario, _horas, N1, n2 GMA038 - Intro. Ciênc. Computação Algoritmos: conceitos básicos 51 Programação estruturada GMA038 - Intro. Ciênc. Computação Prof. Renato Pimentel Algoritmos: conceitos básicos 52 26 GMA038 - 2015/1 Programação estruturada Questão: como resolver um determinado problema? Paradigma de programação Relacionado à forma de pensar do programador; Como ele busca a solução para o problema; Mostra como o programador analisou e abstraiu o problema a ser resolvido. GMA038 - Intro. Ciênc. Computação Algoritmos: conceitos básicos 53 Paradigmas de programação Paradigmas Estruturado; Orientado a objetos; Lógico; Funcional; Etc.... GMA038 - Intro. Ciênc. Computação Prof. Renato Pimentel Algoritmos: conceitos básicos 54 27 GMA038 - 2015/1 Paradigma estruturado Também chamado imperativo; Utilização de 3 estruturas: Sequencial; Condicional; Repetição ou iterativa. Busca quebrar um problema complexo em partes menores; Programador: Analisa o problema; Tenta relacionar ações que deverão ser executadas. GMA038 - Intro. Ciênc. Computação Algoritmos: conceitos básicos 55 Estrutura sequencial de um algoritmo A estrutura sequencial de um algoritmo é dada como segue: Algoritmo Algoritmo Declaração Declaração de de variáveis variáveis Comandos Comandos (atribuição, (atribuição, entrada entrada // saída, saída, processamento) processamento) Fim Fim do do algoritmo algoritmo GMA038 - Intro. Ciênc. Computação Prof. Renato Pimentel Algoritmos: conceitos básicos 56 28 GMA038 - 2015/1 Declaração de variáveis Na declaração de variáveis, criamos as mesmas, definindo um identificador (nome) válido, e seu tipo Quando a variável é criada durante a execução do programa, uma posição de memória é atribuída à mesma Exemplo (pseudocódigo): Declare x numérico Declare y,z literal Declare teste lógico GMA038 - Intro. Ciênc. Computação Algoritmos: conceitos básicos 57 Atribuição Comandos de atribuição são usados para conceder (atribuir) valores ou operações às variáveis. Exemplos (pseudocódigo): x ← 4 y ← x + 2 M ← (N1 + N2)/2 teste ← falso GMA038 - Intro. Ciênc. Computação Prof. Renato Pimentel Algoritmos: conceitos básicos 58 29 GMA038 - 2015/1 Comandos de entrada Comandos de entrada são utilizados para receber dados de entrada do usuário (via teclado ou outro dispositivo de entrada), e armazená-los em variáveis. São representados pela palavra leia. Exemplos: Leia x Leia y Se x é numérico: um valor digitado pelo usuário será armazenado na variável x; Se y é literal: um ou mais caracteres digitados pelo usuário serão armazenados na variável y. GMA038 - Intro. Ciênc. Computação Algoritmos: conceitos básicos 59 Comandos de saída Comandos de saída são utilizados para mostrar ao usuário dados na tela (ou outro dispositivo de saída): Dados podem ser simplesmente o conteúdo de variáveis ou mensagens. Exemplos: Escreva X Escreva “conteúdo de Y = “, Y GMA038 - Intro. Ciênc. Computação Prof. Renato Pimentel Algoritmos: conceitos básicos 60 30 GMA038 - 2015/1 Exercícios 1.Escreva um algoritmo que execute a soma de dois números inteiros fornecidos pelo usuário, usando: Declaração de variáveis Comandos de entrada (leitura) e saída de dados 2.Faça um algoritmo que, a partir do salário de um funcionário, calcule e mostre o novo salário, sabendo-se que este sofreu um aumento de 25%. 3.Escreva um algoritmo que lê o nome de um vendedor, o seu salário fixo, o total de vendas por ele efetuadas e o percentual que ganha sobre o total de vendas. Calcular o salário total do vendedor. Escrever o nome do vendedor e seu salário total. GMA038 - Intro. Ciênc. Computação Algoritmos: conceitos básicos 61 Referências ASCENCIO, A. F. G., CAMPOS, E. A. V. Fundamentos da Programação de Computadores. São Paulo: Prentice Hall, 2007. PAIVA, J. G. S. Notas de aula de algoritmos e programação de computadores. MARTINS, L. G. A. e SILVA, A. J. Notas de aula de Introdução a algoritmos. GMA038 - Intro. Ciênc. Computação Prof. Renato Pimentel Algoritmos: conceitos básicos 62 31