Você está na página 1de 23

Cap tulo 9

Registros
Este tipo indica uma estrutura complexa, formada por vrios tipos primitivos, e que a passam a ser usados conjuntamente. Ela criada em duas etapas. Na primeira, denee se do que composta a estrutura, e na segunda, quais as variveis que sero mapeadas e a a por essa estrutura. Defini~o da estrutura: ca estrutura <nome da estrutura> <tipo> <nome campo 1> <tipo> <nome campo 2> ... <tipo> <nome campo n> fim {estrutura} Utilizaao da estrutura em variveis: c a <nome da estrutura> <nome da varivel> a // exemplo: ENDEREO CLIENTE C // exemplo: estrutura ENDEREO C // alfanum RUA [30] // inteiro NMERO U // inteiro CEP // alfanum CIDADE [20] // fim {estrutura}

Obviamente, depois que um tipo estrutura foi denido, ele pode ser usado em qualquer local da linguagem onde a indicaao <tipo> aparea, por exemplo, em vetores. c c

9.1

Denio de registros ca

registro E uma coleao HETEROGENEA de coisas. As coisas so reconhecidas pelo c a seu nome. Por exemplo, uma placa de automovel um conjunto de 3 letras e 4 n meros. No e u a tem como denir estra estrutura usando vetores. estrutura PLACA caracter LETRA[3] inteiro NUMERO m {estrutura} PLACA VEICULO VEICULO.LETRA ABC VEICULO.NUMERO 1234 leia VEICULO leia (VEICULO.LETRA, VEICULO.NUMERO) No confunda PLACA ( apenas uma estrutura, no ocupa lugar na memria e a e a o NAO pode ser referenciada em comandos) com VEICULO (a varivel cuja estrutura a e PLACA, ocupoa lugar, pode ser referenciada... 139

CAP ITULO 9. REGISTROS Deve-se lembrar que uma matriz tambm pode ser denida com um vetor de vetores e (ou um registro). Acompanhe: estrutura LINHAS inteiro COLUNAS[10] m { estrutura } LINHAS MAT[20] Note que neste caso, existe uma matriz MAT contendo 20 linhas por 10 colunas. O acesso agora se d a MAT[3].COLUNAS[4] ... ao invs de e MAT[3] [4] ... que seria o normal de uma matriz. vetor de registros Nada impede que um registro seja vetorizado. Acompanhe. estrutura DEBITO inteiro RG pontoutuante PRESTACAO m {estrutura} DEBITO CLIENTES[100] Neste caso, existe um vetor de 100 (registros) dbitos. Para acessar a prestaao do 10o e c cliente, far amos: CLIENTES[10].PRESTACAO registro de vetores Tambm nada impede que um registro tenha vetores e estrutura ECONOMETRIA pontoutuante INFLACAO[12] inteiro POPULACAO inteirolongo PIB m { estrutura } ECONOMETRIA BRASIL, ARGENTINA, PARAGUAI Neste caso, como acessar as 2 ultimas taxas de inao de BRASIL e de PARAGUAI ? ca BRASIL.INFLACAO[12], BRASIL.INFLACAO[11] e PARAGUAI.INFLACAO[12], PARAGUAI.INFLACAO[11]

Exerc cio Resolvido 18 Uma organizao tem um conjunto de registros de vendas ca


do ms de janeiro de 1988. Tais registros tem o formato: e REG: DIA,inteiro; VALOR,real. Criar um algoritmo capaz de ler os dados e imprimir os totais dirios. O processamento a termina quando for lido um dia igual a 00. 1: tipo R = registro 2: inteiro: dia 3: real:valor 4: mregistro 5: R: reg 6: tipo V = vetor[1:31] real 7: V: acum 8: acum 0 9: leia(reg)

88-09, Pedro Kantek

140

verso de 23 de janeiro de 2009 a

CAP ITULO 9. REGISTROS enquanto dia = 0 faa c acum [dia] acum [dia] + reg.valor leia(reg) menquanto escreva(acum)

10: 11: 12: 13: 14:

Exerc cio Resolvido 19 Uma organizao tem um conjunto de registros de vendas ca


do ms de janeiro de 1988. Tais registros tem o formato: e REG: DIA,inteiro; VALOR,real. Criar um algoritmo capaz de ler os dados e imprimir os totais dirios. O processamento a termina quando for lido um dia igual a 00. Resolver o problema, sujeito `s restries: a co

X No se pode usar vetor a X Os dados j vem classicados por ordem de dia. a e


1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22:

tipo R = registro inteiro: dia real:valor mregistro R: reg inteiro: diaant real: total total 0 leia(reg) ant dia enquanto dia = 0 faa c enquanto dia = diaant faa c total total + valor leia(reg) menquanto escreva (total) total valor diaant dia se dia = 0 ento a leia(reg) mse menquanto

Exerc cio Resolvido 20 Uma empresa tem registros de vendas de todo o ano de
1987, na forma (dia,ms,valor). Dia e ms so inteiros, e valor real. Criar um algoe e a e ritmo que leia todo o arquivo e escreva os totais dirios. No necess rio denir regisa a e tro. 1: inteiro: dia,mes 2: real: valor 3: tipo M = matriz [1:12, 1:31] real 4: M: cad 5: cad 0 6: leia (dia,mes,valor) 7: enquanto dia = 0 faa c
verso de 23 de janeiro de 2009 a

141

88-09, Pedro Kantek

CAP ITULO 9. REGISTROS cad [mes,dia] cad [mes,dia] + valor leia (dia,mes,valor) menquanto escreva(cad)

8: 9: 10: 11:

Exerc cio 171 A Empresa DEUNOPE vai distribuir R$ 100.000 de prmio de m de e ano a seus vendedores. Cada vendedor receber um xo de 1.000. A diferena, isto , a c e quantia que sobrar, ser distribu proporcionalmente ao total de vendas de cada um. A a da Empresa tem no mximo 50 vendedores , e seus dados esto em um arquivo que contm o a a e lay-out Nome do vendedor, cadeia [30] total de vendas, real Para resolver este algoritmo, sem usar vetores, deve-se ler o arquivo duas vezes.

Exerc cio Resolvido 21 Existe uma turma do curso de PD que teve os dados
referentes ao bimestre transcritos em cartes na forma: o MATR,inteiro NT1,NT2:real NOTPROV,real (NT=nota trab) Os dados terminam quando for lida uma matr cula igual a zero. Escreva um algoritmo que dena o registro acima, leia o arquivo, calcule a mdia para cada aluno, usando a frmula: e o M = ((T1 2) + T2 + (Nprova 7)) 10 Aps cada clculo, deve-se imprimir, o nmero da matr o a u cula, a mdia nal e a mensagem: e PARABENS caso a mdia tenha sido maior ou igual a 7. Se a mdia foi menor que 7, a , e e mensagem PRECISAMOS ESTUDAR MAIS... e . tipo C = registro inteiro: matric real: t1, t2, pr mregistro C: cad real: media caracter: mensagem leia (cad) enquanto matric = 0 faa c media (t1 * 2) + t2 + (pr * 7) media media / 10 se media 7 ento a mensagem PARABENS seno a mensagem PRECISAMOS ESTUDAR MAIS... mse escreva (matric, media, mensagem) leia (cad) menquanto

Exerc cio Resolvido 22 Existe um arquivo que contm alunos que devero se e a
dirigir a unidades da universidade para fazer vestibular. Tais dados esto em um cadastro a que tem o formato:

88-09, Pedro Kantek

142

verso de 23 de janeiro de 2009 a

CAP ITULO 9. REGISTROS MATRE,inteiro Dist-unid-1,real DU2,real DU3,real Denir um algoritmo que leia tais registros e para cada um, gere um outro registro no formato MATRS,inteiro Num-uni-mais-prox,inteiro distancia,real Os dados acabam quando for lida uma matr cula zero. tipo E = registro inteiro: ME; real: U1, U2, U3; 4: mregistro 5: E: CADE; 6: tipo S = registro 7: inteiro: MS, UP; 8: real: DU; 9: mregistro 10: S: CADS; 11: leia (CADE); 12: enquanto ME = 0 faa c 13: se U1 U2 U1 U3 ento a 14: UP 1; 15: DU U1; 16: mse 17: se U2 U1 U2 U3 ento a 18: UP 2; 19: DU U2; 20: mse 21: se U3 U1 U3 U2 ento a 22: UP 3; 23: DU U3; 24: mse 25: MS ME; 26: grave (CADS); 27: leia (CADE); 28: menquanto
1: 2: 3:

Exerc cio 172 Suponha as seguintes estruturas


estrutura X inteiro A real B inteiro C[5] m estrutura estrutura Y inteiro D 8: X E[3] 9: m estrutura 10: Y F
1: 2: 3: 4: 5: 6: 7:
verso de 23 de janeiro de 2009 a

143

88-09, Pedro Kantek

CAP ITULO 9. REGISTROS Pede-se o desenho da rea F, com todos os seus componentes a

Exerc cio 173 Projete a estrutura necessria para comportar todas as informaoes dos a c alunos da UP. Veja que cada aluno tem NOME (com tamanho mximo de 40 caracteres), a idade e cdigo de matr o cula. Os alunos se agrupam em turmas de no mximo 70 alunos. a Cada turno tem 4 turmas e cada curso tem 2 turnos. Finalmente, h na UP 28 cursos. Para a a estrutura acima, responda
X Quantos alunos cabem no total ? X Supondo que alunos no preenchidos contm idade = 0, qual o algoritmo que conta a e quantos alunos h no curso 22 ? a X Qual o algoritmo que conta quantos alunos estudam pela manh (1. turno) ? a X Qual o algoritmo que imprime o nome de todos os alunos do curso de informtica a (curso=8)

Exerc cio 174 Suponha a estrutura necessria para conter um romance, sujeito as a seguintes limites: linhas de 60 caracteres; pginas de 43 linhas; cap a tulos de 20 pginas; a livros de 18 cap tulos.
X Dena a estrutura em questo a X Escreva o algoritmo que imprime as capitulares (primeiro caractere de cada cap tulo). X Escreva o algoritmo que imprime o cap tulo 2 X Escreva o algoritmo que imprime as pginas a mpares dos cap tulos pares.

Exerc cio 175 Suponha que para identicar uma origem ou um destino, h que se a ter 3 informaoes: nome da cidade, sigla do estado a que pertence e pa Isto posto, c s. escreva a estrutura necessria para identicar uma viagem. Uma viagem composta pelas a e informaoes: origem, destino, data da viagem, durao em dias. c ca Exerc cio Resolvido 23 Na realizao da ultima feira de moda no Parque Barigi, ca u estiveram perto de 100.000 visitantes. Cada fam informou seu estado de origem e quantos lia componentes tinha. Tais dados se encontram em um arquivo com o formato:
ESTADO, cadeia[2]; NUMVIS, inteiro. ESTADO a sigla com 2 caracteres. e Criar um algoritmo que leia tal arquivo, exclua os visitantes do estado do Paran, (sigla a PR), e totalize por estado de origem, em ordem alfabtica. Os dados terminam quando e for lido um estado igual a XX que no deve ser considerado para efeito de clculo. , a a tipo R = registro estado : caracter qtd : inteiro mregistro TAB [1:24] vetor de R reg : R tab[1].estado AC 8: tab[2].estado AL 9: tab[3].estado AM 10: tab[4].estado BA
1: 2: 3: 4: 5: 6: 7:

88-09, Pedro Kantek

144

verso de 23 de janeiro de 2009 a

CAP ITULO 9. REGISTROS tab[5].estado CE tab[6].estado DF tab[7].estado ES tab[8].estado GO tab[9].estado MA tab[10].estado MG tab[11].estado MS tab[12].estado MT tab[13].estado PA tab[14].estado PB tab[15].estado PE tab[16].estado PI tab[17].estado RJ tab[18].estado RN tab[19].estado RO tab[20].estado RS tab[21].estado SC tab[22].estado SE tab[23].estado SP leia (reg) enquanto (reg.estado = XX faa c se reg.estado = PR ento a I1 enquanto tab[I].estado = reg.estado faa c II+1 menquanto tab[i].qtd tab[i].qtd + reg.qtd mse leia (reg) menquanto escreva (tab)

11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41:

Outra possibilidade se soluo seria no colocar os estados na tabela, e a medida que ca a eles fossem chegando, a tabela fosse sendo incrementada. Neste caso, se a sa tivesse da que ser ordenada este trabalho teria que ser feito a parte ao nal dos dados. A soluo ca caria: 1: tipo R = registro 2: estado : caracter 3: qtd : inteiro 4: mregistro 5: TAB [1:24] vetor de R 6: reg : R 7: tab ... {espaos e zeros} c 8: leia (reg); 9: enquanto (reg.estado = XX faa c 10: se reg.estado = PR ento a 11: I1 12: enquanto tab[I].estado = reg.estado TAB[I].ESTADO = faa c 13: II+1 14: menquanto 15: se TAB[I].ESTADO = ento a 16: TAB[I].ESTADO REG.ESTADO 17: mse
verso de 23 de janeiro de 2009 a

145

88-09, Pedro Kantek

CAP ITULO 9. REGISTROS tab[i].qtd tab[i].qtd + reg.qtd mse leia (reg) menquanto escreva (tab)

18: 19: 20: 21: 22:

Exerc cio Resolvido 24 Uma companhia area tem 6 tipos de avies: 737-200, e o
737-300, 727, 707, A300 e Bandeirantes. Do cadastro de viagens realizadas no ultimo ano, obteve-se o seguinte arquivo: TIPO,cadeia[6]; PASSAG,inteiro; DIST,real, onde TIPO um campo de 6 posies com a identicao de tipo de avio, PASSAG a e co ca a e quantidade de pessoas transportadas e DIST a distncia do trecho percorrido. Cada vo e a que a Companhia realizou no ano tem um correspondente registro neste arquivo. Deve-se escrever um algoritmo que leia o arquivo e crie uma tabela de 6 ocorrne cias contendo as quantidades totais de passageiros e distncias por tipo de avio. O a a objetivo nal conhecer a produtividade de cada tipo de avio, dada pela razo: pase a a sageiros / distncia. O programa deve imprimir o nome do tipo de todos os avies, e a o ao lado sua produtividade. Os dados terminam quando for lido um tipo totalmente em branco. 1: tipo R = registro 2: aviao : caracter 3: passag : inteiro 4: distancia : real 5: mregistro 6: TAB [1..6] vetor de R 7: tipo R1 = registro 8: av : caracter 9: pa : inteiro 10: di : real 11: mregistro 12: REG : R1 13: inteiro: I; 14: real: prod; 15: leia (reg) 16: enquanto (av = ) faa c 17: I 1; 18: enquanto (I < 7) faa c 19: se aviao [I] = av ento a 20: abandone 21: mse 22: se aviao [I] = ento a 23: aviao [I] av; 24: passag [I] pa; 25: distancia [I] di; 26: I 7; 27: abandone 28: mse 29: menquanto 30: se I < 7 ento a

88-09, Pedro Kantek

146

verso de 23 de janeiro de 2009 a

CAP ITULO 9. REGISTROS passag [I] passag [I] + pa; distancia [I] distancia[I] + di; mse leia(reg); menquanto I 1; enquanto I < 7 faa c prod passag [I] distancia [I] escreva ( Tipo , aviao [I], produtividade prod); , I I + 1; menquanto

31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41:

Exerc cio Resolvido 25 Exemplo: multiplicao matricial ca


1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39:

I0 J0 K0 A [1..3] [1..4] vetor de real B [1..4] [1..5] vetor de real R [1..3] [1..5] vetor de real A[1;1] 1 A[1;2] 2 A[1;3] 3 A[1;4] 4 A[2;1] 5 A[2;2] 6 A[2;3] 7 A[2;4] 8 A[3;1] 9 A[3;2] 10 A[3;3] 11 A[3;4] 12 B[1;1] 1 B[1;2] 2 B[1;3] 3 B[1;4] 4 B[1;5] 5 B[2;1] 6 B[2;2] 7 B[2;3] 8 B[2;4] 9 B[2;5] 10 B[3;1] 11 B[3;2] 12 B[3;3] 13 B[3;4] 14 B[3;5] 15 B[4;1] 16 B[4;2] 17 B[4;3] 18 B[4;4] 19 B[4;5] 20 para I de 1 ate 3 faa c 147

verso de 23 de janeiro de 2009 a

88-09, Pedro Kantek

CAP ITULO 9. REGISTROS para J de 1 ate 5 faa c S0 para K de 1 ate 4 faa c S S + A[I;K] B[K;J] mpara R[I;J] S mpara 47: mpara 48: escreva R
40: 41: 42: 43: 44: 45: 46:

Exerc cio Resolvido 26 Exemplo: Desvio Padro Seja o desvio padro a a


= que calculado pelo seguinte algoritmo e algoritmo dp 2: I 0 3: V [1..10] vetor de real 0 4: M 0 5: para I de 1 ate 10 faa c 6: V[I] I vezes 2 7: mpara 8: para I de 1 ate 10 faa c 9: M M + V[I] 10: mpara 11: M M 7 12: R 0 13: para I de 1 ate 10 faa c 14: R R + (V [I] M )2 15: mpara 16: R 7 R 17: R R 18: escreva R
1:

(X X)2 n

9.2

Processamento de Textos

Um cap tulo important ssimo do processamento de dados se refere ao processamento de texto. Trata-se de transformar o computador em uma super mquina de escrever a capaz de realizar todas as tarefas triviais do manuseio de textos e tambm algumas e outras facilidades desejadas. A importncia deste assunto, em um curso de lgica de a o construao de algoritmos est em que para manusear texto, desenvolvem-se in meras c a u tcnicas muito uteis para a interpretaao e manuseio de dados na forma alfabtica, que e c e no necessariamente precisam ser textos. a Um texto, nesta acepo um conjunto indeterminado de caracteres. Pode ser uma ca e varivel cadeia (limitada a 255), ou um vetor de caracteres, neste caso, sem limite. a Alguns caracteres inclu dos no meio do texto podem format-lo de maneira a mudar seu a visualquando o imprimirmos. Um exemplo deste tipo de caracter so o RETORNO a DE CARROe o MUDANCA DE LINHA. Quando colocados juntos no meio de um texto, eles causam a mudana de linha e o retorno ao in da prxima linha. c cio o Os caracteres ASCII referentes: retorno de carro: CR = carriage return = Cdigo o 13 do ASCII LF = line feed = Cdigo 10 do ASCII o

88-09, Pedro Kantek

148

verso de 23 de janeiro de 2009 a

CAP ITULO 9. REGISTROS Em outros textos, cada linha tem no seu in cio, uma vari vel numrica que indica qual e o comprimento da linha, e neste caso no h necessidade de usarem-se delimitadores. a a

Cadeia e vetor de caracteres


Neste ponto, podemos ver com mais clareza, o conceito de cadeia de caracteres. Trata-se de um vetor de caracteres. Falando em termos rigorosos, a denio: ca caracter VET[30] equivale a uma cadeia VET[30] A explicaao para a existncia desta particularizaao do conceito de vetor, que o c e c e tipo primitivo (no caso, o caracter, que tem sempre comprimento igual a 1), muito e pouco adequado, pois praticamente todas as informaes alfanumricas exigem mais de co e um caracter para serem uteis. Entretanto, existem pelo menos trs diferenas entre um vetor de caracteres e uma e c cadeia. A cadeia est limitada a 255 caracteres de comprimento, e o vetor no tem esta a a limitaao. c Em pascal, a cadeia pode ser lida e gravada de uma vez, ao contr rio dos vetores. Entretanto, tanto a cadeia quanto o vetor podem ser percorridos atravs de e ndices. OBSERVACAO IMPORTANTE: Ao se fazer o ORD de um elemento indexado, a resposta ser a ordem do elemento indexado no universo considerado e NAO o a ndice do elemento dentro do vetor. Exemplo seja o vetor V ABCDEFGHI Se zermos ord(V[3]) a resposta ord(C) que 67, e no 3 como poderia parecer aos mais incautos. e e a

Exerc cio 176 Escreva um algoritmo que leia uma frase terminada por um ponto, com tamanho inferior a 80 caracteres, e um unico espao em branco separando cada palavra, e c escreva o nmero de palavras da frase. u DESAFIO: a quantidade de palavras femininas (i. : terminadas em A e ). Exerc cio 177 Denir algoritmo capaz de receber uma frase e converter as letras minsculas lidas em maisculas, imprimindo este resultado. u u Exemplo: Se for lida a frase Ivo viu a LARANJA, a resposta ser IVO VIU A LARANJA a . Exerc cio 178 Denir um algoritmo que leia uma frase de at 80 caracteres, alinhada e ` esquerda e determine e escreva: a
1. Qual o nmero da maior palavra da frase u 2. Quantos caracteres ela tem de comprimento. Exemplo: Se for lida a frase Maria comeu a melancia, o algoritmo dever imprimir 4,8. a

Exerc cio 179 Escrever um algoritmo para criptografar textos, usando o algoritmo da
Criptograa de Cezar para k=3. ,

Exerc cio 180 Justicao: Dada uma linha com um comprimento cl, e supondo uma ca
frase com comprimento cf, e supondo mais, que cl seja maior do que cf, surge o problema de estabelecer a frase na linha ALINHADA pela esquerda e pela direita. Chama-se a isto de justicao, e os bons datilgrafos fazem isto quase instintivamente. Por exemplo,. se ca o tivermos a frase IVO.VIU.A.UVA branco), que tem um cf de 13, para ser impressa em (. e uma linha de 20 (cl=20), alinhada a esquerda e a direita, como fazer isto ? Um poss ataque para o problema estabelecer: vel e nb = nmero de brancos (nb = cl - cf). No caso: 20 - 13 = 7 u np = nmero de palavras. No caso np = 4 u
verso de 23 de janeiro de 2009 a

149

88-09, Pedro Kantek

CAP ITULO 9. REGISTROS ne = numero de locais receptores de brancos. ne = pred (np). No caso ne=3 b1 = tamanho do primeiro preenchimento. b1 = nb div ne. No caso b1 = 7 div 3 = 2 b2 = tamanho do segundo preenchimento. b2 = succ(b1). No caso b2 = 3 n2 = quantidade de b2s. n2 = nb mod ne. No caso: n2 = 7 mod 3 = 1 n1 = quantidade de b1s. n1 = ne - n2. No caso: n1 = 3 - 1 = 2 Em resumo, para justicar IVO.VIU.A.UVA 20 posies, devemos inserir 1 (n2) bloco em co de 3 (b2) espaos, e 2 (n1) blocos de 2 (b1) espaos no texto. O local de insero ca a c c ca critrio do usurio, mas pode-se sugerir a seguinte colocao: (. signica espao em branco) e a ca c IVO...VIU....A...UVA.

Exerc cio 181 Imagine um algoritmo capaz de ler uma entrada formada por at 60 e caracteres, que correspondem a uma frase. Esta frase termina quando for encontrado um ponto. O algoritmo deve ser capaz de responder:
X Qual o tamanho da frase X Quantas palavras existem na frase X Quantas vezes a dupla ma apareceu na frase.

Exerc cio 182 Escrever um algoritmo que leia uma linha de caracteres (mximo de 60) a contendo uma frase (palavras separadas por branco). O algoritmo deve imprimir as palavras cujo comprimento for maior que 6 caracteres. Exerc cio 183 Dado um texto, sem nenhum caracter de controle, na forma de um vetor, imprimi-lo com tamanho de linha = 60, alinhado a esquerda. No quebrar palavras. a Exerc cio 184 Dado um texto, na forma de um vetor e formado por minsculas e u maisculas indistintamente, imprimi-lo todo em maisculas. u u Exerc cio 185 Dado um texto, na forma de um vetor e formado s por minsculas, o u imprimi-lo colocando cada primeira letra de todas as palavras em maisculos. u Exerc cio 186 Dado um texto, na forma de um vetor, calcular a quantidade de letras, brancos e palavras, imprimindo estes resultados ao nal. Exerc cio 187 Escrever um algoritmo para criptografar textos, usando o algoritmo da Criptograa de Cezar para k=n, onde n deve ser lido e varivel embora xo no texto a , e a criptografar. Exerc cio 188 Dado um texto, sem nenhum caracter de controle, na forma de um vetor, imprimi-lo com tamanho de linha varivel, informado no in do programa, alinhado a cio a esquerda. No quebrar palavras. a Exerc cio 189 Dado um texto, sem nenhum caracter de controle, na forma de um vetor, imprimi-lo com tamanho de linha varivel, informado no in do programa, alinhado a cio ` direita. No quebrar palavras. a a

88-09, Pedro Kantek

150

verso de 23 de janeiro de 2009 a

CAP ITULO 9. REGISTROS

Exerc cio 190 Suponha que todas as palavras terminadas em aso femininas e todas a as terminadas em oso masculinas. Dena um algoritmo que leia uma frase de no mximo a a 80 caracteres contendo palavras separadas por um branco, e com a frase terminando por um . O algoritmo deve: .
1. Contar quantas palavras existem 2. Quantas so masculinas a 3. Quantas so femininas a Imprimir estes resultados ao nal

Exerc cio 191 Imagine um algoritmo capaz de ler uma entrada formada por at 60 e caracteres, que correspondem a uma frase. Esta frase termina quando for encontrado um ponto. O algoritmo deve ser capaz de responder: a) Qual o tamanho da frase b) Quantas palavras existem na frase c) Quantas vezes a dupla ma apareceu na frase.

Correspondncia de cadeias e
Este problema surge com alguma freqncia em diversos lugares na cincia da computaue e cao. O caso mais comum o de pesquisar uma palavra dentro de um texto que est sendo e a editado. Qualquer processador de texto faz isso. Em outra aplicao busca-se comparar ca 2 cadeias de cidos nucleicos dentro de uma molcula de DNA. Aqui so apenas 4 letras a e a (ACTG) e largas seqncias so buscadas. ue a Eis a formalizao do problema: H uma cadeia C composta por 1..n caracteres. ca a H uma palavra a buscar, P composta por 1..m caracteres. Naturalmente n m. Os a caracteres de C e de P foram tirados de algum alfabeto nito . Assim, podemos ter = {0, 1}, ou = {A, C, T, G} ou o alfabeto ASCII ou similar. Diz-se que P ocorre em T com deslocamento s, se a partir da posio s + 1 de T e ca pelos prximos m caracteres, h uma corresponncia completa entre P e T. o a e O problema da correspondncia de caracteres busca encontrar todos os delocamentos e vlidos em T que correspondem a P. a H duas classes de algoritmos de busca aqui: o primeiro, o mais simples, chamado a e de fora bruta, no realiza nenhum pr-processamento nas cadeias c a e

Fora Bruta c
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12:

Algoritmo Fora Bruta para busca em cadeias (padro P, texto T) c a i1 CONTADOR 0 enquanto (i < tamanho(T)-tamanho(P)) faa c aux 0; j 1 enquanto (j tamanho(P)) (T[aux + i] = P[j]) faa c CONTADOR++ aux++ j++ menquanto se j = tamanho(P) + 1 ento a escreva ocorrncia em ,i e 151

verso de 23 de janeiro de 2009 a

88-09, Pedro Kantek

CAP ITULO 9. REGISTROS i i + tamanho(P) {pode ser +1. Depende da denio} ca seno a i++ CONTADOR++ mse menquanto m algoritmo

13: 14: 15: 16: 17: 18: 19:

Este algoritmo claramente ruim, tem complexidade no pior caso de O(tamanho(P ) e tamanho(T )). Acompanhe no exemplo, a quantidade de testes que feita: e T=o galo o gato e a gata gaguejaram e P=gato QUANTIDADE DE TESTES = 38

Algoritmos ecientes
H toda uma fam de algoritmos que diminuem o tempo de processamento nesta a lia tarefa. Todos realizam algum tipo de pr-processamento sobre as cadeias T e/ou P. e Rabin-Karp A idia deste algoritmo converter a cadeia em nmeros (ou melhor dizendo, usar e e u e a interpretaao numrica das cadeias) para efeito da busca. Dado que, caracteres em c e computador so representados usando bits, sempre ser poss este procedimento sem a a vel perda de generalidade. O algoritmo comea calculando a representao decimal de P, o que ocupa p d c ca gitos. Depois, um vetor de mesmo comprimento de T calculado. A cada p d e gitos de P a sua representao decimal calculada e este valor guardado. ca e e O processo rpido. A cada deslocamento em T, basta excluir o d e a gito de mais alta ordem e acrescentar um novo d gito ` direita. a A diculdade neste caso quanto ao tamanho dos n meros envolvidos, sobretudo se e u P grande. A maneira de contornar esta diculdade usar a aritmtica dos ponteiros e e e do relgio, com o mdulo q. Este valor usualmente escolhido de forma que 10q caiba o o e em uma palavra do computador de modo a poder fazer toda a aritmtica inteira. e Entretanto, esta escolha introduz a possibilidade de acertos esprios. Isto ocorre u quando houver a coincidncia de P mod q com T[i..j] mod q, sem que haja P = T[i..j]. e Entretanto, pela escolha judiciosa de q, pode-se garantir que haja poucos acertos esprios. Seja como for, a igualdade numrica no garante a localizao de P em T. u e a ca H que se fazer o testye expl a cito a seguir. A vantagem do algoritmo de Rabin-Karp e excluir a grande maioria de candidatos em uma busca linear simples. Autmatos de correspondncia o e O autmato nito uma mquina de estados composto por um conjunto nito de estao e a dos, um estado inicial, um alfabeto nito de entrada e uma funao Q em Q, chamada c funao de transiao. c c Veja-se um exemplo, extra de CLR pg. 726 (verso brasileira) do a a Cada palavra P tem o seu prprio autmato de busca. Depois que o autmato foi o o o constru ele eciente: examina-se cada caractere de T uma unica vez. O problema do e que a construao do autmato pode ser demorada principalmente se grande. e c o e Veja-se a seguir um autmato para pesquisar P=ababaca, extra da mesma obra, o da pg. 727. a

88-09, Pedro Kantek

152

verso de 23 de janeiro de 2009 a

CAP ITULO 9. REGISTROS

Algoritmo de Boyer-Moore
Este algoritmo, descrito na dcada de 70, usa 3 artif e cios aceleradores que permitem aumentar o tamanho do salto

X a busca feita da esquerda para a direita e X Pr-compila uma tabela de ocorrncias de caracteres e e X Pr-compila uma tabela de ocorrncias de prexos no padro. e e a
Os algoritmos so: (referncia para todos CLR, ingls, pag 870) a e e 1: Algoritmo BOYER-MOORE (texto T, padrao P) 2: tabela1 CARACTERRUIM (padro P, alfabeto S) a 3: tabela2 SUFIXOBOM (padro P) a 4: i 0 5: enquanto (i tamanho(T) - tamanho(P)) faa c 6: j tamanho(P) 7: enquanto (j > 0) P[j] = T[i + j] faa c 8: j 9: menquanto 10: se (j = 0) ento a 11: escreva ocorrncia em ,i e 12: i i + tamanho(P) 13: seno a 14: i i + MAX ((j-tabela1[T[i+j]]), tabela2[j])
verso de 23 de janeiro de 2009 a

153

88-09, Pedro Kantek

CAP ITULO 9. REGISTROS mse menquanto m algoritmo

15: 16: 17: 1:

Algoritmo CARACTERRUIM (padro P, alfabeto S) {alfabeto S contm todos os a e caracteres de T (no repetidos)} a 2: para cada caracter do alfabeto faa c 3: tabela1[indice do caracter] 0 4: mpara 5: para j de 1 at tamanho(P) faa e c 6: tabela1 [indice do caracter P[j]] j 7: mpara 8: retorne tabela1 9: m algoritmo Exemplo deste algoritmo: CARACTERRUIM (gato, o/galteujrm) 4 0 1 2 0 3 0 0 0 0 0, signicando salto de 4 para /leujrm, salto de 3 (4-1) para g, 2 (4-2) para a e 1 para t. Nenhum salto para o. A segunda tabela construida pela funo SUFIXOBOM, cujo algoritmo : e ca e 1: Algoritmo SUFIXOBOM (padro P) a 2: tabelaPI PREFIXO (P) 3: tabelaPILINHA PREFIXO (reverso P) 4: tabela2 tamanho(P) - tabelaPI [tamanho (P)] {repetir tam(P) vezes} 5: para LM de 1 at tamanho(P) faa e c 6: j tamanho(P) - tabelaPILINHA [LM] 7: se (tabela2 [j] > LM - tabelaPILINHA [LM]) ento a 8: tabela2[j] LM - tabelaPILINHA [LM] 9: mse 10: mpara 11: retorne tabela2 12: m algoritmo Funao PREFIXO (padro P) c a tabelaPREFIXOS 0..0 (o mesmo tamanho de P) k0 para q de 2 at tamanho(P) faa e c enquanto (k > 0) (P[k+1] = P[q]) faa c k tabelaPREFIXOS [k] 7: menquanto 8: se P[k+1] = P[q] ento a 9: k++ 10: mse 11: tabelaPREFIXOS [q] k 12: mpara 13: retorne tabelaPREFIXOS 14: m algoritmo No exemplo do teste o galo o gato e a gata gaguejaram para o padro P=gato aqui, a o nmero de testes de apenas 10. Compare com os 38 da FORCA BRUTA. u e Vejamos um exemplo:
1: 2: 3: 4: 5: 6:

T=FOLGA MORRENDO PORQUE ALEM PORVUE DOS ANDES P=PORQUE F O L G A M R E N D P Q U V S 0 2 0 0 0 0 0 3 6 0 0 1 4 5 0 0

P O R Q U E 6 6 6 6 6 1
verso de 23 de janeiro de 2009 a

88-09, Pedro Kantek

154

CAP ITULO 9. REGISTROS Resposta 7 (contra 41 da fora bruta) c Tabela 1: (Caracter ruim) Ao se encontrar um T[x] diferente de um P[y], em T1 se indica de quantas posicoes pode-se saltar em x (no T), ou seja, cada letra em T tem o indice da ultima ocorrencia desse caracter de T em P. Exemplo: Se T=o gato caiu e P=gato, temos a primeira comparacao entre T[4]=a e P[4]=o, como sao diferentes, a T1 manda pular o g a t c i u T1= 4 0 1 2 3 0 0 0 2 posicoes, (ja que j=4 e T[a]=2 e 4-2=2) Tabela 2: (Sufixo bom) Realiza um processamento apenas em P, e busca sufixos do padrao que tenham sido repetidos anteriormente no padrao. Por exemplo, se P=abeb, a T2 e: 4,4,2,1, ja que o sufixo b (na p.4) ja ocorreu anteriormente em P (na p.2). Note que isto so e verdade que ja P[1]<> P[3] FOLGA MORRENDO PORQUE ALEM PORVUE DOS ANDES F O L G A M R E N D P Q U V S P O R Q U E T1= 0 2 0 0 0 0 0 3 6 0 0 1 4 5 0 0 T2= 6 6 6 6 6 1 FOLGA MORRENDO PORQUE ALEM PORVUE DOS ANDES = PORQUE Salto: 6 Prop T1: 6 versus Prop T2: 1 --------------------------------FOLGA MORRENDO PORQUE ALEM PORVUE DOS ANDES = PORQUE Salto: 6 Prop T1: 6 versus Prop T2: 1 --------------------------------FOLGA MORRENDO PORQUE ALEM PORVUE DOS ANDES = PORQUE Salto: 3 Prop T1: 3 versus Prop T2: 1 --------------------------------FOLGA MORRENDO PORQUE ALEM PORVUE DOS ANDES = PORQUE S= 6 *** ACHOU *** --------------------------------FOLGA MORRENDO PORQUE ALEM PORVUE DOS ANDES = PORQUE
verso de 23 de janeiro de 2009 a

155

88-09, Pedro Kantek

CAP ITULO 9. REGISTROS Salto: 6 Prop T1: 6 versus Prop T2: 1 --------------------------------FOLGA MORRENDO PORQUE ALEM PORVUE DOS ANDES = PORQUE Salto: 6 Prop T1: 4 versus Prop T2: 6 --------------------------------FOLGA MORRENDO PORQUE ALEM PORVUE DOS ANDES = PORQUE Salto: 6 Prop T1: 6 versus Prop T2: 1 ---------------------------------

Exerc cio 192 Segundo a f sica, quando temos diversas resistncias ligadas em parae lelo, podemos substitu -las por uma unica resistncia chamada EQUIVALENTE, que tem e uma resistncia calculada pela frmula: e o
1 1 1 1 = + + ... + Req R1 R2 Rn Denir um algoritmo que leia um conjunto indeterminado de resistncias, suponha-as e ligadas em srie, calcule e escreva a resistncia equivalente do conjunto. Dados terminam e e quando for lido um valor igual a zero. Por exemplo, se forem lidos os valores de resistncias e iguais a 5, 10, 1 e zero, a resposta da resistncia equivalente ser 10/13. e a

Exerc cio 193 De acordo com o regulamento do servio postal americano, no pode c a seguir pelo correio, nenhum pacote cujo comprimento (maior dimenso) somado ` amarrao a a ca seja superior a 72 polegadas. Amarrao o comprimento do menor barbante que possa toda ca e a volta ao pacote. Construa um algoritmo portugol que leia 3 dimenses e escreva PODEse o o pacote puder ser mandado via correio, ou NAO PODE no puder. As dimenses esto se a o a em cent metros, e deve ser usada a converso: 1 polegada = 2,5 cm. a Exerc cio 194 Escreva uma funo capaz de receber dois nmeros (inteiros) e devolver ca u a mdia geomtrica entre eles (real). e e Exerc cio 195 Escreva uma funo capaz de receber um valor representativo de uma ca distncia medida em polegadas, e retorne a mesma distncia medida em metros (1pol = a a 2,54cm) Exerc cio 196 Suponha um algoritmo para clculo de um D.V. para cdigos de 4 a o
d gitos assim formulado: cdigo o XYZT-d clculo de Q Q = X + Y + Z + T a clculo de d d = Q mod 10 a Escreva um algoritmo para calcular o DV de uma srie de cdigos lidos, na forma de 4 e o inteiros positivos. Para cada cdigo lido, o algoritmo deve imprimi-lo junto com o DV. Os o dados terminam quando for lido um nmero negativo. O clculo do DV deve ser feito por u a uma funo. ca

Exerc cio 197 Suponha um algoritmo para clculo de um D.V. para cdigos de 4 a o d gitos assim formulado: cdigo o XYZT-d clculo de Q Q = 2X + 3Y + 4Z + 5T a clculo de d d = Q mod 7 a

88-09, Pedro Kantek

156

verso de 23 de janeiro de 2009 a

CAP ITULO 9. REGISTROS Escreva um algoritmo para calcular o DV de uma srie de cdigos lidos, na forma de 4 e o inteiros positivos. Para cada cdigo lido, o algoritmo deve imprimi-lo junto com o DV. Os o dados terminam quando for lido um nmero negativo. O clculo do DV deve ser feito por u a uma funo. ca

Exerc cio 198 Suponha um algoritmo para clculo de um D.V. para cdigos de 4 a o d gitos assim formulado: cdigo o XYZT-d clculo de Q Q = 3X + 5Y + 7Z + 9T a clculo de w w = Q mod 11 a clculo de d Se w = 10, ento d = 0, seno d = w. a a a Escreva um algoritmo para calcular o DV de uma srie de cdigos lidos, na forma de 4 e o inteiros positivos. Para cada cdigo lido, o algoritmo deve imprimi-lo junto com o DV. Os o dados terminam quando for lido um nmero negativo. O clculo do DV deve ser feito por u a uma funo. ca Exerc cio 199 Suponha um algoritmo para clculo de um D.V. para cdigos de 4 a o d gitos assim formulado: cdigo o XYZT-d clculo de q1 q1 = 2X + 3Z a clculo de q2 a q2 = 2Y + 3T clculo de Q a q = q1 + q2 clculo de d a d = q mod 10 Escreva um algoritmo para calcular o DV de uma srie de cdigos lidos, na forma de 4 e o inteiros positivos. Para cada cdigo lido, o algoritmo deve imprimi-lo junto com o DV. Os o dados terminam quando for lido um nmero negativo. O clculo do DV deve ser feito por u a uma funo. ca Exerc cio 200 Denir algoritmo capaz de gerar um d gito vericador alfabtico, para e um cdigo formado por 7 d o gitos numricos. A regra deve ser: dv = ((d1 8) + (d2 7) + e (d3 6) + (d4 5) + (d5 4) + (d6 3) + (d7 2)) mod 26 dv deve ser transformado de letra em nmero e a seguir impresso. O algoritmo deve ler u inmeros cdigos (na forma cadeia[7]) at ler a cadeia 0000000. u o e Exerc cio 201 Denir algoritmo que leia um conjunto indeterminado, mas menor do que 129, de triplas formadas por:
X nmero do bimestre: inteiro de 1 a 4 u X nmero do aluno: inteiro de 1 a 32 u X Nota do aluno: real de 0,0 a 10,0.
Os dados terminam quando for lido um nmero de bimestre diferente daqueles valores vlidos. u a Aps ler o conjunto, o algoritmo deve imprimir: o 1. Qual a mdia anual de cada aluno (32 valores) e 2. Qual a mdia da turma em cada bimestre (4 valores) e 3. Qual o nmero do aluno e o nmero do bimestre em que ocorreu a MAIOR NOTA u u absoluta do ano. 4. Qual o bimestre em que ocorreram mais zeros 5. Qual o bimestre com menor amplitude de notas
verso de 23 de janeiro de 2009 a

157

88-09, Pedro Kantek

CAP ITULO 9. REGISTROS

Exerc cio 202 Denir um algoritmo que calcule o d gito vericador do nmero de u matr cula dos alunos das FACULDADES NEUTRAS. Tal nmero formado por 4 d u e gitos e o vericador assim calculado: e nmero: d1 d2 d3 d4 u res = (d1 * 2) + (d2 * 3) + (d3 * 5) + (d4 * 7) d gito = resto da diviso de res por 9. a O algoritmo deve ler uma srie de nmeros e para cada um, deve imprimir o nmero e o e u u correspondente d gito. A srie termina quando for lido o nmero 0. e u 9.2.1 Calendrios a

Em 1347 a peste negra devastou a Europa. Esta doena na verdade uma pneumonia que c e causa bubes (inchaos nas axilas e virilhas), sendo tambm chamada de peste bubnica. o c e o Os bubes eram caldos de cultura da bactria causadora, que tambm era transmitida o e e por pulgas dos ratos. O nome negra, vem do fato de que (supostamente) a carne das v timas enegrecia pouco antes da morte. A histria comea quando uma tribo Mogol o c de nome Kipchak resolve atacar um posto comercial genovs no Mar Negro. Usaram e para isso uma das primeiras armas biolgicas que a histria registra: cadveres humanos o o a contaminados com a doena eram atirados atravs de catapultas para dentro da cidade. c e Esta embora armada e provisionada para resistir ao cerco, ao ver-se impotente para enfrentar esta arma resolveu fugir de navio de volta a Gnova, abandonando o posto e comercial. Junto com eles, foi a doena. Durante os 4 anos seguintes a peste foi para a c Sic lia, Africa, Itlia, Espanha, Frana, Inglaterra e depois toda a Europa. Vinte e cinco a c milhes de pessoas, um quarto da populaao europia, morreram. Dois sculos passariam o c e e antes que a populao retornasse ao n mero de 100 milhes. A devastao da peste negra ca u o ca encerrou um ciclo na histria da humanidade. Levantes sociais e pol o ticos espoucaram, a mo de obra escasseou, o campo foi abandonado, os alimentos rarearam. At aqui, o a e universo era governado por regras estabelecidas por duas autoridades: Aristteles (384o 322 aC) e o eg pcio Cludio Ptolomeu (100-170 dC). No milnio anterior, a Igreja havia a e mesclado essas regras ` sua viso de mundo, resultando um bloco homogneo: Deus a a e havia criado a Terra no centro do Universo. Estrelas e planetas giravam em rbitas o circulares em volta da terra. Oito esferas concntricas feitas de material imutvel e e a eterno continham a Lua, o Sol, Marte, Merc rio, Jpiter, Vnus e Saturno. A ultima u u e esfera continha as estrelas. Apenas na terra a matria se decompunha e morria. Nas e esferas tudo era eterno. Veja-se o reexo disso nos nomes dos dias de semana, nos principais idiomas ocidentais: Corpo Celeste Sol Lua Marte Mercrio u J piter u Vnus e Saturno Ingls e Sunday Monday Tuesday Wednesday Thursday Friday Saturday Francs e dimanche lundi mardi mercredi jeudi vendredi samedi Italiano domenica lunedi martedi mercoledi giovedi venerdi sabato Espanhol domingo lunes martes mircoles e jueves viernes sbado a

A reao ` peste foi um novo cenrio que buscou enterrar e esquecer aquele o mais ca a a rpido poss a vel: a renascena. A Itlia, pela localizao central iniciou o movimento do c a ca comrcio entre oriente e ocidente. Nasceram aqui os primeiros sistemas administrativos, e o conhecimento nanceiro e os bancos. A cincia (a matemtica) comeou a ser usada: e a c na arquitetura, no comrcio, na cartograa. Sabemos hoje que a Terra demora 365 e dias, 5 horas, 48 minutos e 46 segundos para uma volta completa ao redor do sol. Eg pcios haviam estimado este valor em 365,25 dias (ou seja 365 dias e 6 horas. Ficou

88-09, Pedro Kantek

158

verso de 23 de janeiro de 2009 a

CAP ITULO 9. REGISTROS uma diferena de 11 minutos e 14 segundos). Com a adoo do calendrio eg c ca a pcio por Jlio Czar no sculo I dC, esta disparidade foi se acumulando ano aps ano, afastando u e e o as datas do calendrio das estaes. Em meados do sculo XV ja havia dez dias de a co e atraso. Em 1475 o papa Sisto IV pedira um estudo para determinar a causa do erro. No houve quem conseguisse compatibilizar Aristteles e Ptolomeu com o calendrio. a o a Podiam garantir estabilidade pol tica, mas estavam cada vez mais incapazes de calcular a data da Pscoa corretamente. a Coprnico (1473-1543) comeou a desenvolver em 1506 um sistema astronmico bae c o seado em suas prprias observaoes e clculos. Na tentativa de tirar a Terra do centro o c a do universo e colocar a o Sol, a diculdade era explicar como as coisas no ca a amem direo ao sol. Achava-se na poca, que a matria era naturalmente atra para o cenca e e da tro do universo (embaixo da terra). Quando recrutado pelo secretrio do papa, em 1514 a para resolver o problema do calendrio, Coprnico viu-se num dilema: ou rearmava a a e teoria que a vaidade, o medo e a B blia haviam montado (estamos no centro do universo) e no resolvia o problema, ou chutava o pau da barraca para propor um novo calendrio. a a Ele, que bobo no era, recusou o convite, embora continuando a estudar o problema a em segredo. Convencido pela correo de seus clculos e encorajado por amigos, esboou ca a c um rascunho de suas idias em 1530. Este escrito provocou reaoes mistas. Finalmente, e c em 1543, autorizou a publicaao de De Revolutionibus Orbium Coelestium, comumenc temente conhecido como As Revoluoes. Coprnico recebeu o primeiro exemplar em 24 c e de maio de 1543 e morreu poucas horas depois. O prximo personagem desta histria Galileu Galilei. Pulamos Giordano Bruno, o o e queimado na fogueira no Campo di Fiori em 17 de fevereiro de 1600. Galileu teria deixado cair duas bolas de pesos diferentes da Torre de Pisa para provar que ambas chegariam juntas, contrariando Aristteles que armara chegar a mais pesada antes. o H d vidas se isso de fato ocorreu. Mais modernamente supe-se que tenha sido uma a u o experincia intelectual apenas. O argumento intelectual notvel1 Este o melhor jeito e e a e de fazer f sica, ` la Einstein... a Galileu freqentou diversas universidades na Itlia, sempre conitando com os demais u a professores. Escreveu in meros livros, inventou o telescpio 2 Ao usar os telescpios, u o o viu quatro satlites orbitando Jpiter e os anis de Saturno e relatou isso no livro Sidereus e u e Nuncius(O Mensageiro Celeste). Escreveu de leve, ainda sem adotar completamente o modelo copernicano. A Igreja j comeou a enviar mensagens de que no concordava a c a com as idias desse livro. Em 21 de dezembro de 1614, o padre Toms Caccini, em e a Florena criticou Galileu aformando que se Deus parou o sol a pedido de Josu para que c e os israelitas derrotassem os amoritas, como o sol poderia ser o centro do universo ? O padre foi mais longe: acusou Galileu, a matemtica e todos os matemticos de hereges a a pol ticos e religiosos. A defesa de Galileu perfeita: e No me sinto na obrigao de acreditar que o mesmo Deus que nos dotou a ca de sentidos, razo e intelecto, tencionava descartar o uso destes e por algum a outro meio nos dar o conhecimento que com eles podemos obter [...] A inteno do Esp ca rito Santo ensinar-nos como se vai para o cu e no como e e a o cu funciona. e Em 5 de maro de 1616 o cardeal Belarmino da Santa Inquisio decretou que o c ca
1 Suponha jogar as 2 bolas e suponha que Aristteles estava certo: a mais pesada chega antes. Agora o suponha as mesmas duas bolas porm ligadas por o. Por um lado pode-se argumentar que a mais leve e segura a mais pesada e esta demora mais a chegar. Por outro lado, pode-se supor que o o transforma as duas massas em uma s, que passa a ser mais pesada que a bola anterior. O resultado que agora o e as bolas chegam antes do que chegavam. Para que ambos os racioc nios estejam certos e esto, a unica a possibilidade elas chegarem juntas. e 2 Ele assim considerado pois construiu os maiores telescpios em uso na Europa, ultrapassando seus e o modelos anteriores por diversas vezes.

verso de 23 de janeiro de 2009 a

159

88-09, Pedro Kantek

CAP ITULO 9. REGISTROS sistema copernicano era falso e errneo armando que Deus xou a Terra em seus o alicerces para jamais ser movida. Galileu nunca se conformou com este decreto, buscando incessantemente a sua revogaao. Em 1624, obteve do papa uma autorizaao para c c escrever seu livro mais famoso Dilogo sobre os dois mximos sistemas do mundo, que a a foi publicado em 1632 e recebido com louvores por acadmicos de toda a Europa. Pouco e depois, foi acusado pela inquisio de herege. No pode ver as acusaoes ou as provas. ca a c Ficou no dilema: ou se retratava ou morria como Giordano Bruno. Em deciso que a alguns criticaram como prejudicial a cincia, ele resolveu pela vida. Em 22 de junho de e 1633, fez uma longa retratao. Diz a lenda que depois de terminada a leitura, ao se ca erguer da posio de joelhos onde estava,Galileu teria dito E pur, si muove . S em ca o 1757 a Igreja retirou a proibio sobre a obra. Em 1992, o papa Joo Paulo II reconheceu ca a formalmente o erro da Igreja. Depois vem Isaac Newton, um dos 5 maiores cientistas que a Humanidade produziu (decomposio da luz, clculo diferencial e integral, gravitaao entre outros). Ao escrever ca a c sobre a lei universal da gravitaao, ele acabou de consolidar o modelo copernicano, que c j havia sido engordado com as leis de Kepler sobre o deslocamento dos planetas. a

Calendrios Juliano e Ptolomeico a


A encrenca do calendrio est em que ele lida com 3 ciclos distintos: solar: Alterna a a as estaes e depende do sol. Mede os anos; lunar: Alterna as luas (cheia, nova ...) co e depende da lua. Mede os meses; semanal: Mede os dias da semana e tem origem religiosa. Indica o sabath. A diculdade e que estes 3 ciclos no so mltiplos entre si. a a u Em 45 aC, Jlio Cezar criou o calendrio juliano, baseado no ptolomeico. Neste u a o ano tinha 365d e um quarto de dia. Os meses foram batizados de Janius (portas e janelas), Februas (festa da puricao), Mars (guerra), Apripe (abertura das ores), ca Maiores, Juniores, Quint Sext Sept Oct Novit e Decit lio, lio, lio, lio, lio lio. Logo depois, o prprio JC mudou o nome do Quint para Julius. Seu sucessor, Cezar Augusto no o lio a deixou por menos, mudando o prximo para Augustus. o Em 1582, o papa Gergrio mudou o calendrio, que com a reforma passou a ser o a conhecido como calendrio gregoriano. Sumiram 10 dias em maro desse ano. Adotoua c se a regra dos anos bissextos. A adoao deste calendrio demorou. Na Inglaterra ele c a s foi aceito em 1752. Em 1793, a Revoluao Francesa mudou novamente o calendrio. o c a Nele h 12 meses de 30 dias e 5 feriados nacionais. Os meses: germinal, oral, thermidor, a fructidor, brumaire. Napoleo o aboliu em 1805. a

Novas propostas
Em 1954, a ONU props um novo calendrio. Ele tem 52 semanas de 7 dias = 364 dias. o a O dia 365 no nal do ano e no tem n mero nem nome. Os quadrimestres sempre tem e a u 31 + 30 + 30 + 30 dias. Outra proposta foi o do calendrio xo, com 13 meses de 28 dias cada um. Aqui, as a segundas sempre sero dias 1, 8, 15 e 22. Falta 1 dia, que ca no nal do ano. O dia do a bissexto aps 28 de junho. O novo ms o SOL que ca entre junho e julho. e o e e Finalmente, h uma nova proposta de estabelecer um tempo mundial, (desvinculado a do sol), orientado a negcios e com divises decimais. o o

Regra do bissexto
Sejam R4 resto da diviso do ano por 4; R100 resto da diviso do ano por 100 e a a R400 resto da diviso do ano por 400. a SE R4=0 ((R100 = 0) (R400 = 0)) o ano bissexto seno no . e a a e

88-09, Pedro Kantek

160

verso de 23 de janeiro de 2009 a

CAP ITULO 9. REGISTROS

Exerc cio 203 Imagine um cilindro cujo dimetro da base tem o mesmo comprimento a de sua altura. Dentro dele est inscrita uma esfera, cujo raio o mesmo raio da base a e do cilindro. Escrever algoritmo que leia uma srie de raios, e para cada um deles, calcule e e escreva a diferena de volume entre o cilindro e a esfera. Os raios so lidos em cm e a c a diferena deve ser expressa em cm3. O ultimo raio zero, e indica m. Denir duas funes: c e co uma para o clculo do volume da esfera, e outra para o clculo do volume do cilindro. a a
Vesf era = 4 R3 3

Vcilindro = R2 h

Exerc cio 204 Denir algoritmo que calcule e escreva a soma dos primeiros 50 nmeros u
pares acima de 1000 (1000 inclu do), com os 60 primeiros nmeros mpares acima de 500 u (501 includo).

Exerc cio 205 Denir algoritmo que determine se uma seqncia contendo 1000 eleue mentos, ESTA ou NAO ESTA classicado em ordem descendente. Ao nal do algoritmo, este deve imprimir as mensagens EM ORDEM FORA DE ORDEMconforme o caso. ou

Algoritmo Balance Line


Este algoritmo teve importncia muito maior h 30 anos, quando os recursos de hardware a a no eram nem de longe to abundantes quanto hoje. Em 1974, existiam na cidade de a a Curitiba 7 computadores: o da Universidade Federal do Paran (um IBM 1130 com a 8Kb de memria), e os computadores da Celepar, Copel, Bamerindus, Banestado, Cr o Almeida e URBS, sendo que cada uma destas empresas tinha 1 (um) computador. Como fazer para atualizar 80.000 registros (caso da folha de pagamento do Estado do Paran) todos os meses com apenas um computador que era usado para todos os a sistemas do Goverbo do Estado ? Vale lembrar tambm que no existiam sistemas on-line, nem terminais remotos, e a muito menos micros. A soluo para este problema est no algoritmo que ser estudado nesta aula, chaca a a mado Balance Line. Ele permite que grandes volumes de dados para tratamento atuarial (incluso, alteraao e excluso) sejam serializados e processados sem interferncia a c a e do operador. Importncia atual Este algoritmo ainda muito importante, mesmo com abundncia a e a de hardware. Ele, na verdade, permite economizar tambm tempo de operador, e este e sempre deve ser economizado (principalmente quando o operador somos ns. ;-). o Imagine-se um site onde pessoas devem fazer atualizaes. Uma coisa entrar 1 vez co e por semana e fazer uma pequena atualizao. Outra precisar entrar de uma s vez e ca e o alterar digamos 400 registros. Para o primeiro caso, a estratgia atualmente usada (uma transao atuarial que sob e ca o comando do operador altera o dado) est perfeita. Para a segunda, no. Poucos tem a a pacincia para refazer esta mesma transaao 400 vezes. e c Neste segundo caso, ser muito bom se o dono do sistema disponibilizar um balance a line. Neste caso, o operador preparar uma massa de atualizaao (possivelmente usando a c o notepad ou similar), far as vericaes e correoes, e quando a massa estiver OK, a co c submete-la-, eventualmente via upload para atualizaao serializada. Ao invs de 400 a c e transaoes, o operador ter que se preocupar com apenas 1. O resto ca por conta do c a algoritmo Balance Line. 161

verso de 23 de janeiro de 2009 a

88-09, Pedro Kantek

Você também pode gostar