Baixe o app para aproveitar ainda mais
Prévia do material em texto
Usuário Curso TÉCNICAS DE PROGRAMAÇÃO Teste Prova N2 Iniciado AJUDE – SIGA, CURTA, SALVE O TRABALHO, OBRIGADO Enviado 17/04/22 15:50 Status Completada Resultado da tentativa 10 em 10 pontos Tempo decorrido Resultados exibidos Respostas enviadas, Respostas corretas, Comentários • Pergunta 1 Ponteiros são aplicáveis a todos os tipos de dados, inclusive aos registros. A manipulação de registros como ponteiros são extremamente úteis na passagem de parâmetros das funções. Com ponteiros, evita-se que todos os campos da estrutura sejam copiados para as variáveis locais inerentes à função. Para essa questão, suponha o seguinte trecho de código e complete as lacunas com o código correspondente para a impressão na tela, da rua e do número: #include <stdio.h> #include <stdlib.h> typedef struct { char rua[30]; char bairro[30]; int num; } S_Endereco; int main() { S_Endereco *se; se = (S_Endereco *)malloc(sizeof(S_Endereco)); scanf("%s", _____); scanf("%d", _____); free(se); return 0; } Assinale a alternativa que contenha a sequência correta relativa ao preenchimento das lacunas. • Pergunta 2 Na linguagem C/C++, encontramos alguns comandos capazes de modificar o fluxo de execução de um programa: “return” (retorno de uma função), “break” (finaliza, por exemplo, um laço de repetição) e “continue” que volta para a linha que contém a definição do laço de repetição (por exemplo, a linha que contém a palavra “for”). Para essa questão, suponha que seja necessário implementar uma função hipotética que, passados como parâmetros os valores de “início” e de “final” de uma contagem, imprima os elementos de acordo com o seguinte conjunto de regras: não imprimir os números ímpares; caso seja encontrado um valor múltiplo de 5, sair de laço de repetição; caso seja encontrado o valor 48, sair da função. Para tanto, analise o código a seguir: #include <stdio.h> void func(int inicio, int final) { int i=inicio; for(; i<final; i++) { if(i%2) ____; printf("%d ",i); if(!(i%5)) ____; if(i==48) { printf("\nSaindo da funcao pois encontrou 48.\n"); ____; } } if(i==final) printf("\nsaiu do laco pelo limite da contagem\n"); else printf("\nsaiu do laco pois encontrou um multiplo de 5\n"); } int main() { printf("Execucao 1:\n"); func(6,15); printf("Execucao 2:\n"); func(46,55); printf("Execucao 3:\n"); func(36,39); return 0; } Assinale a opção abaixo que contenha a ordem correta de aparição dos comandos “return”, “break” e “continue”: • Pergunta 3 Uma string, em C, também pode ser definida como um ponteiro para o tipo “char”. Quando manipulamos ponteiros, alguns cuidados devem ser tomados para que não haja risco de destruir, em função de sobreposição, informações previamente armazenadas em outras variáveis e espaços de endereçamento. Para essa questão, analise os seguintes trechos de código a seguir em relação a algum erro de implementação que pode acarretar na sobreposição de informações: I - char *str; strcpy(str,”Alo mundo!”); II - char *str; str = (char *) malloc(15); strcpy(str, “Alo mundo!”); III - char *str; char str1[15]=”Alo mundo!”; str = str1; IV - char *str[10]; strcpy(str, “Alo mundo!”); Com base na sua análise, assinale a alternativa que contenha as afirmativas que você considera corretas. • Pergunta 4 Uma matriz esparsa é aquela formada com a maioria de suas células tendo o valor 0. Sendo assim, não é necessário o armazenamento de toda a estrutura da matriz e, sim, somente das células que contém valores não nulos. Para essa questão, analise o código a seguir e preencha as lacunas: typedef struct { int coluna; float valor; } ESPARSA; . . . int **matriz; matriz = (____)malloc(sizeof(____)*QtdLinhas); for(i=0; i<QtdLinhas; i++) { matriz[i] = (____)malloc(sizeof(____)*QtdElementos); AdicionaElementosLinha(matriz[i],ListaElementos); } Assinale a alternativa que apresenta a sequência correta para o preenchimento das lacunas. • Pergunta 5 Na linguagem de programação C, podemos encontrar dois tipos básicos de arquivos: os arquivos binários e os arquivos texto. A forma de diferenciação, em relação à manipulação, consiste no uso de formas de abertura e funções específicas. Para essa questão, assinale, nas afirmativas abaixo, com (B) caso relacione-se aos arquivos binários e, com (T) caso relacione-se aos arquivos textuais. ( ) Para manipular o arquivo, usa-se as funções “ fread()” e “ fwrite()”. ( ) É totalmente legível caso seja aberto em editores de texto do tipo “bloco de notas”. ( ) Por exemplo, uma informação numérica, ocupa neste tipo de arquivo, uma quantidade de bytes compatível com a quantidade de dígitos de seu valor. ( ) Neste tipo de arquivo, tende-se a gastar menos espaço de armazenamento pois cada variável gasta exatamente o seu tamanho ocupado na memória principal; valor do retorno da função “ sizeof()”. Assinale a alternativa que apresente a sequência correta. • Pergunta 6 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: • Pergunta 7 Em C standard, uma das funções usadas para a impressão de conteúdo na tela é o printf. Tal comando permite adequar a impressão ao tipo e ao formato da informação a ser exibida. Suponha que o usuário deseja realizar uma impressão no seguinte formato: “Valor da média = 3.21 - valor do caracter 'A' na tabela ASCII = 65 (hexa= 41)” Supondo que existam as seguintes variáveis instanciadas: float media=3.21043891; carac = 'A'; Preencha os espaços do comando com os formatos corretos: printf(“Valor da média = __ - valor do caracter '__' na tabela ASCII = __ (hexa= __)”,media,carac,carac,carac); Agora assinale a alternativa que contenha as marcações corretas. • Pergunta 8 Suponha que existe, em um arquivo textual, uma matriz 4x4 que relaciona os custos de um certo produto A (linhas) combinado com um produto B (colunas) como ilustra o exemplo a seguir: 00 03 06 02 03 00 04 07 06 04 00 01 02 07 01 00 O produto não poderá ser combinado com ele mesmo. Por exemplo, combinando-se o produto dois com o produto três, teremos o valor 01. Cada valor de custo é representado, sempre, por dois caracteres e separados por um espaço em branco. Analise o código a seguir que imprima, na tela, o custo da combinação solicitada pelo usuário e preencha as lacunas. #include <stdio.h> #include <string.h> #include <stdlib.h> int main() { char linha[30],custoStr[3]; int prodA,prodB,i=0; FILE *arq; arq=fopen("matrizcustos.txt","___"); if(arq==NULL) { printf("Erro de abertura de arquivo origem."); return 0; } printf("Produto A (de 0 a 3):"); scanf("%d",&prodA); printf("Produto B:(de 0 a 3): "); scanf("%d",&prodB); for(;i<=prodA;i++) ____(linha,30,arq); printf("linha selecionada: %s\n",linha); strncpy(custoStr,&linha[___],2); custoStr[3]='\x0'; fclose(arq); printf("Custo = %d",atoi(custoStr)); return 0; } Assinale a alternativa que você julgue ser a correta.• Pergunta 9 Para a implementação de programas computacionais, deve-se proceder, além do próprio código, à criação das variáveis. Criar uma variável significa definir um rótulo (nome) para uma posição de memória de forma a armazenar uma informação de um determinado tipo. Em linguagens de programação, existem regras para a definição do nome das variáveis. Pensando-se em C/C++, classifique a(s) variável(eis) correta(s) com “C” e, com “E” a(s) errada(s): ( ) idade1 ( ) @email ( ) _delta ( ) tipo_documento ( ) média ( ) idPessoa Assinale a alternativa que corresponda à sequência correta. • Pergunta 10 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.
Compartilhar