Informática, perguntado por dboracanedo, 1 ano atrás

Os compiladores C/C++, para realizar a verificação de consistência de uso das funções, faz uso dos arquivos de cabeçalhos ( headers ). Nestes arquivos, por exemplo, o protótipo das funções são declarados. Desta forma, o compilador verifica se as chamadas implementadas estão compatíveis com as definições das funções. Para essa questão, suponha a existência de dois arquivos: um contendo o arquivo header e outro contendo a implementação em C .

(A) Arquivo header :

#ifndef _ARQHEADER
#define _ARQHEADER

int func1(int *, int);
float func2(float, char []);
void func3(int *, int *, float);
int func4(char[],int, char);

#endif

(B) Arquivo de implementação

int main()
{
int a,b,c;
float f1,f2;
char str[20],carac;
c=func1(a,b); //Linha 1
f2=func2(f1,str[0]); //Linha 2
c=func3(&a, &b, f1); //Linha 3
c=func4(str,a,carac); //Linha 4
func1(&c,a); //Linha 5
return 0;
}

Analisando a parte de implementação com o arquivo header, assinale a alternativa que contém os possíveis erros que seriam acusados pelo compilador:

(A) Na linha 1, o parâmetro “a” não está sendo passado por referência (falta o “&”); na linha 2, está sendo passado o caracter da posição 0 e não toda a string
“str”; na linha 3, está sendo atribuído um valor à variável “c” por intermédio de uma função que nada retorna (func3); as demais linhas estão corretas.

(B) Na linha 1, o parâmetro “a” não está sendo passado por referência (falta o “&”); na linha 3, está sendo atribuído um valor à variável “c” por intermédio de uma função que nada retorna (func3); as demais linhas estão corretas.

(C) Na linha 1, o parâmetro “a” não está sendo passado por referência (falta o “&”); na linha 2, está sendo passado o caracter da posição 0 e não toda a string
“str”; as demais linhas estão corretas.

(D) Na linha 1, o parâmetro “a” não está sendo passado por referência (falta o “&”); na linha 2, está sendo passado o caracter da posição 0 e não toda a string
“str”; na linha 3, está sendo atribuído um valor à variável “c” por intermédio de uma função que nada retorna (func3); na linha 5, falta uma variável para receber o retorno da função “func1”. A linha 4 está correta.

(E) Na linha 2, está sendo passado o caracter da posição 0 e não toda a string “str”; na linha 3, está sendo atribuído um valor à variável “c” por intermédio de uma função que nada retorna (func3); as demais linhas estão corretas.

Soluções para a tarefa

Respondido por LarissaMoura3
1

(A) Na linha 1, o parâmetro “a” não está sendo passado por referência (falta o “&”); na linha 2, está sendo passado o caracter da posição 0 e não toda a string  “str”; na linha 3, está sendo atribuído um valor à variável “c” por intermédio de uma função que nada retorna (func3); as demais linhas estão corretas.

Os compiladores C/C++ são utilizados para se verificar a consistência de utilização das funções, fazendo uso dos arquivos de cabeçalhos, também denominados de headers.  

Considerando o exposto no enunciado da questão, temos que na linha 1, a variável não está sendo passada por ponteiro. Na linha 2, apenas está sendo passado o caractere da primeira posição. Na linha 3, a função é do tipo void, não existindo a necessidade de atribuição da variável C ao return da função.

Bons estudos!

Perguntas interessantes