Você está na página 1de 25

CONSTRUO DE ALGORITMOS

Texto Introdutrio

Profs. Carlos Nehab e Manuel Martins

NDICE
O CONCEITO DE ALGORITMO
INTRODUO
ESTRUTURAS DE CONTROLE
ESTRATGIA DE PONTUAO

REPRESENTAO DE ALGORITMOS
INTRODUO
Representao em Linguagem Estruturada
Representao em Diagrama Estruturado
Representao em Fluxo grama

REPRESENTAO DAS ESTRUTURAS


Estrutura
Estrutura
Estrutura
Estrutura

de
d
de
da

Seqncia
Seleo Simples
Seleo Completa
Repetio (com teste a priori)

CONTEXTO COMPUTACIONAL
MEMRIA - MODELO ESOUEMTCO
Introduo
Tabela de Smbolos
INSTRUES PRIMITIVAS
Instruo de Atribuio
Instruo de Leitura
Instruo de Impresso

TIPOS DE DADOS SIMPLES


INTRODUO
PRINCIPAIS TIPOS
COMANDO PARA DEFINIO DE TIPO
EXPRESSES ARITMTICAS
Funes Simples
Operadores e funes envolvendo variveis do Tipo Data
EXPRESSES LITERAIS
Funes Literais Usuais
EXPRESSES RELACIONAIS
EXPRESSES LGICAS
Tabelas Verdade dos Operadores Lgicos

1
1
2
3
5
5
5
6
6
7
7
7
7
8
12
12
12
13
14
14
15
15
17
17
17
18
18
19
20
21
21
22
23
23

Construo de Algoritmos - Texto Introdutrio


Professores: Nehab e Manuel

O Conceito de Algoritmo
Introduo
Na descrio de um processo - seja uma receita culinria, urna rotina
administrativa ou um programa de computador espera-se que um conjunto bsico
de aes - chamadas de instrues primitivas - sejam conhecidas e realizveis pelo
responsvel pela execuo deste processo - seja o cozinheiro, um auxiliar
administrativo ou o computador.
Um algoritmo - entendido como uma rotina, um processo - pode ser conceituado de
diversas formas:
uma Seqncia ordenada, finita e no ambgua de etapas que conduzem
soluo de um problema.
descrio de um conjunto padronizado de aes primitivas, bem definidas e
executveis, que encadeiam a realizao de uma tarefa.
processo de clculo ou de resoluo de um grupo de problemas semelhantes, em
que se estipulam, com generalidade e sem restries, as regras formais para a
obteno do resultado ou da soluo do problema (Aurlio).
Assim, o conceito de algoritmo, embora fortemente associado a rea de
computao, pode ser entendido no seu sentido mais amplo, ou seja, como
sinnimo de processo, rotina ou procedimento e, neste sentido, pode estar imerso
em qualquer contexto.
Considere os exemplos preliminares que se seguem:

Exemplo 1.
Contexto Culinrio
Misture os ingredientes.
Unte o tabuleiro com manteiga.
Despeje a mistura no tabuleiro.
Se (h queijo parmezon) ento.
Espalhe sobre a mistura.
Leve o tabuleiro no forno.
Enquanto (no corar).
Deixe o tabuleiro no forno.
Deixe esfriar.
Experimente antes de servir.

Contexto Administrativo
Verifique preenchimento do formulrio.
Se (preenchimento correto) ento
Arquive o documento.
Fornea protocolo.
Seno
Lamente.
Torne a lamentar.
Mande o cliente comprar outro formulrio.
Despea-se educadamente do cliente.

Contexto Computacional
Armazene os graus do aluno.
Calcule a mdia destes graus.
Se (mdia superior a 7) ento
Exibe mensagem Aprovado
Seno
Exibe mensagem Reprovado

CONSTRUO DE ALGORITMOS
manuel@carioca.br

NEHAB/MANUEL

Construo de Algoritmos - Texto Introdutrio


Professores: Nehab e Manuel

Assim, aes como


Unte o tabuleiro com manteiga

Leve o tabuleiro ao forno

so consideradas atividades primitivas do domnio do executor deste processo: o


cozinheiro !
Desta forma, em cada contexto considerado, o conjunto das instrues primitivas so o
ponto de partida para a criao de processos de complexidade crescente.
Entretanto, a forma de agregao das instrues so aspectos pertinentes a qualquer
processo, independendo, portanto, do contexto a que se referem.
Estes mecanismos de agregao dizem respeito s estruturas lgicas que regulam a
forma de como a execuo de um processo se articula com as instrues primitivas que o
compem.

Estruturas de Controle
Nos exemplos introdutrios analisaremos, intuitivamente, as trs formas bsicas de
agregar instrues primitivas: seqenciao, seleo (escolha) e repetio.
Assim, por exemplo, nos trechos

Misture os ingredientes.
Unte o tabuleiro com manteiga.
Despeje a mistura no tabuleiro.

Arquive o documento.
Fornea protocolo.

Armazene os graus do aluno


Calcule as mdias destes graus.

senso comum que a idia que desejamos transmitir a de que estas instrues devem
ser executadas uma em seqncia outra.
Este o primeiro mecanismo de agregao utilizado para gerar processos complexos a
partir de processos mais simples, ou seja: a Seqenciao.
Outra forma de agregao pode ser observada nos trechos:

se (h queijo parmezon) ento


Espalhe sobre a mistura

se (mdia superior a 7) ento


Exiba mensagem Aprovado.
Seno
Exiba mensagem Reprovado

natural que a inteno nestes trechos que as instrues primitivas sejam ou no


executadas, em funo da condio estabelecida ser ou no atendida.
No primeiro caso, somente quando a condio
h queijo parmezon
for verdadeira, a instruo
Espalhe sabre a mistura
ser, de fato, executada pelo cozinheiro...

CONSTRUO DE ALGORITMOS
manuel@carioca.br

NEHAB/MANUEL

Construo de Algoritmos - Texto Introdutrio


Professores: Nehab e Manuel

No segundo caso, dependendo da condio


Mdia superior a 7
ser satisfeita uma nica das duas instrues
Exibe mensagem Aprovado

ou

Exibe mensagem Reprovado

ser realizada...
Assim, h um mecanismo de Seleo das instrues a serem executadas, que depende
da situao de veracidade ou falsidade da(s) condio(es) imposta(s) quando do
momento da execuo do trecho considerado.
Finalmente, uma terceira forma de agregao de instrues pode ser visualizada no
trecho:
enquanto (no corar)
deixe o tabuleiro no forno.
onde percebemos que um mecanismo de Repetio subordinado conduo no corou?
regula a execuo da instruo primitiva
Deixe o tabuleiro no forno
Esta discusso introduz as caractersticas estruturais que podem ser observadas nos
processos ou algoritmos e aborda, intuitivamente, as principais formas de agregao que
permitem criar algoritmos de complexidade crescente a partir de processos mais simples.

Estratgia de Pontuao
E importante assinalar uma questo fundamental para a correta redao de algoritmos: o
uso adequado de Pontuao ou Delimitadores.
Por exemplo, na Aritmtica so utilizados os parnteses, os colchetes e as chaves para
definir a efetiva ordem em que se deseja a realizao de operaes em uma expresso
(alm das manjadas regras como a multiplicao vem antes da soma, etc).
Assim as expresses
5+8x3-2

(5 + 8) x (3 - 2)

nos conduzem, naturalmente, a resultados diferentes. Os parnteses (etc) so


considerados sinais de pontuao, no sentido de possibilitarem a correta identificao de
como a agregao dos smbolos utilizados dever ser interpretada.
Da mesma forma, no Portugus, os sinais de pontuao - virgula, ponto-e-vrgula,
dois-pontos e travesso so considerados elementos de pontuao1.

1. Uma conhecida brincadeira sugere que se estabelea uma pontuao adequada para que a frase Levar uma
pedra do Brasil a Portugal uma andorinha s no faz vero seja compreensvel...

CONSTRUO DE ALGORITMOS
manuel@carioca.br

NEHAB/MANUEL

Construo de Algoritmos - Texto Introdutrio


Professores: Nehab e Manuel

Considere as duas formas que se seguem, para a redao do exemplo do


Contexto Administrativo, onde apenas alteramos o alinhamento vertical a
endentao - da ltima instruo:
se (Preenchimento correto) ento
Arquive o documento;
Fornea protocolo.
Seno
Lamente;
Torne a lamentar;
Mande o cliente comprar outro formulrio.
Despea-se educadamente do cliente.

Se (preenchimento correto) ento


Arquive o documento;
Fornea o protocolo.
Seno
Lamente;
Torne a lamentar;
Mande o cliente comprar outro formulrio.
Despea-se educadamente do cliente.

Para cada uma das duas situaes, a questo que se coloca a bvia: o executor do
algoritmo se despede educadamente do cliente apenas preenchimento do formulrio
estiver incorreto, ou proceder desta forma em qualquer circunstancia? Se apenas o
alinhamento fosse responsvel pela interpretao, estaria garantida a confuso!
Suponha que o Algoritmo em discusso fosse redigido como se segue, portanto, sem que
alinhamentos possuam qualquer importncia.
Se (preenchimento correto) ento Arquive o documento; Fornea protocolo. Seno
Lamente; Torne a lamentar. Mande o cliente comprar outro formulrio. Despea-se
educadamente do cliente.
E agora, sem o alinhamento, a forma de interpret-lo nica? Felizmente, ... Perceba
que a funo pretendida para o ponto-e-vrgula e para o ponto so distintas. O ponto
define a finalizao de uma estrutura - seja uma Seqncia, uma Seleo ou uma
Repetio.
Suponha, entretanto, que inventssemos uma outra forma de delimitar as estruturas de
Seleo e de Repetio atravs de marcadores - as expresses Fim-do-se e
Fim-do-enquanto - que sero utilizadas para definir onde as estruturas de Seleo e de
Repetio terminam...
Nesta estratgia a redao dos algoritmos, bem como sua adequada interpretao,
tornam-se mais simples de estabelecer.
A idia que todas as instrues dos blocos da condicional estejam entre as expresses
ento/seno e entre seno/fim-do-se; da mesma forma, todas as instrues dentro do
processo de repetio so escritas entre as expresses Enquanto e Fim-do-enquanto. O
uso de diferentes alinhamentos passa a ser apenas uma forma de facilitar a leitura, no
sendo essencial para a adequada interpretao do algoritmo. As redaes que se segue
ilustram esta discusso.
Se (preenchimento correto) ento
Arquive o documento
Fornea protocolo
Seno
Lamente
Torne a lamentar
Mande o cliente comprar outro formulrio
Fim-do-se
Despea-se educadamente do cliente

Se (h queijo parmezon)
Espalhe sobre a mistura
Fim-do-se
Leve o tabuleiro ao forno
Enquanto (no corar)
Deixe o tabuleiro no forno
Fim-do-Enquanto
Deixe esfriar
Experimente antes de servir

Em cada linguagem de programao que estudar, voc perceber que a forma de


pontuao utiliza uma combinao de sinais de pontuao propriamente ditos e
delimitadores2...

2 Solicite exemplos de seu professor...

CONSTRUO DE ALGORITMOS
manuel@carioca.br

NEHAB/MANUEL

Construo de Algoritmos - Texto Introdutrio


Professores: Nehab e Manuel

Representao de Algoritmos
Nesta unidade estudaremos as principais formas de representao das trs estruturas
bsicas de controle usadas na descrio de processos estruturados: Seqncia, Seleo
(ou deciso) e Repetio.
Assim, nesta etapa, absolutamente irrelevante o contexto do algoritmo em discusso,
mas apenas como se articulam as aes para a concepo de estruturas mais complexas.
Abordaremos as seguintes representaes: Linguagem Estruturada, tambm chamada de
Pseudocdigo ou Pseudo-linguagem, o algumas vezes til, embora inadequado,
Fluxograma Convencional e o interessante Diagrama Estruturado.

Introduo
Considere o processo a seguir, descrito de forma livre.
Olhe para a rua. Caso venha um carro, espere; caso contrrio, atravesse.
Observe que este processo pode ser entendido como constitudo de dois sub-processos a
serem executados um depois do outro - ou seja, em seqncia:
- o primeiro, constitudo exclusivamente da instruo primitiva Olhe para a rua;
- o segundo, uma estrutura de seleo, cuja condio para teste Vem Carro?
importante assinalar que uma estrutura de seleo, embora de nvel de complexidade
maior do que a de uma simples instruo primitiva pode e deve ser entendida como um
todo! Assim, neste exemplo, sob o ponto de vista da execuo deste processo, h duas
etapas.

Representao em Linguagem Estruturada


Na representao de uma estrutura condicional Pseudo-linguagem, note que:
- a condio est descrita entre as expresses Se e
ento;
- as instrues a serem executadas quando a condio
for verdadeira, sero descritas entre as expresses
Ento e Seno;
- as instrues a serem executadas quando a condio
falsa esto descritas entre as expresses Seno e
Fim-do-se.

Linguagem Estruturada
Etapa 1

Olhe para a rua

Etapa 2

Se (vem carro) ento


Espere
Seno
Atravesse
Fim-do-se

Obs: A representao de estruturas de repetio ser abordada formalmente adiante.

CONSTRUO DE ALGORITMOS
manuel@carioca.br

NEHAB/MANUEL

Construo de Algoritmos - Texto Introdutrio


Professores: Nehab e Manuel

Representao em Diagrama Estruturado


Observe a representao em diagrama estruturado.
Um algoritmo representado por um
retngulo cujas fatias horizontais so
suas etapas em seqncia.
Alm disso, a representao de
estruturas de seleo e de repetio
so retngulos especiais.
Observe, intuitivamente, o retngulo
utilizado para a estrutura de seleo
deste exemplo.

Representao em Fluxograma
A representao em Fluxograma possui duas caractersticas principais:
- as instrues primitivas so expressas
em retngulos (se houver vrias
instrues primitivas em seqncia
para simplificar, podem ser descritas
em um nico retngulo).
- os testes (tanto nas estruturas de
seleo quanto nas de repetio) so
explicitados em losangos, onde a
mgica o siga a seta para
acompanhar que instrues sero
executadas quando a condio do
teste for verdadeira ou for falsa.

Obs.: Nesta forma de representao, pode ocorrer que a lgica do processo descrito seja
um verdadeiro labirinto (adiante esta discusso ser enfatizada), muito embora, neste
exemplo, sejam indicadas as duas etapas que constituem este processo.

CONSTRUO DE ALGORITMOS
manuel@carioca.br

NEHAB/MANUEL

Construo de Algoritmos - Texto Introdutrio


Professores: Nehab e Manuel

Representao das Estruturas


Estrutura de Seqncia

Estrutura de Seleo Simples

Estrutura de Seleo Completa

CONSTRUO DE ALGORITMOS
manuel@carioca.br

NEHAB/MANUEL

Construo de Algoritmos - Texto Introdutrio


Professores: Nehab e Manuel

Estrutura de Repetio (com teste a priori)

Nos trs exemplos que se seguem, assuma que a, b, etc, so instrues primitivas e q,
q1, q2, etc, so condies a serem testadas. Perceba que o algoritmo est representado
em apenas urna das formas estudadas. Para cada um dos exemplos:
a. Represente o algoritmo nas duas outras formas;
b. Complete o quadro de Aes Executadas, onde devem ser explicitadas. Em cada linha,
as instrues a serem executadas em cada situao de veracidade ou falsidade das
condies existentes.

Exemplo 2.

Soluo
Observe que este algoritmo, a rigor, possui 4 etapas em seqncia: as instrues
primitivas a, b, uma estrutura de seleo (condicional) e a instruo primitiva f.
Analisando a figura podemos observar que, em qualquer situao, as
instrues primitivas a, b e f sero sempre executadas (veja em
itlico na tabela de aes). Entretanto, em funo da estrutura
condicional, observamos que: se q verdadeira, executada a ao
d; caso contrrio, so executadas as aes c e e (escritas sublinhadas
na tabela, para melhor compreenso).

CONSTRUO DE ALGORITMOS
manuel@carioca.br

NEHAB/MANUEL

Construo de Algoritmos - Texto Introdutrio


Professores: Nehab e Manuel

A representao deste exemplo em Linguagem Estruturada Convencional imediata.

Exemplo 3.

Soluo
Observe que este algoritmo constitudo, para quem olha de fora, digamos assim, de
uma nica estrutura de Seleo (condicional)!
Quando a condio q1 verdadeira, executada a instruo a; caso contrrio so
executados os processos b, X, e c, conforme indicado.
A figura da direita ilustra o desenho do fluxograma com a etapa X substituindo a regio
tracejada.

CONSTRUO DE ALGORITMOS
manuel@carioca.br

NEHAB/MANUEL

Construo de Algoritmos - Texto Introdutrio


Professores: Nehab e Manuel

10

Por outro lado, o sub-processo X constitudo, tambm, de uma nica seleo com
condio q2; quando q2 verdadeira, executada a instruo d; caso contrrio, so
executadas as etapas e, Y e f, conforme indicado a seguir. Note tambm que Y uma
simples condicional.

Refazendo esta anlise, podemos preencher a tabela de aes e descrever o algoritmo


proposto na forma de Diagrama Estruturado e Linguagem Estruturada:
Note que a Tabela de Aes pode ser preenchida como se segue:
- as 4 primeiras linhas (onde q1 verdadeiro) so
preenchidas com a e mais nada...;
- as 4 ltimas linhas (onde q1 falsa) necessariamente
comeam com b e terminam com c:
- quando q1 falsa e q2 verdadeira, alm de b e c, j
includas na tabela, executada d e pronto;
- quando (ainda) q1 falsa e q2 tambm, alm de b e
c, j includas na tabela, so executadas e e f;
- finalmente, ainda quando q1 e q2 so falsas,
dependendo de q3 ser executada g ou h (duas
ltimas linhas)...

CONSTRUO DE ALGORITMOS
manuel@carioca.br

10

NEHAB/MANUEL

Construo de Algoritmos - Texto Introdutrio


Professores: Nehab e Manuel

11

Exemplo 4.

Soluo
Observe que este algoritmo, descrito sob a forma de fluxograma, explicita uma situao
curiosa: no possvel separar os lados verdadeiro e falso da condicional q1, uma vez
que a instruo c utilizada por ambos os lados! Dizemos, intuitivamente, que este
algoritmo no estruturado...
Uma situao como esta s possvel na Representao em Fluxograma; impossvel
um algoritmo descrito em Diagrama Estruturado ou na Linguagem Estruturada ter uma
anomalia semelhante exibida neste exemplo (portanto a expresso estruturada nestas
representaes, no gratuita...).
Assim, para expressar este algoritmo em uma dessas duas formas necessrio eliminar
a ligao mais escura e duplicar a instruo c na sada de q2, conforme sugerido na
figura. Estritamente falando, criamos um algoritmo equivalente tornando-o representvel
de forma estruturada.
Nesta condio, a soluo a que se segue:

Se q1 ento
a
c
Seno
b
Se q2 ento
c
Seno
d
Fim-do-se
Fim-do-se

CONSTRUO DE ALGORITMOS
manuel@carioca.br

11

NEHAB/MANUEL

Construo de Algoritmos - Texto Introdutrio


Professores: Nehab e Manuel

12

Contexto Computacional
Memria Modelo Esquemtico
Introduo
Um modelo introdutrio para Memria Principal de um computador o de uma seqncia
de clulas numeradas capazes de armazenar, cada uma, a cada instante, uma dada
informao.
A referncia a cada clula da memria realizada atravs de seu endereo numrico.
Assim, uma ao primitiva para criar um determinado valor em uma clula pode ser
expressa da seguinte forma:
Armazene o valor 25 na posio de memria
de endereo 2

Memria

e o resultado obtido pode ser representado,


esquematicamente, como na figura ao lado.
Basicamente, para uma informao ser tratada por um computador, precisa estar
armazenada em sua Memria Principal. Assim, em um programa para calcular a mdia
de dois dados, necessrio que os dados estejam previamente armazenados na
memria para que a mdia seja calculada e fique disponvel em uma clula da mesma.
Um programa que receba dois nmeros, calcule sua mdia e exiba este valor no vdeo
possu, necessariamente, trs instrues bem distintas.
- uma instruo primitiva de Leitura, que transferir os dados de algum equipamento de
Entrada (teclado, por exemplo) para a memria.
- uma instruo primitiva de Atribuio, que calcular o valor da mdia a partir dos
valores das parcelas j armazenadas na memria e a gravar em determinada posio
na memria.
- e, finalmente, uma instruo primitiva de impresso que transferir uma cpia do valor
da mdia, j armazenada na memria, para algum equipamento de sada (vdeo, por
exemplo).

Exemplo 5.
Se desejamos computar a mdia obtida por um aluno em um curso, podemos, numa
formulao preliminar, escrever a seguinte seqncia de instrues intuitivas:
- Leia o valor do grau obtido na 1 prova e o
armazene na posio de memria 1;
- Leia o valor do grau obtido na 2 prova e o
armazene na posio de memria 3;
- Atribua a posio de memria 7 a mdia dos
valores armazenados nas posies 1 e 3;
- Imprima o valor armazenado na posio de
memria de nmero 7.

Memria

Supondo que os dois graus fornecidos foram 6 e 7, aps a execuo da terceira ao


(primitiva), a memria poder ser representada, esquematicamente, como sugere a
figura.
CONSTRUO DE ALGORITMOS
manuel@carioca.br

12

NEHAB/MANUEL

Construo de Algoritmos - Texto Introdutrio


Professores: Nehab e Manuel

13

Tabela de Smbolos
A descrio do processo anterior, que explicita na sua prpria formulao os endereos
utilizados para o armazenamento das informaes , sem dvida, um fator
excessivamente limitante para a descrio eficaz de algoritmos computacionais.
O conceito de nome simblico, que possibilita a associao de apelidos s clulas da
memria, a estratgia que viabiliza uma maior liberdade na descrio de programas.
Assim, a gerncia dos endereos das clulas utilizadas em um algoritmo deslocada do
programador para a mquina.
Esta associao feita atravs da chamada
Tabela de Smbolos que, em essncia,
gerencia a associao dos Nomes Simblicos
escolhidos aos endereos das clulas de
memria disponveis para utilizao.

Tabela de Smbolos

Neste texto utilizaremos o termo varivel para referncia ao nome simblico (ou apelido)
associado a uma posio de memria, durante a execuo de um particular processo.

Exemplo 6.
O exemplo anterior, que calcula a mdia obtida por um aluno em um curso, pode ser
descrito de forma mais concisa como se segue (use a intuio, por enquanto...).
Leia G1
Leia G2
M (G1+G2)/2
Imprima M
Representando no esquema que se segue o mecanismo de atribuio automtica de
endereos de memria aos nomes simblicos utilizados na formulao das instrues,
temos:

Memria
Tabela de Smbolos

CONSTRUO DE ALGORITMOS
manuel@carioca.br

13

NEHAB/MANUEL

Construo de Algoritmos - Texto Introdutrio


Professores: Nehab e Manuel

14

Instrues Primitivas
Instruo de Atribuio
Formato
varivel

Semntica
expresso

O resultado da expresso ser armazenado sob o nome


simblico que est esquerda do sinal de atribuio:
Tal expresso poder ser um simples valor numrico ou
poder conter operaes envolvendo informaes j
armazenadas na memria e associados a nomes simblicos
previamente definidos.

Exemplo 7.
No trecho do algoritmo descrito a seguir retratamos em um esquema que chamaremos
de Chins, uma seqncia de fotografias da memria, que refletem, a cada passo, o
contedo de cada posio de memria.
Algoritmo

Chins

Memria

Note que este esquema (o Chins...) possui uma vantagem sobre a representao da
memria sob a forma de tabela de clulas: nele, voc tem conhecimento do contedo da
memria ao longo do tempo...

Exemplo 8.
Considere o trecho de algoritmo descrito.
A + A deve ser interpretada com cuidado: o Lado
Observe que uma instruo como A
esquerdo (A) deve ser substitudo pelo resultado da expresso do lado direito (A + A);
como o valor de A neste instante 3, a operao de soma do lado direito realizada
com o valor 3; logo, o resultado da expresso 6 e substituir, portanto, o valor atual
de A. Portanto h uma questo temporal a ser considerada nestas situaes.

CONSTRUO DE ALGORITMOS
manuel@carioca.br

14

NEHAB/MANUEL

Construo de Algoritmos - Texto Introdutrio


Professores: Nehab e Manuel

15

Instruo de Leitura
Formato

Semntica

Leia lista-de-variveis

A execuo da instruo de leitura pressupe que os dados


sero fornecidos do meio externo (teclado, arquivo gravado
em disco, etc) e sero armazenados na memria sob os
nomes simblicos, na ordem em que figuram no comando.

Exemplo 9.
Assuma que a instruo de Leitura interprete o Teclado como o dispositivo padro de
Entrada de Dados e que sejam digitados os valores 3 e 5 quando da solicitao de dados
pela execuo da instruo Leia A, B.
O esquema indicada sugere o Chins e os valores disponveis na Memria durante a
execuo do algoritmo dado.

Algoritmo

Memria

Chins

Leia A, B
CA+B
A7

Instruo de Impresso
Formato

Semntica

Imprima variveis ou texto

A execuo da instruo de impresso pressupe que


informaes esto armazenadas na memria e sero
colocadas no meio externo (tela de vdeo, arquivo em
disco, impressora, etc) atravs da referncia nos nomes
simblicos constantes da lista de variveis. A opo
texto prevista no formato da instruo permite
tambm que sejam explicitados textos para a
documentao das sadas.

CONSTRUO DE ALGORITMOS
manuel@carioca.br

15

NEHAB/MANUEL

Construo de Algoritmos - Texto Introdutrio


Professores: Nehab e Manuel

16

Exemplo 10.
Assuma que a instruo de impresso utilize o vdeo como dispositivo padro de Sada de
Dados. No exemplo que se segue, observe que a instruo de impresso no
adequadamente representada no esquema do Chins nem, claro, no de Memria. Estas
instrues poderiam ser representadas, pictoricamente, na tela exibida.
Algoritmo

Sada (vdeo...)

A3
B5
C2
Imprima A,B,C
Imprima A,B,C
Imprima A,B,C

352
3
25

Exemplo 11
Analise o trecho de algoritmo descrito a seguir e a representao da sada gerada.
Sada (vdeo...)

Algoritmo
Leia G1, G2
Imprima Graus
Imprima G1, G2
M (G1+G2)/2
Imprima
Imprima Mdia =, M

Graus
6 7
Mdia = 6,5

Observe que assumimos que podem ser separados por ponto-e-vrgula os elementos que
comporo as informaes para uma mesma instruo de sada. Estas informaes so
impressas na mesma linha do dispositivo de sada, conforme a segunda e terceira
instrues de impresso.

CONSTRUO DE ALGORITMOS
manuel@carioca.br

16

NEHAB/MANUEL

Construo de Algoritmos - Texto Introdutrio


Professores: Nehab e Manuel

17

Tipos de Dados Simples


Introduo
Na introduo do conceito de Memria sugerimos que cada clula (posio) de memria
pode armazenar a cada instante, uma determinada informao.
Na realidade este um modelo simplificado do mecanismo de armazenamento de
informaes na memria.
Uma informao numrica, textual, etc exige, de fato, mais do que uma posio de
memria para armazen-la. O nmero de clulas necessrias depende do tipo de dado
utilizado.
Um modelo mais adequado de uso da memria pressupe que na Tabela de Smbolos
sejam informados o endereo da clula inicial utilizada para armazenar a informao e o
nmero de clulas necessrias (que depender apenas do tipo de dado a ser usado).
Assim esta discusso torna clara a importncia, na Construo de Algoritmos, a
especificao dos tipos de dados a serem armazenados nas variveis utilizadas em um
particular algoritmo.
Na discusso de algoritmos, no capitulo anterior, estas questes no foram abordadas,
considerando a importncia, naquele momento, de enfatizarmos as estruturas lgicas de
programao.
Este capitulo aborda a forma como podem ser declarados os tipos de dados a serem
utilizados nos algoritmos. Assim, cada nome simblico em um algoritmo ter associado
um tipo de dado. Desta forma o sistema poder gerenciar, com a Tabela de Smbolos, o
correto armazenamento de seus valores na memria.

Principais Tipos
Os tipos de dados bsicos que utilizaremos neste texto so Inteiro, Real, Literal (texto),
Data e Lgico. Este ltimo, sem dvida pouco natural para quem se inicia na arte de
programar, fundamental sob o ponto de vista conceitual, como veremos
oportunamente.
A utilizao de nomes simblicos pressupe, a partir de agora, a especificao do tipo de
dado que ser associado ao mesmo:
Inteiro
Real
Literal
Data
Lgico

valores
valores
valores
valores
valores

numricos inteiros
numricos no inteiros
alfanumricos (seqncia de caracteres)
representativos de datas
que assumem apenas dois estados: verdadeiro (.V.) ou falso (.F.)

CONSTRUO DE ALGORITMOS
manuel@carioca.br

17

NEHAB/MANUEL

Construo de Algoritmos - Texto Introdutrio


Professores: Nehab e Manuel

18

Exemplo 12.
Convencionaremos, conforme expresso nos exemplos que se seguem, que um valor
literal dever ser expresso entre aspas e uma data dever ser expressa entre colchetes.

Comando para Definio de Tipo


Para declarar que um nome simblico est associado a um determinado tipo de dado,
utilizaremos um comando declarativo que, aps a palavra var, explicita os nomes das
variveis desejadas e os tipos que sero associados assim:
var nomes: tipo
nomes: tipo
nomes: tipo
:
onde tipo pode assumir as opes inteiro, real, literal, data ou lgico.

Exemplo 13.

Na notao a ser utilizada podem ser declaradas diversas variveis em uma nica
declarao de tipo.

Expresses Aritmticas
Expresses aritmticas so expresses onde intervm variveis do tipo numrico e os
operadores associados a este tipo de dado.
Os operadores numricos que sero assumidos em nossa pseudo-linguagem so:

CONSTRUO DE ALGORITMOS
manuel@carioca.br

18

NEHAB/MANUEL

Construo de Algoritmos - Texto Introdutrio


Professores: Nehab e Manuel

19

Quando ocorrem vrios operadores, a ordem os operadores a usual da matemtica:


primeiro a potenciao, em seguida a multiplicao e diviso e, a seguir, a adio e
subtrao.
Quando uma operao envolve operadores de mesma precedncia, as operaes devem
ser realizadas da esquerda para a direita. Alm disso, o uso dos parnteses deve ser
incentivado para facilitar a compreenso das expresses.

Funes Simples
comum estarem disponveis nas linguagens de programao as chamadas funes
internas, utilizadas para clculos matemticos. Por exemplo, o logaritmo de um nmero
X escreve-se log(X), o seno de um ngulo X escreve-se sen(X), etc. Assumiremos
que estas funes, sempre que necessrio, podero ser livremente usadas em nossa
Pseudo-Linguagem.
Alm das funes trigonomtricas e logartmicas til dispor, em nossa
pseudo-linguagem, de mais duas funes especiais, que calculam o resto e o quociente
da diviso inteira de dois nmeros inteiros.
Mod(A, B)
Div(A, B)

: fornece o resto da diviso inteira entre A e B


: fornece o quociente da diviso inteira de A por B

Exemplo 14.
Analise o resultado da varivel X em cada uma das atribuies indicadas. Assuma que
A=2, B=4, C=5 e D=14.

Exemplo 15.
Suponha que uma universidade utiliza como cdigo de matricula, um nmero inteiro no
formato AASDDDD onde:
- os dois primeiros algarismos so os dois ltimos dgitos do ano da matricula;
- o terceiro digito vale 1 ou 2, conforme o aluno tenha se matriculado no 1 ou 2
semestre;
- os 4 ltimos dgitos so o seqencial propriamente dito da matricula do aluno.
Crie um algoritmo que leia o nmero de matricula de um aluno e imprima o ano e o
semestre em que foi matriculado.
Soluo

CONSTRUO DE ALGORITMOS
manuel@carioca.br

19

NEHAB/MANUEL

Construo de Algoritmos - Texto Introdutrio


Professores: Nehab e Manuel

20

Exemplo 16.
Crie um algoritmo que leia uma data no formato DDMMAA e a imprima no formato
AAMMDD. Assuma que a data lida pelo algoritmo em uma varivel inteira e no em
uma varivel do tipo data.
Soluo

Operadores e funes envolvendo variveis do Tipo Data


Algumas funes envolvendo datas so teis e disponveis em vrias linguagens de
programao. Na nossa pseudo-linguagem sero assumidas as funes que se seguem,
onde Data, Data1 e Data2 so variveis do tipo data:
Hoje()
Ano(Data)
Ms(Data)
Dia(Data)

:
:
:
:

funo
funo
funo
funo

que
que
que
que

retorna
retorna
retorna
retorna

a
o
o
o

data do sistema
valor numrico do ano da data
valor numrico do ms da data
valor numrico do dia da data

Obs: Em alguns ambientes tambm usual ter disponvel uma funo que cria uma data
a partir do dia, ms e ano numricos. Em geral seu formato Data(ano, ms, dia).
Tambm comum usar o operador diferena, assim: Data1 Data2, que fornece o
nmero de dias decorridos entre as duas datas.

Exemplo 17.
Analise o resultado das expresses indicadas, onde Data1 = {12/12/96}. Data2 =
{5/01/1997}.
Atribuio

CONSTRUO DE ALGORITMOS
manuel@carioca.br

20

NEHAB/MANUEL

Construo de Algoritmos - Texto Introdutrio


Professores: Nehab e Manuel

21

Expresses Literais
Expresses literais so expresses cujo resultado so valores literais
Em geral, nestas expresses, ocorre o operador de concatenao (justaposio) de
literais e/ou funes que extraem partes de uma literal (adiante).
O operador de concatenao, que designaremos por & (o e comercial), opera sobre duas
literais VarTexto1 e VarTexto2, resultando na justaposio de ambas.

Exemplo 18.
Se L1 = Jos, L2 = #Maria, L3 = Carlos## e L4 # (onde o sinal # representa um
espao em branco), temos:

Funes Literais Usuais


Na tabela que se segue esto explicitadas as principais funes que tratam variveis
literais e que sero supostas disponveis em nossa pseudo-linguagem.

CONSTRUO DE ALGORITMOS
manuel@carioca.br

21

NEHAB/MANUEL

Construo de Algoritmos - Texto Introdutrio


Professores: Nehab e Manuel

22

Exemplo 19.
Se Lit1 = Construo#de#Algoritmos, Lit2 = Lgica#de#Programao e Lit3 = de#

Expresses Relacionais
Expresses Relacionais so expresses onde intervm os operadores chamados
relacionais, ou seja, operadores que comparam duas grandezas. Na tabela que se segue
esto explicitados os operadores que sero assumidos em nossa linguagem.

O resultado de uma expresso relacional um valor lgico: .V. (Verdadeiro) ou .F.


(Falso).
Obs.: Nas linguagens em geral, no esto disponveis os sinais de (menor ou igual),
(maior ou igual) e (diferente), sendo utilizados os sinais indicados na tabela.

Exemplo 20.
Considere que:

Analise os valores assumidos pelas expresses indicadas.

CONSTRUO DE ALGORITMOS
manuel@carioca.br

22

NEHAB/MANUEL

Construo de Algoritmos - Texto Introdutrio


Professores: Nehab e Manuel

23

Expresses Lgicas
Expresses Lgicas so expresses onde intervm os operadores chamados lgicos, ou
seja, operadores que conectam expresses relacionais ou outras expresses lgicas de
menor complexidade.
Seguem os operadores que sero assumidos em nossa linguagem:
Operador
no
.e.
.ou.

Operao
Negao
Conjuno
Disjuno

Tabelas Verdade dos Operadores Lgicos


A tabelas a seguir explicitam como so atribudos valores .V. ou .F. s expresses lgicas
que utilizam estes operadores.

Exp
V
F

No Exp
F
V

Exp
V
F
V
F

Exp2
V
V
F
F

Exp1 .e. Exp2


V
F
F
F

Exp1 .ou. Exp2


V
V
V
F

Exemplo 21.
Assuma que:
AV
N7

B .F.
S Joo

M 3,5
T Jos

Analise o valor atribudo a X, varivel lgica, em cada uma das expresses.

X
X
X
X

X Expresso
(M >= N)
(M = N/2)
(S >T)
no (M<>N)

CONSTRUO DE ALGORITMOS
manuel@carioca.br

Valor de X
.F.
.V.
.F.
.F.

X
X
X
X

23

X Expresso
A .ou. B
A .e. B
no A
A .ou. (no B)

Valor de X
.V.
.F.
.F.
.V.

NEHAB/MANUEL