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. Ler o dígito da posição 0 (B0). 2. Ler o dígito da posição 1 (B1). 3. Ler o dígito da posição 2 (B2). 4. 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. Ler o valor de a. 2. Ler o valor de b. 3. Ler o valor de c. 4. 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: heitorm@dca.ufrn.br 26