Buscar

ESTRUTURA DE DADOS 2

Prévia do material em texto

1.
		Considere a função:
void dobro(int x) {
      x = 10 * x;
}
Qual será o valor impresso na tela quando o programa principal for executado?
int main() {
int n;
n = 5;
dobro(n);
cout << n;
return 0;
}
 
	
	
	
	Haverá um erro de compilação
	
	
	0
	
	
	50
	
	
	10
	
	
	5
		
	Gabarito
Coment.
	
	
	
	 
		
	
		2.
		Blocos únicos de códigos que realizam diversas tarefas distitintas são de dificil manutenção. Portanto, utiliza-se a tecnica da modularização de programas, a fim de facilitar a implementação e a manutenção dos programas. Esta técnica, também chamada de modularização, tem como principal elemento:
	
	
	
	Os Vetores
	
	
	Os Grafos
	
	
	As Filas
	
	
	As Estruturas de Dados
	
	
	As funções
	
	
	
	 
		
	
		3.
		Considere o trecho de um programa escrito em C++ : 
int func1 (long num) {
    int n, na=1;
    while (num / 10 != 0){
          na += 1;
          num /= 10;
    }
    return na;
}
main() {
     cout << func1 (132041);
}
Marque a opção correta que mostra o que é impresso na tela.
	
	
	
	3
	
	
	2
	
	
	4
	
	
	1
	
	
	6
	
Explicação:
Fazendo passo a passo :
int func1 (long num) {
    int n, na=1;
    while (num / 10 != 0){
          na += 1;
          num /= 10;
    }
    return na;
}
main() {
     cout << func1 (132041);
}
Passos : 
1) Chamada da função passando o valor 132041
2) Começa a função com num recebendo o valor 132041
3) na recebe 1 
4) enquanto num/10 é diferente de zero faça ...   Vejamos : 132041/10 é diferente de zero então
   na recebe 2 e num recebe 13204
5) Volta no teste do loop... 13204 /10 é diferente de zero ? Sim. Então, na recebe 3 e num recebe 1320
6) Volta no teste do loop... 1320 /10 é diferente de zero ? Sim. Então, na recebe 4 e num recebe 132 
7) Volta no teste do loop... 132 /10 é diferente de zero ? Sim. Então, na recebe 5 e num recebe 13
8) Volta no teste do loop... 13 /10 é diferente de zero ? Sim. Então, na recebe 6 e num recebe 1
9) Volta no teste do loop... 1 /10 é diferente de zero ?  Não.
Então, retorna o valor e na que é 6.
	
	
	
	 
		
	
		4.
		#include  < iostream  >
 using namespace std;
void SOMA(float a, int b)  {
  float result  =  a+b;
  cout << "A soma de " << a << " com " << b << " é: " << result;
}
int main()
{
int a;
float b;
a = 10; b = 12.3;
SOMA(b,a);
}
A função SOMA acima possui as seguintes características :
	
	
	
	Retorna valor e possui parâmetros.
	
	
	Retorna valor.
	
	
	Não retorna valor e possui parâmetros.
	
	
	Retorna valor e não  possui parâmetros.
	
	
	Não retorna valor e não   possui parâmetros.
	
Explicação:
A função
void SOMA(float a, int b)  {
  float result  =  a+b;
  cout << "A soma de " << a << " com " << b << " é: " << result;
}
tem o tipo de retorno void, o que significa que nenhum valor é retornado. Além disso, a função possui 2 parâmetros, que são a e b.
Logo, a resposta certa é  Não retorna valor e possui parâmetros.
	
	
	
	 
		
	
		5.
		Considere a função a seguir e a chamada da mesma efetuada no programa principal abaixo. Indique a opção que contem o que será impresso.
int executar (int x, int &y) {
    x = y * 2;
    y = ++x;
    return x + y;
}
int main () {
int a=2, b=2, c=2;
c = executar (a, b);
cout << a << ", " << b << ", " << c;
}
	
	
	
	4, 5, 9
	
	
	2, 2, 9
	
	
	3, 2, 8
	
	
	2, 5, 10
	
	
	3, 5, 8
	
Explicação:
Fazendo um teste de mesa, temos o seguinte : 
A execução começa pela main. 
As variáveis a, b e c são iniciadas com 2.
Chama-se a função executar e são passados os valores de a e b, ou seja, 2 e 2.
Ao iniciar a execução da função executar temos que x é passado por valor e y por referência. Iniciando a função temos :
Em x = y * 2;   Daí :  x  recebe 2 * 2, que dá 4
Em y = ++x;     Daí : x é incrementado para 5 e depois y recebe 5.
Então, a soma de x + y é retornado. Ou seja, 10 é retornado.
Mas como y é passado por referência, a variável b na chamada da função foi alterada para 5.  Nada, no entanto, ocorreu com a na chamada da função, pois x foi passado por valor.
Ao voltar para main, será impresso  2, 5, 10
Portanto, qualquer outra opção é totalmente inviável.
 
 
	
	
	
	 
		
	
		6.
		Em programação podemos utilizar um recurso que modulariza o programa chamado função. As funções precisam ser ativadas para que possam ser executadas. Para isso, é necessário chamar a função pelo seu nome e enviar, quando necessário, os valores respectivos para os parâmetros de entrada. Ao enviar os valores para os parâmetros de entrada, o programa pode fazer uma cópia deste valor ou trabalhar em um endereço enviado. Quando se envia o endereço estamos ativando a função por meio de:
	
	
	
	Envio de valor.
	
	
	Ponteiros.
	
	
	Envio de inteiro.
	
	
	Registro.
	
	
	Passagem por valor.
	
Explicação:
	Falso.  Quando se tem endereço não é passagem por valor
	Passagem por valor.
	 
	FAlso. Fala-se em endereço do valor
	Envio de inteiro.
	 
	 Verdadeiro. Ponteiro armazena o endereço de memória de uma variável
	Ponteiros.
	 
	Falso. Como é esse envio ? 
	Envio de valor.
	 
	FAlso.  Sem sentido. Resgistro (struct em C++) agrega dados de tipos diferentes.
	Registro.
		
	Gabarito
Coment.
	
	
	
	 
		
	
		7.
		 
	
	
	
	O programa não executa corretamente, pois os protótipos estão fora da ordem em que as funções são descritas.
	
	
	O programa executa perfeitamente independente da ordem das funções já que existem os seus protótipos.
	
	
	O programa não executa corretamente pois as funções devem ser descritas antes da função main(), para que o compilador consiga reconhecê-las.
	
	
	O programa executa perfeitamente, mas não mostra o valor da media já que esta função não foi chamada na função main( ).
	
	
	O programa não executa corretamente, pois o protótipo da função media( ) não apresenta a identificação dos parâmetros, mas apenas os tipos dos mesmos.
		
	Gabarito
Coment.
	
	
	
	 
		
	
		8.
		Na passagem por ____________________ , o endereço da variável da função chamadora é passado para a função chamada e, dessa forma, o valor poderá ser alterado, ou não.
	
	
	
	valor
	
	
	referência
	
	
	número
	
	
	caracter
	
	
	void
	
Explicação:
Esse é o conceito de passagem por referência.

Continue navegando