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; Dividir para reaproveitar; Conceito: Programa "Exemplo“ f(x) = x! / y! * (x - y)! ; se x >= y variáveis f(x) = y! / x! * (y - x)! ; se x < y 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 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 PROGRAMAS SUBPROGRAMAS Módulos de programas = Sub-algoritmos = sub-rotinas; Hierarquia Reutilização de algoritmos ≠ repetição de algoritmos; Legibilidade; Procedimentos; Funções; MODULARIZAÇÃO DE PROGRAMAS SUBPROGRAMAS - PROCEDIMENTOS Subprograma sem retorno de valor; Interrompe a execução do programa que o invoca até o seu encerramento; Procedimento NomeProcedimento //variáveis Início //instruções Fim MODULARIZAÇÃO DE PROGRAMAS SUBPROGRAMAS - 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 Ordenadecrescente 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 MODULARIZAÇÃO DE PROGRAMAS PARÂ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 PROGRAMAS PARÂMETROS Programa "Exemplo“ variáveis x, y, fatX, fatY, fatSub, sub, resultado : Inteiro f(x) = x! / y! * (x - y)! ; se x >= y f(x) = y! / x! * (y - x)! ; se x < y Procedimento Ordenadecrescente(var a : Inteiro; var b : Inteiro) Início Procedimento Ordenadecrescente(var a : Inteiro; x <- Entrada var b : Inteiro) y <- Entrada Variáveis se (x >= 0 e y >= 0) então aux : Inteiro inicio Inicio Ordenadecrescete(x, y) se (a < b) então ... início//ordenação decrescente Resultado <- fatX / (fatY * fatSub) aux <- a Saida <- Resultado a <- b b <- aux fim se fim se senão Fim procedimento saída <- "Dados Inadequados" Fim programa MODULARIZAÇÃO DE PROGRAMAS SUBPROGRAMAS - 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ção NomeFunçã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 fatX <- 1 y <- Entrada enquanto (x > 1)//fatorial de X se (x >= 0 e y >= 0) então início inicio fatX <- fatX * x OrdenaDecrescente(x, y) x <- x - 1 fim enquanto ... FunçãoResultado Fatorial(a<-: inteiro) : Inteiro fatX / (fatY * fatSub) fatY <- 1 variáveis Saida <- Resultado enquanto (y > 1)//fatorial de Y resultado : Inteiro início Iníciofim se fatY <- fatY * y resultado senão← 1 y <- y - 1 enquanto (resultado > 1)Inadequados" saída <- "Dados fim enquanto início Fim programa sub <- x - y resultado ← resultado * a a←a-1 fatSub <- 1 fim enquanto (sub > 1)//fatorial de (X - Y) RETORNA resultado início Fim//Função fatSub <- fatSub * sub sub <- sub - 1 fim enquanto 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 PROGRAMAS EXEMPLO 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 PROGRAMAS CONCLUSÃ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ávio Soares Corrêa. Princípios de Linguagens de Programação. Brasil: Edgard Blücher, 2003. Trembley, Jean-Paul; Bunt, Richard B. Ciência dos Computadores (Uma Abordagem Algoritmica). Brasil: Makron Books, 1983. Sebesta, Robert W. Conceitos de Linguagens de Programação. Brasil: Bookman, 2002. Araújo, Flávio Louzada – Modularização ou subrotinas. Disponível em: < http://www.faculdadefortium.com.br/flavio_louzada/materia l/1939.pdf >. Acessado em: 11/10/2008. Baioco, Gisele Busichia – Modularização de Programas (Conceitos fundamentais). Disponível em: < http://www.faculdadefortium.com.br/flavio_louzada/materia l/1939.pdf >. Acessado em: 11/10/2008. DÚVIDAS AGRADECIMENTOS À platéia presente À banca examinadora MODULARIZAÇÃO DE PROGRAMAS EXEMPLO 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 PROGRAMAS EXEMPLO 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 PROGRAMAS EXEMPLO 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