Livro

Website: Moodle-UNESP
Kurs: Moodle 2.5. Ricardo Wurhmann Saad
Buch: Livro
Gedruckt von: Gast
Datum: Samstag, 18. Mai 2024, 07:41

Beschreibung

Livro com dois capítulos (cada capítulo com 1 sub-capítulos)

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.

 

1.1. Sub-Capítulo

5.5.6 - Exercicíos:

 

            1. Escrever um programa para ler uma string e imprimir o numero de caracteres ´a´ encontrados nela.

 

            2. Escrever um programa para ler duas strings e imprimir o numero de letras que existem nas duas strings.

 

            3. Faça um programa que leia numeros em ponto flutuante e imprima o seno do numero. Acaba quando o programa ler zero.

 

            4. Digite o programa abaixo

 

                        Program sai

                              var

                                    n , m  : integer;

                                    r         : real;

                               begin

                                     r := 1.23456789;

                                     n := 12;

                                     m := 0;

                                     writeln(m:2,’  ‘,r:n:m);

                                     m := 1;

                                     writeln(m:2,’  ‘,r:n:m);

                                     m := 2;

                                     writeln(m:2,’  ‘,r:n:m);

                                     m := 3;

                                     writeln(m:2,’  ‘,r:n:m);

                                     m := 4;

                                     writeln(m:2,’  ‘,r:n:m);

                                     m := 5;

                                     writeln(m:2,’  ‘,r:n:m);

                                     m := 6;

                                     writeln(m:2,’  ‘,r:n:m);

                                     m := 7;

                                     writeln(m:2,’  ‘,r:n:m);

                                     m := 8;

                                     writeln(m:2,’  ‘,r:n:m);

                                     m := 9;

                                     writeln(m:2,’  ‘,r:n:m);

                                     m := 10;

                                     writeln(m:2,’  ‘,r:n:m);

                                     m := 11;

                              end.

 

            5.  Em Pascal pode se ter erros de “Overflow” ou Underflow”, o programa abaixo ilustra este tipo de erro.

 

                        Program overflow;

                        var

                             res : integer;

                        Begin

                             res := 32767 + 1;

                             writeln(res);

                        end.

 

            6. Escreva um programa em Pascal para resolver a equação do 2 grau, obtendo os valores de x1 e x2, não esqueça que não se pode calcular raiz de numeros negativos. A função que calcular a raiz quadrada é sqrt().

 

            7. Digite o programa abaixo:

 

                        Program quadrado;

                        var

                             a : real;

                        begin

                                writeln(‘Programa do quadrado e da raiz          quadrada.’);

                                writeln();

                                write(‘Entre com o valor - ‘);

                                readln(a);

                                writeln;

                                writeln(‘Entrada                =  ‘,a:10:3);

                                writeln(‘Quadrado               = ‘,sqr(a):10:3);

                                writeln(‘Raiz quadrada          = ‘, sqrt(a):10:3);

                                writeln;

                                writeln(‘ - calculado - ‘);

                        end.

 

            8.  Escreva um programa em Pascal para calcular a média quilômetros/litros de um automóvel.

            Leia a quantidade de quilômetros rodados e com a quantidade de gasolina gasta em litros.

 

                  média = Km / litros

2. Capítulo 2

5.7 - Procedures e Funções

5.7.1 - Procedures

 

                        Procedures e Functions permitem incluir blocos adicionais no bloco do programa principal. Cada procedure ou function tem um cabeçalho seguido por um bloco. A qual faz parte do programa principal.

 

            Procedure inicia;

            begin

                        x := 10;

                        y := 2.5;

                        n := ´Sistema Inicializado´;

            end;

 

            Sua chamada no programa principal é feito da seguinte maneira

 

            Program Teste_procedimento;

            var

                        x : integer;

                        y : real;

                        n : string;

            Procedure inicia;

            begin

 

                        .....

            end;

 

            begin (programa principal )

                        writeln(´Chamada a rotina INICIA : ´);

                        inicia;

                        writeln(´Rotina INICIA terminada. ´);

            end.

           

 

            Ex.:

                        Program simples;

                        var

                                     x : integer;

                       

                        Procedure troca;

                        begin

                                    x :=1;

                        end;

                       

                        begin

                                    x :=0;

                                    troca;

                                    write(x);

                        end.

 

                        No programa anterior a variável x, foi definida como global, por este motivo posso alterar seu conteúdo dentro da procedure Troca.

            Considere agora:

 

                        Program simples;

                        var

                                    x : integer;

                        Procedure troca;

                        var

                                    x : integer;

                        begin

                                    x := 1;

                        end;

                       

                        begin

                                    x :=0;

                                    troca;

                                    write(x);

                        end.

 

                        Temos duas variáveis, ambas denominadas x. A primeira é uma variável global e a outra (definida na Procedure) é local à procedure. O comando de atribuição x:=1 atribui o valor 1 à variável local x. Portanto x:=1 não tem efeito sobre a variável global x que continua igual a zero.

                        Ao declarar sua variável local com o mesmo nome de uma variável global, inibe ao procedimento o acesso àquela variável global.

 

5.7.1.1 - Parâmetros de uma Procedure

               

                            Tanto uma Procedure como uma Function podem receber uma lista de parâmetros. Obeserve o programa abaixo.

 

            Program teste_var;

            var

                        x : integer;

                        y ; real;

            Procedure calcula;

            var

                        y : integer;

                        z : real;

            begin

                        y := 10;

                        z := 1.5;

                        x := trunc(x*y*z);

            end;

           

            begin

                        y := 2.5;

                        x := 4;

                        calcula;

                        writeln(x:10,y:10:4);

            end.

           

            Resposta:         60        2.5000

                       

            Neste exemplo a variável x utilizada pela rotina é global (Visível de qualquer bloco do programa). Podemos declarar a variável x como argumento da rotina:

 

            Procedure calcula(var x:integer);

 

                        Desta maneira criou-se uma nova variável local à procedure que será utilizada para fazer a passagem de um parâmetro do programa principal para a rotina. O programa principal ficaria assim.

 

            begin

                        y := 2.5;

                        x := 4;

                        calcula(x);

                        writeln(x:10,y:10:4);

            end.

 

            O nome da variável do parâmetro mão precisa ser o mesmo do programa principal.

 

5.7.1.2 - Passagem de Parâmetros

 

                Há dois tipos de passagem de parâmetros: por referência e por valor.

5.7.1.2.1 - Passagem por Valor

 

                É passada para a sub rotina somente o valor dos argumentos. A variável declara no cabeçalho da rotina é uma nova variável que recebe o valor do argumento. A alteração do valor desta variável não implica na alteração do argumento no bloco que chamou a rotina. Exemplo:

 

Ex.:         Program raizes;

                var

                                x : real;

                Procedure raiz(x:real);

                begin

                                x := sqrt(x);

                                writeln(‘A raiz e’’ :’,x);

                end;

                begin

                                write(‘Digite um numero :’);

                                readln(x);

                                raiz(x);

                                writeln(‘X = ‘, x);

                end.

                Resposta :             Digite um numero : 4

                                                A raiz é: 2

                                                X = 4

 

 

5.7.1.2.2 - Passagem por referência

 

                Neste caso a variável declarada no cabeçalho da rotina passa a ocupar a mesma posição de memória do argumento. Desta forma, qualquer alteração da variável dentro da rotina implicará na alteração do argumento.

               

                Procedure raiz(var x:real);

               

Ex.:         Program raizes;

                var

                                x : real;

                Procedure raiz(var x:real);

                begin

                                x := sqrt(x);

                                writeln(‘A raiz e’’ :’,x);

                end;

                begin

                                write(‘Digite um numero :’);

                                readln(x);

                                raiz(x);

                                writeln(‘X = ‘, x);

                end.

 

                Resposta :             Digite um numero : 4

                                                A raiz é: 2

                                                X = 2

 

5.7.1.3 - Variáveis Globais e Locais

 

                As variáveis globais são visíveis em qualquer bloco do programa ! São declaradas no programa principal.

 

                As variáveis locais podemos declarar interna a um bloco. Ela não é visível a blocos externos e só é alocada na chamada do bloco.

 

                Ex.:

                                Programa vari;

                                var

                                                x : integer;

                                                y : real;

 

                                procedure calculo;

                                var

                                                y : integer;

                                                z : real;

                                begin

                                                y :=10;

                                                z :=1.5;

                                                x := x*y*z;

                                end;

                               

                                begin

                                                y :=2.5;

                                                x :=4;

                                                calculo;

                                                writeln(x:10, y:10:4);

                                end.

 

5.7.1.4 - Exercícios Resolvidos

 

                1. Escreva um programa para calcular a média aritmética para n valores.

 

                                program serie1;

                                var

                                   n : integer;

                                   i : integer;

                                   a : integer;

                                   soma : real;

                                begin

                                   writeln('Programa para calcular a media arimética para n valores');

                                   writeln;

                                   writeln('Entre com o numero de valores');

                                   readln(n);

                                   i := 1;

                                   while (i <= n) do

                                      begin

                                         write('Elemento ',i,' = ');

                                         readln(a);

                                         soma := soma + a;

                                         i := i + 1;

                                      end;

                                   writeln;

                                   soma :=(soma / n);

                                   writeln('A media dos  ',n,'  elementos eh  ',soma:10:4);

                                   readln(a);

                                end.

 

                2. Escreva um programa para ler dois caracteres e verificar qual deles é o maior , menor ou igual.

 

                                program serie2;

                                var

                                   a : char;

                                   b : char;

                                   menor , igual , maior : boolean;

                                begin

                                   writeln('Programa para comparar caracteres');

                                   writeln;

                                   write('Entre com o primeiro caractere:  ');

                                   readln(a);

                                   write('Entre com o segundo caractere:   ');

                                   readln(b);

                                   writeln;

                               

                                   menor := a < b;

                                   igual := a= b;

                                   maior := a > b;

                                   writeln('O primeiro caractere e'' menor do que o segundo  - ',menor);

                                   writeln('O primeiro caractere e'' igual ao segundo        - ',igual);

                                   writeln('O primeiro caractere e'' maior do que o segundo  - ', maior);

                                   writeln(' -  executado -');

                                   readln(a);

                                end.

 

                3. Escreva um programa para ler dois caracteres e calcular o maior entre eles usando uma procedure.

 

                                program serie2a;

                                var

                                   a : char;

                                   b : char;

 

                                procedure compute;

                                var

                                   menor , igual , maior : boolean;

                               

                                begin

                                   menor := a < b;

                                   igual := a= b;

                                   maior := a > b;

                                   writeln('O primeiro caractere e'' menor do que o segundo  - ',menor);

                                   writeln('O primeiro caractere e'' igual ao segundo        - ',igual);

                                   writeln('O primeiro caractere e'' maior do que o segundo  - ', maior);

                                end;

 

                                begin

                                   writeln('Programa para comparar caracteres');

                                   writeln;

                                   write('Entre com o primeiro caractere:  ');

                                   readln(a);

                                   write('Entre com o segundo caractere:   ');

                                   readln(b);

                                   writeln;

                                   compute;

                                   writeln(' -  executado -');

                                   readln(a);

                                end.

 

                4. Escreva um programa para calcular a equação .

 

                                {*** o programa calcula a equacao f(x) = Somatoria Y * x2 - srq(x) ****}

                                program serie3;

                                var

                                   x : real;

                                   y : real;

                                   somay : integer;

                                   func : real;

                                   a : integer;

                               

                                begin

                                   writeln('Programa para resolver equacao');

                                   writeln;

                                   x:=100;

                                   while (x <= 150) do

                                      begin

                                         y := 100;

                                         while (y <= 200) do

                                            begin

                                               somay := somay + 1;

                                               y := y + 0.5;

                                            end;

                                         func := (somay * (x*x) - sqr(x));

                                         writeln('Para x = ',x,'  f(x) = ',func);

                                         x := x + 0.3;

                                       end;

 

                                   writeln(' -  executado -');

                                   readln(a);

                                end.

 

                5. Escreva um programa para calcular o fatorial de um numero.

 

                                {*** o programa calcula o fatorial de um numero ****}

                                program serie4;

                                var

                                   num : integer;

                                   i       : integer;

                                   res   : integer;

                                   a      : integer;

                                   t      : boolean;

               

                                begin

                                   t:= true;

                                   while (t) do

                                     begin

                                        writeln('Programa para calcular o fatorial');

                                        writeln;

                                        res:=1;

                                        i:=1;

                                        write('Entre com o numero ');

                                        readln(num);

                                        while(i <= num) do

                                           begin

                                              res := res * i;

                                              i := i + 1;

                                           end;

                                        writeln('O fatorial de ',num,' eh = ',res);

                                        writeln(' -  executado -');

                                     end;

                                end.

 

                6. Escreva um programa para resolver a equação do segundo grau.

 

                                {*** o programa calcula a equacao do 2 grau ****}

                                program serie5;

                                var

                                   a : integer;

                                   b : integer;

                                   c : integer;

                                   x1: real;

                                   x2: real;

                                   d : integer;

 

                                begin

                                   writeln('Programa para resolver a equacao do 2 grau');

                                   writeln;

                                   write('Entre com o valor de a ');

                                   readln(a);

                                   write('Entre com o valor de b ');

                                   readln(b);

                                   write('Entre com o valor de c ');

                                   readln(c);

                                   writeln;

                                   d := ((sqr(b)-(4*a*c));

                                   if(d >= 0) then

                                     begin

                                         x1:=((-b+(sqrt(d))/(2*a)));

                                         writeln('Valor de x1 = ',x1:5:2);

                                         x2:=((-b-(sqrt(d))/(2*a)));

                                         writeln('Valor de x2 = ',x2:5:2);

                                     end

                                   else

                                       writeln('Impossivel calcular raiz quadrada de numero negativo !');

                                   writeln(' -  executado -');

                                   readln(a);

                                end.

                               

                7 -  Escreva um programa para converte centimetros em metros .

               

                                {*** o programa converte centimetros em metros ****}

                                program serie6;

                                var

                                   a : real;

                                   metros : real;

                                begin

                                   writeln('Programa para converter centímetro em metro');

                                   writeln;

                                   write('Entre com o valor em centimetros ');

                                   readln(a);

                                   metros := (a / 100);

                                   writeln(a:5:2,' centimetros eh = ',metros:5:2,' metros');

                                   writeln(' -  executado -');

                                   readln(a);

                                end.

5.7.2 - Functions

               

                É um tipo especial de procedimento que calcula um valor.       

                Como as Procedures as Funções em Pascal são programas completos que atuam guando seus nomes são referenciados no texto dos programas. Existem muitos deles que já vêm pré-programadas, como READ, WRITE. Mas é possivel também ao programador fazer os seus próprios programas.

                Toda função resulta num único valor de resposta !

                Possui um nome e zero ou mais argumentos, que são colocados entre parênteses.

 

                Ex.

                Program Fcubo;

                var

                                num :integer;

                function cubo(x:integer):integer;

                begin

                                cubo:= x*x*x;

                end;

                begin

                                readln(num);

                                writeln(‘O cubo de ‘,num,’eh’,cubo(num));

                end.

 

                O importante nas funções, é que elas sempre retornam um valor, o que significa que as funções devem ter um tipo: Assim, podemos ler a declaração acima da seguinte maneira: A função cubo tem um parâmetro x que é do tipo inteiro e que dá resultado do tipo inteiro.

2.1. Sub-Capítulo 2

5.8.1.1.1 - Algoritmo de Busca Linear

 

                Este algoritmo faz uma busca no vetor procurando todas as ocorrências do elemento desejado, portanto este algoritmo permite elementos duplicados no vetor. O algoritmo mostra a posição onde o elementos foi encontrado dentro do vetor. Á variável C é um contador, para verificar se foi encontrada alguma ocorrência.

 

 

5.8.1.1.1.1 - Estrutura do Algoritmo

 

                                writeln('Entre com o elemento a ser encontrado no vetor !');

                        readln(e);

                        i := 1;

                        while (i <= n) do

                        begin

                            if(mat[i] = e) then

                               begin

                                  writeln('Elemento ',e,' encontrado na posicao ',i);

                                  c := c + 1;

                              end;

                              i :=i +1;

                        end;

 

5.8.1.1.1.2 - Programa Completo

 

                (** Programa para testar o algoritmo de Busca Linear **

            ** Para n ocorrencias de um elemeto desejado ***

            ** Autor: Ricardo W. Saad **

            ** Data : 10/03/97        **

            ** Para um vetor de 30 elementos **)

 

            program Busc_lin;

            var

               mat:array[1..30] OF INTEGER;

               n:integer;

               i:integer;

               e:integer;

               c:integer;

           

            begin

               n :=0;

               i :=0;

               c :=0;

               e :=0;

               writeln('Entre com a quantidade de elementos do vetor no maximo 30');

               readln(n);

               while (i <= n) do

               begin

                   mat[i] := 0;

                   i := i + 1;

               end;

               writeln('Entre com os elementos do vetor');

               for i:= 1 to n  do

                   readln(mat[i]);

               writeln('Elementos lidos ');

               writeln;

               for i:= 1 to n do

                   write(mat[i],' ');

               writeln;

               writeln('Entre com o elemento a ser encontrado no vetor !');

               readln(e);

               i := 1;

               while (i <= n) do

               begin

                   if(mat[i] = e) then

                     begin

                         writeln('Elemento ',e,' encontrado na posicao ',i);

                         c := c + 1;

                     end;

                     i :=i +1;

               end;

               if(c=0) then

                  begin

                     writeln('Elemento ',e,'nao encontrado');

                  end

               else

                  begin

                     writeln('Elemento ',e,' econtrado ',c,' vezes');

                  end;

            end.

 

 

 

 

 

 

 

 

5.8.1.1.1.3 - Teste de Mesa

 

                                                                                                mat

44

55

12

42

94

18

06

67

                                        1         2              3             4              5              6            7     8    

               

E

I

N

C

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

5.8.1.1.2 - Algoritmo de Busca Binária

               

                O algoritmo de Busca Binária requer que os elementos do vetor estejam ordenados de forma crescente e não permite a existencia de elementos duplicados no vetor. Este algoritmo trabalha com posições fornecidas pelo usuário, na tentativa de localizar o elemento desejado , o algoritmo verifica se o elemento procurado é menor ou maiior que o elemento que se encontra na posição sugerida pelo usuário , desprezando os elementos do vetor que se encontrem abaixo ou acima da posição sugerida.

 

5.8.1.1.2.1 - Estrutura do Algoritmo

 

                   writeln('Entre com o elemento a ser encontrado no vetor !');

               readln(e);

               i := 1;

               r := n;

               found := 1;

           

               while (i <= n) and (found = 1) do

               begin

                   writeln;

                   writeln('Entre com uma posicao entre ',i,' e ',r);

                   readln(pos);

                   if (pos < i ) or (pos > r) then

                      found := 1

                   else

                      begin

                          if(mat[pos] = e) or (i = r) then

                             begin

                                writeln;

                                writeln('Elemento ',e,' encontrado na posicao ',pos);

                                found:=0;

                             end

                         else

                            begin

                                if mat[pos] < e then

                                     i :=pos + 1

                                else

                                     r := pos - 1

                            end

                      end;

               end;

            end

 

5.8.1.1.2.2 - Programa Completo

 

                (** Programa para testar o algoritmo de Busca Binaria **

            ** Para 1 ocorrencias de um elemeto desejado ***

            ** Requer que o vetor esteja ordenado e sem elementos duplicados **

            ** Autor: Ricardo W. Saad **

            ** Data : 10/03/97        **

            ** Para um vetor de 30 elementos **)

 

            program Busc_bin;

            uses Crt;

            var

               mat:array[1..30] OF INTEGER;

               n:integer;

               i:integer;

              e:integer;

              c:integer;

              j:integer;

              temp:integer;

              r:integer;

              found:integer;

              pos:integer;

           

            begin

              n :=0;

              i :=0;

              c :=0;

              e :=0;

              clrscr;

               writeln('Entre com a quantidade de elementos do vetor no maximo 30');

               readln(n);

               while (i <= n) do

               begin

                   mat[i] := 0;

                   i := i + 1;

               end;

               writeln('Entre com os elementos do vetor');

               for i:= 1 to n  do

               begin

                   readln(mat[i]);

                   for j:= 1 to i do

                   begin

                       if (mat[i] = mat[j]) and (i <> j) then

                       begin

                                      writeln;

                           writeln('Elemento duplicado ! Digite outro valor');

                           i := i - 1;

                       end;

                   end;

               end;

               (** Ordenacao do vetor **)

           

               for i := 1 to n do

               begin

                   for j:= n downto i do

                   begin

                       if(mat[i] > mat[j]) then

                       begin

                           temp := mat[i];

                           mat[i] := mat[j];

                           mat[j] := temp;

                       end;

                   end;

               end;

               writeln('Elementos lidos e ordenados');

               writeln;

               for i:= 1 to n do

                   write(mat[i],' ');

               writeln;

               writeln('Entre com o elemento a ser encontrado no vetor !');

               readln(e);

               i := 1;

               r := n;

               found := 1;

           

               while (i <= n) and (found = 1) do

               begin

                   writeln;

                   writeln('Entre com uma posicao entre ',i,' e ',r);

                   readln(pos);

                   if (pos < i ) or (pos > r) then

                      found := 1

                   else

                      begin

                          if(mat[pos] = e) or (i = r) then

                             begin

                                writeln;

                                writeln('Elemento ',e,' encontrado na posicao ',pos);

                                found:=0;

                             end

                         else

                            begin

                                if mat[pos] < e then

                                     i :=pos + 1

                                else

                                     r := pos - 1

                            end

                      end;

               end;

            end.