Bezerra
O problema bsico, ento, como a linguagem de nvel mais alto pode ser
implementada em um computador, cuja linguagem de mquina bastante diferente, e de nvel
bem mais baixo. A soluo fazer com que o computador, que s entende linguagem de
mquina se comporte como se entendesse uma linguagem de programao de alto nvel,
utilizando programas tradutores, escritos em linguagem de mquina, capazes de traduzir um
programa escrito em linguagem de alto nvel para linguagem de mquina. Os principais tipos
de tradutores so: Interpretador e Tradutor.
1.2.1 Interpretador
Um interpretador um programa que executa, repetidamente, a seguinte sequncia
linha a linha do programa:
1 Obter o prximo comando do programa.
2 Determinar que aes devam ser executadas.
3 Executar estas aes.
1.2.2 Tradutor
Nesta soluo, programas escritos em linguagem de alto nvel so traduzidos para
verses em linguagem de mquina, antes de serem executados.
Os tradutores usados para realizar esta soluo recebem nomes especiais como
compilador, montador, ligador e carregador.
Prof. M.Sc. Srgio Augusto C. Bezerra 3
Problema
Programador
Programador
Tradutor
Matemtica Informtica
nome nome ou identificador
domnio tipo de dado
Tabela 1.2: Analogia entre as variveis de Matemtica e Informtica.
Prof. M.Sc. Srgio Augusto C. Bezerra 4
Com relao ao tipo de uma varivel, alm de limitar a faixa de valores, tambm
especifica ao computador a quantidade de memria que ele ter que reservar para uma
determinada varivel.
Sendo assim, para ns da rea de Informtica, uma varivel uma abstrao de uma
regio de memria do computador, onde esta regio pode ser identificada e manipulada por
um nome que o programador dar a varivel. Alm disso, o espao e o contedo desta regio
de memria, que agora ser representada por uma varivel, especificado pelo programador
quando ele define o tipo da varivel (Ateno ...!!! O tipo de uma varivel, no esquea,
anlogo ao domnio de uma varivel!).
Dos quatro exemplos invlidos talvez voc deva estar se perguntando sobre o ltimo
exemplo. A palavra escreva no pode ser utilizada para nomear uma varivel porque uma
palavra reservada da sintaxe do Portugol, bem como as palavras abaixo:
inteiro real caractere lgico leia
se seno enquanto para faa
Tipo Descrio
inteiro Qualquer valor pertencente ao conjunto dos nmeros inteiros.
real Qualquer valor pertencente ao conjunto dos nmeros reais.
caractere Apenas 1 elemento pertencente a um dos conjuntos a seguir:
{a, ..., z, A, ..., Z}, {0, ..., 9}, {*, ?, &, =, +, $, -, /, , |, }
texto Uma seqncia ou cadeia com nenhum, um ou mais
caracteres.
lgico Pode armazenar apenas os valores F (FALSO) ou V
(VERDADEIRO).
Tabela 1.4: Domnios ou tipos primitivos de uma varivel.
Declarao de Variveis
Sintaxe: tipo varivelX;
tipo varivel1, varivel2, ..., varivelN;
Devemos seguir a sintaxe acima para declarar uma varivel, onde primeiramente
definimos o tipo da varivel (anlogo ao domnio de uma varivel) e depois o identificador
(nome da varivel). Se quisermos declarar outras variveis do mesmo tipo basta definirmos os
outros nomes entre vrgulas.
Declarao de Constantes
Quando declaramos uma varivel como constante, estamos fixando o valor da varivel
em todo o algoritmo. Por exemplo, se voc fosse calcular a rea de um crculo (rea =
*Raio2) trabalharia com um valor constante, o PI (), logo poderamos definir uma varivel,
por exemplo, denominada PI. Para isto, declaramos uma varivel PI como uma constante,
desta forma PI se apresentar, em todo o algoritmo, sempre com o mesmo valor.
A vantagem de se definir uma constante que esta no correr o risco de ter o seu
valor alterado no decorrer do algoritmo. No entanto, se houver necessidade de alguma
alterao ento esta deve realizada no incio da sua atribuio. Em geral as constantes so
nomeadas com letras maisculas.
10 mod 2 10 mod 3
Operadores Relacionais
Como voc j sabe, os operadores relacionais so utilizados para fazer comparaes
entre dois valores, desde que estes apresentem os mesmos tipos. Lembre-se que esses valores
podem ser constantes, variveis ou, at mesmo, expresses contendo diversos operadores. Na
tabela 1.6 apresentamos, ou melhor, relembramos os operadores relacionais da prpria
Matemtica e que utilizaremos para construir algoritmos. Aproveitando o seu conhecimento
sobre o assunto ora exposto, quero lembr-lo que os resultados de uma comparao, como nos
exemplos da tabela, continuam sendo V ou F, ou seja, um dos valores do tipo lgico.
Exemplos:
a) 5*2 = 40/4 b) 23mod7 < 17mod8 c) 3*5div4 <=3**2/0.5 d) 2+8mod7 >= 3*6-15
10 = 10 2 < 1 15div4 <= 9/0.5 2 + 1 >= 18-15
V F 3 <= 18 3 >= 3
V
Operadores Lgicos
Alm dos operadores relacionais, trabalharemos tambm com trs operadores lgicos
(e, ou, no), descritos na tabela 1.7, que quando usados em expresses lgicas resultam em
um valor lgico (F ou V). Esses operadores so definidos pela lgebra das Proposies como
conectivos que so usados na formao de novas proposies a partir de outras existentes.
Segundo Harry Farrer (FAR99), considera-se uma proposio como sendo uma
varivel lgica, uma relao ou uma expresso lgica composta. Por exemplo, poderamos ter
duas proposies combinando-se atravs de um conectivo e para formar uma proposio
chamada conjuno das proposies originais.
A conjuno das proposies:
1) r e s: verdadeira se e somente se ambas as proposies so verdadeiras;
2) r ou s: verdadeira se pelo menos uma proposio for verdadeira.
A B AeB A B A ou B
F F F F F F A no A
F V
F V F F V V
V F
V F F V F V
V V V V V V
Exemplos:
a) 4 > 3 e 3*2 = 3 b) 2**3 + 2//9 12 ou 10mod3 + 5*20div4 = 5**2
V e 5 =5 8 + 3 12 ou 1 + 25 = 25
VeV V ou F
V
Prof. M.Sc. Srgio Augusto C. Bezerra 8
Tenha em mente que a maioria das funes sempre retornaro algum valor para
posteriormente ser manipulado. As manipulaes possveis so:
Fazer com que alguma varivel guarde este valor retornado pela funo
(atribuir o valor a uma varivel). Ateno! Observe que a varivel tem que
estar preparada para receber o valor da funo. Ou seja, se a funo retornar
um valor real, logo a varivel tem que ser do tipo real. Isto nos diz tambm
que a funo possui um tipo de retorno.
Escrever o valor retornado como resposta ao usurio atravs de algum
dispositivo de sada;
Comparar o valor retornado com algum outro valor.
Comando de Atribuio
As atribuies j fazem parte de sua vida. No acredita!? Pois bem, quando voc
chega ao resultado de uma equao no qual a soluo, por exemplo, seja X = 20. Neste caso,
uma atribuio foi realizada. Ou seja, o valor 20 est sendo atribudo a varivel X. Em outras
palavras, isto significa que a varivel X recebe ou contm o valor 20.
Tudo bem! Mas como representar esta seqncia lgica atravs de um algoritmo?
Bem, para representar ao de ler os dados de entrada e escrever os dados de sada,
utilizaremos os comandos leia e escreva, respectivamente, como formalismo de instruo
destas aes. Vejamos os exemplos a seguir para entender estes comandos.
Exemplos: leia(x);
leia(a, b, c);
escreva(x);
escreva(a, b, c);
Na primeira linha, o comando leia(x), captura o dado fornecido pelo usurio, atravs
de algum dispositivo de entrada do computador, e o atribui a varivel x. Analogamente, na
segunda linha, o comando, leia(a, b, c), atribui os valores fornecidos pelo usurio as variveis
a, b e c, de acordo com a ordem dos dados informados.
Na terceira linha, o comando escreva(x), mostra o valor (ou contedo) da varivel x
atravs de algum dispositivo de sada do computador. O que a quarta linha escrever?
Vejamos algumas linhas de um algoritmo e observemos a sada de dados atravs do
comando escreva:
inteiro x, y, soma;
x 5;
y 7;
soma x + y;
escreva(soma);
inteiro x, y, soma;
leia (x,y);
soma x + y;
escreva(soma);
soma x + y
soma
inicio
INCIO
sequencia das tarefas ou instrues declarao das variveis
sequencia das tarefas ou instrues
fim FIM
3x 9, se x 5
Dada a funo f(x) = , calcule f(3).
5 x 15, se x 5
Uma determinada fora foi aplicada a um corpo de 20kg que passou a se movimentar
com acelerao de 2,5m/s2. Qual o valor da fora aplicada a este corpo?
inicio
m,a
INCIO
real F,m,a;
F m*a leia(m,a);
F m*a;
escreva(F);
F FIM
fim
Diagrama de Blocos Portugus Estruturado (Portugol)
Exerccios: Para cada problema a seguir formalize uma soluo atravs de um algoritmo
especificado em Diagrama de Blocos e em Portugol:
F V
condio
se (condio)
InstruoY InstruoY;
(a) (b)
Fig.3.1: Decises ou Estruturas de Controle Simples para uma instruo: (a) Diagrama de Blocos; (b) Portugol.
F V
condio se (condio)
incio
InstruoY;
InstruoY InstruoX;
InstruoX
fim
(a) (b)
Fig.3.2: Decises ou Estruturas de Controle Simples para muitas instrues: (a) Diagrama de Blocos; (b) Portugol.
Prof. M.Sc. Srgio Augusto C. Bezerra 16
F V
condio se (condio)
InstruoY;
seno
InstruoX InstruoY
InstruoX;
(a) (b)
Fig.3.3: Decises Compostas: (a) Diagrama de Blocos; (b) Portugol.
se (condio) se (x >0)
incio incio
Instruo1; y x + 10;
Instruo2; z x*10;
fim fim
seno seno
incio incio
Instruo3; y x 10;
Instruo4; z x/10;
fim fim
Fig.3.4 Sintaxe do Portugol para Decises Fig.3.5 Exemplo de um Portugol de Decises
Compostas com mais de uma instruo. Compostas com mais de uma instruo.
Exemplo: Construa um algoritmo para calcular o valor de y de acordo com o valor de x
fornecido pelo usurio, onde y = 2x, se x 0, ou y = -x + 2, se x < 0.
INCIO
Soluo:
incio
inteiro x, y;
x leia(x);
se (x >=0)
F V
x >= 0 y 2*x;
seno
y -x + 2 y 2*x y -x + 2;
escreva(y);
fim
(b)
y
(a)
Fig.2.6: Deciso Composta com uma instruo a ser
FIM
executada para calcular o valor de y: (a) Diagrama de Blocos
e (b) Portugol.
Prof. M.Sc. Srgio Augusto C. Bezerra 17
a) Calcular e informar a soma dos termos de uma PG finita. Onde Sn = a1(qn 1)/(q
1) se q 1, e Sn = n*a1, se q = 1.
b) Calcular as razes de uma equao do segundo grau, levando em considerao a
anlise da existncia de razes reais.
c) Autorizar o acesso de um cliente a um caixa eletrnico atravs do nmero do carto
e senha. O seu algoritmo deve comparar um nmero qualquer fornecido pelo usurio tanto
para o carto como para a senha com o que voc estabelecer para se acessar o caixa
eletrnico. Em caso de sucesso ou no, o algoritmo deve emitir uma mensagem,
respectivamente, de ACESSO AUTORIZADO ou ACESSO NEGADO.
d) Calcular e informar a resistncia total de dois resistores. O usurio informar se os
mesmos esto em srie (RT = R1 + R2) ou em paralelo ( RT=(R1R2)/(R1 + R2) ).
e) Validar uma nota digitada por um usurio, onde os valores devem se encontrar na
faixa de 0 a 10. Ento, o algoritmo ler a nota, verificar se a nota est no intervalo e emitir
uma mensagem NOTA VLIDA, caso contrrio NOTA INVLIDA.
f) Leia um valor de x e fornea o resultado de y. Sabendo que y = x 2 + 2x, se x 1, e
y = -3x + 1, se x < 1.
g) Calcular a mdia de um aluno em uma disciplina, informando se o aluno est
reprovado (mdia < 5,0) ou aprovado (mdia 5,0). (media = (Prova1 + Prova2 +
3Projeto)/5).
h) Calcule o valor de y e z de acordo com o valor de x. (y = x2 1 e z = 2x, se o valor
de x <-2 ou x > +2; caso contrrio y = x/sen(300) e z = x).
Prof. M.Sc. Srgio Augusto C. Bezerra 18
Referncias Bibliogrficas
[GER01] GERSTING, Judith L. Fundamentos Matemticos para a Cincia da
Computao. Rio de Janeiro: LTC, 2001.
[COR02] CORMEN, Thomas H. e at al. Algoritmos: teoria e prtica. Rio de Janeiro:
Campus, 2002.
[MEY00] MEYER, Marilyn; BABER, Roberta; PFAFFENBERGER, Bryan. Nosso
Futuro e o Computador. 3.ed. Porto Alegre: Bookman, 2000.
[FAR99] FARRER, Harry, e outros. Algoritmos Estruturados. 3 ed. LTC: Rio de
Janeiro, 1999.
[FOR93] FORBELLONE, Andr L. V.; EBERSPCHER, Henri F. Lgica de
Programao: A Construo de Algoritmos e Estrutura de Dados. So Paulo:
Makron Books, 1993.