Esta é uma pré-visualização de arquivo. Entre para ver o arquivo original
ALGORITIMOS E PROGRAMAÇÃO ESTRUTURADA – EXERCICIO UNIDADE 3
Questão 1
As structs são amplamente utilizadas em algoritmos para criar tipos de dados personalizados que contêm informações relacionadas. Essas estruturas permitem organizar os dados de forma mais eficiente e facilitam o acesso a informações agrupadas. As structs são estruturas de dados que permitem agrupar diferentes tipos de variáveis sob um único nome. Neste contexto, analise as afirmativas a seguir.
I. As structs são utilizadas apenas para armazenar dados do mesmo tipo.
II. As structs são úteis para representar objetos com características relacionadas em um único tipo de dado.
III. Em algoritmos, as structs não substituem a necessidade de arrays ou listas para armazenar conjuntos de dados.
IV. O uso de structs é restrito a linguagens de programação específicas e não está disponível em todas as linguagens.
Considerando o contexto apresentado, é correto o que se afirma em:
() I e IV, apenas.
(x) II e III, apenas.
() II, III e IV, apenas.
() I, II e III, apenas.
() I, II, III e IV.
Comentário
I. Falso. As structs são capazes de agrupar diferentes tipos de variáveis sob um único nome, permitindo a criação de estruturas de dados mais complexas que não se limitam a armazenar apenas dados do mesmo tipo.II. Verdadeiro. As structs são úteis para representar objetos com características relacionadas em um único tipo de dado, o que ajuda a organizar os dados de forma mais eficiente.III. Verdadeiro. Embora as structs sejam úteis para armazenar conjuntos de dados, em certos contextos, arrays ou listas podem ser necessários, dependendo da complexidade e das necessidades do algoritmo.IV. Falso. As structs são uma característica comum em muitas linguagens de programação e não estão restritas a linguagens específicas.
Questão 2
Sobre vetores, analise as afirmativas a seguir:
I. Cada elemento no vetor é acessado por meio do seu índice, que sempre começará pelo valor um, independentemente da linguagem de programação.
II. Um vetor de caracteres é chamado de string.
III. A criação de um vetor é similar a uma variável primitiva, tendo que declarar somente o tipo que será este vetor e utilizar o *.
Neste contexto, é correto o que se afirma em:
() I, apenas.
(x) II, apenas.
() I e II, apenas.
() II e III, apenas.
() I, II e III.
Comentário
I. Falso. Em muitas linguagens de programação, os índices de vetor começam em 0, não em 1. Isso inclui linguagens de programação amplamente utilizadas como C, C++, Java, Python e muitas outras. Começar em 1 ou em qualquer outro valor depende da linguagem de programação específica.II. Verdadeiro. Um vetor de caracteres é frequentemente referido como uma string, especialmente em linguagens de programação como C, C++, Java, e outras, onde as strings são representadas como vetores de caracteres terminados por um caractere nulo (o caractere '\0').III. Falso. A criação de um vetor não requer o uso do operador * em muitas linguagens de programação. Um vetor é declarado especificando o tipo de seus elementos e, em algumas linguagens, o tamanho do vetor.
Questão 3
A criação de um ponteiro só faz sentido se for associado a algum endereço de memória, para isso usa-se o seguinte trecho de código:
Na linha 1 criamos uma variável primitiva inteira com valor 18 e na linha 2 associamos um ponteiro chamado ponteiro_para_idade ao endereço da variável primitiva idade. Como podemos imprimir o conteúdo do ponteiro, que será o endereço da variável que ele aponta?
Assinale a alternativa correta.
() puts("\n Conteudo do ponteiro: %d", &idade);
() printf("\n Conteudo do ponteiro: %d", *idade);
() printf("\n Conteudo do ponteiro: %x", *ponteiro_para_idade);
() printf("\n Conteudo do ponteiro: %d", &idade);
(x) printf("\n Conteudo do ponteiro: %p", ponteiro_para_idade);
Comentário
puts("\n Conteudo do ponteiro: %d", &idade); A função puts não aceita a formatação de argumentos da mesma maneira que printf, portanto, essa opção está incorreta.printf("\n Conteudo do ponteiro: %d", *idade); Incorreta. A expressão *idade não representa o conteúdo do ponteiro, mas sim o valor da variável idade. Portanto, essa opção está incorreta.printf("\n Conteudo do ponteiro: %x", *ponteiro_para_idade); Incorreta. *ponteiro_para_idade imprime o conteúdo da variável apontada pelo ponteiro, ou seja, o conte;udo de idade.printf("\n Conteudo do ponteiro: %d", &idade); Incorreta. Essa opção imprimiria o endereço de memória da variável idade diretamente, e não com o conteúdo do ponteiro.printf("\n Conteudo do ponteiro: %p", ponteiro_para_idade); Correta. já que %p é o especificador de formato correto para imprimir endereços de memória.
Questão 4
Sobre as variáveis compostas homogêneas bidimensionais, também conhecidas como matrizes, analise as afirmativas a seguir:
I. Para criarmos uma matriz em C usamos a seguinte sintaxe: [colunas][linhas]; II. Para percorrer uma matriz pode-se utilizar 2 laços for aninhados, assim será possível acessar todas as linhas e colunas da variável;
III. O número de linhas e colunas de uma matriz deve ser igual.
Neste contexto, é correto o que se afirma em:
() I, apenas.
(x) II, apenas.
() I e II, apenas.
() II e III, apenas.
() I, II e III.
Comentário
I. Falso. A sintaxe para criar uma matriz em C é [linhas][colunas]. A ordem é linhas primeiro e depois colunas. Portanto, a afirmação está invertida em relação à sintaxe correta.II. Verdadeiro. Para percorrer uma matriz bidimensional, geralmente são usados dois loops for aninhados, um para as linhas e outro para as colunas. Isso permite acessar todas as células da matriz.III. Falso. O número de linhas e colunas de uma matriz não precisa ser necessariamente igual. Uma matriz pode ter um número diferente de linhas e colunas, dependendo das necessidades do programa.
Questão 5
Considere o seguinte código em C:
Qual é o valor de x após a execução deste código?
Assinale a alternativa correta.
() 8
() 34
() 42
(x) 50
() 0
Comentário
Neste código, primeiro definimos uma variável x com o valor 42 e, em seguida, declaramos um ponteiro ptr que aponta para o endereço de x. Em seguida, incrementamos o valor apontado por ptr em 8 unidades com a linha (*ptr) += 8. Isso modifica o valor de x indiretamente. Portanto, o valor de x após a execução do programa será 50 (42 + 8).
image1.png
image2.png