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

Slides:



Advertisements
Apresentações semelhantes
Funções em C Prof. Fabiano Utiyama.
Advertisements

C/C++ para Sistemas Operacionais Professor: André Luis Meneses Silva /msn: Página:
Um programa em C Bibliotecas Variáveis globais
Linguagem de Programação VI Tipos de Dados Compostos - structs
Programação II Estruturas de Dados
Programação II Estruturas de Dados
Algoritmos e Programação Linguagens de Programação Teoria Aula 7 (19/05) Universidade Federal do Vale do São.
Introdução à Computação - Jorge Macêdo
1 Tipos definidos O programador pode definir seus próprios tipos de dados tipos complexos usados da mesma forma que os simples declaram-se variáveis utilizando-se.
Alocação Dinâmica de Memória
Programação II Estruturas, uniões e enumerações
Algoritmos Escher.
Ponteiros em C.
LPG - I: Ponteiros e Vetores/Matrizes UDESC - SBS
LPG-I: Tipos Complexos - Estruturas
Estruturas de Dados I Prof.: Sergio Pacheco Prof.: Sergio Pacheco 1 1.
Estruturas de Dados I Prof.: Sergio Pacheco Prof.: Sergio Pacheco 1 1.
Estruturas de Dados II Prof.: Sergio Pacheco Prof.: Sergio Pacheco 1 1.
Universidade Federal do Espírito Santo Programação II Estruturas Professora: Norminda Luiza.
LINGUAGEM C Centro Federal de Educação Tecnológica da Paraíba Coordenação de Informática Professor: Lafayette B. Melo.
Armazenamento de Dados em Arquivos
Slides: Prof. João Fabro UTFPR - Curitiba
Armazenamento de Dados em Arquivos
Slides: Prof. SIMÃO Revisão: Prof. João Fabro
Slides: Prof. João Fabro UTFPR - Curitiba
Fundamentos de Programação 1
Ponteiros.
Escola Secundária c/ 3º CEB da Batalha
Revisão da Linguagem C.
Apontadores ou Ponteiros
O Portal do Estudante de Computação
APRESENTAÇÃO: GIANCARLO DE GUSMÃO GONÇALVES CURSO DE C AULA 08: Tipos Estruturados.
Ameliara Freire Programação I Ameliara Freire
PROGRAMAÇÃO ESTRUTURADA II
Ordenação e Pesquisa de Dados Marco Antonio Montebello Júnior
Estrutura de dados II Carlos Oberdan Rolim Ciência da Computação Sistemas de Informação.
Linguagem de programação I A Carlos Oberdan Rolim Ciência da Computação Sistemas de Informação.
Estrutura de Dados Avançada
LINGUAGEM C Centro Federal de Educação Tecnológica da Paraíba Coordenação de Informática Professor: Lafayette B. Melo.
Seminário 1: Revisão de C
Prof. Ricardo Santos PONTEIROS
Computação Eletrônica
Aula 10 - Armazenamento de Dados em Registros
Técnicas de Desenvolvimento de Programas
Educação Profissional Técnica de Nível Médio Curso Técnico de Informática
Aula P.02 – BCC202 Revisão sobre Ponteiros Túlio Toffolo
Joaquim José Hangalo  Podemos entender a memória do computador como um conjunto de células que armazenam informações.  Cada célula.
Prof. Alessandro Gonçalves
PCI- Estrutura Condicional Profa. Mercedes Gonzales Márquez.
Revisão Luis Antonio Tavares
Programação de Computadores I – Arquivos
Linguagem C - Funções Automação Industrial Informática Básica
MC102 - Algoritmos e Programação de Computadores 14ª Aula - Ponteiros Amanda Meincke Melo Instituto de Computação/Unicamp 1º Sem/2005.
Algoritmos e Programação MC102 Prof. Paulo Miranda IC-UNICAMP Aula 15 Ponteiros.
Ameliara Freire Dividir para Conquistar.
Profa. Maria Augusta Constante Puget
Estrutura de Dados Revisão Professor Luiz José Hoffmann Filho
Linguagem de Programação
USP – ICMC – SSC SSC0300 2º Semestre 2015 Disciplina de Linguagem de Programação e Aplicações [ Eng. Elétrica / Eletrônica ] 1 Prof. Dr. Daniel Rodrigo.
Computação – Informática Aula N. 05 Prof. SIMÃO Jean Marcelo SIMÃO Linguagem C “Matrizes em C”
Fundamentos de Programação 1 Slides 19 Prof. SIMÃO Jean Marcelo SIMÃO Linguagem C “Arquivos Binários”.
Fundamentos de Programação 1 Slides 11 Prof. SIMÃO Jean Marcelo SIMÃO Linguagem C “ Struct, Union, Enum, Typedef ”
Fundamentos de Programação 1
Fundamentos de Programação 1 Slides 7 Prof. SIMÃO Jean Marcelo SIMÃO Linguagem C “Funções”
Aula Prática 6 Ponteiros Monitoria  Quando declaramos uma matriz:  tipo meuArray[tam];  O compilador aloca a matriz em uma região de memória.
Fundamentos de Programação 1 Slides 21 Prof.ª Fabiany e Prof. SIMÃO Linguagem C “Lista Encadeada”.
Fundamentos de Programação 1 Slides 22 Prof.ª Fabiany e Prof. SIMÃO Linguagem C “Lista Duplamente Encadeada - Projeto com vários Arquivos”.
FUNÇÕES Dilvan Moreira (baseado em material de Z. Liang)
Computação – Informática Aula N. 05 Prof. SIMÃO Jean Marcelo SIMÃO Linguagem C “Matrizes em C” 1.
Fundamentos de Programação 1 Slides 18 Prof. SIMÃO Jean Marcelo SIMÃO Linguagem C “Arquivos Seqüências ou de Texto ”. 1.
Transcrição da apresentação:

Leandro Almeida

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

 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.

 Exemplo: Parâmetros Formais Parâmetros Reais

 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.

 Exemplo:

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

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

 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

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

 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

 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

 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) {... }

 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

 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);

 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.

 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:

 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.

#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(); }

#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;

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; }

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_______________________________"); }

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

 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.