Você está na página 1de 33

Algoritmo e Lgica de programao

- 1 -
Universidade Federal do Rio Grande do Norte
Centro de Tecnologia
Departamento de Computao e Automao














Algoritmo e Lgica de Programao
Algoritmos Parte 1

DCA 800 Eng. Qumica

















Maio / 2004


Algoritmo e Lgica de programao
- 2 -

Captulo 1........................................................................................................... 3
Introduo....................................................................................................... 3
1. Conceito de Algoritmo............................................................................. 3
1.1 Algumas Definies de Algoritmo ......................................................... 3
Captulo 2........................................................................................................... 4
Formas de Representao de Algoritmos....................................................... 4
2.1 Descrio Narrativa............................................................................... 4
2.2 Fluxograma Convencional..................................................................... 4
2.3 Pseudocdigo ....................................................................................... 5
2.4 Sntese.................................................................................................. 6
Captulo 3........................................................................................................... 7
Tipos de Dados............................................................................................... 7
3.1 Dados Numricos.................................................................................. 7
3.2 Dados Literais ....................................................................................... 8
3.3 Dados Lgicos ...................................................................................... 9
3.4 Sntese.................................................................................................. 9
3.5 Exerccio Proposto .............................................................................. 10
Captulo 4......................................................................................................... 11
Variveis....................................................................................................... 11
4.2 Armazenamento de Dados na Memria.............................................. 11
4.3 Conceito e Utilidade de Variveis ....................................................... 13
4.4 Definio de Variveis em Algoritmos................................................. 14
4.5 Sntese................................................................................................ 15
4.6 Exerccios Propostos........................................................................... 15
Captulo 5......................................................................................................... 24
Expresses................................................................................................... 24
5.1 Conceito.............................................................................................. 24
5.2 Operadores ......................................................................................... 24
5.3 Tipos de Expresses........................................................................... 25
5.4 Sntese................................................................................................ 27
5.6 Exerccios Propostos........................................................................... 28
Captulo 6......................................................................................................... 27
Instrues Primitivas..................................................................................... 27
6.1 Instruo Primitiva de Atribuio......................................................... 28
6.2 Instruo Primitiva de Sada de Dados ............................................... 29
6.3 Instruo Primitiva de Entrada de Dados.............................................. 1
6.4 Sntese................................................................................................ 32
6.5 Exerccios Resolvidos ......................................................................... 32
6.6 Exerccios Propostos........................................................................... 36
Algoritmo e Lgica de programao
- 3 -
Captulo 1
Introduo

1. Conceito de Algoritmo

A automao o processo em que uma tarefa deixa de ser desempenhada pelo
homem e passa a ser realizada por mquinas, sejam estes dispositivos mecnicos, eletrnicos
(como os computadores) ou de natureza mista.

Para que a automao de uma tarefa seja bem-sucedida necessrio que a mquina
que passar a realiz-la seja capaz de desempenhar cada uma das etapas constituintes do
processo a ser automatizado com eficincia, de modo a garantir a repetibilidade do mesmo.
Assim, necessrio que seja especificado com clareza e exatido o que deve ser realizado em
cada uma das fases do processo a ser automatizado, bem como a seqncia em que estas
fases devem ser realizadas.

especificao da seqncia ordenada de passos que deve ser seguida para a
realizao de uma tarefa, garantindo a sua repetibilidade, d-se o nome de algoritmo.

Ao contrrio do que se pode pensar, o conceito de algoritmo no foi criado para
satisfazer s necessidades da computao. Pelo contrrio, a programao de computadores
apenas um dos campos de aplicao dos algoritmos. Na verdade, h inmeros casos que
podem exemplificar o uso (involuntrio ou no) de algoritmos para a padronizao do exerccio
de tarefas rotineiras (vide exemplos da Seo 2.1). No entanto, daqui adiante a ateno desta
apostila estar voltada automao de tarefas utilizando computadores.

Para que um computador possa desempenhar uma tarefa necessrio que esta seja
detalhada passo-a-passo, numa forma compreensvel pela mquina, utilizando aquilo que se
chama de programa. Neste sentido, um programa de computador nada mais que um
algoritmo escrito numa forma compreensvel pelo computador (linguagem de programao).

1.1 Algumas Definies de Algoritmo


"Serve como modelo para programas, pois sua linguagem intermediria linguagem
humana e s linguagens de programao, sendo ento, uma boa ferramenta na validao da
lgica de tarefas a serem automatizadas."

Os algoritmos, servem para representar a soluo de qualquer problema, mas no caso
do Processamento de Dados, eles devem seguir as regras bsicas de programao para que
sejam compatveis com as linguagens de programao.
Algoritmo e Lgica de programao
- 4 -

Captulo 2

Formas de Representao de Algoritmos

Existem diversas formas de representao de algoritmos, mas no h um consenso
com relao melhor delas.

O critrio usado para classificar hierarquicamente estas formas est diretamente ligado
ao nvel de detalhe ou, inversamente, ao grau de abstrao oferecido.

Algumas formas de representao de algoritmos tratam os problemas apenas em nvel
lgico, abstraindo-se de detalhes de implementao muitas vezes relacionados com alguma
linguagem de programao especfica. Por outro lado existem formas de representao de
algoritmos que possuem uma maior riqueza de detalhes e muitas vezes acabam por
obscurecer as idias principais do algoritmo, dificultando seu entendimento.

Dentre as formas de representao de algoritmos mais conhecidas podemos citar:

Descrio Narrativa;

Fluxograma Convencional;

Pseudocdigo, tambm conhecido como Linguagem Estruturada ou Portugol.

2.1 Descrio Narrativa

Nesta forma de representao os algoritmos so expressos diretamente em linguagem
natural. Como exemplo, tm-se os algoritmos seguintes:


Receita de bolo:

Misture os ingredientes
Unte a forma com manteiga
Despeje a mistura na forma
Se houver coco ralado
ento despeje sobre a mistura
Leve a forma ao forno
Enquanto no corar
deixe a forma no forno
Retire do forno
Deixe esfriar

Troca de um pneu furado:

Afrouxar ligeiramente as porcas
Suspender o carro
Retirar as porcas e o pneu
Colocar o pneu reserva
Apertar as porcas
Abaixar o carro
Dar o aperto final nas porcas
Tomando um banho:

Entrar no banheiro e tirar a roupa
Abrir a torneira do chuveiro
Entrar na gua
Ensaboar-se
Sair da gua
Fechar a torneira
Enxugar-se
Vestir-se




Clculo da mdia de um aluno:

Obter as suas 2 notas de provas
Calcular a mdia aritmtica
Se a mdia for maior que 7,
o aluno foi aprovado,
seno ele foi reprovado
Algoritmo e Lgica de programao
- 4 -
Esta representao pouco usada na prtica porque o uso da linguagem natural
muitas vezes d oportunidade a ms interpretaes, ambigidades e imprecises.

Por exemplo, a instruo "afrouxar ligeiramente as porcas" no algoritmo da troca de
pneus est sujeita a interpretaes diferentes por pessoas distintas. Uma instruo mais
precisa seria: "afrouxar a porca, girando-a 30 no sentido anti-horrio".

2.2 Fluxograma Convencional

uma representao grfica de algoritmos onde formas geomtricas diferentes
implicam aes (instrues, comandos) distintos. Tal propriedade facilita o entendimento das
idias contidas nos algoritmos e justifica sua popularidade.

Esta forma aproximadamente intermediria descrio narrativa e ao pseudocdigo
(subitem seguinte), pois menos imprecisa que a primeira e, no entanto, no se preocupa com
detalhes de implementao do programa, como o tipo das variveis usadas.

Nota-se que os fluxogramas convencionais preocupam-se com detalhes de nvel fsico
da implementao do algoritmo. Por exemplo, figuras geomtricas diferentes so adotadas
para representar operaes de sada de dados realizadas em dispositivos distintos, como uma
fita magntica ou um monitor de vdeo. Como esta apostila no est interessada em detalhes
fsicos da implementao, mas to somente com o nvel lgico das instrues do algoritmo,
ser adotada a notao simplificada da Figura 2.1 para os fluxogramas. De qualquer modo, o
Apndice A contm uma tabela com os smbolos mais comuns nos fluxogramas convencionais.

Incio e final do fluxograma
Operao de entrada de dados
Operao de sada de dados
Operao de atribuio
Deciso


Figura 2.1 Principais formas geomtricas usadas em fluxogramas.


Algoritmo e Lgica de programao
- 5 -
De modo geral, um fluxograma se resume a um nico smbolo inicial por onde a
execuo do algoritmo comea, e um ou mais smbolos finais, que so pontos onde a
execuo do algoritmo se encerra. Partindo do smbolo inicial, h sempre um nico caminho
orientado a ser seguido, representando a existncia de uma nica seqncia de execuo das
instrues. Isto pode ser melhor visualizado pelo fato de que, apesar de vrios caminhos
poderem convergir para uma mesma figura do diagrama, h sempre um nico caminho saindo
desta. Excees a esta regra so os smbolos finais, dos quais no h nenhum fluxo saindo, e
os smbolos de deciso, de onde pode haver mais de um caminho de sada (usualmente dois
caminhos), representando uma bifurcao no fluxo.

A Figura 2.2 mostra a representao do algoritmo de clculo da mdia de um aluno sob
a forma de um fluxograma.

Incio
N1, N2
"Aprovado"
MEDIA aaa
(N1 + N2) / 2
MEDIA >= 7
"Reprovado"
Fim
.V. .F.


Figura 2.2 Exemplo de um fluxograma convencional.

2.3 Pseudocdigo

Esta forma de representao de algoritmos rica em detalhes, como a definio dos
tipos das variveis usadas no algoritmo. Por assemelhar-se bastante forma em que os
programas so escritos, encontra muita aceitao.

Na verdade, esta representao suficientemente geral para permitir a traduo de um
algoritmo nela representado para uma linguagem de programao especfica seja praticamente
direta.

A forma geral da representao de um algoritmo na forma de pseudocdigo a
seguinte:
Algoritmo e Lgica de programao
- 6 -
Algoritmo <nome_do_algoritmo>
<declarao_de_variveis>
<subalgoritmos>
Incio
<corpo do algoritmo>
Fim

Algoritmo uma palavra que indica o incio da definio de um algoritmo em forma de
pseudocdigo.

<nome_do_algoritmo> um nome simblico dado ao algoritmo com a finalidade de
distingui-los dos demais.

<declarao_de_variveis> consiste em uma poro opcional onde so declaradas
as variveis globais usadas no algoritmo principal e, eventualmente, nos subalgoritmos.

<subalgoritmos> consiste de uma poro opcional do pseudocdigo onde so
definidos os subalgoritmos (Captulo 8).

Incio e Fim so respectivamente as palavras que delimitam o incio e o trmino do
conjunto de instrues do corpo do algoritmo.

Como exemplo, a Figura 2.3 mostra a representao do algoritmo do clculo da mdia
de um aluno, na forma de um pseudocdigo.

Algoritmo Calculo_Media
Var N1, N2, MEDIA: real
Incio
Leia N1, N2
MEDIA (N1 + N2) / 2
Se MEDIA >= 7 ento
Escreva Aprovado
Seno
Escreva Reprovado
Fim_se
Fim

Figura 2.3 Exemplo de um pseudocdigo.

2.4 Sntese

H diversas formas de representao de algoritmos que diferem entre si pela
quantidade de detalhes de implementao que fornecem ou, inversamente, pelo grau de
abstrao que possibilitam com relao implementao do algoritmo em termos de uma
linguagem de programao especfica.

Dentre as principais formas de representao de algoritmos destacam-se: a descrio
narrativa, o fluxograma convencional e o pseudocdigo (ou linguagem estruturada).

Algoritmo e Lgica de programao
- 7 -
Captulo 3

Tipos de Dados

Todo o trabalho realizado por um computador baseado na manipulao das
informaes contidas em sua memria. Grosso modo, estas informaes podem ser
classificadas em dois tipos:

As instrues, que comandam o funcionamento da mquina e determinam a
maneira como devem ser tratados os dados. As instrues so especficas para
cada modelo de computador, pois so funes do tipo particular de processador
utilizado em sua implementao.

Os dados propriamente ditos, que correspondem poro das informaes a
serem processadas pelo computador.

A maior parte das pessoas no ligadas rea de informtica ignora o potencial dos
computadores e imagina que eles so capazes de tratar apenas com dados numricos. Na
realidade, a capacidade dos mesmos se estende a outros tipos de dados.

O objetivo deste captulo justamente o de classificar os dados de acordo com o tipo
de informao contida neles. A classificao apresentada no se aplica a nenhuma linguagem
de programao especfica; pelo contrrio, ela sintetiza os padres utilizados na maioria das
linguagens.

3.1 Dados Numricos

Antes de apresentar formalmente os tipos de dados numricos, conveniente recordar
alguns conceitos bsicos relacionados teoria dos nmeros e conjuntos.

O conjunto dos nmeros naturais representado por N e dado por:

N = {1, 2, 3, 4, ...}

Algumas correntes de matemticos tericos convencionam que o nmero 0 est
contido neste conjunto; contudo, no convm perder tempo em tais discusses filosficas, uma
vez que isto no influenciar de forma alguma este estudo.

Na seqncia, encontramos o conjunto dos nmeros inteiros:

Z = {..., -3, -2, -1, 0, 1, 2, 3, ...}

O conjunto Z contm todos os elementos de N, bem como alguns nmeros que no
pertencem a N (os nmeros negativos e o zero). Portanto, dizemos que N est contido em Z,
ou ento, que Z contm N.

Englobando o conjunto dos nmeros inteiros, existe o conjunto dos nmeros
fracionrios (Q), dado pelo universo dos nmeros que podem ser expressos na forma de uma
frao, isto , um quociente onde o numerador e o denominador so nmeros inteiros. Mais
formalmente:

Q = ( p/q | p, q pertencem a Z}

Algoritmo e Lgica de programao
- 8 -
Por ltimo, surge o conjunto dos nmeros reais (R), formado pela unio do conjunto
dos nmeros fracionrios Q com o conjunto dos nmeros que no podem ser expressos na
forma de uma frao (os nmeros irracionais). Ex.: 2 = 1.1412... , PI = 3.14159...


3.1.1 Dados Numricos Inteiros

Os nmeros inteiros so aqueles que no possuem componentes decimais ou
fracionrios, podendo ser positivos ou negativos.

Os elementos pertencentes aos conjuntos N e Z, apesar de serem representveis na
classe dos nmeros reais, so classificados como dados do tipo inteiro, por no possurem
parte fracionria. Esta possibilidade interessante por permitir uma economia do espao de
memria, como veremos adiante.

Por sua vez, os elementos dos conjuntos Q e R, por possurem parte fracionria, no
podem ser representados na classe inteira, pertencendo necessariamente aos tipos de dados
ditos reais.

Como exemplos de nmeros inteiros temos:

24 - nmero inteiro positivo

0 - nmero inteiro

-12 - nmero inteiro negativo

3.1.2 Dados Numricos Reais

Os dados de tipo real so aqueles que podem possuir componentes decimais ou
fracionrios, e podem tambm ser positivos ou negativos.

Como dito anteriormente, os elementos dos conjuntos de nmeros fracionrios e reais
so necessariamente representados no computador por dados do tipo real.

Exemplos de dados do tipo real:

24.01 - nmero real positivo com duas casas decimais

144. - nmero real positivo com zero casas decimais

-13.3 - nmero real negativo com uma casa decimal

0.0 - nmero real com uma casa decimal

0. - nmero real com zero casas decimais

Observe que h uma diferena entre 0, que um dado do tipo inteiro 0. (ou 0.0)
que um dado do tipo real. Portanto, a simples existncia do ponto decimal serve para
diferenciar um dado numrico do tipo inteiro de um do tipo real.

3.2 Dados Literais

O tipo de dados literal constitudo por uma seqncia de caracteres contendo letras,
dgitos e/ou smbolos especiais. Este tipo de dados tambm muitas vezes chamado de
alfanumrico, cadeia (ou cordo) de caracteres, ainda, do ingls, string.
Algoritmo e Lgica de programao
- 9 -

Usualmente, os dados literais so representados nos algoritmos pela coleo de
caracteres, delimitada em seu incio e trmino com o caractere aspas (").

Diz-se que o dado do tipo literal possui um comprimento dado pelo nmero de
caracteres nele contido.

Exemplos de dados do tipo literal:

"QUAL ?" - literal de comprimento 6

" " - literal de comprimento 1

"qUaL ?!$" - literal de comprimento 8

" AbCdefGHi" - literal de comprimento 9

"1-2+3=" - literal de comprimento 6

0 - literal de comprimento 1

Note que, por exemplo, "1.2" representa um dado do tipo literal de comprimento 3,
constitudo pelos caracteres "1", "." e "2", diferindo de 1.2 que um dado do tipo real.

3.3 Dados Lgicos

A existncia deste tipo de dado , de certo modo, um reflexo da maneira como os
computadores funcionam. Muitas vezes, estes tipos de dados so chamados de booleanos,
devido significativa contribuio de BOOLE rea da lgica matemtica.

O tipo de dados lgico usado para representar dois nicos valores lgicos possveis:
verdadeiro e falso. comum encontrar-se em outras referncias outros tipos de pares de
valores lgicos como sim/no, 1/0, true/false.

Nos algoritmos apresentados nesta apostila os valores lgicos sero delimitados pelo
caractere ponto (.).

Exemplo:

.V. - valor lgico verdadeiro

.F. - valor lgico falso

3.4 Sntese

Os dados numricos dividem-se em duas classes:

inteiros, que no possuem parte fracionria e podem ser positivos ou negativos;

reais, que podem possuir parte fracionria e podem ser positivos ou negativos.

Os dados do tipo literal podem conter seqncias de letras, dgitos ou smbolos
especiais, delimitados por aspas ("). Seu comprimento dado pelo nmero de caracteres em
string.

Algoritmo e Lgica de programao
- 10 -
Os dados do tipo lgico s possuem dois valores possveis (.V. e .F.).

A rvore abaixo resume a classificao dos dados com relao aos tipos de dados
apresentados.



Figura 3.2 Representao dos diversos tipos de dados

3.5 Exerccio Proposto

1. Classifique os dados especificados abaixo de acordo com seu tipo, assinalando com I os
dados do tipo inteiro, com R os reais, com L os literais, com B os lgicos (booleanos), e
com N aqueles para os quais no possvel definir a priori um tipo de dado.

( ) 0.21
( ) 1
( ) V
( ) 0.
( ) 1%
( ) Jos
( ) 0,35
( ) .F.
( ) -0.001
( ) .T.
( ) +3257
( ) a
( ) +3257
( ) +3257.
( ) -0.0
( ) .F.
( ) 3
( ) .V.
( ) .V
( ) abc
( ) F
( ) C
( ) Maria
( ) +36
Algoritmo e Lgica de programao
- 11 -
Captulo 4

Variveis

A todo momento durante a execuo de qualquer tipo de programa os computadores
esto manipulando informaes representadas pelos diferentes tipos de dados descritos no
captulo anterior. Para que no se "esquea" das informaes, o computador precisa guard-
las em sua memria.

Este captulo destinado ao estudo da forma como os computadores armazenam e
acessam informaes contidas em sua memria.

4.2 Armazenamento de Dados na Memria

Cada um dos diversos tipos de dados apresentados no captulo anterior necessita de
uma certa quantidade de memria para armazenar a informao representada por eles.

Esta quantidade funo do tipo de dado considerado, do tipo da mquina
(computador) e do tipo de linguagem de programao. Por isso, o que ser exposto nos
subitens seguintes no deve ser tomado como padro, apenas como exemplo.

4.2.1 Armazenamento de Dados do Tipo Literal

Devemos sempre ter em mente que um byte consegue representar 256 (2
8
)
possibilidades diferentes.

Uma informao do tipo literal nada mais do que um conjunto de caracteres que
podem ser letras, dgitos ou smbolos especiais.

A unio de todos os caracteres existentes nos computadores resulta num conjunto com
um nmero de elementos menor que 256. Deste resultado surgiu a idia de associar a cada
caractere um nmero (cdigo) variando de 0 a 255 (256 possibilidades). No princpio, cada
fabricante de computador adotava uma conveno diferente para este cdigo. Mais
recentemente, esta conveno foi padronizada a fim de facilitar a portabilidade (migrao) de
programas entre mquinas diferentes. Esta conveno representada na forma de uma tabela
de mapeamento de caracteres em nmeros. O padro mais universalmente aceito o ASCII,
cuja tabela mostrada no Apndice B.

Assim, cada clula de memria (byte) pode conter um caractere, representado pelo seu
cdigo ASCII.

Retornando questo do armazenamento de informaes do tipo literal na memria,
deve-se lembrar que um dado deste tipo possui um certo comprimento dado pelo nmero de
caracteres nele contido. Portanto, para guardar um dado do tipo literal devemos alocar
(reservar) um espao contguo de memria igual ao comprimento do mesmo, destinando um
byte para cada caractere da informao.

Exemplificando, a informao do tipo literal "banana" possui seis caracteres e, portanto,
seis bytes so necessrios para reter a referida informao na memria. A princpio, estes
bytes podem estar em qualquer lugar da memria, mas conveniente que estejam juntos
(posies contguas). A primeira posio deste conjunto de bytes absolutamente arbitrria e
sua escolha geralmente feita automaticamente pelo compilador (isto , pelo programa que
Algoritmo e Lgica de programao
- 12 -
traduz um outro escrito em alguma linguagem de programao para outra geral, a linguagem
de mquina do computador com que se trabalha).

A Figura 4.3 mostra o caso em que se armazena a literal "banana" no conjunto de seis
bytes contguos de memria iniciando pela posio de memria 0. Na verdade, ao invs dos
caracteres da literal, os cdigos correspondentes aos mesmos que so guardados na
memria.


Endereo Informao
0 b (98)
1 a (97)
2 n (110)
3 a (97)
4 n (110)
5 a (97)

Figura 4.3 Armazenamento da literal banana na memria de um computador.

4.2.2 Armazenamento de Dados do Tipo Lgico

Uma informao do tipo lgico s possui dois valores possveis: .V. ou .F.. Assim, a
princpio, um nico bit seria suficiente para armazenar uma informao deste tipo. Contudo,
deve-se lembrar que a menor poro de memria que se pode acessar o byte. Portanto, uma
informao do tipo lgico armazenada em um byte de memria. De certa forma, se por um
lado isto pode ser como um "desperdcio" de memria, por outro simplifica bastante a
arquitetura de memria dos computadores (por motivos que fogem ao contexto desta apostila).
Alm do mais, isto no to relevante, uma vez que na prtica o nmero de ocorrncias de
dados do tipo lgico bastante inferior ao de ocorrncias de dados do tipo literal ou numrico.

4.2.3 Armazenamento de Dados do Tipo Inteiro

O conjunto dos nmeros inteiros (Z) contm um nmero infinito de elementos:

Z = { -, ..., -3, -2, -1, 0, 1, 2, 3, ..., +}

Obviamente invivel o armazenamento de todos os nmeros deste conjunto num
computador. Faz-se necessrio realizar um estudo para que se limite o nmero de elementos
representveis deste conjunto.

Se apenas um byte fosse utilizado para armazenar os dados do tipo inteiro, existiriam
apenas 256 nmeros diferentes neste conjunto:

{-127, -126, ..., -2, -1, 0, 1, 2, ..., 127, 128)

Esta restrio bastante forte, uma vez que boa parte das aplicaes prticas
necessitam de nmeros inteiros maiores que estes.

Se forem utilizados dois bytes para armazenar um nmero inteiro, o universo de
nmeros representveis cresce para 2
8
x 2
8
= 2
16
= 65.536 possibilidades:

{-32767, -32766, ..., -2, -1, 0, 1, 2, ..., 32767, 32768}

Este conjunto satisfaz grande maioria das necessidades prticas. Assim, em geral
utilizam-se dois bytes para representar os nmeros inteiros em computadores. Contudo, restam
algumas aplicaes muito especficas em que se precisa de um conjunto ainda maior. Para
Algoritmo e Lgica de programao
- 13 -
estes casos, algumas linguagens de programao fornecem mecanismos para trabalhar
nmeros inteiros com quatro bytes. Nestes casos os dados so ditos inteiros longos ou
estendidos.

4.2.4 Armazenamento de Dados do Tipo Real

O conjunto dos nmeros reais (R) contm um nmero infinito de elementos e, pelas
mesmas razes que o conjunto dos nmeros inteiros, precisa ser limitado.

Para dados deste tipo julgou-se apropriado adotar quatro bytes para sua representao
interna nos computadores.

So muito comuns situaes como as aplicaes cientficas em que necessria uma
maior preciso de clculo, intimamente ligada ao nmero de casas decimais dos dados. Para
este caso, em analogia com o que acontece com os dados do tipo inteiro, algumas linguagens
de programao decidiram criar dados do tipo real estendido (com oito bytes).

4.3 Conceito e Utilidade de Variveis

Como visto anteriormente, informaes correspondentes a diversos tipos de dados so
armazenadas na memria dos computadores. Para acessar individualmente cada uma destas
informaes, a princpio, seria necessrio saber o tipo de dado desta informao (ou seja, o
nmero de bytes de memria por ela ocupados) e a posio inicial deste conjunto de bytes na
memria.

Percebe-se que esta sistemtica de acesso a informaes na memria bastante
ilegvel e difcil de se trabalhar. Para contornar esta situao criou-se o conceito de varivel,
que uma entidade destinada a guardar uma informao.

Basicamente, uma varivel possui trs atributos: um nome, um tipo de dado
associado mesma e a informao por ela guardada.

Nome
Tipo de
dado
Informao


Figura 4.4 Atributos de uma varivel.

Toda varivel possui um nome que tem a funo de diferenci-la das demais. Cada
linguagem de programao estabelece suas prprias regras de formao de nomes de
variveis. Adotaremos nesta apostila as seguintes regras:

um nome de varivel deve necessariamente comear com uma letra;
um nome de varivel no deve conter nenhum smbolo especial exceto a sublinha
(_).

Exemplos:
Algoritmo e Lgica de programao
- 14 -

SALARIO
1ANO
ANO1
A CASA
SAL/HORA
SAL_HORA
_DESCONTO
= correto
= errado (no comeou com uma letra)
= correto
= errado (contm o caractere espao em branco)
= errado (contm o caractere "/)
= correto
= errado (no comeou com uma letra)

4.4 Definio de Variveis em Algoritmos

Todas as variveis utilizadas em algoritmos devem ser definidas antes de serem
utilizadas. Isto se faz necessrio para permitir que o compilador reserve um espao na
memria para as mesmas.

Nos algoritmos apresentados nesta apostila ser adotada a seguinte conveno:

todas as variveis utilizadas em algoritmos sero definidas no incio do mesmo, por
meio de um comando de uma das formas seguintes:

VAR <nome_da_varivel> : <tipo_da_varivel>

VAR <lista_de_variveis> : <tipo_das_variveis>

a palavra-chave VAR dever estar presente sempre e ser utilizada uma nica vez na
definio de um conjunto de uma ou mais variveis;

numa mesma linha podero ser definidas uma ou mais variveis do mesmo tipo. Para
tal, deve-se separar os nomes das mesmas por vrgulas;

variveis de tipos diferentes devem ser declaradas em linhas diferentes.

A forma de utilizao deste comando ficar mais clara quando da utilizao da
representao de algoritmos em linguagem estruturada (pseudocdigo).

Esta conveno vlida para a representao de algoritmos na forma de pseudocdigo.
Em termos de fluxograma, no usual adotar-se qualquer forma de definio de variveis.

Exemplo de definio de variveis:

VAR NOME : literal[10]
IDADE : inteiro
SALARIO : real
TEM_FILHOS : lgico

No exemplo acima foram declaradas quatro variveis:

a varivel NOME, capaz de armazenar dados literais de comprimento 10 (dez
caracteres);

a varivel IDADE, capaz de armazenar um nmero inteiro;

a varivel SALARIO, capaz de armazenar um nmero real;

a varivel TEM_FILHOS, capaz de armazenar uma informao lgica.

Algoritmo e Lgica de programao
- 15 -
4.5 Sntese

A memria dos computadores composta por clulas numeradas ordenadamente
denominadas bytes. Cada byte constitudo por 8 bits.

Cada tipo de dado requer um nmero diferente de bytes para armazenar a informao
representada por ele na memria. Esta quantidade tambm pode variar em funo do tipo de
computador considerado.

Uma varivel uma entidade dotada de um nome para diferenci-la das demais e um
tipo de dado que define o tipo de informao que ela capaz de guardar. Uma vez definidos,
o nome e o tipo de uma varivel no podem ser alterados no decorrer de um programa. Por
outro lado, a informao til da varivel objeto de constante modificao durante o decorrer
do programa, de acordo com o fluxo de execuo do mesmo.

4.6 Exerccios Propostos

1. Assinale com C os identificadores corretos e com I os incorretos. Explique o que est
errado nos identificadores incorretos.

( ) valor
( ) _b248
( ) nota*do*aluno
( ) a1b2c3
( ) 3 x 4
( ) Maria
( ) km/h
( ) xyz
( ) nome empresa
( ) sala_215
( ) nota
( ) ah!


2. Supondo que as variveis NB, NA, NMAT e SX sejam utilizadas para armazenar a nota
do aluno, o nome do aluno, o nmero da matrcula e o sexo, declare-as corretamente,
associando o tipo adequado ao dado que ser armazenado.

Algoritmo e Lgica de programao
- 24 -
Captulo 5

Expresses

5.1 Conceito

O conceito de expresso em termos computacionais est intimamente ligado ao
conceito de expresso (ou frmula) matemtica, onde um conjunto de variveis e constantes
numricas relacionam-se por meio de operadores aritmticos compondo uma frmula que, uma
vez avaliada, resulta num valor.



Figura 5.1 Tringulo de base (B) e altura (H).


Por exemplo, a frmula de clculo da rea do tringulo da Figura 5.1 dada por:

AREA = 0.5 x B x H

Esta frmula utiliza trs variveis: B e H, que contm as dimenses do tringulo, e
AREA, onde guardado o valor calculado (resultado da avaliao da expresso). H, tambm,
uma constante (0.5) e o operador de multiplicao (x), que aparece duas vezes na expresso.

O conceito de expresso aplicado computao assume uma conotao mais ampla:
uma expresso uma combinao de variveis, constantes e operadores, e que, uma vez
avaliada, resulta num valor.

5.2 Operadores

Operadores so elementos funcionais que atuam sobre operandos e produzem um
determinado resultado. Por exemplo, a expresso 3 + 2 relaciona dois operandos (os nmeros
3 e 2) por meio do operador (+) que representa a operao de adio.

De acordo com o nmero de operandos sobre os quais os operadores atuam, os
ltimos podem ser classificados em:

binrios, quando atuam sobre dois operandos. Ex.: os operadores das operaes
aritmticas bsicas (soma, subtrao, multiplicao e diviso);
Algoritmo e Lgica de programao
- 25 -
unrios, quando atuam sobre um nico operando. Ex.: o sinal de (-) na frente de
um nmero, cuja funo inverter seu sinal.

Outra classificao dos operadores feita considerando-se o tipo de dado de seus
operandos e do valor resultante de sua avaliao. Segundo esta classificao, os operadores
dividem-se em aritmticos, lgicos e literais. Esta diviso est diretamente relacionada com
o tipo de expresso onde aparecem os operadores.

Um caso especial o dos operadores relacionais, que permitem comparar pares de
operandos de tipos de dados iguais, resultando sempre num valor lgico.

Mais adiante sero apresentados os operadores dos diversos tipos acima relacionados.

5.3 Tipos de Expresses

As expresses so classificadas de acordo com o tipo do valor resultante de sua
avaliao.

5.3.1 Expresses Aritmticas

Expresses aritmticas so aquelas cujo resultado da avaliao do tipo numrico,
seja ele inteiro ou real. Somente o uso de operadores aritmticos e variveis numricas
permitido em expresses deste tipo.

Os operadores aritmticos relacionados s operaes aritmticas bsicas esto
sumarizados na Tabela 5.1.

Tabela 5.1 Operadores aritmticos e sua ordem de prioridade.

Operador Tipo Operao Prioridade
+ Binrio Adio 4
- Binrio Subtrao 4
* Binrio Multiplicao 3
/ Binrio Diviso 3
** Binrio Exponenciao 2
+ Unrio Manuteno de sinal 1
- Unrio Inverso de sinal 1

A prioridade entre operadores define a ordem em que os mesmos devem ser avaliados
dentro de uma mesma expresso. Este assunto ser tratado com maior profundidade numa
seo posterior.

O caractere (*) adotado na maioria das linguagens de programao para representar
a operao de multiplicao, ao invs do caractere (x), devido possibilidade da ocorrncia do
mesmo no nome de variveis. Pela mesma razo, o smbolo (**) adotado para representar a
operao de exponenciao. Algumas linguagens de programao adotam o smbolo (^ -
circunflexo) para esta finalidade, mas isto pouco freqente.

As variveis usadas em expresses aritmticas podem somente ser do tipo inteiro ou
real. Se todas as variveis que aparecem numa expresso so do tipo inteiro, ento o valor
resultante da expresso tambm do tipo inteiro. Se ao menos uma das variveis da
expresso aritmtica for do tipo real, ento o valor resultante da avaliao da expresso
necessariamente do tipo real.

Nos exemplos seguintes, assumiremos que:

Algoritmo e Lgica de programao
- 26 -
A, B e C so variveis do tipo inteiro;

X, Y e Z so variveis do tipo real.

Exemplos:

A + B * C = expresso de resultado inteiro
A + B + Y = expresso de resultado real
A / B = expresso de resultado real
X / Y = expresso de resultado real

5.3.2 Expresses Lgicas

Expresses lgicas so aquelas cujo resultado da avaliao um valor lgico (.V. ou
.F.).

Os operadores lgicos e suas relaes de precedncia so mostrados na Tabela 5.2.

Existem outros operadores lgicos, como por exemplo o OU_EXCLUSIVO., mas suas
funes podem ser exercidas por combinaes dos trs tipos de operadores da Tabela 5.2.

Tabela 5.2 Operadores lgicos e suas relaes de prioridade.

Operador Tipo Operao Prioridade
.OU. Binrio Disjuno 3
.E. Binrio Conjuno 2
.NO. Unrio Negao 1

Para exemplificar o uso de operadores lgicos, a Tabela 5.3 apresenta duas variveis
lgicas A e B. Uma vez que cada varivel lgica possui somente dois valores possveis, ento
h exatamente quatro combinaes para estes valores, razo pela qual a tabela tem quatro
linhas. As diversas colunas contm os resultados das operaes lgicas sobre as combinaes
possveis dos valores das variveis A e B.

Tabela 5.3 Tabela-Verdade dos operadores apresentados na Tabela 5.2.

A B .NO. A .NO. B A .OU. B A .E. B
.F. .F. .V. .V. .F. .F.
.F. .V. .V. .F. .V. .F.
.V. .F. .F. .V. .V. .F.
.V. .V. .F. .F. .V. .V.

Tabelas como a da Figura 5.3 so chamadas de Tabelas-Verdade. Convm salientar
as seguintes concluses que podem ser extradas por observao da Tabela 5.3:

O operador lgico .NO. sempre inverte o valor de seu operando. Ex.: .NO. .V. =
.F. e .NO. .F. = .V.;

Para que a operao lgica .OU. tenha resultado verdadeiro basta que um de seus
operandos seja verdadeiro; Para melhor visualizar este efeito, podemos imaginar
que as variveis lgicas A e B so como dois interruptores ligados em paralelo
num circuito de acionamento de uma lmpada (Figura 5.2).

Algoritmo e Lgica de programao
- 27 -

Nas expresses lgicas onde aparecem apenas os operadores lgicos da Tabela 5.2
somente variveis do tipo lgico podem ser usadas. Isto parece bvio, uma vez que os
operadores lgicos somente atuam sobre valores (constantes ou variveis) lgicos.

H, ainda, outro tipo de operador que pode aparecer em operaes lgicas: os
operadores relacionais, mostrados na Tabela 5.4.


Tabela 5.4 Operadores relacionais.

Operador Operao
= Igual
<> Diferente
< Menor
<= Menor ou igual
> Maior
>= Maior ou igual

Estes operadores so somente usados quando se deseja efetuar comparaes.
Comparaes s podem ser feitas entre objetos de mesma natureza, isto , variveis do
mesmo tipo de dado. O resultado de uma comparao sempre um valor lgico.

O uso de operadores relacionais possibilita o aparecimento em expresses lgicas de
variveis de outros tipos de dados que no o lgico.


5.3.3 Expresses Literais

Expresses literais so aquelas cujo resultado da avaliao um valor literal. Este tipo
de expresso bem menos freqente que os anteriores. Os tipos de operadores existentes
variam de uma linguagem de programao para outra, no havendo uma padronizao.

Para que o assunto no passe em branco, considere-se como exemplo a operao de
concatenao de strings: toma-se duas strings e acrescenta-se (concatena-se) a segunda
delas ao final da primeira. Em algumas linguagens esta operao representada pelo smbolo
(+). Por exemplo, a concatenao das strings "REFRIGERA" e "DOR" representada por
"REFRIGERA" + "DOR" e o resultado de sua avaliao "REFRIGERADOR".

5.4 Sntese

Uma expresso uma combinao de variveis, constantes e operadores, que resulta
num valor quando avaliada.

Operadores so elementos funcionais que atuam sobre operandos. Segundo o
nmero de operandos sobre os quais atua, um operador pode ser classificado em unrio ou
binrio. Segundo os tipos de dados de seus operandos e do valor resultante de sua avaliao,
os operadores podem ser classificados em aritmticos, lgicos ou literais.

Um tipo especial de operador o relacional, que usado na comparao de
operandos de um mesmo tipo de dado e cujo resultado da avaliao sempre um valor lgico.

As expresses so classificadas de acordo com o valor resultante de sua avaliao em:

Aritmticas, que resultam num valor numrico (real ou inteiro);

Algoritmo e Lgica de programao
- 28 -
Lgicas, que resultam num valor lgico;

Literais, que resultam num valor literal.

H trs regras bsicas que definem a seqncia correta de avaliao passo a passo de
expresses:

1. Operadores de maior prioridade devem ser avaliados primeiro. Em caso de
empate, a avaliao se faz da esquerda para a direita.

2. O uso de parnteses em subexpresses fora a avaliao das mesmas com maior
prioridade.

3. Os diversos tipos d operadores devem ser avaliados na seguinte seqncia dentro
de uma expresso complexa: primeiro os aritmticos e literais; a seguir, os
relacionais e, por ltimo, os lgicos.

5.6 Exerccios Propostos

1. Dada a declarao de variveis:

VAR A, B, C : inteiro
X, Y, Z : real
NOME, RUA : literal[20]
L1, L2 : lgico

Classifique as expresses seguintes de acordo com o tipo de dado do resultado de sua
avaliao, em I (inteiro), R (real), L (literal), B (lgico) ou N (quando no for possvel
defini-lo):

( ) A + B + C
( ) A + B + Z
( ) NOME + RUA
( ) A B
( ) A Y
( ) NOME RUA
( ) L1 .OU. L2
( ) RUA <> NOME
( ) A + B / C
( ) A + X / Z
( ) A + Z / A
( ) A B = L1
( ) (A = B)
( ) X + Y / Z
( ) X = Z / A
( ) L1 ** L2
( ) A + B / L2
( ) X < L1 / RUA


2. Para as mesmas variveis declaradas no exerccio 1, s quais so dados os valores
seguintes:

A = 1
B = 2
C = 3
X = 2.0
Y = 10.0
Z = -1.0
L1 = .V.
NOME = PEDRO
RUA = PEDRINHO
L2 = .F.

Determine o resultado da avaliao das expresses abaixo:

A + C / B ___________________________________________________________

A + B + C __________________________________________________________

C / B / A ___________________________________________________________
Algoritmo e Lgica de programao
- 26 -

-X ** B _____________________________________________________________

- (X ** B) ___________________________________________________________

(-X) ** B ____________________________________________________________

NOME + RUA _______________________________________________________

NOME = RUA _______________________________________________________

L1 .OU. L2 _________________________________________________________

(L1 .E.(.NO. L2)) ____________________________________________________

(L2 .E. (.NO. L1)) ___________________________________________________

(L1 .E. (.NO. L2)) .OU. (L2 .E. (.NO. L1)) ________________________________
_____________________________________________________________________

X Y .E. C = B ________________________________________________________
_____________________________________________________________________

(C - 3 * A) (X + 2 * Z) _________________________________________________
_____________________________________________________________________

Algoritmo e Lgica de programao
- 27 -
Captulo 6

Instrues Primitivas

Como o prprio nome diz, instrues primitivas so os comandos bsicos que
efetuam tarefas essenciais para a operao dos computadores, como entrada e sada de
dados (comunicao com o usurio e com os dispositivos perifricos), e movimentao dos
mesmos na memria. Estes tipos de instruo esto presentes na absoluta maioria das
linguagens de programao. De fato, um programa que no utiliza nenhuma instruo primitiva
- como as que sero definidas neste captulo - incapaz de se comunicar com o mundo
exterior e, portanto, no tem utilidade alguma.

Antes de passar descrio das instrues primitivas, necessria a definio de
alguns termos que sero utilizados mais frente:

Dispositivo de entrada o meio pelo qual as informaes (mais especificamente
os dados) so transferidas pelo usurio ou pelos nveis secundrios de memria ao
computador. Os exemplos mais comuns so: o teclado, o carto perfurado (j
obsoleto), as fitas e os discos magnticos, entre outros;

Dispositivo de sada o meio pelo qual as informaes (geralmente, os
resultados da execuo de um programa) so transferidas pelo computador ao
usurio ou aos nveis secundrios de memria. Exemplos: monitor de vdeo,
impressora, fitas e discos magnticos, entre outros;

Sintaxe a forma como os comandos devem ser escritos, a fim de que possam ser
entendidos pelo tradutor de programas. A violao das regras sintticas
considerada um erro sujeito pena do no-reconhecimento do comando por parte
do tradutor;

Semntica o significado, ou seja, o conjunto de aes que sero exercidas pelo
computador durante a execuo do referido comando.

Daqui por diante, todos os comandos novos sero apresentados por meio de sua
sintaxe e sua semntica, isto , a forma como devem ser escritos e a(s) ao(es) que
executam.
Algoritmo e Lgica de programao
- 28 -
6.1 Instruo Primitiva de Atribuio

A instruo primitiva de atribuio, ou simplesmente atribuio, a principal
maneira de se armazenar uma informao numa varivel. Sua sintaxe :

<nome_de_varivel> <expresso>

Em termos de fluxograma, os comandos de atribuio so representados como na
Figura 6.1.

<varivel> aa
<expresso>


Figura 6.1 Forma de representao de comandos de atribuio em fluxogramas.

O modo de funcionamento (semntica) de uma atribuio consiste 1) na avaliao da
expresso e 2) no armazenamento do valor resultante na posio de memria correspondente
varivel que aparece esquerda do comando.


Fluxograma

Incio
PRECO_UNIT aaa 5.0
QUANT aaa 10
PRECO_TOT aaa
PRECO_UNIT *
QUANT
Fim

Pseudocdigo

Algoritmo EXEMPLO_6.1
Var PRECO_UNIT, PRECO_TOT : real
QUANT : inteiro
Incio
PRECO_UNIT 5.0
QUANT 10
PRECO_TOT PRECO_UNIT * QUANT
Fim.

Figura 6.2 Exemplo de aplicao de comandos de atribuio.

Tcnicas de Programao
- 29 -

6.2 Instruo Primitiva de Sada de Dados

As instrues primitivas de sada de dados so o meio pelo qual informaes contidas
na memria dos computadores so colocadas nos dispositivos de sada, para que o usurio
possa visualiz-las.

H duas sintaxes possveis para esta instruo:

Escreva <lista de variveis>

ou

Escreva <literal>

Daqui por diante, Escreva ser considerada uma palavra reservada e no mais poder
ser utilizada como nome de varivel, de modo que toda vez que for encontrada em algoritmos
ser identificada como um comando de sada de dados.

Uma lista_de_variveis um conjunto de nomes de variveis separados por vrgulas.
Um literal simplesmente um dado do tipo literal delimitado por aspas.

Em termos de fluxograma, uma instruo de sada de dados representada como na
Figura 6.3.

<lista_de_
variveis>
ou
<literal>


Figura 6.3 Forma de representao de uma instruo de sada de dados em fluxogramas.

Repare que a representao no fluxograma dispensa o uso da palavra reservada
Escreva, uma vez que a mesma j est embutida na forma geomtrica da figura.

A semntica da instruo primitiva de sada de dados muito simples: os argumentos
do comando so enviados para o dispositivo de sada. No caso de uma lista de variveis, o
contedo de cada uma delas pesquisado na posio de memria correspondente varivel e
depois enviado para o dispositivo de sada. No caso de argumentos do tipo string, estes so
enviados diretamente ao referido dispositivo.

H, ainda, a possibilidade de se misturar nomes de variveis com literais na lista de um
mesmo comando. O efeito obtido bastante til e interessante: a lista lida da esquerda para
a direita e cada elemento da mesma tratado separadamente; se um nome de varivel for
encontrado, ento a informao da mesma pega da memria e colocada no dispositivo de
sada; no caso de um literal, o mesmo escrito diretamente no dispositivo de sada.

O exemplo da Figura 6.2 torna-se muito mais interessante com a aplicao de
instrues de sada de dados, como na Figura 6.4.

Tcnicas de Programao
- 1 -
Fluxograma

Incio
PRECO_UNIT aaa 5.0
QUANT aaa 10
PRECO_TOT aaa
PRECO_UNIT *
QUANT
Fim
PRECO_TOT

Pseudocdigo

Algoritmo EXEMPLO_6.4
Var PRECO_UNIT, PRECO_TOT : real
QUANT : inteiro
Incio
PRECO_UNIT 5.0
QUANT 10
PRECO_TOT PRECO_UNIT * QUANT
Escreva PRECO_TOT
Fim.


Figura 6.4 Exemplo de aplicao da instruo primitiva de sada de dados.
6.3 Instruo Primitiva de Entrada de Dados

O algoritmo da Figura 6.4 ainda necessita de uma melhoria essencial. Toda vez que ele
executado, o mesmo valor calculado, j que os valores das variveis PRECO_UNIT e
QUANT permanecem inalterados. Seria interessante que estes valores pudessem ser
fornecidos ao computador pelo usurio do programa toda vez que o programa fosse executado,
para que o usurio tivesse um maior controle sobre o valor calculado. A instruo primitiva de
entrada de dados foi criada para suprir esta necessidade.

Sua sintaxe :

Leia <lista_de_variveis>

Da mesma forma que Escreva, daqui em diante Leia ser tratada como uma palavra-
reservada e no mais poder ser usada como nome de varivel em algoritmos. A
lista_de_variveis um conjunto de um ou mais nomes de variveis, separados por vrgulas.

A Figura 6.5 mostra como uma instruo de entrada de dados representada em
fluxogramas. Esta representao dispensa o uso da palavra-reservada Leia, pelo fato da
mesma j estar de certo modo embutida na forma geomtrica da figura.

<lista_de_
variveis>

Algoritmo e Lgica de Programao
- 30 -

Figura 6.5 Forma de representao de uma instruo de entrada de dados em fluxogramas.

A semntica da instruo de entrada (ou leitura) de dados , de certa forma, inversa
da instruo de escrita: os dados so fornecidos ao computador por meio de um dispositivo de
entrada e armazenados nas posies de memria das variveis cujos nomes aparecem na
lista_de_variveis.

O algoritmo da Figura 6.4, modificado para que os valores das variveis PRECO_UNIT
e QUANT sejam lidos no dispositivo de entrada, est na Figura 6.6.

Pseudocdigo

Algoritmo EXEMPLO_6.6
Var PRECO_UNIT, PRECO_TOT : real
QUANT : inteiro
Incio
Leia PRECO_UNIT, QUANT
PRECO_TOT PRECO_UNIT * QUANT
Escreva PRECO_TOT
Fim.

Fluxograma

Incio
PRECO_TOT aaa
PRECO_UNIT *
QUANT
PRECO_UNIT,
QUANT
Fim
PRECO_TOT
A
B


Figura 6.6 Exemplo de aplicao da instruo primitiva de
entrada de dados num algoritmo.

O algoritmo da Figura 6.6 ainda precisa sofrer algumas modificaes para ficar perfeito.
Em sua forma atual, ao incio de sua execuo, ele procura ler os valores para as variveis
PRECO_UNIT e QUANT.Um usurio diferente daquele que criou o programa, a no ser que
esteja bem treinado no uso do mesmo, poder encontrar dificuldades na interao com o
programa. Ele pode confundir a ordem em que os dados devem ser fornecidos ou
simplesmente esquecer o que o programa deseja que ele digite. Ao trmino da execuo o
programa escreve como resultado um nmero que pode no possuir nenhum significado ao
usurio se este no souber a finalidade para a qual o algoritmo foi concebido.

Uma preocupao constante de um bom programador deve ser a de conceber um
programa "amigo do usurio". Esta preocupao traduzida no planejamento de urna
interface com o usurio (meio pelo qual um programa e o usurio "conversam") bastante
amigvel. Em termos prticos, isto se resume aplicao de duas regras bsicas:
Algoritmo e Lgica de Programao
- 31 -

toda vez que um programa estiver esperando que o usurio fornea a ele um
determinado dado (operao de leitura), ele deve antes enviar uma mensagem
dizendo ao usurio o que ele deve digitar, por meio de uma instruo de sada de
dados;

antes de enviar qualquer resultado ao usurio, um programa deve escrever uma
mensagem explicando o significado do mesmo.

Estas medidas tornam o dilogo entre o usurio e o programador muito mais fcil.

A verso final do algoritmo estudado mostrada na Figura 6.7.

Fluxograma

Incio
PRECO_UNIT
"Digite o preo
unitrio:"
"Digite a quantidade:"
PRECO_TOT aaa
PRECO_UNIT *
QUANT
Fim
"Preo total: ",
PRECO_TOT
QUANT
A
A



Pseudocdigo

Algoritmo EXEMPLO_6.7
Var PRECO_UNIT, PRECO_TOT : real
QUANT : inteiro
Incio
Escreva Digite o preo unitrio:
Leia PRECO_UNIT
Escreva Digite a quantidade:
Leia QUANT
PRECO_TOT PRECO_UNIT * QUANT
Escreva Preo total: , PRECO_TOT
Fim.

Figura 6.7 Exemplo de aplicao das instrues primitivas de atribuio,
Algoritmo e Lgica de Programao
- 32 -
entrada e sada de dados num algoritmo.

6.4 Sntese

A instruo primitiva de atribuio avalia uma expresso e armazena o valor
resultante numa varivel. O valor resultante da expresso e a varivel devem ter tipos
compatveis.

A instruo primitiva de sada de dados admite como argumentos uma lista de
variveis, um literal, ou uma mistura de ambos. No primeiro caso, o valor de cada uma das
variveis buscado na memria e colocado no dispositivo de sada. No caso de literais, estes
so copiados diretamente no dispositivo de sada.

A instruo primitiva de entrada de dados busca, no dispositivo de entrada, dados
que so guardados nas posies de memria correspondentes s variveis da lista que lhe so
passadas como argumento.

6.5 Exerccios Resolvidos

1. Escreva um algoritmo (fluxograma e pseudocdigo) para calcular a mdia entre dois
nmeros quaisquer.

Soluo:

A idia principal do algoritmo est centrada na expresso matemtica utilizada no
clculo da mdia (M) entre dois nmeros, N1 e N2, dada por:

M = (N1 + N2) / 2

Para que o valor de M possa ser calculado pelo algoritmo, necessrio que os valores
de N1 e N2 tenham sido fornecidos ao mesmo com antecedncia. Portanto, a primeira
etapa do algoritmo consiste da obteno (leitura) dos valores de N1 e N2 e
armazenamento dos mesmos em posies distintas de memria (variveis).

Na seqncia, o valor da mdia deve ser calculado por meio de uma expresso
apropriada e atribudo a uma terceira varivel (M).

Por fim, deve-se relatar ao usurio o valor calculado por meio de uma instruo
primitiva de sada de dados.

O fluxograma do algoritmo descrito mostrado a seguir. Note que ele est enriquecido
com instrues para informar sua finalidade, os dados que devem ser fornecido ao
usurio e o significado do valor calculado.

Algoritmo e Lgica de Programao
- 33 -
Incio
N1
"Digite o primeiro
nmero: "
"Digite o segundo
nmero: "
"Algoritmo para calcular
a mdia entre dois
nmeros"
M aaa (N1 + N2) / 2
Fim
"A mdia ", M
N2
A
A

Algoritmo e Lgica de Programao
- 34 -
A transformao do fluxograma em pseudocdigo exige a disponibilidade de algumas
informaes adicionais concernentes ao tipo das variveis utilizadas. Como o algoritmo
opera apenas com dados numricos, certamente as variveis utilizadas sero do tipo
inteiro ou real. Como se deseja calcular a mdia entre dois nmeros quaisquer, ento
as variveis N1 e N2 devem ser capazes de armazenar nmeros com ou sem parte
fracionria e, portanto, necessrio que estas sejam do tipo real. Como o valor mdio
entre dois nmeros reais um nmero que pode ou no ter parte fracionria, ento a
varivel M tambm deve ser do tipo real.

De posse dessa informao, pode-se escrever o pseudocdigo do algoritmo em
questo, a partir de seu fluxograma.

Algoritmo MEDIA
Var N1, N2, M : real
Incio
Escreva Algoritmo para calcular a mdia entre dois nmeros
Escreva Digite o primeiro nmero:
Leia N1
Escreva Digite o segundo nmero:
Leia N2
M (N1 + N2) / 2
Escreva O valor da mdia :, M
Fim.


2. Escreva um algoritmo para calcular o valor de y como funo de x, segundo a funo
y(x) = 3x + 2, num domnio real.

Soluo:

Essencialmente o algoritmo usado na soluo deste problema consiste na obteno do
valor de x para o qual se deseja calcular a funo, o clculo desta propriamente dito e
a mostra do resultado obtido ao usurio:

Veja fluxograma correspondente a seguir:

Incio
"X:"
"Algoritmo para
calcular
y = 3x + 2"
Y aaa 3 * X + 2
Fim
"Y = ", Y
A
A
X


Algoritmo e Lgica de Programao
- 35 -
Para que se possa escrever o pseudocdigo do algoritmo deve-se decidir qual ser o
tipo das variveis X e Y. Como especificado no enunciado do problema, o algoritmo
deve operar num domnio real e, portanto, as variveis X e Y devem ser do tipo real.
Ento, o pseudocdigo fica assim:

Algoritmo FUNCAO_DE_X
Var X, Y : real
Incio
Escreva Algoritmo para calcular
y = 3x +2
Escreva X:
Leia X
Y 3 * X + 2
Escreva Y = , Y
Fim.


3. Escreva um algoritmo para calcular o consumo mdio de um automvel (medido em
Km/l), dado que so conhecidos a distncia total percorrida e o volume de combustvel
consumido para percorr-la (medido em litros).

Soluo:

A principal questo a ser levantada na obteno do algoritmo pedido consiste na
formulao da expresso usada para calcular o consumo mdio (CM) a partir da
distncia total percorrida (DIST) e do volume de combustvel consumido (VOL), que
dada por:

CM = DIST / VOL

Uma vez obtida esta expresso, a formulao do algoritmo desejado consiste em uma
simples repetio daqueles apresentados nas questes anteriores: deve-se obter o
valor das variveis DIST e VOL, calcular o consumo pela expresso acima e,
finalmente, mostrar ao usurio o valor calculado.

O fluxograma correspondente ao algoritmo o seguinte:

Incio
"Distncia total
percorrida (Km):"
"Algoritmo para calcular
o consumo"
CM aaa DIST / VOL
Fim
"Consumo mdio = ",
CM, "Km/l"
A
B
DIST
"Volume de
combustvel
gasto (L):"
B
A
VOL

Algoritmo e Lgica de Programao
- 36 -
Assumindo que todas as variveis utilizadas (CM, DIST e VOL) so do tipo real, pode-
se escrever o pseudocdigo seguinte para o fluxograma anterior:

Pseudocdigo

Algoritmo CONSUMO_MEDIO
Var CM, DIST, VOL : real
Incio
Escreva Algoritmo para calcular o consumo
Escreva Distncia total percorrida (Km):
Leia DIST
Escreva Volume de combustvel gasto (L):
Leia VOL
CM DIST / VOL
Escreva Consumo mdio =, CM, Km/l
Fim.

6.6 Exerccios Propostos

Para cada um dos problemas propostos a seguir, expresse um algoritmo que pode ser
usado em sua soluo na forma de fluxograma e pseudocdigo.

1. Calcule a mdia de quatro nmeros inteiros dados.

2. Leia uma temperatura dada na escala Celsius (C) e imprima o equivalente em
Fahrenheit (F). (Frmula de converso: F = 9/5 * C + 32)

3. Leia uma quantidade de chuva dada em polegadas e imprima o equivalente em
milmetros (25,4 mm = 1 polegada).

4. Calcule o quadrado de um nmero, ou seja, o produto de um nmero por si mesmo.

5. O custo ao consumidor de um carro novo a soma do custo de fbrica com a
porcentagem do distribuidor e dos impostos, ambos aplicados ao custo de fbrica.
Supondo que a porcentagem do distribuidor seja de 12% e a dos impostos de 45%,
prepare um algoritmo para ler o custo de fbrica do carro e imprimir o custo ao
consumidor.

6. O cardpio de uma lanchonete dado abaixo. Prepare um algoritmo que leia a
quantidade de cada item que voc consumiu e calcule a conta final.

Hambrguer................. R$ 3,00
Cheeseburger.............. R$ 2,50
Fritas............................ R$ 2,50
Refrigerante................. R$ 1,00
Milkshake..................... R$ 3,00

7. Uma companhia de carros paga a seus empregados um salrio de R$ 500,00 por ms
mais uma comisso de R$ 50,00 para cada carro vendido e mais 5% do valor da
venda. Elabore um algoritmo para calcular e imprimir o salrio do vendedor num dado
ms recebendo como dados de entrada o nome do vendedor, o nmero de carros
vendidos e o valor total das vendas.

8. Calcule a mdia de um aluno na disciplina de MDS. Para isso solicite o nome do aluno,
a nota da prova e a nota qualitativa. Sabe-se que a nota da prova tem peso 2 e a nota
qualitativa peso 1. Mostre a mdia como resultado.

Você também pode gostar