Buscar

Atividades Programação II ESAB

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

Prévia do material em texto

Questão 1 : 
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 2 : 
Sobre os subprogramas estudados na unidade 35, assinale a alternativa correta.
Acertou! A resposta correta é a opção D 
Justificativa: 
Gabarito: D
Comentário: Em C, a divisão de um programa em subprogramas é feita com o uso de funções – e cada função tem uma funcionalidade do programa implementado. Para que os outros módulos utilizem a funcionalidade da função, eles precisam se comunicar com ela, e isso é feito através dos dados de entrada e saída da função (que são o seu valor de retorno e os parâmetros de entrada).
	A
	
	A criação de subprogramas é uma técnica de modularização de granularidade mais grossa.
	B
	
	Em C, subprogramas são implementados através de tipos abstratos de dados, como structs e enums.
	C
	
	Quando dividimos um programa em subprogramas, precisamos definir quais subprogramas irão se comunicar com quais subprogramas, e essa comunicação é realizada com o uso de instruções do tipo scanf e printf.
	D
	
	O tipo de retorno de uma função e os parâmetros de entrada são importantes, pois é através deles que outros módulos do programa se comunicarão com a função.
Questão 3 : 
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ão podemos usar asteriscos antes do nome de uma variável à esquerda do símbolo de igual (=).
Questão 4 : 
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 e modularização, assinale a alternativa que representa a assinatura mais adequada para uma função que remove os dados de algum funcionário. Considere também que a função deve perguntar ao usuário qual o nome do funcionário que ele deseja remover.
Resposta Errada! A resposta correta é a opção D 
Justificativa: 
Gabarito: D
Comentário: Como visto na unidade 36, a lista de funcionários e a quantidade de funcionários precisam ser recebidos pelas funções como parâmetros de entrada, para que operações em cima da lista de funcionários sejam realizadas.
	A
	
	void remove_funcionario(void);
	B
	
	void remove_funcionario(char nome_funcionario[]);
	C
	
	void remove_funcionario(funcionario_t lista_funcionarios[]);
	D
	
	void remove_funcionario(funcionario_t lista_funcionarios[], int tamanho_lista);
Questão 5 : 
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 6 : 
Sobre as constantes e funções matemáticas, vistas na unidade 15, assinale a alternativa correta.
Resposta Errada! A resposta correta é a opção A 
Justificativa: 
Gabarito: A
Comentário: M_E e M_PI realmente só passam a estar disponíveis quando o programador inclui o arquivo math.h no programa. Alternativa B está errada, pois os valores não são variáveis.
	A
	
	A linguagem C disponibiliza as constantes M_E e M_PI para serem usadas em programas, porém é necessário utilizar a instrução de inclusão de biblioteca #include para que elas estejam disponíveis.
	B
	
	M_E e M_PI são variáveis matemáticas definidas no arquivo math.h.
	C
	
	Como as funções log() e log10() de C recebem como parâmetro números de tipo double, elas não são capazes de calcular o logaritmo de números de tipo int.
	D
	
	A constante Pi está disponível na grande maioria das linguagens de programação. Para utilizar seu valor em C, é possível escrever Math.PI.
Questão 7 : 
Sobre o tópico de linguagens de programação estudado na unidade 6, assinale a alternativa correta.
Resposta Errada! 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 8 : 
Sobre o conceito de modularização estudado na unidade 33, assinale a alternativa correta.
Resposta Errada! 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 9 : 
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?
Acertou! 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 10 : 
Com base nos estudos da unidade 43, leia as afirmativas a seguir.
I. A forma mais comum e intuitiva de armazenar dados em um arquivo consiste na distribuição dos registros em uma ordem arbitrária, um após o outro, dentro da área destinada ao armazenamento (muito semelhante a um vetor), chamada de acesso sequencial.
II. O acesso sequencial facilita as rotinas de inserção, remoção, alteração e pesquisa aos dados.
III. Append consiste na rotina de inserção dos dados no arquivo em uma posição informada pelo usuário.
IV. Em arquivos que utilizam o acesso sequencial, quanto maior o arquivo, maior será o tempo de pesquisa aos dados.
Entre as opções a seguir, escolha a única alternativa que representa corretamente o resultado de sua análise.
Resposta Errada! A resposta correta é a opção C 
Justificativa: 
Resposta: C
Comentário: O acesso sequencial facilita as rotinas de inserção, já que o dado é inserido sempre no final. Porém, as rotinas de alteração, remoção, listagem e consulta tornam-se mais demoradas devido à necessidade de visitar cada posição até que se encontre o registro pesquisado. A função de append consiste em inserir um elemento sempre no final da estrutura de dados. A forma mais comum e intuitiva de armazenar dados em um arquivo consiste na distribuição dos registros em uma ordem arbitrária, muito semelhante a um vetor, chamada de acesso sequencial. Em arquivos que utilizam o acesso sequencial, quanto maior o arquivo, maior será o tempo de pesquisa aos dados.
	A
	
	Apenas as assertivas I, II e III estão corretas.
	B
	
	Apenas as assertivas I, II e IV estão corretas.
	C
	
	Apenas as assertivas I e IV estão corretas.
	D
	
	Todas as alternativas estão corretas.
Questão 1 : 
A principal diferença entre sub-rotinas de funções e de procedimento é:
Resposta Errada! A resposta correta é a opção D 
Justificativa: 
Gabarito: D
Quando um procedimento é chamado, ele atualiza variáveis. Lembrando a unidade anterior, as funções sempre produzem um valor como resultado, enquanto o procedimento não, essa é a principal diferença (unidade 37).
	A
	
	Procedimentos devem retornam um resultado depois do seu processamento.
	B
	
	Na linguagem C, a palavra void indica uma função, enquanto um procedimento é indicado pelo tipo de variável que retorna.
	C
	
	Quando o usuário observa um procedimento ele sempre espera um resultado.
	D
	
	Funções sempre produzem um resultado, enquanto procedimento apenas executam comandos, mas não retornam nenhum resultado.
Questão 2 : 
Sobre o processo de compilação e execução de programas, assinale a alternativa correta.
Resposta Errada! 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 3 : 
Sobre o retorno de funções estudado na unidade 22, assinale a alternativa correta.
Resposta Errada! A resposta correta é a opção C 
Justificativa: 
Gabarito: C
Comentário: Se o tipo de retorno de uma função é float e a variável a é do tipo float, então é possível escrever return a;, ou seja, retornar o valor de a.
	A
	
	Assim como as funções matemáticas, é obrigatório que toda função em C possua um valor de retorno.
	B
	
	Uma função pode ter várias instruções return ao longo do seu código, porém só a última é realmente executada.
	C
	
	Em uma função que possui como tipo de retorno float, a instrução return a; não constituirá erro se a variável a for do tipo float.
	D
	
	A instrução int a = funcao(); atribuirá valor 0 à variável a caso a função funcao possua como tipo de retorno void.
Questão 4 : 
Com base no que você viu, na unidade 16, e usando seus conhecimentos de manipulação de literais, assinale a alternativa correta.
Algoritmo – Manipulação de laterais
data-cke-saved-src=/media/images/IMG%20509.JPG
Fonte: Elaborado pelo autor (2013).
Resposta Errada! A resposta correta é a opção A 
Justificativa: 
Gabarito: A
Comentário: Sem a variável contador, essa função calcula exatamente o tamanho da string. Alternativas C e D são opostas, ou seja, uma invalida a outra. Alternativa B está errada porque, na primeira iteração, a execução não entrará no if, deixando as duas variáveis com valores diferentes.
	A
	
	Se a linha 11 fosse trocada por return i;, o programa anterior calcularia exatamente o tamanho da string armazenada na variável parametro.
	B
	
	Se trocarmos o trecho azul da linha 6 por contador=i, no fim da execução da função, a variável contador terá o mesmo valor de i.
	C
	
	As variáveis i e contador nunca terão o mesmo valor após a primeira iteração do while, independentemente da expressão usada na linha 6.
	D
	
	Se trocarmos o trecho azul da linha 6 por parametro[i] != '\0', pode ocorrer de as variáveis i e contador terem valores diferentes após o fim de todas as iterações.
Questão 5 : 
Sobre o papel das linguagens de programação, seu desenvolvimento e sua evolução, assinale a alternativa correta.
Resposta Errada! A resposta correta é a opção A 
Justificativa: 
Gabarito: A
Comentário: Como discutido na unidade 6, a criação de computadores é anterior à criação de linguagens de programação. Logo, as linguagens de máquina desses computadores foram as primeiras linguagens de programação.
 
	A
	
	As linguagens de máquina foram as primeiras linguagens de programação a surgir.
	B
	
	Um código criado em linguagens de programação como C, costuma ser mais eficiente do que um código criado em linguagem de máquina.
	C
	
	A linguagem C++ foi bastante influenciada pela linguagem C, e essa é uma das razões para a linguagem C não ser mais tanto usada.
	D
	
	Embora seja eficiente, a linguagem C não pode ser usada para a criação de sistemas computacionais de alto risco, como os freios ABS de carros.
Questão 6 : 
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 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 criadoserá 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 7 : 
Sobre as tipologias de linguagens de programação vistas na unidade 7, assinale a alternativa correta.
Resposta Errada! A resposta correta é a opção D 
Justificativa: 
Gabarito: D
Comentário: Como explicado na unidade 7, a linguagem C possui estruturas muito primitivas – o que permite seu uso como linguagem de baixo nível, enquanto também possui abstrações características de linguagens de alto nível.
	A
	
	C e Java são exemplos de linguagens da primeira geração.
	B
	
	A linguagem assembly é uma linguagem de alto nível.
	C
	
	É considerada de muito alto nível, uma linguagem muito difícil de se entender e de se aprender.
	D
	
	Dependendo do uso que se faz dela, a linguagem C pode ser considerada de baixo nível ou de alto nível.
Questão 8 : 
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 9 : 
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 10 : 
Dado o programa a seguir, responsável por implementar um somatório de uma série convergente, responda qual alternativa descreve a série que está sendo calculada.
 
Algoritmo 
		1.#include <math.h>
	2.#include <stdio.h>
	3.#include <stdlib.h>
	4.
	5.int main(void)
	6.{
	7.int n = 1;
	8.float soma = 0;
	9.int i;
	10.for (i = 1; i<= 100; i++){
	11.soma = soma + (1 / pow(2, i-1));
	12.}
	13.printf("%f \n", soma);
	14.        system("pause");
	15.        return 0;
	16.}
Fonte: Elaborado pelo autor (2013).
Resposta Errada! A resposta correta é a opção C 
Justificativa: 
Gabarito: C
Comentário: O exemplo é bem parecido com um visto na unidade 5. A expressão 1 / pow(2, i-1) calcula exatamente o termo da série para n = i.
	A
	
	
	B
	
	
	C
	
	
	D
	
	
Questão 1 : 
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 2 : 
Na unidade 13, você estudou sobre comandos em programação, principalmente o comando de atribuição. Analise as alternativas, a seguir, a respeito do comando de atribuição e assinale a correta:
Resposta Errada! A resposta correta é a opção C 
Justificativa: 
Gabarito: C
Comentário: Qualquer valor número é verdadeiro, com exceção do 0. Na opção A, a instrução b &= 1 compara o valor lógico de b (que é verdadeiro) com o valor lógico de 1 (também verdadeiro), resultando em um valor tambpem verdadeiro, ou seja, diferente de 0. Opção B está errada pois a ordem do incremento pode influenciar a execução dos programas. Na opção D, strings vazias são na verdade strings que só possuem um caractere, o caractere nulo. Esse caractere, porém, é diferente de 0, e portanto, é verdadeiro.
	A
	
	Se b possui valor 2 e executamos a instrução b &= 1;, a variável b passará a ter valor 0.
	B
	
	Escrever ++x ou x++ em um programa não faz nenhuma diferença durante a execução do programa.
	C
	
	Em uma comparação de variáveis, em que, por exemplo, uma variável numérica é tratada como valor lógico, se a variável possuir valor negativo, seu valor lógico será verdadeiro.
	D
	
	Em uma comparação de variáveis, em que, por exemplo, uma string literal vazia é tratada como valor lógico, seu valor lógico será falso.
Questão 3 : 
Sobre as constantes e funções matemáticas, vistas na unidade 15, e com base no programa visto a seguir, assinale a alternativa correta.
Algoritmo – Constantes e funções matemáticas
		1.#include <math.h>
	2.
	3.double novo_log(double x)
	4.{
	5.        double variavel1 = log(x);
	6.        double variavel2 = log(10);
	7.        double resultado = variavel1 / variavel2;
	8.        return resultado;
	9.}
Fonte: Elaborado pelo autor (2013).
Resposta Errada! A resposta correta é a opção D 
Justificativa: 
Gabarito: D
Comentário: O programa troca um logaritmo da base 10 para base e e calcula o resultado.
	A
	
	Pode ocorrer de o valor de variavel2 ser 0 e causar um erro matemático na linha 7 do programa.
	B
	
	O programa anterior usa o logaritmo de base 10 para calcular o logaritmo de base e.
	C
	
	O programa anterior calcula o logaritmo natural do número x na base 10.
	D
	
	O programa anterior calcula o logaritmo na base 10 usando as funções do logaritmo natural.
Questão 4 : 
Assinale a opção que apresenta corretamente a palavra reservada da linguagem C++ para definir um pacote:
Acertou! A resposta correta é a opção B 
Justificativa: 
Gabarito: B
Como visto na unidade 38, item 2, a linguagem C++ usa a palavra namespace para definir um pacote.
	A
	
	package
	B
	
	namespace
	C
	
	using
	D
	
	include
Questão 5 : 
De acordo com os estudos da unidade 44, marque V para a(s) sentença(s) verdadeira(s) e F para a(s) falsa(s):
 
(  ) O armazenamento de registros no arquivo-texto exige que seja definido algum símbolo delimitadorpara identificar cada campo.
(  ) A definição de símbolos delimitadores em arquivos-texto não exige que se conheça a estrutura dos dados que serão armazenados, tornado dessa forma o processo simples.
( ) Em arquivos-textos, os campos armazenados ocupam muito espaço de armazenamento, pois os dados são armazenados em formato ASCII.
(  ) Arquivos binários são mais seguros do que arquivos-texto.
 
Escolha a única alternativa que representa corretamente o resultado de sua análise. 
Acertou! A resposta correta é a opção A 
Justificativa: 
Resposta: A
Comentário: O armazenamento de registros no arquivo-texto exige que seja definido algum símbolo delimitador para identificar cada campo, uma vez que os dados são gravados em formato ASCII. Isso exige que o programador conheça a estrutura dos dados que são manipulados. Por se tratar de um arquivo-texto, pode ser manipulado por qualquer editor de texto, por isso arquivos binários são mais seguros e exigem aplicativos específicos para a manipulação dos registros.
	A
	
	V – F – V – V
	B
	
	F – F – V – V
	C
	
	V – V – F – F
	D
	
	V – V – V – V
Questão 6 : 
Com base no que você viu na unidade 16, e usando seus conhecimentos de manipulação de literais, assinale a alternativa correta.
                                                           Algoritmo – Manipulação de literais
                                                      Fonte: Elaborada pelo autor (2013).
Resposta Errada! A resposta correta é a opção D 
Justificativa: 
Gabarito: D
Comentário: A expressão será verdadeira só quando o caractere atual for um ‘a’ minúsculo. Alternativa A está errada porque a função retornaria o tamanho da string, mas não do vetor.
	A
	
	Se a linha 11 fosse trocada por return i;, o programa anterior calcularia exatamente o tamanho do vetor parametro.
	B
	
	É possível que o valor da variável contador em algum momento seja maior que o valor de i.
	C
	
	Se trocarmos o trecho azul da linha 6 por parametro[i] != 0, no fim da execução da função as variáveis i e contador terão os mesmos valores.
	D
	
	Se trocarmos o trecho azul da linha 6 por parametro[i] == 'a', no fim da execução da função a variável contador terá a quantidade de repetições da letra minúscula a no vetor parametro.
Questão 7 : 
Com base no que você estudou na unidade 4 sobre manipulação de strings, assinale a alternativa correta.
Resposta Errada! A resposta correta é a opção D 
Justificativa: 
Gabarito: D
Comentário: O caractere nulo marca o fim da string e, se colocarmos ele no índice i, então a string terá i caracteres.
	A
	
	A string “aluno” em C é criada da forma char uma_string[] = "aluno\0";.
	B
	
	Pode-se criar uma string com caracteres acentuados da Língua Portuguesa, pois eles fazem parte da tabela ASCII.
	C
	
	Se quisermos criar um vetor vazio e usá-lo para armazenar a string “aluno”, podemos fazer da forma char uma_string[5];.
	D
	
	Se colocarmos o caractere '\0' no índice i de um vetor e mostrarmos esse vetor para o usuário como uma string, o usuário verá uma string com i letras.
Questão 8 : 
Sobre o conceito de modularização e a respeito das técnicas de modularização estudadas na unidade 34, assinale a alternativa correta.
Acertou! A resposta correta é a opção C 
Justificativa: 
Gabarito: C
Comentário: Granularidade é uma qualidade que indica o tamanho das partes em uma divisão e pode ser fina e grossa. No caso da modularização, quanto menores os pedaços ou módulos, mais fina será a granularidade da técnica.
	A
	
	Um programa modularizado possui melhor legibilidade e manutenibilidade, porém aspectos como confiabilidade são prejudicados.
	B
	
	Programas cujo código está dividido em vários módulos são geralmente menos flexíveis do que programas com apenas uma função em um único arquivo.
	C
	
	A granularidade de uma técnica de modularização indica o tamanho relativo de cada módulo do programa, sendo que um programa com módulos pequenos possui uma granularidade mais fina.
	D
	
	Uma das formas mais comuns de modularização em C é através da criação de pacotes.
Questão 9 : 
Analise o código a seguir. 
Figura – Exemplo de Algoritmo – Atividade.
Fonte: Elaborada pelo autor (2013).
 
Entre as opções a seguir, assinale a única instrução que deve ser inserida na linha 102 do código e que permite contar quantos funcionários estão cadastrados no arquivo.
Resposta Errada! A resposta correta é a opção A 
Justificativa: 
Resposta: A
Comentário: Para descobrir a quantidade de funcionários cadastrados no arquivo, a cada repetição do laço enquanto, a variável “qtde” deve ser incrementada em 1. Por isso, a opção correta é qtde++, que é a forma abreviada de qtde = qtde + 1.
	A
	
	qtde++;
	B
	
	sizeof(qtde);
	C
	
	qtde--;
	D
	
	arquivo++;
Questão 10 : 
Com base no que você estudou na unidade 4 sobre strings, assinale a alternativa correta.
Resposta Errada! 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 1 : 
Sobre o conceito de modularização, assinale a alternativa correta.
Resposta Errada! A resposta correta é a opção C 
Justificativa: 
Gabarito: C
Comentário: Como visto na unidade 34, em C é possível separar o código do programa em vários arquivos criando interfaces em arquivos .h, implementando-as em arquivos .c e incluindo a implementação em outros arquivos por meio das instruções do tipo #include "nome_do_arquivo.h".
	A
	
	A técnica de modularização que divide o código do programa em diversas funções é uma técnica de granularidade mais grossa.
	B
	
	Dividir o código de um programa em diversos arquivos de compilação consiste em uma técnica de granularidade mais fina.
	C
	
	Em C, podemos separar o código do programa em vários arquivos, criando interfaces e implementações separadas e incluindo-as em outros arquivos com a instrução #include.
	D
	
	Programas com muitas linhas de código certamente não estão bem modularizados.
Questão 2 : 
Na unidade 13, você estudou sobre comandos em programação, principalmente o comando de atribuição. Analise as alternativas, a seguir, a respeito do comando de atribuição e assinale a correta:
Acertou! A resposta correta é a opção C 
Justificativa: 
Gabarito: C
Comentário: Qualquer valor número é verdadeiro, com exceção do 0. Na opção A, a instrução b &= 1 compara o valor lógico de b (que é verdadeiro) com o valor lógico de 1 (também verdadeiro), resultando em um valor tambpem verdadeiro, ou seja, diferente de 0. Opção B está errada pois a ordem do incremento pode influenciar a execução dos programas. Na opção D, strings vazias são na verdade strings que só possuem um caractere, o caractere nulo. Esse caractere, porém, é diferente de 0, e portanto, é verdadeiro.
	A
	
	Se b possui valor 2 e executamos a instrução b &= 1;, a variável b passará a ter valor 0.
	B
	
	Escrever ++x ou x++ em um programa não faz nenhuma diferença durante a execução do programa.
	C
	
	Em uma comparação de variáveis, em que, por exemplo, uma variável numérica é tratada como valor lógico, se a variável possuir valor negativo, seu valor lógico será verdadeiro.
	D
	
	Em uma comparação de variáveis, em que, por exemplo, uma string literal vazia é tratada como valor lógico, seu valor lógico será falso.
Questão 3 : 
Dado o programa apresentado a seguir e com base no que você estudou sobre variáveis locais, assinale a alternativa correta.
Algoritmo – Exemplo do uso de variáveis
		1.#include <stdio.h>
	2.#include <stdlib.h>
	3.
	4.int main(void)
	5.{
	6.        int a;
	7.        int b;
	8.        scanf("%d", &b);
	9.        a = 5;
	10.        if (a > b){
	11.                int c = 10;
	12.        }
	13.        system("pause");14.        return 0;
	15.}
Fonte: Elaborado pelo autor (2013).
Resposta Errada! A resposta correta é a opção D 
Justificativa: 
Gabarito: D
Comentário: De acordo com o que foi estudado na unidade 11, o escopo da variável c existe apenas na linha 11. Se essa linha não for executada, então a variável nunca existirá e, consequentemente, não será armazenada na memória.
	A
	
	Sempre que o programa é executado, são declaradas 3 variáveis locais.
	B
	
	A variável a é declarada na linha 9.
	C
	
	A variável b é inicializada na linha 7.
	D
	
	Se a condição da linha 10 não for verdadeira, a variável c jamais será armazenada na memória principal.
Questão 4 : 
Sobre a estrutura de dados de pilha que declaramos e usamos em exemplos, assinale a alternativa correta.
Resposta Errada! A resposta correta é a opção B 
Justificativa: 
Gabarito: B
Comentário: Como visto na unidade 29, uma pilha vazia é representada por um topo igual a -1. Caso contrário, o topo será o índice do elemento mais externo da pilha, que pode variar de 0 a 99 na implementação mostrada.
	A
	
	Como a pilha só aceita valores positivos, se tentarmos empilhar um número negativo, um elemento com valor 0 será empilhado no lugar.
	B
	
	Quando a variável que guarda o índice do topo da pilha possui valor -1, sabemos que a pilha está vazia.
	C
	
	Se uma pilha está vazia, a função obtem_topo retorna a própria pilha.
	D
	
	A função empilha recebe como parâmetro apenas o valor que deve ser empilhado.
Questão 5 : 
Dado o programa apresentado a seguir e com base no que você estudou sobre variáveis globais, assinale a alternativa correta.
Algoritmo – Exemplo com variáveis globais e locais
		1.#include <stdio.h>
	2.#include <stdlib.h>
	3.
	4.static int x = 20;
	5.
	6.void uma_funcao(void)
	7.{
	8.        int a;
	9.        for (a = 10; a > 0; a--){
	10.                printf("%d \n", a);
	11.        }
	12.}
	13.
	14.int main(void)
	15.{
	16.        int a;
	17.        scanf("%d", &a);
	18.        if (a > 0){
	19.                int c = 4;
	20.                printf("%d \n", c);
	21.        }
	22.        printf("%d \n", x);
	23.        float x = 5.5;
	24.        printf("%f \n", x);
	25.        uma_funcao();
	26.        system("pause");
	27.        return 0;
	28.}
Fonte: Elaborado pelo autor (2013).
Resposta Errada! A resposta correta é a opção D 
Justificativa: 
Gabarito: D
Comentário: De acordo com o que foi estudado na unidade 12, a função scanf atribui um valor à variável a e, como se trata da primeira atribuição, chamamos a operação de inicialização.
	A
	
	A instrução da linha 19 nunca será executada.
	B
	
	O programa possui uma variável global e no máximo duas variáveis locais. 
	C
	
	A variável global x é inicializada na linha 23.
	D
	
	A variável local a é inicializada na linha 17.
Questão 6 : 
Com base no que você estudou sobre ponteiros, na unidade 19, assinale a alternativa correta.
Resposta Errada! A resposta correta é a opção A 
Justificativa: 
Gabarito: A
Comentário: Ponteiros são variáveis que guardam endereços de memória, os quais podem armazenar valores de qualquer tipo. Se esse endereço guarda um valor do tipo int, dizemos que o ponteiro está apontando para um dado do tipo int.
	A
	
	Ponteiros são variáveis que guardam endereços de memória.
	B
	
	A memória principal do computador possui os dados usados pelos programas, enquanto as instruções do programa ficam armazenadas no processador.
	C
	
	Um ponteiro será inválido se ele não estiver apontando para nenhum endereço de memória.
	D
	
	Um ponteiro será nulo se ele estiver apontando para um endereço de memória que não pertence ao programa.
Questão 7 : 
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:
Resposta Errada! 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 8 : 
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ão podemos usar asteriscos antes do nome de uma variável à esquerda do símbolo de igual (=).
Questão 9 : 
A principal diferença entre sub-rotinas de funções e de procedimento é:
Resposta Errada! A resposta correta é a opção D 
Justificativa: 
Gabarito: D
Quando um procedimento é chamado, ele atualiza variáveis. Lembrando a unidade anterior, as funções sempre produzem um valor como resultado, enquanto o procedimento não, essa é a principal diferença (unidade 37).
	A
	
	Procedimentos devem retornam um resultado depois do seu processamento.
	B
	
	Na linguagem C, a palavra void indica uma função, enquanto um procedimento é indicado pelo tipo de variável que retorna.
	C
	
	Quando o usuário observa um procedimento ele sempre espera um resultado.
	D
	
	Funções sempre produzem um resultado, enquanto procedimento apenas executam comandos, mas não retornam nenhum resultado.
Questão 10 : 
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 1 : 
Com base no que você estudou na unidade 2 sobre o comando de seleção, assinale a alternativa correta.
Acertou! A resposta correta é a opção A 
Justificativa: 
Gabarito: A
Comentário: O bloco de instruções pode ser vazio ou pode ter uma instrução apenas ou mais instruções, desde que seja um número finito.
	A
	
	O bloco de instruções dentro de um comando de seleção pode ter qualquer número finito de instruções.
	B
	
	O bloco de instruções dentro de um comando de seleção não pode ser vazio.
	C
	
	A opção default dos comandos de seleção múltiplos sempre é executada quando um desses comandos de seleção é executado.
	D
	
	Em C, a variável ou expressão do comando switch pode ser de qualquer tipo de dados, inclusive um vetor.
 
Questão 2 : 
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 3 : 
Analise o código a seguir. 
Figura – Exemplo de Algoritmo – Atividade.
Fonte: Elaborada pelo autor (2013).
 
Entre as opções a seguir, assinale a única instrução que deve ser inserida na linha 102 do código e quepermite contar quantos funcionários estão cadastrados no arquivo.
Acertou! A resposta correta é a opção A 
Justificativa: 
Resposta: A
Comentário: Para descobrir a quantidade de funcionários cadastrados no arquivo, a cada repetição do laço enquanto, a variável “qtde” deve ser incrementada em 1. Por isso, a opção correta é qtde++, que é a forma abreviada de qtde = qtde + 1.
	A
	
	qtde++;
	B
	
	sizeof(qtde);
	C
	
	qtde--;
	D
	
	arquivo++;
Questão 4 : 
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:
Resposta Errada! 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 5 : 
De acordo com os estudos da unidade 44, marque V para a(s) sentença(s) verdadeira(s) e F para a(s) falsa(s):
 
(  ) O armazenamento de registros no arquivo-texto exige que seja definido algum símbolo delimitador para identificar cada campo.
(  ) A definição de símbolos delimitadores em arquivos-texto não exige que se conheça a estrutura dos dados que serão armazenados, tornado dessa forma o processo simples.
( ) Em arquivos-textos, os campos armazenados ocupam muito espaço de armazenamento, pois os dados são armazenados em formato ASCII.
(  ) Arquivos binários são mais seguros do que arquivos-texto.
 
Escolha a única alternativa que representa corretamente o resultado de sua análise. 
Acertou! A resposta correta é a opção A 
Justificativa: 
Resposta: A
Comentário: O armazenamento de registros no arquivo-texto exige que seja definido algum símbolo delimitador para identificar cada campo, uma vez que os dados são gravados em formato ASCII. Isso exige que o programador conheça a estrutura dos dados que são manipulados. Por se tratar de um arquivo-texto, pode ser manipulado por qualquer editor de texto, por isso arquivos binários são mais seguros e exigem aplicativos específicos para a manipulação dos registros.
	A
	
	V – F – V – V
	B
	
	F – F – V – V
	C
	
	V – V – F – F
	D
	
	V – V – V – V
Questão 6 : 
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?
Resposta Errada! 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 7 : 
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 8 : 
Dado o programa a seguir, responsável por implementar um somatório de uma série convergente, responda qual alternativa descreve a série que está sendo calculada.
 
Algoritmo 
		1.#include <math.h>
	2.#include <stdio.h>
	3.#include <stdlib.h>
	4.
	5.int main(void)
	6.{
	7.int n = 1;
	8.float soma = 0;
	9.int i;
	10.for (i = 1; i<= 100; i++){
	11.soma = soma + (1 / pow(2, i-1));
	12.}
	13.printf("%f \n", soma);
	14.        system("pause");
	15.        return 0;
	16.}
Fonte: Elaborado pelo autor (2013).
Acertou! A resposta correta é a opção C 
Justificativa: 
Gabarito: C
Comentário: O exemplo é bem parecido com um visto na unidade 5. A expressão 1 / pow(2, i-1) calcula exatamente o termo da série para n = i.
	A
	
	
	B
	
	
	C
	
	
	D
	
	
Questão 9 : 
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 10 : 
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 1 : 
Com base no que você estudou sobre strings, na unidade 17, assinale a alternativa correta.
Resposta Errada! A resposta correta é a opção B 
Justificativa: 
Gabarito: B
Comentário: Como visto na unidade 17, variáveis do tipo char armazenam 8 bits, que são capazes de representar números entre -128 e 127. 
	A
	
	Não podemos realizar operações matemáticas com variáveis do tipo char.
	B
	
	Podemos usar uma variável do tipo char para armazenar um número, desde que ele seja maior ou igual a -128 e menor ou igual a 127.
	C
	
	C suporta a manipulação de strings através de um tipo de dados primitivo para armazenamento de strings.
	D
	
	Em Pascal, podemos saber o tamanho de uma string olhando o valor guardado na última posição do array usado para armazenar a string.
Questão 2 : 
Sobre o conceito de subprogramase sua implementação na linguagem C, assinale a alternativa correta.
Acertou! 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 por meio 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 3 : 
Sobre a estrutura de dados de pilha, declarada na unidade 29, assinale a alternativa correta.
Acertou! A resposta correta é a opção D 
Justificativa: 
Gabarito: D
Comentário: A implementação natural e mais simples da estrutura de dados de pilha possui um número máximo de elementos na pilha, predeterminado, representado pela constante MAX.
 
	A
	
	Sabemos que a pilha está vazia quando a variável que guarda o índice do seu topo está com valor 0.
	B
	
	Se uma pilha está vazia, a função obtem_topo não retorna nada.
	C
	
	A função desempilha retorna o elemento no topo da pilha.
	D
	
	A implementação mostrada da estrutura de pilha define um tamanho máximo para a pilha.
Questão 4 : 
Sobre o conceito de modularização, assinale a alternativa correta.
Resposta Errada! A resposta correta é a opção D 
Justificativa: 
Gabarito: D
Comentário: Como foi visto na unidade 34, uma das técnicas de modularização mais comuns é a separação do código do programa em pacotes, porém a linguagem C não dá suporte a esses pacotes. Em Java existe o conceito de package e em C++ o de namespace – ambos são usados para modularização do programa em pacotes.
	A
	
	Um programa modularizado possui melhor confiabilidade e legibilidade, porém torna-se mais inflexível a mudanças.
	B
	
	Programas cujo código está dividido em vários módulos são geralmente menos confiáveis do que programas com apenas uma função em um único arquivo, pois possuir mais módulos significa ter mais chances de que o código tenha erros.
	C
	
	A granularidade de uma técnica de modularização indica o tamanho relativo de cada módulo do programa, sendo que um programa com módulos pequenos possui uma granularidade mais grossa.
	D
	
	Uma das formas mais comuns de modularização é através da criação de pacotes, embora a linguagem C não suporte a criação destes.
Questão 5 : 
Sobre a estrutura de dados de pilha que declaramos e usamos em exemplos, assinale a alternativa correta.
Acertou! A resposta correta é a opção B 
Justificativa: 
Gabarito: B
Comentário: Como visto na unidade 29, uma pilha vazia é representada por um topo igual a -1. Caso contrário, o topo será o índice do elemento mais externo da pilha, que pode variar de 0 a 99 na implementação mostrada.
	A
	
	Como a pilha só aceita valores positivos, se tentarmos empilhar um número negativo, um elemento com valor 0 será empilhado no lugar.
	B
	
	Quando a variável que guarda o índice do topo da pilha possui valor -1, sabemos que a pilha está vazia.
	C
	
	Se uma pilha está vazia, a função obtem_topo retorna a própria pilha.
	D
	
	A função empilha recebe como parâmetro apenas o valor que deve ser empilhado.
Questão 6 : 
Você estudou a respeito das estruturas de dados fila, pilha e árvore. Qual a estrutura de dados gerenciada pela regra FIFO?
Resposta Errada! A resposta correta é a opção C 
Justificativa: 
Resposta: C
Comentário: Como vimos na unidade 48, FIFO significa “first in - first out”, ou seja, o primeiro a entrar é o primeiro a sair. A estrutura de dados que é gerenciada por essa regra é a fila, de forma que a inserção é realizada no início da estrutura e as remoções no final.
	A
	
	Pilha
	B
	
	Vetor
	C
	
	 Fila
	D
	
	Árvore
Questão 7 : 
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 implemente a 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 8 : 
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.  #include <stdio.h>
	2.  #include <stdlib.h>
	3. 
	4.  void uma_funcao(void)
	5.  {
	6.        int a;
	7.        for (a = 10; a > 0; a--){
	8.                printf("%d \n", a);
	9.        }
	10.  }
	11.
	12.  int main(void)
	13.{
	14.        int x;
	15.        int y;
	16.        scanf("%d", &x);
	17.        y = 5;
	18.        if (x > y){
	19.               int z = 4;
	20.        }
	21.        uma_funcao();
	22.        system("pause");
	23.        return 0;
	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 9 : 
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 10 : 
Sobre o conceito de tipos abstratos de dados, assinale a alternativa correta.
Resposta Errada! 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 1 : 
Sobre as tipologias de linguagens de programação, assinale a alternativa correta.
RespostaErrada! A resposta correta é a opção A 
Justificativa: 
Gabarito: A
Comentário: Na unidade 7, aprendemos que quanto maior o nível de abstração dos comandos mais alto é o nível da linguagem e, consequentemente, ela será mais parecida com a linguagem humana. 
	A
	
	Linguagens de alto nível são mais parecidas com a linguagem humana do que as linguagens de baixo nível.
	B
	
	A linguagem de máquina dos computadores é uma linguagem de muito alto nível.
	C
	
	C e Java são exemplos de linguagens da segunda geração.
	D
	
	Algumas linguagens possuem fins bem específicos, como é o caso da Prolog, que é usada exclusivamente na programação de sistemas operacionais.
Questão 2 : 
Sobre as funções matemáticas da biblioteca padrão de C, assinale a alternativa correta.
Resposta Errada! 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 3 : 
Com base no que você estudou sobre strings, assinale a alternativa correta.
Acertou! A resposta correta é a opção A 
Justificativa: 
Gabarito: A
Comentário: Como visto na unidade 4, é necessário usar o caractere nulo em C para definir o fim da string, logo uma string vazia possui apenas o caractere nulo.
	A
	
	Uma string vazia em C é representada por um vetor de tamanho 1.
	B
	
	A string “programa” em C é representada por um vetor de tamanho 8.
	C
	
	No vetor representando a string “maria” em C, o caractere no índice 1 é ‘m’. 
	D
	
	É possível criar strings em C sem o caractere nulo.
Questão 4 : 
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 5 : 
Em uma estrutura de dados do tipo pilha, foram executadas as seguintes operações: inserir(10), inserir(20), remover(), inserir(30). Assinale a única sentença que representa corretamente como ficou a estrutura de dados após as operações
Resposta Errada! A resposta correta é a opção D 
Justificativa: 
Resposta: D
Comentário: De acordo com o que vimos na unidade 48, a estrutura de dados do tipo pilha é chamada também de LIFO (Last in - First out), assim a ordem nas execuções da estrutura é:
Inserir 10 à 10
Inserir 20 à20,10
Remover à 10
Inserir 30 à 30,10
	A
	
	10, 30 
	B
	
	20, 30 
	C
	
	 30 
	D
	
	30, 10
Questão 6 : 
 A instrução a seguir realiza a abertura do arquivo para a inserção, alteração e remoção de dados: FILE * arquivo = fopen(path, "ab"), em que path representa o caminho para o arquivo.
Assinale a única instrução correta que verifica se o arquivo conseguiu ser aberto após a execução da instrução fopen. 
Acertou! A resposta correta é a opção D 
Justificativa: 
Resposta: D
Comentário: Como vimos na unidade 45, a função fopen abre o arquivo para utilização. Caso algum erro ocorra na execução da função, a variável que armazena o endereço para o arquivo que será manipulado será inicializado com NULL.
	A
	
	if (arquivo == 1){ puts(“Arquivo Aberto com Sucesso!”;}
	B
	
	if (arquivo == 0) { puts(“Arquivo Aberto com Sucesso!”;}
	C
	
	if (!arquivo) { puts(“Arquivo Aberto com Sucesso!”;}
	D
	
	if (arquivo != NULL) { puts(“Arquivo Aberto com Sucesso!”;}
Questão 7 : 
Com base no que você estudou sobre o comando de seleção, assinale a alternativa correta.
Resposta Errada! A resposta correta é a opção D 
Justificativa: 
Gabarito: D
Comentário: As condições de comandos de seleção possuem sempre valor verdadeiro ou falso, como visto na unidade 2.
	A
	
	Um comando de seleção duplo gera três fluxos de execução possíveis para um programa: um, no qual o primeiro bloco é executado; um, no qual o segundo é executado; e um, no qual nenhum dos dois blocos são executados.
	B
	
	O bloco de instruções dentro de um comando de seleção pode ter qualquer número finito de instruções, porém não pode ser vazio.
	C
	
	Um comando seleção múltiplo, assim como os outros comandos de seleção, possui uma condição que deve ser verdadeira para que algum bloco de instruções dentro dele seja executado.
	D
	
	Em C, a condição de um comando de seleção sempre é avaliada como um valor lógico, verdadeiro ou falso.
Questão 8 : 
Sobre os tipos de dados primitivos de C, estudados na unidade 26, assinale a alternativa correta.
Acertou! 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 9 : 
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 10 : 
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 1 : 
Sobre o papel das linguagens de programação, seu desenvolvimento e sua evolução, assinale a alternativa correta.
Acertou! A resposta correta é a opção A 
Justificativa: 
Gabarito: A
Comentário: Como discutido na unidade 6, a criação de computadores é anterior à criação de linguagens de programação. Logo, as linguagens de máquina desses computadores foram as primeiras linguagens de programação.
 
	A
	
	As linguagens de máquina foram as primeiras linguagens de programação a surgir.
	B
	
	Um código criado em linguagens de programação como C, costuma ser mais eficiente do que um código criado em linguagem de máquina.
	C
	
	A linguagem C++ foi bastante influenciada pela linguagem C, e essa é uma das razões para a linguagem C não ser mais tanto usada.
	D
	
	Embora seja eficiente, a linguagem C não pode ser usada para a criação de sistemas computacionais de alto risco, como os freios ABS de carros.
Questão 2 : 
Sobre o conceito de modularização, assinale a alternativacorreta.
Acertou! A resposta correta é a opção D 
Justificativa: 
Gabarito: D
Comentário: Como foi visto na unidade 34, uma das técnicas de modularização mais comuns é a separação do código do programa em pacotes, porém a linguagem C não dá suporte a esses pacotes. Em Java existe o conceito de package e em C++ o de namespace – ambos são usados para modularização do programa em pacotes.
	A
	
	Um programa modularizado possui melhor confiabilidade e legibilidade, porém torna-se mais inflexível a mudanças.
	B
	
	Programas cujo código está dividido em vários módulos são geralmente menos confiáveis do que programas com apenas uma função em um único arquivo, pois possuir mais módulos significa ter mais chances de que o código tenha erros.
	C
	
	A granularidade de uma técnica de modularização indica o tamanho relativo de cada módulo do programa, sendo que um programa com módulos pequenos possui uma granularidade mais grossa.
	D
	
	Uma das formas mais comuns de modularização é através da criação de pacotes, embora a linguagem C não suporte a criação destes.
Questão 3 : 
Com base no que você estudou sobre manipulação de string, assinale a alternativa correta.
Acertou! 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 4 : 
Você estudou a respeito das estruturas de dados fila, pilha e árvore. Qual a estrutura de dados gerenciada pela regra FIFO?
Resposta Errada! A resposta correta é a opção C 
Justificativa: 
Resposta: C
Comentário: Como vimos na unidade 48, FIFO significa “first in - first out”, ou seja, o primeiro a entrar é o primeiro a sair. A estrutura de dados que é gerenciada por essa regra é a fila, de forma que a inserção é realizada no início da estrutura e as remoções no final.
	A
	
	Pilha
	B
	
	Vetor
	C
	
	 Fila
	D
	
	Árvore
Questão 5 : 
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). 
Resposta Errada! 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 6 : 
Sobre os tipos de dados homogêneos que estudamos na unidade 30, assinale a alternativa correta.
Resposta Errada! A resposta correta é a opção A 
Justificativa: 
Gabarito: A
Comentário: O que faz um tipo de dado ser homogêneo é o fato de seus elementos terem que ser do mesmo tipo. O mesmo vale para estruturas de dados.
	A
	
	A estrutura de dados de pilha que foi estudada é um tipo de dado homogêneo, pois todos os elementos empilhados devem ser do mesmo tipo.
	B
	
	Podemos definir um array de tamanho infinito em C.
	C
	
	Strings não são consideradas um tipo de dado homogêneo.
	D
	
	Tipos de dados homogêneos possuem esse nome porque são arrays e matrizes constituídas de elementos de tipos de dados primitivos.
Questão 7 : 
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 por meio 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 8 : 
Sabendo que uma das formas de persistir as variáveis em memória secundária é a serialização, marque V para a(s) alternativa(s) verdadeira(s) e F para a(s) falsa(s).
(   ) Serialização é a leitura da variável no disco
(   ) A linguagem JAVA possui um mecanismo de serialização de objetos.
(   ) Desserialização é a escrita da variável no disco
(   ) Para transformar um objeto serializável no JAVA ele deve implementar a interface serializable.
Em seguida, assinale a alternativa que apresente a sequência correta.
Resposta Errada! A resposta correta é a opção D 
Justificativa: 
Gabarito: D
A primeira afirmativa é falsa, pois serialização é a escrita da variável no disco. A segunda e a quarta afirmativas sobre a linguagem JAVA estão corretas e a terceira sobre a desserialização é falsa porque a desserialização é a leitura da variável no disco (unidade 40, item 2).
	A
	
	V – V – V – V
	B
	
	V – F – V – F
	C
	
	F – F – F – V
	D
	
	F – V – F – V
Questão 9 : 
Sobre a estrutura de dados de pilha, estudada na unidade 29, assinale a alternativa correta.
Resposta Errada! A resposta correta é a opção C 
Justificativa: 
Gabarito: C
Comentário: As operações de manipulação de pilhas são sempre realizadas com o elemento no topo, como foi estudado. Porém, na implementação que estudamos, como structs possuem livre acesso, nada impede o programador de acessar diretamente o array que faz parte da struct e manipulá-lo diretamente.
	A
	
	Uma pilha é implementada em C como um array unidimensional e com várias funções que acessam, inserem ou removem elementos desse array.
 
	B
	
	Uma pilha é implementada em C como uma struct que possui um array bidimensional e uma variável que guarda a quantidade de elementos na pilha.
	C
	
	Uma pilha possui a restrição de permitir acesso apenas ao elemento no seu topo, embora essa restrição seja difícil de implementar em C.
	D
	
	Uma pilha permite a inclusão de elementos em qualquer posição, independentemente da quantidade de elementos na pilha, porém apenas o elemento no topo pode ser removido.
Questão 10 : 
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 1 : 
Sobre as constantes e funções matemáticas, vistas na unidade 15, assinale a alternativa correta.
Acertou! A resposta correta é a opção A 
Justificativa: 
Gabarito: A
Comentário: M_E e M_PI realmente só passam a estar disponíveis quando o programador inclui o arquivo math.h no programa. Alternativa B está errada, pois os valores não são variáveis.
	A
	
	A linguagem C disponibiliza as constantes M_E e M_PI para serem usadas em programas, porém é necessário utilizar a instrução de inclusão de biblioteca #include para que elas estejam disponíveis.
	B
	
	M_E e M_PI são variáveis matemáticas definidas no arquivo math.h.
	C
	
	Como as funções log() e log10() de C recebem como parâmetro números de tipo double, elas não são capazes de calcular o logaritmo de números de tipoint.
	D
	
	A constante Pi está disponível na grande maioria das linguagens de programação. Para utilizar seu valor em C, é possível escrever Math.PI.
Questão 2 : 
Sobre a estrutura de dados de pilha que declaramos e usamos em exemplos, assinale a alternativa correta.
Acertou! A resposta correta é a opção B 
Justificativa: 
Gabarito: B
Comentário: Como visto na unidade 29, uma pilha vazia é representada por um topo igual a -1. Caso contrário, o topo será o índice do elemento mais externo da pilha, que pode variar de 0 a 99 na implementação mostrada.
	A
	
	Como a pilha só aceita valores positivos, se tentarmos empilhar um número negativo, um elemento com valor 0 será empilhado no lugar.
	B
	
	Quando a variável que guarda o índice do topo da pilha possui valor -1, sabemos que a pilha está vazia.
	C
	
	Se uma pilha está vazia, a função obtem_topo retorna a própria pilha.
	D
	
	A função empilha recebe como parâmetro apenas o valor que deve ser empilhado.
Questão 3 : 
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 4 : 
Sobre tipologias de 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 5 : 
Com base no que você estudou sobre precedência e associatividade de operadores, na unidade 14, e também com base nos comandos vistos na unidade 13, analise o comando a seguir:
 
x = y++ == z + 2;
 
Agora, assinale a alternativa que corresponde à ordem correta de execução dos operadores desse comando, sendo o comando mais à esquerda o primeiro e o comando mais à direita o último.
Acertou! A resposta correta é a opção C 
Justificativa: 
 
Gabarito: C
Comentário: Embora o operador ++ tenha precedência maior, como ele está após o nome da variável, ele deve ser o último operador. Os outros operadores seguem a ordem de precedência deles, que é 4, 7 e 14, de acordo com o quadro 5.
	A
	
	++ , == , + , =
	B
	
	= , ++ , == , +
	C
	
	+ , == , = , ++
	D
	
	++, +, ==, =
Questão 6 : 
Na unidade 13, você estudou sobre comandos em programação, principalmente o comando de atribuição. Analise as alternativas, a seguir, a respeito do comando de atribuição e assinale a correta:
Acertou! A resposta correta é a opção C 
Justificativa: 
Gabarito: C
Comentário: Qualquer valor número é verdadeiro, com exceção do 0. Na opção A, a instrução b &= 1 compara o valor lógico de b (que é verdadeiro) com o valor lógico de 1 (também verdadeiro), resultando em um valor tambpem verdadeiro, ou seja, diferente de 0. Opção B está errada pois a ordem do incremento pode influenciar a execução dos programas. Na opção D, strings vazias são na verdade strings que só possuem um caractere, o caractere nulo. Esse caractere, porém, é diferente de 0, e portanto, é verdadeiro.
	A
	
	Se b possui valor 2 e executamos a instrução b &= 1;, a variável b passará a ter valor 0.
	B
	
	Escrever ++x ou x++ em um programa não faz nenhuma diferença durante a execução do programa.
	C
	
	Em uma comparação de variáveis, em que, por exemplo, uma variável numérica é tratada como valor lógico, se a variável possuir valor negativo, seu valor lógico será verdadeiro.
	D
	
	Em uma comparação de variáveis, em que, por exemplo, uma string literal vazia é tratada como valor lógico, seu valor lógico será falso.
Questão 7 : 
Sobre os tipos de dados homogêneos que estudamos na unidade 30, assinale a alternativa correta.
Acertou! A resposta correta é a opção A 
Justificativa: 
Gabarito: A
Comentário: O que faz um tipo de dado ser homogêneo é o fato de seus elementos terem que ser do mesmo tipo. O mesmo vale para estruturas de dados.
	A
	
	A estrutura de dados de pilha que foi estudada é um tipo de dado homogêneo, pois todos os elementos empilhados devem ser do mesmo tipo.
	B
	
	Podemos definir um array de tamanho infinito em C.
	C
	
	Strings não são consideradas um tipo de dado homogêneo.
	D
	
	Tipos de dados homogêneos possuem esse nome porque são arrays e matrizes constituídas de elementos de tipos de dados primitivos.
Questão 8 : 
Com base no que você estudou sobre os tipos de dados homogêneos, analise o código a seguir e responda quais variáveis do programa possuem tipo de dados composto e homogêneo.
Algoritmo – Atividade  
	1.    struct ponto{
2.            float x;
3.            float y;
4.    };
5.     
6.    int main(void)
7.    {
8.            struct ponto array_pontos[2];
9.            struct ponto ponto_a, ponto_b;
10.         ponto_a.x = 3.14;
11.         ponto_a.y = 6.87;
12.         ponto_b.x = ponto_a.x + ponto_a.y;
13.         ponto_b.y = -ponto_b.x;
14.         array_pontos[0] = ponto_b;
15.         array_pontos[1] = ponto_a;
16.         struct ponto matriz_pontos[2][2];
17.         matriz_pontos[0][0] = array_pontos[0];
18.         matriz_pontos[0][1] = array_pontos[1];
19.         return 0;
20. }
Fonte: Elaborado pelo autor (2013).
Acertou! A resposta correta é a opção A 
Justificativa: 
Gabarito: A
Comentário: Como estudado na unidade 31, arrays e matrizes são tipos de dados compostos homogêneos. A variável array_pontos é um array de tamanho 2 e a variável matriz_pontos é uma matriz de 2 linhas por 2 colunas. 
	A
	
	array_pontos e matriz_pontos
	B
	
	ponto_a e ponto_b
	C
	
	array_pontos, ponto_a e ponto_b
	D
	
	x e y
Questão 9 : 
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).
Acertou! 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 10 : 
Sobre as tipologias de linguagens de programação, assinale a alternativa correta.
Acertou! A resposta correta é a opção A 
Justificativa: 
Gabarito: A
Comentário: Na unidade 7, aprendemos que quanto maior o nível de abstração dos comandos mais alto é o nível da linguagem e, consequentemente, ela será mais parecida com a linguagem humana. 
	A
	
	Linguagens de alto nível são mais parecidas

Continue navegando