Prévia do material em texto
ALGORITMOS
COM VISUALG
Linguagens e
Técnicas de
Programação I
Algoritmos e
Técnica de
Programação I
ALGORITMOS
COM VISUALG
Algoritmos e
Técnica de
Programação I
SUMÁRIO
Introdução .................................................. 5
O VisuAlg .................................................... 8
O Portugol do VisuAlg ................................. 15
Operadores .................................................21
Saída de dados .......................................... 25
Entrada de Dados ........................................31
Estrutura Condicional – se ........................... 34
Estruturas de repetição- (laço ou loop) ........... 39
Estruturas Homogêneas de dados ................. 55
REITORIA
Reitor
Prof. Fernando de Melo Nogueira
Vice-Reitor e Pró-Reitor de Graduação
Prof. Guilherme Guazzi Rodrigues
Pró-Reitor de Planejamento e Administração
Prof. Márcio Dario da Silva
Pró-Reitora de Pós-Graduação,
Pesquisa e Extensão
Profª. Drª. Maria Lectícia Firpe Penna
FACULDADE DE CIÊNCIAS
EMPRESARIAIS (FACE)
Diretor-Geral
Prof. Marco Túlio de Freitas
Diretora de Ensino
Profª. Renata de Sousa da Silva Tolentino
FACULDADE DE CIÊNCIAS HUMANAS,
SOCIAIS E DA SAÚDE (FCH)
Diretor-Geral
Prof. Antônio Marcos Nohmi
Diretor de Ensino
Prof. João Batista de Mendonça Filho
FACULDADE DE ENGENHARIA
E ARQUITETURA (FEA)
Diretor-Geral
Prof. Eduardo Georges Mesquita
Diretora de Ensino
Profª. Maria Silvia Santos Fiuza
Belo Horizonte
2017
INTRODUÇÃO
Conceito de Algoritmo
É um conjunto de ordens ou comandos que deverão ser execu-
tados em uma seqüência determinada para resolver uma tarefa.
É a descrição seqüencial de ações a serem executados para o
cumprimento de uma determinada tarefa.
É a forma pela qual descrevemos soluções para problemas que
serão implementadas posteriormente em uma linguagem de
programação e executadas pelo computador.
Pode ser escrito através de pseudo linguagens, como o Portugol,
ou símbolos como em fluxogramas.
Princípio básico de um algoritmo
O algoritmo segue o mesmo princípio básico de operações em um computador:
1. Entrada de Dados: é processo pelo qual os dados são inseridos no computador.
2. Processamento dos Dados: é o conjunto de operações / cálculos que são executa-
dos com os dados inseridos na Entrada de Dados.
3. Saída de Dados: é o resultado do processamento dos dados.
ENTRADA DE DADOS PROCESSAMENTO SAÍDA DE DADOS
Exemplo:
5, 5, 7 7 + 5 / 2 6
Exemplo de Algoritmo
PREPARANDO UM SANDUÍCHE:
Etapa 1 - Pegar os ingredientes necessários:
pão, manteiga, queijo,ovo, carne.
Etapa 2 - Cortar o pão ao meio
Etapa 3 - Passar a manteiga no pão
Etapa 4 - Cortar o queijo
Etapa 5 - Colocar o queijo no pão
Etapa 6 - Grelhar a carne
Etapa 7 - Colocar a carne em cima do queijo
Etapa 8 - Fritar o ovo
Etapa 9 - Colocar o ovo em cima da carne
e fechar o pão
Etapa 10 - Entregar o sanduíche pronto
para o cliente
variavel inteiro numero, i, resultado
escrever "Qual número você deseja ver a tabuada?" ler numero
escrever "Tabuada de ", numero, ":\n" para i de 1 ate 10 passo 11
variavel inteiro numero, i, resultadovariavel inteiro numero, i, resultado
escrever "Qual número você deseja ver a tabuada?" ler numero
escrever "Tabuada de ", numero, ":\n" para i de 1 ate 10 passo 11
escrever "Qual número você deseja ver a tabuada?" ler numero
escrever "Tabuada de ", numero, ":\n" para i de 1 ate 10 passo 11variavel inteiro numero, i, resultado
escrever "Qual número você deseja ver a tabuada?" ler numero
escrever "Tabuada de ", numero, ":\n" para i de 1 ate 10 passo 11variavel inteiro numero, i, resultado
escrever "Qual número você deseja ver a tabuada?" ler numero
escrever "Tabuada de ", numero, ":\n" para i de 1 ate 10 passo 11variavel inteiro numero, i, resultado
escrever "Qual número você deseja ver a tabuada?" ler numero
escrever "Tabuada de ", numero, ":\n" para i de 1 ate 10 passo 11
Entrada de dados
Processamento dos dados
Saída dos dados
Algoritmos com VisuAlg 5
No computador, como os algoritmos são escritos?
São escritos utilizando uma linguagem de programação como Pascal, linguagem C, Java,
e outras, e são chamados de Programas.
Algoritmo x Programa
Um programa é a conversão, ou tradução, de um algoritmo para uma determinada linguagem
de programação, segundo suas regras de sintaxe e semântica da linguagem, de forma a permi-
tir que o computador possa interpretar e executar a seqüência de comandos pretendidos.
Linguagem de Programação
Uma linguagem de programação é um conjunto de símbolos (comandos, identificadores,
caracteres ASCII, etc. ...) e regras de sintaxe que permitem a construção de sentenças
que descrevem de forma precisa ações compreensíveis e executáveis para o computador.
Programa Fonte
O programa que escrevemos utilizando uma linguagem de programação, como o Pascal,
a linguagem C, Java, e outras, é chamado de Programa Fonte. As linguagens de progra-
mação permitem que os programas sejam escritos e interpretados pelo homem, mas não
pode ser interpretado pelo computador.
Programa Objeto
Programa Objeto é a seqüência de comandos de um programa escritos em linguagem de
máquina. A linguagem de máquina é composta de símbolos binários que é interpretada
pelo computador, mas não pode ser interpretada pelo homem.
Compilador
Compilador é um programa que traduz o Programa Fonte escrito por um programador
em um Programa Objeto a ser interpretado pelo computador. Ou seja, é um tradutor de
Programa Fonte em Programa Objeto.
Portugol
Portugol é uma pseudo-linguagem de programação criada a partir da antiga linguagem de
programação Algol + palavras da língua portuguesa. Seu objetivo é facilitar a escrita de
algoritmos por iniciantes em programação cuja língua nativa seja a língua portuguesa, já que
as linguagens de programação utilizam apenas palavras-chave escritas na lingua inglesa.
O Portugol, além de utilizar apenas palavras-chave da língua portuguesa, também possui
um conjunto de regras bem mais simples do que as linguagens de programação, isto faci-
lita muito a escrita de algoritmos por programadores aprendizes.
Existe um compilador para Portugol?
Algoritmos com VisuAlg 6
Oficialmente não, mas se procurarmos na internet acharemos algumas opções de compi-
ladores freeware (gratuitos) extra oficiais como o VisuAlg, o G-Portugol, e outros.
Nesta disciplina utilizaremos o VisuAlg para compilarmos e executarmos nossos algorit-
mos escritos em Portugol.
A tabela ASCII
Para escrever um programa fonte devemos utilizar um editor de programa que utilizará
somente os caracteres da Tabela ASCII, ou seja, não se utiliza em programas fonte forma-
tações do tipo negrito, itálico, tamanho de fonte, e outra.
ASCII (American Standard Code for Information Interchange), em português: "Código
Padrão Americano para o Intercâmbio de Informação". É uma codificação de caracteres
de sete bits (27 = 128 códigos) ou 8 bits - ASCII estendida (28 = 256 códigos) baseada
no alfabeto inglês. Cada sequencia de códigos na tabela ASCII corresponde a um carac-
tere, comumente representados pelos 8 bits (equivalente a um byte). Os códigos ASCII
representam texto em computadores. Desenvolvida a partir de 1960, grande parte das
codificações de caracteres modernas a herdaram como base.
O quadro a seguir mostra uma parte da tabela ASCII com os caracteres mais utilizados:
Binário Decimal Hexa Glifo Binário Decimal Hexa Glifo Binário Decimal Hexa Glifo
0010 0000 32 20 0100 0000 64 40 @ 0110 0000 96 60 `
0010 0001 33 21 ! 0100 0001 65 41 A 0110 0001 97 61 a
0010 0010 34 22 " 0100 0010 66 42 B 0110 0010 98 62 b
0010 0011 35 23 # 0100 0011 67 43 C 0110 0011 99 63 c
0010 0100 36 24 $ 0100 0100 68 44 D 0110 0100 100 64 d
0010 0101 37 25 % 0100 0101 69 45 E 0110 0101 101 65 e
0010 0110 38 26 & 0100 0110 70 46 F 01100110 102 66 f
0010 0111 39 27 ' 0100 0111 71 47 G 01100111 103 67 g
0010 1000 40 28 ( 0100 1000 72 48 H 0110 1000 104 68 h
0010 1001 41 29 ) 0100 1001 73 49 I 0110 1001 105 69 i
0010 1010 42 2A* 0100 1010 74 4A J 0110 1010 106 6A j
0010 1011 43 2B + 0100 1011 75 4B K 0110 1011 107 6B k
0010 1100 44 2C , 0100 1100 76 4C L 0110 1100 103 6C I
0010 1101 45 2D - 0100 1101 77 4D M 0110 1101 109 6D m
0010 1110 46 2E . 0100 1110 78 4E N 01101110 110 6E n
0010 1111 47 2F / 0100 1111 79 4F O 01101111 111 6F 0
0011 0000 48 30 0 0101 0000 80 50 P 0111 0000 112 70 P
0011 0001 49 31 1 0101 0001 81 51 Q 0111 0001 113 71 q
0011 0010 50 32 2 0101 0010 82 52 R 0111 0010 114 72 r
0011 0011 51 33 3 0101 0011 83 53 S 0111 0011 115 73 s
0011 0100 52 34 4 0101 0100 84 54 T 0111 0100 116 74 t
0011 0101 53 35 5 0101 0101 85 55 U 0111 0101 117 75 u
0011 0110 54 36 6 0101 0110 86 56 V 0111 0110 118 76 V
00110111 55 37 7 0101 0111 87 57 w 0111 0111 119 77 w
0011 1000 56 38 8 0101 1000 88 58 X 0111 1000 120 78 X
0011 1001 57 39 9 0101 1001 89 59 Y 0111 1001 121 79 y
0011 1010 58 3A : 0101 1010 90 5A z 0111 1010 122 7A z
0011 1011 59 3B ; 0101 1011 91 5B [ 0111 1011 123 7B {
0011 1100 60 3C < 0101 1100 92 5C \ 0111 1100 124 7C |
0011 1101 61 3D = 0101 1101 93 5D ] 0111 1101 125 7D }
0011 1110 62 3E > 0101 1110 94 5E ^ 0111 1110 126 7E ~
0011 1111 63 3F ? 0101 1111 95 5F _
Algoritmos com VisuAlg 7
O VISUALG
O que é o VisuAlg?
O VisuAlg é um aplicativo freeware que permite escrever, compilar, executar, depurar
erros, executar passo a passo, entre outras funcionálidades, em algoritmos escritos em
Portugol. Sem o uso de uma ferramenta como o VisuAlg, o aluno ficaria impossibilitado
de executar seus algoritmos devendo apenas escrevê-los em papel e imaginar os resul-
tados que seriam alcançados quando o mesmo for rescrito utilizando uma linguagem de
programação.
Instalação e Requerimentos de Hardware
O VisuAlg é um programa simples, que não depende de DLLs, OCXs ou outros compo-
nentes. Sua instalação não copia arquivos para nenhuma outra pasta a não ser aquela em
que for instalado, e exige cerca de 1 MB de espaço em disco. Pode ser executado sob
Windows 95 ou posterior, e tem melhor aparência com resolução de vídeo de 800x600
ou maior.
Instalação VisuAlg
Primeiramente devemos baixar o programa utilizando o link abaixo, ou em outro disponível
na Internet. Escolha sempre a versão mais nova.
http://www.apoioinformatica.inf.br/produtos/visualg
Após baixar o arquivo execute-o e siga os passos demonstrados abaixo:
Figura 01: Tela de apresentação clique em “Avançar”
Algoritmos com VisuAlg 8
Figura 02: Caminho da instalação – clique em Avançar
Figura 03: Instalação de Componentes – clique em Avançar
Figura 04: Nome do grupo, pode editar ou deixar padrão – clique em Avançar
Algoritmos com VisuAlg 9
Figura 05: Tarefas Adicionais – clique em Avançar
Figura 06: Confirmação das configurações – clique em Instalar
Figura 07: Conclusão da Instalação – clique em Concluir
Algoritmos com VisuAlg 10
Tela do VisuAlg
Ao criar um novo programa o VisuAlg coloca no editor texto um "esqueleto" de algoritmo,
cuja intenção é, além de poupar trabalho ao usuário, mostrar a estrutura básica de um
algoritmo com suas 4 palavras chave obrigatórias (algoritmo...var...inicio...fimalgoritmo),
bem como a forma dos comentários.
Barra de tarefas para edição do algoritmo
Contém os comandos mais utilizados. É possível acessá-los também pelo menu ou pelos
atalhos do teclado.
Novo Abrir Cortar Colar
Gravar
Bloco de
Texto
Desfazer Localizar
Corrigir
indentação
Mostrar variáveis
modificadas
Salvar Imprimir Copiar
Inserir bloco
de texto
Refazer Substituir
Numerar
linhas
Restaurar
tela inicial
Menu
Barra de tarefas
Editor de texto
Visualização
devariáveis
Barra de Status
Janela de saída
Algoritmos com VisuAlg 11
Abrir (Ctrl-A) - Abre um algoritmo anteriormente gravado, substituindo o texto existente no editor. Se este
tiver sido modificado, o Visualg pedirá sua confirmação para salvá-lo antes que seja sobreposto.
Novo (Ctrl-N) - Cria um novo "esqueleto" de algoritmo, substituindo o texto existente no editor. Se este tiver
sido modificado, o Visualg pedirá sua confirmação para salvá-lo antes que seja sobreposto.
Salvar (Ctrl-S) - Salva imediatamente o texto do editor. Caso seja a primeira vez que um novo texto é grava-
do, o Visualg pedirá o seu nome e localização.
Imprimir - Imprime imediatamente o texto existente no editor. Para configurar a impressão, use o comando
Imprimir... do menu Arquivo (acessível também pelo atalho Ctrl-P).
Recortar – Move um texto selecionado para a memória.
Copiar – Copia um texto selecionado para a memória.
Colar – Retira conteúdo da memória e coloca no local do cursor.
Gravar Bloco – Abre uma janela para salvar o bloco selecionado. Objetivo é criar uma espécie de biblioteca
de funções.
Inserir um bloco – Insere um bloco arquivado no local do cursor.
Desfazer e refazer – Desfaz e refaz ação criada no editor de texto.
Localizar – Abre uma janela para você digitar a palavra que deseja localizar no Editor de textos.
Substituir – Abre uma janela para você poder digitar a palavra que deseja localizar e substituir no Editor de
textos.
Corrigir Indentação (Ctrl-G) - Corrige automaticamente a indentação do "código-fonte", colocando os coman-
dos dentro de uma estrutura de 3 colunas à direita da coluna inicial da estrutura conforme a configuração
padrão.
Numerar Linhas - Liga/desliga a exibição dos números das linhas na área à esquerda do editor. A linha e colu-
na do editor em que o cursor está em um determinado momento também são mostradas na primeira parte da
barra de status, situada na parte inferior da tela. Os números de linhas, caso ligados, são desligados durante
a execução do algoritmo por motivos técnicos, mas são ligados de volta ao fim do "programa".
Mostra Variáveis Modificadas - Liga/desliga a exibição da variável que está sendo modificada. Como o núme-
ro de variáveis pode ser grande, muitas podem estar fora da janela de visualização; quando esta caracterís-
tica está ligada, o programa rola a grade de variáveis de modo que aquela que está sendo modificada no
momento fique visível. Útil quando se está executando o algoritmo passo a passo. Por questões de perfor-
mance, o valor padrão desta característica é desligada quando o algoritmo está sendo executado automatica-
mente, mas se você clicar este botão pode executar o algoritmo automaticamente com a exibição ligada. O
valor volta automaticamente para desligada ao fim da execução.
Restaura a tela inicial do Visualg – Retorna a tela original do programa.
Algoritmos com VisuAlg 12
Barra de tarefas execução e controle de algoritmo
Executar Intervalo do timer Parar Desmarcar todos os breakpoints
Gerar valores
aleatórios Perfil
Mostrar pilha de
ativação
Executar com
timer
Passo
Liga/desliga
breackpoint
Executar em
modo DOS
Intervalo dos
valores aleatórios Ajuda
Executar (F9) - Inicia (ou continua) a execução automática do
algoritmo.
Executar com Timer (shift + F9) – Executa o algoritmo linha por linha
automaticamente determinado por um tempo escolhido pelo o usuário.
Passo (F8) - Inicia (ou continua) a execução do algoritmo linha por
linha, dando ao usuário oportunidade de acompanhar o fluxo do
programa, examinar variáveis, etc.
Parar (Ctrl-F2) - Termina imediatamente a execução do algoritmo. Este
botão fica desabilitado quando o algoritmo não está sendo executado.
Liga / Desliga Breakpoints (F5) – Cria pontos de parada. Selecione
a linha que deseja criar um ponto de parada na hora de execução
do algoritmo e pressione o Breakpoints surgirá uma linha marrom e
um marcador do lado esquerdo para indicar o ponto de parada. Para
desmarcar o ponto de parada basta selecionar a linha que possui o
breakpoint e clicar no mesmo. O breakpoints não funciona no modo
passo a passo e para continuar o algoritmo depois de uma parada
pressione novamente o F9 ou o botão Executar.
Desmarca todos os BreakPoints (CTRL+F5)
Executa algoritmo em Modo DOS – Quando ativado durante a execu-
ção do algoritmo ele executa o algoritmo em uma janela em modo
DOS.
Gerador valores – Substitui digitaçãodo usuário por um sistema de
geração aleatória de valores numéricos e caracter (este comando não
afeta a leitura de variáveis do tipo lógico - com certeza uma coisa
pouco usual...). Gera números e caracteres aleatoriamente, muito útil
para não perder tempo pensando o que digitar, você escolhe o inicio
e o fim dos valores e se for valores com casas decimais é só escolher
quantas casas decimal você quer.
Perfil (F7) - Mostra, após a execução de um algoritmo, quantas vezes
cada linha foi executada. Útil para a análise de eficiência de um algo-
ritmo, como por exemplo, nos métodos de classificação.
Mostra a pilha de Ativação dos procedimentos e Funções (CTRL+F3) -
Mostra a pilha de ativação do programa com o nome dos procedimen-
tos e funções chamados, nome, tipo e valor dos parâmetros.
Ajuda on-line (F1) – Em construção.
Visualizador de Variáveis
Contém uma grade onde são exibidos:
• Escopo - indica se é uma variável GLOBAL (válida em todo o algoritmo) ou se é uma
variável LOCAL de um procedimento ou função.
• Nome - exibe o nome da variável, com índice ou índices, caso seja um elemento de
um vetor.
Algoritmos com VisuAlg 13
• Tipo - exibe tipo da variável: "R" para Real, “I” para Inteiro, "C" para literal e "L"
para lógico
• Valor - exibe o valor corrente armazenado na variável.
A versão atual do Visualg permite utilizar até 500 variáveis (cada elemento de um vetor
conta como uma variável). Há uma seta que mostra o nome da variável que eles repre-
sentam fora do subprograma. Isto tudo, naturalmente, só pode ser visto se executarmos
o algoritmo passo a passo...
Janela de Saída
Exibe as Entradas e Saídas de dados do algoritmo. Se o algoritmo estiver sendo executa-
do em modo DOS, as Entradas e Saídas de dados serão exibidas na janela DOS e nesta
janela também.
Barra de Status
Situada na parte inferior da tela, contém três painéis. O primeiro mostra a linha e coluna
onde o cursor está posicionado, o segundo mostra a palavra Modificado caso o algoritmo
tenha sido alterado desde que foi carregado ou salvo pela última vez. O terceiro mostra o
atalho que exibe as funções predefinidas do Visualg (Ctrl+J).
Algoritmos com VisuAlg 14
O PORTUGOL DO VISUALG
Estrutura básica de um algoritmo
escrito no Portugol do VisuAlg
algoritmo "semnome"
// Função :
// Autor :
// Data :
// Seção de Declarações
var
inicio
// Seção de Comandos
fimalgoritmoalgoritmo "semnome"
OBSERVAÇÃO
O Portugol do VisuAlg não faz distinção entre letras minúsculas e letras maiúsculas, sendo
assim, comandos, tipos, nomes de variáveis e outros, escritos em letras minúsculas são
exatamente iguais aos escritos em letras maiúsculas.
Entretando, nesta disciplina vamos adotar como regra as boas práticas de programação
genéricas (descritas ao longo desta apostila) que indicam onde devem ser utilizadas letras
maíusculas ou minúsculas. A adoção destas boas práticas desde o princípio do aprendi-
zado em programação de computadores ajudará o aluno a criar códigos bem escritos e de
qualidade, facilitará também o uso delas futuramente quando os alunos estiverem criando
programas utilizando linguagens de programação.
Linha de Comando
O Portugol utilizado no VisuAlg permite apenas um comando por linha, desse modo, não
há necessidade de utilização de simbolos indicando o final de uma linha de comando,
como o ponto e vírgula utilizado em Pascal e Java.
IMPORTANTE
Para facilitar a digitação e aproximar das linguagens de programação, todas as palavras-
-chave, nomes de variáveis, vetores e outros, não utilizam acentuação, nem cedilha, etc. Por
exemplo o tipo de dados lógico será escrito logico, o comando se..então..senão será escrito
se..entao..senao, e assim por diante.
Comentários no programa
Comentários são textos inseridos no programa fonte com o objetivo de explicar ou docu-
mentar uma lógica, uma variável ou outro objeto qualquer. Os comentários são ignorados
pelo compilador, portanto não são levados para o programa objeto.
Algoritmos com VisuAlg 15
Os comentários podem ocupar uma ou mais linhas no programa, e para inseri-los se utiliza
o símbolo // no princípio de cada linha ou logo afrente de uma linha de comando.
No editor de programas do VisuAlg, sempre que um comentário for inserido, o mesmo
será exibido na cor verde para destacar das demais linhas de comandos.
Exemplo:
algoritmo "calcularIdade"
// Função : calcular a idade de uma pessoa a partir da
data de nasc.
// e da data de hoje
// Autor : Air Rabelo
// Data : 16/05/2014
// Seção de Declarações
var
diaNasc: inteiro // dia da data de nascimento
mesNasc: inteiro // mês da data de nascimento
inicio
// Seção de Comandos
// 1 - entrada de dados
escreva("Digite o dia de nascimento: ")
leia(diaNasc)
escreva("Digite o mes de nascimento: ")
leia(mesNasc)
...
Tipos de Dados
Os dados manipulados ou armazenados na memória do computador são dividios em 3 classes:
• NUMÉRICOS – utilizam somente dígitos e possuem valor de grandeza numérica
Ex: 0 , 1 , 2 , 5.10 , -10 , -2.35 , 1240, ...
• ALFANUMÉRICOS – utilizam qualquer caracter da tabela ASCII e são interpretados
como um texto.
Ex: a , b , c , A , B , C , ! , @ , # , 0 , 1 , 2, ...
• LÓGICOS - assumem apenas dois valores: verdadeiro ou falso.
Na classe dos valores numéricos, os tipos de dados utilizado no Portugol do VisuAlg são:
• INTEIRO - para representar números inteiros positivos ou negativos
Ex: 5 , -10 , 1250 , -375 , …
• REAL - para representar números reais
Ex: 11.60 , -10.50 , 11250.357 , ...
OBSERVAÇÃO
No sistema de numeração da nossa lingua portuguesa utilizamos no conjunto de números
reais a vírgula (,) como o símbolo que separa os valores inteiros dos decimais. Entretanto,
assim como nas linguagens de programação, o símbolo utilizado para separar os valores
inteiros dos decimais no VisuAlg é o ponto (.)
Algoritmos com VisuAlg 16
Na classe dos valores alfanuméricos, o tipo de dado utilizado no Portugol do VisuAlg é o:
• CARACTER - para representar valores caracter da tabela ASCII, ou seja, para arma-
zenar texto em geral.
Ex: "José Maria" , "25/10/2013" , "Relatório de Faturamento", ...
OBSERVAÇÃO
Toda expressão do tipo caracter deverá ser escrita entre áspas (" "). Isto é importante para
diferenciar o tipo caracter dos outros tipos.
Na classe dos valores lógicos, o tipo de dado utilizado no Portugol do VisuAlg é o:
• LOGICO - para representar valores lógicos (verdadeiro ou falso)
OBSERVAÇÃO
Como palavras no chave no VisuAlg não utilizam acentuação, o tipo de dados lógico deve
ser escrito sem o acento.
Variáveis de memória
Variável é uma região identificada da memória que tem por finalidade armazenar informa-
ções (dados) de um programa em execução. Ou seja, a variável é o nome que damos a
um dado armazenado na memória do computador, e todo dado armazenado na memória
do computador deve ter um nome que o identifique.
Quando precisarmos armazenar um dado na memória, atribuímos este dado ao nome de
uma variável. Exemplo:
• Comando para guardar a camisa na Gaveta1:
gaveta1 <- "camisa"
• Comando para guardar a meia na Gaveta2:
gaveta2 <- "meia"
• Comando para guardar a bermuda na Gaveta3:
gaveta3 <- "bermuda"
Toda vez que precisarmos buscar um dado armazenado na
memória utilizamos o nome da variável para identificar o dado.
Exemplo:
• Comando para mostrar o que tem na Gaveta1:
escreva( gaveta1 )
• Comando para mostrar o que tem na Gaveta2
escreva( gaveta2 )
• Comando para mostrar o que tem na Gaveta3
escreva( gaveta3 )
Toda variável de memória deve ter um nome e deve estar associada a um tipo de dado.
Toda variável armazena apenas um valor por vez.
Algoritmos com VisuAlg 17
Toda vez que um valor é atribuído a uma variável, o seu valor anterior será sobreposto.
Portanto as variáveis armazenam apenas o ultimo valor atribuído a elas. Exemplo:
idade <- 30
idade <- 50
escreva (idade)
Na primeira linha do exemplo acima a variável idade recebe o valor 30. Neste momento
o único valor armazenado navariável é 30.
Na segunda linha a mesma variável idade recebe o valor 50. Desta forma, o antigo valor
30 foi sobreposto pelo novo valor 50. Após a execução desta segunda linha, o único valor
que a variável idade estará armazenando será o ultimo que ela recebeu, ou seja, 50.
Na terceira linha, o comando escreva irá exibir na tela o conteúdo da variável idade. O
valor que será exibido na tela será 50, que é o ultimo valor recebido pela variável idade,
e por isto é o único valor que estará armazenado nela.
Nomes de Variáveis
Os nomes de variáveis devem seguir as seguintes regras:
• O primeiro caracter do nome de uma variável deve ser sempre uma letra ou o carac-
ter sublinhado ( _ );
• O segundo e demais caracteres do nome de uma variável podem ser somente letras,
números ou sublinhado ( _ );
• Os nomes devem ser simples e o mais descritivos possível, e podem ter no máximo
127 caractere de tamanho;
• Não podem ser utilizados cedilha (ç) e nem letras acentuadas;
• O VisuAlg não diferencia letras maiúsculas de minúsculas, mas a maioria das lingua-
gens de programação faz esta diferenciação;
• Nesta disciplina utilizaremos nomes de variáveis escritos somente com letras minús-
culas, e quando forem nomes compostos, a primeira letra a partir da segunda palavra
será maiúscula. Isto, apesar de não ser uma exigência do VisuAlg, é uma boa prática
de programação que é adotada pela maioria das linguagens de programação modernas.
Exemplos de nomes de variáveis:
nomeAluno
dataNascimento
endereco_1
endereco_2
cidadeNatal
somaSalarios
percentualAprovados
mediaNotas
Algoritmos com VisuAlg 18
Declaração de Variáveis
Como vimos no início deste capítulo, a estrutura de um algoritmo em VisuAlg segue o
seguinte formato:
Toda variável precisa ser declarada antes de ser utilizada. A declaração de uma variável
consiste em criar o seu nome e atribuir um tipo de dado.
No Portugol do VisuAlg as variáveis devem sempre ser declaradas no início do algoritmo,
logo após a palavra chave var.
Exemplo:
Aqui vem o nome do algoritmo,
que é escrito entre aspas
Aqui vem a declaração das variá-
veis de memória
Aqui vem a lista de comandos
Aqui vem a declaração das variá-
veis de memória
A declaração de mais de uma
variável por linha é permitida
mas não é recomendada pelas
boas práticas de programação!
Algoritmos com VisuAlg 19
Atribuição de valores as Variáveis
Para se atribuir uma valor a uma variável utiliza-se o comando de Atribuição do VisuAlg
( <- ), que é um sinal menor seguido de um sinal de subtração.
Para atribuir um valor a uma variável do tipo caracter utiliza-se as aspas ( " " ).
Na linha de comando para atribuição de valores a uma variável, a variável sempre deverá ser
escrita a esquerda do comando de atribuição ( <- ) e o valor a ser atribuído escrito a direita.
O uso destes dois sinais como comando de atribuição ( <- ) se justifica por visualmente
representarem uma seta em sentido para esquerda, o que indica que o valor escrito a
direta do comando será inserido na variável escrita a esquerda do comando.
OBSERVAÇÃO
Para digitar o comando de atribuição não pode haver espaço entre o sinal menor e o sinal de
subtração, ou seja, os dois sinais devem ser digitados em sequencia sem espaco entre eles.
Entretanto, por questões de clareza do código, é recomendado utilizar espaco antes e depois
do comando de atribuição, como nos exemplos abaixo.
Exemplos:
idade <- 25 // tipo inteiro
nota1 <- 3 // tipo inteiro
nota2 <- 4 // tipo inteiro
notaFinal <- nota1 + nota2 // tipo inteiro
salario <- 2786.50 // tipo real
nomeAluno <- "Marcelo dos
Santos"
// tipo caracter
sexo <- "F" // tipo caracter
alunoFoiAprovado <- verdadeiro // tipo logico
OBSERVAÇÃO
Na quarta linha dos exemplos acima, a variável notaFinal recebe nota1 + nota2. Quando
o comando de atribuição é utilizado em conjunto com uma operação (neste caso soma) o
valor que será atribuído a variável será o resultado da operação. Desta forma, como nota1
recebeu o valor 3 e nota2 recebeu o valor 4, notaFinal receberá o resultado da soma de 3
+ 4, ou seja, o valor 7 será atribuído a variável notaFinal.
Linha de Comando no VisuAlg
No VisuAlg cada linha de comando deve ocupar apenas uma linha no programa fonte.
Desta forma, o que indica o final de uma linha de comando é a mudança de linha no
editor de texto.
Exemplos:
salario <- 2786.50
nomeAluno <- "Marcelo dos Santos"
sexo <- "F"
escreva("o nome do aluno é: ", nomeAluno)
aprovado <- falso
salario <- salario + tempoCasa – descontoValeTransp + 2786.50
texto <- "O VisuAlg permite escrever algoritmos em Portugol"
Algoritmos com VisuAlg 20
OPERADORES
Operadores Aritméticos
Os operadores aritméticos são utilizados para efetuar operações aritméticas com número
inteiros e reais. São eles:
Operador O que representa Exemplos de uso
+ Soma 2 + 3 b + c x + 20 + 2
- Subtração 10 - 2 b – a y - 3 - x
* Multiplicação 3 * 4 x * y a * 2 * b
/ Divisão x / y 10 / 2 10 / x / b
% Resto da divisão 10 % 3 // resultado será 1
^ Potência 2^3(resultado 8) a ^ b
Resolução de operação aritmética composta
Em uma operação matemática composta de vários operadores a ordem de resolução é:
1º. o que está entre parênteses
2º. operaçõe de potência
3º. operações de multiplicação, divisão e resto da divisão
4º. operações de soma e subtração
Exemplo:
result <- (2+4)-6/2 + 5*(2+3) + 2^3
result <- 6 -6/2 + 5* 5 + 2^3
result <- 6 -6/2 + 5* 5 + 8
result <- 6 - 3 + 25 + 8
result <- 36
Escrevendo Fórmulas Matemáticas como
operações aritméticas compostas
Exemplo 1:
3 1/3y 4 5 3
=
+ −
23 + 8 x 3 - 4
y (3 8 2 * 3 (1 / 2 ) 4 ) / (4 3 5 / 2 3 (1/ 3 ) )∧ ∧ ∧ ∧< − + − + −
Algoritmos com VisuAlg 21
Exemplo 2:
2×5-1 4
5 2
8 - 5 - 5 + 1y =
8 + 3 - 1
y (8 - 5 ( (2 * 5 -1) (1 / 2) ) - 5 4 1) / ( (8 + 3 2) (1 / 5) - 1)∧ ∧ ∧ ∧ < − + ∧
Operadores Relacionais
Os operadores relacionais são utilizados para efetuar a comparação entre dados de mesmo
tipo. São eles:
Operador O que representa Exemplos
= Igual a notaA = notaB salarioAtual = SalarioAnterior
<> Diferente de notaA <> notaB salarioAtual <> SalarioAnterior
> Maior que notaA > notaB salarioAtual > SalarioAnterior
< Menor que notaA < notaB salarioAtual < SalarioAnterior
>= Maior ou igual a notaA >= notaB salarioAtual >= SalarioAnterior
<= Menor ou igual a notaA <= notaB salarioAtual <= SalarioAnterior
O resultado de uma operação relacional é sempre um valor lógico, ou seja, verdadeiro
ou falso.
Exemplos, considere a = 1, b = 3 e c = 5
c = a // falso
a > b // falso
b <= c // verdadeiro
a <> b // verdadeiro
Operadores Lógicos
Os operadores lógicos são utilizados para se criar expressões Relacionais compostas. São eles:
Operador O que representa
e junção
ou escolha
não negação ou inversão
Exemplos:
Considere notaA <- 50 , notaB <- 70 , notaC <- 85
(notaA < notaB) e (notaB < notaC)
V e V = V
Neste exemplo acima o resultado final será verdadeiro porque os dois valores comparados
com utilizando o operador e são verdadeiros, ou seja V e V = V
(nota A < notaB) ou (notaB = notaC)
V ou F = V
Algoritmos com VisuAlg 22
Neste segundo exemplo acima, o resultado é verdadeiro porque com o operador ou basta
um dos valores serem verdadeiros que o resultado é verdadeiro, ou seja, V ou F = V
não(notaA < notaB)
nao V = F
O operador nao inverte um valor lógico, ou seja, nao V = F
OBSERVAÇÃO
No VisuAlg, em todas os testes condicionais que utilizam operadores lógicos é obrigatório
o uso de parênteses. O parênteses é obrigatório somente nos valores que estão a esquerda
e a direita dos operadores e/ou , e no valor que está a direita do operador nao (como no
exemplo acima). Qualquer outro uso de parênteses em operações compostasé opcional e a
critério do usuário. As boas práticas de programação recomendam o uso de parênteses em
operações muito complexas para enfatizar as prioridades para resolução da operação.
Tabela verdade para operações lógicas:
Abaixo, segue três tabelas, chamadas tabela-verdade, contendo o resultado do uso dos
operadores lógicos sobre dois operandos.
Operando 1 Operador Operando 2 Resultado
verdadeiro e verdadeiro verdadeiro
verdadeiro e falso falso
falso e falso falso
verdadeiro ou verdadeiro verdadeiro
verdadeiro ou falso verdadeiro
falso ou falso falso
----- nao verdadeiro falso
----- nao falso verdadeiro
Prioridade na resolução das Operações compostas
Se vários operadores aparecerem em uma expressão, a ordem de execução das operações
será dada segundo os seguintes critérios seqüenciais:
1º. Parênteses → ( )
2º. Potência → ^
3º. Multiplicação, Divisão e Resto da Divisão → * , / , %
4º. Soma e Subtração → + , -
5º. Operadores Relacionais, sem ordem entre eles → > , < , >= , <= , <> , =
6º. Operadores Lógicos na seguinte ordem: não, e, ou
Exemplos de resolução de operações compostas
Considere as variáveis e respectivos valores:
a = 127, b = 10, c = 5, estrangeiro = falso, aprovado = verdadeiro
não estrangeiro
não falso
resultado verdadeiro
Algoritmos com VisuAlg 23
No exemplo acima, como estrangeiro = falso então o resultado de nao falso = verdadeiro
estrangeiro e estrangeiro
falso e verdadeiro
resultado falso
Neste segundo exemplo, como estrangeiro = falso, aprovado = verdadeiro,
então o resultado de falso e verdadeiro = falso
a>b ou b<c
verdadeiro ou falso
resultado verdadeiro
Neste exemplo acima, como a > b = verdadeiro, b < c = falso, desta forma o
resultado de verdadeiro e falso = verdadeiro
nao a<b
nao falso
resultado verdadeiro
Neste exemplo acima, como a < b = falso, então o resultado de não falso = verdadeiro
estrangeiro e aprovado ou a=b
falso e verdadeiro ou falso
falso ou falso
resultado falso
Neste exemplo acima, os operadores e e ou aparecem na mesma operação, neste caso
o e tem prioridade sobre o ou. Sendo assim, primeiro será resolvido a etapa da operação
falso e verdadeiro = falso, depois então será resolvido a ultima etapa da operação
falso ou falso = falso
a+b*c/b=3 e aprovado ou não (a<>b)
a+b*c/b=3 e aprovado ou não verdadeiro
a+ 5 =3 e aprovado ou não verdadeiro
132 =3 e aprovado ou não verdadeiro
falso e verdadeiro ou não verdadeiro
falso ou falso
resultado falso
Neste exemplo acima devemos lembrar das prioridade em operações compostas:
1º. primeiro será resolvido o que está entre parênteses
2º. depois serão resolvidas as operações matemáticas multiplicação e divisão
3º. depois serão resolvidas as operações matemáticas soma e subtração
4º. depois será resolvida a operação relaciona de igualdade ( = )
5º. depois será resolvida a operação lógica negação ( nao )
6º. depois será resolvida a operação lógica junção ( e )
7º. e por ultimo, será resolvida a operação lógica escolha ( ou )
Algoritmos com VisuAlg 24
SAÍDA DE DADOS
Os comandos de saída de dados são responsáveis por exibir uma informação na tela do
computador. No VisuAlg, os comandos de saída de dados são o escreva e o escreval
Sintaxe:
escreva ( variável1, variável2, expressão1, expressão2, …)
escreval( variável1, variável2, expressão1, expressão2, …)
A diferença entre escreva e escreval é que no primeiro, o cursor se posiciona na tela
logo a frente ao último valor exibido (exemplo 1). Já no caso do escreval, o cursor se
posiciona na primeira coluna da próxima linha (exemplo 2).
Exemplo1:
escreva("TESTE DE TELA")
TESTE DE TELA_
Exemplo 2:
escreval("TESTE DE TELA")
TESTE DE TELA
_
Exemplo:
Algoritmos com VisuAlg 25
Considere o retângulo apresentado abaixo como sendo a tela de saída de dados
Marcelo da Silva Dias_
Cursor se posicionará logo após
o valor exibido na tela
Marcelo da Silva Dias
_
Este comando apenas posiciona
o cursor na próxima linha
Algoritmos com VisuAlg 26
Marcelo da Silva Dias
O endereço do aluno é: Rua Cobre,200
_
Após o comando o cursor é posi-
cionado na próxima linha
Marcelo da Silva Dias
O endereço do aluno é: Rua Cobre,200
_
O que é exibido na tela é o
conteúdo da variável endereco
Marcelo da Silva Dias
O endereço do aluno é: Rua Cobre,200
Mensalidade do aluno: 500.4
_
Após o comando o cursor é posi-
cionado na próxima linha
Algoritmos com VisuAlg 27
Marcelo da Silva Dias
O endereço do aluno é: Rua Cobre,200
Mensalidade do aluno: 500.4
_
O que é exibido na tela
é o conteúdo da variável
valorMensalidade
Marcelo da Silva Dias
O endereço do aluno é: Rua Cobre,200
Mensalidade do aluno: 500.4
O aluno Marcelo da Silva Dias paga 500.45
_
Qual o resultado desta linha de
comando?
Marcelo da Silva Dias
O endereço do aluno é: Rua Cobre,200
Mensalidade do aluno: 500.4
O aluno Marcelo da Silva Dias paga 500.45
_
Algoritmos com VisuAlg 28
Marcelo da Silva Dias
O endereço do aluno é: Rua Cobre,200
Mensalidade do aluno: 500.4
O aluno Marcelo da Silva Dias paga 500.45
A média das mensalidades é: 50.045
__
Marcelo da Silva Dias
O endereço do aluno é: Rua Cobre,200
Mensalidade do aluno: 500.4
O aluno Marcelo da Silva Dias paga 500.45
A média das mensalidades é: 50.045
__
O que é apresentado na tela é o
resultado do cálculo
Marcelo da Silva Dias
O endereço do aluno é: Rua Cobre,200
Mensalidade do aluno: 500.4
O aluno Marcelo da Silva Dias paga 500.45
A média das mensalidades é: 50.045
575.52
O que é apresentado na tela é o
resultado do cálculo
Marcelo da Silva Dias
O endereço do aluno é: Rua Cobre,200
Mensalidade do aluno: 500.4
_
O que é exibido na tela
é o conteúdo da variável
valorMensalidade
Marcelo da Silva Dias
O endereço do aluno é: Rua Cobre,200
Mensalidade do aluno: 500.4
O aluno Marcelo da Silva Dias paga 500.45
_
Qual o resultado desta linha de
comando?
Marcelo da Silva Dias
O endereço do aluno é: Rua Cobre,200
Mensalidade do aluno: 500.4
O aluno Marcelo da Silva Dias paga 500.45
_
Algoritmos com VisuAlg 29
Marcelo da Silva Dias
O endereço do aluno é: Rua Cobre,200
Mensalidade do aluno: 500.4
O aluno Marcelo da Silva Dias paga 500.45
A média das mensalidades é: 50.045
575.52
Isto é uma formatação para que
o resultado seja exibido com
duas casas decimais
OBSERVAÇÃO
Quando se utiliza estes comandos de saída de dados com variáreis do tipo real, para evitar a
exibição de número excessivo de casas decimais, pode-se fazer a formatação dos dados de
saída em relação ao número destas casas decimais. Para formatar decimais no VisuAlg deve-
-se utilizar o argumento: num1:num2 logo a frente do valor a ser formatado. Este argumento
indica o número de casas inteiras a ser exibido (num1) e o número de casas decimais (num2).
Declaração de variáveis
Comandos de atribuição de valores
Saída de Dados
Como fica este exemplo no VisuAlg?
Algoritmos com VisuAlg 30
ENTRADA DE DADOS
O comando de entrada de dados é responsável por receber um valor digitado pelo usuário
via teclado para ser utilizado no algoritmo. No VisuAlg o comando de entrada de dados
é o leia.
Os dados recebidos via teclado por meio do comando leia são armazenados em uma
variável de memória ou em outra estrutura de dados, como os vetores e matrizes.
Exemplo 1:
leia(nomeAluno)
Exemplo 2:
escreva("Digite o nome do aluno: ")
leia(nomeAluno
Exemplo de um algoritmo utilizando declaração de variáveis, entrada de dados e saída de dados:
Declaração de variáveis que
serão utilizadas no algoritmo
Entrada de Dados
Saída de Dados
Outro exemplo de um algoritmo e agora utilizando as 4 partes básicas que um algoritmo deve
ter: declaração de variáveis, entrada de dados, cálculos (processamento)e saída de dados
Declaração de variáveis que
serão utilizadas no algoritmo
Entrada de Dados
Cálculos (processamento)
Saída de Dados
Algoritmos com VisuAlg 31
Exercício Resolvido 1
Faça um algoritmo que receba via teclado a distância em km e o tempo em horas de um
veículo. Calcule e imprima a velocidade deste veículo em km/h.
1º. Declarar as variáveis necessárias;
2º. Receber as digitações pela entrada de dados;
3º. Fazer os cálculos solicitados (processamento);
4º. Exibir os resultados pela saída de dados;
Solução no VisuAlg:
Exercício Resolvido 2
Faça um programa em Java que receba via teclado o Salário e o Valor do Aumento Salarial
de um empregado. Em seguida o programa deverá calcular e imprimir o novo salário do
empregado, que será a soma do atual salário com o Valor do Aumento Salarial.
1º. Declarar as variáveis necessárias;
2º. Receber as digitações pela entrada de dados;
3º. Fazer os cálculos solicitados (processamento);
4º. Exibir os resultados pela saída de dados;
Algoritmos com VisuAlg 32
Solução no VisuAlg:
Algoritmos com VisuAlg 33
ESTRUTURA CONDICIONAL – SE
Situações condicionais fazem parte do cotidiano de todas as pessoas. Frequentemente
nos vemos em situações onde devemos tomar uma decisão ou executar uma ação se uma
condição ocorrer, por exemplo:
se vai chover então vou levar o guarda-chuva
neste exemplo a condição é vai chover, e caso esta condição seja verdadeira, ou seja,
a chuva aconteça, a ação a ser tomada é levar o guarda-chuva.
Em um algoritmo, uma estrutura condicional deve ser utilizada quando a execução de uma
linha de código depende de uma condição.
As estruturas condicionais são divididas em 2 tipos:
• Condição Simples
• Condição Composta
Identação
Identação é o recuo de um texto em relação a sua margem. Em programação de computa-
dores, ou na construção de algoritmos em Portugol, utilizamos a identação para ressaltar
a estrutura do algoritmo, organizar o código e indicar grupos e subgrupos de comandos,
o que facilita a interpretação do código escrito pelo programador. A identação irá indicar
com clareza que um conjunto de comandos pertence a uma certa estrutura de código. Isto
engrandece a qualidade do algoritmo e apesar da identação não ser obritatória, um código
escrito sem identação ficará confuso e de difícil interpretação.
Nesta disciplina utilizaremos as técnicas de identação indicadas pelas boas práticas de
programação especificamente para a construção de algoritmos em Portugol.
Um código de qualidade escrito por um programador experiente deixará de ser bom se
não tiver seguido as boas práticas de programação e/ou não tiver utilizado corretamente
as regras de identação.
Nas sintaxes das estruturas condicionais a seguir serão indicadas as identações utilizadas
para ilustrar e exemplificar este conceito.
Condição Simples
Sintaxe:
se condição entao
comando1
comando2
...
comando(n)
fimse
Identação: Na sintaxe acima a identação está presente no recuo utilizado em cada linha de
comando existente entre o se e o fimse. No editor de textos do VisuAlg, utilizaremos dois
espaços como recuo de identação. Estes dois espaços são suficientes para indicar visualmente
o recuo e indicar que os comandos escritos com estes espaços a esquerda estão embutidos
dentro da estrutura condicional, ou seja, só serão executados se a condição for verdadeira.
Outra opção para o recuo é utilizar a tecla TAB, a diferença é que cada vez que você pressionar
a tecla TAB no editor de texto do VisuAlg, o número de espaços que serão inseridos na hori-
zontal vai variar entre 3 e 5 espaços, dependendo do tipo de estrutura de comandos.
Algoritmos com VisuAlg 34
A outra regra de identação presente nestra estrutura é a colocação do fimse na mesma
coluna em que foi digitado o se, ou seja, estas duas palavras estão alinhadas verticalmen-
te no código do programa. O mesmo acontece com os comandos dispostos entre o se
e o fimse, todos estão alinhados e com a digitação iniciando na mesma coluna do editor
de texto.
Exemplo 1:
varA <- 10
varB <- 5
se varA > varB entao
escreval("A é maior que B!")
fimse
Neste exemplo o texto A é maior que B! só será exibido na tela caso a condição
varA > varB seja verdadeira. Como varA contém o valor 10 e varB contém o valor 5,
então neste caso a condição é verdadeira e o valor vai ser exibido na tela.
Exemplo 2:
leia(nota)
se nota >= 60 entao
escreval("O aluno está aprovado!")
aprovado <- aprovado + 1;
fimse
Neste exemplo os dois comandos escritos entre o se e o fimse só serão executados se
a nota digitada pelo usuário for maior ou igual a 60. Caso contrário, nenhum dos dois
comandos serão executados.
Condição Composta
Sintaxe:
se condição então
comando1
comando2
..
comando(n)
senao
comando1
comando2
...
comando(n)
fimse
Na condição composta, se a condição for verdadeira, serão executados somente os
comandos que estão dentro do entao,mas se a condição for falsa, serão executados
somente os comandos que estão dentro do senao.
Identação: Na sintaxe acima a identação está presente no recuo utilizado em cada linha de
comando existente entre o se e o senao e entre o senao e o fimse. Quando a cláusula senao
é utilizada na estrutura condicional o alinhamento a esquerda deverá ocorrer entre o se, o
senao e o fimse, ou seja, a digitação deles deve iniciar na mesma coluna do editor de texto.
Algoritmos com VisuAlg 35
Exemplo:
leia(nota)
se nota >= 60 entao
escreval("O aluno está aprovado!")
aprovado <- aprovado + 1
senao
escreval("O aluno está reprovado!")
reprovado <- reprovado + 1
fimse
Neste exemplo, se a nota digitada for maior ou igual a 60, serão executados somente os
comandos escritos entre o entao e o senao:
escreval("O aluno está aprovado!")
aprovado <- aprovado + 1
Mas se a nota digitada for menor que 60, serão executados somete os comandos escritos
entre o senao e o fimse:
escreval("O aluno está reprovado!")
reprovado <- reprovado + 1
Estrutura Condicional Composta Aninhada
Sintaxe:
se condição1 então
comando1
comando2
..
comando(n)
senao
se condição2
comando1
comando2
...
comando(n)
senao
comando1
comando2
...
comando(n)
fimse
fimse
A estrutura condicional composta aninhada é util para situações onde o número de alter-
nativas é maior que que duas. Desta forma, após o senao, ao invés de vir uma lista de
comandos vem um novo teste condicional.
Nesta estrutura, para cada nova condição inserida (se) deve existir um fimse equivalente.
Identação: Na sintaxe acima a identação está presente no recuo utilizado em cada linha
de comando existente entre o primeiro se e o senao e entre o senao e o fimse, e também
entre o segundo se...senao...fimse. Perceba que para cada se iniciado dentro de um
senao ou de um entao, deverá ser inserido um novo recuo de mais 2 espaços.
Algoritmos com VisuAlg 36
Exemplo 1:
Criar uma lógica condicional para o problema a seguir:
Nota Situação
de 60 para cima aluno aprovado
de 40 até 59 aluno em recuperação
abaixo de 40 aluno reprovado
leia(nota)
se nota >= 60 entao
escreval("O aluno está aprovado!")
aprovado <- aprovado + 1
senao
se nota >= 40 entao
escreval("O aluno em recuperação!")
recuperacao <- recuperacao + 1
senao
escreval("O aluno está reprovado!")
reprovado <- reprovado + 1
fimse
fimse
Neste exemplo, se a nota digitada for maior ou igual a 60, serão executados somente os
comandos escritos entre o primeiro entao e o senao:
escreval("O aluno está aprovado!")
aprovado <- aprovado + 1
Mas se a nota digitada for menor que 60, aí é iniciada uma nova estrutura condicional.
Nesta nova estrutura condicional, se a nota for maior ou igual a 40 (lembre-se que a linha
de comando chegou até aqui porque a nota é menor que 60, então não há necessidade
de testar novamente se a nota é menor que 60, ou seja, neste caso, testar se a nota >=
40 é o mesmo que testar se (nota >= 40) e (nota < 60)), serão executadossomete
os comandos escritos entre o segundo se e o segundo senao:
escreval("O aluno em recuperação!")
recuperacao <- recuperacao + 1
Mas se a nota digitada for menor que 40, serão executados somete os comandos escritos
entre o segundo senao e o fimse escrito logo em seguida.
escreval("O aluno está reprovado!")
reprovado <- reprovado + 1
Exercícios (parte 1):
Exercício 1 - Fazer um algoritmo no VisuAlg que receba via teclado o Nome do Aluno, a
Nota1, a Nota2 e a Nota3. O programa deverá calcular e imprimir a média e o desempe-
nho do aluno baseando-se nas seguintes regras:
• média de 7 para cima => aluno aprovado
• média de 4 para baixo => aluno reprovado
• média entre 4.1 e 6.9 => aluno em recuperação
Algoritmos com VisuAlg 37
Exercício 2 – Faça um algoritmo no VisuAlg para calcular e imprimir o Bônus Salarial e o
Desconto de Vale Transporte para um empregado da Empresa ABCDário LTDA. O progra-
ma deverá receber via teclado o Tempo de Casa e o Salário do Empregado e considerar:
Tempo de Casa Salário Bônus Vale Transporte
Até 5 anos Até R$300,00 R$50,00 5% do Salário
Até 5 anos Acima de R$300,00 R$80,00 6% do Salário
De 6 a 10 anos Até R$500,00 15% do Salário R$70,00
De 6 a 10 anos Acima de R$500,00
até R$2000,00
13% do Salário R$90,00
De 6 a 10 anos Acima de R$2000,00 12% do Salário 8% do Salário
Acima de 10 anos ------------ R$300,00 4% do Salário
Algoritmos com VisuAlg 38
ESTRUTURAS DE REPETIÇÃO-
(LAÇO OU LOOP)
As estruturas de repetição são utilizadas quando um conjunto de comandos precisa ser
executado mais de uma vez. Sendo assim, ao invés de escrever várias vezes um mesmo
comando, ele deverá ser escrito somente uma vez dentro de uma estrutura de repetição.
A estrutura de repetição é que ficará encarregada em executar o comando várias vezes.
Exemplo 1:
Imagine que você vai solicitar a um usuário que digite o nome de 3 alunos. A forma incor-
reta para isto seria escrever 3 vezes o comando de entrada de dados:
escreva("Digite o nome do aluno 1: ")
leia(nomeAluno)
escreva(" Digite o nome do aluno 2: ")
leia(nomeAluno)
escreva(" Digite o nome do aluno 3: ")
leia(nomeAluno)
Por outro lado, a forma correta para isto seria escrever uma única vez o comando de entrada
de dados dentro de uma estrutura de repetição que fará com que ele seja executado 3 vezes:
numAluno <- 1
enquanto numAluno <= 3 faca
escreva(" Digite o nome do aluno: ")
leia(nomeAluno)
numAluno <- numAluno + 1
fimenquanto
Neste exemplo acima os comandos leia e escreva serão executados 3 vezes mas foram
escritos somente 1 vez. Para controlar o número de repetições, foi criada uma variável
numAluno que será incrementada a partir de 1 até 3 para cada execução dos comandos
escreva e leia.
As estruturas de repetição também são conhecidas nas linguagens de programação como
laço ou loop.
Comando enquanto...faça
O comando enquanto...faca caracteriza-se por utilizar uma condição que deve ser veri-
ficada antes de iniciar a repetição. Se a condição for verdadeira, os comandos contidos
dentro da estrutura do loop serão executados repetidamente enquanto a condição perma-
necer verdadeira. Quando a condição se tornar falsa os comandos que estão dentro do
loop não serão mais executados e a repetição é encerrada, e o programa segue executan-
do os comandos após a repetição, ou seja, fora do loop. Se a condição for falsa desde a
primeira verificação, os comandos não serão executados nenhuma vez.
Sintaxe:
enquanto condição faca
comando1
comando2
comando(n)
fimenquanto
Algoritmos com VisuAlg 39
Exemplo 1:
Imprimir na tela os números inteiros de 1 a 5:
algoritmo "ExemploRepeticaoEnquanto1"
var
contador: inteiro
inicio
contador <- 1
enquanto contador <= 5 faca
escreval(contador)
contador <- contador + 1
fimenquanto
fimalgoritmo
Explicação passo a passo do exemplo 1:
Inicialmente o contador recebe
valor 1.
Agora a condição será verifi-
cada e neste momento ela é
verdadeira
Em seguida comando escreval
será executado e o valor 1 será
exibido na tela.
Na execução desta linha o
contador será incrementado em
1. Ou seja, passará a valer 2.
Algoritmos com VisuAlg 40
Exemplo 2:
Dada a altura e a largura de um retângulo, calcular e imprimir a área. Em seguida, por
5 vezes incrementar 2 na altura e decrementar 1 na largura, e em cada uma das vezes
calcular e imprimir novamente a área do retângulo.
algoritmo "Exemplo2 enquanto...faca"
var
area : inteiro
altura: inteiro
largura: inteiro
inicio
altura <- 2
largura <- 6
i <- 1
enquanto i <= 5 faca
area <- altura * largura
escreval("A área é: " , area )
altura <- altura + 2
largura <- largura - 1
i <- i + 1
fimenquanto
fimalgoritmo
Nesta segunda verificação da
condição, o contador agora vale
2, então a condição continua
verdadeira e os comandos serão
executados novamente.
Agora chegou no fimenquanto,
então a condição será verificada
novamente.
Após executar todo o algoritmo
no VisuAlg será exibido na tela o
seguinte resultado:
Exemplo 1:
Imprimir na tela os números inteiros de 1 a 5:
algoritmo "ExemploRepeticaoEnquanto1"
var
contador: inteiro
inicio
contador <- 1
enquanto contador <= 5 faca
escreval(contador)
contador <- contador + 1
fimenquanto
fimalgoritmo
Explicação passo a passo do exemplo 1:
Inicialmente o contador recebe
valor 1.
Agora a condição será verifi-
cada e neste momento ela é
verdadeira
Em seguida comando escreval
será executado e o valor 1 será
exibido na tela.
Na execução desta linha o
contador será incrementado em
1. Ou seja, passará a valer 2.
Algoritmos com VisuAlg 41
Exemplo 3
Faça no VisuAlg um algoritmo para calcular e imprimir a soma dos números pares entre si
até um final que deverá ser informado pelo usuário.
Neste caso, vamos somar os números pares entre si até um valor informado. Supondo
que o valor informado seja 20, a soma seria entre os números:
2 + 4 + 6 + 8 + 10 + 12 + 14 + 16 + 18 + 20
Planejamento do algoritmo:
1º. Declaração de variáveis: Vamos precisar de uma variável para guardar o número par
(numeroPar), uma para receber o valor final informado pelo usuário (valorFinal) e
uma para guardar a soma (somaDosPares)
2º. Entrada de dados: Receber a digitação do valor final para a soma
3º. Cálculos: Fazer a soma dos pares
4º. Saída de Dados: Imprimir a soma calculada
COMANDO REPITA...ATÉ
Se caracteriza por executar a lista de comandos contidos no loop antes de verificar a
condição que é inserida somente no final da estrutura. Após executar os comandos do
loop será verificada a condição. Se a condição for falsa, os comandos que estão dentro
da estrutura de repetição continuam sendo executados. Se a condição for verdadeira, a
repetição é encerrada e o programa segue executando os demais comandos após o final
da repetição, ou seja, fora do loop.
Algoritmos com VisuAlg 42
Sintaxe:
repita
comando1
comando2
comando(n)
ate condição
Exemplo 1:
Imprimir na tela os números inteiros de 1 a 5:
algoritmo "ExemploRepetiçãoRepita1"
var
contador : inteiro
inicio
contador <- 1
repita
escreval(contador)
contador <- contador + 1
ate contador > 5
fimalgoritmo
Explicação passo a passo do exemplo 1
Em seguida comando escreval
será executado e o valor 1 será
exibido na tela.
Na execução desta linha o conta-
dor será incrementado em 1. Ou
seja, passará a valer 2.
Inicialmente o contador recebe
valor 1.
Algoritmos com VisuAlg 43
Exemplo 2:
Dada a altura e a largura de um retângulo, calcular e imprimir a área. Em seguida, por
5 vezes incrementar 2 na altura e decrementar 1 na largura, e em cada uma das vezes
calcular e imprimir novamente a área do retângulo.
algoritmo "Exemplo2 repita...ate"
var
area : inteiro
altura: inteiro
largura: inteiro
inicio
altura <- 2
largura <- 6
Como a condição é falsa, todo o
processo reinicia com a execu-
ção novamente dos comandos
Agora a condição será verificada
e nestre momento ela é falsa. Já
que o contadoragora vale 2 e
não é maior que 15.
Após executar todo o algoritmo
no VisuAlg será exibido na tela o
seguinte resultado:
Todo o processo continua repe-
tindo até que a condição seja
verdadeira. Ou seja, quando o
contador atingir o valor 16.
Algoritmos com VisuAlg 44
i <- 1
repita
area <- altura * largura
escreval("A área é: " , area )
altura <- altura + 2
largura <- largura - 1
i <- i + 1
ate i > 5
fimalgoritmo
Exemplo 3:
Faça no VisuAlg um algoritmo para calcular e imprimir a soma dos números pares entre si
até um final que deverá ser informado pelo usuário.
Neste caso, vamos somar os números pares entre si até um valor informado. Supondo
que o valor informado seja 20, a soma seria entre os números:
2 + 4 + 6 + 8 + 10 + 12 + 14 + 16 + 18 + 20
Planejamento do algoritmo:
1. Declaração de variáveis: Vamos precisar de uma variável para guardar o número par
(numeroPar), uma para receber o valor final informado pelo usuário (valorFinal) e
uma para guardar a soma (somaDosPares)
2. Entrada de dados: Receber a digitação do valor final para a soma
3. Cálculos: Fazer a soma dos pares
4. Saída de Dados: Imprimir a soma calculada
Algoritmos com VisuAlg 45
Comando para...faça
Caracteriza-se por repetir um conjunto de comandos uma quantidade de vezes pré-defi-
nida. O loop é encerrado quando as repetições já tiverem ocorrido a quantidade de vezes
pré-determinada, ou seja, quando a condição assumir o valor falso.
Sintaxe:
para variável de valor_inicial ate valor_final [passo valor]
faca
comando1
comando2
comando(n)
fimpara
OBSERVAÇÃO
• A variável deverá ser uma variável inteira que será utilizada para controlar o número
de repetições.
• O valor_inicial é o valor inicial que a variável assumirá antes da primeira execu-
ção dos comandos.
• O valor_final é o valor limite que a variável assumirá, e quando ele ocorrer será o
fim do comando para...faca.
• O [passo valor] é opcional e indica o valor o qual a variavel será incrementada ou
decrementada após cada execução dos comandos (comando1, comando2, ...).
• Se desde o início da primeira repetição o valor_inicial for maior que o valor_final
(ou menor quando o passo for negativo) os comandos não serão executados nenhuma vez.
• Se valor for positivo a variável será incrementada, se for negativo a variável será
decrementada.
• Se [passo valor] não for utilizado, variável será incrementada em 1 após cada execu-
ção dos comandos (comando1, comando2,...).
Exemplo 1:
Imprimir na tela os números inteiros de 1 a 5:
algoritmo "ExemploRepetiçãoRepita1"
var
contador : inteiro
inicio
para contador de 1 ate 15 faca
escreval(contador)
fimpara
fimalgoritmo
Explicação passo a passo do Exemplo 1:
Neste caso o contador é inicia-
lizado com o valor 1 na própria
linha do comando para...faca
Algoritmos com VisuAlg 46
Em seguida comando escreval
será executado e o valor 1 será
exibido na tela, já que o conta-
dor foi inicializado com 1.
Ao chegar em fimpara a linha de
comando volta para o início e o
contador será incrementado.
Como o passo não foi informa-
do, o contador será incremen-
tado em 1, e passará então a
valer 2.
Todo o processo continua repe-
tindo ate o contador atingir o
valor limite que é 15. Após isto
o para ... faca será finalizado e
o contador estará armazenando
o valor 16.
Após executar todo o algoritmo
no VisuAlg será exibido na tela o
seguinte resultado:
Algoritmos com VisuAlg 47
Exemplo 2:
Dada a altura e a largura de um retângulo, calcular e imprimir a área. Em seguida, por
5 vezes incrementar 2 na altura e decrementar 1 na largura, e em cada uma das vezes
calcular e imprimir novamente a área do retângulo.
algoritmo "Exemplo2 Para...faca"
var
area: inteiro
altura: inteiro
largura: inteiro
i: inteiro
inicio
altura <- 2
largura <- 6
para i de 1 ate 5 faca
area <- altura * largura
escreva("A Área é: " , area )
altura <- altura + 2
largura <- largura - 1
fimpara
fimalgoritmo
Se precisarmos utilizar o para...faca com passo negativo, ou seja, ao invés do contador
ser incrementado em cada execução do loop ele será decrementado, segue o Exemplo 2
com a mesma lógica, porém utilizando passo negativo.
algoritmo "Exemplo2 Para...faca"
var
area: inteiro
altura: inteiro
largura: inteiro
i: inteiro
inicio
altura <- 2
largura <- 6
para i de 5 ate 1 passo -1 faca
area <- altura * largura
Tela de execução do algoritmo
no VisuAlg para exibir o valor
do contador após o encerra-
mento do para... faca
Algoritmos com VisuAlg 48
escreva("A Área é: " , area )
altura <- altura + 2
largura <- largura - 1
fimpara
fimalgoritmo
Exemplo 3:
Faça no VisuAlg um algoritmo para calcular e imprimir a soma dos números pares entre si
até um final que deverá ser informado pelo usuário.
Neste caso, vamos somar os números pares entre si até um valor informado. Supondo
que o valor informado seja 20, a soma seria entre os números:
2 + 4 + 6 + 8 + 10 + 12 + 14 + 16 + 18 + 20
Planejamento do algoritmo:
1. Declaração de variáveis: Vamos precisar de uma variável para guardar o número par
(numeroPar), uma para receber o valor final informado pelo usuário (valorFinal) e
uma para guardar a soma (somaDosPares)
2. Entrada de dados: Receber a digitação do valor final para a soma
3. Cálculos: Fazer a soma dos pares
4. Saída de Dados: Imprimir a soma calculada
OBSERVAÇÃO
Neste exemplo acima, como o passo é 2 o incremento a cada repetição será de 2 em 2.
Algoritmos com VisuAlg 49
Comparação entre o enquanto...
faca, repita...ate e para...faca
O enquanto...faca deve ser utilizado em situações onde os comandos da repetição só
devem ser executados se a condição da repetição for verdadeira antes de iniciar o loop.
O repita...ate deve ser utilizado em situações onde os comandos da repetição devem ser
executados pelo menos uma vez independente se a condição da repetição é verdadeira
ou falsa.
O para...faca deve ser utilizado em situações onde o número de repetições é previamente
conhecido e não há condições para que estas repetições ocorram, elas simplesmente
devem ocorrer em uma quantidade de vezes pré-determinada .
O quadro abaixo contém uma mesma lógica escrita com cada um dos três comandos de
repetição estudados. Desta forma podemos comparar as diferenças de sintaxe entre eles:
Algoritmo "enquanto...faca"
var
area: inteiro
altura: inteiro
largura: inteiro
i: inteiro
inicio
altura <- 2
largura <- 6
i <- 1
enquanto i <= 5 faca
area <- altura *
largura
escreval(area)
altura <- altura + 2
largura <- largura - 1
i <- i + 1
fimenquanto
fimalgoritmo
Algoritmo "repita...ate"
var
area: inteiro
altura: inteiro
largura: inteiro
i: inteiro
inicio
altura <- 2
largura <- 6
i <- 1
repita
area <- altura *
largura
escreval(area)
altura <- altura + 2
largura <- largura - 1
i <- i + 1
ate i > 5
fimalgoritmo
Algoritmo "para...faca"
var
area: inteiro
altura: inteiro
largura: inteiro
i: inteiro
inicio
altura <- 2
largura <- 6
para i de 1 ate 5 faca
area <- altura *
largura
escreval(area)
altura <- altura + 2
largura <- largura - 1
fimpara
fimalgoritmo
Uso de Estrutura de Repetição para fazer
consistência na Entrada de Dados
Quando um programa solicita ao usuário que digite um dado, o mesmo digitará o valor
que bem entender. Entretanto, a maior parte dos dados possuem uma faixa limitada de
valores válidos. Como por exemplo a idade de uma pessoa. Nenhuma pessoa poderia ter
idade negativa, assim como também não seria possível uma pessoa ter 200 anos. Desta
forma, para evitar que usuários digitem na entrada de dados valores impossíveis ou invá-
lidos, devemos validar, ou consistir, a digitação.
A consistência na entrada de dados é uma forma de não aceitar valores impossíveis ou
inválidos digitados pelo usuário.
Para criar esta consistência, utiliza-se uma estrutura de repetição do tipo:repita
<entrada de dados>
até <valor digitado> = <válido>
Ou seja, a estrutura de repetição garantirá que o programa seguirá em frente somente
após o valor digitado ser válido.
Algoritmos com VisuAlg 50
Exemplo de lógica de validação com o comando repita...ate:
repita
escreva("Digite o idade do aluno: ")
leia(idade)
se (idade < 0) ou (idade > 150) entao
escreval("Erro ! Digite idade entre 0 e 150")
fimse
ate (idade >=0) e (idade <= 150)
Nesta lógica, o usuário será repetidamente solicitado que digite a idade do aluno até que
o valor digitado esteja entre 0 e 150.
O comando repita..ate é o que melhor se encaixa na lógica de repetição para a
consistência já que só testa a condição após ter executado todo o conjuto de coman-
do pelo menos uma vez. Entretanto, a lógica também pode ser feita com o comando
enquanto...faca:
idade <- 151
enquanto (idade < 0) ou (idade > 150) faca
escreva("Digite o idade do aluno: ")
leia(idade)
se (idade < 0) ou (idade > 150) entao
escreval("Erro ! Digite idade entre 0 e 150")
fimse
fimenquanto
A desvantagem do enquanto..faca é a necessidade em inicializar a variável que receberá a
digitação com um valor inválido, caso contrário a condição do enquanto será falsa desde
o início e não seriam executados os comandos escritos entre o enquanto e o fimenquanto.
Como interromper uma estrutura de repetição?
O comando interrompa finaliza qualquer uma das estruturas de repetição, fazendo com
que a execução do programa prossiga a partir da primeira linha após o final do comando
de repetição
para i de 1 ate 5 faca
escreva("Digite a idade do empregado: ")
leia(idade)
se idade = 0 entao
interrompa
fimse
escreva("Digite o sexo do empregado: ")
leia(sexo)
fimpara
Neste exemplo acima, apesar do comando para utilizar o contador i que varia de 1 a 5,
ou seja, a lógica existente entre o para e o fimpara será executada 5 vezes, se o valor
digitado na variável idade for zero, o para será finalizado pelo comando break, e a
próxima linha de comando a ser executada será a que existir após a chave } de fecha-
mento do for.
Repetição com uso de Flag para
finalizar uma Entrada de Dados
O flag é uma informação chave a ser informada pelo usuário para indicar que não há mais
dados a serem digitados na entrada de dados. Esta chave indica então que a repetição do
comando de entrada de dados deve ser encerrada.
Algoritmos com VisuAlg 51
O flag é util em situações onde o número de informações a ser digitada pelo usuário é
variável, ou não previsível, e por isto há como criar uma condição pré-definida para encer-
rar a entrada de dados. Como por exemplo o uso de um contador para controlar que a
repetição ocorra um determinado número de vezes.
Desta forma, o flag indicará o momento de finalizar uma repetição por meio do comando
interrompa.
Exemplo:
Receber via teclado o nome e a nota dos alunos de uma turma. Ao final imprimir a média
de notas da turma.
Neste caso não sabemos quantos alunos existem na turma, então não há como prever
quantas vezes teremos que repetir a entrada de dados. Uma solução seria, por exemplo,
solicitar ao usuário digite o nome de aluno = FIM para encerrar a entrada de dados:
algoritmo "Exemplo flag"
var
nomeAluno: caracter
nota: inteiro
somaNotas: inteiro
contador: inteiro
inicio
repita
escreva("Digite o nome do aluno (FIM p/ encerrar):")
leia(nomeAluno)
se nomeAluno = "FIM" entao
interrompa
fimse
escreva("Digite a nota do aluno: ")
leia(nota)
somaNotas <- somaNotas + nota
contador <- contador + 1
ate nomeAluno = "FIM"
escreval("Média das notas: ", somaNotas / contador)
fimalgoritmo
OBSERVAÇÃO
O teste do flag deve ser feito logo após a digitação do valor a ser testado.
O comando interrompa finaliza a repetição, com isto, a próxima linha a ser executada depois
dele será a linha após ate nomeAluno = "FIM"
Repetição com uso de Consistência
e Flag na Entrada de Dados
Exemplo :
Receber via teclado o nome e a nota dos alunos de uma turma. Ao final imprimir a média
de notas da turma.
consistência: aceitar somente notas com valor entre 0 e 10.
Algoritmos com VisuAlg 52
Observação: adotar o nome de aluno = FIM para encerrar a entrada de dados.
inicio
repita
// entrada de dados
escreva("Digite o nome do aluno (FIM p/ encerrar): ")
leia(nomeAluno)
se nomeAluno = "FIM" entao
interrompa
fimse
repita
escreva("Digite a nota do aluno: ")
leia(nota)
se (nota < 0) ou (nota > 10) entao
escreval("Erro ! Digite nota entre 0 e 10")
fimse
ate (nota >= 0) e (nota <= 10)
// cálculos
somaNotas <- somaNotas + nota
contador <- contador + 1
ate nomeAluno = "FIM"
escreval("Média das notas: ", somaNotas / contador)
Neste exemplo o primeiro repita...ate repetirá a entrada de dados e os cálculos para
cada aluno informado, até que o nome FIM seja digitado.
Já o segundo repita...ate (que foi escrito dentro do anterior) repetirá a digitação da
nota de um aluno até que o valor digitado seja válido (entre 0 e 10)
Desta forma, temos duas estruturas de repetição aninhadas, ou seja, uma repetição
dentro de outra repetição.
Exercício (parte 2):
Exercício 1 – Fazer um programa em Java para receber via teclado a ALTURA em metros
e o SEXO dos atletas de uma delegação. O programa deverá calcular e imprimir:
• a maior altura encontrada
• a menor altura encontrada
• o número de atletas do sexo feminino
• a média da altura masculina
• a média geral das alturas.
Observação:
• adotar um flag para encerrar a entrada de dados
• consistir os valores digitados na entrada de dados de maneira que só poderão ser
aceitos:
- SEXO = M ou F;
- ALTURA maior que zero e menor ou igual a 2,5 metros;
Exercício 2 - Em uma Fábrica trabalham empregados divididos em 3 classes: A, B e C.
Fazer um programa em Java que receba via teclado o CÓDIGO DO OPERÁRIO (inteiro), a
CLASSE do operário (caracter 1 posição) e o NÚMERO DE PEÇAS FABRICADAS no mês
Algoritmos com VisuAlg 53
(inteiro). Em seguida o programa deverá calcular e imprimir o salário dos empregados
considerando a tabela a seguir:
Classe Peças fabricadas no mês Calculo do Salário
A até 30 R$500,00 + R$2,00 por peça fabricada
A de 31 a 40 R$500,00 + R$2,30 por peça fabricada
A acima de 40 R$500,00 + R$2,80 por peça fabricada
B - R$1.200,00
C Até 50 R$ 40,00 por peça fabricada
C acima de 50 R$ 45,00 por peça fabricada
Ao final, o programa deverá imprimir:
• Total gasto pela empresa com o pagamento de salários
• Número total de peças fabricadas
• Código do Operário que fabricou o menor número de peças
• Média de quantidade de peças fabricadas por empregados da classe B
Observação:
• adotar o flag Código de Operário = 0 (zero) para encerrar a entrada de dados
• consistir os seguintes valores digitados na entrada de dados:
- NÚMERO DE PEÇAS deverá ser maior que zero
- CLASSE deverá ser A, B ou C
Algoritmos com VisuAlg 54
ESTRUTURAS HOMOGÊNEAS
DE DADOS
O que seria uma estrutura homogênea
de dados?
É uma estrutura capaz de armazenar um conjunto de dados homogêneos, ou seja, dados
do mesmo tipo.
Por exemplo:
• os nomes de 20 pessoas
• os salários de 200 empregados
• as datas de nascimento de 40 pessoas
• e outros...
Existem dois tipo de estruturas homogêneas de dados, os vetores e as matrizes. A dife-
rença entre elas é que o vetor é uma estrutura unidimensional, ou seja, armazena dados
em apenas uma dimensão. Já as matrizes pode ser bidimensionais ou tridimensionais.
Se um conjunto de dados for heterogêneo não poderia ser armazenado em um vetor ou
uma matriz.
Exemplo de conjunto de dados heterogêneos:
• nome, endereço, idade e sexo de um aluno;
• nome, cargo, salário e formação de um empregado
Um vetor ou matriz não poderia armazenar estes dados porque são tipos diferentes de
dados. Entretanto, um vetor ou matriz poderiaarmazenar por exemplo um conjunto de
só de nomes, ou um conjunto só de endereços, ou um conjunto só de idades de alunos.
Desta forma, sempre que for necessário armazenar um conjunto de dados homogêneos,
ao invés de criar um conjunto de variáveis (uma para armazenar cada valor), deverá ser
criado um único vetor ou matriz que armazenará todos os dados
Em variáveis de memória só é possível armazenar um único valor por vez. Considere por
exemplo um programa que precisa armazenar as notas de 5 provas realizadas por um
aluno. Uma opção para isto seria criar cinco variáveis para armazenar as notas, uma para
cada nota. Por exemplo:
nota1, nota2, nota3, nota4, nota5 : inteiro
No entanto, esta não é a melhor maneira para trabalhar estes dados pois como se tratam
de 5 variáveis diferentes, com nomes diferentes, necessitariam também 5 comandos
diferentes de entrada de dados para recebê-los e também 5 estruturas de cálculo para
manipulá-los. Sendo assim, a melhor opção seria criar um único vetor contendo 5 posi-
ções de armazenamento, uma para cada valor.
Vetores
O vetor também podem ser chamado de matriz unidimensional. Ou seja, conjunto de
dados com a penas uma dimensão.
Algoritmos com VisuAlg 55
Para utilizar um vetor em um algoritmo ele deverá ser declarado de forma similar a decla-
ração de uma variável.
Sintaxe de declaração de um vetor:
var
nomeVetor : vetor [valor1..valor2] de tipoVetor
O nome dado ao Vetor (nomeVetor) segue as mesmas regras de nomes de variáveis. Na
declaração também deverá ser informado o número de elementos que ele armazenará.
Este número é dado pala variação do valor1 até o valor2, que devem ser valores intei-
ros e positivos. O vetor também deverá ter associado a ele um tipo de dado. Desta forma
o tipoVetor deverá ser um dos tipos: inteiro, real, caracter ou lógico.
Exemplo 1:
var
notasAlunos : vetor [1..15] de real
No exemplo acima:
• notasAlunos é o nome do vetor;
• [1..15] indica que o vetor armazenará até 15 notas diferentes, e cada nota terá um
índice de localização dentro do vetor que inicia em 1 e termina em 15;
• de real indica que o tipo do vetor é real, ou seja, cada valor armazenado será do
tipo real;
Imagine este vetor acima como um conjunto de caixinhas numeradas de 1 a 15, cada
uma delas armazenará uma nota, ou seja, o vetor notasAlunos começa na posição 1 e
termina na posição 15, total de 15 itens:
Posições do vetor 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
notasAlunos 6 8 5 6 9 1 2 5 8 6 1 10 9 10 5
Neste exemplo a nota de valor 6 foi armazenada no vetor na posição 1, a nota 8 foi arma-
zenada na posição 2, a nota 5 foi armazenada na posição 3, e assim em diante.
OBSERVAÇÃO
Uma variável somente pode conter um valor por vez, já os vetores podem armazenar mais de
um valor por vez, pois são dimensionados exatamente para este fim.
Exemplo 2:
var
nomesAlunos : vetor [0..5] de caracter
No exemplo acima:
Imagine este vetor como um conjunto de caixinhas numeradas de 0 a 5, cada uma delas
armazenará uma nome:
Posições do vetor 0 1 2 3 4 5
notasAlunos JOSÉ MÁRCIA PEDRO SILVIA SANDRA JORGE
Neste exemplo o nome JOSE foi armazenado no vetor na posição 1, o nome MARCIA foi
armazenado na posição 2, o nome PEDRO foi armazenado na posição 3, e assim em diante.
Algoritmos com VisuAlg 56
Atribuindo valores ao vetor por meio de comando de atriuição:
A atribuição ou a exibição de valores contidos nos vetores é feita indicando a posição do
vetor entre colchetes. Exemplo:
var
notas: vetor [0..4] de real
inicio
notas[0] <- 5.2
notas[1] <- 8.0
notas[2] <- 9.2
notas[3] <- 7.5
notas[4] <- 8.3
O nome do vetor é sempre o mesmo, o que muda de uma atribuição para outra em um
mesmo vetor é a informação indicada dentro dos colchetes, ou seja, o índice ou posição
do vetor que representa a posição dentro do vetor onde o valor será armazenado. Para o
exemplo anterior teríamos:
notas
0 1 2 3 4 => índice ou posição no vetor
5.2 8.0 9.2 7.5 8.3 => conteúdo de cada posição
Atribuindo ao vetor valores digitados por um usuário (Entrada de Dados)
Exemplo 1:
var
notasAlunos: vetor [1..15] de real
contador: inteiro
inicio
para contador de 1 a 15 faca
escreva("Digite a nota ",contador,": ")
leia(notasAluno[contador])
fimpara
Neste exemplo a variável contador que controla o número de repetições do para...
faca é que será usada para indicar o índice do vetor onde o dado será armazenado.
Exemplo 2:
Imagine uma situação onde você precisa receber e armazenar o nome e a nota de 10
alunos de uma turma. Ao invés de criar 10 variáveis para armazenar os nomes e outras
10 para armazenar as notas, vamos criar dois vetores com 10 posições cada um. Um para
armazenar as notas e outro para armazenar os nomes:
nomes notas
1 Marcelo 8
2 Sandra 2
3 Regina 9
4 Pedro 5
5 Beatriz 3
6 Alberto 7
7 Juarez 9
8 Márcia 10
9 Fernanda 5
10 Cesar 10
Algoritmos com VisuAlg 57
var
nomes: vetor [1..10] de caracter
notas: vetor [1..10] de inteiro
x: inteiro
inicio
para x de 1 a 10 faca
escreva("Digite o nome do aluno ",x,": ")
leia(nomes[x])
escreva("Digite a nota do aluno ",x,": ")
leia(notas[x])
fimpara
No exemplo acima, quando x valer 1, será armazenada o nome digitado na posição 1 do
vetor nomes, e a nota digitada na posição 1 do vetor notas. Depois o x passa a valer 2,
e assim por diante.
Exercício resolvido:
Faça um algoritmo que receba via teclado as notas dos 40 alunos de uma turma. O
algoritmo deverá calcular e imprimir a média de notas da turma e o número de alunos que
tiraram nota acima da média da turma.
Neste caso, primeiramente deveremos receber as notas para calcular a média da turma.
Depois disto é que poderemos comparar cada nota com a média e contar quantas são
acima da média. Para fazer esta comparação as notas deverão estar armazenadas em
memória.
Ao invés de criarmos 40 variáveis para armazenar as 40 notas, criaremos um vetor com
40 posições.
Planejamento do Algoritmo:
1. Declaração de variáveis:
• notas (40), contador, somaNota, mediaNota, quantAcimaMédia
2. Entrada de dados:
• receber as 40 notas
3. Cálculos:
• somar as notas
• calcular a média das notas
• calcular quantas notas acima da média
4. Saída de dados:
• imprimir quantas notas acima da média
Algoritmos com VisuAlg 58
Matrizes
A matriz é uma estrutura homogênea de dados com mais de uma dimensão. Na maio-
ria das vezes as matrizes são bidimensionais, mas algumas linguagens de programação
permitem 3 ou mais dimensões.
Em que situações devemos utilizar uma matriz para armazenar dados?
Quando precisamos armazenar um conjunto de dados homogêneos , ou seja, do mesmo
tipo, e há mais de uma dimensão de informação.
Exemplo 1:
Usando o mesmo exemplo do início deste capítulo, vamos supor que agora será necessá-
rio armazenar 3 notas de 5 alunos nas 3 disciplinas: Cálculo, Lógica e Física. Uma opção
seria criar tres vetores com 5 itens, um para cada disciplina. Entretanto, esta não é a
melhor solução já que seria necessário criar uma estrutura de controle para controlar cada
vetor. A melhor opção seria criar uma única matriz de duas dimensões para armazenar
cada uma das 3 notas dos 5 alunos:
• dimensão aluno
• dimensão disciplina
Cálculo Lógica Física
Aluno 1 76 72 82
Aluno 2 45 57 61
Aluno 3 65 69 70
Aluno 4 78 70 65
Aluno 5 60 68 61
Algoritmos com VisuAlg 59
Neste exemplo, as linhas representam os alunos, e as colunas representas as disciplinas,
a nota de cálculo do Aluno 2 é 45, ou seja, a nota 45 foi armazenada na linha 2 e coluna
1 da matriz. E a nota de Física do Aluno1 é 82, ou seja, a nota 82 foi armazenada na
linha 1 e coluna 3.
Como declarar uma Matriz?
Para declarar matrizes é da mesma forma que a declaração de vetores diferenciando-se
apenas no número de dimensões, já que o vetor possui apenas uma dimensão e matrizes
possuem 2 ou mais dimensões. No caso de uma matriz de 2 dimensões, a primeira dimen-
são indica o númerode linhas e a segunda o número de colunas.
Sintaxe de declaração de uma matriz:
nomeMatriz : vetor [linha1..linha, coluna1...coluna2] de
tipoMatriz
• O nome dado a matriz (nomeMatriz) segue as mesmas regras de nomes de variáveis.
• linha1...linhas2 indica o número de linhas da matriz, que devem ser valores inteiros
e positivos.
• coluna1...coluna2 indica o número de colunas da matriz, que devem ser valores
inteiros e positivos
• O tipoMatriz será um dos tipos de dados: inteiro, real, caracter ou lógico.
Exemplo de declaração de uma matriz:
var
notas : vetor [1..5,1..3] de real
• notas é o nome da matriz;
• vetor indica que se trata de uma estrutura homogênea de dados;
• [1..5] indica que o número de linha da matriz;
• [1..3] indica que o número de colunas da matriz;
• de real indica que o tipo do vetor é real, ou seja, cada valor armazenado será do
tipo real;
Como atribuir um valor para uma
posição da matriz?
var
notas: vetor [1..5,1..3] de real
inicio
notas[1,1] <- 76
notas[1,2] <- 72
notas[2,1] <- 45
notas[3,3] <- 75
notas[4,2] <- 70
Algoritmos com VisuAlg 60
Nota1 Nota2 Nota3
Aluno 1 76 72
Aluno 2 45
Aluno 3 75
Aluno 4 70
Aluno 5
O comando de atribuição <- pode ser utilizado para atribuir um valor a uma posição de
uma matriz, de forma similar a atribuição de valor a uma variável.
A matriz utiliza dois índices de controle, o primeiro para indicar a linha e segundo para
indicar a coluna de localização do dado.
A posição de um dado na matriz sempre deverá ser informada, entre colchetes, contendo
a linha e a coluna de localização do dado.
Preenchendo uma matriz com valores digitados pelo usuário (Entrada de Dados)
Exemplo:
algoritmo "preenchendo matriz com entrada de dados"
var
notas: vetor [1..5,1..3] de real
linha: inteiro
coluna: inteiro
inicio
para linha de 1 a 5 faca
para coluna de 1 a 3 faca
escreva("Digite a nota",coluna,"do aluno", linha)
leia(notas[linha,coluna])
fimpara
fimpara
fimalgoritmo
No exemplo acima a variável linha controla o índice das linhas da matriz e a variável
coluna controla o índice das colunas.
Exercício Resolvido:
Faça um algoritmo que receba via teclado uma matriz 4x5. O algoritmo deverá somar
e imprimir os elementos de cada linha e como resultado final imprimir a soma total dos
elementos da matriz.
Neste caso, deveremos receber os dados da matriz linha a linha para ir calculando e impri-
mindo as somas por linha.
1 2 3 4 5 soma
1 8 2 5 7 1 23
2 7 1 6 0 3 17
3 2 10 5 3 9 29
4 6 8 5 9 10 38
Soma total = 107
Planejamento do Algoritmo:
1. Declaração de variáveis:
• numeros(4x5), linha, coluna, somaLinha, somaTotal
Algoritmos com VisuAlg 61
FI
CH
A
T
ÉC
N
IC
A FUMEC VIRTUAL - SETOR DE
EDUCAÇÃO A DISTÂNCIA
Gestão Pedagógica
Coordenação
Gabrielle Nunes Paixão
Produção de
Design Multimídia
Coordenação
Rodrigo Tito M. Valadares
Design Multimídia
Raphael Gonçalves Porto Nascimento
Infra-Estrututura e Suporte
Coordenação
Anderson Peixoto da Silva
AUTORIA
Prof. Air Rabelo
BELO HORIZONTE - 2014
2. Entrada de dados:
• receber a matriz numeros linha por linha
3. Cálculos:
• somar os números das linhas
• acumular as somas das linhas para ter a soma total
4. Saída de dados:
• imprimir as somas por linha
• imprimir a soma total