Baixe o app para aproveitar ainda mais
Prévia do material em texto
Programac¸a˜o Modular ECO002 / ELT102 / ECA102 / ELE103 Profa.Thatyana de Faria Piola Seraphim (thatyana@unifei.edu.br) Prof.Enzo Seraphim (seraphim@unifei.edu.br) Prof.Rodrigo Maximiano Antunes de Almeida (rodrigomax@unifei.edu.br) Prof.Joa˜o Paulo Reus Rodrigues Leite (joaopaulo@unifei.edu.br) Prof.Carlos Henrique Vale´rio de Morais (valerio@unifei.edu.br) Profa.Cla´udia Eliane da Matta (claudia.matta@unifei.edu.br) Universidade Federal de Itajuba´ 18 de fevereiro de 2014 ECO002 / ELT102 / ECA102 / ELE103 Profa.Thatyana de Faria Piola Seraphim (thatyana@unifei.edu.br) Prof.Enzo Seraphim (seraphim@unifei.edu.br) Prof.Rodrigo Maximiano Antunes de Almeida (rodrigomax@unifei.edu.br) Prof.Joa˜o Paulo Reus Rodrigues Leite (joaopaulo@unifei.edu.br) Prof.Carlos Henrique Vale´rio de Morais (valerio@unifei.edu.br) Profa.Cla´udia Eliane da Matta (claudia.matta@unifei.edu.br)Programac¸a˜o Modular Programac¸a˜o Modular Sub-Rotinas Sub-Rotinas ou Subprogramas: sa˜o blocos de instruc¸o˜es que realizam tarefas espec´ıficas ; o co´digo de uma sub-rotina e´ carregado uma vez e pode ser executado quantas vezes for necessa´rio. Os programas tendem a ficar menores e mais organizados, uma vez que o problema pode ser dividido em pequenas tarefas. Definic¸a˜o de Sub-rotina Uma sub-rotina e´ um programa que podera´ efetuar diversas operac¸o˜es computacionais (entrada, processamento e sa´ıda). ECO002 / ELT102 / ECA102 / ELE103 Profa.Thatyana de Faria Piola Seraphim (thatyana@unifei.edu.br) Prof.Enzo Seraphim (seraphim@unifei.edu.br) Prof.Rodrigo Maximiano Antunes de Almeida (rodrigomax@unifei.edu.br) Prof.Joa˜o Paulo Reus Rodrigues Leite (joaopaulo@unifei.edu.br) Prof.Carlos Henrique Vale´rio de Morais (valerio@unifei.edu.br) Profa.Cla´udia Eliane da Matta (claudia.matta@unifei.edu.br)Programac¸a˜o Modular Programac¸a˜o Modular Sub-Rotinas Os programas sa˜o executados linearmente, uma linha apo´s a outra, ate´ o fim. Quando as sub-rotinas sa˜o utilizadas, e´ poss´ıvel a realizac¸a˜o de desvios na execuc¸a˜o natural dos programas. Os desvios sa˜o realizados quando uma func¸a˜o e´ chamada pelo programa principal. Um importante recurso apresentado nas linguagens de programac¸a˜o e´ a modularizac¸a˜o onde um programa pode ser particionado em sub-rotinas bastante espec´ıficas. A modularizac¸a˜o pode ser feita por meio de procedimentos ou func¸o˜es. ECO002 / ELT102 / ECA102 / ELE103 Profa.Thatyana de Faria Piola Seraphim (thatyana@unifei.edu.br) Prof.Enzo Seraphim (seraphim@unifei.edu.br) Prof.Rodrigo Maximiano Antunes de Almeida (rodrigomax@unifei.edu.br) Prof.Joa˜o Paulo Reus Rodrigues Leite (joaopaulo@unifei.edu.br) Prof.Carlos Henrique Vale´rio de Morais (valerio@unifei.edu.br) Profa.Cla´udia Eliane da Matta (claudia.matta@unifei.edu.br)Programac¸a˜o Modular Programac¸a˜o Modular Procedimentos Definic¸a˜o de Procedimento Um procedimento e´ um bloco de programa, contendo in´ıcio e fim e sera´ identificado por um nome atrave´s do qual sera´ referenciado em qualquer parte do programa principal ou do programa que chama a rotina. Quando uma sub-rotina e´ chamada por um programa ela e´ executada e ao seu te´rmino, o controle de processamento retorna automaticamente para a primeira linha de instruc¸a˜o apo´s a linha que efetuou a chamada da sub-rotina. ECO002 / ELT102 / ECA102 / ELE103 Profa.Thatyana de Faria Piola Seraphim (thatyana@unifei.edu.br) Prof.Enzo Seraphim (seraphim@unifei.edu.br) Prof.Rodrigo Maximiano Antunes de Almeida (rodrigomax@unifei.edu.br) Prof.Joa˜o Paulo Reus Rodrigues Leite (joaopaulo@unifei.edu.br) Prof.Carlos Henrique Vale´rio de Morais (valerio@unifei.edu.br) Profa.Cla´udia Eliane da Matta (claudia.matta@unifei.edu.br)Programac¸a˜o Modular Programac¸a˜o Modular Procedimentos Sintaxe procedimento <nome> (<param1:tipo1;. . .;paramn:tipon >) var <declarac¸a˜o das vara´veis locais> inicio <lista de comandos> fimprocedimento O procedimento e´ chamado escrevendo apenas seu nome no programa principal. Exemplo: um programa de calculadora que apresenta um menu de selec¸o˜es no programa principal. ECO002 / ELT102 / ECA102 / ELE103 Profa.Thatyana de Faria Piola Seraphim (thatyana@unifei.edu.br) Prof.Enzo Seraphim (seraphim@unifei.edu.br) Prof.Rodrigo Maximiano Antunes de Almeida (rodrigomax@unifei.edu.br) Prof.Joa˜o Paulo Reus Rodrigues Leite (joaopaulo@unifei.edu.br) Prof.Carlos Henrique Vale´rio de Morais (valerio@unifei.edu.br) Profa.Cla´udia Eliane da Matta (claudia.matta@unifei.edu.br)Programac¸a˜o Modular Programac¸a˜o Modular Procedimentos algoritmo “calculadora” var { Varia´vel do Programa Principal } opcao : inteiro procedimento rotSoma() var soma, a, b : real inicio escreval(“Rotina de Soma”) escreval(“Digite o valor de a = ”) leia(a) escreval(“Digite o valor de b = ”) leia(b) soma <– a + b escreval(“Soma = ”, soma) fimprocedimento procedimento rotSubtracao() var sub, a, b : real inicio escreval(“Rotina de Subtracao”) escreval(“Digite o valor de a = ”) leia(a) escreval(“Digite o valor de b = ”) leia(b) sub <– a - b escreval(“Subtracao = ”, sub) fimprocedimento ECO002 / ELT102 / ECA102 / ELE103 Profa.Thatyana de Faria Piola Seraphim (thatyana@unifei.edu.br) Prof.Enzo Seraphim (seraphim@unifei.edu.br) Prof.Rodrigo Maximiano Antunes de Almeida (rodrigomax@unifei.edu.br) Prof.Joa˜o Paulo Reus Rodrigues Leite (joaopaulo@unifei.edu.br) Prof.Carlos Henrique Vale´rio de Morais (valerio@unifei.edu.br) Profa.Cla´udia Eliane da Matta (claudia.matta@unifei.edu.br)Programac¸a˜o Modular Programac¸a˜o Modular Procedimentos procedimento rotMultiplicacao() var mult, a, b : real inicio escreval(“Rotina Multiplicacao”) escreval(“Digite o valor de a = ”) leia(a) escreval(“Digite o valor de b = ”) leia(b) mult <– a * b escreval(“Multiplicacao=”, mult) fimprocedimento procedimento rotDivisao() var divisao, a, b : real inicio escreval(“Rotina de Divisao”) escreval(“Digite o valor de a = ”) leia(a) escreval(“Digite o valor de b = ”) leia(b) divisao <– a / b escreval(“Divisao = ”, divisao) fimprocedimento ECO002 / ELT102 / ECA102 / ELE103 Profa.Thatyana de Faria Piola Seraphim (thatyana@unifei.edu.br) Prof.Enzo Seraphim (seraphim@unifei.edu.br) Prof.Rodrigo Maximiano Antunes de Almeida (rodrigomax@unifei.edu.br) Prof.Joa˜o Paulo Reus Rodrigues Leite (joaopaulo@unifei.edu.br) Prof.Carlos Henrique Vale´rio de Morais (valerio@unifei.edu.br) Profa.Cla´udia Eliane da Matta (claudia.matta@unifei.edu.br)Programac¸a˜o Modular Programac¸a˜o Modular Procedimentos {Programa Principal} inicio opcao <– 0 enquanto(opcao <> 5) faca escreval(“1 - Adicao”) escreval(“2 - Subtracao”) escreval(“3 - Multiplicacao”) escreval(“4 - Divisao”) escreval(“5 - Fim do programa”) escreval(“Escolha uma opcao”) leia(opcao) se(opcao = 1) entao rotSoma fimse se(opcao = 2) entao rotSubtracao fimse se(opcao = 3) entao rotMultiplicacao fimse se(opcao = 4) entao rotDivisao fimse fimenquanto fimalgoritmo ECO002 / ELT102 / ECA102 / ELE103 Profa.Thatyana de Faria Piola Seraphim (thatyana@unifei.edu.br) Prof.Enzo Seraphim (seraphim@unifei.edu.br) Prof.Rodrigo Maximiano Antunes de Almeida (rodrigomax@unifei.edu.br) Prof.Joa˜o Paulo Reus Rodrigues Leite (joaopaulo@unifei.edu.br) Prof.Carlos Henrique Vale´rio de Morais (valerio@unifei.edu.br) Profa.Cla´udia Eliane da Matta (claudia.matta@unifei.edu.br)Programac¸a˜o Modular Programac¸a˜o Modular Func¸o˜es Func¸a˜o: e´ um bloco de programa, contendo in´ıcio e fim. E´ identificada por um nome atrave´s do qual e´ referenciada em qualquer parte do programa principal. Diferenc¸a entre func¸a˜o e procedimento: a func¸a˜o retorna um determinado valor, e esse valor e´ retornado no pro´prionome da func¸a˜o. Sintaxe da Func¸a˜o funcao <nome>(<param1:tipo1;. . .;paramn:tipon >) <tipo> var <declarac¸a˜o das varia´veis locais> inicio <lista dos comandos> retorne <varia´vel para retorno> fimfuncao ECO002 / ELT102 / ECA102 / ELE103 Profa.Thatyana de Faria Piola Seraphim (thatyana@unifei.edu.br) Prof.Enzo Seraphim (seraphim@unifei.edu.br) Prof.Rodrigo Maximiano Antunes de Almeida (rodrigomax@unifei.edu.br) Prof.Joa˜o Paulo Reus Rodrigues Leite (joaopaulo@unifei.edu.br) Prof.Carlos Henrique Vale´rio de Morais (valerio@unifei.edu.br) Profa.Cla´udia Eliane da Matta (claudia.matta@unifei.edu.br)Programac¸a˜o Modular Programac¸a˜o Modular Func¸o˜es Paraˆmetros: teˆm por objetivo servir como um ponto de comunicac¸a˜o bidimensional entre uma sub-rotina e o programa principal. Atrave´s dos paraˆmetros e´ poss´ıvel passar valores de uma sub-rotina ou rotina chamadora a` outra sub-rotina e vice-versa. Exemplo Func¸a˜o que eleva ao cubo um determinado nu´mero informado pelo usua´rio. ECO002 / ELT102 / ECA102 / ELE103 Profa.Thatyana de Faria Piola Seraphim (thatyana@unifei.edu.br) Prof.Enzo Seraphim (seraphim@unifei.edu.br) Prof.Rodrigo Maximiano Antunes de Almeida (rodrigomax@unifei.edu.br) Prof.Joa˜o Paulo Reus Rodrigues Leite (joaopaulo@unifei.edu.br) Prof.Carlos Henrique Vale´rio de Morais (valerio@unifei.edu.br) Profa.Cla´udia Eliane da Matta (claudia.matta@unifei.edu.br)Programac¸a˜o Modular Programac¸a˜o Modular Func¸o˜es Exemplo: Func¸a˜o que eleva ao cubo um determinado nu´mero informado pelo usua´rio algoritmo “cubo” var { variavel do programa principal } num, x : real funcao cubo (n:real) : real var { variavel da funcao cubo } c : real inicio c <– n * n * n retorne (c) fimfuncao inicio { inicio programa principal } escreva(“Digite um valor para calcular o cubo = “) leia(num) x <– cubo(num) escreva(“O cubo de “, num, “ = “, x) fimalgoritmo ECO002 / ELT102 / ECA102 / ELE103 Profa.Thatyana de Faria Piola Seraphim (thatyana@unifei.edu.br) Prof.Enzo Seraphim (seraphim@unifei.edu.br) Prof.Rodrigo Maximiano Antunes de Almeida (rodrigomax@unifei.edu.br) Prof.Joa˜o Paulo Reus Rodrigues Leite (joaopaulo@unifei.edu.br) Prof.Carlos Henrique Vale´rio de Morais (valerio@unifei.edu.br) Profa.Cla´udia Eliane da Matta (claudia.matta@unifei.edu.br)Programac¸a˜o Modular
Compartilhar