Post on 17-Dec-2018
Objetivos
• Apresentar os conceitos básicos sobre algoritmos e lógica de programação.
• Apresentar formas distintas para representação do raciocínio da lógica algorítmica.
O que é Programação?• Fazer com que o computador faça
exatamente o que queremos que ele faça
• Criar uma rotina para que, seguindo uma lógica passo-a-passo, possamos alcançar a resolução de um problema computacional.
• Passo a passo da resolução: algoritmo
Algoritmo• “Algoritmo é um conjunto finito de regras que provê uma seqüência de operações para resolver um
tipo de problema específico, em um tempo determinado” (Knuth, A Arte de Programar, 1997)
• Características:
✴ Um algoritmo sempre termina, ele deve ter um fim. Na verdade, cada ação do algoritmo, cada passo, deve ser simples o bastante de forma a ser executada em um intervalo de tempo finito.
✴ As instruções do algoritmo devem estar em uma seqüência lógica, ou seja, deve existir uma ordem de execução dos passos da seqüência.
✴ Cada ação é descrita precisamente e sem ambigüidades, ou seja, o algoritmo não pode dar margem à dupla interpretação.
✴ Um algoritmo sempre produz um ou mais resultados (saídas), podendo não exigir dados de entrada.
✴ Um algoritmo sempre solucionar um determinado problema, justamente, para que tenha uma utilidade.
• Um algoritmo é uma solução do problema e não a solução, ou seja podem existir vários algoritmos para o mesmo problema.
Fases Básicas da Construção de Algoritmos
• Entrada: São os dados de entrada do algoritmo, os valores que ele vai usar no processamento para chegar à solução do problema. Fornecidos pelo usuário, fazendo uso de algum dispositivo de entrada de dados, tal como, um teclado, um mouse ou um leitor de código de barras.
• Processamento: São os procedimentos utilizados para chegar ao resultado final, para alcançar a resolução do problema. Esses procedimentos são executados no processador do computador e os valores parciais são armazenados na memória (memória RAM).
• Saída: São os dados já processados. É o resultado do processamento. Estes dados de saída são apresentados em algum dispositivo de saída. Por exemplo, a tela de um monitor.
Para construir um algoritmo, identifique
• Quais dados são necessários para começar o algoritmo? Que dados ele vai precisar para executar? – ENTRADA
• Quais são os cálculos que precisam ser feitos e quais decisões precisam ser tomadas? – PROCESSAMENTO
• Quais dados devem ser exibidos para o usuário? – SAÍDA
Exemplo
• algoritmo para calcular a média aritmética de dois números. Quais seriam as fases desse algoritmo?
• Entrada: os dois números (afinal, para calcular a média, você precisa ter os dois valores)
• Processamento: o cálculo da média (que seria somar os dois números e dividir por dois)
• Saída: a média (que era o objetivo do problema)
Representação de Algoritmos:
• Vantagem:Todos falamos e conhecemos o português e sabemos, bem ou mal, fazer uma descrição, uma lista de atividades.
• Desvantagens
• Não há um padrão
• Imprecisão
Descrição Narrativa
Representação de Algoritmos:
• Vantagem:
• Ferramenta conhecida em outras áreas
• Figuras dizem mais que palavras
• Tem uma padrão mundial e pode ser compreendido em qualquer lugar
• Mais claro de ler, evita ambigüidades
• Desvantagens
• Dá pouca atenção aos dados, não descreve como representá-los
• Pode se tornar complicado de ler e entender
Fluxograma
Exemplo de fluxograma
Problemas existem?
• Não utilize esse algoritmo
7
Prática de Ensino de Algoritmos
Capítulo 1 – Revisando conceitos básicos sobre algoritmos
Quantos problemas necessitamos resolver na nossa vida diária (como chegar em tal lugar, como conseguir realizar tal tarefa, como gerenciar o tempo para fazer tudo que tem de ser feito, entre outros)? Nós diríamos: vários! E, geralmente, mal resolvemos um problema, novos vão surgindo para serem resolvidos e, mal tendo tempo para
que todo ser humano é um “resolvedor de problemas” nato, sendo que cada um tem a sua própria lógica de resolução (vide Figura 01).
Figura 1. Exemplo de um Algoritmo para Resolução de Problemas.
FluxogramaComo ficaria o algoritmo das médias se
precisarmos checar se o aluno foi reprovado ou não?
Algoritmos simples Verificação da situação do aluno
Representação de Algoritmos:
• Consiste na definição de uma pseudolinguagem de programação, cujos comandos são em português, mas já lembram um pouco a estrutura de uma linguagem de programação estruturada
Linguagem Algorítmica ou Pseudocódigo
algoritmo “calcularMedia” var N1, N2, Media : real inicio
leia(N1, N2) Media <- (N1 + N2)/2se media>=6 entao escreva(“aprovado”)
senao escreva(“reprovado”) fimse fimalgoritmo
Representação de Algoritmos:
• Vantagens
• Usa o português como base.
• Podemos definir com detalhes os dados e tipos utilizados, até estruturas.
• É relativamente fácil passar para uma linguagem de computador
• Desvantagens
• Utiliza uma linguagem que não é real para o trabalho.
• Não é padronizada.
Linguagem Algorítmica ou Pseudocódigo
Lógica de Programação
• Lógica é a ciência que estuda as leis do raciocínio; é a correção/validação do pensamento; é o encadeamento, ordenação de idéias; É a arte de bem pensar
• se o guarda-roupa está fechado e a camisa que quero está no guarda-roupa, então, preciso primeiro abrir o guarda-roupa para poder pegar a camisa
• Lógica de Programação é o encadeamento lógico de instruções para o desenvolvimento de programas.
• Programa é a implementação das instruções de um algoritmo em uma linguagem de programação.
• Instrução representa um passo do algoritmo. Uma ação que não pode ser subdividida.
• ex: Trocar uma lâmpada é uma instrução?
Linguagem de Programação
• Conjunto finito de palavras, comandos e instruções escritos com o objetivo de orientar a realização de uma tarefa pelo computador
• ex: C, Pascal, Java, C#, PHP e Phyton
• Linguagens:
• auto nível - Legíveis por humanos
• baixo nível - Próximos à linguagem de máquina
Linguagem de Programação - Tradutores
• Compilador: traduz de uma vez só todo o programa escrito em linguagem de alto nível (código-fonte) para um programa equivalente escrito em linguagem de máquina (código-objeto)
• Interpretador: traduz (sem gerar código-objeto) e em seguida executa, uma a uma, as instruções de um programa em linguagem de alto nível (código-fonte)
Linguagem de Programação - Tradutores
Informações Adicionais• O código objeto (programa traduzido para a linguagem de máquina) que
é produzido por um compilador pode ser executado várias vezes sem a necessidade de re-compilação.
• Todo programa interpretado deve re-executar todo o processo de interpretação independentemente de ter havido ou não modificações no seu código fonte.
• Um programa que já tenha sido compilado uma vez tende a ser executado mais rapidamente que um programa que precise ser interpretado (que sempre terá que executar o processo de interpretação completo).
• Linguagens compiladas: C, Fortran, Pascal, Assembler, Java.
• Linguagens Interpretadas: PHP, Javascript, Python, Perl.
Exemplo da aulaProblema: Ler um valor de temperatura em Fahrenheit e calcular o seu valor correspondente em Celsius e, depois, apresentar esse valor ao usuário. Um problema de física!
Vamos especificar as fases do problema e encaixar essas fases em uma representação de algoritmo das que detalhamos até agora (descrição narrativa ou fluxograma)
Fórmula
Exemplo da aula
Quais seriam as fases do problema (entrada, processamento e saída) e como ficaria a representação desse algoritmo em descrição narrativa e usando fluxograma?
Entrada:
Processamento:
Saída:
Exercícios1. Escolha dois exemplos do seu cotidiano que poderiam ser descritos fazendo uso de algoritmos e represente esses exemplos através de descrição narrativa e de fluxograma.
2. Identifique as fases de cada um dos problemas abaixo e depois, represente cada um dos problemas usando um fluxograma:
• Calcular e exibir a média ponderada de duas notas dadas, de tal forma que a nota1 tenha peso 6 e a nota2 tenha peso 4.
• Reajustar um salário inicial em 15 %1
• Calcular o desconto de 23% sobre o preço de um produto
• Checar se um determinado número fornecido pelo usuário é positivo (maior do que zero) ou negativo (menor do que zero). Imprima como resultado, as palavras “positivo” ou “negativo”, conforme o caso.
3. Com suas palavras, quais seriam as diferenças entre um compilador e um interpretador?
4. Qual a diferença entre algoritmo e programa?