Buscar

TP - Prova N2 (A5)

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 7 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 7 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

PERGUNTA 1
1. Uma das vantagens de um arquivo binário consiste na possibilidade do uso direto de registros (estruturas de dados). Sendo assim, pode-se gravar ou recuperar, com apenas uma operação, todos os dados inseridos em tal estrutura de dados. Para essa questão, analise o trecho de código a seguir e preencha as lacunas.
TSTRUCT ts;
. . .
arq=fopen("registros.dat","rb+");
if(arq==NULL)
{
printf("Erro de abertura do arquivo.\n");
return 0;
}
________; //posicionar no início do arquivo
printf("Item a ser localizado: ");
scanf("%d",&item);
while(1)
{
________; //ler a estrutura
if(________) //testar se foi encontrado o final de arquivo
break;
if(ts.item==item)
{
//manipulação do registro encontrado...
Assinale a alternativa que você julgue conter a sequência correta do preenchimento das lacunas.
	
	
	rewind(arq) ; fread(&ts,sizeof(TSTRUCT),1,arq) ; feof(arq) .
	
	
	fseek(arq,0,SEEK_END) ; fread(&ts,sizeof(TSTRUCT),1,arq) ; feof(arq) .
	
	
	rewind(arq) ; fwrite(&ts,sizeof(TSTRUCT),1,arq) ; feof(arq) .
	
	
	rewind(arq) ; fread(&ts,sizeof(TSTRUCT),1,arq) ; eof(arq) .
	
	
	rewind(arq) ; fgets(&ts,sizeof(TSTRUCT),1,arq) ; feof(arq) .
1 pontos   
PERGUNTA 2
1. Quando construimos aplicações para que sejam executadas a partir do comando de linha (prompt ou console), temos a possibilidade de passarmos informações ao programa. Para tanto, usamos os parâmetros comumente identificados por “ argc ” e “ argv ”. Considerando o trecho:
 
 int main(int argc, char *argv[])
 
Analise as afirmativas a seguir, marcando com “V” a(s) verdadeira(s) e, com “F” a(s) falsa(s):
 
( ) caso colocarmos, em nosso código “ printf(“%s”,argv[0]) ”, será impresso o nome do próprio programa.
( ) caso não passemos nenhum parâmetro ao programa, “ argv ” assumirá o valor 0.
( ) o parâmetro “ argv ” é uma lista de strings .
( ) o parâmetro “ argc ” sempre será positivo e maior ou igual a 1.
 
Marque a opção que tiver a sequência que você julgue ser a correta:
	
	
	.F ; F; V ; F .
	
	
	.V ; F; F ; V .
	
	
	.V ; F; V ; V .
	
	
	.F ; V; F ; F .
	
	
	.V ; V; V ; F .
1 pontos   
PERGUNTA 3
1. Para essa questão, suponha o seguinte enunciado: “O imposto de renda incidirá sobre o salário de todos os assalariados de modo que o desconto seja proporcional ao seu salário e de acordo com as faixas de valores”. Para esse enunciado foi implementada uma função cuja chamada ocorrerá na forma:
 
. . .
float salarioLiquido;
salarioLiquido = CalculaIRPF(salario_bruto, &imposto_retido);
.  . .
 
Assinale a opção abaixo que represente a interface mais apropriada para a questão:
	
	
	.  int CalculaIRPF(float, float *);  .
	
	
	.  float CalculaIRPF(float, float);  .
	
	
	.  float CalculaIRPF(float *, float);  .
	
	
	.  float CalculaIRPF(float, float *);  .
	
	
	.  float CalculaIRPF(float *, float *);  .
1 pontos   
PERGUNTA 4
1. 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:
	
	
	.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.
	
	
	.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.
	
	
	.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.
	
	
	.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.
	
	
	.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.
1 pontos   
PERGUNTA 5
1. O armazenamento de informações em uma memória não volátil pode ser feito pelo uso de arquivos. Para tanto, um arquivo deverá ter suas ações realizadas através da manipulação de um descritor de arquivo. Dados os comandos abaixo, enumere-os, utilizando números de um a cinco, de acordo com a ordem que eles deverão aparecer na codificação.
( ) fwrite(buffer,sizeof(buffer),1,arq);
( ) arq = fopen(“arquivo.dat”,”rb+”);
( ) if(arq=NULL)
return;
( ) fclose(arq);
( ) FILE *arq;
Assinale a alternativa que você julgue ter a sequência de uso correta.
	
	
	1, 5, 3, 2, 4.
	
	
	4, 2, 5, 3, 1.
	
	
	3, 2, 4, 5, 1.
	
	
	4, 2, 3, 5, 1.
	
	
	4, 3, 2, 5, 1.
1 pontos   
PERGUNTA 6
1. Sobre um ponteiro, além as operações de instanciação, podem ser realizadas operações aritméticas, como a soma e a subtração. Aplicar operações de soma ou subtração implicam no deslocamento do ponteiro. Para essa questão, suponha o seguinte código:
 
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
 
int main()
{
int i=0,max;
char *charvet;
charvet=(char *)malloc(10*sizeof(char));
if(charvet==NULL)
{
printf("Erro de alocacao.\n");
return 0;
}
strcpy(charvet,"abcdefgh");
max=strlen(charvet);
for(;i<max; i++)
{
if(i%2)
printf("%c ",*charvet);
charvet++;
}
free(charvet);
return 0;
}
 
Assinale a alternativa que apresenta os valores impressos pela função “ printf ”.
	
	
	.a c e g.
	
	
	.b d.
	
	
	b d f h.
	
	
	.a b c d e f g h.
	
	
	.a c.
1 pontos   
PERGUNTA 7
1. Na linguagem C, encontramos dois tipos de arquivos: os arquivos textuais e os arquivos binários. Nos arquivos textuais, as informações são gravadas como strings, independentes de seu tipo; porém, para tal, devemos usar algumas funções específicas. Para os comandos abaixo, assinale com (T) aquele(s) que serve(m) unicamente para arquivos textuais, com (B) para arquivos binários e, com (A) aquele(s) que serve(m) para ambos.
( ) fwrite()
( ) fputs()
( ) fputc()
( ) fread()
( ) fopen()
Assinale a alternativa cuja ordem você julgue ser correta.
	
	
	T, B, B, T, A.
	
	
	B, T, T, B, T.
	
	
	B, A, A, B, A.
	
	
	B, T, T, B, A.
	
	
	A, T, T, B, A.
1 pontos   
PERGUNTA 8
1. Ponteiros são aplicáveis a todos os tipos de dados, inclusive aos registros. A manipulação de registros como ponteiros são extremamente úteis na passagem de parâmetros das funções. Com ponteiros, evita-se que todos os campos da estrutura sejam copiados para as variáveis locais inerentes à função. Para essa questão, suponha o seguinte trecho de código e complete as lacunas com o código correspondente para a impressão na tela, da rua e do número:
 
#include <stdio.h>
#include <stdlib.h>
typedef struct
{
char rua[30];
char bairro[30];
int num;
} S_Endereco;
int main()
{
S_Endereco *se;
se= (S_Endereco *)malloc(sizeof(S_Endereco));
scanf("%s", _____);
scanf("%d", _____);
free(se);
return 0;
}
 
Assinale a alternativa que contenha a sequência correta relativa ao preenchimento das lacunas.
	
	
	*se->rua ; &(se->num).
	
	
	se->rua ; &(se->num).
	
	
	se.rua ; &(se->num).
	
	
	se->rua ; &(se.num).
	
	
	se->rua ; se->num.
1 pontos   
PERGUNTA 9
1. Quando se implementa uma fução, devemos seguir a sintaxe da linguagem de programação utilizada e, também, realzar a definição de sua interface de acordo com as nossas necessidades. Para essa  questão, suponha o trecho de código a seguir:
 
#include <stdio.h>  //arquivo header para a funcao printf()
#include <stdlib.h> //arquivo header para as funcoes srand() e rand()
#include <time.h>   //arquivo header para a funcao time()
 
___ func1(int ___x, ___ a)
{
  ___x=rand()%a;
  return ___x*(rand()%5);
}
 
int main()
{
  int aleat,ret;
  int a=10;
  srand(time(NULL));  //iniciacao do gerador de numeros aleatorios
  for(int i=0; i<10;i++)
    {
      ret=func1(__aleat,a);
      printf("valor aleatorio gerado %d: %d (limitado %d) - ret funcao: %d.\n",
              i,aleat,a,ret);
    }
  return 0;
}
 
Escolha a afirmativa que contém o resultado da impressão pela função “ printf ” e os trechos a serem inseridos nas lacunas:
	
	
	.int
;  * ;  deixar em branco ; * ; deixar em branco ; & .
	
	
	.int
;  * ;  deixar em branco ; * ; * ; deixar em branco .
	
	
	.int ;  * ;  deixar em branco ; * ; * ; & .
	
	
	.int
;  * ; *  ; * ; * ; & .
	
	
	.int
;  deixar em branco ;  deixar em branco ; deixar em branco ; deixar em branco
; deixar em branco.
1 pontos   
PERGUNTA 10
1. Um ponteiro para ponteiro denota uma variável que armazena um valor através de uma dupla indireção. Sendo assim, um ponteiro referência um outro ponteiro que, por sua vez, aponta para um valor específico. Para essa questão, analise o código a seguir:
 
#include <stdio.h>
 
int main()
{
int a = 10, *pont, **pontpont;
pont = &a;
pontpont = &pont;
a = 12;
printf("pont = %d\t pontpont: %d\n", *pont,**pontpont);
return 0;
}
 
Assinale a alternativa que apresenta os valores impressos pela função “ printf() ”.
	
	
	.12 10.
	
	
	.11 11.
	
	
	12 12.
	
	
	.10 12.
	
	
	.10 10.

Outros materiais