Buscar

Tecnicas de programação - UAM

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

Curso
	CCO04097 TÉCNICAS DE PROGRAMAÇÃO GR3342202 - 202020.ead-11058.01
	Teste
	20202 - PROVA SUBSTITUTIVA (A6)
	Iniciado
	16/12/20 21:17
	Enviado
	16/12/20 22:08
	Status
	Completada
	Resultado da tentativa
	7 em 10 pontos  
	Tempo decorrido
	50 minutos
	Instruções
	Caso necessite a utilização do "EXCEL" clique no link ao lado -----------> excel.xlsx
	Resultados exibidos
	Respostas enviadas, Respostas corretas, Comentários
· Pergunta 1
1 em 1 pontos
	
	
	
	Linguagens estruturadas permitem que informações sejam armazenadas e recuperadas de memórias não voláteis. Porém, elas são dependentes de funções e estruturas exportadas pelo sistema operacional. Dadas as afirmativas a seguir, classifique-as V para verdadeiro e F para falso.
( ) Ponteiros de arquivos (“ FILE *”) devem ser alocados dinamicamente através do uso “ malloc()” antes de serem utilizados.
( ) Ponteiros de arquivos referenciam uma posição de memória mantida pelo sistema operacional que armazena atributos e status dos arquivos manipulados.
( ) Para a manipulação da posição corrente do arquivo podemos usar as funções “ ftell()” e “ fseek()” que devolvem e setam a posição corrente do arquivo, respectivamente.
( ) A função “fread ()” retorna EOF quando chegar ao final do arquivo.
Assinale a alternativa que você julgue ter a sequência correta.
	
	
	
	
		Resposta Selecionada:
	 
F, V, V, F.
	Resposta Correta:
	 
F, V, V, F.
	Feedback da resposta:
	Parabéns! Sua resposta foi a correta! Descritores de arquivos são estruturas mantidas pelo sistema operacional e são endereçados através dos ponteiros de arquivos, que são instanciados pelo uso da função “fopen ()”. A função “fread ()” retorna a quantidade de itens lidos.
	
	
	
· Pergunta 2
1 em 1 pontos
	
	
	
	Em arquivos textuais, quando desejamos substituir uma informação com o mesmo tamanho da nova informação, podemos realizar sobrescrita sem a necessidade de criação de arquivo temporário para receber a nova versão do conteúdo. Para essa questão, analise o código a seguir, que realiza a troca do caractere “i” pelo caractere “y” na primeira linha do arquivo. Em sua análise preencha as lacunas.
#include <stdio.h>
#include <string.h>
 
int main()
{
FILE *arq;
char linha[40];
long pos;
int i;
arq=fopen("atividade.txt","___");
if(arq==NULL)
{
printf("Erro de abertura do arquivo.\n");
return 0;
}
pos=_____; //armazenar a posicao corrente do ponteiro de arquivo.
fgets(linha,40,arq);
for(i=0;i<strlen(linha);i++)
if(linha[i]=='i')
linha[i]='y';
_____; //reposicionar no ponto anterior aa leitura
_____; //gravacao da linha.
fclose(arq);
return 0;
}
Assinale a alternativa que você julgue ser a correta.
	
	
	
	
		Resposta Selecionada:
	 
. r+ ; ftell(arq) ; fseek(arq,pos,SEEK_SET); fputs(linha,arq) .
	Resposta Correta:
	 
. r+ ; ftell(arq) ; fseek(arq,pos,SEEK_SET); fputs(linha,arq) .
	Feedback da resposta:
	Parabéns! Sua resposta foi a correta! Você deve ter notado que podemos salvar a posição do ponteiro do arquivo para que possamos restaurar a posição e sobrescrever o conteúdo. Para isso, foram usadas as funções “ ftell()” e “ fseek()”, respectivamente.
	
	
	
· Pergunta 3
1 em 1 pontos
	
	
	
	Funções são blocos funcionais modulares presentes nas linguagens de programação estruturadas. A criação de funções, por exemplo, em C, deve seguir a sintaxe: <tipo_de_retorno> nome_da_função (lista_de_parâmetros). Para essa questão, suponha o trecho de código a seguir:
 
int funcao(int a, int *b)
  {
     a++;
     *b = a * 2;
     return b+5;
  }
 
int main()
{
   int x=4,y=8,z;
   z = funcao(x,&y);
   printf(“%d    %d    %d\n”,x,y,z);
   return 0;
}
 
Assinale a alternativa que apresenta os valores impressos pela função “ printf ”:
	
	
	
	
		Resposta Selecionada:
	 
.4    10    15.
	Resposta Correta:
	 
.4    10    15.
	Feedback da resposta:
	Parabéns! Sua resposta foi a correta! Você utilizou, com sucesso, os conceitos de passagem de parâmetros por valor e por referência. No caso, realmente, devido à passagem por valor, a variável “ a”, apesar da alteração internamente à função, não influenciará o valor de “ x” - variável de origem.
	
	
	
· Pergunta 4
1 em 1 pontos
	
	
	
	Suponha a existência de um arquivo onde a primeira posição indica a quantidade de registros armazenados. Após o indicativo da quantidade, o arquivo armazena 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 a lacuna de modo que o programa imprima os valores relativos ao terceiro par “<int><float>”.
#include <stdio.h>
 
int main()
{
FILE *arq;
int valor_int;
float valor_float;
arq=fopen("exercicio.dat","rb+");
if(arq==NULL)
{
printf("Erro de abertura do arquivo.\n");
return 0;
}
fseek(arq,_______________,SEEK_SET);
fread(&valor_int,sizeof(int),1,arq);
fread(&valor_float,sizeof(float),1,arq);
printf("Terceiro registro: int=%d float=%f\n",valor_int,valor_float);
fclose(arq);
return 0;
}
Assinale a alternativa que você julgue ser a correta.
	
	
	
	
		Resposta Selecionada:
	 
( sizeof(int)+sizeof(float))*2+sizeof(int).
	Resposta Correta:
	 
(sizeof(int)+sizeof(float))*2+sizeof(int).
	Feedback da resposta:
	Parabéns! Sua resposta foi a correta! Você analisou corretamente o fato de que o terceiro registro corresponde ao deslocamento multiplicado por dois, pelo fato de que a numeração do registro se inicia em zero. Além do “ (sizeof(int)+sizeof(float))*2”, deve-se adicionar o deslocamento relativo ao valor da quantidade de registros, localizado no início do arquivo.
	
	
	
· Pergunta 5
0 em 1 pontos
	
	
	
	Uma das operações recorrentes em relação à manipulação de vetor consiste em identificar o maior ou o menor valor dentre aqueles armazenados. Para essa questão, considere o código apresentado abaixo:
#include <stdio.h>
#include <string.h>
int main()
{
int vet[10]={5, 2, 4, 9, 1, 3, 8, 6, 0, 7},maior;
int i,pos_maior=0;
maior=vet[0];
for(i=0; i<strlen(vet);i++)
if(vet[i]>maior)
{
maior = vet[i];
pos_maior = i;
}
printf("Maior valor: %d (pos = %d)", vet[pos_maior],pos_maior);
return 0;
}
A partir do código apresentado, avalie as afirmativas abaixo:
I – Pode-se substituir o bloco do comando “ for ” por
i=0;
while(vet[i])
{
if(vet[i]>maior)
{
maior = vet[i];
pos_maior = i;
}
i++;
}
II – O valor inicial da variável “ maior ” poderia ser substituído por um valor muito pequeno (ao invés de receber o conteúdo da primeira posição do vetor) porém, apresentaria uma vulnerabilidade pois correria o risco do vetor não possuir um valor superior ao instanciado.
III – O valor inicial de “i” no código apresentado poderia ser 1 ao invés de 0.
IV – Esse algoritmo seria o mais otimizado dentre os mecanismos de busca mesmo se o vetor já estivesse ordenado crescentemente.
Escolha, dentre as opções a seguir, a alternativa que você julgue ser a correta:
	
	
	
	
		Resposta Selecionada:
	 
Somente II é falsa.
	Resposta Correta:
	 
I, II e III são verdadeiras.
	Feedback da resposta:
	Infelizmente a sua resposta está incorreta. Analise melhor o código e pense que, para buscar o maior elemento em um vetor não ordenado, deve-se percorrer e testar todos os seus elementos.
	
	
	
· Pergunta 6
1 em 1 pontos
	
	
	
	Em algumas situações, temos a necessidade de conhecermos a quantidade de palavras em um arquivo textual. Para essa questão, analise o código a seguir e preencha as lacunas.
#include <stdio.h>
 
int ContPalavras(char linha[])
{
int cont=0,i=0,esp=0;
for(;linha[i]!='\x0';i++)
{
if((!esp) && (linha[i]!=' '))
{
esp=1;
cont++;
}
else
if(esp && (linha[i]==' '))
esp=0;
}
return cont;
}
int main()
{
FILE *arq;
char linha[40];
int cont=0;
arq=fopen("atividade.txt","___");
if(arq==NULL)
{
printf("Erro de abertura do arquivo.\n");
return 0;
}
while(1)
{
____(linha,40,arq);
cont+=ContPalavras(linha);
if(____)
break;
}
printf("Qtd de palavras = %d\n",cont);
fclose(arq);
return 0;
}
Assinale a alternativa que você julgue ser a correta.
	
	
	
	
		Resposta Selecionada:
	 
. r ; fgets ; feof(arq).
	Resposta Correta:
	 
. r ; fgets ; feof(arq) .
	Feedback da resposta:
	Parabéns! Sua resposta foi a correta! Você observou bem que o programa manipula um arquivo textual apenas para operações de leitura. A contagem das palavras foi feita linha a linha, usando-se, portanto, a função “ fgets()”. O laço deve ser interrompido ao encontrar o final de arquivo – teste feito a partir do valor de retorno da função “ feof()”.
	
	
	
· Pergunta 7
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.
	Feedback 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 8
0 em 1 pontos
	
	
	
	Em C standard , uma das funções usadas para a impressão de conteúdo na tela é o printf . Tal comando permite adequar a impressão ao tipo e ao formato da informação a ser exibida. Suponha que o usuário deseja realizar uma impressão no seguinte formato:
 
“Valor da média = 3.21 - valor do caracter 'A' na tabela ASCII = 65 (hexa= 41)”
Supondo que existam as seguintes variáveis instanciadas:
float media=3.21043891;
carac = 'A';
Preencha os espaços do comando com os formatos corretos:
printf(“Valor da média = __ - valor do caracter '__' na tabela ASCII = __ (hexa= __)”,media,carac,carac,carac);
Agora assinale a alternativa que contenha as marcações corretas.
	
	
	
	
		Resposta Selecionada:
	 
. %.2f ; %c ; %d; %d.
	Resposta Correta:
	 
.%.2f ; %c ; %d; %x.
	Feedback da resposta:
	Infelizmente a sua resposta está incorreta. Para responder essa questão, pense que a máscara da função “ printf” permite que uma mesma variável possa ser impressa em diferentes formatos – desde que seja respeitado o seu tipo.
	
	
	
· Pergunta 9
1 em 1 pontos
	
	
	
	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 ”.
	
	
	
	
		Resposta Selecionada:
	 
b d f h.
	Resposta Correta:
	 
b d f h.
	Feedback da resposta:
	Parabéns! Sua resposta foi a correta! Ao se incrementar um ponteiro, é realizado um deslocamento para a direita, no caso do “ char”, de um byte. Porém, em função do teste condicional, serão impressos apenas os valores das posições ímpares do vetor.
	
	
	
· Pergunta 10
1 em 1 pontos
	
	
	
	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.
	
	
	
	
		Resposta Selecionada:
	 
4, 2, 3, 5, 1.
	Resposta Correta:
	 
4, 2, 3, 5, 1.
	Feedback da resposta:
	Parabéns! Sua resposta foi a correta! É realmente esta a sequência! Apenas podemos realizar, por exemplo, operações de escrita se o arquivo estiver devidamente aberto. Para abrir, devemos usar a função “ fopen()” sobre um ponteiro de arquivo “ FILE *”. Depois da função “ fopen()”, é conveniente testar se a abertura foi bem sucedida. Após o uso, o arquivo deverá ser fechado com “ fclose()”.
	
	
	
Quarta-feira, 16 de Dezembro de 2020 22h08min18s BRT

Continue navegando