Buscar

Subprogramas_C_parte2

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 3 páginas

Prévia do material em texto

1
LABORATÓRIO DE PROGRAMAÇÃO I 
 
Profa. Gisele Busichia Baioco 
gisele@ft.unicamp.br 
 
 
Modularização de Programas 
 
Subprogramas em C 
Parte 2 – Parâmetros 
1 Introdução 
De modo geral, a vinculação entre os subprogramas (procedimentos ou funções) pode 
ser feita por meio da transferência ou passagem de parâmetros, que associam parâmetros 
reais (usados na chamada de um subprograma) com os parâmetros formais (usados na 
declaração de um subprograma). Os parâmetros podem ser classificados em três tipos: 
 
• Parâmetros de Entrada: são aqueles que têm seus valores estabelecidos fora do 
subprograma e não podem ser modificados dentro dele; 
• Parâmetros de Saída: são aqueles que têm seus valores estabelecidos apenas dentro do 
subprograma, ou seja, fora do subprograma eles têm valores indefinidos; 
• Parâmetros de Entrada-Saída: são aqueles que têm seus valores estabelecidos fora do 
subprograma, mas também podem ter seus valores alterados dentro dele. 
 
De acordo com os três tipos de parâmetros, são utilizados três modos de passagem de 
parâmetros: 
 
• Por valor: neste tipo de passagem de parâmetros, as alterações feitas nos parâmetros 
formais, dentro dos subprogramas, não se refletem nos parâmetros reais. O valor do 
parâmetro real é copiado para o parâmetro formal no momento da chamada do 
subprograma. Neste caso, diz-se que o parâmetro é de entrada; 
• Por resultado: as alterações feitas nos parâmetros formais, dentro do subprograma, se 
refletem nos parâmetros reais. O valor do parâmetro formal é copiado no parâmetro real 
ao retornar do subprograma. Neste caso, diz-se que o parâmetro é de saída; 
• Por referência: todas as alterações feitas nos parâmetros formais, dentro dos 
subprogramas, são feitas diretamente nos parâmetros reais associados. Neste caso, diz-se 
que o parâmetro é de entrada-saída. 
 
É importante ressaltar que em linguagens de programação podem existir mais de um modo 
de passagem de parâmetros com regras específicas, para indicar quais os modos se aplicam a 
cada parâmetro. A convenção da linguagem C é a passagem de parâmetros por valor, mas 
pode-se simular a chamada por referência passando um ponteiro para o argumento. 
 2
2 Passagem de Parâmetros por Valor em C 
A passagem de parâmetros por valor é o método que copia o valor de um parâmetro 
real para o parâmetro formal correspondente. Por convenção, C usa esse método para passar 
parâmetros em suas funções. 
 As alterações que forem feitas nos parâmetros formais dentro da função não terão 
nenhum efeito nas variáveis usadas em sua chamada (parâmetros reais). 
Exemplo: 
 
 #include <stdio.h> 
 
 int sqr(int); 
 
 main() 
 { 
 int t = 10; 
 printf("%d %d", sqr(t), t); 
 } 
 
 int sqr(int x) 
 { 
 x = x * x; 
 return x; 
 } 
 
 A função sqr() copia o valor do parâmetro real t, que é 10, para o parâmetro formal x. 
Na atribuição x = x * x, o parâmetro formal x será modificado localmente e a variável t, usada 
na chamada de sqr(), ainda terá o valor 10. Assim, a saída desse programa será 100 10. 
3 Passagem de Parâmetros por Referência em C 
A passagem de parâmetros por referência é o método que copia o endereço de um 
parâmetro real para o parâmetro formal da função. Dentro da função, o endereço é usado para 
acessar o parâmetro real usado na chamada. Assim, qualquer alteração feita no parâmetro 
formal alterará o valor do parâmetro real. 
 Em C pode-se simular a passagem de parâmetros por referência passando um ponteiro 
para o parâmetro real. Para isso, basta declarar os parâmetros formais como sendo do tipo 
ponteiro e fazer a chamada da função com o endereço dos parâmetros reais. 
 Exemplo: 
 
 #include <stdio.h> 
 
void troca(int*, int*); 
 
main() 
 { 
 int x, y; 
 x = 20; 
 y = 30; 
 printf(“Antes da troca: x = %d, y = %d”, x, y); 
 troca(&x,&y); /* chamada da função troca com o endereço dos 
 parâmetros reais X e y */ 
 printf(“Depois da troca: x = %d, y = %d”, x, y); 
 } 
 
 
 3
void troca(int* a, int* b) /* parâmetros do tipo ponteiro */ 
 { 
 int aux; 
 aux = *a; /* armazena o valor de a em aux */ 
 *a = *b; /* armazena o valor de b em a */ 
 *b = aux; /* armazena o valor de aux em b */ 
 } 
 
 A função troca() troca o valor de seus dois parâmetros reais inteiros.

Outros materiais