Buscar

Atividade e Tecnica de programação-Copiar

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 9 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 9 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 9, do total de 9 páginas

Prévia do material em texto

01/12/2019 Blackboard Learn
https://anhembi.blackboard.com/webapps/late-Course_Landing_Page_Course_100-BBLEARN/Controller 1/9
      Revisar envio do teste: ATIVIDADE 2GRA1033 TÉCNICAS DE PROGRAMAÇÃO PNA (ON) - 201920.2160.01 Unidade 2
Revisar envio do teste: ATIVIDADE 2 
Usuário DIEGO AMARAL ROLA
Curso GRA1033 TÉCNICAS DE PROGRAMAÇÃO PNA (ON) - 201920.2160.01
Teste ATIVIDADE 2
Iniciado 01/12/19 19:38
Enviado 01/12/19 20:24
Status Completada
Resultado da tentativa 1,5 em 2,5 pontos  
Tempo decorrido 46 minutos
Resultados exibidos Respostas enviadas, Respostas corretas, Comentários
Pergunta 1
Resposta Selecionada:  
Resposta Correta:  
Feedback
da
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:
. float 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
0,25 em 0,25 pontos
01/12/2019 Blackboard Learn
https://anhembi.blackboard.com/webapps/late-Course_Landing_Page_Course_100-BBLEARN/Controller 2/9
resposta: (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
Resposta Selecionada:  
Resposta Correta:  
Feedback
da
resposta:
Para a evocação de uma função, algumas informações deverão ser armazenadas, como o endereço da linha que contém a evocação
(registrador PC – Program Counter – Contador de Programa), para que, quando a função for finalizada, o computador saiba voltar ao
ponto de chamada. Dentre as afirmativa abaixo, assinale com “V” aquela(s) que você julgar estar correta e, com “F”, a(s) falsa(s). 
  
( ) As informações para o retorno, em função da evocação da função, são empilhadas em uma região da memória principal do
computador chamada “ stack” (pilha).
( )  Não precisamos nos preocupar com a quantidade de evocações aninhadas (uma função chamando outra e assim por diante, em
uma ação de profundidade) independentemente dos dispositivo para o qual estamos implementando nosso código. 
( ) Funções recursivas são aquelas que demandam muito recurso da máquina. 
( ) O sistema operacional também empilha as informações decorrentes das funções associadas às interrupções do computador. 
  
Assinale a alternativa abaixo que contenha a sequência que você julgue ser a correta:
.V; F; V; V.
.V; F; F; V.
Infelizmente a sua resposta está incorreta. Para responder essa questão, pense que o retono para os pontos de
chamada devem ocorrer de ordem inversa à evocação. Pense, também, que as interrupções são uma espécie de funções
executadas por ocasião das demandas dos recursos dehardware/ software.
Pergunta 3
Resposta Selecionada:
 
Resposta Correta:
Com a recursividade, os laços de repetição são substituídos pelas chamadas recursivas. Esse tipo de implementação tem os seus
estudos aprofundados na área da computação denominada como matemática discreta. Para essa questão, pense em uma solução
recursiva, implementada em C, para resolver a expressão 2 n. Dentre as alternativas a seguir, escolha aquela que tiver uma
codificação que corresponda à solução. 
  
Escolha a opção correta:
.  int dois_a_n(int n) { if(n == 0) return 1; return 2*dois_a_n(n-1); } 
 .
0 em 0,25 pontos
0,25 em 0,25 pontos
01/12/2019 Blackboard Learn
https://anhembi.blackboard.com/webapps/late-Course_Landing_Page_Course_100-BBLEARN/Controller 3/9
 
Feedback
da
resposta:
.  int dois_a_n(int n) { if(n == 0) return 1; return 2*dois_a_n(n-1); }
 .
Parabéns! Sua resposta foi a correta! Você observou a relação entre a condição de parada e a variação do parâmetro
passado. Como a condição de parada é 0, os parâmetros devem ser passados de forma descrescente.
Pergunta 4
Gerar números aleatórios tem a sua serventia em diversas situações, tais como geração de sequências para testes de softwares, solução
inicial em problemas de otimização e definição do intervalo de tempo para o reenvio de informações em redes de computadores. Para o
teste, imaginemos um cenário onde dois jogares disputam uma partida de lançamento de dados – ganha aquele que obtiver maior
pontuação no dado lançado. Para simular esse cenário, imaginemos o código abaixo:
 
#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()
 
 
void Compara(int __jog1, int __jog2) 
{ 
  if(jog1 > jog2) printf("Jogador 1 vencedor (1=%d x 2=%d)\n",jog1,jog2); 
  else if (jog1 < jog2) printf("Jogador 2 vencedor!(1=%d x 2=%d)\n",jog1,jog2); 
  else printf("Empate (%d)\n",jog1); 
} 
  
___ Dado() 
{ 
  return ____; 
} 
  
int main() 
{ 
  srand(time(NULL)); 
  Compara(Dado(),Dado()); 
  return 0; 
} 
  
 
Assinale a opção abaixo que contenha os trechos de código para preencher as lacunas (o caracter “_” significa para deixar a lacuna vazia):
0 em 0,25 pontos
01/12/2019 Blackboard Learn
https://anhembi.blackboard.com/webapps/late-Course_Landing_Page_Course_100-BBLEARN/Controller 4/9
Resposta Selecionada:  
Resposta Correta:  
Feedback
da
resposta:
. *  ; *  ; int ; (rand()%6)+1 .
. __ ; __ ; int ; (rand()%6)+1 .
Infelizmente a sua resposta está incorreta. Para responder essa questão, observe que não há a necessidade das funções
retornar informações através de seus parâmetros. Para a geração do número aleatório, avalie a expressão relacionada à
função “ rand()” com os valores passíveis de serem gerados por um dado de jogo.
Pergunta 5
Resposta Selecionada:  
Resposta Correta:  
Feedback
da
resposta:
Modularizar um sistema significa dividí-lo em blocos funcionais e, estes subdividí-los em funções. É recomendável que as funções
tenham o seu comportamento bem pontual, ou seja, deve ser única a desempenhar uma função específica. Diante da questão sobre
modularização, assinale com “V” a(s) afirmativa(s) abaixo que você julgue como verdadeira(s) e, com (F), a(s) falsa(s). 
  
( ) Dificulta o processo de testes pelo fato de que, com a modularização, deve-se testar um número muito maior de funções . 
( ) Facilita a reutilização do código pois a funcionalidade de uma função pode fazer parte de uma outra parte do sistema. 
( ) O programa fica mais organizado, separado por funcionalidades. 
( ) A compreensão do código se torna mais exaustiva devido ao grande número de chamadas de funções na implementação. 
  
Escolha a opção correta:
.F ; V ; V ; F .
.F ; V ; V ; F .
Parabéns! Sua resposta foi a correta! Realmente, a modularização facilita o processo de verificação, testes, compreensão
e reaproveitamento de código pelo fato de que existe uma separação funcional do código assim como as funções são
implementadas de forma mais pontuais.
Pergunta 6
Na definição do protótipo da função, em sua interface, temos que definir o tipo de retorno da função e, também,a lista de
parâmetros. Para essa  questão, suponha o trecho de código a seguir: 
  
#include <stdio.h> 
#include <stdlib.h> 
  
int func(int a, int __b, char __c[]) 
{ 
0,25 em 0,25 pontos
0 em 0,25 pontos
01/12/2019 Blackboard Learn
https://anhembi.blackboard.com/webapps/late-Course_Landing_Page_Course_100-BBLEARN/Controller 5/9
Resposta Selecionada:
 
Resposta Correta:  
Feedback
da
resposta:
 a +=++__b; 
 itoa(a,c,10); 
 return a; 
} 
  
int main() 
{ 
 char c[10]; 
 int x=5, y=6; 
 printf("%d %s %d %d",func(x,&y,c),c,x,y); 
} 
  
  
Escolha a afirmativa que contém o resultado da impressão pela função “ printf” e os trechos a serem inseridos nas lacunas:
.12  12 ;  *  ; deixar em branco 
; & .
.12  12 ;  *  ;  deixar em branco ; * .
Infelizmente a sua resposta está incorreta. Por favor, dê uma melhor observada na chamada da função, localizada no
programa principal. Avalie se as variáveis estão sendo passadas por valor e por referência. Dê uma relembrada da
passagem de strings 
como parâmetro.
Pergunta 7
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); 
} 
  
0 em 0,25 pontos
01/12/2019 Blackboard Learn
https://anhembi.blackboard.com/webapps/late-Course_Landing_Page_Course_100-BBLEARN/Controller 6/9
Resposta Selecionada:
 
Resposta Correta:  
Feedback
da resposta:
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 ; deixar em branco ; deixar em branco 
; deixar em branco.
.int ;  * ;  deixar em branco ; * ; * ; & .
Infelizmente a sua resposta está incorreta. Por favor, dê uma melhor observada no ponto de instanciação das
variáveis para que se possa chegar à conclusão quanto ao tipo de passagem dos parâmetros.
Pergunta 8
Quando se implementa uma fução, devemos seguir a sintaxe da linguagem de programação utilizada e, também, realizar a definição de sua
interface de acordo com as nossas necessidades. Para essa questão, suponha o trecho de código a seguir para procurar uma sequência
dentro de uma cadeia de DNA:
 
#include <stdio.h> 
#include <string.h> 
  
___ ProcuraDNA(char ___dna[],char ___seq[],int ___ret[]) 
{ 
  int indice=0; 
  for(int i=0; i<strlen(dna); i++) 
    if(!strncmp(&(dna[i]),seq,3)) ret[indice++]=i; 
  ret[indice]=-1;   //apenas para marcar o último item adicionado 
0,25 em 0,25 pontos
01/12/2019 Blackboard Learn
https://anhembi.blackboard.com/webapps/late-Course_Landing_Page_Course_100-BBLEARN/Controller 7/9
Resposta Selecionada:  
Resposta Correta:  
Feedback
da
resposta:
} 
  
int main() 
{ 
  int i=0, pos[19]; 
  char str[19] = "GATGATCATGTCGTACATC",   //uma sequencia de DNA qualquer 
       seq_proc[4] = "ATG";  //Adenina, Timina, Guanina – uma cadeia exemplo 
  ProcuraDNA(str,seq_proc,pos); 
  printf("posicoes:"); 
  while(pos[i]!=-1) 
    { 
      printf("%d ",pos[i]); 
      i++; 
    } 
  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:
. void ; deixar em branco ; deixar em branco ; deixar em branco  .
.void ; deixar em branco ; deixar em branco ; deixar em branco  .
Parabéns! Sua resposta foi a correta! Você se atentou bem ao fato de que vetores, de forma como as strings, quando
passadas como parâmetros, já denotam passagem por referência. Sendo assim, os símbolos “*” e “&” não são
necessários.
Pergunta 9
Na computação, existem várias formas de representação numérica, dentre as quais, podemos citar as representações decimal,
hexadecimal, octal e binária. Para realizar a conversão, por exemplo, de um valor formatado na base decimal para uma base K , basta
realizar divisões sucessivas por K e coletar o último quociente e todos os restos das divisões em ordem inversa. 
Suponha a necessidade de criar uma função recursiva para a conversão de um número na base decimal para a representação binária
(base 2). Para essa questão, suponha o trecho a seguir:
 
#include <stdio.h> 
 
void Dec2Bin(int n) 
{  
  if(__) printf("%d",n); 
0,25 em 0,25 pontos
01/12/2019 Blackboard Learn
https://anhembi.blackboard.com/webapps/late-Course_Landing_Page_Course_100-BBLEARN/Controller 8/9
Resposta Selecionada:  
Resposta Correta:  
Feedback
da
resposta:
  else 
    { 
      ___; 
      ___; 
    } 
} 
 
int main() 
{ 
  
  Dec2Bin(14); 
  return 0; 
} 
 
Assinale a opção abaixo que contenha os trechos de código para preencher as lacunas:
.  n<2 ; Dec2Bin(n / 2) ; printf("%d",n%2) .
.  n<2 ; Dec2Bin(n / 2) ; printf("%d",n%2) .
Parabéns! Sua resposta foi a correta! Você interpretou corretamente o fato de a impressão dos restos das divisões
sucessivas é realizada na ordem reversa às divisões, ou seja, a impressão necessita ser do tipo “pós-ordem”, inserida
após a chamada recursiva. Como critério de parada, a cláusula que indica a não possibilidade de continuar as divisões
por 2.
Pergunta 10
Resposta Selecionada:  
Resposta Correta:  
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:
.  float CalculaIRPF(float, float *);  .
.  float CalculaIRPF(float, float *);  .
0,25 em 0,25 pontos
01/12/2019 Blackboard Learn
https://anhembi.blackboard.com/webapps/late-Course_Landing_Page_Course_100-BBLEARN/Controller 9/9
Domingo, 1 de Dezembro de 2019 20h24min39s BRT
Feedback
da
resposta:
Parabéns! Sua resposta foi a correta! Você interpretou corretamente o enunciado observando bem os valores
retornados pela função. Os valores retornados devem ser passados como referência usando o símbolo “ *” no protótipo
da função e “ &” na chamada da função.
 OK

Outros materiais