Você está na página 1de 30

Tcnicas de

Programao I

Autor:
Josiane Alves de Sousa

Tcnicas de Programao I

fevereiro/2003

1. Linguagens de Programao:
1.1. Conceito
1.2. Objetivo
2. Introduo a Programao
2.1. Conhecimentos bsicos necessrios
2.2. Prticas de um bom programador
2.3. Programao Estruturada
2.4. Processo de desenvolvimento de programas
3. Introduo a Linguagem Pascal
3.1. Histrico
3.2. Estrutura de um programa Pascal
3.3. Smbolos especiais
3.4. Comentrios em um programa
4. Tipos de Dados Bsicos
4.1. Inteiros
4.2. Reais
4.3. Caracteres
4.4. Lgicos
4.5. Enumerado (ENUMERATED)
4.6. Subintervalo
4.7. Literais (Tipo estruturado bsico)
5. Variveis
5.1. Declarao de Variveis
5.2. Inicializao de Variveis.
6. Constantes:
6.1. Sem tipo definido (Constantes verdadeiras)
6.2. Com tipo definido (Parecidas com variveis)
6.3. Constantes predefinidas
7. Expresses e Operadores
7.1. Tipos de Operadores
7.2. Operadores Atribuio (:=)
7.3. Operadores Aritmticos
7.3.1. Binrios e Unrios
7.3.2. Aritmtica de Inteiros e Aritmtica de Reais
7.4. Manipulao de Bits
7.5. Concatenao (+)
7.6. Operadores Relacionais
7.7. Operadores Lgicos
7.8. Operadores de Ponteiros
7.9. Operadores de Conjuntos
7.10. Operadores de Tipe-Cast
7.11. Tipos de expresses
7.12. Hierarquia dos Operadores Aritmticos, Relacionais e Lgicos
8. Comandos
8.1. Estruturas de Controles (Deciso e Repetio)
8.2. Comandos bsicos e funes pr-definidas.
9. Estruturas de Deciso
9.1. If-Then/If-Then-Else/extenso Else-if /If-Then aninhadas
9.2. Case (Desvio Condicional)
10. Estruturas de Repetio
10.1. While-Do
10.2. Repeat-Until
10.3. For-Do
10.4. Desvio Incondicional(Goto, Continue, Break, Halt)
Por Josiane Alves de Sousa (3/2001-2003)

03
03
03
02
03
04
04
05
06
06
06
08
09
09
10
11
11
11
11
12
12
12
12
13
13
13
13
14
14
14
14
15
15
15
16
16
16
17
18
18
18
19
19
19
19
20
22
22
23
25
25
25
26
27
3

1. Linguagens de Programao:
1.1. Conceito
Organizao das formas de se manipular o comportamento fsico do computador,
atravs da utilizao de termos e sintaxes humanamente representveis e conversveis para um
sistema eletrnico com representao eltrica.
1.2. Objetivo.
Tem como objetivo a formalizao de algoritmos para ter como resultado final um
programa fonte, que aps se envolver em um processo de interpretao ou compilao se
transforma em um programa em que os computadores entendam, ou seja, programa puro de
linguagem de mquina.
2. Introduo a Programao:
2.1. Conhecimentos bsicos necessrios
a) ALGORITMO X PROGRAMA
Algoritmo: uma seqncia lgica de aes executadas para se resolver uma determinada
tarefa.
Programa: a formalizao de um algoritmo em uma determinada linguagem de
programao, segundo suas regras de sintaxe e semntica, de forma a permitir que o
computador possa entender a seqncia de aes.
b) LINGUAGEM DE PROGRAMAO
No comeo para se controlar um computador era preciso muita tcnica na configurao de
circuitos, pois o computador s compreende as instrues em binrio, e assim para se
converter de forma eficaz a representao do pensamento humano era necessrio muito esforo
e pacincia. S que, na busca da evoluo do processo, concebeu-se formas facilitadoras de se
comunicar com as mquinas.
Temos que uma linguagem de programao um conjunto de smbolos (comandos,
identificadores, caracteres ASCII, etc.) e regras de sintaxe que permitem a construo de
sentenas que descrevem de forma precisa aes compreensveis e executveis para o
computador.
LINGUAGEM DE PROGRAMAO = SMBOLOS + REGRAS DE SINTAXE
Uma linguagem de programao uma notao formal para descrio de algoritmos que
sero executados por um computador. Como todas as notaes formais, uma linguagem de
programao tem dois componentes: Sintaxe e Semntica. A sintaxe consiste em um conjunto
de regras formais, que especificam a composio de programas a partir de letras, dgitos, e
outros smbolos. Por exemplo, regras de sintaxe podem especificar que cada parntese aberto
em uma expresso aritmtica deve corresponder a um parntese fechado, e que dois comandos
quaisquer devem ser separados por um ponto-e-vrgula. As regras de semntica especificam o
significado de qualquer programa, sintaticamente vlido, escrito na linguagem.

c) TIPOS DE LINGUAGENS DE PROGRAMAO


Por Josiane Alves de Sousa (3/2001-2003)

Existem diversas linguagens de programao, cada uma com suas caractersticas especficas
e com nveis de complexidade e objetivos diferentes:
Linguagem de Mquina

nica compreendida pelo computador.


Especfica de cada computador.

Linguagens de Baixo Nvel

Utilizam mnemnicos para representar instrues elementares


Ex.: Assembly

Linguagens de Alto Nvel

Utiliza instrues prximas da linguagem humana de forma a


facilitar o raciocnio.
Ex.: Uso Cientfico
: Fortran
Propsito Geral
: Pascal, C, Basic
Uso Comercial
: Cobol, Clipper
Uso especfico
: Lisp, Prolog
Visuais
: Delphi, Visual Basic

2.2. Prticas de um bom programador


CRITRIOS DE QUALIDADE DE UM PROGRAMA
Integridade: Refere-se preciso das informaes manipuladas pelo programa, ou seja,
os resultados gerados pelo processamento do programa devem estar corretos, caso contrrio o
programa simplesmente no tem sentido.
Clareza: Refere-se facilidade de leitura do programa. Se um programa for escrito com
clareza, dever ser possvel a outro programador seguir a lgica do programa sem muito
esforo, assim como o prprio autor do programa entend-lo aps ter estado um longo perodo
afastado dele. O Pascal favorece a escrita de programas com clareza e legibilidade.
Simplicidade: A clareza e preciso de um programa so normalmente melhoradas
tornando as coisas o mais simples possvel, consistentes com os objetivos do programa. Muitas
vezes torna-se necessrio sacrificar alguma eficincia de processamento, de forma a manter a
estrutura do programa mais simples.
Eficincia: Refere-se velocidade de processamento e a correta utilizao da memria.
Um programa deve ter performance SUFICIENTE para atender s necessidades do problema e
do usurio, bem como deve utilizar os recursos de memria de forma moderada, dentro das
limitaes do problema.
Modularidade: Consiste no particionamento do programa em mdulos menores bem
identificveis e com funes especficas, de forma que o conjunto desses mdulos e a interao
entre eles permitem a resoluo do problema de forma mais simples e clara.
Generalidade: interessante que um programa seja to genrico quanto possvel de
forma a permitir a reutilizao de seus componentes em outros projetos.
2.3. Programao Estruturada
Com o surgimento de diversas linguagens, apareceu a necessidade de se avaliar a
capacidade do algoritmo de seguir uma seqncia lgica nica, sendo ento denominadas de
no-estruturadas aquelas que no conseguissem proporcionar tal situao, essas linguagens
eram caracterizadas pelo existncia do comando GOTO, que reposicionava o foco de execuo
do programa em qualquer ponto do algoritmo, o que o tornava instvel e complexo do ponto de
vista comercial. As estruturadas j aceitavam o novo preceito e representam as linguagens
atuais de programao.
Por Josiane Alves de Sousa (3/2001-2003)

2.4. Processo de desenvolvimento de programas.


a) PROCESSO DE CRIAO E EXECUO DE UM PROGRAMA
Embora seja teoricamente possvel a construo de computadores especiais, capazes
de executar programas escritos em uma linguagem de programao qualquer, os
computadores, existentes hoje em dia so capazes de executar somente programas em
linguagem de baixo nvel, a Linguagem de Mquina.
Aspectos das Linguagens de Mquina:
Rapidez de execuo de programas
Custo de sua implementao
Flexibilidade com que permite a construo de programas de nvel mais alto.
Aspectos de Linguagens de Alto Nvel:
Facilidade de construo de programas
Confiabilidade dos programas
PROBLEMA: Como a linguagem de nvel mais alto pode ser implementada em um
computador, cuja linguagem bastante diferente a de nvel mais baixo?
SOLUO: Atravs da traduo de programas escritos em linguagens de alto nvel
para a linguagem de baixo nvel do computador.
Para isso existem trs tipos de programas tradutores: Montadores, Interpretadores e
Compiladores.
b) MONTADOR
Efetua a traduo de linguagem de montagem (Assembly) para a linguagem de
mquina.
1 - Obtm prxima instruo do Assembly;
2 - Traduz para as instrues correspondentes em linguagem de mquina;
3 - Executa as instrues em linguagem de mquina;
4 - Repete o passo 1 at o fim do programa.
b) INTERPRETADOR
Efetua a traduo a de uma linguagem de alto nvel para linguagem de mquina da
seguinte forma:
1 - Obtm prxima instruo do cdigo-fonte em linguagem de alto nvel;
2 - Traduz para as instrues correspondentes em linguagem de mquina;
3 - Executa as instrues em linguagem de mquina;
4 - Repete o passo 1 at o fim do programa.
c) COMPILADOR

Por Josiane Alves de Sousa (3/2001-2003)

Efetua a traduo de todo o cdigo-fonte em linguagem de alto nvel para as instrues


correspondentes em linguagem de mquina, gerando o cdigo-objeto do programa. Em seguida
necessrio o uso de um outro programa (Link-Editor) que responsvel pela juno de
diversos cdigos-objeto em um nico programa executvel.

EDIO
COMPILAO
LINK-EDIO
ALGORITMO CDIGO-FONTE CDIGO-OBJETO PROGRAMA EXECUTVEL

Possibilidades de Erros no Programa:


Erros de Compilao: Erros de digitao e de uso da sintaxe da linguagem.
Erros de Link-Edio: Erro no uso de bibliotecas de sub-programas necessrias ao
programa principal.
Erros de Execuo: Erro na lgica do programa (algoritmo).
Podemos dizer, dessa forma, que o processo de programao consiste nos seguintes
passos :
PROGRAMADOR
TRADUTOR
ALGORITMO LINGUAGEM DE PROGRAMAO LINGUAGEM DE MQUINA

3. Introduo a Linguagem Pascal


3.1. Histrico
Origem: Desenvolvida nos anos 1970 por Nicklaus Wirth na Universidade Tcnica de
Zurique, Sua.
Objetivo: Desenvolver uma linguagem de programao disciplinada de alto nvel para
ensinar programao estruturada.
Padronizao: ANSI (American National Standars Institute) e IEEE (Institute of Eletrical
and Eletronics Engineers)
Padro de Fato: Borland International cria em 1983 o Turbo Pascal (IDE)
3.2. Estrutura de um programa Pascal
Um programa em pascal consiste de um Cabealho ( program header ) seguido por uma
Seo de Declaraes, onde todos os objetos locais so definidos, e de um Corpo, onde so
especificados, atravs de comandos, as aes a serem executadas sobre os objetos.
Program Nome_Do_Programa;
[ declarao de units (uses)
[ declarao de rtulos(labels)
[ declarao de constantes (const)
[ declarao de tipos (type)
[ declarao de variveis (var)
[ declarao de subprogramas
begin
comando [ ; comando] ...
end.
Por Josiane Alves de Sousa (3/2001-2003)

{ Cabealho }
]
]
]
]
]
]

{ Seo de Declaraes }

{ Corpo do Programa }

a) Cabealho do Programa
O cabealho consiste da palavra reservada Program seguida de um identificador que
corresponde ao nome do programa, terminando com um ponto e vrgula.
Exemplos: Program Circulo;
Program Relatrio;
b) Seo de Declaraes
A sintaxe do pascal requer que todos os identificadores usados no programa sejam
predefinidos ou que sejam declarados antes que voc possa us-los.
A declarao de identificadores feita na seo de declarao onde so associados
nomes aos objetos que sero usados no programa, tais como tipos de dados, variveis e subprogramas.
c) Corpo do Programa
Onde so especificados s aes do programa atravs dos comandos da linguagem.
a onde fica lgica do programa.
d) O Turbo Pascal
O Turbo Pascal mais que um simples compilador da linguagem Pascal, ele um
Ambiente Integrado de Desenvolvimento (IDE - Integrated Development Environment),
consistindo de um conjunto de ferramentas de desenvolvimento integradas. Entre as
ferramentas que compem o Turbo Pascal temos:
Editor de Cdigo-Fonte
Compilador
Link-Editor
Depurador
Ajuda On-Line da Linguagem e do prprio IDE

e) Principais Comandos do Turbo Pascal :


Compilar o programa : ALT + F9
Compilar e Executar o Programa : CTRL + F9
Acessar o Menu : ALT + Letra realada.
Criar um novo programa : menu FILE | NEW
Salvar o programa atual : F2
Sair do Turbo Pascal : ALT + X

Ver tela com os resultados do programa executado: ALT + F5

f) Programa exemplo:
program Exemplo;
begin
writeln(Programa Teste);
repeat until keypressed;
end.

Por Josiane Alves de Sousa (3/2001-2003)

3.3. Smbolos especiais


a) Identificadores
Os identificadores so nomes a serem dados a variveis, tipos definidos,
procedimentos, funes e constantes nomeadas.
Os identificadores so formados com letras de a at z, dos dgitos de 0 at
9 e dos caracteres especiais _ . Um identificador deve comear com uma letra ou com
_ e deve ser nico nos primeiros 63 caracteres.
Letras de a at z e A at Z
Dgitos 0 a 9
Caracter especial _
No mximo 63 caracteres.
No existe distino entre letras maisculas e minsculas no nome de um
identificador. Por exemplo, os nomes ALPHA, alpha e Alpha so equivalentes. Ateno para
o fato de que identificadores muito longos so mais fceis de serem lidos quando se usa uma
mistura de letras maisculas e minsculas; por exemplo, SalarioMinimo mais fcil de se ler
do que SALARIOMINIMO.
Exemplos de identificadores vlidos:
PAGAMENTO
Soma_Total
MaiorValor
Media1
_Media
Exemplos de Identificadores Invlidos:
%Quantidade
4Vendedor
Soma Total

O smbolo % no permitido
No pode comear com um nmero
No pode ter espaos entre as letras

Observao : Um identificador dever ficar inteiramente contido em uma linha do


programa, ou seja voc no pode comear a digitar o nome do identificador numa linha e
acabar em outro.
b) Palavras Reservadas
Pascal reconhece certo grupo de palavras como sendo reservadas. Essas palavras
tm significado especial e no podem ser usadas como identificadores em um programa. A
seguir listamos todas as palavras reservadas do Pascal Padro:

Por Josiane Alves de Sousa (3/2001-2003)

Palavras reservadas do Turbo Pascal :


And
Array
Asm
Begin
Case
Const
Constructor
Destructor
Div
Do

downto
else
end
file
for
forward
function
goto
if
implementation

In
inline
interface
label
mod
Nil
Not
object
of
or

packed
procedure
program
record
repeat
set
shl
shr
string
then

to
type
unit
until
until
uses
var
while
with
xor

3.4. Comentrios em um programa


Comentrios so textos escritos dentro do cdigo-fonte para explicar ou descrever alguns
aspectos relativos ao mesmo. Os comentrios podem ser colocados em qualquer lugar do
programa onde um espao em branco possa existir.
Voc pode colocar comentrios de duas formas: ou envolvendo o texto entre chaves {..}
ou entre (* .. *).
Quando o compilador encontra o smbolo {, este salta todos os caracteres at encontrar
um }. Da mesma forma, todos os caracteres que seguem (* so pulados at ser detectado o
smbolo *). Como resultado disso, qualquer uma das formas pode ficar dentro da outra; por
exemplo {...(*...*)...} um comentrio.
Uma utilidade de se usar comentrios dentro de comentrios quando queremos escrever
alguns comandos temporrios dentro do programa (talvez para depurao), como ilustramos
abaixo:
(*
if A = 10 then { este comando somente para depurao}
write( A e igual a 10 );
*)
4. Tipos de Dados Bsicos
Um tipo de dados especifica as caractersticas, ou seja os valores e operaes possveis de
serem utilizados com um dado desse tipo. Toda varivel e constante usada em um programa
tem um tipo associado a ela.
a) Categorias
Os tipos podem ser divididos em trs categorias :
TIPO ESCALAR (SIMPLES):
Representa uma nica pea de dados, podendo ser ordenados, isto , seus valores
mantm uma certa ordem.

Por Josiane Alves de Sousa (3/2001-2003)

10

Integer
Real
Boolean
Char
Enumerado
Subintervalo

Nmeros inteiros
Nmeros reais
Valores lgicos TRUE ou FALSE
Caracteres da Tabela ASCII
Relao de Valores em ordem
Faixa de valores ordenados

TIPO ESTRUTURADO:
Representa uma coleo de itens de dados Ex.:

String
Array
Record
Set
File
Text

Cadeia de caracteres
Conjunto de elementos de mesmo tipo
Conjunto de elementos de tipos diferentes
Conjunto de elementos
Arquivos de registro
Arquivos texto

TIPO APONTADOR:
Representa uma pea de dados que referencia ou aponta para outra pea de dados

Pointer

Referncia para uma varivel dinmica

O programador tambm pode criar seus prprios tipos, como ser visto
posteriormente. No entanto o Pascal j oferece um conjunto de tipos predefinidos.
4.1. Inteiros
O tipo INTEGER representa os nmeros inteiros. O Turbo Pascal permite cinco tipos
predefinidos de nmeros inteiros, cada um abrange um subconjunto dos nmeros inteiros.
Todos os tipos inteiros so ordinais (ordenados).

TIPO
Shortint
Integer
Longint
Byte
Word

FAIXA DE VALORES
No. De BYTES
-128..127
Com sinal 8-bits
-32768..32767
Com sinal 16-bits
-2147483648..2147483647
Com sinal 32-bits
0..255
Sem sinal 8-bits
0..65535
Sem sinal 16-bits

Ex.:
var
NumAlunos : integer;
Cont
: integer;

Por Josiane Alves de Sousa (3/2001-2003)

11

4.2. Reais
O tipo REAL representa os reais. O Turbo Pascal permite cinco tipos predefinidos de
nmeros reais, cada um com um faixa de valores e precises especficas. Todos os tipos reais
no so ordinais.

TIPO
Real
single
double
extended
comp

FAIXA
DE
VALORES
2.9e-39..1.7e38
1.5e-45..3.4e38
5.0e-324..1.7e308
3.4e-4932..1.1e4932
-9.2e18..9.2e18

DGITOS
SIGNIFICATIVOS
11-12
7-8
15-16
19-20
19-20

No. De
BYTES
6
4
8
10
8

var
Nota
: real;
Salario : real;

4.3. Caracteres
O tipo CHAR representa um nico caracter pertencente tabela ASCII.
var
Sexo: char;

4.4. Lgicos
O tipo BOOLEAN representa os valores lgicos TRUE e FALSE. O tipo BOOLEAN
ordinal, onde: FALSE < TRUE.
var
Aprovado : boolean;
Confirma : boolean;

4.5. Enumerado (ENUMERATED)


O tipo escalar enumerado um escalar ordenado onde os valores que as variveis deste
tipo podem assumir so descritos atravs de uma lista de valores. Cada valor um identificador
o qual tratado como uma constante. Isto permite que nomes significativos sejam associados a
cada valor usado para as variveis.
A definio de um tipo enumerado feita colocando-se entre parnteses os
identificadores que as variveis podem assumir, separados por vrgulas, como mostrado a
seguir:
var
Dias : ( Domingo, Segunda, Terca, Quarta, Quinta, Sexta, Sabado );

Nesse caso, os valores tm a seguinte ordem :


Domingo < Segunda < Terca < Quarta < Quinta < Sexta < Sabado

Por Josiane Alves de Sousa (3/2001-2003)

12

Ex.:
program Totaliza_Horas_De_Trabalho;
var

Dias :(Domingo,Segunda,Terca,Quarta,Quinta,Sexta,Sabado);
Meses:(Jan,Fev,Mar,Abr,Mai,Jun,Jul,Ago,Set,Out,Nov,Dez);
TotalHoras, HorasDeTrabalho : integer;
begin
TotalHoras := 0;
for Dias:=Segunda to Sabado do
begin
readln( HorasDeTrabalho );
TotalHoras := TotalHoras + HorasDeTrabalho;
end;

. . .
end.

4.6. Subintervalo
O Pascal admite tambm um tipo denominado subintervalo (subrange) que representa
um subconjunto de valores de tipos escalares ordenados.
Uma varivel do tipo subintervalo declarada da seguinte forma :
var
NumDiadoMes
LetrasMaiusculas
DiaDoAno

: 1..31;
: A..Z;
: 1..365;

4.7. Literais (Tipo estruturado bsico)


Armazena uma cadeia de caracteres (String) com o tamanho mximo de at 255
caracteres, mas podemos ser especificar um tamanho menor que 255. A posio [0] da string
armazena o seu comprimento. Esse tipo permite a concatenao utilizando-se o operador +.
var
Frase : string;
Nome : string[45];

5. Variveis
5.1. Declarao de Variveis
Uma varivel um valor que pode ser alterado dentro de um programa. Todas as variveis
usadas num programa devem ser declaradas usando a clusula VAR, dentro da seo de
declaraes. Nesse comando, alm de indicar o nome que deseja para as variveis, indica-se
tambm qual o tipo que as mesmas esto associadas.
Sintaxe:
var
identif [ , identif ]... : tipo-do-dado;
[ identif [ , identif ]. : tipo-do-dado; ] ...
O tipo do dado um dos tipos predefinidos ou um tipo definido pelo usurio:

var
Soma, Total, Salario : real;
Por Josiane Alves de Sousa (3/2001-2003)

13

Idade, Contador

: integer;

5.2. Inicializao de Variveis.


aconselhvel que s inicie todas s variveis antes de serem usadas, para que o
programa no tenha nenhum efeito colateral, por isso, aconselhvel para o bom programador
iniciar todas as variveis que usar no sistema.
6. Constantes:
6.1. Sem tipo definido (Constantes verdadeiras)
Uma constante um valor que no pode ser alterado durante a execuo do programa.
As constantes podem ser divididas nas seguintes categorias de acordo com o tipo
predefinido a que elas pertencem:

INTEIRAS
REAIS

LITERAIS

ARRAY
RECORD

Representadas pelos nmeros inteiros.


Ex.: 1230 , -1234 , 0 , 9
Representadas pelos nmeros reais.
Ex.: 12.57, 100, 100.00, -100.23
23.45e-5 = 23.45E-5 = 23.45x10-5
Representadas pelos caracteres colocados entre apstrofos.
Ex.: Isto um exemplo
Bem vindo a Sergipe
Voce o 1 colocado
- Literal Vazia
Representadas por um array.
Representadas por um record

Ex:
const

NumDias
NumAulas
PI
Esporte
FatorCalculo
AulasDia

=
=
=
=
=
=

7;
14;
3.141519265;
Futebol de Campo;
( PI * 13.5 ) + 9;
NumAulas / NumDias;

{
{
{
{
{
{

tipo
tipo
tipo
tipo
tipo
tipo

integer
integer
real
literal
real
real

}
}
}
}
}
}

6.2. Com tipo definido (Parecidas com variveis)


A definio de uma constante com tipo definido contm a declarao do tipo (por
exemplo, integer, real, string) e pode ser usada em instrues de atribuio. As constantes sem
tipo definido no podem ser utilizadas em instrues de atribuio, como mostrado a seguir:
Ex:
const
NumDias: integer = 7;
NumAulas: integer = 14;
PI: real = 3.141519265;
Esporte: string[20] = Futebol de Campo;
Por Josiane Alves de Sousa (3/2001-2003)

{tipo integer}
{tipo integer}
{tipo real}
{tipo literal}
14

Fator: real = ( PI * 13.5 ) + 9;


AulasDia: real = NumAulas / NumDias;

{tipo real}
{tipo real}

Correto
Const
S: string[4]=Text;
Begin
S:=AAAA;
End.
Incorreto
Const
S=Text;
Begin
S:=AAAA;
End.
6.3. Constantes prdefinidas
O Pascal Padro possui trs identificadores que representam constantes, so eles:
Ex:
MAXINT - Representa o maior inteiro possvel.
TRUE e FALSE - Representam os valores de uma varivel do tipo boolean.

7. Expresses e Operadores
Uma expresso um conjunto de operandos unidos por operadores, de forma a
computar um valor ou resultado.
Os operandos podem ser variveis, constantes ou valores gerados por funes.
Os operadores identificam as operaes a serem efetuadas sobre os operandos. Cada tipo de
dados possui um conjunto de operadores relacionados. Os operadores classificam-se em
Unrios e Binrios, conforme tenham um ou dois operandos, respectivamente.
Ex: var1+var2, ento as variveis var1 e var2 so operandos e o sinal de + um
operador.
7.1. Tipos de Operadores
Atribuio (atribuir o valor de uma expresso a uma varivel)
Aritmticos (efetuar operaes aritmticas com nmero inteiros e reais)
Manipulao de Bits (efetuar a manipulao dos bits de uma varivel)
Concatenao (Efetua a juno de duas variveis ou constantes do tipo string)
Relacionais (efetuar a comparao entre dados de mesmo tipo)
Lgicos (analisar duas ou mais expresses interrelacionadas)
Operadores de Ponteiros (manipulao de variveis dinmicas e apontadores)
Operadores de Conjuntos (manipulao de variveis do tipo conjunto)
Operador Type-Cast (Usados para alterar o tipo de uma expresso)

7.2. Operadores Atribuio (:=)


Por Josiane Alves de Sousa (3/2001-2003)

15

Usado para atribuir o valor de uma expresso a uma varivel.


Exemplo:
A := 10;
Nome := Josias;

7.3. Operadores Aritmticos


Usados para efetuar operaes aritmticas com nmero inteiros e reais.

Subtrao
Adio
Multiplicao
Diviso Real
Diviso Inteira (truncada )
Resto da Diviso Inteira
Inverte Sinal
Mantm Sinal

+
*
/
div
mod
+

Exemplo:
var
A, B : integer;
C, D : real;
begin
A := 1;
B := 3;
C := 5;
D := 10;
A := 1 + B;
A := B + D; {errado,D real} A:=B+trunc(D) ou A:=B+round(D)
B := 10 div 3;
A := 10 mod 3;
C := D / C;
D := 10 div C; { errado, o operado div s para inteiros }
A := -1;
B := 5 + A;
B := -A;
C := D * A;
B := C * B; {errado, C real} B:=trunc(C) * B
end.

7.3.1. Binrios e Unrios


Binrios: Quando existem dois operandos em uma expresso.
Unrios: Quando considerarmos um operando em separado na expreso.
7.3.2. Aritmtica de Inteiros e Aritmtica de Reais
As regras de aritmtica de inteiros se aplicam quando uma expresso atribuda
a uma varivel de inteiros. Todos os operadores contidos em uma expresso de inteiros devem
ser ou inteiros ou reais convertidos em inteiros usando as funes padro Trunc ou Round do
Turbo Pascal.
Somente inteiros
Por Josiane Alves de Sousa (3/2001-2003)

16

Ou convertidos em inteiros (Trunc ou Round)


Uma expresso aritmtica apresenta um resultado de ponto flutuante sob as duas
seguintes condies: quando a expresso contm alguns operandos de ponto flutuante e quando
a operao de diviso executada com o operador de barra (/). Operandos de ponto flutuante
so quaisquer indentificadores definidos como Real ou qualquer literal em numrico com casas
decimais (por exemple, 10,2).
7.4. Manipulao de Bits
Usados para efetuar a manipulao dos bits de uma varivel.

E binrio
Deslocamento de bits ( Shift Left )
Deslocamento de bits ( Shift Right )
OU binrio
XOR binrio
NOT binrio

and
shl
shr
or
xor
not

7.5. Concatenao (+)


Efetua a juno de duas variveis ou constantes do tipo string.
Exemplo:
var
PreNome, SobreNome, NomeCompleto : string[ 30 ];
BEGIN
{ Suponhamos o nome Josias Lima Santos }
PreNome
:= Josias;
SobreNome
:= Santos;
NomeCompleto := PreNome + SobreNome;
writeln( NomeCompleto );
NomeCompleto := Jose + Maria;
writeln( NomeCompleto );
END.

7.6. Operadores Relacionais


Usados para efetuar a comparao entre dados de mesmo tipo.

Maior que
Menor que
Maior ou igual
Menor ou igual
Igual
Diferente

>
<
>=
<=
=
<>

Exemplo:
Por Josiane Alves de Sousa (3/2001-2003)

17

var
Nota1, Nota2 : real;
NomeAluno1, NomeAluno2 : string[ 30 ];
A, B, C : integer;
BEGIN
A := 2;
B := 3;
C := 1;
if B = A + C then
writeln( B );
Nota1 := 5.0;
Nota2 := 10.0;
if Nota1 < Nota2 then
writeln( Nota1 );
NomeAluno1 := Maria Jose;
NomeAluno2 := MariaJose;
if NomeAluno1 < NomeAluno2 then
writeln( NomeAluno1 );
END.

7.7. Operadores Lgicos.


Usado para se analisar duas ou mais expresses interrelacionadas.

E
OU
NO

And
Or
Not

Exemplo:
var
Nota1, Nota2 : real;
NomeAluno1, NomeAluno2 : string[ 30 ];
A, B, C : integer;
BEGIN
A := 2;
B := 3;
C := 1;
NomeAluno1 := Maria Jose;
NomeAluno2 := MariaJose;
if ( B = A + C ) and ( NomeAluno1 <> NomeAluno2 ) then
writeln( NomeAluno1, B );
if ( A = C ) or ( NomeAluno1 = NomeAluno2 ) then
writeln( NomeAluno1 );
if not( A = C ) then
writeln( NomeAluno1 );
END.

TABELAS VERDADE
OPERADOR AND

OPERANDO 1
TRUE
TRUE
FALSE
FALSE

OPERANDO 1
TRUE
FALSE
TRUE
FALSE

Por Josiane Alves de Sousa (3/2001-2003)

RESULTADO
TRUE
FALSE
FALSE
FALSE

18

OPERADOR OR

OPERANDO 1
TRUE
TRUE
FALSE
FALSE

OPERANDO 1
TRUE
FALSE
TRUE
FALSE

RESULTADO
TRUE
TRUE
TRUE
FALSE

OPERADOR NOT

OPERANDO
TRUE
FALSE

RESULTADO
FALSE
TRUE

7.8. Operadores de Ponteiros


Usado na manipulao de variveis dinmicas e apontadores.

Endereo
Referncia

@
^

7.9. Operadores de Conjuntos


Usados na manipulao de variveis do tipo conjunto.

Unio
Complemento
Interseco
Igualdade
Desigualdade
Subconjunto
Pertinncia
Acesso a campos

+
*
=
<>
<= , >=
in

7.10. Operadores de Tipe-Cast


Usados para alterar o tipo de uma expresso.

Exemplo:
type
TDias = ( Dom, Seg, Ter, Qua, Qui, Sex, Sab );
var
Dia
: TDias;
NumDia : 0..6;
TudoOk : boolean;
Opcao : char;
NumOp : byte;
BEGIN
readln( NumDia );
Dia := TDias( NumDia );
TudoOk := boolean( 1 );
NumOp := byte( opcao );
END.

Por Josiane Alves de Sousa (3/2001-2003)

19

7.11. Tipos de expresses


Existem trs tipos bsicos de expresses:
Numricas: Uma expresso numrica quando os seus operandos so numricos
(inteiros ou reais) e o resultado tambm um valor numrico. Nas expresses
relacionais so usados os operadores Aritmticos e os de Manipulao de Bits.
Ex:
Resultado:=2+2;
Literais: Uma expresso literal quando os seus operandos so literais do tipo
string (no pode ser char) e o resultado tambm um valor literal. S existe um
nico operador para se usar em expresses literais, o operador Concatenao(+).
Ex:
Resultado:=Antonio+Carlos;
Booleanas: Uma expresso booleana quando seu resultado do tipo boolean
(TRUE ou FALSE), podendo seu operando serem de qualquer tipo de dados. Nas
expresses relacionais so usados os operadores Lgicos e os Relacionais.
Ex:
Resultado:=2>3;
7.12. Hierarquia dos Operadores Aritmticos, Relacionais e Lgicos
Se vrios operadores aparecerem em uma expresso, a ordem de execuo das
operaes ser dada segundo os critrios abaixo :
Pelo emprego explcito de parnteses
Pela ordem de precedncia existente entre os operadores
Se existirem operadores de mesma ordem de precedncia, a avaliao ser feita da
esquerda para a direita.
Ordem de Precedncia dos Operadores (da maior para a menor )

Operadores
( )
@, not, sinal de adio e
subtrao unrios
*, /, div, mod
And, shl, shr, +, -, or, xor
=, <>, <, >, <=, >=, in

Categoria
Parntesis
Operadores Unrios
Operadores Multiplicativos
Operadores Aditivos
Operadores Relacionais

8. Comandos:
8.1. Estruturas de Controles (Deciso e Repetio)
Deciso: So aqueles que permite efetuarmos um desvio bidirecional ou
multidirecional na lgica do programa, segundo uma determinada condio booleana.
Repetio: So aqueles que fazem com que um ou vrios comandos sejam executados
repetidas vezes.
Por Josiane Alves de Sousa (3/2001-2003)

20

8.2. Comandos bsicos e funes pr-definidas.


Os comandos bsicos vo sendo vistos no decorrer da disciplina. Mas poderemos
especificar alguns:
Comandos de Entrada e Sada
Na maioria das vezes um programa necessita de interatividade com o usurio, ou seja,
durante a sua execuo o programa ler valores fornecidos pelo o usurio e escrevem outros
para o usurio. Essa interatividade conseguida atravs dos comandos de entrada e sada.
Comandos WRITE e WRITELN
So comandos de sada do Pascal. A diferena que o comando writeln aps exibir o
contedo dos seus parmetros efetua uma quebra de linha.
write (Varivel ou Expresso);
writeln(Varivel ou Expresso);
Comandos READ e READLN

Representam os comandos de entrada do pascal, onde o readln tambm executa uma


quebra de linha aps ler os seus parmetros.
write(Varivel);
writeln(Varivel);
Funes pr-definidas

O Pascal oferece um conjunto de funes pr-definidas (built-in functions), que so


usadas com vrios tipos de dados simples. As funes, na maioria das vezes, necessitam de
dados como parmetro (dados de entrada). Vejamos algumas dessas funes:
Funes Matemticas

Nome
da Objetivo
Funo
Abs( x )
Calcula o valor absoluto de x.
arctan( x )
Calcula o arco-tangente de x
em radianos
Cs( x )
Calcula o coseno de x em
radianos
Exp( x )
Calcula
ex ,
em
que

do Tipo do Retorno
o mesmo que x
real

inteiro ou real

real

inteiro ou real

real

Calcula o logaritmo natural de inteiro ou real


x (x>0)

real

e=2.7182818
natural
de
neperianos.
ln( x )

Tipo
Parmetro
inteiro ou real
inteiro ou real

Por Josiane Alves de Sousa (3/2001-2003)

sistema
logaritmos

21

Exp(ln(x)*y)

Sin( x )
Sqr( x )
sqrt( x )
odd( x )

randomize

Random( x )

Pi

Retorna x elevado a y
{utilizando
regras
de
logaritmos}.
Calcula o seno de x em
radianos
Calcula o quadrado de x
Calcula a raiz quadrada de x
(x>=0)
Determina se x par ou impar
TRUE, X par / FALSE, X
impar
Inicia o gerador de nmeros
aleatrios coma hora do
Sistema Operacional
Retorna um nmero pseudoaleatrio entre 0 e x. Se x no
for especificado retorna um
valor entre 0.0 e 1.0
Retorna o valor de PI
(3.1415...)

Inteiro ou real

real

inteiro ou real

real

inteiro ou real
inteiro ou real

o mesmo que x
real

inteiro

boolean

nenhum

nenhum

inteiro

real

Nenhum

real

Funes Literais

Nome Funo

Objetivo

Length( x )

Determina o nmero
caracteres de x
Concatena duas ou mais
strings (mx 255 caracteres)
Retorna uma subcadeia da
cadeia x, com z caracteres,
comeando no caracter y.
Retorna a posio da cadeia x
dentro da cadeia y, se no for
encontrada retorna 0.
Remove z caracteres da
cadeia x a partir da posio y
Insere a cadeia de caracteres x
na cadeia y a partir da posio
z (max 255 )
Retorna x convertido para
maiscula

Concat( x1, x2, x3,...)


copy( x, y, z )

pos( x, y )

Delete( x, y, z )
Insert( x, y, z )

UpCase( x )

Tipo
do Tipo
do
Parmetro
Retorno
de string
inteiro
string

string

string, inteiro, string


inteiro
String, string

inteiro

string, inteiro, nenhum


inteiro
string, string, nenhum
inteiro
char

char

Funes para Converso

Nome Funo
trunc( x )

Tipo do
Parmetro
Trunca x para um nmero real
inteiro

Por Josiane Alves de Sousa (3/2001-2003)

Objetivo

Tipo do
Retorno

inteiro
22

int( x )
frac( x )

Retorna a parte inteira de x


Retorna a parte fracionria de
x
Arredonda x para um inteiro
Determina o caracter ASCII
representado por x
Determina o inteiro que
usado para codificar x
Muda o tipo de x para tipo

round( x )
chr( x )
ord( x )
tipo( x )

real
real

real
real

real
inteiro

inteiro
char

char

inteiro

qualquer

tipo

Funes e Procedimentos de Uso Geral

Nome
Funo
pred( x )
succ( x )
Sizeof( x )
inc (x,[y])
GotoXY(x,y)

Objetivo

Determina o predecessor de x
Determina o sucessor de x
Retorna o nmero de byte de x
Incrementa x de y unidade
Move o curso para a coluna x e linha y

Tipo do
Parmetro
tipo ordenado
tipo ordenado
qualquer tipo
tipo ordenado
inteiro

Tipo do
Retorno
o mesmo de x
o mesmo de x
inteiro

Comando Composto
Consiste de um ou vrios comandos que devam ser executados sequencialmente, sendo
usado em situaes onde a sintaxe de alguns comandos do Pascal permite apenas um nico
comando.
Os comandos que fazem parte do comando composto so separados por ponto-e-vrgula,
devendo comear e terminar pelas palavras reservadas begin e end;, respectivamente, de
acordo com a sintaxe :
begin

comando [ ; comando ]...


end;
Exemplo:
if A >
begin
Temp
A
B
end;

B then
:= A;
:= B;
:= Temp;

9. Estruturas de Deciso:
9.1. If-Then/If-Then-Else/extenso Else-if /If-Then aninhadas;
O comando IF-THEN-ELSE permite efetuarmos um desvio bidirecional na lgica do
programa, segundo uma determinada condio booleana.

Sintaxe:

Por Josiane Alves de Sousa (3/2001-2003)

23

if exp-booleana
then
comandos
[else
comandos];
Exemplo:
if A <= B then
A := ( A + 1 ) / 2
if odd( I ) then
J := J + 1
else
J := J div 2 + 1;
if Nome1 = Jose then
begin
J := J div 2 + 1;
writeln( J * 2 );
end;
if Media >= 5 then
begin
writeln( Aluno Aprovovado );
writeln( Parabns !!! );
end
else
writeln( Aluno Reprovado );
if Sexo = MASCULINO then
if Idade > 18 then
begin
writeln(Jovem, aliste-se ba Aeronautica!);
writeln( Sirva sua ptria, venha fazer uma carreira );
end
else
writeln( Voc ainda muito jovem para o servio militar );
if Sexo = MASCULINO then
begin
if Idade > 18 then
begin
writeln( Jovem, aliste-se no Exrcito! );
writeln( Sirva sua ptria, venha fazer uma carreira);
end
else
writeln( Voc ainda muito jovem para o servio militar );
writeln( Qual o seu Nome ? );
end;

9.2. Case (Desvio Condicional).


O comando CASE permite efetuarmos um desvio multidirecional na lgica do programa.
Ele consiste de um expresso (chamada seletor) e uma lista de comandos, cada um precedido por
constantes ou subintervalos separados por vrgulas (chamados rtulos de case), de mesmo tipo do
seletor, que pode ser qualquer escalar ordenado ( integer, char, boolean, enumerated, faixa ).

Sintaxe :
case expresso of
rotulo-case : comando;
Por Josiane Alves de Sousa (3/2001-2003)

24

[rotulo-case : comando;]

[else]
comando [; comando ].

end;

Exemplo:
program Figuras;
type
TFigura = ( Triangulo, Retangulo, Quadrado, Circulo );
var
Figura : TFigura;
Tipo
: integer;
begin
writeln( Qual o tipo da figura ? );
writeln( 0-Triangulo );
writeln( 1-Retangulo );
writeln( 2-Quadrado );
writeln( 3-Circulo
);
readln( Tipo );
Figura := TFigura( Tipo );
case Figura of
Triangulo : writeln( Voc
Retangulo : writeln( Voc
Quadrado : writeln( Voc
Circulo
: writeln( Voc
end;
end.

escolheu
escolheu
escolheu
escolheu

a
a
a
a

figura
figura
figura
figura

Triangulo
Retangulo
Quadrado
Circulo

);
);
);
);

program TestaTecla;
{ Programa para testar a tecla pressionada }
var
Tecla : char;
begin
writeln( Pressione uma Tecla : );
readln( Tecla );
case Tecla of
A..Z, a..z: writeln(Voc pressionou uma Letra);
0..9:
writeln(Voc pressionou um Numero);
+, -, *, /: writeln(Voc pressionou um Sinal Aritm.);
else
writeln( Voc pressionou uma outra tecla qualquer );
end;
end.

OBS: O Comando CASE pode ser substitudo por um conjunto de IF-THEN-ELSE


aninhados, no entanto, nesses casos, onde h muitas condies, o comando CASE, torna o
programa mais legvel.

program TestaIdade;
{ Programa para testar a idade de servio militar }
var
Idade: integer;
begin
writeln( Qual a sua Idade ? );
readln( Idade );
Por Josiane Alves de Sousa (3/2001-2003)

25

case Idade >= 18 of


TRUE : writeln( Voce j pode servir ao exrcito );
FALSE : writeln( Voce ainda no pode servir ao exrcito );
end;
end.

10. Estruturas de Repetio:


Comandos de repetio so aqueles comandos que fazem com que um ou vrios outros sejam
executados repetidas vezes.
10.1. While-Do
O comando WHILE faz com que um comando seja executado enquanto a expresso de
controle permanecer verdadeira ( TRUE ).

Sintaxe :
while expressao do

comando;
A expresso que controla a repetio dever ser do tipo boolean, sendo a mesma avaliada
antes que o comando do lao seja executado. Isto quer dizer que, se logo no incio o resultado da
expresso for FALSE, o lao no ser executado nenhuma vez.
Exemplo:
program TesteWhile;
var
I,J: integer;
begin
I := 0;
while I < 5 do
I := I + 1;
writeln( I );
J := 0;
while J < 5 do
begin
J := J + 1;
writeln( J );
end;
end.

10.2. Repeat-Until
O comando REPEAT faz com que um comando seja executado enquanto a expresso de
controle permanecer falsa ( FALSE ). O teste da condio feito ao final do lao, dessa forma o
lao sempre executado pelo menos uma vez.

Sintaxe :
repeat
comando [;comando]
until expressao;

Por Josiane Alves de Sousa (3/2001-2003)

26

A expresso que controla a repetio dever ser do tipo boolean, sendo a mesma avaliada
antes que o comando do lao seja executado. Isto quer dizer que, se logo no incio o resultado da
expresso for FALSE, o lao no ser executado nenhuma vez.
Exemplo:
program TesteRepeat;
var
I,J: integer;
begin
I := 0;
repeat
I := I + 1;
until I >= 5;
writeln( I );
J := 0;
repeat
J := J + 1;
writeln( J );
until J >= 5;
END.

{ No necessrio o BEGIN e END }

10.3. For-Do
O comando FOR executa repetitivamente um comando enquanto atribudo uma srie de
valores a uma varivel de controle (contador do FOR).

Sintaxe :
for variavel := expressao1 to/downto expressao2 do
comando;

Onde :
variavel = uma varivel de controle cujo valor ser incrementado (se usado o to) ou
decrementado (se usado o downto) de uma unidade.
Expressao1 = o valor inicial da varivel de controle
Expressao2 = o valor final da varivel de controle
A varivel de controle poder ser de qualquer tipo escalar ordenado e as expresses de
um tipo compatvel com ela.
O comando FOR funciona da seguinte maneira :
Inicialmente, a varivel de controle recebe o valor da primeira expresso
(expresso1).
Antes de comear a execuo do lao, a varivel de controle testada para verificar
se ela menor ou igual (se for usado o TO) ou se maior ou igual (se for usado o
DOWNTO) segunda expresso.
Se o resultado do teste for verdadeiro, o comando do lao executado.
Ao terminar a execuo do comando do lao, a varivel de controle testada para
verificar se ela igual ao valor final.
Se a varivel de controle for igual ao valor final, a repetio termina.
Se no for igual, ela incrementada ou decrementada de uma unidade.

Aps o trmino do comando FOR, a varivel de controle, ter o valor da Expressao2, a


no ser que o comando tenha sido interrompido por um comando goto ou break.

Por Josiane Alves de Sousa (3/2001-2003)

27

Exemplo :
for I := 1 to 100 do
Soma := Soma + I;
for I := 1 to 100 do
begin
readln( x );
Soma := Soma + x;
end;
for I := 100 downto 1 do
writeln( I );
Program Exemplo;
Uses crt;
type
TDias = ( Dom, Seg, Ter, Qua, Qui, Sex, Sab );
var
Dia: Tdias
Vendas, VendasToal : real;
begin
for Dia := Seg to Sex do
begin
readln( Vendas );
VendasTotal := VendasTotal + Vendas;
end;
end.

10.4. Desvio Incondicional(Goto, Continue, Break, Halt).


Desvio GOTO
O comando goto desvia o processamento do ponto em que for encontrado, para outra
Iinha do programa que est marcada com um Iabel (rtulo). Este Iabel necessita ser declarado no
incio do programa.
Este recurso (goto / Iabel) nos permite abandonar de forma "radical" um Ioop, antes que
seja executado at o final por vias normais. O goto um comando "forte" que pode abandonar no
s o loop controlado pelo while como tambm os Ioops gerados pelos outros dois comando de
repetio que estudaremos mais adiante (for e repeat).
Exemplo:
O programa abaixo permite a entrada de no mximo dez nmeros para serem somados
dentro da varivel SOMA, ou at ser digitado zero:
Program Prog10;
var
I,SOMA: integer;
NUM: real;
label
FIM;
begin
NUM:= 0;
SOMA:= 0;
while I<=10 do
begin
write('DIGITE VALOR: ');
readln(NUM);
if NUM<>0 then
Por Josiane Alves de Sousa (3/2001-2003)

28

begin
SOMA:=SOMA+NUM;
end
else
begin
goto FIM;
end;
I:=I+1;
end;
FIM:
writeln ('SOMA DOS NMEROS=', SOMA);
end.

Comando CONTINUE
O comando CONTINUE causa o desvio para o final do lao mais interno de um comando
de repetio.

Exemplo:
while expressao do
begin
...
continue;
...
{ o comando continue desvia para aqui }
end;
for I := expressao1 to expressao2 do
begin
...
continue;
...
{ o comando continue desvia para aqui }
end;
repeat
...
continue;
...
{o comando continue desvia para aqui}
until expressao;
OBS.: O comando CONTINUE no faz parte do Pascal Padro.

Comando BREAK
O comando BREAK causa a sada incondicional do lao mais interno de um comando de
repetio.

Exemplo:
while expressao do
begin
...
break;
...
end;
{o comando break desvia para aqui }
for I := expressao1 to expressao2 do
begin
Por Josiane Alves de Sousa (3/2001-2003)

29

...
break;
...
end;
{ o comando break desvia para aqui }
repeat
...
break;
...
until expressao;
{o comando break desvia para aqui }
OBS.: O comando BREAK no faz parte do Pascal Padro.

Comando HALT
O comando HALT causa o trmino imediato do programa.
Program teste;
begin
...
if Opcao = F then
halt; {O programa terminar, aqui se a condio do IF for
satisfeita}
...
end.
{O programa terminar, aqui se a condio do IF no for
satisfeita}

BIBLIOGRAFIA
OBRIEN, Stephen: Turbo Pascal 6 Completo e Total, So Paulo, Ed. Makron Books, 1994.
MANZANO, Jos Augusto N. G. e YAMATUMI, Wilson Y.: Programando em Turbo Pascal 7.0,
So Paulo, Ed. rica, 1996.
RINALDI, Roberto: Turbo Pascal. So Paulo, Ed. rica, 1990.
WIRTH, Niklaus: Algoritmos e Estruturas de Dados. Rio de Janeiro, Ed. Prentice/Hall do Brasil
PHB, 1986.
FERNANDES, Luiz Antnio B.: Linguagem de Programao: Ambiente Integrado Pascal, Rio de
Janeiro, Ed. Senac Nacional, 1998.

Por Josiane Alves de Sousa (3/2001-2003)

30

Você também pode gostar