Sei sulla pagina 1di 7

Modularizao

Introduo

Modularizao Funes

Uma das tcnicas mais utilizadas e vantajosas na confeco de programas grandes a Modularizao. A Modularizao consiste em um mtodo para facilitar a construo de grandes programas, atravs de sua diviso em pequenos mdulos ou rotinas. A Modularizao permite organizar o nosso programa de maneira que: Diferentes partes do programa possam ser independentes, sendo escritas e testadas separadamente. Trechos de cdigos possam ser reusados em diferentes partes do programa. Programas complexos possam ser montados a partir de unidades menores.

Prof Roberta Braga Trres

Modularizao
Introduo
Usando Modularizao na confeco de programas existir um Mdulo Principal, a partir do qual so chamados os Mdulos Auxiliares, ditos subprogramas ou sub-rotinas. Os Mdulos Auxiliares so blocos de cdigos com o propsito de realizar uma ao bem especfica. Os Mdulos (principal e auxiliares) comunicam-se entre si para realizar uma ao complexa. A chamada de um mdulo auxiliar corresponde ao desvio da execuo do programa. Quando a execuo do mdulo auxiliar finalizada, o controle retorna ao mdulo anterior (que pode ser o mdulo principal ou outro mdulo auxiliar). Em C os mdulos auxiliares (sub-programas) so chamados de FUNES (function).
Rotina CONSULTAR { <comandos> }

Modularizao
Introduo
Rotina CADASTRO { comando1; . comandoN; }.

Mdulos Auxiliares

int main () { cout << Escolha uma opcao: ; cin >> opcao; switch (opcao) { 1: cadastro; 2: consultar; } }

Mdulo Principal

Modularizao
Funes As funes dividem grandes tarefas de um programa em tarefas menores. Os programas em C geralmente consistem de vrias pequenas funes. A criao de funes evita a repetio de cdigo, de modo que um bloco de comandos que que se repete deve ser transformado em uma funo que, ento, ser chamada diversas vezes. Um programa bem estruturado deve ser pensado em termos de funes, e estas, por sua vez, podem (e devem, se possvel) esconder do corpo principal do programa detalhes ou particularidades de implementao. Em C, tudo feito atravs de funes. Funes

Modularizao

Uma funo um trecho de programa que rene um conjunto de comandos, que sero executados quando a funo for chamada. Principais caractersticas de uma funo: A funo pode ou no retornar um valor de um tipo especificado e este valor pode ser usado para vrios propsitos. obrigatrio atribuir o valor de retorno da funo a uma varivel, comando de sada ou expresso nos programas. Para cada funo, o seu valor de retorno ser o resultado de todo o processamento interno da funo.

Modularizao
Funes
Sintaxe: A forma geral para definir uma funo : tipo_retorno nome_da_funo (<parmetros>) { declarao de variveis corpo da funo } onde: Tipo_retorno o tipo de valor de retorno da funo. Nome_da_funo o identificador associado funo. Parmetros: so variveis especiais que servem como um ponto de comunicao entre um mdulo e outro.

Modularizao
Exemplo de Funo
Um programa para gerar linhas tracejadas na tela. #include <iostream.h> void LINHA() { int x; for (x=1; x<= 50; x++) cout << "-"; } int main() { Chamada ao LINHA(); mdulo auxiliar cout << "\nTESTE DE FUNO\n"; LINHA(); }

Mdulo Auxiliar

Mdulo Principal

Modularizao
Exemplo de Funo
Um programa para calcular o cubo de um nmero:
#include <iostream.h>;

Modularizao
Funes
Tipo de Retorno Uma funo pode ter como tipo de retorno os seguintes valores: Os tipos primitivos de dados: int, float, char. Os tipos estruturados: struct, vetor, string. void: usado quando a funo no retorna nenhum valor. Note que a rotina main tambm uma funo. Sua nica particularidade consiste em ser a funo automaticamente executada aps o programa ser carregado.

int CUBO(int N) { return N * N * N; }

Mdulo Auxiliar

int main() { int num; cout << Informe um numero: ; cin >> num; cout << O cubo e igual a << CUBO(num); }

Mdulo Principal

Prottipo da Funo O prottipo de uma funo em C representa a definio do cabealho da funo antes da funo main().

Modularizao
Exemplo de Prottipo da Funo
Um programa para gerar linhas tracejadas na tela. #include <iostream.h> void LINHA(); // exemplo de prottipo da funo int main() { LINHA(); cout << "\nTESTE DE FUNO\n"; LINHA(); } void LINHA() { int x; for (x=1; x<= 50; x++) cout << "-"; }

Modularizao
Funo sem retorno de valor
Calculo do Fatorial
#include <iostream.h> void fat (int n); // prottipo da funo /* Funo principal */ int main () { int n; cin >> n; fat(n); } /* Funo para imprimir o valor do fatorial */ void fat ( int n ) { int i; int f = 1; for (i = 1; i <= n; i++) { f = f * i; } cout << "Fatorial = << f; } (sem retorno de valor)

Modularizao
Funo com retorno de valor
Calculo do Fatorial
(com retorno de valor) #include <iostream.h> int fat (int n); // prottipo da funo Int main () { int n, r; cin >> n; r = fat(n); cout << "Fatorial = << r; // OU cout << Fatorial = << fat(n); } /* funcao para calcular o valor do fatorial */ int fat (int n) { int i; int f = 1; for (i = 1; i <= n; i++) { f = f * i; } return f; }

Modularizao
Variveis Globais e Locais
As variveis Globais so as variveis definidas no programa principal, sendo visveis em qualquer parte do programa. As variveis Locais so as variveis declaradas dentro de um mdulo auxiliar (sub-rotina), sendo que a mesma s pode ser manipulada dentro do mdulo que a declarou, no sendo visvel em nenhuma parte do programa. possvel ter variveis globais e locais com o mesmo nome, sendo que qualquer mudana no contedo da varivel local no afetar o contedo da varivel global, j que as variveis globais e locais possuem posies de memria totalmente diferentes. No exemplo anterior, as variveis N e R so declaradas no programa principal. So exemplos de variveis locais a funo main(). As variveis I e F esto declaradas dentro da funo FAT. Logo so variveis locais a esta funo.

Modularizao
Exemplo: Variveis Globais e Locais
#include <iostream.h> void Leitura_1(); void Leitura_2(); char nome[10]; int num; int main() { Leitura_1(); Leitura_2(); cout << "\nNome: << nome; cout << "\nNumero: << num; } void Leitura_1() { cout << "\n CARREGA VAR GLOBAL"; cout << "\nEntre com o nome: "; cin >> nome; num = 10; } void Leitura_2() { char nome[10]; int num; cout << "\nCARREGA VAR LOCAL "; cout << "\nEntre com o nome: "; cin >> nome; num = 5; cout << nome << num; }

Modularizao
Parmetros
Uma funo pode possuir parmetros/argumentos. Existem dois tipos de passagem de parmetro: Por Valor: onde o valor passado no alterado quando manipulado dentro da sub-rotina. O valor copiado para o parmetro. Qualquer alterao no contedo de um parmetro, dentro da sub-rotina no ser refletida na varivel original. Por Referncia: onde o valor passado, quando alterado dentro da subrotina, tambm altera o valor da varivel original. Neste caso, o endereo da varivel copiado no parmetro, fazendo com que a subrotina aponte para o mesmo endereo de memria. Tanto a varivel original, como o parmetro apontam para o mesmo endereo.

Modularizao
Parmetros por Valor
#include <iostream.h> int sqr(int x) { x = x*x; return x; } Int main() { int t = 10; cout << sqr(t) << t; // imprime 100, 10. A varivel t no tem seu valor alterado. } int main() { int i, j; i = 10; j = 20; Void swap(int *x, int *y) { int temp;

Modularizao
Parmetros por Referncia
#include <iostream.h>

temp = *x; // copia o contedo de x para temp *x = *y; // copia o contedo de y em x *y = temp; // copia o contedo de temp para y }

swap(&i, &j); // passa o endereo de i e j. }

Modularizao
Parmetros por Valor x por Referncia
O programa calcula a mdia aritmtica entre 2 notas. #include <iostream.h> void PorValor(int v); void PorReferencia(int *v); int main() { int a = 5; PorValor(a); cout << a; PorReferencia(&a); cout << a; } void PorValor(int v) {// no altera o valor v = v + 1; } void PorReferencia(int *v) {// altera o valor *v = *v + 1; }

Modularizao
Parmetros
Quando uma funo no tiver nenhum parmetro a receber, pode-se inserir a palavra void para expressar explicitamente esta situao. Ou simplesmente deixar os parnteses vazios. Nos exemplos abaixo, as duas situaes esto corretas. Exemplo
int main(void) { ... } int main() { ... }

Modularizao
Exemplo SEM Modularizao
O programa calcula a mdia aritmtica entre 2 notas.
#include <iostream.h> Int main() { float NOTA1,NOTA2,MEDIA; //le as notas cout << "Digite a primeira nota: "; cin >> NOTA1; cout << "Digite a segunda nota: "; cin >> NOTA2; //calcula a media MEDIA = (NOTA1 + NOTA2) / 2; // escreve o resultado cout << "Media = << MEDIA; }

Modularizao
Exemplo COM Modularizao
O programa calcula a mdia aritmtica entre 2 notas. #include <iostream.h> float NOTA1,NOTA2,MEDIA; void LER_DADOS() { // le as notas cout << "Digite a primeira nota: "; cin >> NOTA1; cout << "Digite a segunda nota: "; cin >> NOTA2; } void CALCULAR_MEDIA(void) { //calcula a media MEDIA = (NOTA1 + NOTA2) / 2; } void LISTAR_DADOS() { // escreve o resultado cout << "Media = << MEDIA; } int main() { LER_DADOS(); CALCULAR_MEDIA(); LISTAR_DADOS(); }

Mdulo Principal

Modularizao
Exemplo COM Modularizao e Parmetros
O programa calcula a mdia aritmtica entre 2 notas. #include <iostream.h> float NOTA1,NOTA2; void LER_DADOS() { // le as notas cout << "Digite a primeira nota: "; cin >> NOTA1; cout << "Digite a segunda nota: "; cin >> NOTA2; } float CALCULAR_MEDIA(void) { // calcula a media return (NOTA1 + NOTA2) / 2; } void LISTAR_DADOS(float M) { // escreve o resultado cout << "Media = << M; } int main() { float MEDIA; LER_DADOS(); MEDIA = CALCULAR_MEDIA(); LISTAR_DADOS(MEDIA); }

Exerccios

Modularizao
Exerccios
1. Faa um programa que calcule e mostre a rea das seguintes figuras geomtricas: tringulo, quadrado e crculo (pi * r2). Crie uma funo especfica para o clculo da rea de cada figura. O usurio deve selecionar o tipo de figura geomtrica que deseja obter a rea, a partir de um menu oferecido pelo programa. Faa um programa que: a) Tenha a funo PAR, que liste os nmeros pares entre 0 a 20. b) Tenha a funo IMPAR, que liste os nmeros mpares entre 0 a 20. O programa principal deve ter apenas as chamadas das funes. 3. Altere o programa da questo 2, de forma que o intervalo de valores seja informado pelo usurio e passado como parmetro para as funes. Crie a funo VALIDAR, que deve verificar se o intervalo de valores informado pelo usurio esta coerente (inicio < fim). Esta rotina deve ser ativada dentro das funes PAR e IMPAR.

Modularizao
Exerccios
4.

Faa um programa que contenha uma funo chamada REPLICA, que receba um caracter e o replica N vezes. O programa deve permitir que o usurio informe o caracter e a quantidade de vezes que o mesmo deve se repetir. Use apenas variveis locais. Faa um programa que mostre uma tela com as seguintes opes: 1. SOMA 2. DIVISO 3. MULTIPLICAO 4. Sair Cada uma das opes chamar uma funo com a devida funcionalidade. Para fins de clculo, estas operaes tero como base dois nmero inteiro N1 e N2, informados pelo usurio.

5.

2.

Modularizao
Exerccios
6. Faa uma funo que verifique se uma data vlida ou no, retornando os valores ZERO (data vlida) ou UM (data invlida). A rotina deve verificar se o dia est entre 1 e 31 e se o ms est entre 1 e 12. Os parmetros da funo so trs nmeros inteiros, correspondentes a dia, ms e ano da data a ser verificada. Faa uma funo que receba como parmetro dois nmeros inteiros A e B e calcule o MDC deles. A seguinte lgica deve ser seguida:
Se A > B ento A = A B. Se B > A ento B = B A. Este processo deve ser repetido enquanto A <> B. A funo deve retornar o valor contido no parmetro A.

7.

Potrebbero piacerti anche