170 likes | 265 Views
Understand the basics of algorithms and structured programming concepts, with examples like the Fibonacci sequence. Learn the phases of programming, algorithm definitions, and representations through flowcharts, Chapin diagrams, and pseudocode.
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