Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Texto Introdutrio
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
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
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
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
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.
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:
CONSTRUO DE ALGORITMOS
manuel@carioca.br
NEHAB/MANUEL
ou
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)
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
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
CONSTRUO DE ALGORITMOS
manuel@carioca.br
NEHAB/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.
Linguagem Estruturada
Etapa 1
Etapa 2
CONSTRUO DE ALGORITMOS
manuel@carioca.br
NEHAB/MANUEL
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
manuel@carioca.br
NEHAB/MANUEL
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
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
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.
CONSTRUO DE ALGORITMOS
manuel@carioca.br
10
NEHAB/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
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
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
12
NEHAB/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
14
Instrues Primitivas
Instruo de Atribuio
Formato
varivel
Semntica
expresso
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
15
Instruo de Leitura
Formato
Semntica
Leia lista-de-variveis
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
CONSTRUO DE ALGORITMOS
manuel@carioca.br
15
NEHAB/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
17
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
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.
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
19
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)
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
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
:
:
:
:
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
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:
CONSTRUO DE ALGORITMOS
manuel@carioca.br
21
NEHAB/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.
Exemplo 20.
Considere que:
CONSTRUO DE ALGORITMOS
manuel@carioca.br
22
NEHAB/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
Exp
V
F
No Exp
F
V
Exp
V
F
V
F
Exp2
V
V
F
F
Exemplo 21.
Assuma que:
AV
N7
B .F.
S Joo
M 3,5
T Jos
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