Prévia do material em texto
4- (Fácil) Os parâmetros servem como uma forma do programa principal poder se comunicar com uma sub-rotina, e também de uma sub-rotina se comunicar com outra sub-rotina, por meio da passagem de valores de um para outro. Seguem algumas afirmações sobre os tipos de parâmetros e sua forma de passagem:I. Os parâmetros formais são os valores passados do programa principal ou sub-rotina em execução para a sub-rotina sendo chamada.II. Os parâmetros reais são declarados por meio de variáveis logo após a declaração do nome da sub-rotina.III. A passagem de parâmetro por valor caracteriza-se pela atualização do valor do parâmetro real quando o mesmo é alterado na sub-rotina por meio do parâmetro formal.IV. Na passagem de parâmetro por referência, a sub-rotina recebe o endereço de memória da variável passada pelo parâmetro real ao invés da cópia do seu valor.Estão corretas:
A) II apenas.
B) IV apenas.
C) I e III apenas.
D) I, II e III apenas.
E) I, II e IV apenas.
ANSWER: B
5- (Fácil) Na linguagem C, os parâmetros podem ser passados por valor ou por referência. Enquanto que na passagem por valor, é passada uma cópia do conteúdo da variável, na passagem por referência, é passado o endereço de memória da variável, permitindo, assim, ter seu conteúdo alterado dentro da função chamada. Assinale a alternativa correspondente ao operador usado para obter o endereço de memória de uma variável em C:
A) Operador *.
B) Operador &.
C) Operador %.
D) Operador ||.
E) Operador ?:.
ANSWER: B
6- (Fácil) A recursividade é um mecanismo que permite uma função ou procedimento chamar a si mesmo de forma direta ou indireta quantas vezes for necessário. Assinale a alternativa que corresponde ao princípio da recursividade:
A) Usar menos recursos da máquina.
B) Reproduzir conceitos exclusivos da matemática.
C) Facilitar a depuração do algoritmo com menos instruções.
D) Ser uma alternativa às estruturas de repetição quando estas não estão disponíveis.
E) Diminuir o problema maior em um problema menor de forma sucessiva, até não ser mais necessário que a sub-rotina continue chamando a si própria.
ANSWER: E
7- (Fácil) O escopo de uma variável está vinculado à sua visibilidade e ao seu tempo de vida no programa em relação às sub-rotinas que ele possui. Conceitualmente falando, as variáveis podem ter escopo global ou local, sendo que em C é possível declarar cinco classes de variáveis. Dentre elas, assinale a alternativa referente à classe em C que possui o menor escopo possível e não necessita de nenhuma palavra-chave adicional em sua declaração, apenas tipo variável:
A) Locais.
B) Globais.
C) Externas.
D) Estáticas.
E) Registro.
ANSWER: A
8- (Fácil) A linguagem C oferece cinco escopos diferentes para a declaração de variáveis, de acordo com a necessidade de uso em um programa. Isto posto, assinale a alternativa referente ao uso correto das variáveis externas:
A) Referenciar e acessar uma variável local declarada dentro de uma função.
B) Referenciar e acessar uma variável global declarada em outro arquivo de programa.
C) Referenciar e acessar uma variável estática declarada em outro arquivo de programa.
D) Referenciar e acessar uma variável contida em uma biblioteca linkada com o programa na geração do arquivo executável.
E) Referenciar e acessar variáveis existentes em outras aplicações atualmente em execução na máquina.
ANSWER: B
9- (Fácil) Uma sub-rotina consiste em blocos de instruções que realizam tarefas específicas. Ascencio e Campos (2010), assim como Manzano e Oliveira (1997), afirmam que uma sub-rotina é um trecho menor de código, um algoritmo mais simples, que resolve um subproblema por meio de operações de entrada, processamento e saída. Assinale a alternativa correta referente à principal diferença entre os dois tipos de sub-rotinas existentes, procedimentos e funções:
A) Funções podem ser chamadas várias vezes em um programa; procedimentos, apenas uma vez.
B) Procedimentos permitem um grande número de instruções, ao passo que as funções permitem um número restrito.
C) Procedimentos permitem passagem de parâmetros por valor, e as funções, por referência.
D) Funções sempre retornam um valor para a sub-rotina que a chamou; procedimentos nunca retornam valor.
E) Os procedimentos possuem escopo local e as funções possuem escopo global.
ANSWER: D
10- (Fácil) Recursividade é o nome dado à possibilidade de uma função ou procedimento chamar a si mesma, com a finalidade de dividir um problema em partes menores e assim por diante, até que esteja suficientemente simples a sua resolução.Contudo, esta técnica apresenta uma desvantagem. Assinale a alternativa correta referente a ela:
A) Torna o código menos legível e conciso.
B) Consome maior quantidade de memória.
C) Faz gravação em disco, tornando o processo mais lento.
D) Exige dispositivos adicionais, como scanner e leitor de radiofrequência.
E) Não permite que nenhum outro processo do sistema operacional execute em paralelo durante a recursão.
ANSWER: B
14- (Médio) Ponteiros são variáveis que armazenam um endereço de memória, geralmente a posição de outra variável da memória; por isso o ponteiro “aponta” para outra variável (SCHILDT, 1996). Dado o seguinte trecho de código, assinale a alternativa INCORRETA: int *pti;int i = 10;pti = &i;
A) pti armazena o endereço de i.
B) pti é igual a 10.
C) *pti é igual a 10.
D) Ao se executar *pti = 20; i passará a ter o valor 20.
E) Ao se alterar o valor de i, *pti será modificado.
ANSWER: B
15- (Médio) Ponteiros também podem ser declarados com associação a uma estrutura ou união, além dos tipos de dados básicos da linguagem C. Isto posto, assinale a alternativa referente ao significado correto de estrutura->membro:
A) *estrutura.membro
B) *(estrutura.membro)
C) (*estruturA).membro
D) estrutura.(*membro)
E) *estrutura[membro]
ANSWER: C
16- (Médio) Suponha uma função recebe por parâmetro um vetor do tipo float contendo os salários dos funcionários de uma multinacional. Segundo os tipos de variáveis em C aprendidos em nossa apostila, assinale a alternativa referente à classe mais apropriada para declarar a variável que acumulará a soma dos salários ao percorrer este vetor em um laço de repetição:
A) Local.
B) Global.
C) Externa.
D) Estática.
E) Registro.
ANSWER: E
17- (Médio) A recursividade é um mecanismo que permite a uma função ou procedimento chamar a si mesmo. Assinale a alternativa que corresponde ao número máximo de vezes que uma sub-rotina pode chamar a si mesma:
A) 1.
B) 2.
C) 3.
D) 10.
E) Ilimitado.
ANSWER: E
18- (Médio) Vimos em nossa apostila que vetores são na verdade ponteiros, cujo valor aponta para o endereço de memória do primeiro elemento do arranjo. Para receber um vetor de inteiros por parâmetro em uma função, por exemplo, utilizamos int *vetor ou _________. Assinale a alternativa referente à instrução que preenche corretamente a lacuna:
A) int vetor[]
B) int *vetor[]
C) int[] vetor
D) int[] *vetor
E) int vetor[*]
ANSWER: A
19- (Médio) Funções são sub-rotinas que possuem um conjunto de instruções a ser executado quando chamada. Semelhantes a procedimentos, possuem a diferença de retornarem um valor para o processamento principal ou para a sub-rotina que a chamou. Dada a seguinte função em C:int quadrado(int n) { if (na recursividade não se aplica:
A) Expressão algébrica.
B) Fatorial.
C) Potenciação.
D) Série de Fibonacci.
E) Árvore genealógica.
ANSWER: A
25- (Difícil) O processo de passagem de parâmetros permite estabelecer uma linha de comunicação entre os conteúdos dos trechos de sub-rotinas e dos trechos de programa que chamam essas sub-rotinas. Dado o seguinte trecho de código em C:void quadrado(float *r, float *t);int main(voiD) { float a, b; printf("Entre com um numero complexo (2 inteiros): "); scanf("%d %d", &a, &B); quadrado(&a, &B); printf("O quadrado do numero eh %f + i%f\n", a, B);}Com base nesse código, é correto afirmar que as variáveis a e b:
A) Podem ser modificadas pela função printf(), porque a passagem de parâmetros é por referência.
B) São parâmetros formais na chamada da função quadrado() dentro da função main().
C) Não podem ser modificadas pela função quadrado(), porque a passagem de parâmetros é por valor.
D) Indicam, quando precedidas pelo caractere &, que os parâmetros podem ser modificados pelas funções scanf() e quadrado().
E) São utilizadas como passagem de parâmetros por resultado na função printf().
ANSWER: D
26- (Difícil) Os parâmetros servem como um ponto de comunicação bidirecional entre uma sub-rotina e o programa principal ou outra sub-rotina, pois possibilitam a passagem de valores da rotina chamadora ou sub-rotina chamadora à sub-rotina sendo chamada. Dado o seguinte programa em C, assinale a alternativa correta:#include void obtemReajuste(float salario, float perC) { if (salario = 100.00 && salario = 200.00 && salario = 300.00 && salario = 400.00 && salario valor e l->valor para suas declarações global e local, respectivamente.
ANSWER: D
28- (Difícil) Procedimentos são um conjunto de instruções com nome, início e fim, podendo ser chamado de qualquer lugar do programa, seja no processamento principal ou dentro de outra sub-rotina. Dado o seguinte programa em C:#include void calcula_quadrado(voiD) { int numero; printf("Informe um numero.: "); scanf("%d", &numero); if (numero > 0) numero *= numero; printf("Quadrado do numero: %d\n", numero);}int main(voiD) { int i; for (i = 1; i int aux(int n, int C) { if (n % c == 0 && n != 2) return 0; else if (c > n / 2) return 1; else return aux(n,c + 1);}int ehPrimo(int x) { return aux(x, 2);}int main(voiD) { int numero; printf("Digite um numero: "); scanf("%d",&numero); if (ehPrimo(numero)) printf("O numero eh primo\n"); else printf("O numero nao eh primo\n"); return 0;}
A) 2 não é o único número par considerado primo; 0 também o é.
B) Um valor muito alto informado em numero ocasiona um alto consumo de memória para determinar se é primo.
C) Os números serão incrementados para verificação da divisão até chegar ao valor informado pelo usuário.
D) O algoritmo resultará em erro, pois espera que o retorno da função ehPrimo() seja comparado com 1.
E) A recursividade é utilizada para percorrer todos os números primos em busca de um divisor para o valor especificado.
ANSWER: B