introdu o a algoritmos e Ë l gica de programa...

21
Introdução a Algoritmos e À Lógica de Programação João Medeiros FATERN 2010.2

Upload: ngonga

Post on 17-Dec-2018

219 views

Category:

Documents


0 download

TRANSCRIPT

Introdução a Algoritmos e À Lógica de Programação

João Medeiros FATERN 2010.2

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:

Exemplo da aula

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?