Anda di halaman 1dari 84

ALGORITMOS E LGICA

DE PROGRAMAO
Curso Tcnico de Nvel Mdio em Informtica

Goinia / 2013
ORGANIZAO DO MATERIAL
Prof. Sidney Martins Pereira Arruda

REVISO E ADAPTAO
Prof. Jos Carlos Cordeiro e Silva

FORMATAO
Prof. Jos Carlos Cordeiro e Silva

Esta Apostila compe-se da compilao


de textos extrados das obras citadas nas
Referncias Bibliogrficas com algumas
alteraes e adaptaes necessrias a sua
organizao.

FEVEREIRO 2013
SUMRIO
1. ALGORITMOS E ESTRUTURAS DE DADOS ......................................................................... 1
1.1. ALGORITMOS ................................................................................................................................... 1
1.2. PROGRAMA....................................................................................................................................... 2
1.3. SISTEMA ............................................................................................................................................ 2
1.4. SOFTWARE ........................................................................................................................................ 3
1.5. LINGUAGEM DE PROGRAMAO ............................................................................................... 3
1.6. LGICA DE PROGRAMAO ........................................................................................................ 4
1.7. ESTRUTURA BSICA DE UM ALGORITMO ................................................................................ 5
1.8. PROBLEMAS DE NARRATIVA ....................................................................................................... 5
2. CONSTANTES E VARIVEIS .................................................................................................. 6
2.1. CONSTANTES ................................................................................................................................... 6
2.1.1. TIPOS DE CONSTANTES ................................................................................................................. 7
2.1.2. SINTAXE ............................................................................................................................................ 7
2.2. VARIVEIS ........................................................................................................................................ 7
2.2.1. TIPOS DE VARIVEIS ..................................................................................................................... 8
2.2.2. TIPOS DE VARIVEIS ..................................................................................................................... 9
2.2.3. DECLARANDO VARIVEIS ........................................................................................................... 9
2.2.4. APRENDENDO A DECLARAR VARIVEIS................................................................................ 10
2.3. COMENTANDO ALGORITMOS .................................................................................................... 11
2.4. COMANDO DE ATRIBUIO ....................................................................................................... 11
3. OPERADORES ..........................................................................................................................13
3.1. EXPRESSES ARITMTICAS ....................................................................................................... 13
3.1.1. HIERARQUIA DAS OPERAES ARITMTICAS (PRECEDNCIA) ....................................... 13
3.1.2. OPERADORES ARITMTICOS ..................................................................................................... 13
3.1.3. FUNES ARITMTICAS ............................................................................................................. 14
3.2. EXPRESSES LITERAIS ................................................................................................................ 15
3.2.1. OPERADORES LITERAIS .............................................................................................................. 15
3.2.2. FUNES LITERAIS ...................................................................................................................... 16
3.3. EXPRESSES RELACIONAIS ....................................................................................................... 17
3.3.1. OPERADORES RELACIONAIS ...................................................................................................... 17
3.4. EXPRESSES LGICAS................................................................................................................. 18
3.4.1. OPERADORES LGICOS ............................................................................................................... 18
3.5. PRIORIDADES ENTRE OPERADORES E OPERAES ............................................................. 19
4. ENTRADA E SADA DE DADOS .............................................................................................21
4.1. COMANDOS DE ENTRADA E SADA DE DADOS ...................................................................... 21
4.2. ENTRADA DE DADOS: COMANDO LEIA ................................................................................... 21
4.2.1. SINTAXE DO COMANDO LEIA .................................................................................................... 21
4.3. SADA DE DADOS: COMANDO ESCREVA ................................................................................. 21
4.3.1. SINTAXE DO COMANDO ESCREVA ........................................................................................... 21
5. ESTRUTURAS DE CONTROLE ..............................................................................................22
5.1. ESTRUTURA DE CONTROLE SEQUENCIAL .............................................................................. 22
5.2. ESTRUTURA DE CONTROLE SELEO OU CONDICIONAL .................................................. 23
5.2.1. ESTRUTURA DE CONTROLE CONDICIONAL SIMPLES ......................................................... 23
5.2.1.1. SINTAXE DO COMANDO SE......ENTO ...............................................................................................23
5.2.2. ESTRUTURA DE CONTROLE CONDICIONAL COMPOSTA .................................................... 25
5.2.2.1. SINTAXE DO COMANDO SE...ENTO...SENO...FIM-SE...............................................................25
5.2.3. SELEO ENCADEADA................................................................................................................ 27
5.2.3.1. SINTAXE DO COMANDO SE......ENTO ......SENO SE.....ENTO.... ........................................28
5.2.4. SELEO DE MLTIPLA ESCOLHA........................................................................................... 30
5.2.4.1. SINTAXE DO COMANDO ESCOLHA / CASO / FIM ESCOLHA......................................................30
5.3. ESTRUTURAS DE REPETIO ..................................................................................................... 30
5.3.1. ESTRUTURA DE CONTROLE DE REPETIO .......................................................................... 31
5.3.1.1. SINTAXE DO COMANDO ENQUANTO/FAA/FIM-ENQUANTO .................................................31
5.3.1.2. SINTAXE DO COMANDO REPITA/AT QUE ......................................................................................35
5.3.1.3. SINTAXE DO COMANDO PARA/FAA/FIM-PARA...........................................................................35
5.3.2. FORMAS DE CONTROLE DE UMA REPETIO ....................................................................... 36
5.4. VARIVEL ACUMULADORA ....................................................................................................... 37
6. VETORES E MATRIZES ..........................................................................................................39
6.1. ESTRUTURA DE DADOS COMPOSTA HOMOGNEA .............................................................. 39
6.1.1. VARIVEL COMPOSTA UNIDIMENSIONAL............................................................................. 40
6.1.1.1. VETORES .........................................................................................................................................................40
6.1.1.1.1. DECLARANDO O VETOR ..........................................................................................................................40
6.1.1.1.2. SINTAXE DO VETOR...................................................................................................................................40
6.1.1.1.3. INSERINDO VALORES EM CADA PARTE DO VETOR ....................................................................41
6.1.1.1.4. VETORES X ESPAO ALOCADO NA MEMRIA ..............................................................................41
6.1.1.1.5. MONTANDO O VETOR ...............................................................................................................................41
6.1.1.1.6. PESQUISA EM VETORES ...........................................................................................................................44
6.1.1.1.6.1. PESQUISA SEQUENCIAL ...........................................................................................................................44
6.1.1.1.6.2. PESQUISA BINRIA ....................................................................................................................................44
6.1.2. VARIVEL COMPOSTA MULTIDIMENSIONAL ....................................................................... 46
6.1.2.1. MATRIZES ......................................................................................................................................................46
6.1.2.1.1. DECLARANDO A MATRIZ ........................................................................................................................46
6.1.2.1.2. SINTAXE DA MATRIZ ................................................................................................................................46
6.1.2.1.3. INSERINDO VALORES NA MATRIZ ......................................................................................................47
6.1.2.1.4. MONTANDO A MATRIZ .............................................................................................................................48
6.1.3. TESTE DE MESA ............................................................................................................................. 49
7. BIBLIOGRAFIA ........................................................................................................................53
LISTA DE TABELAS

TABELA 1 ALGORITMO PASSOS PARA CRIAR UM SANDUCHE ......................................................... 4


TABELA 2 OBSERVAES ACERCA DA DECLARAO DE ALGORITMOS .......................................... 9
TABELA 3 IDENTIFICADORES PERMITIDOS X NO-PERMITIDOS ...................................................... 9
TABELA 5 OPERADORES ARITMTICOS ................................................................................................... 13
TABELA 6 UTILIZAO DAS EXPRESSES ARITMTICAS ................................................................... 14
TABELA 7 FUNES ARITMTICAS ........................................................................................................... 14
TABELA 8 UTILIZAO DAS FUNES ARITMTICAS .......................................................................... 15
TABELA 9 OPERADOR LITERAL .................................................................................................................. 15
TABELA 10 UTILIZAO DO OPERADOR LITERAL ................................................................................. 16
TABELA 11 FUNES LITERAIS .................................................................................................................. 16
TABELA 12 UTILIZAO DAS FUNES LITERAIS ................................................................................. 17
TABELA 13 OPERADORES RELACIONAIS ................................................................................................. 17
TABELA 14 UTILIZAO DOS OPERADORES RELACIONAIS ................................................................ 18
TABELA 15 OPERADORES LGICOS ........................................................................................................... 19
TABELA 16 UTILIZAO DOS OPERADORES LGICOS ......................................................................... 19
TABELA 17 ORDEM DE PRIORIDADE ENTRE OS TIPOS DE OPERADORES ......................................... 19
TABELA 18 DECLARAO DE VETORES - PASSO 1 ................................................................................. 32
TABELA 19 DECLARAO DE VETORES - PASSO 3 ................................................................................. 33
TABELA 20 DECLARAO DE VETORES PASSO 4 ................................................................................ 33
TABELA 21 DECLARAO DE VETORES PASSO 6 ................................................................................ 33
TABELA 22 DECLARAO DE VETORES PASSO 7 ............................................................................... 34
TABELA 23 DECLARAO DE VETORES PASSO 8 ............................................................................... 34
TABELA 24 DECLARAO DE VETORES PASSO 9 ............................................................................... 34
TABELA 25 ALOCAO DE VETORES NA MEMRIA ............................................................................ 40
TABELA 26 ESPAO ALOCADO NA MEMRIA PELOS VETORES ......................................................... 41
TABELA 27 ESPAO ALOCADO NA MEMRIA PELOS VETORES ......................................................... 41
TABELA 28 MATRIZES ................................................................................................................................... 47
TABELA 29 ALOCAO DE MATRIZES NA MEMRIA............................................................................ 47
TABELA 30 TESTE DE MESA MATRIZES.................................................................................................. 49
TABELA 31 TESTE DE MESA VARIVEIS ................................................................................................ 49
TABELA 32 TESTE DE MESA INCREMENTO DA VARIVEL LINHA. ................................................. 49
TABELA 33 TESTE DE MESA INCREMENTO DA VARIVEL COLUNA. ............................................. 49
TABELA 34 TESTE DE MESA INSERO DE VALORES NA MATRIZ PESSOAS ............................... 50
TABELA 35 TESTE DE MESA INCREMENTO DA VARIVEL COLUNA. ............................................. 50
TABELA 36 TESTE DE MESA INSERO DE VALORES NA MATRIZ PESSOAS ............................... 50
TABELA 37 TESTE DE MESA INCREMENTO DA VARIVEL COLUNA. ............................................. 50
TABELA 38 TESTE DE MESA INSERO DE VALORES NA MATRIZ PESSOAS ............................... 50
TABELA 39 TESTE DE MESA INCREMENTO DA VARIVEL LINHA. ................................................. 50
TABELA 40 TESTE DE MESA ESTRUTURA DE REPETIO USANDO A VARIVEL COLUNA. .... 51
TABELA 41 TESTE DE MESA INSERO DE VALORES NA MATRIZ PESSOAS. .............................. 51
TABELA 42 TESTE DE MESA INCREMENTO DA VARIVEL LINHA .................................................. 51
TABELA 43 TESTE DE MESA INSERO DE VALORES NA MATRIZ PESSOAS. .............................. 51
TABELA 44 TESTE DE MESA INCREMENTO DA VARIVEL COLUNA .............................................. 51
TABELA 45 TESTE DE MESA INSERO DE VALORES NA MATRIZ PESSOAS............................... 52
LISTA DE FIGURAS

FIGURA 1 FLUXOGRAMA PARA SEQUNCIA DE PASSOS, UM ALGORITMO PARA DECIDIR A


RESPEITO DO DIA, SE SER COM SOL OU NO. ........................................................................................... 1

FIGURA 2 SISTEMA E SEUS SUBSISTEMAS ................................................................................................. 2

FIGURA 3 REPRESENTAO GRFICA DE UMA MATRIZ ...................................................................... 46


GLOSSRIO (TERMOS TCNICOS)

ALGORITMO
Descrio de um conjunto de aes que, quando obedecido, dentro de um padro de
comportamento definido, resulta uma sucesso finita de passos, atingindo-se o objetivo.

PROGRAMA
uma adaptao ou codificao de um algoritmo atendendo as regras de uma linguagem
especfica.

PSEUDOCDIGO (PORTUGOL)
Modelo de representao de algoritmos que utiliza comandos escritos na lngua portuguesa.
Tambm conhecido como portugus estruturado ou portugol.

AO
Fato que, a partir de um estado inicial, aps um perodo de tempo finito, produz um estado
final previsvel e definido.

LGICA
Utilizada para ordenar e corrigir pensamentos ou aes voltados para a soluo de problemas.

FLUXOGRAMA
Modelo de representao que utiliza figuras para representar o fluxo dos dados e os comandos
do algoritmo.

PSEUDOCGICO
Modelo de representao de algoritmos que utiliza comandos escritos na lngua portuguesa.
Tambm conhecido como portugus estruturado ou portugol.

CONSTANTES
Valores inseridos em cada parte da memria do computador, que permanecem os mesmos do
incio ao fim do algoritmo.

CONSTANTES NUMRICAS
Todo e qualquer valor numrico positivo ou negativo.

CONSTANTES LITERAIS
Todo e qualquer valor literal, tambm conhecido por alfanumricos (conjunto composto por
letras, dgitos ou smbolos especiais: -, %, $, etc), que devem ser colocados entre aspas.
CONSTANTES LGICAS
So os valores lgicos verdadeiro e falso.

CONSTANTES LGICAS
So os valores lgicos verdadeiro e falso.

VARIVEIS
Nomes associados a endereos de memria que armazenam valores (constantes).

VARIVEIS NUMRICAS
Variveis que podem receber apenas valores (constantes) numricos.

VARIVEIS LITERAIS
Variveis que podem receber apenas valores (constantes) literais.

VARIVEIS LGICAS
Variveis que podem receber apenas valores (constantes) lgicos.

EXPRESSES LITERAIS
Expresses que utilizam operadores e/ou variveis literais que tm como resultado valores
literais. Diferentemente das expresses aritmticas, as expresses literais aceitam somente o
operador de concatenao.

EXPRESSES RELACIONAIS
Expresses compostas por expresses relacionais com operadores relacionais. As expresses
relacionais retornam valores lgicos.

EXPRESSES LGICAS
Expresses compostas por expresses relacionais com operadores lgicos. As expresses
lgicas retornam valores lgicos.

COMENTRIOS
Informaes auxiliares que facilitam o entendimento do algoritmo.

ESTRUTURA DE CONTROLE SEQUENCIAL OU LINEAR


Estrutura em que um comando executado aps o outro sem nenhum desvio.
ESTRUTURA DE CONTROLE CONDICIONAL SIMPLES
Estrutura que, a partir de uma expresso lgica verdadeira, pode executar um conjunto de
comandos. Tambm conhecida como Decisria ou Alternativa.

ESTRUTURA DE CONTROLE CONDICIONAL SIMPLES


Estrutura que, a partir de uma expresso lgica verdadeira, executa dois diferentes conjuntos
de comandos.

VARIVEL CONTADORA
Varivel que adiciona um valor a cada repetio em uma estrutura de repetio.

VARIVEL ACUMULADORA
Varivel que acumula valores que sero utilizados no trmino da repetio.

FLAG OU MARCA
Tcnica que marca um evento que deve ocorrer com uma varivel para indicar o trmino de
uma repetio.

VETOR
Varivel unidimensional (uma dimenso) que pode armazenar vrias constantes do mesmo
tipo (homognea). Isso permite manipular um conjunto de dados do mesmo tipo sem a
necessidade de se recorrer declarao de muitas variveis.

MATRIZ
Varivel bidimensional (linha e coluna) que armazena vrias constantes do mesmo tipo
(homognea). Isso permite manipular um conjunto de dados do mesmo tipo sem a
necessidade de se recorrer declarao de muitas variveis.

PROGRAMAO ESTRUTURADA
Programao que utiliza tcnicas que decompem a soluo de um problema em blocos que
interagem com um bloco principal. Esse tipo de programao desenvolve
programas/algoritmos confiveis, legveis, de fcil entendimento, flexveis e de fcil
manuteno.
APRESENTAO

As mudanas aceleradas no sistema produtivo exigem uma permanente atualizao


nas capacitaes, qualificaes e habilitaes existentes e a identificao de novos perfis
profissionais. Para tanto, a Educao Profissional demanda importantes estratgias que
possibilitem aos cidados efetivo acesso s conquistas cientficas e tecnolgicas da sociedade.

habilidade manual, somam-se s novas competncias relacionadas com a inovao,


a criatividade, o trabalho em equipe e a autonomia na tomada de decises mediada por
tecnologias da informao.

O Centro de Educao Profissional Sebastio de Siqueira CEPSS busca


diversificar programas e cursos, desenvolvendo projetos de capacitao, qualificao e
habilitao do trabalhador com a misso de promover a educao profissional e a pesquisa, de
modo a contribuir para o desenvolvimento regional e a melhoria das condies de vida da
populao, em consonncia com os requisitos da sociedade e do setor produtivo, a fim de que
se torne referncia nessa modalidade de ensino.
Tcnico em Informtica Lgica de Programao e Estrutura de Dados 1

1. ALGORITMOS E ESTRUTURAS DE DADOS


1.1. Algoritmos
O conceito de um algoritmo foi formalizado em 1936 pela Mquina de Turing de
Alan Turing e pelo clculo lambda de Alonzo Church, que formaram as primeiras fundaes
da Cincia da computao.
um conjunto de instrues ou comandos que, quando executados, levam a um
conjunto finito de aes, ou seja, um conjunto ordenado de instrues que quando seguidas
desempenham uma tarefa especifica.
Um algoritmo uma sequncia finita de instrues bem definidas e no ambguas,
cada uma das quais pode ser executada mecanicamente num perodo de tempo finito e com
uma quantidade de esforo finita.
O conceito de algoritmo frequentemente ilustrado pelo exemplo de uma receita,
embora muitos algoritmos sejam mais complexos. Eles podem repetir passos (fazer iteraes)
ou necessitar de decises (tais como comparaes ou lgica) at que a tarefa seja completada.
Um algoritmo corretamente executado no ir resolver um problema se estiver implementado
incorretamente ou se no for apropriado ao problema.
Um algoritmo no representa, necessariamente, um programa de computador, e sim
os passos necessrios para realizar uma tarefa. Sua implementao pode ser feita por um
computador, por algum tipo de autmato - rob - ou mesmo por um ser humano. Diferentes
algoritmos podem realizar a mesma tarefa usando um conjunto diferenciado de instrues em
mais ou menos tempo, espao ou esforo do que outros. Tal diferena pode ser reflexo da
complexidade computacional aplicada, que depende de estruturas de dados adequadas ao
algoritmo. Por exemplo, um algoritmo para se vestir pode especificar que voc vista primeiro
as meias e os sapatos antes de vestir a cala enquanto outro algoritmo especifica que voc
deve primeiro vestir a cala e depois as meias e os sapatos. Fica claro que o primeiro
algoritmo mais difcil de executar que o segundo apesar de ambos levarem ao mesmo
resultado, ou seja, o mesmo resultado ser gerado com passos diferentes.

FIGURA 1 FLUXOGRAMA PARA SEQUNCIA DE PASSOS, UM ALGORITMO PARA DECIDIR A


RESPEITO DO DIA, SE SER COM SOL OU NO.

Centro de Educao Profissional Sebastio de Siqueira CEPSS


Tcnico em Informtica Lgica de Programao e Estrutura de Dados 2

1.2. Programa
Um programa de computador essencialmente um algoritmo que diz ao computador
os passos especficos e em que ordem eles devem ser executados, como por exemplo, os
passos a serem tomados para calcular as notas que sero impressas nos boletins dos alunos de
uma escola. Logo, o algoritmo pode ser considerado uma sequncia de operaes que podem
ser simuladas por uma mquina de Turing completa.
Quando os procedimentos de um algoritmo envolvem o processamento de dados, a
informao lida de uma fonte de entrada, processada e retornada sob novo valor aps
processamento, o que geralmente realizado com o auxlio de uma ou mais estrutura de
dados.
Para qualquer processo computacional, o algoritmo precisa estar rigorosamente
definido, especificando a maneira que ele se comportar em todas as circunstncias. A
corretude do algoritmo pode ser provada matematicamente, bem como a quantidade
assinttica de tempo e espao (complexidade) necessrios para a sua execuo. Estes aspectos
dos algoritmos so alvo da anlise de algoritmos.
A maneira mais simples de se pensar um algoritmo por uma lista de procedimentos
bem definida, na qual as instrues so executadas passo a passo a partir do comeo da lista,
uma ideia que pode ser facilmente visualizada atravs de um fluxograma ( ver figura 1 ). Tal
formalizao adota as premissas da programao imperativa, que uma forma mecnica para
visualizar e desenvolver um algoritmo. Concepes alternativas para algoritmos variam em
programao funcional e programao lgica.

1.3. Sistema
Para entender o que sistema, teremos que utilizar a analogia com outros tipos de
sistemas, como o caso do corpo humano. Ele formado por vrios subsistemas, como:
Respiratrio, nervoso, urinrio, cardiovascular, msculo-esqueltico, etc. Os vrios
subsistemas formam o Sistema Orgnico ( ver figura 2 ).

Reprodutor Nervoso

Msculo-
Respiratrio esqueltico Urinrio

Cardiovascular Outros
Figura 2 Sistema Orgnico dosubsistemas
Corpo Humano

FIGURA 2 SISTEMA E SEUS SUBSISTEMAS

Como pudemos perceber na figura acima, cada subsistema tem uma funo no corpo
e formado por rgos que tambm tm a sua funo especfica. Por exemplo, o subsistema
cardiovascular, alm das veias e outros rgos, so formados pelo corao, que tem como
funo principal bombear o sangue.

Centro de Educao Profissional Sebastio de Siqueira CEPSS


Tcnico em Informtica Lgica de Programao e Estrutura de Dados 3

Portanto, o conceito de sistema em informtica semelhante, ou seja, um conjunto


de subsistemas ou mdulos formados por programas que executam operaes especificas. A
sua meta conhecer a lgica necessria para construir um sistema de informao.

1.4. Software
Software um conjunto dos programas que comandam o funcionamento do
hardware. Programas so feitos a partir de algoritmos sequncias de instrues/commandos
para se atingir um objetivo.
Depois de pronto, o algoritmo convertido para uma linguagem de programao. O
produto dessa converso um programa.

1.5. Linguagem de programao


O algoritmo auxilia o desenvolvimento dos programas, pois nele que os
programadores vo representar a soluo proposta para ser testada e avaliada. Quando o
algoritmo est finalizado, ou pronto, resta simplesmente transform-lo em um programa
computacional, respeitando toda lgica envolvida na soluo testada e avaliada.
Realmente, um bom algoritmo s precisar ser traduzido para a linguagem de
programao desejada, respeitando as suas regras de sintaxe e semntica. O perodo de
aprofundamento no conhecimento relacionado ao problema em questo, sua proposta de
soluo, os testes e a manuteno do mesmo, ocorrem durante os estudos, pesquisas e
elaborao do algoritmo restando assim, simplesmente a re-escrita da soluo encontrada para
uma linguagem de programao computacional (processo de traduo).
As linguagens de programao, assim como as de comunicao, possuem regras
sintticas e semnticas que devem ser obedecidas, pois as instrues computacionais no
podem oferecer possibilidades de interpretao para o computador, que somente executa o
que lhe solicitado. Existem vrias linguagens de programao, mas em todas elas a lgica
relacionada a proposta construda no algoritmo poder ser implementada para atender ao
objetivo almejado. Por meio delas voc estabelece uma comunicao com o computador,
fazendo com que ele compreenda e execute o que voc determinar. A proximidade com a
linguagem humana determina o nvel da linguagem de programao.

Existem 3 tipos de nveis de linguagens de programao:

Linguagem de Mquina: a linguagem compreendida pelo computador,


cujas instrues so representadas por vrios 0 e 1 ( bits ).
Linguagem de Baixo Nvel: a linguagem que utiliza instrues prximas
compreenso da mquina ( linguagem de mquina ). Essa linguagem exige
um grande conhecimento de hardware. Exemplo: Assembler.
Linguagem de Alto Nvel: a linguagem cujas instrues esto prximas do
nvel de compreenso humana ( linguagem humana). Exemplos: Visual
Basic, Java, Delphi, Linguagem C, Cobol, dentre outras.

Centro de Educao Profissional Sebastio de Siqueira CEPSS


Tcnico em Informtica Lgica de Programao e Estrutura de Dados 4

1.6. Lgica de programao


Falar em lgica de programao significa apenas contextualizar a lgica na
programao de computadores, buscando a melhor sequncia de aes para solucionar um
determinado problema.
Em programao de computadores, o nome dessa sequncia de aes algoritmo,
que , de maneira bem simples, a sequncia de passos ou aes para atingir um objetivo. J
ao um fato que, a partir de um estado inicial, aps um perodo de tempo finito, produz um
estado final previsvel e definido. Baseado nestas definies constatado que este conceito
no peculiar somente a rea de Informtica, como pode ser observada no exemplo de
criao de um simplrio algoritmo empregado na criao de um saboroso sanduche:

ALGORITMO CRIAO DE UM SANDUCHE


1 - Pegar um po
2 - Cortar o po ao meio
3 - Pegar a maionese
4 - Passar maionese nas fatias de po
5 - Pegar alface e tomate
6 - Cortar alface e tomate
7 - Colocar alface e tomate no po
8 - Pegar um hambrguer
9 - Fritar o hambrguer
10 - Colocar o hambrguer no po
11 - Juntar as fatias do po cortado
TABELA 1 ALGORITMO PASSOS PARA CRIAR UM SANDUCHE

Estes onze passos indicados acima orientam na execuo de diversas instrues


organizadas de forma sequencial que resultaro em um delicioso sanduche (estado final).
Estes passos so sequncias e finitos, podendo ser executados sem auxlio nenhum de um
computador. A alterao na sequncia destes passos tambm poder resultar em um outro
gostoso sanduche, atingindo tambm o objetivo esperado.
Geralmente, um problema possui algumas alternativas de solues que chegam ao
resultado correto, podendo existir vrios algoritmos que solucionem um determinado
problema. Entre estas possveis solues algumas so mais rpidas, outras mais seguras, mas
todos conseguem resolver o problema adequadamente, apesar de suas diferenas existentes no
raciocnio lgico proposto como soluo.
Por exemplo, abrir a porta uma ao. Observaremos que: Ao objeto (porta) no
estado inicial (porta fechada), aplicada a ao de (abrir) por um tempo determinado
(segundos), levando ao estado final (porta aberta), previsvel e definido (pois esperado que,
quando se abre algo, principalmente qualquer porta, no final, ela esteja aberta).

Resumindo:

Problema: Qual a sequncia de aes para se abrir uma porta?

Soluo:
1 Andar at a prxima porta.
2 Pegar na maaneta.
3 Girar a maaneta.
4 Puxar a porta.

Centro de Educao Profissional Sebastio de Siqueira CEPSS


Tcnico em Informtica Lgica de Programao e Estrutura de Dados 5

Concluso: Devemos utilizar essa ordem para realizar a ao Abrir a porta , pois, no
poderamos realiz-las na ordem diferente, afinal de contas, ao estabelecerem as aes,
definida uma sequncia que seria naturalmente executada por qualquer pessoa, determinando-
se um padro de comportamento, porm, em alguns casos agiramos com aes diferentes,
atingindo um mesmo objetivo.

1.7. Estrutura bsica de um algoritmo


Quando trabalhamos com a construo de um algoritmo, devemos seguir uma ordem
predeterminada. A construo de um algoritmo segue a seguinte ordem:

1. Nome do programa
2. Incluso das bibliotecas utilizadas
3. Declarao das variveis globais
4. Criao dos procedimentos e funes
5. Indicador do incio do programa (Incio)
6. Cdigo principal
7. Indicador de fim do programa (fim)

Existem certas regras que devem ser seguidas ao se criar um algoritmo. Essas regras
vo desde a sintaxe dos comandos at a ordenao dos mesmos. A seguir aprenderemos como
deve ser a estrutura bsica de um algoritmo desde a primeira at a ltima linha.

1.8. Problemas de narrativa


Utilizao do No, somente, mas, e/ou, A menos que

Conforme as palavras utilizadas para descrever uma funo, podero surgir


interpretaes diversas como nos exemplos abaixo:

Somar A e B a menos que A seja menor que B aonde neste caso subtrair A de B
Somar A e B, entretanto se a for menor que B a resposta ser a diferena entre A e
B
Somar A e B, mas subtrair A de B quando A for menor que B
O Total a soma de A e B, somente quando A for menor que a diferena deve ser
utilizada no total

At, acima, abaixo:

nto, acima de 20 unidades da direito a 5% de


desconto

lizar os operadores relacionais

Ambiguidade do E/OU

Clientes regulares que adquirirem mais de 1 Milho e que tem um bom histrico de
pagamento ou que esto conosco a mais de 20 anos devem receber tratamento especial

Centro de Educao Profissional Sebastio de Siqueira CEPSS


Tcnico em Informtica Lgica de Programao e Estrutura de Dados 6

Dependendo da entonao da frase podem surgir interpretaes diferentes.


Adjetivos indefinidos:
O que um bom Histrico?
O que um cliente regular?

A frase bom histrico implica na existncia de um Mau histrico, ambos


devero ser definidos?

Como pode ser visto acima a utilizao da linguagem coloquial pode gerar diversas
interpretaes, e tambm muitas dvidas. Desta forma faz-se necessrio a utilizao de uma
linguagem mais prxima a lgica dos computadores. E tambm, com uma linguagem bem
parecida com as linguagens de programao, fica mais fcil a transformao do algoritmo em
um programa. O Algoritmo ento um intermedirio entre a linguagem coloquial utilizada
normalmente, e as linguagens de programao em outras palavras Portugol.

1.9. Exerccios
1. Qual a diferena entre Programa, Sistema e Software.

2. Construa um algoritmo em pseudocdigo, mostrando os passos para ligar um


computador.

3. Cite alguns problemas de narrativa existentes quando utilizamos pseudocdigo.

4. O que algoritmo?

5. Qual a relao existente entre linguagem de programao e algoritmo?

2. CONSTANTES E VARIVEIS
Para que possamos entender e desenvolver algoritmos precisaremos de alguns
conceitos bsicos, como: constantes, variveis, tipos de dados, nome das variveis, dentre
outros.

2.1. Constantes
Uma constante consiste em recurso computacional que pode ser criado em um
algoritmo, sendo ela capaz de armazenar um nico valor de um tipo de dado definido durante
toda execuo deste algoritmo. Este recurso no est sujeito a variaes no seu valor
armazenado, ou seja, o valor guardado em uma constante no sofre alterao, se mantendo
sempre constante aps a sua criao.
A criao de uma constante exige a indicao de um tipo de dado e um identificador
para mesma ser armazenada e acessada na memria do computador. Quando esta constante
criada com sucesso, ela ocupa uma rea de memria que poder ser acessada por meio de seu
nome (identificador), mas seu valor inicial nunca poder ser alterado enquanto seu algoritmo
estiver em execuo. Exemplo:

= 3,1416 (pi igual a 3,1416).

Centro de Educao Profissional Sebastio de Siqueira CEPSS


Tcnico em Informtica Lgica de Programao e Estrutura de Dados 7

Como iremos declar-la para uso no decorrer do algoritmo, precisaremos identific-la


por um nome que seja mnemnico (Que facilmente se grava na memria humana), ou seja,
no iremos chamar de raio, delta, baskara. Usaremos um nome que nos lembre o smbolo,
nesse caso:

pi: numerico 3,1416

Nesse exemplo, temos que o valor de pi em qualquer trecho do cdigo


corresponder ao valor 3,1416 do comeo ao fim do cdigo, desde que declarado com esse
valor.

2.1.1. Tipos de constantes


As constantes podem ser numricas, literais ou lgicas.

Constantes numricas: So nmeros, positivos ou negativos, inteiros ou reais.


Exemplo: 43;33; 22; 567; -123; 2*12; 8*4; 0,0076; 2.345.678

Constantes literais: So conhecidas tambm como alfanumricas, so conjuntos de caracteres


(letras, dgitos ou smbolos especiais: -, %, $, etc.). Esses conjuntos devem ser colocados
entre aspas para no serem confundidos com outros dados.
Exemplo: 21.222.909-09; 22/04/1984; Brasil ; Alemanha; -123; 2*12; Sidney

Constantes lgicas: So valores que representam respostas para expresses lgicas e so


compostos somente pelos valores verdadeiro e falso (devem ser sublinhados para no serem
confundidos com as constantes literais).
Exemplo: verdadeiro ; falso.

2.1.2. Sintaxe
Constante <identificador>: <tipo do dado> <valor do identificador>

constante : palavra reservada que identifica a criao de um recurso constante


<tipo do dado> : descrio do tipo de dado da constante a ser criada
<identificador> : nome fornecido a constante na memria do computador
: operador de atribuio de valores
<valor do identificador> : valor constante atribudo a constante (no pode ser alterado)

Exemplo:

constante idade_maxima: inteiro 25;

2.2. Variveis
Uma varivel corresponde a uma rea de memria, cujo contedo varia durante a
execuo do algoritmo. Os valores guardados por este importante recurso podem ser incertos,
instveis ou inconstantes, conforme a situao a ser processada pelo computador.
Similar as constantes, uma varivel exige um tipo de dado conhecido pelo
computador e um identificador para ser criada e manipulada na memria do mesmo. No

Centro de Educao Profissional Sebastio de Siqueira CEPSS


Tcnico em Informtica Lgica de Programao e Estrutura de Dados 8

entanto, este recurso pode guardar um ou vrios valores de um mesmo tipo de dado nesta rea
de memria, conforme seja necessrio ao computador processar o algoritmo elaborado e em
execuo.
Apesar da varivel poder armazenar vrios valores de um mesmo tipo, ela s
consegue guardar um valor por vez, ou seja, o armazenamento de uma varivel no
simultneo de vrios valores, mas somente um de cada vez (sobreposio dos valores de uma
mesma varivel na memria).
Assim como na declarao de constantes, a declarao de variveis define primeiro
o tipo de dado a ser armazenado como seu contedo e qual o seu identificador (nome da
varivel). A principal diferena entre estes recursos a possibilidade de modificao do
contedo armazenado na varivel, sendo ele alterado quantas vezes forem necessrias para o
correto funcionamento do algoritmo. No entanto, as constantes possuem uma mesma sintaxe
de definio, incluindo somente a palavra reservada constante, porm elas no sofrem
alterao durante toda execuo do algoritmo, somente recebendo um valor que permanece
inaltervel durante toda esta execuo.

2.2.1. Tipos de variveis


Todos os dados processados por um algoritmo devem ser previamente definidos, isto
porque o computador precisa saber previamente o tipo e o tamanho da informao que ser
processada.
Como j foi visto anteriormente, ns vamos armazenar estes dados dentro de
variveis, para que possamos alterar o seu valor durante a execuo do algoritmo. Sendo
assim, cada varivel dever ser declarada previamente e com um tipo j definido que dever
ser um dos tipos abaixo, ou uma de suas variaes que sero vistas posteriormente.
Assim como na declarao de constantes, a declarao de variveis define primeiro
o tipo de dado a ser armazenado como seu contedo e qual o seu identificador (nome da
varivel). A principal diferena entre estes recursos a possibilidade de modificao do
contedo armazenado na varivel, sendo ele alterado quantas vezes forem necessrias para o
correto funcionamento do algoritmo. No entanto, as constantes possuem uma mesma sintaxe
de definio, incluindo somente a palavra reservada constante, porm elas no sofrem
alterao durante toda execuo do algoritmo, somente recebendo um valor que permanece
inaltervel durante toda esta execuo.

Nomes de Variveis

Para que possamos declarar uma varivel devemos dar-lhe um nome. Dentro do
algoritmo, toda vez que eu precisar usar o valor armazenado nesta varivel, deveremos
referenci-la pelo seu nome.

Exemplo:

Nome: inteiro
Sexo: lgico

Regras para Nomes de Variveis

Centro de Educao Profissional Sebastio de Siqueira CEPSS


Tcnico em Informtica Lgica de Programao e Estrutura de Dados 9

IMPORTANTE:

1. O nome da varivel pode ser formado por um ou mais caracteres.


2. O primeiro caractere deve ser, obrigatoriamente, uma letra e os caracteres seguintes podem ser
letras ou nmeros.
3. No permitido o uso de smbolos, sinais grficos e de pontuao, como: [ / , ! @ # $ % ^ & * ( )
+ = | \ ~ < > : ? ; ` { } ], exceto o sinal de _ ( underscore ou underline ).
4. No podem ser colocados espaos em branco no nome de variveis, usar o UNDERSCORE
(smbolo grfico: _ ).
5. A declarao de uma varivel feita no algoritmo, informando o seu nome, seguido pelo seu
tipo, separados por :
TABELA 2 OBSERVAES ACERCA DA DECLARAO DE ALGORITMOS

Identificadores permitidos Identificadores no-permitidos


A 6A
T32 45
IDADE END(2)
NOME T%O&
NOME_DO_ALUNO NOME-DO-ALUNO
NUM 2NUM
NOME_ALUNO nome/aluno
TABELA 3 IDENTIFICADORES PERMITIDOS x NO-PERMITIDOS

2.2.2. Tipos de variveis


As variveis se diferenciam pelo contedo. Como esse contedo uma constante, a
varivel pode ser numrica, literal ou lgica. Porm, como diferenciar uma varivel numrica
de uma literal? Para solucionar esse problema, voc deve declarar as variveis.

2.2.3. Declarando variveis


No incio do algoritmo, sempre indique as variveis que sero utilizadas. Assim, o
computador reserva um espao na memria para cada uma.
Exemplo: Declarar as seguintes variveis ( Nome, RG, CPF, Status e Data de Nascimento).

Nome: literal
RG, CPF: numrico
Status: lgico
Data_de_Nascimento: literal

No exemplo acima, os tipos de variveis declaradas, em pseudocdigo, foi escolhido


aps anlise de seu suposto contedo, onde, escolhemos para a varivel Nome, Nome=
Joaquim Ferreira, o tipo literal, pois, o contedo dessa varivel composto por letras.
Em Status adotamos o tipo lgico, pois, usaremos essa varivel para identificar se
est Ativo ou no ativo (Status=ativo), ou seja, valor lgico [Verdadeiro ou Falso].
J nas variveis RG e CPF declaramos como numrico, sendo possvel somente
o armazenamento de nmeros (RG: 4187433; CPF: 34390988877). Lembrando: caso
quisssemos armazenar o formato (RG: 418690-9; CPF: 987.888.909-99) precisaramos
declar-los como literal, pois, o seu contedo seria composto por nmeros e caracteres
literais.
Por fim, na varivel Data de Nascimento declaramos o tipo de varivel como
literal, possuindo o formato (Data_de_nascimento 25/09/1988), ou seja,

Centro de Educao Profissional Sebastio de Siqueira CEPSS


Tcnico em Informtica Lgica de Programao e Estrutura de Dados 10

(DD/MM/AAAA) contudo, como citamos nas variveis RG e CPF, caso quisssemos


somente valores numricos poderamos utilizar o tipo numrico.
Vimos que, para declarar variveis precisamos de uma rigorosa anlise do tipo de
dado que ser armazenado, se declararmos variveis diferentes do que ser armazenado,
poderemos sobrecarregar o espao para armazenamento de memria e desperdiar espaos
que poderia ser til para outro fim.

2.2.4. Aprendendo a declarar variveis


Para construir um sistema de informao, declararemos as variveis para o algoritmo
de cadastramento de alunos, cujos dados so: nome, sexo, endereo, cidade, estado, CEP,
telefone, data de nascimento, RG, nome do pai, nome da me e grau de escolaridade.
Utilizaremos o pseudocdigo para representar essas declaraes.

Soluo:

1 Separar do problema os dados que sero armazenados nas variveis.

Nome, sexo, endereo, cidade, estado, CEP, telefone, data de nascimento, RG, nome do pai,
nome da me e grau de escolaridade.
2 Classificar os dados segundo os tipos de variveis que sero armazenados.

Variveis literais: Nome, sexo, endereo, cidade, estado, nome do pai, nome da me.

Variveis numricas: CEP, telefone, RG, data de nascimento, grau de escolaridade.

Variveis lgicas: nenhum

OBS: Os dados referentes data de nascimento foram colocados em uma varivel numrica
porque devero ser digitados apenas os nmeros, sem as barras de separao. Se as barras
fossem utilizadas, esse dado seria classificado como literal. O mesmo vale para o telefone,
em que no sero digitados o hfen e os parnteses que separam os nmeros.

3 Criando identificadores ( nomes ) para os dados que sero armazenados nas variveis.

Variveis literais:
Nome do aluno = Nome;
Sexo = Sexo;
Endereo = Endereo;
Cidade = Cidade;
Estado ( Unidade Federativa ) = UF;
Nome do pai = Pai;
Nome da me = Mae;

Variveis numricas:
CEP = CEP;
Telefone = Fone;
Registro Geral(RG) = RG;
Data de nascimento = DataNasc;

Centro de Educao Profissional Sebastio de Siqueira CEPSS


Tcnico em Informtica Lgica de Programao e Estrutura de Dados 11

Grau de escolaridade = GrauEsc;

Variveis lgicas: nenhum

4 Declarao das variveis no formato pseudocdigo;

Incio
Nome, sexo, endereo, cidade, uf, pai, me: literal
Fone, CEP, RG, DataNasc,GrauEsc: numrico
fim

2.3. Comentando algoritmos


Um algoritmo deve ser construdo de maneira que seja entendido e executado
facilmente. Para que isso ocorra, so necessrias informaes auxiliares denominadas
Comentrios.
Os comentrios feitos em pseudocdigo devem ser iniciados por barras duplas (//)
colocados entre chaves.

Exemplo:

Incio
Pessoa: literal //Varivel para armazenar o nome
Idade: numrico //Varivel para armazenar a idade
fim

2.4. Comando de atribuio


Armazena uma constante em uma varivel, isto , atribui um valor varivel. A
sintaxe desse comando uma seta entre o identificador e o valor a ser armazenado.
Exemplo:

Pessoa Joo
Idade 25
Sexo M

Exemplo:

Incio
Pessoa: literal //Varivel para armazenar o nome
Idade: numrico //Varivel para armazenar a idade
Pessoa Joo
Idade 25
fim

2.5. Exerccios
1. Por que utilizamos constantes e variveis nas construes de algoritmos?

2. Declare 10 variveis com os seus respectivos tipos e atribua alguns algarismos


e/ou valores, conforme demonstrado nesse captulo.

Centro de Educao Profissional Sebastio de Siqueira CEPSS


Tcnico em Informtica Lgica de Programao e Estrutura de Dados 12

3. Declare um algoritmo com 2 variveis e explique o porqu das devidas atribuies


utilizando comentrios.

4. Julgue se as seguintes variveis so Permitidas ou no-permitidos: P


(PERMITIDO) e NP (No permitido) ?

VARIVEL RESPOSTA VARIVEL RESPOSTA


B 19A
23TH 45
IDADE RUA(2)
NOME T%O&
#NOME_DO_ALUNO NOME-DO-PROFESSOR
@NUM 2NUM
NOME_ALUNO nome/aluno

Centro de Educao Profissional Sebastio de Siqueira CEPSS


Tcnico em Informtica Lgica de Programao e Estrutura de Dados 13

3. OPERADORES
Suponha que durante a construo de um algoritmo fosse necessrio somar dois
nmeros. Para isso, existem as expresses, utilizadas para obter ou modificar os valores de
algumas variveis. A seguir, voc vai conhecer os tipos de expresses, seus operadores e suas
descries.
Os operadores so meios pelo qual incrementamos, decrementamos, comparamos e
avaliamos dados dentro do computador. Temos quatro tipos de operadores:

Operadores Aritmticos
Operadores Literais
Operadores Relacionais
Operadores Lgicos

3.1. Expresses aritmticas


Os operadores aritmticos so os utilizados para obter resultados numricos. Alm da
adio, subtrao, multiplicao e diviso, podem utilizar tambm o operador para
exponenciao.
Como so responsveis pela realizao de clculos utilizam notao comumente
utilizada em sistemas de clculos, como calculadoras.

3.1.1. Hierarquia das operaes aritmticas (precedncia)

Prioridade Operao / Operaes


1 Parnteses - ( )
2 Potenciao ou radiciao
3 Multiplicao, diviso
4 Soma ou subtrao
TABELA 4 PRECEDNCIA DOS OPERADORES ARITMTICOS

A precedncia de um operador define qual operao ser realizada primeira quando


mais de uma operao esto aninhadas.
possvel utilizar (parnteses) para garantir a precedncia de uma operao quando
necessrio. Eles so utilizados para estabelecer uma sequncia de clculo diferente das
prioridades. Por exemplo, na operao 2+10 / 2 = 7,empregou-se a prioridade, mas na
operao ( 2+10 ) / 2 = 6, os parnteses alteraram a prioridade.
Em algoritmos, colchetes e chaves no so empregados no lugar de parnteses, pois
tm outras funes. As operaes aritmticas s podem ser aplicadas em constantes e
variveis numricas e o valor retornando ser sempre numrico.

3.1.2. Operadores aritmticos


Operador Aritmtico Operaes Descrio
+ Adio Soma de dois ou mais nmeros
- Subtrao Subtrao de um nmero de outro
* Multiplicao Multiplicao de um nmero por outro
/ Diviso Diviso de um nmero por outro
** ou ^ Potenciao Elevao de um nmero a uma potncia
TABELA 5 OPERADORES ARITMTICOS

Centro de Educao Profissional Sebastio de Siqueira CEPSS


Tcnico em Informtica Lgica de Programao e Estrutura de Dados 14

Exemplos de expresses aritmticas com as variveis numricas X,Y,Z

Variveis
Comando atribuio / Operao Procedimento
X Y Z
- - - X 25 Armazenar o valor 25 na varivel X
Somar o valor da varivel A ( 25 ) com 30 e
25 - - Y X + 30
armazenar o resultado na varivel Y.
Subtrair o valor da varivel Y ( 55 ) do valor da
25 55 - ZYX varivel X ( 25 ) e armazenar o resultado na
varivel Z
Subtrair o valor da varivel Y ( 55 ) por duas
25 55 30 Y Y 2*X vezes o valor da varivel X ( 25) e armazenar o
resultado na varivel Y.
Somar o valor da varivel X ( 25 ) por trs vezes
25 5 30 Z X + 3*(-Y) o valor da varivel Y ( 5 ), porm, com sinal
negativo (5) e armazenar o resultado na varivel Z.
Multiplicar o valor da varivel X (25) pelo valor da
varivel Z (10), subtraindo o resultado pela
25 5 10 X Y * Z X*Y
multiplicao do valor de X(10) pela varivel
Y(25) e armazenar o resultado na varivel X.
Elevar o valor da varivel Y (5) ao valor da
0 5 10 X Y^X varivel X (0) e armazenar o seu resultado na
varivel X.
Dividir o valor da varivel Z (10) pelo valor da
1 5 10 YZ/Y varivel Y(5) e armazenar o resultado na varivel
Y.
Elevar o valor da varivel Z(10) pelo valor da
1 2 10 X Z ^Y varivel Y(2) e armazenar o resultado na varivel
X.
100 2 10
TABELA 6 UTILIZAO DAS EXPRESSES ARITMTICAS

3.1.3. Funes aritmticas

Funo
Sintaxe Descrio
aritmtica
Faz a diviso inteira do nmero x pelo nmero y,
Diviso inteira DIV (x,y) ou seja, retorna somente a parte inteira da
diviso.
Resto da diviso Retorna o resto da diviso inteira do nmero x
MOD (x,y)
inteira pelo nmero y.
Valor absoluto ABS (x) Retorna o valor absoluto do nmero x.
Arredondamento ARREDONDA (x) Retorna o valor arredondado do nmero x.
Semelhante ao operador ^, retorna o resultado do
Potenciao ELEV (x,y)
nmero x elevado ao nmero y.
Raiz quadrada RZQD (x) Retorna o valor da raiz quadrada do nmero x.
Retorna o valor somente com sua parte inteira,
Truncamento TRUNCA (x)
excluindo a parte decimal.
Converte o valor introduzido em parmetro em
Radiano RADIANOS (x) radianos. O valor dado em parmetro deve ser
exprimido em graus.
Converte o valor inserido em parmetro em
Grau GRAUS (x) graus. O valor dado em parmetro deve ser
exprimido em radianos.
TABELA 7 FUNES ARITMTICAS

Centro de Educao Profissional Sebastio de Siqueira CEPSS


Tcnico em Informtica Lgica de Programao e Estrutura de Dados 15

Exemplos de funes aritmticas com as variveis numricas X,Y,Z.

Variveis
Comando atribuio / Operao Procedimento
X Y Z
- - - X5 Armazenar o valor 5 na varivel X
Armazenar na varivel Y o valor da diviso
5 - - Y DIV (25,X) inteira de 17 pelo valor da varivel X (2)
( 25 / 2 = 12,5; parte inteira = 12 ).
Armazenar na varivel Z o valor do resto da
diviso inteira do valor da varivel Y (12) pelo
5 12 - Z RESTO (Y,X)
valor da varivel X (5)
(12 / 5) = 2; resto = 2).
Armazenar na varivel Z o valor da subtrao
entre o valor absoluto de -9,5 e o valor da varivel
5 12 2 Z ABS (-6,5) - X
X (5).
( Valor absoluto = 9,5; 9,5 - 5 = 4,5)
Armazenar na varivel Y o valor absoluto do
valor da varivel Z(4,5)
5 12 4,5 Y ARREDONDA (Z) (Valor Arredondado = 4).
Obs: ( Valor: 6,6: < ou = a 6,5, arredonda para
menos ( 6,0), > 5 arredonda para mais (7,0))
Armazena na varivel Y o valor truncado de 4,9,
5 4 4,5 Y TRUNCA (4,9) ou seja, permanece somente a parte inteira.
(Valor truncado = 4)
Armazenar na varivel X o valor da raiz quadrada
5 4 4,5 X RZQD (Y) da varivel Y(4).
(Valor = 4; raiz quadrada de 4 = 2)
2 4 4,5
TABELA 8 UTILIZAO DAS FUNES ARITMTICAS

OBS: Primeiramente, voc deve inserir valores nas variveis que sero utilizadas nas
expresses. Isso necessrio para evitar erro, pois, caso a varivel utilizada na expresso no
tenha valor, o computador no saber qual valor dever ser levado em conta no clculo.

3.2. Expresses literais


So expresses com constantes e/ou variveis literais que tm como resultado valores
literais. Diferentemente das expresses aritmticas, as expresses literais aceitam somente o
operador de concatenao.

3.2.1. Operadores literais

Operador literal Comando atribuio /


Procedimento
Operao
+ Concatenao Junta dois valores literais em um s.
TABELA 9 OPERADOR LITERAL

Centro de Educao Profissional Sebastio de Siqueira CEPSS


Tcnico em Informtica Lgica de Programao e Estrutura de Dados 16

Exemplos de expresses literais com as variveis literais X e Z.

Variveis Comando atribuio /


Procedimento
X Y Operao
- - X Sandra Armazenar o valor Sandra na varivel X
Concatenar o valor da varivel X (Sandra) com
Sandra - Y X + rosa a constante literal rosa e armazenar o
resultado na varivel Y.
Concatenar o valor da varivel X
( Sandra ) com espao em branco ( ) e com a
Sandra Sandrarosa X X + + Rosa
constante literal Rosa, armazenar o resultado
na varivel X .
Sandra Rosa Sandrarosa
TABELA 10 UTILIZAO DO OPERADOR LITERAL

3.2.2. Funes literais

Funo Sintaxe Descrio


Eliminar brancos Elimina os espaos em branco do incio da palavra que
LTRIM (x)
esquerda for representada pela letra a (ou palavra a).
Elimina os espaos em branco do final da palavra a (
Eliminar brancos direita RTRIM (x)
ou letra a ).
Fornece o nmero total de caracteres que compem a
palavra a. Obs: O Retorno da funo um valor
Quantidade de caracteres COMP (x)
numrico, portanto, deve ser atribuda a uma
varivel numrica.
Retorna um conjunto de caracteres com x2 caracteres a
partir da posio x1 da palavra x. Se x1 e x2 forem
Subpalavra SUB (x,x1,x2)
inconsistentes ( invlidos ), retorna o valor numrico
0.
Retorna um conjunto de caracteres composto pelos x1
Subpalavra esquerda ESQUERDA (x,x1)
primeiros caracteres da palavra x.
Retorna um conjunto de caracteres compostos pelos x1
Subpalavra direita DIREITA(x,x1)
ltimos caracteres da palavra x.
Retorna um valor numrico correspondente primeira
apario do conjunto de caracteres y na palavra x. Se y
Posio de caracteres POS(x,y) no existir, retorna o valor numrico 0.
Obs: Essa funo retorna um valor numrico,
portanto, deve ser atribuda a uma varivel numrica.
TABELA 11 FUNES LITERAIS

Exemplos de funes literais com as variveis literais X e Y e a varivel numrica Z.


Variveis Comando atribuio /
Procedimento
X Y Z Operao
- - - X Bia Armazenar o valor Bia na varivel X
Armazenar na varivel Y o valor da varivel X (Bia
Bia - - Y RTRIM (X)
) sem os espaos em branco no final.
Armazenar na varivel Z a quantidade de caracteres
Bia Bia - Z COMP (X) que compem o valor da varivel X (Bia ).
(Bia ) = 3 espaos e 2 espaos).
Armazenar na varivel X o valor da concatenao da
Bia Bia 5 X Y + Luzia varivel Y mais a constante Luzia).

Bia Armazenar na varivel Y o conjunto dos 3 primeiros


Bia 5 Y ESQUERDA (X,3)
Luzia caracteres da varivel A (Bia Luzia).

Centro de Educao Profissional Sebastio de Siqueira CEPSS


Tcnico em Informtica Lgica de Programao e Estrutura de Dados 17

Armazena na varivel X o conjunto dos 2 ltimos


ia Bia 5 X DIREITA (Y,2) caracteres da varivel Y(ia).

Armazena, na varivel X, 1 caractere a partir da


ia Bia 5 X SUB (Y,2,1) segunda posio da varivel Y(i).

Armazena, na varivel Z o valor numrico referente


primeira apario da varivel X (n) na varivel Y
(Bia).
I Bia 5 Z POS (Y,X)
Observe que o caractere n ocupa a segunda posio
na palavra Bia (o valor
numrico,portanto,corresponde a 2).
I Bia 2 - -
I Bia 2
TABELA 12 UTILIZAO DAS FUNES LITERAIS

3.3. Expresses relacionais


So expresses compostas por outras expresses ou variveis numricas com
operadores relacionais.
Os operadores relacionais so utilizados para comparar String de caracteres e
nmeros. Os valores a serem comparados podem ser caracteres ou variveis. Estes operadores
sempre retornam valores lgicos (verdadeiro ou falso / True ou False, respectivamente). Para
estabelecer prioridades no que diz respeito a qual operao executar primeiro, utilize os
parnteses.

3.3.1. Operadores relacionais

Operador
Operao Descrio
relacional
Verifica se dois valores so iguais e retorna um
= Igualdade
valor lgico.
Verifica se um nmero maior que outro e
> Maior que
retorna um valor lgico.
Verifica se um nmero menor que outro e
< Menor que
retorna um valor lgico.
Verifica se dois valores so diferentes e retorna
<> Diferena
um valor lgico.
Verifica se um nmero menor ou igual a outro e
<= Menor ou igual a
retorna um valor lgico.
Verifica se um nmero menor ou igual a outro e
>= Maior ou igual a
retorna um valor lgico.
TABELA 13 OPERADORES RELACIONAIS

Centro de Educao Profissional Sebastio de Siqueira CEPSS


Tcnico em Informtica Lgica de Programao e Estrutura de Dados 18

Exemplos de expresses literais com as variveis literais X e Z.

Variveis Comando atribuio /


Procedimento
X Y Z Operao
- - - X6 Armazenar o valor 6 na varivel X.
6 - - Y 10 Armazenar o valor 10 na varivel Y.
Armazenar na varivel Z o valor lgico da
6 10 - Z (X=Y) expresso relacional que compara se o valor da
varivel X igual ao valor da varivel Y.
Armazenar na varivel Z o valor lgico da
6 10 falso Z (X< >Y) expresso relacional que compara se o valor da
varivel X diferente do valor da varivel Y.
Armazenar na varivel Z o valor lgico da
6 10 verdadeiro Z (X<Y) expresso relacional que compara se o valor da
varivel X menor que o valor da varivel Y.
Armazenar na varivel Z o valor lgico da
6 10 verdadeiro Z (X>Y) expresso relacional que compara se o valor da
varivel X maior que o valor da varivel Y.
Armazenar na varivel Z o valor lgico da
expresso relacional que compara se o valor da
6 10 falso Z (X<=Y)
varivel X menor ou igual ao valor da varivel
Y.
Armazenar na varivel Z o valor lgico da
expresso relacional que compara se o valor da
6 10 verdadeiro Z (X>=Y)
varivel X menor ou igual ao valor da varivel
Y.
6 10 falso - -
6 10 falso
TABELA 14 UTILIZAO DOS OPERADORES RELACIONAIS

3.4. Expresses lgicas


So expresses compostas por expresses relacionais com operadores lgicos. As
expresses lgicas retornam valores lgicos.

3.4.1. Operadores lgicos

Operador lgico Operao Descrio


Retorna o valor lgico resultante da interseco de valores lgicos de
expresses relacionais.
Uma expresso AND (E) verdadeira se todas as condies forem
e ou AND Interseco verdadeiras.
verdadeiro e verdadeiro = verdadeiro
verdadeiro e falso = falso ( vice-versa )
falso e falso = falso
Retorna o valor lgico resultante da unio de valores lgicos de expresses
relacionais.
Uma expresso OR (OU) verdadeira se pelo menos uma condio for
ou ou OR Unio verdadeira.
verdadeiro ou verdadeiro = verdadeiro
verdadeiro ou falso = verdadeiro ( vice-versa )
falso ou falso = falso
Retorna o valor lgico resultante da contradio do valor lgico de uma
no ou NOT Negao expresso relacional.
Uma expresso NOT (NO) inverte o valor da expresso ou condio, se

Centro de Educao Profissional Sebastio de Siqueira CEPSS


Tcnico em Informtica Lgica de Programao e Estrutura de Dados 19

verdadeira inverte para falsa e vice-versa.


no verdadeiro = falso
no falso = verdadeiro
TABELA 15 OPERADORES LGICOS

Exemplos de expresses lgicas com operadores relacionais utilizando as variveis


numricas X,Y e as variveis lgicas Z,W.

Variveis Comando atribuio


Procedimento
X Y Z W / Operao
- - - - X 10 Armazenar o valor 10 na varivel X.
10 - - - Y 20 Armazenar o valor 20 na varivel Y.
Armazenar na varivel Z o valor
lgico da expresso relacional que
10 20 - - Z (X=Y)
compara se o valor da varivel X
igual ao valor da varivel Y.
Armazenar na varivel W o valor
lgico da expresso relacional que
10 20 falso - W (X< >Y)
compara se o valor da varivel X
diferente do valor da varivel Y.
Armazenar na varivel W o valor
lgico da expresso relacional
10 20 falso verdadeiro W Z ou (X>Y) resultante da unio dos valores
lgicos de Z (falso) e da comparao
(A>B), que tambm falso.
Armazenar na varivel W o valor
lgico da expresso relacional
10 20 falso falso W Z e (X>Y) resultante da interseco dos valores
lgicos de Z (falso) e da comparao
(A<B), que verdadeiro.
Armazenar na varivel Z o valor
lgico da expresso relacional
10 20 Falso falso Z no W
resultante da contradio do valor da
varivel W, que verdadeiro.
10 20 Verdadeiro falso - -
10 20 verdadeiro falso
TABELA 16 UTILIZAO DOS OPERADORES LGICOS

3.5. Prioridades entre operadores e operaes

Prioridade Operadores / Operaes


1 Parnteses
2 Aritmticos e literais
3 Relacionais
4 No
5 E
6 Ou
TABELA 17 ORDEM DE PRIORIDADE ENTRE OS TIPOS DE OPERADORES

Estas prioridades definiro a ordem de precedncia entre os Operadores e Operaes,


sendo que, a prioridade dos parnteses deve ser solucionados primeiros, ou seja, a sua
relevncia de fundamental importncia.

Centro de Educao Profissional Sebastio de Siqueira CEPSS


Tcnico em Informtica Lgica de Programao e Estrutura de Dados 20

3.6. Exerccios
1. Quais so os operadores existentes e cite 1 exemplo para cada operador ?

2. Declare 3 variveis com os seus respectivos tipos e atribua alguns algarismos e/ou
valores, conforme o seu respective operador.

3. Qual a prioridade entre os operadores e operaes, incluindo os parnteses.

4. Escreva quais so os tipos de operadores armazenadas nas variveis X,Y,Z no


campo tipo. X: 20; Y: 55; ZLuiz; W: falso

VARIVEL TIPO
X 30
Z Z + + Incio
Z Lula + + Z
Y X <> Y
X Y > 40
Z Z + da Silva
WYeW
W W ou W
Z Z + 13
X 40

5. Escreva quais so os tipos de funes armazenadas nas variveis X,Y,Z no campo


tipo? Considere: X: 10; Y: 15; ZEdson; W: verdadeiro

VARIVEL TIPO
Z RTRIM (Z)
Z (X=Y)
Y DIV (60,Y)
Z DIV (25,X)
X RESTO (Y,X)
Y ABS (-6,5) + X
W (X = Y)
WY>X
XX^2
Y Y + (Z ARREDONDA (2,3))
X TRUNCA (Y)

Centro de Educao Profissional Sebastio de Siqueira CEPSS


Tcnico em Informtica Lgica de Programao e Estrutura de Dados 21

4. ENTRADA E SADA DE DADOS


4.1. Comandos de entrada e sada de dados
Na construo do algoritmo encontramos comandos para entrada e sada de dados.
Os dados entram no computador (so lidos) por meio dos cdigos de barras, microfones,
teclado, tela de toque (touch screen), dentre outros, ou seja, perifricos de entrada de dados
saem deles (so escritos) por meio da impressora, monitor, som e outros, so os conhecidos
perifricos de sada.
Os dispositivos de entrada e sada de dados mais conhecidos so, respectivamente, os
teclados e os monitores. Quando pressionamos uma letra no teclado, o computador recebe e
interpreta o sinal que representa a letra e logo aps emite o sinal que vai mostrar a letra no
monitor.

4.2. Entrada de dados: comando leia


4.2.1. Sintaxe do comando leia
leia <lista_de_identificadores>

Exemplo:

Incio
PESSOA: literal
leia PESSOA
fim

OBS: Para aplicar o comando leia deve-se primeiramente declarar a varivel.

4.3. Sada de dados: comando escreva


4.3.1. Sintaxe do comando escreva
escreva <lista_de_identificadores>

Exemplo:

Incio
PESSOA: literal
leia PESSOA
escreva PESSOA
fim

OBS: Para utilizar o comando escreva, necessrio que a varivel seja declarada e que
contenha um valor, seno ocorrer um erro.
Em alguns livros voc poder encontrar os comandos exiba e imprimir no lugar de
escreva para diferenciar a sada por vdeo ou pela impressora. No utilizamos essa
sintaxe, mas se preferir pode empreg-lo nos algoritmos em pseudocdigo.

Centro de Educao Profissional Sebastio de Siqueira CEPSS


Tcnico em Informtica Lgica de Programao e Estrutura de Dados 22

No exemplo acima, a varivel declarada PESSOA. Um meio externo, por exemplo,


o teclado, permitir a entrada do dado, ou seja, ler um valor, por exemplo: Lcia, a ser
armazenado nessa varivel. Esse mesmo valor posteriormente acessado na varivel
PESSOA e enviado, escrito, para o meio externo, por exemplo, para uma impressora, que
imprimir no papel.

4.4. Exerccios
1. Explique com suas palavras onde utilizamos as entradas de dados? E de sada de
dados?

2. Declare 2 variveis com os seus respectivos tipos e atribua valores para a mesma,
leia e imprima o valor das suas variveis.

3. Atravs do exemplo da questo anterior, imprima o valor atribudo varivel e a


mensagem personalizada na mesma linha.

5. ESTRUTURAS DE CONTROLE
Para fazer um algoritmo, como vimos at agora, so necessrios vrios comandos
dentro de uma determinada estrutura. Como em um quebra-cabea, em que as peas
(comandos) so colocados em lugares estabelecidos ( estruturas ).
Utilizamos os conceitos de bloco lgico, entrada e sada de dados, variveis,
constantes, atribuies, expresses lgicas, relacionadas e aritmticas, bem como comandos
que traduzam esses conceitos de forma a representar o conjunto de aes. Essas estruturas,
chamadas Estruturas de Controle, permitem o controle do fluxo de execuo dos comandos,
tornando a soluo de um algoritmo diferente da encontrada em outro algoritmo.
Para que esse conjunto de aes se torne vivel, deve existir uma perfeita relao
lgica intrnseca pelo qual as aes so executadas e pelo qual regido o fluxo de execuo
do algoritmo. Nas Operaes Lgicas verificamos que na maioria das vezes necessitamos
tomar decises no andamento do algoritmo. Essas decises interferem diretamente no
andamento do programa.
Por meio das estruturas bsicas de controle do fluxo de execuo sequenciao,
seleo, repetio e da combinao delas, poderemos criar algoritmos para solucionar
nossos problemas. Basicamente as estruturas de controle de dados so de trs tipos principais:

Sequencial: Conjunto de comandos que so executados em uma seqncia


linear de cima para baixo.
Seleo ou Condicional: A partir de um teste condicional, uma instruo, ou
um conjunto de instrues, podem ser executados ou no, dependendo
exatamente do resultado do teste efetuado.
Repetio: Uma instruo ou o conjunto de instrues que ser executado
repetidamente, de acordo com o resultado de um teste condicional.

5.1. Estrutura de controle sequencial


A estrutura sequncial a mais convencional entre todas as possveis, pois ela
consiste na execuo de uma instruo de cada vez, onde o encerramento da primeira

Centro de Educao Profissional Sebastio de Siqueira CEPSS


Tcnico em Informtica Lgica de Programao e Estrutura de Dados 23

instruo permite o acionamento da instruo seguinte, respeitando a ordem de cima para


baixo.
Quando falamos em algoritmo, analogamente, comparamos com uma receita de bolo,
que significa fazer passo a passo o que est sendo iniciado. Se notarem os algoritmos que
construmos nos captulos anteriores, observar que existe uma receita de procedimento,
isto , existe um sequncia de execuo dos comandos. Essa estrutura de controle seqencial
tambm conhecida como Linear.
importante observar que sempre ser executado primeiro o bloco de declaraes e
na sequncia o bloco de instrues. A execuo da palavra reservada fim encerra a execuo
do algoritmo. Observe o exemplo a seguir:

Incio
real NOTA; // cria uma varivel real denominada NOTA
escreva("Informa a nota da prova: "); // orientao para o usurio
leia(NOTA); // leitura e armazenamento do valor informado
escreva("Nota = ", NOTA);// mostra a mensagem e o contedo de NOTA
fim

5.2. Estrutura de controle seleo ou condicional


Na lgica de programao torna-se primordial a tomada de decises. Para a tomada
de uma deciso lgica utilizaremos a estrutura de controle condicional, tambm conhecida
como: Estrutura de Controle Decisria ou de Deciso ou Estrutura de Controle Alternativa.
Essa estrutura executa um ou vrios comandos, desde que seja satisfeita uma
condio, ou vrias, representada por uma expresso lgica. Este tipo de estrutura permite a
escolha de um caminho sequencial a ser executado. Primeiramente, ela efetua um teste
condicional que definir o caminho de execuo do algoritmo baseado no resultado deste
teste.
Os testes condicionais so baseados na lgica convencional, podem obter o resultado
de verdadeiro ou falso. Estes testes podem ser efetuados sobre operaes relacionais simples
ou com expresses lgicas complexas que resultem em um valor lgico (verdadeiro ou falso).
As estruturas de seleo podem ser classificadas de 4 formas diferentes, sendo esta
classificao baseada na organizao lgica existente em cada situao. Esta classificao se
resume em:
Seleo simples
Seleo composta
Seleo encadeada
Seleo de mltipla escolha

5.2.1. Estrutura de controle condicional simples


Neste tipo de seleo proposto um teste condicional, que sendo verdadeiro
possibilitar a execuo de uma instruo ou um conjunto de instrues (bloco condicional)
especficas.

5.2.1.1. Sintaxe do comando se......ento

se <condio>

ento <comandos>

Centro de Educao Profissional Sebastio de Siqueira CEPSS


Tcnico em Informtica Lgica de Programao e Estrutura de Dados 24

fim-se

Para entender essa estrutura deve-se, analogamente, pensar no problema: leia um


nmero; se ele for maior que 10, multiplique por 0,1. Para solucion-lo, com certeza, voc
tem que fazer a pergunta: o nmero maior que 10? . Se a resposta for positiva, basta
multiplicar o nmero por 0,1. Se for negativa, no preciso fazer nada.

EXEMPLO 1:

Incio
NUMERO: numrico
leia NUMERO
se NUMERO > 10
ento NUMERO NUMERO * 0,1
fim-se
fim

No respectivo algoritmo ir verificar se o nmero recebido maior que 10, caso seja
verdadeiro o seu resultado ser a clusula ento, realizando a multiplicao do nmero
recebido por 0,1 (NUMERO NUMERO * 0,1), sendo falso no far nada, pois no
colocamos uma clusula para essa finalidade e no escrevemos o algoritmo para impresso do
resultado. Se quisermos atribuir uma impresso do resultado obtido pela condio, deveremos
usar o comando escreva.

Incio
NUMERO: numrico
leia NUMERO
se NUMERO > 10
ento NUMERO NUMERO * 0,1
fim-se
escreva O NMERO : , NMERO
fim

A estrutura se/ento/fim-se denomina-se Estrutura Condicional Simples. Ela


determina que, se a condio for satisfeita, ser executado o comando (ou comandos) que
estiver entre as palavras ento e fim-se.

EXEMPLO 2: Fazer um algoritmo para ler um nmero e verificar se ele maior que
100. Se for, o algoritmo deve somar 200 a esse nmero. No final, o algoritmo deve
imprimir o resultado da soma.

Soluo:

a. O enunciado do problema indica a necessidade de uma varivel correspondente


para o nmero.

Incio
NUMERO: numrico

b. Como dito no enunciado, o algoritmo deve ler um nmero.

Incio
NUMERO: numrico

Centro de Educao Profissional Sebastio de Siqueira CEPSS


Tcnico em Informtica Lgica de Programao e Estrutura de Dados 25

leia NUMERO

c. O algoritmo deve verificar se o valor que est na varivel NUMERO ou no


maior que 100 ( estrutura condicional).

Incio
NUMERO: numrico
leia NUMERO
se NUMERO > 100

d. Se o resultado da relao NUMERO > 100 for verdadeiro, o algoritmo deve


acrescentar 150 ao valor do contedo da varivel NUMERO.

Incio
NUMERO: numrico
leia NUMERO
se NUMERO > 100
ento NUMERO NUMERO * 0,1

e. Se o resultado da relao NUMERO > 100 for verdadeiro, o algoritmo deve


acrescentar 200 ao valor do contedo da varivel NUMERO.

Incio
NUMERO: numrico
leia NUMERO
se NUMERO > 100
ento NUMERO NUMERO + 200
fim-se

f. Para finalizar, o algoritmo deve imprimir o novo nmero armazenado.

Incio
NUMERO: numrico
leia NUMERO
se NUMERO > 100
ento NUMERO NUMERO + 200
fim-se
escreva O nmero : , NUMERO
fim

5.2.2. Estrutura de controle condicional composta

5.2.2.1. Sintaxe do comando se...ento...seno...fim-se

se <condio>

ento <comandos>
seno <comandos>

fim-se

Centro de Educao Profissional Sebastio de Siqueira CEPSS


Tcnico em Informtica Lgica de Programao e Estrutura de Dados 26

A estrutura de controle condicional simples, ou estrutura condicional simples,


possibilita a execuo de comandos somente se a condio for verdadeira. Se a condio for
falsa, no se pode executar qualquer comando dentro dessa estrutura. Para isso, existe a
estrutura de controle condicional composta, ou estrutura condicional composta, formada pela
mesma estrutura da condicional simples, acrescida da clusula seno aps o ltimo comando
da clusula ento.

EXEMPLO 1:

Incio
NUMERO: numrico
NUMERO 13
se NUMERO <= 30
ento NUMERO (NUMERO/NUMERO) * NUMERO
seno NUMERO NUMERO + NUMERO
fim-se
escreva O nmero : , NUMERO
fim

O resultado do comando escreva ser O NMERO : 13.

EXEMPLO 2:

Incio
NUMERO: numrico
NUMERO 23
se NUMERO >= 30
ento NUMERO (NUMERO/NUMERO) * NUMERO
seno NUMERO NUMERO + NUMERO
fim-se
escreva O nmero : , NUMERO
fim

O resultado do comando escreva ser O NMERO : 46.


EXEMPLO 3: Faa um algoritmo para ler o nome de um aluno e sua mdia final. O
resultado desse algoritmo deve ser uma mensagem informando se o aluno foi aprovado
ou no. O critrio de aprovao ter mdia igual ou superior a 6,0. Represente o
algoritmo em pseudocdigo.

Soluo:
a. O enunciado do problema indica dois dados de entrada: o nome do aluno e a
mdia final. O primeiro passo, portanto, declarar uma varivel literal para o
nome e uma varivel numrica para a mdia final.
Incio
NOME: literal
MEDIA: numrico

b. O algoritmo deve ler as variveis.


Incio
NOME: literal
MEDIA: numrico
leia NOME

Centro de Educao Profissional Sebastio de Siqueira CEPSS


Tcnico em Informtica Lgica de Programao e Estrutura de Dados 27

leia MEDIA

c. O algoritmo deve atribuir valores a serem armazenados nas variveis como


valores iniciais para NOME e MEDIA, como no enunciado no especificou o
valor inicial atribuiremos NOME = Luciana; MEDIA = 4.

Incio
NOME: literal
MEDIO: numrico
leia NOME
leia MEDIO

d. A prxima etapa verificar (testar) se a mdia final ou no maior que 6,0,


por meio do comando se. Se for, o algoritmo deve imprimir a mensagem
informando que o aluno est aprovado.

Incio
NOME: literal
MEDIA: numrico
leia NOME
leia MEDIA
se MEDIO >= 6
ento escreva O aluno , NOME, est aprovado

e. Se a mdia for menor que 6,0, deve aparecer a mensagem dizendo que o aluno
est reprovado. Nesse caso, deve ser utilizado o parmetro seno.

Incio
NOME: literal
MEDIA: numrico
leia NOME
leia MEDIA
se MEDIO >= 6
ento escreva O aluno , NOME, est aprovado !
seno escreva O aluno , NOME,est reprovado !
fim-se
fim

5.2.3. Seleo encadeada


A instruo de seleo (SE) pode ser encadeada uma dentro da outra, seja no bloco
verdadeiro (ento) ou falso (seno). Todas as instrues programveis podem estar dentro de
qualquer um dos blocos da instruo de seleo.

O encadeamento destas instrues tambm chamado de aninhamento de instrues


de seleo, no existindo um limite de quantos testes condicionais podem estar dentro de
outro. Quem estabelece este tipo de limite a soluo lgica proposta no algoritmo para
alcanar uma soluo eficiente.

Centro de Educao Profissional Sebastio de Siqueira CEPSS


Tcnico em Informtica Lgica de Programao e Estrutura de Dados 28

5.2.3.1. SINTAXE DO COMANDO SE......ENTO ......SENO SE.....ENTO....

se <condio>

ento <comandos>
seno se <comandos>

fim-se

Nos problemas com vrios testes/comparaes, portanto, com vrios comandos se,
necessrio encadear os comandos, inserindo um dentro do outro, para aplicar e verificar todas
as solues possveis.

EXEMPLO 1: Faa um algoritmo para ler duas notas de um aluno. Sendo a mdia
aritmtica das notas for maior que 7,0, deve aparecer a mensagem Mdia superior
mdia mnima (7,0); se for igual a 7,0, Mdia igual mdia mnima (7,0); se for
menor que 7,0, Mdia inferior mdia mnima(7,0). Represente o algoritmo em
pseudocdigo.

Solues:

a. O enunciado do problema indica duas notas e a mdia aritmtica das duas, ou


seja, trs variveis, que devem ser declaradas.

Incio
NOTA_1, NOTA_2, MEDIA: numrico

b. O algoritmo deve ler as duas variveis.

Incio
NOTA_1, NOTA_2, MEDIA: numrico
leia NOTA_1, NOTA_2

c. A prxima etapa fazer a mdia aritmtica das notas ( Soma dos valores
dividida pela quantidade dos valores ).

Incio
NOTA_1, NOTA_2, MEDIA: numrico
leia NOTA_1, NOTA_2
MEDIA (NOTA_1 + NOTA_2) / 2

d. Se a mdia for menor que 7,0, deve aparecer a mensagem informada no


enunciado, ou seja, Mdia superior mdia mnima (7,0).

Incio
NOTA_1, NOTA_2, MEDIA: numrico
leia NOTA_1, NOTA_2
MEDIA (NOTA_1 + NOTA_2) / 2
se MEDIA > 7
ento escreva Mdia superior mdia mnima (7,0)

Centro de Educao Profissional Sebastio de Siqueira CEPSS


Tcnico em Informtica Lgica de Programao e Estrutura de Dados 29

e. Agora faremos os outros testes restantes. O primeiro solucionado pela opo


seno, que conter outro comando se que vai fazer o teste. Dentro do comando
se, utilize a opo ento para executar os comandos necessrios caso a resposta
do teste seja afirmativa.
Incio
NOTA_1, NOTA_2, MEDIA: numrico
leia NOTA_1, NOTA_2
MEDIA (NOTA_1 + NOTA_2) / 2
se MEDIA > 7
ento escreva Mdia superior mdia mnima (7,0)
seno se MEDIA = 7
ento escreva Mdia igual mdia mnima (7,0)

f. O segundo teste feito por excluso, ou seja, se a resposta do primeiro teste


no for afirmativa, s pode ser negativa. Para executar as aes necessrias
para esse caso, utilize a opo seno.

Incio
NOTA_1, NOTA_2, MEDIA: numrico
leia NOTA_1, NOTA_2
MEDIA (NOTA_1 + NOTA_2) / 2
se MEDIA > 7
ento escreva Mdia superior mdia mnima (7,0)
seno se MEDIA = 7
ento escreva Mdia igual mdia mnima (7,0)
seno escreva Mdia inferior mdia mnima (7,0)
fim-se
fim-se
fim

EXEMPLO 2: Faa um algoritmo para ler duas notas de um aluno. Sendo a mdia
aritmtica das notas for maior que 7,0, deve aparecer a mensagem Mdia superior
mdia mnima (7,0); se for igual a 7,0, Mdia igual mdia mnima (7,0); se for
menor que 7,0, Mdia inferior mdia mnima(7,0). Represente o algoritmo em
pseudocdigo. (Outra forma de fazer o mesmo exerccio do Exemplo 1).

Incio
NOTA_1, NOTA_2, MEDIA: numrico
leia NOTA_1, NOTA_2
MEDIA (NOTA_1 + NOTA_2) / 2
se MEDIA > 7
ento escreva Mdia superior mdia mnima (7,0)
fim-se
se MEDIA < 7
ento escreva Mdia inferior mdia mnima (7,0)
fim-se
se MEDIA = 7
ento escreva Mdia igual mdia mnima (7,0)
fim-se
fim

Centro de Educao Profissional Sebastio de Siqueira CEPSS


Tcnico em Informtica Lgica de Programao e Estrutura de Dados 30

OBS: Nos exemplos apresentados, Exemplos 1 e 2, resolveram o problema apresentado,


porm, a execuo so primeiro algoritmo ( Exemplo 1 ) ser mais rpida, pois, ele s
contm dois testes ( MEDIA > 7,0 e MEDIA = 7,0), enquanto o segundo apresenta trs
testes ( MEDIA > 7,0; MEDIA < 7,0 e MEDIA = 7,0), tornando o seu processamento
mais demorado, ou seja, mais lento.

5.2.4. Seleo de mltipla escolha


Outra instruo condicional, muito utilizada nas avaliaes de igualdade, a seleo
de mltipla escolha. Ela verifica somente a igualdade do valor avaliado, onde sua veracidade
resultar na execuo de um bloco, ou de uma nica instruo especfica.

5.2.4.1. Sintaxe do comando escolha / caso / fim escolha


escolha (X)
caso <v1>
comandos
caso <v2>
comandos
caso <v3>
comandos
caso contrario
comandos
fim escolha

Os cases [<v1>, <v2> e <v3>] so supostos valores a serem relacionados por meio
da operao de igualdade.

Exemplo:

Incio
inteiro EPOCA;
escreva("Digite o perodo trimestral do ano em que estamos: ");
leia(EPOCA);
escolha (EPOCA) { instruo de mltipla escolha sobre EPOCA }
caso 1: escreva ("vero"); { testes de igualdades sobre EPOCA }
caso 2: escreva ("outono");
caso 3: escreva ("inverno");
caso 4: escreva ("primavera");
caso contrario: escreva ("perodo invlido");
fim escolha;
fim

5.3. Estruturas de repetio


Utilizamos os comandos de repetio quando desejamos que um determinado
conjunto de instrues ou comandos sejam executados um nmero definido ou indefinido
de vezes, ou enquanto um determinado estado de coisas prevalecer ou at que seja alcanado.
Por exemplo, para encher uma caixa, coloca-se um objeto dentro dela e verifica, caso
constate que a caixa ainda no esteja cheia, coloca-se mais objetos, repetindo esta ao at
atingir o objetivo: encher a caixa.
O processamento de valores pode ocorrer diversas vezes sobre uma mesma lgica,
porm os dados a serem manipulados podem ser diferentes, como no clculo da tabuada de

Centro de Educao Profissional Sebastio de Siqueira CEPSS


Tcnico em Informtica Lgica de Programao e Estrutura de Dados 31

um nmero. Este clculo realiza a mesma operao de multiplicao sobre os valores


numricos inteiros sequencias, normalmente iniciados em um (1) e seguindo at o nmero dez
(10) quando estamos aprendendo a calcular e memorizar o resultado obtido nesta operao.

Trabalharemos com os seguintes modelos de comandos de repetio:

Enquanto/faa/fim-enquanto
Repita/at que
Para/ faa /fim-para

5.3.1. Estrutura de controle de repetio


5.3.1.1. Sintaxe do comando enquanto/faa/fim-enquanto

A instruo de repetio ENQUANTO ... FAA permite a execuo do conjunto de


comandos pertencentes ao seu bloco de repetio, sendo eles executados a partir de um teste
condicional verdadeiro. Enquanto este teste permanecer verdadeiro a repetio executada
continuamente, sendo encerrada somente quando a condio for falsa.
Efetua um teste lgico antes de iniciar as instrues de repetio (ou looping). O
controle pode ser feito pelo usurio ou automaticamente por um contador.

enquanto <condio> faa

<comandos a serem repetidos>

fim-enquanto

EXEMPLO 1: Leia o nome de uma pessoa e declare apenas uma varivel.

Incio
NOME: literal
leia NOME
escreva NOME
fim

EXEMPLO 2: Para ler o nome de duas pessoas, basta declarar mais uma varivel.
Observe o acrscimo de um dado provoca o aumento do tamanho do algoritmo.

Incio
NOME1, NOME2: literal
leia NOME1
leia NOME2
escreva NOME1
escreva NOME2
fim

OBS: Caso fossem lidos cinco nomes de pessoas teramos que declarar cinco variveis e
aplic-las os comandos leia e escreva. Como veremos no Exemplo 3, resolveremos essa
situao utilizando a estrutura de repetio, porm, utilizando uma varivel chamada
NMERO_PESSOAS para que no ocorra erro na execuo do algoritmo, o qual
desempenhou o papel de contador, ou seja, contagem da quantidade dos nomes lidos e
escritos.

Centro de Educao Profissional Sebastio de Siqueira CEPSS


Tcnico em Informtica Lgica de Programao e Estrutura de Dados 32

EXEMPLO 3: Para ler os nomes de duas pessoas, basta declararem mais uma varivel.
Observe o acrscimo de um dado provoca o aumento do tamanho do algoritmo.
Incio
NOME: literal
NUMERO_PESSOAS: numrico
NUMERO_PESSOAS 0
enquanto NUMERO_PESSOAS < 5 faa
leia NOME
escreva NOME
fim-enquanto
fim

Aprenda a utilizar a estrutura de repetio, executando esse algoritmo com os cinco


nomes: Plnio, Amanda, Eduarda, David e Lucas.

a. Na primeira linha feita a declarao literal NOME; na segunda, a declarao


da varivel numrica NUMERO_PESSOAS, que vai servir de contadora. Na
terceira linha atribudo o valor 0 varivel contadora.

Incio
NOME: literal
NUMERO_PESSOAS: numrico
NUMERO_PESSOAS 0

Resumo dos dados no passo 1.

Na primeira linha feita a declarao literal NOME; na segunda, a declarao da


varivel numrica NUMERO_PESSOAS, que vai servir de contadora. Na terceira linha
atribudo o valor 0 varivel contadora.

NOME NUMERO_PESSOAS Nome lido Nome escrito


<vazio> 0 <nenhum> <nenhum>
TABELA 18 DECLARAO DE VETORES PASSO 1

b. Na primeira linha feita a declarao literal NOME; na segunda, a declarao


da varivel numrica NUMERO_PESSOAS, que vai servir de contadora. Na
terceira linha atribudo o valor 0 varivel contadora.

Incio
NOME: literal
NUMERO_PESSOAS: numrico
NUMERO_PESSOAS 0
enquanto NUMERO_PESSOAS < 5 faa

c. O primeiro comando dessa estrutura o comando leia, que deve ler o primeiro
nome, Arthur e coloc-lo na varivel NOME.

Incio
NOME: literal
NUMERO_PESSOAS: numrico
NUMERO_PESSOAS 0
enquanto NUMERO_PESSOAS < 5 faa
leia NOME

Centro de Educao Profissional Sebastio de Siqueira CEPSS


Tcnico em Informtica Lgica de Programao e Estrutura de Dados 33

Resumo dos dados no passo 3.


NOME NUMERO_PESSOAS Nome lido Nome escrito
Amanda 0 Amanda <nenhum>
TABELA 19 DECLARAO DE VETORES PASSO 3

d. O contedo de varivel NOME deve ser escrito, ou seja, transmitido para um


perifrico de sada (vdeo ou impressora). Como o nome Amanda foi lido e
escrito, deve ser somado o valor 1 varivel NUMERO_PESSOAS.
Incio
NOME: literal
NUMERO_PESSOAS: numrico
NUMERO_PESSOAS 0
enquanto NUMERO_PESSOAS < 5 faa
leia NOME
escreva NOME
NUMERO_PESSOAS NUMERO_PESSOAS + 1

Resumo dos dados no passo 4.


NOME NUMERO_PESSOAS Nome lido Nome escrito
Amanda 1 Amanda Amanda
TABELA 20 DECLARAO DE VETORES PASSO 4

e. Ao chegar ao parmetro fim-enquanto, volte ao comando enquanto para


reinici-lo.
Incio
NOME: literal
NUMERO_PESSOAS: numrico
NUMERO_PESSOAS 0
enquanto NUMERO_PESSOAS < 5 faa
leia NOME
escreva NOME
NUMERO_PESSOAS NUMERO_PESSOAS + 1
fim-enquanto
fim

f. O segundo nome, Plnio, includo, pois a varivel NUMERO_PESSOAS


menor que 5, ou seja, igual a 1, e novamente todos os comandos dentro da
estrutura de repetio so executados.

OBS: Depois que o algoritmo ler e escrever o nome Plnio, somado 1 ao valor da
varivel NUMERO_PESSOAS (portanto: NUMERO_PESSOAS
NUMERO_PESSOAS + 2).

Resumo dos dados no passo 6.


NOME NUMERO_PESSOAS Nome lido Nome escrito
Amanda Amanda
Plnio 2
Plnio Plnio
TABELA 21 DECLARAO DE VETORES PASSO 6

1. O comando enquanto reiniciado com a verificao NUMERO_PESSOAS <


5. Como o nmero de pessoas 2 (menor que cinco), a execuo do algoritmo
prossegue, dessa vez para incluir o nome Eduarda, correndo mais um

Centro de Educao Profissional Sebastio de Siqueira CEPSS


Tcnico em Informtica Lgica de Programao e Estrutura de Dados 34

acrscimo no valor da varivel NUMERO_PESSOAS. Ao chegar no


parmetro fim-enquanto, o comando enquanto reiniciado.

Resumo dos dados do passo 8.


NOME NUMERO_PESSOAS Nome lido Nome escrito
Amanda Amanda
Eduarda 3 Plnio Plnio
Eduarda Eduarda
TABELA 22 DECLARAO DE VETORES PASSO 7

g. O comando enquanto reiniciado com a verificao NUMERO_PESSOAS <


5. Como o nmero de pessoas 3 (menor que cinco), a execuo do algoritmo
prossegue, dessa vez para incluir o nome David, ocorrendo mais um acrscimo
no valor da varivel NUMERO_PESSOAS.

Resumo dos dados do passo 8.


NOME NUMERO_PESSOAS Nome lido Nome escrito
Amanda Amanda
4 Plnio Plnio
David
Eduarda Eduarda
David David
TABELA 23 DECLARAO DE VETORES PASSO 8

h. O comando enquanto reiniciado com a verificao NUMERO_PESSOAS <


5. Como o nmero de pessoas 4 (menor que cinco), a execuo do algoritmo
prossegue, dessa vez para incluir o nome Lucas, ocorrendo mais um acrscimo
no valor da varivel NUMERO_PESSOAS.

Resumo dos dados do passo 9.


NOME NUMERO_PESSOAS Nome lido Nome escrito
Amanda Amanda
5 Plnio Plnio
Lucas Eduarda Eduarda
David David
Lucas Lucas
TABELA 24 DECLARAO DE VETORES PASSO 9

i. O comando enquanto reiniciado com a verificao NUMERO_PESSOAS <


5. Como o nmero de pessoas 5 e no menor que esse valor, a estrutura
enquanto/faa/fim-enquanto finalizada. Com isso, a execuo do algoritmo
passa para o prximo comando depois do parmetro fim-enquanto. Neste caso,
o prximo comando finaliza o algoritmo.

OBS: Ao utilizar uma varivel como contadora, fique atento para o valor inicial a ser
inserido nessa varivel e para a sentena a ser inserida na estrutura enquanto/fim/fim-
enquanto, pois, dependendo desse valor inicial e do lugar onde foi colocado o acrscimo a
varivel contadora a expresso pode ser outra. Por exemplo, se, no exerccio anterior,
voc tivesse inserido 1 no valor inicial da varivel contadora ( NMERO_PESSOAS), a
expresso na estrutura enquanto/faa/fim-enquanto deveria ser NUMERO_PESSOAS <
= 5, pois, na primeira leitura do nome, o valor da varivel contadora no final da
estrutura seria 2.

Centro de Educao Profissional Sebastio de Siqueira CEPSS


Tcnico em Informtica Lgica de Programao e Estrutura de Dados 35

Quando o algoritmo estivesse executando a leitura do quarto nome, o valor da varivel


NUMERO_PESSOAS seria 5. Por isso, voc deve alterar o valor para <= 5, para que o
quinto nome tambm seja lido. Para evitar preocupaes, o ideal atribuir o valor 0
(zero) varivel contadora.
A tcnica de variveis contadoras deve ser aplicada quando se sabe a quantidade de
vezes que sero repetidos os comandos. No exemplo anterior, estava claro que cinco
nomes seriam lidos e escritos, ou seja, os comandos leia e escreva seriam repetidos cinco
vezes.

5.3.1.2. Sintaxe do comando repita/at que

A instruo de repetio REPITA...AT possui caractersticas relevantes na sua


lgica de execuo. As principais caractersticas dessa instruo so:

O teste condicional para realizar a repetio sobre o bloco de instrues


existente entre a palavra reservada REPITA e AT executado somente no
final do bloco, conforme organizao sequencial do algoritmo.
O bloco entre as duas palavras reservadas desta instruo ser executado no
mnimo uma vez.
A repetio executada somente se o teste condicional for falso, pois sendo
ele verdadeiro a repetio encerrada.

repita

<comandos a serem repetidos>

at que <condio>

Essa estrutura semelhante estrutura enquanto/faa/fim, diferindo apenas no local


da condio de interrupo, que deve ser no final em vez de no incio da estrutura. Abaixo se
encontra o exemplo anterior com a aplicao da estrutura repita/at que.

Incio
NOME: literal
NUMERO_PESSOAS: numrico
NUMERO_PESSOAS 0
repita
leia NOME
escreva NOME
NUMERO_PESSOAS NUMERO_PESSOAS + 1
at que NUMERO_PESSOAS = 5
fim

5.3.1.3. Sintaxe do comando para/faa/fim-para

A instruo de repetio PARA... FAA executa um conjunto de instrues por uma


quantidade de vezes bem definidas (conhecidas).

para < varivel > de < valor inicial > at < valor final > passo < valor a ser acrescentado ou
diminudo> faa
<comandos a serem repetidos>
fim-para

Centro de Educao Profissional Sebastio de Siqueira CEPSS


Tcnico em Informtica Lgica de Programao e Estrutura de Dados 36

Essa estrutura quase similar estrutura enquanto/faa/fim-enquanto. A diferena


entre as duas que a varivel contadora (NUMERO_PESSOAS 0) e a condio de
interrupo (NUMERO_PESSOAS NUMERO_PESSOAS + 1) so eliminadas na
estrutura para/faa/fim-para. No exemplo a seguir, quando a execuo do algorismo
iniciada, o comando para inicializa a varivel NUMERO_PESSOAS com o valor 1 e executa
todos os comandos dentro da estrutura para/faa/fim-para. Essa estrutura vai acrescentando o
valor 1 e executando novamente os comandos at que o valor da varivel
NUMERO_PESSOAS seja 5.

Incio
NOME: literal
NUMERO_PESSOAS: numrico
para NUMERO_PESSOAS de 1 at 5 passo 1 faa
leia NOME
escreva NOME
fim-para NUMERO_PESSOAS = 5
fim

Caso queira que o valor do incremento da varivel contadora seja superior a 1,


coloque o valor depois da palavra passo.

para NUMERO de 1 at 100 passo 10 faa

A cada vez que se repetirem os comandos do exemplo, o valor 10 ser acrescentado


ao valor da varivel NUMERO, ou seja, incrementando de 10 em 10, sendo realizado o total
de 10 operaes.

para NUMERO de 1 at 100 passo 5 faa

A cada vez que se repetirem os comandos do exemplo, o valor 5 ser acrescentado ao


valor da varivel NUMERO, ou seja, incrementando de 5 em 5, sendo realizado o total de 20
operaes.

OBS: O padro do incremento de 1 em 1, sendo assim, no necessita coloc-lo no


parmetro passo, porm, se necessitar incrementar com valores diferentes de 1 dever
especificar no algoritmo.

5.3.2. Formas de controle de uma repetio


Quando sabemos o nmero de repeties usaremos uma varivel contadora, mas caso
no exista essa informao necessitaremos utilizar outra tcnica de marcao ou FLAG (do
ingls Sinalizador / Indicador: chamar a ateno de um programa enquanto ele est
executando para fornecer um resultado ou informar uma ao ou indicar alguma coisa
especial).
Essa tcnica marca o evento em que o usurio decide encerrar a repetio. As
estruturas de repetio possuem um forma diferenciada para controlar a quantidade de
repeties a serem executadas. Estes controles podem ser genericamente classificados em
automticos ou controlados pelo usurio do programa.

AUTOMTICO: Uma varivel auxiliar contar de quantas vezes ser executado o


conjunto de comandos (bloco de repetio), sem interferncia direta do usurio. O

Centro de Educao Profissional Sebastio de Siqueira CEPSS


Tcnico em Informtica Lgica de Programao e Estrutura de Dados 37

bloco ser repetido sempre a quantidade de vez prevista pelo desenvolvedor do


programa.
CONTROLADO PELO USURIO: O programa sempre respeitar a solicitao do
usurio, executando um bloco de repetio quantas vezes forem solicitadas pelo
usurio, respeitando a lgica existente no programa desenvolvido.

Incio
NOME: literal
leia Digite o nome de uma pessoa ou a palavra SAIR para encerrar, NOME
enquanto (NOME< >SAIR) e (NOME< >Sair) e (NOME< >sair) faa
escreva NOME
leia Digite o nome de uma pessoa ou a palavra SAIR para encerrar, NOME
fim-enquanto
fim

Esse algoritmo foi criado para ler os nomes de vrias pessoas, entretanto, no se
sabia quantos nomes seriam lidos. Para solucionar o problema, utilizou-se uma mensagem
para o usurio digitar quando quisesse SAIR ou prosseguir com as inseres dos nomes.
Como observado no algoritmo acima no utilizamos a varivel contadora, pois, no havia a
quantidade de nomes a serem lidos.
Dentro da estrutura enquanto/faa/fim-enquanto utilizamos como condio NOME <
> SAIR, ou seja, o valor digitado diferente da literal SAIR e Sair e sair (provveis
valores digitados pelo usurio), sendo diferente ocorre a insero de novo nome; sendo igual
ir para o fim-enquanto , realizando a sada da estrutura enquanto/fim-enquanto.

5.4. Varivel acumuladora


Outra varivel que o algoritmo pode conter a varivel acumuladora de valores. Ela
utilizada quando necessrio acumular vrios valores para a execuo de uma operao ou
obteno de um valor total.
Usando variveis acumuladoras podemos realizar vrias operaes, como: calcular a
mdia aritmtica de 20 nmeros, voc deve ir somando os valores e, no final, dividir a soma
pela quantidade de nmeros; para calcular o total de uma compra, voc deve ir somando os
valores dos produtos comprados at obter o total da compra.

EXEMPLO 1: Faa um algoritmo para realizar a mdia aritmtica de 15 nmeros.

Incio
NUMERO, MEDIA, SOMA, CONT_NUM: numrico
SOMA 0
para CONT de 1 at 10 faa
leia Digite um nmero: , NUMERO
SOMA SOMA + NUMERO
escreva NUMERO
fim-para MEDIA SOMA / CONT_NUM
fim

Temos a varivel CONT_NUM e acumuladora SOMA. A varivel acumuladora vai


adicionando (acumulando) cada valor lido e, no final, usada para calcular a mdia. Por isso,
ela deve iniciar com valor zero, que no vai interferir no valor final da mdia.

Centro de Educao Profissional Sebastio de Siqueira CEPSS


Tcnico em Informtica Lgica de Programao e Estrutura de Dados 38

5.5. Exerccios
1. Temos 3 tipos principais de estrutura de controle. Cite-os e mostre um exemplo
para cada estrutura de controle?

2.O algoritmo a seguir um exemplo de estrutura de controle de repetio usando o


comando fim..para, transforme-o nos algoritmos de controle de repetio usando os
comandos enquanto...faa e repita..at-que.

Incio
NOME: literal
NUM_PESSOAS: numrico
para NUM_PESSOAS de 1 at 10 faa
leia NOME
escreva O nome : , NOME
escreva Pessoa numero: , NUM_PESSOAS
fim-para NUM_PESSOAS = 10
fim

3. Atravs do exemplo da questo anterior,somente na estrutura fim..para, demonstre


qual a sada dos dados para cada passo executado at a finalizao do algoritmo.

4. Explique com suas palavras o uso da varivel acumuladora, para qu serve esse
tipo de varivel e quando indicado o seu uso.

Centro de Educao Profissional Sebastio de Siqueira CEPSS


Tcnico em Informtica Lgica de Programao e Estrutura de Dados 39

6. VETORES E MATRIZES
A quantidade de tipos de dados estipulados (tipos primitivos) no suficiente para
representar toda e qualquer informao que possa surgir. Portanto, em muitas situaes esses
recursos de representao so escassos, o que poderia ser suprido se existissem mais tipos de
dados ou, ainda melhor, se esses tipos pudessem ser 'construdos', criados, medida que se
fizessem necessrios.
Construiremos novos tipos, denominados tipos abstratos de dados, a partir da
composio de tipos primitivos. Esses novos tipos tm um formato denominado estrutura de
dados, que define como os tipos primitivos esto organizados.
As principais estruturas a serem manipuladas nos algoritmos so classificadas em
homogneas (de um mesmo tipo de dado) e heterogneas (tipos diferentes).

6.1. Estrutura de dados composta homognea


A elaborao de um algoritmo que armazene as notas de cinco alunos diferentes
poderia ser feita como sugerido no portugus estruturado a seguir. Criar variveis
homogneas ter a possibilidade de definir um novo tipo de dado, com a capacidade de
armazenar simultaneamente vrios valores do mesmo tipo. Um novo tipo na verdade utilizar
um dos tipos bsicos existentes para criar um elemento de armazenamento composto.
Uma varivel pode ser interpretada como um elemento e uma estrutura de dados
como um conjunto. Podemos considerar que uma varivel composta heterognea seja como
uma alcateia, e seus elementos (variveis) sejam como os lobos (que so da mesma espcie).
As estruturas de dados homogneas permitem agrupar diversas informaes
dentro de uma mesma varivel. Este agrupamento ocorrer obedecendo sempre ao mesmo
tipo de dado, e por esta razo que estas estruturas so chamadas homogneas.
A utilizao deste tipo de estrutura de dados recebe diversos nomes, como:
variveis indexadas, variveis compostas, variveis subscritas, arranjos, vetores, matrizes,
tabelas em memria ou arrays. Os nomes mais usados e que utilizaremos para estruturas
homogneas so: matrizes (genrico) e vetores (matriz de uma linha e vrias colunas).

Incio
real ALUNO1,ALUNO2,ALUNO3,ALUNO4,ALUNO5;
escreva("Informe a nota do 1 aluno: ");
leia (ALUNO1);
escreva("Informe a nota do 2 aluno: ");
leia (ALUNO2);
escreva("Informe a nota do 3 aluno: ");
leia (ALUNO3);
escreva("Informe a nota do 4 aluno: ");
leia (ALUNO4);
escreva("Informe a nota do 5 aluno: ");
leia (ALUNO5);
fim

Por meio deste algoritmo seria possvel ler 5 notas de 5 alunos diferentes e
armazen-las em 5 diferentes variveis. Uma instruo de repetio no melhoraria muito
esta lgica, pois os cinco valores precisaro estar disponveis independente dos outros valores
informados. Mas imagine se a leitura de todas as notas dos alunos do seu curso tivessem quer
ser lidas pelo seu algoritmo, o que faramos? E no prximo semestre quantos alunos seriam?

Centro de Educao Profissional Sebastio de Siqueira CEPSS


Tcnico em Informtica Lgica de Programao e Estrutura de Dados 40

em uma situao como esta que as estruturas de dados so fundamentais para o


processamento dos dados. Elas so de dois tipos bsicos: Homogneas (vetores e matrizes) e
Heterogneas (registros).

6.1.1. Varivel composta unidimensional


Trata-se de uma estrutura de dados (estrutura de armazenamento) capaz de manipular
vrios dados de mesmo tipo, porm distinguindo-os entre si por intermdio de uma posio.
Uma estrutura deste tipo conhecida como vetor.

6.1.1.1. Vetores

O Vetor uma varivel que pode conter vrias constantes do mesmo tipo. Veja o
exemplo a seguir.

345 235 546 45323 234234 43543 3444432 233233 112332


TABELA 25 ALOCAO DE VETORES NA MEMRIA

Esse esquema representa um vetor numrico, que pode ser denominado NUMEROS.
Ele possui nove posies, ou seja, nove locais possveis para armazenar constantes
numricas. O vetor prtico porque manipula um conjunto de dados do mesmo tipo sem que
seja necessrio declarar muitas variveis.

6.1.1.1.1. Declarando o vetor

Quando um vetor declarado, o computador reserva uma parte da memria e a


divide em determinada quantidade de partes ( indicadas na declarao ) que iro armazenar
asa constantes de um mesmo tipo.

OBS: O vetor s pode armazenar constantes de um nico tipo: literal, numrico ou lgico. O
tipo lgico geralmente no muito utilizado em vetores.

6.1.1.1.2. Sintaxe do vetor

< nome do vetor> : vetor [< posio inicial do vetor >., < posio final do vetor >] < tipo de constante que o
vetor poder conter>

OBS: Podemos chamar os vetores de matrizes, pois, vetores nada mais que matrizes com
uma linha e uma ou mais colunas. J matrizes, veremos mais adiante, so constitudas por
uma/vrias linhas com uma/vrias colunas, ou seja, mais de uma dimenso.
Os vetores iniciam na posio 0, ou seja, para acessar a informao 1 estar na
posio 0, a informao 2 na posio 1 e sucessivamente. Por isso altamente recomendado
iniciar os vetores na posio 1, pois, quando utilize-se 5 posies, iniciando em 1 o seu ultimo
elemento estar na posio 5. Caso no estabelea a posio inicial do vetor como 1, o mesmo
ser atribudo da posio 0 at a posio 4, obtendo assim 5 posies.

Centro de Educao Profissional Sebastio de Siqueira CEPSS


Tcnico em Informtica Lgica de Programao e Estrutura de Dados 41

6.1.1.1.3. Inserindo valores em cada parte do vetor

Quando um vetor declarado, so reservados espaos na memria para armazenar as


constantes, contudo, devemos acessar esses espaos por meio da posio que se deseja
acessar.

6.1.1.1.4. Vetores x Espao alocado na memria

EXEMPLO 1: Declarar um vetor com cinco posies, possuindo na posio 1 o primeiro


elemento e atribuir valores para as suas posies.

NUMEROS: vetor [1..5] numrico

Quando um vetor declarado, ele se apresenta assim na memria:

VETOR[1] VETOR[2] VETOR[3] VETOR[4] VETOR[5]


TABELA 26 ESPAO ALOCADO NA MEMRIA PELOS VETORES

Para colocarmos os nmeros nos espaos devemos realizar as suas respectivas


atribuies.

NUMEROS[1] 233908866545
NUMEROS[2] 955
NUMEROS[3] 36756
NUMEROS[4] 1255566
NUMEROS[5] 223456

Aps essas atribuies, o vetor ser preenchido com os seguintes valores.

233908866545 955 36756 1255566 223456


VETOR[1] VETOR[2] VETOR[3] VETOR[4] VETOR[5]
TABELA 27 ESPAO ALOCADO NA MEMRIA PELOS VETORES

Aps a insero dos valores nas respectivas posies, podemos acessar as suas
variveis atravs do comando leia NUMEROS [posio_do_vetor]. Para acessar o vetor na
posio 4.

leia NUMEROS[4]

Impresso do valor que est armazenado na posio 5 do vetor.

escreva (O Vetor na posio 5 : , NUMERO[5])

6.1.1.1.5. Montando o vetor

EXEMPLO 1: Para montar um vetor ( ler as constantes e armazen-las), utilizaremos


como exemplo a leitura dos nomes de pessoas para ler e armazenas 20 nomes.

1. Declararemos o vetor, onde sero lidos 20 nomes, o vetor deve possuir


20 posies para armazen-la. Declare tambm a varivel PESSOA,
que conter o nome lido e, posteriormente, armazenado no vetor.

Centro de Educao Profissional Sebastio de Siqueira CEPSS


Tcnico em Informtica Lgica de Programao e Estrutura de Dados 42

Incio
PESSOAS: vetor [1..20] literal
PESSOA: literal

2. Declararemos a varivel contadora NUM_PESSOAS , para controlar a


repetio da leitura dos 20 nomes, e a varivel POS, que ser tambm
numrica, indicaremos a posio onde ser colocado o nome lido.

Incio
PESSOAS: vetor [1..20] literal
PESSOA: literal
NUM_PESSOAS, POS: numrico

OBS: Quando utilizamos a tcnica da varivel contadora, no esquea de inicializ-la,


isto , atribuir um valor inicial a ela.

3. Inicialize as variveis contadora e POS com o valor 0. Esse valor indica


que no foi inserido nenhum dado no vetor.

Incio
PESSOAS: vetor [1..20] literal
PESSOA: literal
NUM_PESSOAS, POS: numrico
NUM_PESSOAS 0
POS 0

4. As leituras dos nomes das 15 pessoas devem ser feitas dentro de uma
estrutura de repetio. Utilize a estrutura enquanto/faa/fim-enqunanto.

Incio
PESSOAS: vetor [1..20] literal
PESSOA: literal
NUM_PESSOAS, POS: numrico
NUM_PESSOAS 0
POS 0
enquanto NUM_PESSOAS < 20 faa
leia PESSOA

5. Aps a leitura dos nomes, o primeiro nome deve ser armazenado na


primeira posio. Para isso, acrescentaremos o valor 1 ao valor da
varivel POS.

Incio
PESSOAS: vetor [1..20] literal
PESSOA: literal
NUM_PESSOAS, POS: numrico
NUM_PESSOAS 0
POS 0
enquanto NUM_PESSOAS < 20 faa
leia PESSOA
POS POS + 1

Centro de Educao Profissional Sebastio de Siqueira CEPSS


Tcnico em Informtica Lgica de Programao e Estrutura de Dados 43

6. Atribuiremos o nome lido posio 1 do vetor PESSOAS.

Incio
PESSOAS: vetor [1..20] literal
PESSOA: literal
NUM_PESSOAS, POS: numrico
NUM_PESSOAS 0
POS 0
enquanto NUM_PESSOAS < 20 faa
leia PESSOA
POS POS + 1
PESSOAS [POS] PESSOA

7. Acrescente o valor 1 varivel contadora.

Incio
PESSOAS: vetor [1..20] literal
PESSOA: literal
NUM_PESSOAS, POS: numrico
NUM_PESSOAS 0
POS 0
enquanto NUM_PESSOAS < 20 faa
leia PESSOA
POS POS + 1
PESSOAS [POS] PESSOA
NUM_PESSOAS NUM_PESSOAS + 1
fim-enquanto
fim

O algoritmo demonstrado chegou ao resultado esperado, mas o problema poderamos


ler 20 nomes de uma maneira mais fcil e rpida, utilizando a estrutura para/fim/fim-para..

EXEMPLO 2: Para montar um vetor ( ler as constantes e armazen-las), utilizaremos


como exemplo a leitura dos nomes de pessoas para ler e armazenas 20 nomes.

1. Declare novamente o vetor, sem, entretanto, declarar a varivel


PESSOA. Assim, a leitura do nome ser feita diretamente no local do
vetor, semelhante ao que acontece com uma varivel simples. O que
muda que agora deve ser dada uma posio para essa varivel, que o
vetor.

Incio
PESSOAS: vetor [1..20] literal

OBS: Com vetores, deve-se usar uma varivel para contar ou para indicar a posio, ou
para ambas as funes.

Centro de Educao Profissional Sebastio de Siqueira CEPSS


Tcnico em Informtica Lgica de Programao e Estrutura de Dados 44

2. Na primeira opo de algoritmo, as variveis contadora e indicadora de


posio foram inicializadas com o mesmo valor (NUM_PESSOAS0;
POS0); alm do mais, o mesmo valor foi acrescentado a elas
(NUM_PESSOAS NUM_PESSOAS +1, POS POS +1). Para essa
resposta, utilize a varivel POS tanto para contar como para indicar a
posio do vetor.

Incio
PESSOAS: vetor [1..20] literal
POS: numrico

3. Se utilizar a estrutura para/fim/fim-para, voc no precisar inicializar


a varivel POS, pois, com o uso do comando para o valor inicial ter o
valor igual a 1. Dentro da estrutura de repetio, o valor lido pelo
comando leia ser armazenado diretamente no vetor, como se fosse
uma varivel simples

Incio
PESSOAS: vetor [1..20] literal
POS: numrico
para POS de 1 at 20 faa
leia PESSOAS [POS]
fim-para
fim

OBS: Quando o parmetro passo NO utilizado no comando para, o valor 1


automaticamente acrescentado ou diminudo at chegar ao valor final.

6.1.1.1.6. PESQUISA EM VETORES

A pesquisa consiste na verificao da existncia de um determinado valor dentro de


um vetor, e, em caso afirmativo, da posio da ocorrncia. Veremos dois mtodos de pesquisa
bastante difundidos: Pesquisa Seqencial e Pesquisa Binria.

6.1.1.1.7. PESQUISA SEQUENCIAL

Depois que voc ordena os valores de um vetor, a pesquisa para localiz-los fica
menos penosa. Existem vrios mtodos de pesquisa em vetor; para a maioria, pr-requisito
que o vetor esteja ordenado, em ordem crescente ou decrescente. Voc vai conhecer os
mtodos de pesquisa seqencial e binria.
O mtodo de pesquisa seqencial o mais simples: um valor lido e, em seguida,
pesquisa em um vetor at que seja encontrado ou que o vetor termine. Esse mtodo mais
eficaz em vetores com valores desordenados, mas tambm o mtodo mais lento de pesquisa,
pois, se no localizar o valor pesquisado, percorre todo o vetor e no somente uma parte dele,
como nos outros mtodos. O desempenho desse mtodo pode melhorar se ele se aplicado em
um vetor ordenado; mesmo assim, ainda ser inferior aos outros mtodos.

6.1.1.1.8. PESQUISA BINRIA

Esse mtodo mais rpido que o seqencial, pois pesquisa um nmero menor de
dados. A cada teste, pesquisada somente a parte do vetor que contm valores que satisfaam

Centro de Educao Profissional Sebastio de Siqueira CEPSS


Tcnico em Informtica Lgica de Programao e Estrutura de Dados 45

a condio da pesquisa (ser o valor maior ou menor que o nmero lido). Para que essa
pesquisa seja feita, imprescindvel que o vetor esteja ordenado.

Centro de Educao Profissional Sebastio de Siqueira CEPSS


Tcnico em Informtica Lgica de Programao e Estrutura de Dados 46

6.1.2. VARIVEL COMPOSTA MULTIDIMENSIONAL


Este tipo de estrutura tem sua principal utilizao vinculada criao de tabelas.
Caracteriza-se por ser definida uma nica varivel vinculada dimensionada com um
determinado tamanho. A dimenso de uma matriz constituda por constantes inteiras e
positivas. Os nomes dados s matrizes seguem as mesmas regras de nomes utilizados para
indicar as variveis simples.

6.1.2.1. MATRIZES

O recurso de se colocarem vrias constantes em uma s varivel no exclusivo do


vetor; a matriz uma varivel que tambm apresenta essa caracterstica. A Matriz assemelha-
se a um engradado de garrafas ou, de forma mais esquemtica, pode ser representada pela
figura a seguir.

FIGURA 3 REPRESENTAO GRFICA DE UMA MATRIZ

Perceba que a matriz possui duas dimenses ( linha e coluna / altura e comprimento )
diferentemente do vetor, o qual possui apenas uma dimenso (comprimento). Por essas
caractersticas, a matriz chamada de varivel homognea pois aceita somente um tipo de
constante bidimensional e o vetor, de varivel homognea unidimensional.

6.1.2.1.1. Declarando a matriz

Quando uma matriz declarada, o computador reserva uma parte da memria para
ela. No caso da matriz, essa parte dividida em determinada quantidade de colunas e linhas
(indicadas na declarao) e identificada por um par de nmeros (um referente linha e outro
coluna).

OBS: Em matrizes s podemos armazenar constantes de um nico tipo, ou seja, o seu tipo de
varivel tambm homogneo como nos vetores.

6.1.2.1.2. Sintaxe da matriz

< nome da matriz> : matriz [< nmero inicial de linhas >..< nmero final de linhas >], [< nmero inicial
de colunas >.. < nmero final de colunas >] < tipo de constantes que a matriz poder conter>

Centro de Educao Profissional Sebastio de Siqueira CEPSS


Tcnico em Informtica Lgica de Programao e Estrutura de Dados 47

EXEMPLO 1: Declarar duas variveis com duas dimenses, NOTAS DOS ALUNOS e
ALUNOS, tipos de dados numricos e literal, respectivamente.

NOTAS_ALUNOS: matriz [1..4, 1..200] numrico


MATRIZ_ALUNOS: matriz [1..10, 1..30] literal

OBS: Como fizemos nos vetores, faremos tambm nas matrizes, ou seja, a inicializao
das matrizes com o valor 1, primeiro endereo para linha e coluna.

6.1.2.1.3. Inserindo valores na matriz

Para acessar as posies da matriz, basta indicar a linha e a coluna desejadas.

EXEMPLO 1: Declarar uma matriz com quatro colunas e seis linhas a qual possua o
valor 22 armazenado na terceira linha, coluna dois ( 3,2); valor 59 na linha 4, coluna 4
(4,4).

MATRIZ_ALUNOS

TABELA 28 MATRIZES

MATRIZ_ALUNOS: matriz [1..6, 1..4] numrico

Para colocarmos os nmeros nos espaos devemos realizar as suas respectivas


atribuies.

NUMEROS[3,2] 22
NUMEROS[4,4] 59

Aps essas atribuies, a matriz ser preenchida com os seguintes valores.

MATRIZ_ALUNOS

22

59
TABELA 29 ALOCAO DE MATRIZES NA MEMRIA

Aps a insero dos valores nas respectivas posies, podemos acessar as suas
variveis atravs do comando leia MATRIZ_ALUNOS [posio_da_linha, posio da
coluna]. Para acessar o vetor na posio 22;59.

leia MATRIZ_ALUNOS[3,2]
leia MATRIZ_ALUNOS[4,4]

Centro de Educao Profissional Sebastio de Siqueira CEPSS


Tcnico em Informtica Lgica de Programao e Estrutura de Dados 48

Impresso do valor que est armazenado nas respectivas posies do vetor.

escreva (A matriz que est na linha 3, coluna 2 : MATRIZ_ALUNOS[3,2])


leia MATRIZ_ALUNOS[3,2]
leia MATRIZ_ALUNOS[4,4]

6.1.2.1.4. Montando a matriz

Para preencher a matriz com dados, isto , ler e armazenar valores.

EXEMPLO 3: Monte um algoritmo para ler e armazenar os nomes de duas pessoas


juntamente com os primeiros nomes de seus pais.

Neste algoritmo ser usada uma matriz com 2 linhas por 3 colunas: uma linha para
cada pessoa (no se esquea de que so duas); uma coluna para o nome da pessoa, uma para o
nome do pai e outra para o nome da me. Comece declarando a matriz.

Incio
PESSOAS: matriz [1..2, 1..3] literal

Declararemos duas variveis para indicar as posies da linha e da coluna que voc
pretende acessar.

Incio
PESSOAS: matriz [1..2, 1..3] literal
LINHA, COLUNA: numrico

Lidos os nomes, utilize o comando de repetio para, utilize dois comandos de


repetio, ou seja, leia o nome da pessoa e armazene na primeira coluna, leia o nome do pai e
armazene na segunda coluna, leia o nome da me e armazene na terceira coluna. Depois,
passe para a prxima linha, para fazer o mesmo com a segunda pessoa. Portanto, existe um
comando para alterando a linha e outro alterando a coluna.

Incio
PESSOAS: matriz [1..2, 1..3] literal
LINHA, COLUNA: numrico
para LINHA de 1 at 2 faa // Comando para variando a linha
para COLUNA de 1 at 3 faa // Comando para variando a coluna
Utilize o comando se apenas para mudar a mensagem que ser emitida ao
usurio (se no fosse por isso, no haveria necessidade desse comando). Finalize o algoritmo.

Incio
PESSOAS: matriz [1..2, 1..3] literal
LINHA, COLUNA: numrico
para LINHA de 1 at 2 faa // Comando para variando a linha
para COLUNA de 1 at 3 faa // Comando para variando a coluna
se COLUNA = 1
ento leia Digite o primeiro nome de uma pessoa: , PESSOAS [LINHA,
COLUNA]
seno se COLUNA = 2
ento leia Digite o primeiro nome do pai desta pessoa: ,
PESSOAS [LINHA, COLUNA]

Centro de Educao Profissional Sebastio de Siqueira CEPSS


Tcnico em Informtica Lgica de Programao e Estrutura de Dados 49

seno leia Digite o primeiro nome do me desta pessoa: ,


PESSOAS [LINHA, COLUNA]
fim-se
fim-se
fim-para
fim-para
fim

OBS: Quando no colocamos o parmetro passo no comando para AUTOMATICAMENTE


vai sendo acrescentado o valor 1 ao valor inicial at chegar ao valor final.

6.1.3. TESTE DE MESA


Quando testamos o algoritmo a fim de testar se o mesmo est funcionando da
maneira que foi construdo, chamamos de teste de mesa. Ele executa os comandos para ver se
o algoritmo est correto, seguindo seus passos e visualizando os valores armazenados e
demonstrados.

EXEMPLO 4: Vamos executar as aes realizadas na matriz para verificar se o mesmo est
correto.

Criar a matriz PESSOAS, com 2 linhas e 3 colunas (PESSOAS: matriz [1..2, 1..3]
literal).

PESSOAS

TABELA 30 TESTE DE MESA MATRIZES

Criar duas variveis numricas (LINHAS, COLUNAS: numrico).

LINHA COLUNA
TABELA 31 TESTE DE MESA VARIVEIS

Inserir o valor 1 na varivel LINHA, por meio do comando de repetio (para


LINHA de 1 at 2 faa).

LINHA COLUNA
1
TABELA 32 TESTE DE MESA INCREMENTO DA VARIVEL LINHA.

Inserir o valor 1 na varivel COLUNA, em funo do comando de repetio para


(para COLUNA de 1 at 3 faa).

LINHA COLUNA
1 1
TABELA 33 TESTE DE MESA INCREMENTO DA VARIVEL COLUNA.

Aps a declarao das variveis h a estrutura condicional, que vai questionar se o


valor da varivel COLUNA igual a 1. A resposta sendo verdadeira aparecer a mensagem:
Digite o primeiro nome de uma pessoa: . O nome que deve ser digitado, JOAQUIM,

Centro de Educao Profissional Sebastio de Siqueira CEPSS


Tcnico em Informtica Lgica de Programao e Estrutura de Dados 50

ser armazenado na matriz PESSOAS, no endereo Linha = 1 e Coluna = 1


(PESSOAS[LINHA,COLUNA]).

PESSOAS
JOAQUIM

TABELA 34 TESTE DE MESA INSERO DE VALORES NA MATRIZ PESSOAS

Voltar ao comando para, que insere mais 1 ao valor da varivel COLUNA (para
COLUNA de 1 at 3 faa)

LINHA COLUNA
1 2
TABELA 35 TESTE DE MESA INCREMENTO DA VARIVEL COLUNA.

Voltar estrutura condicional. Como a resposta da condio falsa, pois o valor da


varivel COLUNA 2 e no 1, passar para o parmetro seno do comando se, que possui
outra condio (COLUNA=2). A resposta verdadeira, ativando a mensagem Digite o
primeiro nome do pai dessa pessoa: .O nome que deve ser digitado, JOO, armazenado na
matriz PESSOAS, no endereo LINHA= 1 e COLUNA=2 (PESSOAS[LINHA, COLUNA]).

PESSOAS
JOAQUIM JOO

TABELA 36 TESTE DE MESA INSERO DE VALORES NA MATRIZ PESSOAS

Voltar ao comando de repetio para, que insere mais 1 ao valor da varivel


COLUNA (para COLUNA de 1 at 3 faa).

LINHA COLUNA
1 3
TABELA 37 TESTE DE MESA INCREMENTO DA VARIVEL COLUNA.

Aplicar a estrutura condicional. Como a resposta da condio falsa, pois o valor da


varivel COLUNA 3 e no 1, passar para o parmetro seno do comando se, que possui
outra condio (COLUNA=2). A resposta falsa, deslocando a ao para o parmetro seno
da segunda estrutura condicional, que vai ativar a mensagem Digite o primeiro nome da me
dessa pessoa: . O nome que deve ser digitado, APARECIDA, armazenado na matriz
PESSOAS, no endereo Linha = 1 e Coluna = 3 (PESSOAS[LINHA, COLUNA]).

PESSOAS
JOAQUIM JOO APARECIDA

TABELA 38 TESTE DE MESA INSERO DE VALORES NA MATRIZ PESSOAS

Voltar ao comando de repetio para. Como a varivel COLUNA contm o valor 3,


atingida a condio (para COLUNA de 1 at 3 faa).

LINHA COLUNA
2 3
TABELA 39 TESTE DE MESA INCREMENTO DA VARIVEL LINHA.

Centro de Educao Profissional Sebastio de Siqueira CEPSS


Tcnico em Informtica Lgica de Programao e Estrutura de Dados 51

Voltar segunda estrutura de repetio (para COLUNA de 1 at 3 faa), para que


seja armazenado o valor 1 na varivel COLUNA.

LINHA COLUNA
2 1
TABELA 40 TESTE DE MESA ESTRUTURA DE REPETIO USANDO A VARIVEL COLUNA.

Aplicar o comando se. Para o teste O valor da COLUNA igual a 1?, a resposta
verdadeira, ativando a mensagem Digite o primeiro nome de uma pessoa: . O nome que
deve ser digitado, PATRICIA, armazenado na matriz PESSOAS, no endereo Linha = 2 e
Coluna = 1 (PESSOAS [LINHA, COLUNA]).

PESSOAS
JOAQUIM JOO APARECIDA
PATRICIA
TABELA 41 TESTE DE MESA INSERO DE VALORES NA MATRIZ PESSOAS.

Aplicar o comando para e inserir mais 1 ao valor da varivel COLUNA (para


COLUNA de 1 at 3 faa).

LINHA COLUNA
2 2
TABELA 42 TESTE DE MESA INCREMENTO DA VARIVEL LINHA

Aplicar a mesma estrutura condicional (se COLUNA=1). Como a resposta da


condio falsa, pois o valor da varivel COLUNA 2 e no 1, executar o parmetro seno
para verificar se o valor da varivel COLUNA igual a 2 (COLUNA = 2). A resposta
verdadeira, ativando a mensagem Digite o primeiro nome do pai dessa pessoa: . O nome
que deve ser digitado, JOS, armazenado na matriz PESSOAS, no endereo LINHA = 1 e
COLUNA = 2 (PESSOAS[LINHA, COLUNA]).

PESSOAS
JOAQUIM JOO APARECIDA
PATRICIA JOSE
TABELA 43 TESTE DE MESA INSERO DE VALORES NA MATRIZ PESSOAS.

Aplicar a estrutura de repetio para/fim-para e inserir mais 1 ao valor da varivel


COLUNA (para COLUNA de 1 at 3 faa).

LINHA COLUNA
1 3
TABELA 44 TESTE DE MESA INCREMENTO DA VARIVEL COLUNA

Aplicar a estrutura condicional. Como a resposta da condio falsa, pois o valor da


varivel COLUNA 3 e no 1, executar o parmetro seno (COLUNA = 2). A resposta
falsa. Aplicar outro parmetro seno, que vai ativar a mensagem Digite o primeiro nome da
me dessa pessoa: . O nome que deve ser digitado, MARIA, armazenado na matriz
PESSOAS, no endereo LINHA = 1 e COLUNA = 3 (PESSOAS[LINHA, COLUNA]).

Centro de Educao Profissional Sebastio de Siqueira CEPSS


Tcnico em Informtica Lgica de Programao e Estrutura de Dados 52

PESSOAS
JOAQUIM JOO APARECIDA
PATRICIA JOSE MARIA
TABELA 45 TESTE DE MESA INSERO DE VALORES NA MATRIZ PESSOAS.

Concludas as duas estruturas condicionais, o algoritmo retorna ao comando de


repetio para. A aplicao desse comando tem um resultado positivo, pois indica que foi
atingida a condio solicitada, que ter a varivel COLUNA com o valor 3 (para COLUNA
de 1 at 3 faa). A verificao da primeira estrutura (para LINHA de 1 at 2 faa) tambm
satisfeita, pois a varivel LINHA contm o valor 2. Depois dessa ltima verificao, o
algoritmo finalizado.
O teste de mesa, que voc acabou de aprender, confirma que o algoritmo est correto,
pois foi alcanado o objetivo de ler os nomes de duas pessoas e de seus pais.

6.2. Exerccios
1. Explique com as suas palavras a diferena existente entre Vetores e Matrizes?

2.O algoritmo a seguir um exemplo da estrutura de vetores. Acrescente 5 colunas a


esse algoritmo e transforme o mesmo exemplo em matriz.

Incio
PESSOAS: vetor [1..10] literal
PESSOA: literal
NUM_PESSOAS, POS: numrico
NUM_PESSOAS 0
POS 0
enquanto NUM_PESSOAS < 10 faa
leia PESSOA
POS POS + 1
PESSOAS [POS] PESSOA
NUM_PESSOAS NUM_PESSOAS + 2
fim-enquanto
fim

3. Atravs do exemplo da questo anterior, somente na estrutura de vetores,


demonstre qual a sada dos dados para cada passo executado at a finalizao do algoritmo.

4. Qual a finalidade do uso do teste de mesa.

5. Construa uma matriz ALUNOS, com 3 linhas e 2 colunas (ALUNOS: matriz


[1..3, 1..2] literal ) e mostre , utilizando o TESTE DE MESA, quais os resultados obtidos.

Centro de Educao Profissional Sebastio de Siqueira CEPSS


Tcnico em Informtica Lgica de Programao e Estrutura de Dados 53

7. BIBLIOGRAFIA

XAVIER, Gley Fabiano Cardoso. Lgica de Programao. So Paulo: Editora


Senac, 2003.

FARRER, Harry, BECKER, Christiano G., FARIA, Eduardo C., MATOS, Helton
Fbio de, SANTOS, Marcos Augusto dos, MAIA, Miriam Loureno. Algoritmos
Estruturados. Rio de Janeiro: Editora Guanabara, 1989.

UNICAMP Acessado em 02 de Abril de 2010 - Estrutura de Dados e Lgica de


Programao - http://www.dca.fee.unicamp.br/cursos/EA876/apostila/HTML/node1.html.

A Linguagem do Visualg

Introduo

A linguagem que o VisuAlg interpreta bem simples: uma verso


portuguesa dos pseudocdigos largamente utilizados nos livros de
introduo programao, conhecida como "Portugol". Tomei a liberdade
de acrescentar-lhe alguns comandos novos, com o intuito de criar
facilidades especficas para o ensino de tcnicas de elaborao de
algoritmos. Inicialmente, pensava em criar uma sintaxe muito simples e
"liberal", para que o usurio se preocupasse apenas com a lgica da
resoluo dos problemas e no com as palavras-chave, pontos e vrgulas,
etc. No entanto, cheguei depois concluso de que alguma formalidade
seria no s necessria como til, para criar um sentido de disciplina na
elaborao do "cdigo-fonte".

A linguagem do VisuAlg permite apenas um comando por linha:


desse modo, no h necessidade de tokens separadores de estruturas,
como o ponto e vrgula em Pascal. Tambm no existe o conceito de
blocos de comandos (que correspondem ao begin e end do Pascal e ao { e
} do C), nem comandos de desvio incondicional como o goto. Na verso
atual do VisuAlg, com exceo das rotinas de entrada e sada, no h
nenhum subprograma embutido, tal como Inc(), Sqr(), Ord(), Chr(),
Pos(), Copy() ou outro.

Importante: para facilitar a digitao e evitar confuses, todas as


palavras-chave do VisuAlg foram implementadas sem acentos, cedilha,
etc. Portanto, o tipo de dados lgico definido como logico, o comando
se..ento..seno definido como se..entao..senao, e assim por diante.
O VisuAlg tambm no distingue maisculas e minsculas no
reconhecimento de palavras-chave e nomes de variveis.

Centro de Educao Profissional Sebastio de Siqueira CEPSS


Tcnico em Informtica Lgica de Programao e Estrutura de Dados 54

Formato Bsico do Pseudocdigo e Incluso de Comentrios

O formato bsico do nosso pseudocdigo o seguinte:

algoritmo "semnome"
// Funo :
// Autor :
// Data :
// Seo de Declaraes
inicio
// Seo de Comandos
fimalgoritmo

A primeira linha composta pela palavra-chave algoritmo seguida


do seu nome delimitado por aspas duplas. Este nome ser usado como
ttulo nas janelas de leitura de dados (nas futuras verses do VisuAlg,
talvez utilizemos este dado de outras formas). A seo que se segue a
de declarao de variveis, que termina com a linha que contm a
palavra-chave inicio. Deste ponto em diante est a seo de comandos,
que continua at a linha em que se encontre a palavra-chave
fimalgoritmo. Esta ltima linha marca o final do pseudocdigo: todo
texto existente a partir dela ignorado pelo interpretador.

O VisuAlg permite a incluso de comentrios: qualquer texto


precedido de "//" ignorado, at se atingir o final da sua linha. Por este
motivo, os comentrios no se estendem por mais de uma linha: quando
se deseja escrever comentrios mais longos, que ocupem vrias linhas,
cada uma delas dever comear por "//".

Tipos de Dados

O VisuAlg prev quatro tipos de dados: inteiro, real, cadeia de


caracteres e lgico (ou booleano). As palavras-chave que os definem
so as seguintes (observe que elas no tm acentuao):

inteiro: define variveis numricas do tipo inteiro, ou seja,


sem casas decimais.
real: define variveis numricas do tipo real, ou seja, com
casas decimais.
caractere: define variveis do tipo string, ou seja, cadeia de
caracteres.
logico: define variveis do tipo booleano, ou seja, com valor
VERDADEIRO ou FALSO.

O VisuAlg permite tambm a declarao de variveis estruturadas


atravs da palavra-chave vetor, como ser explicado a seguir.

Centro de Educao Profissional Sebastio de Siqueira CEPSS


Tcnico em Informtica Lgica de Programao e Estrutura de Dados 55

Nomes de Variveis e sua Declarao

Os nomes das variveis devem comear por uma letra e depois


conter letras, nmeros ou underline, at um limite de 30 caracteres. As
variveis podem ser simples ou estruturadas (na verso atual, os vetores
podem ser de uma ou duas dimenses). No pode haver duas variveis
com o mesmo nome, com a natural exceo dos elementos de um mesmo
vetor.

A seo de declarao de variveis comea com a palavra-chave


var, e continua com as seguintes sintaxes:

<lista-de-variveis> : <tipo-de-dado>
<lista-de-variveis> : vetor "["<lista-de-intervalos>"]" de
<tipo-de-dado>

Na <lista-de-variveis>, os nomes das variveis esto


separados por vrgulas. Na <lista-de-intervalos>, os <intervalo> so
separados por vrgulas, e tm a seguinte sintaxe:

<intervalo>: <valor-inicial> .. <valor-final>

Na verso atual do VisuAlg, tanto <valor-inicial> como <valor-


final> devem ser inteiros. Alm disso, exige-se evidentemente que
<valor-final> seja maior do que <valor-inicial>.

Exemplos:

var a: inteiro
Valor1, Valor2: real
vet: vetor [1..10] de real
matriz: vetor [0..4,8..10] de inteiro
nome_do_aluno: caractere
sinalizador: logico

Note que no h a necessidade de ponto e vrgula aps cada


declarao: basta pular linha. A declarao de vetores anloga
linguagem Pascal: a varivel vet acima tem 10 elementos, com os ndices
de [1] a [10], enquanto matriz corresponde a 15 elementos com ndices
[0,8], [0,9], [0,10], [1,8], [1,9], [1,10], ... at [4,10]. O nmero total de
variveis suportado pelo VisuAlg 500 (cada elemento de um vetor
contado individualmente).

Constantes e Comando de Atribuio

O VisuAlg tem trs tipos de constantes:

Centro de Educao Profissional Sebastio de Siqueira CEPSS


Tcnico em Informtica Lgica de Programao e Estrutura de Dados 56

Numricos: so valores numricos escritos na forma usual das


linguagens de programao. Podem ser inteiros ou reais.
Neste ltimo caso, o separador de decimais o ponto e no a
vrgula, independente da configurao regional do computador
onde o VisuAlg est sendo executado. O VisuAlg tambm no
suporta separadores de milhares.
Caracteres: qualquer cadeia de caracteres delimitada por
aspas duplas (").
Lgicos: admite os valores VERDADEIRO ou FALSO.

A atribuio de valores a variveis feita com o operador <-. Do


seu lado esquerdo fica a varivel qual est sendo atribudo o valor, e
sua direita pode-se colocar qualquer expresso (constantes, variveis,
expresses numricas), desde que seu resultado tenha tipo igual ao da
varivel.

Alguns exemplos de atribuies, usando as variveis declaradas


acima:

a <- 3
Valor1 <- 1.5
Valor2 <- Valor1 + a
vet[1] <- vet[1] + (a * 3)
matriz[3,9] <- a/4 - 5
nome_do_aluno <- "Jos da Silva"
sinalizador <- FALSO

Operadores Aritmticos

Operadores unrios, isto , so aplicados a um nico


operando.
+ So os operadores aritmticos de maior precedncia.
,- Exemplos: -3, +x. Enquanto o operador unrio - inverte o sinal do
seu operando, o operador + no altera o valor em nada o seu valor.
\ Operador de diviso inteira. Por exemplo, 5 \ 2 = 2. Tem a
mesma precedncia do operador de diviso tradicional.
Operadores aritmticos tradicionais de adio, subtrao,
multiplicao
+ e diviso. Por conveno, * e / tm precedncia sobre
,-,*,/ + e -. Para modificar a ordem de avaliao das operaes,
necessrio usar parnteses como em qualquer expresso aritmtica.
M Operador de mdulo (isto , resto da diviso inteira). Por
OD exemplo, 8 MOD 3 = 2. Tem a mesma precedncia do operador de
ou % diviso tradicional.
Operador de potenciao. Por exemplo, 5 ^ 2 = 25. Tem a
^
maior precedncia entre os operadores aritmticos binrios (aqueles
que tm dois operandos).

Centro de Educao Profissional Sebastio de Siqueira CEPSS


Tcnico em Informtica Lgica de Programao e Estrutura de Dados 57

Operadores de Caracteres

Operador de concatenao de strings (isto , cadeias de


caracteres),
+ quando usado com dois valores (variveis ou
constantes) do tipo "caractere". Por exemplo: "Rio " + " de
Janeiro" = "Rio de Janeiro".

Operadores Relacionais

=
Respectivamente: igual, menor que, maior que, menor ou
, <,
igual a, maior ou igual a, diferente de. So utilizados em expresses
>,
lgicas para se testar a relao entre dois valores do mesmo tipo.
<=,
Exemplos: 3 = 3 ( 3 igual a 3?) resulta em VERDADEIRO ; "A" >
>=,
"B" ("A" est depois de "B" na ordem alfabtica?) resulta em FALSO.
<>

Importante: No VisuAlg, as comparaes entre strings no


diferenciam as letras maisculas das minsculas. Assim, "ABC" igual a
"abc". Valores lgicos obedecem seguinte ordem: FALSO <
VERDADEIRO.

Operadores Lgicos

Operador unrio de negao. nao VERDADEIRO = FALSO, e


n
ao nao FALSO = VERDADEIRO. Tem a maior precedncia entre os
operadores lgicos. Equivale ao NOT do Pascal.
o Operador que resulta VERDADEIRO quando um dos seus
u operandos lgicos for verdadeiro. Equivale ao OR do Pascal.
e Operador que resulta VERDADEIRO somente se seus dois
operandos lgicos forem verdadeiros. Equivale ao AND do Pascal.
Operador que resulta VERDADEIRO se seus dois operandos
x
ou lgicos forem diferentes, e FALSO se forem iguais. Equivale ao XOR
do Pascal.

Comandos de Sada de Dados

escreva (<lista-de-expresses>)

Escreve no dispositivo de sada padro (isto , na rea direita da


metade inferior da tela do VisuAlg) o contedo de cada uma das
expresses que compem <lista-de-expresses>. As expresses dentro
desta lista devem estar separadas por vrgulas; depois de serem
avaliadas, seus resultados so impressos na ordem indicada.
equivalente ao comando write do Pascal.

Centro de Educao Profissional Sebastio de Siqueira CEPSS


Tcnico em Informtica Lgica de Programao e Estrutura de Dados 58

De modo semelhante a Pascal, possvel especificar o nmero de


espaos no qual se deseja escrever um determinado valor. Por exemplo, o
comando escreva(x:5) escreve o valor da varivel x em 5 espaos,
alinhado-o direita. Para variveis reais, pode-se tambm especificar o
nmero de casas fracionrias que sero exibidas. Por exemplo,
considerando y como uma varivel real, o comando
escreva(y:6:2)escreve seu valor em 6 espaos colocando 2 casas
decimais.

escreval (<lista-de-expresses>).

Idem ao anterior, com a nica diferena que pula uma linha em


seguida. equivalente ao writeln do Pascal.

Exemplos:

algoritmo "exemplo"
var x: real
y: inteiro
a: caractere
l: logico
inicio
x <- 2.5
y <- 6
a <- "teste"
l <- VERDADEIRO
escreval ("x", x:4:1, y+3:4) // Escreve: x 2.5 9
escreval (a, "ok") // Escreve: testeok (e depois pula linha)
escreval (a, " ok") // Escreve: teste ok (e depois pula linha)
escreval (a + " ok") // Escreve: teste ok (e depois pula
linha)
escreva (l) // Escreve: VERDADEIRO
fimalgoritmo

Note que o VisuAlg separa expresses do tipo numrico e lgico


com um espao esquerda, mas no as expresses do tipo caractere,
para que assim possa haver a concatenao. Quando se deseja separar
expresses do tipo caractere, necessrio acrescentar espaos nos locais
adequados.

Comando de Entrada de Dados

leia (<lista-de-variveis>)

Recebe valores digitados pelos usurio, atribuindo-os s variveis


cujos nomes esto em <lista-de-variveis> ( respeitada a ordem
especificada nesta lista). anlogo ao comando read do Pascal.

Centro de Educao Profissional Sebastio de Siqueira CEPSS


Tcnico em Informtica Lgica de Programao e Estrutura de Dados 59

Veja no exemplo abaixo o resultado:

algoritmo "exemplo 1"


var x: inteiro;
inicio
leia (x)
escreva (x)
fimalgoritmo

O comando de leitura acima ir exibir uma janela como a que se v


ao lado, com a mensagem padro:

"Entre com o valor de <nome-de-varivel>"

Se voc clicar em
Cancelar ou teclar Esc durante a
leitura de dados, o programa
ser imediatamente
interrompido.

Comando de Desvio
Condicional

se <expresso-lgica> entao
<seqncia-de-comandos>
fimse

Ao encontrar este comando, o VisuAlg analisa a <expresso-


lgica>. Se o seu resultado for VERDADEIRO, todos os comandos da
<seqncia-de-comandos> (entre esta linha e a linha com fimse) so
executados. Se o resultado for FALSO, estes comandos so desprezados e
a execuo do algoritmo continua a partir da primeira linha depois do
fimse.

se <expresso-lgica> entao
<seqncia-de-comandos-1>
senao
<seqncia-de-comandos-2>
fimse

Nesta outra forma do comando, se o resultado da avaliao de


<expresso-lgica> for VERDADEIRO, todos os comandos da
<seqncia-de-comandos-1> (entre esta linha e a linha com senao) so
executados, e a execuo continua depois a partir da primeira linha depois
do fimse. Se o resultado for FALSO, estes comandos so desprezados e o

Centro de Educao Profissional Sebastio de Siqueira CEPSS


Tcnico em Informtica Lgica de Programao e Estrutura de Dados 60

algoritmo continua a ser executado a partir da primeira linha depois do


senao, executando todos os comandos da <seqncia-de-comandos-2>
(at a linha com fimse).

Estes comandos equivalem ao if...then e if...then...else do Pascal.


Note que no h necessidade de delimitadores de bloco (como begin e
end), pois as seqncias de comandos j esto delimitadas pelas
palavras-chave senao e fimse. O VisuAlg permite o aninhamento desses
comandos de desvio condicional.

Comando de Seleo Mltipla

O VisuAlg implementa (com certas variaes) o comando case do


Pascal. A sintaxe a seguinte:

escolha <expresso-de-seleo>
caso <exp11>, <exp12>, ..., <exp1n>
<seqncia-de-comandos-1>
caso <exp21>, <exp22>, ..., <exp2n>
<seqncia-de-comandos-2>
...
outrocaso
<seqncia-de-comandos-extra>
fimescolha

Veja o exemplo a seguir, que ilustra bem o que faz este comando:

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 "So Paulo", "Palmeiras", "Santos", "Cornthians"
escreval (" um time paulista.")
outrocaso
escreval (" de outro estado.")
fimescolha
fimalgoritmo

Comandos de Repetio

O VisuAlg implementa as trs estruturas de repetio usuais nas


linguagens de programao: o lao contado para...ate...faca (similar
ao for...to...do do Pascal), e os laos condicionados enquanto...faca

Centro de Educao Profissional Sebastio de Siqueira CEPSS


Tcnico em Informtica Lgica de Programao e Estrutura de Dados 61

(similar ao while...do) e repita...ate (similar ao repeat...until). A


sintaxe destes comandos explicada a seguir.

Para ... faa

Esta estrutura repete uma seqncia de comandos um


determinado nmero de vezes.

para <varivel> de <valor-inicial> ate <valor-limite>


[passo <incremento>] faca
<seqncia-de-comandos>
fimpara

a varivel contadora que controla o nmero de


<varive repeties do lao. Na verso atual, deve ser
l > necessariamente uma varivel do tipo inteiro, como
todas as expresses deste comando.
uma expresso que especifica o valor de
<valor-
inicial> inicializao da varivel contadora antes da primeira
repetio do lao.
<valor- uma expresso que especifica o valor mximo
limite > que a varivel contadora pode alcanar.
opcional. Quando presente, precedida pela
palavra passo, uma expresso que especifica o
incremento que ser acrescentado varivel contadora
em cada repetio do lao. Quando esta opo no
<increme utilizada, o valor padro de <incremento> 1. Vale a
nto > pena ter em conta que tambm possvel especificar
valores negativos para <incremento>. Por outro lado, se
a avaliao da expresso <incremento > resultar em
valor nulo, a execuo do algoritmo ser interrompida,
com a impresso de uma mensagem de erro.
Indica o fim da seqncia de comandos a serem
repetidos. Cada vez que o programa chega neste ponto,
acrescentado varivel contadora o valor de
<incremento >, e comparado a <valor-limite >. Se
fimpara for menor ou igual (ou maior ou igual, quando
<incremento > for negativo), a seqncia de comandos
ser executada mais uma vez; caso contrrio, a
execuo prosseguir a partir do primeiro comando que
esteja aps o fimpara.

<valor-inicial >, <valor-limite > e <incremento > so


avaliados uma nica vez antes da execuo da primeira repetio, e no
se alteram durante a execuo do lao, mesmo que variveis

Centro de Educao Profissional Sebastio de Siqueira CEPSS


Tcnico em Informtica Lgica de Programao e Estrutura de Dados 62

eventualmente presentes nessas expresses tenham seus valores


alterados.

No exemplo a seguir, os nmeros de 1 a 10 so exibidos em ordem


crescente.

algoritmo "Nmeros de 1 a 10"


var j: inteiro
inicio
para j de 1 ate 10 faca
escreva (j:3)
fimpara
fimalgoritmo

Importante: Se, logo no incio da primeira repetio, <valor-


inicial > for maior que <valor-limite > (ou menor, quando
<incremento> for negativo), o lao no ser executado nenhuma vez. O
exemplo a seguir no imprime nada.

algoritmo "Numeros de 10 a 1 (no funciona)"


var j: inteiro
inicio
para j de 10 ate 1 faca
escreva (j:3)
fimpara
fimalgoritmo

Este outro exempo, no entanto, funcionar por causa do passo -1:

algoritmo "Numeros de 10 a 1 (este funciona)"


var j: inteiro
inicio
para j de 10 ate 1 passo -1 faca
escreva (j:3)
fimpara
fimalgoritmo

Enquanto ... faa

Esta estrutura repete uma seqncia de comandos enquanto uma


determinada condio (especificada atravs de uma expresso lgica) for
satisfeita.

enquanto <expresso-lgica> faca


<seqncia-de-comandos>
fimenquanto

<expresso- Esta expresso que avaliada antes de cada

Centro de Educao Profissional Sebastio de Siqueira CEPSS


Tcnico em Informtica Lgica de Programao e Estrutura de Dados 63

lgica> repetio do lao. Quando seu resultado for


VERDADEIRO, <seqncia-de-comandos>
executada.
Indica o fim da <seqncia-de-comandos>
que ser repetida. Cada vez que a execuo atinge
este ponto, volta-se ao incio do lao para que
<expresso-lgica> seja avaliada novamente. Se o
fimenquanto
resultado desta avaliao for VERDADEIRO, a
<seqncia-de-comandos> ser executada mais uma
vez; caso contrrio, a execuo prosseguir a partir
do primeiro comando aps fimenquanto.

O mesmo exemplo anterior pode ser resolvido com esta estrutura


de repetio:

algoritmo "Nmeros de 1 a 10 (com enquanto...faca)"


var j: inteiro
inicio
j <- 1
enquanto j <= 10 faca
escreva (j:3)
j <- j + 1
fimenquanto
fimalgoritmo

Importante: Como o lao enquanto...faca testa sua condio de


parada antes de executar sua seqncia de comandos, esta seqncia
poder ser executada zero ou mais vezes.

Repita ... at

Esta estrutrura repete uma seqncia de comandos at que uma


determinada condio (especificada atravs de uma expresso lgica) seja
satisfeita.

repita
<seqncia-de-comandos>
ate <expresso-lgica>

repita Indica o incio do lao.


Indica o fim da <seqncia-de-comandos> a
serem repetidos. Cada vez que o programa chega
ate
<expresso- neste ponto, <expresso-lgica> avaliada: se seu
lgica> resultado for FALSO, os comandos presentes entre esta
linha e a linha repita so executados; caso contrrio, a
execuo prosseguir a partir do primeiro comando

Centro de Educao Profissional Sebastio de Siqueira CEPSS


Tcnico em Informtica Lgica de Programao e Estrutura de Dados 64

aps esta linha.

Considerando ainda o mesmo exemplo:

algoritmo "Nmeros de 1 a 10 (com repita)"


var j: inteiro
inicio
j <- 1
repita
escreva (j:3)
j <- j + 1
ate j > 10
fimalgoritmo

Importante: Como o lao repita...ate testa sua condio de


parada depois de executar sua seqncia de comandos, esta seqncia
poder ser executada uma ou mais vezes.

Comando Interrompa

As trs estruturas de repetio acima permitem o uso do comando


interrompa, que causa uma sada imediata do lao. Embora esta tcnica
esteja de certa forma em desacordo com os princpios da programao
estruturada, o comando interrompa foi includo no VisuAlg por ser
encontrado na literatura de introduo programao e mesmo em
linguagens como o Object Pascal (Delphi/Kylix), Clipper, VB, etc. Seu uso
exemplificado a seguir:

algoritmo "Nmeros de 1 a 10 (com interrompa)"


var x: inteiro
inicio
x <- 0
repita
x <- x + 1
escreva (x:3)
se x = 10 entao
interrompa
fimse
ate falso
fimalgoritmo

O VisuAlg permite ainda uma forma alternativa do comando


repita...ate, com a seguinte sintaxe:

algoritmo "Nmeros de 1 a 10 (com interrompa) II"


var x: inteiro
inicio
x <- 0

Centro de Educao Profissional Sebastio de Siqueira CEPSS


Tcnico em Informtica Lgica de Programao e Estrutura de Dados 65

repita
x <- x + 1
escreva (x:3)
se x = 10 entao
interrompa
fimse
fimrepita
fimalgoritmo

Com esta sintaxe alternativa, o uso do interrompa obrigatrio,


pois a nica maneira de se sair do lao repita...fimrepita; caso contrrio,
este lao seria executado indeterminadamente.

Subprograma um programa que auxilia o programa principal


atravs da realizao de uma determinada subtarefa. Tambm costuma
receber os nomes de sub-rotina, procedimento, mtodo ou mdulo. Os
subprogramas so chamados dentro do corpo do programa principal como
se fossem comandos. Aps seu trmino, a execuo continua a partir do
ponto onde foi chamado. importante compreender que a chamada de
um subprograma simplesmente gera um desvio provisrio no fluxo de
execuo.

H um caso particular de subprograma que recebe o nome de


funo. Uma funo, alm de executar uma determinada tarefa, retorna
um valor para quem a chamou, que o resultado da sua execuo. Por
este motivo, a chamada de uma funo aparece no corpo do programa
principal como uma expresso, e no como um comando.

Cada subprograma, alm de ter acesso s variveis do programa


que o chamou (so as variveis globais), pode ter suas prprias variveis
(so as variveis locais), que existem apenas durante sua chamada.

Ao se chamar um subprograma, tambm possvel passar-lhe


determinadas informaes que recebem o nome de parmetros (so
valores que, na linha de chamada, ficam entre os parnteses e que esto
separados por vrgulas). A quantidade dos parmetros, sua seqncia e
respectivos tipos no podem mudar: devem estar de acordo com o que foi
especificado na sua correspondente declarao.

Para se criar subprogramas, preciso descrev-los aps a


declarao das variveis e antes do corpo do programa principal. O
VisuAlg possibilita declarao e chamada de subprogramas nos moldes da
linguagem Pascal, ou seja, procedimentos e funes com passagem de
parmetros por valor ou referncia. Isso ser explicado a seguir.

Procedimentos

Centro de Educao Profissional Sebastio de Siqueira CEPSS


Tcnico em Informtica Lgica de Programao e Estrutura de Dados 66

Em VisuAlg, procedimento um subprograma que no retorna


nenhum valor (corresponde ao procedure do Pascal). Sua declarao, que
deve estar entre o final da declarao de variveis e a linha inicio do
programa principal, segue a sintaxe abaixo:

procedimento <nome-de-procedimento> [(<seqncia-de-


declaraes-de-parmetros>)]
// Seo de Declaraes Internas
inicio
// Seo de Comandos
fimprocedimento

O <nome-de-procedimento> obedece as mesmas regras de


nomenclatura das variveis. Por outro lado, a <seqncia-de-declaraes-
de-parmetros> uma seqncia de

[var] <seqncia-de-parmetros>: <tipo-de-dado>

separadas por ponto e vrgula. A presena (opcional) da palavra-


chave var indica passagem de parmetros por referncia; caso contrrio,
a passagem ser por valor.

Por sua vez, <seqncia-de-parmetros> uma seqncia de


nomes de parmetros (tambm obedecem a mesma regra de
nomenclatura de variveis) separados por vrgulas.

De modo anlogo ao programa principal, a seo de declarao


internas comea com a palavra-chave var, e continua com a seguinte
sintaxe:

<lista-de-variveis> : <tipo-de-dado>

Nos prximos exemplos, atravs de um subprograma soma, ser


calculada a soma entre os valores 4 e 9 (ou seja, ser obtido o resultado
13) que o programa principal imprimir em seguida. No primeiro caso, um
procedimento sem parmetros utiliza uma varivel local aux para
armazenar provisoriamente o resultado deste clculo (evidentemente,
esta varivel desnecessria, mas est a apenas para ilustrar o
exemplo), antes de atribu-lo varivel global res:

procedimento soma
var aux: inteiro
inicio
// n, m e res so variveis globais
aux <- n + m
res <- aux
fimprocedimento

Centro de Educao Profissional Sebastio de Siqueira CEPSS


Tcnico em Informtica Lgica de Programao e Estrutura de Dados 67

No programa principal deve haver os seguintes comandos:


n <- 4
m <- -9
soma
escreva(res)

A mesma tarefa poderia ser executada atravs de um


procedimento com parmetros, como descrito abaixo:

procedimento soma (x,y: inteiro)


inicio
// res varivel global
res <- x + y
fimprocedimento

No programa principal deve haver os seguintes comandos:


n <- 4
m <- -9
soma(n,m)
escreva(res)

A passagem de parmetros do exemplo acima chama-se


passagem por valor. Neste caso, o subprograma simplesmente recebe
um valor que utiliza durante sua execuo. Durante essa execuo, os
parmetros passados por valor so anlogos s suas variveis locais, mas
com uma nica diferena: receberam um valor inicial no momento em que
o subprograma foi chamado.

Funes

Em VisuAlg, funo um subprograma que retorna um valor


(corresponde ao function do Pascal). De modo anlogo aos
procedimentos, sua declarao deve estar entre o final da declarao de
variveis e a linha inicio do programa principal, e segue a sintaxe abaixo:

funcao <nome-de-funo> [(<seqncia-de-declaraes-de-


parmetros>)]: <tipo-de-dado>
// Seo de Declaraes Internas
inicio
// Seo de Comandos
fimfuncao

O <nome-de-funo> obedece as mesmas regras de nomenclatura


das variveis. Por outro lado, a <seqncia-de-declaraes-de-
parmetros> uma seqncia de

[var] <seqncia-de-parmetros>: <tipo-de-dado>

Centro de Educao Profissional Sebastio de Siqueira CEPSS


Tcnico em Informtica Lgica de Programao e Estrutura de Dados 68

separadas por ponto e vrgula. A presena (opcional) da palavra-


chave var indica passagem de parmetros por referncia; caso contrrio,
a passagem ser por valor.

Por sua vez, <seqncia-de-parmetros> uma seqncia de


nomes de parmetros (tambm obedecem a mesma regra de
nomenclatura de variveis) separados por vrgulas.

O valor retornado pela funo ser do tipo especificado na sua


declarao (logo aps os dois pontos). Em alguma parte da funo (de
modo geral, no seu final), este valor deve ser retornado atravs do
comando retorne.

De modo anlogo ao programa principal, a seo de declarao


internas comea com a palavra-chave var, e continua com a seguinte
sintaxe:

<lista-de-variveis> : <tipo-de-dado>

Voltando ao exemplo anterior, no qual calculamos e imprimimos a


soma entre os valores 4 e 9, vamos mostrar como isso poderia ser feito
atravs de uma funo sem parmetros. Ela tambm utiliza uma
varivel local aux para armazenar provisoriamente o resultado deste
clculo, antes de atribu-lo varivel global res:

funcao soma: inteiro


var aux: inteiro
inicio
// n, m e res so variveis globais
aux <- n + m
retorne aux
fimfuncao

No programa principal deve haver os seguintes comandos:


n <- 4
m <- -9
res <- soma
escreva(res)

Se realizssemos essa mesma tarefa com uma funo com


parmetros passados por valor, poderia ser do seguinte modo:

funcao soma (x,y: inteiro): inteiro


inicio
retorne x + y
fimfuncao

Centro de Educao Profissional Sebastio de Siqueira CEPSS


Tcnico em Informtica Lgica de Programao e Estrutura de Dados 69

No programa principal deve haver os seguintes comandos:


n <- 4
m <- -9
res <- soma(n,m)
escreva(res)

Passagem de Parmetros por Referncia

H ainda uma outra forma de passagem de parmetros para


subprogramas: a passagem por referncia. Neste caso, o subprograma
no recebe apenas um valor, mas sim o endereo de uma varivel
global. Portanto, qualquer modificao que for realizada no contedo
deste parmetro afetar tambm a varivel global que est associada a
ele. Durante a execuo do subprograma, os parmetros passados por
referncia so anlogos s variveis globais. No VisuAlg, de forma anloga
a Pascal, essa passagem feita atravs da palavra var na declarao do
parmetro.

Voltando ao exemplo da soma, o procedimento abaixo realiza a


mesma tarefa utilizando passagem de parmetros por referncia:

procedimento soma (x,y: inteiro; var result: inteiro)


inicio
result <- x + y
fimprocedimento

No programa principal deve haver os seguintes comandos:


n <- 4
m <- -9
soma(n,m,res)
escreva(res)

Recurso e Aninhamento

A atual verso do VisuAlg permite recurso, isto , a possibilidade


de que um subprograma possa chamar a si mesmo. A funo do exemplo
abaixo calcula recursivamente o fatorial do nmero inteiro que recebe
como parmetro:

funcao fatorial (v: inteiro): inteiro


inicio
se v <= 2 entao
retorne v
senao
retorne v * fatorial(v-1)
fimse
fimfuncao

Centro de Educao Profissional Sebastio de Siqueira CEPSS


Tcnico em Informtica Lgica de Programao e Estrutura de Dados 70

Em Pascal, permitido o aninhamento de subprogramas, isto ,


cada subprograma tambm pode ter seus prprios subprogramas. No
entanto, esta caracterstica dificulta a elaborao dos compiladores e, na
prtica, no muito importante. Por este motivo, ela no permitida na
maioria das linguagens de programao (como C, por exemplo), e o
VisuAlg no a implementa.

O VisuAlg implementa algumas extenses s linguagens


"tradicionais" de programao, com o intuito principal de ajudar o seu uso
como ferramenta de ensino. Elas so mostradas a seguir.

Comando Aleatrio

Muitas vezes a digitao de dados para o teste de um programa


torna-se uma tarefa entediante. Com o uso do comando aleatorio do
VisuAlg, sempre que um comando leia for encontrado, a digitao de
valores numricos e/ou caracteres substituda por uma gerao
aleatria. Este comando no afeta a leitura de variveis lgicas: com
certeza, uma coisa pouco usual em programao...

Este comando tem as seguintes sintaxes:

Ativa a gerao de valores aleatrios que


substituem a digitao de dados. A palavra-
chave on opcional. A faixa padro de valores
aleatorio [on] gerados de 0 a 100 inclusive. Para a gerao
de dados do tipo caractere, no h uma faixa
pr-estabelecida: os dados gerados sero
sempre strings de 5 letras maisculas.
Ativa a gerao de dados numricos
aleatrios estabelecendo uma faixa de valores
mnimos e mximos. Se apenas < valor1> for
fornecido, a faixa ser de 0 a <valor1>
aleatorio
inclusive; caso contrrio, a faixa ser de
<valor1 > [, <valor2
> ] <valor1> a <valor2> inclusive. Se <valor2>
for menor que <valor1>, o VisuAlg os trocar
para que a faixa fique correta.
Importante: <valor1> e <valor2> devem ser
constantes numricas, e no expresses.
Desativa a gerao de valores aleatrios.
aleatorio off
A palavra-chave off obrigatria.

Comando Arquivo

Centro de Educao Profissional Sebastio de Siqueira CEPSS


Tcnico em Informtica Lgica de Programao e Estrutura de Dados 71

Muitas vezes necessrio repetir os testes de um programa com


uma srie igual de dados. Para casos como este, o VisuAlg permite o
armazenamento de dados em um arquivo-texto, obtendo deles os dados
ao executar os comandos leia.
Esta caracterstica funciona da seguinte maneira:
1) Se no existir o arquivo com nome especificado, o VisuAlg far uma
leitura de dados atravs da digitao, armazenando os dados lidos neste
arquivo, na ordem em que forem fornecidos.
2) Se o arquivo existir, o VisuAlg obter os dados deste arquivo at
chegar ao seu fim. Da em diante, far as leituras de dados atravs da
digitao.
3) Somente um comando arquivo pode ser empregado em cada
pseudocdigo, e ele dever estar na seo de declaraes (dependendo do
"sucesso" desta caracterstica, em futuras verses ela poder ser
melhorada...).
4) Caso no seja fornecido um caminho, o VisuAlg ir procurar este
arquivo na pasta de trabalho corrente (geralmente, a pasta onde o
programa VISUALG.EXE est). Este comando no prev uma extenso
padro; portanto, a especificao do nome do arquivo deve ser completa,
inclusive com sua extenso (por exemplo, .txt, .dat, etc.).

A sintaxe do comando :

arquivo <nome-de-arquivo>

<nome-de-arquivo> uma constante caractere (entre aspas


duplas). Veja o exemplo a seguir:

algoritmo "lendo do arquivo"


arquivo "teste.txt"
var x,y: inteiro
inicio
para x de 1 ate 5 faca
leia (y)
fimpara
fimalgoritmo

Comando Timer

Embora o VisuAlg seja um interpretador de pseudocdigo, seu


desempenho muito bom: o tempo gasto para interpretar cada linha
digitada apenas uma frao de segundo. Entretanto, por motivos
educacionais, pode ser conveniente exibir o fluxo de execuo do
pseudocdigo comando por comando, em "cmera lenta". O comando
timer serve para este propsito: insere um atraso (que pode ser
especificado) antes da execuo de cada linha. Alm disso, reala em

Centro de Educao Profissional Sebastio de Siqueira CEPSS


Tcnico em Informtica Lgica de Programao e Estrutura de Dados 72

fundo azul o comando que est sendo executado, da mesma forma que na
execuo passo a passo.

Sua sintaxe a seguinte:

timer on Ativa o timer.


Ativa o timer estabelecendo seu tempo de
atraso em milissegundos. O valor padro 500, que
timer equivale a meio segundo. O argumento <tempo-de-
<tempo-de-atraso> atraso> deve ser uma constante inteira com valor
entre 0 e 10000. Valores menores que 0 so
corrigidos para 0, e maiores que 10000 para 10000.
timer off Desativa o timer.

Ao longo do pseudocdigo, pode haver vrios comandos timer.


Todos eles devem estar na seo de comandos. Uma vez ativado, o atraso
na execuo dos comandos ser mantido at se chegar ao final do
pseudocdigo ou at ser encontrado um comando timer off.

Comandos de Depurao

Nenhum ambiente de desenvolvimento est completo se no


houver a possibilidade de se inserir pontos de interrupo (breakpoints)
no pseudocdigo para fins de depurao. VisuAlg implementa dois
comandos que auxiliam a depurao ou anlise de um pseudocdigo: o
comando pausa e o comando debug.

Comando Pausa

Sua sintaxe simplesmente:

pausa

Este comando insere uma interrupo incondicional no


pseudocdigo. Quando ele encontrado, o VisuAlg pra a execuo do
pseudocdigo e espera alguma ao do programador. Neste momento,
possvel: analisar os valores das variveis ou das sadas produzidas at o
momento; executar o pseudocdigo passo a passo (com F8); prosseguir
sua execuo normalmente (com F9); ou simplesmente termin-lo (com
Ctrl-F2). Com exceo da alterao do texto do pseudocdigo, todas as
funes do VisuAlg esto disponveis.

Comando Debug

Sua sintaxe :

Centro de Educao Profissional Sebastio de Siqueira CEPSS


Tcnico em Informtica Lgica de Programao e Estrutura de Dados 73

debug <expresso-lgica>

Se a avaliao de <expresso-lgica> resultar em valor


VERDADEIRO, a execuo do pseudocdigo ser interrompida como no
comando pausa. Dessa forma, possvel a insero de um breakpoint
condicional no pseudocdigo.

Comando Eco

Sua sintaxe :

eco on | off

Este comando ativa (eco on) ou desativa (eco off) a impresso


dos dados de entrada na sada-padro do VisuAlg, ou seja, na rea
direita da parte inferior da tela. Esta caracterstica pode ser til quando
houver uma grande quantidade de dados de entrada, e se deseja apenas
analisar a sada produzida. Convm utiliz-la tambm quando os dados de
entrada provm de um arquivo j conhecido.

Comando Cronmetro

Sua sintaxe :

cronometro on | off

Este comando ativa (cronometro on) ou desativa (cronometro


off) o cronmetro interno do VisuAlg. Quando o comando cronometro on
encontrado, o VisuAlg imprime na sada-padro a informao
"Cronmetro iniciado.", e comea a contar o tempo em milissegundos.
Quando o comando cronometro off encontrado, o VisuAlg imprime na
sada-padro a informao "Cronmetro terminado. Tempo decorrido: xx
segundo(s) e xx ms". Este comando til na anlise de desempenho de
algoritmos (ordenao, busca, etc.).

Comando Limpatela

Sua sintaxe

limpatela

Este comando simplesmente limpa a tela DOS do Visualg (a


simulao da tela do computador). Ele no afeta a "tela" que existe na
parte inferior direita da janela principal do Visualg.

Centro de Educao Profissional Sebastio de Siqueira CEPSS


Tcnico em Informtica Lgica de Programao e Estrutura de Dados 74

Centro de Educao Profissional Sebastio de Siqueira CEPSS