Baixe o app para aproveitar ainda mais
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
Compartilhar