• Nenhum resultado encontrado

Apontamentos de Pascal

N/A
N/A
Protected

Academic year: 2021

Share "Apontamentos de Pascal"

Copied!
108
0
0

Texto

(1)

APONTAMENTOS DE PASCAL

PROGRAMAÇÃO DE COMPUTADORES

1º ANO

DA LICENCIATURA EM ENGENHARIA MECÂNICA

(2)

ÍNDICE:

P á g

1 IN TROD UÇ ÃO 3

1.1 A e strutur a do alg o ritmo e do resp ecti vo progr ama 4

2 TI POS D E INFORM AÇ ÃO EL EME N T AR E S 13

2.1 Tip o lógic o 13

2.2 O tipo carácter 15

2.3 Cad eias de caract e res 16

2.4 O tipo inteiro 16

2.5 Tip o real 17

2.6 Tr ansf ormaçõ es en tre tipos 18

2.6.1 Transformaçõ es entr e inte iro e re al 18

2.6.2 Transformaçõ es entr e inte iro e c arácter 19

2.6.3 Transformaçõ es entr e tipo lóg ic o e outro s tipos 19

2.7 Con stante s 20

2.8 Variá veis

2.8.1 Declar ação de uma vari áve l

21 21

2.9 Expre ssõ es 22

3 ES TRU TU R AS D E C ON TROLO 25

3.1 Estrutur as de c ontr olo I: SEQUE NCI AÇ ÃO 25

3.2 Instruçõ es eleme nt ares 26

3.2.1 Instruções d e atri bu i ção 26 3.2.2 Instruções d e l eitur a de dad os 27

3.2.3 Instruções d e escr ita de resu ltado s 27

3.3 Estrutur as de c ontr olo II: SELE CÇ ÃO 28

3.3.1 A instru ção “ if ” 28

3.3.2 A instru ção “ca se ” 31

3.4 Instruçõ es de contr olo III: REPE TI Ç ÃO 32

3.4.1 A instru ção “w hi l e ” 32

3.4.2 A instru ção “rep eat ” 34

3.4.3 A instru ção “for ” 35

3.4.4 A esco lh a das instru ções de re pet ição 38

4. TI POS ES TR U TUR ADOS 39

4.1 Tip os e strutura dos I: T AB E L AS 39

4.1.1 Defi ni ção d e tabe la em Pasca l 40

4.2 Tabela s empa cota d as 47

(3)

5. SU BP ROGR AM AS E UNI TS 51

5.1 Proce dimento s 51

5.2 Funç ões 53

5.3 Métodos d e pas sag em dos par âmetros 56

5.3.1 Passa gem por va lor 56

5.3.2 Passa gem por referê nci a 57

5.4 A e strutur a em bloc os de um pr ograma em Pasc al 58

5.5 Units em Pa scal 64

5.5.1 Estrutura de uma Un it 64

6. A LI NGU AG EM FOR TR AN 90 68

6.1 Tip os d e informaç ã o elementar es em F ortran 90 68

6.2 Definiçã o de c onst antes em F ortran 9 0 72

6.3 Declar açã o de va riá veis em Fortra n 90 72

6.4 Instruçã o de atrib uição em Fortr an 90 73

6.5 Instruçõ es de leitur a e escritur a em Fo rtran 90 73

6.6 A in struç ão “if” em Fortran 90 74

6.7 A e strutur a “ca se” em Fortran 9 0 76

6.8 A in struç ão “w hile” em Fortran 90 76

6.9 A e strutur a “do ” e m Fortran 90 77

6.10 Tabela s em Fortra n 90 78

6.11 Subpr ogram as em Fortran 9 0 79

6.11.1 Subro utin as exter na s 79

6.11.2 Funçõ es exter nas 80

6.11.3 Subpr ogramas Mód u los 81

6.11.4 Subpr ogramas intern os 82

BIBLIOGRAFIA ANEXO A

83 84

ANEXO B EXERCÍCIOS PROPOSTOS 85

ANEXO C EXERCÍCIOS RESOLVIDOS 94

(4)

IN TROD UÇ ÃO

Neste tra ba lho i ntrodu zimos a lg uns conce itos f und ame ntais para podermos c omun icar com um computado r de modo a q ue este execute uma dada taref a. Para iss o temos de espec if icar uma se q uência d e passos atra vés d e uma li ng uag em compreend id a p el o computad or (li ng uag em de prog ramação), de modo a q ue ele pos sa ef ectuar essa taref a, ou sej a temos de escre ver u m prog rama. A acti vida de de escre ver prog ramas chama-se prog ramação. D esej amos a ssim, com este traba lho, ef ectuar uma intro duç ão à prog ramação d i scip l ina da, f ornecendo o s pass o s neces sári os a o de sen vo l vimento de u m prog rama, de f orma a obter prog ramas bem estruturados, ef ici entes e s e m erros.

A e lab oraçã o de um prog rama contém vá rias f ases. Em pr ime iro lug ar é necess ári o def in ir o obj ecti vo ou sej a def inir e xactamente o q ue se pretend e. Em s eg uid a é importa nte ana l i sar as vár ias a ltern ati vas p ara obter a s ol ução e e scol her a me lh or, c onstrui ndo ass im u m alg oritmo ef iciente deta lha ndo todos os p assos nec essár ios.

Uma ve z def in ido o alg oritmo é nec ess ário co dif icá- lo n uma li ng uag em de prog ramaçã o ad eq uada, se ndo esse nci al uma bo a li ng uag em, com boas f erramentas de apo io, de mo do q ue sej a f ácil expr essar correctamente a s i d eia s do prog ramad or e a estrutura d os a l g oritmos j á desen vo l vidos. N ão nos pod emos esq uecer, q ue a noss a taref a não termina com a escr it a do prog rama, porq ue é ai nda n ecess ár io ef ectuar testes para d etectar e corrig ir os erro s.

A l ing uag em de prog ramação esco l hid a é a l ing uag em Pasca l desen vo l vida no in ício da d éca da d e 7 0. Embora esta l ing uag em não sej a ut il i zada em m uitas ap l icaç ões r ea is, co ns ideram os int eressant e o seu est udo, po is e l a f oi des en vo l vid a com a f ina li dad e d e ser vir para ens inar a prog rama ção, uma ve z q ue dá orig em a programas bem estruturado s e org an i za dos.

Dado q ue os a lu nos durante o se u curso de Eng enh ari a terão de uti li zar outras li ng uag ens d e prog ramação, n o meadamente o Fort ran 90 e o Vis ua l B as ic, ao l o ng o de to do o trab alh o, os t emas c o muns a um g rande leq ue de l ing uag ens d e pr og ramação s erão ab ordad o s de f orma mais d etal had a par a a l ing uag em Pas ca l , não d ei xand o de s e ref erir de uma f orma sucinta a “passag em” para a li ng uag em Fortran 90.

(5)

1.1 A estrut ura do a lgoritmo e do res pe ctivo progr ama

Um prog rama é u m conj unto de in struções bem def inid as, q ue espec if icam e xact a mente o q ue tem de ser f eito, escrito numa li ng uag em de prog ramação. Um alg orit mo é mais abstract o q ue um prog rama pois p ode ser expresso numa ling uag em i nf ormal. Podemos di zer q ue um prog ra ma é a e xpress ão d e um a lg oritmo num a l ing uag em de prog ramação.

Um alg oritmo e stá s empre asso ci ado à s olu ção d e um prob le ma ou sej a a um obj ect i vo, e não é ma is d o q ue a descr içã o da s e q uência de passos a seg u ir para ating ir e sse o bj ecti v o; de uma f orma sim pl if icada é a “ receita c lara e p recis a “, q ue permite ating ir o o bj ecti vo. Assim um alg oritmo de ve sat isf azer um conj unt o de caracter ístic as:

- Ser rig oros o ou sej a cad a i nstruçã o de ve ser c lara, não a mb íg ua e só ter uma inter pret ação; p or e xempl o a in strução “somar x ao q uadrado de um nú mero “ não especif i ca a q ue número se soma a var iá ve l x n em ond e se g uarda o resu lt ado.

- Ser f inito ou sej a d eve co ndu zir a uma situaç ão em q ue o obj ecti vo sej a ating i do e não existam ma is instru ç ões para ser em exe cutadas. Por ve zes um alg or i tmo mal e xecuta do condu z a um prog ra ma q ue nunca term ina.

- De ve permit ir a ent rada d e da dos e de ve escre ver res ulta dos q ue tradu zam o obj e cti vo q ue se pretende ati ng ir.

- De ve ser ef icie nte n o tempo e no esp aço . De uma f orma s imp lif ica da podemos di zer q ue um alg oritmo é ef ic i ente no temp o q uan do rea li za apen as as in struçõe s necess ária s para ating ir o obj ect i vo, e q ue é ef iciente no es paço q uando ut il i za ape na s as vari á ve is ne ces sária s.

É aco nse lhá ve l uti l i zar-s e uma li ng uag em au xil iar a bstract a e s impl es de compree nder q ue exprima sem deta lhe s e xcess i vos a estrutura do alg oritmo; post erior mente a con versão do alg or itmo para u ma q ualq uer li ng uag em de prog ramação j á não of erece g randes d if icul dad es.

Um alg oritmo é con stitu ído por d uas pa rtes o cabeça lh o e o corpo do alg oritmo; no c abeç alh o def ine-s e o obj ecti vo do a lg oritmo e dec laram-se as var iá ve is( obj e ctos):

(6)

Obj ecti vo: resumo d o q ue se pretend e c om o alg oritmo

var iá ve is dad os: < va riá ve l> , tipo , s ig nif i cado

var iá ve is resu ltad o: <var iá vel> , ti po , si g nif icado

var iá ve is au xi li ares: <var iá vel> , ti po , si g nif icado

O corpo do alg orit mo é const itu ído p ela s i nstruçõe s q ue tradu zem a seq uênc ia d e p ass os nec essár io s par a se at ing ir o o b j ecti vo do alg oritmo. As instru ções (sep arad as po r “;”) podem ser representa das da seg ui nte f orma:

1) De l eit ura : lei a (<l ista de vari á ve is>)

2) De escr ita : escre va (<list a de e xpressõ es ou te xto>) 3) Atribu iç ão: <var iá ve l> ← <e xpre ssão>

4) Cond ic io na l: se <e xpressão lóg ic a> entã o { <instruçã o 1> } ou: se <express ão l óg ica> então { <i nstrução 2 > }

senão {< instruç ã o 1> }

5) Enq uanto: enq uanto <e xpress ão lóg ic a> f aça {< instruçõe s> } 6) Rep ita: repita < instruçõ es> até <express ão l óg ica>

7) Para:

para <var iá vel> ← <exp 1> até >e xp 2 > f aça {< instruçõ es > } ou

para <var iá vel> ← <exp 1> desc end o até >e xp2> f aça {< i nstruções> }

As des ig naç ões {< instruç ões>}, {<i nst rução 1>} e {< ins trução 2>} sig nif icam uma q ua l q uer seq uênc ia de i n struções sep arad as entre s i por “;”. As cha vetas po dem ser d ispe nsad a s se < instru ções> f or apenas uma i nstruçã o. A des ig naçã o <e xpressão> ( ou <e xp1 >, <exp2>) sig nif ica uma e xpr essão de q ualq uer tip o n uméric a o u lóg i ca ( ver parág raf o 2.9).

Cons id eremos por e xem pl o q ue q ueríamos constru ir um alg oritmo para calc ul ar a méd ia de um conj unto d e núm eros int eiro s pos iti vo s:

(7)

Obj ecti vo: cá lcu lo da média d e um conj un to de números p os iti vo s

var iá ve is dad os: n, i nteiro, q uant ida de d e números li dos; numero, inte iro, númer o l ido;

var iá vei s au xi li ares: soma, inte iro, som a dos númer os l id os;

soma ← 0 ; n ← 0;

escreva (“escr e va um número pos it i vo” ) ;

escreva ( “ um número neg ati vo ter mina o prog rama” ); leia (numero);

enq uanto numero > = 0 f aça soma ← soma + numero; n ← n + 1;

escreva ( “escre va um númer o posit i vo” ) ;

escreva ( “ um número neg ati vo termi na o prog ra ma” ); leia (num ero);

se n = 0 então

escreva (“im poss íve l ca lcu lar a média”) senão

escreva (“a média é : “,soma / n) ;

Ana l isan do este alg o ritmo vemos q ue:

• O obj ecti vo do a lg oritmo e xp l ica o q ue se preten de.

• A dec laraç ão do ti po de vari á ve is(o bj e ctos) usadas, f eita n o cabeça lh o do a lg oritmo, é seg u ida por um comentár io o nde s e e xp l ica o sig nif ica do de cad a uma das variá veis.

• No in íc io do cor po do a lg oritmo o s va l ores d as vari á ve is soma e n são p ostos a zer o e em seg ui da é l id o um número. Então c omeça um cic lo rep etit i vo: en q uanto o número l ido f or posit i vo é repeti da a seq uênc ia de instr uções de l imita das pel a ch a veta, actu al i za ndo as var iá ve is soma e n e l end o um n o vo nú mero. Dep oi s de l er um número neg ati vo s e o tota l d e números l ido s f or zer o, e xiste uma in s trução par a escre ver q ue n ão é poss íve l ca lcu lar a média, e em cas o c o ntrário para escre ver a méd ia do s números l i dos.

(8)

Aprese ntamos o pro g rama correspon den te, em li ng uag em Pa scal, c om a f inal idad e de o com pararmos com o res pecti vo a lg oritmo:

Program media (input, output) ;

este programa calcula a média de um conjunto de números positivos var numero , soma , n : integer;

numero – número lido

soma – soma dos números lidos n – quantidade de números lidos begin

soma : = 0 ; n : = 0;

writeln ( ‘escreva um número positivo’ ) ;

writeln ( ‘um número negativo termina o programa’ ); read (numero);

while numero > = 0 do begin

soma : = soma + numero; n : = n + 1;

writeln ( ‘escreva um número positivo’ ) ;

writeln ( ‘um número negativo termina o programa’ ); read (numero);

end; if n = 0 then

writeln (‘impossível calcular a média’) else

writeln (‘a média é : ‘,soma / n) end. { Program media }

Ana l isan do ag ora o prog rama podemos conc lu ir q ue a sua estrutura é muito seme lha nte à do alg or itmo q ue o orig ino u.

• O nome do prog rama é medi a. A seg uir ao n ome do pr og rama e xist e um comentári o q ue e xp l ica o q ue o prog rama f az.

• A declar ação d o tipo de variá ve is usa das, f eita na lin ha q ue começa por “ var”, é seg u ida por um c omentár io o nde s e e xp li ca o s ig nif icad o d e cada uma d as var iá veis.

• A pal a vra beg i n assi na la o i n íci o da zon a de i nstruçõ es. Os val ores das var iá ve is soma e n são postos a zero e é l ido um nú mero. Então começa um ci cl o r epetit i vo: enq uant o o n úmero li do é pos iti vo o computad or repete a seq uênc ia d e in struções d el imit ada s pel o par beg in/en d actua l i za n do as var iá ve is s oma e n e len do um no vo número. Depo is de ler um n úmero neg ati vo o c omputador test a se o total d e números l id os é zero, escre ven do ne ste caso q ue não é poss íve l

(9)

calc ul ar a mé di a, e em caso co ntrário escre ve a méd i a do s números li dos.

As dif erenç as entr e o alg oritmo e o prog rama não são muito sig nif icat i vas:

• O prog rama inic ia- se com uma l inh a do tipo: prog ram <nome>(<f iche iros usa dos>);

onde os f iche iros us ados s ão “ inp ut” (o tecla do d o termin al) e “output” (a sa íd a no mon itor do termina l). Seg ue- se um comentári o q ue expl ic a o obj ecti vo do pr og rama.

• A de cl araçã o d e t odas as vari á ve is ( obj ectos) é f eita co m a pa la vr a var .

• A zona de instruç ões q ue man ip ul a o s obj ectos enc ontra- se entre um

begin e um end, seg uido de um po nto f inal, q ue i nd ic a o f im do

prog rama.

• As i nstruçõ es sã o semel hantes às da l ing uag em de r epres entaçã o de alg oritmos a dopta da, com a correspo ndê n cia d e pa la vra s:

escre va ↔ wr ite ln le ia ↔ read se ↔ if senão ↔ e lse então ↔ then enq uanto ↔ wh i le

• Em ve z de c ha vet a s usa-se o p ar beg in -end.

• Nas atr ibu iç ões us a-se o si na l “:=” em ve z de “←”.

• Os texto s para ser em escritos l imitam- se por p lic as em ve z de aspa s.

Antes de c onti nuar mos a f alar de pr o g ramas em Pasc al é nec essár io def inir a lg uns co nce i tos q ue serão usa do s ao lo ng o deste tra bal ho. Um ide ntif ica dor é u m nome q ue é usado para des ig nar um pr og rama ou entid ade s num prog rama.

(10)

Em Pa sca l um i dent if icador tem q ue co meçar por uma l etra (maiú scu la ou mi núsc ul a), a q u al pod e ser s eg uid a por q ua lq uer comb ina ção de letras o u de d íg itos.

O nome de um i dent i f icador de ve sug erir a uti li zaçã o ou o sig nif icad o da entid ade re prese nta da.

Entre os ident if icad ores leg a is em Pas cal e xistem d ois c o nj untos. O conj unto dos nom es res ervad os c on stitu ído por todos os nomes (ide ntif icad ores) q ue são ut il i zados em P asca l par a um f im espec íf ic o e q ue não pod em se r uti li zad os a nã o ser no cont e xto e m q ue são def inid os para a l ing uag em; são exemp lo s desses nomes “be g in ”, “end”, “f or”, “div”, “t ype”, e tc”. O conj unto do s nomes normal i za dos const itu ído por todos o s nomes q ue têm um sig nifica do pre viame nte d ef inido em Pasca l, pod end o n o enta nto s er a lte rado p el o pr og ramador; sã o exemp los os nome s de f unções intr íns ec as como “abs”, “arctan”, “cos”, “exp”, etc, e de proc edime ntos como “ wr i te”, “read”, “readln”, etc.

Ana l isan do o e xemp l o anter ior po demos ver q ue ta l c omo um alg oritmo, um prog rama também é composto p or duas partes d i stintas: um cabeç al ho de prog rama q ue d ef ine o n ome do prog rama e a man eir a como e le comu nic a com o e xter ior, e o bl oco q ue c ontém a de scriç ão dos o bj ectos uti l i za dos p el o prog rama e o co nj unto de ins truções q ue manip ul am esses o bj ectos.

O cabeça lho é si ntac ticamente def ini do p or:

<cabeçalho de programa> ::= program <identificador> (<identificadores de ficheiros>)

O bloco d e um prog rama é sint actic amen te def inid o por:

<bloco> : : = <zona de definição de constantes> <zona de definição de tipos> <zona de declaração de variáveis>

<zona de declaração de procedimentos ou funções> <zona de instruções>

As def in içõe s si ntáct icas d a zon a de def i niç ão de co nstant es e da zona de de cl araçã o d e va riá ve is serão tratad as no cap ítu lo 2, se ndo a zo na de def in ição de tip os tratada no ca p ít ul o 4.

A def in içã o d a zo na de dec laraç ão de proced imento s o u f unções será dada n o cap ítu lo 5.

(11)

A zona d e in struçõe s é constit u ída pe las instruçõ es corres po ndente s ao corpo d o alg or itmo d o prog rama q ue manipu lam os obj ectos u sados pe lo prog rama, send o d el imita da pe las pa la vr as “beg i n” n o in íc io e “en d” n o f im.

Para f acil itar a le itur a de um prog rama devemos i ntrodu zir co mentário s, isto é f rases em l i ng uag em natura l q u e e xpl icam o s ig n if icado e os obj ecti vos de zon a s do prog rama. Os comentár ios em Pasca l são del imit ados por s ím bol os “” e “” e s ão ig nor ados pe lo computad or assim como o s esp a ços ou li nhas em bra nco.

Dentro d e um bl oc o de um prog rama é poss íve l d ef inir e assoc iar acções com um n ome; sempre q ue essa seq uênc ia de acç ões prec ise de ser e xecut ada s ó é n ecessár io ref erir o s eu nome.

É important e este co nce ito de pod ermos di vid ir um prog rama numa séri e de b loc os o u su bpro g ramas, cada um c o m taref as bem def ini das e usar esses su bprog ramas vár ias ve zes de ntro de um prog rama, sempre q ue necess ári o. E ste p rocesso corres pon d e ao co nce ito de abstracçã o proced imenta l re a li zado em prog ramaçã o atra vés de subpr o g ramas q ue serão an al is ados em pormenor no c ap ít u l o 5.

Cons id eremos no va mente o exempl o q ue calcu la a mé dia d e um conj unto de n n úmeros inte iros p osit i vos, usa ndo ag ora um proced imento para a le itura de c ada n úmero:

(12)

Program media (input, output) ;

este programa calcula a média de um conjunto de números positivos var numero , soma , n : integer;

numero – número lido

soma – soma dos números lidos n – quantidade de números lidos procedure leitura (var numero : integer) ; begin

writeln ( ‘escreva um número positivo’ ) ;

writeln ( ‘um número negativo termina o programa’ ) ; read (número); end; begin soma : = 0 ; n : = 0; leitura (numero); while numero > = 0 do begin

soma : = soma + numero; n : = n + 1;

leitura (numero); end;

if n = 0 then

writeln (‘impossível calcular a média’) else

writeln (‘a média é : ‘, soma / n) end. { Program media }

Ana l isan do este pro g rama vemos q ue:

• O nome do prog rama é medi a. A seg uir ao n ome do pr og rama e xist e um comentári o q ue e xp l ica o q ue o prog rama f az.

• A declar ação d o tipo de variá ve is usa das, f eita na lin ha q ue começa por “ var”, é seg u ida por um c omentár io o nde s e e xp li ca o s ig nif icad o d e cada uma d as var iá veis.

• Em seg uid a é de clara do um sub prog rama (um proced ime nto) q ue lê cada n úmero escr ito pel o uti l i zad or.

• A pal a vra beg i n assi na la o i n íci o da zon a de i nstruçõ es. Os val ores das var iá ve is soma e n são postos a zero e em seg uida é chamado o subprog rama para l er um número. Ent ão começa um c ic l o repetit i vo: enq uanto o n úmero l ido é pos iti vo o com putador repet e a se q uência de

(13)

instruç ões de l imita d as pel o par beg i n/end actu al i za ndo a s var iá vei s soma e n e c haman do o su bprog rama p ara ler um no vo n úmero. D epo i s de ler um número n eg ati vo o comp utad or testa s e o tota l de n úmeros li dos é zero, escre ve ndo n este caso q ue não é poss íve l calcu lar a média, e em ca so co ntrário es cre ve a mé dia d os númer os l id o s.

A d if erença entre e ste prog rama e o a presenta do anter ior mente é a existê nc ia da dec lar ação d o proce dime n to de le itura d e um número e a sua uti li zaçã o dentro da zon a d e instruç õ es sempr e q ue é n ec essár io ler um número.

Neste c ap ít u lo mos tramos o aspe cto de um prog rama e m Pasca l, embora n ão s e ten h a tentad o en si nar co mo escre ver um pro g rama, uma ve z q ue esta taref a será f eita nos resta n tes cap ítu los.

(14)

2. TI POS D E INFORM AÇ ÃO EL EME N T AR E S

A ut il i zação d e t ipos para cara cteri zar c o nstantes, var iá ve is, express ões e f unções é muito im portante em i nf ormática.

Um tipo determ ina o conj unto de val o res aos q uais uma constante pertence, q ue p ode m ser assumid os po r uma var iá vel ou e xpressão, o u q ue pod em ser g erados por uma f unção . Al ém d iss o ca da o perador ou f unção tem arg umentos de um dado ti po e produ z res ult a dos de um certo tipo c omo vere mos.

As li ng uag ens d e pr og ramação f ornece m certos t ipos e lem entares e a capac id ade de def in i r certos t ipos estrut urados, permit ind o a ind a q ue o prog ramador def ina novos tipo s de inf ormação (elem entares ou estruturado s). Os tip os el ementares s ão caracter i zad os pe lo f acto de as suas con stantes ser em tomadas como i ndecomp on íve is, ao passo q ue os tip os e struturad os são caract eri za dos p el o f acto de as su as constant es serem co nstitu íd as por um ag reg ado de va lore s.

Vamos cons id erar a lg uns t ipo s d e inf ormação el ementar q ue e xist em pré-def in idos como os ti pos l óg ico, c ará cter, inte iro e r ea l. Como t ipo s estruturado s e xiste m os tipos ta be la, f ich a, conj unt o e f icheir o. Neste trabal ho n ão f ala remos de to dos estes ti pos de inf ormação, nomead amente d os tipo s estruturad os co nj untos e f iche iros.

2.1 Tipo lógic o

Em prog ramação é p oss íve l dec id ir se u ma dada e xpress ão é verda de ira ou f alsa recorre ndo ao tip o lóg i co (“boo l ean” em Pas ca l).

O tipo l óg ico s ó po d e assum ir do is va lor es “true” (verda de iro) e “f alse” (f also).

As oper açõe s q ue podemos ef ectuar so bre val ores lóg ico s, produ zind o va l ores lóg ic os s ão de d ois ti pos, as o p erações un ári as e a s oper açõe s bin ári as. As opera çõ es unár ia s prod u zem um val or lóg i co a p artir de um va l or lóg ic o. Em P asca l e xistem pred ef inida s três oper aç ões un ária s (tabel a 2.1):

(15)

• A oper ação “n ot” (“não” em l ing uag em natura l) muda o va lo r lóg ico. • A oper ação “su cc” (“sucessor”) prod u z o va lor lóg ic o q ue aparece (n a ordem def ini da e ntre as consta ntes l óg ic as) depo is d o seu ar g umento. • A o peraç ão “pre d ” (“antecessor”) pr o du z o val or lóg i co q ue ap arece (na ord em def in id a entre as c onst antes lóg ic as) a ntes do seu arg umento.

A not (A) succ (A) pred (A)

false true true -

true false - false

T abela 2.1: Operaçõ e s unári as so bre va lo res lóg ic os

As o peraç ões b iná rias ace itam d oi s arg umentos do ti p o l óg ico e produ zem um val or do tip o l óg ico. E ntre estas op eraçõ es existem a s operaç ões lóg ica s d e conj unç ão (repres entada s pe lo op erad or “and”) e disj u nção (re present adas p el o oper ador “ or”).

A B A and B A or B

true true true true

true false false true

false true false true

false false false false

T abela 2.2: Operaçõ e s de conj u nção e dis j unção

As outras op eraç ões b inár ias, cha madas oper açõe s relac ion ai s, comparam a pos iç ã o relat i va d os seu s arg umentos, na ord em def inid a para as c onsta ntes l óg icas (suc c(f alse)= true). As oper açõe s relac io na is existe ntes em P asca l estão re prese ntada s na tabe la 2.3.

(16)

A B A = B A < > B A < = B A > = B A < B A > B

true true true false true true false false

true false false true false true false true

false true false true true false true false

false false true false true true false false

T abela 2.3: Operaçõ e s relac io na is sobr e valor es l óg icos

2.2 O tipo carácter

A inf ormação d o ti po car ácter (“ch ar” em Pa sca l) é co mposta p el o conj unto ( orden ado ) de todo s os caracteres q ue p odem ser represent ados num dado c omputad or.

As consta ntes do ti po carácter (ou a lf anumér icas) são re presenta das dentro de um prog rama, entre pl icas:

A : = ‘a’; B : = ‘b’;

Esta repre senta ção surg e da nec ess ida de de d ist ing u ir uma consta nte do tip o cará cter de uma vari á ve l. E xiste uma rel ação de ord em total n o conj unto d e caracter es ou sej a uma orde m def inida so bre as constant es do ti po c arácter q u e dep end e d o có dig o uti l i za do p ara re p resentar o s caracteres. P ara o códig o A SCII a o rdem entre os cara cteres está represent ada n o ane xo A.

As op eraçõ es q ue se pod em ef ectuar sobre c aracteres, produ zin do caracteres s ão ap en as as op eraçõ es uná rias:

 A op eraçã o “s ucc” p rodu z o c arácter q ue apar ece ( na ordem def inid a entre caracteres) imedi atamente de po is do seu arg umento, ou sej a succ (‘c ’) tem o va lo r ‘d’ (p ara o có dig o ASCII).

 A opera ção “pr ed” p rodu z o c arácter q ue aparec e (na ord em def inid a entre cara cteres) i mediatame nte a nte s do arg umento, ou sej a pred (‘ d’) tem o va lo r ‘c’.

(17)

Note q ue ape sar de estas o peraç õe s terem o mesmo nome q ue operaç ões seme lh a ntes e xi stentes p a ra os val ores l óg icos, e las represent am operaç ões d if erentes.

2.3 Cadeia s de c ar acteres

Uma ca de ia de cara cteres (“stri ng ” em P asca l”) é um t ipo est ruturado de inf ormação, q ue é def ini do como uma seq uên ci a d e ca racteres. O compriment o da ca d eia é o número d e c aracteres q ue a co ns titui.

As consta ntes de cade ias d e caracte res, tal como as constant es alf anuméri cas, são r eprese ntada s em Pa scal d e lim itada s por plicas:

nome: = ‘João Pedro Silva’

1.4 O tipo inteiro

O tipo int eiro ( ‘ integ er’ em Pa sca l) é con stitu ído p or números sem parte dec imal, pod end o s e r pos iti vos, neg ati vo s ou zero. So bre os el ementos do t ipo i nte iro p ode mos ef ectuar as o pe rações repres enta da s na tabe la 2.4 as q uais tran sf ormam inteir os em inte iros.

Operador Definição Uso Significado

- unária - a simétrico de a

succ unária succ (32) sucessor de 32 tem o valor 33

pred unária pred (2) antecessor de 2 tem valor 1

abs unária abs (- 32) valor absoluto de -32

sqr unária sqr (5) o quadrado de 5

+ adição (binária) a + b a mais b

- subtracção (binária) a - b a menos b

* multiplicação (binária) a * b a multiplicado por b

div divisão inteira (binária) a div b a dividido por b

mod resto de divisão inteira (binária)

a mod b resto da divisão inteira de a por b

(18)

2.5 Tipo real

Os números rea is ( em Pasca l “rea l”) s ão número s com pa rte decima l. Na mai ori a das l ing u ag ens de prog ramaç ão e xistem do is mét odos p ara a represent ação de co nstantes d o tip o rea l :

 A notaç ão d ec imal, em q ue se repres enta o n úmero, co m ou sem sin al, p or uma p arte int eira, um ponto correspo nde nte à virg ula e uma parte d ecima l. São e xemp lo s d esta repres entaç ão os n úmeros 7.0 , -43.00 e 0.856.

 A notaçã o ci ent íf ic a em q ue se representa o número c om ou sem sin al, atra vés de u ma mantiss a (i nte ira ou rea l) e de uma potênc ia inte ira de de z (e xp oente) q ue mult ip l ic ada pe la ma ntis sa produ z o

número. Sã o e xemplo s desta re presenta ção o s números 7E0, -4. 3E1 e 8 .56E-1, re prese ntad os em n otaçã o d ec imal no

parág raf o anterior.

Sobre os e lemento s do tip o “rea l” po dem ef ectuar-se as operaç ões represent adas na ta bel a 2.5, as q uai s transf ormam reais em reais.

Note q ue int (a) é um número real ig ual à p arte inte ira de a ; por exemp lo:

Int (2.56) = 2.

Como os c omputa d ores têm uma memória l imitad a e xiste sempre um lim ite par a a g ama de inte iros e rea i s represent á ve is. E ste lim ite depe nde d o computa dor e da vers ão do P asca l uti l i za da.

(19)

Operador Definição Uso Significado

- unária - a simétrica de a

abs unária abs (a) valor absoluto de a

sqr unária sqr (a) quadrado de a

sqrt unária sqrt (a) raiz quadrada de a (a ≥ 0)

sin unária sin (a) seno de a (a radianos)

cos unária cos (a) Cosseno de a (a radianos)

arctan unária arctan (a) arco-tangente de a ( y=arctan(a); -π/2 < y < π/2 )

ln unária ln (a) logaritmo natural de a (a > 0)

exp unária exp (a) exponencial de a

int unária int (a) parte inteira de a

frac unária frac (a) parte fraccionária de a

+ adição (binária) a + b a mais b

- subtracção (binária) a - b a menos b

* multiplicação (binária) a * b a multiplicado por b

/ divisão (binária) a / b a dividido por b

T abela 2. 5: Operaçõ es para o t ipo rea l

2.6 Tran sformaç ões entre tipos

Embora as c onsta ntes do ti po i nte iro, real, car ácter e l óg i co tenham sid o def ini das co mo conj untos d isj untos e xistem ope rações q ue transf ormam os e le mentos d e um dos tipos de inf ormação el ementar num eleme nto de out ro tipo d e inf ormaçã o eleme ntar.

2.6.1 Transforma çõe s entre int eiro e rea l

A transf ormação d e um rea l num inte ir o pod e ser f eita de doi s modo s dist intos:

1) O real é arred ond ad o para o inte iro mai s próximo: round (4.3) = 4

round (4.6) = 5 round (4.5) = 5

(20)

2) O real é transf ormado no i nteir o q ue correspon de à su a parte inte ira: trunc (4.3) = 4

trunc (4.6) = 4

2.6.2 Transforma çõe s entre int eiro e cará cter

As transf ormações entre o ti po inte iro e o tip o carácter s ã o def ini das com base n a ordem def inid a sobr e as co nstantes d o tip o car ácter.

A operaç ão “chr” transf orma um inteiro não neg ati vo n o carácter q ue aparec e, na or de m def inida para os caracter es, na pos iç ão correspo nde nte ao seu arg umento (o prime iro cará cter a parece na pos ição zero).

A operaç ão “ord” tra nsf orma um carácter num inteir o q ue representa a sua po si ção n a ord em def ini da par a os caracteres. Como j á ref erimos no parág raf o 2.2 a ordem def inid a sobre as consta ntes do ti p o carácter depe nde d o cód ig o u til i za do. Par a o cód i g o ASCII (ane xo A ) teremos:

ord (‘L’) = 76 chr (114) = r ord (chr (8)) = 8 chr (ord (‘a’)) = a

Estas opera ções só são def in ida s p ara inte iros entre zero e o má ximo número de c aractere s represent á ve is no computad or, menos um.

2.6.3 Transforma çõe s entre tip o ló gi co e outros tip os

E xi ste uma operaç ã o q ue transf orma lóg ico em inte iro pr odu zind o a pos ição ocu pad a na ord ena ção entr e va lore s lóg ico s, pe lo seu arg umento; a operaç ão “ord” é def in ida p or:

ord (false) = 0 ord (true) = 1

A op eraçã o “od d” (do Ing lês ìmp ar) transf orma um inte iro em lóg i co, tendo o va lor “true” se o arg umento é ímpar e o va lor “f als e” em caso contrári o.

(21)

E xi stem a ind a a s operaç ões rel ac ion a is, q ue tra nsf ormam pares de va l ores de um mes mo tipo (i nte iro, rea l ou c arácter) num valor d o tip o lóg ic o; estas op eraç ões estã o repres ent adas n a tabe la 2.6.

Operador Definição Uso Significado

= igual a = b a igual a b ?

<> diferente a <>b a diferente de b ?

< menor que a < b a menor que b ?

< = menor ou igual a a < = b a menor ou igual a b ?

> maior que a > b a maior que b ?

> = maior ou igual a a > = b a maior ou igual a b ?

T abela 2. 6: Operaçõ es rela ci ona is - tran sf ormações entre tipo lóg ic o e o utros tipo s

Por e xempl o, 8 > 5 tem va lor “true” e ‘ d’ > ‘t’ tem valor “f alse” porq ue o carácter ‘ d’ nã o apar ece d epo is do c arácter ´t´ (cons idera ndo o cód ig o AS CII)

2.7 Con stante s

Des ig na-se por co n stante tod a a g ran de za q ue não var ia durante a execuç ão d e um pro g rama.

Em Pasc al as con stantes sã o def in id as na zo na d e de f inição de constant es q ue é co mposta pe la pa la vra “const” seg ui da de uma séri e de def in iç ões de c o nstantes, ou s ej a a def ini ção de uma constant e é ig ual a:

const <identificador> = <constante>

Como e xem pl os de d ef iniçã o de co nstant es pod emos ter: const pi = 3.14159;

taxa = 0.15; ano = 1998;

const media = 15 ; idade = 19;

A ut il i za ção de nom es s imbó li cos para des ig nar con stantes represe nta duas vantag ens e m relaç ão à r ef erênc ia d irecta ao s eu va lor. A

(22)

uti li zaçã o de um nome simból ic o q ue sug ira o sig nif icado o u a f inal id ade da const ante f aci lita a le itura e a compre ensão do prog rama. Além d iss o se f or neces sár io alt erar o va lor d a c onst ante n o pr og rama, só é prec iso modif icar a parte do prog rama em q ue a constant e está def in i da.

2.8 Variá veis

Vari á ve l é uma ent i dade c uj a g rande za pode vari ar dura nte a e xec ução do prog rama.

Uma var iá ve l tem u m nome, c orrespo nd e a uma pos içã o d e memória no computad or e pod e ter ou não um va l or.

Uma var iá ve l é car acteri zada pe lo ti p o q ue espe cif ica a clas se de va l ores q ue podem ser assoc ia dos à va riá ve l, e a cl asse d e operaçõ es q ue podem ser ut il i zadas p ara cri ar, ace der e modif icar a var iá vel.

Uma vari á ve l també m é caracteri za da pel o val or q ue é guardad o na zo na d a memória c orrespon dente à vari á vel.

2.8.1 Dec lar ação de uma vari áve l

Uma vari á ve l tem que ser dec lara da; a declar ação d e uma var iá ve l é f eita uma ún ica ve z no in íc io d o prog rama e ser ve para inf ormar o computad or da e xis tênci a de uma n o va variá ve l, do seu tipo e da necess id ade de ass o ciar ao nome da vari áve l uma zon a na m emória.

A sint a xe d a dec lara ção de uma vari á ve l é ig ual a:

var <identificador> : <tipo>

Na ta be la 2.8 a pres entamos e xemp los d e de cl araçã o d e vari áve is p ara alg uns ti pos d e inf ormação e lementar.

(23)

Tipo Instrução

integer var a,i : integer;

real var b : real;

boolean var log : boolean; char var letra : char; string var nome : string;

Tabela 2.8: Declaração de variáveis

Depo is da de cl araç ão de uma vari á ve l existe uma asso ci a ção entre o nome da variá ve l e uma zona de memóri a, mas não e xiste ne nhum va lor assoc iad o à var iá vel .

A def in ição de uma var iá ve l é a o pera ção atra vés da q ua l se cria ou modif ica o va lor d a var iá ve l (neste cas o o va lor a nteri or da variá ve l é perd ido).

A ref erência ao va lo r da var iá vel é a op eração atra vés da q ual se tem acesso a o va lor da var iá ve l, não a ltera ndo o seu val or. Co nsi deremos doi s e xemp los d e de f inição d a var iá ve l A :

A : = x + y; A : = A + 3;

No prime iro e xemp l o de def in içã o d a variá vel A é f eita a r ef erência ao va l or das var iá vei s x e y n ão a lteran do o s seus va lore s.

No s eg undo e xemp l o de def in içã o d a variá vel A é f eita a r ef erência ao seu val or para o s o mar ao n úmero 3, p assan do o va lor da var iá ve l A a ser ig ua l ao se u va lo r anterior ma is três uni dad es.

2.9 Expr ess ões

Uma e xpre ssão é u ma f órmula ou reg ra de computa ção q ue produ z um va l or ou resu ltad o.

Uma e xpress ão é co mposta por opera dor es e operan dos. Os operan dos podem s er co nstant es, var iá ve is, e xpre ssões ou va lores g erados por f unções. Os opera dores p odem ser unár ios (se a pen a s têm um operan do) ou b in ári os (se têm dois o p erando s, como por exemp lo os operad ores “+” ou “/”).

(24)

As e xpre ssõe s num érica s têm operad or es numéri cos e as express ões lóg ic as têm op erado res lóg i cos e r el ac io nai s. Sen do X , Y e Z vari á ve is do tip o int eiro ou rea l, são e xempl os de e xpr essõ es numér ica s:

X + 2 * Y

Sqr (X) / abs (Y)

e e xemp los d e e xpre ssões lóg ica s:

X <=Y

(X / Y <0) and (Y <> Z)

Para e vitar amb ig uid ade em re laç ão à ordem de ap l i cação d os operad ores numa e xpres são, as l ing uag ens de prog ramação estabe lec em dua s reg ras q ue espec if ic am a ordem de ap l icaç ão d os operad ores:

1) Os operador es co m maior prior id ade são ap l icad os an tes dos operad ores com men or prior ida de.

2) Se e xistem do is o perador es c om a mesma pri orid ade ele s sã o apl ic ados d a esq uer da para a dire ita.

A uti li zaçã o de par êntes is permit e alte rar a ordem de ap l icaç ão dos operad ores.

Na tabe la 2.7 apres e ntamos a l ista d e pri orid ades em P asca l.

Prioridade Operador

máxima aplicação de funções

not, - (simétrico) *, /, div, mod, and +, -, or

<, < =, =, < >, > =, >, in Tabela 2.7: Priorid ade s em Pasca l

(25)

Cons id eremos as d u as e xpres sões numé ricas:

X : = 2 * 5 div 3 ; Y : = 2 * (5 div 3) ;

Os operand os de mu lti pl ica ção (*) e de d i visão inte ira( / ) têm a mesma prior ida de. N a prime ira e xpressã o e les s ão ap l icad os da esq uerda p ara a d ire ita ef ectua ndo- se as sim em pr imeir o l ug ar o prod uto ( 2 *5 = 1 0 ) e só d epo is a di vis ã o i nte ira (1 0 d i v 3 = 3 ); o val or d a e xpre ssão numéric a é atri bu ído à var iá vel X .

Na s eg unda e xpr ess ão a d i vi são i nteir a ( 5 d i v 3 = 1 ) é f eita em prime iro lug ar e só dep oi s se ef ectua o prod uto ( 2*1 = 2 ); o va lor da e xpress ão numéric a atri bu ído à var iá vel Y é ig ua l a 2 uni dad es d if erente do va lor obtid o para a vari á vel X (= 3).

(26)

3. ES TRU TU R AS D E C ON TROLO

Neste cap ítu lo vamo s apre sentar a lg umas i nstruçõ es e l ement ares, como a instruç ão de atr ibu içã o e as instru ções de le itura e d e escrit a; também aprese ntaremos as estruturas de con trolo, mec an ismos através dos q uais se p ode espe cif icar a ord em de execuç ão d as i nstru ções d e um prog rama.

E xi stem vári os ti po s de estrutura s de control o: a seq ue nci ação, a sel ecção, a repe tição e o sa lto q ue delib erada mente não aprese ntaremos pe l o f acto de g erar p rog ramas dif íce is d e l er e de modif icar.

3.1 Estrutur as d e c ontrolo I: SEQU EN CI AÇ ÃO

É a estrutura de co n trolo ma is s impl es e cons iste em es pec if icar q ue as instruç ões são e xec utadas seq uen ci alm ente p e la ordem q u e ap arecem no prog rama.

Cons id eremos du as instruç ões inst1 e i nst2; a espec if icaç ã o de q ue a instruç ão i nst2 é executa da ime di ata mente após a e xecuçã o da instruç ão i nst1 é o btida e scre ve ndo em P asca l

inst1 ; ins t2 ;

O s ímbo lo “;” re pres enta o oper ador de seq uenc iaçã o se ndo ao mesmo tempo o sep arad or d e i nstruçõ es. Em l in g uag ens em q ue cad a i nstruçã o é escrita numa li nha o f im da linh a repre senta imp l icit amente o operador de seq uenc ia ção.

Em Pasca l é po ss ív el es pec if icar q ue um g rupo de instruçõ es de ve s er cons idera do como um todo, sendo as instruçõ es q ue o constit uem executa das seq ue n cia lmente. Est a es trutura é chamada instruçã o

composta, a su a si ntaxe é da da por:

<instrução composta> ::= begin <instruções> end

O par beg i n/end f unci ona em Pa sca l c omo um par de par êntes is em matemática e c omo um parêntes is n a l in g uag em alg orítm ica.

(27)

3.2 Instruç ões elem entares

Neste p arág raf o apresentaremos três instruç ões q ue em bora muit o simp les s ão f undam entai s em li ng uag en s de prog ramação: a s in struçõe s de atrib ui ção, d e le it ura e de es crita d e d ados. A instruç ão de atribu içã o permite atr ibu ir um va l or a uma var iá ve l ; as instruç ões d e l eitura e de escrita de d ado s permitem res pect i vame nte a tran sferênc ia d e inf ormação do e xt eri or para o comp utado r e recipro camente.

3.2.1 Instruçõe s de atribu iç ão

Uti li zan do esta instr ução p odemos atrib uir um va lor a uma var iá ve l. A sinta xe da instruç ão de atrib ui ção é dada por:

<variável> : = <expressão>

A vari á ve l é um i dentif ica dor corres p onde nte a uma va riá ve l e a express ão pod e ser uma constante, uma var iá ve l, o va lor de uma f unção ou uma comb ina ção destas e ntid ades através de opera dores.

Na in strução de atr i bui ção o va lor da e xpressão é ca lcu la do e atrib u ído à variá ve l, send o o valor a nteri or da var i áve l perd ido.

São e xempl os de op erações de atri bu içã o: Nota : = 17;

contador : = contador + 1; x : = y * 2 – z;

B : = chr (70);

No prime iro e xemp lo é atrib u ído o va lor 17 à var iá vel Nota. Se Nota nã o f or uma variá ve l do tipo inte iro ou r ea l a instruç ão está s inta cticame nte inc orrecta.

No seg und o e xemp l o é atrib u ído à variá ve l c ontad or (q ue tem de ser do tipo inte iro ou re al) o val or anter ior da variá vel c ontad or mai s 1.

No terce iro e xemp lo o va lor da e xpre ss ão y * 2 – z é c alc ul ado e atribu íd o à vari á ve l x. T oda s as variá v eis x, y, z t êm de ser do t ipo inte iro ou re al.

(28)

No ú ltimo e xempl o o carácter q ue apa rece, na ordem def in ida p ara caracteres, na pos i ção c orrespo nde nte ao número 70, é atribu íd o à var iá ve l B q ue tem de ser do tip o carác ter. Para o cód ig o ASCII (ane xo A) temos B = ‘F ’.

3.2.2 Instruçõe s de l eitura d e da dos

Para a e xec uçã o de um prog rama o com putador nece ss ita n ormalmente de o bter va lore s do e xteri or; a o btenç ã o de va lores do e xt erior é f eita através das in struç ões d e le itura de d ados. Esse s da dos pod em ser li dos atra vés do te cla do do termin al, podem estar arma zenad os num f icheiro d e dad os, p odem ser l id os atra vés de se nsores, etc.

Para l er dad os atra vés do tec lad o usamo s: read (< lista de variáveis >)

readln (< lista de variáveis >)

esta instrução posiciona o indicador de leitura na linha seguinte, após a leitura

E xemp lo de le itura d e doi s números x e y: read (x, y);

3.2.3 Instruçõe s de escrita d e resu ltad os

Depo is de ef ectuar a man ipu laç ão da i nf ormação é import ante q ue o computad or pos sa a presentar os res ult a dos a q ue cheg ou. I sto é f eito através da s in struçõ es de escr ita.

Os resultad os pod e m ser vis ua li zad os no termina l, ser imp rimid os, ser g uardados n um f iche iro, etc.

Para escr e ver resu lt ados n o monit or usa mos: write (< lista de expressões ou texto >)

writeln (< lista de expressões ou texto >)

(29)

E xemp lo de escrit a d e doi s números um real e um inte iro: n = -12.14 ; k = 4;

writeln (‘Teste de ensaio ‘); writeln (n, n:11, n:6, k:4); writeln (‘ Teste de ensaio ’); writeln (n:9:2 , n:3:1, k:5); resulta do:

Teste de ensaio

-1.2140000000E+01 –1.214E+01– 1.2 E+01 4 Teste de ensaio

- 12.14–12.1 4

3.3 Estrutur as de c ontr olo II: SELE CÇ ÃO

Os prog ramas q ue p odemos dese n vo l ver até ag ora s ão mu it o simp le s e com capac id ades e xtremame nte l imita das: el es po dem l er va lor es, ef ectuar cálcu lo s e escre ver res ulta d os send o as s uas instruç ões executa das s eq uenc i almente.

Em prog ramas ma is compl e xos surg e f req uentemente a nec e ssid ade de dec id ir se uma inst rução ou c onj unto de instruç ões de ve ou n ão s er executa da, de a cord o com o val or de um a e xpress ão.

As d uas instru ções em Pas ca l q ue nos p ermitem se l e ccio nar a s instruç ões q ue de ve m ser e xecutad as s ã o: a instruç ão “ if ” q ue perm ite a esco lha e ntre duas alternat i vas e a i nstrução “cas e” q ue permite a esco lha e ntre a ltern ati vas mú lt ip las.

3.3.1 A i nstruçã o “if ”

A instruç ão “if ” permite a se lecç ão entre duas a lternat i va s; depen den do do va lor de uma e xpressão do tip o lóg i co, esta in strução p ermite-nos sel ecc ion ar uma de duas instruç ões (q ue po dem ser comp ostas) par a ser e xecut ada.

A sint a xe d a in struç ão “if ” é def inida pe l o diag rama:

(30)

ou

if <expressão lógica> then <instrução 1>

Cons id eremos p or exemp lo q ue des ej ávamos somar 5 u nid ades ao menor de do is n úme ros x e y. Uti li zan do a instruç ão “if ” teremos:

If x < = y then x : = x + 5 else

y : = y + 5;

Na i nstruçã o “if ” anterior se x f or menor ou ig ua l a y o valor d e x é altera do pass ando a ser ig ua l ao va lor anter ior ma is c in co un ida des; caso co ntrário as ci n co un ida des sã o ad i cio nada s à var iá ve l y.

Cons ider emos q ue desej á vamos ca lcu l ar o va lor a bso luto dos no s V 1 q ue são di vis íve i s p or V2:

if (V2 < > 0) and (V1 mod V2 = 0) then V1 = abs (V1);

Como ú ltimo e xempl o, supon hamos q ue q ueríamos escre ve r o máximo de do is números in teiros a e b, re alç ando o cas o de s e rem ig uais; aprese ntamos o a lg oritmo corres pon den te e o respect i vo prog rama em li ng uag em Pasca l:

obj ecti vo: escre ver o máximo de doi s números int eiro s a e b, realçand o o caso de s erem ig u ais;

var iá ve is dad os: a, b ,inteir os, números d ados; escreva (“es cre va doi s número a e b “); leia (a, b);

se a > = b então se a = b então

escreva (“os números são ig uai s”) senão

escreva (“o maior é “, a) senão

escreva (“o maior é “, b);

No alg oritmo anter io r dep ois da le itura d os n úmeros inte iros a e b são comparad os o s se u s va lores. Se a f or ig ual a b é escr ito q ue os

(31)

números são ig uai s; se a f or maior q ue b o prog rama escreve q ue a é maior q ue b, e em c aso contrár io q ue o maior é o b.

No alg or itmo as cha vet as def inem um co nj unto de instru ções q ue de vem ser e xecut adas s e q uencia lme nte. No prog rama corresp onde nte as cha veta s são su bstit u íd as pe lo par beg in /end.

Prog ram maior; var a, b : integ er; beg in

writeln ( ‘ escreva dois números a e b ‘); readln (a,b);

if a > = b then begin

if a = b then

writeln (‘os números são iguais’) else

writeln (‘o maior é ’, a); end

else

writeln (‘o maior é ’, b); end . { Program maior }

A ut il i zação de i ns truções “ if ” cuj as i nstruções sã o, por sua ve z, instruç ões “ if ” é mu ito c omum em prog r amação e c ostuma chamar-se instruç ões “ if ” encadea das. Em i ns truções de “ if ” encade ada s con ve nci ona-s e q ue, sal vo in d icaçã o em contrári o um “el se” p ertence a o “if ” mais pró ximo, nã o se ndo nec essár io neste caso a intro du ção do par beg in/en d para rea l çar a q ue “if ” pertence ca da “el se”; o prog rama anteri or pod eria entã o ser escr ito com a forma:

Prog ram maior; var a, b : integ er; beg in

writeln ( ‘ escreva dois números a e b ‘); readln (a,b);

if a > = b then if a = b then

writeln (‘os números são iguais’) else

writeln (‘o maior é o’, a) else

writeln (‘o maior é o’, b); end. { Prog ram maio r }

(32)

3.3.2 A in strução “c ase”

A esco lh a entre mú l tip las a ltern ati vas p ode ser f eita re corr endo a uma estrutura de “ if ” encadea dos. P orém u m encade amento c om muitos n íveis po de orig i nar instru ções d if íce is de compr een der. Em alter nati va ao enc ade amento d e instru ções “ if ” podemos uti l i zar uma in strução d e sel ecção mú ltip l a – a instru ção “cas e” em P asca l. No en tanto e sta instruç ão não é a penas uma var iant e de uma estrutu ra de “if ” encad ead os uma ve z q ue a i nstruçã o “case” é apro pria da e m selecç ão basea da em var iá veis q ue têm va lor es di scretos, e ta mbém para peq uenas g amas d e va lore s; este as pecto é mostra do no e xemp lo aprese ntado.

A sint a xe d a estrutur a “case” é def in id a:

<instrução “case”> : : = case < expressão > of < corpo do “case” > end

A e xpre ssão, c hama da o se le ctor, é uma q ualq uer e xpre ssão cuj o va lor correspo nde a um ti po enumer á ve l (int ei ro, lóg ico o u caráct e r).

O corpo d o “ca se” é const itu ído pe los “e lemento s d o cas e” c uj a si nta xe é dada por:

<elemento do “case”> : : = <rótulos do “case”> : <instrução>

O rótulo do “cas e” é uma c onsta nte d o mesmo tip o q ue a e xpr essã o. A o encontrar a in struçã o “cas e” o computa d or ca lcu la o val or d a e xpre ssão e e xe cuta a instru ção c uj os rótu lo s do “cas e” co ntêm o va lor da express ão; co nseq u entemente n uma i ns trução “cas e” não p odem e xistir doi s val ores ig uais de rótul o do cas e; s e o val or da e xpr es são nã o f or ig ual a ne nhuma da s con stantes em rót ulo s d o “ca se” tere mos ou nã o um erro de si nta xe c onf orme a versã o do Pasca l ut il i za da.

Cons id eremos q ue desej á vamos c on ver ter uma n ota q uant itati va em nota q ual itat i va su po ndo q ue a corres pon dênc ia ser ia:

18 – 20 = A, 14 – 17 = B , 10 – 13 = C , 5 – 9 = D e 0 – 4 = E Uti li zan do a instruçã o “case” ter íamos:

(33)

Program Conver; var nota: integer; begin

write (‘ escreva a nota’); read (nota); case nota of 18, 19, 20 : writeln (‘A’); 14, 15, 16, 17 : writeln (‘B’); 10, 11, 12, 13 : writeln (‘C’); 5, 6, 7, 8, 9 : writeln (‘D’); 0, 1, 2, 3, 4 : writeln (‘E’); end { case }

end. { Program conver }

Ef ectuada a le itura de uma nota, o c omputador e xecut a a instru ção cuj os rótu los co nte nham o va lor ig ual à nota; por e xempl o para uma nota ig ua l a 15 val or es o computa dor esc reve a l etra B.

3.4 Estrutur as de c ontrolo III: REP E TI Ç ÃO

Em prog ramação, uma seq uênci a de instruç ões exe cutad a repetit i vame nte é ch amada c ic lo.

Um ci cl o é con stitu ído por uma s eq uê nci a de instruçõ es, o corp o d o cic lo, e por uma est rutura q ue c ontro la a e xe cuçã o d essa s instruç ões, espec if ican do q uant as ve zes o corpo d o cic lo d e ve ser e xecu tado.

Aprese ntamos três i nstruções q ue perm item a espe cif icaç ã o de cic lo s em Pasca l, as instruções “whi le” , “repeat” e “f or”.

3.4.1 A i nstruçã o w hil e

A i nstruçã o “ wh i le” espec if ica a e xec uç ão rep etid a de uma instruç ão enq uanto uma dete rminad a e xpr essã o do ti po lóg ico t i ver um val or ver dad eir o. A si nta xe da i nstruçã o “ wh il e ” é def inid a por:

<instrução “while” > : : = while <expressão> do <instrução>;

A e xpres são é um a e xpress ão lóg ica e a instruç ão po d e ser uma instruç ão comp osta.

Supo nhamo s q ue de sej á vamos ef ectuar a soma de uma s eq uênc ia de números pares cuj a q uanti dad e é de sc onhec id a, a ssi na lan do o f im da seq uênc ia c om a i ntroduçã o d e um númer o imp ar. N o cor po d o a lg oritmo

(34)

aprese ntado, em pri meiro lug ar, a var iá v el soma é i n ici al i za da a zer o e lê-se o prime iro nú mero; depo is i ni ci a-se um cic lo corre s pond ente a uma instruç ão “enq u anto”, em q ue, enq uanto o número li do for par são ef ectuadas as in stru ções de actu al i zaçã o da variá ve l soma e de le itura de um no vo número . Quando se lê um número impar as in struções do corpo do c ic lo j á n ã o são ma is e xec utad as e a var iá ve l s oma é escr ita; também aprese ntamos o prog rama corre spond ente.

Obj ecti vo: ca lcu lo da média d e um conj un to de números p ares ; var iá ve is dad os: x , i nteiro, n úmero l id o;

var iá vei s au xi li ares: soma, inte iro, som a dos númer os l id os;

escreva (“es cre va um número par” ) ;

escreva ( “ para t erminar es cre va um número impar” ); soma ← 0 ;

leia ( x);

enq uanto numero mod 2 = 0 f aça soma ← soma + x;

escreva (“es cre va um número p a r” ) ;

escreva ( “ para terminar es cre va um número impar” ); leia ( x);

escreva (“a som a é : “soma);

PROGRAM soma1;

{ soma de uma sequência de números pares } var x, soma : integer;

begin

soma : = 0;

writeln ( ‘ escreva um número par ‘);

writeln ( ‘ para terminar escreva um número impar ‘); readln (x);

while x mod 2 = 0 do begin

soma : = soma + x ;

writeln ( ‘ escreva um número par ‘);

writeln ( ‘ para terminar escreva um número impar ‘); readln (x) ;

end;

writeln (‘ A soma é ‘,soma); end. { Program soma1 }

(35)

3.4.2 A in strução “r epeat ”

A in strução “re peat” permite es pec if icar a e xec ução r epet iti va de uma seq uênc ia de instruç ões até q ue certa e xpressão do tip o l óg i co tenha o va l or verdad e iro.

A sint a xe d a in struç ão “repeat” é d ef ini d a por:

<instrução “repeat” > : : = repeat <Instruções> until <expressão>

A e xpress ão é uma e xpre ssão l óg ica. Cons id eremos q ue q uer íamos somar uma s eq uênc i a de números int eir os pos it i vos até q ue o va lor d a soma sej a mai or q ue 1000 e ao mesmo tempo contar a q u antid ade de números l ido s; apr e sentamos o a lg oritm o corres pon dente e o resp ecti vo prog rama:

Obj ecti vo: soma d e uma seq uênci a de números pos iti vos até a soma ser maior q ue 1000;

var iá ve is dad os: x, i nteiros, n úmeros li d os;

var iá ve is resu ltado: soma, inteiro , so ma dos números li d os; n, inteiro , q uanti dade d e números l id os; soma ← 0; n ← 0;

repita

escreva ( “ es cre va um número p o siti vo “); leia ( x); n ← n + 1;

soma ← soma + x ; até soma > 1000 ;

escreva(“ A soma de “, n ,” números é ig ual a “, soma);

PROGRAM soma2;

{ soma de uma sequência de números positivos até a soma ser maior que 1000} var soma, x ,n: integer;

begin

soma : = 0; n : = 0; repeat

writeln ( ‘ escreva um número positivo ‘); readln (x); n : = n + 1;

soma : = soma + x ; until soma > 1000 ;

writeln (‘ A soma de ‘, n,’ números é igual a ‘, soma); end. { Program soma2 }

(36)

No a lg oritmo apre s entado, a pós a in ic ia li zaçã o a zero da s variá ve is soma e n, in ic ia-s e um cic lo, c orrespo n dente à i nstruçã o “r epita”, ond e os númer os sã o s u cess i vamente l id os e somad os e a va riá ve l n é actua li zada; q uan do a var iá vel soma f or maior q ue 1000; en tão o cic lo termina e as vari á ve i s n e soma são e scri tas.

Ao contrár io da instr ução “ wh i le”, o cic lo da instruç ão “repea t” é sempre executa do pe lo me nos uma ve z, p orq ue a e xpressã o q u e co ntrol a a execuç ão do c ic lo só é executa da no f im do cicl o. No e xemp lo aprese ntado se o primeir o número l id o for maior q ue 1 000 o cic lo s ó é executa do uma ve z.

3.4.3 A in strução “f or ”

A in strução “f or” ao contrár io da s i ns truções “ whi le” e “ repeat” dá orig em a um ciclo c o ntado, cuj a e xe cuçã o é control ada p or uma var iá ve l de contro lo, q ue t em de ser de um tipo e numerá vel1. O cicl o é executa do p ara uma seq uênc ia f init a de valor es dest a var iá ve l . Antes da prime ira p assag em p elo ci cl o esta var iá vel é i n ici al i zada com o pr imeir o va l or de seq uên ci a; depo is d e cad a pas sag em pelo c ic lo, a var iá ve l de control o é a ctua li z ada com o va lor s eg uinte da seq uên c ia. O cic lo termina dep ois de u ma pass ag em com a var iá ve l de contro lo ig ua l a o últ imo va lor da se q uência. Num c ic lo de co ntrol o sa be mos sempre q uantas ve ze s el e va i ser e xecut ado o q ue contrasta co m os cic los “whi le” e “re peat”.

A sint a xe d a in struç ão “f or” é ig ual a: to

For <index> : = <exp 1> <exp 2> do <instrução>; down

index – variável inteira (ou carácter ou lógica)

exp1, exp2 – expressões do tipo inteiro (ou carácter ou lógico)

A instru ção pod e ser uma in struçã o compo sta. Os valor es d as express ões e xp1 e exp2 repre sentam r espect i vame nte o valor in ic ia l e f inal da seq uênc ia. Se o va l or de e xp1 f or menor q ue o va lo r de e xp 2, a var iá ve l de c ontro lo é acresc id a de um a un ida de em c ada passag em

1 Tipo enumerável é caracterizado pelo facto de ser possível enumerar todos os seus valores (por exemplo tipo lógico e tipo inteiro); um exemplo de tipo não enumerável é o tipo real.

(37)

pel o c ic lo; caso c ontrári o é d imi nu íd a de uma un id ade em ca da passag em p el o c ic lo . Sup onhamo s q ue q uer íamos c alc ul ar a médi a d as alturas do s a lun os d e uma turma constr uin do o a lg oritmo e o prog rama aprese ntado s:

Obj ecti vo: méd ia d as alturas d e n a lun os; var iá vei s dad os: n, i nteiro, n úmero de a l unos; alt, real ,a ltura de c ada alu no;

var iá ve is resu ltado: media, rea l , médi a das a lturas d os a lun os; var iá ve is au xi li ares: i, inte iro , contad o r;

escreva (“es cre va o número d e al uno s “); leia (n) ; media ← 0.0;

para i ← 1 até n faça

escreva (“es c reva a a ltura do a l un o número”, i ); leia (a lt);

media ← media + a lt; media ← media / n;

escreva (“A méd i a das a lturas é ig ua l a”, media);

PROGRAM medias; { média das alturas de n alunos} var i, n : integer;

alt, media : real; begin

writeln ( ‘ escreva o número de alunos ‘); read (n) ; media : = 0.0;

for i : = 1 to n do begin

writeln ( ‘ escreva a altura do aluno número ‘, i ); read (alt);

media : = media + alt; end;

media : = media / n;

writeln (‘A média das alturas dos alunos é igual a’, media) end. { Prog ram medias }

No in íc io d o alg orit mo, depois d a dec l aração da s vari á ve i s, é lido o número d e a lu nos d a turma e a var iá vel medi a é in ic ia l i zad a a zero. A instruç ão “par a” , em cada pas sag em pel o ci cl o, actua l i za o val or do contad or somando uma uni dad e ao se u va lor ant erior e ef ectua as instruç ões de le itur a da altur a de um al uno e de actu al i zaç ão d a var iá ve l med ia; a i n strução “ para” permi te a ind a testar se o va lor do contad or j á at ing i u o últ imo val or d a seq uênc ia n, e n este c aso, d epo is

(38)

de ef ectuar as instru ções do c ic lo ma is u ma ve z , este termi n a. Uma ve z terminad o o ci cl o é c alc ul ada a méd ia da s alturas dos a lu nos da turma. Supo nhamo s q ue q uer íamos c onstru ir um prog rama para somar os números par es meno res ou ig ua is a n; o prog rama poder ia se r:

PROGRAM somar ;

{ soma dos números pares menores ou iguais a n } var i, n, soma : integer;

begin

writeln (‘ escreva o número n ‘); read (n) ;

soma : = 0 ;

for i : = 1 to n div 2 do soma : = soma + 2 * i ;

writeln (‘A soma dos números pares menores ou iguais a n é igual a ’, soma) end. { Prog ram somar }

Ou então po der íamo s escre ver o pr og rama:

PROGRAM somar ;

{ soma dos números pares menores ou iguais a n } var i, n, soma : integer;

begin

writeln ( ‘ escreva o número n ‘); read (n) ;

soma : = 0 ;

for i : = 2 to n step 2 do soma : = soma + i ;

writeln (‘A soma dos números pares menores ou iguais a n é igual a ’, soma) end. {Program somar}

Compara ndo o s do i s prog ramas anteri o res vemos q ue ape nas d if erem na in strução de c icl o “f or”.

No prime iro prog rama o val or in ic ia l d a var iá vel de co ntrol o é ig ua l a 1 e o va lor f ina l é ig ual a metad e de n. A var iá ve l s oma é actua li zad a adi ci onan do-se o do bro da var iá vel de c ontrol o, ou sej a ad ic ion and o os números pare s men ores ou ig ua is a n. No seg undo prog ra ma o va lor in ic ia l d a var iá ve l d e contro lo é ig ua l a 2 e o va lor f in al ig ua l a n, s end o esta vari á ve l actu al i za da p el a soma de duas u ni dade s; uma ve z q ue a var iá ve l soma é actual i zada pe la ad i ção da vari á ve l d e control o, estamos, como no caso anter ior, a somar números pares menores o u ig uai s a n, s end o o n úmero de op erações ef ectuad as pe los do is prog ramas ig ua l. A uti li zaçã o dest a i nst rução “f or” apena s é permit ida em alg umas versõ es de Pasc al.

Imagem

Tabela 2.8: Declaração de variáveis
Fig ura 4.1 – T abe la  uni dime ns ion al
Tabela 6.7: Declaração de variáveis

Referências

Documentos relacionados

Aula Expositiva, Discussão dos textos, Apresentação de alunos, Exercícios, Prova.. 2

O enfermeiro, como integrante da equipe multidisciplinar em saúde, possui respaldo ético legal e técnico cientifico para atuar junto ao paciente portador de feridas, da avaliação

O Climate Policy Initiative/ Núcleo de Avaliação de Políticas Climáticas da PUC-Rio trabalha para aprimorar políticas públicas de energia e uso da terra gerando evidências para

The Climate Policy Initiative/ Núcleo de Avaliação de Políticas Climáticas da PUC-Rio works to improve public energy and land use policies by generating evidence for decision makers

Tabela de Preços Supremo | São Paulo - Capital Data das tabelas: Setembro/2020 até Agosto/2021 Atualização do material: Setembro/2020.. 515 F

•   O  material  a  seguir  consiste  de  adaptações  e  extensões  dos  originais  gentilmente  cedidos  pelo 

iv. Desenvolvimento de soluções de big data aplicadas à gestão preditiva dos fluxos de movimentação portuária de mercadorias e passageiros. d) Robótica oceânica: criação

Na fachada posterior da sede, na parte voltada para um pátio interno onde hoje há um jardim, as esquadrias não são mais de caixilharia de vidro, permanecendo apenas as de folhas