Docsity
Docsity

Prepare-se para as provas
Prepare-se para as provas

Estude fácil! Tem muito documento disponível na Docsity


Ganhe pontos para baixar
Ganhe pontos para baixar

Ganhe pontos ajudando outros esrudantes ou compre um plano Premium


Guias e Dicas
Guias e Dicas


Pascal I - Apostilas - Informática Part2, Notas de estudo de Informática

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

2013

Compartilhado em 28/08/2013

Garoto
Garoto 🇪🇸

4.6

(121)

1 / 24

Toggle sidebar

Esta página não é visível na pré-visualização

Não perca as partes importantes!

bg1
Universidade Tiradentes - Departamento de Ciência da Computação
Pascal - 25
na cadeia y a partir da posição
z (max 255 )
inteiro
UpCase( x )
Retorna x convertido para
maiúscula
char
char
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff
pf12
pf13
pf14
pf15
pf16
pf17
pf18

Pré-visualização parcial do texto

Baixe Pascal I - Apostilas - Informática Part2 e outras Notas de estudo em PDF para Informática, somente na Docsity!

na cadeia y a partir da posição

z (max 255 )

inteiro

UpCase( x ) Retorna x convertido para

maiúscula

char char

Funções para Conversão

Nome Função Objetivo Tipo do

Parâmetro

Tipo do

Retorn

o

trunc( x ) Trunca x para um número inteiro real inteiro

int( x ) Retorna a parte inteira de x real real

frac( x ) Retorna a parte fracionária de x real real

round( x ) Arredonda x para um inteiro real inteiro

chr( x ) Determina o caracter ASCII

representado por x

inteiro char

ord( x ) Determina o inteiro que é usado

para codificar x

char inteiro

tipo ( x ) Muda o tipo de x para tipo qualquer tipo

Funções e Procedimentos de Uso Geral

Nome

Função

Objetivo Tipo do

Parâmetro

Tipo do

Retorno

pred( x ) Determina o predecessor de x tipo ordenado o mesmo de x

succ( x ) Determina o sucessor de x tipo ordenado o mesmo de x

sizeof( x ) Retorna o número de byte de x qualquer tipo inteiro

inc (x,[y]) Incrementa x de y unidade tipo ordenado

GotoXY(x,y) Move o curso para a coluna x e linha

y

inteiro

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 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

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, 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;

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 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}

Referência aos Elementos de um Array

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.

EXEMPLOS

var A : TMatriz; Intensidade : TIntensidade;

BEGIN

A[ 1, 5 ] := 0.5;

Intensidade[ Amarelo ] := 0.3; END.

OBSERVAÇÕES

  1. Se nos referenciar-mos a um array utilizando um índice fora dos limites do array , isso provocará um erro em tempo de execução. Ex. : A[ 11, 5 ] := 10; { O limite de linhas da matriz A é 10 e não 11 }

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.

OBSERVAÇÕES

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;

Arrays de Caracteres

Os array s de caracteres podem ser manipulados como strings, vejamos um exemplo:

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.

Leitura e Impressão de Arrays

A leitura e impressão de array s são feitas indicando individualmente quais elementos se deseja ler ou imprimir.

EXEMPLOS

var Vetor : array[ 1..10 ] of integer; Matriz : array[ 1..10, 1..20 ] of real; I, J : integer;

BEGIN

{ 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;

BEGIN

{ 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.

Arrays Constantes

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;

EXEMPLO

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.

EXEMPLOS

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) );

MATRIZ[ 1, 1 ] = 1 MATRIZ[ 1, 2 ] = 4 MATRIZ[ 1, 3 ] = 7

MATRIZ[ 2, 1 ] = 2 MATRIZ[ 2, 2 ] = 5 MATRIZ[ 2, 3 ] = 8

MATRIZ[ 3, 1 ] = 3 MATRIZ[ 3, 2 ] = 6 MATRIZ[ 3, 3 ] = 9

write( ´0´ : 9 ); END.

Arrays Paralelos

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: