Buscar

20131_AEDS1_AulaPratica_06_20130502_Funcao_Procedimento_Ponteiro

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

Algoritmos e Estruturas de Dados I (DCC/003) – 2013/1 
 
Aula Prática 06 – 02/Mai/2013 
 
 Instruções: 
o Os exercícios deverão ser feitos em aula de laboratório durante o tempo da aula; 
o O professor irá esclarecer dúvidas em aula; 
o Crie uma pasta com seu nome e vá gravando seus programas implementados. 
 
 
Exercício 1 
 
Vamos calcular o quociente e o resto da divisão de dois números inteiros NUM1 e NUM2. 
 
Suponha que soma (+) e subtração (-) são as únicas operações disponíveis em C. Dados dois 
números inteiros positivos NUM1 e NUM2, determine o quociente e o resto da divisão de NUM1 
por NUM2. 
 
O algoritmo para solucionar este problema é o seguinte: 
 
 
 
 
 
 
 
 
 
 
- Faça uma função quociente que receba os 2 números e retorne o valor do quociente. 
- Faça outra função resto que receba os 2 números e retorne o valor do resto. 
- Em sua função MAIN receba os valores do usuários, chame as funções e ao final imprima os 
valores do quociente e resto. 
 
Execute o código para testar seu programa de computador e verificar se o resultado está correto. 
[salve o seu código com o nome: ap06-ex1.c] 
 
Exercício 2 
 
Para reforçar o conceito de ponteiro e passagem de parâmetros por valor e por referência, faça o 
seguinte: crie 2 procedimentos (void somandoValor e void somandoReferencia), que deverão 
somar 2 números e adicionar ao valor corrente de uma variável somaValor (somaValor = 
somaValor + a + b) e mesma coisa para somaReferência, que usará o conceito de ponteiro. 
 
O código MAIN será o seguinte: 
 
int main(int argc, char *argv[]) { 
 int x = 10; 
 int y = 5; 
 int somaValor = 0; 
 int somaReferencia = 0; 
 somandoValor(x,y, somaValor); 
 somandoReferencia(x,y, &somaReferencia); 
 printf("MAIN - Valor de somaValor = %d\n",somaValor); 
 printf("MAIN - Valor de somaReferencia = %d\n", somaReferencia); 
 return 0; 
} 
 
Os procedimentos deverão ter as seguintes assinaturas: 
 
1. Sejam NUM1 e NUM2 os valores dados; 
2. Atribuir o valor 0 ao quociente (variável quoc); 
3. Enquanto NUM2 couber em NUM1: 
{ 
4. Somar 1 ao valor de quoc; 
5. Subtrair NUM2 do valor de NUM1; 
} 
6. Atribuir o valor final de NUM1 ao resto (variável resto). 
void somandoValor (int a, int b, int somaValor) 
 
void somandoReferencia (int a, int b, int *somaReferencia) 
 
- Imprima o valor de somaValor dentro do procedimento e de somaReferencia também e compare 
com os valores impressos no MAIN. Isso comprovará o que vimos dos conceitos de passagem de 
parâmetrose ponteiro. 
 
Execute o código para testar seu programa de computador e verificar se o resultado está correto. 
[salve o seu código com o nome: ap06-ex2.c] 
 
Exercício 3 
 
Para praticar o conceito inicial de variável indexada com vetor, ponteiro e passagem de 
parâmetros, construa um programa que deverá fazer o seguinte: 
 
- Pegar um vetor informado (com valores inteiros) e criar um procedimento (void operacoesVetor), 
que deverá calcular o seguinte: 
 - menor valor do vetor; 
 - maior valor do vetor; 
 - media dos valores do vetor; 
 
- Detalhe: dentro do procedimento você deverá fazer os cálculos e armazenar na memória, para 
isso deverá usar ponteiros para os valores do menor (min), maior (max) e media (media). 
 
- Dica: você pode iniciar seu valor menor e também o valor maior como sendo o 1º elemento do 
seu vetor de números (*min = vet[0] e *max = vet[0]). 
 
O código principal (MAIN) está apresentado abaixo: 
 
int main(int argc, char *argv[]) { 
 int vet[] = {1, 3, 5, 7, 9, 0, 2, 4, 6, 8}; 
 int min, max; 
 float media; 
 int tamanhoVetor = 10; 
 operacoesVetor(vet,tamanhoVetor,&min,&max,&media); 
 printf("MAIN - min=%d max=%d media=%f\n", min, max, media); 
 return 0; 
} 
 
Agora crie o código do seu procedimento 
 
void operacoesVetor (int vet[], int tamanhoVetor, int *min, int *max, float *media) { 
 … 
 Escreva seu código aqui! 
 … 
 
} 
 
Execute o código para testar seu programa de computador e verificar se o resultado está correto. 
[salve o seu código com o nome: ap06-ex3.c]

Teste o Premium para desbloquear

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

Outros materiais

Outros materiais