Professional Documents
Culture Documents
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
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
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
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:
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
...
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