Buscar

ATIVIDADE N2 Prova Técnicas de Programação

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 5 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

Prévia do material em texto

Usuário 
Curso 
Teste 
Iniciado 
Enviado 
Status 
Resultado da tentativa 
Tempo decorrido 
Instruções 
Resultados exibidos Respostas enviadas, Respostas corretas, Comentários 
 Pergunta 1 
1 em 1 pontos 
 
 Para a manipulação de um arquivo, deve-se antes, realizar a sua abertura através do comando “ fopen()”. Tal comando permite associar o nome físico do arquivo assim como a sua forma de abertura. Para essa questão, analise as linhas de código a seguir: 
FILE *arq; 
arq = fopen(“arquivo.dat”,”wb+”); 
Assinale a alternativa que você julgue ser a correta. 
Resposta Selecionada: 
Será aberto um arquivo binário “ arquivo.dat” permitindo-se operações de leitura e de escrita. Sempre será criado um arquivo novo, destruindo o conteúdo caso já exista um arquivo com o mesmo nome. 
Resposta Correta: 
Será aberto um arquivo binário “arquivo.dat” permitindo-se operações de leitura e de escrita. Sempre será criado um arquivo novo, destruindo o conteúdo caso já exista um arquivo com o mesmo nome. 
Comentário da 
resposta: 
Parabéns! Sua resposta foi a correta! Você observou bem que foi incluído o símbolo ”+”, que indica que operações de escrita poderão ser realizadas além das operações de escrita do símbolo “w”. O “w” indica ainda, que sempre será criado um arquivo novo, 
destruindo o conteúdo do arquivo caso já exista. Além destas informações, encontramos o símbolo “b” denotando que o arquivo a ser aberto será do tipo binário. 
 
 Pergunta 2 
1 em 1 pontos 
 
 Para essa questão, suponha que um certo arquivo mantém, em sua primeira posição, a quantidade de registros armazenados. Após o indicativo da quantidade, são gravados os valores na forma <int,float>. Desta forma, o arquivo consiste em: 
<qtd_registros><int1><float1><int2><float2>...<intn,floatn>. 
Para essa questão, analise o código a seguir e preencha as lacunas de modo a representar o processo de criação de um arquivo novo e gravação de três registros. 
#include <stdio.h> 
 
 
void GravaArq(FILE *arq, int val_i,float val_f) 
{ 
fwrite(&val_i,sizeof(____),1,arq); 
fwrite(&val_f,sizeof(____),1,arq); 
} 
 
 
 
 
int main() 
{ 
FILE *arq; 
int qtd=3; 
arq=fopen("exercicio.dat","___"); 
if(arq==NULL) 
{ 
printf("Erro de abertura do arquivo (1).\n"); 
return 0; 
} 
fwrite(&qtd,sizeof(int),1,arq); 
GravaArq(arq,0,2.1); 
GravaArq(arq,10,45.21); 
GravaArq(arq,20,345.87); 
fclose(arq); 
return 0; 
} 
Assinale a alternativa que você julgue ser a correta. 
Resposta Selecionada: 
. int ; float ; wb . 
Resposta Correta: 
. int ; float ; wb . 
Comentário da 
resposta: 
Parabéns! Sua resposta foi a correta! Realmente, para realizar somente operações em um arquivo binário, deve-se usar o modo “ wb”. O processo de gravação ocorre mediante a utilização de “ fwrite()” onde o tamanho do item gravado deve acompanhar o tipo. No 
caso, foi utilizada a função “ sizeof()” vinculado ao tipo passado como parâmetro para a gravação. 
 
 Pergunta 3 
0 em 1 pontos 
 
 Em algumas ocasiões, surge a necessidade de se manipular informações organizadas em uma matriz (estrutura de dados homogênea bidimensional). Assim como toda variável, uma matriz também deve ser declarada. Dados os trechos de código abaixo, marque com “V” aquele (s) que 
você julgue estar correto (s) e, com “F”, o (s) incorreto (s): 
( ) int M[5][5]; 
( ) int M[5,5]; 
( ) int M[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}}; 
( ) int M[ ][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}}; 
( ) int [5]M[5]; 
Assinale a alternativa que contenha a sequência correta. 
Resposta Selecionada: 
V; F; V; F; F. 
Resposta Correta: 
V; F; V; V; F. 
Comentário da 
resposta: 
Infelizmente a sua resposta está incorreta. Para responder essa questão, lembre-se que uma matriz sempre deve obedecer possuir em sua declaração, as dimensões. Tente lembrar, também, qual seria a diferença entre a forma de instanciação de uma string e 
um vetor? 
 
 Pergunta 4 
1 em 1 pontos 
 
 Um programa consiste em criar uma sequência lógica de instruções de modo que possam ser manipuladas informações representadas na forma de variáveis. Em linguagens tipadas, como é o caso de C/C++, toda variável deve ser declarada associando à um tipo de dados. 
Dadas as declarações abaixo em C/C++, assinale com “C” a(s) que você julgue estar corretamente declarada(s) e, com “E” a(s) errada(s): 
( ) int a; b; 
( ) unsigned char x, y[10]; 
( ) int a, char b; 
( ) int [10] x; 
( ) float a; int b; 
Assinale a alternativa que contenha a ordem correspondente à sua marcação. 
Resposta Selecionada: 
E; C; E; E; C. 
Resposta Correta: 
E; C; E; E; C. 
Comentário da 
resposta: 
Parabéns! Sua resposta foi a correta! Realmente, as declarações em C/C++, caso envolvam duas ou mais variáveis, devem seguir a forma: “<tipo> variável1, variável2;”. Pode-se colocar declarações usando vários tipos de dados, porém, cada agrupamento deverá 
ser separado por um “;”. 
 
 Pergunta 5 
1 em 1 pontos 
 
 Programas devem manipular informações através das instruções. Porém, as informações devem ser escolhidas de acordo com o seu tipo, de modo que a escolha proporcione funcionalidade compatível com o seu objetivo e, também, com o objetivo de otimizar os recursos 
computacionais. Para essa questão, suponha que você desenvolverá um programa necessitando declarar variáveis cujos limites de valores a serem manipulados são: 0 a 60.000; 'a' até 'z'; ±150.000; ±20.000 e 0 a 230. 
Dentre as alternativas a seguir, marque aquela que você julgue possuir a sequência correta associando de forma mais otimizada, os tipos de dados às faixas de valores: 
Resposta Selecionada: 
char; char; long int; int; unsigned char. 
Resposta Correta: 
char; char; long int; int; unsigned char. 
Comentário da 
resposta: 
Parabéns! Sua resposta foi a correta! Você associou acertadamente os tipos inteiros às faixas de valores, observando que no modificador de tipo “ unsigned” o limite positivo seja dobrado, por exemplo, o tipo “ char” tem a sua faixa de -128 a 127, por sua vez, o 
“ unsigned char” pode variar de 0 a 255. 
 
 Pergunta 6 
1 em 1 pontos 
 
 Em certas situações, onde uma certa variável recebe, como valor de instanciação, um dentre dois valores, podemos substituir o comando “ if...else ” pelo comando condicional inline : o “ if ternário ”. Para essa questão, considere os seguintes trechos contendo as estruturas condicionais: 
(A) if(a == b) 
{ 
c=d; 
} 
else 
{ 
c=e; 
} 
(B) if(a==0) 
{ 
x = x + 1; 
} 
else 
{ 
x = x * b; 
} 
(C) if(a!=0) 
{ 
x=0; 
} 
else 
{ 
x=1; 
} 
(D) if((a == b)&&(c > d)) 
{ 
e = f; 
} 
else 
{ 
e = g; 
} 
Associe os trechos com comandos condicionais aos condicionais ternários a seguir: 
( ) x = (a) ? 0 : 1; 
( ) x = (!a) ? x++ : x*=b; 
( ) e=((a==b)&&(c>d)) ? e : f; 
( ) c=(a==b)?d:e; 
Escolha a opção que contém a sequência que você julgue ser a correta. 
Resposta Selecionada: 
C; B; D; A. 
Resposta Correta: 
C; B; D; A. 
Comentário da resposta: Parabéns! A sua resposta está correta! Você observou bem que a sintaxe genérica de um comando condicional ternário é: “ var = (expressão) ? valor_if : valor_else;”. 
 
 Pergunta 7 
1 em 1 pontos 
 
 Um programa é constituído por uma sequência de instruções que poderão ser dentre outras, condicionais. Instruções condicionais do tipo “ if ” envolve uma expressão a ser validada de forma a se proceder a escolha da sequência a ser processada. Para essa questão, suponha a 
existência de uma variável “ med ” e outra “ freq ”. A partir do código abaixo, complete os espaços de forma a seguir a regra de aprovação do aluno, considerando que a nota para a aprovação é 06.0 e a frequência mínima é de 75%. 
if((med __ 6) __ (freq __ __)) printf(“Aprovado”); 
else printf(“Reprovado”); 
Agora assinale a alternativa correta: 
Resposta Selecionada: 
.>= ; &&; >=; 75. 
Resposta Correta: 
.>= ; &&; >=; 75. 
Comentário da 
resposta: 
Parabéns! Sua resposta foi a correta! Você associou corretamente prestando atenção que o valor igual ao patamar mínimo é também fator de aprovação.Observou também que a unidade (por exemplo, “%”) não faz parte do valor da variável: ela é usada somente 
para a nossa representação e não para a representação interna do computador. 
 
 Pergunta 8 
1 em 1 pontos 
 
 Para que seja realizada uma alocação dinâmica, deve-se utilizar funções para a alocação, realocação e liberação da memória previamente alocada. Para essa questão, analise as afirmativas a seguir assinalando com V para verdadeiro e F para falso. 
 
 
( ) Pode-se usar a função “ realloc() ” mesmo em ponteiros que não foram previamente iniciados. 
( ) Toda a alocação de memória é feita em uma região da memória principal denominada “ heap ”. 
( ) Toda memória alocada dinamicamente deverá ser desalocada ao final da função “ main() ” mesmo que ela tenha sido alocada como uma variável local à uma outra função. 
( ) Deve-se sempre testar se a alocação foi bem sucedida antes de usar o ponteiro de forma efetiva. 
 
 
Assinale a alternativa que apresenta a sequência assinalada. 
Resposta Selecionada: 
F, V, F, V. 
Resposta Correta: 
F, V, F, V. 
Comentário da 
resposta: 
Parabéns! Sua resposta foi a correta! Realmente, antes da utilização do ponteiro (inclusive antes da realocação), deve-se proceder a alocação de memória. O espaço alocado no “ heap” deverá ser desalocado ao final de sua utilização; caso seja uma variável local, 
a desalocação deve ser realizada dentro da função na qual foi feita de definição. 
 
 Pergunta 9 
1 em 1 pontos 
 
 Para essa questão, suponha o seguinte enunciado. “A resistência de uma liga metálica se dá pelos percentuais de utilização de carbono misturados a outros elementos, essencialmente o ferro. Suponha a necessidade de se implementar uma função que, dada uma métrica de resistência 
(tipo de resistência – suponha que existam disponíveis 10 níveis de resistência) e um volume de ferro (em toneladas) calcule e retorne o percentual e a massa (em toneladas) de carbono a ser utilizada na liga metálica”. Para esse enunciado foi implementada uma função cuja chamada 
ocorrerá na forma: 
 
. . . 
float massaCarbono; 
massaCabono = CalculaQtdCarbono(tipo_resist,massaFerro, &percentual_carbono); 
. . . 
 
Assinale a opção abaixo que represente a interface mais apropriada para a questão: 
Resposta Selecionada: 
. float CalculaQtdCarbono(unsigned char, float, float *); . 
Resposta Correta: 
. float CalculaQtdCarbono(unsigned char, float, float *); . 
Comentário da 
resposta: 
Parabéns! Sua resposta foi a correta! Você interpretou corretamente o enunciado! Realmente, a função deve retornar dois valores: a massa de carbono (colocado como float em razão dos valores fracionários) e o percentual de carbono (passado como referência, 
como float, na lista de parâmetros da função). Foi utilizado o “ unsigned int” para o tipo da liga em função de uma escala com poucos valores (por exemplo, de 1 a 10). 
 
 Pergunta 10 
1 em 1 pontos 
 
 Em uma operação de recuperação de informações a partir de um arquivo, após a leitura de um item, deve-se sempre verificar se o final do arquivo foi alcançado. A informação de EOF ( End-Of-File – Final de Arquivo) pode ser obtida em diversas operações. Para essa questão, analise 
as linhas de código a seguir: 
I – info = fgetc(arq); 
II – fputs(buffer, sizeof(buffer), arq); 
III – fread(buffer,sizeof(buffer),1,arq); 
IV – fputc(carac,arq); 
Assinale a alternativa que você julgue ser a correta. 
Resposta Selecionada: 
Apenas a função da linha III não pode retornar EOF. 
Resposta Correta: 
Apenas a função da linha III não pode retornar EOF. 
Comentário da 
resposta: 
Parabéns! Sua resposta foi a correta! Apesar das funções das linhas II e IV serem de saída (gravação), podem retornar EOF em caso de erro. A função da linha I pode retornar EOF no caso do encontro de final de arquivo na operação de leitura. A função da linha 
III retorna a quantidade de itens lidos.

Continue navegando