Aula 00 Tecnologia da Informação (Parte II) p/ TRT-RS (Analista - Tecnologia da Informação) Professor: Diego Carvalho 00000000000 - DEMO Analista Judiciário do TRT/4ª Região (RS) Curso de Teoria e Exercícios Prof. Diego Carvalho – Aula 00 AULA 00 SUMÁRIO PÁGINA 01 12 29 77 77 78 92 Apresentação - Linguagens de Programação e Algoritmos - Estruturas de Dados - Compiladores e Interpretadores - Scrum Lista de Exercícios Comentados Gabarito 00000000000 Esse curso é protegido por direitos autorais (Copyright), nos termos da Lei 9.610/98. Prof. Diego Carvalho www.estrategiaconcursos.com.br 00000000000 - DEMO Pág. 1 de 92 Analista Judiciário do TRT/4ª Região (RS) Curso de Teoria e Exercícios Prof. Diego Carvalho – Aula 00 APRESENTAÇÃO Olá, pessoal. Sejam bem-vindos! Acaba de sair o Edital para o Tribunal Regional do Trabalho – 4ª Região (RS) – Cargo: Analista Judiciário – Área: Tecnologia da Informação. Pessoal, nós lançamos o curso pré-edital no dia 23/03! Quem comprou se deu bem, porque o edital veio praticamente idêntico. Eu irei renovar e atualizar agora o curso e lançar as aulas o mais rápido possível. Bacana? DÚVIDAS DOS ALUNOS TOP 5 1. Peço encarecidamente que leiam as instruções dessa primeira aula. Eu sei que é chato, mas assim nós alinhamos nossas expectativas e todos ficamos felizes. 2. Essa é a Aula Demonstrativa (está disponível para todos na internet) – o restante do conteúdo estará disponível na Aula 01 (apenas para aqueles que adquirirem o curso). 00000000000 3. Esse curso não possui vídeo-aulas! Estamos trabalhando para disponibilizá-las em cursos futuros a partir do segundo semestre, logo isso não ocorrerá ainda neste curso. 4. Esse curso contempla somente aquilo que está em seu cronograma. Ele não contempla todo edital de tecnologia da informação, nem outras disciplinas, nem discursivas, estudos de caso, etc. 5. Existem questões de Múltipla Escolha (A, B, C, D, E) e existem questões de Certo/Errado (C, E). Quando não há itens para escolha na questão, é porque a questão é da Modalidade Certo/Errado. Prof. Diego Carvalho www.estrategiaconcursos.com.br 00000000000 - DEMO Pág. 2 de 92 Analista Judiciário do TRT/4ª Região (RS) Curso de Teoria e Exercícios Prof. Diego Carvalho – Aula 00 O PROFESSOR Uma breve apresentação: meu nome é Diego Carvalho, bacharel em Ciência da Computação pela Universidade de Brasília, pós-graduado em Gestão de Tecnologia da Informação na Administração Pública e Analista de Finanças e Controle da Secretaria do Tesouro Nacional. Já passei por esses perrengues de concurseiro e sei de duas coisas: a estrada é difícil, mas o prêmio compensa! E muito! www.facebook.com/professordiegocarvalho ÁREA ÓRGÃOS PARA OS QUAIS JÁ MINISTREI CURSOS Agência ANCINE ANTAQ ANATEL Jurídica TRT/2 CNMP TRT/3 MP/PB TRT/4 TRT/15 TCE/SP TCM/SP ISS/BA TCE/CE TCM/GO Fiscal TRT/1 TJ/BA CÂMARA DOS DEPUTADOS TCE/RS TCU ISS/SP Outros CEF DATAPREV DEPEN INMETRO Legislativa Auditoria 00000000000 Galera, lá no site, nós – professores – temos algumas métricas para medir se o nosso desempenho nos cursos está bacana! Os alunos podem avaliar com notas e, inclusive, escrever anonimamente o que acharam do professor e do curso. Apresento abaixo o resultado de alguns cursos ministrados recentemente. Portanto, confiem em mim... vocês vão aprender muito com esse curso! Prof. Diego Carvalho www.estrategiaconcursos.com.br 00000000000 - DEMO Pág. 3 de 92 Analista Judiciário do TRT/4ª Região (RS) Curso de Teoria e Exercícios Prof. Diego Carvalho – Aula 00 00000000000 Prof. Diego Carvalho www.estrategiaconcursos.com.br 00000000000 - DEMO Pág. 4 de 92 Analista Judiciário do TRT/4ª Região (RS) Curso de Teoria e Exercícios Prof. Diego Carvalho – Aula 00 00000000000 Prof. Diego Carvalho www.estrategiaconcursos.com.br 00000000000 - DEMO Pág. 5 de 92 Analista Judiciário do TRT/4ª Região (RS) Curso de Teoria e Exercícios Prof. Diego Carvalho – Aula 00 00000000000 Prof. Diego Carvalho www.estrategiaconcursos.com.br 00000000000 - DEMO Pág. 6 de 92 Analista Judiciário do TRT/4ª Região (RS) Curso de Teoria e Exercícios Prof. Diego Carvalho – Aula 00 O CONCURSO CONCURSO DO TRIBUNAL REGIONAL DO TRABALHO – 4ª REGIÃO (RS) - 2015 ANALISTA JUDICIÁRIO – APOIO ESPECIALIZADO: TECNOLOGIA DA INFORMAÇÃO 00000000000 REMUNERAÇÃO R$8.863,84 VAGAS CADASTRO RESERVA EDITAL/AUTORIZAÇÃO: http://www.concursosfcc.com.br/concursos/trt4r115/trt4__edital_concurso_2015_-_versao13072015.pdf Prof. Diego Carvalho www.estrategiaconcursos.com.br 00000000000 - DEMO Pág. 7 de 92 Analista Judiciário do TRT/4ª Região (RS) Curso de Teoria e Exercícios Prof. Diego Carvalho – Aula 00 O CURSO... Antes de começar o curso, vamos alinhar algumas expectativas! O curso que eu proponho abrangerá todo o conteúdo do meu cronograma, entretanto é impossível e inviável esgotar cada ponto do edital em uma aula escrita. Como se ministra Java em uma aula? Teríamos uma aula de 800 páginas e não chegaríamos nem perto de matar todo conteúdo! Imaginem agora cada ponto do Edital. Portanto, vou direcioná-los pelo conteúdo da melhor maneira possível. O nosso foco é ter uma visão geral, mas objetiva do que de fato cai em prova e, não, elucubrações sobre cada tema. Meu foco aqui é te fazer passar! Eu sei como é complicado ler muita coisa (ainda mais de TI) e vocês têm outras disciplinas para estudar. Logo, vou ser simples e objetivo! Tranquilo? ;) Além disso, o cronograma será seguido com a maior fidelidade possível, mas ele não é estático e poderá haver alterações no decorrer do curso. Eventualmente, posso tirar o conteúdo de uma aula e colocar em outra de forma que o estudo de vocês fique mais lógico, coeso e fácil de acompanhar; posso também inverter a ordem das aulas (adiantar uma aula e atrasar outra) – sem prejudicá-los. Além disso, vamos usar questões de diversas bancas. Enfim, confiem em mim: o curso vai ajudar bastante! Qualquer dúvida, é só me chamar! Caso haja alguma reclamação, problema, sugestão, comentários, erros de digitação, etc, podem enviar para o nosso fórum que eu tento responder da maneira mais tempestiva possível. Ainda duvidam que PDF não dá certo com Concursos de TI? Veja abaixo: 6º Lugar – ISS/Salvador https://www.youtube.com/watch?v=b1w4H3l6mC4#t=1678 00000000000 1º Lugar – TRT/RJ https://www.facebook.com/video.php?v=790616534367672 2º Lugar – ISS/Salvador https://www.youtube.com/watch?v=vmU1n1J-aqQ 1º Lugar – Dataprev http://www.estrategiaconcursos.com.br/blog/entrevista-andre-furtado-aprovado-em-1o-lugarno-concurso-dataprev-para-o-cargo-de-analistaarea-de-tecnologia-da-informacao/ Prof. Diego Carvalho www.estrategiaconcursos.com.br 00000000000 - DEMO Pág. 8 de 92 Analista Judiciário do TRT/4ª Região (RS) Curso de Teoria e Exercícios Prof. Diego Carvalho – Aula 00 CRONOGRAM Aula 00 Data 22/07 Tópicos do Edital 01 25/07 - Linguagens de programação: estruturas de dados, algoritmos, interpretação e compilação de programas Metodologia de Desenvolvimento de Software: Scrum. 02 30/07 - Engenharia de software: análise e projeto estruturado e orientado a objetos. Orientação a objetos: classe, herança, polimorfismo, objeto, método. 03 05/08 - UML. 04 10/08 - Padrões de projetos (design patterns). 05 15/08 - Ambientes e linguagens de programação: Eclipse Java, Javascript, Delphi. 06 20/08 - Conceitos de HTML5, CSS3 e XML. 07 25/08 08 30/08 - Servidores de aplicação: Tomcat e Jboss. Frameworks Java: Java EE 5 e 6, EJB 3, JSF 1.2 e 2.0, Hibernate 3 e 4, JBoss Portlets (JSR-268), JBoss Seam 2, Webservices. - Arquitetura de sistemas: cliente/servidor, multicamadas, hub, webserver e orientada a serviços (SOA). - Aula Demonstrativa 00000000000 09 05/09 - Modelagem funcional e de dados. Testes, homologação e implantação de sistemas. ABNT ISO/IEC 12207:2009. 10 03/06 - Portais Corporativos. Métricas de software: pontos de função, Análise de Pontos de Função (APF), pontos de casos de uso. Prof. Diego Carvalho www.estrategiaconcursos.com.br 00000000000 - DEMO Pág. 9 de 92 Analista Judiciário do TRT/4ª Região (RS) Curso de Teoria e Exercícios Prof. Diego Carvalho – Aula 00 AS AULAS E AS DICAS 1 – Parágrafos pequenos: observem que os parágrafos têm, no máximo, cinco linhas. Isso serve para que a leitura não fique cansativa e para que vocês não desanimem no meio do material! Para tal, eu tento dividir as disciplinas de maneira que as aulas fiquem objetivas e pequenas (em termos de teoria), mas extensa (em termos de exercícios). 3 – Destaques em vermelho: quase todos os parágrafos possuem alguma palavra ou frase destacada em negrito e em vermelho. Isso ocorre por suas razões: primeiro, para enfatizar alguma informação importante; segundo, para facilitar a leitura vertical, i.e., após uma primeira leitura, a segunda pode ser passando apenas pelos pontos em destaque. 5 – Linguagem natural: essa é uma aula para ser lida, o que por si só já pode ser cansativo. Tentarei colocar a linguagem mais coloquial possível, simulando uma conversa. Portanto, caso virem frases ou palavras em itálico, ou é uma palavra estrangeira ou é a simulação de uma conversa com vocês. Pode dar um exemplo, professor? Acabei de dar! :-) 7 – Diversas figuras: essas aulas estarão em constante evolução, sempre à procura de explicar as matérias de maneira mais compreensível e com novas informações/questões. Para tal, na minha opinião, é fundamental a utilização de figuras, gráficos, painéis, etc. Em minha experiência, é bem mais fácil memorizar a partir de imagens. 9 – Fazer Exercícios: muitos exercícios é o meio pelo qual vocês se situarão. Como assim, professor? É na hora de fazer os exercícios que vocês descobrirão se estão bem ou mal e avaliarão se precisam estudar mais ou menos. Para tal, há um quadrinho ao final de cada bloco de exercícios para vocês anotarem a quantidade de questões respondidas corretamente ou incorretamente. 00000000000 2 – Visão Geral: não se atenham a detalhes antes de entender o básico. Por que? Ora, não há nada mais irritante do que ir para uma prova que vai cair, por exemplo, RUP, saber vários detalhes, mas não saber as fases e disciplinas. Portanto, caso estejam iniciando os estudos sobre uma matéria, foquem em saber o básico para depois se especializarem. 4 – Façam muitos exercícios: ler várias bibliografias é muito trabalhoso e, geralmente, não vale o custobenefício. Acredito que o que funciona mesmo é entender o básico, depois fazer muitos exercícios e, eventualmente, caso encontrarem algo que não souberem, pesquisem-no separadamente. Além disso, você vai pegando as “manhas” da banca. 6 – Façam resumos: essa dica somente serve caso vocês tenham disponibilidade. Caso haja pouco tempo para estudar ou pouco tempo até a prova, não compensa! Se não, façam resumos organizados, pois eles economizarão um bom tempo de estudo em suas próximas provas e sempre que descobrirem novas informações, insiram-nas no resumo. 8 – Revisem antes da prova: não adianta querer estudar coisas novas até o último minuto antes da prova e não revisar o que estudou há um mês. Vocês irão esquecer e irão se irritar na hora da prova por não lembrarem de conceitos simples. Tirem uma semana para revisar seus resumos, decorarem algumas coisas e, certamente, irão mais confiantes para a prova. 10 – Simulado Final: ora, fazer um bloco de questões depois de estudar a teoria é tranquilo. No entanto, lembrem-se que a memória de vocês não é infinita e vocês têm um milhão de outras coisas para estudar e decorar. Portanto, se possível, ao fim do curso faremos um simulado com questões escolhidas que foram comentadas dentro das aulas. Bem, pessoal! É isso... sejam bem vindos! Espero que vocês curtam e tenham uma leitura leve e despojada da aula, mas com muito foco, atenção e dedicação. Qualquer dúvida, podem entrar em contato comigo – ficarei feliz em ajudá-los. Bons estudos, estou torcendo por vocês! Fiquem agora com algumas mensagens de incentivo para animá-los ;-) Prof. Diego Carvalho www.estrategiaconcursos.com.br 00000000000 - DEMO Pág. 10 de 92 Analista Judiciário do TRT/4ª Região (RS) Curso de Teoria e Exercícios Prof. Diego Carvalho – Aula 00 R$8.863,84 R$8.863,84 R$8.863,84 R$8.863,84 R$8.863,84 00000000000 Prof. Diego Carvalho www.estrategiaconcursos.com.br 00000000000 - DEMO Pág. 11 de 92 Analista Judiciário do TRT/4ª Região (RS) Curso de Teoria e Exercícios Prof. Diego Carvalho – Aula 00 Linguagens de programação: estruturas de dados, algoritmos, interpretação e compilação de programas Metodologia de Desenvolvimento de Software: Scrum. Engenharia de software: análise e projeto estruturado e orientado a objetos. Orientação a objetos: classe, herança, polimorfismo, objeto, método. UML. Padrões de projetos (design patterns). Ambientes e linguagens de programação: Eclipse Java, Javascript, Delphi. Conceitos de HTML5, CSS3 e XML. Servidores de aplicação: Tomcat e Jboss. Frameworks Java: Java EE 5 e 6, EJB 3, JSF 1.2 e 2.0, Hibernate 3 e 4, JBoss Portlets (JSR-268), JBoss Seam 2, Webservices. Arquitetura de sistemas: cliente/servidor, multicamadas, hub, webserver e orientada a serviços (SOA). Modelagem funcional e de dados. Testes, homologação e implantação de sistemas. ABNT ISO/IEC 12207:2009. Portais Corporativos. Métricas de software: pontos de função, Análise de Pontos de Função (APF), pontos de casos de uso. LÓGICA DE PROGRAMAÇÃO Vamos falar sobre Lógica de Programação! Em primeiro lugar, por que chamamos de lógica? Porque é necessário utilizar a lógica para resolver um problema computacional. Como assim? Precisamos de um encadeamento ou uma sequência de pensamentos para alcançar um determinado objetivo. Nós podemos descrever esses pensamentos como uma sequência de instruções ou passos. Professor, o que seria uma instrução? É um conjunto de regras ou normas definidas para a realização ou emprego de algo, indicando ao computador uma ação elementar a ser executada. Bem, esses conceitos são muito básicos e vocês já devem estar bastante acostumados, por isso vamos ver rapidamente. Um conjunto de instruções formam um algoritmo: Algoritmo: conjunto predeterminado e bem definido de passos destinados à solução de um problema, com um número finito de etapas. 00000000000 Prof. Diego Carvalho www.estrategiaconcursos.com.br 00000000000 - DEMO Pág. 12 de 92 Analista Judiciário do TRT/4ª Região (RS) Curso de Teoria e Exercícios Prof. Diego Carvalho – Aula 00 Professor, você pode dar um exemplo? Sim, o exemplo mais comum da bibliografia é mostrado acima: uma receita de bolo. Observem que para fazer um bolo (solucionar um problema), é necessário seguir uma sequência de passos finitos e predeterminados. No fim das contas, grosso modo, um software nada mais é do que a representação de um algoritmo. Professor, todos os programas que eu utilizo no meu computador são representações de algoritmos? Sim! Inclusive o joguinho de Paciência que eu curto? Sim! Mas até mesmo os apps que eu utilizo no celular? Eles também! Todos os softwares (de desktop, notebook, smartphone, tablet, geladeira, relógio, entre outros) são representações de algoritmos. 00000000000 Então, basta que eu escreva um conjunto de passos em qualquer língua que o meu computador realiza a tarefa que eu quiser? Claro que não! Computadores não entendem, por exemplo, português – eles entendem 0 e 1 (na verdade, eles necessário entendem presença ou ausência de tensão elétrica), portanto representar esses algoritmos por meio de uma linguagem de programação. Prof. Diego Carvalho www.estrategiaconcursos.com.br 00000000000 - DEMO Pág. 13 de 92 Analista Judiciário do TRT/4ª Região (RS) Curso de Teoria e Exercícios Prof. Diego Carvalho – Aula 00 Como assim, professor? Pessoal, um computador é uma grande calculadora. No entanto, ele é “burro”, ele só calcula o que mandam-no calcular. linguagens de programação surgem como uma solução para abstrair a comunicação entre seres humanos e computadores. Na imagem ao lado, a ordem do programador era: “Computador, escreva na tela: Hello World!”. Bem, acho que todo mundo já ouviu falar alguma vez na vida em Código-Fonte. Todo software possui um código-fonte, que é um conjunto de palavras organizado de acordo com regras específicas, formando um ou mais algoritmos. Essas palavras que formam o algoritmo são escritas utilizando uma linguagem de programação. Esse código-fonte é traduzido e posteriormente executado pelo usuário. Pessoal... se eu não souber uma linguagem de programação, eu posso escrever um algoritmo utilizando um pseudocódigo! O que é isso, professor? É uma forma genérica de escrever um algoritmo, utilizando uma linguagem simples sem necessidade de conhecer a sintaxe de nenhuma linguagem de programação. Tratase de um pseudo-código, logo não pode ser executado em um sistema real. Um tipo de pseudocódigo é o Portugol (ou Português Estruturado)! Trata-se de uma simplificação extrema da língua portuguesa, limitada a pouquíssimas palavras e estruturas que têm significado pré-definido, na medida em que deve seguir um padrão. Emprega uma linguagem intermediária entre a linguagem natural e a linguagem de programação para descrever os algoritmos. Embora o Portugol seja uma linguagem bastante simplificada, possui todos os elementos básicos e uma estrutura semelhante à de uma linguagem de programação de computadores. Portanto resolver problemas com português estruturado pode ser uma tarefa tão complexa quanto a de escrever um programa em uma linguagem de programação qualquer. 00000000000 início <instruções> se <teste> então <instruções> senão <instruções> fim_se fim Prof. Diego Carvalho www.estrategiaconcursos.com.br 00000000000 - DEMO Pág. 14 de 92 Analista Judiciário do TRT/4ª Região (RS) Curso de Teoria e Exercícios Prof. Diego Carvalho – Aula 00 Além do português estruturado, é possível representar um algoritmo também por meio de um Fluxograma! O que é isso, professor? É uma espécie de diagrama utilizado para documentar processos, ajudando o leitor a visualizá-los, compreendê-los mais facilmente e encontrar falhas ou problemas de eficiência, como mostra a imagem abaixo. Os principais símbolos de um Fluxograma são: 00000000000 Prof. Diego Carvalho www.estrategiaconcursos.com.br 00000000000 - DEMO Pág. 15 de 92 Analista Judiciário do TRT/4ª Região (RS) Curso de Teoria e Exercícios Prof. Diego Carvalho – Aula 00 Bem, nós vimos então que podemos representar algoritmos por meio de Linguagens de Programação, Pseudocódigo ou Fluxogramas! Em geral, os fluxogramas são mais utilizados para leigos; pseudocódigo para usuários um pouco mais avançados; e linguagens de programação para os avançados. Agora vamos falar de conceitos mais específicos: constantes, variáveis e atribuições! Constantes são dados que simplesmente não variam com o tempo, i.e., possuem sempre um valor fixo invariável. Por exemplo: a constante matemática é (sempre foi e sempre será) igual a 3.141592 – esse valor não mudará! Professor, e o que seria uma variável? São espaços na memória do computador reservados para guardar informações ou dados! Em geral, variáveis são associadas a posições na Memória RAM, armazenando diversos tipos de dados que veremos com detalhes à frente! Ela possui um nome identificador que abstrai o nome do endereço na memória que ela ocupa. Observem a imagem abaixo: existe uma variável (espaço em memória) chamada numeroDaConta em que se armazena o valor 4823. O conteúdo de uma variável pode ser alterado, consultado ou apagado diversas vezes durante a execução de um algoritmo, porém o valor apagado é perdido. Bacana, mas e a atribuição? Bem, trata-se de uma notação para associar um valor a uma variável, i.e., armazenar o conteúdo no endereço de memória específico. Cada linguagem de programação adotará uma maneira de representá-la. 00000000000 Aqui, não iremos nos prender a uma linguagem de programação, vamos adotar o Português Estruturado! A notação de atribuição é representada por uma seta apontando para a esquerda do valor para o identificador, podendo ser: Variável Variável Variável Constante: Variável: Expressão: dataDeNascimento 1988 endereço cidade idade (anoAtual anoDeNascimento) Vamos falar agora sobre tipos de dados! Em geral, eles se dividem em dois grupos: Dados Elementares e Dados Estruturados. Só uma informação antes de começar: os dados elementares também podem ser chamados de simples, básicos, nativos ou Prof. Diego Carvalho www.estrategiaconcursos.com.br 00000000000 - DEMO Pág. 16 de 92 Analista Judiciário do TRT/4ª Região (RS) Curso de Teoria e Exercícios Prof. Diego Carvalho – Aula 00 primitivos. Já os dados estruturados também podem ser chamados de compostos. Bacana? Vamos para as definições! Tipos Elementares: são aqueles que não podem ser decompostos. Ora, se eu disser que o Pedrinho tem 10 anos, é possível decompor esse valor de idade? Não, logo é um tipo elementar. Há diversos tipos elementares, dependendo da linguagem de programação utilizada. No entanto, os principais são: o Inteiro: também conhecido como Integer, são similares aos números inteiros da matemática, i.e., sem parte fracionária. Podem ser positivos, negativos ou nulos. Ex: -2% de crescimento do PIB; 174 km de distância; 0 ºC de Temperatura; etc. o Real: também conhecido como Float (Ponto Flutuante), são similares aos números reais da matemática, i.e., possuem parte fracionária. Ex: 3,141592 é a constante de PI; 9,81 m/s² de Aceleração Gravitacional; raiz quadrada de 7; etc. o Caractere: também conhecido como Literal ou Char, são representações de letras, dígitos e símbolos. Quando colocadas em conjunto, formam um tipo estruturado chamado String ou Cadeia de Caracteres. Ex: ‘a’, ‘$’, ‘5’, ‘D’, etc. o Lógico: também conhecido como Boolean, são representações de valores lógicos – verdadeiro/falso, ligado/desligado, sim/não, etc. São extremamente importantes na programação, principalmente na verificação de condições. Tipos Estruturados: são aqueles que podem ser decompostos. Ora, se eu disser que o nome da bola da copa é Brazuca, é possível decompor esse nome? Sim, basta dividi-lo em caracteres: ‘B’, ‘r’, ‘a’, ‘z’, ‘u’, ‘c’, ‘a’. Há infinitos tipos estruturados1, pois eles são a combinação de vários outros, o mais comum é: 00000000000 o Cadeia de Caracteres: também conhecido como String, são representações de sequências de caracteres, incluindo ou não símbolos. Pode ser uma palavra, frase, código, etc, por exemplo: “O rato roeu a roupa do rei de Roma”. 1 Uma música em .mp3, um texto em .pdf, uma imagem em jpg são todos tipos estruturados. Prof. Diego Carvalho www.estrategiaconcursos.com.br 00000000000 - DEMO Pág. 17 de 92 Analista Judiciário do TRT/4ª Região (RS) Curso de Teoria e Exercícios Prof. Diego Carvalho – Aula 00 Pessoal, quase todas as linguagens de programação possuem instruções para Leitura e Escrita de dados. A Escrita é uma Saída de Dados (Output) que busca mostrar informações ao usuário na tela do computador (Ex: Escrever (idade)). A Leitura é uma Entrada de Dados (Input) que busca ler dados do usuário por meio teclado (Ex: Ler (idade)). Para manipular dados, utilizamos operadores: Operadores Aritméticos: são utilizados para obter resultados numéricos, preocupando-se com a priorização2. Operador Multiplicação Divisão Adição Subtração Exponenciação Símbolo * / + ^ Prioridade 2º 2º 3º 3º 1º Operadores Relacionais: são utilizados para comparar números e literais, retornando valores lógicos. Operador Igual a Diferente de Maior que Menor que Maior ou igual a Maior ou igual a Símbolo = <> ou != > < >= <= Operadores Lógicos: servem para combinar resultados de expressões, retornando valores lógicos (verdadeiro ou falso). 00000000000 Operador/Símbolo E/And Ou/Or Não/Not Bacana! Com isso, já podemos falar sobre Estruturas de Decisão e Repetição! Galera, as Estruturas de Decisão (também chamadas de Estruturas de Seleção) permitem interferir na sequência de instruções executadas dependendo de uma condição de 2 Em operadores que possuem a mesma prioridade, o que aparecer primeiro deve ser priorizado! Além disso, parênteses possuem sempre a maior prioridade! Prof. Diego Carvalho www.estrategiaconcursos.com.br 00000000000 - DEMO Pág. 18 de 92 Analista Judiciário do TRT/4ª Região (RS) Curso de Teoria e Exercícios Prof. Diego Carvalho – Aula 00 teste, i.e., o algoritmo terá caminhos diferentes para decisões diferentes. A melhor maneira de se visualizar isso é com fluxogramas: Caso 1: Se (Média >= 5.0) Então Aluno = Aprovado Caso 2: Se (Média >= 5.0) Então Aluno = Aprovado Senão Aluno = Reprovado 00000000000 Caso 3: Se (Média >= 5.0) Então Prof. Diego Carvalho www.estrategiaconcursos.com.br 00000000000 - DEMO Pág. 19 de 92 Analista Judiciário do TRT/4ª Região (RS) Curso de Teoria e Exercícios Prof. Diego Carvalho – Aula 00 Se (Média >= 7.0) Então Aluno = Aprovado Senão Aluno = Recuperação Senão Aluno = Reprovado Caso 4: Selecione (Número) Caso 13: Presidente Caso 20: Presidente Caso 28: Presidente Caso 43: Presidente Caso 45: Presidente Caso 50: Presidente Caso Outro: Presidente Fim Selecione Dilma Pastor Everaldo Levy Fidelix Eduardo Jorge Aécio Neves Luciana Genro Nulo 00000000000 Prof. Diego Carvalho www.estrategiaconcursos.com.br 00000000000 - DEMO Pág. 20 de 92 Analista Judiciário do TRT/4ª Região (RS) Curso de Teoria e Exercícios Prof. Diego Carvalho – Aula 00 Portanto vimos quatro casos de Estrutura de Decisão: -Então, Se-Então-Senão, -Então (Aninhados) e Caso-Selecione. Agora veremos Estruturas de Repetição! Elas são utilizadas quando se deseja que um determinado conjunto de instruções ou comandos sejam executados por uma quantidade definida ou indefinida de vezes, ou enquanto um estado se mantenha ou seja alcançado. Vejamos: 00000000000 Caso 1: Repetição Pré-Testada (Testa-se antes de processar!) Enquanto (Votos < 1.000) Faça Votos = Votos + 1 Fim-Enquanto Prof. Diego Carvalho www.estrategiaconcursos.com.br 00000000000 - DEMO Pág. 21 de 92 Analista Judiciário do TRT/4ª Região (RS) Curso de Teoria e Exercícios Prof. Diego Carvalho – Aula 00 Caso 2: Repetição com Variável de Controle Para Votos de 1 até 1000 Faça Votos = Votos + 1 Fim-Enquanto Caso 3: Repetição Pós-Testada (Testa-se depois de processar!) 00000000000 Faça Votos = Votos + 1 Enquanto (Votos < 1.000) Prof. Diego Carvalho www.estrategiaconcursos.com.br 00000000000 - DEMO Pág. 22 de 92 Analista Judiciário do TRT/4ª Região (RS) Curso de Teoria e Exercícios Prof. Diego Carvalho – Aula 00 00000000000 Prof. Diego Carvalho www.estrategiaconcursos.com.br 00000000000 - DEMO Pág. 23 de 92 Analista Judiciário do TRT/4ª Região (RS) Curso de Teoria e Exercícios Prof. Diego Carvalho – Aula 00 (CESPE - 2013 - CNJ - Programador de computador) No fluxograma abaixo, se A = 4, B = 4 e C = 8, o resultado que será computado para Área é igual a 32. Comentários: Vamos lá: P = (4+4+8)/2 Lembrem-se que parênteses sempre têm prioridade: P = (16)/2 = 8 Seguimos para S = P*(P-A)*(P-B)*(P-C): S = 8*(8-4)*(8-4)*(8-8) Simplificando: S = 8*4*4*0 = 0 S < 0, logo: Não é Triângulo! 00000000000 Gabarito: E (CONSULPLAN - 2012 - TSE - Programador de computador Observe o trecho de pseudocódigo. Prof. Diego Carvalho www.estrategiaconcursos.com.br 00000000000 - DEMO Pág. 24 de 92 Analista Judiciário do TRT/4ª Região (RS) Curso de Teoria e Exercícios Prof. Diego Carvalho – Aula 00 A estrutura será executada até que X seja igual ao seguinte valor a) – 1 b) – 3 Comentários: Vamos lá: X = 13 No laço, ele afirma: X = X-2 X = 13-2 = 11 Segue esse loop novamente: X = 11-2 = 9 X = 9-2 = 7 X = 7-2 = 5 X = 5-2 = 3 X = 3-2 = 1 X = 1-2 = -1 X = -1-2 = -3 < -1, logo saímos do loop! Portanto, a estrutura é executada até X = -3. Gabarito: B (CONSULPLAN - 2012 - TSE - Programador de computador Observe o trecho de pseudocódigo, que mostra o emprego da estrutura de controle enquanto ... faça ... 00000000000 A opção que utiliza a estrutura para ... faça ... correspondente, que gera o mesmo resultado, é: Prof. Diego Carvalho www.estrategiaconcursos.com.br 00000000000 - DEMO Pág. 25 de 92 Analista Judiciário do TRT/4ª Região (RS) Curso de Teoria e Exercícios Prof. Diego Carvalho – Aula 00 a) Para n de 0 até 6 faça imprimir(n); b) Para n de 0 até 7 faça imprimir(n); Comentários: Vejamos: N = 0 e irá até N < 7, logo N de 0 a 6. Gabarito: A (CESPE - 2011 - -ES - Técnico de Informática - Específicos Uma estrutura de repetição possibilita executar um bloco de comando, repetidas vezes, até que seja encontrada uma dada condição que conclua a repetição. Comentários: Essa é uma definição perfeita da Estrutura de Repetição. Gabarito: C (CESPE - 2010 - MPU - Analista de Informática - Desenvolvimento de Sistemas Se um trecho de algoritmo tiver de ser executado repetidamente e o número de repetições for indefinido, então é correto o uso, no início desse trecho, da estrutura de repetição Enquanto. Comentários: Perfeito! Lembram-se que nós temos três estruturas de repetição? Pois é, o Enquanto-Faça serve para esse propósito! 00000000000 Gabarito: C (FEPESE - 2010 - SEFAZ-SC - Auditor Fiscal da Receita Estadual - Parte III Tecnologia da Informação Assinale a alternativa correta a respeito das variáveis e constantes, utilizadas em diversas linguagens de programação. a) O número de constantes deve ser menor ou igual ao número de variáveis em um programa. b) O número de constantes deve ser menor ou igual ao número de procedimentos em um programa. Prof. Diego Carvalho www.estrategiaconcursos.com.br 00000000000 - DEMO Pág. 26 de 92 Analista Judiciário do TRT/4ª Região (RS) Curso de Teoria e Exercícios Prof. Diego Carvalho – Aula 00 c) O número de constantes deve ser igual ao número de variáveis em um programa. d) O número de constantes independe da quantidade de variáveis em um programa. e) O número de constantes deve ser igual ao número de procedimentos em um programa. Comentários: Galera, não há essa relação! O número de constantes e variáveis são independentes. Gabarito: D (FCC - 2010 -SP - Agente de Defensoria - Analista de Sistemas É utilizada para avaliar uma determinada expressão e definir se um bloco de código deve ou não ser executado. Essa é a definição da estrutura condicional: a) For b) If...Then...Else c) While d) Do...While e) Next Comentários: Pessoal... falou em estrutura condicional, trata-se de decisão! Logo, é o If-Then-Else. barito: B 00000000000 (CESPE - 2011 - -ES - Analista Judiciário - Análise de Banco de Dados Específicos Em uma estrutura de repetição com variável de controle, ou estrutura PARA, a verificação da condição é realizada antes da execução do corpo da sentença, o que impede a reescrita desse tipo de estrutura por meio de estrutura de repetição pós-testada. Comentários: Nós temos três tipos de estruturas de repetição com variável de controle: While/Enquanto, For/Para e Do-While/Faça-Enquanto - as duas primeiras prétestadas e a última pós-testada. De fato, a estrutura For/Para é pré-testada. No Prof. Diego Carvalho www.estrategiaconcursos.com.br 00000000000 - DEMO Pág. 27 de 92 Analista Judiciário do TRT/4ª Região (RS) Curso de Teoria e Exercícios Prof. Diego Carvalho – Aula 00 entanto, é possível reescrevê-la como uma Estrutura de Repetição Pós-Testada (DoWhile/Faça-Enquanto), de forma que elas sejam equivalentes. Gabarito: E ACERTEI ERREI 00000000000 Prof. Diego Carvalho www.estrategiaconcursos.com.br 00000000000 - DEMO Pág. 28 de 92 Analista Judiciário do TRT/4ª Região (RS) Curso de Teoria e Exercícios Prof. Diego Carvalho – Aula 00 ESTRUTURAS DE DADOS Pessoal, um programa pode ser visto como uma especificação formal da solução de um problema. Wirth expressa esse conceito por meio de uma equação: PROGRAMA = ALGORITMO + ESTRUTURA DE DADOS Nosso foco aqui é em Estruturas de Dados! Na evolução do mundo computacional, um fator extremamente importante trata da forma de armazenar informações. De nada adianta o enorme desenvolvimento de hardware e software se a forma de armazenamento e tratamento de dados não evoluir harmonicamente. E é por isso que as estruturas de dados são tão fundamentais. As estruturas de dados, na maioria dos casos, baseiam-se nos tipos de armazenamento vistos dia a dia, i.e., nada mais são do que a transformação de uma forma de armazenamento já conhecida e utilizada no mundo real adaptada para o mundo computacional. Por isso, cada tipo de estrutura de dados possui vantagens e desvantagens e cada uma tem sua área de atuação otimizada. Bem, não vou enrolar muito explicando o que é uma Estrutura de Dados! A melhor forma de saber é vendo exemplos. Antes disso, eu só gostaria de falar sobre um conceito importante: Dados Homogêneos e Heterogêneos. Os primeiros são aqueles que possuem só um tipo básico de dados (Ex: Inteiros); os segundos são aqueles que possuem mais de um tipo básico de dados (Ex: Inteiros + Caracteres). 00000000000 Entenderam? Existem estruturas de dados que tratam de dados homogêneos, i.e., todos os dados são apenas de um tipo básico, tais como Vetores! Ora, em um vetor, todos os elementos são do mesmo tipo. Existem estruturas de dados que tratam de dados heterogêneos, i.e., os dados são de tipos básicos diferentes, tais como Listas! Ora, em uma lista, todos os elementos são, em geral, de tipos básicos diferentes. Prof. Diego Carvalho www.estrategiaconcursos.com.br 00000000000 - DEMO Pág. 29 de 92 Analista Judiciário do TRT/4ª Região (RS) Curso de Teoria e Exercícios Prof. Diego Carvalho – Aula 00 VETORES E MATRIZES Um Vetor é uma estrutura de dados linear que necessita de somente um índice para que seus elementos sejam indexados. É uma estrutura homogênea, portanto armazena somente uma lista de valores do mesmo tipo. Ele possui alocação estática, com dados armazenados em posições contíguas de memória e permite o acesso direto ou aleatório a seus elementos. Observem que, diferentemente das listas, filas e pilhas, ele vem praticamente embutido em qualquer linguagem de programação. E a Matriz, professor? Não muda muita coisa! Trata-se de um arranjo bidimensional ou multidimensional de alocação estática e sequencial. Ela necessita de um índice para referenciar a linha e outro para referenciar a coluna para que seus elementos sejam endereçados. Da mesma forma que um vetor, uma matriz é definida com um tamanho fixo, todos os elementos são do mesmo tipo, cada célula contém somente um valor e os tamanhos dos valores são os mesmos. Os elementos ocupam posições contíguas na memória. A alocação dos elementos pode ser feita colocando os elementos linha-por- nha ou coluna-por-coluna. 00000000000 MATRIZ 2X7 E VETOR (7 POSIÇÕES) Prof. Diego Carvalho www.estrategiaconcursos.com.br 00000000000 - DEMO Pág. 30 de 92 Analista Judiciário do TRT/4ª Região (RS) Curso de Teoria e Exercícios Prof. Diego Carvalho – Aula 00 (FCC - 2009 - -PA - Analista Judiciário - Tecnologia da Informação Considere uma estrutura de dados do tipo vetor. Com respeito a tal estrutura, é correto que seus componentes são, característicamente, a) heterogêneos e com acesso FIFO. b) heterogêneos e com acesso LIFO. c) heterogêneos e com acesso indexado-sequencial. d) homogêneos e acesso não indexado. e) homogêneos e de acesso aleatório por intermédio de índices. Comentários: Vetores possuem componentes homogêneos, i.e., todos os dados são de apenas um único tipo básico de dados. Ademais, seu acesso é aleatório por meio de índices! Bem, seria mais correto dizer que seu acesso é direto. Gabarito: E 10. (CETAP - 2010 - - - Analista de Sistemas Matrizes são estruturas de dados de n-dimensões. Por simplicidade, chamaremos de matrizes as matrizes bidimensionais numéricas (que armazenam números inteiros). Sendo assim, marque a alternativa INCORRETA. a) Uma matriz de m linhas e n colunas contêm (m * n) dados. 00000000000 b) Uma matriz pode ser representada utilizando listas ligadas. c) A soma dos elementos de uma matriz pode ser calculada fazendo dois laços aninhados, um sobre as linhas e o outro sobre as colunas. d) A soma de duas matrizes de m linhas e n colunas resulta em uma matriz de 2*m linhas e 2*n colunas. e) O produto de duas matrizes de n linhas e n colunas resulta em uma matriz de n linhas e n colunas. Prof. Diego Carvalho www.estrategiaconcursos.com.br 00000000000 - DEMO Pág. 31 de 92 Analista Judiciário do TRT/4ª Região (RS) Curso de Teoria e Exercícios Prof. Diego Carvalho – Aula 00 Comentários: (a) Perfeito, são M x N colunas; (b) Perfeito, podem ser utilizadas listas ligadas; (c) Perfeito, um laço para as linhas e outro para as colunas; (d) Não, a soma de uma Matriz 3x5 com outra Matriz 3x5 resulta em uma Matriz 3x5; (e) Perfeito, uma Matriz 2x2 multiplicada por outra Matriz 2x2 resulta em uma Matriz 2x2. Gabarit D 11. (CESPE - 2010 - Banco da Amazônia - Técnico Científico - Tecnologia da Informação - Arquitetura de Tecnologia Os dados armazenados em uma estrutura do tipo matriz não podem ser acessados de maneira aleatória. Portanto, usa-se normalmente uma matriz quando o volume de inserção e remoção de dados é maior que o volume de leitura dos elementos armazenados. Comentários: Podem, sim, ser acessados de maneira aleatória ou direta, por meio de seus índices. Ademais, usa-se normalmente uma matriz quando o volume de leitura de elementos armazenados é maior que o volume de inserção e remoção de dados. Ora, é possível fazer acesso direto, logo é eficiente mesmo com alto volume de leitura. Gabarito: E 12. (CESPE - TRT - 5ª Região (BA) - Técnico Judiciário - Tecnologia da Informação Entre alguns tipos de estrutura de dados, podem ser citados os vetores, as pilhas e as filas. 00000000000 Comentários: Perfeito! Questão extremamente simples. Gabarito: C 13. (CESPE - 2011 - EBC - Analista - Engenharia de Software Vetores são utilizados quando estruturas indexadas necessitam de mais que um índice para identificar um de seus elementos. Prof. Diego Carvalho www.estrategiaconcursos.com.br 00000000000 - DEMO Pág. 32 de 92 Analista Judiciário do TRT/4ª Região (RS) Curso de Teoria e Exercícios Prof. Diego Carvalho – Aula 00 Comentários: Não! Se são necessários mais de um índice, utilizam-se Matrizes! Vetores necessitam apenas de um índice. Gabarito: E 14. (CESPE - 2010 - TRE-BA - Analista Judiciário - Análise de Sistemas) Vetores podem ser considerados como listas de informações armazenadas em posição contígua na memória. Comentários: Perfeito! Vetores podem ser considerados como listas de informações? Sim! As informações (dados) são armazenadas em posição contígua na memória? Sim, em geral são armazenados de forma contígua. Gabarito: C 15. (CESPE - 2010 - TRE-BA - Analista Judiciário - Análise de Sistemas Uma posição específica de um vetor pode ser acessada diretamente por meio de seu índice. Comentários: Perfeito! Observem que vetores são diferentes de listas, nesse sentido. Eu posso acessar qualquer elemento diretamente por meio de seu índice. Gabarito: C 00000000000 ACERTEI Prof. Diego Carvalho ERREI www.estrategiaconcursos.com.br 00000000000 - DEMO Pág. 33 de 92 Analista Judiciário do TRT/4ª Região (RS) Curso de Teoria e Exercícios Prof. Diego Carvalho – Aula 00 LISTA ENCADEADA Também conhecida como Lista Encadeada Linear, Lista Ligada Linear ou Linked List, trata-se de uma estrutura de dados dinâmica formada por uma sequência encadeada de elementos chamados nós, que contêm dois campos: campo de informação e campo de endereço. O primeiro armazena o real elemento da lista e o segundo contém o endereço do próximo nó da lista. Esse endereço, que é usado para acessar determinado nó, é conhecido como ponteiro. A lista ligada inteira é acessada a partir de um ponteiro externo que aponta para o primeiro nó na lista, i.e., contém o endereço do primeiro nó 3. Por ponteiro "externo", entendemos aquele que não está incluído dentro de um nó. Em vez disso, seu valor pode ser acessado diretamente, por referência a uma variável. O campo do próximo endereço do último nó na lista contém um valor especial, conhecido como NULL, que não é um endereço válido. Esse ponteiro nulo (ou NULL) é usado para indicar o final de uma lista. A lista sem nós é chamada Lista Vazia ou Lista Nula. O valor do ponteiro externo para esta lista é o ponteiro nulo. Uma lista pode ser inicializada com uma lista vazia. 00000000000 Suponha que seja feita uma mudança na estrutura de uma lista linear, de modo que o campo próximo no último nó contenha um ponteiro de volta para o primeiro nó, em vez de um ponteiro nulo. Esse tipo de lista é chamado Lista Circular (ou 3 O endereço do primeiro nó pode ser encapsulado para facilitar possíveis futuras operações sobre a lista sem a necessidade de se conhecer sua estrutura interna. O primeiro elemento é conhecido como Header ou Sentinela. Prof. Diego Carvalho www.estrategiaconcursos.com.br 00000000000 - DEMO Pág. 34 de 92 Analista Judiciário do TRT/4ª Região (RS) Curso de Teoria e Exercícios Prof. Diego Carvalho – Aula 00 Fechada4), i.e., a partir de qualquer ponto, é possível atingir qualquer outro ponto da lista. Observe que uma Lista Circular não tem um primeiro ou último nó natural. Precisamos, portanto, estabelecer um primeiro e um último nó por convenção. Uma convenção útil é permitir que o ponteiro externo para a lista circular aponte para o último nó, e que o nó seguinte se torne o primeiro nó. Assim podemos incluir ou remover um elemento convenientemente a partir do início ou do final de uma lista. 00000000000 Embora uma lista circularmente ligada tenha vantagens sobre uma lista linear, ela ainda apresenta várias deficiências. Não se pode atravessar uma lista desse tipo no sentido contrário nem um nó pode ser eliminado de uma lista circularmente ligada sem se ter um ponteiro para o nó antecessor. Nos casos em que tais recursos são necessários, a estrutura de dados adequada é uma lista duplamente ligada. 4 Se Listas Circulares são conhecidas como Listas Fechadas, as Listas Abertas são todas aquelas que são NãoCirculares. Por fim: da mesma forma que há Listas Circulares Simples, há também Listas Circulares Duplas. Nesse caso, o ponteiro anterior do primeiro elemento aponta para o último elemento e o ponteiro posterior do último elemento aponta para o primeiro elemento. Prof. Diego Carvalho www.estrategiaconcursos.com.br 00000000000 - DEMO Pág. 35 de 92 Analista Judiciário do TRT/4ª Região (RS) Curso de Teoria e Exercícios Prof. Diego Carvalho – Aula 00 Cada nó numa lista desse tipo contém dois ponteiros, um para seu predecessor e outro para seu sucessor. Na realidade, no contexto de listas duplamente ligadas, os termos predecessor e sucessor não fazem sentido porque a lista é totalmente simétrica. As listas duplamente ligadas podem ser lineares ou circulares e podem conter ou não um nó de cabeçalho. Podemos considerar os nós numa lista duplamente ligada como consistindo em três campos: um campo info que contém as informações armazenadas no nó, e os campos left e right, que contêm ponteiros para os nós em ambos os lados. Dado um ponteiro para um elemento, pode-se acessar os elementos adjacentes e, dado um ponteiro para o último elemento, pode-se percorrer a lista em ordem inversa. Existem cinco operações básicas sobre uma lista encadeada: Criação, em que se cria a lista na memória; Busca, em que se pesquisa nós na lista; Inclusão, em que se insere novos nós na lista em uma determinada posição; Remoção, em que se elimina um elemento da lista; e, por fim, Destruição, em que se destrói a lista junto com todos os seus nós. IMPORTANTE Pilhas e Filas são subespécies de Listas. No entanto, cuidado na hora de responder questões! De maneira genérica, Pilhas e Filas podem ser implementadas como Listas. No entanto, elas possuem características particulares de uma lista genérica. Ok? Precisamos falar um pouco sobre Fragmentação! O que é isso, professor? Galera, falou em fragmentação, lembrem-se de desperdício de espaço disponível de memória. O fenômeno no qual existem vários blocos disponíveis pequenos e nãocontíguos é chamado fragmentação externa porque o espaço disponível é desperdiçado fora dos blocos alocados. 00000000000 Esse fenômeno é o oposto da fragmentação interna, no qual o espaço disponível é desperdiçado dentro dos blocos alocados, como apresenta a imagem abaixo. Sistemas Operacionais possuem uma estrutura de dados que armazena informações sobre áreas ou blocos livres (geralmente uma lista ou tabela). Uma lista encadeada elimina o problema da fragmentação externa. Por que? Porque mantém os arquivos, cada um, como uma lista encadeada de blocos de disco. Dessa forma, uma parte de cada bloco é usada como ponteiro para o próximo Prof. Diego Carvalho www.estrategiaconcursos.com.br 00000000000 - DEMO Pág. 36 de 92 Analista Judiciário do TRT/4ª Região (RS) Curso de Teoria e Exercícios Prof. Diego Carvalho – Aula 00 bloco e o restante do bloco é usado para dados. Uma vantagem desse tipo de alocação é que o tamanho do arquivo não precisa ser conhecido antes de sua criação, já que cada bloco terá um ponteiro para o próximo bloco. Galera... e o acesso a uma lista? Lista é uma estrutura de acesso sequencial, i.e., é por nó para acessar um dado específico. Logo, é proporcional preciso percorrer ao número de elementos – Acesso O(n). E os Vetores? Eles são uma estrutura de acesso direto, i.e., pode-se acessar um elemento diretamente. Portanto, não precisa percorrer elemento por elemento (Acesso O(1)) 5. 00000000000 5 No Acesso Sequencial: quanto mais ao fim, maior o tempo para acessar; no Acesso Direto: todos os elementos são acessados no mesmo tempo. Prof. Diego Carvalho www.estrategiaconcursos.com.br 00000000000 - DEMO Pág. 37 de 92 Analista Judiciário do TRT/4ª Região (RS) Curso de Teoria e Exercícios Prof. Diego Carvalho – Aula 00 16. (CESPE - 2012 - Banco da Amazônia - Técnico Científico - Administração de Dados) O tempo de busca de um elemento em uma lista duplamente encadeada é igual à metade do tempo da busca de um elemento em uma lista simplesmente encadeada. Comentários: Não! Apesar de permitir que se percorra a lista em ambas as direções, em média ambas possuem o mesmo tempo de busca de um elemento. Gabarito: E 17. (CESPE - 2012 - Banco da Amazônia - Técnico Científico - Administração de Dados) Em algumas implementações, uma lista vazia pode ter um único nó, chamado de sentinela, nó cabeça ou header. Entre suas possíveis funções, incluise simplificar a implementação de algumas operações realizadas sobre a lista, como inserir novos dados, recuperar o tamanho da lista, entre outras. Comentários: Perfeito! Ele simplifica a implementação de algumas operações porque se guarda o endereço do primeiro e do último elemento de uma estrutura de dados de modo que o programador não precisa conhecer a estrutura de implementação da lista para realizar suas operações. 00000000000 Gabarito: C 18. (CESPE - 2012 - Banco da Amazônia - Técnico Científico - Administração de Dados) Estruturas ligadas como listas encadeadas superam a limitação das matrizes que não podem alterar seu tamanho inicial. Comentários: Perfeito! Listas Encadeadas admitem alocação dinâmica, em contraste com as matrizes. Prof. Diego Carvalho www.estrategiaconcursos.com.br 00000000000 - DEMO Pág. 38 de 92 Analista Judiciário do TRT/4ª Região (RS) Curso de Teoria e Exercícios Prof. Diego Carvalho – Aula 00 Gabarito: C 19. (CESPE - 2012 - Banco da Amazônia - Técnico Científico - Administração de Dados) As listas duplamente encadeadas diferenciam-se das listas simplesmente encadeadas pelo fato de, na primeira, os nós da lista formarem um anel com o último elemento ligado ao primeiro da lista. Comentários: Não, a diferença é que Listas Duplamente Encadeadas possuem dois ponteiros, que apontam para o nó sucessor e para o nó predecessor e Listas Simplesmente Encadeadas possuem apenas um ponteiro, que aponta para o nó sucessor. Gabarito: E (FCC - 2012 - TRE- - Analista Judiciário - Análise de Sistemas - E) Numa lista singularmente encadeada, para acessar o último nodo é necessário partir do primeiro e ir seguindo os campos de ligação até chegar ao final da lista. Comentários: Perfeito. Se é uma lista singularmente encadeada, é necessário percorrer cada elemento um-a-um até chegar ao final da lista. Gabarito: C 21. (CESPE - 2011 - EBC - Analista - Engenharia de Software) Uma lista é uma coleção de elementos do mesmo tipo dispostos linearmente, que podem ou não seguir determinada organização. As listas podem ser dos seguintes tipos: de encadeamento simples, duplamente encadeadas e ordenadas. 00000000000 Comentários: Uma lista é, por natureza, heterogênea, i.e., seus elementos são compostos por tipos de dados primitivos diferentes. A questão afirmou que a lista é uma coleção de elementos do mesmo tipo. E ela está certa, veja só o peguinha da questão: Eu crio um tipo composto por dois tipos de dados diferentes: tipoEstrategia = {curso: caractere; duracao: inteiro}. Observe que o tipo tipoEstrategia é composto por tipos de Prof. Diego Carvalho www.estrategiaconcursos.com.br 00000000000 - DEMO Pág. 39 de 92 Analista Judiciário do TRT/4ª Região (RS) Curso de Teoria e Exercícios Prof. Diego Carvalho – Aula 00 dados primitivos diferentes (caractere e inteiro). Agora eu crio uma lista ListaEstrategia: tipoEstrategia. Veja que todos os elementos dessa lista terão o mesmo tipo (tipoEstrategia). Em outras palavras: a Lista Heterogênea é composta por elementos do mesmo tipo que, em geral, são compostos por mais de um tipo primitivo. Além disso, as listas podem ser simplesmente encadeadas, duplamente encadeadas e ordenadas. E ainda podem ser circulares. Observem que alguns autores consideram Listas Ordenadas como um tipo de lista! Como, professor? Ela é uma lista em que seus elementos são ordenados (crescente ou decrescente). Gabarito: C (CESPE - ANAC - Técnico Administrativo - Informática) Em uma lista circular duplamente encadeada, cada nó aponta para dois outros nós da lista, um anterior e um posterior. Comentários: Perfeito! Há dois ponteiros: uma para o nó anterior e um para o nó posterior. Gabarito: C (CESPE - TRT - 5ª Região (BA) - Técnico Judiciário - Tecnologia da Informação) A principal característica de uma lista encadeada é o fato de o último elemento da lista apontar para o elemento imediatamente anterior. Comentários: Não, o último elemento da lista não aponta para nenhum outro nó em uma lista não-circular. 00000000000 Gabarito: E 24. (CESPE - TCE-AC - Analista de Controle Externo - Processamentos de Dados) Uma lista encadeada é uma coleção de nodos que, juntos, formam uma ordem linear. Se é possível os nodos se deslocarem em ambas as direções na lista, diz-se que se trata de uma lista simplesmente encadeada. Comentários: Prof. Diego Carvalho www.estrategiaconcursos.com.br 00000000000 - DEMO Pág. 40 de 92 Analista Judiciário do TRT/4ª Região (RS) Curso de Teoria e Exercícios Prof. Diego Carvalho – Aula 00 Se é possível os nodos se deslocarem em ambas as direções na lista, diz-se que se trata de uma lista duplamente encadeada. Gabarito: E (CESPE - 2008 – HEMOBRÁS – Técnico de Informática) Uma estrutura do tipo lista, em que é desejável percorrer o seu conteúdo nas duas direções indiferentemente, é denominado lista duplamente encadeada. Comentários: Perfeito, é exatamente isso! Gabarito: C (CESPE - 2010 – TRE/MT – Analista de Sistemas – C) Uma lista duplamente encadeada é uma lista em que o seu último elemento referencia o primeiro. Comentários: Não, isso se trata de uma Lista Circular! Gabarito: E 27. (CESPE - 2006 – SGA/AC – Analista de Sistemas) O principal problema da alocação por lista encadeada é a fragmentação. Comentários: 00000000000 Não! Em geral, a alocação por lista encadeada elimina a fragmentação. Gabarito: E (CESPE – – Analista de Sistemas) O armazenamento de arquivos em disco pode ser feito por meio de uma lista encadeada, em que os blocos de disco são ligados por ponteiros. A utilização de lista encadeada elimina completamente o problema de fragmentação interna. Comentários: Prof. Diego Carvalho www.estrategiaconcursos.com.br 00000000000 - DEMO Pág. 41 de 92 Analista Judiciário do TRT/4ª Região (RS) Curso de Teoria e Exercícios Prof. Diego Carvalho – Aula 00 Não, ela elimina a fragmentação externa! Gabarito: E (CESPE – FINEP – Analista de Sistemas) Uma lista encadeada é uma representação de objetos na memória do computador que consiste de uma sequência de células em que: a) cada célula contém apenas o endereço da célula seguinte. b) cada célula contém um objeto e o tipo de dados da célula seguinte. c) o último elemento da sequência aponta para o próximo objeto que normalmente possui o endereço físico como not null. d) cada célula contém um objeto de algum tipo e o endereço da célula seguinte. e) a primeira célula contém o endereço da última célula. Comentários: Cada célula contém um objeto de algum tipo e o endereço da célula seguinte! Gabarito: D (CESPE - 2010 – BASA – Analista de Sistemas) Em uma lista encadeada, o tempo de acesso a qualquer um de seus elementos é constante e independente do tamanho da estrutura de dados. 00000000000 Comentários: Claro que não! Em uma busca sequencial, o tempo de acesso é proporcional ao tamanho da estrutura de dados, i.e., quanto mais ao final da lista, maior o tempo de acesso! Por que, professor? Porque a lista é acessada sequencialmente (ou seja, é preciso percorrer elemento por elemento) e, não, diretamente (ou seja, pode-se acessar de modo direto). Um vetor tem acesso direto, portanto seu tempo de acesso é igual independentemente do tamanho da estrutura. Gabarito: E Prof. Diego Carvalho www.estrategiaconcursos.com.br 00000000000 - DEMO Pág. 42 de 92 Analista Judiciário do TRT/4ª Região (RS) Curso de Teoria e Exercícios Prof. Diego Carvalho – Aula 00 31. (CESPE - 2010 – INMETRO – Analista de Sistemas – C) Considere que Roberto tenha feito uso de uma lista encadeada simples para programar o armazenamento e o posterior acesso aos dados acerca dos equipamentos instalados em sua empresa. Considere, ainda, que, após realizar uma consulta acerca do equipamento X, Roberto precisou acessar outro equipamento Y que se encontrava, nessa lista, em posição anterior ao equipamento X. Nessa situação, pela forma como os ponteiros são implementados em uma lista encadeada simples, o algoritmo usado por Roberto realizou a consulta ao equipamento Y sem reiniciar a pesquisa do começo da lista. Comentários: Não! Infelizmente, ele teve que reiniciar a pesquisa a partir do primeiro elemento da lista, na medida em que ele não pode voltar. Por que, professor? Porque se trata de uma lista encadeada simples e, não, dupla. Portanto, a lista só é percorrida em uma única direção. Gabarito: E (FCC – TRE/AM – Analista de Sistemas) Os dados contidos em uma lista encadeada estão: a) b) c) d) e) ordenados seqüencialmente. sem ordem lógica ou física alguma. em ordem física e não, necessariamente, em ordem lógica. em ordem lógica e, necessariamente, em ordem física. em ordem lógica e não, necessariamente, em ordem física. Comentários: 00000000000 A Ordem Física é sua disposição na memória do computador e a Ordem Lógica é como ela pode ser lida e entendida. Ora, a ordem em que ela se encontra na memória pouco importa, visto que cada sistema operacional e cada sistema de arquivos tem sua maneira. Portanto, trata-se da ordem lógica e, não, necessariamente física. Gabarito: E (FCC - 2010 – DPE/SP – Analista de Sistemas) Uma estrutura de dados que possui três campos: dois ponteiros e campo de informação denomina-se: Prof. Diego Carvalho www.estrategiaconcursos.com.br 00000000000 - DEMO Pág. 43 de 92 Analista Judiciário do TRT/4ª Região (RS) Curso de Teoria e Exercícios Prof. Diego Carvalho – Aula 00 a) b) c) d) e) lista encadeada dupla. Lista encadeada simples. pilha. fila. vetor. Comentários: Trata-se da Lista Encadeada Dupla: dois ponteiros (Ant e Prox) e um campo de informação. Gabarito: A 34. (CESPE - 2010 – TRE/MT – Analista de Sistemas) O algoritmo para inclusão de elementos em uma pilha é usado sem nenhuma alteração para incluir elementos em uma lista. Comentários: Galera... uma pilha pode ser implementada por meio de uma lista! Ademais, o algoritmo para inclusão de elementos de ambas necessita do primeiro elemento (ou topo). Portanto, questão correta! Gabarito: C ACERTEI ERREI 00000000000 Prof. Diego Carvalho www.estrategiaconcursos.com.br 00000000000 - DEMO Pág. 44 de 92 Analista Judiciário do TRT/4ª Região (RS) Curso de Teoria e Exercícios Prof. Diego Carvalho – Aula 00 PILHAS A Pilha é um conjunto ordenado de itens no qual novos itens podem ser inseridos e eliminados em uma extremidade chamada topo. Novos itens podem ser colocados no topo da pilha (tornando-se o novo primeiro elemento) ou os itens que estiverem no topo da pilha poderão ser removidos (tornando-se o elemento mais abaixo o novo primeiro elemento). Também conhecida como Lista LIFO (Last In First Out), basta lembrar de uma pilha de pratos esperando para serem lavados, i.e., o último a entrar é o primeiro a sair. A ordem em que os pratos são retirados da pilha é o oposto da ordem em que eles são colocados sobre a pilha e, como consequência, apenas o prato do topo da pilha está acessível. 00000000000 As Pilhas oferecem três operações básicas: push, que insere um novo elemento no topo da pilha; pop, que remove um elemento do topo da pilha; e top (também conhecida como check), que acessa e consulta o elemento do topo da pilha. Pilhas podem ser implementadas por meio de Vetores (Pilha Sequencial - Alocação Estática de Memória) ou Listas (Pilha Encadeada - Alocação Dinâmica de Memória). Prof. Diego Carvalho www.estrategiaconcursos.com.br 00000000000 - DEMO Pág. 45 de 92 Analista Judiciário do TRT/4ª Região (RS) Curso de Teoria e Exercícios Prof. Diego Carvalho – Aula 00 (CESPE - 2011 - FUB - Analista de Tecnologia da Informação - Específicos) As pilhas são listas encadeadas cujos elementos são retirados e acrescentados sempre ao final, enquanto as filas são listas encadeadas cujos elementos são retirados e acrescentados sempre no início. Comentários: Bem... o que é o final de uma Pilha? Pois é, não se sabe! O que existe é o Topo da Pilha, de onde sempre são retirados e acrescentados elementos. Em Filas, elementos são retirados do início e acrescentados no final. Gabarito: E (CESPE - 2013 - INPI - Analista de Planejamento - Desenvolvimento e Manutenção de Sistemas) Na estrutura de dados do tipo lista, todo elemento novo que é introduzido na pilha torna-se o elemento do topo. Comentários: Galera... filas e pilhas são considerados espécies de lista. Como a questão não especificou sobre qual tipo de lista ela está se referindo, não se pode afirmar que todo elemento novo que é introduzido na pilha torna-se o elemento do topo. Questão extremamente mal escrita e que causou a alteração de gabarito de verdadeiro para falso. 00000000000 Gabarito: E 37. (CESPE - 2012 - -RO - Analista Judiciário - Analista de Sistemas Suporte – E) Visitas a sítios armazenadas em um navegador na ordem last-in-first-out é um exemplo de lista. Comentários: Não! Last-In-First-Out (LIFO) é um exemplo de Pilha! Cuidado, pilhas podem ser implementadas como listas, mas esse não é o foco da questão. Prof. Diego Carvalho www.estrategiaconcursos.com.br 00000000000 - DEMO Pág. 46 de 92 Analista Judiciário do TRT/4ª Região (RS) Curso de Teoria e Exercícios Prof. Diego Carvalho – Aula 00 Gabarito: E (ESAF - 2013 - DNIT - Analista Administrativo - Tecnologia da Informação) Assinale a opção correta relativa às operações básicas suportadas por pilhas. a) Push: insere um novo elemento no final da pilha. b) Pop: adiciona elementos ao topo da pilha. c) Pull: insere um novo elemento no interior da pilha. d) Top: transfere o último elemento para o topo da pilha. e) Top: acessa o elemento posicionado no topo da pilha. Comentários: (a) Não, é no topo; (b) Não, remove do topo; (c) Não, não existe; (d) Não, simplesmente acessa e consulta o elemento do topo; (e) Perfeito! Gabarito: E (FCC - 2012 – TST - Analista de Sistemas – C) As pilhas e as filas são estruturas de dados essenciais para os sistemas computacionais. É correto afirmar que a pilha é conhecida como lista FIFO - First In First Out. Comentários: Não! Pilha é LIFO e Fila é FIFO. Gabarito: E 00000000000 40. (FCC - 2012 – TRE/CE - Analista de Sistemas) Sobre pilhas é correto afirmar: a) Uma lista LIFO (Last-In/First-Out) é uma estrutura estática, ou seja, é uma coleção que não pode aumentar e diminuir durante sua existência. b) Os elementos na pilha são sempre removidos na mesma ordem em que foram inseridos. c) Uma pilha suporta apenas duas operações básicas, tradicionalmente denominadas push (insere um novo elemento no topo da pilha) e pop (remove um elemento do topo da pilha). Prof. Diego Carvalho www.estrategiaconcursos.com.br 00000000000 - DEMO Pág. 47 de 92 Analista Judiciário do TRT/4ª Região (RS) Curso de Teoria e Exercícios Prof. Diego Carvalho – Aula 00 d) Cada vez que um novo elemento deve ser inserido na pilha, ele é colocado no seu topo e, em qualquer momento, apenas aquele posicionado no topo da pilha pode ser removido. e) Sendo P uma pilha e x um elemento qualquer, a operação Push(P,x) diminui o tamanho da pilha P, removendo o elemento x do seu topo. Comentários: (a) Não, é uma estrutura dinâmica; (b) Não, é na ordem inversa (último a entrar é o primeiro a sair); (c) Não, há também Top ou Check, que acessar e consulta o elemento do topo; (d) Perfeito, é exatamente isso; (e) Push é a operação de inserção de novos elementos na pilha, portanto aumenta seu tamanho adicionando o elemento x no topo. Gabarito: D 41. (CESPE - 2011 - EBC - Analista - Engenharia de Software) As pilhas, também conhecidas como listas LIFO ou PEPS, são listas lineares em que todas as operações de inserção e remoção de elementos são feitas por um único extremo da lista, denominado topo. Comentários: Não! LIFO é similar a UEPS (Último a Entrar, Primeiro a Sair). PEPS refere-se a Primeiro a Entrar, Primeiro a Sair, ou seja, FIFO. 00000000000 Gabarito: E 42. (VUNESP - 2011 - TJM- - Analista de Sistemas - Judiciário) Lista do tipo LIFO (Last in, First Out) e lista do tipo FIFO (Firstin,First Out) são, respectivamente, características das estruturas de dados denominadas: a) Fila e Pilha. b) Pilha e Fila. c) Grafo e Árvore. d) Árvore e Grafo. e) Árvore Binária e Árvore Ternária. Prof. Diego Carvalho www.estrategiaconcursos.com.br 00000000000 - DEMO Pág. 48 de 92 Analista Judiciário do TRT/4ª Região (RS) Curso de Teoria e Exercícios Prof. Diego Carvalho – Aula 00 Comentários: E aí, já está automático para responder? Tem que ser automática: Pilha (LIFO) e Fila (FIFO). Gabarito: B 43. (CESPE - 2010 - Banco da Amazônia - Técnico Científico - Tecnologia da Informação - Arquitetura de Tecnologia) A definição da estrutura pilha permite a inserção e a eliminação de itens, de modo que uma pilha é um objeto dinâmico, cujo tamanho pode variar constantemente. Comentários: Essa questão é polêmica, porque é inevitável pensar em Pilhas Sequenciais (implementadas por vetores estáticos)! No entanto, é comum que as bancas tratem por padrão Pilha como Pilha Encadeada (implementadas por listas dinâmicas). Dessa forma, a questão está perfeita! Gabarito: C 44. (CESPE - 2010 - Banco da Amazônia - Técnico Científico - Tecnologia da Informação - Administração de Dados) Na representação física de uma pilha sequencial, é necessário uso de uma variável ponteiro externa que indique a extremidade da lista linear onde ocorrem as operações de inserção e retirada de nós. Comentários: 00000000000 As Pilhas oferecem três operações básicas: push, que insere um novo elemento no topo da pilha; pop, que remove um elemento do topo da pilha; e top (também conhecida como check), que acessa e consulta o elemento do topo da pilha. Pilhas podem ser implementadas por meio de Vetores (Pilha Sequencial - Alocação Estática de Memória) ou Listas (Pilha Encadeada - Alocação Dinâmica de Memória). Conforme vimos em aula, a questão trata de uma Pilha Sequencial (i.e., implementada por meio de Vetores). Dessa forma, não é necessário o uso de ponteiros – esse seria o caso de uma Pilha Encadeada. Logo, discordo do gabarito! Gabarito: C Prof. Diego Carvalho www.estrategiaconcursos.com.br 00000000000 - DEMO Pág. 49 de 92 Analista Judiciário do TRT/4ª Região (RS) Curso de Teoria e Exercícios Prof. Diego Carvalho – Aula 00 45. (CESPE - ANAC - Técnico Administrativo - Informática) As operações de inserir e retirar sempre afetam a base de uma pilha. Comentários: Não, sempre afetam o topo da pilha! Gabarito: E 46. (FCC - 2009 - TRT - 16ª REGIÃO (MA) - Técnico Judiciário - Tecnologia da Informação) Pilha é uma estrutura de dados: a) cujo acesso aos seus elementos segue tanto a lógica LIFO quanto a FIFO. b) cujo acesso aos seus elementos ocorre de forma aleatória. c) que pode ser implementada somente por meio de vetores. d) que pode ser implementada somente por meio de listas. e) cujo acesso aos seus elementos segue a lógica LIFO, apenas. Comentários: (a) Não, somente LIFO; (b) Não, somente pelo Topo; (c) Não, pode ser por listas; (d) Não, pode ser por vetores; (e) Perfeito, é exatamente isso. Gabarito: E 47. (CESPE - 04 – STJ – Analista de Sistemas Em geral, em uma pilha só se admite ter acesso ao elemento localizado em seu topo. Isso se adapta perfeitamente à característica das seqüências em que só o primeiro componente é diretamente acessível. 00000000000 Comentários: Perfeito, é exatamente isso – muda-se apenas a perspectiva! Gabarito: C 48. (CESPE - 2004 – STJ – Analista de Sistemas) A seguir, está representada corretamente uma operação de desempilhamento em uma pilha de nome p. Prof. Diego Carvalho www.estrategiaconcursos.com.br 00000000000 - DEMO Pág. 50 de 92 Analista Judiciário do TRT/4ª Região (RS) Curso de Teoria e Exercícios Prof. Diego Carvalho – Aula 00 se p.topo = 0 então nada {pilha vazia} senão p.topo p.topo-1 Comentários: Perfeito! Se não tem topo, é porque a pilha está vazia. Se tiver topo, então o topo será o elemento anterior ao topo. O que ocorreu? Eu desempilhei a pilha! Gabarito: C 49. (CESPE - 2010 – TRE/MT - Analista de Sistemas – A) O tipo nó é inadequado para implementar estruturas de dados do tipo pilha. Comentários: Não! Uma pilha pode ser implementada por meio de um vetor ou de uma lista. Nesse último caso, temos tipos nós! Gabarito: E ACERTEI ERREI 00000000000 Prof. Diego Carvalho www.estrategiaconcursos.com.br 00000000000 - DEMO Pág. 51 de 92 Analista Judiciário do TRT/4ª Região (RS) Curso de Teoria e Exercícios Prof. Diego Carvalho – Aula 00 FILAS Uma fila é um conjunto ordenado de itens a partir do qual podem-se eliminar itens numa extremidade (chamada início da fila) e no qual podem-se inserir itens na outra extremidade (chamada final da fila). Também conhecida como Lista FIFO (First In First Out), basta lembrar de uma fila de pessoas esperando para serem atendidas em um banco, i.e., o primeiro a entrar é o primeiro a sair. Quando um elemento é colocado na fila, ele ocupa seu lugar no fim da fila, como um aluno recém-chegado que ocupa o final da fileira. O elemento retirado da fila é sempre aquele que está no início da fila, como o aluno que se encontra no começo da fileira e que esperou mais tempo. As operações básicas são Enqueue (Enfileirar) e Dequeue (Desenfileirar). As Filas possuem início (ou cabeça) e fim (ou cauda). 00000000000 É bom salientar outro conceito importante: Deque (Double Ended Queue)! É também conhecida como Filas Duplamente Encadeadas e permite a eliminação e inserção de itens em ambas as extremidades. Ademais, elas permitem algum tipo de priorização, visto que é possível inserir elementos de ambos os lados. Assim sendo, é comum em sistemas distribuídos! Prof. Diego Carvalho www.estrategiaconcursos.com.br 00000000000 - DEMO Pág. 52 de 92 Analista Judiciário do TRT/4ª Região (RS) Curso de Teoria e Exercícios Prof. Diego Carvalho – Aula 00 (CESPE - 2010 - Banco da Amazônia - Técnico Científico - Tecnologia da Informação - Análise de Sistemas) Em um programa existe a necessidade de guardar todas as alterações feitas em determinado dado para que seja possível desfazer alterações feitas ao longo de toda a sua existência. Nessa situação, a estrutura de dados mais adequada para o armazenamento de todas as alterações citadas seria uma fila. Comentários: Não! Pensem comigo: eu faço uma atividade, depois outra, depois mais uma e, por fim, mais outra. Se eu desejo desfazer a última atividade realizada para retornar a um estado anterior, eu preciso de uma pilha. Dessa forma, resgata-se o último estado válido e, não, o primeiro. Gabarito: E 51. (CESPE - 2012 – TST – Analista de Sistemas – A) As pilhas e as filas são estruturas de dados essenciais para os sistemas computacionais. É correto afirmar que a fila é conhecida como lista LIFO - Last In First Out. Comentário Não, Fila é FIFO! 00000000000 Gabarito: E (CESPE - 2012 - TRE- - Técnico Judiciário - Programação de Sistemas) As filas são estruturas com base no princípio LIFO (last in, first out), no qual os dados que forem inseridos primeiro na fila serão os últimos a serem removidos. Existem duas funções que se aplicam a todas as filas: PUSH, que insere um dado no topo da fila, e POP, que remove o item no topo da fila. Comentários: Não, isso é uma Pilha (LIFO). Prof. Diego Carvalho www.estrategiaconcursos.com.br 00000000000 - DEMO Pág. 53 de 92 Analista Judiciário do TRT/4ª Região (RS) Curso de Teoria e Exercícios Prof. Diego Carvalho – Aula 00 Gabarito: E (FCC - 2012 - MPE-AP – Analista de Sistemas - A) Nas estruturas de dados, devido às características das operações da fila, o primeiro elemento a ser inserido será o último a ser retirado. Estruturas desse tipo são conhecidas como LIFO. Comentários: Não, será o primeiro a ser retirado – são do tipo FIFO! Gabarito: E 54. (FCC - 2012 - MPE-AP – Analista de Sistemas - C) Nas estruturas de dados, a fila é uma lista linear na qual as operações de inserção e retirada ocorrem apenas no início da lista. Comentários: Não, isso é a definição de Pilha! Gabarit E (FCC - 2012 - TRE- - Analista Judiciário - Análise de Sistemas – D) Pela definição de fila, se os elementos são inseridos por um extremo da lista linear, eles só podem ser removidos pelo outro. Comentários: 00000000000 Perfeito, é exatamente isso! Gabarito: C (FCC - 2011 - TRT - 19ª Região (AL) - Analista Judiciário - Tecnologia da Informação) FIFO refere-se a estruturas de dados do tipo: a) fila. b) árvore binária. c) pilha. d) matriz quadrada. Prof. Diego Carvalho www.estrategiaconcursos.com.br 00000000000 - DEMO Pág. 54 de 92 Analista Judiciário do TRT/4ª Região (RS) Curso de Teoria e Exercícios Prof. Diego Carvalho – Aula 00 e) cubo. Comentários: Trata-se da Fila! Gabarito: A 57. (ESA - 2010 - CVM - Analista de Sistemas - prova 2) Uma fila é um tipo de lista linear em que: a) as inserções são realizadas em um extremo e as remoções no outro extremo. b) as inserções e remoções são realizadas em um mesmo extremo. c) podem ser realizadas apenas inserções. d) a inserção de um elemento requer a remoção de outro elemento. e) a ordem de saída não corresponde à ordem de entrada dos elementos. Comentários: As inserções são realizadas em um extremo e as remoções são realizadas no outro extremo, por isso é FIFO! Gabarito: A (CESPE - 2010 - DETRAN-ES - Analista de Sistemas) No armazenamento de dados pelo método FIFO (first in - first out), a estrutura de dados é representada por uma fila, em cuja posição final ocorrem inserções e, na inicial, retiradas. Comentários: 00000000000 Perfeito, é exatamente isso! Gabarito: C (CESPE - TRT - 5ª Região (BA) - Técnico Judiciário - Tecnologia da Informação) Entre alguns tipos de estrutura de dados, podem ser citados os vetores, as pilhas e as filas. Comentários: Prof. Diego Carvalho www.estrategiaconcursos.com.br 00000000000 - DEMO Pág. 55 de 92 Analista Judiciário do TRT/4ª Região (RS) Curso de Teoria e Exercícios Prof. Diego Carvalho – Aula 00 Perfeito, são todos exemplos de estruturas de dados! Gabarito: C (CESPE - 2004 – SES/PA – Analista de Sistemas) Uma estrutura mais geral que as pilhas e filas é o deque, em que as inserções, retiradas e acessos são permitidos em ambas as extremidades. Comentários: Perfeito, deques permitem todas essas operações! Gabarito: C 61. (CESPE – TCE/AC – Analista de Sistemas – D) Um deque (double ended queue) requer inserção e remoção no topo de uma lista e permite a implementação de filas com algum tipo de prioridade. A implementação de um deque, geralmente é realizada com a utilização de uma lista simplesmente encadeada. Comentários: Não, pode ser do início ou fim da lista! De fato, permite a implementação de filas com algum tipo de prioridade, mas geralmente é realizada com a utilização de filas duplamente encadeadas. Gabarito: E (FCC - 2007 – TRT/23 – Analista de Sistemas) Uma estrutura de dados com vocação de FIFO de duplo fim e que admite a rápida inserção e remoção em ambos os extremos é: 00000000000 a) b) c) d) e) uma pilha. uma splay tree. um deque. uma lista linear. uma árvore AVL. Comentários: Prof. Diego Carvalho www.estrategiaconcursos.com.br 00000000000 - DEMO Pág. 56 de 92 Analista Judiciário do TRT/4ª Região (RS) Curso de Teoria e Exercícios Prof. Diego Carvalho – Aula 00 Trata-se de um Deque – fila duplamente encadeada! Gabarito: C (CESPE - 2004 – PBV/RR - Analista de Sistemas) As filas com prioridade são listas lineares nas quais os elementos são pares da forma (qi, pi), em que q é o elemento do tipo base e p é uma prioridade. Elas possuem uma política de fila do tipo FIFO (first in first out) entre os elementos de mesma prioridade. Comentários: Perfeito! É assim que funciona a prioridade em conjunto com filas. Gabarito: C 64. (CESPE - 2004 – STJ – Analista de Sistemas) A seguir, está representada corretamente uma operação de retirada em uma fila de nome f. se f.começo = nil então erro {fila vazia} senão j f.começo.info Comentários: Não, o correto seria: se f.começo = nil então erro {fila vazia} senão f.começo f.começo - 1 00000000000 Gabarito: E ACERTEI Prof. Diego Carvalho ERREI www.estrategiaconcursos.com.br 00000000000 - DEMO Pág. 57 de 92 Analista Judiciário do TRT/4ª Região (RS) Curso de Teoria e Exercícios Prof. Diego Carvalho – Aula 00 ÁRVORES Uma árvore é uma estrutura de dados hierárquica (não-linear) composta por um conjunto finito de elementos com um único elemento raiz, com zero ou mais subárvores ligadas a esse elemento raiz. Como mostra a imagem abaixo, há uma única raiz, em amarelo. Há também nós folhas, em vermelho e seus pais, em verde. Observem ainda os conceitos de Altura, Grau e Nível de uma árvore. 00000000000 O Grau informa a quantidade de filhos de um determinado nó! A Raiz tem Nível 0 (excepcionalmente, alguns autores consideram que tem Nível 1) e o nível de qualquer outro nó na árvore é um nível a mais que o nível de seu pai. Por fim, a Altura equivale ao nível máximo de seus nós. Dessas informações, podemos concluir que toda folha tem Grau 0. Existe um tipo particular de árvore chamado: Árvore Binária! O que é isso? É uma estrutura de dados hierárquica em que todos os nós têm grau 0, 1 ou 2. Já uma Árvore Estritamente Binária é aquela em que todos os nós têm grau 0 ou 2. E uma Prof. Diego Carvalho www.estrategiaconcursos.com.br 00000000000 - DEMO Pág. 58 de 92 Analista Judiciário do TRT/4ª Região (RS) Curso de Teoria e Exercícios Prof. Diego Carvalho – Aula 00 Árvore Binária Completa é aquela em que todas as folhas estão no mesmo nível, como mostram as imagens abaixo. 00000000000 Prof. Diego Carvalho www.estrategiaconcursos.com.br 00000000000 - DEMO Pág. 59 de 92 Analista Judiciário do TRT/4ª Região (RS) Curso de Teoria e Exercícios Prof. Diego Carvalho – Aula 00 Uma Árvore Binária Completa com x folhas conterá sempre (2x – 1) nós. Observem a imagem acima e façam as contas: 2*8 – 1 = 15 nós! Uma árvore binária completa de altura h e nível n contém (2h-1) ou n -1) nós e usa-se (2n para calcular a quantidade de nós em determinado nível. Na imagem acima, há uma árvore de h = 4 e n = 3; logo, existem 23+1 -1 = 15 nós no total; e no Nível 3, existe 23 = 8 nós. 00000000000 Prof. Diego Carvalho www.estrategiaconcursos.com.br 00000000000 - DEMO Pág. 60 de 92 Analista Judiciário do TRT/4ª Região (RS) Curso de Teoria e Exercícios Prof. Diego Carvalho – Aula 00 (CESPE - 2012 - Banco da Amazônia - Técnico Científico - Administração de Dados) As operações de busca em uma árvore binária não a alteram, enquanto operações de inserção e remoção de nós provocam mudanças sistemáticas na árvore. Comentários: Perfeito! Operações de Busca não alteram nenhuma estrutura de dados. Já Operações de Inserção e Remoção podem provocar diversas mudanças estruturais. Gabarito: C (CESPE - 2012 - Banco da Amazônia - Técnico Científico - Administração de Dados) O tipo de dados árvore representa organizações hierárquicas entre dados. Comentários: Perfeito, observem que alguns autores tratam Tipos de Dados como sinônimo de Estruturas de Dados. Gabarito: C 67. (CESPE - 2010 - DETRAN-ES - Analista de Sistemas) Denomina-se árvore binária a que possui apenas dois nós. 00000000000 Comentários: Não, árvore binária é aquela em que cada nó tem, no máximo, dois filhos! Gabarito: E (FCC - 12 - MPE-AP - Analista Ministerial - Tecnologia da Informação – A) A árvore é uma estrutura linear que permite representar uma relação de hierarquia. Ela possui um nó raiz e subárvores não vazias. Prof. Diego Carvalho www.estrategiaconcursos.com.br 00000000000 - DEMO Pág. 61 de 92 Analista Judiciário do TRT/4ª Região (RS) Curso de Teoria e Exercícios Prof. Diego Carvalho – Aula 00 Comentários: Árvore é uma estrutura linear? Não, hierárquica! Gabarito: E (FCC - 2011 - TRT - 19ª Região (AL) - Técnico Judiciário - Tecnologia da Informação) Em uma árvore binária, todos os nós têm grau: a) 2. b) 0, 1 ou 2. c) divisível por 2. d) maior ou igual a 2. e) 0 ou 1. Comentários: Olha a pegadinha! Todos os nós têm grau 0 (Folha), 1 (Único filho) ou 2 (Dois filhos). Gabarito: B 70. (CETAP - 2010 - - - Analista de Sistemas - A) Uma árvore binária é aquela que tem como conteúdo somente valores binários. Comentários: Não! Uma árvore binária é aquela que tem, no máximo, grau 2! 00000000000 Gabarito: E 71. (CETAP - 2010 - - - Analista de Sistemas - B) Uma árvore é composta por duas raízes, sendo uma principal e a outra secundária. Comentários: Não, uma árvore possui somente um nó raíz! Gabarito: E Prof. Diego Carvalho www.estrategiaconcursos.com.br 00000000000 - DEMO Pág. 62 de 92 Analista Judiciário do TRT/4ª Região (RS) Curso de Teoria e Exercícios Prof. Diego Carvalho – Aula 00 72. (CESPE - ANAC - Especialista em Regulação - Economia) Considerandose uma árvore binária completa até o nível 5, então a quantidade de folhas nesse nível será 24. Comentários: Não! A quantidade de folhas em um determinado nível – considerando a raiz como nível 0 –, é dada pela fórmula 2d, portanto 25. Gabarito: E 73. (FUNCAB - 2010 - SEJUS-RO - Analista de Sistemas - II) Árvores são estruturas de dados estáticas com sua raiz representada no nível um. Comentários: Não! Árvores são estruturas dinâmicas e sua raiz, em geral, é representada no nível 0 (mas depende de autor para autor). Gabarito: E 74. (CESPE – ANAC - Analista de Sistemas) Uma árvore binária completa até o nível 10 tem 2.047 nós. Comentários: Se possui 10 níveis, possui (2d+1 -1): 2047 nós! 00000000000 Gabarito: C 75. (CESPE - 2010 – TRE/MT – Analista de Sistemas – B) As listas, pilhas, filas e árvores são estruturas de dados que têm como principal característica a sequencialidade dos seus elementos. Comentários: Não! Árvores ntêm como principal característica a sequencialidade dos seus elementos. Gabarito: E Prof. Diego Carvalho www.estrategiaconcursos.com.br 00000000000 - DEMO Pág. 63 de 92 Analista Judiciário do TRT/4ª Região (RS) Curso de Teoria e Exercícios Prof. Diego Carvalho – Aula 00 76. (CESPE - 2010 – TRE/MT - Analista de Sistemas – E) O uso de recursividade é totalmente inadequado na implementação de operações para manipular elementos de uma estrutura de dados do tipo árvore. Comentários: Pelo contrário, é fundamental para implementação de operações. Gabarito: E (CESPE - 2011 – STM – Analista de Sistemas) Enquanto uma lista encadeada somente pode ser percorrida de um único modo, uma árvore binária pode ser percorrida de muitas maneiras diferentes. Comentários: Perfeito, pode-se percorrer de modo pré-fixado, in-fixado e pós-fixado. Gabarito: C ACERTEI ERREI 00000000000 Prof. Diego Carvalho www.estrategiaconcursos.com.br 00000000000 - DEMO Pág. 64 de 92 Analista Judiciário do TRT/4ª Região (RS) Curso de Teoria e Exercícios Prof. Diego Carvalho – Aula 00 PESQUISA DE DADOS Uma das tarefas de maior importância na computação é a pesquisa de informações contidas em coleções de dados. Em geral, desejamos que essa tarefa seja executada sem que haja a necessidade de inspecionar toda a coleção de dados. Existem algumas maneiras de realizar pesquisas, tais como: Pesquisa Sequencial, Pesquisa Binária, Tabelas de Dispersão (Hashing), Árvores AVL, Árvores B e Árvores B+. BUSCA SEQUENCIAL Galera, imaginem que eu estou à procura de um valor X em um vetor L[ ]! Para tal, posso inspecionar as posições sequenciais de L[ ] a partir da primeira posição: se eu encontrar X, minha busca tem êxito; se eu alcanço a última posição e não encontro X, concluímos que esse valor não ocorre no vetor L[ ]. Como é chamada essa busca em que eu inspeciono uma estrutura posição por posição? Sequencial ou Linear. Considerando que o vetor L[ ] contém N elementos, ordenados ou não, é fácil verificar que a busca sequencial requer tempo linearmente proporcional ao tamanho do vetor, i.e., da ordem O(n). Por conta disso, é comum dizer que a busca sequencial é uma Busca Linear. Entenderam? Quanto maior o vetor, maior o tempo em média para buscar um elemento! Quanto mais ao final, mais demorado. A Busca Sequencial é muito lenta para grandes quantidades de dados, mas aceitável para listas pequenas e que mudam constantemente. Observa-se que no Melhor Caso, X está na primeira posição, logo necessita apenas de uma comparação; no Pior Caso, X está na última posição, logo necessita de N comparações; e no Caso Médio, X é encontrado após (n+1)/2 comparações. 00000000000 A seguir, encontram-se dois algoritmos para realização de uma Busca Sequencial: o primeiro ocorre de forma simples e o segundo ocorre de forma recursiva. Galera, para vetores de médio ou grande porte, o tempo de busca sequencial é considerado completamente inaceitável, dado que existem técnicas mais eficientes! Professor, me dá um exemplo? Claro, veremos adiante: Busca Binária! Prof. Diego Carvalho www.estrategiaconcursos.com.br 00000000000 - DEMO Pág. 65 de 92 Analista Judiciário do TRT/4ª Região (RS) Curso de Teoria e Exercícios Prof. Diego Carvalho – Aula 00 BUSCA BINÁRIA 00000000000 A Busca Binária é um algoritmo de busca em vetores que segue o paradigma de divisão-e-conquista. Parte-se do pressuposto de que o vetor está ordenado e realiza sucessivas divisões do espaço de busca, comparando o elemento chave com o elemento do meio do vetor. Possui complexidade da ordem de O(log2 n), em que N é o tamanho do vetor de busca. Quando o Vetor L[ ] estiver em ordem crescente, podemos determinar se X ocorre em L[ ] de forma mais rápida da seguinte forma: inspeciona-se a posição central do vetor! Se essa posição já contiver X, a busca para! Por que, professor? Porque nós já encontramos X! Se X for menor que esse elemento central, passamos a procurar X recursivamente, no intervalo de L[ ] que se encontra à esquerda da posição central. Prof. Diego Carvalho www.estrategiaconcursos.com.br 00000000000 - DEMO Pág. 66 de 92 Analista Judiciário do TRT/4ª Região (RS) Curso de Teoria e Exercícios Prof. Diego Carvalho – Aula 00 Se X for maior do que o elemento central, continuamos a procurar X, recursivamente, no intervalo de L que está à direita da posição central. Se o intervalo se tornar vazio, a busca para, tendo sido mal sucedida. Esse procedimento é conhecido como Busca Binária e, facilmente, pode-se adaptar a busca em ordem decrescente. Segue abaixo um possível algoritmo: Na imagem abaixo, estamos à procura do valor 23! Em vermelho, encontra-se o elemento inicial L[0] = 2 e, em amarelo, encontra-se o elemento final L[N-1] = 57. Procuramos, então, o elemento central! Como? Ele é o elemento de índice [0 + (N1)]/2 = 7/2 = 3,5 = 3 (Arredonda-se para baixo). Ora, L[3] = 19! Encontramos? Não, 23>19! Sendo assim, L[0] = 19 e L[4] = 57. Procuramos, então, o elemento central! Como? Ele é o elemento de índice [0 + (N1)]/2 = 4/2 = 2. Ora, L[2] = 51! Encontramos? Não, 23<51! Sendo assim, L[0] = 19 e L[2] = 51. Procuramos, então, o elemento central! Como? Ele é o elemento de índice [0+ (N-1)]/2 = 2/2 = 1. Ora, L[1] = 23! Encontramos? Sim! Então, nossa busca obteve êxito e encontramos o que buscávamos. 00000000000 Prof. Diego Carvalho www.estrategiaconcursos.com.br 00000000000 - DEMO Pág. 67 de 92 Analista Judiciário do TRT/4ª Região (RS) Curso de Teoria e Exercícios Prof. Diego Carvalho – Aula 00 00000000000 Prof. Diego Carvalho www.estrategiaconcursos.com.br 00000000000 - DEMO Pág. 68 de 92 Analista Judiciário do TRT/4ª Região (RS) Curso de Teoria e Exercícios Prof. Diego Carvalho – Aula 00 – Analista de Sistemas) Considerando que se deseje 78. (CESPE - 2013 – TRT/ efetuar uma pesquisa de um valor sobre a chave primária de uma tabela de um banco de dados com uma chave primária com um tipo de campo que receba um valor inteiro e que se possa fazer essa pesquisa utilizando-se a busca sequencial ou a busca binária, assinale a opção correta. a) O método de busca binária requer, no máximo, ln(n) comparações para determinar o elemento pesquisado, em que n é o número de registros. b) O método de busca binária será sempre mais rápido que o método de busca sequencial, independentemente de a tabela estar ordenada com base no elemento pesquisado. c) O método de busca sequencial requererá, no máximo, n² comparações para determinar o elemento pesquisado, em que n será o número de registros. d) O método de busca binária sempre efetuará menos comparações que o método de pesquisa sequencial. e) O método de busca sequencial efetuará menos comparações para encontrar o elemento pesquisado quando a tabela estiver ordenada em comparação à situação quando a tabela estiver desordenada. Comentário 00000000000 A Busca Binária é um algoritmo de busca em vetores que segue o paradigma de divisão-e-conquista. Parte-se do pressuposto de que o vetor está ordenado e realiza sucessivas divisões do espaço de busca, comparando o elemento chave com o elemento do meio do vetor. Possui complexidade da ordem de O(log2 n), em que N é o tamanho do vetor de busca. a) Conforme vimos em aula, não é logaritmo neperiano (na verdade, é Base 2), mas a banca considerou correto mesmo assim. Prof. Diego Carvalho www.estrategiaconcursos.com.br 00000000000 - DEMO Pág. 69 de 92 Analista Judiciário do TRT/4ª Região (RS) Curso de Teoria e Exercícios Prof. Diego Carvalho – Aula 00 A Busca Sequencial é muito lenta para grandes quantidades de dados, mas aceitável para listas pequenas e que mudam constantemente. Observa-se que no Melhor Caso, X está na primeira posição, logo necessita apenas de uma comparação; no Pior Caso, X está na última posição, logo necessita de N comparações; e no Caso Médio, X é encontrado após (n+1)/2 comparações. b) Conforme vimos em aula, isso não ocorre sempre! Se compararmos o Melhor Caso da Busca Sequencial com o Pior Caso da Busca Binária, a primeira será mais rápida. Considerando que o vetor L[ ] contém N elementos, ordenados ou não, é fácil verificar que a busca sequencial requer tempo linearmente proporcional ao tamanho do vetor, i.e., da ordem O(n). Por conta disso, é comum dizer que a busca sequencial é uma Busca Linear. Entenderam? Quanto maior o vetor, maior o tempo em média para buscar um elemento! Quanto mais ao final, mais demorado. c) Conforme vimos em aula, ele possui complexidade da ordem de O(n). A Busca Sequencial é muito lenta para grandes quantidades de dados, mas aceitável para listas pequenas e que mudam constantemente. Observa-se que no Melhor Caso, X está na primeira posição, logo necessita apenas de uma comparação; no Pior Caso, X está na última posição, logo necessita de N comparações; e no Caso Médio, X é encontrado após (n+1)/2 comparações. d) Conforme vimos em aula, isso não ocorre sempre! Se compararmos o Melhor Caso da Busca Sequencial com o Pior Caso da Busca Binária, a primeira será mais rápida. Considerando que o vetor L[ ] contém N elementos, ordenados ou não, é fácil verificar que a busca sequencial requer tempo linearmente proporcional ao tamanho do vetor, i.e., da ordem O(n). Por conta disso, é comum dizer que a busca sequencial é uma Busca Linear. Entenderam? Quanto maior o vetor, maior o tempo em média para buscar um elemento! Quanto mais ao final, mais demorado. 00000000000 e) Conforme vimos em aula, não é necessário que a lista esteja ordenada. Logo, isso não fará diferença. Gabarito: A Prof. Diego Carvalho www.estrategiaconcursos.com.br 00000000000 - DEMO Pág. 70 de 92 Analista Judiciário do TRT/4ª Região (RS) Curso de Teoria e Exercícios Prof. Diego Carvalho – Aula 00 79. (ESAF - 2001 – BACEN – Analista de Sistemas Na pior hipótese, o número de comparações necessárias para pesquisar um elemento em um array de 2048 elementos pelo método de pesquisa binária será: a) b) c) d) e) 8 9 10 11 12 Comentários: A Busca Binária é um algoritmo de busca em vetores que segue o paradigma de divisão-e-conquista. Parte-se do pressuposto de que o vetor está ordenado e realiza sucessivas divisões do espaço de busca, comparando o elemento chave com o elemento do meio do vetor. Possui complexidade da ordem de O(log2 n), em que N é o tamanho do vetor de busca. Conforme vimos em aula, a complexidade da Busca Binária é O(log2 n), em que N é o tamanho do vetor de busca – no nosso caso, 2048! Quanto é log2 2048? 11! Por que, professor? Porque 211 = 2048! Gabarito: D (CESPE - 2013 – TCE/RO – Analista de Sistemas Considere uma tabela de um banco de dados com chave primária e tipo de campo que receba um valor inteiro. Ao se efetuar uma pesquisa de um valor sobre a chave primária dessa tabela, o método de busca binária requer, no máximo, lg(n) comparações para localizar o elemento pesquisado, em que n é o número de registros. 00000000000 Comentários: A Busca Binária é um algoritmo de busca em vetores que segue o paradigma de divisão-e-conquista. Parte-se do pressuposto de que o vetor está ordenado e realiza sucessivas divisões do espaço de busca, comparando o elemento chave com o elemento do meio do vetor. Possui complexidade da ordem de O(log2 n), em que N é o tamanho do vetor de busca. Conforme vimos em aula, de fato a complexidade da Busca Binária é O(log2 n). Prof. Diego Carvalho www.estrategiaconcursos.com.br 00000000000 - DEMO Pág. 71 de 92 Analista Judiciário do TRT/4ª Região (RS) Curso de Teoria e Exercícios Prof. Diego Carvalho – Aula 00 Gabarito: C ACERTEI ERREI 00000000000 Prof. Diego Carvalho www.estrategiaconcursos.com.br 00000000000 - DEMO Pág. 72 de 92 Analista Judiciário do TRT/4ª Região (RS) Curso de Teoria e Exercícios Prof. Diego Carvalho – Aula 00 HASHING As Tabelas de Dispersão, também conhecidas como Tabelas de Espelhamento ou Tabelas Hashing, armazenam uma coleção de valores, sendo que cada valor está associado a uma chave. Tais chaves têm que ser todas distintas e são usadas para mapear os valores na tabela. Esse mapeamento é feito por uma função de hashing que chamaremos de h. Por exemplo, podemos implementar uma tabela de dispersão usando um vetor com oito posições e utilizar h(x) = x MOD 8 como função de hashing6. Dizemos que h(k) é a posição original da chave k e é nessa posição da tabela que a chave k deve ser inserida. A imagem abaixo ilustra a inserção de uma coleção de valores com suas respectivas chaves numa Tabela de Dispersão. Observe que o valor Gil foi colocado na posição 7 da tabela, pois a chave associada a Gil é 31 e h(31) = 7. O que aconteceria se tratássemos de inserir nessa tabela o valor Ivo com chave 33? Observe que h(33) = 1, mas a posição 1 da tabela já está ocupada. Dizemos que as chaves 25 e 33 colidiram. Mais precisamente, duas chaves x e y colidem se h(x) = h(y). Note que o problema da colisão de chaves ocorre porque, na maioria dos casos, o domínio das chaves é maior que a quantidade de posições da tabela. Sendo assim, pelo princípio da casa de pombos, qualquer função do conjunto das chaves para o conjunto das posições da tabela não é injetora. 00000000000 Não é aceitável recusar a inserção de uma chave que colida com outra já existente na tabela se ela ainda tiver posições livres. Precisamos de alguma estratégia para lidar com as colisões de chaves. Há diversas técnicas para lidar com as colisões, tais 6 Galera... o MOD representa o resto de uma divisão. Ex: 10 mod 8 = 2, porque 10/8 possui quociente 1 e resto 2. Em outras palavras, 8*1 + 2 = 10. Prof. Diego Carvalho www.estrategiaconcursos.com.br 00000000000 - DEMO Pág. 73 de 92 Analista Judiciário do TRT/4ª Região (RS) Curso de Teoria e Exercícios Prof. Diego Carvalho – Aula 00 como Hashing Fechado ou Hashing Aberto. O Método de Hashing é recomendado para um grande número de dados que possuam faixas de valores variáveis. 00000000000 Prof. Diego Carvalho www.estrategiaconcursos.com.br 00000000000 - DEMO Pág. 74 de 92 Analista Judiciário do TRT/4ª Região (RS) Curso de Teoria e Exercícios Prof. Diego Carvalho – Aula 00 81. (CESPE - 2010 - Banco da Amazônia - Técnico Científico - Tecnologia da Informação - Administração de Dados A pesquisa sequencial é aplicável em estruturas não ordenadas. Comentários: Perfeito! Para fazer uma pesquisa sequencial, não é necessário que os dados estejam ordenados – diferentemente da pesquisa binária. Gabarito: C (CESPE - 2012 - Banco da Amazônia - Técnico Científico - Administração de Dados) As colisões ocorrem na utilização de tabela hash porque várias chaves podem resultar na mesma posição. Comentários: Perfeito! É raro, mas acontece... Gabarito: C (CESPE - 2010 - Banco da Amazônia - Técnico Científico - Tecnologia da Informação - Administração de Dados) Ocorre o hashing quando não há o armazenamento de cada entrada de uma tabela em um específico endereço calculado a partir da aplicação de uma função chave da entrada. 00000000000 Comentários: Pelo contrário, ocorre o hashing quando há o armazenamento de cada entrada de uma tabela em um específico endereço calculado a partir da aplicação de uma função chave da entrada. Gabarito: E Prof. Diego Carvalho www.estrategiaconcursos.com.br 00000000000 - DEMO Pág. 75 de 92 Analista Judiciário do TRT/4ª Região (RS) Curso de Teoria e Exercícios Prof. Diego Carvalho – Aula 00 84. (FCC - METRÔ- - Analista Treinee - Análise de Sistemas) O objetivo de fazer uma busca rápida a partir de uma chave de pesquisa simples e obter o valor desejado é alcançado pela estrutura de dados especial denominada: a) array. b) lista. c) vetor. d) árvore binária. e) tabela de hashing. Comentários: Trata-se da Tabela de Hashing! Gabarito: E (CESPE - 2012 - Banco da Amazônia - Técnico Científico - Administração de Dad A busca que utiliza uma tabela hash realiza comparação das chaves para encontrar a posição do elemento que está sendo buscado. Comentários: Não, eles utilizam a chave para gerar resultados que, esses sim, são comparados. Gabarito: E (CESPE - 2010 - DETRAN-ES - Analista de Sistemas No método de hashing, por meio de acesso sequencial, são utilizados tabelas e mapas para recuperar informações de endereço de arquivos de forma rápida e eficiente. 00000000000 Comentários: Não, Método de Hashing não faz Acesso Sequencial. Gabarito: E ACERTEI Prof. Diego Carvalho ERREI www.estrategiaconcursos.com.br 00000000000 - DEMO Pág. 76 de 92 Analista Judiciário do TRT/4ª Região (RS) Curso de Teoria e Exercícios Prof. Diego Carvalho – Aula 00 COMPILADORES E INTERPRETADORES [E aí, que tal vir comigo para ver a teoria e os exercícios desse assunto?] ACERTEI ERREI SCRUM [E aí, que tal vir comigo para ver a teoria e os exercícios desse assunto?] ACERTEI ERREI 00000000000 Prof. Diego Carvalho www.estrategiaconcursos.com.br 00000000000 - DEMO Pág. 77 de 92 Analista Judiciário do TRT/4ª Região (RS) Curso de Teoria e Exercícios Prof. Diego Carvalho – Aula 00 LISTA DE EXERCÍCIOS COMENTADOS (CESPE - 2013 - CNJ - Programador de computador) No fluxograma abaixo, se A = 4, B = 4 e C = 8, o resultado que será computado para Área é igual a 32. (CONSULPLAN - 2012 de pseudocódigo. E - Programador de computador Observe o trecho 00000000000 A estrutura será executada até que X seja igual ao seguinte valor a) – 1 b) – 3 (CONSULPLAN - 2012 - TSE - Programador de computador Observe o trecho de pseudocódigo, que mostra o emprego da estrutura de controle enquanto ... faça ... Prof. Diego Carvalho www.estrategiaconcursos.com.br 00000000000 - DEMO Pág. 78 de 92 Analista Judiciário do TRT/4ª Região (RS) Curso de Teoria e Exercícios Prof. Diego Carvalho – Aula 00 A opção que utiliza a estrutura para ... faça ... correspondente, que gera o mesmo resultado, é: c) Para n de 0 até 6 faça imprimir(n); d) Para n de 0 até 7 faça imprimir(n); (CESPE - 2011 - -ES - Técnico de Informática - Específicos Uma estrutura de repetição possibilita executar um bloco de comando, repetidas vezes, até que seja encontrada uma dada condição que conclua a repetição. (CESPE - 2010 - MPU - Analista de Informática - Desenvolvimento de Sistemas Se um trecho de algoritmo tiver de ser executado repetidamente e o número de repetições for indefinido, então é correto o uso, no início desse trecho, da estrutura de repetição Enquanto. (FEPESE - 2010 - SEFAZ-SC - Auditor Fiscal da Receita Estadual - Parte III Tecnologia da Informação Assinale a alternativa correta a respeito das variáveis e constantes, utilizadas em diversas linguagens de programação. a) O número de constantes deve ser menor ou igual ao número de variáveis em um programa. b) O número de constantes deve ser menor ou igual ao número de procedimentos em um programa. c) O número de constantes deve ser igual ao número de variáveis em um programa. d) O número de constantes independe da quantidade de variáveis em um programa. e) O número de constantes deve ser igual ao número de procedimentos em um programa. 00000000000 (FCC - 2010 -SP - Agente de Defensoria - Analista de Sistemas É utilizada para avaliar uma determinada expressão e definir se um bloco de código deve ou não ser executado. Essa é a definição da estrutura condicional: Prof. Diego Carvalho www.estrategiaconcursos.com.br 00000000000 - DEMO Pág. 79 de 92 Analista Judiciário do TRT/4ª Região (RS) Curso de Teoria e Exercícios Prof. Diego Carvalho – Aula 00 a) For b) If...Then...Else c) While d) Do...While e) Next (CESPE - 2011 - -ES - Analista Judiciário - Análise de Banco de Dados Específicos Em uma estrutura de repetição com variável de controle, ou estrutura para a verificação da condição é realizada antes da execução do corpo da sentença, o que impede a reescrita desse tipo de estrutura por meio de estrutura de repetição pós-testada. (FCC - 2009 - -PA - Analista Judiciário - Tecnologia da Informação Considere uma estrutura de dados do tipo vetor. Com respeito a tal estrutura, é correto que seus componentes são, característicamente, a) heterogêneos e com acesso FIFO. b) heterogêneos e com acesso LIFO. c) heterogêneos e com acesso indexado-sequencial. d) homogêneos e acesso não indexado. e) homogêneos e de acesso aleatório por intermédio de índices. 10. (CETAP - 2010 - - - Analista de Sistemas Matrizes são estruturas de dados de n-dimensões. Por simplicidade, chamaremos de matrizes as matrizes bidimensionais numéricas (que armazenam números inteiros). Sendo assim, marque a alternativa INCORRETA. a) Uma matriz de m linhas e n colunas contêm (m * n) dados. 00000000000 b) Uma matriz pode ser representada utilizando listas ligadas. c) A soma dos elementos de uma matriz pode ser calculada fazendo dois laços aninhados, um sobre as linhas e o outro sobre as colunas. d) A soma de duas matrizes de m linhas e n colunas resulta em uma matriz de 2*m linhas e 2*n colunas. e) O produto de duas matrizes de n linhas e n colunas resulta em uma matriz de n linhas e n colunas. Prof. Diego Carvalho www.estrategiaconcursos.com.br 00000000000 - DEMO Pág. 80 de 92 Analista Judiciário do TRT/4ª Região (RS) Curso de Teoria e Exercícios Prof. Diego Carvalho – Aula 00 11. (CESPE - 2010 - Banco da Amazônia - Técnico Científico - Tecnologia da Informação - Arquitetura de Tecnologia Os dados armazenados em uma estrutura do tipo matriz não podem ser acessados de maneira aleatória. Portanto, usa-se normalmente uma matriz quando o volume de inserção e remoção de dados é maior que o volume de leitura dos elementos armazenados. 12. (CESPE - TRT - 5ª Região (BA) - Técnico Judiciário - Tecnologia da Informação Entre alguns tipos de estrutura de dados, podem ser citados os vetores, as pilhas e as filas. 13. (CESPE - 2011 - EBC - Analista - Engenharia de Software Vetores são utilizados quando estruturas indexadas necessitam de mais que um índice para identificar um de seus elementos. 14. (CESPE - 2010 - TRE-BA - Analista Judiciário - Análise de Sistemas) Vetores podem ser considerados como listas de informações armazenadas em posição contígua na memória. 15. (CESPE - 2010 - TRE-BA - Analista Judiciário - Análise de Sistemas Uma posição específica de um vetor pode ser acessada diretamente por meio de seu índice. 16. (CESPE - 2012 - Banco da Amazônia - Técnico Científico - Administração de Dados) O tempo de busca de um elemento em uma lista duplamente encadeada é igual à metade do tempo da busca de um elemento em uma lista simplesmente encadeada. 17. (CESPE - 2012 - Banco da Amazônia - Técnico Científico - Administração de Dados) Em algumas implementações, uma lista vazia pode ter um único nó, chamado de sentinela, nó cabeça ou header. Entre suas possíveis funções, incluise simplificar a implementação de algumas operações realizadas sobre a lista, como inserir novos dados, recuperar o tamanho da lista, entre outras. 00000000000 18. (CESPE - 2012 - Banco da Amazônia - Técnico Científico - Administração de Dados) Estruturas ligadas como listas encadeadas superam a limitação das matrizes que não podem alterar seu tamanho inicial. 19. (CESPE - 2012 - Banco da Amazônia - Técnico Científico - Administração de Dados) As listas duplamente encadeadas diferenciam-se das listas simplesmente encadeadas pelo fato de, na primeira, os nós da lista formarem um anel com o último elemento ligado ao primeiro da lista. Prof. Diego Carvalho www.estrategiaconcursos.com.br 00000000000 - DEMO Pág. 81 de 92 Analista Judiciário do TRT/4ª Região (RS) Curso de Teoria e Exercícios Prof. Diego Carvalho – Aula 00 (FCC - 2012 - TRE- - Analista Judiciário - Análise de Sistemas - E) Numa lista singularmente encadeada, para acessar o último nodo é necessário partir do primeiro e ir seguindo os campos de ligação até chegar ao final da lista. 21. (CESPE - 2011 - EBC - Analista - Engenharia de Software) Uma lista é uma coleção de elementos do mesmo tipo dispostos linearmente, que podem ou não seguir determinada organização. As listas podem ser dos seguintes tipos: de encadeamento simples, duplamente encadeadas e ordenadas. (CESPE - ANAC - Técnico Administrativo - Informática) Em uma lista circular duplamente encadeada, cada nó aponta para dois outros nós da lista, um anterior e um posterior. (CESPE - TRT - 5ª Região (BA) - Técnico Judiciário - Tecnologia da Informação) A principal característica de uma lista encadeada é o fato de o último elemento da lista apontar para o elemento imediatamente anterior. - TCE-AC - Analista de Controle Externo - Processamentos de 24. (CESPE Dados) Uma lista encadeada é uma coleção de nodos que, juntos, formam uma ordem linear. Se é possível os nodos se deslocarem em ambas as direções na lista, diz-se que se trata de uma lista simplesmente encadeada. (CESPE - 2008 – HEMOBRÁS – Técnico de Informática) Uma estrutura do tipo lista, em que é desejável percorrer o seu conteúdo nas duas direções indiferentemente, é denominado lista duplamente encadeada. (CESPE - 2010 – TRE/MT – Analista de Sistemas – C) Uma lista duplamente encadeada é uma lista em que o seu último elemento referencia o primeiro. 00000000000 27. (CESPE - 2006 – SGA/AC – Analista de Sistemas) O principal problema da alocação por lista encadeada é a fragmentação. (CESPE – MCT – Analista de Sistemas) O armazenamento de arquivos em disco pode ser feito por meio de uma lista encadeada, em que os blocos de disco são ligados por ponteiros. A utilização de lista encadeada elimina completamente o problema de fragmentação interna. (CESPE – FINEP – Analista de Sistemas) Uma lista encadeada é uma representação de objetos na memória do computador que consiste de uma sequência de células em que: Prof. Diego Carvalho www.estrategiaconcursos.com.br 00000000000 - DEMO Pág. 82 de 92 Analista Judiciário do TRT/4ª Região (RS) Curso de Teoria e Exercícios Prof. Diego Carvalho – Aula 00 a) cada célula contém apenas o endereço da célula seguinte. b) cada célula contém um objeto e o tipo de dados da célula seguinte. c) o último elemento da sequência aponta para o próximo objeto que normalmente possui o endereço físico como not null. d) cada célula contém um objeto de algum tipo e o endereço da célula seguinte. e) a primeira célula contém o endereço da última célula. (CESPE - 2010 – BASA – Analista de Sistemas) Em uma lista encadeada, o tempo de acesso a qualquer um de seus elementos é constante e independente do tamanho da estrutura de dados. 31. (CESPE - 2010 – INMETRO – Analista de Sistemas – C) Considere que Roberto tenha feito uso de uma lista encadeada simples para programar o armazenamento e o posterior acesso aos dados acerca dos equipamentos instalados em sua empresa. Considere, ainda, que, após realizar uma consulta acerca do equipamento X, Roberto precisou acessar outro equipamento Y que se encontrava, nessa lista, em posição anterior ao equipamento X. Nessa situação, pela forma como os ponteiros são implementados em uma lista encadeada simples, o algoritmo usado por Roberto realizou a consulta ao equipamento Y sem reiniciar a pesquisa do começo da lista. (FCC – TRE/AM – Analista de Sistemas) Os dados contidos em uma lista encadeada estão: 00000000000 a) b) c) d) e) ordenados seqüencialmente. sem ordem lógica ou física alguma. em ordem física e não, necessariamente, em ordem lógica. em ordem lógica e, necessariamente, em ordem física. em ordem lógica e não, necessariamente, em ordem física. (FCC - 2010 – DPE/SP – Analista de Sistemas) Uma estrutura de dados que possui três campos: dois ponteiros e campo de informação denomina-se: a) lista encadeada dupla. b) Lista encadeada simples. Prof. Diego Carvalho www.estrategiaconcursos.com.br 00000000000 - DEMO Pág. 83 de 92 Analista Judiciário do TRT/4ª Região (RS) Curso de Teoria e Exercícios Prof. Diego Carvalho – Aula 00 c) pilha. d) fila. e) vetor. 34. (CESPE - 2010 – TRE/MT – Analista de Sistemas) O algoritmo para inclusão de elementos em uma pilha é usado sem nenhuma alteração para incluir elementos em uma lista. (CESPE - 2011 - FUB - Analista de Tecnologia da Informação - Específicos) As pilhas são listas encadeadas cujos elementos são retirados e acrescentados sempre ao final, enquanto as filas são listas encadeadas cujos elementos são retirados e acrescentados sempre no início. (CESPE - 2013 - INPI - Analista de Planejamento - Desenvolvimento e Manutenção de Sistemas) Na estrutura de dados do tipo lista, todo elemento novo que é introduzido na pilha torna-se o elemento do topo. 37. (CESPE - 2012 - -RO - Analista Judiciário - Analista de Sistemas Suporte – E) Visitas a sítios armazenadas em um navegador na ordem last-in-first-out é um exemplo de lista. (ESAF - 2013 - DNIT - Analista Administrativo - Tecnologia da Informação) Assinale a opção correta relativa às operações básicas suportadas por pilhas. a) Push: insere um novo elemento no final da pilha. b) Pop: adiciona elementos ao topo da pilha. c) Pull: insere um novo elemento no interior da pilha. d) Top: transfere o último elemento para o topo da pilha. e) Top: acessa o elemento posicionado no topo da pilha. 00000000000 (FCC - 2012 – TST - Analista de Sistemas – C) As pilhas e as filas são estruturas de dados essenciais para os sistemas computacionais. É correto afirmar que a pilha é conhecida como lista FIFO - First In First Out. 40. (FCC - 2012 – TRE/CE - Analista de Sistemas) Sobre pilhas é correto afirmar: a) Uma lista LIFO (Last-In/First-Out) é uma estrutura estática, ou seja, é uma coleção que não pode aumentar e diminuir durante sua existência. Prof. Diego Carvalho www.estrategiaconcursos.com.br 00000000000 - DEMO Pág. 84 de 92 Analista Judiciário do TRT/4ª Região (RS) Curso de Teoria e Exercícios Prof. Diego Carvalho – Aula 00 b) Os elementos na pilha são sempre removidos na mesma ordem em que foram inseridos. c) Uma pilha suporta apenas duas operações básicas, tradicionalmente denominadas push (insere um novo elemento no topo da pilha) e pop (remove um elemento do topo da pilha). d) Cada vez que um novo elemento deve ser inserido na pilha, ele é colocado no seu topo e, em qualquer momento, apenas aquele posicionado no topo da pilha pode ser removido. e) Sendo P uma pilha e x um elemento qualquer, a operação Push(P,x) diminui o tamanho da pilha P, removendo o elemento x do seu topo. 41. (CESPE - 2011 - EBC - Analista - Engenharia de Software) As pilhas, também conhecidas como listas LIFO ou PEPS, são listas lineares em que todas as operações de inserção e remoção de elementos são feitas por um único extremo da lista, denominado topo. 42. (VUNESP - 2011 - TJM- - Analista de Sistemas - Judiciário) Lista do tipo LIFO (Last in, First Out) e lista do tipo FIFO (Firstin,First Out) são, respectivamente, características das estruturas de dados denominadas: a) Fila e Pilha. b) Pilha e Fila. c) Grafo e Árvore. d) Árvore e Grafo. e) Árvore Binária e Árvore Ternária. 00000000000 43. (CESPE - 2010 - Banco da Amazônia - Técnico Científico - Tecnologia da Informação - Arquitetura de Tecnologia) A definição da estrutura pilha permite a inserção e a eliminação de itens, de modo que uma pilha é um objeto dinâmico, cujo tamanho pode variar constantemente. 44. (CESPE - 2010 - Banco da Amazônia - Técnico Científico - Tecnologia da Informação - Administração de Dados) Na representação física de uma pilha sequencial, é necessário uso de uma variável ponteiro externa que indique a extremidade da lista linear onde ocorrem as operações de inserção e retirada de nós. Prof. Diego Carvalho www.estrategiaconcursos.com.br 00000000000 - DEMO Pág. 85 de 92 Analista Judiciário do TRT/4ª Região (RS) Curso de Teoria e Exercícios Prof. Diego Carvalho – Aula 00 45. (CESPE - ANAC - Técnico Administrativo - Informática) As operações de inserir e retirar sempre afetam a base de uma pilha. 46. (FCC - 2009 - TRT - 16ª REGIÃO (MA) - Técnico Judiciário - Tecnologia da Informação) Pilha é uma estrutura de dados: a) cujo acesso aos seus elementos segue tanto a lógica LIFO quanto a FIFO. b) cujo acesso aos seus elementos ocorre de forma aleatória. c) que pode ser implementada somente por meio de vetores. d) que pode ser implementada somente por meio de listas. e) cujo acesso aos seus elementos segue a lógica LIFO, apenas. 47. (CESPE - 04 – STJ – Analista de Sistemas Em geral, em uma pilha só se admite ter acesso ao elemento localizado em seu topo. Isso se adapta perfeitamente à característica das seqüências em que só o primeiro componente é diretamente acessível. 48. (CESPE - 2004 – STJ – Analista de Sistemas) A seguir, está representada corretamente uma operação de desempilhamento em uma pilha de nome p. se p.topo = 0 então nada {pilha vazia} senão p.topo p.topo-1 49. (CESPE - 2010 – TRE/MT - Analista de Sistemas – A) O tipo nó é inadequado para implementar estruturas de dados do tipo pilha. (CESPE - 2010 - Banco da Amazônia - Técnico Científico - Tecnologia da Informação - Análise de Sistemas) Em um programa existe a necessidade de guardar todas as alterações feitas em determinado dado para que seja possível desfazer alterações feitas ao longo de toda a sua existência. Nessa situação, a estrutura de dados mais adequada para o armazenamento de todas as alterações citadas seria uma fila. 00000000000 51. (CESPE - 2012 – TST – Analista de Sistemas – A) As pilhas e as filas são estruturas de dados essenciais para os sistemas computacionais. É correto afirmar que a fila é conhecida como lista LIFO - Last In First Out. (CESPE - 2012 - TRE- - Técnico Judiciário - Programação de Sistemas) As filas são estruturas com base no princípio LIFO (last in, first out), no qual os dados Prof. Diego Carvalho www.estrategiaconcursos.com.br 00000000000 - DEMO Pág. 86 de 92 Analista Judiciário do TRT/4ª Região (RS) Curso de Teoria e Exercícios Prof. Diego Carvalho – Aula 00 que forem inseridos primeiro na fila serão os últimos a serem removidos. Existem duas funções que se aplicam a todas as filas: PUSH, que insere um dado no topo da fila, e POP, que remove o item no topo da fila. (FCC - 2012 - MPE-AP – Analista de Sistemas - A) Nas estruturas de dados, devido às características das operações da fila, o primeiro elemento a ser inserido será o último a ser retirado. Estruturas desse tipo são conhecidas como LIFO. 54. (FCC - 2012 - MPE-AP – Analista de Sistemas - C) Nas estruturas de dados, a fila é uma lista linear na qual as operações de inserção e retirada ocorrem apenas no início da lista. (FCC - 2012 - TRE- - Analista Judiciário - Análise de Sistemas – D) Pela definição de fila, se os elementos são inseridos por um extremo da lista linear, eles só podem ser removidos pelo outro. (FCC - 2011 - TRT - 19ª Região (AL) - Analista Judiciário - Tecnologia da Informação) FIFO refere-se a estruturas de dados do tipo: a) fila. b) árvore binária. c) pilha. d) matriz quadrada. e) cubo. 57. (ESAF - 2010 - CVM - Analista de Sistemas - prova 2) Uma fila é um tipo de lista linear em que: a) as inserções são realizadas em um extremo e as remoções no outro extremo. b) as inserções e remoções são realizadas em um mesmo extremo. c) podem ser realizadas apenas inserções. d) a inserção de um elemento requer a remoção de outro elemento. e) a ordem de saída não corresponde à ordem de entrada dos elementos. 00000000000 (CESPE - 2010 - DETRAN-ES - Analista de Sistemas) No armazenamento de dados pelo método FIFO (first in - first out), a estrutura de dados é representada por uma fila, em cuja posição final ocorrem inserções e, na inicial, retiradas. Prof. Diego Carvalho www.estrategiaconcursos.com.br 00000000000 - DEMO Pág. 87 de 92 Analista Judiciário do TRT/4ª Região (RS) Curso de Teoria e Exercícios Prof. Diego Carvalho – Aula 00 (CESPE - TRT - 5ª Região (BA) - Técnico Judiciário - Tecnologia da Informação) Entre alguns tipos de estrutura de dados, podem ser citados os vetores, as pilhas e as filas. (CESPE - 2004 – SES/PA – Analista de Sistemas) Uma estrutura mais geral que as pilhas e filas é o deque, em que as inserções, retiradas e acessos são permitidos em ambas as extremidades. – TCE/AC – Analista de Sistemas – D) Um deque (double ended 61. (CESPE queue) requer inserção e remoção no topo de uma lista e permite a implementação de filas com algum tipo de prioridade. A implementação de um deque, geralmente é realizada com a utilização de uma lista simplesmente encadeada. (FCC - 2007 – TRT/23 – Analista de Sistemas) Uma estrutura de dados com vocação de FIFO de duplo fim e que admite a rápida inserção e remoção em ambos os extremos é: a) b) c) d) e) uma pilha. uma splay tree. um deque. uma lista linear. uma árvore AVL. (CESPE - 2004 – PBV/RR - Analista de Sistemas) As filas com prioridade são listas lineares nas quais os elementos são pares da forma (qi, pi), em que q é o elemento do tipo base e p é uma prioridade. Elas possuem uma política de fila do tipo FIFO (first in first out) entre os elementos de mesma prioridade. 00000000000 64. (CESPE - 2004 – STJ – Analista de Sistemas) A seguir, está representada corretamente uma operação de retirada em uma fila de nome f. se f.começo = nil então erro {fila vazia} senão j f.começo.info (CESPE - 2012 - Banco da Amazônia - Técnico Científico - Administração de Dados) As operações de busca em uma árvore binária não a alteram, enquanto operações de inserção e remoção de nós provocam mudanças sistemáticas na árvore. Prof. Diego Carvalho www.estrategiaconcursos.com.br 00000000000 - DEMO Pág. 88 de 92 Analista Judiciário do TRT/4ª Região (RS) Curso de Teoria e Exercícios Prof. Diego Carvalho – Aula 00 (CESPE - 2012 - Banco da Amazônia - Técnico Científico - Administração de Dados) O tipo de dados árvore representa organizações hierárquicas entre dados. 67. (CESPE - 2010 - DETRAN-ES - Analista de Sistemas) Denomina-se árvore binária a que possui apenas dois nós. (FCC - 2012 - MPE-AP - Analista Ministerial - Tecnologia da Informação – A) A árvore é uma estrutura linear que permite representar uma relação de hierarquia. Ela possui um nó raiz e subárvores não vazias. (FCC - 2011 - TRT - 19ª Região (AL) - Técnico Judiciário - Tecnologia da Informação) Em uma árvore binária, todos os nós têm grau: a) 2. b) 0, 1 ou 2. c) divisível por 2. d) maior ou igual a 2. e) 0 ou 1. 70. (CETAP - 2010 - - - Analista de Sistemas - A) Uma árvore binária é aquela que tem como conteúdo somente valores binários. 71. (CETAP - 2010 - - - Analista de Sistemas - B) Uma árvore é composta por duas raízes, sendo uma principal e a outra secundária. 72. (CESPE - ANAC - Especialista em Regulação - Economia) Considerandose uma árvore binária completa até o nível 5, então a quantidade de folhas nesse nível será 24. 00000000000 73. (FUNCAB - 2010 - SEJUS-RO - Analista de Sistemas - II) Árvores são estruturas de dados estáticas com sua raiz representada no nível um. – ANAC - Analista de Sistemas) Uma árvore binária completa até 74. (CESPE o nível 10 tem 2.047 nós. 75. (CESPE - 2010 – TRE/MT – Analista de Sistemas – B) As listas, pilhas, filas e árvores são estruturas de dados que têm como principal característica a sequencialidade dos seus elementos. Prof. Diego Carvalho www.estrategiaconcursos.com.br 00000000000 - DEMO Pág. 89 de 92 Analista Judiciário do TRT/4ª Região (RS) Curso de Teoria e Exercícios Prof. Diego Carvalho – Aula 00 76. (CESPE - 2010 – TRE/MT - Analista de Sistemas – E) O uso de recursividade é totalmente inadequado na implementação de operações para manipular elementos de uma estrutura de dados do tipo árvore. (CESPE - 2011 – STM – Analista de Sistemas) Enquanto uma lista encadeada somente pode ser percorrida de um único modo, uma árvore binária pode ser percorrida de muitas maneiras diferentes. – Analista de Sistemas) Considerando que se deseje 78. (CESPE - 2013 – TRT/ efetuar uma pesquisa de um valor sobre a chave primária de uma tabela de um banco de dados com uma chave primária com um tipo de campo que receba um valor inteiro e que se possa fazer essa pesquisa utilizando-se a busca sequencial ou a busca binária, assinale a opção correta. a) O método de busca binária requer, no máximo, ln(n) comparações para determinar o elemento pesquisado, em que n é o número de registros. b) O método de busca binária será sempre mais rápido que o método de busca sequencial, independentemente de a tabela estar ordenada com base no elemento pesquisado. c) O método de busca sequencial requererá, no máximo, n² comparações para determinar o elemento pesquisado, em que n será o número de registros. d) O método de busca binária sempre efetuará menos comparações que o método de pesquisa sequencial. e) O método de busca sequencial efetuará menos comparações para encontrar o elemento pesquisado quando a tabela estiver ordenada em comparação à situação quando a tabela estiver desordenada. 00000000000 79. (ESAF - 2001 – BACEN – Analista de Sistemas Na pior hipótese, o número de comparações necessárias para pesquisar um elemento em um array de 2048 elementos pelo método de pesquisa binária será: a) b) c) d) e) 8 9 10 11 12 Prof. Diego Carvalho www.estrategiaconcursos.com.br 00000000000 - DEMO Pág. 90 de 92 Analista Judiciário do TRT/4ª Região (RS) Curso de Teoria e Exercícios Prof. Diego Carvalho – Aula 00 (CESPE - 2013 – TCE/RO – Analista de Sistemas Considere uma tabela de um banco de dados com chave primária e tipo de campo que receba um valor inteiro. Ao se efetuar uma pesquisa de um valor sobre a chave primária dessa tabela, o método de busca binária requer, no máximo, lg(n) comparações para localizar o elemento pesquisado, em que n é o número de registros. 81. (CESPE - 2010 - Banco da Amazônia - Técnico Científico - Tecnologia da Informação - Administração de Dados A pesquisa sequencial é aplicável em estruturas não ordenadas. (CESPE - 2012 - Banco da Amazônia - Técnico Científico - Administração de Dados) As colisões ocorrem na utilização de tabela hash porque várias chaves podem resultar na mesma posição. (CESPE - 2010 - Banco da Amazônia - Técnico Científico - Tecnologia da Informação - Administração de Dados) Ocorre o hashing quando não há o armazenamento de cada entrada de uma tabela em um específico endereço calculado a partir da aplicação de uma função chave da entrada. 84. (FCC - METRÔ- - alista Treinee - Análise de Sistemas) O objetivo de fazer uma busca rápida a partir de uma chave de pesquisa simples e obter o valor desejado é alcançado pela estrutura de dados especial denominada: a) array. b) lista. c) vetor. d) árvore binária. e) tabela de hashing. 00000000000 (CESPE - 2012 - Banco da Amazônia - Técnico Científico - Administração de Dados A busca que utiliza uma tabela hash realiza comparação das chaves para encontrar a posição do elemento que está sendo buscado. (CESPE - 2010 - DETRAN-ES - Analista de Sistemas No método de hashing, por meio de acesso sequencial, são utilizados tabelas e mapas para recuperar informações de endereço de arquivos de forma rápida e eficiente. Prof. Diego Carvalho www.estrategiaconcursos.com.br 00000000000 - DEMO Pág. 91 de 92 Analista Judiciário do TRT/4ª Região (RS) Curso de Teoria e Exercícios Prof. Diego Carvalho – Aula 00 1 E 11 E 21 C 31 E 41 E 51 E 61 E 71 E 81 C 2 B 12 C 22 C 32 E 42 B 52 E 62 C 72 E 82 C 3 A 13 E 23 E 33 A 43 C 53 E 63 C 73 E 83 E 4 C 14 C 24 E 34 C 44 C 54 E 64 E 74 C 84 E 5 C 15 C 25 C 35 E 45 E 55 C 65 C 75 E 85 E 6 D 16 E 26 E 36 E 46 E 56 A 66 C 76 E 86 E 7 B 17 C 27 E 37 E 47 C 57 A 67 E 77 C 87 - 8 E 18 C 28 E 38 E 48 C 58 C 68 E 78 A 88 - 9 E 19 E 29 D 39 E 49 E 59 C 69 B 79 D 89 - 10 D 20 C 30 E 40 D 50 E 60 C 70 E 80 C 90 - E aí, querem mais teoria? Mais exercícios? Tem muito mais! Essa é apenas a aula demonstrativa, o restante desta aula e as outras vêm em breve! Espero que vocês venham comigo... grande abraço ;) 00000000000 Prof. Diego Carvalho www.estrategiaconcursos.com.br 00000000000 - DEMO Pág. 92 de 92