Buscar

DELL - INTRODUÇÃO A LOGICA DA 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 86 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 86 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 86 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

Tópico 1 – O Modelo Computacional de John von 
Neumann 
Objetivos 
 Compreender o conceito de Modelo computacional; 
 Entender o relacionamento entre os componentes do modelo de Von Neumann. 
Neste tópico, conheceremos a arquitetura de um computador a partir de um modelo computacional, 
conhecendo seus componentes e suas respectivas funções. 
Computadores são máquinas que recebem dados e instruções de programação, executam essas instruções 
utilizando esses dados e produzem uma saída, ou seja, um resultado. Essa sequência de operações 
caracteriza um ciclo de processamento. A figura 1 representa o modelo de um ciclo de processamento da 
informação. 
Figura 1 - Modelo de processamento da informação
 
 
A palavra máquina está associada ao termo em inglês hardware. Em sistemas computacionais 
o hardware compreende todos os dispositivos físicos (entrada, saída, memória e CPU) que compõem um 
sistema computacional. 
 
As instruções de programação que compõem um programa de computador estão associadas ao termo em 
inglês software. O software compreende todos os programas que fazem o hardware funcionar. 
Os computadores que usamos atualmente seguem um modelo computacional concebido pelo cientista húngaro 
John von Neumann. (Fonte: http://www.ias.edu) 
 
O modelo proposto por Von Neumann define um computador como uma máquina programável composta 
pelos seguintes componentes: 
 Memória Principal (MP). 
 Unidade central de processamento ou CPU (Central Processing Unit), também conhecido como 
processador, que por sua vez é composta por: 
1. Registradores. 
2. Unidade Lógica e Aritmética (ULA). 
3. Unidade de Controle (UC), responsável por buscar em um programa na memória principal, instrução por 
instrução, e executá-la sobre os dados de entrada carregados nos registradores. 
 
Unidade Lógica e Aritmética (ULA): a ULA é um conjunto de circuitos eletrônicos que executa operações 
lógicas (como comparações) e aritméticas (como somas, subtrações, divisões etc.). Ela recebe da Unidade de 
Controle os dados que irá manipular e o código da operação que deve executar, devolvendo um resultado em 
seguida. 
 
Registradores são a unidade de memória temporária, capazes de armazenar alguns bits. São a variedade 
de memória mais rápida que existe atualmente e por isso ficam junto ao processador. Devido à sua velocidade, 
são extremamente caros. 
O modelo de Von Neumann define que dados e programas são carregados, a partir de dispositivos de 
entrada, para dentro do sistema computacional. Além disso, o resultado de um processamento é enviado para 
um dispositivo de saída. Na figura 3, você pode visualizar melhor esse Modelo Computacional de Von 
Neumann. 
http://www.ias.edu/
Figura 3 - Modelo Computacional de Von Neumann
 
 
Nessa figura, podemos perceber que as setas indicam o que está sendo trocado entre dois elementos 
do modelo e em qual sentido. Por exemplo, um dispositivo de entrada fornece dados e programas à memória 
principal. Dados são trocados entre a memória principal e a CPU em ambos os sentidos, ou seja, ambos 
recebem e enviam dados. 
O modelo computacional de Von Neumann propõe uma arquitetura de computador que é caracterizada, 
com relação à execução de um programa, da seguinte forma: 
 Um programa é um conjunto de instruções que serão executadas na CPU. As instruções de 
programação são lidas a partir de dispositivos de entrada. As instruções são armazenadas em uma memória 
principal. 
 Instruções de programação movimentam dados para a CPU. Na CPU, as instruções de programação 
que envolvem operações lógicas e aritméticas são executadas na ULA, utilizando os dados armazenados em 
registradores. Registradores são locais de armazenamento para dados e instruções usados pela CPU. O 
resultado da execução de instruções geralmente retornam à memória principal na forma de uma informação a 
ser armazenada. Essa sequência de operações caracteriza um ciclo de processamento da informação. 
 O ciclo de processamento da informação definido acima é executado continuamente até que uma 
condição que caracteriza a finalização do processamento seja alcançada. 
 As saídas geradas pelo ciclo de processamento são enviadas aos dispositivos de saída. 
Nesse tópico, estudamos o modelo computacional de Von Neumann e vimos que esse modelo permite 
compreender as funcionalidades que são executadas pelos dispositivos que compõem um sistema 
computacional. No próximo tópico, estudaremos os componentes de hardware de um sistema computacional. 
 
TÓPICO 2 – Componentes de um Sistema Computacional 
Objetivo 
 
 Identificar os componentes de um sistema computacional. 
 Neste tópico, serão apresentados os componentes de um sistema computacional que comumente estão 
presentes nos modelos atuais de computadores. Esses componentes são componentes físicos (hardwares) que 
executam funcionalidades inerentes ao modelo de processamento da informação (entrada-processamento-
saída). 
 
 
 
Os principais componentes de um sistema computacional são: 
 
Dispositivos de entrada: funcionam exclusivamente para a entrada de dados ou comandos para 
execução. Exemplos: teclado e mouse. 
 
Dispositivos de saída: funcionam exclusivamente para a saída de dados, geralmente resultados de um 
processamento. Exemplos: impressora e monitor de vídeo. 
 
Dispositivos de entrada e saída: funcionam tanto para entrada como para saída de dados. A maioria desses 
dispositivos é usada para o armazenamento de dados que são gravados para serem utilizados posteriormente. 
Exemplos: disco rígido, leitora e gravadora de DVD e CD e dispositivo USB (Pen Drive). 
Existem também sistemas computacionais que são usados para prover processamento móvel, como por 
exemplo, em: notebooks, tablets e smartphones. 
Memória: a memória principal é um circuito eletrônico no qual são armazenados dados e programas. São 
apresentados cinco circuitos de memória. Cada circuito será fixado em um local da placa-mãe, identificado 
como banco de memórias. 
UCP: a Unidade Central de Processamento (CPU) consiste em um circuito integrado que irá compor, 
juntamente com a memória e as conexões dos dispositivos de entrada e saída, o sistema computacional. Na 
CPU, serão executadas as instruções de programação. 
Na maioria dos computadores, esses dispositivos são reunidos em um circuito eletrônico chamado placa-mãe. 
Nesse tópico, conhecemos os componentes de hardware que compõem um sistema computacional. 
 
TÓPICO 3 – Tipos de Sistemas Computacionais 
Objetivo 
 
 Conhecer os tipos de sistemas computacionais. 
Neste tópico, apresentaremos os diversos tipos de sistemas computacionais atualmente usados em 
empresas, escritórios etc. 
Os diversos tipos de sistema computacional possuem em comum os componentes apresentados nos 
tópicos anteriores. O que irá diferenciar um sistema computacional de outro serão as características dos seus 
componentes, como CPU (desempenho), memória (desempenho e capacidade de armazenamento), 
dispositivos de entrada e saída (desempenho e capacidade de armazenamento de dados). 
Há sistemas computacionais que processam e armazenam grandes volumes de dados, como 
os mainframes. Há sistemas computacionais que se agrupam e se interligam por meio de redes de 
comunicação para criar processamento distribuído de aplicações e de dados. Você pode observar um 
equipamento que foi estruturado para ser utilizado como servidor de aplicação de dados. 
 
Existem também sistemas computacionais que são usados para prover processamento local, como o 
computador que você utiliza para realizar as atividades do curso de Lógica de Programação, conhecido 
como desktop. Existem também sistemas computacionais que são usados para prover processamento móvel, 
como nos notebooks, tablets e smartphones. 
Outros sistemas computacionais que são muito utilizados em diversas atividades da indústria e na área 
de serviços são os dispositivos de identificação de usuários, como os smart cards. Os cartões de crédito e as 
carteirasde estudante também possuem esse pequeno circuito eletrônico (Smartcards) que é programável em 
Java. Eles possuem memória e CPU. 
Há equipamentos que utilizam microcontroladores para realizar funcionalidades programadas rígidas, ou 
seja, que variam pouco. Exemplo: máquinas de lavar, forno micro-ondas, sistemas de freio ABS, sistemas de 
navegação em aviões etc. 
Os sistemas em que são usados os microcontroladores são conhecidos como sistemas embarcados. 
Durante essa aula, conhecemos o modelo de sistema computacional usado na maioria dos 
computadores, proposto por Von Neumann. Esse modelo inclui uma unidade de processamento e uma 
memória, através dos quais o computador pode executar programas escritos usando uma linguagem de 
programação. 
Também vimos os componentes de hardware que compõem os computadores modernos e os tipos de 
sistemas computadorizados que estão ao nosso redor, de laptops e tablets a smart cards. Na próxima aula, 
estudaremos a lógica e entenderemos sua função na criação de programas de computador. 
 
Referências 
 FORBELLONE, A.; EBERSPÄCHER, H. Lógica de Programação - A construção de algoritmos e 
estruturas de dados. 3 ed. Pearson Education, 2005. 
 MEDINA, M.; FERTIG, C. Algoritmos e Programação - Teoria e Prática. 2 ed. Novatec, 2006. 
 PUGA, S.; RISSETTI, G. Lógica de programação e estruturas de dados com aplicações em 
Java. Pearson Education, 2003 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Capítulo 3 
Tópico 1 – O que são algoritmos? 
Objetivo 
 Explicar o que é um algoritmo e qual a sua função. 
Durante este tópico, iremos compreender o que são algoritmos e como eles são fundamentais 
para a construção de programas de computador. Veremos alguns exemplos para identificarmos 
as características que todo algoritmo apresenta. 
Na aula anterior, você teve o primeiro contato com o conceito de abstração. Vimos alguns 
exemplos da análise de objetos e situações do dia a dia, com o objetivo de extrair suas principais 
características. Essas características nos permitem construir um modelo, uma representação de 
objeto ou situação, contendo aquilo que é relevante. A partir daí, podemos trazer esse modelo 
para dentro do computador, para que ele nos ajude em diversas tarefas. 
O computador é capaz de receber um conjunto de dados e uma lista de comandos que ele 
consiga executar. O encadeamento dessa lista de comandos é que faz o computador realizar 
tarefas grandes e complexas que produzem um resultado. Chamamos essa lista de comandos 
de algoritmo. 
 
Definição de Algoritmo 
Existem diversas definições para algoritmo, quase sempre ditas informais. Isso porque, assim 
como a lógica, é difícil propor uma definição formal única para algoritmo. Cormen (2002, p. 3) 
define: 
... algoritmo é qualquer procedimento computacional bem definido que toma algum valor ou 
conjunto de valores como entrada e produz algum conjunto de valores como saída. Portanto, um 
algoritmo é uma sequência de passos computacionais que transformam a entrada na saída. 
A definição proposta por Cormen (2002) é focada em algoritmos para construção de 
programas de computador, com um pouco mais de rigor técnico. Mas usamos algoritmos várias 
vezes por dia. Vejamos uma definição mais simples e próxima da nossa realidade: algoritmo é 
uma sequência de passos ordenados e finitos, que visam resolver um problema 
 
Quando dizemos passos ordenados, significa que existe uma ordem entre esses passos e que a 
mudança dessa ordem pode influenciar o resultado da execução do algoritmo. Já a característica 
de passos finitos quer dizer que o algoritmo não pode ter uma quantidade infinita de passos. 
Afinal, um algoritmo com infinitos passos nunca teria sua execução concluída e, portanto, nunca 
chegaria a um resultado. 
Figura 1 – Composição de um algoritmo 
 
A figura 2 apresenta as características fundamentais de um algoritmo: 
Figura 2 – Características de um algoritmo 
 
Já vimos algumas definições de algoritmos e suas características, que tal vermos agora alguns exemplos 
de algoritmos? 
Algoritmo Preparar Café 
Início 
1. Ferver a água. 
2. Colocar o pó de café na água. 
3. Misturar bem para dissolver o pó na água. 
4. Passar a mistura no filtro de café. 
5. Adicionar açúcar (opcional). 
Fim 
 
Vejamos um novo exemplo, mais próximo dos computadores. 
Algoritmo Enviar E-mail 
 
Início 
1. Fazer login no seu provedor de e-mail. 
2. Clicar no botão de criar e-mail. 
3. Preencher o campo referente ao destinatário com o endereço de e-mail da pessoa para 
quem você quer enviar a mensagem. 
4. Preencher o campo referente ao assunto ao qual se refere à sua mensagem. 
5. Escrever a sua mensagem na área de mensagem. 
6. Enviar a mensagem clicando no botão de envio. 
Fim 
 
 
Você pode estar pensando: um algoritmo para preparar café? Um algoritmo para enviar e-
mail? Esses são exemplos de tarefas que são executadas com frequência. E o que existe de 
comum entre o exemplo do preparo de café e envio de e-mail? As características de um 
algoritmo. Veja o quadro 1, a seguir. Ele aponta as características dos algoritmos em cada um 
dos dois exemplos citados. 
Quadro 1 – Características dos algoritmos Preparar Café e Enviar E-mail 
Característica Algoritmo Preparar Café Algoritmo Enviar E-mail 
Tem um nome. Preparar Café. Enviar E-mail. 
Resolve um problema. 
Fazer uma xícara/bule de 
café. 
Enviar um e-mail para um 
amigo/colega de trabalho/etc. 
Possui uma entrada. Café, açúcar e água. 
Endereço de e-mail do destinatário, 
assunto e mensagem. 
Possui uma saída. Café pronto para beber. Mensagem de e-mail enviada. 
Tem quantidade de passos 
e tempo de execução 
finitos. 
5 passos. 6 passos. 
É formado por passos 
precisos, sem ambiguidade. 
Ex: ferver água, adicionar 
açúcar. 
Ex: Preencher campo referente ao 
destinatário; Enviar a mensagem 
clicando no botão de envio. 
Podemos dizer, após vermos esses dois exemplos, que um algoritmo é como uma receita, um 
guia, um plano escrito da resolução de um problema ou execução de uma tarefa. Um algoritmo 
serve como referência sobre quais passos devemos executar para alcançar um objetivo. Esse 
objetivo pode ser simples como fazer um sanduíche, ou complexo como projetar um equipamento 
eletrônico. 
 
Função de um algoritmo 
Você pode se questionar sobre a função de um algoritmo, afinal, a maioria de nós não precisa 
de um guia escrito para preparar café ou enviar um e-mail. Mas o computador é diferente. Lembra 
que dissemos que o computador não tem a inteligência humana? Pois é, ele precisa de 
instruções para executar cada tarefa que lhe damos, mesmo que ele já a tenha feito diversas 
vezes. 
Caixa Atenção : Os algoritmos são a base para um programa de computador, seu alicerce, mas 
não são o programa em si. Se você quer aprender a programar, tem que aprender a desenvolver 
algoritmos primeiro. E, para isso, você não precisa de um computador. Tudo o que você precisa 
para desenvolver algoritmos é a capacidade de analisar tarefas e descrever cada passo necessário 
para realizá-las. 
 
No próximo tópico, veremos mais exemplos de algoritmos. Por hora, é importante que você 
compreenda bem as seguintes ideias: 
1. Algoritmos não são exclusivos para computadores, são uma descrição da execução de qualquer 
tarefa. 
2. Na computação, algoritmos são a base para a criação de programas de computador. 
A partir de um algoritmo, podemos escrever um programa usando uma linguagem de 
programação. É uma espécie de tradução: primeiro criamos o algoritmo, depois o traduzimos para 
linguagem de programação, o que chamamos de código-fonte. Só depois o computador compila 
ou interpreta esse código-fonte, transformando-o em um programa executável. 
 
Figura 3 – Processo de transformação de um algoritmo em programa de computador 
 
Os processos de compilação e interpretação têm como objetivo transformar um código-fonte 
em algo que o computador possaexecutar. Esses dois processos diferem com relação ao 
momento dessa transformação: prévia, no caso da compilação, ou tardia (no momento de usar o 
programa), no caso da interpretação. 
Entenda que conhecer a fundo uma linguagem de programação é fundamental para escrever 
o código-fonte, mas o seu algoritmo influenciará muito mais a qualidade do seu programa do que 
seu conhecimento sobre linguagens. É nesse momento que podemos perceber a importância da 
criação dos algoritmos. Um algoritmo bem feito economiza tempo em correções no seu programa. 
Vamos fazer um pequeno exercício para compreender e fixar bem essa ideia? 
Quiz 
Imagine que você está construindo uma nova casa. Essa nova casa tem uma planta, ou seja, 
um projeto da sua estrutura desenhado por um engenheiro ou arquiteto. Digamos que esse 
projeto contém uma falha: uma das vigas está com o tamanho errado e isso pode comprometer a 
estrutura da casa. Agora responda, em qual fase é mais fácil e mais barato consertar essa falha? 
 
a) Na planta (projeto da casa) 
 
 
https://leadfortaleza.com.br/ead2pcd/conteudo/tmp/myopenolat_1_101716479107977/aula/index-fisico.html
https://leadfortaleza.com.br/ead2pcd/conteudo/tmp/myopenolat_1_101716479107977/aula/index-fisico.html
https://leadfortaleza.com.br/ead2pcd/conteudo/tmp/myopenolat_1_101716479107977/aula/index-fisico.html
É muito mais simples, rápido e até mais barato corrigir uma falha no projeto da casa, antes de construí-la. 
Uma pequena reforma na casa já pronta pode significar ter que quebrar outras partes que não têm relação 
direta com o que precisa ser mudado e isso significa mais trabalho, o que custa mais tempo e dinheiro. 
Da mesma forma, é muito melhor identificar e corrigir erros nos algoritmos do que nos códigos-fonte. 
Códigos-fonte geralmente são feitos por equipes, por várias pessoas. A correção de um código-fonte com o 
qual você não tem familiaridade é bastante complicado. Imagine ter que encontrar um objeto numa casa que 
você não conhece, é uma tarefa difícil. 
Chegamos ao final desse tópico. Conhecemos o conceito de algoritmo e suas características. Também 
discutimos a importância do uso de algoritmos na computação e vimos que eles são a base de qualquer 
programa de computador. No tópico seguinte, nos concentraremos na criação de algoritmos.Agora vamos 
analisar alguns algoritmos para identificar seus elementos fundamentais. 
Algoritmo Fazer Fotografia em Câmera Digital 
Início 
1. Ligar câmera. 
2. Escolher objeto ou paisagem para fotografar. 
3. Segurar firme a câmera e pressionar levemente o botão de disparo para ajustar o foco. 
4. Manter a câmera firme e pressionar o botão do disparo até o fim para fazer a fotografia. 
Fim 
O objetivo desse algoritmo é produzir uma fotografia de um objeto ou paisagem em uma câmera digital. 
Compreender bem o objetivo do algoritmo é fundamental para não cometermos enganos ao identificar seus 
dois elementos-chave: a entrada e a saída. Nesse caso, a entrada é o objeto ou paisagem que queremos 
registrar em uma foto. A saída, ou resultado, é uma foto do objeto ou paisagem escolhido. 
Figura 4 – Entrada, processamento e saída do algoritmo Fazer Fotografia
 
Algoritmo Desenhar um Quadrado 
Início 
 
1. Sabendo o tamanho que o lado do quadrado deve ter, desenhar uma linha reta da direita para a 
esquerda do tamanho do lado. 
 
2. A partir do final da primeira linha, desenhar uma segunda linha de cima para baixo, do tamanho 
do lado. 
 
3. A partir do final da segunda linha, desenhar uma terceira linha da direita para a esquerda, do 
tamanho do lado. 
 
4. A partir do final da terceira linha, desenhar uma quarta linha de baixo para cima, do tamanho do 
lado. 
 
Fim 
 
Nesse algoritmo, precisamos do tamanho do lado do quadrado como entrada para produzir o desenho do 
quadrado como saída. Nesse caso, podemos notar com mais clareza onde se encaixa o conceito de abstração 
estudado na aula passada. O que chamamos de tamanho do lado do quadrado é uma abstração de uma 
medida real, expressa na forma de um número e uma unidade de medida, como 5 centímetros ou 2,7 metros. 
 
Agora é a sua vez! Identifique a entrada e saída dos seguintes algoritmos. 
Exercício 1 - Algoritmo Multiplicar dois números inteiros de dois dígitos 
Qual a entrada e a saída desse algoritmo? 
Início 
1. Multiplicar o segundo dígito do multiplicador pelo 
multiplicando para obter a primeira parcela. 
 
2. Multiplicar o primeiro dígito do multiplicador pelo 
multiplicando para obter a segunda parcela. 
 
3. Somar as duas parcelas para obter o produto final. 
 
Fim 
1. a) Um conjunto de três números inteiros e o produto desses números. 
2. b) Dois números inteiros de dois dígitos e o produto desses números. 
3. c) Dois números inteiros de qualquer tamanho e o produto desses números. 
4. d) Dois números decimais e o produto desses números. 
No exemplo anterior, o algoritmo recebe uma entrada e produz um resultado através de uma operação 
matemática envolvendo essa entrada. Em alguns casos, a saída de um algoritmo possui os mesmos elementos 
da entrada, com alguma das suas características alteradas. 
 Exercício 2 - Algoritmo Ordenar Três Números em Ordem Crescente 
Qual é a entrada e qual é a saída desse algoritmo? 
 
 
 
 
https://leadfortaleza.com.br/ead2pcd/conteudo/tmp/myopenolat_1_101716479107977/aula/index-fisico.html
https://leadfortaleza.com.br/ead2pcd/conteudo/tmp/myopenolat_1_101716479107977/aula/index-fisico.html
https://leadfortaleza.com.br/ead2pcd/conteudo/tmp/myopenolat_1_101716479107977/aula/index-fisico.html
https://leadfortaleza.com.br/ead2pcd/conteudo/tmp/myopenolat_1_101716479107977/aula/index-fisico.html
Início 
1. Comparar o primeiro número com o segundo. Se o primeiro for 
maior, trocá-los de lugar. 
 
2. Comparar o segundo número com o terceiro. Se o segundo for 
maior, trocá-los de lugar. 
 
3. Novamente, comparar o primeiro número com o segundo. Se o 
primeiro for maior, trocá-los de lugar (esse passo é refeito porque, 
após o passo 2, a ordem entre o primeiro e o segundo elementos 
pode ter ficado incorreta). 
 
Fim 
4. a) Um conjunto de três números em qualquer ordem e o menor número do conjunto. 
5. b) Um conjunto de três números em qualquer ordem e o mesmo conjunto em ordem crescente. 
6. c) Um conjunto números de qualquer tamanho em qualquer ordem e o mesmo conjunto em ordem crescente. 
7. d) Um conjunto de três números em ordem decrescente e o mesmo conjunto em ordem crescente. 
<<<ir para a página anteriorir para a próxima páginair para a primeira páginair para a última página6 de 23 
Construção de Algoritmos 
Até agora só analisamos algoritmos prontos. Mas como já sabemos que um algoritmo é uma sequência de 
passos ordenados para realizar uma tarefa, que possui entrada (aquilo que ele usa para realizar a tarefa) e 
saída (aquilo que ele produz após executar todos os passos), estamos aptos a criar nosso próprios algoritmos. 
A criação de um algoritmo é um processo criativo. Isso significa que você precisa, basicamente: 
Analisar a tarefa que deseja realizar 
 
Identificar o que você precisa para realizá-la 
 
Criar uma sequência de passos que executa essa tarefa com sucesso e produz o resultado esperado 
Estas são apenas dicas. Você irá fazer tudo da sua maneira, baseado na sua experiência. Não existe uma 
regra fechada ou procedimento padrão para produzir algoritmos. Ou seja, não existe um algoritmo para criar 
algoritmos. 
Vamos praticar a criação de algoritmos? 
https://leadfortaleza.com.br/ead2pcd/conteudo/tmp/myopenolat_1_101716479107977/aula/index-fisico.html
https://leadfortaleza.com.br/ead2pcd/conteudo/tmp/myopenolat_1_101716479107977/aula/index-fisico.html
https://leadfortaleza.com.br/ead2pcd/conteudo/tmp/myopenolat_1_101716479107977/aula/index-fisico.html
https://leadfortaleza.com.br/ead2pcd/conteudo/tmp/myopenolat_1_101716479107977/aula/index-fisico.html
 
Exercício 4 
Algoritmo Calcular o custo para enviar uma caixa pelo Correio 
 
Você vai enviaruma caixa com presentes para um amigo. Considerando que sua caixa estará dentro da 
faixa de peso base do correio, o preço do envio será baseado apenas no volume da caixa. Para calcular o valor 
do envio antes de ir à agência, o correio lhe fornece um valor padrão de custo por cm³ (centímetro cúbico). 
Por exemplo, se o valor de referência é R$ 0,15/cm³ (quinze centavos por centímetro cúbico), basta calcular 
o volume da caixa que deseja enviar e multiplicar pelo valor de referência. 
Produza o algoritmo para resolver esse problema. 
Dica 1: 
Considere que você ainda não sabe as medidas da caixa, então inclua passos no algoritmo para medi-la. 
Dica 2: 
O volume de uma caixa é igual ao produto do comprimento x largura x altura. 
 
 
Entrada: A caixa e o valor de referência do Correio. 
Saída: O preço, em reais (R$), para o envio da caixa. 
Ordene os passos a seguir para montar o Algoritmo correto. 
 
Figura 3 - Estrutura de uma organização (adaptado pelo autor) 
A resolução desse problema ressalta novamente o que aprendemos sobre abstrações. Embora algumas 
informações sobre a caixa, como peso e dados de envio, sejam relevantes para o envio, não são relevantes 
para o problema que estamos tratando, que só precisa do volume da caixa e valor de referência do correio. 
Conceito de Memória 
Você deve ter percebido que, para o algoritmo anterior (exercício 4), alguns passos não precisam 
necessariamente vir antes que outros. Por exemplo, medir a altura da caixa não precisa vir antes de medir a 
largura, ou o comprimento. Mas para calcular o valor do envio, você precisa calcular o volume da caixa primeiro 
e anotar esse valor em algum lugar. 
A ação de anotar valores calculados durante algoritmos é essencial para o seu funcionamento. Você pode 
dizer: “Ah, não preciso anotar, eu lembrarei do valor”. Você pode lembrar do valor, porque seres humanos têm 
uma boa memória. O computador também tem memória, mas é você que tem a responsabilidade de fazê-lo 
guardar determinados valores nela. A ação de guardar dados na memória também precisa estar no algoritmo. 
 
Caixa Atenção Normalmente, quanto maior for a complexidade de um algoritmo, maior será a 
necessidade de armazenar dados em memória. Esses dados servem de referência para cálculos e 
tomadas de decisão futuros no algoritmo. 
 
Qualidade de algoritmos 
Dissemos que um algoritmo é uma receita, um guia para resolução de um problema. E você deve saber que 
geralmente existe mais de uma maneira de resolver um problema. Quer um exemplo? Vamos lá! 
https://leadfortaleza.com.br/ead2pcd/conteudo/tmp/myopenolat_1_101716479107977/aula/index-fisico.html
https://leadfortaleza.com.br/ead2pcd/conteudo/tmp/myopenolat_1_101716479107977/aula/index-fisico.html
Digamos que Lara quer sair de sua casa e ir até o shopping. Ela tem três opções: ir de carro, ir de ônibus ou 
ir à pé. Faça Lara ir ao shopping de cada uma das maneiras e observe os resultados. 
 
Como você viu, todas as opções levam Lara até seu destino, ou seja, o objetivo será alcançado. Porém, 
cada uma tem seus pontos positivos e negativos. 
 Ir de carro é rápido, mas custa mais caro (gasolina e estacionamento). 
 Ir de ônibus é mais barato que ir de carro, mas demora mais (o ônibus para várias vezes no trajeto). 
 Ir à pé é de graça, mas pode cansar e demora mais que todos os outros. 
Nenhuma das opções parece perfeita. Mas Lara pode escolher a mais conveniente. Ou pensar em uma 
nova maneira que combine as boas características de cada opção. Ir de bicicleta, por exemplo. 
A mesma relação vale para os algoritmos. Você pode construir diversos algoritmos para resolver um mesmo 
problema de maneiras diferentes. Um pode ser mais rápido, outro mais simples de ler e entender, outro que 
contenha pouquíssimos passos etc. Algoritmos novos podem ser criados e algoritmos antigos, melhorados. 
Cuidados especiais com algoritmos 
A criação de um algoritmo geralmente não leva muito tempo. Mas, uma vez que estiver pronto, precisa ser 
testado à exaustão para garantir que seus passos serão executados corretamente e o resultado final, ou seja, a 
saída do algoritmo, será o que se espera. Raramente um algoritmo permanece exatamente igual à sua primeira 
versão. 
Para demonstrar o que foi dito, vamos criar um algoritmo simples, porém útil, que calcula o IMC (Índice de 
Massa Corporal). O IMC é um índice que indica se a pessoa está dentro da faixa de peso ideal para sua altura. 
O IMC de uma pessoa com peso ideal está entre 18,5 e 25. Sua fórmula é igual à massa (que geralmente 
chamamos de peso) dividido pelo quadrado da altura. 
 
Um algoritmo para calcular o IMC e dizer se a pessoa está ou não no peso ideal seria: 
 Entrada: Massa (peso) e altura do indivíduo. 
 Saída: “Sim”, se o IMC estiver entre 18 e 25. “Não”, caso contrário. 
 Início 
o 1. Calcular o valor do quadrado da altura e anotar como “altura ao quadrado”. 
o 2. Calcular o valor da massa dividido pelo quadrado da altura e anotar como “IMC”. 
o 3. Se o valor de “IMC” for maior ou igual a 18,5 e menor que 25, dizer “Sim”. Caso contrário, dizer “Não”. 
 Fim 
https://leadfortaleza.com.br/ead2pcd/conteudo/tmp/myopenolat_1_101716479107977/aula/index-fisico.html
Você pode testar o algoritmo com sua altura e peso. Por exemplo: para uma altura de 1,75m, o valor de 
“altura ao quadrado” será 3,0625. Se a massa for 76kg, o valor para “IMC” será 76 / 3,0625 = 24,81. A saída do 
algoritmo seria “Sim”. Já para uma altura de 1,73m e 85kg de massa, a saída do algoritmo seria “Não”, pois o 
IMC seria igual a 85 / (1,73)2 = 28,40. 
 
Esse algoritmo parece perfeito. Mas possui falhas. O que acontece, por exemplo, se fornecemos 0 (zero) 
como valor da altura? Nesse caso, o algoritmo tentará efetuar uma divisão por zero, o que não é possível. 
Nossa obrigação, então, é de proteger o algoritmo de valores inválidos de entrada, como 0 (zero) para a 
altura. Para isso, vamos adicionar um novo passo, no lugar do passo 1, com a seguinte estrutura: Se o valor da 
massa ou altura for igual a zero, dizer “Valores inválidos” e terminar. Como um valor 0 (zero) para massa 
também não faz sentido, ele também é avaliado nesse novo passo. 
O que fizemos foi criar uma condição para que o algoritmo continuasse ou fosse interrompido. Essa é uma 
prática comum e teremos uma aula exclusiva sobre esse tema. Em geral, usamos condições para executar 
determinados passos de um algoritmo e ignorar outros. No exemplo do IMC, caso massa ou altura sejam iguais 
a zero, ignoramos todos os demais passos do algoritmo. 
 
Testes de algoritmo 
Vimos que um algoritmo, mesmo que tenha sido criado com muito cuidado e atenção, pode conter falhas. 
Você sabe como proceder para detectar essas falhas? Basta seguir o exemplo da indústria: testar. 
Os testes são a forma mais simples de validar se um algoritmo realmente faz o que promete, ou seja, se ele 
é capaz de produzir o resultado esperado para todas as situações (valores de entrada) às quais pode ser 
submetido. 
Caixa Saiba mais: Existem outras maneiras de validar um algoritmo além dos testes, como a prova 
por modelos matemáticos. Esse método, porém, é muito refinado e demanda profissionais altamente 
qualificados. É aplicado em algoritmos voltados para programas considerados críticos, como os que 
funcionam em usinas nucleares, em sistemas de navegação de aviões e trens e em equipamentos 
hospitalares. 
 
Para testar um algoritmo, crie um conjunto de dados de entrada que represente a realidade à qual o 
algoritmo será submetido e o resultado que se espera obter como saída do algoritmo. Execute o algoritmo para 
a entrada e verifique se a saída esperada foi obtida. Se a saída obtida não for aquela que se espera, seu 
algoritmo tem falhas e precisa ser revisado. 
Vejamos um exemplo. Se quisermos testar o algoritmo para ordenação de três números do início do tópico, 
podemos montar um grupo com 4 tipos de conjuntos: 
 Um conjunto com números em ordem aleatória (Ex: {3,-5,2}); 
 Um conjunto comnúmeros em ordem decrescente (Ex: {8,2,0}); 
 Um conjunto com números já em ordem crescente (Ex: {-1,2,3}); 
 Um conjunto com números repetidos (Ex: {3,2,3}). 
 
Essas quatro classes de entrada cobrem todas as possibilidades que esse algoritmo em particular pode 
encontrar quando for usado. Cada classe representa um tipo de entrada. Um algoritmo para outro problema de 
ordenação, para uma quantidade indefinida de elementos, por exemplo, pode precisar de outras classes de 
entrada para ser testado por completo. 
 
 
 
 
Chamamos cada um dos exemplos de cada classe citados ({3,-5,2}, {8,20}, {-1,2,3} e {3,2,3}) de caso de 
teste. Quantos mais casos de teste você aplicar ao seu algoritmo, melhor. Porém, é preciso usar casos de teste 
de classes diferentes. Não adianta testar seu algoritmo com 5000 casos de teste de elementos em ordem 
decrescente e não testá-lo para elementos em ordem crescente, aleatória ou para elementos repetidos. 
Vamos exercitar um pouco a escolha de casos de teste? Indique o item que possui o conjunto mais 
completo de casos de teste para cada algoritmo a seguir, ou seja, o conjunto de casos de teste que avalia o 
algoritmo para mais casos diferentes e relevantes. 
gora é a sua vez! Escolha o item que possui o melhor conjunto de dados para teste dos algoritmos a seguir. 
Exercício 5 - Algoritmo Somar dois números inteiros 
Entrada: um par de números inteiros 
Saída: o valor da soma do par de números fornecidos 
1. a) {-2, -3}, {0, -25}, {-3, -10}, {-9, 0}, {-3, -1} 
2. b) {6, 5}, {10, 99}, {13, 0}, {4, 9}, {5, 5} 
3. c) {1, 7}, {0, -1}, {-3, -10}, {5, 0}, {3, -2} 
4. d) {1, 7}, {-5, -1}, {-20, -2}, {5, 0}, {-9, -10} 
 
Exercício 6 - Algoritmo Buscar menor valor no conjunto 
Entrada: um conjunto não vazio de números inteiros. 
Saída: o valor do menor número do conjunto. 
1. a) {3}, {4}, {5} 
2. b) {1}, {2, 3, 2}, {0, 1, -5, 3} 
3. c) {1, 2, 3, 4}, {3, 3, 2, 3} 
4. d) {2, 3}, {1, 2, 3, 4}, {6} 
 
Muitos estudantes insistem em deixar o estudo de algoritmos de lado, tentando criar os seus programas 
diretamente com linguagem de programação, sem escrever um algoritmo primeiro. Essa atitude resulta em 
programas com falhas, desempenho ruim ou que sequer funcionam. Embora pareça retrabalho escrever o 
algoritmo para depois reescrevê-lo em linguagem de programação, esse processo ajuda a identificar falhas 
mais cedo e perceber detalhes menos aparentes de um problema. 
Por isso, não deixe de escrever o algoritmo de um programa que você pretende fazer. Depois que ele estiver 
pronto, execute-o mentalmente, anotando valores que foram produzidos durante os passos e verifique se a 
saída (resultado) foi o que se esperava, como fizemos nessa aula. Teste-o com diversos valores de entrada. 
Isso permite que você faça ajustes ainda no algoritmo, que são mais fáceis de aplicar que no código-fonte. 
 
Caixa Atenção: Esse é um curso de lógica de programação, então você deve esperar por conteúdos 
que lhe preparem para criar programas. Na computação, os algoritmos são geralmente voltados para 
operações matemáticas. Portanto, você verá muitos exemplos de ordenação de números (ou elementos 
quaisquer), cálculo de fórmulas, problemas de busca de dados etc. 
 
Nesse tópico, aprendemos que um algoritmo tem sempre uma entrada e uma saída, que correspondem aos 
dados que precisamos prover ao algoritmo e ao resultado que ele produz, respectivamente. Vimos que, para 
criar um algoritmo, precisamos analisar seu problema alvo com cuidado. Às vezes, alguns detalhes passam 
despercebidos e podem comprometer a qualidade do algoritmo. Executar testes é a melhor forma de verificar 
se um algoritmo cumpre sua tarefa sem falhas. 
No próximo tópico, iremos conhecer uma maneira diferente de representar um algoritmo: os fluxogramas. 
https://leadfortaleza.com.br/ead2pcd/conteudo/tmp/myopenolat_1_101716479107977/aula/index-fisico.html
https://leadfortaleza.com.br/ead2pcd/conteudo/tmp/myopenolat_1_101716479107977/aula/index-fisico.html
https://leadfortaleza.com.br/ead2pcd/conteudo/tmp/myopenolat_1_101716479107977/aula/index-fisico.html
https://leadfortaleza.com.br/ead2pcd/conteudo/tmp/myopenolat_1_101716479107977/aula/index-fisico.html
https://leadfortaleza.com.br/ead2pcd/conteudo/tmp/myopenolat_1_101716479107977/aula/index-fisico.html
https://leadfortaleza.com.br/ead2pcd/conteudo/tmp/myopenolat_1_101716479107977/aula/index-fisico.html
https://leadfortaleza.com.br/ead2pcd/conteudo/tmp/myopenolat_1_101716479107977/aula/index-fisico.html
https://leadfortaleza.com.br/ead2pcd/conteudo/tmp/myopenolat_1_101716479107977/aula/index-fisico.html
Veja o exemplo de fluxograma a seguir. Ele corresponde ao fluxograma do algoritmo de preparo de café, 
que vimos no começo da aula. 
Figura 5 – Fluxograma do algoritmo do preparo de café 
 
O fluxograma da figura 5 é bastante simples, pois representa um algoritmo muito simples. Percebemos que 
existe um fluxo que vai de “Início” até “Fim”, indicado pelas setas. Se pusermos o algoritmo original e seu 
fluxograma lado a lado, logo percebemos que os símbolos seguem o seguinte padrão: 
Quadro 2 - Componentes de um fluxograma simples 
Símbolo Representa 
 
O início ou fim do algoritmo. 
 
Um passo do algoritmo. 
 
O fluxo entre passos do algoritmo (também usado junto do início e fim). 
Um fluxograma pode conter muito mais símbolos e nós conheceremos alguns deles durante o restante do 
curso. À medida em que formos incorporando novos elementos aos nossos algoritmos, iremos conhecer suas 
representações em fluxograma. 
Função do fluxograma 
Você pode ter achado que um fluxograma como o da figura 5 não tem utilidade. De fato, fluxogramas de 
algoritmos extremamente simples não trazem grandes benefícios. Mas por se tratar de uma representação 
gráfica, fluxogramas de algoritmos complexos se tornam uma poderosa ferramenta para a sua compreensão. 
Outra função dos fluxogramas é facilitar o processo de teste de um algoritmo. Visualmente é mais fácil de 
saber em qual passo do fluxograma você está do que lendo um algoritmo escrito. 
Como criar fluxogramas 
Os fluxogramas são uma espécie de transcrição do algoritmo escrito para uma representação gráfica, assim 
como o código-fonte é o algoritmo reescrito em linguagem de programação. Começamos pelo bloco “Início” e 
depois adicionamos cada um dos passos do algoritmo em um retângulo, ligando-os com as setas. Por fim, 
ligamos o último passo com uma seta ao bloco “Fim”. 
Você pode fazer um fluxograma no papel ou usar um dos diversos softwares disponíveis no mercado para 
desenho de diagramas. Os pacotes Office e LibreOffice possuem funcionalidades embutidas para criação de 
fluxogramas nos seus editores de texto. 
Nesse tópico, tivemos uma noção geral sobre fluxogramas e sua relação com algoritmos. O estudo dos 
fluxogramas evoluirá gradualmente a cada nova aula desse curso. 
Chegamos ao final da aula. Conhecemos o conceito de algoritmo e compreendemos porque ele é tão 
importante para a computação. Vimos que algoritmos são passos ordenados para resolver problemas e que, a 
partir deles, podemos criar um código-fonte em uma linguagem de programação. Vimos que um algoritmo 
representa o processamento entre uma entrada e a saída e conhecemos os fluxogramas, que são uma maneira 
de representar um algoritmo graficamente. 
Na próxima aula, nos aproximaremos um pouco mais das linguagens de programação, estudando os tipos 
de dados que podemos usar para representar informações nos algoritmos. A partir daí poderemos trabalhar 
com valores constantes, valores variáveis e expressões. Até breve! 
Referências 
 Algoritmos – NCE/UFRJ - Adriano Joaquim de Oliveira Cruz. Disponível em: 
<https://equipe.nce.ufrj.br/adriano/c/apostila/algoritmos.htm>. Acesso em: 22 nov. 2013. 
 O que é algoritmo? TechMundo. 2009. Disponível em: 
<https://www.tecmundo.com.br/programacao/2082-o-que-e-algoritmo-.htm>. Acesso em: 20 nov. 2013. 
 Fluxograma - InfoEscola. Disponível em: <https://www.infoescola.com/administracao_/fluxograma/>.Acesso em: 25 nov. 2013. 
 CORMEN, Thomas. LEISERSON, Charles. RIVEST, Ronald. Algoritmos - Teoria e Prática. 2 ed. 
Campus Editora. 2002. 936 p. 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
https://equipe.nce.ufrj.br/adriano/c/apostila/algoritmos.htm
https://www.tecmundo.com.br/programacao/2082-o-que-e-algoritmo-.htm
https://www.infoescola.com/administracao_/fluxograma/
IV - Revisão sobre memória 
Quando efetuamos cálculos “de cabeça”, guardamos valores na memória, ou seja, no nosso cérebro. Mas 
fazemos isso implicitamente, sem a necessidade de pensar “Agora eu vou guardar esse valor para lembrar 
depois”; simplesmente lembramos. 
Durante a execução de um algoritmo, é normal que precisemos anotar valores de cálculos e decisões 
tomadas, para utilizar esses valores futuramente dentro do algoritmo. Nesse caso, porém, é preciso formalizar a 
ação de registrar um valor. 
Durante a aula passada, indicamos, no algoritmo, a necessidade de armazenar um valor com uma instrução 
chamada “anotar como” seguida de um nome para identificar o valor, por exemplo: 
Calcular a soma de dois números e anotar o resultado como “Total”. 
A identificação do valor é muito importante. Imagine que estamos resolvendo uma equação complexa e 
precisamos tomar nota de vários valores durante o processo. Se anotarmos os valores em um papel, sem 
identificá-los, podemos chegar à situação ilustrada na figura 1, em que não saberemos mais de qual operação 
cada valor foi obtido. 
Além da identificação de cada valor, é importante sabermos o tipo de cada um deles. Por exemplo, se 
estivermos somando duas quantias em dinheiro, é relevante mantermos as casas decimais, relativas aos 
centavos. Porém, se estivermos calculando quantos pacotes de biscoito podemos comprar com uma 
determinada quantia de dinheiro, podemos descartar as casas decimais. Afinal, não podemos comprar 3,7 
pacotes, só poderíamos comprar 3 ou 4 pacotes, nesse caso. 
 
Chamamos de memória o local onde guardamos os dados de entrada e que foram gerados durante o uso de 
um algoritmo. A memória pode ser uma folha de papel, por exemplo, se estivermos executando um algoritmo 
manualmente, como no cálculo das raízes de uma equação do segundo grau da figura 2, a seguir: 
Figura 2 – Exemplos de memória para um algoritmo 
 
Já no computador, existem diversos componentes que fazem a função de memória: discos rígidos, pen 
drives, DVDs etc. Porém, o componente que é considerado como memória principal é a memória RAM 
(Random-Access Memory, ou memória de acesso aleatório). Esse componente é bastante rápido e trabalha 
diretamente ligado ao processador para prover os valores que os programas precisam no menor tempo 
possível. 
 
 
Cada dado na memória deve ter um identificador (um nome) e um tipo. A memória funciona como uma 
grande tabela de consulta, na qual colocamos valores para uma consulta posterior. Valores armazenados na 
memória também podem ser modificados durante o tempo. 
Tipos de dados básicos 
Sabendo que podemos armazenar diversos tipos de dados durante o uso de um algoritmo, tornou-se 
evidente a necessidade de padronizar os tipos de dados que poderiam ser usados na memória. Daí surgiram os 
tipos básicos de dados, também chamados de tipos primitivos. Os tipos básicos ou primitivos são: 
 
 
 
Tabela 1 – Típicos básicos de dados 
 
O tipo de dado é importante para a completa identificação de valores em memória nos casos em que existem 
duas anotações de mesmo nome. Assim, valores em memória com mesmo nome podem ser diferenciadas pelo 
seu tipo. Porém, o uso de nomes repetidos para representar dados na memória é desaconselhado. 
 
Variáveis x Constantes 
Valores guardados na memória são chamados de variáveis. Variáveis, como o próprio nome diz, podem 
variar, ou seja, ter seu valor modificado. A função das variáveis é manter o valor atual de algum dado relevante 
dentro do algoritmo e, por isso, podem ser modificadas com o tempo. 
Considere uma variável do tipo inteiro chamada “contador”, que no início do algoritmo tem valor igual a 0. 
Digamos que, após a execução de algum passo do algoritmo, o valor dessa variável precise ser 1. Devemos 
modificar o valor que está anotado, mudando-o de 0 para 1. 
Porém, nem todos os valores que são necessários durante um algoritmo precisam mudar com o tempo. 
Alguns valores servem apenas como referência, durante todo o algoritmo, e permanecem inalterados. 
 
Que tal alguns exemplos? 
 Para um algoritmo que efetua cálculos físicos, é preciso usar o valor da aceleração da gravidade (). Esse valor 
não muda. 
 Para um algoritmo que efetua cálculos trigonométricos, é preciso usar o valor de pi (). Esse valor não muda. 
 Para um algoritmo que faça o sorteio de dias de trabalho de um funcionário, é preciso ter acesso aos nomes 
dos dias da semana. Esses valores (nomes dos dias da semana) não mudam. 
Para esses casos, chamamos os valores guardados de constantes, pois eles não precisam ser modificados 
durante toda execução do algoritmo. Em resumo: 
 
Uso de variáveis em algoritmos 
Agora que já sabemos o que são variáveis e constantes, como devemos usá-las nos nossos algoritmos? Na 
verdade, já estamos usando-as desde o início desse curso. Quando tínhamos uma instrução do tipo “anotar 
como”, estávamos criando ou modificando o valor de uma variável. 
A partir de agora, iremos dedicar um espaço no início do algoritmo para indicar as variáveis que usaremos. 
Esse espaço é chamado de região de declaração de variáveis. A sintaxe é a seguinte: a região é identificada 
pela palavra “Variáveis”, seguida da lista de variáveis. Cada variável é declarada pelo seu nome, seguido de 
dois-pontos (:) e seu tipo. Veja um exemplo. 
Algoritmo Cadastrar Paciente 
Variáveis: 
 nome: Texto 
 idade: Inteiro 
 peso: Decimal 
Início 
. . . 
Fim 
 
No exemplo do algoritmo Cadastrar Paciente, declaramos três variáveis chamadas nome, idade e peso. 
Não há diferença entre a declaração de variáveis e as constantes. Se uma variável nunca é modificada após 
receber seu primeiro valor, ela é considerada uma constante. 
A identificação dos tipos das variáveis faz parte do processo de abstração, pois o tipo de dado informa quais 
operações a variável pode sofrer (operações aritméticas podem ser aplicadas a tipos numéricos, mas não a 
tipos Caractere ou Texto). Por exemplo: 
 
 
Observe o último item do exemplo acima. Qual tipo devemos usar para armazenar um número de telefone 
em uma variável? Inteiro ou Texto? Isso depende da sua necessidade. Talvez, se você precisar guardar o 
número de telefone com traços e código DDD entre parênteses, é melhor usar o tipo Texto. Mas você também 
pode guardar o número como inteiro e dividi-lo em partes depois. É uma escolha de quem produz o algoritmo. 
Notação reduzida para declaração de variáveis 
Vimos que a declaração de uma variável consiste em indicá-la no topo do algoritmo com seu nome e tipo de 
dado. Porém, em um algoritmo complexo, pode ser necessário que haja uma quantidade grande de variáveis. 
Se formos declarar uma a uma em cada linha com seu nome e tipo, o algoritmo terá muitas linhas apenas para 
declaração de variáveis. 
Uma forma de diminuir o tamanho do algoritmo é agrupar as variáveis por tipo, separando-as por vírgula, 
como no exemplo a seguir. 
Algoritmo Agrupamento de Variáveis 
Variáveis: 
 a,b,c,d: Inteiro 
 parcela_1, parcela_2: Decimal 
 resultado: Texto 
Início 
 . . . 
Fim 
No algoritmo do exemplo anterior, em vez de usarmos 7 linhas para declarar as variáveis a, b, c, d, 
parcela_1, parcela_2 e resultado, usamos apenas 3 linhas, já que as variáveis de mesmo tipo estão agrupadas. 
Chegamos ao final desse tópico. Revisamos e aprofundamos o conceito de memória, conhecendo o que são 
variáveis e constantes. Vimos que variáveis e constantes precisam ter um nome e um tipo. Também 
aprendemos a usar variáveis e constantes dentro de algoritmos. 
No tópico seguinte, conheceremos as propriedadesdos principais operadores lógicos e aritméticos que 
podemos usar em nossos algoritmos. Nós já conhecemos a maioria deles de aulas passadas ou da matemática 
básica, mas alguns serão novos para você. 
Primeiro passo: atribuição de valores 
Agora que já sabemos declarar uma variável, vamos trocar algumas das instruções escritas que usamos em 
algoritmos por operadores. A primeira delas é a instrução de atribuição. 
O operador de atribuição clássico é uma seta que aponta da direita para a esquerda: ←. Este símbolo é 
usado para indicar que um valor ou o resultado de uma expressão à direita será atribuído a uma variável que 
está à esquerda. Veja um exemplo: 
Algoritmo Exemplo 1 
Variáveis: 
 x: Inteiro 
Início 
 x ← 0 
Fim 
Nesse exemplo, a variável x está recebendo o valor 0. O operador de atribuição no formato de seta é bom 
para escrevermos algoritmos em papel, mas não é prático para criá-los no computador, pois o caractere ← não 
está disponível em todos os editores de texto ou é de difícil acesso. Por isso, vamos utilizar outro símbolo, mais 
próximo das linguagens de programação: o símbolo = (igual). 
A partir de agora, sempre que você vir uma instrução do tipo “ variável = valor” ou “variável = expressão”, 
significa que a variável em questão recebe o valor ou resultado da expressão do lado direito do operador de 
atribuição =. Por exemplo: 
Algoritmo Exemplo 2 
Variáveis: 
 nome: Texto 
 idade: Inteiro 
Início 
 nome = “George” 
 idade = 30 
Fim 
Nesse segundo exemplo, a variável nome do tipo Texto está recebendo o valor “George”, e a 
variável idade do tipo Inteiro está recebendo o valor 30 
 
Operadores Aritméticos 
Você deve conhecer os operadores aritméticos desde a escola. Eles correspondem às operações 
matemáticas que usamos no dia a dia. São eles: 
Tabela 2 - Operadores aritméticos 
Operador Descrição 
+ Operador de soma. 
- Operador de subtração. 
* Operador de multiplicação. 
/ Operador de divisão. 
% Operador módulo (resto da divisão). 
Todos eles são operadores infixos, ou seja, basta posicionar o operador entre os dois operandos (valores 
com os quais se deseja aplicar a operação). Os operadores de multiplicação (*) e divisão (/) são diferentes dos 
que usamos na matemática do primeiro grau, × representa multiplicação e ÷ representa divisão. Já o operador 
módulo, %, fornece o resto da divisão inteira de dois números, diferente do operador /, que fornece o quociente 
da divisão. 
 
Vejamos um exemplo de uso dos operadores aritméticos: 
Algoritmo Exemplo 3 
Variáveis: 
 a,b,c,d,e: Inteiro 
Início 
 a = 5 + 5 
 b = 30 - 10 
 c = 7 * 2 
 d = 75 / 4 
 e = 9%2 
Fim 
Os valores finais das variáveis a, b, c e d do algoritmo do exemplo 3 são 10, 20, 14 e 18, respectivamente. 
O valor da variável e corresponde ao resto da divisão inteira de 9 por 2, que é igual a 1 (2 × 4 = 8, resta 1 para 
chegar a 9). 
É possível usar variáveis nas operações citadas anteriormente. Basta incluí-las no cálculo e seu valor será 
substituído em cada ocorrência no algoritmo. Por exemplo: 
Algoritmo Exemplo 4 
Variáveis: 
 a,b,c: Inteiro 
Início 
 a = 5 + 5 
 b = a * 4 
 c = 50 
 c = a + b + c 
Fim 
No algoritmo do exemplo 4, o valor da variável b será igual ao valor computado da variável a, multiplicado 
por 4. Como o valor de a é 10, o valor final de b será 10 * 4 = 40. O valor de c será 100. 
 
Operadores Aritméticos Especiais 
A maioria das linguagens de programação oferece operadores especiais que fazem o trabalho combinado 
de outros operadores. A função deles é diminuir o tamanho de instruções, o que diminui o tamanho dos 
códigos-fonte. 
Tanto nas linguagens de programação quanto em algoritmos, o uso desse tipo de operador é facultativo, ou 
seja, é uma opção de quem escreve o algoritmo. Vamos conhecer alguns deles. 
 
 
Os operadores +=, -=, *= e /= executam a função combinada do operador aritmético com a atribuição. Eles 
podem ser usados quando a variável que irá receber o valor da operação também está envolvida na operação. 
Vejamos alguns exemplos. 
Algoritmo Exemplo 5 
Variáveis: 
 a,b: Inteiro 
Início 
 a = 10 
 a += 3 
 b = 50 
 b -= a 
Fim 
No algoritmo do exemplo 5, a instrução a += 3 é equivalente a a = a + 3. Portanto, o valor final de a é a +3 = 
10 + 3 = 13. Da mesma forma, o valor de b -= a é b = b - a. Nesse caso, o valor final de b é b - a = 50 - a = 50 - 
13 = 37. A mesma dinâmica vale para os operadores *= e /=. Vamos praticar um pouco? 
 
 
 
Os dois últimos operadores da tabela 3 são ++ e --. A função deles também é reduzir o tamanho de 
instruções. Diferente dos outros operadores vistos até aqui, eles são considerados unários, ou seja, trabalham 
apenas com um operando. 
O operador ++ é chamado de incremento, e aumenta 1 unidade à variável à qual está associado. O 
operador -- é chamado de decremento, e diminui 1 unidade da variável à qual está associado. Vamos entender 
melhor com o exemplo a seguir. 
 
 
 
 
 
Algoritmo Exemplo 6 
Variáveis: 
 a,b: Inteiro 
Início 
 a = 8 
 b = 8 
 a++ 
 b-- 
Fim 
O valor final da variável a é 9, pois, ao usar o operador ++, aumentamos o seu valor em 1 unidade. Já o 
valor final da variável b é 7, pois, ao usar o operador --, diminuímos 1 unidade do seu valor. 
Os operadores ++ e -- produzem resultados diferentes, dependendo da posição em relação à variável alvo. 
Se forem posicionados depois da variável, sua ação ocorre no final da instrução. Se forem 
posicionados antes da variável, sua ação ocorre imediatamente. Observe os dois algoritmos a seguir. 
 
 
No final do algoritmo do exemplo 7.1, o valor da variável a será 9 e da b será 13, pois o operador ++ só fará 
efeito na transição da segunda para a terceira instrução. Já no exemplo 7.2, o valor de a será 9 e o valor de b 
será 14. Isso ocorre porque a variável a recebe o incremento de 1 unidade antes de ter seu valor atribuído a b, 
pois o operador ++ está posicionado antes da variável e, portanto, é aplicado imediatamente. Assim, b terá 
valor 9 antes da instrução b +=5, resultado em valor final 14. 
Caixa Atenção: O posicionamento diferente dos operadores ++ e -- pode não parecer útil no momento, 
mas será bem aproveitado quando estudarmos estruturas de decisão e repetição nas aulas seguintes. 
Por isso, guarde bem esse conceito. 
 
Vamos fazer um pequeno exercício para fixar o entendimento sobre os operadores ++ e --. 
Preencha as colunas abaixo com os valores das variáveis a e b ao final da instrução em questão. Atenção: 
lembre-se de que os operadores ++ e --, quando posicionados depois da variável, têm seu efeito aplicado 
apenas no final da instrução. 
 
Algoritmo Quiz 2 
Variáveis: 
a,b: Inteiro 
 
 
Operadores Lógicos e Relacionais 
Já conhecemos os operadores aritméticos e de atribuição. Eles podem ser usados com variáveis do tipo 
numérico, como Inteiro e Decimal. Mas operadores aritméticos não são o suficiente para a construção de 
algoritmos. Algoritmos representam uma solução para um problema e, para resolver um problema, precisamos 
mais do que calcular: precisamos decidir. 
Vejamos um exemplo. Júlia precisa ir à casa de sua amiga para estudar. Existem dois caminhos disponíveis, 
ambos levam Júlia ao seu destino. Qual caminho ela deve seguir? 
 
 
 
 
Assim como as nossas ações do cotidiano, algoritmos precisam ser capazes de executar determinadas 
ações, baseados em uma informação. Escolher, dar preferência, ignorar, são tomadas de decisão que precisam 
de um parâmetro, um ponto de referência. Para obter tais parâmetros, usamos operadores lógicos e relacionais. 
A função dos operadores lógicos e relacionais é a mesma: fornecer uma resposta lógica e precisa sobre 
uma situação. Isso significa que, sempre que usarmos esses operadores, independente dos operandos, o 
resultado obtido será verdadeiro ou falso. 
Os operadores lógicos mais comuns são os mesmos que estudamosna segunda aula desse curso. 
Vejamos: 
 
Tabela 4 – Operadores lógicos 
Operador Função 
&& “E” (conjunção) 
|| “OU” (disjunção) 
! “NÃO” (negação) 
 
Os operadores lógicos trabalham com dois operandos do tipo Lógico, ou seja, verdadeiro ou falso. Para nos 
aproximarmos das linguagens de programação e evitar problemas de uso de variáveis com nomes V ou 
F, vamos considerar apenas que: 1 equivale a verdadeiro e 0 equivale a falso. 
O resultado é o mesmo da tabela verdade da operação que realizam. Vamos relembrar as tabelas verdades 
das operações “NÃO”, “E” e “OU”? 
 
 
Vejamos um exemplo de uso de operador lógico “E” em um algoritmo. 
Algoritmo Exemplo 8 
Variáveis: 
 a,b,c: Lógico 
Início 
 a = 1 
 b = 0 
 c = a && b 
Fim 
O valor de c será 0, ou seja, falso, pois a operação “E” para 1 e 0 resulta em 0. 
Os operadores relacionais comparam dois valores numéricos e devolvem um resultado lógico. Confira a 
lista dos operadores relacionais na tabela a seguir. 
 
Lembre-se: o resultado do uso de um operador relacional é do tipo Lógico. Vejamos alguns exemplos em 
algoritmos. 
Algoritmo Exemplo 9 
Variáveis: 
 a,b: Inteiro 
 x1,x2,x3,x4: Lógico 
Início 
 a = 75 
 b = a / 3 
 x1 = a > b 
 x2 = b < 10 
 x3 = b * 3 <= a 
 x4 = a != b 
Fim 
No algoritmo Exemplo 9, os valores das variáveis do tipo lógico x1, x2, x3 e x4 indicam se o teste dos 
operadores relacionais resultou em verdadeiro ou falso. Sabendo que a é igual a 75 e b é igual a a/3 = 75/3 = 
25, x1 será 1 (verdadeiro, pois a é maior que b), x2 será 0 (falso, pois b não é menor que 10), x3 será 1 
(verdadeiro, pois b*3 = 75, é menor ou igual a 75) e x4 será 1 (verdadeiro, pois os valores de a e b são 
diferentes). 
Os operadores relacionais são muito úteis na tomada de decisões baseadas em cálculos, pois permitem a 
verificação de condições e são usados em situações como: 
 Se o caminho 1 for menor que o caminho 2, então siga pelo caminho 1. 
 Se a área a ser pintada for maior do que a quantidade de tinta disponível para a pintura, solicitar a 
compra de mais tinta. 
 Enquanto a caixa d’água não estiver cheia, mantenha o fornecimento de água. 
As situações citadas acima, que usam “se ... então ...” e “enquanto ... ”, são ações típicas do dia a dia e, 
portanto, ocorrem com frequência em algoritmos. Elas são chamadas de estruturas de decisão e repetição, e 
serão estudadas a partir da próxima aula. 
Nesse tópico, conhecemos os operadores de atribuição, aritméticos, lógicos e relacionais. Cada um desses 
operadores ajuda na construção de cálculos e verificações nos nossos algoritmos. 
No próximo tópico, iremos praticar o uso de todos os operadores em expressões mais complexas. Também 
veremos como interpretar situações do mundo real e transformá-las em expressões de um algoritmo. 
 
Primeiramente vamos definir o que seria uma expressão. Chamaremos de expressão um conjunto de 
operadores e operandos em uma instrução do algoritmo, como 1 + 2, a*b/c ou 7 * c--. 
 
Nos exemplos que vimos até agora, usamos dois valores ou variáveis, no máximo três, ao mesmo tempo em 
cada expressão. Porém, em programas reais, precisamos manipular sequências de operações mais complexas. 
Para isso, conheceremos as regras de precedência para operadores aritméticos e praticaremos com alguns 
exemplos envolvendo operações aritméticas e lógicas. 
 
Precedência entre operadores 
Considere que você precisa resolver a seguinte expressão aritmética em um algoritmo: 
Algoritmo Exemplo 10 
Variáveis: 
 a: Decimal 
Início 
 a = 150+2/5+13*4-7%2 
Fim 
Assim como na matemática simples, os operadores aritméticos dos algoritmos também obedecem a uma 
sequência de precedência, ou seja, uma ordem para serem executados em uma expressão. Confira na tabela a 
seguir. 
Tabela 7 – Precedência de operadores aritméticos 
Ordem Operadores 
1 ( ) Parênteses. 
2 %, *, / Módulo, multiplicação e 
divisão. 
3 +, - Soma e subtração. 
 
Quanto menor o valor da ordem, mais alta a precedência, ou seja, o operador tem que ser executado antes 
dos demais de maior ordem. Uma multiplicação, por exemplo, precisa ser resolvida antes de uma soma, caso 
contrário o resultado final será incorreto. 
Você deve ter percebido, na tabela 7, a presença dos parênteses em primeiro lugar. Isso significa que, em 
uma expressão, o que estiver dentro de parênteses deve ser resolvido primeiro. E quando ocorrer parênteses 
dentro de parênteses? Nesse caso, os grupos de parênteses mais internos têm que ser resolvidos primeiro, 
depois os mais externos, e só então o que não está em parênteses. Por exemplo: 
Figura 5 – Exemplo de sequência para solução de expressão com parênteses
 
 
O uso de parênteses não apenas garante a precedência de determinadas regiões da expressão, mas 
também a organiza visualmente, tornando mais fácil a análise e o teste do algoritmo, sem cometer erros ou 
perder-se nas contas. 
Vamos exercitar a resolução de expressões, agora incluindo operadores lógicos, aritméticos e relacionais. 
O uso de parênteses não apenas garante a precedência de determinadas regiões da expressão, mas 
também a organiza visualmente, tornando mais fácil a análise e o teste do algoritmo, sem cometer erros ou 
perder-se nas contas. 
Vamos exercitar a resolução de expressões, agora incluindo operadores lógicos, aritméticos e relacionais. 
 
 
 
 
Transformando abstrações em expressões lógicas e 
aritméticas 
Durante as primeiras aulas, estudamos a abstração como uma maneira de trazer características da 
realidade para dentro dos nossos algoritmos. Podemos usar variáveis e operadores para construir expressões 
que representam a realidade, principalmente condições. 
Um exemplo foi dado durante a aula 3, na qual construímos o algoritmo de cálculo do IMC (Índice de Massa 
Corporal). Para um indivíduo ser considerado dentro da faixa de peso ideal, o valor calculado do seu IMC 
deveria ser maior ou igual a 18,5 e menor que 25. Considerando que uma variável chamada imc, do tipo 
Decimal, armazena o valor do IMC calculado de um indivíduo, a condição para que ele seja considerado dentro 
da faixa de peso ideal pode ser escrita da seguinte forma: 
imc >= 18,5 && imc < 25 
A expressão que propomos é formada por dois testes relacionais (imc >= 18,5 e imc < 25), conectados 
através de um operador lógico &&. Podemos exibir uma mensagem específica para o caso do indivíduo 
analisado, dependendo do resultado da expressão. Da mesma maneira, podemos representar diversas 
situações e condições em nossos algoritmos. Vamos praticar um pouco? 
 
Usando as variáveis fornecidas, formule uma expressão lógica que represente a condição solicitada. 
Você está desenvolvendo um algoritmo para um player de vídeo para internet, como os do site Youtube.com 
e Vimeo.com. O player precisa carregar pelo menos metade do vídeo para começar a exibí-lo, como forma de 
garantir que o vídeo não irá parar e aborrecer o usuário. Como deve ser a expressão para representar essa 
condição? 
Obs: use as variáveis tamanho_total_video e quantidade_carregada_video, ambas do tipo Inteiro. 
1. a) quantidade_carregada_video == tamanho_total_video / 2 
2. b) quantidade_carregada_video >= tamanho_total_video / 2 
3. c) quantidade_carregada_video <= tamanho_total_video 
4. d) quantidade_carregada_video > tamanho_total_video 
 
Usando as variáveis fornecidas, formule uma expressão lógica que represente a condição solicitada. Os 
critérios para aposentadoria no Brasil por tempo de serviço são: 
 35 anos de contribuição ou 65 anos de idade, para os homens e; 
 30 anos de contribuição ou 60 anos de idade, para as mulheres 
 
https://leadfortaleza.com.br/ead2pcd/conteudo/tmp/myopenolat_1_101716479116565/aula/index-fisico.html
https://leadfortaleza.com.br/ead2pcd/conteudo/tmp/myopenolat_1_101716479116565/aula/index-fisico.html
https://leadfortaleza.com.br/ead2pcd/conteudo/tmp/myopenolat_1_101716479116565/aula/index-fisico.html
https://leadfortaleza.com.br/ead2pcd/conteudo/tmp/myopenolat_1_101716479116565/aula/index-fisico.htmlUm novo modelo de algoritmo 
Você deve ter percebido que nossos algoritmos estão tomando uma nova forma, diferente daquela que 
vimos na aula passada. Estamos nos afastando cada vez mais da linguagem natural e usando símbolos para 
expressar tudo o que precisamos: desde valores armazenados na memória até operações relacionais de 
comparação. 
Esse modelo é chamado de pseudocódigo, ou seja, um falso código. Não se trata da validade do algoritmo, 
mas a forma como está escrito. Um pseudocódigo não utiliza uma linguagem de programação específica, 
embora pareça com algumas delas, permitindo a leitura tanto por quem conhece linguagens de programação 
quanto por quem está apenas estudando algoritmos. 
Os pseudocódigos são mais técnicos e organizados que um algoritmo escrito livremente em Português, por 
exemplo. Existem algumas simulações de linguagens de programação que podem ser usadas para a produção 
e teste de pseudocódigos. Essas linguagens são usadas no ensino de programação e permitem que os alunos 
façam testes com algoritmos, sem se preocupar com as particularidades de uma linguagem de programação 
real como C ou Java. 
 
Conheça alguns interpretadores de pseudocódigo em Português: 
 Visualg (https://www.apoioinformatica.inf.br/produtos/visualg/) 
 G-Portugol (https://sourceforge.net/projects/gpt.berlios/). 
 
Pseudocódigo e código-fonte não são a mesma coisa. Um pseudocódigo não é escrito em uma linguagem de 
programação real e, portanto, tem diversas limitações. O uso de pseudocódigo tem como propósito o estudo e 
testes de algoritmos. 
Nesse tópico, complementamos nossos conhecimentos sobre operadores com a noção de precedência, e 
vimos que podemos representar condições em nossos algoritmos usando a combinação de variáveis e 
operadores lógicos e relacionais. No próximo tópico, veremos as instruções para importar dados do usuário 
para dentro do algoritmo e exibir dados gerados dentro do algoritmo. 
 
TÓPICO 4 – Entrada e saída de dados 
Objetivos 
 Compreender a função da entrada e saída de dados; 
 Conhecer a notação de entrada e saída em um algoritmo. 
Agora que já estudamos como declarar variáveis e construir expressões lógicas e aritméticas usando as 
variáveis e operadores, podemos conhecer um princípio básico de todo algoritmo: a entrada e saída de dados. 
Aprenderemos a usar entrada e s 
 
Entrada de dados em algoritmos 
Você percebeu que em todos os exemplos que vimos durante esta aula os primeiros valores atribuídos às 
variáveis estavam escritos no algoritmo? Observe o algoritmo abaixo e note a atribuição de valores às 
variáveis v1 e v2. 
Algoritmo Exemplo 11 
Variáveis: 
 v1: Inteiro 
https://www.apoioinformatica.inf.br/produtos/visualg
https://sourceforge.net/projects/gpt.berlios/
 v2: Texto 
Início 
 v1 = 100 
 v2 = “Exemplo” 
Fim 
Definir o valor de variáveis dentro do algoritmo é útil, principalmente quando estamos trabalhando com 
constantes, afinal, elas não mudam. Porém, a maioria dos algoritmos precisam que o usuário forneça os dados 
iniciais, ou seja, os valores iniciais das variáveis. Por exemplo, o algoritmo do IMC, que calcula o valor do índice 
de massa corporal, deve receber do usuário os valores de massa (peso) e altura. Mas, como podemos fornecer 
esses valores ao algoritmo? 
 Podemos receber valores do usuário através de uma operação especial chamada ENTRADA. A sintaxe 
dessa operação é bem simples, vejo no exemplo a seguir. 
 Algoritmo Entrada 1 
 Variáveis: 
 x, y: Inteiro 
 Início 
 ENTRADA(x) 
 y = 2 * x 
 Fim 
Nesse exemplo, o valor de y será igual ao dobro do valor dado a x. Como você viu, para executar uma 
operação de entrada de dados basta colocar a palavra ENTRADA seguida de um par de parênteses contendo o 
nome de uma variável. E isso significa que, durante a execução do algoritmo, quando a instrução ENTRADA for 
encontrada, o usuário deverá fornecer um valor para a variável dentro dos parênteses. 
 Quando uma instrução ENTRADA aparecer no algoritmo, a execução deve parar obrigatoriamente, até 
que um valor para a variável em questão seja fornecido. Isso ocorre porque o algoritmo não deve seguir sem 
um valor para essa variável. Se o algoritmo está sendo executado no computador, a forma mais comum de 
fornecer um valor para variável é através do teclado. Observe o seguinte exemplo: 
 
Saída de dados em algoritmos 
Da mesma forma que podemos injetar dados nos nossos algoritmos, fornecendo valores para variáveis, 
também temos a capacidade de executar a saída de dados, ou seja, colocar valores para fora do algoritmo. 
A saída de dados em programas de computador pode ocorrer de diversas formas: exibir um texto em tela, 
enviar um dado pela Internet, executar um pedido de impressão para uma impressora etc. No nosso caso, 
iremos considerar que saída de dados será exibir um valor ou texto, como se fosse na tela do computador. 
Usaremos a instrução SAIDA, seguida de um par de parênteses e uma lista de elementos que podem ser 
texto ou variáveis de qualquer tipo. O resultado da execução dessa instrução deve ser a exibição de tudo que 
está dentro dos parênteses, na ordem em que estão. 
Veja o exemplo a seguir: 
Algoritmo Saída 1 
 Variáveis: 
 x: Inteiro 
 Início 
 ENTRADA(x) 
 x++ 
 SAIDA(“O novo valor de x é ") 
 SAIDA(x) 
 Fim 
Nesse exemplo, estamos usando a instrução SAIDA para exibir a mensagem “O novo valor de x é ” seguido 
do valor de x. Perceba que usamos a instrução ENTRADA para receber um valor para x, que foi incrementado 
em seguida, e exibido com a instrução SAIDA. Veja um exemplo similar na animação a seguir. 
 
Se você observou bem o exemplo animado, deve ter percebido que podemos usar a instrução SAIDA 
apenas para exibir texto, sem variáveis. Esse uso de SAIDA é muito útil para instruir o usuário, dizendo a ele 
o que ele deve informar ao algoritmo. 
 
Importância da entrada e saída de dados para 
algoritmos 
A instrução ENTRADA torna os algoritmos mais dinâmicos, pois permite que o usuário forneça 
valores para variáveis, em vez de termos que definir esses valores antes da execução do 
algoritmo. 
Na verdade, praticamente não existem algoritmos que não precisem de dados fornecidos pelo 
usuário para serem executados, ou seja, algoritmos que já tenham todos os valores de variáveis 
definidos desde o início. 
Já a instrução SAIDA tem outra função importantíssima, que é informar o que está 
acontecendo dentro do algoritmo, como o valor de cálculos ou indicar para o usuário que ele deve 
fornecer alguma informação ao algoritmo. 
Nesse tópico, conhecemos as instruções ENTRADA e SAIDA, que usamos para inserir dados 
no algoritmo e exibir mensagens e valores obtidos dentro do algoritmo, respectivamente. 
 
Chegamos ao final de nossa quarta aula do Curso de Introdução à Lógica de Programação. 
Ampliamos a nossa noção sobre a memória de um algoritmo, formalizando o conceito de variável. 
Aprendemos que cada variável deve ter um nome e um tipo de dados. 
Também conhecemos os operadores aritméticos, de atribuição, lógicos e relacionais. A junção 
desses operadores com as variáveis torna possível a manipulação de valores durante a execução 
do algoritmo e a representação de condições dentro dele. Outro assunto visto nessa aula foi a 
entrada e saída de dados, que torna os algoritmos mais dinâmicos e comunicativos. 
Representar condições em um algoritmo é o primeiro passo para a tomada de decisões, assim 
como fazemos no mundo real. Sabendo identificar uma condição e transcrevê-la para dentro do 
algoritmo é o que precisamos para começar a estudar as estruturas condicionais e de repetição. 
Essas estruturas dão grande flexibilidade aos algoritmos, permitindo a execução de passos 
baseados em decisões. E é isso que iremos estudar a partir da aula que vem. Até lá! 
 
 
Referências 
 CORMEN, Thomas. LEISERSON, Charles. RIVEST, Ronald. Algoritmos - Teoriae Prática. 2 ed. 
Campus Editora. 2002. 936 p. 
 Conceito de Variável - InfoEscola. Disponível em: 
<https://www.infoescola.com/matematica/conceito-de-variavel/>. Acesso em: 30 nov. 2013. 
 Precedência Geral de Operadores Aritméticos. Disponível em: 
<https://www.cristiancechinel.pro.br/my_files/algorithms/bookhtml/node39.html>. Acesso em: 01 
dez. 2013. 
 
 
 
 
https://www.infoescola.com/matematica/conceito-de-variavel/
https://www.cristiancechinel.pro.br/my_files/algorithms/bookhtml/node39.html
Prova IV 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
TÓPICO 1 – O que são Estruturas de Decisão? 
Objetivos 
 Reconhecer estruturas de decisão em situações do mundo real; 
 Compreender a importância das estruturas de decisão em um algoritmo. 
Na aula sobre algoritmos, conhecemos as suas características e como eles podem ser usados 
na hora de solucionar um problema. Relembrando: algoritmo é um conjunto de passos no qual se 
tem uma entrada que, ao ser processada, produzirá uma saída. 
Durante as aulas, aprendemos que algoritmos fazem parte do nosso dia-a-dia e estão 
presentes desde uma simples receita de bolo até em sistemas de grandes empresas. 
Até a aula de hoje, estávamos acostumados a escrever algoritmos em que um conjunto de 
passos era executado sequencialmente até encontrar a saída do algoritmo. 
Somente executar passos sequencialmente não é suficiente para resolver determinados 
problemas mais complexos e é por isso que novas estruturas foram incorporadas aos algoritmos 
como, por exemplo, as estruturas de decisão. 
 
As estruturas de decisão estão presentes no nosso cotidiano. É comum no nosso dia a dia 
tomarmos alguma decisão sobre algo que vamos fazer dada uma situação na qual nos 
encontramos. Vamos analisar dois diálogos entre João e Pedro para compreender melhor esse 
conceito. 
No diálogo, vemos que se a resposta do João para a pergunta de Pedro for Não, Pedro decide 
que irão jogar bola. Caso a resposta seja Sim, Pedro e João ficarão em casa. Perceba que existiu 
um desvio no fluxo de ações de Pedro que optou por escolher um dos caminhos dependendo da 
resposta de João. 
Que tal outro exemplo? Vamos analisar a figura 2. Júlia precisa ir para a casa de uma amiga 
estudar. Existem dois caminhos que chegam até a casa da amiga de Júlia. O caminho da direita 
tem distância de 5,3 Km passando por uma floresta com bastante sombra e o caminho da 
esquerda tem distância de 2 Km passando por um campo aberto. 
Vamos imaginar que Júlia precisa chegar o mais rápido possível na casa da amiga e não está 
preocupada se o caminho tem ou não sombra. Qual caminho ela deveria escolher? A resposta é: 
“O caminho da esquerda”. 
Perceba que antes de escolher o caminho, uma decisão precisou ser tomada. A decisão foi 
baseada na condição de que “Julia deve gastar o menor tempo possível”. Diante disso, qual seria 
a pergunta que deveria ser feita para que a resposta influenciasse na decisão? Vamos analisar a 
figura a seguir. 
 
Os dois exemplos apresentados são baseados em situações do dia a dia. Com algoritmos não 
é diferente. Algoritmos necessitam de uma estrutura capaz de desviar a execução, ou seja, um 
fluxo de ações. Esses desvios deverão ocorrer sempre que uma decisão for tomada. 
Essa estrutura é chamada de Estrutura de Decisão e é responsável por desviar o fluxo de 
execução de um algoritmo. Com a possibilidade de mudança de fluxo, podemos criar algoritmos 
mais robustos, capazes de fazer escolhas com base em uma condição. Esses algoritmos estarão 
aptos a resolver diversos tipos de problemas. 
 
 
Figura 3 - Exemplo de estrutura de decisão em fluxogramas 
 
Você se lembra dos fluxogramas? Eles são a representação gráfica de algoritmos. As 
estruturas de decisão podem ser representadas usando o fluxograma da figura 3. 
A condição é representada por um losango. Se o resultado da condição for verdadeiro, 
o bloco 1 será executado. Caso contrário (ou seja, a condição sendo falsa), o bloco 2 será 
executado. Na aula passada, tínhamos algoritmos que sempre executavam passos sequenciais. 
Com essa nova estrutura, podemos ter algoritmos em que somente alguns comandos serão 
executados. 
 
Nesse tópico, identificamos algumas situações no nosso cotidiano onde utilizamos estruturas 
de decisão. Além disso, aprendemos como representar uma estrutura de decisão em um 
fluxograma. 
Existem três tipos de estruturas de decisão em algoritmos. São elas: SE, SE/SENÃO e 
SELECIONE/CASO. Cada uma possui uma forma de utilização e um propósito que veremos mais 
detalhadamente nos próximos tópicos da nossa aula. 
No próximo tópico, iremos aprender como funciona a estrutura de decisão mais simples, a 
estrutura SE. 
TÓPICO 2 – Estrutura de Decisão SE 
Objetivo 
 Compreender o funcionamento da estrutura de decisão SE. 
No tópico anterior, percebemos a importância que as estruturas de decisão têm no nosso dia a 
dia e como elas são importantes para os algoritmos em geral. Vamos agora aprender como 
funciona a primeira e mais simples dessas estruturas: a do tipo SE. 
Estruturas de decisão do tipo SE compreendem apenas uma possibilidade: a da condição 
ser verdadeira. Elas são formadas pela regra apresentada na figura 4. 
Vamos analisar a construção textual da estrutura de decisão SE. A primeira cláusula ou 
palavra-chave é a palavra “se”, seguida pela <condição>. Essa condição equivale a uma 
expressão lógica ou relacional que será verificada. Logo após, temos a palavra-chave “então” 
seguida pelo <bloco 1>. O que estiver dentro do bloco 1 será executado caso a <condição> seja 
verdadeira. Para finalizar, fechamos com a cláusula “fim_se”. 
 
 
Figura 4 - Estrutura de decisão SE em código e fluxograma 
 
 
A cláusula <condição> representa qualquer expressão lógica ou relacional, ou seja, aquelas 
que tenham um valor lógico (verdadeiro ou falso), também conhecidos como booleanos. Vocês 
lembram o que são expressões booleanas? Vamos então lembrar um pouco. 
Revisão de Expressão Booleana 
Expressão Booleana é uma estrutura lógica que pode ter um valor verdadeiro ou falso. As 
operações podem ser formadas por diversos operadores. A tabela 1, a seguir, contém alguns dos 
possíveis operadores de uma expressão booleana. 
Tabela 1 - Operadores Relacionais 
Símbolo Descrição Exemplo 
> “Maior que” 2 > 1 
< “Menor que” 1 < 3 
== “Igual a” 5 == 5 
>= “Maior ou igual a” 4 ≥ 4 
<= “Menor ou igual a” 8 ≤ 8 
!= “Diferente de” 3 ≠ 4 
 
A expressão contida na cláusula <condição> pode ser montada usando números e/ou 
variáveis em um algoritmo. Exemplos: 
 6 < 3 – “Seis é menor do que três” 
 media > 7 – “O valor da variável ‘media’ é maior do que 7” 
 
Na tabela 2, a seguir, você encontrará mais exemplos de possíveis expressões que podem ser 
inseridas na cláusula <condição>. 
 
Tabela 2 - Exemplo de expressões booleanas 
Condição Como ler? Resultado 
1 == 1 ? “Um é igual a Um?” Verdadeiro 
2 > 3 ? “Dois é maior do que Três?” Falso 
‘A’ == ‘B’ ? “A é igual a B?” Falso 
35 >= 0 ? “Trinta e cinco é maior ou igual a zero?” Verdadeiro 
 
Analise as expressões abaixo e informe se o resultado é Verdadeiro ou Falso. 
Exemplo: “2 > 3 Falso” 
a. 3 > 4 → Verdadeiro Falso 
b. CA == AC →Verdadeiro Falso 
c. 5 ≥ 5 →Verdadeiro Falso 
d. 4 < 7 →Verdadeiro Falso 
Verificar resposta Recomeçar 
Os algoritmos apresentados na aula 3 possuíam sempre um conjunto de passos que eram 
executados sequencialmente, ou seja, um depois do outro. E se dentre esses passos, você 
tivesse um comando que somente seria executado se alguma condição acontecesse? Para 
ajudar a entender melhor, vamos relembrar o algoritmo Preparar Café da aula 3 e apresentar uma 
versão modificada, adicionando uma estrutura de decisão SE. Veja então como ficaria. 
Algoritmo 1: Preparar Café 
Variáveis: 
Início 
 Ferver a água 
 Colocar pó de café na água 
 Misturar bem para dissolver o pó na água 
 Passar a mistura no filtro de café 
 se João gosta

Outros materiais