170 likes | 260 Views
Algoritmos e Programação Estruturada Conceitos básicos. Prof. Cláudio M. N. A. Pereira cmnap@ien.gov.br. Sumário. Introdução Definições de algoritmo Programação estruturada Exemplo: seqüência de Fibonacci Formas de representação de um algoritmo. Introdução.
E N D
Algoritmos e Programação EstruturadaConceitos básicos Prof. Cláudio M. N. A. Pereira cmnap@ien.gov.br
Sumário • Introdução • Definições de algoritmo • Programação estruturada • Exemplo: seqüência de Fibonacci • Formas de representação de um algoritmo
Introdução A programação de computadores consiste em primeiro lugar, entender adequadamente o problema proposto. Em segundo, adotar critérios e métodos de algoritmização para então codificar o programa em na linguagem desejada. (Augusto Manzano)
Introdução Da declaração de Manzano, pode-se identificar 3 fases básicas envolvidas na programação: i) análise e entendimento do problema; ii) concepção da solução (criação do algoritmo); iii) implementação da solução (codificação em uma linguagem)
Definições de algoritmo - Um algoritmo é um possível caminho para a solução de um dado problema. Podem, entretanto haver vários possíveis algoritmos para resolver o mesmo problema. - É a descrição de um conjunto de instruções ou comandos que, se obedecidos, resultam numa sucessão de ações.
Programação estruturada • Algoritmos desenvolvidos através de refinamentos sucessivos, partido de descrições gerais que vão sendo gradativamente detalhadas (desenvolvimento top-down); • Os refinamentos sucessivos são módulos delimitam funcionalidade (funções) e devem ser o mais independentes possível;
Exemplo: Sequência de Fibonacci Problema: Faça um programa que escreva os termos da seqüência de Fibonacci menores do que L. Passo 1: Análise/entendimento do problema • O que é o raio dessa seqüência de Fibo... sei lá o quê? Como saber? • Parceiro do lado • Internet • Pesquisa / estudo
Sequência de Fibonacci: a Análise A seqüência de Fibonacci é uma sucessão de termos, onde o primeiro e o segundo são iguais a 1. Os demais são a soma dos dois termos exatamente anteriores. 1 1 2 3 5 8 13 21 34 ... Se entendeu bem, vai para o passo 2 (algoritmo), senão, volta e tenta entender o problema.
Sequência de Fibonacci: o Algoritmo Passo 2: Algoritmo Algoritmo Fibonacci Receba o valor de L se L > 1 então faça Processe até o segundo termo Processe os demais termos fim_se fim
Sequência de Fibonacci: o Algoritmo Refinamento de “Processe até o segundo termo” T_anterior = 1; T_atual = 1; escreva (T_anterior, T_atual); fim
Sequência de Fibonacci: o Algoritmo Refinamento de “Processe os demais termos” repita T_proximo = T_anterior + T_atual; se (T_proximo < L) então escreva (T_proximo); // Atualiza as posições T_anterior = T_atual; T_atual = T_proximo; até (T_proximo < L); fim_refinamento
Sequência de Fibonacci: o Algoritmo Algoritmo Fibonacci leia (L) se L > 1 então faça T_anterior = 1; T_atual = 1; escreva (T_anterior, T_atual); repita T_proximo = T_anterior + T_atual; se (T_proximo < L) então escreva (T_proximo); T_anterior = T_atual; T_atual = T_proximo; até (T_proximo < L); fim_se fim
Sequência de Fibonacci: o Algoritmo Algoritmo Fibonacci var T_anterior, T_atual, T_proximo, L : inteiro leia (L) se L > 1 então faça T_anterior = 1 T_atual = 1 escreva (T_anterior, T_atual) repita T_proximo = T_anterior + T_atual se (T_proximo < L) então escreva (T_proximo) T_anterior = T_atual T_atual = T_proximo até (T_proximo < L) fim_se fim
Sequência de Fibonacci: O Programa em C #include <stdio.h> #include <conio.h> void main() { int T_atual, T_anterior, T_proximo, L; // Recebendo (lendo) o valor de L printf("Entre com o valor limite (L): "); scanf("%d", &L); if (L>1) { // Processa até o segundo termo T_anterior = 1; T_atual = 1; printf(" %d %d", T_anterior, T_atual); // Processa os demais termos do { T_proximo = T_anterior + T_atual; if (T_proximo < L) printf(" %d", T_proximo); // Atualiza as posições T_anterior = T_atual; T_atual = T_proximo; } while (T_proximo < L); } }
Sequência de Fibonacci: O programa em Pascal program Fibonacci; uses crt; var T_atual, T_anterior, T_proximo, L: integer; begin {Recebendo (lendo) o valor de L} write('Entre com o valor limite (L): '); readln(L); if (L>1) then begin {Processa ate o segundo termo} T_anterior := 1; T_atual := 1; write(' ', T_anterior, ' ', T_atual); {Processa os demais termos} repeat T_proximo := T_anterior + T_atual; if (T_proximo < L) then write(' ', T_proximo); {Atualiza as posicoes} T_anterior := T_atual; T_atual := T_proximo; until (T_proximo >= L); end; end.
Formas de representação de um algoritmo • Fluxograma • Diagrama de Chapin • Pseudo-código (português estruturado)
Fluxograma Formas de representação de um algoritmo Início Leia L N L>1 Diagrama de Chapin Pseudo-código S T_anterior=1 T_atual=1 Leia L Algoritmo Fibonacci leia (L) se L > 1 então faça T_anterior = 1; T_atual = 1; escreva (T_anterior, T_atual); repita T_proximo = T_anterior + T_atual; se (T_proximo < L) então escreva (T_proximo); T_anterior = T_atual; T_atual = T_proximo; até (T_proximo < L); fim_se fim L>1 Escreva (T_atual,T_anterior) S N T_anterior=1 T_atual=1 Fim T_proximo=T_anterior+T_atual Escreva (T_atual,T_anterior) Repita N T_proximo<L T_proximo=T_anterior+T_atual) S T_proximo<L Escreva (T_proximo) S N Escreva (T_proximo) Fim T_anterior=T_atual T_atual=T_proximo T_anterior=T_atual T_atual=T_proximo Fim