Post on 24-Feb-2018
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 'in@a26As.6isc-s(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 #6s6n@a.ian1/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);
#6s6n@a.ian1/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#;