26
Programação Modular Prof. Gláucya Boechat [email protected]

Programação Modular - dca.fee.unicamp.brglaucya/ifsp/EDI/EDI_ProgramaçãoModular.pdf · – O tipo do resultado de saída é do tipo void – No retorno do tipo void não é necessário

  • Upload
    lecong

  • View
    215

  • Download
    0

Embed Size (px)

Citation preview

Programação Modular

Prof. Gláucya [email protected]

2

Modularização ou Sub-rotinasModularização ou Sub-rotinas

● É o processo de dividir o algoritmo em partes ou módulos que executam tarefas específicas.– Cada tarefa é representada por um módulo,

– Um módulo é um grupo de comandos, constituindo um trecho de algoritmo,

● A função deve ser bem definida e o mais independente possível em relação ao resto do algoritmo.

● Os procedimentos ou funções são blocos de programa que executam determinada tarefa.

3

Modularização ou Sub-rotinasModularização ou Sub-rotinas● SintaxeTipo-de-retorno Nome_do_módulo(lista de parâmetros)

{

corpo do módulo

retorno

}

● Nome do módulo: Segue a mesma regra de nome de variáveis

● Lista de parâmetros: Tipos e nomes das variáveis

● Corpo: Instruções que realizam a operação pretendida.

● Retorno: Valor que o módulo retorna para a parte do programa que fez a chamada

4

MóduloMódulo

● Cada módulo pode definir as próprias estruturas de dados, suficientes e necessárias apenas para atingir o objetivo final do módulo.

● Um módulo é constituído por uma sequência de comandos que operam sobre um conjunto de objetos, que podem ser globais ou locais.

5

Objetos globais e locaisObjetos globais e locais

● Objetos globais– Entidades declaradas em módulos mais externos

ou no mesmo nível do módulo principal.● Objetos globais podem ser usadas em módulos

internos.

● Objetos locais– Entidades que só podem ser usadas no módulo

do algoritmo onde foram declaradas.● Estes objetos não possuem qualquer significado fora

deste módulo.

6

Objetos globais e locaisObjetos globais e locais

● Exemplo de objetos– Variáveis,

– Arquivos,

– Outros módulos, etc.

7

Chamada a um móduloChamada a um módulo

● Quando o módulo é chamado, o programa executa o corpo do módulo.

● Após o fim da execução do módulo, a execução segue no ponto da sua chamada.

● O programa principal pode chamar qualquer quantidade de módulos– Um módulo pode chamar outros módulos

//Chamada do módulo sqrt

c = sqrt(a*a + b+b);

8

MódulosMódulos

9

ObjetivosObjetivos

● Evitar que uma sequência de comandos necessária em vários locais de um algoritmo tenha que ser escrita varias vezes;

● Quebrar e estruturar o problema em pequenas partes gerenciáveis– Método: Dividir para conquistar.

● Facilitar o desenvolvimento, leitura e entendimento dos algoritmos.– A divisão de um algoritmo em módulos, além de facilitar a

sua elaboração, permite uma melhor documentação e verificação de sua coerência

10

Exemplo - MódulosExemplo - MódulosMódulo (Cálculo das vantagens)

salarioBruto = nHoras * salarioHora

salarioFamilia = nFilhos * valorPorFilho

vantagnes = salarioBruto + salarioFamilia

fim módulo

Módulo (Cálculo das deduções)

INSS = salarioBruto * 0,08

IRPF = salarioBruto * taxa

deduções = INSS + IRPF

fim módulo

11

ExemploExemplo

● Diagrama hierárquico

Módulo vantagens

Módulo deduções

Módulo principal

12

ProcedimentoProcedimento

● Procedimentos são módulos de programas, capazes de executar uma tarefa.

● Dentro do procedimento podem ser utilizadas tanto variáveis locais quanto variáveis globais.

● Todas as variáveis locais aos procedimentos são alocadas somente quando o procedimento entra em execução– E estas são liberadas quando o procedimento termina.

● Exemplo

ordenaVetor(vetor);soma(x,y)

13

Procedimento na linguagem CProcedimento na linguagem C

● Na linguagem C um procedimento é implementado por uma função que não retorna valor.– O tipo do resultado de saída é do tipo void

– No retorno do tipo void não é necessário utilizar a instrução return.

– Return é usado quando existe a necessidade de abandonar a função.

● Neste caso usa-se return sem expressão.

14

Procedimento na linguagem CProcedimento na linguagem C

void Nome_do_módulo(lista de parâmetros)

{

// corpo do módulo

}

15

Exemplo de procedimento em CExemplo de procedimento em C

void troca (int *x, int *y){

/* Variável local*/ int temp;

temp = *x;*x = *y;*y = temp

}

/*Chamada da função*/

void main(){

int a,b;

scanf(“%d %d”,&a,&b);

troca(&a,&b);

printf(“a:%d b:%d”,a,b);}

16

Compillar e executar programas em CCompillar e executar programas em C

● Compilar– Linux

$ gcc meuCodigo.c -o executavel

– Windows

>gcc -o executavel meuCodigo.c

● Executar– Linux

$ ./executavel

– Windows

>executavel

17

FunçãoFunção

● Funções são módulos similares aos procedimentos, – Entretanto as funções retornam um valor após

cada chamada.

● Uma função não deverá simplesmente ser chamada, como no caso dos procedimentos,– O retorno da função deve ser atribuída à uma

variável.

18

Função em CFunção em C

Tipo-de-retorno Nome_do_módulo(lista de parâmetros)

{

//corpo do módulo

retorno valor_de_retorno;

}

19

Exemplo de Função em CExemplo de Função em C

int Sqr(int x){x = x*x;return(x);

}

/*Exemplo de chamada da função*/

void main(){int num = 10;

int num2;

num2 = Sqr(num);printf(“%d”,num2);

}

20

Escopo de variáveisEscopo de variáveis

● Denota a visibilidade (conhecimento e aplicações) de uma variável perante os diversos módulos do algoritmo.

● Uma variável é global a todos os módulos hierarquicamente inferiores

● Uma variável é local quando é visível apenas em seu contexto – E não aos módulos hierarquicamente superiores.

● Parâmetros Formais– Variáveis locais de uma função que são inicializadas no

momento da chamada da função

21

Variável Global e LocalVariável Global e Local● Exemplo

#include <stdio.h>

void Total(int x);void Mostra();

/* Variável global*/int soma;

int main (void){ int i; /* Variável local*/ soma = 0;

for(int i=1;i<10;i++){Total(i);Mostra();

} return 0;}

/* parâmetro formal*/void Total(int x){ soma = soma + x;}

void Mostra(){

int i;

for(i=0;i<20;i++) printf("-"); printf("\nSoma parcial : %d ",soma);}

Saída:-------------------- Soma parcial : 0 -------------------- Soma parcial : 1

…-------------------- Soma parcial : 45

22

Passagem de parâmetrosPassagem de parâmetros

● Um parâmetro (argumento) define como uma variável pode ser passada para um módulo.

// Móduloint soma(int parametro1, int parametro2){

return parametro1 + parametro2;}

// Chamada do móduloint resultado;int variavel1 = 40;int variavel2 = 10;

Resultado = soma(variavel1 , variavel2);

23

Passagem por valorPassagem por valor

● Esse método copia o valor de um argumento no parâmetro formal do módulo (sub-rotina).– Assim, as alterações feitas nos parâmetros do

módulo não têm nenhum efeito nas variáveis usadas para chamá-la

– Exemplo

int val = 5;parOuImpar(val);

24

Passagem por valorPassagem por valor

#include <stdio.h>

int Sqr(int x);

int main (void){

int num = 10;

int num2 = Sqr(num); /* chamada por valor */

printf("%d , %d\n",num,num2); return 0;

}

int Sqr(int x){

x = x*x;return(x);

}

Saída:

10, 100

25

Passagem por referênciaPassagem por referência

● Nesse método, o endereço de um argumento não é copiado no parâmetro.– Dentro do módulo, o endereço é usado para

acessar o argumento real utilizado na chamada.

– Isso significa que alterações feitas no parâmetro afetam a variável usada para chamar a rotina.

– A variável de referência é um apontador (endereço) para outra variável (variável referenciada)

26

Passagem por referênciaPassagem por referência

#include <stdio.h>

int Sqr(int *x);

int main (void){ int num = 10;

int num2 = Sqr(&num); // chamada por referência

printf("%d , %d\n",num,num2); return 0;

}

int Sqr(int *x){

*x = *x * *x;return(*x);

}

Saída:

100, 100