Logo Passei Direto
Buscar
Material

Esta é uma pré-visualização de arquivo. Entre para ver o arquivo original

TEMA 3 - MODULARIZAÇÃO
MOD 3 – PASSAGEM DE PARÂMETROS
As funções, de acordo com a sua funcionalidade, possuem parâmetros, e são invocadas pelo programa principal passando argumentos de acordo com a sua sintaxe.
___DEFINIÇÕES
Um parâmetro é uma variável que recebe valores enviados para uma sub-rotina, permitindo que ela adapte seu comportamento durante a execução. Esses parâmetros, ou parâmetros formais, são definidos na declaração da sub-rotina e funcionam como variáveis locais. Já os argumentos (ou parâmetros reais) são os valores efetivos passados para a sub-rotina quando esta é chamada.
___Passagem de parâmetros
Quando invocamos uma sub-rotina, devemos fornecer para cada um dos seus parâmetros um valor de mesmo tipo, respeitando a ordem e a quantidade de parâmetros declarados. Essa passagem pode ser feita de duas formas:
· Passagem por valor
É a cópia do valor do argumento na chamada da sub-rotina para o parâmetro declarado na sub-rotina, que se denomina passagem por valor.
A passagem por valor é feita entregando a “xerox” das informações, jamais o original. Dessa forma, a sub-rotina pode “riscar e rabiscar” os dados que foram passados, sem, no entanto, danificar o “documento original”
· Passagem por referência
A passagem do endereço onde se encontra a variável usada como argumento na chamada da sub-rotina, conhecida por passagem por referência.
Então, para realizar a passagem por referência, ponteiros devem ser utilizados. A estratégia a ser adotada é:
1. Passar o endereço de uma variável, obtido através do operador & e armazenado em uma variável do tipo ponteiro.
2. Dentro da função, usar ponteiros para alterar os locais para onde eles apontam e que correspondem aos valores das variáveis originais.
Na passagem por referência, a sub-rotina acessa diretamente o endereço de memória da variável original, permitindo alterar seu valor. Por isso, apenas variáveis podem ser passadas, e não valores numéricos ou expressões. Ao fim da sub-rotina, a referência ao parâmetro é destruída, mas a variável original no programa principal permanece inalterada.
___PROTÓTIPOS DE SUB-ROTINAS
Para usar sub-rotinas com passagem por valor ou por referência, é necessário declarar seus protótipos (ou assinaturas) no início do arquivo-fonte. O protótipo consiste na primeira linha (no exemplo, linha 1 e 6) da definição da sub-rotina e deve aparecer antes de seu uso no programa.
1 tipo nome da função (tipo parâmetro1, ..., tipo parâmetro) {
2 comandos;
3 return;
4 }
5
6 void nome do procedimento (tipo parâmetro1, …, tipo parametron) {
7 commandos;
8 }
----> Visualizar Programa 7 
___PASSAGEM DE VETORES
A passagem de vetores para funções é sempre por referência. A sintaxe de passagem de um vetor pode ser feita com:	tipo nome[ ];
	Onde: Tipo corresponde ao tipo dos elementos do vetor, nome é o nome atribuído ao vetor e [ ] indica que a variável é do tipo vetor. O “[ ]” pode ser utilizado sem um valor, pois em C não interessa qual a dimensão do vetor que é passado a uma função, mas, sim, o tipo dos seus elementos.
Para passar um vetor para uma função usando linguagem C, utiliza-se um ponteiro como parâmetro da função. Ao usarmos o ponteiro como parâmetro, na realidade estamos passando o endereço inicial do vetor, não os seus elementos.
----> Visualizar Programa 8
TEMA 3 - MODULARIZAÇÃO
MOD 4 – LOCALIZAR VARIÁVEIS LOCAIS E GLOBAIS
As variáveis são vinculadas aos seus valores em tempo de execução. E o escopo de uma vinculação é o conjunto de trechos de um programa que se consegue usar as variáveis. São divididas quanto ao escopo em três tipos:
· Variáveis locais.
· Variáveis globais.
· Parâmetros formais.
Podemos declarar as variáveis em três locais distintos:
1. Fora das sub-rotinas de um programa.
Essas são chamadas de variáveis globais e podem ser usadas a partir de qualquer lugar do programa. Como elas estão fora das sub-rotinas, podemos dizer que todas as funções as veem. O valor de uma variável global ao longo do ciclo de vida do programa é sempre válido.
2. Dentro da sub-rotina de um programa.
Essas são chamadas de variáveis locais e só têm validade dentro da sub-rotina no qual são declaradas, isto é, só a sub-rotina em que a variável é declarada sabe da sua existência.
3. Na lista de parâmetros de uma sub-rotina.
Essas são chamadas de parâmetros formais e são declaradas na definição dos parâmetros de uma sub-rotina. Apesar de receberem valores externos, elas são conhecidas apenas pela sub-rotina onde são declaradas.
____VARIÁVEIS LOCAIS
Na linha 5 foram declaradas na função principal três variáveis locais, que pertencem à função principal main() e seu escopo está relacionado à execução da função.
1 //Programa 9 - soma dois numeros
2 #include 
3 int main ()
4 {
5 int num1, num2, num3;
6 num1 = 10;
7 num2 = 20;
8 num3 = num1 + num2;
9 printf("%d + %d = %d", num1, num2, num3);
10 return(0);
11 }	
____VARIÁVEIS GLOBAIS
1 //Programa 10 - soma dois numeros
2 #include 
3 int num3; //variável global 
4 int main ()
5 {
6 int num1, num2;
7 num1 = 10;;
8 num2 = 20;
9 num3 = num1 + num2;
10 printf("%d + %d = %d", num1, num2, num3);
11 return(0);
12 }
As variáveis locais e as globais podem ter o mesmo identificador, isto é, o mesmo nome. Porém, dentro de uma sub-rotina, as variáveis locais sobrepõem o valor das globais.
1 //Programa 11 - imprime o valor da variável num
2 #include 
3 
4 int num;
5 num = 20;
6 int main (){
7 int num;
8 num = 10;
9 printf("O valor da variavel num: %d", num);
10 return 0;
11 }
____PARÂMETROS FORMAIS
Parâmetros formais em uma sub-rotina são variáveis locais declaradas como entradas e podem ser modificadas sem afetar as variáveis originais. Em C, os parâmetros formais recebem apenas uma cópia dos valores passados, existindo de forma independente das variáveis originais na sub-rotina.
//Programa 12: soma dois numeros
2 #include 
3 //variável global
4 int num3;
5
6 //Função soma
7 int soma(int x, int y){
8 int v_soma;
9 v_soma = x + y;
10 return(v_soma);
11 }
12
13 int main ()
14 {
15 int num1, num2;
16 num1 = 10;
17 num2 = 20;
18 num3=soma(num1, num2);
19 printf("%d + %d = %d", num1, num2, num3);
20 return 0;
21 }
___ESCOPO DE VARIÁVEIS
A declaração de variáveis no programa tem seu escopo vinculado à sua localização no código.
As variáveis globais serão definidas fora da função main, ou seja, após a declaração das bibliotecas, e são acessíveis em qualquer parte do programa.
As variáveis locais serão definidas internamente a cada função. Caso o valor de uma variável local precise ser utilizado em outra função, esses valores devem ser passados por parâmetros.
Os parâmetros formais estão definidos nos parâmetros das funções e são considerados variáveis locais.

Teste o Premium para desbloquear

Aproveite todos os benefícios por 3 dias sem pagar! 😉
Já tem cadastro?

Mais conteúdos dessa disciplina