Baixe o app para aproveitar ainda mais
Prévia do material em texto
Usuário Curso Teste Iniciado Enviado Status Resultado da tentativa Tempo decorrido Instruções Resultados exibidos Respostas enviadas, Respostas corretas, Comentários Pergunta 1 1 em 1 pontos Para a manipulação de um arquivo, deve-se antes, realizar a sua abertura através do comando “ fopen()”. Tal comando permite associar o nome físico do arquivo assim como a sua forma de abertura. Para essa questão, analise as linhas de código a seguir: FILE *arq; arq = fopen(“arquivo.dat”,”wb+”); Assinale a alternativa que você julgue ser a correta. Resposta Selecionada: Será aberto um arquivo binário “ arquivo.dat” permitindo-se operações de leitura e de escrita. Sempre será criado um arquivo novo, destruindo o conteúdo caso já exista um arquivo com o mesmo nome. Resposta Correta: Será aberto um arquivo binário “arquivo.dat” permitindo-se operações de leitura e de escrita. Sempre será criado um arquivo novo, destruindo o conteúdo caso já exista um arquivo com o mesmo nome. Comentário da resposta: Parabéns! Sua resposta foi a correta! Você observou bem que foi incluído o símbolo ”+”, que indica que operações de escrita poderão ser realizadas além das operações de escrita do símbolo “w”. O “w” indica ainda, que sempre será criado um arquivo novo, destruindo o conteúdo do arquivo caso já exista. Além destas informações, encontramos o símbolo “b” denotando que o arquivo a ser aberto será do tipo binário. Pergunta 2 1 em 1 pontos Para essa questão, suponha que um certo arquivo mantém, em sua primeira posição, a quantidade de registros armazenados. Após o indicativo da quantidade, são gravados os valores na forma <int,float>. Desta forma, o arquivo consiste em: <qtd_registros><int1><float1><int2><float2>...<intn,floatn>. Para essa questão, analise o código a seguir e preencha as lacunas de modo a representar o processo de criação de um arquivo novo e gravação de três registros. #include <stdio.h> void GravaArq(FILE *arq, int val_i,float val_f) { fwrite(&val_i,sizeof(____),1,arq); fwrite(&val_f,sizeof(____),1,arq); } int main() { FILE *arq; int qtd=3; arq=fopen("exercicio.dat","___"); if(arq==NULL) { printf("Erro de abertura do arquivo (1).\n"); return 0; } fwrite(&qtd,sizeof(int),1,arq); GravaArq(arq,0,2.1); GravaArq(arq,10,45.21); GravaArq(arq,20,345.87); fclose(arq); return 0; } Assinale a alternativa que você julgue ser a correta. Resposta Selecionada: . int ; float ; wb . Resposta Correta: . int ; float ; wb . Comentário da resposta: Parabéns! Sua resposta foi a correta! Realmente, para realizar somente operações em um arquivo binário, deve-se usar o modo “ wb”. O processo de gravação ocorre mediante a utilização de “ fwrite()” onde o tamanho do item gravado deve acompanhar o tipo. No caso, foi utilizada a função “ sizeof()” vinculado ao tipo passado como parâmetro para a gravação. Pergunta 3 0 em 1 pontos Em algumas ocasiões, surge a necessidade de se manipular informações organizadas em uma matriz (estrutura de dados homogênea bidimensional). Assim como toda variável, uma matriz também deve ser declarada. Dados os trechos de código abaixo, marque com “V” aquele (s) que você julgue estar correto (s) e, com “F”, o (s) incorreto (s): ( ) int M[5][5]; ( ) int M[5,5]; ( ) int M[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}}; ( ) int M[ ][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}}; ( ) int [5]M[5]; Assinale a alternativa que contenha a sequência correta. Resposta Selecionada: V; F; V; F; F. Resposta Correta: V; F; V; V; F. Comentário da resposta: Infelizmente a sua resposta está incorreta. Para responder essa questão, lembre-se que uma matriz sempre deve obedecer possuir em sua declaração, as dimensões. Tente lembrar, também, qual seria a diferença entre a forma de instanciação de uma string e um vetor? Pergunta 4 1 em 1 pontos Um programa consiste em criar uma sequência lógica de instruções de modo que possam ser manipuladas informações representadas na forma de variáveis. Em linguagens tipadas, como é o caso de C/C++, toda variável deve ser declarada associando à um tipo de dados. Dadas as declarações abaixo em C/C++, assinale com “C” a(s) que você julgue estar corretamente declarada(s) e, com “E” a(s) errada(s): ( ) int a; b; ( ) unsigned char x, y[10]; ( ) int a, char b; ( ) int [10] x; ( ) float a; int b; Assinale a alternativa que contenha a ordem correspondente à sua marcação. Resposta Selecionada: E; C; E; E; C. Resposta Correta: E; C; E; E; C. Comentário da resposta: Parabéns! Sua resposta foi a correta! Realmente, as declarações em C/C++, caso envolvam duas ou mais variáveis, devem seguir a forma: “<tipo> variável1, variável2;”. Pode-se colocar declarações usando vários tipos de dados, porém, cada agrupamento deverá ser separado por um “;”. Pergunta 5 1 em 1 pontos Programas devem manipular informações através das instruções. Porém, as informações devem ser escolhidas de acordo com o seu tipo, de modo que a escolha proporcione funcionalidade compatível com o seu objetivo e, também, com o objetivo de otimizar os recursos computacionais. Para essa questão, suponha que você desenvolverá um programa necessitando declarar variáveis cujos limites de valores a serem manipulados são: 0 a 60.000; 'a' até 'z'; ±150.000; ±20.000 e 0 a 230. Dentre as alternativas a seguir, marque aquela que você julgue possuir a sequência correta associando de forma mais otimizada, os tipos de dados às faixas de valores: Resposta Selecionada: char; char; long int; int; unsigned char. Resposta Correta: char; char; long int; int; unsigned char. Comentário da resposta: Parabéns! Sua resposta foi a correta! Você associou acertadamente os tipos inteiros às faixas de valores, observando que no modificador de tipo “ unsigned” o limite positivo seja dobrado, por exemplo, o tipo “ char” tem a sua faixa de -128 a 127, por sua vez, o “ unsigned char” pode variar de 0 a 255. Pergunta 6 1 em 1 pontos Em certas situações, onde uma certa variável recebe, como valor de instanciação, um dentre dois valores, podemos substituir o comando “ if...else ” pelo comando condicional inline : o “ if ternário ”. Para essa questão, considere os seguintes trechos contendo as estruturas condicionais: (A) if(a == b) { c=d; } else { c=e; } (B) if(a==0) { x = x + 1; } else { x = x * b; } (C) if(a!=0) { x=0; } else { x=1; } (D) if((a == b)&&(c > d)) { e = f; } else { e = g; } Associe os trechos com comandos condicionais aos condicionais ternários a seguir: ( ) x = (a) ? 0 : 1; ( ) x = (!a) ? x++ : x*=b; ( ) e=((a==b)&&(c>d)) ? e : f; ( ) c=(a==b)?d:e; Escolha a opção que contém a sequência que você julgue ser a correta. Resposta Selecionada: C; B; D; A. Resposta Correta: C; B; D; A. Comentário da resposta: Parabéns! A sua resposta está correta! Você observou bem que a sintaxe genérica de um comando condicional ternário é: “ var = (expressão) ? valor_if : valor_else;”. Pergunta 7 1 em 1 pontos Um programa é constituído por uma sequência de instruções que poderão ser dentre outras, condicionais. Instruções condicionais do tipo “ if ” envolve uma expressão a ser validada de forma a se proceder a escolha da sequência a ser processada. Para essa questão, suponha a existência de uma variável “ med ” e outra “ freq ”. A partir do código abaixo, complete os espaços de forma a seguir a regra de aprovação do aluno, considerando que a nota para a aprovação é 06.0 e a frequência mínima é de 75%. if((med __ 6) __ (freq __ __)) printf(“Aprovado”); else printf(“Reprovado”); Agora assinale a alternativa correta: Resposta Selecionada: .>= ; &&; >=; 75. Resposta Correta: .>= ; &&; >=; 75. Comentário da resposta: Parabéns! Sua resposta foi a correta! Você associou corretamente prestando atenção que o valor igual ao patamar mínimo é também fator de aprovação.Observou também que a unidade (por exemplo, “%”) não faz parte do valor da variável: ela é usada somente para a nossa representação e não para a representação interna do computador. Pergunta 8 1 em 1 pontos Para que seja realizada uma alocação dinâmica, deve-se utilizar funções para a alocação, realocação e liberação da memória previamente alocada. Para essa questão, analise as afirmativas a seguir assinalando com V para verdadeiro e F para falso. ( ) Pode-se usar a função “ realloc() ” mesmo em ponteiros que não foram previamente iniciados. ( ) Toda a alocação de memória é feita em uma região da memória principal denominada “ heap ”. ( ) Toda memória alocada dinamicamente deverá ser desalocada ao final da função “ main() ” mesmo que ela tenha sido alocada como uma variável local à uma outra função. ( ) Deve-se sempre testar se a alocação foi bem sucedida antes de usar o ponteiro de forma efetiva. Assinale a alternativa que apresenta a sequência assinalada. Resposta Selecionada: F, V, F, V. Resposta Correta: F, V, F, V. Comentário da resposta: Parabéns! Sua resposta foi a correta! Realmente, antes da utilização do ponteiro (inclusive antes da realocação), deve-se proceder a alocação de memória. O espaço alocado no “ heap” deverá ser desalocado ao final de sua utilização; caso seja uma variável local, a desalocação deve ser realizada dentro da função na qual foi feita de definição. Pergunta 9 1 em 1 pontos Para essa questão, suponha o seguinte enunciado. “A resistência de uma liga metálica se dá pelos percentuais de utilização de carbono misturados a outros elementos, essencialmente o ferro. Suponha a necessidade de se implementar uma função que, dada uma métrica de resistência (tipo de resistência – suponha que existam disponíveis 10 níveis de resistência) e um volume de ferro (em toneladas) calcule e retorne o percentual e a massa (em toneladas) de carbono a ser utilizada na liga metálica”. Para esse enunciado foi implementada uma função cuja chamada ocorrerá na forma: . . . float massaCarbono; massaCabono = CalculaQtdCarbono(tipo_resist,massaFerro, &percentual_carbono); . . . Assinale a opção abaixo que represente a interface mais apropriada para a questão: Resposta Selecionada: . float CalculaQtdCarbono(unsigned char, float, float *); . Resposta Correta: . float CalculaQtdCarbono(unsigned char, float, float *); . Comentário da resposta: Parabéns! Sua resposta foi a correta! Você interpretou corretamente o enunciado! Realmente, a função deve retornar dois valores: a massa de carbono (colocado como float em razão dos valores fracionários) e o percentual de carbono (passado como referência, como float, na lista de parâmetros da função). Foi utilizado o “ unsigned int” para o tipo da liga em função de uma escala com poucos valores (por exemplo, de 1 a 10). Pergunta 10 1 em 1 pontos Em uma operação de recuperação de informações a partir de um arquivo, após a leitura de um item, deve-se sempre verificar se o final do arquivo foi alcançado. A informação de EOF ( End-Of-File – Final de Arquivo) pode ser obtida em diversas operações. Para essa questão, analise as linhas de código a seguir: I – info = fgetc(arq); II – fputs(buffer, sizeof(buffer), arq); III – fread(buffer,sizeof(buffer),1,arq); IV – fputc(carac,arq); Assinale a alternativa que você julgue ser a correta. Resposta Selecionada: Apenas a função da linha III não pode retornar EOF. Resposta Correta: Apenas a função da linha III não pode retornar EOF. Comentário da resposta: Parabéns! Sua resposta foi a correta! Apesar das funções das linhas II e IV serem de saída (gravação), podem retornar EOF em caso de erro. A função da linha I pode retornar EOF no caso do encontro de final de arquivo na operação de leitura. A função da linha III retorna a quantidade de itens lidos.
Compartilhar