Upload
lecong
View
215
Download
0
Embed Size (px)
Citation preview
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);
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
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)