A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

PROGRAMAÇÃO ESTRUTURADA (MODULARIZAÇÃO/SUBPROGRA MAÇÃO) Fabíola Gonçalves UNIVERSIDADE FEDERAL DE UBERLÂNDIA ENGENHARIA CIVIL.

Apresentações semelhantes


Apresentação em tema: "PROGRAMAÇÃO ESTRUTURADA (MODULARIZAÇÃO/SUBPROGRA MAÇÃO) Fabíola Gonçalves UNIVERSIDADE FEDERAL DE UBERLÂNDIA ENGENHARIA CIVIL."— Transcrição da apresentação:

1 PROGRAMAÇÃO ESTRUTURADA (MODULARIZAÇÃO/SUBPROGRA MAÇÃO) Fabíola Gonçalves UNIVERSIDADE FEDERAL DE UBERLÂNDIA ENGENHARIA CIVIL

2 R OTEIRO Introdução; Escopo das variáveis; Passagem de parâmetro; Argumentos; Função. 2

3 MODULARIZAÇÃO INTRODUÇÃO Característica fundamental da programação estruturada:  Modular a resolução do problema através da sua divisão em subproblemas menores e mais simples;  Neste processo, cada subproblema pode ser analisado de forma individual e independente dos demais. Objetivo:  Facilitar o trabalho com problemas complexos;  Permitir a reutilização de módulos. Com a modularização de um programa, as partes que o compõem podem ser desenvolvidas por diferentes equipes. 3

4 MODULARIZAÇÃO INTRODUÇÃO Refinamentos Sucessivos (top-down):  Divisão do problema inicial em subproblemas, e estes em partes ainda menores, sucessivamente, até que cada parte seja descrita através de um algoritmo claro e bem-definido. Um algoritmo que resolve um determinado subproblema é denominado subalgoritmo. 4

5 MODULARIZAÇÃO SUBALGORITMOS (MÓDULOS) A subprogramação é uma ferramenta que contribui com a tarefa de programar:  Favorecendo a estruturação do programa;  Facilitando a correção do programa;  Facilitando a modificação do programa;  Melhorando a legibilidade do programa;  Divisão do problema a ser resolvido em partes (modularização). 5

6 MODULARIZAÇÃO SUBALGORITMOS (MÓDULOS) Por convenção, um subalgoritmo deve ser declarado acima dos módulos que o chamam; Todo subalgoritmo tem por objetivo a resolução de um determinado subproblema; Portanto, mantém as mesmas características de um algoritmo comum:  Pode ter dados de entrada;  Dados de saída; e  Conter qualquer tipo de comando aceito por um algoritmo. 6

7 SUBPROGRAMAÇÃO As linguagens de programação oferecem algum tipo de suporte à subprogramação. Exemplos:Algol: bloco;  FORTRAN: subrotina;  Modula: co-rotinas;  ADA: tarefas;  C: funções;  Visualg: procedimentos e funções.  Pascal: procedimentos e funções.

8 SUBPROGRAMAÇÃO Procedimentos Procedimento é uma forma de criar um sub-programa;  Quando um determinado conjunto de instruções tiver que ser repetido dentro da solução de um problema, é conveniente colocá-lo dentro de um procedimento;  Para se criar um procedimento é necessário: Um identificador ( o nome do procedimento );  Uma lista de parâmetros (que possibilitam a comunicação entre o programa principal e o procedimento);  As ações a serem executadas (que formam o corpo do procedimento). 8

9 SUBPROGRAMAÇÃO Funções Função também é uma forma de criar um sub- programa; A função deve obrigatoriamente retornar um valor processado através do seu nome identificador; Uma função deve ser ativada em um contexto de expressão. 9

10 S UBALGORITMOS (M ÓDULOS ) E SCOPO DAS V ARIÁVEIS Por serem tratados de forma independente dos demais módulos, cada subalgoritmo só pode manipular variáveis/constantes:  Globais: declaradas no início do algoritmo principal ; Fora de todas as funções; Elas são conhecidas e podem ser alteradas por todas as funções do programa.  Locais: declaradas no próprio subalgoritmo; Só têm validade dentro do bloco no qual são declaradas. 10

11 SUBALGORITMOS (MÓDULOS) PASSAGEM DE PARÂMETRO A passagem de parâmetros é o meio de comunicação entre as unidades de um programa, pode acontecer com um dos seguintes propósitos:  apenas fornecer um valor para que a subrotina realize um processamento;  apenas retornar um valor processado pela subrotina;  fornecer um valor para processamento pela subrotina, e também ser responsável pelo retorno de um valor processado. 11

12 SUBALGORITMOS (MÓDULOS) PASSAGEM DE PARÂMETRO Existem duas formas de interagir com subalgoritmos:  Explícita : quando a troca é feita através de argumentos. Existem 2 modos de passar argumentos/parâmetros para um subalgoritmo: Por valor: o argumento será uma variável independente, ou seja, ocupará um espaço na memória durante a execução do módulo. Qualquer alteração no argumento, não afeta a variável. Por referência: o argumento não ocupará espaço de memória, pois utilizará o espaço já alocado pela variável. Qualquer alteração realizada no subalgoritmo afetará a variável. 12

13 SUBALGORITMOS (MÓDULOS) PASSAGEM DE PARÂMETRO Existem duas formas de interagir com subalgoritmos:  Implícita : quando a troca é feita pela utilização de variáveis globais. Esta forma funciona de modo similar à passagem de argumentos por referência, pois não necessita de nova alocação de memória e qualquer alteração realizada durante a execução do módulo afeta o conteúdo da variável para os demais módulos. 13

14 PASSAGEM DE PARÂMETROS Passagem por valor : Apenas o valor é transferido. Então, as alterações feitas nos parâmetros formais (da subrotina) não alteram os reais (unidade ativadora). Por referência : O endereço do parâmetro real é transferido. Então, as alterações nos parâmetros formais da subrotina na verdade estão sendo feitas sobre os parâmetros reais. Declaração

15 PASSAGEM DE PARÂMETROS POR VALOR Quando e porque passagem por valor:  apenas fornecer um valor à subrotina para que ela realize um determinado processamento;  utilizados somente para “valores de entrada”;  protegem automaticamente o parâmetro real;  deve ser explorado sempre que possível.

16 PASSAGEM DE PARÂMETROS POR REFERÊNCIA Quando e porque passagem por referência :  Quando e porque passagem por : quando a unidade ativada (subrotina) necessitar retornar um valor a ser utilizado pela unidade ativadora;  seu uso deve ser cuidadoso.

17 S UBALGORITMOS (M ÓDULOS ) A RGUMENTOS Na escrita de um subalgoritmo, os dados necessários para a resolução do subproblema podem ser informados na declaração do módulo. Ex:  real expoente( real BASE, int FATOR)  resultado ← expoente(NRO, EXP); 17

18 SUBALGORITMOS (MÓDULOS) FUNÇÕES Sintaxe: tipo_retornado nome_funcao (tipo arg1, tipo arg2,..., tipo argN) inicio fim fim-funcao inicio var ← nome_funcao(var1, var2,..., varN); fim 18

19 SUBPROGRAMA Um subprograma pode ser ativado em qualquer parte do programa (em algumas linguagens somente depois de definido); Sua ativação se dá através do uso de seu identificador como uma instrução;

20 SUBALGORITMOS (MÓDULOS) FUNÇÕES Exemplo: int Square (int a) inicio return(a*a); fim inicio int num; escreva("Entre com um numero: "); leia (num); num <- Square(num); escreva("O seu quadrado vale: ", num); fim 20

21 SUBPROGRAMAÇÃO Exemplo de aplicação: Fazer um algoritmo para calcular a combinação (análise combinatória) de N elementos tomados P a P. Sabe-se que isto é possível através da seguinte expressão:

22 SUBPROGRAMAÇÃO A solução deste problema pelos métodos vistos até agora (sem o uso da subprogramação) teria N e P como argumentos de entrada e C como argumento de saída; Seriam necessários os seguintes passos:  Calcular o fatorial de N (armazenar numa variável, ex: FatN);  Calcular o fatorial de P (armazenar numa segunda variável, ex: FatP);  Calcular o fatorial de N-P (armazenar numa terceira variável, ex:FatNP);  E finalmente calcular a expressão: FatN/(FatP*FatNP).

23 SUBPROGRAMAÇÃO Note que nesta solução teríamos que descrever várias vezes uma mesma sequência de ações que são utilizadas para o cálculo do fatorial de um número; Esta sequência tem um comportamento padrão. Suponha que tivéssemos à disposição um procedimento genérico, chamado FAT, para calcular o fatorial de um número qualquer :.....

24

25 SUBPROGRAMAÇÃO Uma subrotina é um subprograma com variáveis e comandos próprios e que, para ser executada, precisa ser chamada pelo programa principal.  Existem dois tipos de subrotinas:  Procedimento ( procedure )  Função ( function ) Diferença entre elas:  A função retorna um valor  O procedimento não retorna valor

26 E XERCÍCIOS 1. Crie um programa que leia três números. Para cada número, imprima o dobro. Use uma função que recebe como parâmetro um número inteiro e devolve o seu dobro. O valor calculado deve ser impresso na função principal. 2. Faça um programa receba dois números e execute as seguintes funções:  Verificar se o número digitado é positivo ou negativo. Sendo que o valor de retorno será 1 se positivo, 0 se negativo ou -1 se for igual a 0.  Receber dois números inteiros positivos por parâmetro e retorne a soma dos N números inteiros existentes entre eles. 26

27 E XERCÍCIOS 3. Faça uma função que receba por parâmetro dois valores X e Z. Calcule e retorne o resultado de X^Z para o programa principal. Atenção não utilize nenhuma função pronta de exponenciação. 4. Crie um programa que receba a nota de 10 alunos obtida ao longo do semestre (foram realizadas quatro avaliações). Elabore funções para:  Calcular a média aritmética de todos os alunos;  Indicar o aluno que deverá fazer recuperação, ou seja, aqueles com média inferior a 6.  Dica: Opção 1 – ler as 10 notas dentro a função de média (sejam em variáveis ou vetor); Opção 2 – criar 10 variáveis no programa principal e passar como argumento; Opção 3 – ler um vetor de tamanho 10 e passar o vetor como parâmetro para a função. 27

28 REFERÊNCIAS Martins, L. G. A., Silva, A. J. Introdução à Algoritmos. Apostila da FACOM-UFU. 28


Carregar ppt "PROGRAMAÇÃO ESTRUTURADA (MODULARIZAÇÃO/SUBPROGRA MAÇÃO) Fabíola Gonçalves UNIVERSIDADE FEDERAL DE UBERLÂNDIA ENGENHARIA CIVIL."

Apresentações semelhantes


Anúncios Google