Buscar

RESUMÃO LÓGICA DE PROGRAMAÇÃO

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 135 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 135 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 135 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

LÓGICA DE PROGRAMAÇÃO
Aula 1 - Conceitos introdutórios
Aula 2 - Definições de lógica
Aula 3 - Elementos fundamentais de programação
Aula 4 - Algoritmos
Referências
Aula 1
CONCEITOS INTRODUTÓRIOS
Nesta aula iniciamos os estudos sobre programação de computadores em que você terá 
contato com os primeiros conceitos de algoritmos, variáveis, tipos de dados e os 
operadores básicos.
INTRODUÇÃO
Olá, estudante.
Nesta aula iniciamos os estudos sobre programação de computadores em que você terá 
contato com os primeiros conceitos de algoritmos, variáveis, tipos de dados e os 
operadores básicos. A compreensão dos fundamentos da programação é importante para 
que o restante do aprendizado adiante não seja comprometido, assim como compreender 
a base sobre a qual a grande área de Tecnologia da Informação é construída. Desse 
modo, aproveite esta etapa para estudar com calma, lendo e relendo os conceitos e 
exemplos apresentados, realizando os exercícios, assistindo aos vídeos das aulas para 
que o conteúdo seja entendido de modo adequado e sua jornada seja tranquila.
Bons estudos!
PRIMEIROS CONCEITOS 
Vamos começar abordando os primeiros conceitos da lógica de programação e a 
definição de algoritmo, que é o núcleo da sua aprendizagem nesta disciplina.
A programação de computadores é um termo abrangente e que pode ser compreendido 
de diversas formas. “Programar”, no nosso contexto, refere-se a aplicar técnicas e 
sequências de instruções a um dado artefato tecnológico com o objetivo de que suas 
tarefas sejam executadas automaticamente. Pense no exemplo dos robôs de limpeza 
utilizados para limpar o chão de casas de modo autônomo. Para que este artefato 
tecnológico consiga realizar suas tarefas sem danificar objetos da residência, muitas 
instruções estão gravadas em seu sistema para controlar sua operação. A partir do 
momento que ele é ligado, deve mapear o ambiente, verificar a existência de móveis, 
calcular a rota e assim por diante. Todas essas operações já estão programadas. Por 
exemplo, caso encontre um objeto à frente, gire 90º para a direita e siga em frente. Para 
que uma instrução como essa seja salva no sistema do robô, é necessário que linguagens
específicas sejam utilizadas, afinal, o objetivo é instruir uma máquina formada por 
dezenas e milhares de transistores, resistores e circuitos. Assim, uma instrução na 
linguagem humana deve ser traduzida para linguagens compreendidas pela máquina por 
meio do que chamaremos de comandos. Portanto, uma operação que pode parecer 
simples do nosso ponto de vista muitas vezes será dividida em dezenas, centenas ou 
milhares de comandos para a máquina.
Desse modo, é possível inferir que o estudo da programação deve ser composto de 
outras áreas do conhecimento, como a lógica, pois é necessário que as sequências de 
comandos estejam organizadas logicamente de modo a fazer funcionar a máquina em 
toda sua complexidade. Além disso, elementos da matemática e até mesmo da linguística 
também são utilizados, pois para escrever um programa com instruções e comandos é 
fundamental que sigam as sintaxes e padrões estabelecidos.
O que é algoritmo
É comum hoje nos depararmos com a palavra algoritmo em notícias, vídeos, reportagens,
pois ela é utilizada em contextos diferentes como: eleições, propagandas, recomendação 
de filmes e séries, etc. O motivo para a difusão desta palavra é simples: o algoritmo é a 
base da programação. Mais especificamente, um programa de computador é a 
implementação de um ou mais algoritmos como solução para resolver um problema.
Do modo sucinto, pois abordaremos os detalhes em outro momento, um algoritmo é uma 
sequência de instruções e comandos para resolver um problema.
Reflita
Quais algoritmos você já utilizou em sua vida? Podemos pensar no ensino fundamental, 
quando aprendemos o algoritmo da divisão. Ou então os passos para resolver uma 
fórmula de Bhaskara; os passos para descobrir se um número é primo, entre outros.
Em resumo, um algoritmo é como uma receita, isto é, a descrição dos passos necessários
para se chegar a um resultado esperado.
Variáveis, tipos e operadores
Para que um programa implemente um algoritmo é preciso, além da lógica do algoritmo 
em si, um ferramental para manipular os dados e organizar as instruções. De modo geral, 
a maioria das linguagens de programação apresentam variáveis para armazenar dados, 
que possuem tipos específicos e podem ser relacionadas por meio de operadores.
Ao retomarmos o exemplo do robô aspirador, podemos imaginar de que modo vamos 
guardar a direção que o robô se encontra, sua velocidade, sua energia, se há ou não 
objetos próximos e assim por diante. Todas as informações devem ser armazenadas em 
variáveis. E, caso necessário, seus valores podem ser alterados, como ao alterar a 
direção. Por essa capacidade de modificar os dados armazenados chamamos a estrutura 
de variáveis, em oposição a constantes, que são dados armazenados imutáveis. Por 
exemplo: o peso do robô será uma constante, pois não deve sofrer variações de acordo 
com sua execução. Por último, para que as variáveis sejam alteradas é necessário 
manipulá-las, o que é feito com os operadores.
UM PROGRAMA E SEUS ELEMENTOS 
Agora, vamos aprofundar o estudo inicial de programas de computador e uso e tipos de 
variáveis. Para iniciar, temos uma receita de bolo abaixo:
Receita de bolo
• 2 xícaras de açúcar
• 3 xícaras de farinha
• 4 colheres de manteiga
• 3 ovos
• 1 colher de fermento
Modo de preparo:
• Bata as claras em neve;
• Misture as gemas, o açúcar e a manteiga;
• Acrescente o leite e a farinha de trigo aos poucos;
• Adicione as claras em neve e o fermento;
• Despeje a massa em uma forma grande de furo central;
• Asse em forno médio a 180 °C, preaquecido, por aproximadamente 40 minutos.
Observe que uma receita tem duas partes principais: os ingredientes utilizados e o modo 
de preparo (no nosso caso, o algoritmo), que é o passo a passo da manipulação dos 
ingredientes para obter o bolo conforme esperado. Assim, a sequência correta da 
execução das instruções é essencial para o resultado correto. Caso a última instrução 
fosse executada antes da hora, provavelmente o bolo não seria saboroso. Da mesma 
forma, as instruções de um programa de computador devem seguir uma sequência lógica 
de passos.
Ademais, não basta seguir a sequência correta se os recipientes e ingredientes não 
estiverem de acordo com a receita. Observe que na receita há um número certo de 
xícaras de farinha. Na nossa analogia da receita com um programa, os ingredientes 
seriam as variáveis, que podem ter suas quantidades alteradas de acordo com o tamanho
do bolo desejado e manipulados de acordo com cada operador, como adicionar as claras 
em neve e o fermento.
Tomemos agora um exemplo de um programa em que se deseja calcular a média de três 
números inteiros. Poderíamos escrever as instruções desse programa da seguinte 
maneira:
• Some os três números.
• Divida a soma dos três números pelo número 3.
• Imprima na tela o resultado.
Para os números 3, 4 e 9, por exemplo, poderíamos escrever o seguinte programa:
1. 3 + 4 + 9
2. (3 + 4 + 9) / 3 → Observe que os parênteses são utilizados da mesma forma que na 
notação da matemática
3. imprimir((3+4+9)/3))
Porém, caso quiséssemos utilizar o programa para calcular a média de 6, 7 e 10, teríamos
que reescrever todo o programa para tal.
1. 6 + 7 + 10
2. (6 + 7 + 10) / 3
3. imprimir((6 + 7 + 10)/3))
E assim por diante, isto é, para cada três novos valores seria necessário reescrever todo 
o programa.
Para resolver esta situação, introduzimos o uso das variáveis e assim nosso código pode 
ser reutilizado. Utilizaremos as variáveis x, y e z para representar os números, mas 
observe que você pode dar o nome que quiser, desde que o primeiro caractere seja uma 
letra. Por exemplo: numero1, numero2 e numero3, ou a, b e c, etc. E as variáveis soma e 
média representarão outras variáveis auxiliares.
Desse modo, o programa ficaria da seguinte maneira:
1. soma ← x + y + z
2. media ← (soma)/33. imprimir(media)
E, com isso, pode ser reaproveitado para quaisquer números, bastando modificar os 
valores de x, y e z. Assim temos um programa mais completo e eficiente. Contudo, ainda 
é preciso estar atento aos tipos das variáveis, afinal, a divisão de números inteiros nem 
sempre é inteira. Desse modo, é preciso especificar qual o tipo numérico de cada variável:
1. x: inteiro;
2. y: inteiro;
3. z: inteiro;
4. soma: inteiro;
5. media: decimal;
Desse modo, nosso primeiro programa está praticamente completo, com as variáveis e 
tipos definidos e o algoritmo de cálculo da média implementado: a primeira parte refere-se
ao que chamamos de declaração das variáveis e a segunda parte às instruções 
propriamente ditas do algoritmo:
// Declaração das variáveis
1. x: inteiro;
2. y: inteiro;
3. z: inteiro;
4. soma: inteiro;
5. media: decimal;
// Instruções do programa
6. soma ← x + y + z
7. media ← (soma)/3
8. imprimir(media)
Apesar de completo, este exemplo tem fins apenas didáticos, pois não está em uma 
linguagem reconhecida por nenhum compilador ou tradutor de linguagem de máquina. É o
que chamamos de pseudocódigo, pois simula o código de um programa em linguagem e
símbolos mais fáceis de serem compreendidos por nós, o que é a forma ideal de iniciar na
programação.
O USO DE VARIÁVEIS E OPERADORES
 Agora, veremos alguns exemplos de criação de programas básicos e sua implementação 
utilizando pseudocódigo para representar as variáveis e as operações.
Tome o exemplo a seguir:
1. x: inteiro;
2. y: inteiro;
3. x ← 2
4. y ← x
5. imprimir(y)
Qual o valor de y após a execução das duas linhas?
Neste caso, a variável y recebe o valor que estava armazenado em x, no caso, o valor 2.
Agora observe o caso a seguir:
1. x: inteiro;
2. y: inteiro;
3. x ← 2
4. imprimir(x)
5. y ← x + 1
6. x ← x + y
7. imprimir(x)
O programa possui dois comandos de impressão na tela. Quais os valores de x serão 
impressos?
Pare responder a essa pergunta precisamos executar o código passo a passo. Quando o
programa executar o primeiro comando “imprimir(x)” (linha 4), o valor de x será 2, pois até
aquele momento foi a última atualização da variável x.
Contudo, no momento da execução do segundo comando “imprimir(x)” (linha 7), o valor 
impresso será 5, você sabe explicar o porquê?
Após a primeira impressão, a variável y recebe o valor armazenado na variável x (que é 
igual a 2) mais o número 1, portanto, y está valendo 3. No próximo comando, a variável x 
recebe a soma dos valores armazenados em x (igual a 2) mais o valor armazenado na 
variável y (igual a 3). Portanto, a variável x é atualizada para o valor 5. Ou seja, deixa de 
armazenar o valor 2 para armazenar o valor 5.
Façamos agora um outro exemplo para fixar o conteúdo visto até o momento.
O objetivo do programa será implementar um algoritmo que leia o nome de duas pessoas 
junto com suas respectivas idades e imprima na tela uma mensagem de texto informando 
a soma da idade das duas pessoas. Por exemplo: se o usuário digitar o nome João e a 
idade 24 e o nome Maria com a idade 25, deve imprimir na tela a mensagem: “A soma da 
idade de João e Maria é 49”.
Para tanto, passamos a precisar de variáveis que representem texto e variáveis que 
representam números inteiros. Além disso, é preciso ler os nomes e idades, calcular a 
soma das idades e imprimir a mensagem solicitada, conforme o programa abaixo.
1. nome1: texto;
2. nome2: texto;
3. idade1: inteiro;
4. idade2: inteiro;
5. Ler(nome1); //neste momento é lido o primeiro nome
6. Ler(idade1); //neste momento é lida a primeira idade
7. Ler(nome2); //neste momento é lido o segundo nome
8. Ler(idade2); //neste momento é lida a segunda idade
9. soma ← idade1 + idade2;
10. Imprimir(“A soma da idade de “ nome1 “ e “ nome2 “ é “ soma);
Observação
As duas barras // indicam um comentário. Isso significa que o texto após as barras não faz
parte do código, como nas linhas 5, 6, 7 e 8.
Como último exercício de fixação, execute mentalmente (ou em um papel) o programa 
acima com diferentes nomes e idades e observe quais mensagens serão impressas ao 
final. Este é um bom exercício para compreender que um programa deve poder ser 
utilizado para diferentes tipos de valores, o que chamamos de entradas de dados.
Nesta aula, você aprendeu de maneira introdutória os principais conceitos de algoritmo, 
programa, variáveis, tipos de dados e alguns operadores. Bons estudos!
VÍDEO RESUMO 
Olá, estudante, no vídeo desta aula abordaremos os primeiros conceitos da lógica de 
programação de modo a complementar este material escrito. Abordaremos e ilustraremos 
a definição e os exemplos do uso de variáveis com os principais operadores de maneira a
consolidar essa etapa introdutória e essencial ao seu aprendizado.
Saiba mais
O estudo da lógica de programação e dos primeiros passos para pensar e construir 
algoritmos pode ser uma novidade interessante e desafiadora para muitas pessoas. Por 
isso, há diversas ferramentas disponíveis para auxiliar os estudantes nesta etapa. Uma 
das mais utilizadas para o nível introdutório é a linguagem Scratch, criada em 2007 pelo 
MIT e que utiliza elementos ilustrativos e blocos para ensinar o pensamento algoritmo de 
maneira lúdica e didática.
O Scratch, sua documentação e instruções para download estão disponíveis em seu site.
Aula 2
DEFINIÇÕES DE LÓGICA
https://scratch.mit.edu/
Nesta aula, você conhecerá uma temática fundamental para a compreensão do
pensamento algorítmico: a lógica proposicional, o ramo da lógica que auxilia a
compreender e organizar as variáveis, os métodos e as funções de maneira estruturada.
INTRODUÇÃO
Olá, estudante.
Nesta aula, você conhecerá uma temática fundamental para a compreensão do 
pensamento algorítmico: a lógica proposicional, o ramo da lógica que auxilia a 
compreender e organizar as variáveis, os métodos e as funções de maneira estruturada. 
Assim, por meio de definições e conceitos iniciais, você aprenderá o básico da lógica, os 
principais conectivos como conjunção, disjunção e condicional, bem como sua 
representação utilizando a tabela verdade.
Portanto, é importante que você acompanhe este material com atenção para que o 
conteúdo abordado sirva como base para o seu desenvolvimento futuro no mundo da 
programação.
Bons estudos! 
INTRODUÇÃO À LÓGICA
A lógica é um campo fundamental da ciência e da filosofia que estuda a representação do 
conhecimento, em que a preocupação principal é a validação da argumentação. Assim, a 
lógica, como veremos nesta aula, não busca verificar se uma ou mais afirmações são 
verdadeiras, mas se o modo como as afirmações são organizadas é válido.
No programação, um dos maiores desafios é como representar as informações do mundo 
real que são necessárias para a operação correta de um sistema. Assim, o estudo da 
lógica nos servirá para compreender a linguagem de representação de informações do 
mundo real assim como validar e organizar as instruções nos algoritmos.
A lógica é um extenso campo subdividido em diversos ramos. Entre eles, podemos 
destacar a lógica clássica (também chamada de lógica aristotélica em referência a 
Aristóteles), que é composta em alguns princípios elementares que definem suas regras:
• O princípio da identidade: este princípio, um tanto óbvio, afirma que algo é sempre 
algo. Isto é, a = a e b = b;
• O princípio da não contradição: estabelece que se uma afirmação é falsa, sua 
contraditória deve ser verdadeira. Ou seja, se uma afirmação A é verdadeira e outra 
afirmação B é o contrário de A, então B deve, obrigatoriamente, ser falsa;
• O princípio do terceiro excluído: estabelece que uma afirmação não pode ser falsa e 
verdadeira ao mesmo tempo.
Assim, uma vez definidos os princípios, é preciso definir o que é uma proposição. Uma 
proposição lógica é uma afirmação, uma declaração de algo. Mas, atenção, pois nem toda
sentença é uma proposição lógica. Por exemplo: "Feliz ano novo" é uma sentença 
exclamativa e não declarativa e, portanto, não é uma proposição. Para identificar uma 
proposiçãoé preciso sempre pensar que deve ser possível atribuir um valor lógico, isto 
é, uma proposição será sempre verdadeira ou falsa. Por exemplo: "5 é menor que 3".
Neste caso há uma declaração e a proposição em questão tem valor lógico falso, pois 5 
não é menor que 3. Um outro exemplo de proposição é: "O Brasil é o maior país da 
América do Sul e o Amazonas é o maior estado do Brasil".
Neste caso, temos duas proposições que formam uma proposição composta. Como 
podemos verificar, as duas proposições simples são verdadeiras e, portanto, a proposição
composta também é verdadeira.
Por fim, podemos observar um último elemento importante que abordaremos em maior 
profundidade a seguir que são os conectores. A proposição composta anterior foi 
formada por meio do conector e, que uniu as duas proposições menores. Os conectores 
que estudaremos são conjunção, disjunção, negação e condicional. A conjunção é 
também representada pelo e, a disjunção pelo ou, a negação pelo não e a condicional 
pelo se.
ELEMENTOS DA LÓGICA PROPOSICIONAL
A lógica proposicional é baseada no estudo dos valores lógicos, sentenças e afirmações 
que se representam por meio de proposições, como você observou no bloco anterior. 
Assim, você verá como essas sentenças declarativas podem ser relacionadas, formando 
proposições compostas em que o valor lógico depende dos valores de cada variável. 
Neste sentido, vamos aprofundar o conhecimento de cada uma delas para, no último 
bloco, analisar a aplicação desses conceitos por meio da tabela verdade.
Negação
A primeira das relações a ser estudada é a mais simples, a negação. Nesta operação, se 
uma variável p tem certo valor lógico, sua negação (representada por ~p) terá o valor 
oposto.
Por exemplo, dada a proposição:
p: o céu é amarelo
Sua negação será:
~p: o céu não é amarelo
A negação pode ser aplicada a uma variável isolada ou em proposições com mais 
variáveis.
Conjunção
A próxima operação analisada é a conjunção, que necessita de duas variáveis para sua 
aplicação. A conjunção nada mais é do que o conectivo que representa a intersecção, ou 
então, na língua portuguesa o E, isto é, uma coisa e outra. Por exemplo, tomando duas 
proposições p e q:
p: Brasília é a capital do Brasil
q: Buenos Aires é a capital da Argentina
Neste caso, a conjunção é representada da seguinte forma
p^q: Brasília é a capital do Brasil e Buenos Aires é a capital da Argentina
E, como ambas as proposições são verdadeiras a proposição resultante também é.
Disjunção
Outro conectivo muito importante é a disjunção, que representa a união da matemática, 
ou, em língua portuguesa, o OU. Mas atenção: a disjunção será verdadeira quando uma 
das variáveis for verdadeira ou ambas forem verdadeiras. Como exemplo temos as duas 
proposições p e q:
p: a água é transparente
q: o mar é vermelho
Deste modo, a disjunção é representada da seguinte forma:
p V q: a água é transparente ou o mar é vermelho
Condicional e bicondicional
Outros dois conectivos fundamentais para o estudo da lógica são o condicional e 
o bicondicional. Como o nome indica, a operação condicional representa uma condição 
e pode ser lida como se p então q (indicado pela seta à). Por exemplo,
p: choveu hoje
q: o asfalto está molhado
Assim, a condicional é representada por:
p à q: se choveu hoje então o asfalto está molhado
De modo análogo, temos a bicondicional, que é a condicional aplicada a ambas as 
direções e lida como p se e somente se q(representada por <->). Como exemplo temos:
p: a é primo
q: a é divisível por 2
Neste caso, a bicondicional é representada por:
p <-> q: a é primo se e somente se a é divisível por 2
Que, observando os valores lógicos de p e q, é falso.
Desse modo, você conheceu os principais conectivos lógicos da lógica proposicional que 
conformam o arcabouço que auxilia na compreensão e no desenvolvimento do 
pensamento algorítmico necessário para a programação.
A TABELA VERDADE E ALGUNS EXEMPLOS
Agora, veremos a aplicação dos conceitos da lógica por meio de exemplos e do uso da 
tabela verdade para a validação das proposições.
Tabela verdade
A representação mais interessante no início dos estudos da lógica proposicional é a 
tabela verdade, pois permite avaliar os valores lógicos resultantes das operações entre as
proposições de maneira mais direta.
A tabela é formada por colunas, sendo uma para cada variável proposicional e uma ou 
mais colunas para a proposição composta resultante, a depender do seu tamanho. No 
nosso caso, utilizaremos apenas a tabela com três colunas, conforme o exemplo a seguir, 
que representa a operação E indicada pelo operador ^. Observe que temos duas 
variáveis, p e q e, para cada uma, há 4 linhas com os possíveis valores lógicos. A terceira 
coluna corresponde à proposição composta p ^ q e possui os valores de todas as 
combinações possíveis entre os valores lógicos de cada variável.
Tabela 1 | Tabela verdade da conjunção
p q p ^ q 
F F F
F V F
V F F
V V V
Observe que a primeira linha interna da tabela tem a variável p com valor falso (F), a
variável q também com F e, na terceira coluna, o resultado da operação p ^ q com ambas
as variáveis F, que resulta em F. Na segunda linha, quando p é verdadeiro (V), q é F, o
resultado de p ^ q é F, afinal, para a conjunção ser verdadeira, é necessário que ambas
as proposições sejam verdadeiras, o que ocorre apenas na última linha da tabela.
A seguir temos a tabela da disjunção, isto é, dados p e q, a operação p V q. É importante
lembrar que a disjunção é a operação também conhecida como OU, ou seja, o resultado
será verdadeiro quando uma das duas proposições forem verdadeiras (ou ambas) – como
observamos nas três primeiras linhas – e falso quando nenhuma das duas forem
verdadeiras, conforme observamos na primeira linha da tabela.
Tabela 2 | Tabela verdade da disjunção
p q p v q 
F F F
F V V
V F V
V V V
É importante observar que a aplicação da tabela verdade é útil em muitos casos, mas
pode se tornar inviável a depender do número de variáveis que compõem a proposição.
Suponha que tenhamos 10 proposições simples formando uma proposição composta por
meio de operadores lógicos. Qual seria o número de linhas da tabela verdade?
Para responder a essa questão é preciso observar que o número de linhas de uma tabela
com uma única variável será 2, pois há apenas duas combinações possíveis. A tabela as
seguir ilustra a tabela verdade com apenas a variável p formando a proposição ~p, que é
a negação de p.
Tabela 3 | Tabela verdade da negação
p ~p 
F V
V F
Assim, retornando ao questionamento, uma tabela com uma variável possui 2 linhas, uma
tabela com duas variáveis possui 4 linhas, uma tabela com 3 variáveis terá 8 linhas.
Forma-se um padrão que é representado pela expressão , portanto uma proposição
composta por 10 variáveis terá 2¹⁰ linhas, ou 1024 linhas, o que torna difícil sua
representação para muitas variáveis.
VÍDEO RESUMO 
Olá, estudante, no vídeo desta aula abordaremos alguns conceitos da lógica, sua 
definição e elementos práticos de como manipular e validar argumentos por meio de 
exemplos e da construção da tabela verdade.
Saiba mais
O estudo da lógica proposicional pode ser complementado por estudos paralelos e pela 
prática em forma de exercícios. Desse modo, seguem alguns links com jogos educativos 
para praticar seu conhecimento em relação aos conceitos apresentados:
Lógica Proposicional Clássica - Quiz com exercícios sobre lógica.
Raciocínio Lógico - Conceitos Básicos – I - Quiz com perguntas.
Aula 3
ELEMENTOS FUNDAMENTAIS DE PROGRAMAÇÃO
Nesta aula você terá contato com os primeiros elementos necessários para iniciar o
desenvolvimento de programas de computador, o que será essencial para a evolução na
sua aprendizagem.
https://www.quiz.com.br/quiz/716/raciocinio-logico-conceitos-basicos-i/
https://quizizz.com/admin/quiz/5e184173be7d73001c424bf7/logica-proposicional-classica
INTRODUÇÃO
Olá, estudante.
Nesta aula você terácontato com os primeiros elementos necessários para iniciar o 
desenvolvimento de programas de computador, o que será essencial para a evolução na 
sua aprendizagem. Veremos como os algoritmos formam a base da computação e são 
fundamentais para que um sistema possa ser executado de maneira eficiente e 
adequada. Veremos também elementos estruturantes para a produção de códigos como 
os principais operadores aritméticos, lógicos e relacionais, e a noção e manipulação de 
variáveis e constantes. Esperamos que este material contribua para que seus estudos na 
introdução à programação sejam completos e auxiliem em sua vida acadêmica e 
profissional.
Bons estudos! 
OS ALGORITMOS NA PROGRAMAÇÃO
A computação tem como objetivo central a resolução de problemas pelo uso de máquinas 
potentes que são capazes de realizar bilhões de operações por segundo. E para que 
essas máquinas e esses equipamentos possam realizar seus cálculos e operações 
corretamente é necessário que as instruções sejam estruturadas de maneira lógica. Para 
isso, cabe aos programadores a tarefa de escrever as instruções a serem executadas. 
Assim, programar não é uma tarefa simples, pois exige conhecimentos sobre os 
equipamentos, linguagens de programação e, principalmente, sobre as melhores 
maneiras de resolver os problemas.
Neste sentido, antes de escrever as dezenas, centenas ou milhares de linhas de código 
para um sistema computacional, é fundamental o estudo e planejamento da solução e de 
sua lógica, para só então transformá-la em programas de computador. E é aqui que são 
desenvolvidos os algoritmos, que são as instruções de um programa em sequência e 
ordem determinadas, as quais garantem que uma entrada de dados será processada e 
resultará em uma saída que deve resolver o problema. É análogo a uma receita de bolo, 
em que o algoritmo deve instruir o cozinheiro ou cozinheira como processar os 
ingredientes e transformá-los em um bolo perfeito.
Desse modo, faz-se essencial estudar como desenvolver um bom algoritmo e conhecer 
as ferramentas utilizadas para construí-los e transformá-los em código. Para tanto, nesta 
aula abordaremos alguns dos elementos para darmos início à construção de códigos, 
como os operadores aritméticos, operadores relacionais, operadores lógicos, variáveis e 
constantes.
Em linhas gerais, os operadores possibilitam manipular e relacionar dados. Estes dados 
podem ser de vários, tipos: numéricos, textuais, lógicos, entre outros. E, na programação, 
a lógica de manipulação segue a lógica matemática que você conhece do ensino médio. 
Assim, como os dados podem sofrer alterações durante o algoritmo, há estruturas 
conhecidas como variáveis que servem para armazenar temporariamente um dado valor 
de dado tipo, de acordo com o que o programador definir. Essas variáveis, como o nome 
indica, podem sofrer variações em seus valores durante a execução do programa, 
diferente das constantes, que são dados imutáveis.
Ressaltamos a importância deste momento do aprendizado, pois a manipulação correta 
de variáveis, por exemplo, é a base para a execução eficiente de um programa de 
computador. Imagine, por exemplo, um programa de computador para orientar o 
lançamento de foguetes espaciais. São inúmeros cenários e fatores que podem decidir o 
sucesso ou fracasso do lançamento que devem ser todos considerados para o 
desenvolvimento do sistema. Como são milhares ou milhões os fatores que podem ser 
transformados em dados e analisados pelos programas, é dever do programador criar 
algoritmos corretos e eficientes utilizando corretamente as variáveis e as operações pois 
um programa com excesso de variáveis pode levar a estourar a capacidade de memória, 
e um algoritmo com operações em excesso pode sobrecarregar a capacidade de 
processamento. São detalhes como este que fazem diferença tanto no mercado de 
trabalho quanto na vida acadêmica de computação e que iniciaremos o estudo nesta aula.
O USO DE OPERADORES E VARIÁVEIS
Vamos aprofundar os conhecimentos sobre os operadores, variáveis e constantes, 
definindo cada um deles.
Operadores aritméticos
Os operadores aritméticos são aqueles utilizados para realizar cálculos aritméticos, da 
mesma maneira que você aprendeu na matemática. Neste bloco veremos os 4 principais: 
adição, subtração, divisão e multiplicação:
1. Adição
O operador de adição é o símbolo +. Para utilizá-lo, basta relacionar dois elementos 
sejam eles variáveis, constantes ou números. Por exemplo: a expressão 3 + 2 é uma 
adição válida, assim como 3 + num, desde que a variável num seja do tipo numérico. É 
possível também associar duas variáveis como num1 + num2, ou então variáveis e 
constantes, como em num2 + NUM3, em que num2 é uma variável e NUM3 uma 
constante. A ordem neste caso não faz diferença.
2. Subtração
O operador da subtração é o símbolo -. Analogamente à adição, é possível relacionar 
números, variáveis e constantes, como 3 - 4, ou então num1 - num2, ou então NUM3 - 4.
3. Divisão
O operador da divisão utilizado na maioria das linguagens de programação e em 
pseudocódigo é o /. Com ele é possível realizar divisões entre valores numéricos 
(números, variáveis e constantes). Assim como na matemática, também pode ser 
necessário o uso de parênteses para o correto resultado. Por exemplo, a divisão 3 + 4/2 é
diferente de (3+4)/2. Uma observação importante é que a divisão de números inteiros 
geralmente resultará um um resultado inteiro, portanto, é preciso estar atento ao tipo das 
variáveis e números utilizados.
4. Multiplicação
O último operador aritmético analisado é o de multiplicação, com o símbolo *. Neste caso, 
assim como na divisão, é preciso estar atento ao uso de parenteses. Por exemplo, 5 * 2 - 
3 é igual a 7, já 5 * (2 - 3) é igual a 5.
Uma característica importante, assim como na matemática, é a precedência dos 
operadores, pois a divisão e a multiplicação são realizadas antes da soma e da subtração.
Com base no que vimos, um exercício interessante é descobrir qual o valor da seguinte 
expressão: 4 - (5 * 2) / 5 ?
Operadores relacionais
Os operadores relacionais servem para testar os valores lógicos de uma dada expressão, 
isto é, se a expressão é verdadeira ou falsa.
1. Igualdade
Para testar a igualdade, utilizaremos o símbolo ==, como no exemplo: 5 == 7. Neste caso,
o resultado da expressão é falso, pois 5 não é igual a 7.
2. Diferença
Para testar a diferença, utilizamos o operador !=, como no exemplo 5 != 7. Neste caso, o 
resultado da expressão é verdadeiro, pois 5 é diferente de 7.
3. Maior e menor
Já para testar se um valor é maior ou menor que outro, utilizamos os mesmos operadores
que a matemática, > para testar se um valor é maior que outro e < para testar se um dado
valor é menor que outro. Por exemplo, 5 < 2 possui valor lógico falso, pois não é verdade 
que 5 é menor que 2, enquanto 5 > 2 retorna verdadeiro, pois de fato 5 é maior que 2. 
Ainda é importante salientar que é possível utilizar o símbolo >= e <= para testar se 
valores são maiores ou iguais e menores ou iguais a outros, respectivamente.
Operadores lógicos
Os operadores lógicos são utilizados, no nosso caso, para concatenar expressões, isto é,
se uma expressão composta é verdadeira ou falsa. Por exemplo: se quisermos avaliar as 
expressões 4 > 5 e a expressão 5 > 6 pela conjunção, escrevemos da seguinte maneira:
4 > 5 && 5 > 6. Neste caso, o resultado será falso, já que ambas as expressões são 
falsas.
No caso da disjunção utilizaremos o símbolo ||. Por exemplo: 5 > 3 || 6 >= 7. Neste caso, 
a expressão 5>3 é verdadeira e a expressão 6>=7 é falsa. Porém, a expressão completa 
5 > 3 || 6 >= 7 é verdadeira, pois trata-se de uma disjunção.
Variáveis e constantes
Por fim, vamos conhecer um pouco mais sobre variáveis e constantes.
Uma variável é um espaço na memória reservado para armazenar um valor de tipo pré-
determinado. Por exemplo: se quisermos armazenar um número inteiro, devemos
declarar uma variável com um nome que o programador escolhe e o tipo destavariável.
Para declarar uma variável inteira e uma real, é possível indicar:
num1: inteiro; num2: real;
A partir de então é possível armazenar valores nestas variáveis, utilizá-las em expressões
e até mesmo substituir seus valores.
Já as constantes são valores fixos. Uma vez atribuídos valores para as constantes (que
também recebem nomes e tipos), estes valores não podem mais ser modificados.
Convenciona-se escrever as constantes em letra maiúscula, como no exemplo a seguir:
NUM1: inteiro; NUM1 <- 5; A partir deste momento a constante NUM1 sempre conterá o
valor 5.
EXEMPLOS DE ALGORITMOS COMPLETOS
Agora, você irá consolidar o conhecimento adquirido anteriormente por meio da aplicação
da lógica de desenvolvimento de um algoritmo, a noção de operadores e a manipulação
de variáveis na solução de problemas.
A primeira etapa, conforme abordamos, é compreender o problema proposto. Vamos
iniciar com um problema simples: imprimir a soma de dois números inteiros.
Para isso, temos como entrada dois números, que precisamos salvar em duas variáveis,
como no código a seguir:
1. num1: inteiro;
2. num2: inteiro;
3. soma: inteiro;
4. ler(num1, num2);
Observe que nas três primeiras são declaradas as variáveis inteiras que utilizaremos. A 
seguir, é necessário utilizar o operador aritmético de adição para realizar a soma das 
variáveis e operador de atribuição para salvar o resultado na variável soma:
1. num1: inteiro;
2. num2: inteiro;
3. soma: inteiro;
4. ler(num1, num2);
5. soma <- num1 + num2;
6. imprime(soma);
Na linha 5 realizamos a operação de soma e, na linha 6, imprimimos na tela o 
resultado calculado. 
Agora passemos a um exemplo mais completo: ler 5 números inteiros e imprimir na 
tela quantos números positivos e negativos.
Para isso, é preciso inicialmente fazer a leitura de cada número. Quando um número é 
lido, é necessário salvar em uma variável, que neste caso será do tipo inteiro. Em 
seguida, é necessário utilizar o operador relacional para comparar se o número é maior
ou menor que zero e então incrementar a variável correspondente, conforme o 
pseudocódigo a seguir:
1. contador: inteiro;
2. num: inteiro;
3. qtdePositivos: inteiro;
4. qtdeNegativos: inteiro;
5. contador <- 0, qtdePositivos <- 0, qtdeNegativos <- 0;
6. enquanto contador < 5 faça:
7. ler(num)
8. se num > 0 então:
9. qtdePositivos <- qtdePositivos + 1;
10. se num < 0 então:
11. qtdeNegativos <- qtdeNegativos + 1;
12.
13. imprima(qtdePositivos, qtdeNegativos);
Agora vamos compreender o código acima. Nas linhas 1 a 4 são declaradas as variáveis 
que serão utilizadas, bem como o tipo de cada uma, que no caso são inteiras. A variável 
contador servirá para contar a quantidade de números lidos; as variáveis qtdePositivos e 
qtdeNegativos servem para contar a quantidade de números positivos e negativos, 
respectivamente; a variável num armazena cada número lido por vez. Na linha 5, há a 
inicialização dos valores de cada variável utilizando o operador de atribuição. A linha 6 
declara um laço de repetição, assunto que será abordado em aulas futuras. Entre a linha 
7 e a linha 11, o algoritmo em si, conforme explicado anteriormente, é executado com sua 
lógica de comparação e incremento das variáveis. E, por fim, na linha 13 há a impressão 
do resultado.
Observe que no decorrer do código utilizamos os operadores aritméticos de adição, os 
operadores relacionais de maior e menor e operador de atribuição. Um exercício 
interessante para fixar ainda mais o conteúdo é reler o código e marcar todas as 
ocorrências de cada operador indicando seu tipo.
Desse modo você aprendeu a manipular variáveis e operadores para construir algoritmos 
básicos utilizando pseudocódigo.
VÍDEO RESUMO
Olá, estudante, no vídeo desta aula abordaremos a importância de pensar em algoritmos, 
como desenvolver um algoritmo eficiente, assim como os principais elementos que o 
constituem como variáveis, constantes e os principais operadores.
Saiba mais
O pensamento algorítmico é fundamental para um bom programador. Nesse sentido, uma 
das maneiras de entrar no mundo dos códigos é por meio dos jogos.
CodeCombat - Jogo online para aprender a programar.
CodinGame - Jogo que envolve programação em várias linguagens.
Aula 4
ALGORITMOS
Nesta aula você terá um contato mais aprofundado com a construção e o
desenvolvimento dos algoritmos. Serão introduzidos conceitos importantes de
representação de algoritmos antes do momento da implementação utilizando linguagens
de programação.
INTRODUÇÃO
Olá, estudante.
Nesta aula você terá um contato mais aprofundado com a construção e o 
desenvolvimento dos algoritmos. Serão introduzidos conceitos importantes de 
representação de algoritmos antes do momento da implementação utilizando linguagens 
de programação. Afinal, você deve se perguntar se um algoritmo só pode ser 
implementado utilizando uma linguagem específica como a C, Java ou outras. E, para 
isso, mostraremos as técnicas de descrição narrativa e pseudocódigo, além de abordar a 
 
https://www.codingame.com/start
https://codecombat.com/
declaração de variáveis e entrada e saída de dados por meio delas.
Bons estudos!
CONSTRUÇÃO DE ALGORITMOS
Estudante, neta aula, você aprenderá mais algumas características dos algoritmos que 
são importantes neste momento do início da sua jornada pelo mundo da programação.
Você já aprendeu que para desenvolver uma solução para qualquer problema 
computacional é preciso compreender o problema, esboçar uma solução e aí então iniciar
a escrita. Neste momento, introduziremos duas maneiras de escrever o projeto de 
algoritmos: a descrição narrativa e o pseudocódigo.
Vale ressaltar que ambas as técnicas não são programas em linguagem de máquina, isto 
é, que podem ser compilados e executados, mas, sim, instruções redigidas em ordem e 
estrutura definidas para que a lógica da programação esteja clara para futuros 
desenvolvimentos.
Neste sentido, podemos afirmar que essas técnicas assemelham-se a um esboço do 
código final, apresentando os principais passos para resolver um problema em um nível 
de abstração mais alto, em que detalhes da implementação por vezes não estão 
presentes. Por isso, esse tipo de representação pode ser chamado de também de alto 
nível, pois o nível de abstração é maior, em oposição às linguagens de baixo nível, que 
são linguagens mais próximas à linguagem utilizada para a manipulação direta das 
estruturas físicas do computador.
Assim, a definição da descrição narrativa pode ser ampliada para a representação passo 
a passo em linguagem natural das instruções do algoritmo e o pseudocódigo, de modo 
muito similar, da descrição dos passos em maiores detalhes e com maior capacidade de 
representação de estruturas. Por exemplo: com o pseudocódigo é possível explicitar a 
declaração de variáveis, isto é, deixar claro o nome da variável e seu tipo, como no 
exemplo a seguir:
num1: inteiro; 
Neste caso foi declarada a variável chamada num1 do tipo numérico inteiro. Note que, na 
descrição narrativa, não há a preocupação em declarar as variáveis, mas apenas informar
passos mais gerais. Outro elemento que a técnica de pseudocódigo permite aprofundar é 
a entrada e saída de dados, que são as operações de leitura e impressão, por exemplo. 
São estas operações que realizam a comunicação com cenários externos ao programa, 
pois recebem os dados que serão utilizados para a execução de um programa e, após 
seu processamento, devolvem o resultado em forma de saída. Uma maneira de 
representar a leitura de um número no pseudocódigo seria:
ler(num1);
Assim, informa-se ao leitor que será realizada a operação (função ou método) de leitura 
de algum valor e que este valor será armazenado na variável chamada num1. 
Analogamente, a saída de dados também é representada da seguinte forma:
imprime(num1);
Neste caso está representada uma chamada a uma operação de impressão da variável 
num1. Esta impressão poderia ser realizada em um terminal de saída, por exemplo, ou 
atémesmo gravada em arquivos.
ETAPAS DE DESENVOLVIMENTO DE ALGORITMOS 
Você já estudou sobre a importância de um bom algoritmo para resolver um problema
computacional, conheceu os principais operadores, as variáveis e constantes, porém
pode se questionar qual o próximo passo. Afinal, o projeto de algoritmos mentalmente é
importante, porém não suficiente, já que é preciso documentar e escrever os passos
utilizados.
Contudo, como estamos introduzindo o ensino da programação, antes de iniciar os
códigos diretamente utilizando uma linguagem de programação como o C, Java ou
Python, você aprenderá duas técnicas úteis para representar o algoritmo de modo inicial,
de modo a auxiliar no planejamento e visualização de uma solução para algum problema
proposto.
Descrição narrativa
A técnica da descrição narrativa tem como função a descrição em linguagem natural (no
nosso caso o português) dos passos necessários para resolver o problema proposto. Ou
seja, trata-se da descrição do algoritmo em uma linguagem mais próxima da resolução
mental proposta e, por isso, é a primeira forma de documentar e planejar um programa.
Podemos pensar em uma receita que buscamos na internet como uma descrição
narrativa, pois ali estão descritos os passos para realizar um prato em língua portuguesa,
ou seja, é altamente compreensível para o ser humano mas não é capaz de executar um
programa de computador. Para escrever uma descrição narrativa, basta inserir cada
passo da solução por linha. Por exemplo, para calcular o menor número dentre dois
números dados, o algoritmo em descrição narrativa seria o seguinte:
1. Ler os dois números
2. Comparar os números
3. Imprimir o menor
Dessa maneira, nota-se que a descrição narrativa é mais enxuta e objetiva.
Um elemento que aparece neste caso é a entrada e saída de dados. A entrada está
representada na linha 1, em que a instrução de leitura de dois números é informada. Esta
leitura pode ser do teclado ou de um arquivo. E a saída pode ser a impressão na tela, ou
a gravação em algum arquivo
Pseudocódigo
O uso do pseudocódigo pretende utilizar a linguagem natural com maiores detalhes
técnicos, indicando quais variáveis serão utilizadas e como as expressões serão
formadas. Para resolver o mesmo problema anterior, o pseudocódigo seria o seguinte:
1. num1: inteiro;
2. num2: inteiro;
3. ler(num1, num2);
4.
5. se num1>num2:
6. imprime(num2);
7. se num2 > num1:
8. imprime(num1);
Observe que neste caso deixamos claro quais as variáveis, seu tipo, como serão lidas e 
alguns elementos mais claros de sintaxe, como o uso de ponto e vírgula ao fim de cada 
linha. Apesar de possuir mais regras de sintaxe que a descrição narrativa, o pseudocódigo
também não serve para ser executado como um programa de computador, mas sim para 
elucidar e auxiliar no planejamento de algoritmos.
ALGORITMOS NA PRÁTICA 
Agora, veremos alguns exemplos práticos na construção de algoritmos utilizando a 
descrição narrativa e a técnica de pseudocódigo apresentadas anteriormente.
Tomemos como base para a construção dos códigos o seguinte problema: você deve 
desenvolver um programa de computador para uma agência de monitoramento climático 
e foi solicitado que, com os dados de temperatura de sete dias da semana, você escreva 
um programa que calcule a média das temperaturas.
Para iniciar o desenvolvimento do código, é preciso, inicialmente, estudar o problema e 
analisar as entradas do programa. Neste caso, o problema principal é calcular a média de 
7 temperaturas e a solução é aplicar a fórmula da média, sendo dividir a soma dos valores
pela quantidade de valores, no caso o número de dias da semana. Para analisar as 
entradas, observamos que o programa irá receber 7 valores de temperatura, que serão 
valores reais. Portanto, até o momento, já sabemos a fórmula que devemos implementar 
e os tipos dos valores utilizados que serão transformados em variáveis.
Por fim, é preciso analisar qual será a saída do programa, isto é, qual o resultado. No 
nosso caso, o resultado será a impressão da média calculada.
Desse modo, temos as condições necessárias para desenvolver o código. Iniciaremos 
mostrando o código em descrição narrativa:
1. Ler os 7 valores de temperatura
2. Somar os 7 valores
3. Dividir a soma dos valores por 7
4. Armazenar o resultado na média
5. Imprimir a média calculada
Assim, é possível notar que o programa em descrição narrativa é simples e direto, 
evidenciado em linhas gerais os passos que serão efetuados, porém sem apresentar 
detalhes maiores, como as variáveis utilizadas.
Em seguida, apresentamos o código em pseudocódigo:
1. temp1: real;
2. temp2: real;
3. temp3: real;
4. temp4: real;
5. temp5: real;
6. temp6: real;
7. temp7: real;
8. soma: real;
9. media: real;
10.
11. ler(temp1, temp2, temp3, temp4, temp5, temp6, temp7);
12. soma <- temp1 + temp2 + temp3 + temp4 + temp5 + temp6 + temp7;
media <- soma/7;
13. media <- soma/7;
14. imprime(media);
Em relação ao exemplo em pseudocódigo, é possível observar que o código tem mais 
detalhes que a descrição narrativa e é mais próximo a uma implementação real em 
linguagem de programação. Neste caso, são descritas quais as variáveis e quais seus 
tipos, como descrito das linhas 1 a 9, como se dá a entrada de dados, na linha 11, as 
operações em si, linhas 12 e 13 e a saída de dados na linha 14.
Assim, você aprendeu duas técnicas para representar algoritmos que auxiliam no 
planejamento e projeto, etapas importantes para a futura implementação nas linguagens 
de programação.
VÍDEO RESUMO
 Neste vídeo você verá maiores detalhes sobre as técnicas de descrição narrativa e
pseudocódigo por meio de mais um exemplo de cada, de modo a fixar este importante
conteúdo. Também abordaremos as estratégias de construção de algoritmos utilizando
variáveis e entrada e saída de dados.
Saiba mais
O uso de pseudocódigo é muito importante para visualizar a estratégia de resolução de
problemas antes da implementação em si. Existem diversas ferramentas que auxiliam no
aprendizado como a linguagem em pseudocódigo Portugol.
REFERÊNCIAS
Aula 1
DASGUPTA, S.; PAPADIMITRIOU, C.; VAZIRANI, U. Algoritmos. Porto Alegre: AMGH 
Editora, 2009.
ZIVIANI, N. et al. Projeto de algoritmos: com implementações em Pascal e C. Luton: 
Thomson, 2004.
Aula 2 
LABRA, J. E.; FERNÁNDEZ, A. I. Lógica proposicional para informática. Cuaderno 
Didáctico, n. 12, 1998.
MORTARI, C. A. Introdução à lógica. Unesp, 2001.
Aula 3 
DASGUPTA, S.; PAPADIMITRIOU, C.; VAZIRANI, U. Algoritmos. Porto Alegre: AMGH 
Editora, 2009.
ZIVIANI, N. et al. Projeto de algoritmos: com implementações em Pascal e C. Luton: 
Thomson, 2004.
 
https://portugol-webstudio.cubos.io/
Aula 4
 DASGUPTA, S.; PAPADIMITRIOU, C.; VAZIRANI, U. Algoritmos. Porto Alegre: AMGH 
Editora, 2009.
ZIVIANI, N. et al. Projeto de algoritmos: com implementações em Pascal e C. Luton: 
Thomson, 2004.
UNIDADE 2
ELEMENTOS DE ALGORITMOS
•Aula 1 - Representações de algoritmos 
•Aula 2 - Execução sequencial e estruturas de decisão
•Aula 3 - Estruturas de repetição
•Aula 4 - Variáveis indexadas
•Referências
Aula 1
REPRESENTAÇÕES DE ALGORITMOS 
Nesta aula você aprenderá a definição de algoritmos, sua aplicabilidade e conceito como
peça fundamental para desenvolvimento de um programa de computador.
INTRODUÇÃO
Olá, estudante!
Nesta aula você aprenderá a definição de algoritmos, sua aplicabilidade e conceito como 
peça fundamental para desenvolvimento de um programa de computador. Também irá 
estudar quais as principais propriedades de um algoritmo e como fluxogramas podem ser 
criados para representar algoritmos. 
Todo este conhecimento é a base fundamental para a construção de softwares, já que 
https://conteudo.colaboraread.com.br/202301/WHITE_LABEL/ALGORITMOS_E_LOGICA_DE_PROGRAMACAO/LIVRO/U2/index.html#referencias
https://conteudo.colaboraread.com.br/202301/WHITE_LABEL/ALGORITMOS_E_LOGICA_DE_PROGRAMACAO/LIVRO/U2/index.html#aula4
https://conteudo.colaboraread.com.br/202301/WHITE_LABEL/ALGORITMOS_E_LOGICA_DE_PROGRAMACAO/LIVRO/U2/index.html#aula3https://conteudo.colaboraread.com.br/202301/WHITE_LABEL/ALGORITMOS_E_LOGICA_DE_PROGRAMACAO/LIVRO/U2/index.html#aula2
https://conteudo.colaboraread.com.br/202301/WHITE_LABEL/ALGORITMOS_E_LOGICA_DE_PROGRAMACAO/LIVRO/U2/index.html#aula1
você exercitará a criação da lógica necessária para o processo de desenvolvimento de 
novas aplicações ou manutenção em aplicações já existentes.
Lembre-se que o seu aprendizado só dependerá de você, então, não se limite apenas ao 
estudado em aula, mas busque, de forma proativa, ampliar seus conhecimentos.
Bons estudos!
O QUE SÃO ALGORITMOS E QUAIS SUAS APLICABILIDADES
Em seu cotidiano, todas as ações que você executa têm uma sequência lógica de passos 
para sua conclusão. Mesmo que, de forma inconsciente, você não precise ficar 
raciocinando sobre a ordem de execução de cada passo, em algum momento, alguém te 
ensinou a sequência que você reproduz. A esta sequência lógica de passos para executar
uma ação denominamos algoritmo.
Os passos necessários para obter um resultado de uma ação, como, por exemplo, 
preparar uma receita culinária, devem seguir uma sequência lógica com o objetivo de 
estabelecer uma ordem no pensamento das etapas que deverão ser seguidas para que a 
refeição, ao final do processo, esteja pronta. 
Segundo o que apresenta Forbellone (1993), a sequência finita e ordenada de passos 
necessária para se atingir um objetivo (como trocar um pneu, preparar uma receita 
culinária ou sair de casa para ir ao trabalho) é o que se conhece como um algoritmo.
Um programa de computador (software) é a representação, por meio de uma linguagem 
de programação, de uma lógica que irá resultar em um comportamento esperado para o 
programa, como, por exemplo, o cadastro de dados de uma pessoa em uma clínica 
médica, marcação de consultas a partir de uma agenda disponível de um médico, dentre 
outros exemplos do nosso cotidiano.
Então, antes da construção de qualquer programa de computador, é necessário entender 
o processo de raciocínio lógico e a definição dos passos necessários para a construção 
de um algoritmo.
Como exemplo de um algoritmo simples para, por exemplo, abrir uma porta trancada, 
você pode listar os seguintes passos:
1. selecionar a chave correta para a fechadura que se deseja abrir;
2. inserir a chave na fechadura;
3. se a chave encaixou corretamente, então:
3.1 gire a chave no sentido anti-horário uma volta;
3.2 tente abrir a porta. Se a porta abriu, então:
3.2.1 porta aberta com sucesso.
3.3 Se a porta não abriu, então:
3.3.1 Volte ao passo 3.1 
Quando os passos, em sua respectiva sequência lógica, são listados, é possível perceber,
por exemplo, que cada tarefa tem um certo nível de complexidade e um determinado 
padrão de comportamento (uma porta que possua chaves mecânicas sempre seguirá a 
mesma lógica para sua abertura).
É importante mencionar que, em muitos casos, será necessário que o usuário forneça 
algumas informações de entrada ao algoritmo (como nome, endereço e RG de uma 
pessoa que será cadastrada como aluna em uma instituição de ensino, por exemplo), que
passará por um processamento (como uma validação, por exemplo), gerando um 
resultado (efetuar o cadastro do aluno com sucesso). 
Para que a lógica de um algoritmo possa ser representada de modo que fique claro para 
outras pessoas que conheçam lógica de programação e algoritmos, você poderá utilizar 
um fluxograma, ou seja, a representação gráfica de um fluxo de passos sequenciais, por 
meio do uso de símbolos com significados específicos. 
Conforme nos apresenta Pressman (1995), a construção de um fluxograma é um método 
bastante utilizado para representação da lógica de um algoritmo por ser simples, fazendo 
uso de losangos para representação de uma condição de controle e setas para mostrar 
qual o fluxo a seguir, conforme cada alternativa possível que parta do fluxo de condição. 
Uma sequência de passos pode ser representada por meio de retângulos. Detalharemos 
a representação utilizando fluxogramas em um momento posterior neste texto.
PRINCIPAIS CARACTERÍSTICAS DE UM ALGORITMO 
Toda lógica que se pretende transferir a um programa de computador poderá ter 
diferenças na forma como as etapas são ordenadas para se atingir o objetivo desejado, a 
depender da maneira pela qual quem está construindo o algoritmo ordene seu 
pensamento lógico.
Porém, existem alguns pontos fundamentais para garantir que um algoritmo seja 
compreendido facilmente e, caso necessário, sofra alterações evolutivas (quando se 
deseja acrescentar novas funcionalidades a uma aplicação), adaptativas (quando se 
deseja ajustar funcionalidades já existentes para o que o usuário considera mais 
adequado para resolver seus problemas) ou corretivas (quando é feita correção de erros 
detectados durante a utilização do programa). A estes pontos damos o nome 
de propriedades de um algoritmo.
Quando a construção de um algoritmo se preocupa em garantir que as principais 
propriedades serão respeitadas, o processo de representação deste algoritmo em 
fluxograma será facilitado, garantindo maior probabilidade de sucesso ao longo do 
processo de codificação (implementação) de sua lógica.
Uma das propriedades dos algoritmos é a sequenciação, já que, para que se atinja um 
objetivo específico (como cadastrar os dados um usuário, extrair um relatório, etc.), é 
preciso que os passos necessários para a concretização da funcionalidade sejam 
definidos em uma ordem sequencialmente lógica. Por exemplo: caso o seu algoritmo seja 
de cadastro de dados de um paciente, é preciso que uma tela contendo os campos que 
serão informados pelo usuário possa aparecer, seguindo-se do preenchimento destes 
campos e do envio para que possam ser validados (conforme as regras de negócio) e 
cadastrados. Caso o envio aconteça antes da etapa de informação dos dados, a 
sequência lógica será quebrada, não sendo possível alcançar o propósito final 
(cadastramento dos dados).
A complexidade é outra propriedade importante para um algoritmo. Quanto mais simples 
os passos e a sequência lógica destes passos aconteçam, mais simples será seu 
algoritmo, sendo mais fácil de ser construído e mantido posteriormente.
Um fator que aumenta a complexidade, de forma considerável, conforme apresenta 
Forbellone (1993), é a relação entre o que deve ser feito e o como deve ser feito, que 
pode levar a respostas tão complexas que não cheguem a nenhuma solução.
Quando você perguntar “O quê?”, terá uma resposta direta e objetiva. Por exemplo: na 
pergunta “O que é um relógio?”, uma resposta objetiva seria similar a “instrumento que 
apresenta a passagem do tempo, ao longo de um dia”. Já a pergunta “Como é um 
relógio?”, por outro lado, poderá ter diferentes e irrelevantes respostas, como “objeto 
esférico com ou sem ponteiros, com tamanhos variados, que pode ser de parede, 
bancada ou de pulso”.
A legibilidade é uma propriedade importante para garantir que outras pessoas irão 
conseguir ler o seu algoritmo e ter um mesmo entendimento a respeito de seu objetivo. 
Quanto maior for a legibilidade de um algoritmo, mais facilmente ele será entendido e 
menor será sua complexidade.
Outra propriedade importante de um algoritmo é a portabilidade. Construir um algoritmo 
que possa ser executado em diferentes sistemas operacionais e diferentes arquiteturas de
máquina (hardware) é uma questão importante para englobar os mais diferentes perfis e 
tipos de usuários de uma aplicação. Um algoritmo, por ser apenas a representação de 
uma sequência lógica de passos que irão resolver um problema do mundo real do 
usuário, poderá ser escrito (implementado) utilizando diferentes linguagens de 
programação e para os mais diferentes ambientes de execução.
Todas estas propriedades são importantes para garantir que, após a definição de quais 
passos serão necessários para se atingir um objetivo com um algoritmo, a sua 
representação em fluxogramas seja feita de forma fácil, contendo apenas os passos 
estritamente necessários, sem maiores complexidades e de fácil manutenibilidade(facilidade de manutenção futura).
UTILIZANDO FLUXOGRAMAS PARA A REPRESENTAÇÃO DE ALGORITMOS
Algoritmos podem ser representados por meio de fluxogramas, como já mencionado, já 
que esta ferramenta possui os elementos gráficos necessários para representação de 
uma sequência de passos, com representação para tomada de decisões e fluxo de 
repetição de passos.
Todo fluxograma tem um início e um fim, sendo o início representado pela primeira ação 
(ou passo) a ser executada para se atingir o objetivo da lógica estruturada. É importante 
que você defina um “gatilho” para que a sua lógica seja iniciada, ou seja, uma ação que 
deverá ser feita pelo usuário (como o clique em um botão de menu, a abertura de uma 
tela contendo um formulário, dentre outras), para que a sequência de passos possa, 
então, seguir a partir desta ação inicial.
Tabela 1 | Principais símbolos de um fluxograma
Elemento Significado
Elemento que indica início do fluxo a ser 
construído.
Elemento que indica um passo a ser executado, 
em forma sequencial.
Elemento que indica uma condição (pergunta) 
que irá alterar o fluxo da execução, conforme a 
Elemento Significado
resposta (Sim ou Não).
Elemento que indica sequência do fluxo.
Elemento que indica término do fluxo.
Fonte: elaborada pela autora.
A Tabela 1 apresenta um resumo dos principais elementos que são utilizados para 
construção de um fluxograma. É possível, por exemplo, criar fluxos contendo apenas 
elementos sequenciais ou, em fluxos mais elaborados, contendo fluxos alternativos, que 
irão partir de tomada de decisões.
A Figura 1 apresenta um exemplo de um fluxograma básico, sem estrutura de controle, 
apenas com um sequenciamento de passos do início ao fim.
O início de todo fluxograma deve ser representado com um conector, que irá exibir qual 
será o primeiro passo para ser executado em busca do resultado esperado.
Figura 1 | Representação de um fluxograma simples
Fonte: elaborada pela autora.
A Figura 1 apresenta uma sequência de passos simples para o envio de um e-mail a um 
ou mais destinatários. O primeiro elemento do fluxo apresenta um conector, indicando que
o processo será iniciado. Cada caixa retangular irá indicar um passo a ser executado, 
sendo ligadas por setas, que indicam a sequência que deverá ser seguida. Ao final do 
processo, um elemento que representa a conclusão do fluxo, sendo representado por um 
elemento ovalado, apresenta o objetivo concluído (que é o e-mail enviado).
Para fluxos mais complexos, que incluem situações de tomadas de decisão ou fluxo de 
repetição de passos, elementos que representam os caminhos alternativos a serem 
seguidos podem ser inseridos no fluxo, conforme apresentado na Figura 2.
Figura 2 | Fluxograma com tomada de decisão
Fonte: elaborada pela autora.
A Figura 2 apresenta uma sequência de passos para a abertura de uma porta, conforme 
exemplo apresentado em momento anterior neste texto. Após o conector que representa o
início do processo ter sido inserido, então o fluxo se inicia com uma pergunta condicional 
sobre a chave, se é compatível com a fechadura da porta a ser aberta ou não. Caso seja 
compatível, o fluxo será alternado para o ramo da esquerda, seguindo pelas etapas de 
girar a chave, verificar se a porta se abriu e, caso a porta não abra, então, o fluxo 
retornará para a etapa de girar chave no sentido anti-horário, repetindo os passos abaixo 
deste. Caso a porta se abra, então o fluxo será finalizado.
Uma pessoa que não tenha elaborado este fluxograma, ao realizar a leitura deste, deverá 
ter o mesmo entendimento dos passos e fluxos condicionais, o que caracteriza a 
propriedade de legibilidade do algoritmo.
A partir de um fluxograma, deverá ser possível implementar sua lógica em qualquer 
linguagem de programação desejada.
VÍDEO RESUMO
Olá, estudante! Neste vídeo você aprenderá os principais conceitos e aplicações de um 
algoritmo, a importância da sequência lógica de passos para construção de um algoritmo, 
suas principais propriedades e a importância de cada propriedade.
Você também irá aprender a importância de um fluxograma para a construção de um 
algoritmo e como a construção destes fluxogramas poderá ser utilizada para representar 
um algoritmo. 
Saiba mais
Com a ferramenta gratuita diagrams.net (draw.io), é possível criar fluxogramas de uma 
forma simples, sem a necessidade de criar contas ou realizar login.
A ferramenta gratuita Portugol Webstudio é voltada para o teste da lógica de 
programação, em linguagem natural, para iniciantes no aprendizado de algoritmos. Você 
poderá ver um exemplo clicando no link “Abrir Exemplo” e, ao clicar em “Novo Arquivo”, 
poderá criar a sua própria lógica. Inicie a partir do exemplo Entrada e Saída à Olá, mundo.
É o mais simples e o que você poderá reproduzir de forma mais fácil. A partir daí, vá 
seguindo com os demais exemplos, sempre tentando aglutinar os exemplos aprendidos 
em um mesmo arquivo.
Aula 2
EXECUÇÃO SEQUENCIAL E ESTRUTURAS DE DECISÃO
Nesta aula, você aprenderá a estrutura básica necessária para elaboração de um
programa de computador.
INTRODUÇÃO
Olá, estudante!
Nesta aula, você aprenderá a estrutura básica necessária para elaboração de 
um programa de computador, quais são as estruturas sequenciais que podem 
ser utilizadas e quais elementos podem ser utilizados como formas de decisão 
 
https://dgadelha.github.io/Portugol-Webstudio/
https://dgadelha.github.io/Portugol-Webstudio/
https://app.diagrams.net/
no seu código, que irão permitir que o fluxo principal seja alternado para outro 
fluxo, conforme o teste de uma condição específica (que poderá dar verdadeiro 
ou falso como resultado).
Ao final desta aula, você será capaz de criar um código simples, contendo 
estruturas sequenciais e de decisão.
Lembre-se que você é responsável pelo seu aprendizado, então, não se limite 
apenas ao visto em aula, mas busque enriquecer seus conhecimentos por meio 
de outras fontes confiáveis.
Bons estudos!
ESTRUTURAS SEQUENCIAIS E CONDICIONAIS DE UM 
ALGORITMO 
Um algoritmo, para que possa ser legível e interpretado por um computador ou 
outra pessoa, precisa seguir uma estrutura básica, mantendo sua organização 
lógica e seguindo um fluxo principal, que irá culminar no resultado (objetivo 
final) desejado.
Então, é preciso que as estruturas sequenciais, como a declaração 
de variáveis (endereços de memória que irão receber valores que variam ao 
longo do tempo) e declaração de constantes (informações que são definidas 
uma única vez na lógica, não sofrendo alterações ao longo do tempo) precisam 
estar organizadas logo no início do seu algoritmo. É possível definir valores 
para as variáveis declaradas, por meio do processo de atribuição, que pode ser 
proveniente da execução de uma operação matemática ou um número já 
definido.
Uma característica de uma variável é a sua tipificação, ou seja, ela irá 
armazenar valores de um mesmo tipo de dados, que pode ser inteiro, real 
(ponto flutuante), caractere (que armazena texto, podendo ser um ou mais 
caracteres) e lógico (também conhecido como booleano, por armazenar os 
valores verdadeiro ou falso). Então, se uma variável é declarada como inteiro, 
ela não poderá armazenar números com pontos flutuantes ou informações 
textuais, pois irá contra a sua tipificação.
Figura 1 | Fluxo para declaração de variáveis
Fonte: adaptada de Forbellone (1995).
A Figura 1 apresenta a forma como uma variável deve ser declarada. Primeiro, 
você deverá definir qual será o tipo de dado (ou tipo primitivo) que ela irá 
armazenar, seguindo-se do caractere “:” e do nome (identificador) que irá 
representar a sua variável. Para finalizar a sua declaração, você deverá utilizar 
o caractere “;”, indicando a finalização do comando.
Um exemplo simples de declaração de variáveis. 
caractere : nomePaciente;
inteiro : idade;
real : valorConsulta;
logico : ehPrimeiraConsulta;
O exemplo mostra algumas variáveis sendo declaradas com seus respectivos 
tipos primários associados. Então, temos uma variávelque irá armazenar texto, 
com identificador nomePaciente, uma variável que irá armazenar números 
inteiros, com identificador idade, uma variável que irá armazenar números com
ponto flutuante, com identificador valorConsulta e uma variável que irá 
armazenar um valor lógico (verdadeiro ou falso), com 
identificador ehPrimeiraConsulta.
Com estas variáveis declaradas, você poderá solicitar informações (entrada de 
dados) ao usuário que executará sua aplicação ou armazenar resultado de 
operações matemáticas (cálculos utilizando números simples ou outras 
variáveis). Estas operações irão seguir uma sequência lógica, que irá 
representar os passos do seu algoritmo. A seguir veja um exemplo de um 
algoritmo contendo uma estrutura sequencial simples para ler e escrever um 
número informado pelo usuário.
1 inteiro : numero;
2 leia (numero);
3 escreva "o número digitado foi: " + numero;
Observe que, as operações acontecem de forma sequencial, ou seja, primeiro 
(linha 1) é declarada a variável que irá armazenar o valor informado pelo 
usuário, que será numérico. Em seguida, na linha 2, você irá solicitar ao usuário
que digite um valor e, na linha 3, o valor digitado será concatenado (símbolo de 
+) ao texto entre aspas duplas, apresentando qual foi o valor digitado.
É possível, além de realizar operações simples de atribuição, também 
acrescentar comandos condicionais, que irão realizar uma avaliação lógica de 
uma condição e, a depender do resultado verdadeiro ou falso, alterar o fluxo 
principal para alternativos. O comando condicional mais simples para 
testar uma condição é o se, que pode ser estruturado conforme exemplo a 
seguir.
Se <condição_a_ser_testada> Então
Lógica, caso verdadeira a condição
Senão
Lógica, caso falsa a condição
O fluxograma que representa uma condicional simples se deve ser elaborado 
conforme apresentado na Figura 2.
Figura 2 | Fluxograma para uma estrutura de decisão simples
Fonte: elaborada pela autora.
A Figura 2 apresenta o fluxo para uma condicional simples se. A partir do teste 
de uma condição, caso a resposta seja verdadeira, então uma sequência 
específica de comandos deverá ser executada. Caso o resultado lógico do teste
seja falso, então um outro conjunto de comandos poderá ser executado. Após 
o término de execução da estrutura condicional, o algoritmo irá retomar seu 
fluxo principal de passos até a sua conclusão. Iremos apresentar um exemplo 
prático em momento posterior nesta aula.
Também é possível fazermos uma condição mais complexa, que envolva 
diferentes opções de resultado, conhecida como escolha. Um comando do 
tipo escolha irá avaliar o valor de uma variável simples declarada conforme 
uma lista de diferentes opções. A lógica do seu algoritmo, então, poderá ser 
alterada para a opção que o valor for igual ao valor contido na variável. A seguir 
veja a estrutura condicional complexa escolha.
Escolha <variável>:
caso <valor_variável1>:
<sua lógica>
caso <valor_variável2>:
<sua lógica>
caso <valor_variável3>:
<sua lógica>
caso contrário:
<sua lógica>
Com a estrutura condicional complexa escolha, cujo formato de declaração 
está apresentado, você poderá testar o valor de uma variável dentre um 
conjunto de valores, construindo uma lógica diferente para cada possibilidade 
de valor. Caso nenhuma das possibilidades listadas seja atendida, o fluxo irá 
seguir a lógica do caso contrário.
O fluxograma que representa uma condicional complexa escolha segue o 
modelo apresentado na Figura 3.
Figura 3 | Fluxograma para a estrutura condicional complexa escolha
Fonte: elaborada pela autora.
A Figura 3 apresenta como deverá ficar um diagrama de fluxo para uma 
condicional do tipo escolha. A escolha se dará a partir do valor que uma 
variável poderá assumir, sendo executado o bloco de instruções que irá 
corresponder ao valor já conhecido e que a variável esteja assumindo no 
momento do teste. Caso nenhum dos valores possíveis seja igual ao valor atual 
da variável testada, então a cláusula caso contrário terá suas instruções 
executadas (comportamento padrão).
COMO E QUANDO UTILIZAR CADA TIPO DE ESTRUTURA EM 
UM ALGORITMO 
Vamos iniciar com um exemplo de algoritmo simples, para que você possa 
entender em qual momento poderá utilizar cada tipo de estrutura apresentada 
anteriormente. 
Caso você precise construir uma lógica para testar se a idade informada pelo 
usuário é menor ou maior que 60 anos, você irá utilizar uma estrutura 
condicional simples da seguinte forma:
•  Caso a idade informada seja menor que 60 anos, então você deverá 
apresentar a mensagem “Idade menor que 60”;
•  Caso a idade informada seja maior ou igual a 60, a mensagem apresentada 
deverá ser “Idade igual ou superior a 60”.
Para transcrever a lógica acima apresentada para um algoritmo, você deverá 
utilizar uma estrutura condicional se – senão simples, como mostrado a 
seguir.
1 se (idade < 60) então
2 escreva "Idade menor que 60.";
3 senão
4 escreva "Idade maior ou igual a 60";
Porém, no exemplo apresentado, não é possível saber se a idade informada é 
igual a 60 ou maior, caso entre na condição senão. Então, vamos alterar a 
lógica para apresentar uma mensagem personalizada para cada faixa etária, da
seguinte forma:
• Caso a idade do usuário esteja entre 16 e 18 anos, você irá apresentar a 
mensagem “Olá, adolescente!”;
• Caso a idade do usuário esteja entre 19 e 59 anos, você irá apresentar a 
mensagem “Olá, adulto!”;
• Caso a idade do usuário esteja acima de 60 anos, você irá apresentar a 
mensagem “Olá, idoso!”;
• Caso a idade não do usuário for abaixo de 16 anos, a mensagem deverá ser 
“Não permitido uso por pessoas com idade inferior a 16 anos.”.
Existem formas diferentes de construir esta lógica. Caso você tenha listado os 
passos do algoritmo utilizando o operador condicional simples se, você deverá 
realizar um teste para cada condição, ou seja, um para cada faixa etária que se 
deseja verificar a idade que o usuário informou. Isso irá encadear vários 
comandos condicionais se, para a resolução do algoritmo proposto.
1 se (idade >= 16 e idade <=19) então
2 escreva “Olá, adolescente!”;
3 senão se (idade >=20 e idade <=59) então
4 escreva “Olá, adulto!”;
5 senão se (idade >= 60) então
6 escreva “Olá, idoso!”;
7 senão
8 escreva “Não permitido uso por pessoas com idade inferior 
a 16 anos.”;
Perceba, conforme o apresentado, que o teste de cada se irá retornar um valor 
lógico verdadeiro ou falso. Além disso, a idade informada pelo usuário, 
antes que os testes sejam feitos, deverá ser lida pela sua lógica, caracterizando
então a necessidade de armazenamento temporário desta informação em 
uma variável do tipo inteiro.
Porém, estamos considerando que o usuário já irá informar a idade dele, não a 
data de nascimento para que o cálculo da idade seja feito, a partir do ano atual. 
Então, seguindo esta linha de raciocínio, você deverá listar os passos iniciais do
seu algoritmo como:
1. Solicitar ao usuário que informe sua idade;
2. Armazenar a idade informada em uma variável para testes;
3. Testar a idade informada para cada faixa etária desejada.
O comando condicional complexo escolha serve para que você possa 
simplificar a sua lógica, em caso de muitas condicionais simples se aninhadas. 
Trocando o tipo de estrutura por uma escolha, você poderá testar, em uma 
única condição, todas as opções que desejar como possiblidades, 
possibilitando, ainda, a definição de uma mensagem padrão, caso nenhuma das
opções sejam atendidas.
Uma diferença, porém, entre os comandos condicionais simples se e 
complexo escolha, é o tipo de teste que deve ser feito para que o fluxo 
principal possa ser alternado. Enquanto o se poderá ter mais de uma condição 
em seu teste, como o exemplo se (idade > 18) e (nome = ‘João’ ou nome = 
‘Maria’) então, o condicional escolha irá selecionar, dentre uma lista de 
valores, os que podem ser assumidos por uma determinada variável, sem, 
efetivamente, testar uma ou mais condições.
Um exemplo de usoda estrutura condicional escolha pode ser visto a partir da
alteração do algoritmo apresentado a seguir.
1 escreva "Digite sua faixa etária: 1 - Adolescente; 2 - Adulto;
3 - Idoso";
2 leia (faixa_etaria);
3 
4 escolha(faixa_etaria)
5 caso 1
6 escreva “Olá, adolescente!”;
7 caso 2
8 escreva “Olá, adulto!”;
9 caso 3
10 escreva “Olá, idoso!”;
11 caso contrario:
12 escreva “Não é uma opção válida.”;
No exemplo, fizemos um pequeno ajuste solicitando que o usuário informe 
números em uma faixa já esperada (1, 2 ou 3), indicando sua faixa etária. 
Qualquer outro número informado será considerado opção inválida. 
UTILIZANDO ESTRUTURAS SEQUENCIAIS NA CRIAÇÃO DE UM
ALGORITMO
Para que você ponha em prática todo o conteúdo estudado nesta aula, iremos 
iniciar com um exemplo de um algoritmo básico, contendo uma estrutura 
condicional simples se. 
O exemplo inicial consiste na criação de um algoritmo para o cálculo de um 
desconto de 10% em cima de um valor inteiro positivo informado pelo usuário, 
apresentando, como resultado, o valor descontando (que irá representar os 
10%). Se o valor descontado for igual ou superior a 20, então apresente a 
mensagem “Valor inicial acima de 200”. Caso o valor descontado seja inferior a 
20, então apresente a mensagem “Valor inicial entre 0 e 199”.
1 Ler valor
2 Calcular desconto de 10% em cima do valor lido
3 Escrever valor do desconto de 10% calculado
4 Se valor do desconto for igual ou superior a 20
5 Apresentar mensagem “Valor inicial acima de 200”
6 Se valor do desconto for inferior a 20
7 Apresentar mensagem “Valor inicial entre 0 e 199”
Conforme os passos apresentados para o algoritmo proposto, teremos, como 
primeira ação, que solicitar um valor de entrada ao usuário. Este valor, no 
entanto, deverá ser armazenado de forma temporária, até que uma nova 
solicitação seja feita. Também deverá armazenar o resultado do valor do 
desconto de 10% calculado, para que possa ser apresentada a mensagem 
coerente com o resultado, após a execução do teste condicional.
1 inteiro : valor;
2 inteiro : resultadoDesconto;
3 
4 leia(valor);
5 resultadoDesconto = valor * 0,10;
6 
7 se (resultadoDesconto >= 20) então
8 escreva(“Valor inicial acima de 200”);
9 
10 se (resultadoDesconto < 20) então
11 escreva(“Valor inicial entre 0 e 199”);
Vimos um algoritmo em pseudocódigo. Note que, nas linhas 1 e 2, as variáveis 
que serão utilizadas no código estão sendo declaradas, sendo elas a 
variável valor, que será informada pelo usuário, e a 
variável resultadoDesconto, que armazenará o valor do desconto de 10% 
sobre o valor informado. A linha 5 realiza uma operação de atribuição do 
cálculo dos 10% sobre a variável valor à variável resultadoDesconto. As 
linhas 7 e 10 apresentam o operador condicional simples se sendo utilizado 
para testar o valor do resultado obtido com o cálculo dos 10%. O teste deverá 
sempre retornar um verdadeiro ou falso, sendo que, no exemplo 
apresentado, apenas o resultado verdadeiro irá apresentar a mensagem 
contida na ação escreva em cada teste.
Note que, neste exemplo, podemos aperfeiçoar nossa lógica fazendo uma 
pequena modificação nas linhas 7 e 10. Você poderá utilizar a 
condição senão para o condicional se da linha 7, não sendo necessário fazer 
um novo teste se, como apresentado na linha 10. Então, veja o exemplo de 
alteração da lógica para uso do condicional senão.
1 inteiro : valor;
2 inteiro : resultadoDesconto;
3 
4 leia(valor);
5 resultadoDesconto = valor * 0,10;
6 
7 se (resultadoDesconto >= 20) então
8 escreva(“Valor inicial acima de 200”);
9 senão
10 escreva(“Valor inicial entre 0 e 199”);
A troca do condicional se, apresentado pelo condicional senão, apresentado 
na linha 9 só é possível pois não existem outras opções, para o algoritmo 
apresentado, de valores que a variável resultadoDesconto poderá assumir. 
Para cada condicional se, você poderá utilizar um senão, que irá ser 
executado caso o teste no se dê negativo.
Quando se utiliza o senão, qualquer outro valor que a 
variável resultadoDesconto assuma, inclusive menor que zero, irá 
apresentar a mensagem “Valor inicial entre 0 e 199”, o que não está de acordo 
com o nosso requisito inicial. Então, é possível que um teste, ao dar negativo, 
possa efetuar um novo teste, em sua cláusula senão, conforme o exemplo de 
alteração do algoritmo para inclusão de se aninhado.
7 se (resultadoDesconto >= 20) então
8 escreva(“Valor inicial acima de 200”);
9 senão se (resultadoDesconto > 0) então
10 escreva(“Valor inicial entre 0 e 199”);
11 senão
12 escreva(“Valor inicial menor que 0”);
Na linha 9 do novo exemplo, em comparação com a linha 9 do exemplo anterior,
foi alterada para realizar um novo teste condicional se, em cima da 
variável resultadoDesconto, para saber se seu valor é maior que zero 
(atendendo, portanto, ao requisito de número inteiro positivo). Caso não seja um
inteiro positivo, o fluxo alternará para a linha 11, apresentando a mensagem de 
“Valor inicial menor que 0”.
VÍDEO RESUMO
Olá, estudante! Neste vídeo, você irá aprender como um algoritmo deve ser 
estruturado, sendo composto por elementos sequenciais e condicionais. Irá 
aprender, também, um exemplo prático da estrutura condicional 
complexa escolha. Seu código, ao final do vídeo, poderá ser elaborado de 
modo a realizar tomada de decisões simples e complexa e alterar o fluxo 
principal para fluxos alternativos, dependendo da resposta a cada decisão.
Saiba mais
Por meio do projeto Portugol, escolhendo a opção “Abrir Exemplo” à Algoritmos 
sequenciais, você irá encontrar exemplos práticos para a definição de variáveis 
(exemplo “Troca Variáveis”), além da utilização de condicionais simples 
(exemplo “Maioridade penal”). Ao escolher o menu “Desvios condicionais”, 
ainda nos exemplos disponíveis, é possível ver um exemplo de uso do 
condicional complexo escolha em “Escolha – Caso”, além dos demais 
exemplos, que apresentam variações do uso do condicional se.
Aula 3
ESTRUTURAS DE REPETIÇÃO
Nesta aula, você aprenderá os conceitos e a utilização das principais estruturas de
repetição de trechos de código em um algoritmo.
INTRODUÇÃO
Olá, estudante!
Nesta aula, você aprenderá os conceitos e a utilização das principais estruturas de repetição de 
trechos de código em um algoritmo. Irá aprender em quais situações deverá aplicar cada uma das 
estruturas apresentadas, o que são condições de parada e como elaborá-las para cada tipo de laço de 
repetição.
Também serão apresentados os principais símbolos para representação dos laços de repetição em 
fluxogramas. Desta forma, os diagramas de fluxo que você irá criar serão mais completos, podendo 
representar lógicas mais complexas.
Lembre-se que você é responsável pelo seu aprendizado, então, não se limite apenas ao visto em 
aula, mas busque enriquecer seus conhecimentos por meio de outras fontes confiáveis.
Bons estudos!
https://dgadelha.github.io/Portugol-Webstudio/
O QUE SÃO ESTRUTURAS DE REPETIÇÃO E COMO UTILIZÁ-LAS 
Em sua lógica para a resolução de uma determinada tarefa do dia a dia, você poderá precisar que 
um trecho desta tarefa se repita por uma quantidade limitada de vezes (até que uma condição de 
parada seja satisfeita). Um bom exemplo é quando implementamos um algoritmo para subir uma 
escada. Como você não sabe, logo no começo do processo, quantos degraus serão necessários subir 
para que se chegue ao topo da escada, seu algoritmo deverá fazer uma sequência de passos, subindo
cada degrau individualmente, até que não existam mais degraus a subir e, consequentemente, se 
tenha chegado ao topo da escada (objetivo final).
A ação de subir um degrau e realizar um teste (se chegou ou não ao topo) é listada uma única vez na
sequência de passos lógica do seu algoritmo, porém, esta ação se repetirá até que uma condição de 
parada seja satisfeita (que é chegar ao topo da escada).
Existem diferentes formas de implementar uma estrutura

Continue navegando