Lista 1 gabarito
1) Considere o programa abaixo e depois dê o que se pede:
#include <iostream>
#include <cstdlib> using namespace std; void Teste1(int ); void Teste2(int &); int Teste3(int); int x = 20; int main()
{
int numero = 10, outroNumero;
Teste1(numero);
cout << "Valor de numero (após Teste1) = " << numero << endl; cout << "X = " << x << endl;
Teste2(numero);
cout << "Valor de numero (após Teste2) = " << numero << endl; cout << "X = " << x << endl; outroNumero = Teste3(numero); cout << "Valor de outro numero (após Teste3) = " << outroNumero
<< endl; cout << "X = " << x << endl; system("pause"); } void Teste1(int numero)
{
numero = numero +x ; x++; }
void Teste2(int &numero)
{
int valor = 100; numero = numero + valor; x++; }
int Teste3(int n)
{
int valor = 200; n = n + valor; x--; return n;
}
Pede-se:
a) Identifique as variáveis globais e locais. Quando identificar uma variável local, especifique o escopo da mesma.
b) Identifique, em cada função, o tipo de passagem de parâmetros.
c) Mostre, passo a passo, o valor de todas as variáveis, indicando o momento em que as variáveis não mais ocupam espaço na memória.
d) Diga o que é impresso na tela
Solução :
a)
Variável global : x
Variáveis locais :
1) numero e outroNumero – escopo : main.
Veja o trecho : int main()
{
int numero = 10, outroNumero;
//continua
2) numero - escopo : Teste1
3) numero e valor – escopo : Teste2
4) n e valor - escopo : Teste3
b)
Função main : Não há passagem de parâmetros
Função Teste 1 : Passagem de parâmetro por valor
Função Teste 2: Passagem de parâmetro por referência
FunçãoTeste 3: Passagem de parâmetro por valor
c)
Passos :
1)
2)
3)
4)
Variável global x recebe 20. Ela será visível na main e nas outras funções.
Na main, a variável local numero recebe 10 na declaração.
Chamada para a função Teste1, passando o valor de numero, ou seja, 10.
Na função Teste1 : Há uma variável local numero (cópia da variável numero da main) que recebeu o valor passado 10. A variável numero local à