Universidade Federal do Rio Grande do Norte Departamento de Engenharia de Computação e Automação Noções de Algoritmos DCA0800 - Algoritmos e Lógica de Programação Heitor Medeiros 1 Tópicos da aula • Algoritmos – Definições. – Requisitos. – Formas de representação. • Criação de algoritmos. 2 Algoritmos: definições • “Um algoritmo é um processo sistemático para a resolução de um problema.” [Szwarcfiter, 1994] • “Um algoritmo computa uma saída, o resultado do problema, a partir de uma entrada, as informações inicialmente conhecidas e que permitem encontrar a solução do problema.” [Szwarcfiter, 1994] 3 Algoritmos: definições • “Uma sequência finita de regras, raciocínios ou operações que, aplicada a um número finito de dados, permite solucionar classes semelhantes de problemas.” [Piva et al, 2012] • “Conjunto de regras e procedimentos lógicos perfeitamente definidos que levam à solução de um problema em um número finito de etapas.” [Piva et al, 2012] 4 Algoritmos: palavras-chave 5 Requisitos para um Algoritmo • Finitude: – Sempre deve ter um final após um número finito de etapas. • Definição: – Cada etapa do algoritmo deve ser definido com precisão. • Entrada: – Um algoritmo deve possuir zero ou mais entradas. • Saída: – Um algoritmo deve possuir uma ou mais saídas. 6 Algoritmos x Programas • Não confunda algoritmos com programas. • O algoritmo é um conjunto de instruções para realizar uma tarefa. • Um algoritmo escrito em uma linguagem de programação e traduzido para linguagem de máquina é chamado de programa. Algoritmo Programa Processo 7 Formas de Representação de Algoritmos • Linguagem natural (descrição narrativa). – Representação do algoritmo através de descrição narrativa das instruções/passos. • Fluxograma - Linguagem gráfica. – Representação dos passos do algoritmo através de elementos gráficos. • Diagrama de blocos. • Pseudolinguagem. – Representação do algoritmo mais próxima de uma linguagem de programação de alto nível. A sintaxe da representação inclui elementos das linguagens de programação. • Português estruturado – Portugol. 8 Criação de Algoritmos • Exemplo 01: Construir um algoritmo para converter um número binário em decimal. O número binário contém 3 bits, que são informados pelo usuário. E no final da conversão, ou melhor, no final do algoritmo é obrigatório mostrar ao usuário o valor decimal. 9 Criação de Algoritmos • Exemplo 01: Processamento Construção de um algoritmo para converter um número binário em decimal. O número binário contém 3 bits, que são informados pelo usuário. E no final da conversão, ou melhor, no final do algoritmo é obrigatório mostrar ao usuário o valor decimal. Saída Entrada(s) 10 Criação de Algoritmos: Exemplo 01 – Linguagem natural 1. 2. 3. 4. Ler o dígito da posição 0 (B0). Ler o dígito da posição 1 (B1). Ler o dígito da posição 2 (B2). Multiplicar os dígitos (B0, B1 e B2) pelos pesos posicionais(2², 2¹ e 2^0, ou, 4, 2 e 1). X0 = B0 * 1 X1 = B1 * 2 X2 = B2 * 4 5. Somar os resultados das multiplicações do passo anterior. X = X0 + X1 + X2. 6. Escrever o valor de X. 11 Criação de Algoritmos: Exemplo 01 – Linguagem natural Passo 1 Operação de leitura / Entrada de dados. Ler o dígito da posição 0 (B0). Passo 2 Operação de leitura / Entrada de dados. Ler o dígito da posição 1 (B1). Passo 3 Operação de leitura / Entrada de dados. Ler o dígito da posição 2 (B2). Passo 4 Operação aritmética. Multiplicar os dígitos pelos pesos posicionais. Passo 5 Operação aritmética. Somar os resultados das multiplicações do passo anterior. Passo 6 Operação de escrita / saída de dados. Escrever o valor de X. 12 Criação de Algoritmos: Exemplo 01 – Fluxograma by: creately.com 13 Criação de Algoritmos: Exemplo 01 – Fluxograma by: creately.com 14 Criação de Algoritmos: Exemplo 01 – Pseudolinguagem 15 Criação de Algoritmos: Exemplo 01 – Pseudolinguagem • Semelhante as linguagens de programação, existe uma estrutura a ser seguida. • Existem palavras reservadas: algoritmo, var, inteiro, inicio, fim algoritmo... 16 Criação de algoritmos • Criação de algoritmos em pseudolinguagem. – Utilizando a IDE VisualG. • Criação de algoritmos/programas na linguagem C. – Utilizando a IDE Code Blocks. • Criação de algoritmos/programas na linguagem Java. – Utilizando a IDE Netbeans. 17 Criação de algoritmos: Exemplo 02 • Exemplo 02: Construir um algoritmo para calcular as raízes de uma equação de segundo grau dada por f(x) = ax + bx + c. O usuário deverá informar os valores de a, b e c, e o algoritmo deve mostrar os valores das raízes de acordo com a fórmula de Bhaskara. 18 Criação de algoritmos: Exemplo 02 • Exemplo 02: Construir um algoritmo para calcular as raízes de uma equação de segundo grau dada por f(x) = ax + bx + c. O usuário deverá informar os valores de a, b e c, e o algoritmo deve mostrar os valores das raízes de acordo com a fórmula de Bhaskara. Entradas: valores das constantes “a”, “b” e “c”. Saídas: 2 raízes da equação de segundo grau (x1, x2). 19 Criação de Algoritmos: Exemplo 02 – Linguagem natural 1. 2. 3. 4. Ler o valor de “a”. Ler o valor de “b”. Ler o valor de “c”. Calcular o valor de “delta”: delta = (b^2) – (4 * a * c) 5. Calcular os valores das duas raízes: raiz1 = (-b + raiz(delta)) / (2*a) raiz2 = (-b - raiz(delta)) / (2*a) 6. Escrever os valores das raízes (raiz1 e raiz2). 20 Criação de Algoritmos: Exemplo 02 – Fluxograma by: creately.com 21 Criação de Algoritmos: Exemplo 02 – Pseudolinguagem 22 Criação de Algoritmos: Exemplo 02 – Pseudolinguagem Cuidados! Organize suas operações aritméticas. Organize TODO seu código. ORGANIZAÇÃO é a palavra chave de um bom algoritmo. 23 Execução do Exemplo 02: • E se a equação de segundo grau não tiver raízes reais (delta < 0), o que fazer? • Próximas aulas: estruturas de decisão. 24 Referências • Piva Junior, D., et al. Algoritmos e Programação de Computadores. Editora Campus: Rio de Janeiro, 2012. • Szwarcfiter, J. L.; Markenzon, L. Estruturas de Dados e seus Algoritmos. Editora LTC, 1994. 25 Dúvidas? Dúvidas por email: [email protected] 26