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

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

Aula 22 Modularização 22/10/08.

Apresentações semelhantes


Apresentação em tema: "Aula 22 Modularização 22/10/08."— Transcrição da apresentação:

1 Aula 22 Modularização 22/10/08

2 Emmanuel Kayembe Ilunga
Introdução Um módulo nada mais é do que um grupo de comandos que constitui um trecho de algoritmo com uma função bem definida e o mais independente possível das demais partes do algoritmo. Cada módulo, durante a execução do algoritmo, realiza uma tarefa específica da solução do problema e, para tal, pode contar com o auxílio de outros módulos do algoritmo. Desta forma, a execução de um algoritmo contendo vários módulos pode ser vista como um processo cooperativo. 22/10/08 Emmanuel Kayembe Ilunga

3 Emmanuel Kayembe Ilunga
Vantagens Torna o algoritmo mais fácil de escrever. O desenvolvedor pode focalizar pequenas partes de um problema complicado e escrever a solução para estas partes uma de cada vez, ao invés de tentar resolver o problema como um todo; Torna o algoritmo mais fácil de ler. O fato do algoritmo estar dividido em módulos permite que alguém, que não seja o seu autor, possa entender os seus módulos separadamente; 22/10/08 Emmanuel Kayembe Ilunga

4 Emmanuel Kayembe Ilunga
Vantagens Economia de tempo, espaço e esforço. Freqüentemente, necessitamos executar uma mesma tarefa em vários lugares de um mesmo algoritmo. Uma vez que um módulo foi escrito, ele pode, como veremos mais adiante, ser “chamado” quantas vezes quisermos e de onde quisermos no algoritmo, evitando que escrevamos a mesma tarefa mais de uma vez no algoritmo, o que nos poupará tempo, espaço e esforço. 22/10/08 Emmanuel Kayembe Ilunga

5 Emmanuel Kayembe Ilunga
Módulo Principal O módulo principal organiza e coordena trabalho dos demais módulos O módulo principal solicita a execução dos vários módulos em uma dada ordem, os quais, antes de iniciar a execução, recebem dados do módulo principal e devolvem o resultado de suas computações. Até o momento nossos algoritmos eram compostos de um único módulo. Quando um algoritmo possui mais que um módulo, no momento em que desejamos que a sub-tarefa de um determinado módulo seja realizada, fazemos a referência ao módulo em vez de escrever todo o conjunto de instruções para realizá-la. 22/10/08 Emmanuel Kayembe Ilunga

6 Componentes de um módulo
Os módulos que estudaremos possuem dois componentes: corpo e interface. O corpo de um módulo é o conjunto de instruções que compõe o trecho de algoritmo correspondente ao módulo. Já a interface de um módulo pode ser vista como a descrição dos dados de entrada. O conhecimento da interface de um módulo é tudo o que é necessário para a utilização correta do módulo em um algoritmo. 22/10/08 Emmanuel Kayembe Ilunga

7 Componentes de um módulo
A interface de um módulo é definida pelo nome do módulo e seus respectivos parâmetros. O nome do módulo é um identificador para referenciar o módulo. Um parâmetro é um tipo especial de variável que permite que o valor de um dado possa ser passado entre os módulos e qualquer para que algoritmo o use. Um parâmetro pode ser considerado como os dados de entrada para que o módulo realize sua tarefa. Os parâmetros devem receber valores quando solicitarmos a execução de um módulo. 22/10/08 Emmanuel Kayembe Ilunga

8 Emmanuel Kayembe Ilunga
Tipos de Módulos Há dois tipos de módulos: Função: sempre retorna um e apenas um valor ao algoritmo que lhe chamou. Cada função tem associada ao seu valor de retorno um tipo explícito. Da mesma maneira com que os parâmetros são fixos para todas as chamada o retorno também é fixo. Ela pode ser vista como uma expressão que é avaliada para um único valor, sua saída, assim como uma função em Matemática. Procedimento: é um tipo de módulo usado para várias tarefas, não produzindo valores de saída, ou seja, nunca retornam valores. 22/10/08 Emmanuel Kayembe Ilunga

9 Emmanuel Kayembe Ilunga
Criando Funções Sintaxe em C: < tipo_de_retorno> < nome_da_função> ( parâmetro 1,..., parâmetro n) { //declaração das variáveis locais <seqüência de comandos> return <valor_de_retorno> ; } Uma função pode retornar ou não um valor e apenas um valor. O retorno de um valor em C é efetuado pela instrução return e é devolvido para o nome da função. 22/10/08 Emmanuel Kayembe Ilunga

10 Emmanuel Kayembe Ilunga
Exemplo Suponha que desejemos construir uma função para calcular o quadrado de um número. O número deve ser passado para a função, que calculará o seu quadrado e o devolverá para o algoritmo que a solicitou. int quadrado (int num) { int resultado; resultado = num * num; return resultado; } 22/10/08 Emmanuel Kayembe Ilunga

11 Emmanuel Kayembe Ilunga
Execução de um Módulo A chamada ao módulo é a forma de solicitar a execução do módulo em um determinado passo do algoritmo. Para fazer a chamada de um módulo devemos especificar qual o nome módulo e passar valores iniciais para seus parâmetros. Esses valores iniciais devem ser do mesmo tipo de dado e especificados na mesma ordem em que foram definidos na interface do módulo. i = quadrado(4); j = quadrado(5 + a); k = quadrado(7) + 3; 22/10/08 Emmanuel Kayembe Ilunga

12 Emmanuel Kayembe Ilunga
Exemplo 1 #include <stdio.h> int quadrado(int num){ return (num * num); } int main( ){ int i, n; for (i = 1; i <= 3; i++){ printf("\n\tDigite número inteiro positivo: "); scanf("%d", &n); printf("\tQuadrado: %d\n", quadrado(n)); return 0; 22/10/08 Emmanuel Kayembe Ilunga

13 Emmanuel Kayembe Ilunga
Exemplo 1b #include <stdio.h> int quadrado(int num); int main( ){ int i, n; for (i = 1; i <= 3; i++){ printf("\n\tDigite número inteiro positivo: "); scanf("%d", &n); printf("\tQuadrado: %d\n", quadrado(n)); } return 0; int quadrado(int num){ return (num * num); 22/10/08 Emmanuel Kayembe Ilunga

14 Emmanuel Kayembe Ilunga
Chamada por Valor Quando uma função é chamada os parâmetros são copiados – “chamada por valor” A função é incapaz de mudar qualquer variável passada com parâmetro Na próxima aula, ponteiros são discutidos que permitem “chamada por referência” Nós já tivemos uma pré-estréia deste mecanismo com scanf 22/10/08 Emmanuel Kayembe Ilunga

15 Chamada por Valor - Exemplo
#include<stdio.h> void change (int v){ v *= 100; printf(“change: v = %d\n”, v); } int main( ){ int var = 5; change (var); printf(“main: var = %d\n”, var); return 0; a função pode alterar "v" a função não pode alterar "var" change: v = 500 main: var = 5 22/10/08 Emmanuel Kayembe Ilunga

16 Emmanuel Kayembe Ilunga
Escopo dos Dados O escopo de um dado ou variável está vinculado a sua visibilidade em relação aos módulos de um algoritmo. #include <stdio.h> int quadrado(int num){ return (num * num); } int main( ){ int i, num; for (i = 1; i <= 3; i++){ printf("\n\tDigite inteiro positivo: "); scanf("%d", &num); printf("\tQuadrado: %d\n", quadrado(num)); return 0; 22/10/08 Emmanuel Kayembe Ilunga

17 Variáveis Globais e Locais
Uma variável é considerada global quando é declarada no início do algoritmo, antes da declaração das variáveis locais ao algoritmo, podendo ser utilizada por qualquer função, assim a variável passa ser visível no algoritmo principal e nos outros módulos. Uma variável é considerada local quando é declarada dentro de um módulo ou no algoritmo principal e é válida somente dentro da rotina à qual está declarada. 22/10/08 Emmanuel Kayembe Ilunga

18 Emmanuel Kayembe Ilunga
Exemplo #include<stdio.h> int a = 1, b = 2, c = 3; /* variáveis globais */ int f(){ int b, c; /* b e c são variáveis locais */ a = b = c = 4; return (a + b + c); } int main( ){ printf("%3d\n", f()); printf("%3d%3d%3d\n", a, b, c); return 0; 22/10/08 Emmanuel Kayembe Ilunga


Carregar ppt "Aula 22 Modularização 22/10/08."

Apresentações semelhantes


Anúncios Google