Buscar

PROVA N2 A5 GRA1033 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 6 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 6 páginas

Prévia do material em texto

Usuário EDUARDO OLIMPIO RAMOS
Curso GRA1033 TÉCNICAS DE PROGRAMAÇÃO GR3342211 - 202110.ead-14912.01
Teste 20211 - PROVA N2 (A5)
Iniciado 18/06/21 11:56
Enviado 18/06/21 12:32
Status Completada
Resultado da tentativa 8 em 10 pontos  
Tempo decorrido 35 minutos
Instruções
Resultados exibidos Respostas enviadas, Respostas corretas, Comentários
Caso necessite a utilização do "EXCEL" clique no link ao lado -----------> excel.xlsx
Pergunta 1
Resposta Selecionada: 
Resposta Correta: 
Comentário
da
resposta:
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: 
  
. . . 
�oat massaCarbono; 
massaCabono = CalculaQtdCarbono(tipo_resist,massaFerro, &percentual_carbono); 
.  . . 
  
Assinale a opção abaixo que represente a interface mais apropriada para a questão:
. �oat CalculaQtdCarbono(unsigned char, float, float *); .
. float CalculaQtdCarbono(unsigned char, float, float *); .
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 2
Na linguagem C/C++, encontramos alguns comandos capazes de modificar o fluxo de execução de um
programa: “ return ” (retorno de uma função), “ break ” (finaliza, por exemplo, um laço de repetição) e “
continue ” que volta para a linha que contém a definição do laço de repetição (por exemplo, a linha que
contém a palavra “ for ”). Para essa questão, suponha que seja necessário implementar uma função
hipotética que, passados como parâmetros os valores de “ início ” e de “ �nal ” de uma contagem, imprima
os elementos de acordo com o seguinte conjunto de regras: não imprimir os números ímpares; caso seja
encontrado um valor múltiplo de 5, sair de laço de repetição; caso seja encontrado o valor 48, sair da função.
Para tanto, analise o código a seguir: 
  
  
#include <stdio.h> 
  
void func(int inicio, int �nal) 
{ 
1 em 1 pontos
1 em 1 pontos
https://anhembi.blackboard.com/bbcswebdav/pid-16229536-dt-content-rid-84766551_1/xid-84766551_1
Resposta Selecionada: 
Resposta Correta: 
Comentário
da
resposta:
  int i=inicio; 
  for(; i<�nal; i++) 
    {    
      if(i%2) ____; 
      printf("%d ",i); 
      if(!(i%5)) ____; 
      if(i==48) 
      { 
        printf("\nSaindo da funcao pois encontrou 48.\n"); 
        ____; 
      } 
    } 
  if(i==�nal) printf("\nsaiu do laco pelo limite da contagem\n"); 
  else printf("\nsaiu do laco pois encontrou um multiplo de 5\n"); 
} 
  
int main() 
{ 
  printf("Execucao 1:\n"); 
  func(6,15); 
  printf("Execucao 2:\n"); 
  func(46,55); 
  printf("Execucao 3:\n"); 
  func(36,39); 
  return 0; 
} 
  
Assinale a opção abaixo que contenha a ordem correta de aparição dos comandos “ return ”, “ break ” e “
continue ”:
. continue ; break ; return .
. continue ; break ; return .
Parabéns! Sua resposta foi a correta! Realmente, para pular os ímpares, deve-se incrementar o contador de
contagem e voltar ao início do laço de repetição, usando, para tal, o “ continue”. Por sua vez, a �nalização do
laço (quando for múltiplo de 5) é conseguido pelo comando “ break”. Por �m, para encerrar totalmente a
função, ao se deparar com o valor 48, utiliza-se o comando “ return”.
Pergunta 3
Resposta Selecionada: 
Resposta Correta: 
Comentário
da
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í�cas. 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.
B, T, T, B, A.
B, T, T, B, A.
Parabéns! Sua resposta foi a correta! As funções “ fputs()” e “ fputc()” são utilizadas exclusivamente nos
arquivos textuais para a gravação de strings e de caracter, respectivamente. Para os arquivos binários, utiliza-
1 em 1 pontos
resposta: se “ fwrite()” e “ fread()”. A abertura é realizada por meio da função “ fopen()” independentemente do
tipo do arquivo.
Pergunta 4
Resposta Selecionada: 
Resposta Correta: 
Comentário
da
resposta:
Para a manipulação de arquivos temos que, inicialmente, realizar a instanciação do ponteiro do arquivo por intermédio da
operação de abertura. Para tanto, usa-se a função “ fopen()” passando como parâmetros o nome físico do arquivo e o modo
de abertura. Para essa questão, suponha que o programa em questão, tenha em seu código, as seguintes linhas: 
if(! fread (&item,sizeof(tipo_do_item),1,arq)) 
return -1; 
... 
if(! fwrite (&item,sizeof(tipo_do_item),1,arq)) 
return -2; 
... 
Levando em conta as linhas de código acima, o fato de que o arquivo binário deve existir previamente e as suas informações
deverão ser mantidas, selecione a opção que contém a forma de abertura adequada.
. arq=fopen("arq.dat","rb+"); .
. arq=fopen("arq.dat","rb+"); .
Parabéns! Sua resposta foi a correta! O fato do código apresentar as funções “ fread()” e “ fwrite()” já
determina que está sendo manipulado um arquivo binário. Como o arquivo deve existir previamente e serão
realizadas operações de leitura e de escrita, o modo de abertura deverá ser, necessariamente “ rb+”.
Pergunta 5
Suponha que existe, em um arquivo textual, uma matriz 4x4 que relaciona os custos de um certo produto A (linhas) combinado
com um produto B (colunas) como ilustra o exemplo a seguir: 
00 03 06 02 
03 00 04 07 
06 04 00 01 
02 07 01 00 
O produto não poderá ser combinado com ele mesmo. Por exemplo, combinando-se o produto dois com o produto três,
teremos o valor 01. Cada valor de custo é representado, sempre, por dois caracteres e separados por um espaço em branco.
Analise o código a seguir que imprima, na tela, o custo da combinação solicitada pelo usuário e preencha as lacunas. 
#include <stdio.h> 
#include <string.h> 
#include <stdlib.h> 
int main() 
{ 
char linha[30],custoStr[3]; 
int prodA,prodB,i=0; 
FILE *arq; 
arq=fopen("matrizcustos.txt","___"); 
if(arq==NULL) 
{ 
printf("Erro de abertura de arquivo origem."); 
return 0; 
} 
printf("Produto A (de 0 a 3):"); 
scanf("%d",&prodA); 
printf("Produto B:(de 0 a 3): "); 
scanf("%d",&prodB); 
for(;i<=prodA;i++) 
1 em 1 pontos
1 em 1 pontos
Resposta Selecionada: 
Resposta Correta: 
Comentário
da
resposta:
____(linha,30,arq); 
printf("linha selecionada: %s\n",linha); 
strncpy(custoStr,&linha[___],2); 
custoStr[3]='\x0'; 
fclose(arq); 
printf("Custo = %d",atoi(custoStr)); 
return 0; 
} 
Assinale a alternativa que você julgue ser a correta.
. r ; fgets ; prodB*3 .
. r ; fgets ; prodB*3 .
Parabéns! Sua resposta foi a correta! Você associou corretamente os trechos de código às lacunas observando
de maneira certa o modo de abertura do arquivo (“ r”), a função de leitura de uma linha a partir de um
arquivo textual (“ fgets()”) e o deslocamento dentro da linha (“ prodB*3”).
Pergunta 6
Resposta Selecionada: 
Resposta Correta: 
Comentário
da
resposta:
Programas devem manipular informações através das instruções. Porém, as informações devem ser
escolhidas de acordocom 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:
char; char; long int; int; unsigned char.
char; char; long int; int; unsigned char.
Parabéns! Sua resposta foi a correta! Você associou acertadamente os tipos inteiros às faixas de valores,
observando que no modi�cador 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 7
Resposta Selecionada: 
Resposta Correta: 
Uma alocação dinâmica de memória consiste em alocar uma certa região de memória para receber
informações de um certo tamanho que poderá variar ao longo do processamento do programa. Para essa
questão, enumere as linhas de código a seguir de modo a representar a sequência correta que deverá ser
programada: 1 para a primeira linha de código que deverá ocorrer, 2 para a segunda e assim por diante: 
  
( ) vetor = (int *) malloc(sizeof(int)); 
( ) int *vetor; 
( ) free(vetor); 
( ) if(vetor==NULL) 
return; 
( ) *(vetor+i) = 5; 
  
Assinale a alternativa que apresenta a sequência correta.
2, 1, 3, 5, 4.
2, 1, 5, 3, 4.
1 em 1 pontos
0 em 1 pontos
Comentário
da
resposta:
Infelizmente a sua resposta está incorreta. Para responder essa questão, pense que apenas pode-se usar um
ponteiro após a sua completa criação. Pense, também, que toda região alocada dinamicamente deve ser
liberada ao �nal de processamento.
Pergunta 8
Resposta Selecionada: 
Resposta Correta: 
Comentário
da
resposta:
Uma variável do tipo “ string ” pode ser representada, também, como um ponteiro para “ char ”. Inicialmente,
o ponteiro referencia a posição de memória ocupada pela primeira letra da string . Podemos caminhar pela
string através do incremento do ponteiro que a representa. Para essa questão, analise o código apresentado
a seguir: 
  
#include <stdio.h> 
#include <string.h> 
  
void Imprimir(char *str, int tam) 
{ 
char *carac; 
for (carac = str; carac < str + tam; carac++) 
printf ("%c", *carac); 
} 
  
int main() 
{ 
char frase[10]="abcdefgh"; 
Imprimir(frase,strlen(frase)); 
return 0; 
} 
Assinale a alternativa que apresenta a saída da função “ printf() ”.
. hgfedcba.
abcdefgh.
Infelizmente a sua resposta está incorreta. Para responder essa questão, analise melhor a instanciação inicial
do ponteiro “ carac”. Analise, também, a manipulação do ponteiro “ carac”, respondendo à pergunta: o que
acontece quando incrementamos um ponteiro?
Pergunta 9
Na computação, muito se manipula informações no sistema binário de numeração. A representação binária
básica é chamada de BCD8421 . O número 8421 representa o valor de cada bit na posição i (2 i ) com i
iniciando em 0 na posição mais à direita. Por exemplo, o valor 1011 (2) equivale à 8 + 0 + 2 + 1 = 11 (10) . 
Suponha um número decimal armazenado em uma variável denominada “ decimal ” do tipo “ unsigned
char ” ( unsigned char decimal=103 ). Suponha a necessidade de converter esse número para o sistema
binário de numeração e armazená-lo em uma string “ numbin ”. 
Analise os trechos de código a seguir: 
I → for(i=0;i<8;i++,decimal/=2) 
numbin[i]=decimal%2+48; 
numbin[8]=0; 
II → for(i=7;i>=0;i--,decimal/=2) 
numbin[i]=decimal%2+48; 
numbin[8]=0; 
0 em 1 pontos
1 em 1 pontos
Sábado, 13 de Novembro de 2021 22h12min41s BRT
Resposta Selecionada: 
Resposta Correta: 
Comentário
da
resposta:
III → 
for(i=7;i>=0;i--) 
{ 
decimal = decimal / 2; 
numbin[i]=decimal%2+48; 
} 
numbin[8]=0; 
IV → 
for(i=7;i>=0;i--,decimal/=2) 
numbin[i]=decimal/2+48; 
numbin[8]=0; 
Após analisar os trechos acima, podemos dizer que realiza (m) a conversão de decimal para binário, apenas
o (s) código (s):
II e III.
II e III.
Parabéns! Sua resposta foi a correta! No caso, as alternativas II e III contém o mesmo código, porém alterando
apenas o local para a divisão da variável “decimal”. A soma por 48 foi realizada pelo fato de que o valor do
caractere “0”, na tabela ASCII, vale 48. Ao �nal, foi adicionado o caractere nulo à última posição da string (
numbin[8]=0;) para representar o seu �nal.
Pergunta 10
Resposta Selecionada: 
Resposta Correta: 
Comentário
da
resposta:
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:
.V ; F; V ; V .
.V ; F; V ; V .
Parabéns! Sua resposta foi a correta! Realmente, o parâmetro “ argv” sempre conterá pelo menos um item –
que é o nome do arquivo executável evocado para a execução, inserido na posição 0 do parâmetro “ argv”.
Desta forma, o “ argc” sempre será maior ou igual a 1.
1 em 1 pontos

Continue navegando