Baixe o app para aproveitar ainda mais
Prévia do material em texto
Revisar envio do teste: QUESTIONÁRIO UNIDADE VILINGUAGEM E TÉCNICAS DE PROGRAMAÇÃO 288S_18501_20232 CONTEÚDO LINGUAGEM E TÉCNICAS DE PROGRAMAÇÃO (288S_18501_2023 2) CONTEÚDO Sexta-feira, 8 de Setembro de 2023 13h23min16s GMT-03:00 Usuário RODRIGO DE TOLEDO RODRIGUES Curso LINGUAGEM E TÉCNICAS DE PROGRAMAÇÃO Teste QUESTIONÁRIO UNIDADE VI Iniciado 08/09/23 13:21 Enviado 08/09/23 13:23 Status Completada Resultado da tentativa 1 em 1 pontos Tempo decorrido 1 minuto Resultados exibidos Todas as respostas, Respostas enviadas, Respostas corretas, Comentários, Perguntas respondidas incorretamente Pergunta 1 Resposta Selecionada: a. Respostas: a. b. c. d. e. Comentário da resposta: A função troca() recebe dois ponteiros e faz a troca dos valores entre duas variáveis, porém esse código possui um erro. Assinale a alternativa que corresponda ao erro nesta função: void troca (int *i, int *j) { int *temp; *temp = *i; *i = *j; *j = *temp; } As variáveis "i" e “j” não precisavam ser um ponteiro. As variáveis "i" e “j” não precisavam ser um ponteiro. A variável “i” deveria ser um contador. A variável “j” deveria acumular o valor de “i”. A variável "temp" não precisava ser um ponteiro. Não existe nenhum erro na função. Resposta: A Comentário: a variável "temp" não precisava ser um ponteiro, já que apenas precisa armazenar um valor inteiro, sem precisar apontar para algum lugar. O código correto seria: void troca (int *i, int *j) { int temp; temp = *i; *i = *j; *j = temp; } Pergunta 2 Resposta Selecionada: c. Respostas: a. b. c. d. e. Comentário da resposta: Analise a função caracteres() e identi�que a alternativa que melhor descreve a tarefa executada por ela. Faça um teste manual para compreender a lógica do programa. char * caracteres(char *s1, char *s2) { int i, j, w, n = 0, encontrado; char *s3; for (i = 0; s1[i] != '\0'; i++) { for (j = 0; s2[j] != '\0'; j++) { if (s1[i] == s2[j]) { n++; break; } } } s3 = malloc((n + 1) * sizeof(char)); n = 0; for (i = 0; s1[i] != '\0'; i++) { for (j = 0; s2[j] != '\0'; j++) { if (s1[i] == s2[j]) { encontrado = 0; for (w = 0; w < n; w++) { if (s3[w] == s1[i]) { encontrado = 1; break; } } if (encontrado == 0) { s3[n] = s1[i]; n++; break; } } } } s3[n] = '\0'; return s3; } Recebe por parâmetro duas cadeias s1 e s2 e retorna uma nova cadeia s3 que contém todos os caracteres que aparecem em s1 e em s2. Recebe por parâmetro duas cadeias s1 e s2 e retorna uma nova cadeia s3 que contém todas as vogais que aparecem em s1 e em s2. Recebe por parâmetro duas cadeias s1 e s2 e retorna uma nova cadeia s3 que contém todas as consoantes que aparecem em s1 e em s2. Recebe por parâmetro duas cadeias s1 e s2 e retorna uma nova cadeia s3 que contém todos os caracteres que aparecem em s1 e em s2. Lê duas cadeias s1 e s2 e retorna uma nova cadeia s3 que é a maior cadeia entre s1 e em s2. Lê duas cadeias s1 e s2 e retorna uma nova cadeia s3 que é a menor cadeia entre s1 e em s2. Resposta: C Comentário: a função recebe por parâmetro duas cadeias s1 e s2 (ponteiros para char) e retorna uma nova cadeia s3 (ponteiro para char), concatenando as duas cadeias em uma só, ou seja, juntando todos os caracteres de s1 e de s2 em s3. Pergunta 3 Resposta Selecionada: a. Respostas: a. b. c. d. e. Comentário da resposta: Analise o programa escrito em Linguagem C que possui uma função incr_vetor() que recebe um ponteiro para um inteiro e um inteiro. Assinale a alternativa que apresenta a saída correta do programa: #include <stdio.h> void incr_vetor (int *v , int tam) { int i; for (i = 0; i < tam; i++) v[i]++; } void main () { int a[ ] = {1, 3, 5}; incr_vetor(a, 3); printf("%d %d %d\n", a[0], a[1], a[2]); } 2 4 6. 2 4 6. 0 1 2. 1 2 3. 1 3 5. 3 6 9. Resposta: A Comentário: o programa possui uma função incr_vetor(int *v , int tam) que recebe um ponteiro para um inteiro e um inteiro, tendo como saída do programa os valores 2 4 6, pois os elementos do vetor serão incrementados dentro da função. Pergunta 4 Resposta Selecionada: e. Respostas: a. b. c. d. e. Comentário da resposta: Ao declarar um vetor, para dimensioná-lo, é necessário saber de antemão quantos elementos deveriam compô-lo. Temos de prever o número máximo de elementos no vetor durante o processo da codi�cação. Com base nesses dados, avalie as a�rmações seguintes: I. O predimensionamento do vetor é um fator que limita a programação. II. Podemos superdimensionar o vetor, pois nunca estamos sujeitos a ter falta de memória. III. Podemos reservar a memória, isto é, solicitar ao programa que aloque dinamicamente um espaço na memória durante sua execução. É correto apenas o que se a�rma em: I e III, apenas. I, apenas. II, apenas. III, apenas. I e II, apenas. I e III, apenas. Resposta: E Comentário: visando a resolver o problema de “prever” o número máximo de elementos em um vetor, uma solução seria superdimensionar o seu tamanho para tentar contornar essa falta de elementos livres durante a execução do programa. Porém, isso acarreta desperdício de memória, o que é inaceitável em diversas aplicações, principalmente nos aplicativos portáteis, em que sempre estamos sujeitos a ter falta de memória. Pergunta 5 Resposta Selecionada: b. Respostas: a. b. c. d. e. Comentário da resposta: Considere o programa a seguir escrito em Linguagem C que deve receber uma string de caracteres e uma letra. Para isso, o programa possui uma função que devolve um vetor de inteiros contendo as posições (índices no vetor da string) em que a letra foi encontrada e um inteiro contendo o tamanho do vetor criado (total de letras iguais encontradas). Para que o programa execute corretamente a sua função, é preciso adicionar comandos nas linhas 11 e 25, respectivamente. Assinale a alternativa que apresenta corretamente esses comandos: indices = (int *) malloc(n* sizeof(int)); indices = acha_caractere(frase, 'a', &n); indices = (int) malloc(n sizeof(int)); indices = acha_caractere(frase, 'a', &n); indices = (int *) malloc(n* sizeof(int)); indices = acha_caractere(frase, 'a', &n); indices = (int *) malloc(n* sizeof(int)); indices = acha_caractere(frase, 'a', n); indices = (int *) malloc(n* sizeof(int)); indices = acha_caractere(frase, 'a', *n); indices = (int ) malloc(n sizeof(int)); indices = acha_caractere(frase, 'a', n); Resposta: B Comentário: o programa possui uma função – linhas 4 a 20. Porém, na linha 11 é preciso alocar memória para os índices e na linha 25 chamar a função acha_caractere(), passando as informações necessárias (frase, 'a', &n) por parâmetro, retornando os índices – linha 19. Pergunta 6 Resposta Selecionada: e. Respostas: a. b. c. d. e. Comentário da resposta: O programa a seguir tem como objetivo calcular o fatorial de um número n. Considere as entradas 0, 1 e 5 e assinale a alternativa que apresenta corretamente a saída para cada uma das entradas. #include <stdio.h> int f1(int n) { if (n == 0) return (1); else return(n * f1(n-1)); } void main(){ int a, b; printf("Digite um valor inteiro:"); scanf("%d", &a); b = f1(a); printf("%d \n", b); } 1, 1, 120. 0, 1, 5. 1, 2, 3. 5, 10, 15. 10, 20, 120. 1, 1, 120. Resposta: E Comentário: o programa executa a função f1() de forma recursiva retornando com o resultado quando o n foi igual a zero. Enquanto o valor de n for diferente de zero, a função é chamada de forma recursiva pelo código return(n * f1(n-1)); Pergunta 7 Resposta Selecionada: d. Respostas: a. b. c. d. e. Comentário da resposta: O programa a seguir tem como objetivo calcular o fatorial de um número n. Considere as entradas 0, 1 e 5 e assinale a alternativa que apresenta corretamente a saída para cada uma das entradas. #include <stdio.h> void f2(int n) { if (n == 0)printf("zero "); else { printf("%d ", n); f2(n-1); } } void main(){ int a; printf("Digite um valor inteiro:"); scanf("%d", &a); f2(a); } Zero; 1 Zero; 5 4 3 2 1 Zero 0; 0 1; 0 1 2 3 4 5 0; 1 0; 5 4 3 2 1 0 1; 1 2; 1 2 3 4 5 Zero; 1 Zero; 5 4 3 2 1 Zero Zero; Zero 1; Zero 1 2 3 4 5 Resposta: D Comentário: o programa executa a função f2() de forma recursiva retornando com o resultado quando o n foi igual a zero. Enquanto o valor de n for diferente de zero, a função é chamada de forma recursiva pelo código f2(n-1). Pergunta 8 Resposta Selecionada: a. Respostas: a. b. c. d. e. Comentário da resposta: O programa a seguir tem como objetivo calcular o fatorial de um número n. Considere as entradas 0, 1 e 5 e assinale a alternativa que apresenta corretamente a saída para cada uma das entradas. #include <stdio.h> int func (int n) { if (n == 0) return(0); return(n + func(n-1)); } void main(){ int a, b; printf("Digite um valor inteiro:"); scanf("%d", &a); b= func(a); printf ("%d \n", b); } 0, 1, 15. 0, 1, 15. 0, 0, 3. 1, 1, 15. 1, 2, 3. 3, 2, 1. Resposta: A Comentário: o programa executa a função func() de forma recursiva retornando com o resultado quando o n foi igual a zero. Enquanto o valor de n for diferente de zero, a função é chamada de forma recursiva pelo código return(n + func(n-1)). Pergunta 9 Resposta Selecionada: b. Respostas: a. b. c. d. e. Comentário da resposta: O programa a seguir tem como objetivo calcular o fatorial de um número n. Considere as entradas 0, 1 e 5 e assinale a alternativa que apresenta corretamente a saída para cada uma das entradas. #include <stdio.h> int func (int n) { if (n == 0) return(0); return(3*n + func(n-1)); } void main(){ int a, b; printf("Digite um valor inteiro:"); scanf("%d", &a); b= func(a); printf ("%d \n", b); } 0, 3, 45. 0, 1, 15. 0, 3, 45. 1, 1, 15. 0, 3, 15. 1, 3, 9. Resposta: B Comentário: o programa executa a função func() de forma recursiva retornando com o resultado quando o n foi igual a zero. Enquanto o valor de n for diferente de zero, a função é chamada de forma recursiva pelo código return(3*n + func(n-1)). Pergunta 10 Resposta Selecionada: c. Respostas: a. b. c. d. e. Comentário da resposta: O programa realiza comparações entre duas strings veri�cando qual das duas aparece primeiro no dicionário, porém há um erro neste código. Assinale a alternativa que apresenta o erro no programa a seguir: #include <stdio.h> #include <string.h> void main() { char *a, *b; *a = "abacate"; *b = "uva"; if (strcmp(a, b) < 0 ) printf ("%s vem antes de %s no dicionário \n", a, b); else printf ("%s vem depois de %s no dicionário \n", a, b); } As variáveis “a” e “b” não precisavam ser ponteiros na atribuição de valores. O teste da condicional nunca pode ser menor que 0. Estão faltando as chaves para identi�car os blocos na condicional. As variáveis “a” e “b” não precisavam ser ponteiros na atribuição de valores. As variáveis “a” e “b” deveriam ser declaradas como string e não char. O programa não possui erro. Resposta: C Comentário: as variáveis “a” e “b” não precisaria ser ponteiros na atribuição de valores, tendo dessa forma um erro de sintaxe. Uma solução desse problema seria: #include <stdio.h> #include <string.h> void main() { char *a, *b; a = "abacate"; b = "uva"; if (strcmp(a,b) < 0 ) printf ("%s vem antes de %s no dicionário \n", a, b); else printf ("%s vem depois de %s no dicionário \n", a, b); } ← OK UNIP BIBLIOTECAS MURAL DO ALUNOCONTEÚDOS ACADÊMICOS 0,1 em 0,1 pontos 0,1 em 0,1 pontos 0,1 em 0,1 pontos 0,1 em 0,1 pontos 0,1 em 0,1 pontos 0,1 em 0,1 pontos 0,1 em 0,1 pontos 0,1 em 0,1 pontos 0,1 em 0,1 pontos 0,1 em 0,1 pontos RODRIGO RODRIGUES http://company.blackboard.com/ https://ava.ead.unip.br/webapps/blackboard/execute/courseMain?course_id=_310910_1 https://ava.ead.unip.br/webapps/blackboard/content/listContent.jsp?course_id=_310910_1&content_id=_3640762_1&mode=reset https://ava.ead.unip.br/webapps/blackboard/content/listContent.jsp?course_id=_310910_1&content_id=_3640762_1&mode=reset https://ava.ead.unip.br/webapps/portal/execute/tabs/tabAction?tab_tab_group_id=_49_1 https://ava.ead.unip.br/webapps/portal/execute/tabs/tabAction?tab_tab_group_id=_27_1 https://ava.ead.unip.br/webapps/portal/execute/tabs/tabAction?tab_tab_group_id=_47_1 https://ava.ead.unip.br/webapps/portal/execute/tabs/tabAction?tab_tab_group_id=_25_1 https://ava.ead.unip.br/webapps/login/?action=logout
Compartilhar