• Nenhum resultado encontrado

LINGUAGEM PASCAL Elementos básicos e estrutura

N/A
N/A
Protected

Academic year: 2021

Share "LINGUAGEM PASCAL Elementos básicos e estrutura"

Copied!
48
0
0

Texto

(1)

LINGUAGEM PASCAL

Elementos básicos e estrutura

Adriano Mauro Cansian

UNESP - São José do Rio Preto

______________________________

Linguagem Computacional

Linguagem Pascal

•  Criada para ser uma ferramenta educacional,

isto no início da década de 70 pelo

Prof.

Niklaus Wirth

da Universidade de Zurique.

•  Batizada em homenagem ao grande

matemático Blaise Pascal.

–  Pascal inventou uma das primeiras máquinas

(2)

Pascal

Elementos básicos

Conceito: Identificadores (1)

•  Identificadores: São NOMES escolhidos

para representar

constantes

,

variáveis

,

tipos

,

funções

,

procedimentos

, programas, etc...

•  Para definirmos um identificador,

(3)

Adriano Mauro Cansian 5

Identificadores (2)

•  Identificadores: podem ter qualquer

comprimento, mas apenas os sessenta e três

primeiros caracteres são significativos;

  deve ter como primeiro caractere uma letra; •  após a primeira letra só pode conter letras, dígitos ou

sublinha ( _ );

•  não pode conter espaços em branco;

•  letras maiúsculas e minúsculas são indiferentes; •  não podem haver identificadores repetidos;

•  não pode ser uma “palavra reservada” (visto mais adiante)

Identificadores (3)

•  Exemplos de identificadores válidos:

Meu_Nome MEU_NOME __Linha Exemplo23

•  Exemplos de identificadores

inválidos

:

2teste : começa com número Exemplo 23 : tem um espaço

(4)

Adriano Mauro Cansian 7

Palavras reservadas

ABSOLUTE END INLINE PROCEDURE TYPE AND EXTERNAL INTERFACE PROGRAM UNIT ARRAY FILE INTERRUPT RECORD UNTIL BEGIN FOR LABEL REPEAT USES

CASE FORWARD MOD SET VAR

CONST FUNCTION NIL SHL WHILE DIV GOTO NOT SHR WITH

DO IF OF STRING XOR

DOWNTO IMPLEMENTATION OR THEN

ELSE IN PACKED TO

•  São palavras que têm um significado pré-determinado na

linguagem, e não podem ser usadas como identificadores.

Tipos de dados

Como as variáveis são definidas para

carregarem valores

(5)

Adriano Mauro Cansian 9

Declaração de variável

•  Variáveis que forem utilizadas no corpo do

programa, devem ser

declaradas

numa subárea

específica chamada “Var ”.

– “Declarar” uma variável significa definir qual tipo de dado ela vai carregar.

•  Vejamos os

tipos de dados

(ou tipo de variáveis)

existentes em Pascal.

Tipos de dados

•  Simples:

– Números: inteiros e reais – Caracteres únicos: char – Valores lógicos: boolean

•  Estruturados:

– Cadeias de caracteres: Strings (cadeias de texto).

(6)

Adriano Mauro Cansian 11

Tipos de dados: números (1)

•  No Pascal, podemos trabalhar com números

inteiros e reais.

•  A

precisão

da variável depende do tipo de

dado associado a ela.

•  A precisão significa quantos algarismos

significativos a variável é capaz de

carregar.

(7)

Adriano Mauro Cansian 13

Números Reais

Um único caractere:

char

•  CHAR: representa um único caractere,

escrito entre apóstrofos ( ‘ ‘ ).

•  Exemplos:

(8)

Adriano Mauro Cansian 15

Cadeia de caracteres:

string

•  É tipo de dado estruturado.

  Existem outros.

•  STRING: uma cadeia caracteres.

–  O mesmo que vários CHAR encadeados.

•  No Pascal: tamanho máximo é de 255 caracteres. •  Exemplos:

’Adriano Mauro’ à sempre representado entre aspas simples.

’Curso de Química’ ’Janeiro, 2015’

Tipo de dados:

boolean

•  Representa um valor lógico.

•  Utiliza apenas duas constantes lógicas:

–  TRUE.

(9)

Expressões aritméticas

Expressões aritméticas

Operador Operação Operandos Resultado + Adição Inteiro, Real Inteiro, Real - Subtração Inteiro, Real Inteiro, Real * Multiplicação Inteiro, Real Inteiro, Real / Divisão Real Inteiro, Real Real DIV Divisão Inteira Inteiro Inteiro MOD Resto da Divisão Inteiro Inteiro Os operadores aritméticos representam as operações mais comuns da matemática. São eles:

(10)

Adriano Mauro Cansian 19

Prioridade

Em uma expressão aritmética, a ordem de avaliação dos operadores obde-ce a tabela abaixo:

Prioridade Operadores

* / DIV MOD

+ -

OBSERVAÇÕES:

a) Quando existe em uma expressão operadores com a mesma prioridade, a execução é da esquerda para direita.

b) Caso seja necessário alterar a ordem de prioridade, deve-se utilizar pa-rênteses. A e xpressão entre parênteses terá prioridade máxima. Caso haja parênteses aninhados, a ordem de execução será do mais interno para o mais externo.

EXEMPLOS:

2 + 3 / 2 = 2 + 1.5 = 3.5 (2 + 3) / 2 = 5 / 2 = 2.5

Funções e procedimentos numéricos pré-definidos

Função Finalidade Tipo do argumento

Tipo do resultado

ABS(X) Valor Absoluto Inteiro, Real o mesmo do argumento FRAC(X) Parte Fracionária Real Real TRUNC(X) Parte Inteira Real Inteiro ROUND(X) Valor

Arredondado Real Inteiro SQR(X) Eleva ao

quadrado

Inteiro, Real o mesmo do argumento SQRT(X) Raiz quadrada Inteiro, Real Real

LN(X) Logaritmo Natural Real Real EXP(X) Exponencial Real Real

São comandos já prontos para o cálculo das funções matemáticas mais comuns.

(11)

Adriano Mauro Cansian 21

Observação: potenciação

Como não existe em Pascal um operador nem uma função específica para a operação de Potenciação, podemos consegui-la utilizando as funções LN(X) e EXP(X).

Para calcular o valor de XN é suficiente usar:

EXP(LN(X)*N)

Exemplos de funções pré-definidas

Expressão Resultado ABS(-2.5) 2.5 ABS(8) 8 FRAC(5.234) 0.234 TRUNC(2.78) 2 ROUND(2.78) 3 SQR(2) 4 SQR(1.5) 2.25 SQRT(4) 2.0 SQRT(2.25) 1.5 EXP(LN(2)*3) 8

(12)

Adriano Mauro Cansian 23

Expressões lógicas

•  As operações lógicas podem ser

consideradas afirmações que serão

testadas pelo computador, tendo como

resultado, um valor verdadeiro ou

falso.

•  São utilizadas com os operadores

relacionais

e

lógicos

.

Operadores relacionais

•  São usados na comparação de duas

expressões de qualquer tipo,

retornando um valor lógico (TRUE ou

FALSE) como

resultado da operação.

Operador Operação = igual > maior < menor >= maior ou igual <= menor ou igual <> diferente

(13)

Adriano Mauro Cansian 25

Exemplos de operações relacionais

•  Observação: as operações lógicas só podem

ser efetuadas com relação a valores do

mesmo tipo.

Expressão Resultado

1 = 2 FALSE 'A' = 'a' FALSE 5 > 2 TRUE 3 <= 3 TRUE TRUE < FALSE FALSE 'JOAO' > 'JOSE' FALSE 2 + 3 <> 5 FALSE 'comp' <> 'COMP' TRUE

'11' < '4' TRUE

Operações lógicas

•  São usados para testar expressões

lógicas.

Operador Operação not não (negação) and e (conjunção) or ou (disjunção)

(14)

Adriano Mauro Cansian 27

Exemplos de operações lógicas

A B A and B A or B not A not B

TRUE TRUE TRUE TRUE FALSE FALSE TRUE FALSE FALSE TRUE FALSE TRUE FALSE TRUE FALSE TRUE TRUE FALSE FALSE FALSE FALSE FALSE TRUE TRUE

•  A tabela verdade (abaixo) apresenta o resultado de cada operador lógico, com os valores dados para as expressões lógicas A e B:

Prioridade das operações lógicas e relacionais

•  Em uma expressão lógica e relacional, a ordem de avaliação dos operadores segue a tabela abaixo:

Prioridade Operadores

1ª NOT

2ª AND

3ª OR

4ª = > < >= <= <>

•  Como a ordem de precedência dos operadores lógicos é maior que a dos operadores relacionais, devem sempre ser usados parênteses quando se escrever uma expressão lógica complexa.

(15)

Programação

Pascal

Programando em Pascal (1)

•  Pascal é uma linguagem altamente

estruturada

que possui uma

rigidez definida

:

Cada seção ou parte de um programa em

Pascal deve aparecer numa sequência

apropriada.

– Deve ser sistematicamente correta.

(16)

Adriano Mauro Cansian 31

Programando em Pascal (3)

•  Um programa escrito em Pascal tem o

seguinte formato:

PROGRAM <nome_identificador>;

<bloco_do_programa>.

Bloco do programa

•  O <bloco_do_programa>, por sua vez,

está dividido em seis áreas possíveis,

onde somente

a última é obrigatória

e

devem uma sequência determinada a

seguir.

(17)

Adriano Mauro Cansian 33

Áreas de um programa

•  As áreas possíveis são, na sequência:

Área de declaração de uso de unidades.

Área de declaração de constantes.

Área de declaração de tipos.

Área de declaração de variáveis.

Área de declaração de procedimentos e

funções.

  Área de comandos

(

obrigatória

).

Declaração de variáveis (1)

•  Serve para associarmos tipos de

dados que as

variáveis vão carregar

.

•  Possui o seguinte formato:

VAR

<nomes-de-identificadores> : <tipo>; ...

(18)

Adriano Mauro Cansian 35

Declaração de variáveis (3)

•  EXEMPLO:

VAR

X,Y,Z

: REAL;

I,J : INTEGER; ACHOU : BOOLEAN; LETRA : CHAR;

PALAVRA,FRASE : STRING;

Área de comandos

•  Area onde é inserido o algoritmo do

programa.

– Os comandos são separados entre si pelo delimitador ponto-e-vírgula.

•  A forma geral é:

BEGIN <comando> ; ... ; <comando> END.

(19)

Adriano Mauro Cansian 37

Comentários

•  Um comentário é usado para aumentar a

clareza de um programa, embora não seja

analisado pelo computador.

•  Deve ser escrito entre chaves:

{Isto é um comentário}

{O programa não interpreta}

{o que está entre chaves}

EXEMPLO:

Program REAJUSTE_SALARIO;

{Finalidade: Calc. o reajuste de um salario em 20%}

Uses Crt; Const

IND = 0.20; {indice do reajuste} Var

SAL_ATUAL, {salario atual} SAL_NOVO, {novo salario} AUMENTO : Real; {valor do aumento} Begin

clrscr; {limpa a tela}

{leitura do salario atual} write('Digite o salario atual: ');

readln(SAL_ATUAL);

{calculo do reajuste} AUMENTO := SAL_ATUAL * IND;

(20)

COMANDOS BÁSICOS DA

LINGUAGEM PASCAL

Atribuição

•  O comando de atribuição tem a forma:

<identificador> := <expressão>

•  No comando de atribuição, a variável e a expressão devem ser do mesmo tipo, exceto nos seguintes casos:

– variável sendo real, a expressão pode ser integer

(21)

Adriano Mauro Cansian 41

Entrada / Input (1)

•  Um comando de entrada serve para

que o programa

solicite dados

num

determinado momento.

Esses dados fornecidos serão

armazenados em variáveis na memória.

Entrada / Input (2)

•  Considerando a unidade de entrada padrão,

o teclado, o comando seria:

READ(<identificador-1>,…,<identificador-n>);

ou

(22)

Adriano Mauro Cansian 43

Entrada / Input (3)

•  Com

READ

o cursor

permanece na mesma

linha

após a execução do comando

•  Com o

READLN

o

cursor muda para a

próxima linha

.

•  Em geral, um comando READ é precedido de

uma operação de escrita, fornecendo uma

orientação do que o usuário deve fazer.

– Veremos operações de saída em seguida.

Exemplo de leitura: (1)

•  Se o programa deve solicitar as três notas de um aluno, teríamos:

readln(NOTA1,NOTA2,NOTA3);

•  Ação: No momento da execução do comando acima, o

programa mostra a tela do usuário, e o cursor aparece esperando a digitação dos três valores, que devem ser separada por, pelo menos, um espaço em branco.

(23)

Adriano Mauro Cansian 45

Exemplo de leitura: (2)

O valor 3.5 será armazenado na variável NOTA1, o valor 7.0 em NOTA2,

e o valor 8.2 em NOTA3.

Saída (1)

•  Um comando de

saída

serve para que

o programa mostre informações ao

usuário.

As informações podem ser quaisquer

(24)

Adriano Mauro Cansian 47

Saída (2)

•  Considerando a unidade de saída padrão, o

monitor de vídeo, o comando é:

WRITE(<expressão1>,...,<expressão-n>);

.

ou

...

WRITELN(<expressão1>,...,<expressão-n>);

Saída (3)

•  Com

WRITE

o cursor permanece na

mesma linha após a execução do

comando.

•  Com

WRITELN

o

cursor muda para a

(25)

Exemplo

Com o seguinte trecho de código:

Write(‘Digite o salário R$’);

Read(salario);

Você verá na tela:

Digite o salário R$_

Adriano Mauro Cansian 49

Cursor ou “prompt” aguardando a entrada de dados

Exemplo

Com o seguinte trecho de código:

Writeln

(‘Digite o salário R$’);

Read(salario);

Você verá na tela:

(26)

Adriano Mauro Cansian 51

EXEMPLO: A:=1; B:=2;

writeln ('Soma de ',A,' e ',B,' = ',A+B);

No caso de variáveis do tipo REAL os valores são mostrados na notação exponencial, num campo de 16 posições, a menos que uma formatação seja especificada.

EXEMPLO:

MEDIA := (8.0 + 2.0) / 2 ;

writeln (MEDIA); {saída !→ 5.0000000000E+00} writeln (MEDIA:5:2); {saída !→ 5.00}

Na formatação, se a variável for real especificamos o total de posições ocupadas e a quantida-de quantida-de casas quantida-decimais .

Se inteira, só o total de posições.

Saída (4)

Entrada e saída combinados

No instante da solicitação de dados, podemos usar junto com o READ ou READLN um comando de saída com a finalidade de emitir mensagens que orientem o usuário na digitação dos dados.

EXEMPLOS: writeln('Digite o Nome:'); readln(NOME); writeln('Digite as 3 Notas:'); readln(NOTA1,NOTA2,NOTA3);

writeln('Digite o salário do funcionário:'); readln(SALARIO);

(27)

Estruturas de decisão

(Estruturas Condicionais)

O que faz uma estrutura de decisão (2)

•  No Pascal, existe três tipos de estrutura

de decisão:

O comando

IF

, que pode ser utilizado de

duas formas:

simples

ou

composto

;

E o comando

CASE

, que é utilizado para

(28)

Adriano Mauro Cansian 55

Decisão simples if - then (1)

•  A estrutura de decisão simples do Pascal é o if-then, e deve ser utilizada da seguinte forma:

IF <condição> THEN <comando>

•  O <comando> só será executado se a <condição> resultar no valor TRUE.

Decisão simples if - then (2)

•  O <

comando

> pode ser um comando simples

ou um conjunto de comandos, chamado de

comando composto

”.

– Um comando composto é formado por dois ou mais comandos, separados por ponto-e-vírgula e delimitados por “BEGIN” e “END;”

(29)

Adriano Mauro Cansian 57

Exemplo de decisão simples

EXEMPLO:

Program EXEMPLO_DE_DECISAO_SIMPLES;

{Ler um número inteiro, subtrair 10 e exibí-lo se for positivo} Var

N : integer; Begin

Writeln(‘Entre com valor de N:`); readln(N);

N := N – 10 ; if N > 0 then

begin { inicia se N>0 for verdade }

writeln(`O valor resultante de N-10 é positivo`); writeln(`N é igual a:`, N);

end; { fim do begin do “then” } Writeln(‘O programa terminou`);

End. { fim do programa }

Decisão composta if-then-else (1)

•  A estrutura de decisão composta do Pascal é o

IF-then-ELSE (se-então-senão) é executada com a

seguinte sintaxe:

IF <condição> THEN <comando1>

(30)

Adriano Mauro Cansian 59

Decisão composta if-then-else (1)

IF <condição> THEN <comando1> ELSE <comando2>

•  Neste caso, se a <condição> resultar no valor TRUE, será executado o <comando1> e, caso contrário, será executado o <comando2>.

–  <comando1> e <comando2> devem ser um comando simples ou um comando composto.

EXEMPLO:

Program EXEMPLO_DE_DECISAO_SIMPLES;

{Ler um número inteiro, subtrair 10 e determinar } {se o resultado é maior que zero ou não }

Var

N : integer; Begin

Writeln(‘Entre com valor de N:`); readln(N);

N := N – 10 ; IF N > 0 THEN

begin { inicia se N>0 for verdade }

writeln(`O resultado de N-10 é maior que zero`); writeln(`O resultado é igual a:`, N);

end { fim do begin do “then” }

{ note que NÃO há o ponto-e-virgula }

ELSE

begin

writeln(`O resultado de N-10 não é maior que zero`); writeln(`O resultado é igual a:`, N);

end; { fim do begin do “else” } { note que há o ponto-e-virgula }

Writeln(‘O programa terminou. Adeus`);

(31)

Adriano Mauro Cansian 61

Program Exemplo_3; Var x,y,z : Integer; Begin ClrScr; Write('Primeiro numero --> '); Readln(x); Write('Segundo numero ---> '); Readln(y); Write('Terceiro numero --> '); Readln(z); Writeln; Writeln; IF (x>=y)THEN If (x>=z) Then IF (y>=z) THEN Writeln(x,' ',y,' ',z) ELSE Writeln(x,' ',z,' ',y) Else Writeln(z,' ',x,' ',y) ELSE If (y>=z) Then If (x>=z) Then Writeln(y,' ',x,' ',z) Else Writeln(y,' ',z,' ',x) Else Writeln(z,' ',y,' ',x); End.

(32)

Adriano Mauro Cansian 63

readkey

•  Lê uma tecla do teclado, sem que seja necessário

pressionar a tecla ENTER

Program Exemplo; Uses CRT;

Var tecla:char; Begin

Write('digite uma tecla ->'); Tecla:=readkey;

Writeln;

writeln('você digitou ',tecla); end.

Keypressed (1)

•  A instrução Keypressed é uma função

especial do Turbo Pascal que retorna um

valor booleano:

  TRUE se uma tecla foi pressionada, ou FALSE

caso contrário (caso nenhuma tecla seja pressionada).

•  Ela é uma das maneiras utilizada para

detectar teclas pressionadas no teclado.

(33)

Adriano Mauro Cansian 65

Keypressed (2)

Exemplo Program Exemplo; Uses CRT; Begin ClrScr;

Write('Pressione uma tecla -> '); Repeat until Keypressed;

(* repita até que uma tecla seja pressionada*) End.

Seleção ou decisão múltipla (1)

•  Estrutura

Case-of

•  Utilizada quando se deseja executar um

entre vários comandos,

dependendo do

resultado de uma expressão

.

Ou uma entre várias seqüências de

(34)

Adriano Mauro Cansian 67

Seleção ou decisão múltipla (2)

•  A estrutura de seleção de decisão múltipla do

Pascal (CASE-OF) obedece a seguinte

sintaxe:

CASE <expressão> OF

<lista-de-constantes-1> : <comando-1>; <lista-de-constantes-2> : <comando-2>; ...

[ELSE <comando-n>] (* optativo *) END

Seleção ou decisão múltipla (3)

•  A <expressão> deve resultar um tipo escalar (outros tipos que

não sejam o REAL e o STRING).

•  A <lista-de-constantes-x> deve conter uma ou mais constantes (separadas por vírgula), e devem ser do mesmo tipo da <expressão>.

•  O <comando-x> pode ser um comando simples ou composto. •  O resultado de <expressão> é comparado com cada constante

da <lista-de-constante> para verificar igualdade.

•  Caso a igualdade seja verificada, o <comando> correspondente é executado e a estrutura finalizada.

•  Caso nenhuma igualdade seja verificada, o <comando> correspondente ao ELSE (optativo) será executado.

(35)

Adriano Mauro Cansian 69

EXEMPLO:

Program EXEMPLO_DE_DECISAO_MULTIPLA;

{Simulador de uma calculadora básica de números inteiros} Uses CRT; Var X,Y : integer; OP : char; Begin clrscr; write('Digite os operandos X e Y: '); readln(X,Y); write('Digite o operador (+,-,*, /) -->: '); readln(OP); case OP of '+' : writeln(‘Soma: ’, X + Y:6:2); '-' : writeln(‘Subtração: ’, X-Y:6:2); '*','x','X' : writeln(‘Multiplica: ‘, X * Y:6:2); '/' : writeln(‘ Divisão:’, X / Y:6:2);

else writeln(OP,'é uma operação inválida !');

end {case}; readkey;

End.

Seleção ou decisão múltipla (4)

•  Neste exemplo anterior, a mensagem que será exibida dependerá do conteúdo da variável OP.

–  Se for igual a uma das constantes especificadas, será executado o comando WRITELN correspondente. –  Se nenhuma constante for igual ao conteúdo de OP,

será executado o WRITELN do ELSE.

•  O mesmo programa acima pode ser escrito sem utilizar a estrutura CASE, apenas utilizando IF's aninhados.

(36)

Adriano Mauro Cansian 71 Uses CRT; Var X,Y : integer; OP : char; Begin clrscr; write('Digite os operandos: '); readln(X,Y); write('Digite o operador: '); readln(OP); if OP='+' then writeln(X + Y) else if OP='-' then writeln(X - Y) else

if (OP='*') or (OP='x') or (OP='X') then writeln(X * Y) else if OP='/' then writeln(X div Y) else writeln('op.inválida'); readkey; End.

Estruturas de repetição no

Pascal

(37)

Adriano Mauro Cansian 73

Estruturas de repetição no Pascal (1)

•  Além de permitir a mudança da

seqüência de execução de um conjunto

de comandos de um programa, as

estruturas de controle de uma

linguagem, dispõem de recursos para

repetir a execução de um conjunto de

comandos.

Estruturas de repetição no Pascal (2)

•  No Pascal, existem três tipos de

estrutura de repetição:

Com teste no início (

WHILE

);

Com teste no final (

REPEAT

) e

(38)

Adriano Mauro Cansian 75

Repetição com teste no início

(

while-do

)

•  A estrutura de controle WHILE permite que

um comando simples ou composto seja

executado repetidamente,

enquanto uma

condição de controle seja VERDADEIRA

.

•  A forma geral do WHILE é:

WHILE

<condição>

DO

<comando(s)>

Repetição com teste no início

(

while-do

)

condição

: uma expressão lógica.

comando

pode ser um ou mais comandos.

•  Como o teste da <

condição

> é realizado no

início do laço, o <

comando

>

será executado

zero ou mais vezes

, dependendo do

resultado da avaliação da <condição>.

– Ou seja, while-do avalia a expressão lógica antes da primeira interação, isto significa que, eventualmente, pode não ocorrer nem a primeira interação.

(39)

Adriano Mauro Cansian 77

Program EXEMPLO_DE_WHILE; {escrever os números inteiros de 1 a 100} Var N : integer; Begin N := 1; while N <= 100 do begin writeln(N); N := N + 1 end End.

Neste exemplo, o comando WRITELN será executado repetidas vezes enquanto a variável N possuir um valor igual ou inferior a 100.

O programa terá como saída a seqüência dos números inteiros de 1 a 100.

Program Exemplo_2; Uses CRT;

{Programa que lê números do teclado e depois informa a média dos números lidos, a quantidade lida, e soma deles}

Label INICIO;

Const Quant_de_num : Integer = 0; Soma : Real = 0; Media : Real = 0; Var Numero : Real;

Tecla : Char; Begin

INICIO: ClrScr;

Write('Valor numérico (menor que 0=fim) --> '); Readln(Numero);

. . .

(40)

Adriano Mauro Cansian 79

While (Numero>=0) Do Begin

Soma := Soma + Numero;

Quant_de_num := Quant_de_num + 1;

Write('Valor numérico (menor que 0=fim) --> '); Readln(Numero); End; If Quant_de_num > 0 Then Begin Media := Soma/Quant_de_num; Writeln;

Writeln('Quantidade de números = ',Quant_de_num); Writeln('Soma ... = ',Soma:10:2); Writeln('Media ... = ',Media:10:2);

End

Else Writeln('Não se realizou cálculos'); Writeln;

Write('Deseja continuar ? (S/N) ---> '); tecla:=ReadKey;

If (Tecla='s') Or (Tecla='S') Then Begin Quant_de_num:=0;

Soma := 0; Goto Inicio;

End; End.

Repetição com teste no final (

repeat-until

) (1)

•  REPEAT-UNTIL permite que um ou mais

comandos sejam executados repetidamente,

até que uma condição de controle seja

FALSA

.

•  A forma geral do REPEAT-UNTIL é:

REPEAT

<comando(s)...>

UNTIL

(41)

Adriano Mauro Cansian 81

Repetição com teste no final (

repeat-until

) (2)

Repeat

Comando_1;

Comando_2;

Comando_3;

. . .

Until (expressão_lógica);

Repetição com teste no final (

repeat-until

) (3)

• 

condição: uma expressão lógica.

• 

comando pode ser um ou mais

comandos.

• 

Não

há a necessidade dos

delimitadores BEGIN e END no

(42)

Adriano Mauro Cansian 83

Repetição com teste no final (

repeat-until

) (4)

•  Como o teste da

<condição>

é realizado no

final do laço

, o

<comando>

será executado

uma ou mais vezes, dependendo da

avaliação da <condição>.

–  Todos os comandos entre as palavras reservadas Repeat e Until serão executadas, até que a expressão lógica seja verdadeira(TRUE).

–  Obviamente, devemos ter o cuidado para que ela venha a ser TRUE em determinado momento, pois caso contrário, teremos um loop infinito, ou seja, o programa fica preso

para sempre dentro da estrutura Repeat - Until, e não sai.

Program EXEMPLO_DE_REPEAT; {escrever os núm. inteiros de 1 a 100}

Var N : Integer; Begin N := 1; repeat writeln(N); N := N + 1 until N > 100 End.

Este exemplo é equivalente ao exemplo anterior do WHILE, onde o comando WRITELN será executado repetidas vezes até que a variável N possua um valor superior a 100.

(43)

Adriano Mauro Cansian 85

EXEMPLO:

Program EXEMPLO_DE_REPEAT_2;

{calcula a média de 2 números dados repetidas vezes} Uses CRT; Var N1,N2,MEDIA : real; RESP : char; Begin clrScr; repeat

write('Digite os dois números: '); readln (N1,N2);

MEDIA := (N1+N2)/2; writeln (MEDIA);

write ('Deseja repetir o programa (s/n)? '); RESP := readkey;

until (RESP='N') or (RESP='n') End.

A estrutura REPEAT também é bastante utilizada para repetirmos um programa diversas vezes, até que o usuário deseje sair do mesmo.

Program Exemplo_2; Uses CRT;

{Programa que soma os números pares compreendidos entre dois números lidos do teclado}

Var par,numero_1,numero_2,soma:Integer; Begin Clrscr; Soma:=0; Write('Primeiro Numero ---> '); Readln(numero_1); Write('Segundo Numero ----> '); Readln(numero_2); par:=numero_1;

{Verifica se o primeiro número é par, se não for adiciona-se

um}

If par MOD 2 <> 0 then par:=par+1; Repeat

(44)

Adriano Mauro Cansian 87

Program Exemplo_3; Uses CRT;

{Programa para cálculo de fatorial.}

Label inicio,fim;

Var n,i,fatorial:integer; Begin

ClrScr; inicio:

Write('N = (menor que 0 = fim) --> '); Readln(n);

If n<0 then goto fim; Writeln; fatorial:=1; i:=1; if n>1 then Repeat i:=i+1; fatorial:=fatorial*i; Until i=n; Writeln('fatorial de ':30,n,' = ',fatorial); Writeln; goto inicio; fim: End.

Repetição automática FOR (1)

•  A estrutura de controle

FOR

permite que um

comando simples ou composto seja repetido

um número específico de vezes

.

•  A sua forma geral é:

(45)

Adriano Mauro Cansian 89

Repetição automática FOR (2)

•  Onde <var> é uma variável de controle, do tipo inteira, que assumirá inicialmente o valor inicial <vi> e será incrementada (somada) do valor 1 após cada

repetição do laço.

•  A repetição será finalizada quando o conteúdo de <var> for superior ao valor final <vf>.

•  O <comando> também pode ser simples ou composto.

For-downto

•  Uma outra forma da estrutura FOR é a

seguinte:

FOR <var>:= <vi> DOWNTO <vf> DO <comando>

•  Neste caso, a variável de controle <

var

> será

decrementada (subtraída) do valor 1 após

cada repetição do laço e a repetição será

(46)

Adriano Mauro Cansian 91

Repetição automática FOR (3)

•  A estrutura de repetição FOR é

especialmente indicada para quando o

número de repetições

é previamente

conhecido.

•  Caso contrário, devemos utilizar o

WHILE ou o REPEAT,

dependendo do

caso.

EXEMPLO:

Program EXEMPLO_DE_FOR;

{escreve os números inteiros de 1 a 100} Var N : integer; Begin for N := 1 to 100 do writeln(N) End.

Observe, no exemplo acima, que não foi ne cessário utilizar um comando para atribuir um valor inicial a variável N, nem também um outro comando para incrementá-la com o valor 1.

(47)

Adriano Mauro Cansian 93 Program Exemplo_2; Uses CRT; Var i : Integer; Begin ClrScr;

For i:=10 downto 1 do Writeln(i); End.

Program Exemplo_3; Uses CRT;

{ Este programa escreve na tela os quadrados dos números de 1 até 20 }

Var i : Integer; Begin ClrScr; For i:=1 to 20 do Begin Write('Valor de i --> '); Write(i:3); Write('... quadrado de i = '); Writeln(i*i:5);

(48)

Adriano Mauro Cansian 95

{Este programa calcula a soma entre todos os números compreendidos entre dois números lidos do teclado }

Label INICIO;

Var i,Numero_1,Numero_2,soma : Integer; Tecla : Char; Begin INICIO: ClrScr; Write('Primeiro Numero --> '); Readln(Numero_1); Write('Segundo Numero ---> '); Readln(Numero_2); Writeln; Writeln; Soma:=0;

For i:=Numero_1 to Numero_2 do Soma:=Soma+i;

Writeln('Soma entre ',Numero_1,' e ',Numero_2,' = ',soma); Writeln;

Writeln;

Write('Deseja Continuar ? --> '); tecla:=ReadKey;

If ((Tecla = 'S') OR (Tecla='s')) Then Goto INICIO; ClrScr;

Write('Tchau ...'); End.

Program Exemplo_5;

{Programa para cálculo de fatorial de um número lido do teclado.}

Var n,Fatorial,i : Integer; Begin

Clrscr;

Write(‘Programa para calcular fatorial de N ');

Write('Digite N (digite N menor que 0 para terminar) --> '); Readln(n);

If n >= 0 then

Begin; Fatorial:=1;

If (n>0)

Then For i:=1 to n do

Fatorial:=Fatorial*i; Writeln('Fatorial de ',n,' = ',fatorial);

End;

Else

Writeln(‘Valor Negativo!Programa Finalizado!’);

Referências

Documentos relacionados

Então a condição para que o agente tenha uma boa estratégia ao longo do tempo, seria evitar que seu volume caísse a um nível crítico, ou seja, a melhor forma de lidar com o

Os índices diagnósticos foliares ou valores de referência desenvolvidos para interpretação de resultados de análise foliar para a região do Alto Paranaíba apresentaram-se distintos

No entanto, Kimura e Harshiman (1984) relatam que as mulheres tendem a ir melhor que os homens em provas que avaliaram a velocidade perceptual, fluência verbal,

Especialmente no primeiro ano de curso, segundo Tinto (2007), é necessária a integração e envolvimento do acadêmico, e essas intervenções visam duas adaptações: no

REDES INSTALACAO E COMERCIO DE REDES

tação de mestrado e, portanto, ainda em fase de conclusões parciais, pretende comparar as características dos sistemas de captação e dispensa da água utilizados pelos

6.1 Precauções pessoais, equipamento de proteção e procedimentos de emergência 6.1.1 Para o pessoal que não faz parte dos serviços de emergência.. Não respirar os vapores nem

4.3 O candidato poderá, igualmente, optar pela entrega do comprovante legal das notas do ENEM – Exame Nacional de Ensino Médio em substituição à Prova Objetiva e/ou a