Buscar

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

Usuário 
 
Curso TÉCNICAS DE PROGRAMAÇÃO 
Teste 20211 - PROVA SUBSTITUTIVA (A6) 
Iniciado 
 
Enviado 
Status Completada 
Resultado da tentativa 7 em 10 pontos 
Tempo decorrido 
 
Instruções Caso necessite a utilização do "EXCEL" clique no link 
ao lado -----------> 
Resultados exibidos Respostas enviadas, Respostas corretas, Comentários 
• Pergunta 1 
0 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: 
unsigned int; char; long int; int; int. 
Resposta Correta: 
char; char; long int; int; unsigned char. 
Comentário 
da resposta: 
Infelizmente a sua resposta está incorreta. Para responder 
essa questão, reveja a faixa de valores abrangidos por 
cada tipo e reflita sobre o fato de que o modificador de 
tipo “ unsigned” faz com que a quantidade de valores 
negativos seja transformada em capacidade de 
representação de valores positivos. 
 
 
• Pergunta 2 
1 em 1 pontos 
Na programação em C, podemos encontrar duas formas distintas de se 
abrir um arquivo (textual ou binária) aliadas aos modos que esse arquivo 
será manipulado. Para essa questão, analise o código a seguir, que 
manipula um arquivo binário, e preencha a lacuna corretamente. 
. . . 
FILE *arq; 
int codigo; 
 
char buffer[35]="algo a ser escrito no arquivo\n"; 
arq=fopen("exercicio.dat","____"); 
if(arq==NULL) 
{ 
printf("Erro de abertura do arquivo.\n"); 
return 0; 
} 
... 
if(!fread(&codigo,sizeof(int),1,arq)) //caso o arquivo ainda esteja vazio 
codigo=0; 
else 
codigo++; 
... 
if(!fwrite(&codigo,sizeof(int),1,arq)) 
printf("erro na gravacao do codigo.\n"); 
else 
if(!fwrite(buffer,35,1,arq)) 
printf("Erro na gravacao do buffer.\n"); 
fclose(arq); 
. . . 
Considerando que, caso o arquivo não exista, será criado um novo e caso 
exista, os dados deverão ser mantidos, assinale a alternativa que 
corresponda ao preenchimento da lacuna. 
Resposta Selecionada: 
ab+. 
Resposta Correta: 
ab+. 
Comentário 
da resposta: 
Parabéns! Sua resposta foi a correta! Você observou 
corretamente a consideração final: “ caso o arquivo não 
exista, será criado um novo e caso exista, os dados 
deverão ser mantidos”. Caso fosse colocado “ r+”, o 
arquivo deveria existir para ser aberto; caso a abertura 
fosse “ w+”, o arquivo sempre seria criado. Então, sobra o 
modo “ a+”. Pelo fato de aparecer “ fwrite()” e “ fread()”, 
então, o arquivo é binário. Sendo assim, “ ab+”. 
 
 
• Pergunta 3 
1 em 1 pontos 
Uma das etapas iniciais da implementação das funções consiste na definição 
de suas interfaces, ou seja, definição dos tipos de retornos e de suas listas 
de parâmetros. Para essa questão, suponha o seguinte enunciado: “Um 
certa loja apresenta um programa de incentivo aos seus vendedores 
atribuindo premiações àqueles que realizaram mais vendas no mês 
(independentemente do valor vendido) e àqueles que conseguiram maiores 
montantes de venda (maior valor vendido independentemente do número de 
vendas efetuadas). As vendas estão lançadas em uma matriz – cada linha 
 
denota um vendedor e as colunas representam as vendas de cada 
vendedor. A última posição das colunas de cada vendedor contém o valor -1 
indicando o término dos lançamentos. Os nomes dos vendedores estão 
lançados em um vetor de strings – cada vendedor respresenta um índice do 
vetor“. 
 
Para tanto, serão criadas as funções abaixo: 
 
NomeVendedorMaiorQtdVendas( ); 
NomeVendedorMaiorValorVendas( ); 
 
Para a questão, suponha que a quantidade máxima de vendas vale 30 e os 
nomes têm o tamanho máximo de 40 caracteres. Assinale a opção abaixo 
que contenha as interfaces das funções apropriadas ao enunciado: 
Resposta 
Selecionada: 
 
. int NomeVendedorMaiorQtdVendas(float vendas[][30], 
char nomes[][40], 
 char nomemaior[]) 
; 
 float NomeVendedorMaiorValorVendas(float 
vendas[][30], char nomes[][40], 
 char 
nomemaior[]) . 
Resposta 
Correta: 
 
. int NomeVendedorMaiorQtdVendas(float vendas[][30], 
char nomes[][40], 
 char nomemaior[]) 
; 
 float NomeVendedorMaiorValorVendas(float 
vendas[][30], char nomes[][40], 
 char 
nomemaior[]) . 
Comentário 
da resposta: 
Parabéns! Sua resposta foi a correta! Você interpretou 
bem o enunciado realizando corretamente o tipo de 
retorno das funções e seus respectivos parâmetros. 
Podemos reforçar o fato da escolha do tipo “ int” para a 
maior quantidade de vendas (o número de vendas é um 
valor inteiro) e do tipo “ float” para o valor vendido (o 
montande de valor é uma grandeza que manipula os 
centavos, portanto, um valor do tipo real – float). 
Salientamos o fato de que, quando passamos matrizes 
como parâmetros, temos que informar o tamanho de pelo 
menos a última dimensão – essa foi o motivo de 
preenchermos o tamanho das colunas. 
 
 
• Pergunta 4 
1 em 1 pontos 
 
Uma das vantagens de se passar, como parâmetro de uma função, um vetor 
definido como ponteiro, consiste no fato de que a função pode se adequar a 
qualquer tamanho de parâmetro. Para essa questão, suponha a 
implementação que retornará a média das notas de alunos armazenados em 
um vetor. A finalização do vetor ocorre com a presença do valor “-1” 
posterior à última posição válida. Analise o código relativo à função e 
preencha as lacunas corretamente: 
#include <stdio.h> 
float Media(float ___notas) 
{ 
float soma = 0.0; 
int i=0; 
while(*(notas+i)!=-1) 
{ 
soma+=___; 
i++; 
} 
if(i==0) return 0; 
return soma / ___; 
} 
int main() 
{ 
float notas1[5]={8.0 , 7.0 , 6.5 , 8.3 , -1.0}; 
float notas2[8]={7.0 , 8.2 , 5.6 , 9.7 , 7.4 , 8.6 , 9.4 , -1.0}; 
printf("Media1 = %.1f\n",Media(notas1)); 
printf("Media2 = %.1f\n",Media(notas2)); 
return 0; 
} 
Assinale a alternativa que apresenta a sequência correta relativa ao 
preenchimento das lacunas. 
 
Resposta Selecionada: 
.* ; *(notas+i) ; i. 
Resposta Correta: 
.* ; *(notas+i) ; i. 
Comentário 
da resposta: 
Parabéns! Sua resposta foi a correta! Realmente um vetor 
pode ser implementado sob a forma de ponteiro. No caso 
do código da questão, o conteúdo deste vetor é acessado 
através do conteúdo do vetor deslocado “ i” posições (“ i” = 
índice). 
 
 
• Pergunta 5 
0 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, V, V. 
Resposta Correta: 
F, V, F, V. 
Comentário 
da resposta: 
Infelizmente a sua resposta está incorreta. Para 
responder essa questão, pense nas etapas que deverão 
ser respeitadas para a utilização de alocação dinâmica de 
memória e o local, na memória principal, na qual ocorreas alocações. 
 
 
• Pergunta 6 
1 em 1 pontos 
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: 
 
Resposta Selecionada: 
.V ; F; V ; V . 
Resposta Correta: 
 
.V ; F; V ; V . 
Comentário 
da resposta: 
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. 
 
• Pergunta 7 
1 em 1 pontos 
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() ”. 
 
Resposta Selecionada: 
abcdefgh. 
Resposta Correta: 
abcdefgh. 
Comentário 
da resposta: 
Parabéns! Sua resposta foi a correta! Você observou bem 
que o incremento do ponteiro “ carac” causa a 
referenciação do próximo caractere dentro da string “ str”. 
Não se esqueça que “ carac” foi instanciado com o 
ponteiro “ str”. 
 
 
• Pergunta 8 
0 em 1 pontos 
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. 
 
Resposta Selecionada: 
2, 1, 3, 5, 4. 
Resposta Correta: 
2, 1, 5, 3, 4. 
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 final de processamento. 
 
 
• Pergunta 9 
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 listagem de todos os registros 
armazenados no arquivo. 
#include <stdio.h> 
 
 
int main() 
{ 
FILE *arq; 
int qtd,valor_int,i; 
 
float valor_float; 
arq=fopen("exercicio.dat","___"); 
if(arq==NULL) 
{ 
printf("Erro de abertura do arquivo.\n"); 
return 0; 
} 
fread(&qtd,____,1,arq); 
for(i=0; i<qtd;i++) 
{ 
____(&valor_int,sizeof(int),1,arq); 
____(&valor_float,sizeof(float),1,arq); 
printf("[%d] int=%d float=%f\n",i,valor_int,valor_float); 
} 
fclose(arq); 
return 0; 
} 
Assinale a alternativa que você julgue ser a correta. 
Resposta Selecionada: 
. rb ; sizeof(int) ; fread ; fread . 
Resposta Correta: 
. rb ; sizeof(int) ; fread ; fread . 
Comentário 
da resposta: 
Parabéns! Sua resposta foi a correta! Você observou bem 
o fato de que, para somente a leitura de um arquivo 
binário, faz-se necessário apenas o modo “ rb” de 
abertura. Arquivos binários requerem a função “ fread()” 
para que seja processada a leitura do registro. 
 
 
• Pergunta 10 
1 em 1 pontos 
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: 
 
Resposta Selecionada: 
. float CalculaIRPF(float, float *); . 
Resposta Correta: 
 
. float CalculaIRPF(float, float *); . 
Comentário 
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. 
 
Segunda-feira, 28 de Junho de 2021 13h28min04s BRT 
 
	 Pergunta 1
	 Pergunta 2
	 Pergunta 3
	 Pergunta 4
	 Pergunta 5
	 Pergunta 6
	 Pergunta 7
	 Pergunta 8
	 Pergunta 9
	 Pergunta 10

Outros materiais