Académique Documents
Professionnel Documents
Culture Documents
Politcnica de Zurique (a mesma escola onde Einstein estudou). O nome da linguagem uma homenagem ao filsofo francs Blaise Pascal, que inventou uma mquina de calcular mecnica. A descrio formal do Pascal foi publicada em 1971. O Pascal nasceu dentro do conceito de programao estruturada, muito discutida na Europa durante os anos 60 e hoje difundido pelo mundo e incorporado em todas as linguagens modernas (C, C++, Java, Visual Basic, etc.). A idia principal do Pascal a ordem, administrada atravs de um conceito de dados baseado em tipos, requerendo declaraes explcitas de todas as variveis e controles do programa. Parte da popularidade do Pascal se deve ao compilador Turbo Pascal, da Borland, lanado em 1985. A linguagem usada no Delphi o sucessor do Turbo Pascal, conhecido como Object Pascal.
Anotaes:
Anotaes:
Note que devemos converter a propriedade text da caixa de edio, que um string, para um valor inteiro, pois no podemos testar text diretamente. Isto feito com a funo StrToInt. Podemos usar o Case tambm para testar intervalos de valores. Por exemplo, escreva o seguinte trecho no evento click do boto 2:
procedure TForm1.Button2Click(Sender: TObject); var Numero: integer; begin Numero := StrToInt(edit1.text); case Numero of 1..10: Showmessage ('Voc digitou um nmero entre 1 e 10'); 11..20: Showmessage ('Voc digitou um nmero entre 11 e 20'); 21..30: Showmessage ('Voc digitou um nmero entre 21 e 30'); 31..40: Showmessage ('Voc digitou um nmero entre 31 e 40'); 41..50: Showmessage ('Voc digitou um nmero entre 41 e 50'); else Showmessage ('Voc digitou um nmero maior do que 50'); end; end;
Anotaes:
Anotaes:
end; end;
procedure TForm1.Button2Click(Sender: TObject); var I: integer; begin I:=0; repeat ShowMessage(IntToStr(I)); I:=I+1; until I>10; end; Rode o programa e veja o que acontece. Algumas observaes so importantes. Primeiro, voc mesmo precisa providenciar o incremento da varivel contadora I, e esta varivel no precisa ser inteira. Segundo, a instruo while-do exige que o bloco de instrues a ser controlado fique entre um begin e um end, o que no acontece na instruo repeat-until.
2.3. VARIVEIS
A linguagem Pascal fortemente baseada em tipos de dados. O tipo de uma varivel determina os valores que esta varivel pode ter e as operaes que podem ser executadas com ela. Tambm necessrio que todas as variveis sejam declaradas antes de ser usadas, o que feito por meio da palavra-chave var. Esta declarao pode ser feita em uma unidade, em uma procedure ou para declarar variveis globais, tendo o seguinte aspecto: var Numero: Integer; Fechado: Boolean;
Uma tentativa de realizar uma operao com tipos de dados diferentes resulta em um erro de compilao. Isto aconteceria se tentssemos, por exemplo, somar Numero e Fechado. Constantes podem ser declaradas de forma semelhante, com auxlio da palavra-chave const: const
Note que no usamos, aqui, o sinal de atribuio :=, e sim o sinal de igualdade convencional.
Anotaes:
O Object Pascal apresenta vrios tipos de dados construdos internamente, denominados tipos pr-definidos. Tambm possvel construir outros tipos a partir dos pr-definidos. A Tabela 2.1 a seguir apresenta os tipos de dados pr-definidos. Tabela 2.1 - Tipos de dados pr-definidos do Object Pascal CATEGORIA Inteiros TIPO DE DADO ShorInt SmallInt LongInt Integer Byte Word Single Double Extended Currency Comp Real VARIAO -128 a 127 -32768 a 32767 -2147483647 a 2147483647 -2147483647 a 2147483647 0 a 255 0 a 65535 1.5 x10-45 a 3.4x1038 5.0x10-324 a 1.7x10308 3.4x10-4932 a 1.1x104932 -922337203675477.5808 922337203685477.5807 -263 a 263 2.0x10-39 a 1.7x1038 TAMANHO 1 byte 2 bytes 4 bytes 4 bytes 1 byte 2 bytes 4 bytes 8 bytes 10 bytes a 8 bytes 8 bytes 6 bytes OBSERVAES
Reais
7-8 dgitos 15-16 dgitos 19-20 dgitos 19-20 dgitos 19-20 dgitos 11-12 dgitos. Use este tipo apenas para compatibilidade com verses anteriores do Pascal
Booleano Character
True ou false Caracteres ANSI Caracteres Unicode Caracteres ANSI At 255 caracteres Virtualmente sem limite Virtualmente sem limite
1 byte
1 byte
String
Variant
Como o Object Pascal uma linguagem fortemente estruturada, voc no poder realizar operaes entre variveis de tipos diferentes. Ser necessrio, ento, convert-las para o tipo adequado antes de realizar a operao. A Tabela 2.2 a seguir mostra as funes de converso mais utilizadas. Tabela 2.2 - Funes de converso de tipos mais utilizadas FUNO Chr Round DESCRIO Converte um nmero ordinal em um caractere ANSI Converte um real em um inteiro, arredondando a parte decimal
Anotaes:
Alm dos tipos pr-definidos, o Object Pascal emprega a idia de tipos de dados definidos pelo usurio, que foi introduzida pela primeira vez no Pascal, no estando presente nas linguagens anteriores. Os programadores podem definir seus prprios tipos de dados por meio de construtores de tipos, tais como subintervalos (subranges), matrizes (arrays), registros (records), enumeraes, ponteiros e conjuntos. A seguir, discutiremos brevemente cada um destes tipos.
implementation {$R *.DFM} type Semana = (Segunda, Tera, Quarta, Quinta, Sexta, Sbado, Domingo);
Espaos em branco no so permitidos dentro de um elemento. Uma vez declarado um tipo, voc deve declarar uma varivel pertencente a este tipo. No usamos o tipo diretamente, mas sim uma varivel deste tipo. Por exemplo, vamos supor que queiramos construir um programa que fornea o nome da pessoa escalada para um planto semanal. Poderamos declarar uma varivel Plantao da seguinte forma: var Plantao : Semana;
Anotaes:
Para atribuir valores varivel Plantao escreva simplesmente: Plantao := Segunda; Plantao := Tera; etc.
Note que usamos dois pontos para separar os limites do suintervalo, e no vrgulas. Isto permite que o compilador identifique o tipo como um subintervalo e no um tipo enumerado. A seguir, devemos declarar uma varivel como pertencente ao tipo declarado anteriormente: var Salario_Ana : Salario_faixa1;
Quando um programa usando subintervalos executado, e se um valor atribudo a um tipo subintervalo estiver fora do intervalo, o programa gerar um erro de tempo de execuo. Veremos mais tarde como capturar este erro de modo a avisar ao usurio que ele deve entrar novamente com os dados, sem que o programa seja abortado. Para que o teste de intervalo seja executado, voc deve antes incluir a diretiva de compilao {$R+} no programa, da seguinte forma: procedure Tform1.ButtonClick (Sender : Tobject); {$R+} type Salario_faixa1 = 500 .. 1000;
Anotaes:
Salario_Ana : Salario_faixa1;
Note que separamos os valores mnimo e mximo de um array por dois pontos. Os arrays declarados acima so unidimensionais, isto , seus elementos podem ser dispostos formando uma nica linha. Para atribuir valores a um array proceda da seguinte forma: begin Dia_da_semana Dia_da_semana Dia_da_semana Dia_da_semana Dia_da_semana Dia_da_semana Dia_da_semana [1] [2] [3] [4] [5] [6] [7] := := := := := := := Domingo; Segunda-feira; Tera-feira; Quarta-feira; Quinta-feira; Sexta-feira; Sbado;
end;
Para armazenar valores de um array em outra varivel, podemos escrever: var begin end; Dia := Dia_da_semana [1];
Dia : string;
e assim por diante. A declarao de arrays multidimensionais semelhante de arrays unidimensionais. Por exemplo, para declarar um array a ser usado como uma tabela 30x30, escrevemos:
Anotaes:
Note que os elementos de um array podem pertencer a qualquer tipo de dados pr-definido ou definido pelo usurio. Os elementos de um array podem ser at mesmo outro array, mas por enquanto ficamos por aqui.
Folha_Pgto = Record Nome: String; Data_Cont : TDateTime; Salario: currency; Folha_Abril: Folha_Pgto; Folha_Abril.Nome := Ana Paula Magalhes; Folha_Abril.Data_Cont := 10/02/1998; Folha_Abril.Salrio := 2200;
end;
Note que voc deve usar um ponto para separar o nome do Record do nome do campo a que voc est se referindo. O Object Pascal, e vrias linguagens modernas fornecem uma maneira mais fcil de executar esta operao, usando a instruo With: begin With Folha_Abril do begin Nome := Ana Paula Magalhes; Data_Cont := 10/02/1998; Salrio := 2200; end;
end;
Anotaes:
Anotaes: