210 likes | 345 Views
PROGRAMAÇÃO IMPERATIVA Modularização de Programas. IGOR LEONARDO ELOY MACEDO. Apresentação. Introdução Subprogramas Procedimento Função Parâmetros Escopo de variáveis Exemplo Prático Conclusão. Modularização de programas Introdução. Custo; Dividir para simplificar;
E N D
PROGRAMAÇÃO IMPERATIVAModularização de Programas IGOR LEONARDO ELOY MACEDO
Apresentação • Introdução • Subprogramas • Procedimento • Função • Parâmetros • Escopo de variáveis • Exemplo Prático • Conclusão
Modularização de programasIntrodução • Custo; • Dividir para simplificar; • Dividir para reaproveitar; • Conceito:
Programa "Exemplo“ variáveis x, y, aux, fatX, fatY, fatSub, sub, resultado : Inteiro Início x <- Entrada y <- Entrada se (x >= 0 e y >= 0) então inicio se (x < y) então início//ordenação decrescente aux <- x x <- y y <- aux fim se ... Resultado <- fatX / (fatY * fatSub) Saida <- Resultado fim se senão saída <- "Dados Inadequados" Fim programa f(x) = x! / y! * (x - y)! ; se x >= y f(x) = y! / x! * (y - x)! ; se x < y fatX <- 1 enquanto (x > 1)//fatorial de X início fatX <- fatX * x x <- x - 1 fim enquanto fatY <- 1 enquanto (y > 1)//fatorial de Y início fatY <- fatY * y y <- y - 1 fim enquanto sub <- x - y fatSub <- 1 enquanto (sub > 1)//fatorial de (X - Y) início fatSub <- fatSub * sub sub <- sub - 1 fim enquanto
Modularização de programasSubprogramas • Módulos de programas = Sub-algoritmos = sub-rotinas; • Hierarquia • Reutilização de algoritmos ≠ repetição de algoritmos; • Legibilidade; • Procedimentos; • Funções;
Modularização de programasSubprogramas - Procedimentos • Subprograma sem retorno de valor; • Interrompe a execução do programa que o invoca até o seu encerramento; ProcedimentoNomeProcedimento //variáveis Início //instruções Fim
Modularização de programasSubprogramas - Procedimentos Programa "Exemplo“ variáveis x, y, aux, fatX, fatY, fatSub, sub, resultado : Inteiro Início x <- Entrada y <- Entrada se (x >= 0 e y >= 0) então inicio se (x < y) então início//ordenação decrescente aux <- x x <- y y <- aux fim se ... Resultado <- fatX / (fatY * fatSub) Saida <- Resultado fim se senão saída <- "Dados Inadequados" Fim programa Procedimento OrdenaDecrescente() Inicio se (x < y) então início//ordenação decrescente aux <- x x <- y y <- aux fim se Fim procedimento Ordenadecrescente
Modularização de programasParâmetros • Canais de comunicação entre programas e subprogramas; • Facilitam a reutilização de algoritmos; • Os parâmetros são variáveis, e estas se restringem a dois tipos de escopo • Escopo global; • Escopo local; • Os parâmetros são passados de duas formas: • Por valor; • Por referência;
Modularização de programasParâmetros f(x) = x! / y! * (x - y)! ; se x >= y Programa "Exemplo“ variáveis x, y, fatX, fatY, fatSub, sub, resultado : Inteiro Procedimento Ordenadecrescente(var a : Inteiro; var b : Inteiro) Início x <- Entrada y <- Entrada se (x >= 0 e y >= 0) então inicio Ordenadecrescete(x, y) ... Resultado <- fatX / (fatY * fatSub) Saida <- Resultado fim se senão saída <- "Dados Inadequados" Fim programa f(x) = y! / x! * (y - x)! ; se x < y Procedimento Ordenadecrescente(var a : Inteiro; var b : Inteiro) Variáveis aux : Inteiro Inicio se (a < b) então início//ordenação decrescente aux <- a a <- b b <- aux fim se Fim procedimento
Modularização de programasSubprogramas - Funções • Semelhante ao procedimento, porém retorna valores ao final de sua execução; • Seu conceito é originário da matemática • f(x) = x^2 + x - 8 FunçãoNomeFunção : ValorRetornado //variáveis Início //instruções Fim
Programa "Exemplo“ variáveis x, y, aux, fatX, fatY, fatSub, sub, resultado : Inteiro Procedimento Ordenadecrescente(var a : Inteiro; var b : Inteiro) ... Início x <- Entrada y <- Entrada se (x >= 0 e y >= 0) então inicio OrdenaDecrescente(x, y) ... Resultado <- fatX / (fatY * fatSub) Saida <- Resultado fim se senão saída <- "Dados Inadequados" Fim programa fatX <- 1 enquanto (x > 1)//fatorial de X início fatX <- fatX * x x <- x - 1 fim enquanto fatY <- 1 enquanto (y > 1)//fatorial de Y início fatY <- fatY * y y <- y - 1 fim enquanto sub <- x - y fatSub <- 1 enquanto (sub > 1)//fatorial de (X - Y) início fatSub <- fatSub * sub sub <- sub - 1 fim enquanto Fatorial(x) Função Fatorial(a : inteiro) : Inteiro variáveis resultado : Inteiro Início resultado ← 1 enquanto (resultado > 1) início resultado ← resultado * a a ← a - 1 fim RETORNA resultado Fim//Função Fatorial(Y) Fatorial(x-y)
Programa "Exemplo“ variáveis x, y, aux, fatX, fatY, fatSub, sub, resultado : Inteiro Procedimento Ordenadecrescente(var a : Inteiro; var b : Inteiro) ... Função Fatorial(a : inteiro) : Inteiro ... Início x <- Entrada y <- Entrada se (x >= 0 e y >= 0) então inicio OrdenaDecrescente(x, y) fatX <- Fatorial(x) fatY <- Fatorial(y) fatSub <- Fatorial(x - y) Resultado <- fatX / (fatY * fatSub) Saida <- Resultado fim se senão saída <- "Dados Inadequados" Fim programa
Modularização de programasExemplo Prático Programa “Exemplo” variáveis x, y : Inteiro Início x ← Entrada y ← Entrada se (x >= 0 e y >= 0) então Início OrdenaDecrescente(x , y) Saída ← CalculaResultado(x, y) Fim //Se Senão Saída ← “Dados inadequados” Fim//programa f(x) = x! / y! * (x - y)! ; se p >= q f(x) = y! / x! * (y - x)! ; se p < q
Modularização de programasConclusão • A decomposição de um problema é fator determinante para a redução de sua complexidade; • Além disso fatores como legibilidade, manutenção do algoritmo e flexibilidade são destacados pela modularização;
Principais Referências Bibliográficas • Melo, Ana Cristina Vieira; Silva, FlávioSoaresCorrêa.Princípios de Linguagens de Programação.Brasil: Edgard Blücher, 2003. • Trembley, Jean-Paul; Bunt, Richard B. Ciência dos Computadores (UmaAbordagemAlgoritmica). Brasil: Makron Books, 1983. • Sebesta, Robert W. Conceitos de Linguagens de Programação. Brasil: Bookman, 2002. • Araújo, FlávioLouzada – Modularização ou sub-rotinas.Disponível em: < http://www.faculdadefortium.com.br/flavio_louzada/material/1939.pdf >. Acessado em: 11/10/2008. • Baioco, Gisele Busichia – Modularização de Programas (Conceitosfundamentais).Disponível em: < http://www.faculdadefortium.com.br/flavio_louzada/material/1939.pdf >. Acessado em: 11/10/2008.
Agradecimentos • À platéia presente • À banca examinadora
Modularização de programasExemplo Prático Procedimento OrdenaDecrescente(var a : inteiro; var b : inteiro) variáveis c : Inteiro Início se (a < b) então Início c ← a a ← b b ← c Fim //Se Fim//procedimento
Modularização de programasExemplo Prático Função CalculaValor(a : inteiro; b : inteiro) : Inteiro variáveis resultado : Inteiro Início resultado ← (Fatorial(a) / (Fatorial(b) * Fatorial(a-b)) RETORNA resultado Fim//Função
Modularização de programasExemplo Prático Função Fatorial(a : inteiro) : Inteiro variáveis resultado : Inteiro Início resultado ← 1 enquanto (resultado > 1) início resultado ← resultado * a a ← a - 1 fim RETORNA resultado Fim//Função