
















Estude fácil! Tem muito documento disponível na Docsity
Ganhe pontos ajudando outros esrudantes ou compre um plano Premium
Prepare-se para as provas
Estude fácil! Tem muito documento disponível na Docsity
Prepare-se para as provas com trabalhos de outros alunos como você, aqui na Docsity
Encontra documentos específicos para os exames da tua universidade
Prepare-se com as videoaulas e exercícios resolvidos criados a partir da grade da sua Universidade
Responda perguntas de provas passadas e avalie sua preparação.
Ganhe pontos para baixar
Ganhe pontos ajudando outros esrudantes ou compre um plano Premium
Apostilas de Informática sobre a Linguagem Pascal, Introdução à programação, Definição de algoritmo, Algoritmo x programa, Linguagem de programação, A linguagem pascal, Estrutura de um programa pascal, O turbo pascal, Elementos da linguagem pascal.
Tipologia: Notas de estudo
1 / 24
Esta página não é visível na pré-visualização
Não perca as partes importantes!

















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;
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 const antes 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.
Comandos de repetição são aqueles que fazem com que um ou vários comandos sejam executados repetidas vezes.
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, s end o 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;
while I < 5 do I := I + 1; writeln( I ); J := 0; while J < 5 do begin J := J + 1; writeln( J ); end; END.
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;
repeat I := I + 1; until I >= 5; writeln( I );
repeat { Não é necessário o BEGIN e END } J := J + 1; writeln( J ); until J >= 5; END.
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.
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.
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}
Um elemento de um array é selecionado colocando-se uma expressão entre colchetes, logo depois do seu nome. Neste caso, o elemento com o índice é denominado de var iável subscrita.
No caso de um array multi-dimensional, as expressões usadas para indexação devem ser separadas umas das outras através de vírgulas.
var A : TMatriz; Intensidade : TIntensidade;
Intensidade[ Amarelo ] := 0.3; END.
Todos os elementos de um array podem ser copiados em outro com um único comando de atribuição desde que as duas var iáveis sejam do mesmo tipo. Se os array s forem multi-dimensionais, pode-se também copiar parte deles, como mostrado abaixo:
type TMatriz = array[ 1..10, 1..10 ] of integer; TVetor = array[ -50..50 ] of real; var A, B : TMatriz; X, Y : TVetor; BEGIN X := Y; { Atribui a X todos os elementos de Y } A[ 1 ] := B[ 2 ]; { Atribui a linha 2 de B à linha 1 de A } END.
Duas var iáveis são do mesmo tipo se elas forem definidas na mesma lista do comando var. Assim, se tivermos :
var
Vetor1 : array [ 1..5 ] of integer; Vetor2 : array [ 1..5 ] of integer; Vetor3, Vetor4 : : array [ 1..5 ] of integer;
as var iáveis Vetor1 e Vetor2 não são consideradas como s end o do mesmo tipo no Pascal. Dessa maneira, a atribuição abaixo daria erro de compilação :
Vetor1 := Vetor2;
Ao passo que a atribuição abaixo estaria correta :
Vetor3 := Vetor4;
Os array s de caracteres podem ser manipulados como strings, vejamos um exemplo:
program Teste Array Char; var Digitos : array [ 1..10 ] of Char; I : integer; BEGIN Digitos := ‘0123456789’; for I := 1 to 10 do write( Digitos[ I ] ); writeln; writeln( Digitos ); END.
A leitura e impressão de array s são feitas indicando individualmente quais elementos se deseja ler ou imprimir.
var Vetor : array[ 1..10 ] of integer; Matriz : array[ 1..10, 1..20 ] of real; I, J : integer;
{ Leitura de um vetor } for I := 1 to 10 do readln( Vetor[ I ] ); { Impressão de um vetor } for I := 1 to 10 do writeln( Vetor[ I ] ); { Leitura de uma matriz - Linha por Linha } for I := 1 to 10 do for J := 1 to 20 do readln( Matriz[ I, J ] ); { Impressão de uma matriz - Linha por Linha } for I := 1 to 10 do for J := 1 to 20 do writeln( Matriz[ I, J ] ); { Leitura de uma matriz - Coluna por Coluna } for I := 1 to 20 do for J := 1 to 10 do readln( Matriz[ I, J ] ); END.
Program Analise_de_Notas; { Programa que irá ler as notas obtidas pelos alunos de uma turma colocando-as em um array bi-dimensional. A seguir será calculada a média obtida por cada aluno e a média de cada avaliação, imprimindo os resultados. } const Num_Avaliacoes = 3; Num_Alunos = 10;
type IndiceAluno = 1..Num_Alunos; IndiceAvaliacao = 1..NumAvaliacoes;
var Notas : array[ IndiceAluno, IndiceAvaliacao ] of real; MediaAlunos : array[ IndiceAluno ] of real; MediaAvaliacao : array[ IndiceAvaliacao ] of real; I, J : integer; Soma : real;
{ Leitura da Matriz de Notas } for I := 1 to NumAlunos do { Leitura das Noras do I-esimo aluno } for J := 1 to NumAvaliacoes do read( Notas[ I, J ] );
{ Calculo da média de cada avaliação guardando-as no array MediaAvaliacao } for J := 1 to NumAvaliacoes do begin Soma := 0; for I := 1 to NumAlunos do Soma := Soma + Notas[ I, J ]; MediaAvaliacao[ J ] := Soma / NumAlunos; end;
{ Calculo da média de cada aluno guardando-as no array MediaAlunos } for I := 1 to NumAlunos do begin Soma := 0; for J := 1 to NumAvaliacoes do Soma := Soma + Notas[ I, J ]; MediaAlunos[ I ] := Soma / NumAvaliacoes; end;
{ Impressao das Médias dos Alunos e suas notas } writeln( ´Aluno´, ´Media´:7, ´ ´:10, ´Notas´, ); for I := 1 to NumAlunos do begin write( I:4, MediaAlunos[ I ]:8:1, ´ ´:4 ); for J := 1 to NumAvaliacoes do write( Notas[ I, J ]:5:1 ); writeln; end;
{ Impressao das medias das avaliaçoes } write( ´Media das Avaliações : ´); for J := 1 to NumAvaliacoes do write( MediaAvaliacoes[ J ]:5:1 ); END.
As constantes já vistas se enquadram entre as constantes denominadas escalares. No Pascal existem outros tipos de constantes, denominadas estruturadas , para as quais estão associadas não um valor, como nas escalares, mas um coleção de valores.
Um dos tipos de constantes estruturadas do Pascal são os Arrays Constantes, os quais são definidos da seguinte forma:
const
ident- const ante : array [ tipo-do-índice [ , tipo-do-índice ] ... ] of tipo-do-dado = valores;
const
DIGITOS : array [ 1..10 ] of integer = ( 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 );
A declaração de um array constante contém a especificação de cada um dos valores dos elementos do array.
O tipo dos elementos de uma constante de array pode ser qualquer um dos tipos de dados da linguagem Pascal, com exceção do tipo file.
type
TStatus = ( Ativo, Passivo, Esperando ); TStatusString = array [ Status ] of string[ 7 ];
const
StatusString : TStatusString = ( ‘Ativo’, ‘Passivo’, ‘Esperando’ );
Dessa forma, esses são os valores dos elementos do array const ante StatusString :
StatusString[ Ativo ] = ‘Ativo’ StatusString[ Passivo ] = ‘Passivo’ StatusString[ Esperando ] = ‘Esperando’
Um exemplo com array multi-dimensionais :
type
TMatriz = array [ 1..2, 1..3 ] of integer;
const
MATRIZ : TMatriz = ( ( 1, 2, 3 ), ( 4, 5, 6) );
write( ´0´ : 9 ); END.
Suponhamos que se deseja armazenar o nome e a nota obtida pelos alunos de um turma. Embora em Pascal se possa fazer isso de várias maneiras, iremos apresentar uma forma simples e direta para resolver esse problema: utilizando arrays paralelos , isto é, arrays com o mesmo índice para representar informações relacionadas mas de tipos diferentes. Vejamos: