Você está na página 1de 14

1

Conceito de Variveis
3.Variveis

A todo momento durante a execuo de qualquer tipo de programa os computadores
esto manipulando informaes representadas pelos diferentes tipos de dados descritos na
apostila anterior. Para que no se "esquea" das informaes, o computador precisa guarda-las
em sua memria.
Nesta apostila ser vista como os computadores armazenam e acessam informaes
contidas em sua memria.


3.1 Armazenamento de Dados na Memria

Cada um dos diversos tipos de dados apresentados na apostila 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.

3.1.1 Armazenamento de Dados do Tipo Literal

Devemos sempre ter em mente que um byte consegue representar 256 (28)
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 ideia 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.
Assim, cada clula de memria (byte) pode conter um caractere, representado pelo seu
cdigo ASCII.
2

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 traduz um outro escrito em alguma linguagem de programao para
outra geral, a linguagem de mquina do computador com que se trabalha).
A Figura abaixo 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.

3.1.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.
3

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.

3.1.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 28 x 28 = 216 = 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 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

3.1.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. Conceito e Utilidade de Variveis



Como visto anteriormente, informaes correspondentes a diversos tipos de dados s
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 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.
Toda varivel possui um nome que tem a funo de diferenci-la das demais.


4.1 Regras para se criar nomes de varivel

um nome de varivel deve necessariamente comear com uma letra;
um nome de varivel no deve conter nenhum smbolo especial exceto a
sublinha
5

um nome de varivel no deve conter espaos em branco
um nome de varivel no deve ser uma palavra reservada do programa

4.2 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.
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
6


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.








5. Conceito de Expresses

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.


7


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.1 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);
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.



8

5.2 Tipos de Expresses

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

5.2.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.



A prioridade entre operadores define a ordem em que os mesmos devem ser avaliados
dentro de uma mesma expresso.
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.
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:

9



5.2.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.



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.



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:
10


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;

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.


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.2.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
11

exemplo, a concatenao das strings "REFRIGERA" e "DOR" representada por "REFRIGERA" +
"DOR" e o resultado de sua avaliao "REFRIGERADOR".



12





13

Algoritmos Sequenciais

Exerccios

1)A fbrica de refrigerantes Meia-Cola vende seu produto em
trs formatos: lata de 350 ml, garrafa de 600 ml e garrafa de 2
litros. Se um comerciante compra uma determinada quantidade
de cada formato, faa um algoritmo para calcular quantos litros
de refrigerante ele comprou.



2) A granja Frangotech possui um controle automatizado de cada frango
da sua produo. No p direito do frango h um anel com um chip de
identificao; no p esquerdo so dois anis para indicar o tipo de
alimento que ele deve consumir. Sabendo que o anel com chip custa
R$4,00 e o anel de alimento custa R$3,50 cada, faa um algoritmo para
calcular o gasto total da granja para marcar todos os seus frangos.

3)Um tonel de refresco feito com 8 partes de gua mineral e 2
partes de suco de maracuj. Faa um algoritmo para calcular
quantos litros de gua e de suco so necessrios para se fazer X
litros de refresco (informados pelo usurio).

4) Usando estrutura sequencial, desenvolva o algoritmo em
PSEUDOCDIGO em que : A importncia de R$ 780.000,00,
ser dividida entre os trs primeiros colocados de um concurso,
em partes diretamente proporcionais aos pontos obtidos por eles.
Faa um algoritmo que solicite o numero de pontos dos trs
primeiros colocados e mostre a importncia que caber a cada
um.

14

5) Usando estrutura sequencial, desenvolva o algoritmo em
PSEUDOCDIGO em que : Dois amigos jogam na loteria toda
semana. Faa um algoritmo que solicite com quanto cada um
entrou em dinheiro e o valor do prmio que deve ser rateado em
partes diretamente proporcionais s quantias com que cada um
entrou. O algoritmo deve mostrar quanto receber cada um se
eles ganharem.
6) Sabe-se que 1 p igual a 12 polegadas, 1 jarda = 3
ps, 1 milha = 1.760 jardas. Faa um algoritmo em
FLUXOGRAMA que receba uma medida em ps, faa as
converses a seguir e mostre os resultados em:
a) polegadas;
b) jardas;
c) milhas