Aula 00 - Estratégia Concursos

Propaganda
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
Download