Programas Em Pascal Para Estudo

download Programas Em Pascal Para Estudo

of 32

Transcript of Programas Em Pascal Para Estudo

  • 7/25/2019 Programas Em Pascal Para Estudo

    1/32

    Programas em Pascal

    Todos os programas que se seguem foram implementados usando o compilador Turbo Pascal .

    Neste programa o computador mostra na tela todos os caracteres do cdigo ASCII.

    PROGRAM Ascii(INPUT,OUTPUT);VAR i,n,val:INTEGER; c:CHAR;

    BEGIN n:=0; FOR i:=0 TO !" #O BEGIN n:=n$%; &RITE'N(i, * ,CHR(i), ); IF n= THEN BEGIN &RITE'N(c +aa c-n.in/a); REPEAT REA#'N(c); UNTI' c=c; n:=0; EN#; EN#; REA#'N

    EN#

    Neste programa indicando o nmero de lados de um polgono o computador indica de quetipo de polgono se trata. No caso do polgono ter mais de 3 lados tem que se indicar aindase os ngulos internos s!o iguais.

    PROGRAM O/.-sP-li1-n-s(INPUT,OUTPUT);VAR la2-s:INTEGER; 3i4Na-:CHAR;

    BEGIN &RITE(5/al - n/46- 26 la2-s 7 ); REA#'N(la2-s); CA3E la2-s OF %,: ; 8:&RITE(E /4 .ian1/l-); 9:BEGIN &RITE(Os an1/l-s in.6n-s sa- i1/ais 7 ); REA#'N(3i4Na-); IF 3i4Na-=3 THEN &RITE(E /a2a2-) E'3E &RITE(E l-san1-) EN#; !:&RITE(E /4 +6n.a1-n-) EN#; REA#'NEN#

  • 7/25/2019 Programas Em Pascal Para Estudo

    2/32

    Neste programa dado um nmero nde alunos o computador pede a nota de cada aluno e

    conta quantos t"m nota positi#a.

    PROGRAM N-.asP-si.ivas(INPUT,OUTPUT);VAR n,c-n.a,i,n-.a:INTEGER;BEGIN &RITE(5/an.-s 6s./2an.6s -.iv6a4 classi

  • 7/25/2019 Programas Em Pascal Para Estudo

    3/32

    Nos & seguintes programas s!o e'emplos da utili(a)!o de procedimentos na linguagem

    Pascal.

    PROGRAM Av-6%(INPUT,OUTPUT);

    PROCE#URE Ra4-;

    BEGIN

    &RITE'N(); &RITE'N(); &RITE'N(); &RITE'N()EN#;

    PROCE#URE T-nc-;

    BEGIN &RITE'N(I)EN#;

    BEGIN > Bl-c- Pinci+al ?

    Ra4-; T-nc-; Ra4-; T-nc-; a4-; &RITE'N(T); &RITE(T)EN#

    PROGRAM Av-6(INPUT,OUTPUT);

    PROCE#URE Ra4-(n:INTEGER);

    VAR i,:INTEGER;

    BEGIN FOR i:=% TO n #O BEGIN FOR :=% TO i #O &RITE(); &RITE'N EN#;EN#;

    PROCE#URE T-nc-;

    BEGIN

    &RITE'N(I)EN#;

    BEGIN > Bl-c- Pinci+al ? Ra4-(8); T-nc-; Ra4-(9); T-nc-; a4-(!); &RITE'N(T); &RITE(T)EN#

  • 7/25/2019 Programas Em Pascal Para Estudo

    4/32

    PROGRAM Av-68(INPUT,OUTPUT);VAR .%,.,.8:INTEGER;

    PROCE#URE Ra4-(n:INTEGER);VAR i,:INTEGER;

    BEGIN FOR i:=% TO n #O BEGIN FOR :=% TO i #O &RITE();

    &RITE'N EN#;EN#;

    PROCE#URE T-nc-;

    BEGIN &RITE'N(I)EN#;

    BEGIN > Bl-c- Pinci+al ? &RITE(5/al - .a4an@- +aa - %D a4- 7 ); REA#'N(.%);

    &RITE(5/al - .a4an@- +aa - D a4- 7 ); REA#'N(.); &RITE(5/al - .a4an@- +aa - 8D a4- 7 ); REA#'N(.8); Ra4-(.%); T-nc-; Ra4-(.); T-nc-; a4-(.8); &RITE'N(T); &RITE(T)EN#

    PROGRAM Av-69(INPUT,OUTPUT);VAR .%,.,.8,c-n.a%,c-n.a,c-n.a8,.c-n.a:INTEGER;

    PROCE#URE Ra4-(n:INTEGER; VAR c:INTEGER);VAR i,:INTEGER;

    BEGIN c:=0; FOR i:=% TO n #O BEGIN FOR :=% TO i #O BEGIN

    &RITE(); c:=c$%; EN#; &RITE'N EN#;EN#;

    PROCE#URE T-nc-;

    BEGIN &RITE'N(I)EN#;

  • 7/25/2019 Programas Em Pascal Para Estudo

    5/32

    BEGIN > Bl-c- Pinci+al ? &RITE(5/al - .a4an@- +aa - %D a4- 7 ); REA#'N(.%); &RITE(5/al - .a4an@- +aa - D a4- 7 ); REA#'N(.); &RITE(5/al - .a4an@- +aa - 8D a4- 7 ); REA#'N(.8); Ra4-(.%,c-n.a%); T-nc-; Ra4-(.,c-n.a);

    T-nc-; a4-(.8,c-n.a8); .c-n.a:=c-n.a%$c-n.a$c-n.a8; &RITE'N(T); &RITE'N(T); &RITE'N(Eis.64 ,.c-n.a,

  • 7/25/2019 Programas Em Pascal Para Estudo

    6/32

    *utro e'emplo do uso de fun),es e procedimentos em Pascal.

    PROGRAM N/4#i1i.-s(INPUT,OUTPUT);VAR val-%,val-,val-8,val-9:INTEGER;

    PROCE#URE '6i./a(n:INTEGER;VAR n/4:INTEGER);

    BEGIN

    REPEAT &RITE(Esc6va - ,n,D val- * ); REA#'N(n/4); UNTI' (n/4*=0) AN# (n/4%0000);EN#;

    FUNCTION C-n.a2i1i.-s(n/4:INTEGER):INTEGER;VAR c,/-c:INTEGER;

    BEGIN c:=0; REPEAT /-c:=n/4 #IV %0; c:=c$%; n/4:=/-c; UNTI' /-c=0; C-n.a2i1i.-s:=c;EN#;

    PROCE#URE Esci.a(n/4,c-n.a:INTEGER);

    BEGIN &RITE'N(O val- ,n/4, .64 ,c-n.a, 2J1i.-s);EN#;

    BEGIN > l-c- +inci+al ? '6i./a(%,val-%); '6i./a(,val-); '6i./a(8,val-8); '6i./a(9,val-9); Esci.a(val-%,C-n.a2i1i.-s(val-%)); Esci.a(val-,C-n.a2i1i.-s(val-)); Esci.a(val-8,C-n.a2i1i.-s(val-8)); Esci.a(val-9,C-n.a2i1i.-s(val-9));EN#

    Ainda outro e'emplo do uso de func,es e procedimentos em Pascal.

    PROGRAM #ivis-6s269val-6s(INPUT,OUTPUT);VAR val-%,val-,val-8,val-9:INTEGER;

    PROCE#URE '6i./a(n:INTEGER;VAR n/4:INTEGER);

    BEGIN REPEAT &RITE(Esc6va - ,n,D val- * ); REA#'N(n/4); UNTI' (n/4*0) AN# (n/4%00%);EN#;

    FUNCTION C-n.a2ivis-6s(n/4:INTEGER):INTEGER;VAR 2ivis-,c:INTEGER;

  • 7/25/2019 Programas Em Pascal Para Estudo

    7/32

    BEGIN c:=0; FOR 2ivis-:=n/4 #O&NTO % #O IF n/4 MO# 2ivis-=0 THEN c:=c$%; C-n.a2ivis-6s:=c;EN#;

    PROCE#URE Esci.a(n/4,c-n.a:INTEGER);

    BEGIN

    &RITE'N(O val- ,n/4, .64 ,c-n.a, 2ivis-6s);EN#;

    BEGIN > l-c- +inci+al ? '6i./a(%,val-%); '6i./a(,val-); '6i./a(8,val-8); '6i./a(9,val-9); Esci.a(val-%,C-n.a2ivis-6s(val-%)); Esci.a(val-,C-n.a2ivis-6s(val-)); Esci.a(val-8,C-n.a2ivis-6s(val-8)); Esci.a(val-9,C-n.a2ivis-6s(val-9));EN#

    * seguinte programa mostra os di#isores inteiros de um dado nmero.

    PROGRAM #ivis-6sIn.6i-s(INPUT,OUTPUT);VAR n,2ivis-,6s.-:INTEGER;BEGIN &RITE(5/al - n/46- 26 /6 /6 sa6 -s 2ivis-6s in.6i-s 7 ); REA#'N(n); FOR 2ivis-:=n #O&NTO % #O BEGIN

    6s.-:=n MO# 2ivis-; IF 6s.-=0 THEN &RITE'N(#ivis- * ,2ivis-) EN#;EN#

    * seguinte programa calcula a ra( quadrada de um dado nmero.

    PROGRAM RaiK5/a2a2a(INPUT,OUTPUT);VAR n,aiK,6-:REA';BEGIN

    &RITE(5/al - nL46- 26 /6 /6 calc/la a aiK /a2a2a 7 ); REA#'N(n); aiK:=35RT(n); aiK:=(naiK$aiK); 6-:=(n35R(aiK))%; IF 6-%E0" THEN &RITE'N(A aiK 26 ,n, ,aiK, ,6-) E'3E &RITE'N(Eis.6 /4 6- * %0E0")EN#

  • 7/25/2019 Programas Em Pascal Para Estudo

    8/32

    * seguinte programa calcula a soma dos dgitos de um dado numero.

    PROGRAM 3-4a#i1i.-s(INPUT,OUTPUT);

    VAR n/4,6s.-,6s.-.al:INTEGER;

    BEGIN 6s.-.al:=0;

    &RITE(Esc6va - nL46- 26 /6 /6 s-4a -s 2i1i.-s * ); REA#'N(n/4); REPEAT 6s.-:=n/4 MO# %0; n/4:=n/4 #IV %0; 6s.-.al:=6s.-.al$6s.- UNTI' n/46s.-; &RITE'N(A s-4a ,6s.-.al$n/4)EN#

    * seguinte programa calcula a m+dia de um numero n de nmeros inteiros.

    PROGRAM M62iaIn.6i-s(INPUT,OUTPUT);VAR n,s-4a,n/4,462ia,a/:INTEGER;BEGIN s-4a:=0; &RITE(#6 /an.-s n/46-s /6 calc/la a 462ia 7 ); REA#'N(n); a/:=n; &HI'E n*0 #O BEGIN &RITE(5/al - nL46- 7 ); REA#'N(n/4); s-4a:=s-4a$n/4;

    n:=n% EN#; 462ia:=s-4a #IV a/; &RITE'N(A 42ia 2-s ,n, n/46-s ,462ia)EN#

    * seguinte programa conta quantos dos nmeros introdu(idos s!o di#is#eis por -.

    PROGRAM N/46-s#iv!(INPUT,OUTPUT);VAR n,n/4,c-n.a,6s/l.:INTEGER;

    BEGIN c-n.a:=0; 6s/l.:=0; &RITE(5/an.-s nL46-s /6 2a 6n.a2a 7 ); REA#'N(n); REPEAT c-n.a:=c-n.a$%; &RITE(5/al - nL46- 7 ); REA#'N(n/4); IF n/4 MO# ! = 0 THEN 6s/l.:=6s/l.$% UNTI' c-n.a=n; &RITE(Eis.64 ,6s/l., nL46-s 2ivisiv6is +- !)EN#

  • 7/25/2019 Programas Em Pascal Para Estudo

    9/32

    * programa seguinte conta quantas #e(es o caracter a foi digitado.

    PROGRAM Caac.6a(INPUT,OUTPUT);VAR n,c-n.a:INTEGER; ca:CHAR;BEGIN c-n.a:=0; FOR n:=% TO %0 #O

    BEGIN &RITE(Esc6va - ,n,D caac.6 * ); REA#'N(ca); IF ca=a THEN c-n.a:=c-n.a$% EN#; &RITE(O caac.6 a

  • 7/25/2019 Programas Em Pascal Para Estudo

    10/32

    * seguinte programa coloca no lugar das letras cur#as introdu(idas um asterisco.

    PROGRAM '6.asC/vas(INPUT,OUTPUT);

    VAR n,n/4l6.as:INTEGER; ca:CHAR;

    BEGIN

    &RITE(5/al - nL46- 26 l6.as /6 a lin@a 26 .6.- vai .6 7 ); REA#'N(n/4l6.as); FOR n:=% TO n/4l6.as #O BEGIN REA#(ca); CA3E ca OF B#:ca:=; G:ca:=; :ca:=; O3:ca:=; U:ca:=; EN#; &RITE(ca); EN#;EN#

    * seguinte programa mostra os multiplos de 3 e de - entre 12 e 1222.

    PROGRAM M/l.i+l-s2686!(INPUT,OUTPUT);VAR c,n,4/l.8,4/l.!:INTEGER; ca:CHAR;BEGIN c:=0; &RITE'N(NUM MU'T8 MU'T!);

    FOR n:=%0 TO %000 #O BEGIN 4/l.8:=n MO# 8; 4/l.!:=n MO# !; IF (4/l.8=0) AN# (4/l.!*0) THEN &RITE'N(n, ); IF (4/l.!=0) AN# (4/l.8*0) THEN &RITE'N(n, ); IF (4/l.8=0) AN# (4/l.!=0) THEN &RITE'N(n, ); IF ((4/l.8=0) AN# (4/l.!=0)) OR (4/l.8=0) OR (4/l.!=0) THEN c:=c$%; IF c=8 THEN BEGIN &RITE(c +aa c-n.in/a ); REPEAT REA#'N(ca) UNTI' ca=c;

    c:=0; &RITE'N(NUM MU'T8 MU'T!) EN#; EN#; REA#'NEN#

  • 7/25/2019 Programas Em Pascal Para Estudo

    11/32

    * seguinte programa desen0a um losango conforme o taman0o escol0ido para o lado.

    PROGRAM '-san1-(INPUT,OUTPUT);VAR la2-,4,a,:INTEGER;BEGIN REPEAT &RITE(5/al - val- 2- la2- 2- l-san1- (6n.6 % 6 %) 7 ); REA#'N(la2-)

    UNTI' (la2-*0) AN# (la2-%8); IF la2-*% THEN BEGIN 4:=0; a:=la2-; &RITE'N(:la2-); FOR la2-:=la2-% #O&NTO % #O BEGIN 4:=4$; &RITE'N(:la2-,:4); EN#; la2-:=la2-$%; 4:=4; FOR :=la2- TO a% #O BEGIN &RITE'N(:,:4); 4:=4; EN#; &RITE'N(:a); EN# E'3E &RITE'N();EN#

    * programa seguinte mostra uma pirmide de nmeros.

    PROGRAM Pia4i2626N/46-s(INPUT,OUTPUT);

    VAR n/4lin@as,a/,c-l/na,c-n.a,c-n.ac-n.a:INTEGER;

    BEGIN REPEAT &RITE(5/al - nL46- 26 lin@as /6 a +iQ4i26 vai .6 (6n.6 % 6 ) 7 ); REA#'N(n/4lin@as); UNTI' (n/4lin@as*0) AN# (n/4lin@as%0); a/:=n/4lin@as; &RITE'N(%:n/4lin@as);

    FOR c-l/na:= TO n/4lin@as #O BEGIN IF a/*0 THEN &RITE( :a/); a/:=a/%; FOR c-n.a:=% TO c-l/na #O &RITE(c-n.a); FOR c-n.ac-n.a:=c-l/na% #O&NTO % #O &RITE(c-n.ac-n.a); &RITE'N EN#EN#

  • 7/25/2019 Programas Em Pascal Para Estudo

    12/32

    * programa que se segue desen0a uma recta de asteriscos consoante as coordenadas

    introdu(idas.

    PROGRAM '[email protected](INPUT,OUTPUT);U3E3 c.;VAR al6,al6,c-4+al6:INTEGER; 2i6cal6:CHAR;

    PROCE#URE 'in@a(,,c-4+:INTEGER;2i6c:CHAR);VAR i,:INTEGER;

    BEGIN CA3E 2i6c OF H,@:BEGIN FOR i:= TO c-4+$% #O BEGIN GOTOS(i,); &RITE() EN#; EN#;

    V,v:BEGIN FOR := TO c-4+$% #O BEGIN GOTOS(,); &RITE() EN#; EN#; EN#;EN#;

    BEGIN > l-c- +inci+al ? C'R3CR; REPEAT

    &RITE(Esc6va - val- 26 2a -i164 (*=%) * ); REA#'N(al6) UNTI' al6*0; REPEAT &RITE(Esc6va - val- 26 2a -i164 (*=%) * ); REA#'N(al6) UNTI' al6*0; &RITE(Esc6va - c-4+i46n.- 2a lin@a * ); REA#'N(c-4+al6); &RITE(Esc6va a 2i6c- ( @@-iK-n.al, vv6.ical ) * ); REA#'N(2i6cal6); 'in@a(al6,al6,c-4+al6,2i6cal6)EN#

  • 7/25/2019 Programas Em Pascal Para Estudo

    13/32

    * programa seguinte desen0a um rectangulo formado por asteriscos.

    PROGRAM R6c.an1/l-26As.6isc-s(INPUT,OUTPUT);U3E3 c.;VAR al6,al6,c-4+al6,la2-al6:INTEGER;

    PROCE#URE R6c.an1/l-(,,c-4+6c.,la2-6c.:INTEGER);

    PROCE#URE 'in@a(%,%,c-4+:INTEGER;2i6c:CHAR);VAR i,:INTEGER;

    BEGIN CA3E 2i6c OF H,@:BEGIN FOR i:=% TO c-4+$%% #O BEGIN GOTOS(i,%); &RITE() EN#;

    EN#; V,v:BEGIN FOR :=% TO c-4+$%% #O BEGIN GOTOS(%,); &RITE() EN#; EN#; EN#;EN#;

    BEGIN > #6s6n@- 2- R6c.Qn1/l- ? 'in@a(,,c-4+6c.,@);

    'in@a(,,la2-6c.,v); 'in@a($c-4+6c.%,,la2-6c.,v); 'in@a(,$la2-6c.%,c-4+6c.,@);EN#;

    BEGIN > l-c- +inci+al ? C'R3CR; REPEAT &RITE(Esc6va a c--26na2a 2- can.- s/+6i- 6s/62- 2- R6c.Qn1/l- (*=%) * ); REA#'N(al6) UNTI' al6*0; REPEAT &RITE(Esc6va a c--26na2a 2- can.- s/+6i- 6s/62- 2- R6c.Qn1/l- (*=%) * );

    REA#'N(al6) UNTI' al6*0; REPEAT &RITE(Esc6va - val- 2- c-4+i46n.- 2- R6c.Qn1/l- ( c-4+i46n.-*0 ) * ); REA#'N(c-4+al6) UNTI' c-4+al6*0; REPEAT &RITE(Esc6va - val- 2- la2- 2- R6c.Qn1/l- ( la2-*0 ) * ); REA#'N(la2-al6) UNTI' la2-al6*0; C'R3CR; R6c.an1/l-(al6,al6,c-4+al6,la2-al6)EN#

  • 7/25/2019 Programas Em Pascal Para Estudo

    14/32

    * programa seguinte desen0a um triangulo.

    PROGRAM Tian1/l-(INPUT,OUTPUT);VAR :INTEGER;

    PROCE#URE #[email protected]/l-(as6:INTEGER);VAR i,,6:INTEGER;

    BEGIN FOR i:=% TO as6 #O &RITE(); &RITE'N; 6:=%; REPEAT as6:=as6; &RITE( :6);

    FOR :=% TO as6 #O &RITE(); &RITE'N; 6:=6$% UNTI' as6=%;EN#;

    BEGIN > +-1a4a +inci+al ? REPEAT &RITE'N; &RITE(5/al a as6 2- .iQn1/l- ( as6 6n.6 % 6 0 6 26 nL46- J4+a) 7 ); REA#'N() UNTI' (*0) AN# (%) AN# (O##()=./6);

    #[email protected]/l-(); REA#'NEN#

    Com o seguinte programa pode simular$se as operac,es de uma calculadora.

    PROGRAM Calc/la2-a(INPUT,OUTPUT);

    VAR .-.al-+6,464-:REA';

    vai

  • 7/25/2019 Programas Em Pascal Para Estudo

    15/32

    UNTI' -+6a2-==; &RITE(.-.al-+6)EN#

    * seguinte programa calcula o ma'imo di#isor comum entre dois numeros.

    PROGRAM Mai4-#ivis-C-4/4(INPUT,OUTPUT);

    VAR n%,n,2ivis-,6s.-%,6s.-,42c:INTEGER;

    BEGIN REPEAT &RITE(Esc6va - %D nL46- * ); REA#'N(n%) UNTI' n%*0; REPEAT &RITE(Esc6va - D nL46- * ); REA#'N(n) UNTI' n*0; IF n*n% THEN 2ivis-:=n% E'3E 2ivis-:=n; REPEAT 6s.-%:=n% MO# 2ivis-; 6s.-:=n MO# 2ivis-; IF (6s.-%=0) AN# (6s.-=0) THEN BEGIN 42c:=2ivis-; 2ivis-:=% EN#; 2ivis-:=2ivis-% UNTI' 2ivis-=0; &RITE'N(O M i4- #ivis- C-4/4 6n.6 ,n%, 6 ,n, ,42c)EN#

    * seguinte programa di($nos se o numero introdu(ido e capicua ou nao. 'emplos de

    numeros que sao capicuas &4&5 31135 6&6.

    PROGRAM Ca+ic/a(INPUT,OUTPUT);

    VAR n,+-.6ncias,i,n/4,a/n/4,.-.aln/4c-n.,/-c,6s.-,n/46-c-n.:&OR#;

    BEGIN &RITE(5/an.-s 21i.-s .64 - s6/ nW46- 7 ); REA#'N(n); +-.6ncias:=%; FOR i:=% TO n% #O BEGIN +-.6ncias:=+-.6ncias%0 EN#; &RITE(Esc6va - nL46- * ); REA#'N(n/4); a/n/4:=n/4; .-.aln/4c-n.:=0;

    REPEAT /-c:=n/4 #IV %0; 6s.-:=n/4 MO# %0; n/46-c-n.:=6s.-+-.6ncias;

  • 7/25/2019 Programas Em Pascal Para Estudo

    16/32

    .-.aln/4c-n.:=.-.aln/4c-n.$n/46-c-n.; +-.6ncias:=+-.6ncias #IV %0; n/4:=/-c; UNTI' /-c=0; IF .-.aln/4c-n.=a/n/4 THEN &RITE'N(O nW46- Ca+ic/a) E'3E &RITE'N(O nW46- n- Ca+ic/a);EN#

    *s tr"s seguintes programas s!o e'emplo da utili(a)!o de #ari%#eis booleanas.

    PROGRAM B--l6an%(INPUT,OUTPUT);VAR in.6i:INTEGER; c-n.in/a:BOO'EAN;

    BEGIN REPEAT &RITE(Esc6va /4 nW46- in.6i- );REA#'N(in.6i); IF (in.6i=%0) OR (in.6i*0) THEN c-n.in/a:=FA'3E E'3E c-n.in/a:=TRUE; &HI'E c-n.in/a #O BEGIN

    &RITE'N(in.6i);in.6i:=in.6i$%; c-n.in/a:=in.6i=0 EN#; UNTI' NOT c-n.in/aEN#

    PROGRAM B--l6an(INPUT,OUTPUT);VAR val-l-1:BOO'EAN; ca:CHAR;

    BEGIN val-l-1:=TRUE;

    &HI'E val-l-1 #O BEGIN &RITE'N(U4a cX- .64 9 +a.as (sn) 7); REA#'N(ca); CA3E ca OF s,3:BEGIN &RITE'N(M/i.- 64 YZ%99; v62a26); val-l-1:=FA'3E EN#; n,N:BEGIN &RITE'N(Es. 4al YZ%99; 46n.ia); &RITE'N(T64 /6 6s+-n26 -/.av6K) EN#;

    E'3E BEGIN &RITE'N(NX- c-n@6[- 6ss6 caac.6); &RITE'N(T64 /6 6s+-n26 -/.av6K) EN#; EN#; EN#;EN#

  • 7/25/2019 Programas Em Pascal Para Estudo

    17/32

    PROGRAM B--l6an8(INPUT,OUTPUT);VAR val-l-1:BOO'EAN; ca:CHAR;

    BEGIN val-l-1:=TRUE; REPEAT BEGIN &RITE'N(U4a cX- .64 9 +a.as (sn) 7); REA#'N(ca);

    CA3E ca OF s,3:BEGIN &RITE'N(M/i.- 64 YZ%99; v62a26); val-l-1:=FA'3E EN#; n,N:BEGIN &RITE'N(Es. 4al YZ%99; 46n.ia); &RITE'N(T64 /6 6s+-n26 -/.av6K) EN#; E'3E BEGIN &RITE'N(N- c-n@6- 6ss6 caac.6); &RITE'N(T64 /6 6s+-n26 -/.av6K) EN#;

    EN#; EN#; UNTI' NOT val-l-1;EN#

    * programa que se segue indica o maior e o menor numeros num #ector com numeros

    introdu(idos pelo utili(ador.

    PROGRAM P-l8!(in+/.,-/.+/.);VAR i,n,4ai-,46n-:INTEGER; v6c.-:ARRAS\%%00] OF REA';

    BEGIN &RITE(ND 26 6l646n.-s 2- v6c.-: ); REA#'N(n); FOR i:=% TO n #O BEGIN &RITE(El646n.- ,i, : ); REA#'N(v6c.-\i]) EN#; 4ai-:=%; 46n-:=%;

    FOR i:= TO n #O BEGIN IF v6c.-\i]*v6c.-\4ai-] THEN 4ai-:=i; IF v6c.-\i]v6c.-\46n-] THEN 46n-:=i; EN#; &RITE'N(O 4ai- 6l646n.- - ,4ai-, 6 val6 ,v6c.-\4ai-]); &RITE'N(O 46n- 6l646n.- - ,46n-, 6 val6 ,v6c.-\46n-]);EN#

  • 7/25/2019 Programas Em Pascal Para Estudo

    18/32

    * programa seguinte mostra como se somam dois #ectores.

    PROGRAM P-l8"(in+/.,-/.+/.);

    TSPE v6c.-=ARRAS\%%000] OF REA';

    VAR 2i4:INTEGER; a,,c:v6c.-;

    PROCE#URE #i46nsa-(VAR 2:INTEGER);

    BEGIN &RITE(5/al a 2i46nsa- 2- v6c.- 7 ); REA#'N(2)EN#;

    PROCE#URE '6v6c.-(n:INTEGER;VAR v:v6c.-);VAR i:INTEGER;

    BEGIN FOR i:=% TO n #O BEGIN &RITE(Val- ,i, 2- v6c.- : ); REA#'N(v\i]) EN#EN#;

    PROCE#URE 3-4av6c.-6s(n:INTEGER;v%,v:v6c.-;VAR v:v6c.-);VAR i:INTEGER;

    BEGIN

    FOR i:=% TO n #O v\i]:=v%\i]$v\i]EN#;

    PROCE#URE M-s.av6c.-6s/l(n:INTEGER;v:v6c.-);VAR i:INTEGER;

    BEGIN &RITE'N(O v6c.- 6s/l.an.6 2a s-4a : ); FOR i:=% TO n #O &RITE'N(v\i], )EN#;

    BEGIN > +-1a4a +inci+al ?

    #i46nsa-(2i4); '6v6c.-(2i4,a); '6v6c.-(2i4,); 3-4av6c.-6s(2i4,a,,c); M-s.av6c.-6s/l(2i4,c)EN#

  • 7/25/2019 Programas Em Pascal Para Estudo

    19/32

    * programa seguinte mostra como se somam duas matri(es.

    PROGRAM P-l8^a(in+/.,-/.+/.);

    TSPE 4a.iK=ARRAS\%0,%0] OF REA';

    VAR a,,c:4a.iK;

    n:INTEGER;

    PROCE#URE #i46nsa-(VAR KK:INTEGER);

    BEGIN &RITE(In2i/6 a 2i46ns- 2as 4a.iK6s * ); REA#'N(n)EN#;

    PROCE#URE '64a.iK(n:INTEGER;VAR 4a.iK:4a.iK);VAR i,:INTEGER;

    BEGIN

    FOR i:=% TO n #O BEGIN FOR :=% TO n #O BEGIN &RITE(Val- ,i,,: ); REA#'N(4a.iK\i,]) EN# EN#EN#;

    PROCE#URE 3-4a4a.iK6s(n:INTEGER;a,:4a.iK;VAR c:4a.iK);VAR i,:INTEGER;

    BEGIN FOR i:=% TO n #O FOR :=% TO n #O c\i,]:=a\i,]$\i,]EN#;

    PROCE#URE M-s.a4a.iK6s/l(n:INTEGER;c:4a.iK);VAR i,:INTEGER;

    BEGIN &RITE'N(A s-4a 2as 4a.iK6s : ); FOR i:=% TO n #O BEGIN

    FOR :=% TO n #O BEGIN &RITE(i,, ,c\i,], ) EN#; &RITE'N EN#EN#;

    BEGIN > +-1a4a +inci+al ? #i46nsa-(n); '64a.iK(n,a); '64a.iK(n,); 3-4a4a.iK6s(n,a,,c); M-s.a4a.iK6s/l(n,c)EN#

  • 7/25/2019 Programas Em Pascal Para Estudo

    20/32

    * programa seguinte mostra como se multiplicam duas matri(es.

    PROGRAM P-l8^(in+/.,-/.+/.);VAR 4a.iKA:ARRAS\%!0,%!0] OF REA'; 4a.iKB:ARRAS\%!0,%!0] OF REA'; 4a.iKR:ARRAS\%!0,%!0] OF REA'; n,i,,:INTEGER;

    BEGIN &RITE'N(P-1a4a +aa calc/la - 6s/l.a2- 2a 4/l.i+lica- 26 4a.iK6s/a2a2as); &RITE(5/al a 2i46ns- 2as 4a.iK6s 7 ); REA#'N(n); &RITE'N(Esc6va -s 6l646n.-s 2a 4a.iK A: ); FOR i:=% TO n #O BEGIN FOR :=% TO n #O BEGIN &RITE(a,i,,: ); REA#'N(4a.iKA\i,])

    EN# EN#; &RITE'N(Esc6va -s 6l646n.-s 2a 4a.iK B: ); FOR i:=% TO n #O BEGIN FOR :=% TO n #O BEGIN &RITE(,i,,: ); REA#'N(4a.iKB\i,]) EN# EN#; > M/l.i+lica- 2as 4a.iK6s A 6 B ? FOR i:=% TO n #O

    BEGIN FOR :=% TO n #O BEGIN 4a.iKR\i,]:=0; FOR :=% TO n #O 4a.iKR\i,]:=4a.iKR\i,]$4a.iKA\i,]4a.iKB\,] EN# EN#; &RITE'N(A 4a.iK 6s/l.a2- 2a 4/l.i+lica- 2as 4a.iK6s A 6 B :); FOR i:=% TO n #O BEGIN FOR :=% TO n #O &RITE(,i,,4a.iKR\i,], );

    &RITE'N EN#;EN#

  • 7/25/2019 Programas Em Pascal Para Estudo

    21/32

    * programa seguinte passa as letras minusculas de uma stringa maiusculas.

    PROGRAM U++6cas6;

    >_P$?

    U3E3 c.;

    VAR s:3TRING\0];

    FUNCTION U+Cas63.(s:3TRING):3TRING;VAR i:INTEGER;

    BEGIN FOR i:=% TO 'ENGTH(s) #O s\i]:=UPCA3E(s\i]); U+Cas63.:=s;EN#;

    BEGIN C'R3CR; s:=ac; &RITE'N(s); &RITE'N(C@an16 .- /++6cas6); &RITE'N(U+Cas63.(s)); &RITE'N; &RITE(P6ss ENTER); REA#'NEN#

    * programa seguinte conta quantas pala#ras uma stringcont+m.

    PROGRAM P-l9"(in+/.,-/.+/.);VAR s:3TRING; i,c-n.a:INTEGER;

    BEGIN &RITE(Esc6va /4a 3TRING: ); REA#'N(s);

    c-n.a:=0; IF (s\%]= ) AN# (s\]* ) THEN c-n.a:=%; IF s\%]* THEN c-n.a:=%; FOR i:= TO 'ENGTH(s) #O IF (s\i]= ) AN# (UPCA3E(s\i$%])IN\A`]) THEN c-n.a:=c-n.a$%; >IF (s\%]= ) AN# (s\]* ) THEN c-n.a:=%;? &RITE'N(A 3TRING c-n.4 ,c-n.a, +alavas);EN#

  • 7/25/2019 Programas Em Pascal Para Estudo

    22/32

    * programa que se segue redu( para um espaco entre duas pala#ras sempre que a

    encontra dois ou mais espacos.

    PROGRAM P-l64a9^(in+/.,-/.+/.);U3E3 c.;VAR s:3TRING; i,:INTEGER;

    BEGIN &RITE'N(Es.6 +-1a4a .ia -s 6s+ac-s a 4ais 26 /4a 3TRING); &RITE'N; &RITE(Esc6va /4a 3TRING: ); REA#'N(s); :=0; FOR i:=% TO 'ENGTH(s) #O BEGIN :=$%; IF s\i]= THEN BEGIN s\]:= ; &HI'E s\i]= #O

    i:=i$%; :=$% EN#; s\]:=s\i]; EN#; &RITE(N-va 3TRING: ); FOR i:=% TO #O &RITE(s\i])EN#

    * programa que se segue cria um fic0eiro de te'to e guarda neste alguns dados.

    PROGRAM P-l!0A(in+/.,-/.+/.);VAR

  • 7/25/2019 Programas Em Pascal Para Estudo

    23/32

    EN#

    *s dois programas que se seguem e'emplificam como se podem manipular fic0eiros de

    te'to em Pascal.

    PROGRAM P-l!%A(in+/.,-/.+/.);

    VAR

  • 7/25/2019 Programas Em Pascal Para Estudo

    24/32

    EN#

    * programa seguinte + e'emplo da utili(a)!o de fic0as e tabelas.

    PROGRAM N-.as(in+/.,-/.+/.);

    CON3T 4aal/n-s=!;

    TSPE al/n-=RECOR# n-46:3TRING\"0]; n-.a:INTEGER EN#; .a6la=ARRAS\%4aal/n-s] OF al/n-;

    VAR .a,a,:.a6la; i:INTEGER;

    PROCE#URE TaAl/n-s(VAR .-2-sal/n-s:.a6la);

    BEGIN

    &ITH .-2-sal/n-s\%] #O BEGIN .-2-sal/n-s\%]n-46:=Mac6l-; .-2-sal/n-s\%]n-.a:=0 EN#; &ITH .-2-sal/n-s\] #O BEGIN .-2-sal/n-s\]n-46:=P62-; .-2-sal/n-s\]n-.a:=%0; EN#; &ITH .-2-sal/n-s\8] #O BEGIN .-2-sal/n-s\8]n-46:=En1aa2in@-;

    .-2-sal/n-s\8]n-.a:=0 EN#; &ITH .-2-sal/n-s\9] #O BEGIN .-2-sal/n-s\9]n-46:=G-2-; .-2-sal/n-s\9]n-.a:=! EN#; &ITH .-2-sal/n-s\!] #O BEGIN .-2-sal/n-s\!]n-46:=Cbcb; .-2-sal/n-s\!]n-.a:= EN#;EN#;

    PROCE#URE A+-va2-sR6+-va2-s(al/n-s:.a6la;VAR a+-va2-s,6+-va2-s:.a6la);

    VAR i,c-n.a%,c-n.a:INTEGER;

    BEGIN c-n.a%:=0; c-n.a:=0; FOR i:=% TO 4aal/n-s #O &ITH al/n-s\i] #O IF al/n-s\i]n-.a*=%0 THEN BEGIN c-n.a%:=s/cc(c-n.a%); a+-va2-s\c-n.a%]n-46:=al/n-s\i]n-46;

    a+-va2-s\c-n.a%]n-.a:=al/n-s\i]n-.a EN# E'3E BEGIN c-n.a:=s/cc(c-n.a);

  • 7/25/2019 Programas Em Pascal Para Estudo

    25/32

    6+-va2-s\c-n.a]n-46:=al/n-s\i]n-46; 6+-va2-s\c-n.a]n-.a:=al/n-s\i]n-.a EN#;EN#;

    BEGIN > P-1a4a Pinci+al ? TaAl/n-s(.a); A+-va2-sR6+-va2-s(.a,a,); &RITE'N(Al/n-s A+-va2-s);

    FOR i:=% TO 4aal/n-s #O &RITE'N(a\i]n-46, ,a\i]n-.a); &RITE'N(Al/n-s R6+-va2-s); FOR i:=% TO 4aal/n-s #O &RITE'N(\i]n-46, ,\i]n-.a);

    EN#

    * programa seguinte + e'emplo da utili(a)!o de fic0as e fic0eiros.

    PROGRAM P-l!8(in+/.,-/.+/.);

    TSPE

  • 7/25/2019 Programas Em Pascal Para Estudo

    26/32

    lis.aci4in-s-s; C'O3E(

  • 7/25/2019 Programas Em Pascal Para Estudo

    27/32

    &RITE'N(

  • 7/25/2019 Programas Em Pascal Para Estudo

    28/32

    PROGRAM P-l%8(in+/.,-/.+/.);

    VAR a,,.64+:INTEGER;

    BEGIN &RITE'N(Es.6 +-1a4a +assa - val- 26 A +aa B 6 vic6v6sa); NE&(a); NE&(); a:=8; :=9;

    &RITE'N(A ,a); &RITE'N(B ,); .64+:=a; a:=; :=.64+; &RITE'N(A a1-a ,a); &RITE'N(B a1-a ,); #I3PO3E(a); #I3PO3E(); REA#'NEN#

    * programa seguinte ser#e para determinar quais o menor e o maior elementos de um

    #ector em que o #ector + uma #ari%#el dinmica.

    PROGRAM V6c.-(in+/.,-/.+/.);

    TSPE v6c.-=ARRAS\%000] OF REA';

    VAR +v6c.-:v6c.-; i,n:INTEGER; 46n-,4ai-:REA';

    BEGIN NE&(+v6c.-); &RITE(5/al - nD 26 6l646n.-s 2- v6c.- 7 ); REA#'N(n); FOR i:=% TO n #O BEGIN &RITE(Esc6va - ,i,D 6l646n.- * ); REA#'N(+v6c.-\i]); EN#; 46n-:=+v6c.-\%]; 4ai-:=+v6c.-\%]; FOR i:=% TO n #O

    BEGIN IF +v6c.-\i]46n- THEN 46n-:=+v6c.-\i]; IF +v6c.-\i]*4ai- THEN 4ai-:=+v6c.-\i]; EN#; #I3PO3E(+v6c.-); &RITE'N(Mai-: ,4ai-); &RITE'N(M6n-: ,46n-);EN#

  • 7/25/2019 Programas Em Pascal Para Estudo

    29/32

    * programa seguinte soma dois #etores usando #ari%#eis dinmicas.

    PROGRAM 3-4a26V6c.-6s(in+/.,-/.+/.);

    TSPE v6c.-=ARRAS\%000] OF REA'; +v6c.-=v6c.-;

    VAR +v6c.%,+v6c.:+v6c.-; i,n:INTEGER;

    PROCE#URE '6v6c.-(v6c.-:+v6c.-;n:INTEGER);

    VAR i:INTEGER;

    BEGIN FOR i:=% TO n #O BEGIN &RITE(Esc6va - ,i, 6l646n.- 2- v6c.- * ); REA#'N(v6c.-\i]); EN#;EN#;

    BEGIN &RITE(5/al - n 26 6l646n.-s 26 ca2a v6c.- 7 ); REA#'N(n); NE&(+v6c.%); &RITE'N(V6c.- %:); '6v6c.-(+v6c.%,n); NE&(+v6c.); &RITE'N(V6c.- :); '6v6c.-(+v6c.,n); &RITE'N(V6c.- 3-4a:); FOR i:=% TO n #O &RITE'N(+v6c.%\i]$+v6c.\i]); #I3PO3E(+v6c.%); #I3PO3E(+v6c.)

    EN#

    * programa seguinte ser#e para contruir uma lista ligada com - elementos inteiros

    introdu(idos pelo utili(ador. Neste programa encontram$se dois procedimentos5 um paraacrescentar um elemento a uma lista ligada e ainda outro procedimento para eliminar oltimo elemento da lista ligada.

    PROGRAM P-l%(in+/.,-/.+/.);

    TSPE +-n.in.=c-4+lis.a;

    c-4+lis.a=RECOR# in.:INTEGER; s61:+-n.in.; EN#;

    VAR lis.a,+lis.a:+-n.in.; i,:INTEGER;

    PROCE#URE Ac6sc6n.alis.a(2a2-:INTEGER;VAR lis.a:+-n.in.);

    VAR +A/:+-n.in.;

    BEGIN

    NE&(+A/); +A/in.:=2a2-; +A/s61:=lis.a; lis.a:=+A/;

  • 7/25/2019 Programas Em Pascal Para Estudo

    30/32

    EN#;

    PROCE#URE Eli4ina/l.i4-lis.a(lis.a:+-n.in.); > P-l% ?

    VAR +A/:+-n.in.;

    BEGIN +A/:=lis.a; IF +A/*NI' THEN IF +A/s61=NI' THEN

    BEGIN #I3PO3E(+A/); lis.a:=NI'; EN# E'3E BEGIN &HI'E +A/s61s61*NI' #O +A/:=+A/s61; #I3PO3E(+A/s61); +A/s61:=NI'; EN#;EN#;

    BEGIN

    +lis.a:=NI'; FOR i:=% TO ! #O BEGIN &RITE(In.-2/Ka - ,i, in.6i- * ); REA#'N(); Ac6sc6n.alis.a(,+lis.a); EN#; Eli4ina/l.i4-lis.a(+lis.a); > P-l% ? &RITE'N('is.a: ); lis.a:=+lis.a; &HI'E NOT(lis.a=NI') #O BEGIN &RITE'N(lis.ain.);

    lis.a:=lis.as61; EN#;EN#

  • 7/25/2019 Programas Em Pascal Para Estudo

    31/32

    Com o programa que se segue podemos inserir elementos no fim de uma lista ligada.

    PROGRAM Ins66Ca/2a(in+/.,-/.+/.);

    TSPE +-n.in.=c-4+lis.a; c-4+lis.a=RECOR# in.:INTEGER; s61:+-n.in.;

    EN#;

    VAR lis.a,+lis.a:+-n.in.; i,:INTEGER;

    PROCE#URE Ins6inaCa/2a(2a2-:INTEGER;VAR lis.a:+-n.in.);

    VAR +A/,+A/:+-n.in.;

    BEGIN NE&(+A/); NE&(+A/); +A/:=lis.a;

    +A/in.:=2a2-; +A/s61:=NI'; IF lis.a=NI' THEN lis.a:=+A/ E'3E BEGIN &HI'E +A/s61*NI' #O +A/:=+A/s61; +A/s61:=+A/; EN#;EN#;

    BEGIN +lis.a:=NI'; FOR i:=% TO ! #O BEGIN &RITE(In.-2/Ka - ,i,D in.6i- * ); REA#'N(); Ins6inaCa/2a(,+lis.a); EN#; &RITE'N('is.a: ); lis.a:=+lis.a; &HI'E NOT(lis.a=NI') #O BEGIN &RITE'N(lis.ain.); lis.a:=lis.as61; EN#; REA#'N;EN#

    * programa seguinte cont+m um procedimento para inserir um elemento na n$esimaposi)!o da lista ligada. Cont+m ainda uma fun)!o para se saber quantos elementos temuma lista ligada.

    PROGRAM P-l(in+/.,-/.+/.);

    TSPE +-n.in.=c-4+lis.a; c-4+lis.a=RECOR# in.:INTEGER;

    s61:+-n.in.; EN#;VAR lis.a,+lis.a:+-n.in.; i,,+-sic:INTEGER;

  • 7/25/2019 Programas Em Pascal Para Estudo

    32/32

    FUNCTION C-4+lis.a(lis.a:+-n.in.):INTEGER;

    VAR n:INTEGER; +A/:+-n.in.;

    BEGIN n:=0; +A/:=lis.a; &HI'E +A/*NI' #O BEGIN

    +A/:=+A/s61; n:=n$%; EN#; C-4+lis.a:=n;EN#;

    PROCE#URE Ins6in6si4a+-sica-(n:INTEGER;2a2-:INTEGER;VAR lis.a:+-n.in.);

    VAR +A/,+A/:+-n.in.; i:INTEGER;

    BEGIN NE&(+A/);

    +A/in.:=2a2-; +A/:=lis.a; IF lis.a=NI' THEN BEGIN +A/s61:=NI'; lis.a:=+A/; EN# E'3E BEGIN IF n=% THEN BEGIN +A/s61:=lis.a; lis.a:=+A/; EN#;

    IF n*% THEN BEGIN

    i:=; &HI'E in #O BEGIN i:=i$%; +A/:=+A/s61; EN#; +A/s61:=+A/s61; +A/s61:=+A/; EN# EN#EN#;

    BEGIN

    +lis.a:=NI'; FOR i:=% TO ! #O BEGIN &RITE(In.-2/Ka - ,i, in.6i- * ); REA#'N(); &RITE(5/al a +-sica- 64 /6 - /6 ins6i na lis.a 7 ); REA#'N(+-sic); Ins6in6si4a+-sica-(+-sic,,+lis.a); EN#; &RITE'N('is.a: ); lis.a:=+lis.a; &HI'E NOT(lis.a=NI') #O BEGIN &RITE'N(lis.ain.); lis.a:=lis.as61;

    EN#;