Buscar

TÉCNICAS DE PROGRAMAÇÃO - Prova N2

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 Prova N2 
Iniciado AJUDE – SIGA, CURTA, SALVE O TRABALHO, OBRIGADO 
Enviado 17/04/22 15:50 
Status Completada 
Resultado da tentativa 10 em 10 pontos 
Tempo decorrido 
 
Resultados exibidos Respostas enviadas, Respostas corretas, Comentários 
 
• Pergunta 1 
 
Ponteiros são aplicáveis a todos os tipos de dados, inclusive aos registros. A 
manipulação de registros como ponteiros são extremamente úteis na passagem de 
parâmetros das funções. Com ponteiros, evita-se que todos os campos da estrutura 
sejam copiados para as variáveis locais inerentes à função. Para essa questão, 
suponha o seguinte trecho de código e complete as lacunas com o código 
correspondente para a impressão na tela, da rua e do número: 
 
 
#include <stdio.h> 
#include <stdlib.h> 
typedef struct 
{ 
char rua[30]; 
char bairro[30]; 
int num; 
} S_Endereco; 
int main() 
{ 
S_Endereco *se; 
se = (S_Endereco *)malloc(sizeof(S_Endereco)); 
scanf("%s", _____); 
scanf("%d", _____); 
free(se); 
return 0; 
} 
 
 
Assinale a alternativa que contenha a sequência correta relativa ao preenchimento das 
lacunas. 
 
 
 
 
• 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 “final” 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 final) 
{ 
 int i=inicio; 
 for(; i<final; i++) 
 { 
 if(i%2) ____; 
 printf("%d ",i); 
 if(!(i%5)) ____; 
 if(i==48) 
 { 
 printf("\nSaindo da funcao pois encontrou 48.\n"); 
 ____; 
 } 
 } 
 if(i==final) 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”: 
 
 
• Pergunta 3 
Uma string, em C, também pode ser definida como um ponteiro para o tipo “char”. 
Quando manipulamos ponteiros, alguns cuidados devem ser tomados para que não 
haja risco de destruir, em função de sobreposição, informações previamente 
armazenadas em outras variáveis e espaços de endereçamento. 
 
 
Para essa questão, analise os seguintes trechos de código a seguir em relação a 
algum erro de implementação que pode acarretar na sobreposição de informações: 
 
 
I - char *str; 
strcpy(str,”Alo mundo!”); 
 
 
II - char *str; 
str = (char *) malloc(15); 
strcpy(str, “Alo mundo!”); 
 
 
III - char *str; 
char str1[15]=”Alo mundo!”; 
str = str1; 
 
 
IV - char *str[10]; 
strcpy(str, “Alo mundo!”); 
 
 
Com base na sua análise, assinale a alternativa que contenha as afirmativas que você 
considera corretas. 
 
 
 
• Pergunta 4 
Uma matriz esparsa é aquela formada com a maioria de suas células tendo o 
valor 0. Sendo assim, não é necessário o armazenamento de toda a estrutura da 
matriz e, sim, somente das células que contém valores não nulos. Para essa 
questão, analise o código a seguir e preencha as lacunas: 
 
 
typedef struct 
{ 
int coluna; 
float valor; 
} ESPARSA; 
. . . 
int **matriz; 
 
 
matriz = (____)malloc(sizeof(____)*QtdLinhas); 
for(i=0; i<QtdLinhas; i++) 
{ 
matriz[i] = (____)malloc(sizeof(____)*QtdElementos); 
AdicionaElementosLinha(matriz[i],ListaElementos); 
} 
 
 
Assinale a alternativa que apresenta a sequência correta para o preenchimento 
das lacunas. 
 
 
 
• Pergunta 5 
 
Na linguagem de programação C, podemos encontrar dois tipos básicos de arquivos: 
os arquivos binários e os arquivos texto. A forma de diferenciação, em relação à 
manipulação, consiste no uso de formas de abertura e funções específicas. Para essa 
questão, assinale, nas afirmativas abaixo, com (B) caso relacione-se aos arquivos 
binários e, com (T) caso relacione-se aos arquivos textuais. 
( ) Para manipular o arquivo, usa-se as funções “ fread()” e “ fwrite()”. 
( ) É totalmente legível caso seja aberto em editores de texto do tipo “bloco de notas”. 
( ) Por exemplo, uma informação numérica, ocupa neste tipo de arquivo, uma 
quantidade de bytes compatível com a quantidade de dígitos de seu valor. 
( ) Neste tipo de arquivo, tende-se a gastar menos espaço de armazenamento pois 
cada variável gasta exatamente o seu tamanho ocupado na memória principal; valor 
do retorno da função “ sizeof()”. 
Assinale a alternativa que apresente a sequência correta. 
 
 
• Pergunta 6 
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); 
 else 
 { 
 ___; 
 ___; 
 } 
} 
 
int main() 
{ 
 
 Dec2Bin(14); 
 return 0; 
} 
 
Assinale a opção abaixo que contenha os trechos de código para preencher as 
lacunas: 
 
 
 
 
 
 
 
• Pergunta 7 
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. 
 
 
 
 
• Pergunta 8 
 
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++) 
____(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.• Pergunta 9 
Para a implementação de programas computacionais, deve-se proceder, além do 
próprio código, à criação das variáveis. Criar uma variável significa definir um rótulo 
(nome) para uma posição de memória de forma a armazenar uma informação de um 
determinado tipo. Em linguagens de programação, existem regras para a definição do 
nome das variáveis. Pensando-se em C/C++, classifique a(s) variável(eis) correta(s) 
com “C” e, com “E” a(s) errada(s): 
( ) idade1 
( ) @email 
( ) _delta 
( ) tipo_documento 
( ) média 
( ) idPessoa 
Assinale a alternativa que corresponda à sequência correta. 
 
 
• Pergunta 10 
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.

Continue navegando