Buscar

Avaliação Final Programação II

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

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

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ê viu 3, do total de 90 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

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

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ê viu 6, do total de 90 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

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

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ê viu 9, do total de 90 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

Prévia do material em texto

AVALIAÇÃO FINAL PROGRAMAÇÃO II 
 
Questão 1: 
Sobre a instrução typedef, apresentada na unidade 25, assinale a alternativa correta. 
Acertou! A resposta correta é a opção B 
Justificativa: 
Gabarito: B 
Comentário: Como vimos, o uso de typedef cria um novo nome para algum tipo de 
dado já existente, permitindo que o referenciemos através de um termo mais simples, 
melhorando a legibilidade do código. 
 
A 
 
Essa instrução é usada para declarar novas structs em C. 
B 
 
Essa instrução é usada para definir um novo nome mais conveniente para algum tipo de dado. 
C 
 
Essa instrução é necessária na declaração de toda struct e serve para dar um nome à struct. 
D 
 
Essa instrução possui a desvantagem de diminuir a legibilidade do código. 
 
Questão 2: 
Analise o algoritmo a seguir, semelhante ao estudado na unidade 28, onde você aplicou em exemplos o 
conhecimento adquirido sobre os variados tipos de dados. Em seguida, assinale a alternativa correta 
sobre quais são os tipos de dados usados no programa. 
Algoritmo – Programa em C que usa vários tipos de dados 
1. #include <stdio.h> 
2. 
3. int main(void) 
4. { 
5. int matriz[2][2]; 
6. printf("Informe os valores\n"); 
7. int i, j; 
8. int soma = 0; 
9. for (i = 0; i < 2; i++){ 
10. for (j = 0; j < 2; j++){ 
11. scanf("%i", &matriz[i][j]); 
12. soma += matriz[i][j]; 
13. } 
14. } 
15. float media = soma / 4.0; 
16. printf("Media: %f\n", media); 
17. system("pause"); 
18. return 0; 
19. } 
Fonte: Elaborado pelos autores (2013). 
Resposta Errada! A resposta correta é a opção D 
 
Justificativa: 
Gabarito: D 
Comentário: A variável matriz é um array bidimensional do tipo int, e existem também 
as variáveis i, j e soma, que são do tipo int, e a variável media, que é do tipo float. 
A 
 
São usadas 7 variáveis do tipo int e uma do tipo float. 
B 
 
São usadas 4 variáveis do tipo int e uma do tipo float. 
C 
 
Só são usadas variáveis de tipos primitivos. 
D 
 
São usadas 3 variáveis do tipo int, uma do tipo float e um array bidimensional do tipo int. 
Questão 3: 
Sobre o que você estudou sobre o uso de ponteiros na programação em C e com base nas duas 
instruções em C a seguir, assinale a alternativa correta. 
char a = 'c'; 
char* b = &a; 
Acertou! A resposta correta é a opção C 
 
Justificativa: 
Gabarito: C 
Comentário: Como visto na unidade 19, a expressão &a acessa o endereço da 
variável a e o atribui ao ponteiro b. Logo, b aponta para a. 
 
A 
 
A variável a e a variável b possuem o mesmo valor, pois são do mesmo tipo. 
B 
 
O endereço da variável b é o mesmo da variável a. 
C 
 
A variável b possui o endereço da variável a, logo, b aponta para a. 
D 
 
A variável a possui o endereço da variável b, em forma de uma string. 
 
Questão 4: 
Com base no exemplo a seguir e no que você aprendeu sobre tipos abstratos de dados e structs, assinale 
a alternativa que apresenta corretamente o valor mostrado para o usuário na linha 19 do programa. 
Algoritmo – Exemplo de tipos abstratos de dados em C 
1. #include <stdio.h> 
2. #include <stdlib.h> 
3. 
4. struct triangulo_t{ 
5. float lados[3]; 
6. }; 
7. 
8. int main(void) 
9. { 
10. struct triangulo_t triangulo; 
11. triangulo.lados[0] = 3; 
12. triangulo.lados[1] = 4; 
13. triangulo.lados[2] = 10; 
14. float a = 0; 
15. int i; 
16. for (i = 0; i < 3; i++){ 
17. a += triangulo.lados[i]; 
18. } 
19. printf("%f\n", a); 
20. system("pause"); 
21. return 0; 
1. } 
Fonte: Elaborado pelo autor. 
Resposta Errada! A resposta correta é a opção D 
 
Justificativa: 
Gabarito: D 
Comentário: Conforme estudado na unidade 24, o programa cria uma struct e inicializa 
seu vetor de 3 posições, com os valores 3, 4 e 10. Em seguida, um comando de 
repetição soma todos os elementos desse vetor, o que resulta em 17. 
A 
 
0 
B 
 
3 
C 
 
10 
D 
 
17 
Questão 5 : 
A função fopen() da linguagem C é utilizada para abrir um arquivo, ela recebe como parâmetro 2 
argumentos, eles são, respectivamente: 
Resposta Errada! A resposta correta é a opção A 
Justificativa: 
Gabarito: A 
Conforme aprendemos na unidade 41, a função padrão fopen() é usada para abrir um 
arquivo. Ela recebe dois argumentos do tipo string: o primeiro argumento é o nome do 
arquivo (por exemplo, clientes.txt), o segundo argumento é a indicação do modo no 
qual o arquivo deve ser aberto. 
A 
 
Nome do Arquivo e Modo de Abertura 
B 
 
Nome do Arquivo e Variável de Ponteiro 
C 
 
Modo de Leitura e Modo de Escrita 
D 
 
Nome do Arquivo e Função de Leitura 
Questão 6 : 
Sobre a abordagem usada para criação de tipos abstratos de dados, vista na unidade 18, assinale a 
alternativa correta. 
Resposta Errada! A resposta correta é a opção A 
Justificativa: 
Gabarito: A 
Comentário: Em C, usam-se arquivos diferentes para definição de interface e 
implementação. As alternativas B e D descrevem conceitos opostos e a alternativa C 
está errada, pois as interfaces são definidas no arquivo com extensão .h. 
A 
 
A definição de um tipo abstrato de dados em C é geralmente feita em dois arquivos diferentes, um 
com extensão .h e outro .c. 
B 
 
Na criação de uma interface, define-se como cada funcionalidade do tipo de dados é implementada. 
C 
 
Em C, as interfaces são definidas sempre em arquivos com extensão .c, e para utilizá-las em um 
programa é preciso adicionar uma instrução do tipo #include "novo_tipo.c" no arquivo do programa. 
D 
 
Na criação da implementação de um tipo abstrato de dados, definimos quais funcionalidades ele 
terá, mas não definimos como cada funcionalidade deverá ser implementada. 
Questão 7 : 
Na unidade 41, aprendemos que para abrir um arquivo utilizando a linguagem C utilizamos a 
função fopen(), essa função recebe dois parâmetros, o primeiro é o nome do arquivo que queremos abrir 
e o segundo o modo de abertura. Qual o parâmetro deve ser passado para a função para abrir o arquivo 
para leitura? 
Resposta Errada! A resposta correta é a opção C 
Justificativa: 
Gabarito: C 
Como vimos o parâmetro que deve ser passado para leitura de um arquivo é “r”, ele 
abre um arquivo texto para leitura. O arquivo deve existir antes de ser aberto. 
A 
 
“a” 
B 
 
“l” 
C 
 
“r” 
D 
 
“w” 
Questão 8 : 
O termo persistência de dados é usado para as atividades de: 
Resposta Errada! A resposta correta é a opção C 
Justificativa: 
Gabarito: C 
Na unidade 39, vimos que o termo “persistência de dados” é usado para as atividades 
de armazenamento e recuperação de dados na memória secundária. 
A 
 
Armazenamento e recuperação de dados em memória principal. 
B 
 
Atribuição e exclusão de valor em variáveis transientes. 
C 
 
Armazenamento e recuperação de dados em memória secundária. 
D 
 
Atualização e consulta de dados da memória principal. 
Questão 9 : 
Sobre a passagem de parâmetros por referência na chamada de funções, assinale a alternativa correta. 
Resposta Errada! A resposta correta é a opção A 
Justificativa: 
Gabarito: A 
Comentário: Conforme estudado na unidade 21, uma das utilidades da passagem de 
parâmetros por referência é permitir o compartilhamento de variáveis entre 
diferentes funções. 
A 
 
Uma das utilidades na passagem de parâmetros por referência é permitir que outra função trabalhe com as 
mesmas variáveis que a função chamadora. 
B 
 
Tanto a linguagem C quanto a linguagem C++ possuem suporte à passagem direta de parâmetros por 
referência. 
C 
 
O desreferenciamento, usado para acessar o valor apontado por um ponteiro, também pode ser usado para 
acessar o endereço de uma variável que não seja ponteiro. 
D 
 
A instrução *x = 1; está errada na linguagem C, pois nãopodemos usar asteriscos antes do nome de uma 
variável à esquerda do símbolo de igual (=). 
Questão 10 : 
Dado o programa a seguir e com base no que você estudou na unidade 12, assinale a alternativa correta. 
Algoritmo – Exemplo do uso de variáveis globais e locais 
1. 1.#include <stdio.h> 
2. 2.#include <stdlib.h> 
3. 3. 
4. 4.static int var = 10; 
5. 5. 
6. 6.int main(void) 
7. 7.{ 
8. 8. int x; 
9. 9. scanf("%d", &x); 
10. 10. if (x > 10){ 
11. 11. int c = 4; 
12. 12. printf("%13d \n", c); 
13. 13. } 
14. 14. printf("%d \n", var); 
15. 15. float var = 1.5; 
16. 16. printf("%f \n", var); 
17. 17. system("pause"); 
18. 18. return 0; 
19. 19.} 
Fonte: Elaborado pelo autor (2013). 
Resposta Errada! A resposta correta é a opção C 
Justificativa: 
Gabarito: C 
Comentário: Isso é permitido em C apenas quando uma das variáveis é global e a outra 
é local. No caso, a variável var da linha 4 é global e a da linha 15, local. 
A 
 
Por ser uma variável global, o escopo da variável var vai da linha 4 até a linha 19. 
B 
 
Na linha 16, o valor 10 é impresso para o usuário. 
C 
 
Existem duas variáveis var nesse programa, e isso é permitido em C. 
D 
 
A palavra reservada static é usada na declaração de constantes. 
 
 
Questão 11 : 
Dado o programa apresentado a seguir e com base no que você estudou na unidade 11, assinale a 
alternativa correta. 
Algoritmo – Exemplo do uso de variáveis 
1. 1.#include <stdio.h> 
2. 2.#include <stdlib.h> 
3. 3. 
4. 4.void uma_funcao(void) 
5. 5.{ 
6. 6. int a; 
7. 7. for (a = 10; a > 0; a--){ 
8. 8. printf("%d \n", a); 
9. 9. } 
10. 10.} 
11. 11. 
12. 12.int main(void) 
13. 13.{ 
14. 14. int x; 
15. 15. int y; 
16. 16. scanf("%d", &x); 
17. 17. y = 5; 
18. 18. if (x > y){ 
19. 19. int z = 4; 
20. 20. } 
21. 21. uma_funcao(); 
22. 22. system("pause"); 
23. 23. return 0; 
24. 24.} 
Fonte: Elaborado pelo autor (2013). 
Resposta Errada! A resposta correta é a opção D 
Justificativa: 
Gabarito: D 
Comentário: A instrução da linha 19 consiste na declaração e inicialização da variável z 
em uma única instrução, o que é possível em C. 
A 
 
O escopo da variável a se inicia na linha 6 e vai até a linha 24. 
B 
 
Sempre que o programa é executado, são declaradas 4 variáveis locais. 
C 
 
As variáveis x e y são inicializadas nas linhas 14 e 15, respectivamente. 
D 
 
A variável z é declarada e inicializada na linha 19. 
Questão 12 : 
Sobre a abordagem usada para criação de tipos abstratos de dados, vista na unidade 18, assinale a 
alternativa correta. 
Resposta Errada! A resposta correta é a opção B 
Justificativa: 
Gabarito: B 
Comentário: Como visto na unidade 18, definimos as interfaces em arquivos .h e 
implementações em arquivos .c, de forma que possamos usar instruções #include para 
incluir as interfaces em diversos arquivos .c de implementação. 
A 
 
A definição de um tipo abstrato de dados em C é geralmente separada em duas partes, a interface e a 
implementação, ambas descritas em um arquivo com extensão .h. 
B 
 
Em C, criamos interfaces geralmente em arquivos com extensão .h e descrevemos a implementação dessas 
interfaces em arquivos com extensão .c. 
C 
 
A criação de um tipo abstrato de dados novo é interessante principalmente em um cenário onde o tipo criado 
será usado apenas em uma única aplicação. 
D 
 
Não poderíamos criar em C um tipo abstrato de dados chamado String, pois strings já são criadas através de 
vetores de caracteres (char[]). 
Questão 13 : 
Na unidade 42, aprendemos sobre leitura e escrita de registros, quais são as funções utilizadas para este 
propósito? 
Acertou! A resposta correta é a opção D 
Justificativa: 
Gabarito: D 
Como aprendemos, para conseguir ler e escrever registros em um arquivo de texto, 
teremos que usar as funções de entrada e saída formatada, são elas: fscanf() e 
fprintf(). 
A 
 
fgets() e puts() 
B 
 
scanf() e printf() 
C 
 
fgetc() e fputc() 
D 
 
fscanf() e fprintf() 
Questão 14 : 
Com base no que você estudou sobre o comando de repetição, assinale a alternativa correta. 
Resposta Errada! A resposta correta é a opção A 
Justificativa: 
Gabarito: A 
Comentário: Como visto na unidade 3, nesse comando de repetição o bloco é sempre 
executado pelo menos uma vez. 
A 
 
No comando de repetição com teste no fim não é possível que o bloco de instruções não seja executado 
nenhuma vez. 
B 
 
Os comandos de repetição estudados existem em C, mas não costumam aparecer em outras linguagens de 
programação. 
C 
 
Todos os tipos de comandos de repetição fazem uso de uma variável de controle. 
D 
 
O bloco de instruções dentro de um comando de repetição não pode ser vazio. 
Questão 15 : 
Analise o algoritmo a seguir, semelhante ao estudado na unidade 28, onde você aplicou em exemplos o 
conhecimento adquirido sobre os variados tipos de dados. Em seguida, assinale a alternativa correta 
sobre quais são os tipos de dados usados no programa. 
Algoritmo – Programa em C que usa vários tipos de dados 
1. #include <stdio.h> 
2. 
3. int main(void) 
4. { 
5. int matriz[2][2]; 
6. printf("Informe os valores\n"); 
7. int i, j; 
8. int soma = 0; 
9. for (i = 0; i < 2; i++){ 
10. for (j = 0; j < 2; j++){ 
11. scanf("%i", &matriz[i][j]); 
12. soma += matriz[i][j]; 
13. } 
14. } 
15. float media = soma / 4.0; 
16. printf("Media: %f\n", media); 
17. system("pause"); 
18. return 0; 
19. } 
Fonte: Elaborado pelos autores (2013). 
Acertou! A resposta correta é a opção D 
Justificativa: 
Gabarito: D 
Comentário: A variável matriz é um array bidimensional do tipo int, e existem também 
as variáveis i, j e soma, que são do tipo int, e a variável media, que é do tipo float. 
A 
 
São usadas 7 variáveis do tipo int e uma do tipo float. 
B 
 
São usadas 4 variáveis do tipo int e uma do tipo float. 
C 
 
Só são usadas variáveis de tipos primitivos. 
D 
 
São usadas 3 variáveis do tipo int, uma do tipo float e um array bidimensional do tipo int. 
Questão 16 : 
Sobre os conceitos de variáveis e constantes, assinale a alternativa correta. 
Resposta Errada! A resposta correta é a opção B 
Justificativa: 
Gabarito: B 
Comentário: Como visto na unidade 10, o escopo das variáveis pode ser uma estrutura 
de seleção, de repetição, uma função ou até mesmo o programa inteiro. Programas 
não podem acessar variáveis que não pertencem a eles. A memória principal do 
computador não armazena dados de programas que não estão em execução. A 
alternativa D é falsa pois quando constantes e variáveis saem de escopo, elas deixam 
de existir, e logo seu espaço na memória deixa de ter relevância, e pode ser usado 
para armazenar outros dados do programa ou de outros programas. 
A 
 
Em C, é possível um programa acessar dados de variáveis que não pertencem a ele. 
B 
 
Em C, podemos criar variáveis que existem apenas dentro do escopo de funções ou estruturas de seleção ou 
repetição. 
C 
 
A memória principal do computador possui a função de armazenar todos os dados usados por todos os 
programas, mesmo quando eles não estão em execução. 
D 
 
Constantes e variáveis só ficam armazenadas na memória enquanto estiverem sendo usadas pelo programa. 
 
Questão 17 : 
Analise o código a seguir. 
 
Figura – Exemplo de Algoritmo – Atividade. 
Fonte: Elaborada pelo autor (2013). 
 
Escolha a única alternativa que representa corretamente o número da linha na qual a instrução 
fclose(arquivo) deve ser inserida para fechamento correto do arquivo. 
Resposta Errada! A resposta correta é a opção C 
Justificativa: 
Resposta: C 
O arquivo deve ser fechado após o laço se encerrarquando todos os dados já 
estiverem sido visitados e antes do método se encerrar. 
A 
 
Na linha 3, pois o correto é fechar o arquivo assim que ele seja aberto. 
B 
 
Na linha 8, para que o arquivo seja fechado cada vez que o laço enquanto seja executado. 
C 
 
Após a linha 10, para que o arquivo seja fechado antes do encerramento do método listar. 
D 
 
Na linha 4, dentro do if(arquivo == NULL), para que o arquivo seja fechado somente se ocorrer erro na 
abertura deste. 
Questão 18 : 
Sobre o tópico de linguagens de programação estudado na unidade 6, assinale a alternativa correta. 
Acertou! A resposta correta é a opção C 
Justificativa: 
Gabarito: C 
Comentário: Java de fato foi influenciada por C, inclusive tendo sintaxe e parte da 
semântica muito semelhantes. 
A 
 
FORTRAN e COBOL foram uma das primeiras linguagens de programação, antes mesmo de surgirem as 
linguagens de máquina. 
B 
 
A linguagem COBOL foi influenciada pela linguagem C, que é uma linguagem mais antiga e mais usada. 
C 
 
A linguagem Java foi bastante influenciada pela linguagem C, e hoje ambas são amplamente usadas. 
D 
 
Embora diferentes, linguagens como C e Java, costumam ser usadas na criação dos mesmos tipos de sistemas 
computacionais. 
Questão 19 : 
Sobre as constantes e funções matemáticas, vistas na unidade 15, assinale a alternativa correta. 
Acertou! A resposta correta é a opção B 
Justificativa: 
Gabarito: B 
Comentário: M_E e M_PI são realmente constantes, e como tais, seus valores não 
podem ser alterados. Essas constantes estão definidas no arquivo math.h da biblioteca 
de C. A letra A está errada pois é possível realizar a mudança de bases mostrada no 
conteúdo. 
A 
 
A biblioteca de C fornece apenas as funções log() e log10() para cálculo respectivamente do logaritmo na base 
e e do logaritmo na base 10. É impossível então calcular um logaritmo na base 2 usando essas funções 
B 
 
M_E e M_PI são constantes matemáticas definidas no arquivo math.h, e como tais, seus valores não podem 
ser alterados durante a execução de nenhum programa. 
C 
 
O tipo de dados double usado nas funções matemáticas vistas é igual ao tipo de dados float. 
D 
 
Embora sejam números reais com diversas casas após a vírgula, as constantes M_E e M_PI de C armazenam 
exatamente o valor das constantes e e Pi, respectivamente. 
Questão 20 : 
Sobre tipologias de linguagens, responda: o que são linguagens de alto nível? 
Resposta Errada! A resposta correta é a opção C 
Justificativa: 
Gabarito: C 
Comentário: Na unidade 7, estudamos que abstração é uma redução do objeto que 
está sendo estudado, até um ponto onde é possível descrevê-lo usando apenas a 
linguagem em questão. Há vários conceitos que usamos na programação e que 
abstraem conceitos bem maiores. Nesse cenário, quanto mais abstrações a linguagem 
tiver, maior será o seu nível. 
A 
 
São linguagens complexas e difíceis de aprender. 
B 
 
São linguagens com fins específicos para pesquisa em inteligência artificial e robótica. 
C 
 
São linguagens como Java e C++, que possuem altos níveis de abstrações. 
D 
 
São linguagens com alto poder de processamento, como linguagens de máquina. 
 
 
 
Questão 21 : 
Sobre o conceito de tipos abstratos de dados estudado na unidade 23, assinale a alternativa correta. 
Resposta Errada! A resposta correta é a opção D 
Justificativa: 
Gabarito: D 
Comentário: As Structs são o principal mecanismo disponibilizado pela linguagem C 
para a criação de tipos abstratos de dados. 
A 
 
O uso de tipos abstratos de dados, diferentes dos tipos primitivos de C, permite um maior desempenho aos 
programas, pois eles executam seu código de forma mais rápida. 
B 
 
Manutenibilidade é a facilidade com que o programa tem de realizar a manutenção dos dados que ele usa. 
C 
 
A linguagem C é uma das linguagens que possui maior suporte a tipos abstratos de dados. 
D 
 
Uma das formas de se criar um tipo abstrato de dados em C é através de structs. 
Questão 22 : 
Analise o código a seguir. 
 
Figura – Exemplo de Algoritmo – Atividade. 
Fonte: Elaborada pelo autor (2013). 
 
Escolha a única alternativa que representa corretamente o número da linha na qual a instrução 
fclose(arquivo) deve ser inserida para fechamento correto do arquivo. 
Acertou! A resposta correta é a opção C 
Justificativa: 
Resposta: C 
O arquivo deve ser fechado após o laço se encerrar quando todos os dados já 
estiverem sido visitados e antes do método se encerrar. 
A 
 
Na linha 3, pois o correto é fechar o arquivo assim que ele seja aberto. 
B 
 
Na linha 8, para que o arquivo seja fechado cada vez que o laço enquanto seja executado. 
C 
 
Após a linha 10, para que o arquivo seja fechado antes do encerramento do método listar. 
D 
 
Na linha 4, dentro do if(arquivo == NULL), para que o arquivo seja fechado somente se ocorrer erro na 
abertura deste. 
Questão 23 : 
Analise o algoritmo a seguir, semelhante ao estudado na unidade 28, onde você aplicou em exemplos o 
conhecimento adquirido sobre os variados tipos de dados. Em seguida, assinale a alternativa correta 
sobre quais são os tipos de dados usados no programa. 
Algoritmo – Programa em C que usa vários tipos de dados 
1. #include <stdio.h> 
2. 
3. int main(void) 
4. { 
5. int matriz[2][2]; 
6. printf("Informe os valores\n"); 
7. int i, j; 
8. int soma = 0; 
9. for (i = 0; i < 2; i++){ 
10. for (j = 0; j < 2; j++){ 
11. scanf("%i", &matriz[i][j]); 
12. soma += matriz[i][j]; 
13. } 
14. } 
15. float media = soma / 4.0; 
16. printf("Media: %f\n", media); 
17. system("pause"); 
18. return 0; 
19. } 
Fonte: Elaborado pelos autores (2013). 
Acertou! A resposta correta é a opção D 
Justificativa: 
Gabarito: D 
Comentário: A variável matriz é um array bidimensional do tipo int, e existem também 
as variáveis i, j e soma, que são do tipo int, e a variável media, que é do tipo float. 
A 
 
São usadas 7 variáveis do tipo int e uma do tipo float. 
B 
 
São usadas 4 variáveis do tipo int e uma do tipo float. 
C 
 
Só são usadas variáveis de tipos primitivos. 
D 
 
São usadas 3 variáveis do tipo int, uma do tipo float e um array bidimensional do tipo int. 
Questão 24 : 
Com base no que você estudou sobre os tipos de dados homogêneos na unidade 31, analise o código a 
seguir e responda qual variável do programa possui tipo de dados composto e homogêneo. 
Algoritmo – Atividade 
1. struct caracteres{ 
2. char a; 
3. char b; 
4. }; 
5. 
6. int main(void) 
7. { 
8. int uma_matriz[2][2] = { 
9. {1, 0}, 
10. {-1, 2} 
11. }; 
12. struct caracteres uma_instancia; 
13. uma_instancia.a = 'x'; 
14. uma_instancia.b = 'y'; 
15. return 0; 
16. } 
Fonte: Elaborado pelo autor (2013). 
Resposta Errada! A resposta correta é a opção B 
Justificativa: 
Gabarito: B 
Comentário: Arrays e matrizes são tipos de dados compostos homogêneos. Os 
campos a e b não são compostos, e a struct uma_instancia é heterogênea. 
A 
 
uma_instancia 
B 
 
uma_matriz 
C 
 
a 
D 
 
b 
Questão 25 : 
Sobre os tipos de dados primitivos de C, assinale a alternativa correta. 
Resposta Errada! A resposta correta é a opção B 
Justificativa: 
Gabarito: B 
Comentário: Como visto na unidade 26, o tipo char aceita números, e estes devem 
pertencer ao intervalo de -128 a 127. 
 
A 
 
O tipo de dado char permite o armazenamento de números, logo seria correto atribuir o valor 1000 a uma 
variável char. 
B 
 
O tipo de dado char permite o armazenamento de números, logo seria correto atribuir o valor 100 a uma 
variável char. 
C 
 
Como strings são formadas por valores do tipo primitivo char, o tipo string também é considerado um tipo 
primitivo.D 
 
Em C, quando atribuímos a uma variável de tipo primitivo um valor fora do seu intervalo de representação, um 
erro ocorre e o programa para de ser executado. 
Questão 26 : 
Sobre a abordagem usada para criação de tipos abstratos de dados, vista na unidade 18, assinale a 
alternativa correta. 
Acertou! A resposta correta é a opção A 
Justificativa: 
Gabarito: A 
Comentário: Em C, usam-se arquivos diferentes para definição de interface e 
implementação. As alternativas B e D descrevem conceitos opostos e a alternativa C 
está errada, pois as interfaces são definidas no arquivo com extensão .h. 
A 
 
A definição de um tipo abstrato de dados em C é geralmente feita em dois arquivos diferentes, um 
com extensão .h e outro .c. 
B 
 
Na criação de uma interface, define-se como cada funcionalidade do tipo de dados é implementada. 
C 
 
Em C, as interfaces são definidas sempre em arquivos com extensão .c, e para utilizá-las em um 
programa é preciso adicionar uma instrução do tipo #include "novo_tipo.c" no arquivo do programa. 
D 
 
Na criação da implementação de um tipo abstrato de dados, definimos quais funcionalidades ele 
terá, mas não definimos como cada funcionalidade deverá ser implementada. 
Questão 27 : 
Com base no que você estudou sobre manipulação de string, assinale a alternativa correta. 
Resposta Errada! A resposta correta é a opção B 
Justificativa: 
Gabarito: B 
Comentário: Como explicado na unidade 4, a Linguagem C usa como padrão de 
codificação de caracteres a tabela ASCII. 
A 
 
Ao criar uma string em C de forma litera, precisamos escrever também o caractere nulo no texto da string, 
como em char uma_string[]="aluno\0";. 
B 
 
A Linguagem C utiliza por padrão os símbolos contidos na tabela ASCII. 
Questão 28 : 
De acordo com os estudos da unidade 43, qual é a estrutura de dados que faz um armazenamento 
temporário e no encerramento do programa apaga todos os dados armazenados em memória principal? 
Acertou! A resposta correta é a opção C 
Justificativa: 
Resposta: C 
Comentário: O vetor faz um armazenamento temporário, que no encerramento do 
programa apaga todos os dados armazenados em memória principal. O arquivo faz o 
armazenamento em memória secundária com a persistência dos dados 
(armazenamento permanente de grande quantidade de dados). 
A 
 
Arquivo binário 
B 
 
Arquivo-texto 
C 
 
Vetor 
D 
 
Arquivos 
Questão 29 : 
Em um arquivo-texto, foram executadas rotinas de append conforme as instruções a seguir. 
 
Append(‘a’); 
Append(‘b’); 
Append(‘c’); 
 
Escolha, entre as opções a seguir e com base nos estudos da unidade 43, a única alternativa que 
representa corretamente o resultado de como ficará o arquivo após essas instruções. 
Acertou! A resposta correta é a opção D 
Justificativa: 
Reposta: D 
A função de append consiste em inserir um elemento sempre no final da estrutura de 
dados; dessa forma, ao final da operação, os elementos do arquivo estarão na mesma 
ordem da inserção. 
A 
 
c, a, b 
B 
 
a, a, a 
C 
 
c, b, a 
D 
 
a, b, c 
Questão 30 : 
Na unidade 41, vimos sobre leitura e escrita de strings em arquivos, aprendemos que a 
função fgets() serve para: 
Resposta Errada! A resposta correta é a opção B 
Justificativa: 
Gabarito: B 
Conforme aprendemos a função fgets() lê do arquivo e guarda a linha do arquivo na 
variável que está esperando o retorno da função, parando a leitura se for encontrada 
uma mudança de linha. 
A 
 
Gravar uma string em um arquivo. 
B 
 
Ler uma string do arquivo. 
C 
 
Abrir o arquivo e ler uma string. 
D 
 
Fechar o arquivo depois de ler uma string. 
 
 
Questão 31 : 
Com base no que você estudou na unidade 3 sobre o comando de repetição, assinale a alternativa 
correta. 
Resposta Errada! A resposta correta é a opção C 
Justificativa: 
Gabarito: C 
Comentário: O comando só é executado se a condição for verdadeira. Logo, na 
primeira vez em que for falsa, o comando será interrompido. 
A 
 
O bloco de instruções dentro de um comando de repetição pode ter qualquer número finito de instruções, 
porém não pode ser vazio. 
B 
 
No comando de repetição com teste no início não é possível que o bloco de instruções não seja executado 
nenhuma vez. 
C 
 
Nos comandos de repetição, a condição definida só é avaliada com valor falso uma única vez na execução do 
comando. 
D 
 
O comando i++ utilizado em comandos de repetição com controle, é usado geralmente na etapa de 
inicialização do comando. 
Questão 32 : 
Com base no exemplo a seguir e no que você aprendeu sobre tipos abstratos de dados e structs, assinale 
a alternativa que apresenta corretamente o valor mostrado para o usuário na linha 19 do programa. 
Algoritmo – Exemplo de tipos abstratos de dados em C 
1. #include <stdio.h> 
2. #include <stdlib.h> 
3. 
4. struct triangulo_t{ 
5. float lados[3]; 
6. }; 
7. 
8. int main(void) 
9. { 
10. struct triangulo_t triangulo; 
11. triangulo.lados[0] = 3; 
12. triangulo.lados[1] = 4; 
13. triangulo.lados[2] = 10; 
14. float a = 0; 
15. int i; 
16. for (i = 0; i < 3; i++){ 
17. a += triangulo.lados[i]; 
18. } 
19. printf("%f\n", a); 
20. system("pause"); 
21. return 0; 
1. } 
Fonte: Elaborado pelo autor. 
Acertou! A resposta correta é a opção D 
Justificativa: 
Gabarito: D 
Comentário: Conforme estudado na unidade 24, o programa cria uma struct e inicializa 
seu vetor de 3 posições, com os valores 3, 4 e 10. Em seguida, um comando de 
repetição soma todos os elementos desse vetor, o que resulta em 17. 
A 
 
0 
B 
 
3 
C 
 
10 
D 
 
17 
Questão 33 : 
Sobre o conceito de tipos abstratos de dados estudado na unidade 23, assinale a alternativa correta. 
Acertou! A resposta correta é a opção D 
Justificativa: 
Gabarito: D 
Comentário: As Structs são o principal mecanismo disponibilizado pela linguagem C 
para a criação de tipos abstratos de dados. 
A 
 
O uso de tipos abstratos de dados, diferentes dos tipos primitivos de C, permite um maior desempenho aos 
programas, pois eles executam seu código de forma mais rápida. 
B 
 
Manutenibilidade é a facilidade com que o programa tem de realizar a manutenção dos dados que ele usa. 
C 
 
A linguagem C é uma das linguagens que possui maior suporte a tipos abstratos de dados. 
D 
 
Uma das formas de se criar um tipo abstrato de dados em C é através de structs. 
Questão 34 : 
Sobre o assunto de strings, visto na unidade 17, assinale a alternativa correta. 
Resposta Errada! A resposta correta é a opção A 
Justificativa: 
Gabarito: A 
Comentário: Ela descreve exatamente como é a representação de strings em Pascal. 
As outras alternativas estão erradas, pois: o tipo String de Pascal é usado para 
armazenar strings; a tabela ASCII reduzida só representa 128 caracteres; e a linguagem 
Java não possui tipo primitivo de strings. 
A 
 
Em Pascal, existe um tipo de dados primitivo para armazenamento de strings, embora ele internamente seja 
implementado como um array de caracteres. 
B 
 
A tabela ASCII, usada em C para codificação padrão de caracteres, suporta até 256 caracteres em sua versão 
regular e reduzida. 
C 
 
A linguagem Java, ao contrário de C, possui um tipo primitivo de dados para armazenamento de strings. 
D 
 
O tipo primitivo para armazenamento de strings em Pascal se chama Char. 
Questão 35 : 
Qual a finalidade da função feof()? 
Acertou! A resposta correta é a opção C 
Justificativa: 
Resposta: C 
Comentário: A função feof() significa “End of file”, ou seja, final do arquivo, e retorna 
verdadeiro ou falso indicando se é ou não final do arquivo passado como parâmetro. 
A 
 
Verificar se o arquivo está aberto. 
B 
 
Verificar se o arquivo está fechado. 
C 
 
Verificar se é final do arquivo. 
D 
 
Verificar se é inícioVerificar se é início do arquivo. do arquivo. 
Questão 36 : 
Sobre os tipos de dadosheterogêneos estudados na unidade 32, analise o código a seguir e responda 
qual variável do programa possui tipo de dados composto e heterogêneo. 
Algoritmo – Atividade 
1. struct caracteres{ 
2. char a; 
3. char b; 
4. }; 
5. 
6. int main(void) 
7. { 
8. char matriz[5][6]; 
9. struct caracteres uma_instancia; 
10. uma_instancia.a = 'x'; 
11. uma_instancia.b = 'y'; 
12. return 0; 
13. } 
Fonte: Elaborado pelo autor (2013). 
Acertou! A resposta correta é a opção B 
Justificativa: 
Gabarito: B 
Comentário: Tanto o array bidimensional matriz quanto os campos a e b não são 
compostos, restando apenas a struct uma_instancia, que é heterogênea. 
A 
 
matriz 
B 
 
uma_instancia 
C 
 
a 
D 
 
b 
Questão 37 : 
Com base no que você estudou sobre strings na unidade 17, assinale a alternativa correta. 
Resposta Errada! A resposta correta é a opção C 
Justificativa: 
Gabarito: C 
Comentário: Variáveis do tipo char são números, podem armazenar no máximo 256 
valores diferentes e Pascal não usa o caractere '\0'. 
A 
 
Uma variável do tipo char não pode ser tratada como um número. 
B 
 
Se usarmos uma variável do tipo char para armazenar caracteres, conseguiremos armazenar no máximo 128 
caracteres diferentes. 
C 
 
Não existe um tipo primitivo de armazenamento de strings em C. 
D 
 
Em Pascal também se usa um caractere '\0' no fim da string para facilitar o cálculo do seu tamanho. 
Questão 38 : 
Sobre o processo de compilação e execução de programas citado na unidade 8, assinale a alternativa 
correta. 
Acertou! A resposta correta é a opção B 
Justificativa: 
Gabarito: B 
Comentário: Como explicado no texto, ambas as linguagens são compiladas, e a 
ferramenta que usamos para compilar nossos programas é o Dev-C++. O prompt de 
comando do Windows é usado apenas para interface textual, não gráfica. O 
compilador usado para o Windows não pode ser usado para o Linux pois cada 
implementação de um compilador funciona para apenas um sistema operacional. 
A 
 
O prompt de comando é usado para executar programas que possuem interface gráfica. 
B 
 
Linguagens como C e C++ são linguagens compiladas, pois seu código é analisado por um compilador, que gera 
um executável do programa. 
C 
 
O compilador que usamos para compilar nossos programas e executá-los no sistema Windows também 
poderia ser usado para executar os programas no sistema Linux. 
D 
 
Saber como é implementada uma linguagem de programação não ajuda o usuário da linguagem a programar 
melhor usando essa linguagem. 
Questão 39 : 
Sobre a abordagem usada para criação de tipos abstratos de dados, vista na unidade 18, assinale a 
alternativa correta. 
Resposta Errada! A resposta correta é a opção B 
Justificativa: 
Gabarito: B 
Comentário: Como visto na unidade 18, definimos as interfaces em arquivos .h e 
implementações em arquivos .c, de forma que possamos usar instruções #include para 
incluir as interfaces em diversos arquivos .c de implementação. 
A 
 
A definição de um tipo abstrato de dados em C é geralmente separada em duas partes, a interface e a 
implementação, ambas descritas em um arquivo com extensão .h. 
B 
 
Em C, criamos interfaces geralmente em arquivos com extensão .h e descrevemos a implementação dessas 
interfaces em arquivos com extensão .c. 
C 
 
A criação de um tipo abstrato de dados novo é interessante principalmente em um cenário onde o tipo criado 
será usado apenas em uma única aplicação. 
D 
 
Não poderíamos criar em C um tipo abstrato de dados chamado String, pois strings já são criadas através de 
vetores de caracteres (char[]). 
Questão 40 : 
Sobre os tipos de dados heterogêneos, analise o código a seguir e responda qual ou quais variáveis do 
programa possuem tipo de dados composto e heterogêneo. 
Algoritmo – Atividade 
1. struct estrutura{ 
2. int matriz_a[2][2]; 
3. int matriz_b[3][3]; 
4. }; 
5. 
6. int main(void) 
7. { 
8. struct estrutura uma_estrutura; 
9. uma_estrutura.matriz_a[0][0] = 500; 
10. uma_estrutura.matriz_a[0][1] = 35; 
11. int uma_matriz[2][2]; 
12. return 0; 
13. } 
Fonte: Elaborado pelo autor (2013). 
Resposta Errada! A resposta correta é a opção D 
Justificativa: 
Gabarito: D 
Comentário: Structs são heterogêneas, pois aceitam dados de qualquer tipo (como foi 
estudado na unidade 32). A única instância de struct no exemplo acima é a 
variável uma_estrutura. 
A 
 
uma_matriz, matriz_a e matriz_b 
B 
 
matriz_a e matriz_b 
C 
 
uma_estrutura, matriz_a e matriz_b 
D 
 
uma_estrutura 
 
 
 
Questão 41 : 
Sobre o conceito de tipos abstratos de dados, assinale a alternativa correta. 
Acertou! A resposta correta é a opção C 
Justificativa: 
Gabarito: C 
Comentário: Manutenibilidade é a capacidade de se modificar ou adicionar novas 
funcionalidades a um programa, ou seja, a facilidade com que se realiza manutenção 
do software, como visto na unidade 23. 
A 
 
Não é possível abstrair conceitos complexos usando tipos abstratos de dados. 
B 
 
Reusabilidade é uma característica importante em programas de computador e uma das formas de coloca-la 
em prática em C é usando diversos comandos de repetição. 
C 
 
Manutenibilidade é a capacidade de se realizar a manutenção de um programa de computador, adicionando 
ou modificando suas funcionalidades. 
D 
 
O uso de enums é a forma mais usada de criar tipos abstratos de dados em C. 
Questão 42 : 
Sobre a criação de tipos abstratos de dados em C e C++, assinale a alternativa correta. 
Resposta Errada! A resposta correta é a opção D 
Justificativa: 
Gabarito: D 
Comentário: Como visto na unidade 25, as palavras private e public de C++ permitem 
que restrinjamos algumas variáveis ou funções da classe para que sejam usadas 
apenas de dentro da própria classe, melhorando a segurança da estrutura. 
A 
 
A criação de tipos de dados abstratos em C++ também é feita através da criação de structs, assim como em C. 
B 
 
As classes de C++ são iguais às structs de C. 
C 
 
Structs são mais avançadas que classes porque nelas podemos definir diferentes escopos para variáveis, 
melhorando a segurança do código. 
D 
 
Classes possuem a capacidade de definir membros privados ou públicos, restringindo algumas partes da classe 
e melhorando o funcionamento dela. 
Questão 43 : 
Na unidade 42, aprendemos sobre leitura e escrita de registros, quais são as funções utilizadas para este 
propósito? 
Acertou! A resposta correta é a opção D 
Justificativa: 
Gabarito: D 
Como aprendemos, para conseguir ler e escrever registros em um arquivo de texto, 
teremos que usar as funções de entrada e saída formatada, são elas: fscanf() e 
fprintf(). 
A 
 
fgets() e puts() 
B 
 
scanf() e printf() 
C 
 
fgetc() e fputc() 
D 
 
fscanf() e fprintf() 
Questão 44 : 
Sobre as funções matemáticas da biblioteca padrão de C, assinale a alternativa correta. 
Acertou! A resposta correta é a opção A 
Justificativa: 
Gabarito: A 
Comentário: O arquivo math.h possui a definição de toda a biblioteca matemática 
padrão de C, como mostrado na unidade 5. 
A 
 
Para usarmos funções da biblioteca matemática padrão de C, precisamos colocar a instrução #include 
<math.h> no início do nosso programa. 
B 
 
Funções como cos(), sin() e tan() recebem como parâmetro um ângulo em graus. 
C 
 
A função floor() arredonda um número para o menor número inteiro que seja maior ou igual ao número real 
recebido como parâmetro. 
D 
 
As funções ceil() e floor() possuem a mesma funcionalidade, pois ambas arredondam números. 
Questão 45 : 
Sobre o conceito de subprogramas e sua implementação na linguagem C, assinale a alternativa correta. 
Resposta Errada! A resposta correta é a opção C 
Justificativa: 
Gabarito: C 
Comentário: Como visto na unidade 35, subprogramas são implementados em C 
através de funções. A modularização pormeio da separação do código do programa 
em várias funções é uma forma de modularização de granularidade mais fina. 
A 
 
Em C, subprogramas são implementados através de tipos dados, tanto homogêneos como heterogêneos. 
B 
 
Subprogramas comunicam-se entre si com instruções do tipo scanf e printf. 
C 
 
A criação de subprogramas é uma técnica de modularização de granularidade mais fina. 
D 
 
A assinatura de uma função é independente da funcionalidade que a função implementa. 
Questão 46 : 
Com base na passagem de parâmetros por valor, estudada na unidade 20, e no exemplo a seguir, 
assinale a alternativa que apresenta corretamente o valor que é mostrado para o usuário na linha 13 do 
programa? 
Algoritmo – Exemplo de passagem de parâmetros por valor 
1. #include <stdio.h> 
2. #include <stdlib.h> 
3. 
4. void uma_funcao(int x) 
5. { 
6. x = x + 4; 
7. } 
8. 
9. int main(void) 
10. { 
11. int x = 2; 
12. uma_funcao(x); 
13. printf("%d \n", x); 
14. system("pause"); 
15. return 0; 
16. } 
 Fonte: Elaborado pelo autor. 
Resposta Errada! A resposta correta é a opção B 
Justificativa: 
Gabarito: B 
Comentário: A variável x é criada com valor 2 e a função uma_funcao não altera seu 
valor. Logo, é mostrado para o usuário o valor 2. 
 
A 
 
0 
B 
 
2 
C 
 
4 
D 
 
6 
Questão 47 : 
Com base no que você estudou na unidade 4 sobre strings, assinale a alternativa correta. 
Acertou! A resposta correta é a opção D 
Justificativa: 
Gabarito: D 
Comentário: É necessário usar o caractere nulo em C para definir o fim da string. 
A 
 
Uma string vazia em C é representada por um vetor de tamanho 0. 
B 
 
A string “aluno ” em C é representada por um vetor de tamanho 5. 
C 
 
No vetor representando a string “maria” em C, não existe nenhum caractere no índice 6. 
D 
 
Todo vetor representando strings em C possui, obrigatoriamente, pelo menos uma ocorrência do caractere 
nulo. 
Questão 48 : 
Sobre o que você estudou sobre o uso de ponteiros na programação em C e com base nas duas 
instruções em C a seguir, assinale a alternativa correta. 
char a = 'c'; 
char* b = &a; 
Acertou! A resposta correta é a opção C 
Justificativa: 
Gabarito: C 
Comentário: Como visto na unidade 19, a expressão &a acessa o endereço da 
variável a e o atribui ao ponteiro b. Logo, b aponta para a. 
 
A 
 
A variável a e a variável b possuem o mesmo valor, pois são do mesmo tipo. 
B 
 
O endereço da variável b é o mesmo da variável a. 
C 
 
A variável b possui o endereço da variável a, logo, b aponta para a. 
D 
 
A variável a possui o endereço da variável b, em forma de uma string. 
Questão 49 : 
Sobre os tipos de dados heterogêneos estudados na unidade 32, analise o código a seguir e responda 
qual variável do programa possui tipo de dados composto e heterogêneo. 
Algoritmo – Atividade 
1. struct caracteres{ 
2. char a; 
3. char b; 
4. }; 
5. 
6. int main(void) 
7. { 
8. char matriz[5][6]; 
9. struct caracteres uma_instancia; 
10. uma_instancia.a = 'x'; 
11. uma_instancia.b = 'y'; 
12. return 0; 
13. } 
Fonte: Elaborado pelo autor (2013). 
Acertou! A resposta correta é a opção B 
Justificativa: 
Gabarito: B 
Comentário: Tanto o array bidimensional matriz quanto os campos a e b não são 
compostos, restando apenas a struct uma_instancia, que é heterogênea. 
A 
 
matriz 
B 
 
uma_instancia 
C 
 
a 
D 
 
b 
Questão 50 : 
Sobre o conceito de modularização, assinale a alternativa correta. 
Resposta Errada! A resposta correta é a opção B 
Justificativa: 
Gabarito: B 
Comentário: De acordo com o que foi estudado na unidade 33, as vantagens da 
modularização são as melhorias na legibilidade e manutenibilidade, sendo que esta 
última significa realizar mudanças no código de forma mais fácil. 
A 
 
Programas modularizados ficam mais legíveis, embora seja mais complicado realizar a manutenção do código. 
B 
 
Uma das vantagens de se ter um programa separado em módulos é permitir que mudanças no código fiquem 
mais fáceis de ser realizadas. 
C 
 
Um programa que utilize modularização das suas funcionalidades dificulta o entendimento do seu código, pois 
cada módulo deve ser compreendido separadamente. 
D 
 
Programas de computador sempre ficam mais rápidos quando suas funcionalidades estão divididas em 
módulos. 
 
 
 
Questão 51 : 
Com base no que você estudou sobre tipologias de linguagens na unidade 7, assinale a alternativa que 
responde corretamente a seguinte questão: o que são linguagens de baixo nível? 
Resposta Errada! A resposta correta é a opção B 
Justificativa: 
Gabarito: B 
Comentário: O nível é definido pela quantidade de abstrações. Então, Linguagens de 
baixo nível possuem poucas abstrações, talvez nenhuma. Em outras palavras, são 
linguagens muito parecidas ou iguais às linguagens de máquina. 
A 
 
Linguagens fáceis de aprender e programar. 
B 
 
Linguagens semelhantes à linguagem de máquina, com poucas ou nenhuma abstração. 
C 
 
Linguagens como SQL, que possuem fins específicos e abstraem muito o funcionamento interno das ações. 
D 
 
Linguagens como C e Java, que não possuem fins específicos, mas possuem várias abstrações como estruturas 
de seleção, repetição, strings e arrays. 
Questão 52 : 
Com base no que você estudou sobre ponteiros, assinale a alternativa correta. 
Resposta Errada! A resposta correta é a opção B 
Justificativa: 
Gabarito: B 
Comentário: Foi estudado na unidade 19 que a memória principal, também chamada 
de memória RAM, recebe todas as instruções e os dados do programa quando a sua 
execução é iniciada. 
A 
 
Um ponteiro inválido, se avaliado como expressão lógica, terá valor falso. 
B 
 
A memória principal do computador possui as instruções e os dados usados pelos programas que estão sendo 
executados. 
C 
 
Ponteiros inválidos, na verdade, apontam para variáveis de outros programas e, por isso, podem ser usados 
para acessar dados de outros programas. 
D 
 
Ponteiros são variáveis que guardam cópias do valor de outras variáveis. 
Questão 53 : 
Na unidade 41, aprendemos sobre manipulação de arquivos, qual das funções listadas a seguir servem 
para fechar um arquivo antes de utilizá-lo: 
Acertou! A resposta correta é a opção A 
Justificativa: 
Gabarito: A 
Como aprendemos na unidade a função fclose() da linguagem C é usada para fechar 
um arquivo, recebe como parâmetro o ponteiro para o arquivo que será fechado. 
A 
 
fclose(); 
B 
 
arqclose(); 
C 
 
EOF (end-of-file) 
D 
 
FILE* 
Questão 54 : 
Sobre o assunto de strings, visto na unidade 17, assinale a alternativa correta. 
Acertou! A resposta correta é a opção A 
Justificativa: 
Gabarito: A 
Comentário: Ela descreve exatamente como é a representação de strings em Pascal. 
As outras alternativas estão erradas, pois: o tipo String de Pascal é usado para 
armazenar strings; a tabela ASCII reduzida só representa 128 caracteres; e a linguagem 
Java não possui tipo primitivo de strings. 
A 
 
Em Pascal, existe um tipo de dados primitivo para armazenamento de strings, embora ele internamente seja 
implementado como um array de caracteres. 
B 
 
A tabela ASCII, usada em C para codificação padrão de caracteres, suporta até 256 caracteres em sua versão 
regular e reduzida. 
C 
 
A linguagem Java, ao contrário de C, possui um tipo primitivo de dados para armazenamento de strings. 
D 
 
O tipo primitivo para armazenamento de strings em Pascal se chama Char. 
Questão 55 : 
Considerando o caso de estudo de gerenciamento de uma padaria – no qual criamos as funções de 
cadastro de funcionários e busca pelo funcionário de maior salário – e levando em conta o que você 
estudou sobre sub-rotinas de funções na unidade 36, assinale a alternativa que representa a assinatura 
mais adequada para uma função que implementea funcionalidade de editar os dados de algum 
funcionário. Considere também que a função deve perguntar para o usuário qual o nome do funcionário 
que ele deseja modificar. 
Resposta Errada! A resposta correta é a opção A 
Justificativa: 
Gabarito: A 
Comentário: No exemplo apresentado nos estudos, a lista de funcionários e a 
quantidade de funcionários já cadastrados não são variáveis globais, logo precisam ser 
passados às funções como parâmetros de entrada. Dados como o nome e o salário de 
algum funcionário específico não têm como ser recebidos pela função, pois a função 
main não tem conhecimento de qual funcionário o usuário deseja alterar os dados. 
A 
 
void edita_funcionario(funcionario_t lista_funcionarios[], int tamanho_lista); 
B 
 
void edita_funcionario(funcionario_t lista_funcionarios[], float salario_funcionario); 
C 
 
void edita_funcionario(funcionario_t lista_funcionarios[], char nome_funcionario[]); 
D 
 
void edita_funcionario(char nome_funcionario[]); 
Questão 56 : 
Com base no que você estudou sobre o comando de repetição, assinale a alternativa correta. 
Resposta Errada! A resposta correta é a opção A 
Justificativa: 
Gabarito: A 
Comentário: Como visto na unidade 3, nesse comando de repetição o bloco é sempre 
executado pelo menos uma vez. 
A 
 
No comando de repetição com teste no fim não é possível que o bloco de instruções não seja executado 
nenhuma vez. 
B 
 
Os comandos de repetição estudados existem em C, mas não costumam aparecer em outras linguagens de 
programação. 
C 
 
Todos os tipos de comandos de repetição fazem uso de uma variável de controle. 
D 
 
O bloco de instruções dentro de um comando de repetição não pode ser vazio. 
Questão 57 : 
Sobre o conceito de modularização estudado na unidade 33, assinale a alternativa correta. 
Acertou! A resposta correta é a opção D 
Justificativa: 
Gabarito: D 
Comentário: Vimos que as maiores vantagens da modularização é a melhora na 
legibilidade (entender o código) e na manutenibilidade (manipular e realizar mudanças 
no código). 
A 
 
Uma das razões para realizar a modularização de um programa é aumentar a velocidade com que ele é 
executado. 
B 
 
Programas modularizados ficam menos legíveis, embora o aspecto manutenibilidade seja melhorado. 
C 
 
A manutenção no código de um programa que utiliza modularização das suas funcionalidades através de 
funções é mais difícil do que a de um programa que possua apenas uma função. 
D 
 
É mais fácil entender e manipular o código de um programa que possua suas funcionalidades divididas em 
módulos. 
Questão 58 : 
Sobre o conceito de variáveis e constantes estudados na unidade 9, assinale a alternativa correta. 
Resposta Errada! A resposta correta é a opção C 
Justificativa: 
Gabarito: C 
Comentário: Em C, a única informação que pode mudar a respeito de uma variável é o 
seu valor. Na declaração da variável não é definido seu valor, assim como na 
inicialização não é definido seu tipo. Na criação de constantes usando #define não 
precisamos definir um tipo. 
A 
 
Declaração de variável é o momento no qual definimos o nome e o valor de uma variável. 
B 
 
A inicialização de uma variável é o momento no qual definimos o nome e o tipo de uma variável. 
C 
 
Em C, após a sua criação, não podemos mais mudar o nome, o tipo e nem o escopo de uma variável. 
D 
 
Tanto na criação de constantes quanto de variáveis, precisamos definir um nome e um tipo para o que 
estamos criando. 
Questão 59 : 
Na unidade 13, você estudou sobre comandos em programação, principalmente o comando de 
atribuição. Com base nisso, considere as duas linhas de código a seguir: 
 
a = 3; 
b = a++; 
Qual o valor da variável b após a execução dessas duas instruções? 
Resposta Errada! A resposta correta é a opção B 
Justificativa: 
Gabarito: A 
Comentário: O valor de a é 3 e o incremento só é realizado após a atribuição de 3 a b. 
A 
 
3 
B 
 
4 
C 
 
5 
D 
 
6 
Questão 60 : 
Analise o código a seguir. 
 
Figura – Exemplo de Algoritmo – Atividade. 
Fonte: Elaborada pelo autor (2013). 
 
Escolha a única alternativa que representa corretamente o número da linha na qual a instrução 
fclose(arquivo) deve ser inserida para fechamento correto do arquivo. 
Acertou! A resposta correta é a opção C 
Justificativa: 
Resposta: C 
O arquivo deve ser fechado após o laço se encerrar quando todos os dados já 
estiverem sido visitados e antes do método se encerrar. 
A 
 
Na linha 3, pois o correto é fechar o arquivo assim que ele seja aberto. 
B 
 
Na linha 8, para que o arquivo seja fechado cada vez que o laço enquanto seja executado. 
C 
 
Após a linha 10, para que o arquivo seja fechado antes do encerramento do método listar. 
D 
 
Na linha 4, dentro do if(arquivo == NULL), para que o arquivo seja fechado somente se ocorrer erro na 
abertura deste. 
 
 
 
Questão 61 : 
Com base no que você estudou sobre strings na unidade 17, assinale a alternativa correta. 
Acertou! A resposta correta é a opção C 
Justificativa: 
Gabarito: C 
Comentário: Variáveis do tipo char são números, podem armazenar no máximo 256 
valores diferentes e Pascal não usa o caractere '\0'. 
A 
 
Uma variável do tipo char não pode ser tratada como um número. 
B 
 
Se usarmos uma variável do tipo char para armazenar caracteres, conseguiremos armazenar no máximo 128 
caracteres diferentes. 
C 
 
Não existe um tipo primitivo de armazenamento de strings em C. 
D 
 
Em Pascal também se usa um caractere '\0' no fim da string para facilitar o cálculo do seu tamanho. 
Questão 62 : 
Sobre a criação de tipos abstratos de dados em C e C++, assinale a alternativa correta. 
Acertou! A resposta correta é a opção D 
Justificativa: 
Gabarito: D 
Comentário: Como visto na unidade 25, as palavras private e public de C++ permitem 
que restrinjamos algumas variáveis ou funções da classe para que sejam usadas 
apenas de dentro da própria classe, melhorando a segurança da estrutura. 
A 
 
A criação de tipos de dados abstratos em C++ também é feita através da criação de structs, assim como em C. 
B 
 
As classes de C++ são iguais às structs de C. 
C 
 
Structs são mais avançadas que classes porque nelas podemos definir diferentes escopos para variáveis, 
melhorando a segurança do código. 
D 
 
Classes possuem a capacidade de definir membros privados ou públicos, restringindo algumas partes da classe 
e melhorando o funcionamento dela. 
Questão 63 : 
Analise o código a seguir. 
 
 
Figura – Exemplo de Algoritmo – Atividade. 
Fonte: Elaborada pelo autor (2013). 
 
Entre as opções a seguir, assinale as instruções que devem ser inseridas no retângulo com símbolo “?” e 
que permitam calcular corretamente a média de idade dos homens cadastrados no arquivo. 
Resposta Errada! A resposta correta é a opção D 
Justificativa: 
Resposta: D 
Comentário: Para descobrir a média de idade dos homens, é necessário verificar se o 
sexo do funcionário cadastrado no arquivo é masculino (M ou m) e, em caso 
afirmativo, é necessário somar a idade desse funcionário e acumular a quantidade de 
homens cadastrados – informações representadas pelas variáveis somaIdade e 
totalHomens, respectivamente. 
A 
 
somaIdade= somaIdade + func.idade; 
 totalHomens++; 
B 
 if (func.sexo == 'F' || func.sexo == F'){ 
 somaIdade= somaIdade + func.idade; 
 totalHomens++; 
} 
 
C 
 
totalHomens++; 
D 
 if (func.sexo == 'M' || func.sexo == 'm'){ 
 somaIdade= somaIdade + func.idade; 
 totalHomens++; 
} 
 
Questão 64 : 
Qual a finalidade da função feof()? 
Acertou! A resposta correta é a opção C 
Justificativa: 
Resposta: C 
Comentário: A função feof() significa “End of file”, ou seja, final do arquivo, e retorna 
verdadeiro ou falso indicando se é ou não final do arquivo passado como parâmetro. 
A 
 
Verificar se o arquivo está aberto. 
B 
 
Verificar se o arquivo está fechado. 
C 
 
Verificar se é final do arquivo. 
D 
 
Verificar se é inícioVerificar se é iníciodo arquivo. do arquivo. 
Questão 65 : 
Sobre os tipos de dados primitivos de C, assinale a alternativa correta. 
Acertou! A resposta correta é a opção B 
Justificativa: 
Gabarito: B 
Comentário: Como visto na unidade 26, o tipo char aceita números, e estes devem 
pertencer ao intervalo de -128 a 127. 
 
A 
 
O tipo de dado char permite o armazenamento de números, logo seria correto atribuir o valor 1000 a uma 
variável char. 
B 
 
O tipo de dado char permite o armazenamento de números, logo seria correto atribuir o valor 100 a uma 
variável char. 
C 
 
Como strings são formadas por valores do tipo primitivo char, o tipo string também é considerado um tipo 
primitivo. 
D 
 
Em C, quando atribuímos a uma variável de tipo primitivo um valor fora do seu intervalo de representação, um 
erro ocorre e o programa para de ser executado. 
Questão 66 : 
Sobre os tipos de dados heterogêneos estudados na unidade 32, analise o código a seguir e responda 
qual variável do programa possui tipo de dados composto e heterogêneo. 
Algoritmo – Atividade 
1. struct caracteres{ 
2. char a; 
3. char b; 
4. }; 
5. 
6. int main(void) 
7. { 
8. char matriz[5][6]; 
9. struct caracteres uma_instancia; 
10. uma_instancia.a = 'x'; 
11. uma_instancia.b = 'y'; 
12. return 0; 
13. } 
Fonte: Elaborado pelo autor (2013). 
Acertou! A resposta correta é a opção B 
Justificativa: 
Gabarito: B 
Comentário: Tanto o array bidimensional matriz quanto os campos a e b não são 
compostos, restando apenas a struct uma_instancia, que é heterogênea. 
A 
 
matriz 
B 
 
uma_instancia 
C 
 
a 
D 
 
b 
Questão 67 : 
Dado o procedimento a seguir, determine o valor que será impresso na tela quando a chamada for 
equacao(30, 33, 4): 
 Algoritmo – Exercício sobre procedimentos 
1 void equacao(int a, int b, int c) { 
2 int x; 
3 x = 0; 
4 if (a > b - 3) { 
5 x = c * 2; 
6 } else { 
7 x = c * 3; 
8 } 
9 printf("%d", x); 
10 } 
 Fonte: Elaborado pelo autor (2013). 
Resposta Errada! A resposta correta é a opção C 
Justificativa: 
Gabarito: C 
Os procedimentos apresentados anteriormente passam por parâmetro de valores 30, 
33 e 4, sendo a = 10, b = 8 e c = 4. Na linha 3, o x recebe o valor 0 (zero) e, na linha 4, é 
testado se a é maior que b - 3, logo se a = 30 e b – 3 = 33 – 3 = 30, o teste é falso e o 
procedimento vai para a linha 7 e multiplica o c pelo 3, logo c = 4, 4 * 3 = 12, o x recebe 
o valor 12. Por fim, na linha 9, o procedimento escreve o resultado: 12 (unidade 37). 
A 
 
Será impresso na tela: 4 
B 
 
Será impresso na tela: 90 
C 
 
Será impresso na tela: 12 
D 
 
Será impresso na tela: 3 
Questão 68 : 
Os dois principais modos de abertura de um arquivo de texto utilizando a função fopen() são “r” e “w”, o 
significado deles, respectivamente, são: 
Acertou! A resposta correta é a opção B 
Justificativa: 
Gabarito: B 
Conforme visto na unidade 41, os principais modos com os quais o arquivo deve ser 
aberto são: 
Modo de Abertura Significado 
r Abre um arquivo-texto para leitura 
w Cria um arquivo-texto para escrita 
r+ Abre um arquivo-texto para leitura/escrita 
w+ Cria um arquivo-texto para leitura/escrita 
 
A 
 
“r” abre um arquivo para gravação e “w” abre um arquivo para leitura. 
B 
 
“r” abre um arquivo para leitura e “w” abre um arquivo para gravação. 
C 
 
“r” abre um arquivo e exclui o conteúdo e “w” abre um arquivo para gravação. 
D 
 
“r” abre um arquivo para leitura e “w” abre um arquivo para gravação somente se ele existir. 
Questão 69 : 
Sobre os tipos de dados heterogêneos, analise o código a seguir e responda qual ou quais variáveis do 
programa possuem tipo de dados composto e heterogêneo. 
Algoritmo – Atividade 
1. struct estrutura{ 
2. int matriz_a[2][2]; 
3. int matriz_b[3][3]; 
4. }; 
5. 
6. int main(void) 
7. { 
8. struct estrutura uma_estrutura; 
9. uma_estrutura.matriz_a[0][0] = 500; 
10. uma_estrutura.matriz_a[0][1] = 35; 
11. int uma_matriz[2][2]; 
12. return 0; 
13. } 
Fonte: Elaborado pelo autor (2013). 
Acertou! A resposta correta é a opção D 
Justificativa: 
Gabarito: D 
Comentário: Structs são heterogêneas, pois aceitam dados de qualquer tipo (como foi 
estudado na unidade 32). A única instância de struct no exemplo acima é a 
variável uma_estrutura. 
A 
 
uma_matriz, matriz_a e matriz_b 
B 
 
matriz_a e matriz_b 
C 
 
uma_estrutura, matriz_a e matriz_b 
D 
 
uma_estrutura 
Questão 70 : 
A função fopen() da linguagem C é utilizada para abrir um arquivo, ela recebe como parâmetro 2 
argumentos, eles são, respectivamente: 
Acertou! A resposta correta é a opção A 
Justificativa: 
Gabarito: A 
Conforme aprendemos na unidade 41, a função padrão fopen() é usada para abrir um 
arquivo. Ela recebe dois argumentos do tipo string: o primeiro argumento é o nome do 
arquivo (por exemplo, clientes.txt), o segundo argumento é a indicação do modo no 
qual o arquivo deve ser aberto. 
A 
 
Nome do Arquivo e Modo de Abertura 
B 
 
Nome do Arquivo e Variável de Ponteiro 
C 
 
Modo de Leitura e Modo de Escrita 
D 
 
Nome do Arquivo e Função de Leitura 
 
 
 
Questão 71 : 
De acordo com os estudos da unidade 45, a função sizeof() tem como finalizade: 
Acertou! A resposta correta é a opção C 
Justificativa: 
Resposta: C 
Comentário: A função sizeof() retorna o espaço de memória que um determinado tipo 
de dado ocupará no momento em que for armazenado na memória. 
A 
 
gravar um registro no arquivo. 
B 
 
remover um registro do arquivo. 
C 
 
retornar o espaço de memória alocado por um tipo de dados. 
D 
 
retornar o endereço de memória alocado por um tipo de dados. 
Questão 72 : 
Sobre a abordagem usada para criação de tipos abstratos de dados, vista na unidade 18, assinale a 
alternativa correta. 
Acertou! A resposta correta é a opção A 
Justificativa: 
Gabarito: A 
Comentário: Em C, usam-se arquivos diferentes para definição de interface e 
implementação. As alternativas B e D descrevem conceitos opostos e a alternativa C 
está errada, pois as interfaces são definidas no arquivo com extensão .h. 
A 
 
A definição de um tipo abstrato de dados em C é geralmente feita em dois arquivos diferentes, um 
com extensão .h e outro .c. 
B 
 
Na criação de uma interface, define-se como cada funcionalidade do tipo de dados é implementada. 
C 
 
Em C, as interfaces são definidas sempre em arquivos com extensão .c, e para utilizá-las em um 
programa é preciso adicionar uma instrução do tipo #include "novo_tipo.c" no arquivo do programa. 
D 
 
Na criação da implementação de um tipo abstrato de dados, definimos quais funcionalidades ele 
terá, mas não definimos como cada funcionalidade deverá ser implementada. 
Questão 73 : 
O termo persistência de dados é usado para as atividades de: 
Acertou! A resposta correta é a opção C 
Justificativa: 
Gabarito: C 
Na unidade 39, vimos que o termo “persistência de dados” é usado para as atividades 
de armazenamento e recuperação de dados na memória secundária. 
A 
 
Armazenamento e recuperação de dados em memória principal. 
B 
 
Atribuição e exclusão de valor em variáveis transientes. 
C 
 
Armazenamento e recuperação de dados em memória secundária. 
D 
 
Atualização e consulta de dados da memória principal. 
Questão 74 : 
Sobre os tipos de dados primitivos de C, assinale a alternativa correta. 
Acertou! A resposta correta é a opção B 
Justificativa: 
Gabarito: B 
Comentário: Como visto na unidade 26, o tipo char aceita números, e estes devem 
pertencer ao intervalo de -128 a 127. 
 
A 
 
O tipo de dado char permite o armazenamento de números, logoseria correto atribuir o valor 1000 a uma 
variável char. 
B 
 
O tipo de dado char permite o armazenamento de números, logo seria correto atribuir o valor 100 a uma 
variável char. 
C 
 
Como strings são formadas por valores do tipo primitivo char, o tipo string também é considerado um tipo 
primitivo. 
D 
 
Em C, quando atribuímos a uma variável de tipo primitivo um valor fora do seu intervalo de representação, um 
erro ocorre e o programa para de ser executado. 
Questão 75 : 
Sobre o conceito de variável e constante, assinale a alternativa correta. 
Acertou! A resposta correta é a opção C 
Justificativa: 
Gabarito: C 
Comentário: Como visto na unidade 9, usar uma variável após a sua declaração, porém 
antes da sua inicialização, não é recomendado, pois seu valor ainda é indefinido e 
incerto. Nesse momento, a variável já foi criada, logo possui um valor, porém seu valor 
ainda não foi definido pelo programador, logo pode ser qualquer valor dentre todos os 
que a variável consegue representar. Essa incerteza pode causar comportamento 
inesperado caso a variável seja usada nesse momento. 
A 
 
Podemos usar uma variável sem declará-la primeiro, mas o processo de inicialização é obrigatório. 
B 
 
Toda constante possui um nome, um tipo e um escopo explícitos. 
C 
 
Usar uma variável antes de inicializar seu valor não é um erro, porém não é recomendado, pois isso pode gerar 
um comportamento inesperado no programa. 
D 
 
Em C, constantes são obrigatoriamente escritas com letras maiúsculas. 
Questão 76 : 
Sobre as funções matemáticas da biblioteca padrão de C, assinale a alternativa correta. 
Acertou! A resposta correta é a opção A 
Justificativa: 
Gabarito: A 
Comentário: O arquivo math.h possui a definição de toda a biblioteca matemática 
padrão de C, como mostrado na unidade 5. 
A 
 
Para usarmos funções da biblioteca matemática padrão de C, precisamos colocar a instrução #include 
<math.h> no início do nosso programa. 
B 
 
Funções como cos(), sin() e tan() recebem como parâmetro um ângulo em graus. 
C 
 
A função floor() arredonda um número para o menor número inteiro que seja maior ou igual ao número real 
recebido como parâmetro. 
D 
 
As funções ceil() e floor() possuem a mesma funcionalidade, pois ambas arredondam números. 
Questão 77 : 
Dado o programa apresentado a seguir e com base no que você estudou na unidade 11, assinale a 
alternativa correta. 
Algoritmo – Exemplo do uso de variáveis 
1. 1. #include <stdio.h> 
2. 2. #include <stdlib.h> 
3. 3. 
4. 4. void uma_funcao(void) 
5. 5. { 
6. 6. int a; 
7. 7. for (a = 10; a > 0; a--){ 
8. 8. printf("%d \n", a); 
9. 9. } 
10. 10. } 
11. 11. 
12. 12. int main(void) 
13. 13.{ 
14. 14. int x; 
15. 15. int y; 
16. 16. scanf("%d", &x); 
17. 17. y = 5; 
18. 18. if (x > y){ 
19. 19. int z = 4; 
20. 20. } 
21. 21. uma_funcao(); 
22. 22. system("pause"); 
23. 23. return 0; 
24. 24. } 
Fonte: Elaborado pelo autor (2013). 
Acertou! A resposta correta é a opção D 
Justificativa: 
Gabarito: D 
Comentário: A instrução da linha 19 consiste na declaração e inicialização da variável z 
em uma única instrução, o que é possível em C. 
A 
 
O escopo da variável a se inicia na linha 6 e vai até a linha 24. 
B 
 
Sempre que o programa é executado, são declaradas 4 variáveis locais. 
C 
 
As variáveis x e y são inicializadas nas linhas 14 e 15, respectivamente. 
D 
 
A variável z é declarada e inicializada na linha 19. 
Questão 78 : 
Com base no que você estudou sobre a instrução typedef, assinale a alternativa correta. 
Acertou! A resposta correta é a opção A 
Justificativa: 
Gabarito: A 
Comentário: Foi estudado na unidade 25 que a instrução typedef define um novo 
nome para um tipo de dado já existente, e que uma das vantagens disso é melhorar a 
legibilidade do programa, usando nomes mais simples. 
 
A 
 
Com a instrução typedef podemos melhorar a legibilidade do código definindo nomes mais fáceis para tipos de 
dados. 
B 
 
Toda declaração de uma struct deve vir seguida de uma instrução typedef. 
C 
 
Existem duas formas de se criar tipos abstratos de dados em C, com structs ou com typedef. 
D 
 
Não podemos usar a instrução typedef para definir nomes para tipos primitivos de C, apenas para structs. 
Questão 79 : 
Sobre os tipos de dados primitivos de C, estudados na unidade 26, assinale a alternativa correta. 
Resposta Errada! A resposta correta é a opção C 
Justificativa: 
Gabarito: C 
Comentário: Foi visto que existem tipos de dados que suportam o armazenamento de 
números negativos e outros não. Por exemplo, os tipos de dados iniciados 
em unsigned armazenam apenas números positivos. 
A 
 
Strings são um exemplo de tipo primitivo de C. 
B 
 
Com exceção do tipo char, todo tipo primitivo de C aceita valores numéricos. 
C 
 
Existem tipos de dados primitivos que só armazenam números positivos. 
D 
 
Os tipos short e float são usados para armazenar números reais. 
Questão 80 : 
Sobre o processo de compilação e execução de programas, assinale a alternativa correta. 
Acertou! A resposta correta é a opção A 
Justificativa: 
Gabarito: A 
Comentário: Na unidade 8, aprendemos que o papel do compilador é justamente 
traduzir o programa para a linguagem de máquina, gerando um arquivo que o usuário 
possa executar. Foi estudado que o mesmo compilador não serve para diferentes 
linguagens de programação, e nem gera código para diferentes linguagens de 
máquina. Além disso, nenhum programa criado na disciplina possui interface gráfica, 
apenas textual. 
A 
 
O resultado do processo de compilação é um arquivo executável, o qual realiza exatamente o que foi descrito 
nas instruções do programa. 
B 
 
Embora as linguagens de programação sejam muito diferentes, podemos usar o mesmo compilador para 
compilar programas escritos em qualquer linguagem. 
C 
 
Os programas que criamos nesta disciplina possuem interface gráfica de comunicação com o usuário. 
D 
 
Um mesmo compilador pode ser usado para compilar programas para qualquer linguagem de máquina. 
 
 
 
Questão 81 : 
Sobre os tipos de dados compostos de C, estudados na unidade 27, assinale a alternativa correta. 
Acertou! A resposta correta é a opção C 
Justificativa: 
Gabarito: C 
Comentário: Como foi estudado, uma struct apenas agrupa um conjunto de variáveis 
quaisquer, as quais podem ser de qualquer tipo, tanto primitivo quanto composto. Um 
array ou matriz, por outro lado, só pode ter valores de um mesmo tipo. 
A 
 
Como strings já são arrays, não é possível criar um array de strings. 
B 
 
Arrays e matrizes podem ser de qualquer tipo de dado, desde que esse tipo seja primitivo. 
C 
 
Uma única struct pode conter valores de diferentes tipos, ao contrário de um array ou de uma matriz, que só 
aceitam valores de um mesmo tipo. 
D 
 
Não é possível criar arrays de structs em C. 
Questão 82 : 
Com base na passagem de parâmetros por valor, analise o programa a seguir e assinale a alternativa que 
responda corretamente a esta questão: que valor é mostrado para o usuário na linha 14 do programa? 
Algoritmo – Exemplo de passagem de parâmetros por valor 
1. #include <stdio.h> 
2. #include <stdlib.h> 
3. 
4. int uma_funcao(int x) 
5. { 
6. x = x + 4; 
7. return x; 
8. } 
9. 
10. int main(void) 
11. { 
12. int x = 2; 
13. int y = uma_funcao(x); 
14. printf("%d \n", x + y); 
15. system("pause"); 
16. return 0; 
17. } 
Fonte: Elaborado pelo autor. 
Resposta Errada! A resposta correta é a opção D 
Justificativa: 
Gabarito: D 
Comentário: Conforme estudado na unidade 20, a variável x possui valor 2. A 
variável y possui o retorno da função uma_funcao, que é x + 4, ou seja, 6. Na linha 14, 
é somado então 2 + 6, o que resulta em 8. 
A 
 
2 
B 
 
4 
C 
 
6 
D 
 
8 
Questão 83 : 
Sobre tipologiasde linguagens, responda: o que são linguagens de alto nível? 
Acertou! A resposta correta é a opção C 
Justificativa: 
Gabarito: C 
Comentário: Na unidade 7, estudamos que abstração é uma redução do objeto que 
está sendo estudado, até um ponto onde é possível descrevê-lo usando apenas a 
linguagem em questão. Há vários conceitos que usamos na programação e que 
abstraem conceitos bem maiores. Nesse cenário, quanto mais abstrações a linguagem 
tiver, maior será o seu nível. 
A 
 
São linguagens complexas e difíceis de aprender. 
B 
 
São linguagens com fins específicos para pesquisa em inteligência artificial e robótica. 
C 
 
São linguagens como Java e C++, que possuem altos níveis de abstrações. 
D 
 
São linguagens com alto poder de processamento, como linguagens de máquina. 
Questão 84 : 
Sobre o processo de compilação e execução de programas citado na unidade 8, assinale a alternativa 
correta. 
Acertou! A resposta correta é a opção B 
Justificativa: 
Gabarito: B 
Comentário: Como explicado no texto, ambas as linguagens são compiladas, e a 
ferramenta que usamos para compilar nossos programas é o Dev-C++. O prompt de 
comando do Windows é usado apenas para interface textual, não gráfica. O 
compilador usado para o Windows não pode ser usado para o Linux pois cada 
implementação de um compilador funciona para apenas um sistema operacional. 
A 
 
O prompt de comando é usado para executar programas que possuem interface gráfica. 
B 
 
Linguagens como C e C++ são linguagens compiladas, pois seu código é analisado por um compilador, que gera 
um executável do programa. 
C 
 
O compilador que usamos para compilar nossos programas e executá-los no sistema Windows também 
poderia ser usado para executar os programas no sistema Linux. 
D 
 
Saber como é implementada uma linguagem de programação não ajuda o usuário da linguagem a programar 
melhor usando essa linguagem. 
Questão 85 : 
Analise o algoritmo a seguir, que aplica em um exemplo o conhecimento que você adquiriu sobre os 
variados tipos de dados. Em seguida, assinale a alternativa correta sobre quais são os tipos de dados 
usados no programa. 
Algoritmo – Programa em C que usa vários tipos de dados 
1. #include <stdio.h> 
2. #include <stdlib.h> 
3. 
4. int main(void) 
5. { 
6. int matriz[2][2]; 
7. printf("Informe os valores\n"); 
8. unsigned int i, j; 
9. float soma = 0; 
10. for (i = 0; i < 2; i++){ 
11. for (j = 0; j < 2; j++){ 
12. scanf("%i", &matriz[i][j]); 
13. soma += matriz[i][j]; 
14. } 
15. } 
16. double media = soma / 4; 
17. printf("Media: %f\n", media); 
18. system("pause"); 
19. return 0; 
20. } 
Fonte: Elaborado pelos autores (2013). 
Acertou! A resposta correta é a opção C 
Justificativa: 
Gabarito: C 
Comentário: Como visto nos exemplos da unidade 28, arrays são considerados uma 
única vez; logo, existe um array bidimensional do tipo int. Além disso, existem duas 
variáveis do tipo unsigned int, usadas no controle da estrutura de repetição, e mais 
uma variável float e outra double. 
A 
 
São usadas 6 variáveis do tipo int, 1 do tipo float e 1 do tipo double. 
B 
 
São usadas 3 variáveis do tipo int, 1 do tipo float e 1 do tipo double. 
C 
 
São usadas 2 variáveis do tipo unsigned int, 1 array bidimensional do tipo int, 1 variável do tipo float e 1 do 
tipo double. 
D 
 
São usadas 4 variáveis do tipo int, 2 do tipo unsigned int, 1 do tipo float e 1 do tipo double. 
Questão 86 : 
Na unidade 41, aprendemos que para abrir um arquivo utilizando a linguagem C utilizamos a 
função fopen(), essa função recebe dois parâmetros, o primeiro é o nome do arquivo que queremos abrir 
e o segundo o modo de abertura. Qual o parâmetro deve ser passado para a função para abrir o arquivo 
para leitura? 
Acertou! A resposta correta é a opção C 
Justificativa: 
Gabarito: C 
Como vimos o parâmetro que deve ser passado para leitura de um arquivo é “r”, ele 
abre um arquivo texto para leitura. O arquivo deve existir antes de ser aberto. 
A 
 
“a” 
B 
 
“l” 
C 
 
“r” 
D 
 
“w” 
Questão 87 : 
O termo persistência de dados é usado para as atividades de: 
Acertou! A resposta correta é a opção C 
Justificativa: 
Gabarito: C 
Na unidade 39, vimos que o termo “persistência de dados” é usado para as atividades 
de armazenamento e recuperação de dados na memória secundária. 
A 
 
Armazenamento e recuperação de dados em memória principal. 
B 
 
Atribuição e exclusão de valor em variáveis transientes. 
C 
 
Armazenamento e recuperação de dados em memória secundária. 
D 
 
Atualização e consulta de dados da memória principal. 
Questão 88 : 
Com base na inicialização de matrizes estudada na unidade 31, assinale qual das instruções a seguir está 
correta como instrução válida da linguagem C. 
Resposta Errada! A resposta correta é a opção D 
Justificativa: 
Gabarito: D 
Comentário: A alternativa D é a única que não está sintaticamente errada. A 
alternativa B não possui as chaves obrigatórias, e as alternativas A e C possuem 
quantidades diferentes de elementos na declaração e na inicialização. 
A 
 
 int uma_matriz[2][2] = { 
 {2, 7, 8}, 
 {-4, 3, -5}, 
 {1, 4, 9} 
}; 
B 
 
 int uma_matriz[2][2] = { 
 1, 23, 
 -64, 3 
}; 
C 
 
 int uma_matriz[3][3] = { 
 {9, 0}, 
 {6, 3} 
}; 
D 
 
 int uma_matriz[2][2] = { 
 {-12, -17}, 
 {-14, -13} 
}; 
Questão 89 : 
Com base no que você estudou sobre ponteiros, assinale a alternativa correta. 
Acertou! A resposta correta é a opção B 
Justificativa: 
Gabarito: B 
Comentário: Foi estudado na unidade 19 que a memória principal, também chamada 
de memória RAM, recebe todas as instruções e os dados do programa quando a sua 
execução é iniciada. 
A 
 
Um ponteiro inválido, se avaliado como expressão lógica, terá valor falso. 
B 
 
A memória principal do computador possui as instruções e os dados usados pelos programas que estão sendo 
executados. 
C 
 
Ponteiros inválidos, na verdade, apontam para variáveis de outros programas e, por isso, podem ser usados 
para acessar dados de outros programas. 
D 
 
Ponteiros são variáveis que guardam cópias do valor de outras variáveis. 
Questão 90 : 
Sobre o conceito de variáveis e constantes estudados na unidade 9, assinale a alternativa correta. 
Acertou! A resposta correta é a opção C 
Justificativa: 
Gabarito: C 
Comentário: Em C, a única informação que pode mudar a respeito de uma variável é o 
seu valor. Na declaração da variável não é definido seu valor, assim como na 
inicialização não é definido seu tipo. Na criação de constantes usando #define não 
precisamos definir um tipo. 
A 
 
Declaração de variável é o momento no qual definimos o nome e o valor de uma variável. 
B 
 
A inicialização de uma variável é o momento no qual definimos o nome e o tipo de uma variável. 
C 
 
Em C, após a sua criação, não podemos mais mudar o nome, o tipo e nem o escopo de uma variável. 
D 
 
Tanto na criação de constantes quanto de variáveis, precisamos definir um nome e um tipo para o que 
estamos criando. 
 
 
 
 
Questão 91 : 
Com base no conhecimento que você adquiriu em Programação I, e relembrou na unidade 1 desta 
disciplina, assinale a alternativa correta.Com base no conhecimento que você adquiriu em Programação 
I, e relembrou na unidade 1 desta disciplina, assinale a alternativa correta. 
Acertou! A resposta correta é a opção C 
Justificativa: 
Gabarito: C 
Comentário: Na unidade 1, estudamos que algoritmos sequenciais são aqueles em que 
existe apenas um fluxo de execução, pois não possuem estruturas de seleção nem de 
repetição. 
A 
 
Em C, usamos o tipo de dados int para armazenar números reais. 
B 
 
Um algoritmo é uma sequência finita ou infinita de passos, dependendo da quantidade

Outros materiais