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

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

Leandro Almeida  Parâmetros são utilizados em computação para possibilitar a construção de subprogramas genéricos.

Apresentações semelhantes


Apresentação em tema: "Leandro Almeida  Parâmetros são utilizados em computação para possibilitar a construção de subprogramas genéricos."— Transcrição da apresentação:

1 Leandro Almeida lma3@cin.ufpe.br

2  Parâmetros são utilizados em computação para possibilitar a construção de subprogramas genéricos.

3  Parâmetros Formais ◦ Parâmetros formais são as variáveis declaradas no cabeçalho do subprograma.  Parâmetros Reais ◦ Parâmetros reais são as variáveis passadas no instante da chamada do subprograma.

4  Exemplo: Parâmetros Formais Parâmetros Reais

5

6  No instante da chamada do subprograma, o parâmetro formal recebe uma cópia do valor do parâmetro real correspondente.  Alterações feitas nos parâmetros formais não refletem nos parâmetros reais correspondentes.  Caracteriza-se por ser um mecanismo de entrada de dados para o subprograma.

7  Exemplo:

8

9  Organizacao da memória (variável inteira) int x; 0000000 (0xFF02)x

10  Organizacao da memória (variável inteira) int x; x = 5; 5 (0xFF02)x

11  Ponteiros (ou apontadores) são variáveis que, ao invés de guardar um dado (valor), guardam um endereço de memória, associada a outra variável;  Dessa forma, ponteiros fazem referência a outra variável;  Exemplo:  Abstração: 0x3287AB x 4 x

12  Sintaxe: ◦ Variáveis que são ponteiros são representadas da seguinte forma: tipo *nome_variavel; ◦ Exemplo: NULL x int *x;

13  Sintaxe: ◦ Variáveis que são ponteiros são representadas da seguinte forma: tipo *nome_variavel; ◦ Exemplo: NULL xint *x; int y = 5; 5 (0xAD036)y

14  Sintaxe: ◦ Variáveis que são ponteiros são representadas da seguinte forma: tipo *nome_variavel; ◦ Exemplo: 0xAD036 xint *x; int y = 5; x = &y; 5 (0xAD036)y

15  Toda declaração de ponteiros, inicia o ponteiro com o valor default NULL;  É sempre bom testar se o ponteiro não é NULL antes de acessá-lo;  x – representa o endereço armazenado no ponteiro; NULL (0x3847CD)x int *x; printf(“Endereco da variavel x: %d”,&x); printf(“Endereco guardado em x: %d”,x); if (x != NULL) {... }

16  Atribuição de ponteiros. ◦ Só podemos jogar dentro do ponteiro um endereço;  *x – representa o conteúdo final do ponteiro; 0x32496 (0x3847CD)x int *x; int y = 35; x = &y; int *x; printf(“Conteudo final de x: %d”,*x); *x = 28; printf(“Conteudo final de x: %d”,*x); 35 (0x32496)y

17  O que acontece no seguinte programa? int y = 5; int *x; x = &y; printf("Valor armazenado na variavel y: %d\n", y); printf("Endereco de y: %d\n",&y); printf("Valor do conteudo do ponteiro x: %d\n",*x); printf("Valor do endereco armazenado no ponteiro x: %d\n", x); printf("Valor do endereco de x: %d\n",&x); printf("Alterando o valor armazenado na variavel x\n"); *x = *x + 1; printf("Novo valor do conteudo do ponteiro x: %d\n",*x); printf("Valor do endereco armazenado no ponteiro x: %d\n", x); printf("Valor via y: %d\n",y);

18

19  Caracteriza-se por ser um mecanismo de comunicação bidirecional com o subprograma, ou seja, é um mecanismo de entrada e saída de dados.  Qualquer modificação feita em um parâmetro formal implica em alteração no parâmetro real correspondente.

20  Na passagem por referência utiliza-se um tipo de dados especial chamado ponteiro, que representa o endereço da variável passada por parâmetro. Representado pelo * após o tipo da variável e antes do seu nome.  Exemplo:

21

22

23  Crie um programa na linguagem C que define a estrutura de um carro, altere seus dados através de uma função (use passagem por referência e o operador ->) bem como use outra função para exibir os membros da struct.

24 #include typedef struct { char modelo[30]; float potenciaMotor; int anoFabricacao, numPortas; }CARRO; void Exibe(CARRO car) { printf("\n\tExibindo carro\n"); printf("Modelo: %s\n", car.modelo); printf("Motor: %.1f\n", car.potenciaMotor); printf("Ano: %dn", car.anoFabricacao); printf("%d portas\n", car.numPortas); } void Preenche(CARRO *car) { printf("Modelo do carro: "); gets( car->modelo ); printf("Motor: "); scanf("%f", &car->potenciaMotor); printf("Ano: "); scanf("%d", &car->anoFabricacao); printf("Numero de portas: "); scanf("%d", &car->numPortas); } main(void) { CARRO fusca; Preenche(&fusca); Exibe(fusca); getche(); }

25

26 #include typedef struct { char Rua[100], Bairro [20], Cidade [20]; int num, cep; } tipo_endereco; typedef struct { int mat, serie, irmao; char nome[20]; float mens; tipo_endereco ender; } tipo_aluno;

27 int preencher(tipo_aluno A[20]) { int qa, i, resp; qa =0; do{ printf("Colegio Legal\n"); printf("\n\nCadastro de Alunos\n\n"); printf("\nMatricula.: "); scanf("%d",&A[qa].mat); printf("\nNome......: "); fflush(stdin); gets(A[qa].nome); printf("\nSerie(1-4): "); scanf("%d",&A[qa].serie); printf("\nIrmao na escola(1-sim/0-nao):"); scanf("%d",&A[qa].irmao); switch(A[qa].serie){ case 1: A[qa].mens = 110; break; case 2: A[qa].mens = 130; break; case 3: A[qa].mens = 160; break; case 4: A[qa].mens = 170; break; } if (A[qa].irmao == 1) A[qa].mens = A[qa].mens*0.8; printf("\n digite o endereco: "); printf("\n Rua : "); fflush(stdin); gets(A[qa].ender.Rua); printf("\n Bairro: "); fflush(stdin); gets(A[qa].ender.Bairro); printf("\n Cidade : "); fflush(stdin); gets(A[qa].ender.Cidade); printf("\n numero: "); ; scanf("%d",&A[qa].ender.num); printf("\n cep: "); scanf("%d",&A[qa].ender.cep); qa++; printf("\n\nDeseja cadastrar outro aluno(1-sim/0-nao)? "); scanf("%d",&resp); }while ((resp == 1) && (qa <20)); return qa; }

28 void relatorio_geral(tipo_aluno v_alunos[20],int q ) { int j; printf("Colegio Legal\n"); printf("\n\nRelatorio Geral\n"); printf("\n________________________________"); printf("\nMat.\tNome\tSerie\tIrmao\tMens.\tRua\tBairro\tCidade\tNumero\tCep"); printf("\n________________________________"); for(j = 0; j < q; j++) { printf("\n %5d %-10s %5d %5d %5.2f %-10s %-10s %-10s %5d %5d ", v_alunos[j].mat, v_alunos[j].nome, v_alunos[j].serie, v_alunos[j].irmao, v_alunos[j].mens, v_alunos[j].ender.Rua, v_alunos[j].ender.Bairro, v_alunos[j].ender.Cidade, v_alunos[j].ender.num, v_alunos[j].ender.cep); printf("\n_______________________________"); }

29 main(){ int qa; tipo_aluno alunos[20]; qa=preencher(alunos); relatorio_geral(alunos,qa); printf("\nTecle enter para sair..."); getche(); }

30

31  Escreva um programa que: ◦ Possua uma função que recebe como parâmetros um vetor de inteiros v, o número de elementos dele N e ponteiros para variáveis nas quais devem ser armazenados os valores maximo e minimo do vetor. Sua assinatura deve ser:  void maximoMinimo(int v[], int N, int *maximo, int *minimo); ◦ Outra função que retorne via ponteiros a média, mediana e desvio padrão do vetor passado como parâmetro. ◦ Escreva o main para usar essas funções.


Carregar ppt "Leandro Almeida  Parâmetros são utilizados em computação para possibilitar a construção de subprogramas genéricos."

Apresentações semelhantes


Anúncios Google