Universidade Federal de Uberlândia Faculdade de Computação Conceitos básicos de algoritmos Prof. Renato Pimentel 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 Processamento Resultados 2 Prof. Renato Pimentel 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. 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. 4 Prof. Renato Pimentel 2
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. 5 Programa Nada mais é do que a codificação de um algoritmo em uma linguagem de programação. Uma definição mais formal: Conjunto de instruções passo a passo que orientam o computador a fazer as tarefas necessárias e produzir o(s) resultado(s) desejado(s) 6 Prof. Renato Pimentel 3
Algoritmo Sequência finita e não ambígua* de instruções ou operações (passos), cuja execução, em um tempo finito, resolva um problema * cada instrução deve ser precisamente definida, sem permitir mais de uma interpretação. 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. 8 Prof. Renato Pimentel 4
Exemplos cotidianos de algoritmos 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. 10 Prof. Renato Pimentel 5
Algoritmo 3 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 11 Note pelos exemplos que podem existir maneiras diferentes de se resolver determinados problemas, de maneira que ao final o resultado seja o mesmo 12 Prof. Renato Pimentel 6
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. 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. 14 Prof. Renato Pimentel 7
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. 15 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 16 Prof. Renato Pimentel 8
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 17 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. 18 Prof. Renato Pimentel 9
Exemplo de fluxograma Imprimir maior dentre dois números, A e B. Início Leia A e B Sim A > B? Não Escreva A Escreva B Fim 19 Exemplo de fluxograma Representação alternativa: Início Leia A e B A > B? Sim Não A B Escreva A 20 Prof. Renato Pimentel 10
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 21 Exemplo de pseudocódigo Como seria o pseudocódigo do algoritmo dado no fluxograma do slide anterior? Declare A, B numérico Escreva Digite dois valores Leia A, B Se A < B Então A B Escreva A 22 Prof. Renato Pimentel 11
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 23 Simbologia de fluxogramas Processo e operações Representação por retângulos. Indica uma tarefa a ser executada pelo algoritmo. Usado para cálculos e atribuições de valores. Leia A e B M = N + P Escreva B 24 Prof. Renato Pimentel 12
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. Mudanças no fluxo possibilidade de desvios. A > B? 25 Simbologia de fluxogramas Setas Conectam dois símbolos quaisquer. Indicam o fluxo de dados ordem das operações a serem realizadas. A > B? Sim Escreva A Não A B 26 Prof. Renato Pimentel 13
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 ou reprovado. Descrição narrativa Pseudocódigo Fluxograma 27 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 7, então situação do aluno é aprovado; caso contrário, a situação é reprovado. 28 Prof. Renato Pimentel 14
Pseudocódigo Declare N1, N2, M numérico Escreva digite as duas notas Leia N1, N2 M (N1+N2)/2 Escreva Média =, M Se M >= 7 Então escreva aprovado Senão escreva reprovado 29 Fluxograma Início Leia N1, N2 M = (N1 + N2)/2 Escreva M Sim Escreva aprovado M >= 7? Fim Não Escreva reprovado 30 Prof. Renato Pimentel 15
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). 31 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 32 Prof. Renato Pimentel 16
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 33 Tipos de dados e variáveis 34 Prof. Renato Pimentel 17
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. 35 Índice de pagamento: localização 3 Horas trabalhadas: localização 6 Resultado (Salário): localização 8 Exemplo: programa para folha de pagamento 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 36 Prof. Renato Pimentel 18
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. 37 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. 38 Prof. Renato Pimentel 19
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 39 Dados numéricos Observação: notação de dados reais no computador: língua inglesa (ponto, e não vírgula, separa parte inteira da parte fracionária 40 Prof. Renato Pimentel 20
Dados lógicos Podem assumir somente dois valores: Verdadeiro Falso Também chamados de booleanos (álgebra de Boole). 41 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. 42 Prof. Renato Pimentel 21
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 43 Programação estruturada 44 Prof. Renato Pimentel 22
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. 45 Paradigmas de programação Paradigmas Estruturado; Orientado a objetos; Lógico; Funcional; Etc... 46 Prof. Renato Pimentel 23
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. 47 Estrutura sequencial de um algoritmo A estrutura sequencial de um algoritmo é dada como segue: Algoritmo Declaração de variáveis Comandos (atribuição, entrada / saída, processamento) Fim do algoritmo 48 Prof. Renato Pimentel 24
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 49 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 50 Prof. Renato Pimentel 25
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. 51 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 52 Prof. Renato Pimentel 26
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 programa que receba o 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. 53 Referências ASCENCIO, A. F. G., CAMPOS, E. A. V. Fundamentos da Programação de Computadores. São Paulo: Prentice Hall, 2007. PIMENTEL, R. Notas de aula de Introdução à Computação. 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. 54 Prof. Renato Pimentel 27