Pascal - Intermediário


Pascal Módulo Intermediario  ...

 

Comandos de Entrada e Saída

Na maioria das vezes um programa necessita de interatividade com o usuário, ou seja, durante a sua execução o programa ler valores fornecidos pelo o usuário e escreve outros para o usuário. Essa interatividade é conseguida através dos comando de entrada e saída.

Comandos WRITE e WRITELN

São comandos de saída do Pascal, a diferença é que o comando writeln após exibir o conteúdo dos seus parâmetros efetua uma quebra de linha.

write  (Variável ou Expressão);
writeln(Variável ou Expressão);

Comandos READ e READLN

Representam os comandos de entrada do pascal, onde o readln também executa uma quebra de linha após ler os seus parâmetros.

write  (Variável);
writeln(Variável);



EXPRESSÕES
Uma expressão é um conjunto de operandos unidos por operadores, de forma a computar um valor ou resultado.  
Os operandos podem ser variáveis, constantes ou valores gerados por funções. 
Os operadores identificam as operações a serem efetuadas sobre os operandos.  Cada tipo de dados possui um conjunto de operadores relacionados.  Os operadores classificam-se em Unários e Binários, conforme tenham um ou dois operandos, respectivamente. 

Prioridade das Operações

Se vários operadores aparecerem em uma expressão, a ordem de execução das operações será dada segundo os critérios abaixo :
·       pelo emprego explícito de parênteses
·       pela ordem de precedência existente entre os operadores
·       se existirem operadores de mesma ordem de precedência, a avaliação será feita da esquerda para a direita.

Ordem de Precedência dos Operadores ( da maior para a menor )
Operadores
Categoria
(  )
Parêntesis
@   not
Operadores Unários
*  /  div  mod
Operadores Multiplicativos
and  shl  shr  +  - or  xor
Operadores Aditivos
=  <>  <   >  <=   >=   in
Operadores Relacionais

Tipos de Expressões

Existem três tipos básicos de expressões:
·       Numéricas: Uma expressão é numérica quando os seus operandos são numéricos ( inteiros ou reais ) e o resultado também é um valor numérico. Nas expressões relacionais são usados os operadores Aritméticos e os de Manipulação de Bits.
·       Literais: Uma expressão é literal quando os seus operandos são literais do tipo string (não pode ser char) e o resultado também é um valor literal.  Só existe um único operador para se usar em expressões literais, o operador Concatenação( + ).
·       Boolenas: Uma expressão é booleana quando seu resultado é do tipo boolean (TRUE ou FALSE), podendo seu operando serem de qualquer tipo de dados.  Nas expressões relacionais são usados os operadores Lógicos e os Relacionais.

Tipos de Operadores

·       Atribuição
·       Aritméticos
·       Manipulação de Bits
·       Concatenação
·       Relacionais
·       Lógicos
·       Operadores de Ponteiros
·       Operadores de Conjuntos
·       Operador Type-Cast

OPERADOR ATRIBUIÇÃO ( := )

Usado para atribuir o valor de uma expressão a uma variável.
Exemplo:
A := 10;
Nome := ´Josias´;

OPERADORES ARITMÉTICOS

Usados para efetuar operações aritméticas com número inteiros e reais.
Subtração
-
Adição
+
Multiplicação
*
Divisão Real
/
Divisão Inteira ( truncada )
div
Resto da Divisão Inteira
mod
Inverte Sinal
-
Mantém Sinal
+

Exemplo:
var
A, B : integer;
C, D : real;
BEGIN
A := 1;
B := 3;
C := 5;
D := 10;
A := 1 + B;         
A := B + D;    { errado, D é real }
B := 10 div 3;
A := 10 mod 3;
C := D / C;         
D := 10 div C; { errado, o operado div é só para inteiros }
A := -1;
B := 5 + A;
B := -A;
C := D * A;
B := C * B;    { errado, C é real }
END.

OPERADORES DE MANIPULAÇÃO DE BITS

Usados para efetuar a manipulação dos bits de uma variável.
E binário
and
Deslocamento de bits ( Shift Left   )
shl
Deslocamento de bits ( Shift Right )
shr
OU binário
or
XOR binário
xor
NOT binário
not

OPERADOR CONCATENAÇÃO ( + )

Efetua a junção de duas variáveis ou constantes do tipo string.
Exemplo:
var
PreNome, SobreNome, NomeCompleto : string[ 30 ];

BEGIN
{ Suponhamos o nome Josias Lima Santos }
   PreNome     := ´Josias´;
   SobreNome   := ´Santos´;

NomeCompleto := PreNome + SobreNome;
writeln( NomeCompleto );

NomeCompleto := ´Jose´ + ´Maria´;
writeln( NomeCompleto );
   ...
END.

OPERADORES RELACIONAIS

Usados para efetuar a comparação entre dados de mesmo tipo.
Maior que
Menor que
Maior ou igual
>=
Menor ou igual
<=
Igual
=
Diferente
<> 


Exemplo:

var
Nota1, Nota2 : real;
NomeAluno1, NomeAluno2 : string[ 30 ];
A, B, C : integer;
BEGIN
A := 2;
B := 3;
C := 1;
if B = A + C then
writeln( B );
Nota1 :=  5.0;
Nota2 := 10.0;
if Nota1 < Nota2 then
writeln( Nota1 );
NomeAluno1 := ´Maria Jose´;
NomeAluno2 := ´MariaJose´;
if NomeAluno1 < NomeAluno2 then
writeln( NomeAluno1 );
END.

OPERADORES LÓGICOS

Usado para se analisar duas ou mais expressões interrelacionadas.
E
and
OU
or
NÃO
not

Exemplo:
var
Nota1, Nota2 : real;
NomeAluno1, NomeAluno2 : string[ 30 ];
A, B, C : integer;

BEGIN
A := 2;
B := 3;
C := 1;
NomeAluno1 := ´Maria Jose´;
NomeAluno2 := ´MariaJose´;

if ( B = A + C ) and ( NomeAluno1 <> NomeAluno2 ) then
writeln( NomeAluno1, B );
if ( A = C ) or ( NomeAluno1 = NomeAluno2 ) then
writeln( NomeAluno1 );
if not( A = C ) then
writeln( NomeAluno1 );
END.

TABELAS VERDADE

OPERADOR AND
OPERANDO 1
OPERANDO 1
RESULTADO
TRUE
TRUE
TRUE
TRUE
FALSE
FALSE
FALSE
TRUE
FALSE
FALSE
FALSE
FALSE
OPERADOR OR
OPERANDO 1
OPERANDO 1
RESULTADO
TRUE
TRUE
TRUE
TRUE
FALSE
TRUE
FALSE
TRUE
TRUE
FALSE
FALSE
FALSE
OPERADOR NOT
OPERANDO
RESULTADO
TRUE
FALSE
FALSE
TRUE

OPERADORES DE PONTEIROS

Usado na manipulação de variáveis dinâmicas e apontadores.
Endereço
@
Referência
^

OPERADORES DE CONJUNTOS

Usados na manipulação de variáveis do tipo  conjunto.
União
+
Complemento
-
Intersecção
*
Igualdade
=
Desigualdade
<> 
Subconjunto
<= ,  >=
Pertinência
in

Acesso a campos



COMANDOS ESTRUTURADOS

Comando Composto

Consiste de um ou vários comandos que devam ser executados sequencialmente, sendo usado em situações onde a sintaxe de alguns comandos do Pascal permite apenas um único comando.
Os comandos que fazem parte do comando composto são separados por ponto-e-vírgula, devendo começar e terminar pelas palavras reservadas begin e end;, respectivamente, de acordo com a sintaxe :
begin
comando [ ; comando ]...
end;
Exemplo:
if A > B then
begin
Temp := A;
A    := B;
B    := Temp;
end;

Comandos Condicionais

IF-THEN-ELSE

O comando IF-THEN-ELSE permite efetuarmos um desvio bidirecional na lógica do programa, segundo uma determinada condição booleana.
Sintaxe:
if exp-booleana
     then
             comandos
      [else
             comandos];

Exemplo:

if A <= B then
A := ( A + 1 ) / 2

if odd( I ) then
J := J + 1
else
J := J div 2 + 1;

if Nome1 = ´Jose´ then
begin
J := J div 2 + 1;
writeln( J * 2 );
end;

if Media >= 5 then
begin
writeln( ´Aluno Aprovovado´ );
writeln( ´Parabéns !!!´ );
end
else
writeln( ´Aluno Reprovado´ );

if Sexo = MASCULINO then
if Idade > 18 then
begin
writeln( ´Jovem, aliste-se no Exército, Marinha ou Aeronautica!´ );
writeln( ´Sirva à sua pátria, venha fazer uma carreira brilhante´ );
end
else
writeln( ´Você ainda é muito jovem para o serviço militar´ );

if Sexo = MASCULINO then
begin
if Idade > 18 then
begin
writeln( ´Jovem, aliste-se no Exército, Marinha ou Aeronautica!´ );
writeln( ´Sirva à sua pátria, venha fazer uma carreira brilhante´ );
end
else
writeln( ´Você ainda é muito jovem para o serviço militar´ );
writeln( ´Qual o seu Nome ? ´);
end;

Comando CASE

O comando CASE permite efetuarmos um desvio multidirecional na lógica do programa.   Ele consiste de um expressão ( chamada seletor ) e uma lista de comandos, cada um precedido por constantes ou subintervalos separados por vírgulas ( chamados rótulos de case ), de mesmo tipo do seletor, que pode ser qualquer escalar ordenado ( integer, char, boolean, enumerated, faixa ).
Sintaxe :

case expressão of
rotulo-case : comando;
[rotulo-case : comando;]...
[else
comando [; comando ]...
end;
Exemplo:

program Figuras;
type
TFigura = ( Triangulo, Retangulo, Quadrado, Circulo );
var
Figura : TFigura;
Tipo   : integer;
BEGIN
writeln( ‘Qual o tipo da figura ? ‘);
writeln( ‘0-Triangulo’ );
writeln( ‘1-Retangulo’ );
writeln( ‘2-Quadrado’  );
writeln( ‘3-Circulo’   );
readln( Tipo );

Figura := TFigura( Tipo );
case Figura of
Triangulo : writeln( ‘Você escolheu a figura Triangulo’ );
Retangulo : writeln( ‘Você escolheu a figura Retangulo’ );
Quadrado  : writeln( ‘Você escolheu a figura Quadrado’  );
Circulo   : writeln( ‘Você escolheu a figura Circulo’   );
end;
END.


program TestaTecla;
{ Programa para testar a tecla pressionada }
var Tecla : char;
BEGIN
writeln( ‘Pressione uma Tecla : ‘ );
readln( Tecla );

case Tecla of
‘A’..’Z’, ‘a’..’z’:  writeln(‘Você pressionou uma Letra’);
‘0’..’9’:            writeln(‘Você pressionou um Numero’);
‘+’, ‘-‘, ‘*’, ‘/’:  writeln(‘Você pressionou um Sinal Aritmetico’);
else
writeln( ‘Você pressionou uma outra tecla qualquer’ );
end;
END.

OBS.:  O Comando CASE pode ser substituído por um conjunto de IF-THEN-ELSE aninhados, no entanto, nesses casos, onde há muitas condições, o comando CASE, torna o programa mais legível.

program TestaIdade;
{ Programa para testar a idade de serviço militar }
var Idade : integer;
BEGIN
writeln( ‘Qual a sua Idade ? ‘ );
readln( Idade  );

case Idade >= 18 of
TRUE  : writeln( ‘Voce já pode servir ao exército’ );
FALSE : writeln( ‘Voce ainda não pode servir ao exército’ );
end;
END.
Comandos de Repetição
Comandos de repetição são aqueles que fazem com que um ou vários comandos sejam executados repetidas vezes.

Comando WHILE

O comando WHILE faz com que um comando seja executado enquanto a expressão de controle permanecer verdadeira ( TRUE ).
Sintaxe :
while expressao do
comando;
A expressão que controla a repetição deverá ser do tipo boolean, sendo a mesma avaliada antes que o comando do laço seja executado.  Isto quer dizer que, se logo no início o resultado da expressão for FALSE, o laço não será executado nenhuma vez.
Exemplo:
program TesteWhile;
var I, J : integer;

BEGIN
I := 0;
while I < 5 do
I := I + 1;
writeln( I );
J := 0;
while J < 5 do
begin
J := J + 1;
writeln( J );
end;
END.

Comando REPEAT

O comando REPEAT faz com que um comando seja executado enquanto a expressão de controle permanecer falsa ( FALSE ).   O teste da condição é feito ao final do laço, dessa forma o laço sempre é executado pelo menos uma vez.
Sintaxe :
repeat
comando [;comando]...
until expressao;
A expressão que controla a repetição deverá ser do tipo boolean, sendo a mesma avaliada antes que o comando do laço seja executado.  Isto quer dizer que, se logo no início o resultado da expressão for FALSE, o laço não será executado nenhuma vez.
Exemplo:
program TesteRepeat;
var I, J : integer;

BEGIN
I := 0;
repeat
I := I + 1;
until I >= 5;
writeln( I );

J := 0;
repeat               { Não é necessário o BEGIN e END }
J := J + 1;
writeln( J ); 
until J >= 5;
END.

Comando FOR

O comando FOR executa repetitivamente um comando enquanto é atribuído uma série de valores a uma variável de controle (contador do FOR).
Sintaxe :
for variavel := expressao1 to/downto expressao2 do
comando;
Onde :
variavel = É uma variável de controle cujo valor será incrementado (se usado o to) ou decrementado (se usado o downto) de uma unidade.
Expressao1 = É o valor inicial da variável de controle
Expressao2 = É o valor final da variável de controle
A variável de controle poderá ser de qualquer tipo escalar ordenado e as expressões de um tipo compatível com ela.
O comando FOR  funciona da seguinte maneira :
·       Inicialmente, a variável de controle recebe o valor da primeira expressão ( expressão1 )
·       Antes de começar a execução do laço, a variável de controle é testada para verificar se ela é menor ou  igual ( se for usado o TO ) ou se maior ou igual ( se for usado o DOWNTO ) à segunda expressão.
·       Se o resultado do teste for verdadeiro, o comando do laço é executado
·       Ao terminar a execução do comando do laço, a variável de controle é testada para verificar se ela é igual ao valor final
·       Se a variável de controle for igual ao valor final, a repetição termina
·       Se não for igual, ela é incrementada ou decrementada de uma unidade

Após o término do comando FOR, a  variável de controle, terá o valor da Expressao2, a não ser que o comando tenha sido interrompido por um comando goto ou break.
Exemplo :
for I := 1 to 100 do
Soma := Soma + I;
for I := 1 to 100 do
begin
readln( x );
Soma := Soma + x;
end;

for I := 100 downto 1 do
writeln( I );

type TDias = ( Dom, Seg, Ter, Qua, Qui, Sex, Sab );
var
Dia : Tdias
Vendas, VendasToal : real;
...
for Dia := Seg to Sex do
begin
readln( Vendas );
VendasTotal := VendasTotal + Vendas;
end;

Comando CONTINUE

O comando CONTINUE causa o desvio para o final do laço mais interno de um comando de repetição.
Exemplo:
while expressao do
begin
   ...
continue;
   ...
{ o comando continue desvia para aqui }
end;

for I := expressao1 to expressao2 do
begin
   ...
continue;
   ...
{ o comando continue desvia para aqui }
end;

repeat
   ...
continue;
   ...
{ o comando continue desvia para aqui }
until expressao;
OBS.:  O comando CONTINUE não faz parte do Pascal Padrão.


Comando BREAK

O comando BREAK causa a saída incodicional do laço mais interno de um comando de repetição.
Exemplo:
while expressao do
begin
   ...
break;
   ...
end;
{ o comando break desvia para aqui }
...

for I := expressao1 to expressao2 do
begin
   ...
break;
   ...
end;
{ o comando break desvia para aqui }
...

repeat
   ...
break;
   ...
until expressao;
{ o comando break desvia para aqui }
...

OBS.:  O comando BREAK não faz parte do Pascal Padrão.

Comando HALT

O comando HALT causa o término imediato do programa.
Program teste;
BEGIN
   ...

if Opcao = ´F´ then
      halt; {O programa terminará, aqui se a condicao do IF for  satisfeita }
   ...
END.        {O programa terminará, aqui se a condicao do IF não for satisfeita}






.





















Twitter Delicious Facebook Digg Stumbleupon Favorites More

 
Design by Free WordPress Themes | Bloggerized by Lasantha - Premium Blogger Themes | Sweet Tomatoes Printable Coupons