Segundo Booch (1987), a partir da década de 1970, foi desenvolvido o conceito denominado “ciclo de vida de software ”, em que a codificação foi destinada a um papel menor e a manutenção foi reconhecida como parte importante do ciclo de desenvolvimento. A facilidade de manutenção é fortemente determinada pela legibilidade dos códigos, sendo que essa característica passou a ser tomada como muito importante para a avaliação da qualidade dos programas e das linguagens de programação. BOOCH, G. Software Engineering with Ada . 2. ed. Redwood City: Benjamin Cummings, 1987. Considerando esse contexto, assinale a alternativa que descreve, adequadamente, a mudança de paradigma ocorrida:
Uma classe é uma unidade básica da Programação Orientada em Objetos (POO). Ela é responsável por encapsular atributos estáticos e comportamento dinâmicos numa caixa. Sobre os conceitos de classe, analise as afirmativas a seguir. I. A classe é um modelo usado para criar objetos, também chamados de instâncias. II. A comunicação com os objetos é feita pelo uso da interface pública do objeto. III. A complexidade envolvida na realização de uma tarefa fica escondida dentro da classe. Está correto o que se afirma em:
A classe é um modelo usado para criar objetos ou instâncias cuja comunicação ocorre através de interface. Ao usar scanf() para ler a entrada de string , ele para de ler quando encontra espaço em branco, nova linha ou fim de arquivo. Aliás, é usado para ler a entrada de qualquer tipo de dados. Utilizando a linguagem de string , podemos desenvolver vários comandos e observar as respostas que eles nos dão. Assim, pode-se observar que os sinais de % são um comando que permitirá essa leitura. A seguir, observe o comando na linguagem C. #include<stdio.h> int f(int *a, int n) { if(n <= 0) return 0; else if(*a % 2 == 0) return *a + f(a+1, n-1); else return *a - f(a+1, n-1); } int main() { int a[] = {12, 7, 13, 4, 11, 6}; printf("%d", f(a, 2)); getchar(); return 0; } Qual a o tipo da variável a?
Os Tipos Abstratos de Dados (TAD) existem nas linguagens de programação para a criação de tipos de dados que não foram previstos na criação dessa linguagem. São tipos de dados criados no próprio desenvolvimento de alguma aplicação para resolver uma necessidade específica. Os Tipos Abstratos de Dados (_________) são estruturas de dados que representam os ____________ que não foram desenvolvidos no núcleo das(os) _______________ e que, normalmente, são utilizados para alguma necessidade específica no desenvolvimento de aplicações. Preencha as lacunas escolhendo a alternativa CORRETA.
A unidade básica da Programação Orientada a Objetos (POO) é a classe, que encapsula atributos (variáveis) e métodos (funções) em uma camada de abstração . Indique a alternativa que melhor define uma classe:
Na linguagem computacional, uma prática rotineira é a compilação, ela é usada em vários tipos de linguagem para tornar a linguagem real acessível para uma determinada máquina. Quando se usa a compilação em sistema Windows, a extensão utilizada em mapas e objetos tridimensionais é:
Para remover um nó de uma lista linear encadeada, basta reorganizar o encadeamento dos nós anterior e posterior ao nó a ser removido. O nó imediatamente anterior ao nó a ser excluído deve apontar para o nó que seguia o nó excluído na lista. Se o nó removido for o primeiro nó, o endereço do segundo nó deve ser copiado para o ponteiro de início da lista. Se o nó removido for o último nó, o nó anterior deve ter seu campo de elo definido como nulo. Depois de reorganizar o encadeamento dos nós, garantindo assim a continuidade da lista, a posição ocupada pelo nó removido fica livre. Com relação à remoção de elementos para o passo a passo do desenvolvimento do algoritmo, assinale a alternativa CORRETA .
Em uma lista linear em que a ordem lógica dos elementos não é a mesma da ordem física, cada elemento tem um sucessor e um predecessor. Considere a sequência de comandos a seguir. Fonte: Elaborado pelo autor. Após a codificação do código C, aplique a alternativa com os comandos que serão mostrados na tela.
O processo de exclusão de um nó de uma lista linear altera apenas as cadeias de nós antes e depois do nó ser excluído: o nó imediatamente anterior apontará para o próximo nó a ser excluído da lista. Se o nó liberado for o primeiro nó, o endereço do segundo nó deve ser copiado para o rótulo inicial da lista. Se for o último, o campo anterior deve conter um campo de link vazio. Após essa sequência que garante a continuidade da lista encadeada, a posição ocupada pelo nó deletado é liberada. O processo de remoção de um nó da lista encadeada é realizado simplesmente alterando a conexão do nó anterior para o nó posterior, criando, assim, um novo elo, logo o nó anterior ao nó removido irá se vincular para o seguinte nó ao que foi excluído. Fonte: Elaborada pelo autor Com relação à exclusão de listas encadeadas, assinale a alternativa CORRETA
Em uma lista encadeada, ou lista linear, em que a ordem lógica dos elementos não é a mesma da ordem física (elementos espalhados na memória), cada elemento precisa indicar em que endereço seu sucessor pode ser encontrado, de modo a manter a ordem lógica. Assinale a alternativa que apresenta o código correto para inserir elementos em linhas encadeadas.
O jeito mais fácil de desenvolver _____________ é usando diretamente o endereço físico do próximo _________ na lista. Para isso, as linguagens de programação usam variáveis que guardam os endereços físicos, normalmente chamados de ____________. Preencha as lacunas escolhendo a alternativa CORRETA:
Analise o questionamento a seguir: “É possível, utilizando a linguagem C, escolher se um número é positivo ou negativo e com casas decimais? Em caso afirmativo, podemos usar qual declaração?" A partir do que foi apresentado, assinale a alternativa correta.
A contiguidade física é intuitiva e natural para estruturas que representam uma relação lógica de ordenação linear entre nós. No entanto, existem estruturas que representam outras relações entre nós, como relações de subordinação, para as quais essa representação física não é intuitiva. Considerando algumas vantagens da representação das estruturas de dados por contiguidade física, avalie as afirmativas a seguir. I. Estruturas simples – É adequado para a realização de estruturas simples, principalmente aquelas que utilizam uma sequência física para representação. II. Privacidade – Qualquer nodo não pode ser diretamente acessado a qualquer momento, é necessário um tipo de chave para realizar o acesso. III. Representação – Algumas estruturas de dados possuem uma representação lógica semelhante à contiguidade física, simplificando desta maneira a representação dos dados. IV. Transferência de dados – Como todos os dados estão alocados em bloco, a transferência de dados entre memória principal e secundária fica facilitada. Está correto que se afirma em:
Segundo Edelweiss e Galante (2014, p. 36), “Uma vez que o TAD foi caracterizado, o próximo passo é escolher sua estrutura de representação, ou seja, a estrutura de dados propriamente dita que irá suportar as operações definidas. A representação será uma coleção de campos primitivos ou mesmo uma estrutura complexa formada por vários campos primitivos.”. EDELWEISS, N.; GALANTE, R. Estruturas de dados . Porto Alegre: Bookman, 2014. 18 v. Fonte: Elaborada pelo autor Em uma classe em código C++, existem alguns campos de diferentes tipos primitivos. Assinale a alternativa que apresenta a melhor forma que resume o significado de classes.
Sobre a linguagem C++, muitas vezes, podemos usar estratégias para substituir algum item de outra linguagem, como a C, por exemplo. Fonte: Elaborado pelo autor. Nesse caso, podemos substituir as funções apresentadas, da linguagem C, por quais itens da linguagem C++, respectivamente?
A função hash atribui um valor para cada chave no intervalo de 0 a N-1, no qual N será a capacidade total do arranjo. Algo que seja provável de acontecer numa função hash é as colisões, e para ser uma boa função hash , é necessário produzir um baixo números de colisões. Com base nesses aspectos, assinale a alternativa que descreve a melhor forma de ter uma boa função hash com baixas colisões.
É dada a implementação da função de hash abaixo apresentada na videoaula. Considere que nesta implementação estamos simplesmente garantindo que não colocaremos um registro fora dos limites do vetor mas não há mecanismos de controle de colisões. Indique qual é alternativa correta que exemplifica porque Pedro e Paulo não aparecem no vetor depois de inserir todos os alunos, como mostra a Figura 1. Apresentação do vetor após as inserções: Figura 1. Resultado das inserções
Seja f a função de espalhamento ou mapeamento e x a chave, o endereço de memória será atribuído por f(x). Os valores serão distribuídos em um vetor de N posições, sendo formado em um intervalo entre 0 e N-1. Sobre a utilização da função de mapeamento ou função hash , avalie se são (V) verdadeiras ou (F) falsas as afirmativas a seguir. I. ( ) Utilizada para guardar uma coleção de strings. II. ( ) Utilizada para obter os registros de maneira eficiente em tempo constante. III. ( ) Utilizada para acessar os arquivos no computador. IV. ( ) Utilizada para ter acesso a uma determinada aplicação. Assinale a alternativa que apresenta a sequência CORRETA.
Uma tabela recebe chaves do tipo string e armazena os dados internamente como um vetor. A função de espalhamento da tabela Hash utiliza o seguinte procedimento para mapear as strings em inteiros: 1 – Mapeamento de caracteres: os três primeiros caracteres são mapeados em inteiros da forma: De a até f: mapeado para 1 De g até n: mapeado para 3 De o até s: mapeado para 5 De t até z: mapeado para 11 2 – Os inteiros associados a cada um dos três primeiros caracteres são multiplicados entre si. 3 – O resto da divisão por 11 é computado, dado que o vetor possui tamanho 11. Dadas as seguintes strings: ULISSES, DANIELLE e LARISSA, aplicando a função de espalhamento apresentada, indique a alternativa correta que apresenta a string e a posição obtida.
As tabelas hash minimizam a complexidade de tempo para as operações dinâmicas como Inserção, Remoção, Busca e Modificação. Admita as seguintes afirmações: A função hash(chave) deve ser determinística. Para uma determinada chave, a função sempre retorna o mesmo valor de hash. Por ser utilizada como uma função de indexação, a função de hash deve sempre retornar um valor de hash dentro dos limites da tabela [0,N], em que N é o tamanho da tabela. O método aproveita a possibilidade de acesso randômico à memória para alcançar uma complexidade média de O(log(n)). Assinalar a alternativa correta:
Um procedimento natural para resolver os problemas de colisões consiste em guardar as chaves sinônimas em listas encadeadas. Existem duas opções: as listas podem se localizar no exterior da tabela ou compartilhar o mesmo espaço da tabela. O encadeamento exterior consiste em manter _____________, uma para cada endereço-base possível. Os _________ correspondentes aos endereços-base serão apenas os principais dessas listas. Um campo para o encadeamento deve ser adicionado a cada nó. A __________ interna consiste nos nós que correspondem a cada endereço de encadeamento possível. Preencha as lacunas escolhendo a alternativa CORRETA:
Para evitar desperdício de memória e a determinação incorreta de uma fila cheia quando na verdade há posições vagas, pode-se deixá-la circular. Para esse fim, qual operação matemática é feita sobre os índices ( back e front ) ao se inserir ou remover os elementos de uma fila?
Quando uma variável do tipo ________ é declarada em C/C++, deve haver um * antes do nome dela. Quando se quer obter o endereço de memória, utiliza-se esse recurso, ele proporciona uma descrição de variáveis pontuais de forma direta. Possui um valor, que indicará onde devemos encontrar a variável de interesse. A alternativa que completa, corretamente, as lacunas é:
A linguagem de programação pode ser definida como uma sequência de códigos e comandos que fornece um resultado escolhido pelo autor. Dessa forma, sobre essa linguagem, analise as afirmativas a seguir. I) É muito importante e só é viável quando se utiliza a linguagem de programação C. II) Para se orientar objetos, é recomendável o Java. III) Existem alguns tipos de linguagem de modelagem, que são, muitas vezes, definidas com baixo nível, um exemplo disso é a Assembly. IV) Quando se usa um Android, recomenda-se utilizar a linguagem Java. V) A linguagem de programação C# foi desenvolvida pela Microsoft. Está correto o que se afirma em:
Pilhas são listas nas quais o acesso somente pode ser feito em uma das extremidades, denominada topo da pilha. Todas as consultas, alterações, inclusões e remoções de nodos podem ser realizadas somente sobre um nodo, que está na extremidade considerada o topo da pilha. EDELWEISS, N.; GALANTE, R. Estruturas de dados . Porto Alegre: Bookman, 2014. 18 v. Topo Fonte: Elaborada pelo autor Com relação às características de Last In, First Out (LIFO) de uma pilha, assinale a alternativa CORRETA.
Filas são ordenamentos de valores em que apenas os dois nós em cada extremidade do ordenamento podem ser acessados. A adição de novos nós é sempre feita no final da lista e as funções de consulta, alteração de dados e exclusão são feitas no início. Com relação às características de First In, First Out (FIFO) de uma fila, assinale a alternativa CORRETA .
A tentativa linear h(x,k) é uma implementação muito simples, em que o endereço-base x é h'(x) (k=0), suponhamos que existe outra chave, x', ocupando o mesmo endereço de h'(x). A ideia da tentativa linear é buscar armazenar um novo nó, no endereço próximo, que consiste em h'(x) + 1 (k=1), se por acaso já estiver ocupado, ele irá tentar em h'(x) + 2 (k=2), e assim sucessivamente. Com base nos aspectos que existem no método de tentativa linear, assinale a alternativa que descreve a função da tentativa linear para a (k+1)-ésima tentativa.