• Nenhum resultado encontrado

Programando com Pascal - Respostas+Exercícios+Pascal

N/A
N/A
Protected

Academic year: 2021

Share "Programando com Pascal - Respostas+Exercícios+Pascal"

Copied!
36
0
0

Texto

(1)
(2)

Programando

Programando

com Pascal

com Pascal

Respostas dos

Respostas dos

Exercícios Propostos

Exercícios Propostos

Jaime Evaristo

Jaime Evaristo

Instituto de Computação

Instituto de Computação

Universidade Federal de Alagoas

Universidade Federal de Alagoas

(3)

Programando

Programando

com Pascal

com Pascal

Respostas dos

Respostas dos

Exercícios Propostos

Exercícios Propostos

Jaime Evaristo

Jaime Evaristo

Instituto de Computação

Instituto de Computação

Universidade Federal de Alagoas

Universidade Federal de Alagoas

(4)

Capítulo 1

Capítulo 1

1

1 Naturalmente, na primeira travessia, um índio levaria um branco até a outra margem e voltaria sozinho. A questão é a segunda: nã Naturalmente, na primeira travessia, um índio levaria um branco até a outra margem e voltaria sozinho. A questão é a segunda: nã oo  poderia atravessar um índio e um

 poderia atravessar um índio e um branco, pois, ao chegar na branco, pois, ao chegar na outra margem, haveria dois brancos e outra margem, haveria dois brancos e um índio; não poderiam atravessarum índio; não poderiam atravessar dois índio, pois o terceiro ficaria com dois brancos. A soluão é atravessar dois brancos e um deles retornar. A terceira travessia s! dois índio, pois o terceiro ficaria com dois brancos. A soluão é atravessar dois brancos e um deles retornar. A terceira travessia s!  pode ser feita

 pode ser feita por dois índios, por dois índios, pois "# e$istem pois "# e$istem dois brancos na dois brancos na outra margem. outra margem. A questão é A questão é o retorno. A o retorno. A %nica possibilidade %nica possibilidade é retornaré retornar um índio e um branco& 'emos então o seguinte algoritmo:

um índio e um branco& 'emos então o seguinte algoritmo: (. Atravessem um índio e um branco.

(. Atravessem um índio e um branco. ). *etorne o índio.

). *etorne o índio.

+. Atravessem dois brancos. +. Atravessem dois brancos. . *etorne um branco. . *etorne um branco. -. Atravessem dois índios. -. Atravessem dois índios.

. *etornem um índio e um branco. . *etornem um índio e um branco. /. Atravessem dois índios.

/. Atravessem dois índios. 0. *etorne um branco. 0. *etorne um branco. 1. Atravessem dois brancos. 1. Atravessem dois brancos. (2. *etorne um branco. (2. *etorne um branco. ((. Atravessem dois brancos. ((. Atravessem dois brancos. !

! 3ndicando por (, ), +, , ... os discos na ordem crescente dos seus di4metros, temos para o caso n 5 ): 3ndicando por (, ), +, , ... os discos na ordem crescente dos seus di4metros, temos para o caso n 5 ): (. 6isco ( da

(. 6isco ( da origemorigem para para auxiliar auxiliar .. ). 6isco ) da

). 6isco ) da origemorigem para o para o destinodestino.. +. 6isco ( da

+. 6isco ( da auxiliar auxiliar  para o para o destinodestino..

7ara o caso n 5 +, basta observar que é necess#rio apenas transportar os dois discos ( e ) da

7ara o caso n 5 +, basta observar que é necess#rio apenas transportar os dois discos ( e ) da origemorigem para para auxiliar auxiliar  8que é o caso 8que é o caso anterior9, transportar o disco + da

anterior9, transportar o disco + da origemorigem para o para o destinodestino e os discos ( e ) da torre e os discos ( e ) da torre auxiliar auxiliar  para o para o destinodestino 8que é, novamente, o caso 8que é, novamente, o caso anterior9.

anterior9.

(. 6isco ( da

(. 6isco ( da origemorigem para para destinodestino.. ). 6isco ) da

). 6isco ) da origemorigem para para auxiliar auxiliar .. +. 6isco ( do

+. 6isco ( do destinodestino para para auxiliar auxiliar .. . 6isco + da

. 6isco + da origemorigem para para destinodestino.. -. 6isco ( da

-. 6isco ( da auxiliarauxiliar para para origemorigem.. . 6isco ) da

. 6isco ) da auxiliar auxiliar  para o para o destinodestino.. /. 6isco ( da

/. 6isco ( da origemorigem para o para o destinodestino.. "

" 7ara facilitar a linguagem, indiquemos por 78m, n9 5 2 se as esferas7ara facilitar a linguagem, indiquemos por 78m, n9 5 2 se as esferas mm e e nn tm o mesmo peso e por 78m, n9  2 se a esfera tm o mesmo peso e por 78m, n9  2 se a esfera mm pesa pesa mais que a esfera

mais que a esfera nn. 'emos então a seguinte soluão:. 'emos então a seguinte soluão: (. 7ese as esferas ( e

(. 7ese as esferas ( e ).).

). <e 78(, )9 5 2, pese as esferas ( e +. ). <e 78(, )9 5 2, pese as esferas ( e +.

).( <e 78(, +9  2 então fornea como resposta: a esfera + tem peso menor que as esferas ( e ). ).( <e 78(, +9  2 então fornea como resposta: a esfera + tem peso menor que as esferas ( e ). ).) <e 78+, (9  2 então fornea como resposta: a esfera + tem peso maior que as esferas ( e ). ).) <e 78+, (9  2 então fornea como resposta: a esfera + tem peso maior que as esferas ( e ). +. <e 78(, )9  2, pese as esferas ( e +.

+. <e 78(, )9  2, pese as esferas ( e +.

+.( <e 78(, +9 5 2 então fornea como resposta: a esfera ) tem peso menor que as esferas ( e +. +.( <e 78(, +9 5 2 então fornea como resposta: a esfera ) tem peso menor que as esferas ( e +. +.) <e 78(, +9  2 então fornea como resposta: a esfera ( tem peso maior que as esferas ) e +. +.) <e 78(, +9  2 então fornea como resposta: a esfera ( tem peso maior que as esferas ) e +. +.+ <e 78+, (9  2 então fornea como resposta: a esfera ( tem peso menor que as esferas ) e +. +.+ <e 78+, (9  2 então fornea como resposta: a esfera ( tem peso menor que as esferas ) e +. . <e 78), (9  2, pese as esferas ) e +.

. <e 78), (9  2, pese as esferas ) e +.

.( <e 78), +9 5 2 então fornea como resposta: a esfera ( tem peso menor que as esferas ) e +. .( <e 78), +9 5 2 então fornea como resposta: a esfera ( tem peso menor que as esferas ) e +. .) <e 78), +9  2 então fornea como resposta: a esfera ) tem peso maior que as esferas ( e +. .) <e 78), +9  2 então fornea como resposta: a esfera ) tem peso maior que as esferas ( e +. .+ <e 78+, )9  2 então fornea como resposta: a esfera ) tem peso menor que as esferas ( e +. .+ <e 78+, )9  2 então fornea como resposta: a esfera ) tem peso menor que as esferas ( e +. #

# 7ara calcular o produto, utilizamos uma vari#vel 7 que assume inicialmente o primeiro valor da relaão e, para cada novo7ara calcular o produto, utilizamos uma vari#vel 7 que assume inicialmente o primeiro valor da relaão e, para cada novo elemento, vai tendo o seu valor substituído pelo produto do seu valor atual pelo novo elemento.

elemento, vai tendo o seu valor substituído pelo produto do seu valor atual pelo novo elemento. (. =hame de A o primeiro n%mero dado.

(. =hame de A o primeiro n%mero dado.

). =hame de N o n%mero de elementos da relaão ). =hame de N o n%mero de elementos da relaão +. >aa 7 5 A.

+. >aa 7 5 A.

. *epita N ? ( vezes as instru@es .( e .). . *epita N ? ( vezes as instru@es .( e .).

.(. =hame de A o pr!$imo n%mero dado. .(. =hame de A o pr!$imo n%mero dado. .). <ubstitua o valor de 7 por 7 $ A. .). <ubstitua o valor de 7 por 7 $ A. -. =alcule  5 *aiz87, N9

-. =alcule  5 *aiz87, N9

. >ornea  para o valor da média. . >ornea  para o valor da média. $

$ Basta observar que os dias da semana, sendo em n%mero de /, repetem?se em ciclos de / dias. Assim, se 2(C2(C(122 foi umaBasta observar que os dias da semana, sendo em n%mero de /, repetem?se em ciclos de / dias. Assim, se 2(C2(C(122 foi uma segunda?feira, o foram também os dias 20C2(C(122, (-C2(C(122, ))C2(C(122, )1C2(C(122, 2-C2)C(122 e assim sucessivamente. Basta segunda?feira, o foram também os dias 20C2(C(122, (-C2(C(122, ))C2(C(122, )1C2(C(122, 2-C2)C(122 e assim sucessivamente. Basta então determinar o n%mero de dias decorridos entre a data dada e o dia 2(C2(C(122 e calcular o resto da divisão por /.

então determinar o n%mero de dias decorridos entre a data dada e o dia 2(C2(C(122 e calcular o resto da divisão por /. (. 6etermine o n%mero n de dias entre a data dada e 2(C2(C(122.

(. 6etermine o n%mero n de dias entre a data dada e 2(C2(C(122. ). =alcule o resto r da divisão de n por /

). =alcule o resto r da divisão de n por / +. <e r 5 ( fornea

(5)

. <e r 5 ) fornea como resposta tera?feira. -. <e r 5 + fornea como resposta quarta?feira. . <e r 5  fornea como resposta quinta?feira. /. <e r 5 - fornea como resposta se$ta?feira. 0. <e r 5  fornea como resposta s#bado. 1. <e r 5 2 fornea como resposta domingo.

% 3ndicando por A8$, D9 a travessia dos integrantes $ e D e por E8$9 a volta do integrante $, teríamos: (. A8baterista, bai$ista9. ). E8baterista9. +. A8guitarrista, vocal9. . E8bai$ista9 -. A8bai$ista, baterista9

Capítulo !

1a ) 1&true

!a F7rograma que converte uma temperatura em graus >arenheit para graus =elsiusG program =onversao'emperatura;

var =elsius, >arenheit : real; &egin

'riteln8H6igite a temperatura em graus >arenheitH9; readln8>arenheit9;

=elsius :5 -I8>arenheit ? +)9C1;

'riteln8>arenheit:2:), H graus >arenheit correspondem a H, =elsius:2:), H graus =elsiusH9; end.

!& F7rograma para gerar o invertido de um inteiro dadoG program 3nverte3nteiro;

var Num, 3nvertido, Jnidade, 6ezena, =entena : integer; &egin

'riteln8H6igite o inteiro 8com tres algarismos9H9; readln8Num9;

Jnidade :5 Num mod (2;

6ezena :5 8Num mod (229 div (2; =entena :5 Num div (22;

3nvertido :5 Jnidade I (22 K 6ezena I (2 K =entena; 'riteln8HL invertido de H, Num, H eh H, 3nvertido9; end.

!c F7rograma para somar duas fracoes ordinariasG program <oma>racoes;

var Num(, 6en(, Num), 6en), Num, 6en: integer; &egin

'riteln8H6igite as fracoesH9;

readln8Num(, 6en(, Num), 6en)9;  Num :5 Num( I 6en) K Num) I 6en(;

6en :5 6en( I 6en);

'riteln8H8H, Num(, HCH, 6en(, H9 K 8H, Num), HCH, 6en),H9 5 8H, Num, HCH, 6en, H9H9; end.

!d F7rograma que determina o menor multiplo de um inteiro maior que um outro inteiroG program enorultiplo;

var n, M, enorult : integer; &egin

'riteln8H6igite dois inteiros H9; readln8n, M9;

enorult :5 n ? n mod M K M;

'riteln8HL menor multiplo de H, M, H maior queH, n, H  H, enorult9; end.

!e F7rograma que determina o perimetro de um poligono regular inscrito numa circunferenciaG program 7erimetro7oligono3nscrito;

var NumOados : integer; *aio, 7erimetro: real; &egin

'riteln8H6igite o numero de lados do poligonoH9; readln8NumOados9;

(6)

readln8*aio9;

7erimetro :5 ) I NumOados I *aio I <in87iCNumOados9;

'rite8HL perimetro do poligono de H, NumOados, H lados inscrito H9;

'riteln8Hnuma circunferencia de raio H, *aio:2:), H eh igual a H, 7erimetro:2:)9; end.

" F7rograma que permuta o conteudo de duas variaveis sem utilizar variavel au$iliarG program 7ernutaEariaveis;

var $, D : real; &egin

'riteln8H6igite dois valoresH9; readln8$, D9;

'riteln8H=onteudos antes da permuta: $ 5 H, $:2:), H e D 5 H, D:2:)9; $ :5 $ K D;

D :5 $ ? D; $ :5 $ ? D;

'riteln8H=onteudo apos a permuta $ 5 H, $:2:), H e D 5 H, D:2:)9; end.

# F7rograma que determina a entrada e as duas prestacoes de uma compra a prazoG program =alculo7restacoes;

var =ompra, Pntrada : real; 7restacao : integer; &egin

'riteln8H6igite o valor da compraH9; readln8=ompra9;

7restacao :5 (runc8=ompraC+9; Pntrada :5 =ompra ? ) I 7restacao; 'riteln8HEalor da compra: H, =ompra:2:)9; 'riteln8HEalor da entrada: H, Pntrada:2:)9; 'riteln8HEalor das prestacoes: H, 7restacao, H.22H9; end.

$ F7rograma para fornecer um intervalo de tempo dado em segundos em horas minutos e segundosG program 3ntervalo'empo;

var 3ntervalo, *esto, Qoras, inutos, <egundos : integer; &egin

'riteln8H6igite o intervalo de tempoH9; readln83ntervalo9;

Qoras :5 3ntervalo div +22; *esto :5 3ntervalo mod +22; inutos :5 *esto div 2; <egundos :5 *esto mod 2;

'riteln8HL intervalo de tempo H, 3ntervalo, H s equivale a H9; 'riteln8Qoras, H h H, inutos, H min H, <egundos,H sH9; end.

% F7rograma para fornecer um intervalo de tempo dado em minutos em horas minutos e segundosG program 3ntervalo'empo;

var Qoras, inutos : integer;

3ntervalo, <egundos, *esto : real; &egin

'riteln8H6igite o intervalo de tempoH9; readln83ntervalo9;

Qoras :5 (runc83ntervalo9 div 2; *esto :5 3ntervalo ? Qoras I 2; inutos :5 (runc8*esto9; <egundos :5 >rac8*esto9 I 2;

'rite8HL intervalo de tempo H, 3ntervalo:2:), H s equivale a H9; 'riteln8Qoras, H h H, inutos, H min H, <egundos:2:(,H sH9; end.

) F7rograma para discriminar as notas de saque em um cai$a eletronico, observando, por pertinente, que o programa escrito com os conhecimentos do capitulo  fica bem mais simplesG

program =ai$aPletronico;

var <aque, $, Notas(22, Notas-2, Notas(2, Notas-, Notas(: integer; &egin

'riteln8H6igite o valor do saqueH9; readln8<aque9;

 Notas(22 :5 <aque div (22; $ :5 <aque mod (22;  Notas-2 :5 $ div -2;

(7)

$ :5 $ mod -2;  Notas(2 :5 $ div (2;

$ :5 $ mod (2;  Notas- :5 $ div -;  Notas( :5 $ mod -;

'riteln8HL saque solicitado no valor de H, <aque, H deve ser pago com:H9; 'riteln8Notas(22, H notas de (22 reaisH9;

'riteln8Notas-2, H notas de -2 rea isH9; 'riteln8Notas(2, H notas de (2 reaisH9; 'riteln8Notas-, H notas de - reaisH9; 'riteln8Notas(, H notas de ( realH9; end.

* F7rograma para implementar calculo de potencias em 7ascalG program 3mplementa7otencia;

var Base, P$poente, 7otencia : real; &egin

'riteln8H6igite a base 8positiva9 e o e$poenteH9; readln8Base, P$poente9;

7otencia :5 P$p8P$poente I On8Base99;

'riteln8Base:2:),HRH,P$poente:2:), H 5 H, 7otencia:2:9; end.

+ F7rograma para determinar o valor das prestacoes de um financiamentoG program =alculo7restacoes>inanciamento;

var Ealor, >ator, Eal7rest, 'a$a: real;  Num7rest : integer; &egin 'rite8HEalor do financiamento: H9; readln8Ealor9; 'rite8HNumero de prestacoes: H9; readln8Num7rest9; 'rite8H'a$a de "uros: H9; readln8'a$a9; 'a$a :5 'a$aC(22;

>ator :5 P$p8Num7rest I On8( K 'a$a99; Eal7rest :5 8Ealor I 'a$a I >ator9C8>ator ? (9; 'riteln8H>inanciamento: H, Ealor:2:)9;

'riteln8HNumero de prestacoes: H, Num7rest9; 'riteln8H'a$a de "uros: H, (22 I 'a$a:2:)9; 'riteln8HEalor das prestacoes: H, Eal7rest:2:)9; end.

Capítulo "

1 ,programa -ue implementa a .uncao round/ program Arredondamentos;

var $ : real;

Arredonda : integer; &egin

'riteln8H6igite o numero a arredondarH9; readln8$9; i.  >rac8$9 S 2.-t0en Arredonda :5 (runc8$9 else Arredonda :5 (runc8$9 K (;

'riteln8HL valor de H, $:2:, H arredondado e igual H, Arredonda9; end.

! Fprograma que verifica se um inteiro dado eh quadrado perfeitoG program Tuad7erfeito; var $ : integer; *aiz : real; &egin 'riteln8H6igite o numeroH9; readln8$9; *aiz :5 -r(8$9; i.  >rac8*aiz9 5 2 t0en

(8)

else

'riteln8$, H nao eh quadrado perfeitoH9; end.

" Fprograma que determina o maior de tres numeros dadosG program aior6e+;

var $, D, z, aior : real; &egin

'riteln8H6igite s tres numerosH9; readln8$, D , z9;

aior :5 $;

i.  8D  aior9 or 8z  aior9 t0en i.  D  z t0en aior :5 D else aior :5 z;

'riteln8HL maior dos numeros H, $:2:), H, H, D:2:), H e H,z:2:) , H eh igual a H, aior:2:)9; end.

# Fprograma que classifica um triangulo de lados dadosG program =lassifica'riangulo;

var $, D, z : real; &egin

'riteln8H6igite os comprimentos dos lados do trianguloH9; readln8$, D , z9;

i.  8$ S D K z9 and 8D S z K $9 and 8z S $ K D9 t0en

i.  8$ 5 D9 and 8D 5 z9 t0en

'riteln8HL triangulo de lados H, $, H, H, D, H eh H, z, He equilateroH9 else

i.  8$ 5 D9 or 8$ 5 z9 or 8D 5 z9 t0en

'riteln8HL triangulo de lados H, $, H, H, D, H eh H, z, H e isoscelesH9 else

'riteln8HL triangulo de lados H, $, H, H, D, H eh H, z, H e escalenoH9 else

'riteln8HLs valores dados nao sao comprimentos dos lados de um trianguloH9; end.

$ Fprograma que verifica se um triangulo de lados dados eh retanguloG program =lassifica'riangulo;

var $, D, z, Qip, =at(, =at) : real; &egin

'riteln8H6igite os comprimentos dos lados do trianguloH9; readln8$, D , z9;

i.  8$ S D K z9 and 8D S z K $9 and 8z S $ K D9 t0en

&egin

Qip :5 $; =at( :5 D; =at) :5 z;

i.  8D  Qip9 or 8z  Qip9 t0en i.  8D  z9 t0en &egin Qip :5 D; =at( :5 $; end else &egin Qip :5 z; =at) :5 $; end;

i. -r8Qip9 5 -r8=at(9 K -r8=at)9 t0en

'rite8HL triangulo de lados H, $, H, H, D, H e H, z, H eh retangulo de hipotenusa H, Qip, H e catetos H, =at(, H e H, =at)9;

(9)

else

'riteln8HL triangulo de lados H, $, H, H, D, H e H, z, H nao e retanguloH9; end

else

'riteln8HLs valores dados nao sao comprimentos dos lados de um trianguloH9; end.

% F7rograma que determina as raizes de uma equacao do segundo grauG program PquacaoUrau);

var a, b, c, $(, $), 7arte*eal, 7arte3mag, 6elta : real; &egin 'riteln8H6igite os coeficientesH9; readln8a, b, c9; i.  a S 2 t0en &egin 6elta :5 -r8b9 ? IaIc; 7arte*eal :5 ?bC8)Ia9; 7arte3mag :5 -r(8abs86elta99C8)Ia9; i.  6elta 5 2 t0en &egin $( :5 7arte*eal K 7arte3mag; $) :5 7arte*eal ? 7arte3mag;

'riteln8HAs raizes da equacao dada sao H, $(, H e H, $)9; end

else

'rite8HAs raizes da equacao dada sao comple$as: H, 7arte*eal:2:),H K H, 7arte3mag:2:),Hi e H, 7arte*eal:2:), H ? H, 7arte3mag:2:),HiH9;

end else

'riteln8HA equacao nao e do segundo grauH9; end.

) F7rograma que determina a idade de uma pessoa em anos, meses e dias G program 3dadePmAnoseses6ias;

var 6iaNasc, esNasc, AnoNasc, d, 6iaAt, esAt, AnoAt, Anos, 6ias, eses: integer; &egin

'riteln8H6igite a data de nascimentoH9; readln86iaNasc, esNasc, AnoNasc9; 'riteln8H6igite a data atualH9;

readln86iaAt, esAt, AnoAt9; Anos :5 AnoAt ? AnoNasc; eses :5 esAt ? esnasc; 6ias :5 6iaAt ? 6iaNasc;

i.  8Anos S 29 or 88Anos 5 29 and 8eses S 299 or 88Anos 5 29 and 8eses 5 29 and 86ias S 299 t0en

'riteln8H6ata de nascimento invalidaH9 else &egin i.  eses S 2 t0en &egin Anos :5 Anos K (; eses :5 eses K (); end; i.  6ias S 2 t0en &egin i.  eses  2 t0en eses :5 eses V ( else &egin Anos :5 Anos ? (; eses :5 ((; end; case esNasc o.  ) : i.  AnoAt mod  5 2 t0en 6ias :5 6ias K )1

(10)

else 6ias :5 6ias K )0; , , 1, (( : 6ias :5 6ias K +2; else 6ias :5 6ias K +(; end; end;

'rite8HJma pessoa que nasceu em H, 6iaNasc,HCH, esnasc,HCH, AnoNasc, H tem na data de H, 6iaAt,HCH, esAt,HCH, AnoAt,H H, Anos, H anos H, eses, H meses H, 6ias, H diasH9;

end; end.

* F7rograma que determina a nota mínima de aprovacaoG program Notainima;

var Av(, Av), Av+, Av, edBimestral, Notain : real; &egin

'riteln8H6igite as notas das avaliacoes bimestraisH9; readln8Av(, Av), Av+, Av9;

edBimestral :5 8Av( K Av) K Av+ K Av9C; i.  8edBimestral S /9 and 8edBimestral 5 -9

t0en &egin

 Notain :5 8-- ?  I edBimestral9C;

'riteln8HJm aluno que notas H, Av(:2:), H, H, Av):2:), H, H, Av+:2:), H e H, Av:2:), H necessita na prova final de uma nota igual a H, Notain:2:)9;

end else

'riteln8HJm aluno que notas H, Av(:2:), H, H, Av):2:), H, H, Av+:2:), H e H, Av:2:), H nao faz prova finalH9; end.

Capítulo #

1 A configuraão da tela ap!s a e$ecuão deste programa ser# (9 - (-

-)9  () + +9+ 1 )/ 9)  (0 -9( + 1

! Fprograma que determina a soma dos quadrados dos n primeiros numeros naturaisG program <omaTuadrados;

var n, <oma, i : integer; &egin

'riteln8H6igite o valor de nH9; readln8n9;

<oma :5 (; .or i :5 ) to n do

<oma :5 <oma K iIi;

'riteln8HA soma dos quadrados dos H, n, H primeiros numeros naturais eh H, <oma9; end.

"a F7rograma que calcula a soma dos n primeiros termos da sequencia 8(C), +C-, -C0, ...G program <oma<erie;

var n, Numerador, 6enominador, i : integer; <oma : real;

&egin

'rite8H6igite o numero de termos a serem somados: H9; readln8n9; <oma :5 (C);  Numerador :5 (; 6enominador :5 ); .or i :5 ) to n do &egin  Numerador :5 Numerador K ); 6enominador :5 6enominador K +;

<oma :5 <oma K NumeradorC6enominador; end;

'rite8HA soma dos H, n,H primeiros termos da sequencia 8(C), +C-, -C0, ...9 eh igual a H, <oma9; end.

"& Fprograma que calcula a soma dos n primeiros termos da sequencia 8(, ?(C), (C+, ?(C, ...G program <oma<erie;

(11)

var n, i : integer; <oma : real; &egin

'rite8H6igite o numero de termos a serem somados: H9; readln8n9; <oma :5 (; .or i :5 ) to n do &egin i.  i mod ) 5 2 t0en

<oma :5 <oma ? (Ci else

<oma :5 <oma K (Ci; end;

'rite8HA soma dos H, n,H primeiros termos da sequencia 8(, ?(C), (C+, ?(C0,...9 eh igual a H, <oma9; end.

# F7rograma para determinar o minimo multiplo comum de dois numeros positivoG program inult=omum;

var a, b, $, D, mc : integer; &egin

'riteln8H6igite os dois numeros H9; readln8 $, D9; a :5 $;  b :5 D; i.  $ S D t0en &egin a :5 D;  b :5 $; end; mc :5 a; '0ile mc mod b S 2 do mc :5 mc K a; 'riteln8Hmmc8H, $,H, H, D,H9 5 H, mc9; end.

$ F7rograma que determina os numeros perfeitos menores que um inteiro dadoG program Numeros7erfeitos;

var <oma, 6ivisor, n, i, " : integer; &egin

'rite8H6igite o valor de n: H9; readln8n9;

'riteln8HLs numeros perfeitos menores que H, n, H sao: H9; .or i :5 ) to n do

&egin

<oma :5 2;

.or " :5 ( to i div ) do i.  i mod " 5 2 t0en <oma :5 <oma K "; i.  <oma 5 i t0en 'rite8i,H H9; end; end.

% F7rograma que determina numeros com quatro algarismos com uma propriedade especialG program 7ropriedadePspecial;

var 6ezena, Jnidade, i : integer; &egin

'riteln8HNumeros da forma AB=6 tais que 8AB K B=9I8AB K B=9 5 AB=6 :H9; .or i :5 (222 to 1111 do &egin 6ezena :5 i div (22; Jnidade :5 i mod (22; i. -r86ezena K Jnidade9 5 i t0en 'rite8i, H H9; end; end.

(12)

) F7rograma que determina pares de numeros da forma AB e WX tais que ABIWX 5 BAIXWG program 7ropriedadePspecial;

var i, ", 3nvi, 3nv" : integer; &egin

'riteln8H7ares de numeros da forma AB e WX tais que ABIWX 5 BAIXWH9; .or i :5 (2 to 11 do

&egin

3nvi :5 8i mod (29I(2 K i div (2; .or " :5 (2 to 11 do &egin 3nv" :5 8" mod (29I (2 K " div (2; i.  i I " 5 3nvi I 3nv" t0en 'riteln8i, H H,"9; end; end; end.

* F7rograma que determina o numero de algarismos de um numeroG program NumeroAlgarismos;

var Num, $, NumAlgarismos, i : integer; &egin

'riteln8H6igite um inteiroH9; readln8Num9; $ :5 Num; NumAlgarismos :5 (; '0ile $ 5 (2 do &egin NumAlgarismos :5 NumAlgarismos K (; $ :5 $ div (2; end;

'riteln8Num, H possui H, NumAlgarismos, H algarismosH9; end.

+ F7rograma que verifica se um inteiro eh produto de dois primosG program 7roduto6e7rimos;

var Num, >ator(, >ator), i : integer; *aiz : real; &egin 'riteln8H6igite um inteiroH9; readln8Num9; *aiz :5 -r(8Num9; >ator( :5 );

'0ile 8Num mod >ator( S 29 and 8>ator( S5 *aiz9 do >ator( :5 >ator( K (;

i.  >ator( S5 *aiz t0en

&egin

>ator) :5 Num div >ator(; *aiz :5 -r(8>ator)9; i :5 );

'0ile 8>ator) mod i S 29 and 8i S5 *aiz9 do i :5 i K (;

i.  i S5 *aiz t0en

'riteln8Num, H nao eh produto de dois primosH9 else

'riteln8Num, H eh o produto dos primos H, >ator(, H e H, >ator)9; end

else

'riteln8Num, H eh primoH9; end.

12F7rograma que determina a decomposicao em fatores primos de um inteiro G program 6ecomposicaoPm>atores7rimos;

var Num, $, >ator, ult : integer; &egin

'riteln8H6igite um inteiroH9; readln8Num9;

$ :5 Num;

'riteln8H6ecomposicao em fatores de H, Num,H:H9; >ator :5 );

(13)

&egin ult :5 2; '0ile $ mod >ator 5 2 do &egin ult :5 ult K (; $ :5 $ div >ator; end; i.  ult  2 t0en

'riteln8H>ator: H, >ator, H ultiplicidade: H, ult9; >ator :5 >ator K (;

end; end.

11 F7rograma que transforma o computador numa urna eletronicaG program JrnaPletronica;

var Eoto, Alibaba, Alcapone, Brancos, Nulos : integer;  =ont, =onf : c0ar;

 =orrige : &oolean; &egin

=ont :5 H<H;

Alibaba :5 2; Alcapone :5 2; Brancos :5 2; Nulos :5 2; '0ile Jp=ase8=ont9 5 H<H do

&egin repeat

=orrige :5 false;

'riteln8H6igite seu votoH9; readln8Eoto9;

case Eoto o.  0+ : &egin

'riteln8HEoce votou em Alibaba. =onfirma seu voto 8<CN9YH9; readln8=onf9;

i.  Jp=ase8=onf9 5 H<H t0en

&egin

Alibaba :5 Alibaba K (;

'riteln8HEoto confirmado& Lbrigado&H9; end

else

=orrige :5 true; end;

1+ : &egin

'riteln8HEoce votou em Alcapone. =onfirma seu voto 8<CN9YH9; readln8=onf9;

i.  Jp=ase8=onf9 5 H<H t0en

&egin

Alcapone :5 Alcapone K (;

'riteln8HEoto confirmado& Lbrigado&H9; end

else

=orrige :5 true; end;

22 : &egin

'riteln8HEoce votou em branco. =onfirma seu voto 8<CN9YH9; readln8=onf9;

i.  Jp=ase8=onf9 5 H<H t0en

&egin

Brancos :5 Brancos K (;

'riteln8HEoto confirmado& Lbrigado&H9; end else =orrige :5 true; end; else &egin

'riteln8HEoce anulou seu votou. =onfirma seu voto 8<CN9YH9; readln8=onf9;

(14)

t0en &egin

 Nulos :5 Nulos K (;

'riteln8HEoto confirmado& Lbrigado&H9; end else =orrige :5 true; end; end; until =orrige 5 false;

'riteln8HNovo eleitor 8<CN9YH9; readln8=ont9;

end;

'riteln8H*esultado da eleicaoH9; 'riteln8H Alibaba: H, Alibaba9; 'riteln8H Alcapone: H, Alcapone9; 'riteln8H Brancos: H, Brancos9; 'riteln8H Nulos: H, Nulos9; 'riteln; 'riteln; 'rite8H=andidato eleito: H9; i.  Alibaba  Alcapone t0en 'riteln8HAlibabaH9 else i.  Alibaba S Alcapone t0en 'riteln8HAlcaponeH9 else 'riteln8HPleicao empatadaH9; end.

1! F7rograma que determina o n?esimo termo da sequencia de >ibbonaci 8(, (, ), +, -, 0, ...9G program >ibbonaci;

var n, Anterior(, Anterior), 'ermo, i: integer; &egin

'riteln8H6igite o valor de nH9; readln8n9;

Anterior( :5 (; Anterior) :5 (; 'ermo :5 (; .or i :5 + to n do

&egin

'ermo :5 Anterior( K Anterior); Anterior( :5 Anterior);

Anterior) :5 'ermo; end;

'riteln8HL termo de ordem H, n,H da sequencia de >ibbonaci eh H, 'ermo9; end.

1" F7rograma que determina o troco otimo de uma compraG program 'rocoLtimo;

var 7agamento, $, =ompra, 'roco: real;

i, *eais, Nota, NumNotas, =entavos, oeda, Numoedas: integer; &egin

'riteln8H6igite o valor da compraH9; readln8=ompra9;

'riteln8H6igite o valor do pagamentoH9; readln87agamento9;

'roco :5 7agamento ? =ompra; i.  'roco  2

t0en &egin

'riteln8H'roco de *Z H, 'roco:2:), H assim distribuido: H9; F'ratamento da parte inteira do trocoG

*eais :5 (runc8'roco9;  Nota :5 (22;

i :5 (;

'0ile *eais  2 do &egin

 NumNotas :5 *eais div Nota; i.  NumNotas  2

(15)

&egin

'riteln8H H, NumNotas, H notas de H, Nota, H reaisH9; *eais :5 *eais mod Nota;

end; i.  i mod ) 5 (

t0en

 Nota :5 Nota div ) else

 Nota :5 Nota div -; i :5 i K (;

end;

Ftratamento dos centavosG 'roco :5 >rac8'roco9;

=entavos :5 (runc8(22 I 'roco9; oeda :5 -2;

'0ile =entavos  2 do &egin

 Numoedas :5 =entavos div oeda; i.  Numoedas  2

t0en &egin

'riteln8H H, Numoedas,H moedas de H, oeda, H =entavosH9; =entavos :5 =entavos mod moeda;

end;

i.  oeda mod (2 5 2 t0en

oeda :5 oeda div ) else i.  oeda 5 )-t0en oeda :5 (2 else oeda :5 (; end; end else i.  'roco 5 2 t0en 'riteln8HNao ha trocoH9 else 'riteln8H7agamento insuficienteH9; end.

1# F7rograma que determina o numero de termos da serie harmonica que devem ser somados para que a soma se"a maior que um real dadoG program <erieQarmonica; var i : integer; M, <oma : real; &egin 'riteln8H6igite o valor de MH9; readln8M9; <oma :5 (; i :5 (; '0ile <oma S5 M do &egin i :5 i K (;

<oma :5 <oma K (Ci; end;

'rite8HL numero minimo de termos da serie harmonica que devemH9; 'riteln8H ser somados para que a soma se"a maior que H, M, H e H, i9; end.

1$ F7rograma que e$ibe os subcon"untos, com tres elementos do con"unto F(, ), ..., n9, n dadoG program <ub=on"+; var n, i, ", M: integer; &egin 'riteln8H6igite o valor de nH9; readln8n9; i.  n 5 + t0en &egin

(16)

'riteln8H<ubcon"untos, com tres elementos, do con"unto F(, ), ...,H,n,HGH9; .or i :5 ( to n ? ) do .or " :5 i K ( to n ? ( do .or M :5 " K ( to n do 'riteln8HFH,i, H, H, ", H, H, M, HGH9; end else

'riteln8HL valor de n deve ser maior que )H9; end.

1% F7rograma que e$ibe os pares de numeros amigos menores que um inteiro dadoG program NumerosAmigos;

var <omai, <omaM, 6ivisor, n, i, M, " : integer; &egin

'rite8H6igite o valor de n: H9; readln8n9;

'riteln8HLs numeros amigos menores que H, n, H sao: H9; .or i :5 ) to n do

&egin

<omai :5 2;

.or " :5 ( to i div ) do i.  i mod " 5 2 t0en <omai :5 <omai K "; .or M :5 ) to i ? ( do &egin <omaM :5 2;

.or " :5 ( to M div ) do i.  M mod " 5 2 t0en <omaM :5 <omaM K "; i.  8<omai 5 M9 and 8<omaM 5 i9 t0en 'riteln8i,H H,M9; end; end; end.

Capítulo $

1 F>uncao que retorna o M?ésimo digito de um inteiroG .unction 6igito[8n, M : integer9 : integer;

var p : integer;

F>uncao que retorna o numero de algarismos de um inteiro positivoG .unction NumAlgarismos8$ : integer9 : integer;

var NumAlg : integer; &egin  NumAlg :5 (; '0ile $ 5 (2 do &egin  NumAlg :5 NumAlg K (; $ :5 $ div (2; end;  NumAlgarismos :5 NumAlg end; F=omandos da funcaoG &egin i.  M S5 NumAlgarismos8n9 t0en &egin  p :5 (runc8P$p8M I On8(2999; n :5 n mod p;

6igito[ :5 n div 8p div (29; end

else

6igito[ :5 2; end;

! F>uncao iterativa que calcula o fatorial impar de um inteiroG .unction >at3mpar8m : integer9 : longint;

(17)

i : integer; &egin f :5 (; i :5 (; '0ile i S5 m do &egin f :5 fIi; i :5 i K ); end; >at3mpar :5 f; end;

F>uncao recursiva para a determinacao do fatorial imparG .unction >at3mpar*ec8m : integer9 : longint;

&egin i.  m 5 ( t0en >at3mpar*ec :5 ( else >at3mpar*ec :5 m I >at3mpar*ec8m ? )9; end;

" F>uncao que determina o fatorial primo de um numero primoG .unction >at7rimo8m : integer9 : longint;

var f : longint; i : integer;

F>uncao que verifica se um numero eh primoG .unction 7rimo8m : integer9 : &oolean; var i : integer;

*aiz : real; &egin

i :5 );

*aiz :5 -r(8m9;

'0ile 8m mod i S 29 and 8i S5 *aiz9 do i :5 i K (; i.  i S5 *aiz t0en 7rimo :5 false else 7rimo :5 true; end; F=omandos da funcaoG &egin f :5 ); .or i :5 + to m do i.  7rimo8i9 t0en f :5 f I i; >at7rimo :5 f; end;

# F>uncao que determina a soma dos algarismos de um inteiroG .unction <omaAlgarismos8m : integer9 : integer;

var <oma : integer; &egin

<oma :5 2; '0ile m  2 do

&egin

<oma :5 <oma K m mod (2; m :5 m div (2;

end;

<omaAlgarismos :5 <oma; end;

$ F>uncao recursiva que retorna o n?esimo termo da sequencia de >ibbonaciG .unction >ibb*ec8n : integer9 : integer;

&egin

i.  8n 5 (9 or 8n 5 )9 t0en

>ibb*ec :5 ( else

(18)

end;

% F>uncao para inverter um numero inteiroG .unction 3nverteNumero8n : integer9 : longint; var i, NAlgarismos : integer;

3nvertido : longint;

F>uncao para determinar o numero de algarismos de um numero inteiroG .unction NumeroAlgarismos8n : integer9 : integer;

var NumAlgarismos: integer; &egin  NumAlgarismos :5 (; '0ile n 5 (2 do &egin  NumAlgarismos :5 NumAlgarismos K (; n :5 n div (2; end;  NumeroAlgarismos :5 NumAlgarismos; end;

F>uncao para calcular potencias de dezG .unction 7otencia6e(28e : integer9 : longint; var 7ot : longint;

i : integer; &egin 7ot :5 (; .or i :5 ( to e do 7ot :5 7otI(2; 7otencia6e(2 :5 7ot; end;

F3nicio da funcao 3nverteNumeroG &egin

3nvertido :5 2;

 NAlgarismos :5 NumeroAlgarismos8n9; .or i :5 NAlgarismos ? ( do'nto 2 do

&egin

3nvertido :5 3nvertido K 8n mod (29 I 7otencia6e(28i9; n :5 n div (2;

end;

3nverteNumero :5 3nvertido; end;

Capítulo %

1 F7rocedimento que e$ibe um vetor na ordem inversaG

procedure PscreveEetorNaLrdem3nversa8var v : 'Eetor; t : integer9; var i : integer;

&egin

.or i :5 t do'nto ( do 'rite8v\i],H H9; end;

! F>uncao que verifica se um vetor eh palindromoG

.unction 7alindromo8v : 'Eetor; t : integer9 : &oolean; var i : integer;

&egin i :5 (;

'0ile 8v\i] 5 v\t ? i K (]9 and 8i S5 t div )9 do i :5 i K (; i.  i  t div ) t0en 7alindromo :5 true else 7alindromo :5 false; end;

" F7rocedimento que intercala dois vetoresG

procedure 3ntercalaEetores8var v(, v), v :'Eetor; t : integer9 var i : integer;

&egin

.or i :5 ( to )3t do i.  i mod ) 5 (

(19)

v\i] :5 v(\8iK(9 div )] else

v\i] :5 v)\i div )] end.

# F7rocedimento que decompoe um vetor de inteiro em dois vetores, um com as componentes impares e outro com as componentes  paresG

procedure 6ecompoeEetor7ares3mpares8var v, v(, v) : 'Eetor; t : integer; var M, l : integer9; var i : integer; &egin M :5 2; l :5 2; .or i :5 ( to t do i.  v\i] mod ) 5 ( t0en &egin M :5 M K (; v(\M] :5 v\i]; end else &egin l :5 l K (; v)\l] :5 v\i]; end; end;

$ F>uncao que determina a norma de um vetorG .unction Norma8var v : 'Eetor; t : integer9 : real; var i : integer;

<omaTuadrados : real; &egin

<omaTuadrados :5 2; .or i :5 ( to t do

<omaTuadrados :5 <omaTuadrados K -r8v\i]9;  Norma :5 -r(8<omaTuadrados9;

end;

% F>uncao que determina o produto escalar de dois vetoresG .unction 7rodPscalar8var v(, v) : 'Eetor; t : integer9 : real; var i : integer;  p : real; &egin  p :5 2; .or i :5 ( to t do  p :5 p K v(\i] I v)\i]; 7rodPscalar :5 p; end;

) F7rocedimento para e$trair as componentes distintas de um vetorG

procedure =omponentes6istintas8var v(, v : 'Eetor; t : integer; var n : integer9; var i, M : integer;

F>uncao que verifica se um valor dado esta armazenado num vetorG

.unction 7esquisa<equencial8var v : 'Eetor; t : integer; $ : real9 : &oolean; var " : integer; &egin 7esquisa<equencial :5 false;  " :5 (; '0ile 8v\"] S $9 and 8" S t9 do  " :5 " K (; i.  v\"] 5 $ t0en 7esquisa<equencial :5 true; end; &egin n :5 (; v\(] :5 v(\(]; .or i :5 ) to t do i. not 7esquisa<equencial8v, t, v(\i]9 t0en &egin n :5 n K (; v\n] :5 v(\i];

(20)

end; end;

* F>uncao para sortear um numero a partir dos ultimos algarismos dos numeros sorteados pela Ooteria >ederalG .unction Numero7remiado8var v : 'Eetor9 : longint;

var i, 7otencia(2 : integer;  Num : longint;

&egin

7otencia(2 :5 (2222;

 Num :5 8v\-] mod (29 I 7otencia(2; .or i :5  do'nto ( do

&egin

7otencia(2 :5 7otencia(2 div (2;

 Num :5 Num K 8v\i] mod (29 I 7otencia(2; end;

 Numero7remiado :5 Num; end;

+ F7rocedimento para inserir um valor dado num vetor numa posicao dadaG

procedure 3nsere7osicao6ada8var v : 'Eetor; t : integer; $ : real; 7os : integer9; var i : integer; &egin i.  7os S5 t t0en &egin .or i :5 t do'nto 7os do v\i K (] :5 v\i]; v\7os] :5 $; end else

'riteln8HL sistema nao pode fazer a insercao solicitadaH9; end;

12 F7rocedimento para inserir um valor dado num vetor ordenado de modo que ele se mantenha ordenadoG procedure 3nsereLrdenado8var v : 'Eetor; t : integer; $ : real9;

var i, " : integer; &egin i :5 (; '0ile 8v\i] S $9 and 8i S5 t9 do i :5 i K (; .or " :5 t do'nto i do v\" K (] :5 v\"]; v\i] :5 $; end;

11 F7rocedimento que e$clui uma componente de um vetorG

procedure 6eleta=omponente8var v : 'Eetor; var t : integer; c : integer9; var i, ": integer;

&egin i.  c  t

t0en

'riteln8HNao e$iste componente de ordem H,c9 else &egin .or " :5 c to t do v\"] :5 v\" K (]; t :5 t ? (; end; end;

1! F7rocedimento para e$trair componentes comuns dois vetoresG

procedure =omp=omuns8var v(, v), v : 'Eetor; t(, t) : integer; var m : integer9; var M, l : integer;

F>uncao que verifica se um valor dado e componente de um vetorG

.unction 7esquisa<equencial8var v : 'Eetor; t : integer; $ : real9 : &oolean; var " : integer; &egin 7esquisa<equencial :5 false;  " :5 (; '0ile 8v\"] S $9 and 8" S t9 do  " :5 " K (; i.  v\"] 5 $

(21)

t0en 7esquisa<equencial :5 true; end; &egin m :5 2; .or M :5 ( to t( do i.  7esquisa<equencial8v), t), v(\M]9 t0en &egin m :5 m K (; v\m] :5 v(\M]; end; end;

1" F7rocedimento que retorna a maior diferenca entre as componentes consecutivas de um vetor9 procedure aior6iferenca8 var v : 'Eetor; t : integer; var ai : real; var =omp : integer9; var 6iferencas : 'Eetor;

M : integer;

F>uncao que retorna a maior componente de um vetor e a sua posicao no vetorG .unction aiorPlemento8var v : 'Eetor; t : integer; var 7os : integer9 : real; var i : integer; aior : real; &egin aior :5 v\(]; 7os :5 (; .or i :5 ( to t do i.  v\i]  aior  t0en &egin aior :5 v\i]; 7os :5 i; end; aiorPlemento :5 aior; end; &egin .or M :5 ( to t ? ( do 6iferencas\M] :5 v\M K (] ? v\M];

ai :5 aiorPlemento86iferencas, t ? (, =omp9; end;

1# F>uncao para corrigir um teste de multipla escolhaG

.unction =orrige'este8var v(, v) : 'Eetor; t : integer9: integer; var i, Num7ontos : integer;

&egin  Num7ontos :5 2; .or i :5 ( to t do i.  v(\i] 5 v)\i] t0en  Num7ontos :5 Num7ontos K (; =orrige'este :5 Num7ontos; end;

1$ F7rograma para determinar o valor numerico de um polinomioG program EalorNumerico6e7olinomio;

t4pe '7olinomio 5 arra4\(..-2] o. real; var 7olinomio : '7olinomio;

Urau : integer; $, ENumerico : real;

F7rocedimento para armazenar os coeficientes de um polinomio num vetorG procedure Armazena7olinomio8var p : '7olinomio; var g : integer9; var i : integer;

&egin

'riteln8H6igite o grau do polinomioH9; readln8g9;

'riteln8H6igite os coeficientesH9; .or i :5 ( to g K ( do

readln8p\i]9; end;

F7rocedimento que e$ibe os coeficientes de um polinomioG procedure P$ibe=oeficientes8var v : '7olinomio; g : integer9; var i : integer;

(22)

.or i :5 ( to g K ( do 'rite8v\i]:2:), H H9; end;

F>uncao que calcula o valor numerico de um polinomioG

.unction EalorNumerico8var p : '7olinomio; g : integer; $ : real9 : real; var i : integer;

EalNum : real;

.unction 7otencia8b : real; e : integer9 : real; var i : integer; 7ot : real; &egin 7ot :5 (; .or i :5 ( to e do 7ot :5 7otIb; 7otencia :5 7ot end; &egin EalNum :5 p\g K (]; .or i :5 g do'nto ( do

EalNum :5 EalNum K p\i]I7otencia8$, g ? i K (9; EalorNumerico :5 EalNum;

end;

F7rograma principalG &egin

Armazena7olinomio87olinomio, Urau9;

'riteln8H6igite o valor da variavel independenteH9; readln8$9;

ENumerico :5 EalorNumerico87olinomio, Urau, $9;

'riteln8HL valor numerico do polinomio de grau H, Urau, H e coeficientes H9; P$ibe=oeficientes87olinomio, Urau9;

'riteln;

'riteln8Hpara $ 5 H, $:2:) , H eh igual a H, ENumerico:2:)9; end.

1% F>uncao para converter um numero do sistema decimal para o sistema binarioG .unction 6ecimalBinario8n : integer9 : longint;

var 6igBinarios : 'Eetor; Binario : longint; i, " : integer;

F>uncao para calcular potencias de dezG .unction 7otencia6e(28e : integer9 : longint; var 7ot : longint;

i : integer; &egin 7ot :5 (; .or i :5 ( to e do 7ot :5 7otI(2; 7otencia6e(2 :5 7ot; end; &egin i.  n 5 2 t0en 6ecimalBinario :5 2 else &egin i :5 2; '0ile n  2 do &egin i :5 i K (; 6igBinarios\i] :5 n mod ); n :5 n div ); end; i :5 i ? (; Binario :5 7otencia6e(28i9; .or " :5 ( to i do

Binario :5 Binario K 6igBinarios\"] I 7otencia6e(28" ? (9; 6ecimalBinario :5 Binario;

end; end;

(23)

program 6ecomposicaoPm>atores7rimos; t4pe 'atriz 5 arra4\(..(+, (..)] o. integer; var Num, N>atores : integer;

6ecomp : 'atriz;

F7rocedimento para e$ibir uma matrizG

procedure P$ibeatriz8var m : 'atriz; l, c : integer9; var i, " : integer; &egin .or i :5 ( to l do &egin .or " :5 ( to c do 'rite8m\i, "],H H9; 'riteln; end; end;

F7rocedimento para armazenar numa matriz a decomposicao em fatores de um inteiroG procedure 6ecomp>atores8$ : integer; var m : 'atriz; var n : integer9;

var >ator, ult : integer; &egin n :5 2; >ator :5 ); '0ile $  ( do &egin ult :5 2; '0ile $ mod >ator 5 2 do &egin ult :5 ult K (; $ :5 $ div >ator; end; i.  ult  2 t0en &egin n :5 n K (; m\n, (] :5 >ator; m\n, )] :5 ult; end; >ator :5 >ator K (; end; end; F7rograma principalG &egin 'riteln8H6igite um inteiroH9; readln8Num9;

'riteln8H6ecomposicao em fatores de H, Num,H:H9; 6ecomp>atores8Num, 6ecomp, N>atores9; P$ibeatriz86ecomp, N>atores, )9; end.

1* F7rograma que determina a media de um aluno da J>AOG program Avaliacao;

t4pe 'Eetor 5 arra4\(..] o. real; var Notas : 'Eetor;

edBimestral, 7rova>inal, ed>inal : real; F7rocedimento para armazenar as notasG procedure ArmazenaNotas8var v : 'Eetor9; var i : integer;

&egin

'riteln8H6igite as notas das avaliacoes bimestraisH9; .or i :5 ( to  do

readln8v\i]9; end;

F>uncao para calcular a media das notas bimestraisG .unction edia8var v : 'Eetor9 : real;

var i : integer; <oma : real; &egin

<oma :5 2; .or i :5 ( to  do

<oma :5 <oma K v\i]; edia :5 <omaC;

(24)

end;

F7rocedimento para determinar a menor nota bimestral e o bimestre em que isto ocorreuG procedure enorNota8var v : 'Eetor; var m : real; var b : integer9;

var i : integer; &egin m :5 v\(];  b :5 (; .or i :5 ) to  do i.  v\i] S m t0en &egin m :5 v\i];  b :5 i; end; end;

F7rocedimento para substituir a menor nota menor que / pela reavaliacaoG procedure *eavaliacao8var v : 'Eetor9;

var enNota, Nota*eav : real; Bim : integer;

*esp : c0ar; &egin

enorNota8Notas, enNota, Bim9; i.  enNota S /

t0en &egin

'riteln8HL aluno fez reavaliacao 8<CN9YH9; readln8*esp9;

i.  Jp=ase8*esp9 5 H<H t0en

&egin

'riteln8H6igite a nota da reavaliacaoH9; readln8Nota*eav9; v\Bim] :5 Nota*eav; end; end; end; F7rograma principalG &egin ArmazenaNotas8Notas9; *eavaliacao8Notas9; edBimestral :5 edia8Notas9; ed>inal :5 edBimestral; i.  8edBimestral S /9 and 8edBimestral 5 -9 t0en &egin

'riteln8H6igite a nota da prova finalH9; readln87rova>inal9;

ed>inal :5 8edBimestral I  K 7rova>inal I 9C(2; end;

i.  ed>inal 5 -.-t0en

'riteln8HAluno aprovado com media final igual a H, ed>inal:2:)9 else

'riteln8HAluno reprovado com media final igual a H, ed>inal:2:)9; end.

1+ F7rocedimento que retorna a transposta de uma matrizG

procedure 'ransposta8var at, 'ransp : 'atriz; m, n : integer9; var i, " : integer; &egin .or i :5 ( to m do .or " :5 ( to n do 'ransp\", i] :5 at\i, "]; end;

!2 F7rocedimento para permutar duas linhas de uma matrizG

procedure 7ermutaOinhas8var at : 'atriz; m, n, l, c : integer9; var i, " : integer;

Au$ : 'atriz; &egin

(25)

at\l] :5 at\c]; at\c] :5 Au$\(]; end;

!1 F>uncao que verifica se uma matriz quadrada e triangularG

.unction atriz'riangular8var at : 'atriz; n : integer9 : &oolean; var i, " : integer; 'riangular : &oolean; &egin 'riangular :5 true; i :5 (; '0ile 'riangular and 8i S5 n9 do &egin  " :5 i K (; '0ile 'riangular and 8" S5 n9 do i.  at\i, "] S 2 t0en 'riangular :5 false else  " :5 " K (; i :5 i K (; end; atriz'riangular :5 'riangular; end;

!! F>uncao que verifica se uma matriz quadrada eh simetricaG

.unction atriz<imetrica8var at : 'atriz; n : integer9 : &oolean; var i, " : integer; <imetrica : &oolean; &egin <imetrica :5 true; i :5 (; '0ile <imetrica and 8i S5 n9 do &egin  " :5 i K (; '0ile <imetrica and 8" S5 n9 do i.  at\i, "] S at\", i] t0en <imetrica :5 false else  " :5 " K (; i :5 i K (; end; atriz<imetrica :5 <imetrica; end;

!" F7rocedimento para multiplicar duas matrizesG

procedure ultiplicaatrizes8var at(, at), at : 'atriz; m(, n(, m), n) : integer9; var i, ", M : integer; &egin i.  n( 5 m) t0en &egin .or i :5 ( to m( do .or " :5 ( to n) do &egin at\i, "] :5 2; .or M :5 ( to n( do

at\i, "] :5 at\i, "] K at(\i, M]Iat)\M, "]; end;

end else

'riteln8H7roduto nao definidoH9; end;

!# F7rograma para determinar os menores elementos de cada uma das linhas de uma matrizG program enoresPlementos;

t4pe 'atriz 5 arra4 \(..(2, (..(2] o. integer; var atriz: 'atriz;

 NumOinhas, Num=olunas : integer;

procedure Armazena'abela8var at : 'atriz; m, n : integer9; var i, " : integer;

(26)

&egin

'riteln8H6igite, por linha, os elementos da matrizH9; .or i :5 ( to m do

.or " :5 ( to n do readln8at\i, "]9; end;

procedure P$ibe'abela8var at : 'atriz; m, n : integer9; var i, " : integer; &egin .or i :5 ( to m do &egin .or " :5 ( to n do 'rite8at\i, "],H H9; 'riteln; end; end;

procedure enorPlemento8var at : 'atriz; m, n : integer9; var i, ", =ol, enor : integer;

&egin .or i :5 ( to m do &egin enor :5 at\i, (]; =ol :5 (; .or " :5 ) to n do i.  at\i, "] S enor  t0en &egin enor :5 at\i, "]; =ol :5 "; end;

'riteln8H H, i,H H, enor, H H, =ol9; end;

end;

F7rograma principalG &egin

'riteln8H6igite a ordem da matrizH9; readln8NumOinhas, Num=olunas9;

Armazena'abela8atriz, NumOinhas, Num=olunas9; 'riteln8H'abelaH9;

P$ibe'abela8atriz, NumOinhas, Num=olunas9; 'riteln8HOinha enor Plemento =olunaH9; enorPlemento8atriz, NumOinhas, Num=olunas9; end.

!$ F7rograma para determinar escalas de viagens aereasG program PscalaEiagemAerea;

t4pe 'atriz 5 arra4\(..+2, (..+2] o. integer; var 6istancias : 'atriz;

Num=idades, Lrig, 6est, Pscal : integer;

F7rocedimento para armazenar as distancias entre as cidadesG procedure Armazena6istancias8var at : 'atriz; m : integer9; var i, " : integer;

&egin

'riteln8H6igite as distancias entre as cidadesH9; .or i :5 ( to m do .or " :5 i to m do i.  i 5 " t0en at\i, "] :5 2 else &egin readln8at\i]\"]9; at\"]\i] :5 at\i]\"]; end; end;

F7rocedimento para e$ibir a tabela das distancias entre as cidadesG procedure P$ibe6istancias8var at : 'atriz; m : integer9; var i, " : integer;

&egin

(27)

.or i :5 ( to m do &egin .or " :5 ( to m do 'rite8at\i, "]:09; 'riteln; end; end;

F>uncao que determina a cidade onde deve ocorrer a escalaG

.unction Pscala8var at : 'atriz; m, Lrig, 6est : integer9 : integer; var i, ", enor, Psc : integer;

&egin

enor :5 at\Lrig, (] K at\(, 6est]; Psc :5 (;

.or i :5 ) to m do

i.  8at\Lrig, i] K at\i, 6est] S enor9 and 8i S Lrig9 and 8i S 6est9 t0en

&egin

enor :5 at\Lrig, i] K at\i, 6est]; Psc :5 i; end; Pscala :5 Psc; end; F7rograma principalG &egin

'riteln8H6igite o numero de cidadesH9; readln8Num=idades9;

Armazena6istancias86istancias, Num=idades9; P$ibe6istancias86istancias, Num=idades9; 'riteln8H6igite a origem e o destinoH9; readln8Lrig, 6est9; i.  6istancias\Lrig, 6est]  22 t0en &egin i.  Lrig S 6est t0en

Pscal :5 Pscala86istancias, Num=idades, Lrig, 6est9 else

Pscal :5 Pscala86istancias, Num=idades, 6est, Lrig9; 'riteln8HPscala entre as cidades H, Lrig, H e H, 6est, H: H, Pscal9 end

else

i.  6istancias\Lrig, 6est] 5 2 t0en

'riteln8HLrigem e destino iguaisH9 else

'riteln8HA viagem entre as cidades H, Lrig, H e H, 6est, H deve ser feita sem escalaH9; end.

!% F7rocedimento que e$ibe as combina@es dos n%meros (, ), ..., n, tomadas M a M. L par4metro i controla o n%mero de comandos  for  e o par4metro s controla o limite inferior de cada um destes comandos. Ls par4metros i e s recebem argumentos iguais a ( 8um9

quando da ativaão da funão. G

procedure =omb8n, M, i, s : integer9; var m, " : integer; &egin i.  i S5 M  t0en &egin .or " :5 s to n ? M K i do &egin

v\i] :5 "; Fv deve ser uma vari#vel global do tipo vetorG s :5 " K (; =omb8n, M, i K (, s9; i.  i 5 M  t0en &egin .or m :5 ( to M do 'rite8v\m],H H9; 'riteln; end; end;

(28)

end; end;

Capítulo )

1 F7rograma para verificar se uma cadeia de caracteres é palindromoG program palindromo; var <t : string; i, =omp : integer; &egin 'riteln8H6igite a palavraH9; readln8<t9; =omp :5 5engt08<t9; i :5 (;

'0ile 8<t\i] 5 <t\=omp ? i K (]9 and 8i S5 =omp div )9 do i :5 i K (;

i.  i  =omp div ) t0en

'riteln8<t,H eh palindromoH9 else

'riteln8<t,H nao eh palindromoH9; end.

! F7rograma para determinar o n%mero de palavras de uma fraseG program =onta7alavras;

var >rase : string;

F>uncao para determinar a posicao da primeira letra de uma fraseG .unction 7rimeiraOetra8var s : string9: integer;

var i : integer; &egin i :5 (; '0ile s\i] 5 H H do i :5 i K (; 7rimeiraOetra :5 i; end;

F>uncao para determinar o numero de palavras de uma fraseG .unction =onta7alavras8var s : string9: integer;

var i, ", M, c : integer; &egin c :5 5engt08s9; i :5 7rimeiraOetra8s9; i.  i  c t0en " :5 2 else " :5 (; .or M :5 i to c do i.  8s\M] 5 H H9 and 8s\M?(] S H H9 t0en  " :5 " K (; =onta7alavras :5 "; end; Fprograma principalG &egin

'rite8H6igite a frase: H9; readln8>rase9;

'riteln8HN%mero de palavras: H, =onta7alavras8>rase99; end.

" F>uncao que converte um inteiro do sistema decimal para o sistema binario, tratando o numero do sistema binario como uma stringG

.unction 6ecimalBinario8n : integer9 : string; var s, Binario : string;

i, " : integer; &egin i :5 2; i.  n 5 2 t0en 6ecimalBinario :5 H2H else &egin Binario :5 HH; '0ile n  2 do &egin

(29)

i :5 i K (; tr8n mod ), s9; n :5 n div ); Binario :5 s K Binario; end; 6ecimalBinario :5 Binario; end; end;

# F7rograma para converter o numero do sistema binario, dado como uma string, para o sistema decimalG program =onverteBinarioPm6ecimal;

var 6ecimal : integer; Binario : string; ", c, n, r : integer;

F>uncao que calcula potencias de )G

.unction potencia6e)8e : integer9 : integer; var p, i : integer; &egin  p :5 (; .or i :5 ( to e do  p :5 )Ip;  potencia6e) :5 p; end; F7rograma principalG &egin

'riteln8H6igite o numero do sistema bin#rio H9; readln8Binario9; c :5 5engt08Binario9; 6ecimal :5 2; .or " :5 ( to c do &egin 6al8Binario\"], n, r9;

6ecimal :5 6ecimal K nIpotencia6e)8c ? "9; end;

'riteln8Binario, H no sistema decimal: H, 6ecimal9; end.

$ F>uncao para verificar se uma conta dada nao foi digitada incorretamenteG .unction Eerifica=onta8 s : string9 : &oolean;

t4pe 'Eetor 5 arra4\(..)2] o. &4te; var c : integer;

6igito : string;

F7rocedimento para armazenar os digitos da contaG

procedure Armazena6igitos8var s : string; var d : 'Eetor; t : integer9; var ", r : integer;

&egin

.or " :5 ( to t do 6al8s\"], d\"], r9; end;

F>uncao para determinar o digito verificadorG Function 6igitoEerificador8s : string9 : integer; var i, =omp, <oma, 6v : integer;

6igitos : 'Eetor; &egin

=omp :5 5engt08s9 ? (;

Armazena6igitos8s, 6igitos, =omp9; <oma :5 2;

.or i :5 =omp do'nto ( do

<oma :5 <oma K 6igitos\i]I8=omp ? i K ) 9; 6v :5 (( ? <oma mod ((; i.  86v 5 (29 or 86v 5 ((9 t0en 6v :5 2; 6igitoEerificador :5 6v; end;

F3nicio da funcao Eerifica=ontaG &egin

c :5 5engt08s9;

tr86igitoEerificador8s9, 6igito9; i.  s\c] 5 6igito\(]

(30)

Eerifica=onta :5 true else

Eerifica=onta :5 false; end;

% F>uncao para determinacao do digito verificador de codigos de barraG .unction 6igitoEerificador8 s : string9 : integer;

t4pe 'Eetor 5 arra4\(..)2] o. &4te; var i, =omp, <oma, 6v : integer;

6igitos : 'Eetor;

F7rocedimento para armazenar os digitos da contaG

procedure Armazena6igitos8var s : string; var d : 'Eetor; t : integer9; var ", r : integer;

&egin

.or " :5 ( to t do 6al8s\"], d\"], r9; end;

F3nicio da funcao 6igitoEerificadorG &egin

=omp :5 5engt08s9;

Armazena6igitos8s, 6igitos, =omp9; <oma :5 2;

.or i :5 ( to =omp do i.  i mod ) 5 (

t0en

<oma :5 <oma K 6igitos\i] else

<oma :5 <oma K +I6igitos\i]; 6v :5 <oma mod (2; i.  6v S 2 t0en 6v :5 (2 ? 6v; 6igitoEerificador :5 6v; end;

) F7rograma para converter um nome proprio no formato Jltimo <obrenomeCNomeG program >ormato7assagemAerea;

var Nome, 3dentificacao : string;

F>uncao que retorna a primeira palavra de um te$toG .unction 7rim7alavra8s : string9 : string;

var i, c : integer; 7rim7al : string; &egin c :5 5engt08s9; 7rim7al :5 HH; i :5 (; '0ile 8s\i] S H H9 and 8i S5 c9 do &egin

7rim7al :5 7rim7al K s\i]; i :5 i K (;

end;

7rim7alavra :5 7rim7al; end;

F>uncao que retorna a ultima palavra de um te$toG .unction Jlt7alavra8s : string9 : string;

var i, c : integer; Jlt7al : string; &egin c :5 5engt08s9; Jlt7al :5 HH; i :5 c; '0ile 8s\i] S H H9 and 8i  29 do &egin

Jlt7al :5 s\i] K Jlt7al; i :5 i ? (; end; Jlt7alavra :5 Jlt7al; end; F7rograma principalG &egin

(31)

readln8Nome9;

3dentificacao :5 Jlt7alavra8Nome9 K HCH K 7rim7alavra8Nome9; 'riteln83dentificacao9;

end.

* F7rograma para converter um nome proprio para o formato de referencia bibliograficaG program *eferenciaBibliografica

var Nome, *eferencia : string;

F>uncao que retorna uma palavra de um te$to a partir de uma posicao dadaG .unction 7alavra8s : string; p : integer9 : string;

var c : integer; 7al : string; &egin c :5 5engt08s9; 7al :5 HH; '0ile 8s\p] S H H9 and 8p S5 c9 do &egin 7al :5 7al K s\p];  p :5 p K (; end; 7alavra :5 7al; end;

F>uncao para deteccao de particulas de, do, dos, da, das, eG .unction 7articula8s : string; i : integer9 : &oolean;

var p : string; &egin

7articula :5 false;  p :5 7alavra8s, i K (9;

i.  8p 5 HeH9 or 8p 5 HdeH9 or 8p 5 HdoH9 or 8p 5 HdaH9 or 8p 5 HdasH9 or 8p 5 HdosH9 t0en

7articula :5 true; end;

F>uncao que retorna as iniciais dos nomes e sobrenomesG .unction 7rimOetras8s : string9 : string;

var i, c : integer; 7rimOet : string; &egin c :5 5engt08s9; 7rimOet :5 s\(]; .or i :5 ) to c do

i.  8s\i] 5 H H9 and 8s\i K (] S H H9 and 8not 7articula8s, i99 t0en

7rimOet :5 7rimOet K H. H K s\i K (]; c :5 5engt087rimOet9;

7elete87rimOet, c ? (, )9; 7rimOetras :5 7rimOet; end;

F>uncao que retorna a ultima palavra de um te$toG .unction Jlt7alavra8s : string9 : string;

var i, c : integer; Jlt7al : string; &egin c :5 5engt08s9; Jlt7al :5 HH; i :5 c; '0ile 8s\i] S H H9 and 8i  29 do &egin

Jlt7al :5 s\i] K Jlt7al; i :5 i ? (; end; Jlt7alavra :5 Jlt7al; end; F7rograma principalG &egin

'riteln8H6igite o nome do autorH9; readln8Nome9;

*eferencia :5 Jlt7alavra8Nome9 K H, H K 7rimOetras8Nome9; 'riteln8*eferencia9;

(32)

Capítulo *

! F7rograma para reunir dois arquivosG t4pe '*egistro 5 record

at : string\(2];  Nome : string\2]; end;

'Arquivo 5 .ile o.  '*egistro; var a, a(, a) : 'Arquivo;

*eg : '*egistro;

 Narq(, Narq), Narq : string\()];

F>uncao que verifica a e$istencia e um arquivoG .unction P$isteArquivo8var f : 'Arquivo9: &oolean; &egin FZ3?G Reset8f9; i. I8Result 5 2 t0en P$isteArquivo :5 true else P$isteArquivo :5 false; FZ3KG end;

F>uncao que verifica se uma matricula "# esta cadastradaG

.unction =onsulta8var f : 'Arquivo; at : string9 : integer; var r : '*egistro;

&egin

Reset8f9; read8f, r9;

'0ile 8not Eo. 8f99 and 8r.at S at9 do read8f, r9; i.  r.at 5 at t0en =onsulta :5 FilePos8f9 V ( else =onsulta :5 ?(; end;

F7rocedimento que reune dois arquivosG procedure *eunArq8var f(, f), f : 'Arquivo9; var r : '*egistro;

&egin

Reset8f(9; Re'rite8f9;

'0ile not Eo. 8f(9 do &egin

read8f(, r9; 'rite8f, r9; end;

Reset8f)9;

'0ile not Eo. 8f)9 do &egin read8f), r9; i.  =onsulta8f, r.at9 5 ?( t0en 'rite8f, r9; end; Close8f(9; Close8f)9; Close8f9; end; F7rograma principalG &egin

'riteln8H6igite os nomes dos arquivos a serem reunidosH9; readln8Narq(9; readln8Narq)9; Assign8a(, Narq(9; i.  P$isteArquivo8a(9 t0en &egin Assign8a), Narq)9; i.  P$isteArquivo8a)9 t0en

(33)

&egin

'riteln8H6igite o nome do novo arquivoH9; readln8Narq9;

Assign8a, Narq9; i. not P$isteArquivo8a9

t0en

*eunArq8a(, a), a9; else

'riteln8HArquivo H, Narq, H "a e$isteH9; end

else

'riteln8HArquivo H, Narq), H nao e$isteH9; end

else

'riteln8HArquivo H, Narq(, H nao e $isteH9; end.

" F7rograma para gerar um arquivo com salarios maiores que -222G t4pe '*egistro 5 record

at : string\(2]; <alario : real; end;

'Arquivo 5 .ile o.  '*egistro; var Arq, Arq( : 'Arquivo;

 NomeArquivo(, NomeArquivo : string\()];

procedure Altos<alarios8var f(, f : 'Arquivo9; var r : '*egistro;

&egin

Reset8f(9; Re'rite8f9;

'0ile not Eo. 8f(9 do &egin read8f(, r9; i.  r.<alario  -222 t0en 'rite8f, r9; end; end; F7rograma principalG &egin

'riteln8H6igite o nome do arquivo a ser pesquisadoH9; readln8NomeArquivo(9;

Assign8Arq(, NomeArquivo(9;

'riteln8H6igite o nome do novo arquivoH9; readln8NomeArquivo9;

Assign8Arq, NomeArquivo9; Altos<alarios8Arq(, Arq9; end.

# F7rocedimento para inclusao de registros num arquivo ordenado, utilizando um arquivo au$iliarG procedure 3nclui*egistroLrdenadoEersao(8var f : 'Arquivo; r : '*egistro9;

var Au$ : 'Arquivo; *eg : '*egistro; &egin Reset8f9; Assign8Au$, H'empH9; Re'rite8Au$9; read8f, *eg9;

'0ile 8r.at  *eg.at9 and not Eo. 8f9 do &egin 'rite8Au$, *eg9; read8f, *eg9; end; i. Eo. 8f9 t0en 'rite8Au$, *eg9 else ee9 8f, FilePos8f9 ? (9; 'rite8Au$, r9;

'0ile not Eo. 8f9 do &egin

(34)

read8f, *eg9; 'rite8Au$, *eg9; end; Close8f9; Close8Au$9; Erase8f9; Rename8Au$, NomeArquivo9; end;

F7rocedimento para inclusoes de registros num arquivo ordenado, sem a utilizacao de um arquivo au$iliarG procedure 3nclui*egistroLrdenadoEersao)8var f : 'Arquivo; r : '*egistro9;

var *eg : '*egistro; i, p, t : integer; &egin

Reset8f9; read8f, *eg9;

'0ile 8r.at  *eg.at9 and not Eo. 8f9 do read8f, *eg9; i. Eo. 8f9 t0en 'rite8f, *eg9 else &egin  p :5 FilePos8f9 ? (; t :5 Filei:e8f9; .or i :5 t do'nto p do &egin read8f, *eg9; 'rite8f, *eg9; ee9 8f, FilePos8f9 ? )9; end; end; ee9 8f, p9; 'rite8f, r9; Close8f9; end;

$ F7rocedimento para inserir um arquivo ordenado em outro arquivo ordenadoG procedure 3nsereLrdenado8var f(, f) : 'Arquivo9;

var r : '*egistro;

F7rocedimento para incluir um registro num arquivo ordenadoG procedure 3nclui*egistroLrdenado8var f : 'Arquivo; r : '*egistro9; var Au$ : 'Arquivo;

*eg : '*egistro; &egin

Reset8f9;

Assign8Au$, H'empH9; Re'rite8Au$9; read8f, *eg9;

'0ile 8r.atr  *eg.atr9 and not Eo. 8f9 do &egin 'rite8Au$, *eg9; read8f, *eg9; end; i. Eo. 8f9 t0en 'rite8Au$, *eg9 else ee9 8f, FilePos8f9 ? (9; 'rite8Au$, r9;

'0ile not Eo. 8f9 do &egin read8f, *eg9; 'rite8Au$, *eg9; end; Close8f9; Close8Au$9; Erase8f9; Rename8Au$, NomeArquivo9; end;

F=omandos do procedimento 3nsereLrdenadoG &egin

(35)

Reset8f(9; Reset8f)9;

'0ile not Eo. 8f(9 do &egin

read8f(, r9;

3nclui*egistroLrdenado8f), r9; end;

end;

% F7rocedimento para ^cruzamento^ de dois arquivosG procedure *egistros=omuns8var f(, f), f : 'Arquivo9; var r : '*egistro; n : integer; &egin Reset8f(9; Reset8f)9; Re'rite8f9;

'0ile not Eo. 8f(9 do &egin read8f(, r9; n :5 =onsulta8f), r.atr9; i.  =onsulta8f), r.atr9 S ?( t0en 'rite8f, r9; end; end;

) F7rocedimento que permuta os conte%dos de dois registros de um arquivo, dados pelos valores do campo atG procedure 'roca*egistro8var f : 'Arquivo; at(, at) : string9;

var *eg(, *eg) : '*egistro; n(, n) : integer; &egin Reset8f9; n( :5 =onsulta8f, at(9; n) :5 =onsulta8f, at)9; ee9 8f, n(9; read8f, *eg(9; ee9 8f, n)9; read8f, *eg)9; ee9 8f, n(9; 'rite8f, *eg)9; ee9 8f, n)9; 'rite8f, *eg(9; end;

* F7rograma que e$clui os comentarios de um programa em 7ascalG program P$clui=omentario;

var Arq : te$t;

 NomeArquivo : string; procedure P$clui=omentarios8var f : te$t9; var s : string; Au$ : te$t; c : c0ar; &egin Reset8f9; Assign8Au$, H'empH9; Re'rite8Au$9; '0ile not Eo. 8f9 do

&egin read8f, c9; i.  c S HFH t0en 'rite8Au$, c9 else &egin read8f, c9; i.  c S HZH t0en '0ile c S HGH do read8f, c9 else

(36)

&egin 'rite8Au$, HFH9; 'rite8Au$, c9; read8f, c9; '0ile c S HGH do &egin 'rite8Au$,c9; read8f, c9; end; 'rite8Au$, HGH9; end; end; end; Close8f9; Close8Au$9; Erase8f9; Rename8Au$, NomeArquivo9; end; F7rograma principalG &egin

'riteln8H6igite o nome do arquivoH9; readln8NomeArquivo9;

Assign8Arq, NomeArquivo9; P$clui=omentarios8Arq9; end.

Capítulo +

1 F>uncao que realiza busca no inicio e no fim de um vetor, sucessivamenteG .unction 7esquisa7essimista8var v : 'Eetor; t : integer; $ : real9 : integer; var " : integer;

&egin

7esquisa7essimista :5 ?(;  " :5 (;

'0ile 8v\"] S $9 and 8v\t?"K(] S $9 and 8" S5 t div )9 do  " :5 " K (; i.  v\"] 5 $ t0en 7esquisa7essimista :5 " else i.  v\t?"K(] 5 $ t0en 7esquisa7essimista :5 t?"K(; end;

! F7rocedimento que implementa uma versao do <elect<ortG procedure <elect<ort(8var v : 'Eetor; t : integer9; var i, " : integer;

F7rocedimento para permutar os conte%dos de duas vari#veisG procedure 'roca8var $, D : integer9; &egin $ :5 $ K D; D :5 $ ? D; $ :5 $ ? D; end;

\>uncao que retorna o indice da componente de maior valor de um vetorG .unction 3ndice6oaiorPlemento8var v : 'Eetor; t : integer9 : integer; var i, M, aior : integer;

&egin M :5 (; aior :5 v\(]; .or i :5 ) to t do i.  8v\i]  aior9 t0en &egin aior :5 v\i]; M :5 i; end; 3ndice6oaiorPlemento :5 M; end; F=omandos do <elect<ortG

Referências

Documentos relacionados

Público-alvo: Pessoas interessadas em conhecer o conceito da Carícia da Análise Transacional Local: Centro de Treinamento da SRH. Horário: 9:30h

O CORONEL BM COMANDANTE GERAL DO CORPO DE BOMBEIROS MILITAR DE MINAS GERAIS, no uso da competência que lhe foi delegada pelo Decreto nº 40.874/00, transfere, a pedido, para o

Incidirei, em particular, sobre a noção de cuidado, estruturando o texto em duas partes: a primeira será uma breve explicitação da noção de cuidado em Martin Heidegger (o cuidado

Os gêneros textuais argumentativos, de expor o seu ponto de vista, utiliza uma linguagem na construção de saberes ao apresentar uma opinião, uma ideia, na qual as práticas de

dos colmos de bambu pelo método de Boucherie, sendo possível constatar o que é relatado na literatura, ou seja, de que quanto maior é o tempo decorrido após o corte do bambu

A análise do discurso tem por objetivo evidenciar as marcas dos processos discursivos, uma vez que se dão na origem dos efeitos de sentido, sendo a língua o lugar material onde

atividades. Tudo tem de estar escrito e não só “falar com a turma”. Além de poder, se necessário, acompanhar todas as atividades.. Os alunos deverão acessar o

Dessa forma, o objetivo deste estudo é relatar um caso clínico de restauração direta classe II no primeiro molar superior direito, utilizando pontas ultrassônicas em