1. Capítulo 1

5.0 - Introdução a Programação Pascal

               

                        Linguagem de alto nível e, com propósito geral, criado pelo professor NIKLAUS WIRTH da Universidade Técnica de Zuric, na Suíça, em 1971. O nome é uma homenagem ao famoso filósofo e matemático Francês do século XVII Blaise Pascal.

 

                        - Linguagem estruturada, confiável e possui portabilidade.

 

                        - Não é uma linguagem case sensitive !

 

                        - Linguagem compilada.

 

                        - Variáveis - Devem ser declaradas no início do programa.

 

                                    INTEGER        - 2488

                                    REAL              1.0

                                    CHAR              ‘Y’

                                    BOOLEAN      TRUE, FALSE

                                    TEXT

                                    STRING           “145”   - 255 Caracteres.

 

                        - Pascal Padrão - ISO (International Standard Organization)

 

                                    36        palavras reservadas

                                    5          tipos de dados

                                    20        funções

                                    15        procedimentos

5.1 - Palavras Reservadas

 

 

ABSOLUTE    

LABEL           

VAR

AND   

MOD   

WHILE

ARRAY          

NIL     

XOR

BEGIN            

NOT

 

CASE  

OF

 

CONST           

OR

 

DIV     

PACKED

 

DO

PROCEDURE

 

DOWNTO

PROGRAM

 

ELSE

RECORD

 

END    

REPEAT

 

EXTERNAL

SET

 

FILE    

SHI

 

FOR

SHR

 

FORWARD

THEN

 

FUNCTION

TO

 

GOTO 

TYPE

 

IF

UNTIL

 

IN

 

 

 

 

 

                                                                                               

               

 

5.2 - Estrutura do Programa

 

            Ex. 1.

                        program alo;

                        begin

                                    writeln(‘Alo ai !’);

                        end.

 

            Ex. 2.

 

                        program teu;

                       

                                    procedure jose

                                                begin

                                                end

 

                                    function jose1

                                    begin

                                    end

                        begin

                        .

                        .

                        end.

 

5.3 - Operadores

 

                                Aritméticos      -           + , - , * , / , Div (inteira), Mod (módulo)

 

                        Lógicos                        -           not, and, or

 

                        Relacionais      -           =, <>, >, < , >= , <=

 

                        Strings              -           +

 

5.3.1 - Output

 

                        Procedure Writeln : é a mais comum função de output do Pascal. Sua finalidade é escrever informações na tela. O formato geral é:

 

            Writeln(item, item, ....);

 

                        Item pode ser um valor literal, um caractere, uma string ou um valor booleano. Após a impressão o cursor se move para o início da próxima linha. Para manter o cursor após o último caractere impresso, use o comando

 

                Write(item, item, ....);

 

                        Pode-se também usar especificadores para definir o comprimento de um dado item:

 

            Writeln(item:width);

 

                                Onde width é uma expressão inteira.

 

            Ex.:

           

                        A:= 10; b:= 100;

                        Name := ‘FRANK’;

 

                        writeln(A,B);                            10100

 

                        Writeln(A,’  ‘,B);                     10 100

 

                        Writeln(A:4,B:4);                       10 100

 

                        Writeln(‘Hi’, Name);                HiFRANK

 

                        Writeln(‘Hi’,Name:6,A:3);       Hi, FRANK 10

 

5.3.2 - InPut

 

                        O Pascal Padrão tem duas funções,  Read e Readln, que lêem dados do teclado:

 

                Read (item , item, ....);

               

                Readln (item , item, ...);

 

                                Seu funcionamento é semelhante ao do Writeln.

 

5.4 - Constantes e Variáveis

 

5.4.1 - Constantes

 

                        Constantes são objetos cujos valores não variam durante a execução do programa. Elas podem ser qualquer tipo de dado. O tipo de uma constante é compreendido pelo formato de seu valor literal ou atribuído.

 

5.4.1.1 - Área de Declaração

 

                const

                        contagem_max            =25;

                        data                  =‘03/06/58’;

                        versao              =‘12.2’;

                        raio                  =1.22;

                        caractere_bip   = ^G;   

               

5.4.2 - Variáveis       

               

                        Variáveis são objetos nomeados cujos valores podem variar durante a execução do programa. O tipo de cada variável deve ser explicitamente declarado antes dela ser usada num programa. As variáveis no Pascal não são automaticamente inicializadas com um valor quando são declaradas e, portanto, uma variável é considerada indefinida até um valor ser explicitamente atribuído a ela. As declarações de variáveis possuem a forma:

           

            <declaração de variável> :=<identificador>{,<identificador>}:<tipo>;

 

5.4.2.1 - Área de Declaração

               

            var

                        ch        : char;

                        preco   : real;

                        indice1,indice2,contagem: integer;

                        nome   :string[30];

 

5.4.2.2 - Tipos de Variáveis

 

                        O Pascal Padrão fornece vários tipos de dados predefinidos ou padrões para variáveis e constantes:

                        INTEGER

                        REAL

                        CHARacter

                        BOOLEAN

                        TEXT

            Onde cada tipo pode representar uma abrangencia de valores e caracteres.

5.4.3 - Pontuação

 

                        Os programas em Pascal utilizam três tipos básicos de pontuação: a vírgula (,), o ponto e vírgula (;) e o ponto (.).

            A vírgula é utilizada para separar itens numa lista, como no português. Portanto, a declaração

 

                        var

                                    contador, indice, valor :integer;

definirá cada um dos três identificarores como variáveis do tipo integer.

 

                        O ponto e vírgula é um separador de comandos e não um finalizador de comandos. Este, talvez, seja um dos mais confusos conceitos para os novos programadores em Pascal.

                        Não existe ponto e vírgula separando begin e o primeiro comando, e o último comando e end num comando composto porque begin e end são delimitadores, e não comandos. O comando composto é considerado como um simples comando no Pascal, e assim um separador com o ponto e vírgula é utilizado normalmente após o delimitador end, a menos que o comando composto forme uma parte intermediária de outra estrutura.

 

                        O ponto é utilizado após o último comando end para indentificar o último comando no programa. Isto permite o compilador verificar que todos os delimitadores begin possuem um delimitador end respectivo.

 

5.4.4 - Expressões

 

                                Comandos e atribuições

                                   

                                    x = x + 1

 

                        Composta por variáveis , constantes e operadores.

 

 

            Ex.:

 

                        program vazio;

                        var

                                    soma, a, b : integer;

                        begin

                                    begin

                                                writeln(‘Programa soma de 2 numeros’);

                                                writeln;

                                                write(‘Entre com o primeiro numero - ‘);

                                                readln(a);

                                                writeln;

                                                write(‘Entre com o segundo numero - ‘);

                                                readln(b);

                                                writeln;

                                                soma:=a+b;

                                                writeln(‘A soma de a e b é - ‘ , soma);

                                    end

                        end.

5.4.5 - Exercícios

 

            1. Fazer um programa para ler três numeros do teclado e tirar a média aritmética deles.

 

            2. Escreva o resultado do programa abaixo :

 

                        Program teste;

                        Var

                                    X1,X2,X3,X4,X5,X6,X7,X8 : integer;

                        begin

                                    X1 := 1;

                                    X2 := 2;

                                    X3 := 3;

                                    X4 := 4;

                                    X5 := 5;

                                    X6 := 6;

                                    X7 := 7;

                                    X8 := 8;

                                    Writeln (X1:2, X2:2, X3:2, X4:2 , X5:2, X6:2, X7:2, X8:2);

                                    X1 := X8;

                                    X2 := X7;

                                    X3 := X6;

                                    X4 := X5;

                                    X5 := X4;

                                    X6 := X3;

                                    X7 := X2;

                                    X8 := X1;

                                    Writeln (X1:2, X2:2, X3:2, X4:2 , X5:2, X6:2, X7:2, X8:2);

                        end.

 

            3. Calcule as expressões abaixo e indique quais são invalidas. Justifique.

 

                        Dados X : integer e Y : real

 

                        A)        X := 4 /2;

           

                        B)        Y := 0;

                                    X := 2;

                                    Y := (X+1) << X;

                                    X := X * 7;

                                    Y := Y + X div 3 - X  mod 4;

 

                        C)        Y := 4;

                                    X := Y + 1

 

                        D)        X := 1;

                                    Y := (X -1) / (X >> 1);

5.5 - Estruturas de Controle

5.5.1 - Comando IF

 

                        Casos em que você quer executar uma parte do seu programa somente quando uma dada condição é verdadeira ou não.

 

                                IF condição THEN comando

 

 

                        IF condição THEN comando1

                        ELSE comando2;

 

                        if (a < b ) then

                                    a=b

                        else

                                    a=c

 

                        Se for necessário executar mais de um comando dentro do if então deve-se usar um comando composto. Um comando composto consiste da palavra chave begin, alguns comandos separados por ;, e a palavra chave end.

 

 

            Ex.:

                        If b = 0.0 then

                                    writeln(´Divisão por zero não é permitido´)

                        else

                                    begin

                                                ratio := a/b;

                                                writeln(´A razão é ´, ratio);

                                    end;

 

5.5.2 - Comando CASE

 

                                Este comando dá ao seu programa a possibilidade de escolher entre alternativas sem ter que especificar muitos if´s.

                        O comando case consiste de uma expressão ou condição e uma lista de comandos, cada um precedido por um case label (rótulo) do mesmo tipo da expressão ou condição.

 

                                CASE expressão OF

                                                constante1 : comando1;

                                                constante2 : comando n;

                                END;

 

                                Ex.:

                                    case soma of

                                                1: resultado:= a + b;

                                                2: resultado:= a - b;

                                                3: resultado:= a * b;

                                    else

                                                resultado:=0;

                                    end;

 

                        Ex.:

                                    case resposta of

                                                ´S´,´s´   : writeln(‘Opcao confirmada.´);

                                                ´N´,´n´ : writeln(‘Opcao cancelada.´)

                                    else

                                                writeln(´Opcao invalida.´);

                                    end;

 

5.5.3 - Comando WHILE (Laços/Loop)

 

                                Assim como há comandos que você os executa sob certas condições, há outros comandos que você pode querer executá-los repetidamente.

 

                                WHILE condição DO

                                                comando;

 

                                WHILE condição DO

                                                begin

                                                                comandos

                                                comandos

                                                end;

           

                        Ex.:

                                    program laco1;

                                    const

                                                limite=20;

                                    var

                                                k:integer;

                                    begin

                                                write(‘Entre com o valor inicial (menos o que’,limite,’)-’);

                                                readln(k);

                                                while(k<>limite) do

                                                            begin

                                                                        k:=k+2;

                                                                        writeln(k);

                                                            end;

                                                write;

                                    end.

 

 

 

5.5.4 - Comando REPEAT ... UNTIL

 

                                REPEAT

                                                comando(s);

                                UNTIL condição;

                                           

                        Ex.:

                                    repeat

                                                begin

                                                            k:=k+z;

                                                            writen(k);

                                                end;

                                    until(k=limite);

 

5.5.5 - Comando FOR

 

                        É o tipo de loop encontrado na maioria das linguagens de programação. Basicamente consiste de um conjuntos de comandos executados um número fixado de vezes, enquanto uma variável, conhecida como variável de índice, passa pelos valores da faixa especificada.

 

                                FOR var:=expressão1 TO expressão2 DO comando;

                       

                        FOR var:=expressão1 DOWNTO expressão2 DO comando;

 

                                Ex.1:

                                    program media3;

                                    var

                                                contagem, itens : integer;

                                                dado,soma,media : real;

 

                                    begin

                                                write(‘Entre com o numero de itens para a média - ‘);

                                                readln(itens);

                                                soma:=0.0;

                                                for contagem:=1 to itens do

                                                begin

                                                            write(‘Entre com o valor’,contagem,’- ‘);

                                                            readln(dado);

                                                            soma:=soma+dado;

                                                end;

                                                media:=soma / itens;

                                                write(‘Media=‘,media:8:2);

                                    end.

 

                        Ex.2:

                                    program eu;

                                    var

                                                i: integer;

                                    begin

                                                i:=1;

                                                for i:=1 to 100 do

                                                            writeln(i);

                                    end.

 

                        Ex.3: Usando while

 

                                    programa eu;

                                    var

                                                i:integer;

                                    begin

                                                i:=1;

                                                while(i<1000) do

                                                            begin

                                                                        writeln(i);

                                                                        i:=i+1;

                                                            end;

 

                       

                        Ex.4:

                                    programa saida;

                                    var

                                                a:integer;

                                                b:real;

                                                c:char;

                                                d:boolean;

                                                e:string[15];

                                    begin

                                                a := 45;

                                                b := 1.33;

                                                c ´:= ´x´

                                                d := false;

                                                e := ´Turbo Pascal´;

                                                writeln(a,b,c,d,e);

                                                writeln(a,´ ´,b,´ ´,c,´ ´,d,´ ´,e);

                                    end.

 


 

Lista de Procedure e Funções do Pascal

 

            CLREOL          - Apaga os caracteres desde a posição do cursor até o fim da linha.

            CLRSCR          - Limpa a tela.

            DELLINE        - Apaga uma linha.

            INSLINE          - Inseri uma linha vazia.

            GOTOXY (C,L)- Posiciona o cursor (Coluna, Linha).

            DELAY(num)  - Laço de atraso de tempo (Segundos).

            EXIT                - Sai do bloco corrente.

            HALT              - Força o retorno ao DOS.

           

            ABS(num)       - Valor absoluto - Argumento inteiro ou real.

            ARCTAN(num)           - Ângulo em radianos cuja tangente é num - inteiro ou real.

            COS(num)       - Co-seno do ângulo.

            EXP(num)        - Exponencial.

            FRAC(num)     - Parte fracinaria de num.

            INT(num)        - Parte inteira de num.

            LN(num)          - Logaritmo natural.

            SIN(num)         - Seno do ângulo.

            SQR(num)       - Quadrado de num.

            SQRT(num)     - Raiz quadrada de num.

           

            CHR(num)       - Retorna o valor da tabela ASCII.

            ROUND(num) - Arredondamento.

            TRUNC(num)  - Truncamento da expressão real -> inteiro

            RANDOM(num)          - Retorna um número randómico >= 0

           

            STR(valor)       - Converte o valor da expressão númerica para String.

            VAL(st)           - Converte st para um valor numerico que ela representa.

            CONCAT(st1,st2,..) - Retorna uma string que é o resultado da concatenação de todos os strings.

            LENGTH(st)    - Retorna o tamanho em caracteres da string st.

            POS(obj,alvo)  - Procura a primeira ocorrência do string obj. Retornando a posição do primeiro caracter se for detectado a coinncidência e zero, caso contrário.