Você está na página 1de 80

AplicaesInform@casB12ano

Prof.CarlosGomes

Pascal

PROGRAMAO
PASCAL
(FPC)

Prof.CarlosGomes

AplicaesInform@casB12ano
Prof.CarlosGomes

Pascal

COMPILADORESEINTERPRETADORES
COMPILADORES
Soprogramasescritoscomanalidadedeconverterumprogramaapar@rdasua
representaotextual(cdigofonte)paraaformaexecutvelpelocomputador(cdigoobjeto).
Exemplos:TurboPascal,FreePascal,TurboC++,Delphi.
INTERPRETADORES
Soprogramasescritoscomanalidadedeexecutardiretamenteumprogramaapar@rdoseu
cdigofonte.Asinstruessodecodicadaseexecutadas,atravsdeumciclorepe@@vo.
Adesvantagemqueissolevaaumtempodeexecuomaior.
Diferentementedoscompiladores,nenhumcdigogerado.Exemplo:PHP.
IDE
DoinglsIntegratedDevelopmentEnviroment(AmbienteIntegradodeDesenvolvimento).
umaplica@vogrcoatravsdoqualpossvelrealizar,deformaunicada,tudoque
necessrioparaprogramar:editarocdigofonte,compilar,debugar(depurar)erodar(executar)
oprograma.
Prof.CarlosGomes

AplicaesInform@casB12ano
Prof.CarlosGomes

Pascal

Prof.CarlosGomes

AplicaesInform@casB12ano
Prof.CarlosGomes

Pascal

PALAVRASRESERVADASDOPASCAL

Prof.CarlosGomes

AplicaesInform@casB12ano
Prof.CarlosGomes

Pascal

ESTRUTURADEUMPROGRAMAPASCAL

PROGRAMNomedoprograma;
Declaraes;
BEGIN
Comandos;
END.

Prof.CarlosGomes

Program<nome_do_programa>;
[Uses]
[CONST]
[Type]
[ProcedureseFunc@ons]
[VAR]
BEGIN
[bloco]
END.

AplicaesInform@casB12ano
Prof.CarlosGomes

Pascal

TIPOSDEDADOS

Tipos de dados predefinidos da linguagem Pascal: Para cada tipo de dado, o Pascal capaz de reservar
um determinado nmero de bytes na memria. Para que ele possa reter corretamente uma determinada
informao necessrio que ela seja adequada a um desses tipos.

INTEIROS

REAIS

Prof.CarlosGomes

AplicaesInform@casB12ano
Prof.CarlosGomes

Pascal

TIPOSDEDADOS
ALFANUMRICOS

LGICOS

Prof.CarlosGomes

AplicaesInform@casB12ano
Prof.CarlosGomes

Pascal

TIPOS DE DADOS
CARACTERES

Soconsiderados@poscaracteres,assequnciascontendoletras,nmerose
smbolos especiais. Uma sequncia de caracteres, em Pascal, deve ser
representadaentreapstrofos().Este@podedadoarmazenarde1at255
caracteres.

varivel:string[tamanho];
Umexemplodousodestrings:
var
Frase:string;
Nome:string[45];
Prof.CarlosGomes

AplicaesInform@casB12ano
Prof.CarlosGomes

Pascal

COMANDOSDEENTRADAESADA

Oscomandosdeentrada(input)soReadeReadLn.
Estescomandoslemumdadodotecladooudeumarquivo,comoveremosadiante,
paraumavarivel.Exemplo:

Read(nome);
ReadLn(codigo,nome);

Oscomandosdesada(output)sooWriteeoWriteLn.
Estescomandosimprimemovalordeumavarivelnomonitorougravaaemumarquivo,
comoveremosadiante.Exemplo:
Write(nome);
WriteLn(codigo,nome);
WriteLn('Codigo:',codigo,'NomedoAluno:',nome);
WriteLn;

Masqualadiferena?
muitosimples:acolocaodalnindicalinenew,ouseja,novalinha.Serrealizadoumpulodelinhaapsa
leituraouexibiodosdados.Asinstrueswriteereadpermitemmanterocursornamesmalinha,apsaexibio
Prof.CarlosGomes
dasmensagensouleituradedados.

AplicaesInform@casB12ano
Prof.CarlosGomes

Pascal

CONSTANTES
OsdadosemTurboPascalpodemserclassicadosoucomoconstantesoucomovariveis.
Seosvaloresnovariamsoconstantes.
ApalavrareservadaConstusadaparadenirasconstantes.Exemplo:

Const
PI=3.14159;
TOTAL_ALUNOS=50;
DISTANCIA=152.34;
MEU_NOME='Fernando';
NOME_ARQUIVO='Arquivo01.dat';
PASSOU=true;

Prof.CarlosGomes

AplicaesInform@casB12ano
Prof.CarlosGomes

Pascal

COMANDODEATRIBUIO
denotadopelosmbolo:=atribuindooresultadodeumaexpressoaumavarivel.
Exemplo:

VAR

ind:=5;
preco:=10*Quan@dade;
pais:=Portugal';
aprovado:=true;

Prof.CarlosGomes

AplicaesInform@casB12ano
Prof.CarlosGomes

Pascal

PROGRAMA1
PROGRAMPrograma_1;
BEGIN
Write(Oleusoua/o.);
END.

Prof.CarlosGomes

*Guardartodososprogramasnumapasta/PENpoisseroobjectodeavaliaononaldoperodo!

AplicaesInform@casB12ano
Prof.CarlosGomes

Pascal

PROGRAMA2
PROGRAMPrograma_2;
BEGIN
Write(Oleusoua/o.);
Readln;
END.

Prof.CarlosGomes

*Guardartodososprogramasnumapasta/PENpoisseroobjectodeavaliaononaldoperodo!

AplicaesInform@casB12ano
Prof.CarlosGomes

Pascal

Linhas de comentrios: Os comentrios so textos explica@vos escritos no cdigofonte, delimitados


pelos caracteres de { e }, ou pelos caracteres (* e *). Os textos de comentrio so ignorados pelo
compilador na fase de traduo do programa, teis somente no sen@do de documentar uma ro@na de
instrues dentro do programa, para tornlo mais legvel e fcil de entender, quando retomado para
correooualterao.

PROGRAMA3
PROGRAMPrograma_3;(*Esteoterceiroprograma*)
BEGIN
Write(Oleusoua/o.);(*escreveronome*)
Readln;
END.
Prof.CarlosGomes

*Guardartodososprogramasnumapasta/PENpoisseroobjectodeavaliaononaldoperodo!

AplicaesInform@casB12ano
Prof.CarlosGomes

Pascal

PROGRAMA4
PROGRAMPrograma_4;
Varnome:string[30];
BEGIN
Write(Qualoseunome?:);
Readln(nome);
Write(Oseunome,nome);
Readln;
END.
Prof.CarlosGomes

*Guardartodososprogramasnumapasta/PENpoisseroobjectodeavaliaononaldoperodo!

AplicaesInform@casB12ano
Prof.CarlosGomes

Pascal

PROGRAMA4
PROGRAMPrograma_4;
Varnome:string[30];
BEGIN
Write(Qualoseunome?);
Readln(nome);
Write(Oseunome,nome);
Readln;
END.
Prof.CarlosGomes

*Guardartodososprogramasnumapasta/PENpoisseroobjectodeavaliaononaldoperodo!

AplicaesInform@casB12ano
Prof.CarlosGomes

Pascal

PROGRAMA4B
PROGRAMPrograma_4;
Usescrt;
Varb:string[30];
BEGIN
ClrScr;
Write(Qualoseunome?);
Readln(b);
Write(Oseunome,b);
Readln;
END.
Prof.CarlosGomes

*Guardartodososprogramasnumapasta/PENpoisseroobjectodeavaliaononaldoperodo!

AplicaesInform@casB12ano
Prof.CarlosGomes

PROGRAMA5
PROGRAMPrograma_5;
VAR
Nome,sobrenome,nomecompleto:string[30];
BEGIN
Nome:=Filomena;
Sobrenome:=Esteves;
Nomecompleto:=nome+sobrenome;
Writeln(nomecompleto);
Readln;
END.
Prof.CarlosGomes

*Guardartodososprogramasnumapasta/PENpoisseroobjectodeavaliaononaldoperodo!

Pascal

AplicaesInform@casB12ano
Prof.CarlosGomes

Pascal

PROGRAMA6

PROGRAMPrograma_6;
Consta=5;
BEGIN
Writeln(OValordea:,a);
readln;
END.
Prof.CarlosGomes

*Guardartodososprogramasnumapasta/PENpoisseroobjectodeavaliaononaldoperodo!

AplicaesInform@casB12ano
Prof.CarlosGomes

Pascal

PROGRAMA7
PROGRAMPrograma_7;
Consta=3;
VAR
nota1,nota2,nota3,media,total:integer;
BEGIN
Nota1:=20;
nota2:=15;
Nota3:=16;
Media:=(nota1+nota2+nota3);
Total:=mediadiva;
Writeln(Amdiados3testes:,total);
ReadLn;
END.
Agorafaaomesmomasaltereintegerpararealevejaoqueacontece!Porqu?
Prof.CarlosGomes

*Guardartodososprogramasnumapasta/PENpoisseroobjectodeavaliaononaldoperodo!

AplicaesInform@casB12ano
Prof.CarlosGomes

Pascal

PROGRAMA8
FAA UM PROGRAMA PARA CALCULAR A MDIA DE DOIS TESTES SENDO QUE OS
VALORES DASNOTASDEVEROSERINTRODUZIDOSPELOUTILIZADOR.NOFINALO
PROGRAMAAPRESENTAAMDIA.

Prof.CarlosGomes

*Guardartodososprogramasnumapasta/PENpoisseroobjectodeavaliaononaldoperodo!

AplicaesInform@casB12ano
Prof.CarlosGomes

Pascal

PROGRAMA8
PROGRAMPrograma_8;
Consta=2;
VAR
nota1,nota2,media:integer;
BEGIN
Writeln(ColoqueaNotadoprimeiroteste:);
Readln(nota1);
Writeln(ColoqueaNotadosegundoteste:);
Readln(nota2);
Media:=(nota1+nota2)diva;

END.

Writeln(Amdiadosdoistestes:,media)
Readln;
Prof.CarlosGomes

*Guardartodososprogramasnumapasta/PENpoisseroobjectodeavaliaononaldoperodo!

AplicaesInform@casB12ano
Prof.CarlosGomes

Pascal

PROGRAMA9
ESCREVAUMPROGRAMAEMQUEPEAAOUTILIZADORPARAINTRODUZIROPRIMEIRO
NOMEEOAPELIDO.OPROGRAMADEVEDARONOMECOMPLETONOFINAL.

Prof.CarlosGomes

*Guardartodososprogramasnumapasta/PENpoisseroobjectodeavaliaononaldoperodo!

AplicaesInform@casB12ano
Prof.CarlosGomes

Pascal

PROGRAMA9
PROGRAMPrograma_9;
VAR
Nome,apelido,nomecompleto:string[30];
BEGIN
Writeln(Escrevaoseuprimeironome:);
Read(nome);
Write(Escrevaoseuapelido:);
Read(apelido);
Nomecompleto:=nome+apelido;
Writeln(oseunomecompleto,nomecompleto);
Readln;
END.

Prof.CarlosGomes

*Guardartodososprogramasnumapasta/PENpoisseroobjectodeavaliaononaldoperodo!

AplicaesInform@casB12ano
Prof.CarlosGomes

Pascal

PROGRAMA10
FAAUMPROGRAMAQUEPERMITANOFINALOBTEROVALORTOTAL(PREO)DO
PRODUTOEXISTENTEEMSTOCK:TOTAL=QUANTIDADE*PREO
PARATAL,OPROGRAMAPEDEAOUTILIZADORPARAINTRODUZIR:
ONOMEDOPRODUTO(DESIGNAO);
ASUAQUANTIDADE(EMUNIDADES);
EOSEUPREO(UNIDADE);

Prof.CarlosGomes

*Guardartodososprogramasnumapasta/PENpoisseroobjectodeavaliaononaldoperodo!

AplicaesInform@casB12ano
Prof.CarlosGomes

Pascal

PROGRAMA10
PROGRAMprograma_10;
VAR
Quanodade:integer;
total,preco:real;
Produto:string;
BEGIN
Writeln(Digiteadesignacaodoproduto:);
Readln(produto);
Writeln(Digiteaquanodadedoproduto:);
Readln(quanodade);
Writeln(Digiteoprecodoproduto:);
Readln(preco);
Total:=quanodade*preco;
Writel(Ovalortotaldoproduto,produto,,total);
Readln;
END.
Prof.CarlosGomes

*Guardartodososprogramasnumapasta/PENpoisseroobjectodeavaliaononaldoperodo!

AplicaesInform@casB12ano
Prof.CarlosGomes

Pascal

COMANDOSDEDECISO

SEENTO/IF...THEN

A estrutura de deciso SE/IF normalmente vem acompanhada de um


comando,ouseja,sedeterminadacondioforsa@sfeitapelocomandoSE/IF
entoexecutedeterminadocomando.

Prof.CarlosGomes

AplicaesInform@casB12ano
Prof.CarlosGomes

Pascal

SEENTOSENO/IF...THEN...ELSE

SEMDIA>=5.0ENTO

ALUNOAPROVADO
SENO

ALUNOREPROVADO

Prof.CarlosGomes

AplicaesInform@casB12ano
Prof.CarlosGomes

Pascal

SEENTOSENO/IF...THEN...ELSE

IFMEDIA>=5Then
IFMEDIA>=7.0then
Text1=AlunoAPROVADO
ELSE
Text1=AlunoNecessitafazer
outraAvaliao
END
ELSE
Text1=AlunoREPROVADO
END.

Prof.CarlosGomes

AplicaesInform@casB12ano
Prof.CarlosGomes

Pascal

ESTRUTURASDESELECO

HdoiscomandoscondicionaisemPascal:IfeCase.
OcomandoIfocomandocondicionalcomum.Elepossuiduasformas:
If<condio>Then<comando1>;
e
If<condio>Then<comando1>Else<comando2>;
Qualquerexpressorelacionaloubooleanapodeserusadacomouma<condio>.
Nosegundocasoseacondioverdadeira(true),entoo<comando1>executadosenoo
<comando2>executado.Exemplo:
If(temperatura>37)
ThenWriteLn('Gripepossvel')
ElseWriteLn('Tudobem!');
Prof.CarlosGomes

AplicaesInform@casB12ano
Prof.CarlosGomes

Pascal

PROGRAMA11
FAAUMPROGRAMAEMQUEPEDIDOAOUTILIZADORPARAINTRODUZIROSEUPESO.
SEOPESOFORMENORQUE70OPROGRAMADIZ:VOCEESTOPTIMO!.
SEOPESOFORMAIOROUIGUALQUE70OPROGRAMADIZ:VOCEPRECISADEDIETA!

Prof.CarlosGomes

*Guardartodososprogramasnumapasta/PENpoisseroobjectodeavaliaononaldoperodo!

AplicaesInform@casB12ano
Prof.CarlosGomes

Pascal

PROGRAMA11
PROGRAMprograma_11;
VAR
Peso:integer;
BEGIN
Writeln(introduzaoseupeso:);
Readln(peso);
Ifpeso<70then
Writeln(Voceestopomo);
Else
Writeln(Voceprecisadedieta!);
Readln;
END.

Prof.CarlosGomes

*Guardartodososprogramasnumapasta/PENpoisseroobjectodeavaliaononaldoperodo!

AplicaesInform@casB12ano
Prof.CarlosGomes

Pascal

PROGRAMA11B
FAAUMPROGRAMAEMQUEPEDIDOAOUTILIZADORPARAINTRODUZIROSEU
PESOEOSEUNOME.
DEPOIS,ATRAVSDACONDIOPESO<70DEVERSERDETERMINADOSEOPESO
INSERIDOINFERIORA70KG.CASOSEJA,CALCULADAEAPRESENTADAADIFERENA
ENTREOPESOINSERIDOEOS70KG.(CaroNOMEadiferena...)
CASOCONTRRIOOPROGRAMACONTINUAASUAEXECUO.
OPROGRAMATERMINASEMPRECOMAAPRESENTAODAMENSAGEM
OPROGRAMAVAITERMINAR.

Prof.CarlosGomes

*Guardartodososprogramasnumapasta/PENpoisseroobjectodeavaliaononaldoperodo!

AplicaesInform@casB12ano
Prof.CarlosGomes

Pascal

PROGRAMA11B

PROGRAMprograma_11b;
VAR
Dif,peso:real;
Nome:string;
BEGIN

Writeln(Ol.Digiteoseunome);
Readln(nome);
Writeln(Digiteoseupeso);
Readln(peso);
Ifpeso<70then
Begin
Dif:=70peso;
Writeln(Faltaao,nome,,dif,Kgparaaongiros70Kg);
End;
Writeln(OProgramaVaiTerminar);
Readln;
END.
Prof.CarlosGomes

*Guardartodososprogramasnumapasta/PENpoisseroobjectodeavaliaononaldoperodo!

AplicaesInform@casB12ano
Prof.CarlosGomes

Pascal

PROGRAMA12
FAAUMPROGRAMAEMQUEPEDIDOAOUTILIZADORPARAINTRODUZIRUMNMERO
SEONMEROFORSUPERIORA10EINFERIORA100ENTOINFORMAQUEONMERO
ESTENTRE10e100.

Prof.CarlosGomes

*Guardartodososprogramasnumapasta/PENpoisseroobjectodeavaliaononaldoperodo!

AplicaesInform@casB12ano
Prof.CarlosGomes

Pascal

PROGRAMA12
PROGRAMprograma_12;
VAR
a:integer;
BEGIN
Writeln(introduzaumnmero:);
Readln(a);
If(a>10)and(a<100)then
Writeln(Onmeroqueintroduziuestentre10e100);
Readln;
END.

*PodemseruolizadosasinstruesAnd;Or;
Prof.CarlosGomes

*Guardartodososprogramasnumapasta/PENpoisseroobjectodeavaliaononaldoperodo!

AplicaesInform@casB12ano
Prof.CarlosGomes

Pascal

PROGRAMA13
FAAUMPROGRAMAQUE,AOSERINTRODUZIDOUMNMEROOMESMOINFORMESE
ONMEROPOSITIVO,NEGATIVOouZERO.

Prof.CarlosGomes

*Guardartodososprogramasnumapasta/PENpoisseroobjectodeavaliaononaldoperodo!

AplicaesInform@casB12ano
Prof.CarlosGomes

Pascal

PROGRAMA13
PROGRAMprograma_13;
VAR
a:integer;
BEGIN
Writeln(introduzaumnmero:);
Readln(a);
Ifi>0thenWriteln(Posiovo)
Else
Ifi<0thenwriteln(Negaovo)
Elsewriteln(Zero);
Readln;
END.

Prof.CarlosGomes

*Guardartodososprogramasnumapasta/PENpoisseroobjectodeavaliaononaldoperodo!

AplicaesInform@casB12ano
Prof.CarlosGomes

ESTRUTURASDESELECOMLTIPLA
OcomandoCasepossuiduasformas:
Case<seletor_de_expresso>Of
<listadeconstantes1>:<comando_1>;
<listadeconstantes2>:<comando_2>;
<listadeconstantes3>:<comando_3>;
.......................................................
<listadeconstantesn>:<comando_n>;
End;
E:
Case<seletor_de_expresso>Of
<listadeconstantes1>:<comando_1>;
<listadeconstantes2>:<comando_2>;
<listadeconstantes3>:<comando_3>;
.......................................................
<listadeconstantesn>:<comando_n>;
Else
<comando>;
End;
Oselectorpodeserqualquer@poescalar,exceptorealoustring.Exemplos:
CaseiOf
1,3,5,7,9:WriteLn('Nmerompar');
Prof.CarlosGomes
0,2,4,6,8:WriteLn('Nmeropar');
End;

Pascal

AplicaesInform@casB12ano
Prof.CarlosGomes

Pascal

ESTRUTURASDESELECOMLTIPLA
CaseiOf
'I':WriteLn('Incluso');
'D':WriteLn(Eliminao');
'E':WriteLn('Edio');
Else
WriteLn('CdigoIncorreto.Digitenovamenteaopodesejada');
End;

Prof.CarlosGomes

AplicaesInform@casB12ano
Prof.CarlosGomes

Pascal

PROGRAMA14
FAAUMPROGRAMAQUEPERGUNTEAOUTILIZADORQUALDOSSEGUINTESFRUTOSGOSTA
MAIS:
AAnans
BBanana
CCco
APSAESCOLHAATRAVSDADIGITAODOCARACTERNOTECLADOOPROGRAMADEVE
RESPONDERCOMTUGOSTASDE...
SEAESCOLHARECAIRNUMOUTROCARACTERQUENOOSINDICADOSOPROGRAMA
DEVERESPONDERCOMFIZESTEUMAESCOLHAQUENOVLIDA.

Prof.CarlosGomes

*Guardartodososprogramasnumapasta/PENpoisseroobjectodeavaliaononaldoperodo!

AplicaesInform@casB12ano
Prof.CarlosGomes
PROGRAMA14
PROGRAMprograma_14;
UsesCrt;
VARescolha:char;
BEGIN
Writeln(Quefrutodosseguintesquegostasmais?);
Writeln(AAnans:);
Writeln(BBanana.);
Writeln(CCco.);
Escolha:=ReadKey;
Caseescolhaof
a:writeln(Tugostasdeanans);
b:writeln(Tugostasdebananas);
c:writeln(Tugostasdecco);
Else
Writeln(Fizesteumaescolhaquenovlida);
End;
Readln;
Prof.CarlosGomes
END.

*Guardartodososprogramasnumapasta/PENpoisseroobjectodeavaliaononaldoperodo!

Pascal

AplicaesInform@casB12ano
Prof.CarlosGomes

Pascal

ESTRUTURASDEREPETIO(LOOPS)
Estas estruturas permitem repe@r um conjunto de instrues de um programa,
controladopeloresultadolgicodaavaliaodeumacondioouexpresso.
Podemseru@lizadasasintrues:
FORTODOouFORDOWNTODO
WHILEDO
REPEATUNTILL

Prof.CarlosGomes

AplicaesInform@casB12ano
Prof.CarlosGomes

Pascal

ESTRUTURASDEREPETIO(LOOPS)
Instruofor
OcomandoFORexecutarepe@@vamenteumcomandoenquanto
atribudoumasriedevaloresaumavariveldecontrole(contadordo
FOR).

Prof.CarlosGomes

AplicaesInform@casB12ano
Prof.CarlosGomes

Pascal

PROGRAMA15
CRIEUMPROGRAMAQUECALCULEAMDIADEUMADETERMINADAQUANTIDADEDE
NMEROSINTEIROSINSERIDOSPELOUTILIZADOR.
OPROGRAMACOMEAPORPERGUNTARAOUTILIZADORQUANTOSNMEROSPRETENDE
INSERIR

Prof.CarlosGomes

*Guardartodososprogramasnumapasta/PENpoisseroobjectodeavaliaononaldoperodo!

AplicaesInform@casB12ano
Prof.CarlosGomes

Pascal

PROGRAMA15
PROGRAMprograma_15;
VARi,n,soma,num:integer;

media:real;
BEGIN
Writeln(Indiquequantosnumerosinteirosquerdigitar:);
Readln(n);
Soma:=0;
Fori:=1TonDo
Begin
Writeln(Indiqueumnumerointeiro);
Readnl(num);
Soma:=soma+num;
End;
Media:=soma/n;
Writeln(Amdiadosnmerosindicados:,media);
Readnl;
END.

Prof.CarlosGomes

*Guardartodososprogramasnumapasta/PENpoisseroobjectodeavaliaononaldoperodo!

AplicaesInform@casB12ano
Prof.CarlosGomes

Pascal

ESTRUTURASDEREPETIO(LOOPS)
InstruoWhiledo
Neste caso, o bloco de operaes ser
executado enquanto a condio x for
verdadeira. O teste da condio ser sempre
realizadoantesdequalqueroperao.

Prof.CarlosGomes

AplicaesInform@casB12ano
Prof.CarlosGomes

Pascal

PROGRAMA16
CRIEUMPROGRAMAQUEPEAAOUTILIZADORPARAINTRODUZIRNOMESEQUENOFINAL
INDIQUEONUMEROTOTALDENOMESINSERIDOS.
OPROGRAMADEVEPARARDESOMARQUANDOOUTILIZADORDIGITARFIM

Prof.CarlosGomes

*Guardartodososprogramasnumapasta/PENpoisseroobjectodeavaliaononaldoperodo!

AplicaesInform@casB12ano
Prof.CarlosGomes

Pascal

PROGRAMA16
PROGRAMprograma_16;
VARconta:integer;

nome:string;
BEGIN
Conta:=0;
Writeln(Digiteumnome);
Readln(nome);
Whilenome<>mDo
Begin
Conta:=conta+1;
Writeln(Digiteumnome);
Readln(nome);
End;
Writeln(Foramdigitados,conta,nomes);
Readnl;
END.

Prof.CarlosGomes

*Guardartodososprogramasnumapasta/PENpoisseroobjectodeavaliaononaldoperodo!

AplicaesInform@casB12ano
Prof.CarlosGomes

Pascal

ESTRUTURASDEREPETIO(LOOPS)
InstruoRepeatunol
Neste caso, o bloco de operaes ser executado enquanto o resultado da
avaliaonosejaverdadeira.Comoacondioouexpressolgicaavaliada
no nal da estrutura, sempre executado, pelo menos uma vez, o bloco de
instrues.

Prof.CarlosGomes

AplicaesInform@casB12ano
Prof.CarlosGomes

Pascal

PROGRAMA17
CRIEUMPROGRAMAPARAEQUACIONAROPERMETRODEUMRECTNGULOEMMETROS
PERIMETRO=2*(largura+comprimento)
NOFINALOPROGRAMADEVEPERGUNTARSEOUTILIZADORDESEJAEFECTUARNOVO
CLCULO.SESIMDEVEDIGITAR(S).SENO(N),OPROGRAMATERMINA.

Prof.CarlosGomes

*Guardartodososprogramasnumapasta/PENpoisseroobjectodeavaliaononaldoperodo!

AplicaesInform@casB12ano
Prof.CarlosGomes

Pascal

PROGRAMA17
PROGRAMprograma_17;
VARarea,perimetro,comp,larg:real;

resp:char;
BEGIN
Repeat
Writeln(Medidasdorectangulo);
Writeln(Indiquealarguraemmetro:);
Readln(larg);
Writeln(Indiqueocomprimentoemmetro);
Readln(comp);
Perimetro:=2*(larg+comp);
Writeln(Permetro=,perimetro,metro);
Writeln(Pretendeefectuarmaiscalculos(S/N));
Readnl(resp);
Unol(resp<>s);
END.
Prof.CarlosGomes

*Guardartodososprogramasnumapasta/PENpoisseroobjectodeavaliaononaldoperodo!

AplicaesInform@casB12ano
Prof.CarlosGomes

Pascal

ALGUNS COMANDOS/FUNES ExTRA:


DESVIOINCONDICIONAL
GOTO(Vpara)

CASO:
Programbom;
Usescrt;
Varletra:char;
Label1;

U@lizaLABEL(Rtulo)seguidode:
paraforarumretornodoprograma
Paraumadeterminadalinha.
Deveestarnasdeclaraesepodeser
Qualqueriden@cadorouinteiroentre
0e9999.
Asintaxedocomando
Goto<nomedortulo>;

begin
1:writeln(Bomdia!Introduzaumcaracter);
Readln(a)
Letra:=readkey;
Caseletraof
a:goto1;
Elsewriteln(Adeus!);
End;
End.

Prof.CarlosGomes

*Guardartodososprogramasnumapasta/PENpoisseroobjectodeavaliaononaldoperodo!

AplicaesInform@casB12ano
Prof.CarlosGomes

Pascal

FIMDAPRIMEIRAPARTE

Prof.CarlosGomes

*Guardartodososprogramasnumapasta/PENpoisseroobjectodeavaliaononaldoperodo!

AplicaesInform@casB12ano
Prof.CarlosGomes

Pascal

Paradeterminaronmerode
vogaisu@lizmosumcontador.
Acadapassofomoscomparando
oscaracteresumporume
quandoachmosumavogal
acrescentamos1aocontador.
Paraacederacadacaractere
dentrodoarray,precisamos
tambmdeumcontador.
Prof.CarlosGomes

AplicaesInform@casB12ano
Prof.CarlosGomes

Pascal
ARRAYS

Usamsearrayspararepresentarvariveisqueso:
Elementosdomesmoopo
Relacionadosentresi
Sobreosquaispretendemosfazeroperaessemelhantes
Quepretendemosrepresentarporumnomecomum

Osarrayspodemser:
Unidimensionais(chamadosdevectores)
Mul@dimensionais(chamadosdematrizes)

Cadacomponentedeumarrayumavarivelindividual
Possuiumnome(derivadodonomedoarray)
Possuiumopo(odo@pobasedoarray)
Possuiumvalor(manipuladocomoqualquervarivel)
Prof.CarlosGomes

AplicaesInform@casB12ano
Prof.CarlosGomes

Pascal
VECTORES

Sintaxe:
Type
tipo_array1 = array [ gama_de_valores1] of tipo_base1;
{define o tipo tipo_array1 como um vector de valores do tipo
tipo_base1 }
...
Var
nome_array1: tipo_array1;
{declarao de um tipo definido anteriormente, que um array}
nome_array2: array [gama_de_valores2] of tipo_base2;
{declarao explcita}

Umvectorsempredenidosobreumopobase

Quepodeserqualquer@podenidoemPascal
Queo@podascomponentesindividuaisdovector

Qualquer@poenumeradopodeservirparaagamadevalores

Exemplo:

Type tipolista= array [1..3] of real;


Var lista: tipolista;
Prof.CarlosGomes

Lista[1] Lista[2] Lista[3]


Lista

AplicaesInform@casB12ano
Prof.CarlosGomes

Pascal

VECTORESAplicao:
Cada elemento de um tipo estruturado
pode ser usado exactamente nas
mesmas situaes em que qualquer
outra varivel do mesmo tipo pode ser
usada
O ndice, que identifica a varivel
dentro do array, pode ser obtido por
qualquer expresso
que devolva um valor do mesmo tipo
que o usado na gama do array

Um array em Pascal tem um nmero


fixo de elementos
No possvel aceder a elementos fora
da gama que define o array

...
Readln(Lista[2]);
Lista[1]:= 2.0;
Lista[3]:= Lista[2]*3+Lista[1];
Writeln(Lista[3]);
...
...
N:=2;
Lista[3]:= Lista[N]+Lista[3-N];
...
...
For i:= 1 To 3 Do
If Lista[i]>0 Then
Writeln(i, Lista[i]:10:2);
...

Prof.CarlosGomes

AplicaesInform@casB12ano
Prof.CarlosGomes

Pascal

VECTORESAplicao:
Program mdia (input, output);
{programa que l um conjunto de valores e apresenta para cada um destes
a distncia deste valor mdia}
Const
dimensao = 8;
Type
ArrayReal = array[1..dimensao] of real;
Var
X: ArrayReal; media, soma: real; i: integer;
Begin
Writeln('Escreva ',dimensao,' nmeros reais');
Soma := 0;
For i:= 1 to dimensao do begin
Readln(X[i]); soma:= soma+X[i];
End;
Media := soma/dimensao;
Writeln('O valor da mdia ', mdia);
Writeln('Tabela de diferenas entre os elementos e a mdia');
Writeln('ndice':8, 'Valor':12, 'Diferena':20);
For i:= 1 to dimensao do Writeln(i:8,X[i]:12:2,(X[i]-media):20:2);
End.
Prof.CarlosGomes

AplicaesInform@casB12ano
Prof.CarlosGomes

Pascal
MATRIZES

Prof.CarlosGomes

AplicaesInform@casB12ano
Prof.CarlosGomes

Pascal
Gostaramos fazer um programa para
armazenar essa tabela no computador e
depois poder calcular, por exemplo, a mdia
detodasasnotasdetodososalunos.Inclusive
para saber o desempenho da turma inteira
poderamoscalcularamediadasmedias.
Em Pascal, uma matriz denida em forma
muitoparecidacomumvector:
Varnotas:array[1..10,1..8]ofreal;
O nmero 10 indica o nmero mximo de
linhasdamatrizeonmero8indicaonmero
mximo de colunas. Se no sabemos com
antecedncia qual ser o tamanho da nossa
matriz podemos reservar um nmero grande
comozemoscomosvectores.
Paramanterainformaocompletadatabela
no computador, poderamos armazenar
tambm os nomes dos alunos num vector de
string e as mdias dos alunos num vector de
nmerosreais.
Prof.CarlosGomes

AplicaesInform@casB12ano
Prof.CarlosGomes

Pascal
Paraacederaoselementosde
umamatrizu@lizamosdois
ndices:
Oprimeiroparadeniralinhae
osegundoparadeniracoluna.
Osvectoresematrizesso
bastanteusadosemclculos
matem@cos.
Noprogramaobservamosque
precisamossemprededois
ladosparapercorrertodosos
elementosdeumamatriz.
Quandoumladoestdentrode
outrolado,estessochamados
deladosaninhados.
muitocomumencontrarem
programasladosaninhamos,
especialmentequandose
trabalhacomvectorese
matrizes.
Prof.CarlosGomes

AplicaesInform@casB12ano
Prof.CarlosGomes

Pascal

MATRIZESArraysMulodimensionais:

OPascalpermitedenirarrays
commaisdoqueumadimenso
matrizes

Sintaxe:
type'po_array_mult1=array
[gama_valores1,
gama_valores2,...,
gama_valoresN]of'po_base;

Exemplo:
Type
TTab= array [1..4, 1..10] of
integer;
Var
Tab: TTab;

Tab[2,8]

Linha2

Nocasodeapenastermos2
dimensespodemosconsideraro
arraycomoumatabela
tradicional
Prof.CarlosGomes

Coluna8

AplicaesInform@casB12ano
Prof.CarlosGomes

Pascal

MATRIZESArraysMulodimensionais:
Var
VCubo: Array [1..7, 1..10, 'A'..'D'] of integer;
VCubo

Tabela'C'

Linha5

VCubo[5,9,'C']

VCubo[7,3,'A']

Coluna9
Prof.CarlosGomes

AplicaesInform@casB12ano
Prof.CarlosGomes

Pascal

RECORDSArraysMulodimensionais:

Ocasionalmenteconvenienteguardarinformao
relacionadaentresinumasestrutura,mesmoque
sejamde@posdiferentes
Exemplo:informaoacercadeumlivro:
Livro
Titulo
Autor
NdePginas
AnodeEdio
Preo

EmPascal:
Type Tlivro = record
Titulo: string[80];
Autor: string;
No_paginas: integer;
Ano_edicao: 1457..2002;
Preco: real;

End;

Paulo Melo

Prof.CarlosGomes

AplicaesInform@casB12ano
Prof.CarlosGomes

Pascal

RECORDSAplicao:
Sintaxe:

Type
ficha_util = record
BI: integer;
nome: string[80];
end;
...
Var
r1: ficha_util;
r2: record
campo1: tipo1;
...
campoN: tipoN;
end;

Cadacampodeumavarivelde@porecord
acedidopeloseunome:

...
Writeln('Introduza o seu nome');
Readln(r2.nome);
Writeln('Introduza o seu nmero de BI');
Readln(r2.BI);
...

possvelusaroutros@posestruturados
comoblocosdeconstruo(ex:arrayde
records):

...
Type
grupo_utils= array[1..100] of ficha_util;
Var
g: grupo_utils;
i: integer;
...
for i:= 1 to 100 do begin
Writeln('Utilizador: ', i);
Writeln('Nome: ', g[i].nome);
Writeln('Identidade:', g[i].nome);
end;
...

Aestruturaassimconstrudapodeserto
complexaquantosedeseje

Paulo Melo

Prof.CarlosGomes

AplicaesInform@casB12ano
Prof.CarlosGomes

Pascal

FIMDASEGUNDAPARTE

Paulo Melo

Prof.CarlosGomes

AplicaesInform@casB12ano
Prof.CarlosGomes

Pascal

MAISPROGRAMAS:

Prof.CarlosGomes

AplicaesInform@casB12ano
Prof.CarlosGomes

Pascal

Prof.CarlosGomes

AplicaesInform@casB12ano
Prof.CarlosGomes

Pascal

Prof.CarlosGomes

AplicaesInform@casB12ano
Prof.CarlosGomes

Pascal

Prof.CarlosGomes

AplicaesInform@casB12ano
Prof.CarlosGomes

Pascal

Prof.CarlosGomes

AplicaesInform@casB12ano
Prof.CarlosGomes

Pascal

Prof.CarlosGomes

AplicaesInform@casB12ano
Prof.CarlosGomes

Pascal

Prof.CarlosGomes

AplicaesInform@casB12ano
Prof.CarlosGomes

Pascal

Prof.CarlosGomes

AplicaesInform@casB12ano
Prof.CarlosGomes

Pascal

Prof.CarlosGomes

AplicaesInform@casB12ano
Prof.CarlosGomes

Pascal

Prof.CarlosGomes

AplicaesInform@casB12ano
Prof.CarlosGomes

Pascal

Prof.CarlosGomes

AplicaesInform@casB12ano
Prof.CarlosGomes

Pascal

Prof.CarlosGomes

AplicaesInform@casB12ano
Prof.CarlosGomes

Pascal

Prof.CarlosGomes