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

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

PROGRAMAÇÃO ESTRUTURADA (MODULARIZAÇÃO/SUBPROGRAMAÇÃO)

Apresentações semelhantes


Apresentação em tema: "PROGRAMAÇÃO ESTRUTURADA (MODULARIZAÇÃO/SUBPROGRAMAÇÃO)"— Transcrição da apresentação:

1 PROGRAMAÇÃO ESTRUTURADA (MODULARIZAÇÃO/SUBPROGRAMAÇÃO)
UNIVERSIDADE FEDERAL DE UBERLÂNDIA ENGENHARIA CIVIL PROGRAMAÇÃO ESTRUTURADA (MODULARIZAÇÃO/SUBPROGRAMAÇÃO) Enfatizar melhor a passagem por valor e referencia quando estiver trabalhando com C. E apresentar funções recursivas. Aula 09 e lista 06 do Backes. Exceto exercicios 2, 3, 5 e 8. Fabíola Gonçalves

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

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.

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.

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).

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.

7 Exemplos:Algol: bloco;
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).

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.

10 Subalgoritmos (Módulos) Escopo das Variá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.

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.

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.

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.

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 Subalgoritmos (Módulos) Argumentos
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);

18 SUBALGORITMOS (MÓDULOS) FUNÇÕES
Sintaxe: tipo_retornado nome_funcao (tipo arg1, tipo arg2, ... , tipo argN) <declaração de variáveis/constantes locais> inicio <bloco de comandos> fim fim-funcao var ← nome_funcao(var1, var2, ... , varN);

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 int num; escreva("Entre com um numero: "); leia (num); num <- Square(num); escreva("O seu quadrado vale: ", num);

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 Exercícios 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. 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.

27 Exercícios 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. 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.

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


Carregar ppt "PROGRAMAÇÃO ESTRUTURADA (MODULARIZAÇÃO/SUBPROGRAMAÇÃO)"

Apresentações semelhantes


Anúncios Google