Buscar

Curso de Informática para TRF - Teoria e Questões

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 95 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 95 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 95 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Aula 00 
Curso: Informática – Teoria e Questões 
comentadas p/ TRF 
Professor: Gustavo Cavalcante Aula 00 – Aula Demonstrativa 
Curso: Tecnologia da Informação 
Professor: Yuri do Carmo 
Curso: Tecnologia da Informação 
Teoria e Questões comentadas 
Prof. Yuri do Carmo 
 
Prof. Yuri do Carmo 2 de 95 
www.exponencialconcursos.com.br 
 
Olá, futuros servidores do TRF 3º Região. 
É com grande satisfação que inicio mais este trabalho aqui na equipe do 
Exponencial Concursos. 
Meu nome é Yuri do Carmo e sou servidor da Justiça Federal no Ceará 
(JFCE), atuando como Analista Judiciário (Especialidade 
Informática/Desenvolvimento), mas já estou aguardando a nomeação para o 
cargo de Auditor Fiscal da Receita Estadual – Tecnologia da Informação 
da SEFAZ-SC, no qual tive a felicidade de ser aprovado em 1º lugar! 
Antes de iniciarmos a aula, gostaria de contar um pouco da minha 
trajetória. Sou de Itapipoca, no interior do Ceará, onde fiz meu ensino 
fundamental. Em 2006, vim morar em Fortaleza, capital do Ceará, para fazer 
meu ensino médio no Instituto Federal do Ceará (IFCE), onde também concluí 
meu curso de Técnico em Informática. Em 2010, iniciei minha graduação em 
Ciência da Computação na Universidade Federal do Ceará (UFC), a qual eu 
concluí em 2014. 
 Iniciei minha trajetória no mundo dos concursos em 2013, quando 
prestei a prova para o cargo de Técnico em TI da Universidade Federal do 
Ceará. Apesar de ser minha primeira prova, dediquei-me bastante aos 
estudos e consegui ser aprovado em 1º lugar. Assumi lá em 2014 e fiquei 
aproximadamente um ano e meio no cargo. 
 Continuei estudando para cargos de nível superior e, em 2014, fiz as 
provas para o Cargo de Analista de Tecnologia da Informação da EBSERH e da 
DATAPREV, sendo aprovado em ambos em 2º lugar. Assumi na DATAPREV em 
2015 e fiquei 10 meses lá. 
Em 2015, fiz provas para o Tribunal de Contas do Estado do Ceará 
(TCE-CE), para os cargos de Técnico de Controle Externo (Auditoria de TI) e 
Analista de Controle Externo (Auditoria de TI). Fiquei em 1º lugar no cargo de 
Técnico e exerci durante três anos. Fiquei em 4º no cargo de Analista, mas 
infelizmente só convocaram até a 3º posição. Atualmente exerço o cargo de 
Analista Judiciário (Especialidade Informática/Desenvolvimento) na Justiça 
Federal do Ceará (JFCE). 
Em 2017 e 2018 também prestei várias provas para cargos de TI, as 
quais listo abaixo com a respectiva colocação: 
 TRT 7º região (5º lugar) 
 TRF 5º região (1º lugar) 
 STM (4º lugar) 
 TST (1º lugar) 
 CLDF (1º lugar) 
 SEF/SC (1º lugar) 
APRESENTAÇÃO 
Curso: Tecnologia da Informação 
Teoria e Questões comentadas 
Prof. Yuri do Carmo 
 
Prof. Yuri do Carmo 3 de 95 
www.exponencialconcursos.com.br 
Desde essas aprovações, resolvi aposentar a caneta das provas de 
concurso e iniciei um novo projeto: ajudar você a conseguir aprovações! Por 
meio de aulas como essa, no Exponencial Concursos, e nos serviços de 
coaching para concursos que ofereço, quero ajudar você a conquistar seus 
sonhos de aprovação! 
 Agora que vocês já me conhecem, temos a missão de oferecer para 
vocês este curso. Seguindo a didática do Exponencial Concursos, estudaremos 
os principais pontos da teoria, sempre tentando trazer o conteúdo de forma 
esquematizada para que você ganhe tempo na sua preparação para 
aprovação. 
Contem comigo nessa jornada! Estarei à disposição no Fórum tira-
dúvidas e por meio dos contatos disponíveis no perfil do professor 
http://bit.ly/profyuridocarmo. 
 
 Para dicas sobre concursos, acesse: 
 
Exponencial Concursos 
https://www.youtube.com/channel/UCr9rg5WOPmXvZgOfBl-HEuw 
 
@exponencial_concursos 
https://www.instagram.com/exponencial_concursos/?hl=pt-br 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
http://bit.ly/profyuridocarmo
https://www.youtube.com/channel/UCr9rg5WOPmXvZgOfBl-HEuw
https://www.instagram.com/exponencial_concursos/?hl=pt-br
https://www.youtube.com/channel/UCr9rg5WOPmXvZgOfBl-HEuw
https://www.instagram.com/exponencial_concursos/?hl=pt-br
https://www.youtube.com/channel/UCr9rg5WOPmXvZgOfBl-HEuw
https://www.instagram.com/exponencial_concursos/?hl=pt-br
Curso: Tecnologia da Informação 
Teoria e Questões comentadas 
Prof. Yuri do Carmo 
 
Prof. Yuri do Carmo 4 de 95 
www.exponencialconcursos.com.br 
 
Os temas deste curso foram selecionados com base no último edital do 
TRF 3º Região para o cargo de Analista Judiciário – Especialidade 
Informática. 
 
Aula Conteúdo 
00 Fundamentos da linguagem: Sintaxe básica. Palavras-
chave. Estrutura e construções básicas de um programa. 
Tipos primitivos de dados. Declaração e inicialização de 
variáveis. Categorias de operadores e precedência. 
Controle de fluxo de programas e repetição. 
01 Fundamentos da linguagem: Compilação e execução de 
programas. Utilização de literais e strings. Definição de 
classes, métodos e variáveis. Utilização de 
encapsulamento. Utilização de packages. Sobrecarga de 
métodos. Utilização e implementação de bibliotecas e 
componentes. Administração de exceções. Acesso a banco 
de dados. 
02 PHP. 
03 HTML, Desenvolvimento de aplicações HTML. 
04 XML, Conceitos, definição, utilização e escrita XML - 
criação e declaração, definições de elementos e atributos. 
05 JAVA com orientação a objetos. 
06 JSP, JSF. 
07 Hibernate. 
08 Arcabouços de desenvolvimento .Net 
09 ASP .Net 
10 C# 
11 Noções básicas do protocolo http. Aplicação e utilização 
de servidores Web. 
*Confira o cronograma de liberação das aulas no site do Exponencial, 
na página do curso. 
Caros alunos, iremos focar as questões comentadas na banca FCC, já 
que ela foi a última a realizar esse certame, mas também usaremos outras 
bancas para complementar o estudo, se necessário. 
Sugiro o seguinte roteiro para você aproveitar melhor esse curso e 
potencializar suas chances de aprovação: 
 Primeiro dia 
o Leia o PDF da Aula 00. 
Curso: Tecnologia da Informação 
Teoria e Questões comentadas 
Prof. Yuri do Carmo 
 
Prof. Yuri do Carmo 5 de 95 
www.exponencialconcursos.com.br 
o Não resolva todos os exercícios propostos, resolva apenas os que 
estão no corpo da aula e talvez mais uns 5 ou 10 do final. 
 Uma semana depois 
o Resolva os demais exercícios da Aula 00. 
o Revise a Aula 00 através dos nossos esquemas (Risco 
Exponencial). 
o Leia o PDF da Aula 01. 
 Duas semanas depois 
o Resolva alguns exercícios (10 a 20) do caderno da Aula 00. 
o Resolva os demais exercícios da Aula 01. 
o Revise a Aula 01 através dos nossos esquemas (Risco 
Exponencial). 
o Leia o PDF da Aula 02. 
 Três semanas depois 
o Resolva alguns exercícios (10) do caderno da Aula 00. 
o Resolva alguns exercícios (10 a 20) do caderno da Aula 01. 
o Resolva os demais exercícios da Aula 02. 
o Revise a Aula 02 através dos nossos esquemas (Risco 
Exponencial). 
o Leia o PDF da Aula 03. 
 E assim sucessivamente. 
 
Logicamente, isto é um roteiro básico que pode ser adaptado. Se você 
estuda de outra forma ou mesmo possui um programa de Coaching 
(recomendo http://bit.ly/coachingconcursos), fique tranquilo, pois irá 
aproveitar bastante as nossas aulas. 
Vamos buscar esses pontos rumo à aprovação! 
Bons estudos! 
Professor Yuri do Carmo 
 
 
 
 
http://bit.ly/coachingconcursos
Curso: Tecnologia da Informação 
Teoria e Questões comentadas 
Prof. Yuri do Carmo 
 
Prof. Yuri do Carmo 6 de 95 
www.exponencialconcursos.com.br 
 
 
ASSUNTOS PÁGINA 
1. LÓGICA DE PROGRAMAÇÃO ............................................................. 7 
1.1 Introdução ..................................................................................... 7 
1.2 Variáveis e Constantes .................................................................. 13 
1.3 Operadores .................................................................................. 16 
1.4 Estruturas de Controle ..................................................................19 
1.5 Procedimentos e Funções .............................................................. 30 
1.6 Recursividade .............................................................................. 33 
1.7 Vetores ....................................................................................... 36 
2. QUESTÕES COMENTADAS ............................................................. 40 
3. RISCO EXPONENCIAL .................................................................... 66 
4. LISTAS DE EXERCÍCIOS ................................................................ 76 
5. GABARITO ................................................................................... 95 
6. REFERÊNCIAS .............................................................................. 95 
 
 
Para facilitar sua referência, abaixo listamos as esquematizações desta aula: 
Esquema 1 - Conceitos introdutórios de Lógica de Programação ........................................... 9 
Esquema 2 - Os 3 componentes fundamentais dos algoritmos ............................................. 10 
Esquema 3 - Símbolos do Diagrama de Blocos ................................................................... 11 
Esquema 4 - Variáveis, constantes e seus tipos ................................................................. 15 
Esquema 5 - Operadores aritméticos ................................................................................ 16 
Esquema 6 - Operadores relacionais ................................................................................. 16 
Esquema 7 - Operadores lógicos ...................................................................................... 17 
Esquema 8 - Operadores e seus tipos ............................................................................... 18 
Esquema 9 - Sintaxe da estrutura "Se...Então..." ............................................................... 19 
Esquema 10 - Sintaxe da estrutura "Se...Então...Senão..." ................................................. 19 
Esquema 11 - Sintaxe da estrutura “Selecione...Caso...”..................................................... 23 
Esquema 12 - Sintaxe da estrutura "Enquanto...Faça..." ..................................................... 27 
Esquema 13 - Sintaxe da estrutura "Repita...Até... " .......................................................... 27 
Esquema 14 - Sintaxe da estrutura "Para...Faça..." ............................................................ 27 
Esquema 15 - Funções e procedimentos ........................................................................... 32 
Esquema 16 - Funções Fatorial e Fibonacci implementadas com recursividade ....................... 33 
Esquema 17 - Exemplo de um vetor de inteiros, de nome x, com 7 posições e índices de 0 a 636 
Esquema 18 - Sintaxe de declaração de vetores e um exemplo ........................................... 36 
 
Aula 00 – Lógica de Programação. 
file:///C:/Users/Yuri%20do%20Carmo/Documents/Exponencial/Cursos/Curso%20SEFAZ-BA%20(FCC)/Aula%20-%20TI%20FCC%20-%20Lógica%20de%20Programação%20-%20passar%20conteudo%20do%20pdf%20p%20cá.docx%23_Toc7350885
file:///C:/Users/Yuri%20do%20Carmo/Documents/Exponencial/Cursos/Curso%20SEFAZ-BA%20(FCC)/Aula%20-%20TI%20FCC%20-%20Lógica%20de%20Programação%20-%20passar%20conteudo%20do%20pdf%20p%20cá.docx%23_Toc7350886
file:///C:/Users/Yuri%20do%20Carmo/Documents/Exponencial/Cursos/Curso%20SEFAZ-BA%20(FCC)/Aula%20-%20TI%20FCC%20-%20Lógica%20de%20Programação%20-%20passar%20conteudo%20do%20pdf%20p%20cá.docx%23_Toc7350887
file:///C:/Users/Yuri%20do%20Carmo/Documents/Exponencial/Cursos/Curso%20SEFAZ-BA%20(FCC)/Aula%20-%20TI%20FCC%20-%20Lógica%20de%20Programação%20-%20passar%20conteudo%20do%20pdf%20p%20cá.docx%23_Toc7350888
file:///C:/Users/Yuri%20do%20Carmo/Documents/Exponencial/Cursos/Curso%20SEFAZ-BA%20(FCC)/Aula%20-%20TI%20FCC%20-%20Lógica%20de%20Programação%20-%20passar%20conteudo%20do%20pdf%20p%20cá.docx%23_Toc7350892
file:///C:/Users/Yuri%20do%20Carmo/Documents/Exponencial/Cursos/Curso%20SEFAZ-BA%20(FCC)/Aula%20-%20TI%20FCC%20-%20Lógica%20de%20Programação%20-%20passar%20conteudo%20do%20pdf%20p%20cá.docx%23_Toc7350893
file:///C:/Users/Yuri%20do%20Carmo/Documents/Exponencial/Cursos/Curso%20SEFAZ-BA%20(FCC)/Aula%20-%20TI%20FCC%20-%20Lógica%20de%20Programação%20-%20passar%20conteudo%20do%20pdf%20p%20cá.docx%23_Toc7350894
file:///C:/Users/Yuri%20do%20Carmo/Documents/Exponencial/Cursos/Curso%20SEFAZ-BA%20(FCC)/Aula%20-%20TI%20FCC%20-%20Lógica%20de%20Programação%20-%20passar%20conteudo%20do%20pdf%20p%20cá.docx%23_Toc7350895
file:///C:/Users/Yuri%20do%20Carmo/Documents/Exponencial/Cursos/Curso%20SEFAZ-BA%20(FCC)/Aula%20-%20TI%20FCC%20-%20Lógica%20de%20Programação%20-%20passar%20conteudo%20do%20pdf%20p%20cá.docx%23_Toc7350896
file:///C:/Users/Yuri%20do%20Carmo/Documents/Exponencial/Cursos/Curso%20SEFAZ-BA%20(FCC)/Aula%20-%20TI%20FCC%20-%20Lógica%20de%20Programação%20-%20passar%20conteudo%20do%20pdf%20p%20cá.docx%23_Toc7350897
file:///C:/Users/Yuri%20do%20Carmo/Documents/Exponencial/Cursos/Curso%20SEFAZ-BA%20(FCC)/Aula%20-%20TI%20FCC%20-%20Lógica%20de%20Programação%20-%20passar%20conteudo%20do%20pdf%20p%20cá.docx%23_Toc7350898
file:///C:/Users/Yuri%20do%20Carmo/Documents/Exponencial/Cursos/Curso%20SEFAZ-BA%20(FCC)/Aula%20-%20TI%20FCC%20-%20Lógica%20de%20Programação%20-%20passar%20conteudo%20do%20pdf%20p%20cá.docx%23_Toc7350900
file:///C:/Users/Yuri%20do%20Carmo/Documents/Exponencial/Cursos/Curso%20SEFAZ-BA%20(FCC)/Aula%20-%20TI%20FCC%20-%20Lógica%20de%20Programação%20-%20passar%20conteudo%20do%20pdf%20p%20cá.docx%23_Toc7350902
Curso: Tecnologia da Informação 
Teoria e Questões comentadas 
Prof. Yuri do Carmo 
 
Prof. Yuri do Carmo 7 de 95 
www.exponencialconcursos.com.br 
1. LÓGICA DE PROGRAMAÇÃO 
 
1.1 Introdução 
Primeiramente, precisamos entender o que é lógica. Ela está presente 
no nosso dia-a-dia (quando pensamos, falamos e escrevemos), pois para 
realizar essas ações necessitamos que os pensamentos estejam ordenados 
de modo a alcançar o resultado esperado. A lógica consiste na 
organização e explicação de um pensamento. 
Já a Lógica de Programação é a técnica de encadear instruções 
em uma sequência organizada para atingir determinado objetivo. Esses 
pensamentos podem ser descritos como uma sequência de instruções, as 
quais devem ser seguidas para se atingir o objetivo. Na lógica de 
programação, instrução é a informação que indica a um computador uma 
ação elementar a executar. 
Utilizamos a lógica de programação para construirmos algoritmos que 
resolvem problemas. Um algoritmo é formalmente uma sequência finita de 
passos que levam a execução de uma tarefa. Uma receita culinária é um 
algoritmo, já que define uma sequência de instruções que objetiva uma meta 
específica, no caso, o preparo de um prato. Pode haver mais de um algoritmo 
para resolver um problema. 
Assim como os humanos usam uma linguagem (português, inglês, etc) 
para se comunicarem, também usamos uma linguagem (de 
programação) para nos comunicarmos com os computadores. Os 
programas/softwares de computador nada mais são do que representações de 
algoritmos escritos numa linguagem de programação (C, C++, Java, C#, 
Python, Ruby, etc) e que são interpretados e executados por uma máquina, o 
computador. 
Algoritmos devem ser fáceis de interpretar e de escrever/codificar, 
sendo um intermediário entre a linguagem falada e a linguagem de 
programação. Para isso, eles podem ser descritos em uma linguagem 
chamada pseudocódigo, para abstrair os detalhes de sintaxe das 
linguagens de programação e serem independentes delas. Utilizando 
pseudocódigo, não existe um formalismo rígido de como deve ser escrito o 
algoritmo, ao contrário de uma linguagem de programação. 
 
 
 
 
 
 
Curso: Tecnologia da Informação 
Teoria e Questões comentadas 
Prof. Yuri do Carmo 
 
Prof. Yuri do Carmo 8 de 95 
www.exponencialconcursos.com.br 
 
EXEMPLO 
Abaixo temos um exemplo de um algoritmo em pseudocódigoque 
recebe dois números inteiros como entrada e retorna o resultado da 
multiplicação deles. Nas próximas seções veremos os componentes de um 
algoritmo (variáveis, estruturas de controle, etc). O símbolo  representa a 
atribuição de um valor a uma variável. 
Algoritmo Multiplicação de números positivos 
Declaração de variáveis 
 numero1, numero2, resultado, contador: Inteiro 
Início 
 leia(numero1) 
 leia(numero2) 
 resultado  0 
 contador  0 
 Enquanto contador < numero2 Faça 
 resultado  resultado + numero1 
 contador  contador + 1 
 Fim-Enquanto 
 escreva(resultado) 
Fim 
 
 
Curso: Tecnologia da Informação 
Teoria e Questões comentadas 
Prof. Yuri do Carmo 
 
Prof. Yuri do Carmo 9 de 95 
www.exponencialconcursos.com.br 
 
 
 
 
 
 
 
 
Lógica 
•Pensamentos ordenados de modo a alcançar um resultado esperado 
•Organização e explicação de um pensamento 
Lógica de 
Programação 
•Técnica de encadear instruções em uma sequência organizada para atingir 
determinado objetivo 
•Instrução indica uma ação elementar para o computador executar 
Linguagem de 
programação 
•Linguagem usada para os humanos se comunicarem com o computador 
Algoritmos 
•Sequencia finita de passos que levam a execução de uma tarefa 
•Intermediário entre a linguagem falada e a linguagem de programação 
Pseudocódigo 
•Forma de descrever algoritmos 
•Abstrai detalhes de sintaxe das linguagens de programação 
•Baixo formalismo 
Esquema 1 - Conceitos introdutórios de Lógica de Programação 
Curso: Tecnologia da Informação 
Teoria e Questões comentadas 
Prof. Yuri do Carmo 
 
Prof. Yuri do Carmo 10 de 95 
www.exponencialconcursos.com.br 
Um algoritmo possui três componentes fundamentais e 
sequenciais: ENTRADA  PROCESSAMENTO  SAÍDA. A ENTRADA são os 
dados que devem ser lidos ou fornecidos pelo usuário. O 
PROCESSAMENTO são os procedimentos utilizados para chegar ao 
resultado final, os cálculos em si, o que inclui a manipulação dos dados 
de entrada a fim de se gerar uma resposta (um resultado). A SAÍDA são os 
dados já processados, os resultados do processamento. No exemplo acima, 
temos: 
 ENTRADA: numero1 e numero2 
 PROCESSAMENTO: instruções entre Início e Fim 
 SAÍDA: resultado 
 
 
 
 
 
 
 
 
 
 
 
 
Entrada 
•Dados lidos ou 
fornecidos pelo 
usuário 
Processamento 
•Procedimentos 
utilizados para 
chegar ao resultado; 
cálculos; 
manipulaçao de 
dados 
Saída 
•Resultados do 
processamento 
Esquema 2 - Os 3 componentes fundamentais dos algoritmos 
Curso: Tecnologia da Informação 
Teoria e Questões comentadas 
Prof. Yuri do Carmo 
 
Prof. Yuri do Carmo 11 de 95 
www.exponencialconcursos.com.br 
Os algoritmos também podem ser representados por meio de um 
diagrama de bloco (ou fluxograma), o qual é uma forma gráfica 
padronizada e eficaz para representar os passos lógicos de um determinado 
processamento. 
Com esse diagrama, podemos definir uma sequência de símbolos, 
com significado bem definido. Sua principal função é a de facilitar a 
visualização dos passos de um processamento. 
Existem diversos símbolos em um diagrama de bloco. Vejamos alguns 
deles: 
 
 
 
 
 
 
 
 
 
 
 
 
 
Esquema 3 - Símbolos do Diagrama de Blocos 
Curso: Tecnologia da Informação 
Teoria e Questões comentadas 
Prof. Yuri do Carmo 
 
Prof. Yuri do Carmo 12 de 95 
www.exponencialconcursos.com.br 
 
 
EXEMPLO 
Abaixo temos um exemplo de um algoritmo representado por meio de 
um diagrama de blocos. Esse algoritmo recebe quatro números como entrada, 
calcula a média aritmética deles e retorna o resultado. 
 
 
Nas próximas seções veremos os principais conceitos que podem 
compor um algoritmo: variáveis, operadores, estruturas de controle, 
procedimentos, funções e vetores. 
 
 
 
Curso: Tecnologia da Informação 
Teoria e Questões comentadas 
Prof. Yuri do Carmo 
 
Prof. Yuri do Carmo 13 de 95 
www.exponencialconcursos.com.br 
1.2 Variáveis e Constantes 
Variáveis e constantes são os elementos básicos que um 
algoritmo/programa manipula. Na prática, durante a execução de um 
programa, uma variável representa um espaço reservado na memória 
do computador para armazenar um tipo de dado determinado. Variáveis 
devem receber nomes para poderem ser referenciadas e modificadas quando 
necessário, sendo que elas só podem armazenar um valor a cada 
instante. Um programa deve conter declarações que especificam de que tipo 
são as variáveis que ele utilizará e, às vezes, um valor inicial. Assim, em cada 
instante, cada variável possui seu tipo, seu nome e seu conteúdo. Os 
dados de entrada e saída de um algoritmo são armazenados em variáveis e, 
durante a fase de processamento, expressões combinam variáveis e 
constantes para calcular novos valores. 
Constante é um determinado valor fixo que não se modifica ao 
longo do tempo, durante a execução de um programa. O valor de uma 
variável pode ser alterado ao longo de seu algoritmo, mas os valores das 
constantes não se alteram. 
As variáveis e as constantes podem ser basicamente dos seguintes 
tipos: 
 Tipo Numérico: armazenam números, que posteriormente 
poderão ser utilizados para cálculos. São subclassificadas 
como Inteiras ou Reais (valores com ponto decimal). Ex: se 
precisarmos de uma variável para armazenar o número de filhos 
de um funcionário, o tipo ideal para essa variável seria Inteiro. Já 
para armazenar o salário de funcionários, o tipo ideal seria Real; 
 Tipo Caractere: armazenam um único caractere, que pode 
ser uma letra ou um símbolo. Ex: para identificar o sexo do 
indivíduo, armazenaremos apenas o caractere „F‟ ou „M‟); 
 Tipo Cadeia (caracteres ou texto): armazenam uma 
sequência de caracteres, ou seja, uma palavra, uma 
mensagem, um nome. Ex: para armazenar o nome de uma 
pessoa, esse seria o tipo ideal; 
 Tipo Lógico: armazenam somente dados lógicos, os quais 
podem ser Verdadeiro ou Falso. Ex: armazenar o status de 
ligado de um sensor: se ligado, armazenar o valor Verdadeiro. Se 
não, Falso. 
 
 
 
 
 
Curso: Tecnologia da Informação 
Teoria e Questões comentadas 
Prof. Yuri do Carmo 
 
Prof. Yuri do Carmo 14 de 95 
www.exponencialconcursos.com.br 
EXEMPLO 
No algoritmo abaixo, temos inicialmente a declaração de quatro 
variáveis, cada uma de um tipo diferente. Em seguida, atribui-se um valor do 
tipo apropriado para cada variável e, após isso, imprime cada um dos valores 
das variáveis. 
 
Algoritmo "Teste de Variável" 
Declaração das variáveis 
nome : Texto 
idade : Inteiro 
sexo : Caractere 
salario : Real 
Início 
nome  “João” 
idade  27 
sexo  ‘M’ 
salario  6300.50 
imprimir(nome, idade, sexo, salario) 
Fim 
Resultado (saída): João 27 M 6300.50 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Curso: Tecnologia da Informação 
Teoria e Questões comentadas 
Prof. Yuri do Carmo 
 
Prof. Yuri do Carmo 15 de 95 
www.exponencialconcursos.com.br 
 
 
 
 
• Espaço reservado na memória do 
computador; possui tipo, nome e 
conteúdo (valor); podem mudar o 
valor durante execução do 
programa. 
Variáveis 
• Valor fixo, não se modifica ao longo 
da execução do programa. 
Constantes 
• Armazena números; utilizadas para 
cálculos; 
• Inteiro ou Real. 
Tipo Numérico 
• Armazena um único caractere; 
• Letra ou símbolo. 
Tipo Caractere 
• Armazena uma sequência de 
caracteres; 
• Palavra; mensagem; nome. 
Tipo Cadeia (texto) 
• Armazena somente dados lógicos; 
Verdadeiro ou Falso; 
• Uma variável desse tipo também é 
chamada de variável booleana. 
Tipo Lógico 
Esquema 4 - Variáveis, constantes e seus tipos 
Curso: Tecnologia da Informação 
Teoria e Questões comentadas 
Prof. Yuri do Carmo 
 
Prof. Yuri do Carmo 16 de 95 
www.exponencialconcursos.com.br 
1.3 Operadores 
Os operadores são símbolos que representam operações para 
fazer cálculos, incrementos, comparaçõese avaliações dentro do 
computador. A representação simbólica de alguns operadores muda de acordo 
com a linguagem, mas a essência é a mesma. Todas as linguagens de 
programação usam operadores. Eles dividem-se em operadores Aritméticos, 
Relacionais e Lógicos. 
Os operadores aritméticos são os utilizados para obter resultados 
numéricos, representando as operações básicas da matemática. Os 
símbolos para os operadores aritméticos são: 
 
Operador Símbolo Exemplo Resultado 
Soma/Adição + 2 + 2 4 
Subtração - 4 - 1 3 
Multiplicação * 2 * 3 6 
Divisão / 5 / 2 2.5 
Módulo1 % ou mod 5 mod 2 1 
Quociente2 div 5 div 2 2 
Exponenciação ^ ou ** 5^2 25 
Incremento ++ 5++ 6 
Decremento -- 5-- 4 
Esquema 5 - Operadores aritméticos 
Os operadores relacionais são utilizados para comparar dois 
valores de um mesmo tipo. Os valores a serem comparados podem ser 
variáveis ou constantes. Estes operadores sempre retornam valores lógicos 
(verdadeiro ou falso). Os símbolos para os operadores relacionais são: 
 
Operador Símbolo Exemplo Resultado 
Igual = ou == 2 = 1 Falso 
Maior que > 2 > 1 Verdadeiro 
Menor que < 2 < 1 Falso 
Maior ou igual a >= 2 >= 1 Verdadeiro 
Menor ou igual a <= 2 <= 1 Falso 
Diferente != ou <> 2 != 1 Verdadeiro 
Esquema 6 - Operadores relacionais 
 
 
 
 
 
1
 Resto da divisão inteira, ou seja, divisão sem casas decimais 
2
 Quociente/resultado da divisão inteira 
Curso: Tecnologia da Informação 
Teoria e Questões comentadas 
Prof. Yuri do Carmo 
 
Prof. Yuri do Carmo 17 de 95 
www.exponencialconcursos.com.br 
Os operadores lógicos servem para combinar resultados de 
expressões, retornando se o resultado final é verdadeiro ou falso. Os 
principais operadores lógicos são: 
 
Uma expressão AND (E) é verdadeira se todas as condições forem 
verdadeiras. Já uma expressão OR (OU) é verdadeira se pelo menos 
uma condição for verdadeira. Uma expressão NOT (NÃO) inverte o valor 
da expressão ou condição, se verdadeira inverte para falsa e vice-versa. 
 
 
 
 
 
 
 
 
Operador Símbolo Exemplo Resultado 
E lógico E ou AND 2>1 E 2<3 Verdadeiro 
OU lógico OU ou OR 2=1 OU 2<1 Falso 
Negação NÃO, NOT ou ~ Não Falso Verdadeiro 
Esquema 7 - Operadores lógicos 
Curso: Tecnologia da Informação 
Teoria e Questões comentadas 
Prof. Yuri do Carmo 
 
Prof. Yuri do Carmo 18 de 95 
www.exponencialconcursos.com.br 
 
 
 
•Símbolos que representam operações 
•Cálculos, incrementos, comparações e avaliações 
•Tipos: Aritméticos, Relacionais e Lógicos 
Operadores 
•Utilizados para obter resultados numéricos 
•Operações básicas da matemática 
Operadores Aritméticos 
•Utilizados para comparar dois valores de um mesmo tipo 
•Retornam valores lógicos (verdadeiro ou falso) 
Operadores Relacionais 
•Utilizados para combinar resultados de expressões, retornando se o 
resultado final é verdadeiro ou falso 
•E (AND): verdadeiro se todos os operandos forem verdadeiros 
•OU (OR): verdadeiro se pelo menos um operando for verdadeiro 
•NÃO (NOT): inverte o valor lógico da expressão/condição 
Operadores Lógicos 
Esquema 8 - Operadores e seus tipos 
Curso: Tecnologia da Informação 
Teoria e Questões comentadas 
Prof. Yuri do Carmo 
 
Prof. Yuri do Carmo 19 de 95 
www.exponencialconcursos.com.br 
1.4 Estruturas de Controle 
Durante o andamento de um algoritmo, frequentemente precisamos 
tomar decisões que alteram a ordem sequencial de execução do 
algoritmo. Essas decisões interferem diretamente no andamento do 
programa. Para fazer isso, utilizamos as estruturas de controle. Elas se 
dividem em basicamente dois tipos: estruturas de Decisão (ou Seleção ou 
Desvio) e estruturas de Repetição. 
 
Estruturas de Seleção/Decisão/Desvio 
Os comandos de seleção são técnicas de programação que conduzem 
a estruturas de programas que não são totalmente sequenciais. Elas 
permitem a escolha de um grupo de ações a ser executado quando 
determinadas condições, representadas por expressões lógicas, são 
ou não satisfeitas. Com elas, pode-se fazer com que o programa proceda de 
uma ou outra maneira, de acordo com as decisões lógicas tomadas em função 
dos dados ou resultados anteriores. As principais estruturas de decisão são: 
“Se Então”, “Se Então Senão” e “Selecione...Caso...”. Os seus 
equivalentes em inglês são, respectivamente: “IF...THEN...”, 
“IF...THEN...ELSE...” e “SELECT...CASE...”. 
A sintaxe3 da estrutura “Se Então” é exibida a seguir: 
 
SE <expressão lógica> 
ENTÃO 
<bloco de instruções verdade> 
FIM SE; 
 
A sintaxe da estrutura “Se Então Senão” é bem semelhante a 
anterior, porém adiciona-se o bloco “Senão”: 
SE <expressão lógica> 
ENTÃO 
<bloco de instruções verdade> 
SENÃO 
<bloco de instruções falso> 
FIM SE; 
 
3
 Essas sintaxes não são rígidas, então dependendo da banca, elas podem ser apresentadas ligeiramente 
diferentes ou, por exemplo, em inglês, mas a ideia é sempre a mesma. 
Esquema 9 - Sintaxe da estrutura "Se...Então..." 
Esquema 10 - Sintaxe da estrutura "Se...Então...Senão..." 
Curso: Tecnologia da Informação 
Teoria e Questões comentadas 
Prof. Yuri do Carmo 
 
Prof. Yuri do Carmo 20 de 95 
www.exponencialconcursos.com.br 
A estrutura de decisão “Se Então” vem acompanhada de um comando, 
ou seja, se determinada condição for satisfeita pelo comando “Se”, 
então será executado determinado (bloco de) comando (uma ou mais 
instruções). A estrutura de decisão “Se Então Senão” funciona exatamente 
como a estrutura “Se”, com apenas uma diferença: na “Se Então” somente 
podemos executar comandos caso a condição seja verdadeira, já com a “Se 
Então Senão” um (bloco de) comando será executado independente da 
condição, pois caso a condição seja “verdadeira” o comando da 
condição será executado, caso contrário o comando da condição 
“falsa” (bloco “Senão”) será executado. Além disso, essas estruturas de 
decisão/seleção também podem estar aninhadas uma dentro da outra. 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Curso: Tecnologia da Informação 
Teoria e Questões comentadas 
Prof. Yuri do Carmo 
 
Prof. Yuri do Carmo 21 de 95 
www.exponencialconcursos.com.br 
EXEMPLO 
Vejamos abaixo um trecho de algoritmo que, a partir da nota média de 
um aluno, informa se ele foi aprovado, reprovado ou se precisa fazer outra 
avaliação. Inicialmente é apresentado o diagrama de blocos do algoritmo, em 
seguida é mostrado o código desse algoritmo com as estruturas de controle 
“Se Então Senão” aninhadas. 
 
 
... 
SE MEDIA >= 5 ENTÃO 
SE MEDIA >= 7.0 ENTÃO 
Imprime(“Aluno APROVADO”) 
SENÃO 
Imprime(“Aluno Necessita fazer outra Avaliação) 
FIM SE 
SENÃO 
Imprime(“Aluno REPROVADO”) 
FIM SE 
... 
Curso: Tecnologia da Informação 
Teoria e Questões comentadas 
Prof. Yuri do Carmo 
 
Prof. Yuri do Carmo 22 de 95 
www.exponencialconcursos.com.br 
1- (FCC - 2018 - SABESP - Analista de Gestão - 
Sistemas) De acordo com dados da SABESP, um pequeno buraco de 2 
milímetros no encanamento desperdiça 3,2 mil litros de água em um dia. Um 
Analista escreveu o algoritmo em pseudocódigo abaixo para calcular o 
desperdício de água em função de buracos em encanamentos. 
 
O comando que preenche corretamente a lacuna 
a) I é: (largburaco > 0 ou dias > 0) 
b) I é: (largburaco > 0 e desperdicio > 0) 
c) II é: desperdicio ← (largburaco/2.0) * 3.2 * dias 
d) II é: desperdicio ← desperdicio + (largburaco/2.0) * 3.2 
e) II é: desperdicio ← (largburaco/3.2) * 2.0 * dias 
Resolução: 
Questão aparentemente simples, mas que exige atenção do candidato para 
que não caia em pegadinhas. O melhor a fazer é eliminar alternativas com 
segurança. Note que a lacuna I deve conter a condição do comando “se”, o 
que é confirmado quando notamos as respostas das alternativas (a) e (b), as 
quais trazem expressõescondicionais que devem resultar em verdadeiro ou 
falso. Como o comando “senão” associado ao “se” imprime “Dados inválidos”, 
então devemos supor que o comando “se” está testando se os dados de 
entrada são válidos. Os dados de entrada são “largburaco” e “dias”. Assim, já 
podemos eliminar a letra (b), pois a variável “desperdicio” é um dado de 
saída, que deve ser calculado dentro do “se”. O item (a) estaria certo se, em 
vez de um “ou”, tivesse o operador lógico “e”. Assim, restam-nos as letras (c), 
(d) e (e), as quais representam o cálculo do valor do desperdício de água. 
Aqui, basicamente devemos fazer uma regra de três composta para 
deduzirmos qual a fórmula correta. Vejamos: 
 
Curso: Tecnologia da Informação 
Teoria e Questões comentadas 
Prof. Yuri do Carmo 
 
Prof. Yuri do Carmo 23 de 95 
www.exponencialconcursos.com.br 
Desperdício(mil litros) Largura do Buraco Dias(quantidade) 
3,2 mil L 2mm 1 
desperdicio largburaco dias 
As grandezas são diretamente proporcionais (aumentando a largura do 
buraco, aumenta-se o desperdício; e aumentando a quantidade de dias, 
aumenta-se o desperdício também). Então ficamos com a equação: 
 3,2 = 2 * 1 
 desperdício largburaco dias 
Obtemos, portanto, a seguinte fórmula para o desperdício: 
desperdicio  (3,2 * largburaco * dias) / 2 
Gabarito: Letra C. 
 
 
A estrutura de decisão “Selecione...Caso...” (ou “Escolha...Caso...”) é 
utilizada para testar, na condição, uma expressão ou variável, 
comparando-se, então, o resultado obtido no teste com os valores 
fornecidos em cada cláusula “Caso”. 
A sintaxe dessa estrutura é: 
 
SELECIONE ( <variável> ) 
CASO <primeiro valor> FAÇA 
<comando caso a variável seja igual ao primeiro valor> 
CASO <segundo valor> FAÇA 
<comando caso a variável seja igual ao segundo valor> 
 ... 
[SENÃO FAÇA] 
<comando caso a variável não seja igual a nenhum dos valores anteriores> 
FIM SELECIONE 
 
 
 
 
 
 
Esquema 11 - Sintaxe da estrutura “Selecione...Caso...” 
Curso: Tecnologia da Informação 
Teoria e Questões comentadas 
Prof. Yuri do Carmo 
 
Prof. Yuri do Carmo 24 de 95 
www.exponencialconcursos.com.br 
EXEMPLO 
Vejamos abaixo um trecho de código utilizando a estrutura 
“Selecione...Caso...”. Ele simula uma calculadora simples, na qual o usuário 
digita os dois operandos e o símbolo da operação (+, -, * ou /) e o algoritmo 
imprime o resultado. 
 
algoritmo "CalculadoraBasica " 
numero1 : REAL 
numero2 : REAL 
operacao : CARACTERE 
resultado : REAL 
inicio 
ESCREVA ("Digite o primeiro número: ") 
LEIA (numero1) 
ESCREVA ("Digite a operação: ") 
LEIA (operacao) 
ESCREVA ("Digite o segundo número: ") 
LEIA (numero2) 
SELECIONE ( operação ) 
CASO ‘+’ FAÇA 
resultado  numero1 + numero2 
CASO ‘-‘ FAÇA 
resultado  numero1 - numero2 
CASO ‘*’ FAÇA 
resultado  numero1 * numero2 
CASO ‘/’ FAÇA 
resultado  numero1 / numero2 
FIM_SELECIONE 
ESCREVA ("Resultado: ", resultado) 
fimalgoritmo 
 
 
 
 
 
Curso: Tecnologia da Informação 
Teoria e Questões comentadas 
Prof. Yuri do Carmo 
 
Prof. Yuri do Carmo 25 de 95 
www.exponencialconcursos.com.br 
2- (FCC - 2015 - DPE-SP - Programador) Considere o 
algoritmo em pseudocódigo no qual DIV calcula o quociente da divisão inteira 
e MOD o resto da divisão inteira: 
 
O algoritmo em pseudocódigo acima 
a) garante que o valor de entrada seja maior ou igual a 8 para que seja 
possível dividir a taxa por 5 e por 3. 
b) para o valor inicial da taxa = 22 finaliza com cinco= 2 e tres=4. 
c) determina o maior número de 5 e de 3 unidades cuja soma dá o valor da 
taxa. 
d) para o valor inicial da taxa = 17 finaliza com cinco= 3 e tres=2. 
e) sempre finaliza com valores da variável cinco maiores ou igual a 1, mas a 
variável tres pode ter valor 0. 
Resolução: 
Vamos analisar cada uma das alternativas. Para algumas delas, precisamos 
“executar” o algoritmo mentalmente. Em alguns casos, é aconselhável fazer 
uma tabela na qual cada coluna representa uma variável do algoritmo e 
vamos preenchendo com os valores da variável conforme “executamos” 
mentalmente o algoritmo. 
Curso: Tecnologia da Informação 
Teoria e Questões comentadas 
Prof. Yuri do Carmo 
 
Prof. Yuri do Carmo 26 de 95 
www.exponencialconcursos.com.br 
a) Incorreto: repare que o algoritmo, no primeiro comando imprime 
realmente solicita que o valor a ser digitado seja maior ou igual a 8, porém ele 
não garante isso, pois não há, por exemplo, nenhuma validação com o 
comando “se então” para confirmar que o usuário digitou um valor válido e, se 
não for o caso, solicitar que digite novamente. Para haver essa garantia, 
poderia ser acrescentado o seguinte trecho após o comando leia(taxa): 
 se taxa < 8 então 
 imprima (“valor inválido”) 
b) Correto: montando a tabela com os valores de cada variável após executar 
o algoritmo mentalmente, temos: 
Descrição taxa quociente resto cinco tres 
Após leia(taxa) 22 
Após DIV e MOD e antes do “caso” 22 4 2 0 0 
Dentro do ‘caso’ será executado o bloco para resto ‘2’ 22 4 2 2 4 
 
c) Incorreto: uma forma de deduzir o que o algoritmo está fazendo é 
“executá-lo” mentalmente e guardar os valores numa tabela e, após isso, 
tentar deduzir a lógica. Vejamos como ficaria essa tabela para os valores de 
entrada 8, 9, 10, 11 e 12: 
taxa quociente resto cinco tres 
8 1 3 1 1 
9 1 4 0 3 
10 2 0 2 0 
11 2 1 1 2 
12 2 2 0 4 
Analisando a relação das colunas taxa, cinco e tres podemos notar a seguinte 
fórmula: taxa = 5*cinco + 3*tres. Ou seja, o algoritmo diz quantos 5’s e 
quantos 3’s “cabem” exatamente dentro do número de entrada taxa. 
d) Incorreto: montando a tabela com os valores de cada variável após 
executar o algoritmo mentalmente, temos: 
Descrição taxa quociente resto cinco tres 
Após leia(taxa) 17 
Após DIV e MOD e antes do “caso” 17 3 2 0 0 
Dentro do ‘caso’ será executado o bloco para resto ‘2’ 17 3 2 1 2 
 
e) Incorreto: sempre finaliza com valores da variável cinco maiores ou igual 
a 1, mas a variável tres pode ter valor 0. Conforme vimos no item (c), a 
variável cinco também pode finalizar com o valor 0. 
Gabarito: Letra B. 
 
 
Curso: Tecnologia da Informação 
Teoria e Questões comentadas 
Prof. Yuri do Carmo 
 
Prof. Yuri do Carmo 27 de 95 
www.exponencialconcursos.com.br 
 Estruturas de Repetição 
 Utilizamos os comandos de repetição quando desejamos que um 
determinado conjunto de instruções (bloco de comandos) seja 
executado um número definido (ou indefinido) de vezes, ou enquanto 
um determinado estado for válido. Eles também são chamados de laços 
(loops) e os principais são: “Enquanto...Faça...”, “Repita...Até...” e 
“Para...Faça...”. 
A estrutura “Enquanto...Faça...” (“While...Do...”) possui a seguinte 
sintaxe. É chamada de LOOP pré-testado, pois a expressão lógica é avaliada 
antes do bloco de comandos: 
 
ENQUANTO <expressão lógica> FAÇA 
<instruções a serem executadas enquanto a expressão booleana resultar 
em VERDADEIRO> 
FIM-ENQUANTO 
 
A estrutura “Repita...Até...” (“Repeat...Until...”) possui a sintaxe a 
seguir. Ela é bem semelhante à estrutura “Enquanto...Faça”, mas ela 
garante que o bloco de comandos seja executado, pelo menos, uma 
vez. É chamada de LOOP pós-testado, pois a expressão lógica é avaliada 
depois do bloco de comandos: 
 
REPITA 
<instruções a serem executadas repetidamente até a expressão booleana 
retornar VERDADEIRO> 
ATÉ <expressão lógica> 
 
A estrutura “Para...Faça...” (“For...Do...”) possui a seguinte sintaxe. É 
comumente usado quando já sabemos a quantidade de vezes que o laço 
deve executar: 
 
PARA <contador> DE <valor inicial> ATE <valor final> FAÇA 
<instruções a serem executadas repetidamente até a <contador> atingir o 
valor final> 
FIM-PARA 
 
Esquema 12 - Sintaxe da estrutura "Enquanto...Faça..."Esquema 13 - Sintaxe da estrutura "Repita...Até... " 
Esquema 14 - Sintaxe da estrutura "Para...Faça..." 
Curso: Tecnologia da Informação 
Teoria e Questões comentadas 
Prof. Yuri do Carmo 
 
Prof. Yuri do Carmo 28 de 95 
www.exponencialconcursos.com.br 
EXEMPLO 
Vejamos agora como implementar a soma dos números de 1 a 100 
utilizando as estruturas de repetição “Enquanto” e “Para”. Repare que são 
estruturas intercambiáveis, ou seja, o que pode ser feito com uma pode ser 
adaptado para ter o mesmo resultado usando a outra. 
 
Algoritmo "Soma1A100ComEnquanto" 
contador : INTEIRO 
soma : INTEIRO 
Inicio 
contador  1 
soma  0 
ENQUANTO contador <= 100 FAÇA 
soma  soma + contador 
contador  contador + 1 
FIM-ENQUANTO 
ESCREVA("A soma de 1 a 100 é: ", soma) 
FimAlgoritmo 
 
Algoritmo "Soma1A100ComPara" 
contador : INTEIRO 
soma : INTEIRO 
Inicio 
soma  0 
PARA contador DE 1 ATÉ 100 FAÇA 
soma  soma + contador 
FIM-PARA 
ESCREVA("A soma de 1 a 100 é: ", soma) 
FimAlgoritmo 
 
 
 
 
 
 
Curso: Tecnologia da Informação 
Teoria e Questões comentadas 
Prof. Yuri do Carmo 
 
Prof. Yuri do Carmo 29 de 95 
www.exponencialconcursos.com.br 
3- (FCC - 2017 - TRT - 24ª REGIÃO (MS) - Técnico 
Judiciário - Tecnologia da Informação) Considere o algoritmo em 
pseudocódigo abaixo. 
 
Se forem lidos para as variáveis v1, v2 e v3, respectivamente, os valores 3, 3 
e 4, o último valor exibido será 
a) 729 
b) 243 
c) 27 
d) 81 
e) 128 
Resolução: 
Boa parte das questões de lógica de programação envolvem um pseudocódigo 
que você deve “executá-lo” mentalmente e descobrir qual a saída do 
algoritmo. Para fazer essa execução mental, é importante utilizar o chamado 
“teste de mesa”, que nada mais é do que ir anotando o valor das variáveis, 
conforme elas forem sendo inicializadas e alteradas, numa tabela. Vejamos: 
Descrição V1 V2 V3 
Após comando leia 3 3 4 
Após 1º laço “enquanto” 9 3 3 
Após 2º laço “enquanto” 27 3 2 
Após 3º laço “enquanto” 81 3 1 
Como v3 agora é igual a 1, não executa mais o laço. Então o 
último valor impresso de v1 foi 81. 
 
 
Gabarito: Letra D. 
 
 
 
 
 
 
Curso: Tecnologia da Informação 
Teoria e Questões comentadas 
Prof. Yuri do Carmo 
 
Prof. Yuri do Carmo 30 de 95 
www.exponencialconcursos.com.br 
1.5 Procedimentos e Funções 
Você deve ter notado que quanto maior e mais complexo é o 
algoritmo, mais difícil é para se compreender seu funcionamento. 
Assim, para tentar reduzir essa complexidade, surgiu a ideia de 
modularização. Ela tem como objetivo principal dividir um algoritmo 
grande e complexo em vários algoritmos menores e mais simples. A 
maneira mais simples de modularizar nossos algoritmos/programas é por meio 
da sua divisão em funções ou em procedimentos. 
Definimos função como uma unidade de código de programa 
autônoma desenvolvida para cumprir uma determinada tarefa em 
particular. A única diferença entre uma função e um procedimento é que a 
função retorna um valor e o procedimento não retorna nada. Em outras 
palavras, funções e procedimentos são "subalgoritmos" que podem ser 
chamados dentro de outros algoritmos. 
Os benefícios do uso de funções e procedimentos são: reaproveitar 
código, melhorar a leitura dos algoritmos e criar códigos mais limpos e 
legíveis. Pode-se tanto utilizar funções/procedimentos já criados por outros 
programadores ou criar suas próprias funções. 
Funções e procedimentos podem ou não receber parâmetros 
(também chamados de argumentos). Parâmetros são os valores que 
passamos como entrada para as funções e procedimentos. Por exemplo, no 
procedimento IMPRIMA que já usamos nos exemplos, precisamos passar um 
texto como parâmetro para que ele seja impresso na tela no momento da 
execução. 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Curso: Tecnologia da Informação 
Teoria e Questões comentadas 
Prof. Yuri do Carmo 
 
Prof. Yuri do Carmo 31 de 95 
www.exponencialconcursos.com.br 
EXEMPLO 
No algoritmo abaixo temos um exemplo de uso de função. Foi criada 
uma função chamada calculaFatorial, a qual recebe um inteiro como entrada e 
retorna outro inteiro que é o fatorial4 do número passado como parâmetro. Já 
no corpo do algoritmo, solicitamos um número ao usuário e passamos ele 
como argumento para a função calculaFatorial que foi definida no início do 
algoritmo, o que permitiu deixar o código mais legível. 
 
algoritmo "Cacula Fatorial" 
var numeroParaFatorial: inteiro 
funcao calculaFatorial(numero: inteiro): inteiro 
var fatorial: inteiro 
var contador: inteiro 
inicio 
fatorial  1 
ENQUANTO numero > 1 FACA 
fatorial  fatorial * numero 
numero  numero - 1 
FIMENQUANTO 
retorne fatorial 
fimfuncao 
inicio 
ESCREVA("Informe o número para o cálculo do Fatorial: ") 
LEIA(numeroParaFatorial) 
ESCREVA("O fatorial de é: ", calculaFatorial(numeroParaFatorial)) 
fimalgoritmo 
 
4
 Na matemática, o fatorial de um número é o resultado da multiplicação dele pelos demais números 
naturais menores que ele. Por exemplo, fatorial de 5 é 5*4*3*2*1 que é 120. 
Curso: Tecnologia da Informação 
Teoria e Questões comentadas 
Prof. Yuri do Carmo 
 
Prof. Yuri do Carmo 32 de 95 
www.exponencialconcursos.com.br 
 
 
Esquema 15 - Funções e procedimentos 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Funções e 
Procedimentos 
Principal forma 
de modularizar 
algoritmos 
Diminui 
complexidade a 
aumenta 
legibilidade 
Definidos como 
unidade de 
código 
autônoma que 
cumpre uma 
tarefa particular 
Função retorna 
um valor, 
procedimento 
não 
Podem ou não 
receber 
parâmetros/argu
mentos de 
entrada 
Curso: Tecnologia da Informação 
Teoria e Questões comentadas 
Prof. Yuri do Carmo 
 
Prof. Yuri do Carmo 33 de 95 
www.exponencialconcursos.com.br 
1.6 Recursividade 
Recursividade é um mecanismo que permite que funções 
contenham em seu corpo chamadas para si próprias. Ou seja, uma 
função f é dita recursiva se no corpo dessa função há chamadas à própria 
função f. Há vários problemas que são resolvidos mais facilmente usando 
esse mecanismo. Quando uma função é chamada recursivamente, cria-se um 
ambiente local para cada chamada. As variáveis locais de chamadas recursivas 
são independentes entre si, como se estivéssemos chamando funções 
diferentes. 
 
EXEMPLO 
O fatorial de um número e os termos da série de Fibonacci não bastante 
conhecidos na matemática e são de fácil implementação usando a 
recursividade. Por definição, o fatorial5 de um número é ele multiplicado pelo 
fatorial do seu antecessor, ou seja, n! = n*(n-1)!. Além disso, o fatorial de 1 é 
1. Por definição, o n-ésimo termo da série de Fibonacci é igual à soma dos 
dois termos antecessores, ou seja, Fib(n) = Fib(n-1) + Fin(n-2). Além disso, o 
primeiro e o segundo termos da série de Fibonacci são o número 1. Vejamos 
como ficaria a implementação dessas funções usando recursividade. 
 
Função fatorial (n : inteiro) 
 Se n = 1 Então 
 retorne 1 
 Senão 
 retorne n * fatorial(n-1) 
Fim-função 
 
Função fibonacci (n : inteiro) 
 Se n = 1 Ou n = 2 Então 
 retorne 1 
 Senão 
 retorne fibonacci(n-1) + fibonacci(n-2) 
Fim-função 
 
 
 
5
 A notação n! (lê-se “n fatorial ) representa o fatorial do número n. 
 
Esquema 16 - Funções Fatorial e Fibonacci implementadas com recursividade 
Curso: Tecnologia da Informação 
Teoria e Questões comentadas 
Prof. Yuri do Carmo 
 
Prof. Yuri do Carmo 34 de 95 
www.exponencialconcursos.com.br 
4- (FCC - 2017 - ARTESP - Especialista em Regulação 
de Transporte I – Tecnologia da Informação) Considere o algoritmo em 
pseudocódigo abaixo. 
 
Considerando que o operador / realiza a divisão inteira,ao executar o 
algoritmo acima será impresso: Para 654321 o resultado da função digitos = 
a) 21 
b) 123456 
c) 654321 
d) 100000 
e) 6 
Resolução: 
A primeira coisa a se notar é que a função digitos(n) é recursiva, pois ela 
chama a si mesma. Se você tiver uma perspicácia já avançada, conseguirá 
notar que essa função retorna o número de dígitos do número n passado como 
parâmetro. Assim, para o número 654321, ela retornaria 6. Caso não tenha 
notado isso, não se preocupe, você irá adquirir isso com a prática. Bem, a 
maneira normal de se resolver essas questões é fazendo o “teste de mesa”, ou 
seja, a tabela com os valores da “execução mental” do algoritmo e, em 
seguida, fazer as contas de forma inversa. Vejamos: 
Descrição n digitos (n) 
Na primeira chamada da função6 654321 1+digitos(65432) 
Na primeira chamada recursiva da função 65432 1+digitos(6543) 
Na segunda chamada recursiva da função 6543 1+digitos(654) 
Na terceira chamada recursiva da função 654 1+digitos(65) 
Na quarta chamada recursiva da função 65 1+digitos(6) 
Na quinta chamada recursiva da função temos o chamado 
“caso base” 
6 1 
Fazendo os cálculos de forma inversa: 
digitos(65) = digitos (6) + 1 = 1+1 = 2 
digitos(654) = digitos (65) + 1 =2+1 = 3 
 
 
6
 A questão falou que a divisão é inteira, então na recursão dividimos por 10 e desprezamos a casa decimal 
Curso: Tecnologia da Informação 
Teoria e Questões comentadas 
Prof. Yuri do Carmo 
 
Prof. Yuri do Carmo 35 de 95 
www.exponencialconcursos.com.br 
digitos(6543) = digitos (654) + 1 = 3+1 = 4 
digitos(65432) = digitos (6543) + 1 = 4+1 = 5 
digitos(654321) = digitos (65432) + 1 = 5+1 = 6 
 
Gabarito: Letra E. 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Curso: Tecnologia da Informação 
Teoria e Questões comentadas 
Prof. Yuri do Carmo 
 
Prof. Yuri do Carmo 36 de 95 
www.exponencialconcursos.com.br 
1.7 Vetores 
Vetores são estruturas de dados bastante simples que podem nos 
ajudar muito quando temos um grande número de variáveis do mesmo tipo 
em um algoritmo. Um vetor nada mais é do que um agrupamento de 
variáveis do mesmo tipo. 
Imagine que você precisa criar um algoritmo que lê a matrícula e 3 
notas de 30 alunos, e calcula a média de cada aluno. Seriam necessárias 30 
variáveis para armazenar as matrículas dos alunos, 90 variáveis para 
armazenar as notas (3 * 30) e mais 30 variáveis para armazenar as 30 
médias. Além disso, ficaria um código extremamente grande, tornando um 
algoritmo como esse praticamente inviável. 
Os vetores auxiliam justamente na resolução desse tipo de problema, 
pois podemos utilizá-los para armazenar e manipular todos esse valores de 
maneira mais simples. 
Vetor é uma variável que armazena várias variáveis do mesmo 
tipo. No problema apresentado anteriormente, nós podemos utilizar um vetor 
de 30 posições para armazenar os nomes dos 30 alunos. Cada item do vetor 
é acessado por um número chamado de índice (ou index, em inglês). 
Um vetor, na prática, é um conjunto de posições sequenciais na 
memória do computador, onde cada posição armazena um valor do mesmo 
tipo. Cada posição é acessada por meio do seu índice. Na figura abaixo temos 
um exemplo de um vetor chamado “x” com 7 posições, valores do tipo 
“inteiro” e índices de 0 a 6. 
 
Esquema 17 - Exemplo de um vetor de inteiros, de nome x, com 7 posições e índices de 0 a 6 
A sintaxe de declaração de vetores e um exemplo: 
<nome_da_variável> vetor [1..<tamanho>] de <tipo_de_dado> 
matriculaAlunos vetor [1..30] de inteiros 
 
Uma coisa importante a se observar é que os vetores são de tamanho 
fixo, ou seja, eles “nascem” e “morrem” com o mesmo tamanho. 
Os vetores também são conhecidos por variáveis indexadas. Eles são 
uma das estruturas de dados mais simples que existe e uma das mais 
Esquema 18 - Sintaxe de declaração de vetores e um exemplo 
Curso: Tecnologia da Informação 
Teoria e Questões comentadas 
Prof. Yuri do Carmo 
 
Prof. Yuri do Carmo 37 de 95 
www.exponencialconcursos.com.br 
utilizadas também. Praticamente todas as linguagens de programação têm 
vetores. 
Os índices dos vetores podem mudar dependendo da linguagem, mas o 
comum é os índices do vetor começarem na posição 0, mas algumas 
linguagens começam com 1. Nos pseudocódigos, vetores comumente 
começam no índice 0 e o último elemento recebe o índice <tamanho_do_array> – 
1. Assim, um vetor de 5 posições possui índices de 0 a 4. 
 
EXEMPLO 
Vejamos o exemplo de um algoritmo que lê e, em seguida, imprime o 
nome de 5 alunos. Repare na inicialização do vetor e como seus valores são 
armazenados e acessados/lidos. 
algoritmo "NomeAlunos" 
nomes: vetor [1..5] de caractere 
contador: inteiro 
inicio 
PARA contador DE 1 ATE 5 FACA 
ESCREVA("Digite o nome do aluno(a) número ", contador) 
LEIA(nomes[contador]) 
FIMPARA 
PARA contador DE 1 ATE 5 FACA 
ESCREVA(“Nome do aluno ”, contador, “ é ”, nomes*contador]) 
FIMPARA 
fimalgoritmo 
 
 
 
 
 
 
 
 
 
 
 
Curso: Tecnologia da Informação 
Teoria e Questões comentadas 
Prof. Yuri do Carmo 
 
Prof. Yuri do Carmo 38 de 95 
www.exponencialconcursos.com.br 
5- (FCC - 2013 - MPE-AM - Agente de Apoio - 
Programador) Considere o programa em pseudocódigo abaixo: 
 
É correto afirmar: 
a) Como o programa utiliza o comando enquanto ao invés do comando para, 
não seria necessário incrementar a variável de controle indice dentro do bloco, 
uma vez que esta é incrementada de 1 automaticamente. 
b) O resultado do cálculo da comissão do vendedor é atribuído à variável 
comissao e corresponde a 1% do valor da venda realizada por ele. 
c) O valor da variável vendas é atribuído ao vetor comissao na posição do 
vetor correspondente ao valor do indice relacionado ao vendedor. 
d) O segundo comando enquanto percorre novamente os vetores, começando 
do indice 1, incrementando a variável indice e mostrando os dados dos 
vendedores: nome e comissão. 
Curso: Tecnologia da Informação 
Teoria e Questões comentadas 
Prof. Yuri do Carmo 
 
Prof. Yuri do Carmo 39 de 95 
www.exponencialconcursos.com.br 
e) O primeiro comando enquanto faz com que o fluxo do programa seja 
repetido até que a variável indice fique menor que 10, ou seja, esse bloco de 
comandos vai ser repetido 10 vezes. 
Resolução: 
Questão assusta pelo tamanho, mas se analisarmos com calma, veremos que 
não é difícil. Antes de analisarmos as alternativas, vamos dar uma visão geral 
no algoritmo: 
 Os vetores começam na posição 1 em vez de 0 
 No primeiro enquanto, o algoritmo lê o nome de cada vendedor e 
armazena no vetor e lê também o valor das vendas e guarda a 
comissão (10%, já que divide o valor das vendar por 10) em outro 
vetor 
 O segundo enquanto basicamente imprime o nome de cada vendedor 
com sua respectiva comissão de vendas 
Vamos analisar cada uma das alternativas. 
a) Incorreto: a assertiva inverteu os conceitos. É o comando para que 
incrementa automaticamente a variável de controle, não o comando 
enquanto. 
b) Incorreto: repare que comissão  venda/10. Assim, a comissão é 10% do 
valor das vendas. Para ser 1% deveria dividir por 100. 
c) Incorreto: não existe vetor comissao no algoritmo. comissao é uma variável 
inteira, não um vetor. Essa variável é atribuída ao vetor vendas na posição do 
vetor correspondente ao valor do indice relacionado ao vendedor. 
d) Correto: conforme explanado no início do comentário. 
e) Incorreto: O primeiro comando enquanto faz com que o fluxo do 
programa seja repetido até que a variável indice fique menor maior que 10, ou 
seja, esse bloco de comandos vai ser repetido 10 vezes. 
Gabarito: Letra D. 
 
 
 
Curso: Tecnologia da Informação 
Teoria e Questões comentadas 
Prof. Yuri do Carmo 
 
Prof. Yuri do Carmo 40 de 95 
www.exponencialconcursos.com.br 
2. QUESTÕES COMENTADASLógica de Programação 
6- (FCC - 2018 - Prefeitura de São Luís - MA - Auditor Fiscal de 
Tributos I - Tecnologia da Informação (TI)) Considere a função abaixo na 
forma de pseudocódigo. 
 
Se a função teste receber o valor 9 para x, 8 para n e o vetor [7, 10, 42, 88, 
100, 123, 401, 502] para p, o retorno da função será 
a) 3 
b) 6 
c) 8 
d) 2 
e) −1 
Resolução: 
Nas questões de pseudocódigo, a FCC costuma colocar algoritmos conhecidos, 
como é o caso dessa questão. Esse algoritmo é uma das implementações 
interativas da chamada “pesquisa binária”, a qual recebe um valor chamado 
chave (na questão, é o x) e um vetor ordenado7 e retorna o índice da chave 
dentro do vetor, caso ela se encontre lá, ou retorna -1, caso a chave não esteja 
no vetor. O valor de n representa o tamanho do vetor. Sabendo disso, a 
questão fica fácil, pois no vetor [7, 10, 42, 88, 100, 123, 401, 502] não há a 
chave x = 9, o que faz com que o algoritmo retorne -1. Caso você não saiba 
disso, você poderia resolver da seguinte forma: repare que só há dois 
momentos que o algoritmo retorna um valor: ou quando p[j] = x (retornando a 
variável j) ou no final, retornando -1. x é 9 e p[j] é algum elemento do vetor. 
Com isso, você nota que nenhum elemento do vetor p é igual a 9, restando ao 
algoritmo retornar ao final o -1. Para exemplificar mais: 
 
7
 Na pesquisa binária, obrigatoriamente o vetor deve estar ordenado 
Curso: Tecnologia da Informação 
Teoria e Questões comentadas 
Prof. Yuri do Carmo 
 
Prof. Yuri do Carmo 41 de 95 
www.exponencialconcursos.com.br 
 Se x fosse 7, o algoritmo retornaria 0, pois esse é o índice da posição 
do valor 7 no vetor 
 Se x fosse 10, o algoritmo retornaria 1, pois esse é o índice da posição 
do valor 10 no vetor 
 Se x fosse 401, o algoritmo retornaria 6, pois esse é o índice da posição 
do valor 401 no vetor 
Gabarito: Letra E. 
 
7- (FCC - 2013 - AL-RN - Técnico Legislativo - Programador) 
Considere o algoritmo na forma de pseudocódigo a seguir: 
 
O pseudocódigo acima 
a) está incorreto, pois a estrutura de seleção se necessita da cláusula então 
para o caso da condição ser verdadeira e da cláusula senão para caso da 
condição ser falsa. 
b) está correto, e seu objetivo é classificar em ordem crescente, o conteúdo 
de um vetor que recebe 4 valores inteiros lidos. 
c) está correto, e seu objetivo é ler 4 elementos e procurar um elemento 
informado no vetor utilizando busca binária. 
d) está incorreto, pois em todas as linguagens de programação a primeira 
posição do vetor é 1 e não 0 como mostra o algoritmo. 
Curso: Tecnologia da Informação 
Teoria e Questões comentadas 
Prof. Yuri do Carmo 
 
Prof. Yuri do Carmo 42 de 95 
www.exponencialconcursos.com.br 
e) está correto, e se forem lidos os valores 4, 7, 1, 9 e 3, nesta ordem, serão 
exibidos os valores 9, 7, 4, 3 e 1, nesta ordem. 
Resolução: 
Nas questões de pseudocódigo, a FCC costuma colocar algoritmos conhecidos, 
como é o caso dessa questão. Esse algoritmo é uma das implementações 
interativas de ordenação de vetores, a qual recebe um vetor com valores 
aleatórios e retorna o mesmo vetor, mas com os valores ordenados, 
geralmente em ordem crescente, como é o caso da questão. Porém, mesmo 
sem saber disso, poderíamos eliminar três alternativas (a, c e d) com nossos 
conhecimentos básicos. Um indicativo de que um algoritmo é de ordenação é 
quando ele possui duas estruturas de repetição aninhadas (no caso, um 
enquanto dentro de outro enquanto) e quando possui o seguinte trecho de 
código, que realiza a troca de valores no vetor: 
se vetor[pos] > vetor[pos+1] 
 aux  vetor[pos] 
 vetor[pos]  vetor[pos+1] 
 vetor[pos+1]  aux 
Vamos analisar cada uma das alternativas: 
a) Incorreto: está incorreto, pois a estrutura de seleção se necessita da 
cláusula então para o caso da condição ser verdadeira e da cláusula senão 
para caso da condição ser falsa. A estrutura se não precisa necessariamente 
da cláusula senão. 
b) Correto 
c) Incorreto: está correto, e seu objetivo é ler 4 elementos e procurar um 
elemento informado no vetor utilizando busca binária. Não há indicativo no 
código de busca dentro do vetor. Vemos apenas troca de elementos do vetor 
dentro do bloco se vetor[pos] > vetor[pos+1], a qual é feita com o seguinte artifício, 
que simplesmente troca de posição os valores de vetor[pos] e vetor[pos+1]: 
 aux  vetor[pos] 
 vetor[pos]  vetor[pos+1] 
 vetor[pos+1]  aux 
d) Incorreto: está incorreto, pois em todas as linguagens de programação a 
primeira posição do vetor é 1 e não 0 como mostra o algoritmo. Há linguagens 
que começam o vetor no índice 0 (mais comum) e outras no índice 1. 
e) Incorreto: está correto, e se forem lidos os valores 4, 7, 1, 9 e 3, nesta 
ordem, serão exibidos os valores 9, 7, 4, 3 e 1 1, 3, 4, 7 e 9, nesta ordem. O 
algoritmo ordena em ordem crescente. Para ser decrescente, o sinal de 
comparação dentro do se deveria ser < (menor que) em vez de > (maior 
que). 
Curso: Tecnologia da Informação 
Teoria e Questões comentadas 
Prof. Yuri do Carmo 
 
Prof. Yuri do Carmo 43 de 95 
www.exponencialconcursos.com.br 
Gabarito: Letra B. 
 
8- (FCC - 2013 - MPE-MA - Técnico Ministerial - Tecnologia da 
Informação) Atenção: Para responder à questão, considere o fragmento de 
pseudocódigo abaixo. 
 
Considere ainda que: 
− as variáveis numeroLido, pri, ult e metade são do tipo inteiro. 
− a variável achou é do tipo lógico. 
− vet é um vetor de inteiros que contém os seguintes valores 3, 5, 60, 80 e 
98, nessa ordem. 
− a primeira posição do vetor vet é zero (0). 
Sobre o fragmento de pseudocódigo apresentado é correto afirmar que 
a) executa uma pesquisa sequencial, que mostra a posição em que o número 
lido se encontra no vetor. 
b) falha, pois se o valor 98 for lido, será feita a busca em uma posição 
inexistente do vetor. 
c) executa uma pesquisa binária que funciona se os valores do vetor estiverem 
em ordem crescente. 
d) mesmo que os valores estejam em ordem decrescente, mostrará a posição 
em que o número lido se encontra. 
e) sempre exibirá a mensagem que informa que o valor não foi encontrado. 
Resolução: 
Curso: Tecnologia da Informação 
Teoria e Questões comentadas 
Prof. Yuri do Carmo 
 
Prof. Yuri do Carmo 44 de 95 
www.exponencialconcursos.com.br 
Nas questões de pseudocódigo, a FCC costuma colocar algoritmos conhecidos, 
como é o caso dessa questão. Esse algoritmo é uma das implementações 
interativas da chamada “pesquisa binária”, a qual recebe um valor chamado 
chave (na questão, é o numeroLido) e um vetor ordenado8 e retorna o índice da 
chave dentro do vetor, caso ela se encontre lá no vetor. Ao contrário da 
pesquisa sequencial (a qual consiste em percorrer sequencialmente do início 
ao fim cada posição do vetor até encontrar a chave), a pesquisa binária se 
aproveita do fato do vetor estar ordenado e otimiza a busca pesquisando em 
apenas metade do vetor sucessivamente. Inicialmente, é verificado se a chave 
está na posição central do vetor ((pri + ult) / 2). Caso esteja, retorna essa 
posição. Caso contrário, ele compara se a posição central é maior ou menor 
que a chave. Se a chave for maior, indica que ela só pode estar na metade 
superior do vetor, já que ele está ordenado. Se for menor, só pode estar na 
metade inferior. Assim, ao fazer uma nova iteração no laço, fará apenas em 
uma dessas metades e assim sucessivamente. 
Vamos analisar cada uma das alternativas: 
a) Incorreto: executa uma pesquisa sequencial binária, que mostra a posição 
em que o número lido se encontra no vetor. 
b) Incorreto: falha, pois se o valor 98 for lido, será feita a busca em uma 
posição inexistente na posição 4 do vetor. Como a questão disse que o vetor 
começa da posição 0, o número 98 encontra-se na posição 4 de vet e a 
pesquisa binária irá corretamente encontrá-lonessa posição. 
c) Correto: obrigatoriamente os valores do vetor na pesquisa binária devem 
estar ordenados. 
d) Incorreto: conforme item anterior. Ou seja, se estiver em ordem 
decrescente, não funcionaria corretamente. 
e) Incorreto: caso numeroLido esteja contido no vetor vet, a pesquisa binária 
irá imprimir corretamente a posição dele no vetor. 
Gabarito: Letra C. 
 
9- (FCC - 2018 - DPE-AM - Assistente Técnico de Defensoria - 
Programador) Considere o algoritmo em pseudocódigo abaixo. 
 
8
 Na pesquisa binária, obrigatoriamente o vetor deve estar ordenado 
Curso: Tecnologia da Informação 
Teoria e Questões comentadas 
Prof. Yuri do Carmo 
 
Prof. Yuri do Carmo 45 de 95 
www.exponencialconcursos.com.br 
 
Analisando a lógica do programa acima, é correto afirmar que 
a) ao ser digitado 2018 para o ano, o programa finalizará. 
b) a lacuna I deve ser preenchida com ano >= 2000 e ano < anobase 
c) há erro de lógica, pois o comando enquanto não avalia nenhuma condição. 
d) a lacuna III deve ser preenchida com ano <= 0 
e) a lacuna II deve ser preenchida com ano >= 1000 e ano <= 2000 
Resolução: 
Primeiramente, temos que notar dois pontos importantes ao fazer a primeira 
análise no algoritmo: 
 Dentro do primeiro se, é usada uma estrutura de controle chamada 
vá_para <label> a qual representa uma mudança incondicional do fluxo do 
programa para o ponto onde estiver a referência a <label>, que no caso é 
o label ENCERRA no final do algoritmo. 
 As lacunas I, II e III são as condições dos respectivos se, os quais 
podem ser deduzidos com a análise das mensagens que são impressas. 
Vamos analisar cada uma das alternativas: 
a) Incorreto: no primeiro se, o ano digitado deve ser maior que o anobase 
para que a instrução vá_para ENCERRA seja executada. Como o ano é 2018 e 
anobase é 2018 também, então a condição será falsa e, consequentemente, a 
instrução dentro do se não será executada. 
Curso: Tecnologia da Informação 
Teoria e Questões comentadas 
Prof. Yuri do Carmo 
 
Prof. Yuri do Carmo 46 de 95 
www.exponencialconcursos.com.br 
b) Incorreto: a lacuna I deve ser preenchida com ano >= 2000 2001 e ano < 
<= anobase. Repare que o bloco verdade da instrução se imprimirá a 
mensagem “O ano pertence ao século XXI”. O século XXI começa em 2001 e a 
entrada da variável ano do usuário também pode ser igual ao anobase. 
c) Incorreto: há erro de lógica, pois o comando enquanto não avalia 
nenhuma condição. Não há problemas na condição do enquanto ser sempre 
verdadeira (poderia ter escrito 1=1 em vez de verdadeiro, por exemplo), esse é o 
chamado loop infinito. Para o usuário sair do loop, basta ele digitar um ano 
maior que 2018 que o programa executará a instrução vá_para ENCERRA. 
d) Incorreto: a lacuna III deve ser preenchida com ano <= 0 ano <= 999 
(ou ano < 1000). 
e) Correto: os anos com quatro dígitos que não são do século XXI vão de 
1000 a 2000, então a condição desse se deve realmente ser ano >= 1000 e 
ano <= 2000. 
Gabarito: Letra E. 
 
10- (FCC - 2017 - ARTESP - Agente de Fiscalização à Regulação de 
Transporte - Tecnologia de Informação) Considere o algoritmo em 
pseudocódigo abaixo. 
 
Curso: Tecnologia da Informação 
Teoria e Questões comentadas 
Prof. Yuri do Carmo 
 
Prof. Yuri do Carmo 47 de 95 
www.exponencialconcursos.com.br 
Este algoritmo 
a) não poderia usar a categoria 0 no comando escolha, nem atribuir zero ao 
valor do pedágio. 
b) apresenta erro de lógica na condição do comando condicional se. 
c) teria que usar uma condição no comando enquanto (verdadeiro) faça, pois 
este não pode avaliar apenas o valor lógico verdadeiro. 
d) tem erro de sintaxe, pois o comando escolha deveria estar dentro da 
cláusula senão do comando condicional se. 
e) tem erro de sintaxe, pois o comando escolha deveria ter a cláusula senão, 
que é obrigatória. 
Resolução: 
Vamos analisar cada uma das alternativas: 
a) Incorreto: não poderia poderia usar a categoria 0 no comando escolha, 
nem e atribuir zero ao valor do pedágio. O comando escolha pode receber 
qualquer tipo primitivo. 
b) Correto: repare que a condição do se testa se a categoria é menor que 0 e 
é maior que 8 (categoria < 0 e categoria > 8). Porém, nenhum número pode 
satisfazer ambas as condições, o que faria com que essa expressão fosse 
avaliada sempre como falso, independentemente do valor da categoria. Assim, 
sempre finalizaria o programa. Para tornar a lógica do programa correta, a 
condição testada deveria ser (categoria < 0 ou categoria > 8). 
c) Incorreto: não há problemas na condição do enquanto ser sempre 
verdadeira (poderia ter escrito 1=1 em vez de verdadeiro, por exemplo), esse é o 
chamado loop infinito. 
d) Incorreto: tem não tem erro de sintaxe, pois o comando escolha deveria 
poderia estar dentro da cláusula senão do comando condicional se. As 
estruturas “Se...Então” e “Se...Então...Senão” existem e as duas poderiam ser 
usadas nesse caso sem alterar a lógica do algoritmo. 
e) Incorreto: tem não tem erro de sintaxe, pois o comando escolha deveria 
poderia ter a cláusula senão, que é não é obrigatória. 
Gabarito: Letra B. 
 
11- (FCC - 2016 - Prefeitura de Teresina - PI - Analista Tecnológico - 
Analista de Sistemas) Considere o algoritmo em pseudocódigo abaixo. 
Curso: Tecnologia da Informação 
Teoria e Questões comentadas 
Prof. Yuri do Carmo 
 
Prof. Yuri do Carmo 48 de 95 
www.exponencialconcursos.com.br 
 
Em relação ao algoritmo, é correto afirmar que 
a) o vetor C impresso é: 3 5 7 4 6 10 18 20. 
b) a variável cont conta o número total de elementos do vetor C resultante, ou 
seja, 9. 
c) a variável cont conta o número total de comparações para gerar o vetor C, 
ou seja, 3. 
d) o vetor C resultante intercala os elementos dos vetores A e B, ordenando-
os. 
e) caso os elementos dos vetores A e B estivessem fora de ordem, o vetor C 
resultante conteria os elementos ordenados em ordem decrescente. 
Resolução: 
Nesse tipo de questão, temos que captar o objetivo geral do algoritmo 
mentalmente. Infelizmente fazer um “teste de mesa” em algoritmos com 
vetores geralmente é inviável, pois demoraria muito e não temos tempo 
sobrando durante a prova. O máximo que daria para fazer seria só testar o 
início do algoritmo e/ou fazer um exemplo com vetores menores para deduzir 
o que o algoritmo faz. Nesse algoritmo, você tem que notar que o vetor C é do 
tamanho da soma dos dois anteriores e que, a cada iteração do enquanto, o 
vetor C recebe um valor que vem do vetor A ou do B. Como a condição do se 
é (A[Ia] <= B[Ib]), então esse valor é sempre o menor9 dos dois, comparando 2 a 
 
9
 Se os valores forem iguais, pega-se o do vetor A 
Curso: Tecnologia da Informação 
Teoria e Questões comentadas 
Prof. Yuri do Carmo 
 
Prof. Yuri do Carmo 49 de 95 
www.exponencialconcursos.com.br 
2 os elementos de A e B a partir do início. Assim, faz com que o vetor C seja a 
“soma” dos vetores A e B, ordenando crescentemente os elementos. 
Vamos analisar cada uma das alternativas: 
a) Incorreto: o vetor C impresso é: 3 5 7 4 6 10 18 20 3 4 5 6 7 10 18 20. O 
vetor C é a junção do A e B, com os números em ordem crescente. 
b) Incorreto: a variável cont conta o número total de elementos do vetor C 
resultante, ou seja, 9 8. O vetor A tem 3 elementos e o B, 5 elementos. Como 
o vetor C é a junção dos outros dois, ele terá 3+5=8 elementos. 
c) Incorreto: a variável cont conta o número total de comparações para gerar 
o vetor C, ou seja, 3 8. Idem ao item (b). O total de comparações e o total de 
elementos de C são iguais, ambos 8. 
d) Correto: o vetor C resultante intercala os elementos dos vetores A e B, 
ordenando-os. Como a condição da comparação é (A[Ia] <= B[Ib]), então a ordem 
é crescente. 
e) Incorreto: caso os elementos dos vetores Ae B estivessem fora de ordem, 
o vetor C resultante conteria os elementos ordenados em ordem decrescente. 
A condição dos vetores A e B já estarem ordenados de forma crescente é 
essencial para que o vetor C também esteja ordenado de forma crescente. Por 
isso os dois erros desse item (e): A e B não podem estar fora de ordem; o 
vetor C resultando não é decrescente, é crescente. Para resultar numa 
ordenação decrescente, A e B deveriam ser decrescentes e a condição do se 
deveria ser (A[Ia] > B[Ib]) em vez de (A[Ia] <= B[Ib]). 
Gabarito: Letra D. 
 
12- (FCC - 2018 - DPE-AM - Assistente Técnico de Defensoria - 
Programador) Considere que há 3 categorias para pagantes de pensões 
alimentícias: a primeira engloba os que pagam até 1 valor base (R$ 900.00), a 
segunda os que pagam de 2 até 4 valores base e a terceira os que pagam 
acima de 4 valores base. Um programador apresentou o trecho em 
pseudocódigo abaixo como solução para identificar os pagantes destas 3 
categorias. 
 
Um Técnico Programador, ao analisar o trecho acima, afirma corretamente 
que 
Curso: Tecnologia da Informação 
Teoria e Questões comentadas 
Prof. Yuri do Carmo 
 
Prof. Yuri do Carmo 50 de 95 
www.exponencialconcursos.com.br 
a) não há erro de lógica nem de sintaxe. 
b) o comando escolha deve ser substituído por um conjunto de comandos 
condicionais (se) aninhados que trate os valores da variável valor (do tipo 
real) como solicitado. 
c) o comando escolha é o mais adequado para a solução, pois os valores das 
pensões são múltiplos de 900.00. 
d) embora haja erro de sintaxe no comando escolha, a lógica da solução 
atende de forma correta o que foi solicitado no problema. 
e) para que a lógica da solução fique correta, basta trocar o tipo da variável 
valor para inteiro e retirar os .00 dos valores de cada caso do comando 
escolha. 
Resolução: 
No pseudocódigo apresentado, a variável valor pode ser qualquer valor 
monetário acima de R$ 0,00. Porém, como foi utilizada a estrutura 
“escolha...caso...”, esse valor será comparado com relação à igualdade com 
cada valor dentro de cada “caso”. Assim, valores menores que 900, por 
exemplo, entrariam erroneamente no “senão”, consequentemente sendo 
categorizados como da 3º categoria, o que está errado. Ou seja, qualquer 
valor diferente de 900, 1800, 2700 e 3600 imprimiria “Categoria 3”, o que vai 
de encontro ao que a questão pede. Assim, esse código está incorreto quanto 
à lógica, apesar de não ter nenhum erro de sintaxe. O correto seria substituir 
o “escolha...caso...” por algo como o trecho abaixo: 
se valor <= 900.00 então 
 imprima("Categoria 1") 
senão 
 se valor <= 3600.00 então 
 imprima("Categoria 2") 
 senão 
 imprima("Categoria 3") 
 fim_se 
fim_se 
Assim, qualquer valor menor ou igual a 900 seria da categoria 1. Valores 
maiores que 900 e menores ou iguais a 3600 (4 valores base) seria categoria 
2 e, por fim, valores maiores que 3600 seria categoria 3. 
Vamos analisar cada uma das alternativas: 
a) Incorreto: não há há erro de lógica nem, mas não de sintaxe. 
Curso: Tecnologia da Informação 
Teoria e Questões comentadas 
Prof. Yuri do Carmo 
 
Prof. Yuri do Carmo 51 de 95 
www.exponencialconcursos.com.br 
b) Correto: o comando escolha deve ser substituído por um conjunto de 
comandos condicionais (se) aninhados que trate os valores da variável valor 
(do tipo real) como solicitado. 
c) Incorreto: o comando escolha é não é o mais adequado para a solução, 
pois os valores das pensões são não são múltiplos de 900.00. A variável valor 
poderia ser qualquer número acima de 0. 
d) Incorreto: embora haja não haja erro de sintaxe no comando escolha, a 
lógica da solução atende não atende de forma correta o que foi solicitado no 
problema. 
e) Incorreto: para que a lógica da solução fique correta, basta trocar o tipo 
da variável valor para inteiro e retirar os .00 dos valores de cada caso do 
comando escolha. A solução correta envolve substituir o escolha por 
comandos se então aninhados. 
Gabarito: Letra B. 
 
13- (FGV - 2010 - CODESP-SP - Técnico em Informática - Tipo 1) 
Observe o trecho de pseudocódigo abaixo, referente a um programa, que 
utiliza a estrutura de controle repetir ... até que ... 
 
Utilizando a estrutura de controle repetir ... até que ... e que produz o 
mesmo resultado, um pseudocódigo equivalente está indicado na opção: 
a) 
b) 
Curso: Tecnologia da Informação 
Teoria e Questões comentadas 
Prof. Yuri do Carmo 
 
Prof. Yuri do Carmo 52 de 95 
www.exponencialconcursos.com.br 
c) 
d) 
e) 
Resolução: 
Primeiramente devemos saber o que é impresso no trecho da questão e de 
cada um dos itens para depois comparar qual imprime a mesma coisa. Como 
as estruturas de controle de repetição são intercambiáveis, ou seja, pode-se 
transformar uma na outra, é possível transformar uma estrutura 
“repita...até...” em um “enquanto”. Porém, essas estruturas tem duas 
diferenças principais. Primeiramente, o “repita...até...” é um loop pós-testado, 
isto é, o teste para verificar se o bloco será executado novamente acontece no 
final do bloco, garantindo que o bloco é executado pelo menos uma vez, já o 
“enquanto” é pré-testado. Em segundo lugar, na estrutura “repita...até...”, as 
instruções do bloco são executadas repetidamente enquanto a expressão 
lógica resultar em FALSO, ou seja, a partir do momento que a expressão 
resultar em VERDADEIRO, o fluxo do algoritmo sairá do laço; já no 
“enquanto”, o bloco é executado enquanto a expressão lógica for 
VERDADEIRO. Dito isso, podemos ver que o pseudocódigo do comando da 
questão imprime: 0 1 2 3 4 5 6 7. O -1 não é impresso, pois o X é 
incrementado antes da impressão. O 8 não é impresso, pois quando X=7 já sai 
do laço. 
Vamos analisar cada uma das alternativas: 
a) Incorreto: é impresso -1 0 1 2 3 4 5 6 7 
b) Incorreto: é impresso -1 0 1 2 3 4 5 6 
c) Incorreto: não é impresso nada 
d) Incorreto não é impresso nada 
Curso: Tecnologia da Informação 
Teoria e Questões comentadas 
Prof. Yuri do Carmo 
 
Prof. Yuri do Carmo 53 de 95 
www.exponencialconcursos.com.br 
e) Correto: também é impresso 0 1 2 3 4 5 6 7 igual ao do “repita...até...”. 
Gabarito: Letra E. 
 
14- (FGV - 2016 - COMPESA - Analista de Gestão - Administrador de 
Banco de Dados) Considere a série a seguir. 
1+1/4+1/9+1/16+1/25.... 
Assinale a opção que indica o pseudocódigo que calcula e exibe corretamente 
o somatório dos dez primeiros termos dessa série. 
a) 
 
b) 
 
c) 
 
d) 
Curso: Tecnologia da Informação 
Teoria e Questões comentadas 
Prof. Yuri do Carmo 
 
Prof. Yuri do Carmo 54 de 95 
www.exponencialconcursos.com.br 
 
e) 
Resolução: 
Primeiramente, precisamos entender a lei de formação da série. Repare que o 
denominador das frações são quadrados perfeitos. Assim, cada fração é da 
forma 1/i2, sendo que o i inicia em 1 e, como são dez termos, termina no 10. 
Nas alternativas, em vez da letra i, usaram a letra k. A variável s representa o 
acumulado da soma e a variável t representa o k-ésimo termo da série. 
Vamos analisar cada uma das alternativas: 
a) Incorreto: o único erro é a instrução t := 1.0/k*k. Do jeito que ela está 
escrita, sem usar parênteses, calculará erroneamente os termos da sequência. 
Note, por exemplo, que para k=2, teríamos 1.0/2*2 e, como não há 
precedência entre os operadores de divisão e multiplicação, a execução seria 
da esquerda para direita. Ou seja, seria feito o cálculo (1.0/2)*2, o qual 
resultaria em 1.0, diferente do 1/4 = 0.25 esperado. A instrução correta é t := 
1.0/(k*k). 
b) Correto: conforme explicação anterior. 
c) Incorreto: o primeiro termo da sequencia deveria ser 1.0/(1*1) = 1, mas 
como o k inicia com 1 e é incrementado logo no início do while, o primeiro 
termo calculado foi erroneamente 1.0/(2*2) = 0.25. 
d) Incorreto: com o k iniciando com 0, o while executa

Continue navegando