Buscar

Aprenda a Programar do Zero

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

APRENDA A 
PROGRAMAR 
DO ZERO
LÓGICA DE PROGRAMAÇÃO
DANIEL G. SOUTO
EDUARDO M. SILVA
WWW.CRIANDOCODIGO.COM.BR CriandoC ó d i g o
 
 
 
"O seu tempo é limitado, então não o desperdice 
vivendo a vida de outra pessoa..." 
STEVE JOBS 
AUTORES 
 
Daniel G. Souto 
Analista graduado em Sistemas de Informação pela Universidade 
Potiguar, com mais de 15 anos de experiência desenvolvendo sistemas 
para indústria, comércio e setor público. 
Expert nas linguagens C, C++, Java, Object Pascal (Delphi) e 
Banco de Dados Microsoft SQL Server. 
 
Eduardo M. Silva 
 Graduado em Sistemas de Informação pela Universidade 
Potiguar e pós-graduado em Engenharia de Software pela Impacta 
Tecnologia. 
Possui mais de 10 anos de experiência em desenvolvimento web 
e mobile, administração de redes e bancos de dados. Expert nas 
linguagens Java, C#, ASP e C++ com foco em ambientes .NET. 
Atualmente é empresário no segmento de automação comercial 
na cidade de Natal/RN. 
 
 
 
 
 
 
 
Atenção 
 
 
Todos os nomes de marcas, produtos e serviços 
mencionados aqui são propriedade de seus respectivos 
donos e são usados somente como referência. Além disso, 
não existe a intenção de difamar, desrespeitar, insultar, 
humilhar ou menosprezar você, leitor, ou qualquer outra 
pessoa, cargo ou instituição. Caso você acredite que 
alguma parte deste guia seja, de alguma forma, 
desrespeitosa ou indevida, e deva ser removida ou alterada, 
você pode entrar em contato diretamente conosco através 
do e-mail suporte@criandocodigo.com.br 
 
INTRODUÇÃO 
 
Este livro é destinado a pessoas interessadas em aprender a programar, mas que 
nunca tiveram contado com uma linguagem de programação, e aqueles que sentiram 
dificuldade no passado e que desejam retornar aos estudos objetivando a superação. O e-
book aborda de forma clara e simples o conteúdo da lógica de programação utilizando o 
português estruturado. 
Os capítulos estão organizados de maneira que o estudante possa evoluir 
gradativamente. Iniciando com conceitos sobre algoritmos partindo em seguida para o básico 
na construção de um algoritmo até os comandos e estruturas mais avançados, o leitor 
aprenderá como estruturar o código através de exemplos e diagramas. A cada capítulo é 
apresentado uma lista de exercícios que visa a fixação do conteúdo, para tal é muito 
importante que o estudante elabore a sua própria solução e confronte a sua resposta com a 
resolução do exercício no final do livro. 
Desenvolver o raciocínio lógico para encontrar soluções é a parte mais importante 
quando se estuda uma linguagem de programação. 
 
 
DICAS 
 
Segue aqui algumas dicas para que você possa obter o melhor aproveitamento 
possível deste livro: 
Verifique no site www.criandocodigo.com.br se você está com a versão atualizada 
deste livro. 
Atualizamos constantemente a versão deste livro com as mais atuais e avançadas 
formas de estudar lógica de programação, atualizamos também para adicionar melhores 
explicações de alguma parte que possa ter gerado dúvidas. 
A ideia é que esse livro nunca tenha um fim. Ele será atualizado continuamente para 
que você sempre esteja com o que há de mais moderno no estudo da lógica de programação. 
A cada nova versão, eu mostro o que foi mudado para que você leia somente as partes 
atualizadas (não tendo que ler o livro todo novamente, se não quiser ou não tiver tempo). 
 
 
SUMÁRIO 
1 ALGORITMOS ....................................................................................................... 8 
1.1 Lógica de programação ............................................................................................. 8 
1.2 Algoritmos ................................................................................................................. 8 
1.3 Formas de representação ......................................................................................... 9 
1.3.1 Descrição narrativa ....................................................................................................................... 9 
1.3.2 Pseudocódigo ............................................................................................................................... 9 
1.3.3 Diagrama de bloco ...................................................................................................................... 10 
2 MEMÓRIA, TIPOS DE DADOS E VARIÁVEIS .......................................................... 13 
2.1 Identificadores ......................................................................................................... 13 
2.2 Tipos de dados primitivos ........................................................................................ 14 
2.2.1 Inteiros ..................................................................................................................................... 14 
2.2.2 Reais ........................................................................................................................................ 14 
2.2.3 Literais ..................................................................................................................................... 14 
2.2.4 Lógicos ..................................................................................................................................... 14 
2.3 Constantes ............................................................................................................... 14 
2.4 Variáveis ................................................................................................................... 14 
3 COMENTÁRIOS ................................................................................................... 18 
4 VISUALG............................................................................................................. 20 
5 OPERADORES .................................................................................................... 23 
5.1 Operadores aritméticos ........................................................................................... 23 
5.2 Operadores relacionais ........................................................................................... 24 
5.3 Operadores lógicos .................................................................................................. 24 
5.3.1 Operador lógico E ....................................................................................................................... 25 
5.3.2 Operador lógico OU ..................................................................................................................... 25 
5.3.3 Operador lógico NAO ................................................................................................................... 25 
5.3.4 Operador lógico XOU ................................................................................................................... 25 
5.4 Exercícios ................................................................................................................. 26 
6 ESTRUTURAS DE CONTROLE ............................................................................. 28 
6.1 Estrutura seqüencial ............................................................................................... 28 
6.2 Estrutura de decisão ............................................................................................... 28 
6.2.1 Decisão simples ......................................................................................................................... 28 
6.2.2 Decisão composta ...................................................................................................................... 29 
6.2.3 Seleção encadeada .....................................................................................................................30 
6.2.4 Decisão múltipla ........................................................................................................................ 32 
6.3 Estrutura de repetição ............................................................................................ 34 
6.3.1 Variável de controle .................................................................................................................... 34 
6.3.2 Laços condicionais ..................................................................................................................... 36 
6.3.2.1 Teste lógico no início do laço .................................................................................................. 36 
6.3.2.2 Teste lógico no final do laço .................................................................................................... 37 
6.3.3 Interrompendo as estruturas de laço ............................................................................................ 38 
6.4 Exercícios ................................................................................................................. 39 
7 ESTRUTURA DE DADOS HOMOGÊNEAS .............................................................. 42 
7.1 Vetores ..................................................................................................................... 42 
7.2 Matrizes ................................................................................................................... 43 
7.3 Exercícios ................................................................................................................. 44 
8 MODULARIZAÇÃO .............................................................................................. 46 
8.1 Subprogramas ......................................................................................................... 46 
8.2 Procedimentos ........................................................................................................ 46 
8.3 Funções ................................................................................................................... 47 
8.4 Variáveis locais e globais ......................................................................................... 48 
8.5 Passagem de parâmetros por referência ............................................................... 48 
8.6 Funções do VisuAlg ................................................................................................. 49 
8.7 Exercícios ................................................................................................................. 52 
9 RESOLUÇÃO DOS EXERCÍCIOS ........................................................................... 54 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1 ALGORITMOS 
 
APRENDA A PROGRAMAR DO ZERO - LÓGICA DE PROGRAMAÇÃO 
8 
Livro versão 1.1 verifique se esta é a versão mais atualizada em www.criandocodigo.com.br 
 
1 Algoritmos 
 
1.1 Lógica de programação 
 
 A lógica de programação é a técnica que tem como objetivo desenvolver algoritmos 
para solucionar problemas ao utilizara lógica matemática no desenvolvimento de um 
programa. 
 Para ser um bom programador é importante aprender a lógica. Ela é a base para 
aprender as linguagens de programação. 
 
1.2 Algoritmos 
 
 Algoritmo é uma palavra derivada do nome Mohammed ibn Musa Al-Khowarizmique, 
que foi um matemático, astrônomo e astrólogo por volta de 800 d.C. Seus trabalhos 
introduziram o cálculo hindu aos árabes e, em seguida, para Europa. 
 Um programa de computador é um algoritmo que segue a sintaxe de uma linguagem 
de programação. Algoritmo é essencialmente uma ordem de comandos, ou instruções, que 
diz ao computador o que deve fazer. 
 Algoritmos são compostos por blocos de código que se conectam por meio de três 
estruturas, que são a sequenciação, seleção e repetição. Baseado nessas estruturas temos 
a origem da programação estruturada. 
 
• Sequenciação: São os passos de processamento que descrevem um programa: 
"execute a Tarefa A e depois a Tarefa B" 
• Seleção: Permite a mudança do fluxo de execução de um programa baseado 
em ocorrências lógicas: "se X for verdadeiro, faça a Tarefa A; senão faça a 
Tarefa B" 
• Repetição: Permite a repetição de partes do programa: "repita Tarefa A 
enquanto X for menor que 10" 
 
 Um algoritmo é dividido em três partes: Entrada, processamento e saída. 
 Na entrada temos os dados a serem inseridos no programa para resolução de um 
problema. No processamento estará o código responsável para se chegar a um resultado. A 
saída retornará o resultado do processamento. 
 
Definição: 
1. Um algoritmo é um conjunto não ambíguo e ordenado de passos executáveis que 
definem um processo finito1. 
 
2. Um dado é qualquer registro que não esteja contextualizado, organizado ou 
trabalhado, que não representa um significado. Uma informação é o dado tratado, organizado 
e formatado para passar um significado para quem a recebe. 
 
1Conceito de algoritmo formalizado por Alan Turing e Alonzo Church em 1936 
 
APRENDA A PROGRAMAR DO ZERO - LÓGICA DE PROGRAMAÇÃO 
9 
Livro versão 1.1 verifique se esta é a versão mais atualizada em www.criandocodigo.com.br 
 
 
1.3 Formas de representação 
 
 Exigem várias formas que podem ser usadas na representação de algoritmos, as mais 
comumente utilizadas são: Descrição narrativa, pseudocódigo e fluxograma. 
 
1.3.1 Descrição narrativa 
 
 Na descrição narrativa os algoritmos são expressos em linguagem natural em 
português ou outro idioma. A linguagem natural está bem distante do entendimento da 
linguagem utilizada pelos computadores. Tem como desvantagem a dificuldade de traduzi-la 
para computadores, são mais propensas a ambiguidades e a extensão do conteúdo. Por ser 
uma linguagem que temos familiaridade pode ser criada com facilidade. A seguir, um 
exemplo: 
 
• Algoritmo para fritar um ovo 
 
1. Retire o ovo da geladeira. 
2. Coloque a frigideira no fogo. 
3. Coloque óleo na frigideira. 
4. Quebre ovo, separando a casca. 
5. Ponha a clara e a gema na frigideira. 
6. Espere um minuto. 
7. Apague o fogo. 
8. Retire o ovo da frigideira. 
 
1.3.2 Pseudocódigo 
 
 O pseudocódigo, também conhecido por pseudo-linguagem, é uma representação da 
linguagem natural sobre uma linguagem de programação. Não existe um padrão formal de 
como o pseudocódigo deve ser escrito, apenas que deve ser didático o bastante para que 
represente uma linguagem de programação. 
 O VisuAlg será a nossa ferramenta de criação de pseudocódigo através do português 
estruturado (portugol2) a partir deste ponto e em todo livro, a seguir um exemplo de 
algoritmo: 
 
algoritmo "calculo da média" 
var 
 nota1, nota2, M: real 
inicio 
 leia(nota1) 
 leia(nota2) 
 M <- (nota1 + nota2) / 2 
 
2Portugol é a união entre Português + ALGOL (significa AlgorithmicLanguage, é uma linguagem de 
programação voltada para aplicações científicas criada em 1958) 
 
APRENDA A PROGRAMAR DO ZERO - LÓGICA DE PROGRAMAÇÃO 
10 
Livro versão 1.1 verifique se esta é a versão mais atualizada em www.criandocodigo.com.br 
 
 
 se M >= 7.0 entao 
 escreva("Aprovado") 
 senao 
 escreva("Reprovado") 
 fimse 
fimalgoritmo 
 
 O código inicia com a palavra algoritmo que define o título do programa. Em var temos 
a área onde as variáveis são declaradas. inicio e fimalgoritmo determinam o inicio e fim da 
área reservada aos comandos. 
 
1.3.3 Diagrama de bloco 
 
 É uma representação esquemática de um processo, sistemaou algoritmo. Um 
diagrama de bloco, também conhecido como diagrama de fluxo, usa formas geométricas 
como retângulos, círculos entre outras conectados por setas que indicam o fluxo e sequência 
do processo. Na Figura 1.1 temos as formas usadas com maior frequência. 
 
 Terminação sinaliza o 
início ou fim do fluxo de um 
programa. 
 Fluxo do algoritmo 
representa o sentido do fluxo 
conectando os símbolos. 
 
 
 
Processo utilizado 
para indicar que algum 
cálculo, atribuição ou outra 
manipulação de dados será 
realizado. 
 Entrada de dados 
indica que novos dados serão 
inseridos atraves de algum 
dispositivo. 
 Saída de dados indica 
a saída dos dados 
processados. 
 Decisão determina 
uma mudança no fluxo após 
o resultado de uma 
comparação. 
 Preparação 
Representa um grupo de 
operações que não estão 
 
APRENDA A PROGRAMAR DO ZERO - LÓGICA DE PROGRAMAÇÃO 
11 
Livro versão 1.1 verifique se esta é a versão mais atualizada em www.criandocodigo.com.br 
 
incluídas na diagramação. 
 Conector utilizado 
para conectar pares. 
Figura 1.1 Formas geométricas 
 Exemplo: 
 
 
 
Figura 1.2 Diagrama do pseudocódigo 
 
 
 
APRENDA A PROGRAMAR DO ZERO - LÓGICA DE PROGRAMAÇÃO 
12 
Livro versão 1.1 verifique se esta é a versão mais atualizada em www.criandocodigo.com.br 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2 MEMÓRIA, TIPOS DE DADOS E VARIÁVEIS 
 
APRENDA A PROGRAMAR DO ZERO - LÓGICA DE PROGRAMAÇÃO 
13 
Livro versão 1.1 verifique se esta é a versão mais atualizada em www.criandocodigo.com.br 
 
2 Memória, tipos de dados e variáveis 
 
 A memória do computador é o componente eletrônico capaz de armazenar as 
variáveis, o código do algoritmo e outros dados pertinentes a um programa. Na programação 
cada posição da memória possui um endereço e é nesse espaço que armazenamos as 
variáveis. Ao definir uma variável estaremos reservando um endereço que conterá uma 
representação simbólica (nome) e o valor, a figura 2.1 ilustra um o endereçamento da 
memória. 
 
Endereço Variável Valor 
0 idade 30 
1 altura 1,62 
2 nome Maria 
... ... ... 
n x 0 
Tabela 2.1 Representação da memória com endereço, nome da variável e valor 
 
2.1 Identificadores 
 
 Os nomes das variáveis, funções e outros componentes adicionados a um programa 
são chamados de identificadores. 
 Algumas palavras, que são os comandos da linguagem de programação, não podem 
ser usadas, como por exemplo no VisuAlg as palavras-chave, ou palavras reservadas, inteiro, 
para, se, senao, inicio entre outras não podem ser usadas. A seguir as regras para criação de 
identificadores: 
 
• 
• Não são permitidos espaços em branco 
• Os caracteres utilizados devem ser números, letras minúsculas, letras maiúsculas e o 
caractere sublinhado 
• Palavras reservadas não podem ser usadas como identificadores 
 
Alguns exemplos: 
 
Identificadores válidos 
X 
nome_aluno 
rua2020 
abc_123 
LOGICA 
 
Identificadores inválidos 
3X // iniciando com número 
 
APRENDA A PROGRAMAR DO ZERO - LÓGICA DE PROGRAMAÇÃO 
14 
Livro versão 1.1 verifique se esta é a versão mais atualizada em www.criandocodigo.com.br 
 
nome aluno // espaço em branco 
rua@2020 // caractere especial @ 
LÓGICA // caracteres especiais como acentuações 
inteiro // palavra reservada do VisuAlg 
 
2.2 Tipos de dados primitivos 
 
 Variáveis e constantes são os espaços na memória que armazenam valores. Para um 
programa de computador funcionar ele necessita dessas informações. No VisuAlg podemos 
utilizar quatro tipos dados primitivos: inteiro, real, caractere e lógico. 
 
2.2.1 Inteiros 
 
São tipos de dados numéricos positivos ou negativos sem qualquer número 
fracionado. Exemplos: 50, -12, 0, entre outros. 
 
2.2.2 Reais 
 
São tipos de dados numéricos positivos, negativos e números fracionados: Exemplos: 
50, -12, 0, 1.45, -23.891, entre outros. (Quando usamos números fracionados em programas 
de computador devemos utilizar a notação inglesa e substituir a vírgula pelo ponto). 
 
2.2.3 Literais 
 
São tipos de dados que tem como característica possuírem uma cadeia de caracteres 
como delimitadores. Uma cadeia de caracteres é também conhecida como string. Exemplos: 
Avenida Paulista, 1234 99)3444- 
 
2.2.4 Lógicos 
 
São tipos de dados que recebem valores verdadeiro ou falso. Também conhecido 
como tipo booleano devido à contribuição do matemático e filósofo George Boole. 
 
2.3 Constantes 
 
As constantes são valores fixos e que não podem ser alterados durante a execução de 
um programa. Exemplos:12, 102.48, "palavra", -5.8, entre outros. 
 
2.4 Variáveis 
 
 Uma variável pode armazenar apenas um valor e seu conteúdo pode ser modificado 
programaticamente durante a execução do programa. Tal modificação é possível ao executar 
o comando de atribuição. O comando de atribuição é representado por uma seta apontando 
para esquerda. 
 
 
APRENDA A PROGRAMAR DO ZERO - LÓGICA DE PROGRAMAÇÃO 
15 
Livro versão 1.1 verifique se esta é a versão mais atualizada em www.criandocodigo.com.br 
 
identificador ← expressão 
Figura 2.1 
 
 Uma variável é também um identificador e na figura 2.1 temos uma variável recebendo 
um valor (expressão), pode- A seguir alguns 
exemplos de uso: 
 
 
 Para declarar uma variável no VisuAlg usamos as seguintes palavras-chave: 
 
• inteiro: Tipos numéricos inteiros 
• real: Tipos numéricos reais 
• caractere: Tipo literais 
• logico: Tipos lógicos 
 
 Os nomes das variáveis devem começar por uma letra e depois conter letras, números 
ou sublinhado, até um limite de 30 caracteres no VisuAlg. A declaração de uma variável deve 
seguir o padrão mostrado a seguir: 
 
<lista-de-variáveis>: <tipo-de-dado> 
 
A <lista-de-variáveis> suporta a inserção de um nome ou vários nomes 
separados por vírgula. No <tipo-de-dado> deve-se informar o tipo de dado desejado. 
Exemplos: 
 
valor: real 
x, y, z: inteiro 
aprovado: logico 
nome, rua, cidade, telefone: caractere 
 
As variáveis são declaradas após a palavra-chave var e recebem valor após inicio: 
 
Algoritmo "exemplo" 
var 
 nota: real 
 X, Y, Z: inteiro 
 nome: caractere 
 resposta: logico 
inicio 
nota <- 7.5 (nota recebe 7.5) 
Y <- 1 
Z <- 2 
X <- Y + Z 
X <- X + 1 
nome <- "Maria" 
 
APRENDA A PROGRAMAR DO ZERO - LÓGICA DE PROGRAMAÇÃO 
16 
Livro versão 1.1 verifique se esta é a versão mais atualizada em www.criandocodigo.com.br 
 
 nome <- "Maria" 
 nota <- 7.5 
 Y <- 1 
 Z <- 2 
 X <- Y + Z 
 X <- X + 1 
 resposta <- falso 
fimalgoritmo 
 
 
 
APRENDA A PROGRAMAR DO ZERO - LÓGICA DE PROGRAMAÇÃO 
17 
Livro versão 1.1 verifique se esta é a versão mais atualizada em www.criandocodigo.com.br 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3 COMENTÁRIOS 
 
APRENDA A PROGRAMAR DO ZERO - LÓGICA DE PROGRAMAÇÃO 
18 
Livro versão 1.1 verifique se esta é a versão mais atualizada em www.criandocodigo.com.br 
 
3 Comentários 
 
 Os comentários servem para descrever partes, ou blocos, de código para facilitar a sua 
leitura ou quando o programador passar muitos dias sem trabalhar e ter dificuldade em 
relembrar a funcionalidade de determinado código. No VisuAlg o delimitador // indica que a 
linha, ou parte da linha, é um comentário, exemplo: 
 
// esta linha é um comentário 
X <- Y + Z // X recebe a soma de Y e Z 
 
 Assim que você inicia o VisuAlgele nos fornece um esqueleto de um programa. Como 
pode ser visto no quadro abaixo há vários comentários com informações sobre o autor e as 
seções do código. 
 
algoritmo "semnome" 
// Disciplina : [Linguagem e Lógica de Programação] 
// Professor : Antonio Carlos Nicolodi 
// Descrição : Aqui você descreve o que o programa faz! (função) 
// Autor(a) : Nome do(a) aluno(a) 
// Data atual : 23/3/2018 
var 
// Seção de Declarações das variáveis 
 
inicio 
// Seção de Comandos, procedimento, funções, operadores, etc... 
 
fimalgoritmo 
 
 
 
 
APRENDA A PROGRAMAR DO ZERO - LÓGICA DE PROGRAMAÇÃO 
19 
Livro versão 1.1 verifique se esta é a versão mais atualizada em www.criandocodigo.com.br 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
4 VISUALG 
 
APRENDA A PROGRAMAR DO ZERO - LÓGICA DE PROGRAMAÇÃO 
20 
Livro versão 1.1 verifique se esta é a versão mais atualizada em www.criandocodigo.com.br 
 
4 VisuAlg 
 
 Neste capítulo iremos apresentar o editor VisuAlg que permite criar, interpretar e 
executar algoritmos em português estruturado como se fosse um programa de computador. 
O VisuAlg simula um ambiente de execução de um programa real onde os resultados 
serão mostrados numa tela de texto (semelhante ao MS-DOS), com recursos como 
depuração de erros e a possibilidade de exportar o código para outras linguagens de 
programação. 
Neste e-book todos os exemplos de código serão criados na versão 3.0.6.5 do VisuAlg, 
para baixa-lo acesse o site http://visualg3.com.br. 
 
 
Figura 4.1 Tela principal do VisuAlg 
 
Na tela principal do VisuAlg (figura 4.1) você tem a área para digitação do código, área 
para visualizar o valor de cada variável e uma área com os resultados. 
O menu que você irá usar bastant .2), as opções desse 
menu lhe permitirá executar os algoritmos apresentados em cada capitulo. 
Para rodar um algoritmo utilize a tecla de atalho F9. Quando quiser testar o código 
linha por linha coloque o cursor na linha desejada e tecle F5 para ativar o ponto de parada 
(breakpoint) e tecle F8 para rodar o algoritmo passo a passo (modo depuração). 
 
A seguir temos uma descrição de cada função do menu: 
 
Rodar o Algoritmo: Inicia (ou continua) a execução automática do pseudocódigo. 
 
Rodar Passo a passo: Inicia (ou continua) a execução linha por linha do pseudocódigo, 
dando ao usuário a oportunidade de acompanhar o fluxo de execução, os valores das 
variáveis e a pilha de ativação dos subprogramas. 
 
Rodar com tempo: Insere um atraso (que pode ser especificado) antes da execução de 
cada linha. Também realça em fundo azul o comando que está sendo executado, da mesma 
forma que na execução passo a passo. 
 
 
APRENDA A PROGRAMAR DO ZERO - LÓGICA DE PROGRAMAÇÃO 
21 
Livro versão 1.1 verifique se esta é a versão mais atualizada em www.criandocodigo.com.br 
 
Parar: Termina imediatamente a execução do pseudocódigo. Evidentemente, este item 
fica desabilitado quando o pseudocódigo não está sendo executado. 
 
Liga/desliga breakpoint: Insere/remove um ponto de parada na linha em que esteja o 
cursor. Estes pontos de parada são úteis para a depuração e acompanhamento da execução 
dos pseudocódigos, pois permitem a verificação dos valores das variáveis e da pilha de 
ativação de subprogramas. 
 
Desmarcar todos os breakpoints: Desativa todos os breakpoints que estejam 
ativados naquele momento. 
 
Executar em modo DOS: Com esta opção ativada, tanto a entrada como a saída-
padrão passa a ser uma janela que imita o MS-DOS, simulando a execução de um programa 
neste ambiente. 
 
Gerar valores aleatórios: Ativa a geração de valores aleatórios que substituem a 
digitação de dados. A faixa padrão de valores gerados é de 0 a 100 inclusive, mas pode ser 
modificada. Para a geração de dados do tipo caractere, não há uma faixa preestabelecida: os 
dados gerados serão sempre strings de 5 letras maiúsculas. 
 
Perfil: Após a execução de um pseudocódigo, exibe o número de vezes que cada umas 
das linhas foi executada. É útil para a análise de eficiência (por exemplo, métodos de 
ordenação) 
 
Pilha de ativação: Exibe a pilha de subprogramas ativados num dado momento. 
Convém utilizar este comando em conjunto com breakpoints ou com a execução passo a 
passo. 
 
 
 
Figura 4.2 Menu Run 
 
APRENDA A PROGRAMAR DO ZERO - LÓGICA DE PROGRAMAÇÃO 
22 
Livro versão 1.1 verifique se esta é a versão mais atualizada em www.criandocodigo.com.br 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
5 OPERADORES 
 
APRENDA A PROGRAMAR DO ZERO - LÓGICA DE PROGRAMAÇÃO 
23 
Livro versão 1.1 verifique se esta é a versão mais atualizada em www.criandocodigo.com.br 
 
5 Operadores 
 
 Um operador é um elemento aplicado a um ou mais operandos em uma expressão ou 
instrução. A seguir veremos como usar os operadores matemáticos no computador. 
 
5.1 Operadores aritméticos 
 
 Para criar uma expressão aritmética devemos utilizar variáveis de tipo inteiro ou real e 
os operadores aritméticos. Existem dois tipos de operadores aritméticos: unários e binários. 
 
• Unários: Operadores que usam apenas um operando. Por exemplo, quando queremos 
inverter um valor de positivo para negativo. 
• Binários: Operadores que usam dois operando. Exemplos: exponenciação, 
multiplicação, adição, subtração e divisão. 
 
Prioridade Tipo Operador Descrição 
1 Unário - Sinal negativo 
1 Unário + Sinal positivo 
2 Binário ^ Exponenciação 
3 Binário \ Divisão Inteira 
3 Binário % ou MOD Resto da divisão (módulo) 
3 Binário / Divisão 
3 Binário * Multiplicação 
4 Binário + Adição 
4 Binário - Subtração 
Tabela 5.1 
Exemplos de uso de operadores: 
 
x <- 3 * 10 
y <- x - 1 
x <- x * y + 5 
z <- x + (y * x) 
x <- (y / z)^2 
 
 Expressões matemáticas complexas podem utilizar múltiplos operadores, colchetes e 
chaves. Para que o computador compreenda essa expressão será necessário converte-la 
para um formato compatível com a linguagem de programação. Ao invés de usar colchetes e 
 
APRENDA A PROGRAMAR DO ZERO - LÓGICA DE PROGRAMAÇÃO 
24 
Livro versão 1.1 verifique se esta é a versão mais atualizada em www.criandocodigo.com.br 
 
chaves, na programação os únicos elementos usados para agrupar as expressões são os 
parênteses. A seguir um exemplo: 
 
Expressão original: 
[
𝑥 + 𝑦
2
+ (10 𝑥 4)] + 18 
 
Expressão em VisuAlg: 
((x+y)/2+(10*4))+18 
 
5.2 Operadores relacionais 
 
 Os operadores relacionais são usados para comparar dois valores do mesmo tipo. São 
operadores binários e retornam apenas dois valores: verdadeiro ou falso. 
 
Símbolo Significado 
= Igual 
< Menor 
> Maior 
<= Menor ou igual 
>= Maior ou igual 
<> Diferente 
Tabela 5.2 
 
Exemplos: 
 
x <- 8 
y <- 1 
nome <- "Maria" 
letra <- "A" 
 
x = 4 //falso 
x > 1 //verdadeiro 
x = x + 1 //falso 
x = y //falso 
y <= x //verdadeiro 
y <> x //verdadeiro 
nome = "João" //falso 
letra < "B" //verdadeiro 
 
5.3 Operadores lógicos 
 
 
APRENDA A PROGRAMAR DO ZERO - LÓGICA DE PROGRAMAÇÃO 
25 
Livro versão 1.1 verifique se esta é a versão mais atualizada em www.criandocodigo.com.br 
 
 Os operadores lógicos são utilizados para combinar mais de uma expressão relacional, 
o resultado sempre será verdadeiro ou falso. 
 
5.3.1 Operador lógico E 
 
Operador que resulta VERDADEIRO somente se seus dois operandos lógicos forem 
verdadeiros. Na tabela 5.3 temos a tabela verdade do operador E. 
 
Operando 1 Operando 2 ResultadoFalso Falso Falso 
Verdadeiro Falso Falso 
Falso Verdadeiro Falso 
Verdadeiro Verdadeiro Verdadeiro 
Tabela 5.3 
 
5.3.2 Operador lógico OU 
 
 Operador que resulta VERDADEIRO quando um dos seus operandos lógicos for verdadeiro. 
A seguir, na tabela 5.4, temos a tabela verdade do operador OU. 
 
Operando 1 Operando 2 Resultado 
Falso Falso Falso 
Verdadeiro Falso Verdadeiro 
Falso Verdadeiro Verdadeiro 
Verdadeiro Verdadeiro Verdadeiro 
Tabela 5.4 
 
5.3.3 Operador lógico NAO 
 
 Operador unário de negação, inverte a expressão. VERDADEIRO será FALSO, e FALSO 
será VERDADEIRO. Tem a maior prioridade entre os operadores lógicos. Na tabela 5.5 temos a 
tabela verdade do operador NAO. 
 
Operando Resultado 
Falso Verdadeiro 
Verdadeiro Falso 
Tabela 5.5 
 
5.3.4 Operador lógico XOU 
 
Lê-se ou exclusivo. Operador que resulta VERDADEIRO se seus dois operandos lógicos 
forem diferentes, e FALSO se forem iguais. A tabela 5.6 mostra a tabela verdade do operador XOU. 
 
Operando 1 Operando 2 Resultado 
Falso Falso Falso 
Verdadeiro Falso Verdadeiro 
Falso Verdadeiro Verdadeiro 
Verdadeiro Verdadeiro Falso 
 
APRENDA A PROGRAMAR DO ZERO - LÓGICA DE PROGRAMAÇÃO 
26 
Livro versão 1.1 verifique se esta é a versão mais atualizada em www.criandocodigo.com.br 
 
Tabela 5.6 
 
Exemplos: 
 
x <- 8 
y <- 1 
r <- falso 
 
(x > 0) ou (y = 3) //verdadeiro 
nao r //verdadeiro 
nao ((x > 0) ou (y = 3)) //falso 
(x <> y) e ("A" = "B") ou (r = falso) //verdadeiro 
(x > 0) e (x < 5) //falso 
(x > 0) xou (x < 5) // verdadeiro 
 
5.4 Exercícios 
 
Desenvolva os algoritmos das questões a seguir. As resoluções dos exercícios estão no 
capítulo 9, no final deste livro. 
 
Veja no capítulo 8.6 como usar os comandos LEIA para entrada de dados e ESCREVA para 
saída de dados (imprimir textos e variáveis na tela). 
 
1. Leia dois números inteiros e imprima-os. 
 
2. Imprima o produto entre 15 e 36. 
 
3. Imprima a média aritmética entre os números 4, 5 e 2. 
 
4. Entrar com nome, endereço e telefone e imprima-os. 
 
5. Leia dois números inteiros para as variáveis X e Y, e realize a troca de valores entre as 
duas variáveis. Faça com que a variável X tenha o valor Y e a variável Y tenha o valor de X. 
Imprima os valores trocados. 
 
6. Leia dois números reais A, B e C. Crie uma variável X e atribua a ela o quadrado da soma 
de A, B e C. Imprima o resultado de X. 
 
7. Ler dois números inteiros que serão o numerador e denominador de uma fração e atribuir 
o resultado a uma variável real. Imprima o resultado. 
 
8. Entrar com dois números inteiros e imprimir o quociente e resto. 
 
 
 
APRENDA A PROGRAMAR DO ZERO - LÓGICA DE PROGRAMAÇÃO 
27 
Livro versão 1.1 verifique se esta é a versão mais atualizada em www.criandocodigo.com.br 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
6 ESTRUTURAS DE CONTROLE 
 
APRENDA A PROGRAMAR DO ZERO - LÓGICA DE PROGRAMAÇÃO 
28 
Livro versão 1.1 verifique se esta é a versão mais atualizada em www.criandocodigo.com.br 
 
6 Estruturas de controle 
 
 No capítulo 1 vimos que os algoritmos são compostos por blocos de código que se 
conectam por meio de três estruturas: sequenciação, seleção e repetição. Neste capítulo 
veremos em detalhes como construir cada estrutura. 
 
6.1 Estrutura sequencial 
 
A estrutura sequencial é um grupo de comandos que são executados em sequência, 
de cima para baixo, sem mudança no fluxo. A sequência de comandos fica entre as palavras-
chave inicio e fimalgortimo. 
 
inicio 
 x <- 100 
 y <- 200 
 soma <- x +y 
 escreva(soma) 
fimalgoritmo 
 
6.2 Estrutura de decisão 
 
A estrutura de decisão é usada para permitir a execução de blocos de comandos a 
partir do resultado de uma expressão lógica. Essas estruturas podem ser simples, composta, 
encadeada ou múltipla. 
 
6.2.1 Decisão simples 
 
A estrutura de decisão simples é quando uma única condição é testada. O resultado 
dessa condição irá determinar o fluxo de comandos a ser seguido. Exemplo da sintaxe: 
 
se <expressão-lógica> entao 
 <sequência-de-comandos> 
fimse 
 
Apenas quando a <expressão-lógica> tenha um resultado VERDADEIRO os 
comandos após entao serão executados. Caso a <expressão-lógica> tenha um resultado 
FALSO a sequência de comandos não será executada e a decisão simples é encerrada. 
Exemplo em pseudocódigo: 
 
 
algoritmo "Decisão simples" 
var 
 x: inteiro 
 
inicio 
 x <- 10 
 
 
APRENDA A PROGRAMAR DO ZERO - LÓGICA DE PROGRAMAÇÃO 
29 
Livro versão 1.1 verifique se esta é a versão mais atualizada em www.criandocodigo.com.br 
 
 se x = 10 entao 
 escreva("o valor de x é 10") 
 fimse 
 
fimalgoritmo 
 
 Representação no diagrama de blocos: 
 
 
Figura 6.1 
 
6.2.2 Decisão composta 
 
Na estrutura de decisão composta uma segunda sequência de instruções será 
executada após o resultado da condição ser falso. Sintaxe da estrutura: 
 
se <expressão-lógica> entao 
<sequência-de-comandos> 
senao 
<sequência-de-comandos> 
fimse 
 
 Quando a <expressão-lógica> apresentar um resultado VERDADEIRO a primeira 
sequência de comandos, logo após entao, será executada e a decisão composta é encerrada. 
Caso a <expressão-lógica> retorne FALSO a sequência de comandos após senao será 
executada e a decisão composta terminará. A seguir um exemplo: 
 
 
APRENDA A PROGRAMAR DO ZERO - LÓGICA DE PROGRAMAÇÃO 
30 
Livro versão 1.1 verifique se esta é a versão mais atualizada em www.criandocodigo.com.br 
 
algoritmo "Decisão composta" 
var 
 numero: inteiro 
 
inicio 
 escreva("digite um número e tecle enter: ") 
 leia(numero) 
 
 se (numero >= 0) e (numero <= 1000) entao 
 escreva("O numero esta entre 0 e 1000") 
 senao 
 escreva("O numero é maior que 1000") 
 fimse 
 
fimalgoritmo 
 
 
Nota: Existindo duas ou mais expressões lógicas após o comando SE essas expressões devem ser 
agrupadas usando parênteses. 
 
 
 Representação no diagrama de blocos: 
 
Figura 6.2 
 
6.2.3 Seleção encadeada 
 
A estrutura de seleção encadeada é usada quando se deseja realizar comparações 
sucessivas. Uma sequência de comandos será executada quando as condições anteriores 
forem satisfeitas. Uma condição com resultado VERDADEIRO vai executar outra condição, e 
se esta última for VERDADEIRA executará outra condição e assim por diante até encontrar 
uma condição com resultado FALSO ou o fim da estrutura com o fimse. Veja a sintaxe a 
seguir: 
 
se <expressão-lógica-1> entao 
 
APRENDA A PROGRAMAR DO ZERO - LÓGICA DE PROGRAMAÇÃO 
31 
Livro versão 1.1 verifique se esta é a versão mais atualizada em www.criandocodigo.com.br 
 
<sequência-de-comandos> 
senao 
se <expressão-lógica-2> entao 
<sequência-de-comandos> 
senao 
<sequência-de-comandos> 
fimse 
fimse 
 
 Exemplo de algoritmo: 
 
algoritmo "Seleção encadeada" 
var 
 media: real 
 
inicio 
 escreva("digite a nota media do aluno: ") 
 leia(media) 
 
 se media >= 7 entao 
 escreva("aprovado") 
 senao 
 se (media >= 5) e (media < 7) entao 
 escreva("exames de recuperação") 
 senao 
 escreva("reprovado") 
 fimse 
 fimse 
 
fimalgoritmo 
 
 
 
APRENDA A PROGRAMAR DO ZERO - LÓGICA DE PROGRAMAÇÃO 
32 
Livro versão 1.1 verifique se esta é a versão mais atualizada em www.criandocodigo.com.br 
 
Representação no diagrama de blocos: 
 
Figura 6.3 
6.2.4Decisão múltipla 
 
A estrutura de decisão múltipla é usada para avaliar o valor de uma determinada 
variável através da palavra-reservada escolha. A estrutura escolha aceita apenas constantes 
inteiras ou caracteres e testa sucessivamente esse valor contra uma lista até encontrar um 
valor que coincida. A sintaxe é a seguinte: 
 
escolha<expressão-de-seleção> 
caso<exp-1>, <exp-2>, ..., <exp-n> 
<sequência-de-comandos-1> 
caso<exp-1>, <exp-2>, ..., <exp-n> 
<sequência-de-comandos-2> 
. 
. 
. 
outrocaso 
<sequência-de-comandos-extra> 
fimescolha 
 
 A estrutura escolha recebe um valor inteiro ou caractere em <expressão-de-
seleção> e irá testá-lo na sequência de comandos caso até encontrar um valor que 
 
APRENDA A PROGRAMAR DO ZERO - LÓGICA DE PROGRAMAÇÃO 
33 
Livro versão 1.1 verifique se esta é a versão mais atualizada em www.criandocodigo.com.br 
 
coincida, ao encontrar executará a <sequência-de-comandos N> correspondente ao 
comando caso e em seguida encerrará a estrutura de decisão múltipla em fimescolha. O 
comando caso aceita múltiplas constantes do mesmo tipo do comando escolha. O comando 
outrocaso é opcional e é usado quando não há valor correspondente a <expressão-de-
seleção> durante a sequência dos comandos caso. A <sequência-de-comandos-
extra> será executada apenas se outrocaso estiver definido. A seguir um exemplo: 
 
algoritmo "Times" 
var 
 time: caractere 
inicio 
 escreva("Entre com o nome de um time de futebol: ") 
 leia(time) 
 
 escolha time 
 caso "Flamengo", "Fluminense", "Vasco", "Botafogo" 
 escreval("É um time carioca.") 
 caso "São Paulo", "Palmeiras", "Santos", "Corinthians" 
 escreval("É um time paulista.") 
 outrocaso 
 escreval("É de outro estado.") 
 fimescolha 
fimalgoritmo 
 
 
 
APRENDA A PROGRAMAR DO ZERO - LÓGICA DE PROGRAMAÇÃO 
34 
Livro versão 1.1 verifique se esta é a versão mais atualizada em www.criandocodigo.com.br 
 
 Representação no diagrama de blocos: 
 
 
Figura 6.4 
 
6.3 Estrutura de repetição 
 
Em vários momentos em que estiver programando surgirá a necessidade de efetuar a 
repetição de um trecho do código um determinado número vezes, para isso deverá utilizar 
uma estrutura de repetição. Essa estrutura também é conhecida como estrutura de laços, 
estrutura de iteração ou loops. 
 
6.3.1 Variável de controle 
 
Laços com variável de controle permitem a repetição de comandos através de 
contadores finitos de execuções. A estrutura de laços para repete uma sequência de 
comandos um determinado número de vezes. A seguir a sintaxe: 
 
para<variável>de<valor-inicial>ate<valor-limite> [passo<incremento>] 
faca 
<sequência-de-comandos> 
fimpara 
 
APRENDA A PROGRAMAR DO ZERO - LÓGICA DE PROGRAMAÇÃO 
35 
Livro versão 1.1 verifique se esta é a versão mais atualizada em www.criandocodigo.com.br 
 
 
<variável> é a variável contadora que controla o número de repetições do laço. Deve ser 
necessariamente uma variável do tipo inteiro, como todas as expressões deste comando. 
 
<valor-inicial> é uma expressão que especifica o valor de inicial da variável contadora antes 
da primeira repetição do laço. 
 
<valor-limite> é uma expressão que especifica o valor máximo que a variável contadora pode 
alcançar. 
 
<incremento> é opcional. Quando presente é uma expressão que especifica o incremento que 
será acrescentado à variável contadora em cada repetição do laço. Quando esta opção não é 
utilizada, o valor padrão de <incremento> é 1. É possível especificar valores negativos para 
<incremento>. 
 
fimpara Indica o fim da sequência de comandos a serem repetidos. Cada vez que o programa 
chega neste ponto, é acrescentado à variável contadora o valor de <incremento>, e 
comparado a <valor-limite>. 
 
<valor-inicial>, <valor-limite> e <incremento> são avaliados uma única vez antes da 
execução da primeira repetição, e não se alteram durante a execução do laço, mesmo que 
variáveis eventualmente presentes nessas expressões tenham seus valores alterados. No 
exemplo a seguir, os números de 1 a 10 são exibidos em ordem crescente: 
 
algoritmo "Números de 1 a 10" 
var 
 j: inteiro 
inicio 
 
 para j de 1 ate 10 faca 
 escreva(j) 
 fimpara 
 
fimalgoritmo 
 
No próximo exemplo os números de 1 a 10 são exibidos em ordem decrescente usando 
um laço negativo com o comando opcional passo. 
 
algoritmo "Números de 10 a 1" 
var 
 j: inteiro 
inicio 
 
 para j de 10 ate 1 passo -1 faca 
 escreva(j) 
 fimpara 
 
fimalgoritmo 
 
 
APRENDA A PROGRAMAR DO ZERO - LÓGICA DE PROGRAMAÇÃO 
36 
Livro versão 1.1 verifique se esta é a versão mais atualizada em www.criandocodigo.com.br 
 
 
 Representação no diagrama de blocos: 
 
 
Figura 6.5 
 
6.3.2 Laços condicionais 
 
São laços em que a variável que controla a repetição é testada no início ou no final. A 
repetição está condicionada a atualização da variável no interior do laço. Caso a variável não 
seja incrementada o laço nunca terminará, deixando o programa em loop infinito. 
 
6.3.2.1 Teste lógico no início do laço 
 
Estrutura de laço que realiza teste lógico no início do loop, verificando se o valor da 
expressão é VERDADEIRO antes da executar os comandos internos do loop. 
 
enquanto<expressão-lógica>faca 
<sequência-de-comandos> 
fimenquanto 
 
A estrutura enquanto avalia a <expressão-lógica> antes de iniciar a execução. Se 
o resultado da expressão for FALSO a <sequência-de-comandos> não será executada e o 
laço termina após fimenquanto. Caso seja VERDADEIRO será executada a sequência de 
comandos internos. Enquanto a <expressão-lógica> for VERDADEIRA a <sequência-
de-comandos> continuará sendo executada. Quando o resultado dessa expressão for FALSO 
o fluxo de execução do laço será interrompido e chegará ao próximo comando após 
fimenquanto. 
O mesmo exemplo anterior pode ser resolvido com esta estrutura de repetição: 
 
algoritmo "Números de 1 a 10 (com enquanto)" 
var 
 j: inteiro 
inicio 
 j <- 1 
 
APRENDA A PROGRAMAR DO ZERO - LÓGICA DE PROGRAMAÇÃO 
37 
Livro versão 1.1 verifique se esta é a versão mais atualizada em www.criandocodigo.com.br 
 
 
 enquanto j <= 10 faca 
 escreva(j) 
 j <- j + 1 
 fimenquanto 
 
fimalgoritmo 
 
 Representação no diagrama de blocos: 
 
 
Figura 6.6 
 
6.3.2.2 Teste lógico no final do laço 
 
Semelhante a estrutura enquanto, esta estrutura avalia a expressão lógica no final do 
laço para uma nova repetição, ou não, da execução da sequência dos comandos internos. A 
principal diferença é que esta estrutura executa pelo menos uma vez os comandos internos 
antes de verificar o resultado da expressão lógica. 
 
 
repita 
<sequência-de-comandos> 
ate<expressão-lógica> 
 
 A <sequência-de-comandos> será executada pelo menos uma vez, em seguida a 
<expressão-lógica> será testada e caso seja FALSA a sequência de comandos será 
executada novamente e esse procedimento irá se repetir até que a expressão lógica seja 
VERDADEIRA, e, com isso, causando a interrupção do laço. Considerando ainda o mesmo 
exemplo: 
 
algoritmo "Números de 1 a 10 (com repita)" 
var 
 j: inteiro 
inicio 
 j <- 1 
 
APRENDA A PROGRAMAR DO ZERO - LÓGICA DE PROGRAMAÇÃO 
38 
Livro versão 1.1 verifique se esta é a versão mais atualizada em www.criandocodigo.com.br 
 
 
 repita 
 escreva(j) 
 j <- j + 1 
 ate j > 10 
 
fimalgoritmo 
 
 Outra diferença em relação à estrutura enquanto é a possibilidade da variávelda 
<expressão-lógica> ser inicializada ou lida dentro laço antes de ser testada. 
 
 Representação no diagrama de dados: 
 
Figura 6.7 
 
 
 
6.3.3 Interrompendo as estruturas de laço 
 
As estruturas de repetição para, enquanto e repita permitem o uso do comando 
interrompa que causa uma saída imediata do laço. Seu uso é exemplificado a seguir: 
 
algoritmo "Números de 1 a 10 (com interrompa)" 
var 
 x: inteiro 
inicio 
 x <- 0 
 
 repita 
 x <- x + 1 
 escreva(x) 
 
 se x = 10 entao 
 interrompa 
 
APRENDA A PROGRAMAR DO ZERO - LÓGICA DE PROGRAMAÇÃO 
39 
Livro versão 1.1 verifique se esta é a versão mais atualizada em www.criandocodigo.com.br 
 
 fimse 
 ate falso 
 
fimalgoritmo 
 
 
6.4 Exercícios 
 
Desenvolva os algoritmos das questões a seguir. As resoluções dos exercícios estão no 
capítulo 9, no final deste livro. 
 
9. Entrar com um número e imprimir se ele está na faixa de 1 a 30 e qualquer outro número 
imprima uma mensagem dizendo que está fora da faixa. 
 
10. Ler uma entrada de caracteres que identifique as palavras azul, verde ou vermelho como 
uma cor primaria e qualquer outra palavra como cor desconhecida. 
 
11. Entrar com um número e imprimir se ele é par ou ímpar. 
 
12. Ler a entrada de um número e imprimir se ele é positivo, negativo ou nulo. 
 
13. Entrar com três números e armazenar o maior número em uma variável. 
 
14. Entrar com três números e imprimi-los em ordem crescente. 
 
15. Entrar com a idade de uma pessoa e informar se é maior de idade, menor de idade ou se 
é maior ou igual a 65 anos. 
 
16. Ler um número e escrever o nome do mês correspondente. 
 
17. Ler a entrada de três varáveis A, B e X. Somente será efetuado o cálculo de C <- 
(A+B)*X , se o valor da variável X não for maior que 3. Qualquer valor de 3 para cima efetua 
o cálculo C <- (A-B)*X. Utilize o operador NAO para este exercício. 
 
18. Entrar com uma temperatura em graus centígrados e exibi-la em Fahrenheit. A fórmula 
de conversão é𝐹 = 
9.𝐶 + 160
5
onde F é a temperatura em Fahrenheit e C é a temperatura em 
centígrados. 
 
19. Criar um algoritmo que calcule o Índice de Massa Corporal (IMC), usando a seguinte 
formula: 
IMC = 
𝑝𝑒𝑠𝑜
𝑎𝑙𝑡𝑢𝑟𝑎2
 
 
O usuário deve informa o peso em Kg e a altura em metros. O resultado do cálculo do IMC 
deve seguir a tabela abaixo: 
IMC Classificação 
 
APRENDA A PROGRAMAR DO ZERO - LÓGICA DE PROGRAMAÇÃO 
40 
Livro versão 1.1 verifique se esta é a versão mais atualizada em www.criandocodigo.com.br 
 
< 18,5 Magreza 
18,5 a < 25 Saudável 
25 a < 30 Sobrepeso 
> 30 Obesidade 
 
20. Crie um algoritmo que leia o dia, mês e ano e imprima se a data é válida ou não. 
 
21. Imprima todos os números de 1 até 100. 
 
22. Imprima todos os números de 100 até 1. 
 
23. Escreva um algoritmo que crie 30 números aleatórios entre 15 e 53 e imprima somente 
os números impares. Para gerar um número aleatório use a função RandI(limite) que recebe 
como parâmetro um número inteiro limite. 
 
24. Utilizando um laço crie um algoritmo que permita a entrada de 4 números reais e 
imprima a média aritmética. 
 
25. Imprima a tabuada de multiplicar (de 1 até 10) de um número qualquer. O número deve 
ser inserido pelo usuário. 
 
26. Utilizando a estrutura de seleção múltipla faça um algoritmo que simule uma calculadora 
de números inteiros que possua as quatro operações básicas. Permita que o usuário possa 
 sair seja pressionada. 
 
 
 
 
APRENDA A PROGRAMAR DO ZERO - LÓGICA DE PROGRAMAÇÃO 
41 
Livro versão 1.1 verifique se esta é a versão mais atualizada em www.criandocodigo.com.br 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
7 ESTRUTURAS DE DADOS HOMOGÊNEAS 
 
APRENDA A PROGRAMAR DO ZERO - LÓGICA DE PROGRAMAÇÃO 
42 
Livro versão 1.1 verifique se esta é a versão mais atualizada em www.criandocodigo.com.br 
 
7 Estrutura de dados homogêneas 
 
As estruturas de dados homogêneas agrupam várias informações do mesmo tipo de 
dado dentro de uma mesma variável. Por armazenarem o mesmo tipo de dado são chamadas 
de estruturas homogêneas. Essa estrutura de dados recebe outros nomes como: variáveis 
compostas, variáveis subscritas, variáveis indexadas, arranjos, matrizes, vetores, tabelas em 
memória ou arrays. 
 
7.1 Vetores 
 
São variáveis que tem o mesmo nome mas podem armazenar uma informação 
diferente do mesmo tipo. Conhecido como variável indexada, tabela ou array, uma variável 
vetor possui índices que indicam as posições onde o valor está armazenado. A figura 7.1 
representa um vetor: 
 
V = 5 2 7 1 0 8 3 
Figura 7.1 
 
 Podemos acessar os elementos do array através dos índices: 
 
Índice Elemento 
1 5 
2 2 
3 7 
4 1 
5 0 
6 8 
7 3 
 
Sintaxe de um vetor: 
 
<nome_da_variavel>:vetor[<coluna_inicial>..<coluna_final>]de<tipo_de
_dado> 
 
No exemplo a seguir inserimos valores diferentes em cada índice do vetor e em 
seguida percorremos o vetor com um laço e imprimimos cada valor com a função escreval: 
 
algoritmo "vetores" 
var 
 vet: vetor [1..10] de inteiro 
 j: inteiro 
inicio 
 vet[1] <- 5 
 vet[2] <- 2 
 vet[3] <- 7 
 vet[4] <- 41 
 vet[5] <- 3 
 vet[6] <- 10 
 
APRENDA A PROGRAMAR DO ZERO - LÓGICA DE PROGRAMAÇÃO 
43 
Livro versão 1.1 verifique se esta é a versão mais atualizada em www.criandocodigo.com.br 
 
 vet[7] <- 25 
 vet[8] <- 120 
 vet[9] <- 9 
 vet[10] <- 1 
 
 para j de 1 ate 10 faca 
 escreval(vet[j]) 
 fimpara 
 
fimalgoritmo 
 
7.2 Matrizes 
 
As matrizes são vetores bidimensionais que utilizam dois índices para representarem 
as linhas e colunas. Na figura 7.2 temos um exemplo de matriz 3x4: 
 
M = 4 10 9 6 
3 5 1 31 
6 32 42 8 
Figura 7.2 
 
Podemos acessar os elementos dos arrays através dos índices de linha e coluna: 
 
 1 2 3 4 
1 4 10 9 6 
2 3 5 1 31 
3 6 32 42 8 
 
 Sintaxe de uma matriz: 
 
<nome_da_variavel> :vetor [<linha_inicial> .. <linha_final>, 
<coluna_inicial> ..<coluna_final>] de<tipo_de_dado> 
 
No exemplo abaixo utilizamos dois laços para preencher cada posição da matriz com o 
valor zero. Observe que o laço mais externo percorre as linhas da matriz enquanto o outro 
laço percorre as colunas da matriz: 
 
algoritmo "Matrizes" 
var 
 matriz: vetor [1..3, 1..4] de inteiro 
 linha, coluna: inteiro 
inicio 
 
 // preenche a matriz com valores zero 
 para linha de 1 ate 3 faca 
 para coluna de 1 ate 4 faca 
 matriz[linha, coluna] <- 0 
 fimpara 
 
APRENDA A PROGRAMAR DO ZERO - LÓGICA DE PROGRAMAÇÃO 
44 
Livro versão 1.1 verifique se esta é a versão mais atualizada em www.criandocodigo.com.br 
 
 fimpara 
 
fimalgoritmo 
 
7.3 Exercícios 
 
Desenvolva os algoritmos das questões a seguir. As resoluções dos exercícios estão no 
capítulo 9, no final deste livro. 
 
27. Crie um algoritmo que permita a entrada de 4 nomes que serão armazenados em um 
vetor e imprima-os na ordem inversa usando um laço. 
 
28. Ler 10 nomes e armazene-os em um vetor e em seguida imprima os nomes em ordem 
crescente. 
 
29. Escreva um algoritmo que preencha uma matriz 10x10 com números inteiros aleatórios 
com valores entre 1 e 100 e imprima no formato de uma tabela. Para gerar um número 
aleatório use a função RandI(limite). 
 
30. Elabore um algoritmo que leia a entrada de um vetor A com 10 elementos. Construa um 
vetor B e preencha-o com os valores do vetorA multiplicados pelo número do índice. 
Imprima o vetor B em ordem decrescente. 
 
 
 
APRENDA A PROGRAMAR DO ZERO - LÓGICA DE PROGRAMAÇÃO 
45 
Livro versão 1.1 verifique se esta é a versão mais atualizada em www.criandocodigo.com.br 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
8 MODULARIZAÇÃO 
 
APRENDA A PROGRAMAR DO ZERO - LÓGICA DE PROGRAMAÇÃO 
46 
Livro versão 1.1 verifique se esta é a versão mais atualizada em www.criandocodigo.com.br 
 
8 Modularização 
 
A modularização é um processo que permite simplificar um problema complexo em 
partes menores. Consiste em dividir partes complexas do algoritmo em partes pequenas 
especializadas. 
 
8.1 Subprogramas 
 
Subprograma é um programa que auxilia o programa principal através da realização 
de uma determinada subtarefa. Também costuma receber os nomes de sub-rotina, 
procedimento, método ou módulo. Os subprogramas são chamados dentro do corpo do 
programa principal como se fossem comandos. Após seu término, a execução continua a 
partir do ponto onde foi chamado. É importante compreender que a chamada de um 
subprograma simplesmente gera um desvio provisório no fluxo de execução. 
 
8.2 Procedimentos 
 
É um subprograma que não retorna nenhum valor. Todas as variáveis declaradas no 
início do programa podem ser utilizadas nos procedimentos. Um procedimento pode ser 
declarado antes ou após a declaração das variáveis de um programa. Pode ser chamado em 
qualquer parte do código dentro do bloco de execução principal (entre as palavras-chave 
inicio e fimalgoritmo) ou em outro subprograma. 
 
Sintaxe de um procedimento: 
 
procedimento<nome-de-procedimento> [(<sequência-de-declarações-de-
parâmetros>)] 
// Seção de Declarações Internas 
inicio 
// Seção de Comandos 
fimprocedimento 
 
A expressão <nome-de-procedimento> obedece as mesmas regras de 
nomenclatura das variáveis. A [(<sequência-de-declarações-de-parâmetros>)] é 
um bloco de parâmetros separados por parênteses. Esses parâmetros são uma lista de 
definições de variáveis separadas por ponto e vírgula e que podem ser opcionais. Os 
parâmetros servem para passarmos valores para os subprogramas. 
 
Exemplo de um procedimento sem parâmetros: 
 
algoritmo "procedimento soma sem parâmetros" 
 
procedimento soma 
inicio 
 resultado <- x + y 
fimprocedimento 
 
 
APRENDA A PROGRAMAR DO ZERO - LÓGICA DE PROGRAMAÇÃO 
47 
Livro versão 1.1 verifique se esta é a versão mais atualizada em www.criandocodigo.com.br 
 
var 
 resultado, x, y: inteiro 
inicio 
 x <- 10 
 y <- 20 
 soma 
 escreva(resultado) 
fimalgoritmo 
 
O mesmo exemplo anterior, mas agora com os valores de x e y passados por 
parâmetros: 
 
algoritmo "procedimento soma com parâmetros" 
 
procedimento soma(x, y: inteiro) 
inicio 
 resultado <- x + y 
fimprocedimento 
 
var 
 resultado: inteiro 
inicio 
 soma(10, 20) 
 escreva(resultado) 
fimalgoritmo 
 
8.3 Funções 
 
 A função é um subprograma que retorna um valor. A declaração e a chamada dentro 
do programa são análogas ao procedimento. 
 
 Sintaxe de uma função: 
 
funcao<nome-de-função> [(<sequência-de-declarações-de parâmetros>)]: 
<tipo-de-dado> 
// Seção de Declarações Internas 
inicio 
// Seção de Comandos 
fimfuncao 
 
A expressão <nome-de-função> obedece as mesmas regras de nomenclatura das 
variáveis. A [(<sequência-de-declarações-de-parâmetros>)] é um bloco de 
parâmetros separados por parênteses. Esses parâmetros são uma lista de definições de 
variáveis separadas por ponto e vírgula e que podem ser opcionais. 
 
O valor retornado pela função será do tipo especificado na sua declaração <tipo-de-
dado>. Em alguma parte da função, este valor deve ser retornado através do comando 
retorne. 
 
 
APRENDA A PROGRAMAR DO ZERO - LÓGICA DE PROGRAMAÇÃO 
48 
Livro versão 1.1 verifique se esta é a versão mais atualizada em www.criandocodigo.com.br 
 
O mesmo exemplo do procedimento agora modificado para usar uma função: 
 
Algoritmo "função soma" 
 
funcao soma(x, y: inteiro): inteiro 
inicio 
 retorne x + y 
fimfuncao 
 
inicio 
 escreva(soma(10,20)) 
fimalgoritmo 
 
8.4 Variáveis locais e globais 
 
 Um subprograma pode ter suas próprias variáveis da mesma forma que um programa 
principal. As variáveis declaradas no início do algoritmo são chamadas de globais, elas são 
declaradas depois da palavra-chave var. As variáveis globais podem ser vistas em qualquer 
parte do programa principal e inclusive em todos os subprogramas. 
 Quando as variáveis são declaradas no início de um subprograma elas são chamadas 
de locais. Essas variáveis locais só podem ser usadas dentro do subprograma que as 
declarou. 
Exemplo de declaração de variáveis locais e globais: 
 
Algoritmo "variáveis globais e locais" 
 
funcao soma(x, y: inteiro): inteiro 
var 
 total: inteiro// variável local 
inicio 
 total <- x + y 
 retorne total 
fimfuncao 
 
var 
 total: inteiro// variável global 
inicio 
 total <- 40 + 30 
 escreval("Total da função: ", soma(10, 20)) 
 escreval("Total da variável global: ", total) 
fimalgoritmo 
 
 No exemplo acima temos duas variáveis de mesmo nome chamada total, uma 
declarada no início do programa (global) e outra declarada no início da função (local). A 
variável local da função soma não afetará a variável global. 
 
8.5 Passagem de parâmetros por referência 
 
 
APRENDA A PROGRAMAR DO ZERO - LÓGICA DE PROGRAMAÇÃO 
49 
Livro versão 1.1 verifique se esta é a versão mais atualizada em www.criandocodigo.com.br 
 
 Vimos anteriormente como criar subprogramas e como passar valores para eles 
através dos parâmetros. Os parâmetros são a comunicação entre o subprograma, o 
programa principal ou outro subprograma. 
Até agora passamos parâmetros apenas por valor. Quando colocamos um valor 
qualquer como parâmetro de um subprograma estamos enviando apenas uma cópia, esse 
parâmetro não é alterado em sua origem. Ao passar um parâmetro por referência qualquer 
alteração desse parâmetro dentro do subprograma será devolvida ao programa chamador, 
alterando a variável em sua origem. Veja o exemplo a seguir: 
 
Algoritmo "parâmetro por valor" 
 
procedimento soma(A: inteiro) 
inicio 
 A <- A + 1 
fimprocedimento 
 
var 
 X: inteiro 
inicio 
 X <- 1 
 escreva("Valor de X antes da função soma: ", X) 
 soma(X) 
 escreva("Valor de X depois da função soma: ", X) 
fimalgoritmo 
 
No exemplo passamos por valor a variável X como parâmetro do subprograma soma. 
Ao executar o programa notamos que o valor de X não foi alterado. 
No próximo exemplo passamos a variável X por referência ao acrescentarmos a 
palavra-reservada var. Ao executar o programa veremos que o valor de X foi alterado no 
retorno da função. 
 
Algoritmo "parâmetro por referência" 
 
procedimento soma(var A: inteiro) 
inicio 
 A <- A + 1 
fimprocedimento 
 
var 
 X: inteiro 
inicio 
 X <- 1 
 escreva("Valor de X antes da função soma: ", X) 
 soma(X) 
 escreva("Valor de X depois da função soma: ", X) 
fimalgoritmo 
 
8.6 Funções do VisuAlg 
 
 Nesta seção trazemos algumas funções do VisuAlg. 
 
 
APRENDA A PROGRAMAR DO ZERO - LÓGICA DE PROGRAMAÇÃO 
50 
Livro versão 1.1 verifique se esta é a versão mais atualizada em www.criandocodigo.com.br 
 
escreva(<lista-de-expressões>) Este comando escreve no dispositivo de saída padrão o 
conteúdo de cada uma das expressões que compõem <lista-de-expressões>.As expressões 
devem estar separadas por vírgulas; depois de serem avaliadas, seus resultados são 
impressos na ordem indicada. Exemplos: 
 
escreva("visualg") 
escreva(x) 
escreva("123", x, y, z, "abc") 
escreva("aluno: ", nome, "idade: ", numero) 
 
escreval(<lista-de-expressões>) Idem ao anterior, com uma única diferença que pula uma 
linha em seguida. 
 
leia(<lista-de-variáveis>) Este comando recebe valores digitados pelos usuários, 
atribuindo-os às variáveis cujos nomes estão em <lista-de-variáveis> (é respeitada a ordem 
especificada nesta lista). Exemplos: 
 
leia(x) 
leia(nome) 
leia(rua, endereco, x, y) 
 
 
Funções para manipulação de cadeias de caracteres (strings) 
 
Asc (s: caracter) - Retorna um inteiro com o código ASCII do primeiro caracter da expressão. 
 
Carac (c: inteiro) - Retorna o caractere cujo código ASCII corresponde à expressão. 
 
Caracpnum (c: caracter) - Retorna o inteiro ou real representado pela expressão. 
 
Compr (c: caracter) - Retorna um inteiro contendo o comprimento (quantidade de 
caracteres) da expressão. 
 
Copia (c: caracter; p, n: inteiro) - Retorna um valor do tipo caracter contendo uma cópia 
parcial da expressão, a partir do caracter p, contendo n caracteres. Os caracteres são 
numerados da esquerda para a direita, começando de 1. 
 
Maiusc (c: caracter) - Retorna um valor caracter contendo a expressão em maiúsculas. 
 
Minusc (c: caracter) - Retorna um valor caracter contendo a expressão em minúsculas. 
 
Numpcarac (n: inteiro ou real) - Retorna um valor caracter contendo a representação de n 
como uma cadeia de caracteres. 
 
 
APRENDA A PROGRAMAR DO ZERO - LÓGICA DE PROGRAMAÇÃO 
51 
Livro versão 1.1 verifique se esta é a versão mais atualizada em www.criandocodigo.com.br 
 
Pos (subc, c: caracter) - Retorna um inteiro que indica a posição em que a cadeia subc se 
encontra em c, ou zero se subc não estiver contida em c. 
 
 
Funções numéricas, algébricas e trigonométricas 
 
Abs(expressão) - Retorna o valor absoluto de uma expressão do tipo inteiro ou real. Equivale 
a | expressão | na álgebra. 
 
ArcCos(expressão) - Retorna o ângulo (em radianos) cujo cosseno é representado por 
expressão. 
 
ArcSen(expressão) - Retorna o ângulo (em radianos) cujo seno é representado por 
expressão. 
 
ArcTan(expressão) - Retorna o ângulo (em radianos) cuja tangente é representada por 
expressão. 
 
Cos(expressão) - Retorna o cosseno do ângulo (em radianos) representado por expressão. 
 
CoTan(expressão) - Retorna a co-tangente do ângulo (em radianos) representado por 
expressão. 
 
Exp( base, expoente) - Retorna o valor de base elevado a expoente, sendo ambos expressões 
do tipo real. 
 
GraupRad(expressão) - Retorna o valor em radianos, correspondente ao valor em graus 
representado por expressão. 
 
Int(expressão) - Retorna a parte inteira do valor representado por expressão. 
 
Log(expressão) - Retorna o logaritmo na base 10 do valor representado por expressão. 
 
LogN(expressão) - Retorna o logaritmo neperiano (base e) do valor representado por 
expressão. 
 
Pi - Retorna o valor 3.141592. 
 
Quad(expressão) - Retorna quadrado do valor representado por expressão. 
 
RadpGrau(expressão) - Retorna o valor em graus correspondente ao valor em radianos, 
representado por expressão. 
 
RaizQ(expressão) - Retorna a raiz quadrada do valor representado por expressão. 
 
 
APRENDA A PROGRAMAR DO ZERO - LÓGICA DE PROGRAMAÇÃO 
52 
Livro versão 1.1 verifique se esta é a versão mais atualizada em www.criandocodigo.com.br 
 
Rand - Retorna um número real gerado aleatoriamente, maior ou igual a zero e menor que 
um. 
 
RandI(limite) - Retorna um número inteiro gerado aleatoriamente, maior ou igual a zero e 
menor que limite. 
 
Sen(expressão) - Retorna o seno do ângulo (em radianos) representado por expressão. 
 
Tan(expressão) - Retorna a tangente do ângulo (em radianos) representado por expressão. 
 
 
8.7 Exercícios 
 
Desenvolva os algoritmos das questões a seguir. As resoluções dos exercícios estão no 
capítulo 9, no final deste livro. 
 
31. Escreva um algoritmo que receba dois números reais e uma função chamada maior que 
retorne o maior número entre dois números passados por parâmetro. 
 
32. Elabore um algoritmo que tenha uma função para calcular e retornar o valor de uma 
potência de um número qualquer. A função receberá dois parâmetros, o primeiro será a base 
e o segundo o expoente, onde p1 será elevado a p2. Use o operador de exponenciação para 
efetuar o cálculo. O usuário deve fornecer os dois números reais para função. 
 
33. Elabore um algoritmo que tenha um subprograma do tipo função que retorne o fatorial 
de um número inteiro qualquer. Fatorial é o produto dos números naturais desde 1 até o 
inteiro n. Por exemplo, no fatorial de 5 temos que 5! = 5 x 4 x 3 x 2 x 1 ou seja 5! = 120. 
 
34. Criar um algoritmo com uma função que receba uma string como parâmetro e retorne 
uma nova string. Essa nova string terá o mesmo conteúdo da string do parâmetro com a 
primeira letra modificada para ficar maiúscula. Para realizar este exercício você precisará 
das seguintes funções do VisuAlg: Maiusc(c: caracter) e Copia(c: caracter; p, n: inteiro). 
 
 
 
APRENDA A PROGRAMAR DO ZERO - LÓGICA DE PROGRAMAÇÃO 
53 
Livro versão 1.1 verifique se esta é a versão mais atualizada em www.criandocodigo.com.br 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
9 RESOLUÇÃO DOS EXERCÍCIOS 
 
APRENDA A PROGRAMAR DO ZERO - LÓGICA DE PROGRAMAÇÃO 
54 
Livro versão 1.1 verifique se esta é a versão mais atualizada em www.criandocodigo.com.br 
 
9 Resolução dos exercícios 
 
 
Capítulo 5 
 
1. 
algoritmo "exercício 1" 
var 
 num1, num2: inteiro 
inicio 
 escreval("Entre com um número: ") 
 leia(num1) 
 escreval("Entre com outro número: ") 
 leia(num2) 
 escreval(num1, "", num2) 
fimalgoritmo 
 
 
2. 
algoritmo "exercício 2" 
var 
 produto: inteiro 
inicio 
 produto <- 15 * 36 
 escreva(produto) 
fimalgoritmo 
 
 
3. 
algoritmo "exercício 3" 
var 
 media: real 
inicio 
 media <- (4 + 5 + 2) / 3 
 escreva("Média aritmética é: ", media) 
fimalgoritmo 
 
 
4. 
algoritmo "exercício 4" 
var 
 nome, endereço, telefone: caractere 
inicio 
 escreva("Entre com nome: ") 
 leia(nome) 
 escreva("Entre com endereço: ") 
 leia(telefone) 
 escreva("Entre com telefone: ") 
 leia(telefone) 
 escreval("Nome: ", nome) 
 escreval("Endereço: ", endereco) 
 
APRENDA A PROGRAMAR DO ZERO - LÓGICA DE PROGRAMAÇÃO 
55 
Livro versão 1.1 verifique se esta é a versão mais atualizada em www.criandocodigo.com.br 
 
 escreval("Telefone ", telefone) 
fimalgoritmo 
 
 
5 
algoritmo "exercício 5" 
var 
 X, Y, aux: inteiro 
inicio 
 escreva("Digite o número X: ") 
 leia(X) 
 escreva("Digite o número Y: ") 
 leia(Y) 
 aux<- X 
 X <- Y 
 Y <- aux 
 escreval("X: ", X) 
 escreval("Y: ", Y) 
fimalgoritmo 
 
 
6. 
algoritmo "exercício 6" 
var 
 A, B, C, X: real 
inicio 
 escreva("Entre com o número A: ") 
 leia(A) 
 escreva("Entre com o número B: ") 
 leia(B) 
 escreva("Entre com o número C: ") 
 leia(C) 
 X <- (A + B + C) ^ 2 
 escreva("Valor de X é ", X) 
fimalgoritmo 
 
 
7. 
algoritmo "exercício 7" 
var 
 num, den: inteiro 
 res: real 
inicio 
 escreva("Entre com o numerador: ") 
 leia(num) 
 escreva("Entre com o denominador: ")leia(den) 
 res <- num / den 
 escreva("resultado: ", res) 
fimalgoritmo 
 
 
 
APRENDA A PROGRAMAR DO ZERO - LÓGICA DE PROGRAMAÇÃO 
56 
Livro versão 1.1 verifique se esta é a versão mais atualizada em www.criandocodigo.com.br 
 
8. 
algoritmo "exercício 8" 
var 
 num1, num2, quoc, rest: inteiro 
inicio 
 escreval("Entre com dividendo: ") 
 leia(num1) 
 escreval("Entre com divisor: ") 
 leia(num2) 
 quoc <- num1 / num2 
 rest <- num1 % num2 
 escreval("quociente: ", quoc) 
 escreval("resto: ", rest) 
fimalgoritmo 
 
 
Capítulo 6 
 
9. 
algoritmo "exercício 9" 
var 
 numero: inteiro 
inicio 
 leia(numero) 
 
 se (numero>= 1) e (numero<= 30) entao 
 escreva("Número está dentro da faixa de 1 a 30") 
 senao 
 escreva("Número está fora da faixa de 1 a 30") 
 fimse 
fimalgoritmo 
 
 
10. 
algoritmo "exercício 10" 
var 
 cor: caractere 
inicio 
 leia(cor) 
 
 se (cor = "azul") ou (cor = "verde") ou (cor = "vermelho") entao 
 escreva("cor primária") 
 senao 
 escreva("cor desconhecida") 
 fimse 
fimalgoritmo 
 
 
 
 
 
 
APRENDA A PROGRAMAR DO ZERO - LÓGICA DE PROGRAMAÇÃO 
57 
Livro versão 1.1 verifique se esta é a versão mais atualizada em www.criandocodigo.com.br 
 
11. 
algoritmo "exercício 11" 
var 
 num: inteiro 
inicio 
 escreva("Digite um número: ") 
 leia(num) 
 se num % 2 = 0 entao 
 escreval("Par") 
 senao 
 escreval("Impar") 
 fimse 
fimalgoritmo 
 
 
12. 
algoritmo "exercício 12" 
var 
 num: real 
inicio 
 escreva("Digite um número: ") 
 leia(num) 
 se num > 0 entao 
 escreval("Positivo") 
 senao 
 se num < 0 entao 
 escreval("Negativo") 
 senao 
 escreval("Nulo") 
 fimse 
 fimse 
fimalgoritmo 
 
 
13. 
algoritmo "exercício 13" 
var 
 a, b, c, maior: real 
inicio 
 escreva("Digite um número: ") 
 leia(a) 
 escreva("Digite outro número: ") 
 leia(b) 
 escreva("Digite mais um número: ") 
 leia(c) 
 
 maior <- a 
 se b > maior entao 
 maior <- b 
 fimse 
 se c > maior entao 
 maior <- c 
 fimse 
 
APRENDA A PROGRAMAR DO ZERO - LÓGICA DE PROGRAMAÇÃO 
58 
Livro versão 1.1 verifique se esta é a versão mais atualizada em www.criandocodigo.com.br 
 
 escreva("maior número: ", maior) 
fimalgoritmo 
 
 
14. 
algoritmo "exercício 14" 
var 
 a, b, c, aux: real 
inicio 
 escreva("Digite um número: ") 
 leia(a) 
 escreva("Digite outro número: ") 
 leia(b) 
 escreva("Digite mais outro número: ") 
 leia(c) 
 
 se a > b entao 
 aux <- a 
 a <- b 
 b <- aux 
 fimse 
 se a > c entao 
 aux<- a 
 a <- c 
 c <- aux 
 fimse 
 se b > c entao 
 aux<- b 
 b <- c 
 c <- aux 
 fimse 
 escreval("Ordem crescente: ", a, "", b, "", c) 
fimalgoritmo 
 
 
15. 
algoritmo "exercício 15" 
var 
 idade: inteiro 
inicio 
 escreva("Digite sua idade: ") 
 leia(idade) 
 se idade >= 65 entao 
 escreva("maior de 65 anos") 
 senao 
 se idade >= 18 entao 
 escreva("maior de idade") 
 senao 
 escreva("menor de idade") 
 fimse 
 fimse 
fimalgoritmo 
 
 
APRENDA A PROGRAMAR DO ZERO - LÓGICA DE PROGRAMAÇÃO 
59 
Livro versão 1.1 verifique se esta é a versão mais atualizada em www.criandocodigo.com.br 
 
16. 
algoritmo "exercício 16" 
var 
 mes: inteiro 
inicio 
 escreva("Digite o número do mês: ") 
 leia(mes) 
 
 escolha mes 
 caso 1 
 escreva("janeiro") 
 caso 2 
 escreva("fevereiro") 
 caso 3 
 escreva("março") 
 caso 4 
 escreva("abril") 
 caso 5 
 escreva("maio") 
 caso 6 
 escreva("junho") 
 caso 7 
 escreva("julho") 
 caso 8 
 escreva("agosto") 
 caso 9 
 escreva("setembro") 
 caso 10 
 escreva("outubro") 
 caso 11 
 escreva("novembro") 
 caso 12 
 escreva("dezembro") 
 outrocaso 
 escreva("mês inexistente") 
 fimescolha 
fimalgoritmo 
 
 
17. 
algoritmo "exercício 17" 
var 
 A, B, C, X: inteiro 
inicio 
 leia(A, B, X) 
 
 se nao(X > 3) entao 
 C <- (A + B) * X 
 senao 
 C <- (A - B) * X 
 fimse 
 
 escreva(C) 
 
APRENDA A PROGRAMAR DO ZERO - LÓGICA DE PROGRAMAÇÃO 
60 
Livro versão 1.1 verifique se esta é a versão mais atualizada em www.criandocodigo.com.br 
 
fimalgoritmo 
 
 
18. 
algoritmo "exercício 18" 
var 
 f, c: real 
inicio 
 escreva("Entre com o valor da temperatura em graus centigrados: ") 
 leia(c) 
 f <- (9 * c + 160) / 5 
 escreval("O valor da temperatura em graus fahrenheit é: ", f) 
fimalgoritmo 
 
 
19. 
algoritmo "exercício 19" 
var 
 peso, altura, imc: real 
inicio 
 escreva("Digite o peso: ") 
 leia(peso) 
 escreva("Digite a altura: ") 
 leia(altura) 
 imc <- peso / altura ^ 2 
 
 se imc < 18.5 entao 
 escreva("Magreza") 
 senao 
 se imc < 25 entao 
 escreva("Saudável") 
 senao 
 se imc < 30 entao 
 escreva("Sobrepeso") 
 senao 
 se imc > 30 entao 
 escreva("Obesidade") 
 fimse 
 fimse 
 fimse 
 fimse 
fimalgoritmo 
 
 
20. 
algoritmo "exercício 20" 
var 
 dia, mes, ano: real 
 val: logico 
inicio 
 escreva("Digite o dia: ") 
 leia(dia) 
 
APRENDA A PROGRAMAR DO ZERO - LÓGICA DE PROGRAMAÇÃO 
61 
Livro versão 1.1 verifique se esta é a versão mais atualizada em www.criandocodigo.com.br 
 
 escreva("Digite o mês: ") 
 leia(mes) 
 escreva("Digite o ano: ") 
 leia(ano) 
 
 se ano >= 1 entao 
 val <- verdadeiro 
 se (mes< 1) ou (mes> 12) ou (dia < 1) ou (dia > 31) entao 
 val <- falso 
 senao 
 se (mes = 4) ou (mes = 6) ou (mes = 9) ou (mes = 11) e (dia > 30) entao 
 val<- falso 
 senao 
 se mes = 2 entao 
 se (ano % 4 = 0) e (ano % 100 <> 0) ou (ano % 400 = 0) entao 
 se dia > 29 entao 
 val <- falso 
 fimse 
 senao 
 se dia > 28 entao 
 val <- falso 
 fimse 
 fimse 
 fimse 
 fimse 
 fimse 
 senao 
 val<- falso 
 fimse 
 
 se val = falso entao 
 escreva("data inválida") 
 senao 
 escreva("data válida") 
 fimse 
fimalgoritmo 
 
 
21. 
algoritmo "exercício 21" 
var 
 i: inteiro 
inicio 
 para i de 1 ate 100 
 escreval(i) 
 fimpara 
fimalgoritmo 
 
 
22. 
algoritmo "exercício 22" 
var 
 i: inteiro 
 
APRENDA A PROGRAMAR DO ZERO - LÓGICA DE PROGRAMAÇÃO 
62 
Livro versão 1.1 verifique se esta é a versão mais atualizada em www.criandocodigo.com.br 
 
inicio 
 para i de 100 ate 1 passo -1 faca 
 escreval(i) 
 fimpara 
fimalgoritmo 
 
 
23. 
Algoritmo "exercício 23" 
var 
 i, r: inteiro 
inicio 
 para i de 1 ate 30 faca 
 r <- randi(53) + 15 
 
 se r % 2 <> 0 entao 
 escreval(r) 
 fimse 
 
 fimpara 
Fimalgoritmo 
 
 
24. 
algoritmo "exercício 24" 
var 
 i, num, total: real 
inicio 
 total <- 0 
 
 para i de 1 ate 4 faca 
 leia(num) 
 total <- total + num 
 fimpara 
 
 escreva("Média: ", total / 4) 
fimalgoritmo 
 
 
25. 
algoritmo "exercício 25" 
var 
 i, x: inteiro 
inicio

Continue navegando