Algoritmos e Estrutura de Dados I Conceitos de Algoritmos Prof. Elyssandro Piffer CONCEITO DE ALGORITMO • O computador pode auxiliar em muitas tarefas, contudo ele não possui independência, não é inteligente, portanto necessita receber instruções. • A finalidade de um computador é receber, manipular e armazenar dados. Mais ele só consegue realizar essas tarefas por meio de um algoritmo ou programa de computador. CONCEITO DE ALGORITMO • “Algoritmo é uma sequência finita de instruções ou operações cuja execução, em tempo finito, resolve um problema computacional, qualquer que seja sua instância.” (SALVETTI, 1999). • “Ação é um acontecimento que, a partir de um estado inicial, após um período de tempo finito, produz um estado final previsível e bem definido. Portanto, um algoritmo é a descrição de um conjunto de comandos que, obedecidos, resultam numa sucessão finita de ações.” (FARRER, 1999). CONCEITO DE ALGORITMO/PROGRAMA/SISTEMA Algoritmos + Programas + Sistema (software) Um algoritmo é um pequeno grupo de instruções passadas para o computador. Programar é basicamente construir vários algoritmos. Construir Sistemas (Software) é a junção de vários programas. CONCEITO DE LINGUAGEM DE PROGRAMAÇÃO • Para que o computador compreenda e execute um algoritmo, programa ou sistema, deve-se escrevê-lo usando uma linguagem que tanto o computador quanto o criador de software entendam. Essa linguagem é chamada de linguagem de programação. Exemplo: Pascal, C, Java, Php, etc. PROCESSAMENTO DE DADOS “...a partir de um estado inicial, após um período de tempo finito, produz um estado final previsível e bem definido...” (FARRER, 1999). SEQUÊNCIA LÓGICA DAS INSTRUÇÕES • Para se construir um algoritmo, é necessário ter lógica apurada, de forma que se possa definir uma sequência lógica das instruções (comandos) a serem passadas para o computador atingir o objetivo (solucionar o problema). • Na vida quotidiana, os algoritmos são encontrados frequentemente. Exemplos: tomar banho, tomar café, almoçar, trocar um pneu, fazer um bolo, atender um celular, entre outros. Vejamos alguns exemplos detalhadamente... EXEMPLO DE ALGORITMO • Algoritmo 1: Somar 3 números Passo 1 - Receber os três números Passo 2 - Somar os três números Passo 3 - Mostrar o resultado obtido EXEMPLO DE ALGORITMO • Algoritmo 2: 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 EXEMPLO DE ALGORITMO • Algoritmo 3: Realizar compra num supermercado Passo 1 - Faça a lista de compra e vá ao supermercado Passo 2 - Entre no supermercado Passo 3 - Pegue o carrinho de compra Passo 4 - Pegue os produtos da lista de compra Passo 5 - Passe os produtos junto ao caixa e pague Passo 6 - Volte para casa Passo 7 – Guarde as compras ETAPAS DO DESENVOLVIMENTO • ANÁLISE: onde o enunciado do problema será estudado para a definição dos dados de entrada, do processamento e saída. • ALGORITMO: onde ferramentas do tipo descrição narrativa, fluxograma ou pseudocódigo (portugol ou português estruturado) são utilizadas para descrever o problema com suas soluções; • CODIFICAÇÃO: onde o algoritmo é transformado em códigos da linguagem de programação escolhida. PARA SE CONSTRUIR, NECESSÁRIO SE FAZ • Ler atentamente o enunciado, destacando os pontos mais importantes. • Definir os dados de entrada, ou seja, quais dados serão fornecidos. • definir o processamento, ou seja, quais cálculos serão efetuados. • Definir os dados de saída, ou seja, quais dados serão gerados depois do processamento. • Construir o algoritmo utilizando os tipos descritos no slide anterior. • Testar o algoritmo realizando simulações. FERRAMENTA 1 – DESCRIÇÃO NARRATIVA • Descrição Narrativa: A descrição narrativa consiste em analisar o enunciado do problema e escrever, utilizando uma linguagem natural, por exemplo, a língua portuguesa, os passos a serem seguidos para a resolução do problema. Vantagem: não é necessário aprender nenhum conceito novo, pois uma linguagem natural, neste ponto, já é bem conhecida. FERRAMENTA 2 - FLUXOGRAMA • Fluxograma: O fluxograma consiste em analisar o enunciado do problema e escrever, utilizando símbolos pré-definidos, os passos a serem seguidos para a resolução do problema. Vantagem: o entendimento de elementos gráficos é mais fácil do que o entendimento de textos. Desvantagem: é necessário aprender a simbologia dos fluxogramas e, além disso, o algoritmo resultante não apresenta muitos detalhes, dificultando a sua transcrição para um programa. FERRAMENTA 2 - FLUXOGRAMA FERRAMENTA 3 – PSEUDOCÓDIGO • Pseudocódigo: consiste em analisar o enunciado do problema e escrever, utilizando regras pré-definidas, os passos a serem seguidos para a resolução do problema. • Vantagem: a passagem do algoritmo para qualquer linguagem de programação é quase imediata, bastando conhecer as palavras reservadas da linguagem de programação que será utilizada. • Desvantagem: é necessário aprender as regras do pseudocódigo, que serão apresentadas posteriormente. EXEMPLO - DESCRIÇÃO NARRATIVA Faça um algoritmo que mostre o resultado da multiplicação de dois números. Passo 1 – Receber os dois números que serão multiplicados Passo 2 – Multiplicar os números Passo 3 – Mostrar o resultado obtido na multiplicação EXEMPLO - FLUXOGRAMA Faça um algoritmo que mostre o resultado da multiplicação de dois números. EXEMPLO - PSEUDOCÓDIGO Faça um algoritmo que mostre o resultado da multiplicação de dois números. ALGORITMO DECLARE n1, n2, m NUMÉRICO ESCREVA “Digite dois números” LEIA n1, n2 m n1 * n2 ESCREVA “Multiplicação = “ , m FIM_ALGORITMO. CONCEITO DE VARIÁVEL • Um ALGORITMO recebe dados, que são armazenados na memória do computador. • Desta forma, uma variável representa uma posição de memória, possuindo nome e tipo. • Quando queremos buscar algum dado na memória basta sabermos o nome da variável que o computador irá buscá-lo automaticamente. CONCEITO DE TIPOS DE DADOS • Quando uma variável é definida é necessário saber que TIPO são os dados que ela armazenará. São eles: • Numérico: dividem-se em inteiros e reais. Os números inteiros podem ser positivos ou negativos e NÃO possuem parte decimal. Exemplos: -23; 98; 0; 1350. Os números reais podem ser positivos ou negativos e POSSUEM parte decimal. Exemplos: -23.50; 98.37; 0.29; 1350.45. CONCEITO DE TIPOS DE DADOS • Lógico: São também chamados dados booleanos (por causa da álgebra de Boole) e podem assumir apenas duas possibilidades de representação, os valores VERDADEIRO ou FALSO. • Literal ou Caractere : São dados formados por um único caractere ou por uma cadeia de caracteres. Estes caracteres podem ser as letras maiúsculas, minúsculas, números (não podem ser usados para cálculos) e os caracteres especiais (&, #, @, ?, +, etc). Exemplos: ‘F’; ‘s’; ‘unipar’; ‘rua das flores’. REGRAS PARA IDENTIFICADORES (VARIÁVEL) • Só pode conter letras (maiúsculas ou minúsculas), números e o caractere sublinhado. • o primeiro caractere deve ser sempre letra ou o caractere sublinhado. • não são permitidos espaços em branco e caracteres especiais. • não podemos usar as palavras reservadas, ou seja, palavras que pertencem a uma linguagem de programação. • Deve dizer respeito ao que será armazenado dentro dela. REGRAS PARA IDENTIFICADORES (VARIÁVEL) • Exemplos de identificadores Válidos: • A • _a • nota • NOTA • X5 • A32 Inválidos: • 5b – começa por número • e 12 – contém espaço em branco • x-y – contém caractere especial ‘-’ • If – por ser palavra reservada ESTRUTURA SEQUENCIAL EM ALGORITMOS Escopo ALGORITMO DECLARE INICIO bloco de comandos FIM. DECLARAÇÃO DE VARIÁVEIS EM ALGORITMOS • As variáveis são declaradas após a palavra DECLARE e os tipos mais utilizados são: NÚMERICO, LITERAL e LÓGICO. DECLARE idade NÚMERICO sexo LITERAL teste LÓGICO COMANDO DE ATRIBUIÇÃO EM ALGORITMOS • O comando de atribuição é utilizado para atribuir valores ou operações a variáveis, sendo representado pelos símbolo x4 yy+2 z ‘joão’ teste falso COMANDO DE ENTRADA EM ALGORITMOS • O comando de entrada é utilizado para receber dados digitados pelo usuário. Os dados recebidos são armazenados em variáveis. Este comando é representado pela palavra LEIA. EXEMPLO: LEIA nota LEIA nome COMANDO DE SAÍDA EM ALGORITMOS • O comando de saída é utilizado para mostrar dados na tela, na impressora ou outros. Este comando é representado pela palavra ESCREVA e os dados podem ser conteúdo de variáveis ou mensagens. EXEMPLO: ESCREVA idade ESCREVA ‘Entre com o seu nome’ ESCREVA ‘Eu tenho ’ , idade, ‘ anos’