Baixe o app para aproveitar ainda mais
Prévia do material em texto
Algoritmos I Algoritmos I - Prof. Mauro Gil mgil@unicarioca.edu.br @maurocgil Algoritmos I Conteúdo Programático • Unidade 1: Elementos básicos da pseudolinguagem • Noção de Algoritmos • Constantes e Variáveis • Operadores Aritméticos, Relacionais e Lógicos • Unidade 2: Estruturas de Programação • Estrutura Sequencial • Estrutura Condicional Simples • Estrutura Condicional Composta Algoritmos I Conteúdo Programático • Unidade 3: Estruturas de Repetição • Estrutura de Repetição PARA • Estrutura de Repetição Enquanto • Estrutura de Repetição REPITA • Unidade 4: Subrotinas • Conceitos de Modularização • Procedimentos • Funções Algoritmos I Bibliografia • Básica: • FARRER, H. et al. Algoritmos Estruturados. Rio de Janeiro: LTC, 1999. • FORBELLONE, V.; EBERSPACHE, F. Lógica de Programação. São Paulo: Makron Books, 2000. • GUIMARAES, A. M. Algoritmos e Estrutura de Dados. Rio de Janeiro: LTC, 1994. • Complementar: • HOLZNER, S. C: Programação: o guia prático para a programação eficiente. Rio de Janeiro: Campus, 1993. • KERNIGHAN, Brian W, RITCHIE, Dennis M. C: a linguagem de programação padrão ANSI. Rio de Janeiro: Campus, 1989. • MANZANO, J. A. N. G. Estudo dirigido de algoritmos. 13.ed. rev, atual e ampl. São Paulo: Érica, 2010. • SCHILDT, H. C completo e total. 3. ed. rev. e atual. São Paulo: Makron Books, 2009. • TREMBLAY, J.P. Ciência dos computadores: uma abordagem algorítmica. São Paulo: McGrawn-Hill, 1986. Algoritmos I Algoritmos no Dia a Dia: • indicações de como chegar a uma determinada rua; • receita de culinária; • planta do projeto de construção de um edifício; • instruções de montagem de um brinquedo; • substituição de uma lâmpada: 1. remova a lâmpada queimada; 2. coloque a nova lâmpada. As instruções parecem suficientes para um operador humano, mas e se a tarefa fosse desempenhada por um robô? Algoritmos I Algoritmos no Dia a Dia: Exemplo (substituição de uma lâmpada): • Refinamento 1: 1. posicione a escada debaixo da lâmpada queimada; 2. escolha uma nova lâmpada de mesma potência da queimada; 3. suba na escada até que a lâmpada possa ser alcançada; 4. gire a lâmpada queimada no sentido anti-horário até que ela se solte; 5. posicione a nova lâmpada no soquete; 6. gire-a no sentido horário até que ela se firme; 7. desça a escada. Algoritmos I • Refinamento 2: 1. posicione a escada debaixo da lâmpada queimada; 2. selecione uma nova lâmpada para substituição; se a potência não for a mesma da queimada, então repita até encontrar uma que sirva descarte a lâmpada selecionada; selecione uma nova; 3. enquanto a lâmpada não puder ser alcançada suba um degrau da escada; 4. repita até que a lâmpada fique livre do soquete gire a lâmpada no sentido anti-horário; 5. posicione a nova lâmpada no soquete; 6. repita até que a lâmpada esteja firme no soquete gire a lâmpada no sentido horário; 7. desça a escada. o detalhamento pode continuar quase que indefinidamente Algoritmos I Algoritmos em Computação: • computadores, infelizmente, só fazem aquilo que se manda, e não necessariamente o que se deseja que eles façam; • um conjunto de instruções pode ser facilmente entendido por um ser humano, mas deve ser mais bem especificado para que seja executado por um computador; • as instruções fornecidas ao computador devem ser expressas de forma clara e sem qualquer ambiguidade; • computadores manipulam um conjunto muito limitado de instruções e um algoritmo deve ser expresso nos termos dessas instruções. Algoritmos I Algoritmos em Computação: • o refinamento sucessivo é um bom método para a elaboração de um algoritmo: • começa-se com uma afirmação genérica da solução do problema; • refina-se a solução até o algoritmo final. • um algoritmo representa melhor o raciocínio envolvido na lógica de programação e abstrai detalhes computacionais que são adicionados mais tarde; • uma vez concebida uma solução algorítmica para um problema, esta pode ser traduzida para qualquer linguagem de programação; • a solução escrita em linguagem de programação é transformada em um programa de computador. Algoritmos I Algoritmos em Computação: • o processo de solução de um problema por meio de um programa de computador: problema solução do problema implementação Adaptado de TREMBLAY, BUNT (1983) implementação (passo difícil) solução como um programa de computador solução em forma de algoritmo elaboração de um algoritmo para resolver o problema tradução do algoritmo para uma linguagem de programação Algoritmos I Algoritmos • Definições: “... uma sequência ordenada, e sem ambiguidade, de passos que levam à solução de um dado problema.” TREMBLAY, BUNT (1983) “... é a descrição de um padrão de comportamento, expresso em termos de um repertório bem definido e finito de ações “primitivas”, das quais damos por certo que elas podem ser executadas.” GUIMARÃES, LAGES (1994) é uma sequência finita de instruções não ambíguas que, quando executadas, produzem o resultado esperado. Algoritmos I Linguagens para Algoritmos: • tanto a fraqueza quanto o poder de uma linguagem natural se devem ao seu caráter vago e à sua imprecisão; • um algoritmo escrito em uma linguagem formal afasta a possibilidade de ambiguidade, tal que, para uma situação inicial, a sua execução sempre leva ao mesmo estado final, percorrendo o mesmo caminho; • através de um conjunto básico de primitivas é possível pensar no problema e não na máquina que executará o algoritmo, porém, sem se distanciar muito da máquina; • algumas opções: • linguagem textual: PORTUGOL; • linguagem natural: DESCRIÇÃO NARRATIVA • linguagem gráfica: FLUXOGRAMA. Algoritmos I Linguagens para Algoritmos: • DESCRIÇÃO NARRATIVA • A descrição narrativa consiste em analisar o enunciado do problema e escrever, utilizando uma linguagem natural, os passos a serem seguidos para a sua resolução. • Vantagem: não é necessário aprender nenhum conceito. • Desvantagem: a língua natural abre espaço para várias interpretações, o que posteriormente dificultará a transcrição desse algoritmo para um programa. Algoritmos I Linguagens para Algoritmos: • FLUXOGRAMA • Consiste em analisar o enunciado do problema e escrever, utilizando símbolos gráficos predefinidos, os passos para sua solução. • Vantagem: o entendimento de elementos gráficos é mais simples 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. Algoritmos I Linguagens para Algoritmos: • FLUXOGRAMA • Conjunto de símbolos utilizados no fluxograma. Algoritmos I Linguagens para Algoritmos: • PORTUGOL • O pseudocódigo ou portugol consiste em analisar o enunciado do problema e escrever, por meio de regras predefinidas, os passos a serem seguidos para sua solução. • Vantagem: a passagem do algoritmo para qualquer linguagem de programação é quase imediata, bastando conhecer as palavras reservadas da linguagem que será utilizada. • Desvantagem: é necessário aprender as regras do pseudocódigo. Algoritmos I Elementos de Algoritmos: • identificadores; • tipos de dados; • variáveis e constantes; • operadores; • expressões; • blocos; • controle de fluxo de execução (estruturas básicas e complementares); um identificador é uma sequência de símbolos (caracteres) que dá nome a uma entidade (variável, tipo de dado, etc.) que é parte da descrição de um algoritmo; OBS.: letras maiúsculas e minúsculas são tratadasde forma diferente, ou seja, os identificadores MEDIA e MeDiA são diferentes. Exemplos de identificadores válidos: A a nota NOTA X5 nota_1 Algoritmos I Elementos de Algoritmos: • identificadores; • tipos de dados; • variáveis e constantes; • operadores; • expressões; • blocos; • controle de fluxo de execução (estruturas básicas e complementares); Exemplos de identificadores inválidos: 5b -por começar com número; e 12 -por conter espaço em branco; x-y -por conter o caracter especial -; prova 2n -por conter espaço em branco; nota(2) -por conter o caracteres especiais (); case –por ser uma palavra reservada; SET –por ser uma palavra reservada; Algoritmos I Elementos de Algoritmos: • identificadores; • tipos de dados; • variáveis e constantes; • operadores; • expressões; • blocos; • controle de fluxo de execução (estruturas básicas e complementares); um tipo estabelece a natureza (característica) do dado que é manipulado por um algoritmo; tipos de dados básicos (PORTUGOL): inteiro: 13, – 6, 7830, – 295; real: 23.8, 3.6752, – 8.910, 3738.72, 32.0; caractere: “Teste”, “111 + 222 = 333”; lógico: FALSO, VERDADEIRO; Algoritmos I Elementos de Algoritmos: • identificadores; • tipos de dados; • variáveis e constantes; • operadores; • expressões; • blocos; • controle de fluxo de execução (estruturas básicas e complementares); - uma variável é uma entidade que armazena um valor (dado) de um tipo e é conhecida pelo seu identificador; - tecnicamente, uma variável corresponde a uma área na memória do computador que armazena um tipo específico de conteúdo. - o conteúdo de uma variável pode ser modificado durante a execução do algoritmo. sintaxe da declaração (definição) de uma variável (PORTUGOL): inteiro: VALOR; real: R1, R2; caractere: FRASE; lógico: TEM; Algoritmos I Elementos de Algoritmos: • identificadores; • tipos de dados; • variáveis e constantes; • operadores; • expressões; • blocos; • controle de fluxo de execução (estruturas básicas e complementares); uma constante é uma entidade com características semelhantes às de uma variável, porém, o seu valor nunca muda durante a execução do algoritmo. sintaxe da declaração (definição) de uma constante (PORTUGOL): const PI 3.14; const PHI 1.618; Algoritmos I Elementos de Algoritmos: • identificadores; • tipos de dados; • variáveis e constantes; • operadores; • expressões; • blocos; • controle de fluxo de execução (estruturas básicas e complementares); um operador é um símbolo que é associado a um valor (constante ou variável) ou a um par de valores para formar uma expressão; – tipos de operadores: • aritméticos adição: + multiplicação: * potenciação: pot (x,y) x elevado a y radiciação: rad (x) raiz quadrada de x subtração: - divisão: / mod (m mod n): resto da divisão de m por n div (m div n): quociente da divisão de m por n Algoritmos I Elementos de Algoritmos: • identificadores; • tipos de dados; • variáveis e constantes; • operadores; • expressões; • blocos; • controle de fluxo de execução (estruturas básicas e complementares); – tipos de operadores: • relacionais igual: = maior: > maior ou igual >= diferente: <> menor: < menor ou igual : <= Algoritmos I Elementos de Algoritmos: • identificadores; • tipos de dados; • variáveis e constantes; • operadores; • expressões; • blocos; • controle de fluxo de execução (estruturas básicas e complementares); – tipos de operadores: • lógicos e: (∧) ou: (∨) não: (⌐) tabela verdade Algoritmos I Elementos de Algoritmos: • identificadores; • tipos de dados; • variáveis e constantes; • operadores; • expressões; • blocos; • controle de fluxo de execução (estruturas básicas e complementares); – tipos de operadores: • atribuição de valor. um tipo especial de operador, denominado operador de atribuição, representa o armazenamento do resultado de uma expressão em uma variável; exemplos: VALOR ← 42; R1← 1.73; FRASE ← “UNICARIOCA”; TEM ← VERDADEIRO; Algoritmos I Elementos de Algoritmos: • identificadores; • tipos de dados; • variáveis e constantes; • operadores; • expressões; • blocos; • controle de fluxo de execução (estruturas básicas e complementares); precedência: • parênteses e funções; • exponenciação; • multiplicação, divisão, mod e div; • adição e subtração; • comparações; • não; • e; • ou; • atribuição. Algoritmos I Elementos de Algoritmos: • identificadores; • tipos de dados; • variáveis e constantes; • operadores; • expressões; • blocos; • controle de fluxo de execução (estruturas básicas e complementares); – uma expressão é uma combinação de valores, operadores e parênteses que, quando avaliada, produz um novo valor; – a avaliação de uma expressão deve levar em consideração a precedência dos operadores envolvidos; – a avaliação de uma expressão deve levar em consideração também os tipos das variáveis (ou constantes) envolvidas; – a conversão de um tipo para outro pode resultar em um erro ou em um valor incorreto; Algoritmos I Elementos de Algoritmos: • identificadores; • tipos de dados; • variáveis e constantes; • operadores; • expressões; • blocos; • controle de fluxo de execução (estruturas básicas e complementares); Algoritmos I Elementos de Algoritmos: • identificadores; • tipos de dados; • variáveis e constantes; • operadores; • expressões; • blocos; • controle de fluxo de execução (estruturas básicas e complementares); Algoritmos I Elementos de Algoritmos: • identificadores; • tipos de dados; • variáveis e constantes; • operadores; • expressões; • blocos; • controle de fluxo de execução (estruturas básicas e complementares); – um bloco é um conjunto de comandos com uma função bem definida; – um bloco também define o escopo das variáveis, ou seja, a região do algoritmo em que são conhecidas; Algoritmos I Elementos de Algoritmos: • identificadores; • tipos de dados; • variáveis e constantes; • operadores; • expressões; • blocos; • controle de fluxo de execução (estruturas básicas e complementares); (Estrutura Sequencial): uma estrutura sequencial é um conjunto de comandos que são executados numa sequência linear de cima para baixo; (Estrutura de Decisão): uma estrutura de decisão permite decidir qual ação deve ser executada com base no resultado de um teste; Algoritmos I Boas Práticas: algumas dicas para escrever algoritmos de qualidade: 1. algoritmos devem ser feitos para serem lidos por seres humanos; 2. escreva comentários quando estiver escrevendo o algoritmo; 3. escreva comentários que acrescentem alguma informação útil; 4. use comentários no prólogo; 5. utilize espaços em branco para melhorar a legibilidade; Algoritmos I Boas Práticas: cont... 6. escolha nomes representativos para as suas variáveis; 7. escreva um comando por linha; 8. utilize parênteses para aumentar a legibilidade das expressões; 9. utilize endentação para mostrar a estrutura lógica do algoritmo; 10. os comentários devem ser alterados quando o algoritmo é alterado. Algoritmos I Exemplos: 1. Faça um algoritmo para mostrar o resultado da multiplicação de dois números Algoritmos I Exemplos: 1. Faça um algoritmo para mostrar o resultado da multiplicação de dois números Algoritmo em descrição narrativa: Passo 1 – Receber dois números que serão multiplicados. Passo 2 – Multiplicar os números. Passo 3 – Mostrar o resultado obtido na multiplicação.Algoritmos I Exemplos: 1. Faça um algoritmo para mostrar o resultado da multiplicação de dois números Algoritmo em fluxograma: Algoritmos I Exemplos: 1. Faça um algoritmo para mostrar o resultado da multiplicação de dois números Algoritmo em pseudocódigo: ALGORITMO DECLARE N1, N2, M NUMÉRICO ESCREVA “Digite dois números” LEIA N1, N2 M ←N1 * N2 ESCREVA “Multiplicação = ”, M FIM_ALGORITMO Algoritmos I Exemplos: 2. Faça um algoritmo para mostrar o resultado da divisão de dois números Algoritmos I Exemplos: 2. Faça um algoritmo para mostrar o resultado da divisão de dois números Algoritmo em descrição narrativa: Passo 1 – Receber dois números que para a divisão. Passo 2 – Se o segundo número for igual a zero, não poderá ser feita a divisão, pois não existe divisão por zero; caso contrário, dividir os números e mostrar o resultado da divisão. Algoritmos I Exemplos: 2. Faça um algoritmo para mostrar o resultado da divisão de dois números Algoritmo em fluxograma: Algoritmos I Exemplos: 2. Faça um algoritmo para mostrar o resultado da divisão de dois números Algoritmo em pseudocódigo: ALGORITMO DECLARE N1, N2, D NUMÉRICO ESCREVA “Digite dois números” LEIA N1, N2 SE N2 = 0 ENTÃO ESCREVA “Impossível dividir” SENÃO INÍCIO D←N1 / N2 ESCREVA “Divisão = ”, D FIM FIM_ALGORITMO
Compartilhar