Você está na página 1de 13

Universidade Zambeze

Faculdade de Ciencias e Tecnologia

Curso de licenciatura em Engenharia Macatronica

Trabalho de Campo da disciplina de: Informatica II

VII - Grupo

Tema: passagem de parâmetros(exercicios)

Discente: Docente:

Edilsa Osvalda Doutor Eng. Chate harold

Carlos Mario João

José Zacarias

Luis Manuel Zembue

Luis Delso

Valdo Mirassy Ducá

Beira

2023
Passagem de parâmetros (exercícios)

Trabalho de pesquisa apresentado a


universidade Zambeze, na cadeira de
Informática II com o tema: passagem de
parâmetros (exercícios) como requisito
parcial para avaliação do curso de
licenciatura em Engenharia Mecatronica.

Docente: Doutor Eng. Chate harold

Beira

2023
Conteúdo
Introdução ......................................................................................................................... 4

Exercícios 1 teóricos – verdade ou Falso ......................................................................... 5

Exercícios 2 – Cálculos .................................................................................................... 6

Problema 1: Passagem por valor ................................................................................... 6

Passagem por Valor ....................................................................................................... 7

Passagem por Referência .............................................................................................. 7

Problema 6: ................................................................................................................... 9

Probelma 8 .................................................................................................................. 10

Conclusão: .................................................................................................................. 13
Introdução

O parâmetro proporciona que haja comunicação entre um subprograma e o programa


principal como um todo. Para isso, devemos seguir uma estrutura que visa trazer todas
as informações para que isso ocorra de forma correta, já que haverá uma comunicação
entre dois ou mais trechos do código. De seguida apresentaremos alguns exercícios e
suas resoluções.

4
Exercícios 1 teóricos – verdade ou Falso

 A. A passagem de parâmetro por referência acontece quando o parâmetro formal


é repassado ao parâmetro real. (falso)

Por que esta resposta não é correta:

A variável utilizada como parâmetro real não será afetada, caso haja modificação no
valor da variável auxiliar. Pois a passagem de valores para parâmetros definidos por
valor pode ser realizada por meio de um valor literal e do resultado de uma expressão.

 B. O parâmetro formal demonstra a modificação do seu valor em conjunto com


o parâmetro real quando uma passagem de parâmetro por referência está sendo
aplicada. (falso)

Por que esta resposta não é correta:

A variável utilizada como parâmetro real não será afetada, caso haja modificação no
valor da variável auxiliar. Pois a passagem de valores para parâmetros definidos por
valor pode ser realizada por meio de um valor literal e do resultado de uma expressão.

 C. Na manipulação do subprograma, a passagem de parâmetro por mantém o


valor do parâmetro real.(falso)

Resposta “C” não é correta:

 D. A passagem de parâmetro por valor traz a informação referente ao valor que


será utilizado no subprograma.(falso)

Por que esta resposta não é correta?

A variável utilizada como parâmetro real não será afetada, caso haja modificação no
valor da variável auxiliar. Pois a passagem de valores para parâmetros definidos por
valor pode ser realizada por meio de um valor literal e do resultado de uma expressão.

 E. Caso haja uma modificação no valor de uma variável auxiliar, a variável


definida como parâmetro real será modificada. (verdadeira)

Por que esta resposta é a correta?

5
A variável utilizada como parâmetro real não será afetada, caso haja modificação no
valor da variável auxiliar. Pois a passagem de valores para parâmetros definidos por
valor pode ser realizada por meio de um valor literal e do resultado de uma expressão."

Exercícios 2 – Cálculos

De seguida vamos apresentar alguns exercícios e suas resoluções da linguagem C++:

Problema 1: Passagem por valor


```cpp
#include <iostream>

// Função que recebe um número inteiro por valor e o incrementa em 1


void incrementByValue(int num) {
num++;
}

int main() {
int num = 5;
incrementByValue(num);
std::cout << "Valor final: " << num << std::endl;
return 0;
}
```

Problema 2: Passagem por referência


```cpp
#include <iostream>

// Função que recebe um número inteiro por referência e o incrementa em 1


void incrementByReference(int& num) {
num++;
}

int main() {
int num = 5;
incrementByReference(num);
std::cout << "Valor final: " << num << std::endl;
return 0;
}
```

6
Passagem por Valor

Na passagem por valor, uma cópia do valor da variável é passada para a função.
Qualquer alteração feita na cópia não afeta a variável original.
#include <iostream>

void passagemPorValor(int x) {
x = x * 2;
}

int main() {
int num = 5;
passagemPorValor(num);
std::cout << "Valor original: " << num << std::endl;
return 0;
}

Saida:
Valor original: 5

Passagem por Referência

Na passagem por referência, a própria variável é passada para a função. Isso permite
que a função modifique o valor da variável original.

#include <iostream>

void passagemPorReferencia(int &x) {


x = x * 2;
}

int main() {
int num = 5;

7
passagemPorReferencia(num);
std::cout << "Valor modificado: " << num << std::endl;
return 0;
}

Saida:
Valor modificado: 10

Observe o uso do operador & na declaração do parâmetro da função


"passagemPorReferencia". Isso indica que a função recebe um parâmetro por referência.

Esses exemplos ilustram a diferença entre passagem por valor e por referência em C++.
A passagem por valor cria cópias dos valores originais, enquanto a passagem por
referência permite a modificação direta dos valores originais.

1. Exercício: Trocar o valor de duas variáveis usando passagem por referência.


Resolução:
```cpp
#include <iostream>

void trocar(int& a, int& b) {


int temp = a;
a = b;
b = temp;
}

int main() {
int x = 5;
int y = 10;

std::cout << "Antes da troca: x = " << x << ", y = " << y << std::endl;

trocar(x, y);

std::cout << "Depois da troca: x = " << x << ", y = " << y << std::endl;

return 0;
}
```

8
Problema 5: Calcular o fatorial de um número usando passagem por valor.
Resolução:
```cpp
#include <iostream>

int calcularFatorial(int n) {
if (n == 0 || n == 1) {
return 1;
} else {
return n * calcularFatorial(n - 1);
}
}

int main() {
int num = 5;

std::cout << "O fatorial de " << num << " é: " << calcularFatorial(num) <<
std::endl;

return 0;
}
```

Problema 6: Calcular a média e o valor máximo de um array usando passagem por


referência.
Resolução:
```cpp
#include <iostream>

void calcularMediaMaximo(const int arr[], int tamanho, double& media, int&


maximo) {
int soma = 0;
maximo = arr[0];

for (int i = 0; i < tamanho; i++) {


soma += arr[i];
if (arr[i] > maximo) {
maximo = arr[i];
}
}

media = static_cast<double>(soma) / tamanho;


}

9
int main() {
const int tamanho = 5;
int numeros[tamanho] = {3, 8, 2, 5, 1};
double media;
int maximo;

calcularMediaMaximo(numeros, tamanho, media, maximo);

std::cout << "Média: " << media << std::endl;


std::cout << "Valor máximo: " << maximo << std::endl;

return 0;
}
```

Problema 7: Converter uma string para letras maiúsculas usando passagem por
referência.
Resolução:
```cpp
#include <iostream>
#include <string>
#include <cctype>

void converterParaMaiusculas(std::string& texto) {


for (char& c : texto) {
c = std::toupper(c);
}
}

int main() {
std::string frase = "Olá, Mundo!";

converterParaMaiusculas(frase);

std::cout << "Frase em maiúsculas: " << frase << std::endl;

return 0;
}
```

Probelma 8: Trocar o conteúdo de duas variáveis usando passagem por referência.


Resolução:
```cpp
#include <iostream>

10
void trocarVariaveis(int& a, int& b) {
int temp = a;
a = b;
b = temp;
}

int main() {
int num1 = 10;
int num2 = 20;

std::cout << "Antes da troca: num1 = " << num1 << ", num2 = " << num2 <<
std::endl;

trocarVariaveis(num1, num2);

std::cout << "Depois da troca: num1 = " << num1 << ", num2 = " << num2 <<
std::endl;

return 0;
}
```

Problema 9: Multiplicar todos os elementos de um array por um valor usando


passagem por valor.
Resolução:
```cpp
#include <iostream>

void multiplicarArray(int arr[], int tamanho, int multiplicador) {


for (int i = 0; i < tamanho; i++) {
arr[i] *= multiplicador;
}
}

int main() {
const int tamanho = 5;
int numeros[tamanho] = {1, 2, 3, 4, 5};
int multiplicador = 2;

multiplicarArray(numeros, tamanho, multiplicador);

std::cout << "Array após a multiplicação: ";


for (int i = 0; i < tamanho; i++) {
std::cout << numeros[i] << " ";
}
std::cout << std::endl;
11
return 0;
}
```

12
Conclusão:

Esses exemplos mostram diferentes situações em que a passagem de parâmetros por


referência ou por valor é utilizada. Lembrando que a passagem por referência permite
modificar diretamente o valor original da variável, enquanto a passagem por valor cria
uma cópia local da variável.

Como podemos ver nos exercícios e suas resoluções , em linguagem C, os parâmetros


são sempre passados por valor, mas quando você passa um ponteiro como parâmetro,
você está passando uma referência à localização de memória, o que permite que você
modifique o valor da variável original.

13

Você também pode gostar