Baixe o app para aproveitar ainda mais
Prévia do material em texto
Curso GRA1033 TÉCNICAS DE PROGRAMAÇÃO PTA - 202010.ead-5400.01 Teste 20201B2 - CLIQUE AQUI PARA ACESSAR A PROVA N2 (A5) Iniciado 09/06/20 20:19 Enviado 09/06/20 21:47 Status Completada Resultado da tentativa 7 em 10 pontos Tempo decorrido 1 hora, 28 minutos Instruções Caso necessite a utilização do "EXCEL" clique no link ao lado -----------> excel.xlsx Resultados exibidos Respostas enviadas, Respostas corretas, Comentários · Pergunta 1 1 em 1 pontos Na computação, muito se manipula informações no sistema binário de numeração. A representação binária básica é chamada de BCD8421 . O número 8421 representa o valor de cada bit na posição i (2 i ) com i iniciando em 0 na posição mais à direita. Por exemplo, o valor 1011 (2) equivale à 8 + 0 + 2 + 1 = 11 (10) . Suponha um número decimal armazenado em uma variável denominada “ decimal ” do tipo “ unsigned char ” ( unsigned char decimal=103 ). Suponha a necessidade de converter esse número para o sistema binário de numeração e armazená-lo em uma string “ numbin ”. Analise os trechos de código a seguir: I → for(i=0;i<8;i++,decimal/=2) numbin[i]=decimal%2+48; numbin[8]=0; II → for(i=7;i>=0;i--,decimal/=2) numbin[i]=decimal%2+48; numbin[8]=0; III → for(i=7;i>=0;i--) { decimal = decimal / 2; numbin[i]=decimal%2+48; } numbin[8]=0; IV → for(i=7;i>=0;i--,decimal/=2) numbin[i]=decimal/2+48; numbin[8]=0; Após analisar os trechos acima, podemos dizer que realiza (m) a conversão de decimal para binário, apenas o (s) código (s): Resposta Selecionada: II e III. Resposta Correta: II e III. Feedback da resposta: Parabéns! Sua resposta foi a correta! No caso, as alternativas II e III contém o mesmo código, porém alterando apenas o local para a divisão da variável “decimal”. A soma por 48 foi realizada pelo fato de que o valor do caractere “0”, na tabela ASCII, vale 48. Ao final, foi adicionado o caractere nulo à última posição da string ( numbin[8]=0;) para representar o seu final. · Pergunta 2 1 em 1 pontos Em funções recursivas, a posição da chamada recursiva em relação às demais linhas de seu código influencia o resultado. Dependendo da posição, a recursividade é dita como pré-ordem (quando o processamento antecede a chamada recursiva); ordem simétrica (quando o processamento encontra-se entre duas chamadas recursivas) ou, finalmente, pós-ordem (processamento após as chamadas recursivas). Para essa questão, suponha o código a seguir: #include <stdio.h> void Recursao1(int i) { if(i>=5) return; printf("%d ",i); Recursao1(i+1); } void Recursao2(int i) { if(i>=5) return; Recursao2(i+1); printf("%d ",i); } int main() { printf("Recursao1\n"); Recursao1(0); printf("\n\nRecursao2\n"); Recursao2(0); return 0; } Assinale a opção que você julgue ser a correta: Resposta Selecionada: .A função “ Recursao1” segue uma recursão pré-ordem – logo o seu resultado é “ 0 1 2 3 4”. Por sua vez, a função “ Recursao2” é pós-ordem, por consequência, o seu resultado é: “ 4 3 2 1 0” . Resposta Correta: .A função “Recursao1” segue uma recursão pré-ordem – logo o seu resultado é “0 1 2 3 4”. Por sua vez, a função “Recursao2” é pós-ordem, por consequência, o seu resultado é: “4 3 2 1 0” . Feedback da resposta: Parabéns! Sua resposta foi a correta! Você observou corretamente a ordem de chamada e impressão do resultado. Na pré-ordem, a impressão acontece antes da chamada, por consequência, a impressão é realizada, neste caso, na ordem crescente. Na pós-ordem, a impressão acontece na ordem descrescente pois a recursão caminha por todos os níveis da contagem e imprime o resultado na volta das chamadas recursivas. · Pergunta 3 0 em 1 pontos Em arquivos textuais, quando desejamos substituir uma informação com o mesmo tamanho da nova informação, podemos realizar sobrescrita sem a necessidade de criação de arquivo temporário para receber a nova versão do conteúdo. Para essa questão, analise o código a seguir, que realiza a troca do caractere “i” pelo caractere “y” na primeira linha do arquivo. Em sua análise preencha as lacunas. #include <stdio.h> #include <string.h> int main() { FILE *arq; char linha[40]; long pos; int i; arq=fopen("atividade.txt","___"); if(arq==NULL) { printf("Erro de abertura do arquivo.\n"); return 0; } pos=_____; //armazenar a posicao corrente do ponteiro de arquivo. fgets(linha,40,arq); for(i=0;i<strlen(linha);i++) if(linha[i]=='i') linha[i]='y'; _____; //reposicionar no ponto anterior aa leitura _____; //gravacao da linha. fclose(arq); return 0; } Assinale a alternativa que você julgue ser a correta. Resposta Selecionada: . r+ ; ftell(arq) ; fseek(arq,pos,SEEK_SET); fputc(linha,arq) . Resposta Correta: . r+ ; ftell(arq) ; fseek(arq,pos,SEEK_SET); fputs(linha,arq) . Feedback da resposta: Infelizmente a sua resposta está incorreta. Para responder essa questão, reflita e tente responder à questão: como poderemos reposicionar o ponteiro do arquivo para que possamos sobrescrever o conteúdo do arquivo? · Pergunta 4 1 em 1 pontos Em algumas situações, surge a necessidade de agrupar informações para melhor representar uma entidade ou algo da vida real que esteja sendo manipulado pelo programa. Para tanto, pode-se utilizar estruturas de dados heterogêneos, denominadas, em C/C++, como “ struct ”. Suponha que se deseja representar uma pessoa cuja data de nascimento é quebrada em outra “ struct ” (separando dia, mês e ano). Em relação à criação da “ struct ”, considere o seguinte trecho de código: . . . typedef struct { char nome[30]; struct { unsigned char dia, mes; unsigned int ano; } nascimento; } TPessoa; . . . TPessoa tp; . . . Para essa questão, considere as afirmações a seguir: I – não é possível inserir uma estrutura dentro da outra; II – para se instaciar o dia, deve-se fazer: “ tp.nascimento.dia=20; ”; III – existe um erro de sintaxe pois está faltando o “ typedef ” antes da segunda ocorrência da palavra “ struct ”; IV – para se instanciar o mês, deve-se fazer: “ tp.mes=3; ”. Assinale a alternativa que contenha a(s) afirmação(ões) que você julgue correta(s). Resposta Selecionada: II, apenas. Resposta Correta: II, apenas. Feedback da resposta: Parabéns! Sua resposta foi a correta! Realmente é possível criar estruturas dentro de estruturas e, para acessar os campos, deve-se referenciar todo o caminho, passando pelos itens das estruturas. · Pergunta 5 0 em 1 pontos Uma das vantagens de se passar, como parâmetro de uma função, um vetor definido como ponteiro, consiste no fato de que a função pode se adequar a qualquer tamanho de parâmetro. Para essa questão, suponha a implementação que retornará a média das notas de alunos armazenados em um vetor. A finalização do vetor ocorre com a presença do valor “-1” posterior à última posição válida. Analise o código relativo à função e preencha as lacunas corretamente: #include <stdio.h> float Media(float ___notas) { float soma = 0.0; int i=0; while(*(notas+i)!=-1) { soma+=___; i++; } if(i==0) return 0; return soma / ___; } int main() { float notas1[5]={8.0 , 7.0 , 6.5 , 8.3 , -1.0}; float notas2[8]={7.0 , 8.2 , 5.6 , 9.7 , 7.4 , 8.6 , 9.4 , -1.0}; printf("Media1 = %.1f\n",Media(notas1)); printf("Media2 = %.1f\n",Media(notas2)); return 0; } Assinale a alternativa que apresenta a sequência correta relativa ao preenchimento das lacunas. Resposta Selecionada: * ; *(notas+i) ; i-1. Resposta Correta: .* ; *(notas+i) ; i. Feedback da resposta: Infelizmente a sua resposta está incorreta. Para responder essa questão, reveja como se manipular um vetor na forma de ponteiro. Reveja, também, as formas de acesso ao conteúdo de um ponteiro e, por fim, como um índice pode ser representado neste caso. · Pergunta 6 1 em 1 pontos Uma matriz pode ser criada pela utilização de ponteiros para ponteiros. Para isso, deve ser criado um vetor, com a dimensão da quantidadede linhas, de ponteiros para ponteiros. Cada item referenciará um ponteiro que representará um vetor, com a dimensão da quantidade de colunas, que será responsável por armazenar os dados da matriz. Para essa questão, analise o código abaixo para a criação de uma matriz, preenchendo as lacunas com o valor “1” caso seja necessária a utilização de “**” e, com o valor “2”, caso seja necessária a utilização de “*”: #include <stdio.h> #include <stdlib.h> float ___CriarMatriz(int n_linhas, int n_colunas) { float ___matriz; int i; matriz = (float ___) calloc(n_linhas, sizeof(float ___)); if (matriz == NULL) return NULL; for (i = 0; i<n_linhas; i++) { matriz[i] = (float ___) calloc(n_colunas, sizeof(float)); if (matriz[i] == NULL) return NULL; } return matriz; } int main() { float ___mat; mat = CriarMatriz(5,5); if(mat==NULL) printf("Erro criacao da matriz.\n"); //... return 0; } Assinale a alternativa que apresenta a sequência correta para o preenchimento das lacunas. Resposta Selecionada: 1, 1, 1, 2, 2, 1. Resposta Correta: 1, 1, 1, 2, 2, 1. Feedback da resposta: Parabéns! Sua resposta foi a correta! Você observou bem o enunciado da questão e relacionou corretamente os locais nos quais era necessária a utilização de ponteiro para ponteiro (vetor das linhas) e a utilização de ponteiros (vetor das colunas). · Pergunta 7 1 em 1 pontos Na computação, existem várias formas de representação numérica, dentre as quais, podemos citar as representações decimal, hexadecimal, octal e binária. Para realizar a conversão, por exemplo, de um valor formatado na base decimal para uma base K , basta realizar divisões sucessivas por K e coletar o último quociente e todos os restos das divisões em ordem inversa. Suponha a necessidade de criar uma função recursiva para a conversão de um número na base decimal para a representação binária (base 2). Para essa questão, suponha o trecho a seguir: #include <stdio.h> void Dec2Bin(int n) { if(__) printf("%d",n); else { ___; ___; } } int main() { Dec2Bin(14); return 0; } Assinale a opção abaixo que contenha os trechos de código para preencher as lacunas: Resposta Selecionada: . n<2 ; Dec2Bin(n / 2) ; printf("%d",n%2) . Resposta Correta: . n<2 ; Dec2Bin(n / 2) ; printf("%d",n%2) . Feedback da resposta: Parabéns! Sua resposta foi a correta! Você interpretou corretamente o fato de a impressão dos restos das divisões sucessivas é realizada na ordem reversa às divisões, ou seja, a impressão necessita ser do tipo “pós-ordem”, inserida após a chamada recursiva. Como critério de parada, a cláusula que indica a não possibilidade de continuar as divisões por 2. · Pergunta 8 1 em 1 pontos Linguagens estruturadas permitem que informações sejam armazenadas e recuperadas de memórias não voláteis. Porém, elas são dependentes de funções e estruturas exportadas pelo sistema operacional. Dadas as afirmativas a seguir, classifique-as V para verdadeiro e F para falso. ( ) Ponteiros de arquivos (“ FILE *”) devem ser alocados dinamicamente através do uso “ malloc()” antes de serem utilizados. ( ) Ponteiros de arquivos referenciam uma posição de memória mantida pelo sistema operacional que armazena atributos e status dos arquivos manipulados. ( ) Para a manipulação da posição corrente do arquivo podemos usar as funções “ ftell()” e “ fseek()” que devolvem e setam a posição corrente do arquivo, respectivamente. ( ) A função “fread ()” retorna EOF quando chegar ao final do arquivo. Assinale a alternativa que você julgue ter a sequência correta. Resposta Selecionada: F, V, V, F. Resposta Correta: F, V, V, F. Feedback da resposta: Parabéns! Sua resposta foi a correta! Descritores de arquivos são estruturas mantidas pelo sistema operacional e são endereçados através dos ponteiros de arquivos, que são instanciados pelo uso da função “fopen ()”. A função “fread ()” retorna a quantidade de itens lidos. · Pergunta 9 0 em 1 pontos Denomina-se como matriz esparsa aquela que a quantidade de elementos não nulos é mínima. Sendo assim, para economia de recursos de memória, aloca-se apenas os campos que possuem valores representativos. Para essa questão, analise as afirmativas abaixo e classifique com “S” aquelas que podem contribuir para a implementação de matriz esparsa e, com “N”, aquelas que não podem. ( ) Podemos implementar matriz esparsa como uma matriz de ponteiro para ponteiro. Cada linha de ponteiros aponta para um vetor de ponteiros, onde cada célula é uma estrutura composta pelos campos: valor e número da coluna. ( ) A matriz NxM é representada por um vetor com N*M células, onde cada célula é um registro composto pelos campos: linha, coluna e valor. ( ) A matriz é formada por uma estrutura estática, independentemente do número de elementos nulos. ( ) A matriz esparsa pode ser representada por uma matriz de ponteiro para ponteiro onde cada linha aponta para uma coluna alocada dinamicamente cujo tamanho é em função da quantidade dos elementos não nulos. Assinale a alternativa que apresenta a sequência que você considera correta. Resposta Selecionada: S, S, N, S. Resposta Correta: S, N, N, S. Feedback da resposta: Infelizmente a sua resposta está incorreta. Para responder essa questão, tente abstrair que o número de elementos, por exemplo, de uma coluna é variável e é determinado pela quantidade de valores não nulos. · Pergunta 10 1 em 1 pontos Quando construimos aplicações para que sejam executadas a partir do comando de linha (prompt ou console), temos a possibilidade de passarmos informações ao programa. Para tanto, usamos os parâmetros comumente identificados por “ argc ” e “ argv ”. Considerando o trecho: int main(int argc, char *argv[]) Analise as afirmativas a seguir, marcando com “V” a(s) verdadeira(s) e, com “F” a(s) falsa(s): ( ) caso colocarmos, em nosso código “ printf(“%s”,argv[0]) ”, será impresso o nome do próprio programa. ( ) caso não passemos nenhum parâmetro ao programa, “ argv ” assumirá o valor 0. ( ) o parâmetro “ argv ” é uma lista de strings . ( ) o parâmetro “ argc ” sempre será positivo e maior ou igual a 1. Marque a opção que tiver a sequência que você julgue ser a correta: Resposta Selecionada: .V ; F; V ; V . Resposta Correta: .V ; F; V ; V . Feedback da resposta: Parabéns! Sua resposta foi a correta! Realmente, o parâmetro “ argv” sempre conterá pelo menos um item – que é o nome do arquivo executável evocado para a execução, inserido na posição 0 do parâmetro “ argv”. Desta forma, o “ argc” sempre será maior ou igual a 1. Terça-feira, 9 de Junho de 2020 21h47min39s BRT Curso GRA1033 TÉCNICAS DE PROGRAMAÇÃO PTA - 202010.ead - 5400.01 Teste 20201B2 - CLIQUE AQUI PARA ACESSAR A PROVA N2 (A5) Iniciado 09/06/20 20:19 Enviado 09/06/20 21:47 Status Completada Resultado da tentativa 7 em 10 pontos Tempo decorrido 1 hora, 28 minutos Instruções Caso necessite a utilização do "EXCEL" clique no link ao lado ----------- > excel.xlsx Resultados exibidos Respostas enviadas, Respostas corretas, Comentários · Pergunta 1 1 em 1 pontos Na computação, muito se manipula informações no sistema binário de numeração. A representação binária básica é chamada de BCD8421 . O número 8421 representa o valor de cada bit na posição i (2 i ) com i iniciando em 0 na posição mais à direita. Por exemplo , o valor 1011 (2) equivale à 8 + 0 + 2 + 1 = 11 (10) . Suponha um número decimal armazenado em uma variável denominada “decimal ” do tipo “ unsigned char ” ( unsigned char decimal=103 ). Suponha a necessidade de converter esse número para o sistema binár io de numeração e armazená - lo em uma string “ numbin ”. Analise os trechos de código a seguir: I ? for(i=0;i<8;i++,decimal/=2) numbin[i]=decimal%2+48; numbin[8]=0; II ? for(i=7;i>=0;i -- ,decimal/=2) numbin[i]=decimal%2+48; numbin[8]=0; III ? for(i=7;i> =0;i -- ) { decimal = decimal / 2; numbin[i]=decimal%2+48; } numbin[8]=0; IV ? for(i=7;i>=0;i -- ,decimal/=2) numbin[i]=decimal/2+48; numbin[8]=0; Após analisar os trechos acima, podemos dizer que realiza (m) a conversão de decimal para binário, apenas o (s) c ódigo (s): Resposta Selecionada: II e III. Resposta Correta: II e III. Feedback da resposta: Parabéns! Sua resposta foi a correta! No caso, as alternativas II e III contém o mesmo código, porém alterando apenas o local para a divisão da variável “decimal”. A soma por 48 foi realizada pelo fato de que o valor do caractere “0”, na tabela ASCII, vale 48. Ao final, foi adicionado o caractere nulo à última posição da string ( numbin[8]=0; ) para representar o seu final. · Pergunta 2 1 em 1 pontos Curso GRA1033 TÉCNICAS DE PROGRAMAÇÃO PTA - 202010.ead-5400.01 Teste 20201B2 - CLIQUE AQUI PARA ACESSAR A PROVA N2 (A5) Iniciado 09/06/20 20:19 Enviado 09/06/20 21:47 Status Completada Resultado da tentativa 7 em 10 pontos Tempo decorrido 1 hora, 28 minutos Instruções Caso necessite a utilização do "EXCEL" clique no link ao lado ----------- > excel.xlsx Resultados exibidos Respostas enviadas, Respostas corretas, Comentários Pergunta 1 1 em 1 pontos Na computação, muito se manipula informações no sistema binário de numeração. A representação binária básica é chamada de BCD8421 . O número 8421 representa o valor de cada bit na posição i (2 i ) com i iniciando em 0 na posição mais à direita. Por exemplo, o valor 1011 (2) equivale à 8 + 0 + 2 + 1 = 11 (10) . Suponha um número decimal armazenado em uma variável denominada “ decimal ” do tipo “ unsigned char ” ( unsigned char decimal=103 ). Suponha a necessidade de converter esse número para o sistema binário de numeração e armazená-lo em uma string “ numbin ”. Analise os trechos de código a seguir: I ? for(i=0;i<8;i++,decimal/=2) numbin[i]=decimal%2+48; numbin[8]=0; II ? for(i=7;i>=0;i--,decimal/=2) numbin[i]=decimal%2+48; numbin[8]=0; III ? for(i=7;i>=0;i--) { decimal = decimal / 2; numbin[i]=decimal%2+48; } numbin[8]=0; IV ? for(i=7;i>=0;i--,decimal/=2) numbin[i]=decimal/2+48; numbin[8]=0; Após analisar os trechos acima, podemos dizer que realiza (m) a conversão de decimal para binário, apenas o (s) código (s): Resposta Selecionada: II e III. Resposta Correta: II e III. Feedback da resposta: Parabéns! Sua resposta foi a correta! No caso, as alternativas II e III contém o mesmo código, porém alterando apenas o local para a divisão da variável “decimal”. A soma por 48 foi realizada pelo fato de que o valor do caractere “0”, na tabela ASCII, vale 48. Ao final, foi adicionado o caractere nulo à última posição da string ( numbin[8]=0;) para representar o seu final. Pergunta 2 1 em 1 pontos
Compartilhar