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) 4

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. Utilizam mnemnicos para representar instrues elementares Ex.: Assembly 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

Linguagens de Baixo Nvel

Linguagens de Alto Nvel

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) 5

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


Ex.:

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

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
Ex: const

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

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; Correto Const S: string[4]=Text; Begin S:=AAAA; End. Incorreto Const S=Text; Begin S:=AAAA; End. 6.3. Constantes prdefinidas

{tipo real} {tipo real}

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

+ * / div mod +

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
7.5. Concatenao (+)

and shl shr or xor not

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

And Or Not

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

RESULTADO TRUE FALSE FALSE FALSE

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

18

OPERADOR OR

OPERANDO 1 TRUE TRUE FALSE FALSE


OPERADOR NOT

OPERANDO 1 TRUE FALSE TRUE FALSE

RESULTADO TRUE TRUE TRUE FALSE

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


7.10. Operadores de Tipe-Cast Usados para alterar o tipo de uma expresso.

+ * = <> <= , >= in

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
8. Comandos:

Categoria Parntesis Operadores Unrios Operadores Multiplicativos Operadores Aditivos Operadores Relacionais

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

Tipo Parmetro inteiro ou real inteiro ou real inteiro ou real inteiro ou real

do Tipo do Retorno o mesmo que x real real real

e=2.7182818 natural de neperianos.


ln( x )

sistema logaritmos
real

Calcula o logaritmo natural de inteiro ou real x (x>0)

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

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 inteiro ou real inteiro ou real inteiro

real o mesmo que x real boolean

nenhum

nenhum

inteiro

real

Nenhum

real

Funes Literais

Nome Funo Length( x ) Concat( x1, x2, x3,...) copy( x, y, z )

Objetivo

pos( x, y )

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

UpCase( 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

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

Objetivo

Tipo do Retorno

inteiro
22

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

int( x ) frac( x ) round( x ) chr( x ) ord( x ) tipo( 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

real real real inteiro char qualquer

real real inteiro char inteiro 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