Prévia do material em texto
<p>Questão 1/12 - Linguagem de Programação</p><p>A equipe de uma empresa de desenvolvimento de software recebeu a tarefa de criar um sistema de gerenciamento</p><p>de funcionários. Sabendo que as principais informações a serem armazenadas seriam nome, idade, cargo, salário e</p><p>departamento de cada funcionário, a equipe decidiu criar as seguintes estruturas para armazenar as informações de</p><p>maneira organizada e acessível.</p><p>Qual das seguintes alternativas é a forma correta de alocar memória para uma variável do tipo “funcionario” usando a</p><p>função MALLOC() em C?</p><p>Nota: 10.0</p><p>A malloc(funcionario *pessoa);</p><p>B malloc(sizeof(funcionario));</p><p>Você assinalou essa alternativa (B)</p><p>C malloc(sizeof(funcionario*));</p><p>D malloc(sizeof(struct funcionario));</p><p>E malloc(sizeof(funcionario)); funcionario *pessoa = malloc;</p><p>Questão 2/12 - Linguagem de Programação</p><p>A manipulação de múltiplos arquivos em linguagem C é aplicada no desenvolvimento de programas complexos e</p><p>extensos, onde é necessário dividir o código em partes menores e independentes para facilitar a manutenção e o</p><p>desenvolvimento. Considere as alternativas a seguir, assinalando a opção que apresenta uma das formas de criar e</p><p>compilar múltiplos arquivos em C, garantindo que o programa final seja executável:</p><p>Nota: 0.0 Você não pontuou essa questão</p><p>A Todos os arquivos de código-fonte e cabeçalhos devem ser incluídos em um único arquivo</p><p>antes de serem compilados.</p><p>B Cada arquivo de código-fonte deve ser compilado separadamente e, em seguida, os</p><p>resultados devem ser combinados em um único arquivo executável.</p><p>Você acertou!</p><p>A notação “sizeof(funcionario)” retorna o tamanho em bytes da struct “funcionario”, que pode ser</p><p>usado como argumento para a função MALLOC() para alocar memória para uma variável do tipo</p><p>“funcionario”. A função MALLOC() aloca um bloco de memória do tamanho especificado em bytes</p><p>e retorna um ponteiro para o primeiro byte do bloco alocado. Nesse caso, é necessário alocar</p><p>memória suficiente para armazenar todas as variáveis dentro da estrutura “funcionario”.</p><p>Referência: Aula 4 – Ponteiros; Tema 5 - Ponteiros com structs; Ponteiros com structs.</p><p>Gabarito: Letra B. Cada arquivo de código-fonte é compilado separadamente, gerando um</p><p>arquivo objeto correspondente. Em seguida, os arquivos objeto são combinados em um único</p><p>arquivo executável durante o processo de ligação. Essa abordagem permite que as partes</p><p>C A compilação de múltiplos arquivos em C é impossível; todos os códigos devem ser incluídos</p><p>em um único arquivo.</p><p>Você assinalou essa alternativa (C)</p><p>D Todos os arquivos de cabeçalho devem ser incluídos em um único arquivo antes de serem</p><p>compilados, enquanto os arquivos de código-fonte podem ser compilados separadamente.</p><p>E A compilação de múltiplos arquivos em C é possível, mas apenas se eles forem escritos em</p><p>diferentes linguagens de programação.</p><p>Questão 3/12 - Linguagem de Programação</p><p>A linguagem C é uma linguagem de programação de alto nível, utilizada para desenvolvimento de sistemas</p><p>operacionais, compiladores, jogos e aplicativos em geral. Um dos principais recursos da linguagem C é a sua</p><p>capacidade de manipular dados e variáveis de diferentes tipos.</p><p>No que se refere a garantir a correta manipulação de dados, qual das seguintes afirmações é verdadeira?</p><p>Nota: 0.0 Você não pontuou essa questão</p><p>A Constantes em linguagem C são declaradas usando a palavra-chave "var".</p><p>B Todas as variáveis em linguagem C são inicializadas automaticamente com valores aleatórios.</p><p>C Na declaração de uma constante em linguagem C é obrigatório declarar explicitamente o tipo</p><p>de dado.</p><p>Você assinalou essa alternativa (C)</p><p>D As variáveis em linguagem C não são inicializadas automaticamente.</p><p>E A linguagem C suporta diversos tipos de dados, entre eles, int, float, char, boolean, etc.</p><p>Questão 4/12 - Linguagem de Programação</p><p>A linguagem C não fornece suporte para o tipo de dados string. Portanto, para realizar o armazenamento de uma</p><p>cadeia de caracteres necessitamos recorrer ao recurso de criação de vetores do tipo char.</p><p>Nesse cenário, qual é o tamanho mínimo adequado para armazenarmos o texto “Linguagem C”?</p><p>Nota: 10.0</p><p>A 9</p><p>B 10</p><p>independentes do código sejam desenvolvidas e testadas separadamente, facilitando a</p><p>manutenção e o desenvolvimento de programas complexos e extensos.</p><p>Referência: Aula 6 – Bibliotecas Externas e manipulação de arquivos; Tema 2 - Trabalhando com</p><p>múltiplos arquivos; Compilação dos arquivos.</p><p>Na linguagem de programação C, ao declarar uma variável devemos sempre inicializá-la, ou</p><p>seja, atribuir um valor inicial. Isso é necessário, pois a linguagem C não garante a inicialização</p><p>automática e, sendo assim, optar por não atribuir um valor para uma variável pode gerar um valor</p><p>indeterminado.</p><p>Referência: Aula 1 – Revisão e adequação com Linguagem C; Tema 2 - Tipos de Dados;</p><p>Declaração de variáveis.</p><p>C 11</p><p>D 12</p><p>Você assinalou essa alternativa (D)</p><p>E 13</p><p>Questão 5/12 - Linguagem de Programação</p><p>Em linguagem C, strings são tratadas como vetores de caracteres, onde o deslocamento pode utilizar operações de</p><p>atribuição, cópia, concatenação de caracteres e, inclusive ponteiros. Nesse contexto, considere o código em</p><p>linguagem C apresentado a seguir e assinale a alternativa que representa corretamente sua execução.</p><p>Nota: 10.0</p><p>A Apresenta a string caractere a caractere sem o uso de ponteiros.</p><p>B Apresenta a string, caractere a caractere, na ordem inversa com o uso de ponteiros.</p><p>C Apresenta a string inteira, utilizando ponteiros.</p><p>D Apresenta a string caractere a caractere utilizando ponteiros.</p><p>Você assinalou essa alternativa (D)</p><p>E Apresenta a string inteira, na ordem inversa com o uso de ponteiros.</p><p>Questão 6/12 - Linguagem de Programação</p><p>Você acertou!</p><p>Como o texto possui 11 caracteres, é necessário prever o espaço destinado para o terminador</p><p>nulo '\0' que identifica o final da string. Isso significa que a string deverá ser declarada com um</p><p>caractere adicional para esse fim. E, por esse motivo, o vetor deverá possuir, no mínimo, 12</p><p>posições.</p><p>Referência: Aula 2 – Strings, vetores e matrizes; Tema 2 - Introdução a strings; Cuidados com a</p><p>manipulação de strings.</p><p>Você acertou!</p><p>Gabarito: Letra D. O ponteiro “ptr” é inicializado para apontar para o início da string “nome”. Em</p><p>seguida, um loop é executado, apresentando o caractere apontado por “ptr” e incrementando o</p><p>ponteiro a cada iteração, ou seja, movendo-o para a próxima posição da string. A função</p><p>STRLEN() é utilizada para obter o comprimento da string “nome”, que é utilizado como condição</p><p>de parada do loop.</p><p>Referência: Aula 4 – Ponteiros; Tema 4 - Ponteiros com vetores e matrizes; Ponteiros com</p><p>vetores e matrizes.</p><p>Uma struct com ponteiros apresenta bastante similaridade com a forma como declaramos e manipulamos uma struct</p><p>simples. Sendo apenas necessário pequenas modificações para a inclusão de ponteiros, permitindo o acesso de</p><p>forma indireta.</p><p>Relacionado a essa informação, assinale a alternativa que apresenta a forma correta de acesso a uma struct por meio</p><p>de ponteiros:</p><p>Nota: 10.0</p><p>A ponteiro.variavel;</p><p>B ponteiro = &variavel;</p><p>C ponteiro->variavel;</p><p>Você assinalou essa alternativa (C)</p><p>D (*ponteiro).&variavel;</p><p>E (*ponteiro)->variavel;</p><p>Questão 7/12 - Linguagem de Programação</p><p>As estruturas heterogêneas são muito úteis quando necessitamos agrupar os dados por finalidade ou similaridade. Na</p><p>linguagem C podemos destacar as seguintes estruturas heterogêneas são: STRUCT, ENUM e UNION. Baseado</p><p>nessa informação, considere o código em C a seguir e assinale qual a alternativa correta ao final de uma execução</p><p>bem-sucedida:</p><p>Você acertou!</p><p>Existem duas formas de acessar uma struct de forma indireta por meio de ponteiro:</p><p>Por meio do operador de conteúdo apresentado entre parênteses acompanhado da</p><p>variável que desejamos acessar. O delimitador (ponto) continua sendo necessário.</p><p>Exemplo: (*ponteiro).autor</p><p>Substituindo o delimitador (ponto) pelo operador seta (->).</p><p>Exemplo: ponteiro->autor</p><p>Referência: Aula 4 – Ponteiros; Tema 5 - Ponteiros com structs; Ponteiros com structs.</p><p>Nota: 0.0 Você não pontuou</p><p>essa questão</p><p>A Nulo.</p><p>B 2</p><p>C 0</p><p>Você assinalou essa alternativa (C)</p><p>D Erro de compilação.</p><p>E 1</p><p>Questão 8/12 - Linguagem de Programação</p><p>Considere o seguinte trecho de código em C:</p><p>Suponha que esse código seja executado em uma máquina com um compilador C padrão. Qual das seguintes</p><p>afirmações é verdadeira sobre a execução desse trecho de código?</p><p>Gabarito: Letra E. No código, é criada uma variável “var” do tipo struct tipoPersonalizado, que</p><p>tem como tipo de dado um enum chamado “tipoDado” e como valor um union chamado “dado”. A</p><p>variável é preenchida com o valor booleano 1 e a variável tipo recebe o valor BOOLEANO.</p><p>Na sequência, é verificado se var.tipo é igual a BOOLEANO, o que é verdadeiro, já que o valor</p><p>de tipo é BOOLEANO. Dessa forma, o valor armazenado em var.valor.booleano é impresso na</p><p>tela.</p><p>Referência: Aula 5 – Utilizando recursos avançados em linguagem de programação; Tema 5 -</p><p>ENUM e UNION; Union (união).</p><p>Nota: 0.0 Você não pontuou essa questão</p><p>A O código irá causar um erro de compilação devido à tentativa de copiar uma string para um</p><p>vetor que não tem espaço suficiente.</p><p>B O código irá compilar e copiar a string "Prova" para o vetor “str2” sem problemas.</p><p>C O código irá copiar a string "Prova" para o vetor “str2”, mas não irá incluir o terminador de</p><p>string nulo (\0).</p><p>D O código irá copiar a string "Prova" para o vetor “str2”, mas irá incluir caracteres adicionais</p><p>após o terminador de string nulo (\0).</p><p>Você assinalou essa alternativa (D)</p><p>E O código irá compilar, mas irá gerar uma inconsistência de dados devido à tentativa de</p><p>copiar uma string para um vetor que não possui espaço suficiente.</p><p>Questão 9/12 - Linguagem de Programação</p><p>As STRUCT e UNION são recursos fundamentais em linguagem C para criação de tipos de dados personalizados.</p><p>Ambas permitem combinar diferentes tipos de dados em uma única variável, de modo a armazenar informações</p><p>relacionadas em uma estrutura mais organizada e de fácil acesso.</p><p>Avalie as alternativas disponíveis, assinalando a opção que apresenta a diferença entre as estruturas STRUCT e</p><p>UNION em linguagem C:</p><p>Nota: 10.0</p><p>A STRUCT é usado para agrupar variáveis de tipos diferentes, enquanto UNION é usado para</p><p>agrupar variáveis de tipos iguais.</p><p>B STRUCT armazena diferentes tipos de dados em diferentes campos, enquanto UNION</p><p>permite que diferentes campos compartilhem o mesmo espaço de memória.</p><p>Você assinalou essa alternativa (B)</p><p>C STRUCT armazena diferentes tipos de dados em diferentes campos, enquanto UNION</p><p>armazena apenas um tipo de dado em um campo.</p><p>D STRUCT permite que diferentes campos compartilhem o mesmo espaço de memória,</p><p>enquanto UNION armazenam diferentes tipos de dados em diferentes campos.</p><p>O código irá compilar, mas irá gerar uma inconsistência de dados devido à tentativa de copiar</p><p>uma string para um vetor que não tem espaço suficiente.</p><p>Isso ocorre porque o vetor “str2” é declarado com tamanho de 5 elementos, mas a string "Prova"</p><p>tem um comprimento de 5 caracteres, mais o terminador de string nulo (\0). Portanto, a tentativa</p><p>de copiar a string "Prova" para “str2” usando a função STRCPY() irá causar um estouro de buffer.</p><p>Referência: Aula 2 – Strings, vetores e matrizes; Tema 3 - Funções para manipulação de strings;</p><p>STRCPY().</p><p>Você acertou!</p><p>Estruturas armazenam diferentes tipos de dados em diferentes campos, enquanto uniões</p><p>permitem que diferentes campos compartilhem o mesmo espaço de memória. Em uma união,</p><p>apenas um campo pode ser usado por vez e o tamanho da união é o tamanho do maior campo.</p><p>Em uma estrutura, cada campo tem seu próprio espaço de memória e o tamanho da estrutura é a</p><p>soma dos tamanhos dos campos individuais.</p><p>Referência: Aula 5 – Utilizando recursos avançados em linguagem de programação; Tema 5 -</p><p>ENUM e UNION; ENUM e UNION.</p><p>E STRUCT e UNION são sinônimos em C e podem ser usadas indistintamente.</p><p>Questão 10/12 - Linguagem de Programação</p><p>Ao trabalhar com alocação dinâmica de memória em C, é possível utilizar duas funções bastante populares: "malloc"</p><p>e "calloc". Ambas as funções permitem a alocação de um bloco de memória de tamanho específico durante a</p><p>execução do programa. Entretanto, existe uma diferença importante entre elas.</p><p>Assinale a alternativa que descreve corretamente a diferença entre as funções "malloc" e "calloc" em linguagem C:</p><p>Nota: 10.0</p><p>A A função "malloc" é usada para alocar memória dinamicamente e inicializar todos os seus bits</p><p>com zero, enquanto a função "calloc" é usada para alocar memória dinamicamente sem</p><p>inicializar seu conteúdo.</p><p>B Não há diferença, ambas alocam memória dinamicamente</p><p>C "malloc" só pode ser usada para alocar memória para tipos simples, enquanto "calloc" pode</p><p>alocar memória para tipos compostos</p><p>D A função "malloc" é usada para alocar memória dinamicamente para um único objeto,</p><p>enquanto a função "calloc" é usada para alocar memória para um vetor de objetos.</p><p>E A função "calloc" é usada para alocar memória dinamicamente e inicializar a memória</p><p>alocada com zeros, enquanto "malloc" apenas aloca memória dinamicamente sem</p><p>inicializar seu conteúdo.</p><p>Você assinalou essa alternativa (E)</p><p>Questão 11/12 - Linguagem de Programação (questão opcional)</p><p>A função STRCAT() é uma das funções disponíveis para a manipulação de strings, presente na bibliotecas string.h da</p><p>linguagem C.</p><p>Portanto, dentre as alternativas apresentadas, assinale aquela que descreve corretamente o comportamento da</p><p>função STRCAT().</p><p>Nota: 10.0</p><p>A Substitui todos os caracteres de uma string por outros caracteres especificados.</p><p>B Concatena duas strings, adicionando a segunda string ao final da primeira.</p><p>Você assinalou essa alternativa (B)</p><p>Você acertou!</p><p>A alternativa afirma que a função "calloc" inicializa a memória alocada com zeros, enquanto a</p><p>função "malloc" não faz nenhuma inicialização. Essa afirmação é correta.</p><p>Quando usamos a função "malloc" para alocar memória dinamicamente, não há garantia sobre o</p><p>conteúdo dessa memória. É possível que a memória alocada contenha lixo (valores</p><p>indeterminados).</p><p>Por outro lado, a função "calloc" tem como objetivo garantir que a memória alocada esteja limpa</p><p>e pronta para uso. A função "calloc" inicializa toda a memória alocada com zeros,</p><p>independentemente do tipo de dado. Isso significa que não há risco de obter valores</p><p>indeterminados em áreas de memória alocadas.</p><p>Referência: Aula 4 – Ponteiros; Tema 3 - Alocação dinâmica de memória; malloc() e calloc().</p><p>Você acertou!</p><p>A função STRCAT() é uma função usada para concatenar duas strings. Quando a função é</p><p>chamada, a segunda string é adicionada ao final da primeira string, sem inclusão de espaços. A</p><p>função não cria uma nova string, mas modifica a primeira string passada como parâmetro.</p><p>C Compara duas strings e retorna um valor inteiro indicando qual delas é maior.</p><p>D Copia uma string para outra, permitindo alterar a nova string durante a cópia.</p><p>E Extrai uma substring de uma string, baseando-se em um índice de início e um comprimento.</p><p>Questão 12/12 - Linguagem de Programação (questão opcional)</p><p>Em algumas implementações, as estruturas de dados são uma etapa importante para o desenvolvimento de diversos</p><p>tipos de programas, podendo ser compostas por diferentes tipos de dados, porém em alguns casos, é possível que</p><p>apenas um tipo de dado seja utilizado em um determinado momento. Sendo assim, avalie a seguinte definição de</p><p>uma UNION em linguagem C:</p><p>Com base nessa definição, qual a finalidade de aplicar uma UNION em uma estrutura de dados?</p><p>Nota: 0.0 Você não pontuou essa questão</p><p>A Reservar espaço de memória para os três tipos de dados, garantindo assim que não faltará</p><p>espaço para salvar os dados.</p><p>Você assinalou essa alternativa (A)</p><p>B Reservar espaço de memória para o menor tipo de dado da estrutura para economizar espaço.</p><p>C Economizar espaço de memória quando apenas um tipo de dado pode estar presente</p><p>em um determinado momento.</p><p>D Utilizar ao mesmo tempo três tipos de variáveis diferentes para gerar uma estrutura de dados.</p><p>E Reservar espaço pela média de tamanho do conjunto de variáveis e assim utilizar a memória</p><p>da melhor forma.</p><p>Referência:</p><p>Aula 2 – Strings, vetores e matrizes; Tema 3 - Funções para manipulação de strings;</p><p>STRCAT().</p><p>A estrutura de dados UNION é usada para economizar espaço de memória quando apenas um</p><p>tipo de dado pode estar presente em um determinado momento, permitindo que diferentes tipos</p><p>de dados compartilhem o mesmo espaço de memória.</p><p>Referência: Aula 5 – Utilizando recursos avançados em linguagem de programação; Tema 5 -</p><p>ENUM e UNION; Union (união).</p>