harry farrer algoritmos estruturados

152
Edição . - _ "T··- ESTRUTURADA DE COMPUTADORES .. ..-,' :', .:...... ,.,.' ..' ... ALGORITMOS , , .\: : • Pascal Estruturado • Basic Estruturado • Fortran Estruturado ) I I I I 9788521611806 ) ) J ) ) ) ) ) - ) ) ) ) ) ) ) ,

Upload: danilo-santos

Post on 22-Jun-2015

33.345 views

Category:

Documents


900 download

TRANSCRIPT

Page 1: Harry farrer   algoritmos estruturados

Edição

. - _ "T··-

ESTRUTURADADE COMPUTADORES

. . ..-,' :', .:......,.,.' ~ ..' '-~'" ...

ALGORITMOS~STRUTURADOS

, , .\: :.~~.TJ~41

• Algoritmos'Estrutúradô~!'

• Pascal Estruturado

• Basic Estruturado

• Fortran Estruturado

)

I I I I9788521611806

)

)

J)

)

)

)

) -

)

)

)

)-------------~....::.;;:.::::::~)

)

)

),

Page 2: Harry farrer   algoritmos estruturados

,

Page 3: Harry farrer   algoritmos estruturados

------- ---._- -------

Page 4: Harry farrer   algoritmos estruturados

ocooo

Page 5: Harry farrer   algoritmos estruturados

')

~r~--_-~--~-~~~~_~-_~_~~~~~~~~~_~~~~~~~~~~~ _)

)

}

)

)

}

)

)

)

)

)

)

)

)

}

}

)

)

)

)

)

)

)

)

)

Programação Estruturadade Computadores

Algoritmos Estruturados

Harry FarrerChristiano Gonçalves Becker

Eduardo Chaves FariaHelton Fábio de Matos

Marcos Augusto dos SantosMiriam Lourenço Maia

Professores do Departamento de Ciência da Computação daUniversidade Federal de Minas Gerais

UFMG - ICEx - DCCAv. Antônio Carlos. 6627

31270-010- Belo Horizonte - ~IG

tel: (31) 499-5860fax: (31) 499-5858

e-mail: [email protected]: http://www.dcc.uirng.br/--echaves

Terceira edição

iICEOITOR A

Page 6: Harry farrer   algoritmos estruturados

No .iuteressc de difusão da cultura c do conhecimento, os autores e a editora envidar~ omáximo esforço para localizar os detentores dos direit~s aut~s de qual~uer ~atenalutilizado, dispondo-se a possíveis acertos posteriorescaso, madvertidamente, aIdentificação

de algum deles tenha sido omitida.

Escola N S (ie r-;'-~Hma. ., (.;Lu.

B. Rui 8;;rbosa

N~'5;tt Cata O;; - c~ -.;?cc)~

Prefácio da Terceira Edição

Hoje em dia, mais do que em qualquer outra época, a Informática sofre profundas transfor.mações em decorrência das novas tecnologias de hardware e das novas técnicas e paradigmasde desenvolvimento de software. Contudo. apesar de toda e qualquer inovação, a porta de en.trada para esta área ainda ~ontinua sen~o o aprendizado ~a cons~ção de algoritmos. ou, como tequerem outros, do aprendizado da 16glca de programaçao ou, mnda, da expressão do raciod.nio lógico. Também, quanto à forma desse aprendizado, nada mudou. Aprender a lógica deprogramação é aprender a desenvolver algoritmos de forma organizada e sistemática. Esse :>aprendizado depende muito mais do aluno do que de qualquer outro auxílio. Cabe ao professor ...~.introduzir os conceitos básicos envolvidos e guiar o aluno na prática de construir algoritmos •gradativamente maiores e mais complexos. Para isso, é indispensável um material didático queofereça o máximo de exemplos e exercícios de forma a viabilizar essa prática dentro da correta Ometodologia.

Além de eventuais correções e pequenas alterações no texto já existente, esta terceira edi·ção de Algoritmos Estruturados inclui um apêndice com soluções para vários Exercícios Pr0­postos no livro. Foi usado o critério de selecionar um exercício em cada classe de problemassemelhantes. Recomendamos que o leitor tente resolver um Exercício Proposto e somente de­pois consulte a solução no final do livro. Se houver diferença entre as soluções, o leitor deveusar o bom senso para determinar se cometeu algum erro ou se ambos os algoritmos são alter·nativas possíveis para o problema.

Esta terceira edição de Algoritmos Estruturados pennanece compatível com os demais voo e~

lumes desta série dedicados ao estudo das linguagens de programação. Nesse caso, se já existir Wa terceira edição de um desses volumes, esta seguirá a mesma ordem de assuntos, manterá a •mesma numeração para os capítulos, parágrafos, exemplos e exercícios, e conterá um a~ndi.

ce com programas para os mesmos Exercícios Propostos resolvidos neste volume inicial. •

•,·,·.0; , C)

, .. ', ~'\' t ! '~',.",:"'.'.;;;; ."'"- ....-;. Qlc..,,~, , __ ,,:\~ '-J,"~.-l<'"t"""O

F02 45.f(if;:~~:i' ,- .J.d.. .. ')ê:' Jf ...·i1..:;d.,:SC)

-.J 'J~: .. ' ...•~.., !J3. f>~~;f~~~'" ':.,~.'::' ~

,,;;,.,i~.•

Reservados todos os direitos. É proibida a duplicaçãoou reprodução deste volume. no todo ou em parte.sob quaisquer formas ou por quaisquer ~eios(eletrônico. mecânico. gravação. fotocópia,distribuição na Web ou outros),sem permissão expressa da Editora.

Direitos exclusivos para a língua portuguesaCopyright © 1999 byLTC - Livros Técnicos e Científicos Editora S.A.Travessa do Ouvidor, IIRio de Janeiro. RJ - CEP 20040-040Te!.: 21-3970-9480Fax: [email protected]

Page 7: Harry farrer   algoritmos estruturados

)

)

)

}

)

)

}

)

•,)

)

J)

)

~

)

)

)

Tradicionalmente, o ensino da programação de computadores tem-se conf"undido com oensino de uma linguagem de programação, de tal maneira que, há alguns anos, ensinar COBOLou FORTRAN era a mesma coisa que ensinar a programar.

Embora tais linguagens sejam instrumentos possíveis para a expressão do raciocínioalgorítmico e para a sua execução automática por um computador (Dijkstra, 1976), sua utiliza­ção geralmente é uma condição limitante para os que se iniciam na arte da programação. Asprimeiras linguagens de uso generalizado (FORTRAN, COBOL, BASIC etc.) foram projeta­das com o principal objetivo de viabilizarem a expressão, em um nível mais elevado, dos pro­gramas a serem executados em computador. Isto conduziu a linguagens que devem obedecer aum conjunto amplo de regras extremamente rígidas. Mesmo as linguagens projetadas segundoos conceitos da Programação Estruturada (ALGOL, PASCAL, C, MODlLA-2 etc.) ainda li­mitam muito a forma de expressão do raciocínio lógico.

A arte de programar consiste na arte de organizar e dominar a complexidade (Dijkstra, 1972).Para alcançar esses objetivos, o programador deve servir-se de sucessivas abstrações. A utili­zação das linguagens de programação para expressar as várias etapas do raciocínio algorítmicoforça o iniciante a se preocupar excessivamente com aspectos pouco significativos para o de­senvolvimento do raciocínio (as regras de sintaxe, por exemplo). Acrescente-se o fato de queo raciocínio apoiado estritamente em uma linguagem de programação não percebe a importân­cia da regra áurea de Dijkstra - "dividir para reinar" -, pois as linguagens disponíveis nãofacilitam o uso de refinamentos sucessivos.

A tarefa de programação. em última análise, resume-se no desenvolvimento de um raciocí­nio lógico e, como tal, exige do programador uma boa dose de criatividade. A liberdade deexpressão é essencial ao desenvolvimento da criatividade. Segundo Wirth. a linguagem exerceforte e inegável influência nos processos do pensamento e, efetivamente. define, limita e de­forma o espaço no qual são formulados (Wirth, 1974).

Tudo isso leva a concluir que uma ferramenta mais adequada para o Jesenv<>lvimento dealgoritmos deve ser livre e desprovida dos detalhes pouco significantes para a expressão doraciocínio lógico. Como este não é o caso das atuais linguagens de progrJInação, a solução éutilizar uma notação especial que sirva como instrumento intermediário no processo da elabo­ração de programas. Obviamente, o modelo lógico obtido através dessa notação deve ser trans­posto com facilidade para qualquer das linguagens de programação disroníveis, de maneiraque sua utilização não seja mais um inconveniente para o programador. Assim, Dutra caracte­rística de uma boa notação algorítmica é a facilidade de codificação posterior. Uma vantagemadicional no uso de notação adequada ao desenvolvimento de algoritmos é condu zir o progra­mador a expressar o seu raciocínio lógico independente da linguagem de programação.

Resumindo, simplicidade. poder de expressão e coerência são importantes aspectos de umanotação cujo principal objetivo é tornar-se um instrumento para o desenvolvimento e expres­são do raciocínio lógico. A quantidade de estruturas de controle deve ser restringida a ummínimo que seja compatÍ\"el com a potencialidade da notação. Esse conjunto nl(nimo deve

Page 8: Harry farrer   algoritmos estruturados

. medida do possível implementado sem esforço nas linguagens de programação_exis-ser, na • . 'á '. ados da programaçao es.tenlLs. Por fim, a notação devc incorporar os conceitos J consagr

trulurada. . - I 'tIni a apresentada neste, A ui de professores que definiu e sedlmentou a notaçao a gon c . d' .

~;~u~~r~e~~::;~~~aa~~~~~ ~:;ab~:~:~~~~~i~~~~t~~~~~t~~~~~~~~~::~~~:~a~~~a milhares de alunos nestes últimos anos, comparado com o observado antenormente.

Os Autores

kM ..(..u ». .4 4 A'-;,:f-:::::,~_..~~. "",_:::::--~

;: ...4 BP Ai ~ W ,-%.,4

Programação Estruturada de Computadores é o resultado da experiência adquirida pelosseus autores no ensino e na prática do uso acadêmico e profissional dos computadores eletrô­nicos. Destina-se não apenas aos estudantes que iniciam o curso universitário, mas a todas as'pessoas que desejam ou precisam adquirir o conhecimento destas máquinas e de sua utiliza- """'ção, através de uma ou mais linguagens de programação. e

Programação Estruturada de Computadores estará sendo apresentado em diversos volu-tfl'tmes. O volume inicial, Algoritmos Estruturados. que serve de base para todos os demais, faz'(Juma introdução à Ciência da Computação. com um histórico e uma descrição dos computado-~res. oferecendo em seguida uma metodologia simples, gradativa e sistemática, destinada ao.desenvolvimento de algoritmos. Esta metodologia visa atingir os objetivos da denominada Pro,"gramação Estruturada, com um produto final claro, de fácil elaboração e de fácil entendimen-)to, partindo de uma abordagem global do problema e obtendo módulos de uma forma natural,"através de refinamentos sucessivos. Procurou-se expressar os algoritmos com a utilização de.poucas formas, que fossem claras, concisas. gerais, simples e espontâneas.

Os volumes seguintes tratam (cada um) de uma linguagem de programação, seguindo a~mesma ordem de assuntos de~te volume. É o~~ecida a me~ma ?,umeração para ?~ capítulos. ')parágrafos. exemplos etc" eVltando-se a repetlçao de conceitos Ja estudados, facilItando-se a'sua consulta e, sobretudo, permitindo um aprendizado unificado das diversas linguagens. Para ~)

isto, na sua m~ioria, os exemplos ~ exercfcio.s são os mesmos nos diversos volumes, tendo sido ~'.'.)escolhidos CUidadosamente para dustrar os Itens estudados e, ao mesmo tempo, mostrar a va- ,riedadede problemas que podem ser levados a umcomputador.)

Espera-se que o leitor desta obra adquira uma disciplina de pensamento e de raciocínio que"lhe seja útil, não apenas no seu contato com os computadores, mas também para enfrentar os\<'difíceis problemas que a vida profissional e pessoal lhe venha a apresentar. ~

Os Autores'"

•••aj~)

Page 9: Harry farrer   algoritmos estruturados

----- ------------------- ------ --------------------------------------------- -------------- -------- ------- -------------------- -1----------(---'----------------------------------+---------------------------------

)

)

}

)

~

)

}

)

)

)

)

)

)

)

Conteúdo

o Introdução à Ciência da Computação, 1

0.1. Evolução Tecnológica dos Computadores, 1

0.2. O Computador, I

0.2.1. A Estrutura de um Computador Digital. 20.2.2. Memória. 3 "0.2.3. Unidade Central de Processamento (UCP). 60.2.4. Periféricos. 7

0.3. Algoritmo, 14

0.3.1. Conceituação. 140.3.2. Exercícios de Fixação. 150.3.3. Refinamentos Sucessil'os. 150.3.4. Exercícios de Fixação. 17

0.4. Algoritmos Estruturados, 19

0.5. Linguagens de Programação, 22

1 Itens Fundamentais, 29

1.1. Constantes, 29

1.1.1. Constante Numérica. 291.1.2. Constante Lógica. 301.1.3. Constante Literal. 301.1.4. Exercício de Fixação. 30

1.2. Variáveis, 30

1.2.1. Fonnação dos ldelltificadores. 311.2.2. Declaração de Variáveis. 311.2.3. Exercícios de Fixação. 32

1.3. Comentários, 32

1.4. Expressões Aritméticas, 32

1.4.1. Funç{jes. 33lA.2. Exercício de Fixação. 35

Page 10: Harry farrer   algoritmos estruturados

1.5. Expressões Lógicas, 35

1.5.1. Relações. 351.5.2. Exerdcio de Fixação. 361.5.3. Operadores Ugicos. 361.5.4. Prioridade. 381.5.5. Exercícios de Fixação, 39

1.6. Expressões Literais, 39

1.6.1. Exercício de Fixação. 40

1.7. Comando de Atribuição, 40

1.7.1. Exerdcios de Fixação. 41

1.8. Comandos de Entrada e Saída, 41

1.8./. Exercício de Fixação, 44

1.9. Estrutura Seqüencial, 44

I. 10. Estrutura Condicional, 45

/./0./. Estrutura Condicional Simples. 45/./0.2. Estrutura Condicional Composta, 461./0.3. Exercícios de Fitação. 5/

1.11. Estrutura de Repetição, 53

1.1/./. Exerdcios de Fixação, 56/.1/.2. Exercício de Fixação. 62

1.12. Exercícios Propostos, 75

2 Estruturas de Dados, 87

2.1. Introdução, 87

2.2. Variáveis Compostas Homogêneas. 90

2.2./. Variáveis Compostas Unidimensionais, 93

2.2././. Declaração. 932.2.1.2. Exerdcios de Fixação. 108

2.2.2. Variáveis Compostas Multidimensionais, //0

2.2.2.1. Declaração, III2.2.2.2. Exercícios de Fixação, 131

2.3. Variáveis Compostas Heterogêneas, 131

2.3./. Registros. 13/2.3.1.1. Declaração. 133

2.3.2. Conjunto de Registros, /34

2.3.2.1. Declaração. 135

2.4. Arquivos, 147

2.4.1. Conceito de Arquivo, 148

." ~ $ ~ (,.-... --.,"-" -~,,-,,-,-,

2.4.2. Organização de Arquivos. 1491.4.1. Declaração. 149

2.4.3./. Exuc(ciosdeFixoçõo, /50

2.4.4. Abertura de Arquivo, 150

2.4.4./. ExerdciodeFixoção, /5/

2.4.5. Fechamento de Arquivo. 1512.4.6. Organização Seqüencial. 152

2.4.6.1. Comando de Entratúl, /522.4.6.2. COIIlQndo de SallÚJ, /522.4.6.3. Exercfciosde Fixação, /59

2.4.7. Organização Direta, 160

2.4.7./. ComandodeEntrada./6/2.4.7.2. Comando de Salda, /62

2.5. Exercícios Propostos, 164

2.5.1. Variáveis Compostas Unidimensionais. 1642.5.2. Variáveis Compostas Multidimensionais. 1662.5.3. Registros. 1702.5.4. Arquivos, /74

3 Modularização, 175

3.1. Introdução. 175

3.2. Ferramentas para Modularização, 177

3.2.1. Sub-r'Jtina, 1793.2.2. Função, 183

3.3. Considerações sobre a Modularização de Programas, 204

3.4. Exercícios Propostos, 204

4 Conclusões, 209

4.1. Definição dó Problema, 209

4.2. Desenvolvimento de um Algoritmo. 209

4.3. Codificação, 209

4.4. Digitação. 209

4.5. Processamento do Programa, 210

4.6. Análise dos Resultados. 210

Bibliografia, 282

Índice Alfabético, 283

),-)"..'.

G

•••ef~-,J

oo()

Page 11: Harry farrer   algoritmos estruturados

--~!Il!P,!II~..",~.•.-~----------------------_. __.._-----

Page 12: Harry farrer   algoritmos estruturados

o

Capítulo O

Introdução à Ciência da Computação

A tare~a de processamento de dados consiste em tomar cena informação. processá-la e obter o resul-~.

~-~ , ~Desde que o homem começou a processar dados. ele tentou construir máquinas para ajudá-lo em seu

trabalho. O computador eletrônico é o resultado dessas tentativas que vêm sendo realizadas através dos ()séculos. Ele é. sem dúvida alguma. um dos principais produtos da ciência do século XX.

0.1. EVOLUÇÃO TECNOLÓGICA DOS COMPUTADORES

Os primeiros computadores utilizavam circuitos eletromecânicos e válvulas. O aparecimellto do tran- Osistor (Bell Telephone Laboratories, 19~8) trouxe a redução do tamanho e da potência consumida em")relação às válvulas, além de serem dispositivos mais robustos e confiáveis. Os computadores utilizandoesta tecnologia são classificados como de segunda geração. O domínio da tecnologia da física do estado. ')sólido pennitiu a integração de vários transistores em uma única embalagem com aproximadamente as .mesmas dimensões de um único transistor. Surgiram então os circuitos integrados que foram responsá­veis pelo aparecimento dos computadores de terceira geração. Estes computadores tinham maior potên- .cia de cálculo, eram mais rápidos, mais confiáveis e menores fisicamente do que seus antecessores da,)segunda geração. ,:

Atualmente, o processo de integração tem praticamente o mesmo custo para se integrar dezenas. cen-\~)tenas ou milhares de transistores em uma única pastilha. Pode-se falar então na quana geração de compu- te"tadores pela utilização da integração em altíssima escala (VLSI). V

Ao mesmo tempo, as telecomunicações se desenvolveram enormemente pelo uso da mesma tecnolo-ogia. Isto viabilizou a utilização de recursos de telecomunicações aplicados à computação. e vice-versa. Oefeito imediato foi a possibilidade de interligação de sistemas de computação. do uso à distância de um.computador por um ou vários usuários. •0.2. O COMPUTADOR

Existem dois tipos de computadores: os analógicos (do grego ana/ogos, que significa proporcionado);;:)e os digitais (do latim digitus. que significa dedo).

Um termômetro é um exemplo de funcionamento por analogia, onde a dilatação de mercúrio é análo-GJga à mudança de temperatura.

:::::::::: II 1.[ ',::,1. ''1,y I"" j"l"Ij ".....1. ..",'t""....llllll,!.""".'j·Fig. 0.1 Termômelro,

)~)

oQO

10

Page 13: Harry farrer   algoritmos estruturados

3

b) MagnelizaçãC' anIl-horária

Fig. 0.3 O núeko de femle.

a) Magnetização horarla

0.2.2. Mem6ria

Ao conjunlo d: circuito, eletrônic,os ~ disp~,itivos mcdmicos dá-se o nome de IlIIft/h'arc. 'Iue signi­fka fer:amem.a e e usa~( I como referenCIa à maquina. p~o~n~lllc:'te.dita,e não à sua utiliuÇ.à.\}.

Será-deserito-a~cada"llm de5tes-compunente>e seu respectivo funcionamento_---

A Unidade Central de Processamento de um computador geralmente utiliza uma memória de ahavelocidade para armazenar, temporariamente, dados e program,a~ que,estã? sendo pr~essados. já quequalquer programa, para ser executado, tem de estar nesta memona; alem diSSO, as unid ~des de controlee aritmética e lógica se comunicam com cada um de seus bytes. Esta memória costuma ser denoininada"memória temporária", "memória de trabalho" ou "memória principal".

Ao menor item de informação binária dá·se o nome de BIT. A palavra bit é uma con.ração de binarydigit (dígito binário) significando um dígito que pode assumir um dos dois valores ou estados diferenlesOou I, tal como um dígito decimal pode assumir um dos dez valores O, I, 2... ou 9.

Os bits são agrupados de modo a possibilitar ao usuário representar os dados e progr:..mas que deseje.Denomina-se BYTE a um conjunto de bits e PALAVRA a um conjunto de bytes. O número de bits queformam um byte, bem como o número de bytes que formam uma palavra, não é fi:\o e depende exclusi.vamente da máquina considerada. No caso de bytes, a situação mais usual é de encontrá- los constituídosde 8 bits.

A memória do computador é constiruída por um conjunto de bits. sendo que o byte. ou palavra. rel:cbcum endereço a fim de que os programas possam fazer referência aos seus dados,

A capacidade de um computador normalmenle é medida pelo tamanho de sua memória, Usualmenle.a unidade utilizada para fazer lal medida é o "byte",

Cada 1024 bytes representam I Kbytelquilobyte). Cada 1024 Kbytes represenlam I i\I~yle (megabylc),Cltda 1024 Mbytes representam I Gbyte (gigabyte). Os computadores atuais podem variar. em lenllOS dememória, desde algumas dezenas de Kbytes a vários Gbytes,

Os dados e programas que necessitam ser armazenados para utilização fUlura ou periódica são arma­zenados em outros tipos de memória. Estas, por sua vez, são denominadas "memórias de ~mazenameJ1losecundário" ou "memórias auxiliares". f"este caso, deve ser le\ado em consideração o tàto rie que os dadose programas não podem ser perdidos ao ser desligado o sistema,

Serão apresentados a seguir alguns tipos de memória quanto às slIas principais .::aracleríSlicas e prin­cípios de funcionamento.

Memórias magnéticas. A tecnologia para memória principal que predominou entre os; computadoresmais antigos foi a memória de núcleos ou memória magnética.

Uma memória deste tipo é constituída de um conjunto de minúsculos anéis de ierrite magnelizáveis.tal qual é mostrado na figura 0.3.

Sabe-se da Física que a corrente eléuica ao passar por um tio cria um campo magnético em tomo dofio. no sentido horário ou anli-horário, dependendo do sentido da corrente. Portamo. este campo magné­tico estará presente no núcleo de ferrite que envolve o fio e pode-se convencionlf os dois senridos demagnetização como sendo "O" e "I".

Um szrande número de núcleos de ferrite é montado na forma de matriz com tios de endereçamenlopassand~por cada núcleo (figura 004). A memória é formada por um grupo destas matrizes inl.:rligadas

UnidadeLógica e

Aritmélica

Unidadede

Entrada

2

Memória

Unidade Central de Processamento

Fig. 0.2 Unidade Cenlral de Processmncnlu,

0.2.1. A estrutura de um computador digital

O es uema da estrutura de um computador digital é dado pela figura 0.2. . . ·t'vo· emUniciade de entrada. Esta unidade traduz informação de uma grande vanedade ~e dlspo:I~lé c:paz

um código que: a unidade central de processament.o é capaz d~ cntendcrd~1lI. ~~t;~I~:Sa~~~~cos que sãode traduzir letras, números, imagens, marcas ou tinta magnética em pa roes

compreensíveis ao computador. , a ma que irá "ma-Memória. A memória é capaz de armazenar não só os dados, mas também o pro.,ra

niP~~~:~t:~::i~~s~ aritmética. Nesta unidad~ são feitos todos os cálculos aritméticos e qualquer ma-

niP~~~~~::::~~~t~~I~t~e~~~;:;;e~~~~~~i~Io ,"tr:fi~o~do~:~~~~~~~~~~~~:~;:~~a~dos na memória e interpreta-os, Controla a transl~rencla e ,a os

" da memóna para a saldaaritmética da entrada para a memona e ."dd d' ulsos elétricos emU .d d de saída Os dados processados são convertidos. por esta Uni a~: e lIl~p , .

palav~~s ~uenúmeros ~ue podem ser "escritos" em impressoras ou "mostnldos em vldeos ou numa sene

de outros dispositivos.

. , é d ál I ue pOOL' ser consloeraoa comoO princíl"'ill de analogia é utilizado tambem numa r gua e c cu o, q - d " plesmenle

, - I' I' - d' isão sao executa as simum compul;:,lur analógiCO, onde as operaçoc:~ de mu tlp Icaçao e IV ~n ..~b "cada na régua intemasOInando .\L'üttsuotrainGe sea distância meuida na régua externa~ !iló,lluH_u__ "" _H H"

deslizante. ---~-.-~ por Lord Kelvin, em---Um dos primeiros "computadores" analógicos de gran<le porte 101 ~ns ruI I ~ 't do Sol da

. 1 P I' sos SIIDU avam os elel os ,1872, para prever a altura das marés nos portos mg eses. o las e pe . d' vam a variação dasLua e dos ventos nas marés. Os resultados eram mostrados em gráficos que 10 Ica

marés. d . I s forças que atuam numaOs computadores analógicos de hoje são capazes. por ex.emplo. e slmu ar ~

. , . d 1 elétncarepresa ou as forças que atuam nas asas de um aVião a partir avO tagem . , N I van' a'_

ai ,· é f d I'd randezas conunuas, e e, asO que caracteriza o computador an oglco o ato e I ar com g " .veis do problema são representadas por tensõe~,9ue s~o ~uantidades ftslcas conu~,u~~ está na rapidez

Do ponto de vista de utilização, a caractensUca pnnclpaI do computador ana ogl

com que as informações são processadas. r·' as os compuladoresAo contrário dos computadores analógicos, que trabalham com grande~as ISIC '- I" e

. I' I' d' 'd' . t aves de pulsaçoes e etncas qu ,d' itais são capazes de somar, subtraIr. mu up Icar, IVI Ir e comparar a r )Ig 'Itima análise, representam os dígitos O(ausência de corrente) e I ~presença ~e corrente,

em ~s computadores digitais são os mais utilizados e é deles que este hvro tratara.

)J

I

)

)

)

)

)

)

)

)

)

}

)

)

)

)

•t

Page 14: Harry farrer   algoritmos estruturados

Fig. 0.6.. Circuito integrado.

Fig. 0.4 Matriz de núcleos de ferrile.

<Pino de enlrada

< Pino de saídao....

CE

Pinos de controle

R/W

A.

A•A,

A.

"II~...a....."a...~..3.."õ

Fig. O.6.b Símbolo lógico de uma memória de I.02~ r.Javrds de I bil cada, I I K )( I l.

Na operação de armazenamento, o dado é colocado nos pinos de entrada (na forma de níveis lógicos"O" e "I" l e pelos pinos de endereçamento é informada qual a posição interna da memória em que o dadoserá gra\ado. Em seguida. pelos pinos de comando e controle. é indicado que a operação a ser efetuada éde escrita (annazenamento) e que esta operação deve ser realizada.

O pro.:esso de leitura de dados é bastante similar ao de$l.-rito para armazenamento. O endereço daposição de memória a ser lida é infonnado pelos pinos de endereçamento e um sinal indicando a condi- ,.,)ção de leitura de dados é aplicado aos pinos de comando e leitura. Feito isto, o dado estará presente nos ("'1\

pinos de saída da memória. A leitura não é destrutiva. isto é, a posição de memória selecionada conúnua "ittIarmazenando o dado que está sendo mostrado nos pinos de saída. •

Conforme suas características. as memórias semicondutoras podem ser classilicadas em vários tiposusualmente identificados por meio de siglas. a saber: RAM. ROM, PROM. EPRO~[ e EAROM. •

RAM (Random Access Memory). A memória RAM é um tipo de memória na qual pode·se "Ier" ou"escrever" em qualquer de suas posições (ReadlWrite Memory). O acesso a uma determinada posição de •memória é feito aleatoriamente. isto é, pode-se ter acesso direto a qualquer uma das posições.

Este tipo de memória é "volátil". ou seja. os dados armazenados se perdem caso o sistema de alimen- Qtação seja interrompido.

As memórias semicondutoras RAM são divididas nas cate20rias estática e dinâmica. A RA.l\{ estática ci')é fonnada por grupos de transistores dispostos dois a dois na configuração def/ip:t7op. enquanto a RA.\I '.•'dinâmica armazena os dados em capacitores que perdem sua carga com o tempo. sendo necessário rees- ",)crever os dados periodicamente (refreslrl. i"'"

As vantagens das memórias dinâmicas sobre as estáticas são que as primeiras consomem menos po- ...,tência, são mais simples de ser construídas e. conseqüentemente. têm um custo menor. Já as memórias: '\estáticas são mais rápidas e mais simples de usar do que as dinâmicas. V

ROM (Read OnIy Memo~·). A memória semicondutora do tipo ROM caracteriza-se basicamente JX'rC)ser apenas de leitura. ou seja, não é possível escrever dados durante a operação normal do dispositivo. Oconteúdo de uma ROM é gravado durante o seu processo de fal-ricação. de acordo Cl'm a vontade do usuj· ()

O5 "f'..J

bit de paridade

Fig. 11.5 Represenlação da lelra R em EBCOIC.

4

, &' b' As' a partir de impulsos elétricos, éadequadamente. onde cada nuc1eo de lemte repr~senlaum Ilo SIm.possível mudar a magnetização de cada um dos bIts e. portanto. annazenar d~dos. .

É claro que os dados não podem ser annazen~dos direlame~te n.:' mem?~a. el~s p~eclsam antes se~codificados. O código utilizado é. em última anáhse. uma combtnaçao de dlgltos bmanos. Como exe:pio. é mostrada na figura 0.5 a represenlaçãoda letra R, na codificação EBCOIC. em uma porção e

memória magnética. . d I' . prO bit de paridade é um bit adicional col~ado em cada byte ~e modo que o ~umero e s seja sem e

ímpar e o número de O's seja sempre par. Isto para o caso de sIstema com pandade ímpar.Assim. no exemplo representado na figura 0.5. tem-se:

IIOIIOOI@]

Um outro exemplo é o caractere especial "=". que, representado em EBCOIC. seria:

O 1 1 I I I I OIT]

Com este mecanismo é possível ao computador verifi~ar eletronicamente se a configuração está cor-reta Qualquer anormalidade é acusada como erro de pandade. . . .

i\,lemórias semicondutoras. Com a evolução da eletrônica. os computadores, que ~OIclalmente .era~equipamentos grandes e lentos, tomaram-se compactos e rápidos graças ao desenvolvl~ento ~~s c~~c::~tos integrados que. nos dias de hoje. concentram ~Iharesde componentes. Esta evoluçao tam mpresente na tecnologia de fabricação das memónas.

Os computadores mais recentes utilizam as denominadas memórias semicondutoras, que se apresen-

tam na forma de um circuito integrado. .. . • d' atravésA memória semicondutora, como todo circuIto mtegrado. poSSUI um certo nu.mero e pmo~ .

dos quais é feita a comunicação com o mundo exterior. De ~ma forma geral. os pmos das memonas po-dem ser classificados em quatro grupos (figura 0.6), a saber.

• pinos de entrada de dados;pinos de saída de dados; .).pinos de endereçamento (indicam a qual posição de memóna está-se tendo acesso .

rinos de comando e controle.

Page 15: Harry farrer   algoritmos estruturados

rio. Uma vez que o usu:irio decidiu quais os dadus que devem ser armazenados na ROM. ele (J' transmite ao'- fablÍcante dalTlcl11~~a. Feita a gravaçãoda R()M. o seu cOllteúdo não mais poderá ser alter~J( I.

~_r -cf.l=s:c:·tc:ce-,t",ipo=-=.dc memórí;1 énOO:voIat1T~senao uTIlTzaao para armazenar. de forma petmancilTt:.mbeta5~·I " programas de finalid~dcs especiais em computadores.

I' PROM (Programmable Read Only Memory). A memória semicondutora do tipo PROM é basica·

mente uma ROM na qual a gravação de seu conteúdo é feita pelo usuário, e não mais pelo fabricante. APROM possui circuitos internos que permitem a sua gravação. por meio de processos especiais. fora dafábrica em que foi produzida.

Uma vez feita a gravação da PROM, esta não poderá ser alterada.EPROM (Eraseble Programmable Read Only Memory). Este tipo de memória é uma PROM que

permite a reprogramação através de processos especiais, ou seja. o usuário pode apagar o seu conteúdo egravar novamente conforme a sua vontade.

O coníeúdo da EPROM pode ser apagado fazendo-se incidir luz ultravioleta sobre o chip através deuma janela transparente existente na parte superior do dispositivo. O processo de apagar não é seletivo,resultando no apagamento de todas as posições da memória.

Apesar de seu custo mais elevado a EPROM é bastante útil nos casos de programas ou dados queestão sempre sendo modificados pelos fabricantes dos equipamentos nos quais ela é utilizada. Por exem·pio. na atualização do software, contido em EPROM, de um certo computador. o custo seria mínimo secomparado com a troca do componente, caso as memórias dos tipos ROM ou PROM fossem utilizadas.

EAROM (Electrically Alterable Read Only Memory). A memória do tipo EAROM é similar àEPROM. porém, ao invés do uso de luz ultravioleta, o seu conteúdo pode ser apagado aplicando-se umcerto valor de voltagem aos pinos de programação.

Unw vantagem no liSO da EAROM é que seu apagamento pode ser feito no próprio circuito em que seencontra. dispensando lâmpadas especiais e simplificando o processo. Outra grande vantagem é que aopcra~'ão de apagamento é seletiva, isto é, cada posição da memória pode ser apagada sem que se altereo collleúdo das demais.

0.2.3. Unidade Central de Processamento (UCP)

A Unidade Central de Processamento de um computador, devido à sua complexidade. é normalmentedividida, para fins de estudo e projeto. em duas partes:

a Unidade de Controle. onde os códigos. que representam as operações a serem realizadas. sãoidentificados e através da qual os dados são obtidos da memória;a Unidade Lógica e Aritmética. onde as operaçõcs são efetivamente execllladas.

A Unidade de Controle. Códigos especiais (instruções) são usados para indicar ao computador asopemções que ele deve realizar e os dados a que elas se referem. Um conjunto de circuiros lógicos seencarrega de interpretar o significado desses códigos. trazer da memória os dados referidos e executar asações requisitadas.

Umas tantas convenções são adotadas quando se projeta um computador. entre as quais está a manei·ra pela qual uma operação que se deseja realizar deve ser informada à Unidade de Controle.

Assim. sempre que esta unidade entrar em contato com uma informação que obedece às convençõesespecificadas no seu projeto, ela está apta a interpretá-la convenientemente e, com isso. executar a ope­ração intencionada.

Um conjunto de formas-padrão é adotado para informar à Unidade de Controle qual a operação a serfeita e onde está o dado na memória a que esta operação se refere:.

A manifestação explícita dessas formas chama-se INSTRUÇAO.Em um computador, onde os dados são binários e os circuitos são lógicos. instrução é uma configura­

ção de dígitos binários.Em um conjunto de bits que representa uma instrurtão, podem-se distinguir. normalmente, dois ele·

mentos:

Código de Operação: subconjunto de dígitos da instrução que identilic<\ uma entre as várias ope­rações que o computador é capaz de executar;

• Campo de Operandos: subconjunto de dígitos da instrução que especifica onde estão os dadosnecessários à execução da operação.

6

,A Unidade Lógica e Aritmética (Ur A) N I 'd _adI' ) 'b - J • es a uni ade S' (I e J

_ ~d(.' .su t:açao, multiplicação e divisão e opera õcs 16 .• " .lI:eCUI" , àS as operações aritméticas deçau, J'SjuRça&,'6ltexclusi vo e-Ulf'=ras~-"-l--;or.- .ç..'. glca~,[aIScolllQCOmplellleIlIO4t. ........PAtH>-..' '. , .......... " uaJmente elllstem d •. . ~"', ~~"J~""

A . uma pastilha. ,. ISponlvelS comerCIalmente liA idades ItSgi-s operações na ULA são efetuadas e I'

de noanos~egundOs (10-9 s) para somar du: ;:I~~~~~:~~s~~nle elevadas. demorando cerca de dezenasli Mlcroprocessadores G IIs,

U . • raças ao desenvolv' d' - .~Idade Central de Processamento em Uma" Ime~[o a nu~~~lelronJca é possível construir toda uma

mlcroprocessador sendo conheCI'd I Unlca pastilha de SI!JCIO. Essa pastilha ou chip d-no ...' o pe o nome de seu i b . . ' , .... mina-se

comercl~!Jzados.por exemplo. INTEL 8080 INTEL 80:8 ncante segUido de determinado número, São. Os mlcr?processadores são c1assificado~pcl h' Z80, .\IOTOROLA 6800, I.'iTEL 80286 etc.

umdade de mfo~ação-quesão capazes de roo taman o da p~avra - o~ c~mprimeri!o. em bits. daforam o.s de 8 bits, seguidos pelos de 16 bits P c~ssar de uma so ~ez. Os pnrnelros microprocessadores

O mlcroprocessador é, portanto U'd de, mais recentemente. pelos de 32 bits. .,a DI a e Central de Processamemo de um microcomputador.

0.2,4. Periféricos

As unidades de entrada que servem ar ' .d.ades de saída. que servem ~ara recebe p a IOtroduzlr programas ou dados no computador, e as uni.ricos. r programas ou dados do computador. são denominadas perifé-

Teclado. O teclado é uma unidade de enlradteclas adicionais de controle do computad À a semelhante a uma máquina de escre\er com aloum;!,com disposição se'!lelhante à das calculad:;as

Svezes. apresenta-se com um te.:lado numérico adi;ional:

Geralmente, as mformações são introduzidas' '.nha do texto, corrige.se o que for necessá . atraves d? teclado por meIO de Imhas: digita-se uma Ji­dade Central de Processamento apena dno e. quando a !Jnha eS!l\'er perfeita. ela é introduzida na Uni­ou XMIT nos tenninais). • n o-se uma cena tecla de ControJe (E:>'iER, às \ezes RETUR:'\

~~rmalmente.o que está sendo di ilado . '.qu~ Ira r~ceber o próximo caractere : ser di v~aa:a:e.ce;do no vlde.o. que e uma unidade de ;aída. A posiçãomaIs antlgos, o que é dioitado vai sendo e g. o elO lcada no vldeo com um cursor. Em computadore<

Ih '.. ., SCnto em folha de I' -me ante ao dlsPOSlttvo de impacto das má . pape ror uma Impressora de caracteres se-

O teclado oferece a . qumas de escrever.vantagem da mtroduçã d' d' -

naquele mOmento pelo operador. Mas tem o' o lret~ as mformaçoes que podem est:lf sendo criadasdo. O teclado é a principal unidade de ent dmconvemente de prender o computador enquanto é utiliz"

~ ra a apenas no" mic~ d ""res prelere·se preparar os dados em má . ~ . . ocomputa ores. Em computadores mal'o-. I . qumas Jora de !Jnha . t • • I'

pOIS. eva-los ao computador através de outro ri~" • IS oe. nao Igadas ao computador. para de-maç~:s que devam ser introduzidas durante o~u ;nc? usando-se o teclado apenas pan pouc as infor-

",Ideo. O vídeo é uma unidade de saída dos unclOnamento.teleVIsão (às vezes é mesmo um ap"elh d I ~o~putadores semelhante ao vídeo de um aparelho deI ' , ",. o e te eVlsao que d r d das, comerCiaiS. filmes antigos e tudo mais q I' _ . es Iga o. o compulador. pode receber nOI'e-

ue a te eVlsao .:ostuma oterecer). O vídeo. gerJlmente. repro-

Fig. 0.7 TedaJ,',

7

Page 16: Harry farrer   algoritmos estruturados

duz o que está sendo digitado no teclado. mas pode mostrar também resultados de cálculos ou mensa­gens. sob controle dos programas. Geralmente. os vídeos podem funcionar sob dois modos. dependendodo controle do programa: no modo canlctcre (que pode mostrar cerca de 16 a 24 linhas de 48 a 80 caracteres)ou no modo gráfico (quando usa uma resolução mais alta. isto é. mais pontos luminosos para formardesenhos).

O vídeo oferece a grande vantagem de permitir uma interação instantânea entre o operador e o com­putador, indispensável nos jogos eletrônicos, por exemplo. Mas tem a desvantagem de não deixar regis­trado os resultados obtidos. além de também prender o computador durante a sua utilizaçào. Como o te­clado, o vídeo é a principal unidade de saída nos microcomputadores. sendo utilizado nos computadoresmaiores apenas para mensagens curtas que o computador envia para o operador através do programa queo esteja controlando.

Impressora. É uma unidade de saída em que as informações provenientes do computador sãoregistradas em forma impressa numa folha de papel.

A velocidade das impressoras mais comuns varia de 100 a 400 cps (caracteres por segundo). quandoligadas a microcomputadores ou a terminais, e de 600 a 1.000 Ips (linhas por segundo), quando ligadas acomputadores maiores. As impressoras geralmente permitem imprimir, no máximo, 80 ou 132 cpl(caracteres por linha) com a densidade de 10 cpi (caracteres por polegada = inch) na horizontal e 6 ou 8Ipi (linhas por polegada) na vertical. Algumas impressoras permitem variar, por programa, a densidadehorizontal, isto é, imprimir caracteres mais longos ou mais estreitos.

A impressão pode ser feita com tipos sólidos, como nas máquinas de escrever, ou pela seleção de pontosdispostos numa matriz, geralmente de 9 X 7 pontos, nas impressoras matriciais.

Quanto ao modo de produzir a impressão, as impressoras se dividem entre a.~ que usam o impacto mecâ­nico contra uma fita de carbono e as que não são de impacto. As impressoras de impacto podem usar umacabeça de nove agulhas (movimentadas por programa através de pequenos eletroímãs), uma corrente decaracteres ou uma série de rodas de caracteres (que recebem urna martelada no momento em que passampela posição em que devem ser impressas), um cilindro ou esfera de caracteres ou uma margarida.

Impressoras que não usam impacto podem ser térmicas (que marcam papel especial por meio de aque­cimenlo), eletrostáticas (que usam o princípio das copiadoras), injeção de tinta (que esguicham finos ja·tos de tinta), a raios laser etc.

Unidades de discos magnéticos e disquetes. São unidades de entrada e de saída do computador.Informações provenientes do computador podem ser registradas de forma magnetizada em discos oudisquetes e, posteriormente, podem ser introduzidas de novo no computador, através de unidades leilo­ras/gravadoras de discos ou disquetes.

O meio utilizado é um disco com a superfície revestida por uma camada de óxido de ferro, que podeser localmente magnetizada num sentido ou no outro por um cabeçote, através de um pequeno eletroímã.

(o'ig. 0.11 Vídeo.

/ ')

')

)

'1)

')

)

.Je~

e(~

)

•eJ

()o••••OGJ{)

O()

ao

9 o

pela produção de~ Il1udança n.'~x.emplo. dL'11 cada posição,:ne de triJha. Para:e leitura e escrita.

••••••

Movimentosda cabeça-· -

7456

Ca~ça deimpressão

Fig. 0.9 Impres.ora malriciaL

2 3

2

3

5

4

Fig. 0.10 Corrente de caraClere~.

7

6

8

9

o mesmo cabeçote permite "ler" magnetizações feitas anteriormente sem a a á J

~ma pequena ~orre_nte ind.uzida no seu eletroímã ao passar sobre regi~s em ~egh~'lido da ma~nellzaça~. O dISCO tem um movimento de rotação em tomo de seu~i)(O .

rpm (rotaçoes por mmuto) enquanlo o cabeçote pode ser movimentado radial~en;;cabeçote, ele escreve ou lê informações ao longo de uma CI'rcunr'e' ." . renCla, que tem oconseguir maIOr economIa no mecanismo de adonamento dos discos e dos cabeçOl"

o

10=:0 Pontos: 3 ~

BUM

• • • • • •

\... Naves atingidas: 2

Page 17: Harry farrer   algoritmos estruturados

II

-..--

Fig. 0.1-1 i\largariJa.

Fig. 0.13 Cilindro.

Fig. 0.16 Pilha de discos.

Fig. 0.15 Disc'u magnelico de dUpl.llace.

'-"-'---------{J-

PAPEL

•••••

fila decarbono

Fig. 0.1I Rodas de caracteres.

fila decarbono

•••

Fig. 0.12 Esfera de caracteres.

constroem-se unidades que usam as duas faces do disco ou que utilizam uma pilha de discos solidários no iimesmo eixo, acessíveis por um pente de cabeçotes movimentados por um único mecanismo (disk pack). '4\A capacidade de um disco magnético. hoje. atinge cerca de dezenas de megabytes. .~

Nos discos magnéticos, o cabeçote de leitura e escrita "voa" sobre as sup'érfícies dos discos a uma ,~distância da ordem de I mícron (I milésimo de milímetro). sem tocá-Ias. .'~'

Os disquetes ou discos flexíveis têm tamanho menor (geralmente 5.25 ou 8 polegadas), capacidade de ~2 ou 5 centenas de Kbytes por face, dependendo da densidade de gravação ser simples ou dupla. Os~,disquetes são embalados em um envelope revestido internamente de um tecido especial que protege e 1limpa o disquete. Através de janelas feitas no envelope, a unidade de disquete o prende e o põe em mo.vimento, com o cabeçote tocando a sua superfície.

Os discos magnéticos são usados nos grandes computadores e os disquetes, às vezes. são usados comoentrada de dados, sendo a sua gravação feita fora de linha em máquinas gravadoras de disquetes ou emmicrocomputadores.

Unidades de fitas magnéticas e cassetes. As unidades de fitas magnéticas permitem escrever e lerinformações registradas magneticamente em fitas, por um processo semelhante ao usado nos discos mag­néticos. Cada uma destas unidades possui dois carretéis. Por comandos de um programa, a fita se movi.menta de um carretel para o outro, passando por um cabeçote de leitura/gravação.

As fitas magnéticas têm um custo por byte armazenado muito inferior aos discos magnéticos, alia­do a uma grande capacidade de armazenamento. Por exemplo, uma fita de 1.200 pés de comprimentopode armazenar mas de 20 megabytes. A densidade de gravação mais usual é de 1.600 bpi (bytes perinch).

10

)

)

~

)

)

)

)

)

J

)

)

)

)

)

)

)

)

•~

J

1)

Page 18: Harry farrer   algoritmos estruturados

o(.)

Q

••\....

Fig. 0.20 Caracteres especiais para leitoras ópticas.

Calul.,100oaI*tricas

813

E~iste~ periféricos que permi!em a leitura e perfuração de cartões menores. com 96 posições de per­furaçoes crrculares e outros que leem e perfuram fita de papel.~ma grande:. facilidade.of~,=cida pelos cartões perfurados é o seu manuseio direto, permitindo a in­

serçao, s~pressao ou substltUl~ao manual dos cartões de uma massa. A alteração de informações grava­das e~ dISCOS ?u fitas magnéticas. por outro lado, só pode ser feita através de um computador.

O mconveruente do cartão perfurado, porém, está no seu custo elevado, na maior lentidão de leitura ouperfuração por parte dos periféricos e no fato de ele não poder ser reaproveitado para novas informações.

Embora com menor freqüência, diversos outros periféricos podem eventualmente ser encontrados noscomputadores.

Traçador de gráficos. É um aparelho em que o movimento de uma caneta esferográfica em duasdireç~s perpendiculares, permite. fazer desenhos controlados por um programa no computador.

Leitora d~ ~arcasópticas. E. uma unida~e de entrada do computador que lhe permi te, através decélu~as !otoeletncas,ler ~m:cas feitas em POStções prefixadas de uma folha de papel. É muito usada naa\'altaçao de provas de mullipla escolha de exames vestibulares.

Leito~a de caracteres ópticos. É um periférico, um pouco mais complexo que a leitora de marcas,que permite I~r caracteres de tamanho e formato predeterminados, geralmente impressos pelo própriocomputador. E usada ~ara fazer o controle do pagamento de contas de água, luz e telefone, lendo o ca­nhoto da conta. devolVIda pelo banco, após o seu pagamento. Algumas leitoras de caracteres ópticos lêemcaract~res comuns, porém outras só lêem caracteres com um desenho especial.

Leitora de caracteres magnéticos. Este periférico permite ler caracteres especiais impressos comtinta contendo partículas magnetizáveis. Geralmente usada para o processamento de cheques bancários.

Fig, 0.19 Esquema de uma leitora/perfuradora de canões.

Fontes da luz

Saída de e:at1óe,

Entrada da eartõ..

Fila magnética

\

Carretel

Cabeçote

Fig. 0.17 Unidade de fita magnéti,a.

I

Carretel

12

Fig. 0.111 Gravador de lita cassete ligado a um mkrocol11putaoor.

A grande desvantagem das fitas em relação aos discos magnéticos é a de só permitirem acessoseqüencial às informações: uma informação escrita na fita só se toma acessível após a leitura de todas asinformações que a antecedem, enquanto que num disco magnético, saltando-se para a trilha em que estáa informação desejada. obtém-se um acesso mais direto.

As fitas magnéticas são usadas em computadores de maior porte. O seu correspondente nos micro­computadores são as fitas cassetes, as mesmas utilizadas nos aparelhos de som. Muitos microcomputa­dores permitem que se leiam ou escrevam em fitas cassetes através de um gravador comum de som,oferecendo assim uma solução mais econômica, embora mais incômoda e menos eficiente que a dosdisquetes.

Leitoras/perfuradoras de cartão. O cartão perfurado já foi o principal meio de entrada de dados nocomputador e, às vezes, também, de saída.

O cartão perfurado tem cerca de 18,7 cm por 8,2 cm e permite que se faça perfuração em 12 alturasdiferentes de 80 colunas. Diferentes combinações destas 12 alturas de uma coluna permitem representarletras. dígitos e outros caracteres especiais. Os cartões são preparados numa máquina perfuradora de car­tões, totalmente separada do computador. Esta máquina possui um teclado semelhante ao de uma máqui­na de escrever e, à medida que vai perfurando os cartões, interpreta estas perfurações na margem superiordo cartão. com auxílio de uma impressora de agulhas.

No computador. a leitora de cartões lê uma fila de cartões, fazendo-os passar entre uma fonte de luz euma série de células fotoelétricas, cuja sensibilização é traduzida em impulsos elétricos recebidos e inter­pretados pelo computador.

Às vezes, o próprio computador controla a perfuração dos resultados em cartões (com a finalidade deserem posteriormente realimentados no computador). Há periféricos que fazem o cartão passar sucessi­vamente por uma estação de leitura e uma estação de perfuração, permitindo que sejam feitos cálculoscom os dados lidos num cartão e os resultados sejam perfurados no mesmo cartão.

AM 4 .$ .. 4.. uLW;· ,@ ·9 ,w.•' '0_ ;".;;~:~.::~:.'~:;:::::::;Z,\::·-'" ':',c

fi .La-_.. -

~" t. " 4 ~ 4, . t·.

Page 19: Harry farrer   algoritmos estruturados

Escreva os termos de Fibonacci inferiores a L.

0.3. ALGORITMO

Adota-se a seguinte definição de algoritmo:

.!/....."..-..I ,

l ~

1413

8 10 127 9 II

a) 2 4 6b) I 3 5

Algoritmo

-, Escreva os termos de Fibonacci inferiores a L.fim algoritmo,

nf. Escreva os termos de Fibonacci inferiores a LReceba o valor LProcesse os 2 primeiros ternlOSProcesse os termos restantes

.fi.m..rd

0.3.3. Refinamentos sucessivos

~ 0.3.2. I. Um alg~ritmo nào pode conter um comando como"Escreva todos os termos da següência deFIbonaCCI", Por que? ~

() 0.3.2.2. Escrever um algoritmo que. punindo de diferentes estados iniciais. produza os valores:

N:ste livro, o~ algoritmos sempre serão iniciados com a palavra A!~oritmo e tenninados com a ex­pressao fim al~ontmo.

() 0/.2.3. Escrever um segundo algoritmo que produza os mesmo, valores que o exercício de fixação0.L,2,

0.3.2. Exercícios de fixação

Na vida quotidiana, os algoritmos são encontrados freqüentemente: instruções para se utiliz.:tr uma~arelh? eletrodoméstico, uma receita para preparo de algum prato. o guia de preenchimento da declara­çao d~ Imposto de ,renda. a regra para determinação de máximos e mínimos de funções por derivadassucessivas. a maneira como as contas de água, luz e telefone são calculadas mensalmente.

Um algoritmo é considerado completo se os seus comandos forem do entendimento do seu destinatá.rio.

Num algoritmo, um comando que não for do entendimento do destinatário terá de ser desdobrado cmno\'os comandos, que constituirão um refinamento do comando inicial.

Se um algoritmo é formado não apenas por um comando, mas por vários, isto signitica que na suaexecução não se consideram apenas o estado inicial e o final de uma ação dele resultante, mas que seconsideram também estados intermediários que delimitam as açõcs decorrentes de cada comando.

Por exemplo, o algoritmo para escrever os termos de Fibonacci inferiores a L poderia ser de!idobradoem:

Neste livra. um refinamento será sempre iniciado com a palavra Jk[, seguida do comando I 8Cf refi.nado e terminará com a expressão .fi.m..rd

Gera!mente, um algoritmo se ~estjna a resolver um prob,lema: fixa um padrão de cOIllp<llrtamenlo aser segUIdo. uma nom", de execuçao a ser lTJlhada. paf'd >e atlOgir. como resultado final a sollllç- d nprohlema~. ... . .ao e UI

--- P~e-~edizer que, após, a escolha,do valor de L.taRto a Minam. 6 &IU31du como o Harryexecutaramaçôes Indicadas pelo algontmo segumte:

34211385

8

3

5

2

32

Para se ter alguns exemplos, foi pedido a três co-autores deste livro que escolhesse~l um ~alor nU'!1é­rico L e escrevessem os termos da seqüência de Fibonacci inferiores a L. A seqüênclU de FibonaCCI ~e

define como tendo os dois primeiros termos iguais a I e cada termo seguinte é igual à soma dos dOIStermos imediatamente anteriores.

A Miriam escolheu L = 50 e escreveu,

O Eduardo. que gosta de brincar eom superstições, escolheu L = 13 e escreveu:

Ação é um acontecimento que, a partir de um estado inicial. após um período de tempo finito,produz um estado final previsível e bem definido.

Algoritmo é a descrição de um conjunto de comandos que, obedecidos. resultam numa sucessãofinita de ações.

Emissor de som. E um dispositivo lJuc. sob controle do computador, permite enullr um som comduraç;j" e freqüêm:ia desejáveis, É geraltnente usado para emitir sinais programados de advenência, mas~dc;jll<:Ll!siy~prQdJl~jLrnú~c_a,_ ..._ __, _

Sintetizador de voz. Eum aparelho capaz de emitir um cena número de fonemas que. codificados ecombinados por um programa de computador. permitem-lhe produzir respostas audí~eis. .

Sensores e controladores. São dispositivos que transmitem ao computador sinaiS provementes deaparelhos de medição (temperatura, pressão, ruído. peso. v~lume. tráfego etc.)?u ~u~ rec.ebem .do com­putador sinais destinados a controlar aparelhos (ligar. deshgar. aumentar ou dmunulr a intenSidade deseu funcionamento etc,). São usados em computadores destinados a controle de processos.

0.3.1. Conceituação

Para estabelecer o conceito de algoritmo, que é da maior imponância em Ciência da Computação,será, antes fixado o conceito de ação.

Nesta seção serão abordados os conceitos associados à utilização do c0'!1P~tador. _O conjunto destes conceitos. técnicas. metodologias e ferramentas. que Viabilizam a programaçao dos

computadores. denomina-se software.

O Harry. que prefere ser diferente dos outros. escolheu L = I e nada escre~eu, _Apenas parte do que a Miriam. o Eduardo e o H~n:Y fizeram pode ~er,conslde~ado co;n0 açao. A ~s­

colha dos valores L =50. 13 e I é totalmente imprevlslvel e ponanto nao e uma ~çao. Porem~aoesc~e\er

os termos da seqUência de Fibonacci inferiores a L, cada uma,destas pessoas ~ea~lzou Uma açao: panlU deum estado inicial (o valor escolhido para L) e, após um penodo de tempo bmll.ado (alguns segundos),produziu um estado final (o que foi escrito ou não foi), previsív~1 e bem defimdo,. , .

Estas três uçõcs são distintas, foram executadas po~ pessoas dlferentes,.oc?rreram em IOstantes dl~e­

rentes, paniram de valores iniciais diferentes e prodUZiram resultados finaIS dlfere~tes, ~las, ,av,esar dIS­to, mesmo que o Harry queira ser diferente dos outros, pode-se reconhecer nas Ires a~oes ,dlstmtas ummesmo padrão de comportamento. a subordinação a uma mesma norma de execuçao, E como se astrês ações tivessem sido executadas em obediência ao comando:

.,1

"

.,.I

)

Page 20: Harry farrer   algoritmos estruturados

Um algoritmo e os seus refinamentos são formados por comandos. que determinam as açôes a seremexecutadas pelo seu destinatário e por estruturas de controle que determinam a ordem em que os co­mandos deve ser executados. se devem ser executados ou não e quando devem ser repetidos.

No refinamento acima vigora a mais simples das estruturas de controle: a estrutura seqüencial. se­gundo a qual os comandos devem ser executados um após o outro, na mesm~rdem em que aparecemescritos.

Se um comando de um refinamento for um tanto vago. ele poderá. por sua vez, ser desdobrado em }novos comandos, produzindo-se o refinamento de um refinamento. e assim sucessivamente. Portanto, o '.,comando "Processe os 2 primeiros termos" poderia ser desdobrado em:

I d Processe os 2 primeiros termosAtribua o valor I ao primeiro termo

i ele ~or menor que L~escreva-o

fim.gAtribua o valor 1ao segundo termog ele for menor que LI~ escreva-o

fim..&fim..rd

Neste refinamento, aparece uma segunda estrutura de controle: a estrutura condicional

i'O condiçãolm1illl comandos~

o comando "escreva-o" só será executado se a condição "ele for menor que L" for verdadeira.O comando "escreva-o" não será executado se a condição for falsa, isto é, se ele for maior ou igualalo

Vê-se, portanto, que um algoritmo, através de estruturas condicionais, pode provocar ou não a reali­zação de uma ação.

Uma terceira estrutura de controle, a estrutura de repetição, será necessária ao se desdobrar o co­mando "Processe os termos restantes", através do novo refinamento:

R&f.. Processe os termos restantes

n·alcule novo termo somando os 2 anteriores

i nov? t~rmo for maior ou igual a L~mterrompa

~Escreva novo termo

fim repitafuIu:rl.

Na estrutura de repetição. os comandos e as estruturas de controle abrangidos devem ser executa­dos repetidamente até que se verifique uma condição (no caso, o novo termo ser maior ou igual a L) paraque se interrompa a repetição. .

No caso do Eduardo, que fixou L = 13. a execução do refinamento acima produziria as seguintesaçôes:

16

Calcula novo termo, como sendo I + I :< 2Como 2 < 13, escreve o valor 2

Calcula novo termo, como sendo 1 + 2 = 3Como 3 < 13, escreve o valor 3

Calcula novo termo. como sendo 2 + 3 = 5Como 5 < 13. escreve o valor 5

Calcula novo termo, como sendo 3 + 5 = 8Como 8 < i3, escreve o valor 8

Calcula novo termo. como sendo 8 + 5 = 13Como 13 não é menor que 13, interrompe

A forma de descrição, usada nos algoritmos, com auxOio das estruturas de controle. além de maiselegante, é mais sintética do que a simples descrição das açõcs realizadas e é mais geral. pois abrangetambém as ações diferentes, realizadas pela Miriam e pelo Hany.

~pós ~sse~ refi.namentos su~ivos, ~ algoritmo pode se~ considerado completo, a menos que odesllnatáno nao s8Jba fazer a adlçao de dOIS termos ou não seja capaz de entender diretamente algumcomando.

Oalgoritmo estando completo, pode-se reescrevê-lo, inserindo os refinamentos nas posições dos co­mandos que foram refinados e usando estes como comentários. Assim sendo, obtém-se:

Ali0ritmo {Escrita dos termos de Fibonacci inferiores a L}Receba o valor L

(Processamento dos 2 primeiros termos}Atribua o valor 1 ao primeiro termo~ ele for menor que LI kI@Q escreva·o~Atribua o valor I ao segundo termo~ ele for menor que LI mtãQ escreva-o

.fim..g

{Processamento dos termos restantes)~

Calcule novo termo somando os 2 anteriores

i nov~ t~rmo for maior ou igual a L~ lDterrompa

.timEEscreva novo termo

fim repitafim a1i0ritmo

Reescrever um algoritmo completo. com os refinamentos sucessivos inseridos nos seus devidOS luga­res, permite ter uma visão global de como o algoritmo deve ser executado.

À medida que o algoritmo passa a ser maior e mais complexo, esta visão global toma-se mc:nos clarae, neste caso. um algoritmo apresentado com os refinamentos sucessivos separados oferece uma melhorabordagem para quem precisar entendê-lo. Então este entendimento poderá se fazer também por retina­mentos sucessivos, repetindo-se o processo usado na sua criação.

0.3.4. Exercícios de fixação

() 0.3.-1.1. Se você já tiver estudado a determinação de máximos e mínimos de uma função. pordeo vadassucessivas, então escreva um algoritmo correspondente.

17

Page 21: Harry farrer   algoritmos estruturados

(g)

(e)

19

Os computadores são máquinas destinadas a resolver problemas com grande rapidez: uma operaçãoaritm~ticapode ser efetuada num tempo da ordem de I microssegundo. isto é. I milionésimo de segundo;computadores mais potentes estão atingindo o tempo de I nanossegundo. isto é. I milési mo demicrossegundo, O aproveitamento desta grande rapidez exige que as operações sejam efelUadas automa.ticamente. sem a interferência humana. Qualquer decisão humana demanda dezenas de segundos (às vezes.horas ou dias). Pouco adiantaria a máquina fazer uma operação em 111.000.000 de segundo. se em segui­da ela tivesse de esperar dezenas de segundos (ou horas. ou dias) para efetuar a próxima opel'3fão. Emcasos como este seria preferível usar uma calculadora. em '"ez de um computador.

Por outro lado. máquinas dotadas desta rapidez e deste automatismo são muito caras. lnveslimentosnestas máquinas só se justilicam se elas puderem ser usadas para resolver problemas da mais divel'lô8natureza: se elas forem flexíveis.

A tlexibilidade exige que. para cada problema a ser levado ao computador. sejam planejadas as ope­rações correspondentes. O automatismo. por outro lado. exige que o planejamento destas opel'llÇÕCs sejafeito previamente. antes de se utilizar o computador.

Então; a utilização de um computador para resolver problemas exige. antes de mais nada. que: se de­senvol\·;t um algoritmo. isto é. que se faça a descrição de um conjunto de comandos que. obedec~dos.provocarão uma sucessão finita de açõcs que resultar.io na resolução do problema proposto. E.~e algonlmo

i) lfJ = ~I + ~I + ~I +~ ;

1j) 4> = I + ----,.1--

1+ 1-1+-­

1-+- ...

0.4. ALGORITMOS ESTRUTL'RADOS

Fig. 0.22 Relação existente na estrela do mar e nos rdmos de uma planta,

.JS -+- Ik) <l> = -..,-

89I) 4> == -

55144

m)lfJe-:89

n) a razão entre dois termos consecutivos da seqüência de Fibonacci tende muito rapidamente para olimite que é cp = 1.61 S ...

Fibonacci é sobrenome de Leonardo de Pisa. que foi o primeiro a observar esta seqüencia. em 1202.quando determinava o crescimento do número de coelhos de uma criação (!... ).

a proporção acima é conhecida como média e extrema razão ou proporção áurea e 1.618 é uma aproxima­ção do número irracional chamado número áureo e denotado por 1>.

h

(d)(c)

b

(b)

Id'.•.. "0 eorpo humano.Fig. 0.21 Razão entre me luas u

(a)

Na própria Matemática. esta relação é freqüente:

TInvente um problema

Escreva um algoritmo para sua resolução

i estiver.cansadoentão Interrompa~

fim repita .Mostre os algoritmos feitos a um colega

fim all:0ritmo.

- a __b_ é satisfeita para a == 1,6b. ou. mais precisamente. a == 1.618b;h) a relaçao h - a + b

, 3 4 I e O3 4 2 qual é o menor núme-() 0.3.4.3. Se você executar os algorit~os escritos nos exe~cí~lOs O. ., ..,.

ro de algoritmos que poderão ser ~s~ntos em c~da exer~íclO. d _ d omportamento encontrado naPara terminar a Seção 0.3. sera Visto a seguir um cunoso pa rao e c

nat~~z:~ tomarem medidas do corpo humano. encontram-se as seguintes relações: .,.

I d - h é proximadamente 1,6;a razão entre a altura total H e a a tura o coraç~o ad

t braço a é aproximadamente 1,6;. d b b dividido pelo compnmento o an e . 1 6'o compnmento o raço d _ t mbém é aproximadamente , .

~o entre o comprimento do antebraço a e o a mao m a 6~~ :;~~aenvolver a orelha num retângulo de altura h e largura f. WC e 1, .

Nos animais encontram-se as mesmas relações: .' D ore ular circunscritoI do nlar a razão entre o lado do pentágono estrelado t e o do pentaeon gna estre a .

p é aproximadamente 1,6.

T mbém nas plantas se encontram estas relações:

a . . 'd'd lo númerofl d . ssol ou no miolo da margarida. o número de espirais num senlldo dlVI I o peO na oro ~ gira. . . roxima de 1,6; ,

de espirais no sentido contrano se ap I d ma planta é aproximadamente 1.6.g) a razão entre os ângulos a e f3 formados pe os ramos e u

}

lLI vw....... L:.AC\,..UU.. li .UOUI HIII\I '" ::.cgUU:

18

)

)

)

)

)

)

)

•)

)) a)

b)

)

•~ e)

)

)

)

)

)

)

~

•>)

)

)

)

)

)

)

Page 22: Harry farrer   algoritmos estruturados

tcm de scr transmitido ao computador c armazenado na sua memória, para. cm seguida. ser posto emexecuçãt I c conduzir o computador pam ii wlução desejada. O algoritmo deve. portanto. prever antccipa­damenl<: todas as situações que possam Ol'orrer quando for posto em execução.

Se um problema for simples e de pequeno vulto, não há maiores dificuldades em se desenvolver umalgoritmo adequado para resolvê-lo no computador, nem há necessidade de aplicação de técnicas especi­ais para desenvolvê-lo, Na década de 50, quando os computadores começaram a ser fabricados em escalaindustrial, eles ainda eram máquinas bastante lentas e com pouca capacidade de memória. O porte dosproblemas que podiam ser processados nestes computadores era muito limitado. Mas, com o desenvolvi­mento da tecnologia na área eJetrónica. a rapidez, a memória e as potencialidades dos computadores cres­ceram de maneira dramática. Já se tem feito a comparação de que se a indústria automobilística tivesseevoluído de forma equivalente aos computadores. qualquer automóvel nacional custaria hoje menos deum dólar, faria um milhão de quilómetros com um litro de gasolina e poderia desenvolver a velocidadede cem milhões de quilómetros por hora.

Com esta evolução, os problemas levados aos computadores são cada vez de maior porte e maiorcomplexidade. Os algoritmos para resolvê-los ainda devem ser desenvolvidos pelo sec humano, mas podemultrapassar os limites de sua compreensão. Por esta razão, nas últimas décadas surgiram técnicas quepermitem sistematizar e ajudar o desenvolvimento de algoritmos para a resolução de grandes e comple­xos problemas nos computadores: são as técnicas de desenvolvimento estruturado de algoritmos,

Os objetivos destas técnicas são:

• facilitar o desenvolvimento dos algoritmos;• facilitar o seu entendimento pelos humanos;• antecipar a comprovação da sua correção;• facilitar a sua manutenção e a sua modificação;• permitir que o seu desenvolvimcnto possa ser empreendido simultancamente por uma equipe de

pessoas.

Para atingir estes objetivos, o desenvolvimento cstruturado preconiza que:

a) os algoritmos sejam desenvolvidos por refinamentos sucessivos partindo de uma descrição geral e,gradativa e sucessivamente, atacando as minúcias e particularidades. Este desenvolvimento tambémse denomina "construção hierárquica de algoritmos" e "desenvolvimento de cima para baixo" (eminglês. tap-do..../I);

b) os sucessivos refinamentos são módulos. que delimitam poucas funções e são o mais independentepossível, isto é. conservam poucos vínculos com outros módulos;

c) nos módulos deve ser usado um número limitado de diferentes comandos e de diferentes estruturasde controle.

Atécnica do desenvolvimento estruturado de algoritmos, por si s6. não atinge automaticamente os objeti­vos visados. Ela apenas preconiza uma maneira sistemática que ajuda a atingir estes objetivos. Énecessárioainda. por parte de quem a emprega. esforço e disciplina na busca incessante da simplicidade e da clareza.

O refinamento sucessivo dos algoritmos permite uma abordagem mais segura e objetiva do problema.A integração dos módulos é mais perfeita. porque cada módulo é atacado quando já se estudou claramen­te o ambiente em que ele deve atuar. A alteração dos módulos já desenvolvidos é teoricamente desneces­sária. Na prática, consegue-se diminuir muito estas alterações pela atenção e disciplina. Os módulos demais alto nível podem ser testados antes de se desenvolverem os de níveis mais baixos, permitindo odesenvolvimento mais seguro dos algoritmos.

A divisão em módulos funcionais permite contornar a limitação humana para compreender a comple­xidade. Cada módulo pode ser desenvolvido ou analisado de forma quase independente, dados os poucosvínculos que deve manter com os outros módulos do algoritmo. Cada módulo pode. portanto. ser desen­volvido por uma pessoa, após acertar poucos acordos com o resto da equipe,

O uso ilimitado de diferentes comandos e diferentes estruturas de controle pode restringir bastante oraciocínio. que fica obrigado a se enquadrar em poucas formas. Mas os benefícios em termos de simpli­cidade e clareza do produto final são imensos.

Clareza e simplicidade de um algoritmo são atributos inestimáveis quando se faz a sua manutenção(melhora. correção e aperfeiçoamento de algum algoritmo) e a sua modificação (para atender a novasaplicações). O desenvolvimento estruturado dos algoritmos. aliado à busca da clareza e da simplicidade,facilita a sua manutenção e a sua modificação.

20

Fig. 0.23 Diagrama de blocos.

lio:ara sed~bter umadmbellhor clareza dos algoritmos. costuma-se desenvolvê-los e ilustrá-los com o auxí-e um lagrama e ocos: algumas figuras geométricas e dize ~.-. .

:=~as operações.do cO?1putador, sendo ligados por setas, para indi~~~:~e~t~~~:~s~:~:~~:~;?1plo. o algontmo VIsto no parágrafo 0.3. para escrever os lermos de F'bo .,'. f,' . L ç.....~& •

ser Jlustrado com o diagrama de blocos da figura 0.23. Este dia ama I ~all! 10 ~nort:> a • I""'~namandos que constituem o alaoril d od _ gr _ ~mute \Isuahzar o fluxo de co-

;' mo, e m o que ~e possa ver com taclhdade como se processará a suexecução. Mas ele tem ~r:n gr~nde inconveniente: permite uma liberdade ampla demais do raciocínio ;que pode redundar na utlhzaçao de outras estrutur.lS de controle ale'm Jas . d á~~~ O·• 'precoruza as no par 6' cuO .3,

21

Page 23: Harry farrer   algoritmos estruturados

PROCESSE OS 2 PRIMEIROS TERH~S

\o/RITE (J,101 A

ilRITE (J,10) BPROCE:St:E TERHOS RESTANTES

A = 1IF IA.LT.LlB ~ IIF (S.LT.Ll

PARE

Fig. 0.25 Programa escrito em linguagem FORTRAN.

STOPEND "

10 fORMAT'

20 CON'I'I NUEC = À + BIf (C.GE.LI GO TO 30

WRITf: (3,IO) CA = BB = C

GO TO 2030 CON1'INUE

c

c

C

C ESCREVA TERHOS DE FIBONACCI INFEJ<lOHES À l._. INJ'~C?~R J...~A~!U:

C RECEUA L

linguagem de máquina. esta transformação pode ser feita facilmente pelo próprio computador. a~ra\és úe:u~ programa,ch~mado.montador ou Assembler. escrito em linguagem de máquina e geralmen te distri­~uldo pelo ~ropno fabncante do computador. Posteriormente, quase rodas as linguagens Assem bler pas-

• sa:am. tambem a ser dotadas de alguns comandos que correspondem a várias instruções em lingll agem de:maquma. -

O sucesso daynguagem Asse,mbler logo animou os primeiros pesquisadores a criar linguagens emqu~ a programa5ao era feita atraves de ~ma_notaç?o ~atemática e de algumas palavras da língua inglesa.delx~d~ ao propn,o computador a tareta (nao multo simples) de traduzir este programa p.lra a linguagemde maquma. atraves de um programa chamado compilador.

A pri'."eira destas linguagens. que teve ampla aceitação. surgiu em 1957 e é ainda hoje utilizada. Tra­ta;se da linguagem FORTRAN. nome formado com partes das palavras "Fonnula Trcl1lsbtion". A figura~._5 mostra como se programana em FORTR.-\..:"l o algontmo para se escrever os termos de Fibonaccimfenores a L. Observando que .L.T.. significa menor que l/ess lhan) e .GE. significa maior que ou igual(grearer Ihan ar equal to). o entendimento do programa não é difícil.

• Além da grande facilidade, uma imensa vantagem de se escrever os programas em linguagens de altoIlIveL como p~ssa:am a s:r c.hamadas a linguagem FORTRA1\ó e outras que se seguiram. é a sua quasetotal mdependencl~ da ma~uma a ser usada. O programador não precisa se deter em particularidades docompu~ador,que Ira usar. Um programa escrito em linguagem de alto nível, geralmente com pouquíssimasalteraçoes. e aceito por qualquer computador.

C:0m~ ~.FORTRA!'l se mostrou mais adequado à programação de natureza técnica e científica, logosurgIu a Id~la de se. cnar uma lInguagem mais \ollada para problemas de natureza comercial e adminis­trativa. ASSim, surgIu em 195? o COBOL ("Common Business Oriented Language"). A linguagem COBOL~em:llequ~ ~m programa seja escnto com uma fonna mais próxima das linguagens naturais (no caso. omglesl, faCIlItando o seu entendimento pelos humanos e permitindo uma documentação mail clm, Oseu sucesso foi tanto que até hoje. anos depois da sua criação. o COBOL ainda é a linguagem JDIÍ.. usadanos computadores. em todo o mundo. Porém, um programa escrito em COBOL tica muito mais bnlO doque se fosse usada outra linguagem. Entenda-se. t;lffibém, que a maior utilização do COBOL se eAplka nioporque ele seja uma linguagem melhor que as outras, mas sim porque os problemas de na~uCOC1\CtÇiale administrativa para os quais ela é mais adequada. são os que mais ocupam os compuladofa, Afipatl 0.26mostra como seria programado em CO BOL o algoritmo dos termos de Fibonacci inferiorca a L.

Fig. 0.24 Diagrama de Chapino

Novo termo .... Soma dos 2 anteriores

Repila

)

}

) 0.5. LINGUAGENS DE PROGRAMAÇÃO

2.° lermo .... 1

Escreva 2.° termo

Escreva 1.° termo

Escreva termos de Fibonacci inferiores a L

) Para armazenar um alaoritmo na memória de um computador e para que ele possa, em seguida. co-mandar as operações a ser~m executadas, é necessário que ele seja programado, isto é. que seja transcri­

) to para uma linguagem que o computador possa "entender", ~ireta ou indiretamen.te. • .) Os computadores só podem executar diretamente os algontmos ex~ress~~em hn~a~emde maqUl­

.. na, que é um conjunto de instruções capazes de ativar diretamente os dlSpOSlttvos eletrom~os do compu­) tador. Esta linouagem tem vários inconvenientes para os humanos. É diferente para cada ttpo de compu-

tador, pois depende de sua arquitetura. Além disto, é extremamente rudimentar e exige que, mesmo as) operações mais simples ainda sejam refinadas. para expressá-las em te':lTl0s ~e ~e.gistros, acum~ladores e

outros dipositivos da máquina. E totalmente expressa em forma numénca (bmana ou hexad:c.lmal), que) a toma pouco expressiva para os humanos. Exige um cuidado extremo para se estabelecer o poSICIOnamento

dos dados e das instruções na memória. . • . .) Apesar de tudo isto, nos primeiros computadores, a linguagem de máquma era a.uOlca em qu~ se ~~dla

)fazer a programação. Mas logo, surgiu a idéia de se escreverem programas em LI~guagem slmb~hca.mais conhecida por Linguagem Assembler ou Linguagem montadora, em qu~ a I.mg~agem de maquI­

) na é expressa não apenas por números, mas também por le~~s ~ símb.olos ~als SlgOlfic~tIVO.S para oshumanos. O posicionamento dos dados e instruções na memona e também f:lto .de forma Simbólica. Um

) programa em linguagem Assembler, para controlar o computador. deve pnmelro ser transformado emlinguagem de máquina. Como cada comando da linguagem Assembler corresponde a um comando em

1.° lermo_1

J 22

Receba L

• com transferências livres de um comando para qualquer outro, pela simples indicação de uma seta. Isto, pode ocasionar algoritmos extremamente complicados e de difícil compreensão, de perigosa manuten-

ção e modificação. .Este inconveniente, por si só, desaconselha a utilização dos diagramas de blocos. Usa-se tambem,

visualizar os algoritmos através do diagrama de Chapin (ou Nassi-Sneider), que só permite represent~r asestruturas de controle preconizadas, evitando as. livres transferências. O mesmo exemplo de algontmofoi representado na figura 0.24 através do diagrama de Chapino

Neste livro, os algoritmos dados como exemplos são geralmente simples. Apesar disto, todos eles sãodesenvolvidos de forma estruturada, como se eles fossem mais complexos do que realmente são. Apósalgum treino e experiência. a técnica do desenvolvimento estruturado do algoritmo. nos casos mais sim­ples, pode ser usada mentalmente.

))

))

Page 24: Harry farrer   algoritmos estruturados

Fig. 0.26 Programa em linguagem COBOL.

)

•@

e••••

oO()25

Fig. 0.28 Programa em linguagem BASIC.

Fig. 0.27 Programa em linguagem PUI.

fI DONACe I: PROCElillRE OPT lONS IMA 1NI ./" r..sC:REVE TERMOS DE fwélNACCI INF"ERlORI::S A !. ... /

DECLARE 1I.,A.B,CI nXI::I) BINARY 1511,GF:T LI ST L; /" 1(f.CEDE L ... iA ; 1; /" rROC\:;sSE OS Z f'R I 11f:1 RO~ 'fEJ(fI(j~; ... /IF A < L 1'IIEN PU1' SKIP LlST IA I;B '" I;If B < L THEN PU1' SKIP LI!';T IDI;

REf' I TA ; /... PIWCESSE: OS TEkMOS f<ES1' ANH:S "/C ". A • D·IF C >" L'TIIEN OU TO FINAL;PU,. SKII' LIST IC I·A = R; •B " C;CO TO I<HITA;

F ItlAL: /* PARE ,/END FIBONACCI;

10REI1 TERMOS DE F1BONACCI MENORES QUE L20 REM RECEBA L:i0 INPUT L40 REM PROCESSE DoS 2 PklllUROS 1~R110S

50 U:T A = 160 Ir A < L THEN PRINT A70 LET n " 180 lF B < L THEN PRINT B90 REM PkOCESSE TE~MO~i RESTANTE':'

100 LET C = A + B110 IF C >= L THEN 160120 PkINT C'130 LlT A " B140 LET EJ = C150 GO TO 100160 ENU

padronizada. Fal~a.lhe uma ~aior coerência e un~formidade. além de se ressentir de construções maisadequadas que so foram efellvamenle compreendidas após o aparecimento das técnicas de desenvolvi­m~nto estruturado de algori,tmos, que resultam em programas estruturados. Algumas ?,=ssoas, porém.atnbuem a estas falh~ da ltngu~g~m BASIC a causa da sua aceita.;ão. pois esta linguagem pode assimacomp~nhar a evoluçao d?s mais mesperados recursos que vão surgindo nos computadores, Por exem­plo. ~oJe, o BASIC pOSSUI um comando para emitir no computador um som com a dura.;io e freqüênciadesejada (comando BEEP), para fazer desenhos no vídeo (PLOT. DRAWN etc.), para usar cores no \'ídeoetc. A figura 0.28 dá a versão BASIC do mesmo algoritmo.

. P~a evitar muita~ limitações do FORTRAN e para permitir uma melhor expressão dos algori[IIlos.fOI cnada em 1960 a Imguagem ALGOL ("Algorithmic Language"). A sua lógica perfeita te:n sido o motivoda sua utilização, m~ito difundida sobretudo na Europa. Infelizmente. a linguagem ALGOL é muito amplae o programa compilador correspondente só está desenvolvido para poucos computadores. Mas há com­~utadores cuja arqu~tetura foi criada sobre esta linguagem. como o Burroughs 6700, e!:l. que a própriahnguagem de máquma é uma variante do ALGOL.

.e..

24

lDENTlFICA'l'lON DIVlSION.('ROGRAM /1). FIBONACCI.HF.I1AI<K~. DE1"F.1<111 NA O:: TERI10!j DA SEQUE;NC I A DE F11lONACCI I1F.NORES

QlJE 1111 VALOR L 1'1<E:l>E1'EnI11 NADO:

ENVIRONMENT DIV1510N.INPUT-OIITI'UT SECTION.FILE-CONTI<OI..

SELECT ENTRADA ASoSIGN TO RLADER.SELECT 5A IflA ASSl GN "0 PIU NTER.

DATA DIVISION.FILE SI::C1'WN.FLJ I::N1'RADA, RECORDING MOUE: IS F.

LABEL RECORDS ARE OMITTED.DATA RECORD IS CARTAO.

01 CARTAO.02 L PIC 91101.

fV SAlVA. RECORVING 110DE IS F.LABEL RECORUS ARE OMI1'TED.DA1'A RECORD 15 TEI<I1Ü.

01 TERI10 PICTURE XI13JI.WOI<K 1NO STORAOE SECT ION .77 A PIC·91101.77[1 PIC9ll01.7'1 C PIC cHI0/,

PROCEDURE UIVISION.OI'EN INPIJT ENTRADA. OUTPUT 5/111)/1.READ ENTkAlJA.COI1PUTE A = I.IF /I IS LESS THAN L. WRI1'E SAlDA FROI1 A,COI1PUTE [j = 1.IF [; IS I.ESS TIIAN L. WRl1'!:: SAIUA FI<OI1 ll.

Tf:RI10S- RF.::TANTES:COMPUTE C = /I , U.Ir c I:; NOT LF.SS TIIAN L, (lO TO FINAL.WRnE SAIUA Ff<OI1 C.COMPUTE A " n.COI1PUTE B = C.00 TO TERMOS-RESTANTES.

FINAL:CLOSE ENTRADA, SAlDA.STOP RUN.

Com o FORTRAN na área técnica e científica e o COBOL na área comercial e administrativa, surgiupor volta de 1963 a idéia de se cirar uma linguagem única que fosse igualmente apropriada para todas asáreas de aplicação _ apareceu assim a linguagem PUI ("Program~ngLanguage One"). O entusias~oprovocado pelas linguagens de alto nível precedentes animou os cnad?res da PUI a elabo~ uma Im­gua2em extremamente vasta, com numerosíssimos recursos. Embora amda bastante usada, a ltnguagempui. exige um compilador muito complexo e o seu aprendizado completo é longo e trabalhoso. A figura0.27 mostra o mesmo algoritmo programado em PUI. . .. . ,

Com objetivo oposto ao da PUlo foi criada por volta de 19~ a hnguagem BAS.IC ( Begmee: s ~II­Purpose Symbolic Instruction Code") que inicialmente prete?~la ser apenas uma 1inguage~ m~ls. sim­ples que o FORTRAN. para permitir aos não especialistas a ul1hza~ãO dos compu~adores. A slmphcldad.edo BASIC foi possivelmente o principal motivo de s~a am~la aceitação. anos mais larde, com ~ apar~cl­mento dos microcomputadores. A sua evolução, porem. fOI um tanto desordenada. não tendo aInda Sido

_4-...

Page 25: Harry farrer   algoritmos estruturados

A I1gum O.2lJ mostra o algoritmo dos termos de Fibonacci inferiores a L e,scrito em ALGO.L. .A p<lrtir de 1968, N. Wirth, em Zurique, na Suíça, desenvolveu uma n?va I~ng~agemque fOi denomI­

nada PASCAL, em homcnagcm ao matcmático francês q.ue, em 1642, fOi o pnmel~o a planeJar e.a c?ns­truir uma máquina de calcular. Esta linguagcm, sob m~ltos .aspe.ct.os seme~hante a ALGOL. fOi cnad.apara facilitar °ensino da Informática, mas a sua proposital slmpll~ld~de, aliada a uma ~~equadao"pe.rfel­ção lógica, logo a tomaram bastantc difundida, es.tando a sua preferencla em franca ascensao. O alo0ntmoda seqüência de Fibonacci está programado na linguagem PASC~L na figura 0.30.

Além destas, diversas outras linguagens de alto nível foram cnadas e podem ser encontradas e~ uso,como: RPG ("Report Program Generator"). para problemas comerciais; FORTH. para programaçao de

jogos em miClos: a linguagem C, para programa~'J() de sist<:mas oper;lcionais: .\I'L ("A I.rogrammingLanguage"), para programação interalÍva; ADI\ (do nome da Ada LoveJace, que se tornll li a primeiraprogramad' 'I.. {4mstófia~fuzeJ"llrogramas l}Ühtlt máquina deBabbaget, para aufuação g~rat;LOOü(palavra grega "file significa conhecimento), para estudo de l'roblema~ eiheméticos etc.

A escolha da linguagem de programação para se usar um computador depende antes de Ludo da exis­tência de um programa compilador (que traduza o algoritmo escrito na linguagem escolhida para a lin­guagem de máquina) ou de um programa interpretador (que interprete cada comando dl> programa eexecute uma série de instruções que a ele correspondem). Existindo compiladores ou interpretadores paradiversas linguagens, a escolha pode ser pela linguagem preferida ou mais familiar para o programador,por aquela melhor implementada no computador, por aquela mais adequada para o tipo de aplicação quese deseja fazer etc.

Mas, para se resolver um problema num computador, mais importante que a escolha da li nguagcm deprogramação é o desenvolvimento de um algoritmo adequado. Este algoritmo deve ser desenvolvidoobjetivando sobretudo a clareza. permitindo que os erros cometidos sejam detectados o quanto ames,evitando excessivas revisões e visando facilitar futuras modificações. Para se conseguir isto de uma for­ma natural e eficiente. devem-se adotar técnicas de desenvolvimento estruturado dos algoritmos. DepI)Ísdisto, a programação consistirá quase que só numa transcriçào do algoritmo obtido.

I *PROCESSE 1'f.RMOS r<ESTANTES:t)

(_RECEBA O VALOR DE L*I<*PROCESSE OS 2 PRIMEIROS TERMOS*)

~ RtCEtlA l

~ TERMINE:

~ PROCESSE OS 2 PRIMEIROS 1'ERKOS

(SAIDA.I, A).

(SAI DA ,I , B) ;~ PROCESSE OS TERMOS HES1'ANTES

PROGRAK FIBONACCI (INPU,., OUTPUT J;t _ CALCULA TERMOS DE fiBONACCI .MENORES QUE: 1.*)

VAR l,A,B,C: INTEGER;BEGIN

READ (U;A : '" 1;Ir A ( L

'rUEN WRI TELN (A) ;

B : = I;Ir fi ( L

THEN WRI TELN (8) ;C : = A + B;WHllE C ( L DO

BEGINWRl TELN (C);A :" B;fi : = C;C := A + B

END;END.

...Fig. 0.29 Programa em linguagem ALGOL.

Fig. 0.30 Programa ~m linguag~1\l PASCAL.

flEGIN ~ TERMOS UE FHJONACCI MENORES OUE: LfILE CARD lf(INlJ.:REAliER), SAIDA(KIND=PRIN'rEI~ I;rtrrEG~L.,A~n,Ci-·

kEAD (CARD.I. L);

A :::: 1;If A < L THEN WHITEB :::: 1;Ir D < L THEH WRITE

C :" A + ll;WIIILE C < L DO

J:IEGINWRITElSAIDA,I,C);A :::: D;II := C.C :::: A + JjENU;

r::ND.

t

)

)

)

)

)

)

)

)

)

)

j

)

)

J 26

Page 26: Harry farrer   algoritmos estruturados

•Ri

Capítulo 1

Itens Fundamentais

Uma vez conhecida a definição de algoritmo, a partir deste capítulo será introduzido um conjuntoparticular de regras e convenções para o seu desenvolvimento. ;

As normas apresentadas neste livro não são únicas, nem tampouco universais, mas foram estabele­cidas a partir da experiência adquirida pelos autores no ensino de Programação de Computadores.

O leitor deve dedicar atenção especial a este capítulo, pois ele contém os fundamentos necessáriospara a compreensão dos demais.

1.1. CONSTANTES

Uma constante é um determinado valor fixo que não se moditica ao longo do tempo. durante a exe­cução de um programa.

Uma constante pode ser um número (como se conhece na ~ratemática), um valor lógico ou umaseqüência de caracteres quaisquer com algum significado para o problema em estudo. Conforme o seutipo, a constante é classificada como sendo numérica. lógica ou Uteral.

1.1.1. Constante numérica

A representação de uma constante numérica nos algoritmos é feita no sistema decimal. podendo serum número com ou sem parte fracionária.

o Exemplo 1.1

a) 25;b) 3,14.

Na Matemática é comum a existência de constames com uma parte ellponencial. isto é, um falor 10elevado a um expoente inteiro. Neste caso. é usada a notação já conhecida.

o Exemplo 1.2

7.8 x I(}'

A constante numérica pode ser positiva ou negativa, de acordo com o sinal que prec:ede 01 al•••mos formadores do número. Caso não exista um sinal. a constante é considerada positivL AJ6m cIiteo.também o expoente da parte exponencial possui um sinal indicando deslocamento da vfrJuIa pua.clin:i·ta ou para a esquerda, conforme o sinal seja positivo ou negativo. respectivamente.

..~

()Gl

••••C)

Page 27: Harry farrer   algoritmos estruturados

) 30

1.2. VARIÁVEIS

b) Identificadores não permitidos5B X - YEm) )\;OTA [I]A:B B * D

é uma palavra-chave do algoritmo;sào os nomes escolhidos para as variáveis. que devemestar separados por ,·írgula;é uma das três palavras-chaves. numérico. lógico ouliteral, que indicam o tipo associado às variáveis_

nome-do-tipo

declarelista-de-identiticadores

lJm-~l'iGaOOf@-femütd& pai' 1lf1H)II-m~earaeter~.sendo-que(tprimcirocaraClere deve, ()bri~

. • inles,lelfllS ou dígitos, não selldo permitido ()o uso de srm:---bolos especiais.

31

1.2.1. Formação dos identificadores

É recomendável.que os nomes das variáveis sejam os mais significativos possíveis, isto é, que relli­tam, da melhor maneIra, a natureza dos valores que nelas estão sendo armazenados. Isto aju<la muito noentendimento do algoritmo.

A título de exemplo: se a variável vai armazenar o salário de um empregado, por que nã~ escolher oidentificador SALARIO para representá-Ia?

declare lista-de-idenlificadores nome-do-tipo

L Exemplo 1.6

aJ declare KOTA,CÓDIGO.XS numérico:bl declare TESTE,SIl\Ilógico;C1 declare )\;OME, El\Dl,END::!.FIF2literal.

onde:

Neste exemplo, os identificadores NOTA.CÓDIGO e X5 são declarados variáveis n~méricas e,pC'nanto. simbolizam posições na memória do computador capazes de ar,nazenar apenas valores nu­méricos. Qualquer tentativa de atribuição de valores de outro tipo nestas variáveis é considerada comoerro.

Tendo em vista facilitar a compreensão do algoritmo. os identificadores são es.:ritos sempre comletras maiúsculas. enquanto que as palavras-chaves sào escritas com minúsculas e grifadas. Corno se verámais adiante existem muitas outras palavras-chaves que aparecem no algorimlO. prevalecendo para todaselas a mesma regra de legibilidade.

Denomina-se palavra-chaw aquela qu~ tem um significado próprio. independenle do algoritmo emque esteja inserida. Em vista disto. as palavras-chaves não podem ser usadJs como identificadores.

o Exemplo 1.5

a) Identificadores permitidosA X5NOTA A32BMATRÍCULA FIG3H5

1.2.2. Declaração d~ variáveis

As variáveis só podem armazenar valores de um mesmo tipo, de maneira que também são c1assili­cadas como sendo numéricas, lógicas e literais.

Como saber, então, qual o tipo da variável, ou seja. que conjunto de valores ela pode armazenar'?Para indicar o tipo de uma ou mais variáveis é usada a declaração de variá"eis. Alé rn disso. no

momento em que se declara uma variável, é feita a associação do nome escolhido, ou idemificador, coma respectiva posição de memória que o mesmo passa a simbolizar.

Uma vez declarada a variável. qualquer referência que se faça ao seu identiticador implica a refe­rência ao conteúdo do local da memória representado pelo mesmo.

Toda declaração de variáveis tem a seguinte forma:

j) lO';I) -10";m) -10-9

d) "X 1Y2W3";e) "*A!B'!·";f) "23/W/SS".

g) -2,5 X 101;

h) 2,5 X lO-I;i) -0,91 X W";

d) 0,342;e) -2.726;f) 9,7 X lO";

Note que um numeral entre aspas é considerado como uma seqüência de dígitos (literalJ. e não como

uma conslante numérica. .. - . dTambém não se deve confundir uma constante lógica (por exemplo. falso) com uma sequencla e

caracteres (literal), que apareça entre aspas (por exemplo "FALSO").

Sabe-se da Matemática que uma variável é a representação simbólica dos elementos de um ceno

conjunto. d d . , I deNos algoritmos, destinados a resolver um problema no computa or, a ca a vanave co~espon

. _- d ' 'a cUJ'o conteu'do pode variar ao longo do tempo durante a exe.:uçao de umuma poslçao e memon ,programa. Embora uma variável possa assumir diferentes valores. ela só pode armazenar um valor a

cada instante. . lo .Toda variável é identificada por um nome ou identificador. ASSII~, por. exemplo. num a "onllllO

para cálculo das raízes de uma equação de 2.° grau (ax' + bx + ~ =O), os Idenl1!icadores A. B e C pod~mrepresentar as posições de memória que amlazenam os coefiCientes da equaçao. fazendo. neste caso. o

papel das variáveis na Matemática.

1.1.4. Exercício de fixação

4) Identiticar o tipo de cada uma das conslantes abaixo:

a) 21;b) "BOLA";c) "VERDADEIRO";d) 0.21 X 10:;e) falso.

o Exemplo 1.4

a) "JOSÉ DA SILVA";b) "MENSAGEM";c) "12345";

1.1.3. Constante literal

Uma constante deste tipo pode ser qualquer seqüência de caracteres (letras. dígitos ou símbolos es-

peciais) que forme um literal com algum significado para o problema em estudo. _.Toda constante literal que aparece no algoritmo será colocada(entre aspas para que nao seja confun-

dida com outro item qualquer.

A seguir. são aprcsentados alguns eXl:lIlplos de constantes numéricas.

É um valor lógico, isto é, que só pode ser falso ou verdadeiro, usado em proposições lógicas, con-

forme será visto mais adiante. .Só existem duas constantes deste tipo. sendo representadas pelas palavras f;iliQ e verdadeiro.

1.1.2. Constante lógica

a) 15;b) +15;c) -15;

)

)

)

)

)

)

)

)

)

)

)

)

)

)

)

•,

Page 28: Harry farrer   algoritmos estruturados

1.3. COMENTÁRIOS

1.4. EXPRESSÕES ARITMÉTICAS

oOO

••••OOO()

33

10l!3rilmo na base 10 de EAlogaritmo neperiano de EAo número e (base dos logaritmos neperianos) ele' ado a EA,'a1or absoluto de EAa parte inteira de um núm~ro fracionáriotr:lnsfonna, por arredondamento, um número fradonário em inteirofornecer o valor -I. + I ou zero conforme o val,'r de EA ~eja negati"".

positivo ou igual a zeroquociente inteiro da dhüão de EAx por EAy~sto da divisão de EAx por EAy

Prioridade Operação

\.' potenciação. radiciação2,' multiplicação, divisão3,' adição. sublração

LOG(EAlLN (EA)EXP(EA\ABS(EAITRUNCA (EA)ARREDO:'olDA (EA)SL"IAL(EA)

QUOCIE:>.TE (EAx. EAy)RESTO (EAx, EAy\

Tabela 1.2 Funções de EA, EA..'t. EAy - expressões aritméticas

Além das operações básicas, anteriormente citadas, podem-se usar nas expressões arilm ~icas algu­mas funções muito comuns na Matemática.

Na tabela 1.2. encontram-se algumas das principais funções existentes e o resultado fOí:lecido JlC'rcada uma delas. Também é permitido o uso de todas as funções trigonométricas já conhecidJ.> da Mate·mática.

Tabela 1.1 Prioridade das operações

Nome Resultado

1.4.1. Funções

Por questão de uniformidade, adota-se um único símbolo para cada um dos op.:radores. ,1,. lnl sendo,não é pernritido o uso do símbolo'+' e do 'ponto' para indicar a divisão e a multiplicação, respe ivameme,

Para se obter uma seqüência de cálculo diferente, vários níveis de parênteses podem ser -'iados paraquebrar as prioridades definidas. Não é permitido o uso de colchetes e chaves, uma vez que, ',es símbo­los são utilizados nos algoritmos para outras finalidades.

o Exemplo 1.9

a) ~P x (P - A) x (P - B) x (P - C):b) A - B x (C + D/(E - I) - F) + G;

A notação utiliz.ada para expressões aritméticas nos algoritmos é, basicamente, a mesma da Mate­mática, a menos da,,, seguintes restrições:

a) não é permitido omitir o operador de multiplicação, o que é comum nas expressões matemáticas. Istoevita confusão quanto aos nomes de variáveis, pois numa expressão da forma AB + C, como saber seAB é o nome de uma variável ou a multiplicação entre os conteúdos de duas variáveis, cujos nomessão A e B? Pelo mesmo motivo. o operador da multiplicação deve sempre ser escrito com letra minús­cula (x);

b) nas expressões aritméticas, as operações guardam entre si uma relação de prioridade, tal como naMatemática (tabela 1.1).

g) .,fFl + G2 - H;

h) A X B + C:i) TOTIM + K'.

() B248() AIB2C3() KM/H() SALA215() M{A}

d) TOTAUN;

e) .JP;f) SOMN;

{nome completo do aluno}{endereço do aluno}{conceito final}

{número de matrícula do aluno}{total de pontos obtidos no semestre letivo}{código do curso}

32

o Exemplo 1.8

a) X + Y:

b) X - Y;c) 2 X NOTA;

o Exemplo 1.7

uedare MAT,NOTA,COOnumérico

declare NOME,END,Clliw!l

Importante. Todo algoritmO deve conter comentários, a fim de que as pessoas possam entendê-los

mais facilmente.

Denomina-se expressão aritmética aquela cujos operadores são aritméticos e cujos operandos são

constantes elou variáveis do tipo numérico, .O conjunto de operações básicas adotado é o que se conhece da Matemática, a saber:

adição subtraçãomultiplicação divisãopotenctaçao radiciação

A seguir, são apresentadas algumas expressões aritméticas, onde aparecem as operações menciona­

das acima,

A esta altura o leitor já percebeu a preocupação existente com a c1are~ do algoritmo, ou seja, ograu de facilidade que as pessoas terão em compreender o que nele está descnto. ., El é

Um instrumento de grande valia usado para esta finalidade denomina-se comentá~o. e um tex-to ou simplesmente uma frase, que aparece sempre delimitado por chaves ({comentáMo}), •.

, Os comentários podem ser colocados em qualquer ponto do algoritmo on~e se fa~am necess~~s.No exemplo a seguir é mostrado um conjunto de declar.açÕC7s onde foram IOtroduZldos comentanos

com o intuito de explicar o significado de cada uma das variáveis.

() 1.2.3.2. Supondo·se que as variáveis NOM,PROF,ID e SALÁRIO serão utilizadas par~ :mnaz::~~nome, profissão. idade e salário de uma pessoa, escrever o conjunto de declarações necessanas paressas variáveis e associar às mesmas os respectivos tipos básicos,

1.2.3. Exercícios de fixação

() J.2.3.1. Assinalar com um X os identificadores válidos:

VALOR () SALÁRIO-LfQUIDOX2 ( ) NOTA*OO*ALUNO3 X 4 () MARIAXYZ () NOMEDAEMPRESA"NOTA" () AH!

1ft? AI·· .. ;, &3

Page 29: Harry farrer   algoritmos estruturados

35

O resultado obtido de uma relação é sempre um \'alor lógico.

< menor que=:: maior ou igual aS menor ou igual a

c) B~ - 4 x A X C < O:dI X = 1.

= igual a*' diferente de> maior que

É comum nos algoritmos surgirem situações em que a execução de uma ação. ou seqüência desubações, está sujeita a uma certa condição. Esta condição é representada no texto do algoritmo por má ode uma expressão lógica.

D.:nomina-se expressão lógica a expressão cujos operadores são lógico> e cujos operandos são rela­ções, constantes e/ou variáveis do tipo lógico.

o Exemplo 1.12

Analisando a relação numérica X + Y = Z. o resultado será verdadeiro ou falso confonn.: o \'alor dó!ex.pressão aritmética X + Y seja igualou diferente do conteúdo da variá\.:l Z, respe.:tivameme.

1.5. EXPRESSÕES LÓGICAS

o Exemplo 1.14

Dadas as variáveis numéricas X. Y. Z e as \ariáveis Iilerais NOME e COR. observar \'S resultados obti­dos para as rdações a partir dos valores atribuídos a estas variáv.:is.

o Exemplo 1.13

Eis algumas relações

a) A*' B:b) NOME ="JOÃO":

1.5.1. Relações

Uma expressão relacional, ou simplesmentc relação, é uma comparação realizada entr.: doi, valoresCie mesmo tipo básico. Estes valores são representados na relação através de constantes. variii\ eis I> U

ex.pressões aritméticas. estas últimas para o caso de valores numéricos.Os operadores relacionais, que indicam a comparação a ser realizada entre os termos da relação. sã. o

conhecidos da Matemática, a saber:

1.4.2. Exercício de fixação

a) 100 x QUOCIENTE (Q,P) + R

Q; b) P x RESTO (R.S) - "2

c) SiNAL (S - R) +'EXP ( Q' - f X P - 3)d) .JR + p: + ARREDONDA (S)e) RESTO (S, P + I) - Q x R

O I + \lpl + 2 x R - TRUNCA (S - I)g) I + QUOCIENTE (R + S, Q') x SINAL (2 x P x Q - R)h) P+ ARREDONDA (2,9 + TRUNCA 10,3 + S) x 2)

) A função atua sobre um argumcnto numérico, que é o resultado obtido após a avaliação da expres.

,;lo aritmética cntre parênl~ses. . _+.As patrvrasque1k.rtgmtmas·~ sã&~fitas.wm ktraJ> malusculas

...J txemplo 1.10

" X + SEN (A + B +C);"'QUOCIENTE (NOTA,2) x 100 + T;,) ·x + LN(Y) - ABS (A - B);.. ;W - G x F X SINAL (C + D).

Exemplo 1.11r :1do A,B,X.Y variáveis do tipo numérico, quais os resultados fornecidos por cada uma das seguintes'.u~ções, onde A =; 10, B = 3, X = 2,5 e Y = 1,2.

(,QUOCIENTE (A,B) e RESTO (A,B),10 Li'{) I 3

;t.l I I :~UOCIENTE (A,B)\. i • RESTO (A,B)

1 QUOCIENTE (X,2) E RESTO (X,2)2.5 12.0.5 I,I I ': QUOCIENTE (X,2)

W . -RESTO (X,2)À SINAL (X + Y - A), SINAL (A - B' + Y) e SINAL (A - 4 X X) _

• SINAL (X + Y - A) = SINAL (2,5 + 1,2 - 10) = SINAL (-6,3) - -I\ SINAL (A - B' + Y) = SINAL (10 - 9 + 1,2) = SINAL (2,2) = I· SINAL (A - 4 X X) = SINAL (10 - 4 X 2,5) = SINAL (O) = OI ARREDONDA (A - X), ARREDONDA (B + Y) e ARREDONDA (Y - X)

ARREDONDA (A - X) = ARREDONDA (lO - 2,5) =j ARREDONDA (7,5) = 8

•. ARREDONDA (B + Y) = ARREDONDA (3 + 1,2) =l ARREDONDA (4,2) = 4

ARREDONDA (Y - X) = ARREDONDA (1,2 - 2,5) =,I ARREDONDA (-1,3) = -I) TRUNCA (B' + X), TRUNCA (N3 + I) e TRUNCA (X - 3,2)

TRUNCA (B' + X) = TRUNCA (9 + 2,5) = TRUNCA (11,5) = II\ TRUNCA (N3 + I) = TRUNCA (3,333 + I) =TRUNCA (4,333) = 4

j TRUNCA (X - 3,2) = TRUNCA (2,5 - 3,2) = TRUNCA (-0,7) = O) ABS (A - B}) e ABS (A - B). ABS (A - B}) = ABS (10 - 27) = ABS (-17) = 17

. ) ABS (A - B) = ABS (lO - 3) = ABS (7) = 7

~ EXP (Y X (B + 2) - 6) e EXP ( .JA + 2 x B - B)EXP(Y X (B + 2) - 6) = EXP(1,2 X (3 + 2) - 6) = EXP(O) = e

O = I

) EXP (.J A + 2 X B - BI = EXP (.i1O + 2 x 3 - 3) = EXP (I) =

e l =2,72.h QUOCIENTE (B + Y, X + 1) e RESTO (B + Y, X + 1)

) D + Y = 3 + 1,2 = 4.2· X + I = 2,5 + 1 = 3,5

Logo.4,2 1Jd0,7 I

I I .QUOCIENTE (8 + Y. X + 1)L---------·RESTO (8 + Y. X + I)

Page 30: Harry farrer   algoritmos estruturados

")

C)''''..'\j

o~

••••C)

UQ

<;)

o".\I

()

o""\.

..•..

,- eo••

i p q PVq

1

V V VV F V

IF V VF F F

p q pÂq

V V VV F FF V FF F F

37

Dada uma proposição p qualquer. uma outra .esc~vendo-se "É falso que" antes de ou s proP'?slçã~, chamada negação de p. pode ser form ddeSIgna-se a nel!ação de p por' p. e posslvel. msenndo a palavra "nj,," em p SI'mb I' a a_ . . o Icamente,

5J lê-se não p

o Exemplo 1.17

Tendo em vista as propo . -SIÇoeS p e r anteriores. tem-se:

a) ,p significa l OK, que é falso'b) - r significa l TESTE. que é v~rdadeiro.

onde:V: verdadeiraF: falsa

Duas proposições quaisquer podem ser combi .formar uma nova proposição que é chamada d" na.,das pelo conectivo ou (COm sentido de e/ouduas proposições p eq é designada por: ISJunçao das duas proposições originais. A disjun:ã~a~:

.. IpVq I lê-se p ou q

A diSjunção de duas proposições é verdad .erra se e somente se. pelo men0S. uma delas for verdadeira

O Exemplo 1.16 .

:;r:'~s~uatro proposições do:xem~l~ anterior qual será o valor lógico das disjunções:

b) p./r' ) q·,s.• d) q' :r.

Ora,

a) p /s é verdadeira'b) Pir é verdadeira: c) qVs ~ verdadeira;• d) qvr e falsa.

Considerando ~ue na disjunção pode-se considerar . ' .•nos. uma subproposlção verdadeira. tem-se: \erdaderra a proposlçao que contiver, pelo me-

Tabela 14

Ora. considerando que a coniunção e .resultad

. rd' ' xlge que as duas propo . õe .O seja ve adelro. tem-se: SIÇ Ssejam verdadeiras para que o seu

a) p/\s significa OK e B * I e portanto é .b) pAr significa OK e TESTE • • uma proposição verdadeira'c) qAs significa A = Oe B * ~,=~to. é uma proposição falsa. já q~e TESTE é fal .d) qAr significa A =Oe TESTE e epo~~sméo modo é u~a proposição falsa. já que ::'* O·

, o. uma propoSIção falsa •

Se p é verdadeira e q é verdadeira então Aq .meio conveniente de estabelecer esta c~nclusã~ é pe~~~:~~deira. de outro modo, pl\q será falsa. Um

Tabela 1.3

o Exemplo 1.ISQual será o valor lógico (falso, verdadeiro) das conjunçõeS:

a) p/\s; c) qAs;b) p/\r; d) q/\r.

A Álgebra das Proposições define tres conectivos usados na formação de novas proposições a partirde outras já conhecidas. Estcs conectivos silo 011 operadores nas expressõcs lógicas. a saber:

e plll'all conjunçãoou - para a disjunçãonlo - para a negação

Neste contexto considera-se umll propoRiçilO como sendo uma variável lógica. uma relação ou uma ex-

pressão lógica composta.Duas proposiÇÕC5 podem ser combil\lldas pelo conectivo e para formar uma proposição chamada

conjunção das proposições originais. A conjunçilo das proposições p e q representa-se por:

[p~ lê-se p e qA conjunção de duas proposições ~ verdadeira se e somente se ambas as proposições são verdadeiras.

Sejam as seguintes proposições:p: OK. onde OK é uma variável lógica cujo conteúdo é verdadeiro;

q: A == O. onde o valor de A ~ 3;r: TESTE. onde TESTE ~ uma variável lógica cujo conteúdo é falso;

s: B * I, onde o conteódo de B é 2.

1.5.3. Operadores lógicos

,-

VARIÁVEISRELAÇÕES

NOME PROFlSSÁO

* ==

A B NOME PROFISSÃO A+I2:.JB "ANA" "MÉDICO"

3 16 "MIRIAM" "ADVOGADO"

5 64 "PEDRO" "MÉDICO"

2.5 9 "ANA" "PROFESSOR"

f) Dadas as variáveis numéricas A e B. as variáveis literais NOME e PROFlSSÁO. completar o quadroa seguir. preenchendo os espaços em branco com os resultados lógicos (falso ou verdadeiro) obtidos como

resul tados das relações. tendo em vista os valores atribuídos a estas variáveis:

1.5.2. Exercício de fixação

VARIÁVEISRELAÇÕES

COR == NOME *X Y Z COR NOME X1+Y>Z' "AZUL" "JOSÉ"

I 2 5 "AZUL" "PAULO" falso verdadeiro verdadeiro

4 3 1 "VERDE" "JOSÉ" verdadeiro falso falso

I I 2 "BRANCO" "PEDRO" falso falso verdadeiro

I 2 I "AZUL" "JOSÉ" verdadeiro verdadeiro falso

i" ,§., .. ,. $ ao

Page 31: Harry farrer   algoritmos estruturados

, - " "e é falsa, cntão l p é wrúaúeira,Logo, poue-se concluir que se p é verdadeira, entao l P c falsa, s P

t Pela tabela,

39

1.6. EXPRESSÕES LITERAIS

l'rn.,~ {)peratIt>f

L' aritmélico2,' relacional3,' não4,' c5,' ou

I al>ela J.6 Prioridadedas operações

a) A + I ;::: "\B ill! NO:-"IE '* "A~A"

b) A + I ;::: '\B ~ PROFISSÃO = "MÉDICO"

c) NOME '* "ANA" ill! PROFISSÃO ="MÉDICO" I; A + I ~ "Bd) PROFISSÃO = "MÉDICO" ou TESTE

e) não TESTE I; (A + I ;::: .fB ill! MQ PROFISSÃO = "MÉDICO")

l) MQ (A + I ;::: .fB ~ TESTE)

o Exemplo 1.20

a) A = I ~ (B + C '* Oou K ~ 2);b) não (TOTAL;::: 21; A '* B) ill! TESTE.

() 1.5.5.1. Considerando as variáveis e valores do exercício de fixação 1.5,2 e mais a variá.. ellógica TESTE.comendo o valor lógico falso, avaliar as ~xpressõesa seguir, para cada uma das três combi~ações ue \aloresapresentadas:

1.5.5. Exercícios de fixação

Uma expressão literal é aquela formada por operadores literais e operandos que sà,' ~onstante' e/ouvariáveis do tipo literal.

Embora estas expressões tenham grande importância no estudo de programação. é' objeti YO de'taseçào é apenas o de introduzir o assunto, Isto porque as operações entre valores literai, ,;io bas ta;]!e di­versilicadas e dependem das características de cada Linguagem de Programação,

Supondo que A e B são variáveis literais e que o símbolo "i" é um operador de concatenação deliterais, a expressão

() 1.5.5.2. Considerando A, B e C variáveis numéricas, comendo os valores, 1,4,5 e 8. respecti vamente;NO~IEeCOR variáveis literais contendo as seqüências de caracteres "TANIA" e "BRA..\'CO" e TESTEvariável lógica contendo o valor verdadeiro, determinar os resultados obtidos da avaliação das seguintesexpressões lógicas:

a) A = I ~TESTEb) 1I:OME = "PEDRO" ou COR ="BRANCO"c) lillQ TESTE ou RESTO (B,2) = 0.5d) C < 10 ou TESTE ~ COR = "PRETO"

e) :\2 + ljC = 3 ~ (A -"- TRUNCA (B + C) > 13 ou ""aME = ":\);A"Jl) TESTE, MQ TESTE

fornece como resultado um único literal formado pelo conteúdo de:\ seguido do conteLJo de B,

38

Tabela 1.5

BITJlP

V FF V

1.5.4. Prioridade . ''r de-se ter mais de um operador loglco na

Como mostrado na~ letras c e ti do ~xemplo anlten~ , ~olvidos a ordem em que são efeluadas asI " 'IS conlorme os va ores en ' , - -' 't bémmesma expressão. Em a guns cmil , : _' orno acontece entre as operações antmellcas. am,

operações lógicas ufeta ~ n:sult~do flOal. ASS~~docres lógicos, Na tabela 1.6 são apresentadas a~ pn?nda­existe uma relação de pnondadc entr~ os o~ _ 'dem estar presentes na mesma expressao 10~lca,des entre todo~ os operadores co~hecld?s.'vlst? CJ.uedPOparênteses podem ser utilizados com a finalidade

Também nai>.express~~~~~::;:~~~~~~~~o:operadores lógicos,de estabelccer uma nova or

o Exemplo 1.19 • "ectivamente; a variável literal, X Y Z ontclldo os valores 2. 5 c 9, rcsp "f ,- observar os

Dadas as variáveis numéncas , c ,c , II \ '" SIM contcndo o vulor loglco aso,NOME, contcndo o Iiterul"MARIA";,e a vam\vc, l glca. •resultados obtiúos das expressõcs lógIcas a scgUlr,

a) X + Y > Z l< NOME = "MARIA" "2 + 5 > 91< "MARIA" = "MARIAfalso ~ verdadciro

falsob) SIM Q!! Y ~ X

falso Q!!. 5 ~ 2falso ill!. verdadeiro

verdadeiroc) nJiQ SIM lt. QUOCIENTE (7.,Y) + I ,., X~ falso lt. QUOCIENTE (9,5) + I ,., 2nill1 falso ~ vcrd:ldeir?verd'ldeiro lt. vcrdadclro

verdadeiro • • 10NOME = "JORGE", SIM Wl X· < Z +

d) "MARIA" = "JORGE", falso l!1l4 < 19

falso e falso Ql,l verdadeirofalso 00 verdadeiro

verdadeiro

o Exemplo 1.18

Eis algumas expressões lógicas

a) A + B = O~ C *' I;b) TESTE ou A X C > B.: ..

c) nill1 TESTE ~ COR = AZUL, , COR uma variável literal.", é" TESTE é uma variável lógIca e , ",, - umO d A B e C são vanavels num ncas, _, , n re um valor loglco, ISto e,

n eO ;esultado obtido da avaliação de uma expre,ssao lógl~a ,e ,seI r~lação como sendo uma expres-falso ou verdadeiro, Por este motivo, pode-se considerar uma umca ,..

são lógica,

, .

Page 32: Harry farrer   algoritmos estruturados

o Exemplo 1.2\ " ~ cido pela expressão A IB éS A contém o literal "BOLA" e B contém o literal "PRETA • o valor orne

o~iteral "BOLAPRETA". .. . . ' o ra ões desta natureza nas Ltn-

Além da concatenação de literais, é comum a eXistência de out~s~a f~nna de funções.ua ens de Programação, sendo que nonnalmente elas são encontra do'

g g Citam-se dentre as mais comuns aquelas que fornecem como resulta .

• o comprimento do literal (número de caracteres); , . 'ro'• os n primeiros caracteres de um literal, onde n é um .nume~ tn~e~ ,• os n últimos caracteres de um literal, onde n é um numero mtetr ,

Nos comandos em que o valor é representado por uma expressão aritmética ou lógica, estasdevem ser avalíadas em primeiro lugar para que, então, o resultado obtido seja armazenado na va­riável.)

Ainda sobre o exemplo 1.19, as variáveis K, MÉDIA, SOMA, N, X e Y devem ser do tipo numéri-co, as v,ariáveis TESTE. COO e SIM. do tipo lógico e a variável COR. do tipo literal. )

Não existem restrições quanto ao tipo das variáveis A e B, desde que ambas sejam do mesmo tipo ')básico.

Finalmente. o leitor pode estranhar o fato de que as constantes e \'ariáveis sejam consideradasexpressões, tendo em vista a forma geral do comando de atribuição. Isto é correto na medida em queuma expressão não passa de uma representação simbólica de um certo valor. que pode ser obtido desua avaliação. Portanto. constantes e variáveis numéricas são consideralbs como expressões numéri­cas na sua forma mais simples. Raciocínio análogo pode ser aplicado para e~pressões lógicas e expres­sões literais,

1.6.1. Exercício de fixação.' . ndo A, B e C variâveis literais

() Quais seriam os valores obtidos das expressões l~terals a seguir, supo

d alores "BENS" "I" "PARA" respectivamente?conten o os v , . , '

o Exemplo 1.22

a) K +- 1;b) COR +- "VERDE";c) TESTE +- faW2;d) A+- B;e) MÉDIA +- SOMAlN;f) COO +- W + 1 2!: 5;g) SIM +- X = Oe Y :F 2

h) TOTAL +- .JN + XZ + Y. 'OlA COO SIMe. Esses comandos atribuem, dinamicamente, às variáv~is ~, COR, TESTE. A. ME , .TOTA'L os valores fornecidos Adireita do símbolo de atnbulção.

•eeo()

••

()(j

••••OC)

O()

o:.'gOa

1.8. COMANDOS DE ENTRADA E SAíDA

() 1.7.1.1. SendoSOMA, NUM. X variáveis numéricas.NOME, COR, DIA variáveis literais, eTESTE, COO, TUDO variáveis lógicas,

assinalar os comandos de atribuição considerados inválidos:

a) NOMEf- 5b) SOMA f- NUM + 2 x Xc) TESTE f- COO Ql!. X2 :F Sm.IAd) TUDO f- SOMA

e) COR f- "PRETO" - .,fXf)X+-X+lg) NUM f- "·ABC·"h) DIA f- "SEGUNDA"

i) SOMA + 2 +- XZ - "'NUMj) X +- NOME ~ COO

No capítulo Oforam introduzidos alguns conceitos. com relação a estrutura e funcionamento de umcomputador. que serão mencionados nesta seção.

Sabe-se que as unidades de entrada e saída são dispositivos que possibilitam a comunicação entre ousuário e o computador.

Por exemplo, através de um teclado. o usuário consegue dar entrada ao programa e aos dados namemória do computador. Por sua \'ez, o computador pode emitir os resultados e outras mensagens para ousuário através de uma impressora de linhas.

Seja a seguinte situação: início da execução de um programa que se encontra armazenado na memó­ria principal do computador. Como e quem detemúna o momento da entrada dos dados para o programae a saída dos resultados obtidos para o usuário?

Isto é tarefa do programador e ele assim o faz quando. no desenvolvimento do all!oritmo, descreveas ações a serem executadas pelo computador. -

Os comandos de entrada e saída são as ferramentas para esta finalidade.

1.7.1. Exercícios de fixação

41

() 1.7.1.2. Quais os valores armazenados em SOMA, l\OME e Tl"DO, supondo-se que NUM. X. COR.OlA. TESTE e COO valem. respectivamente. 5; 2,5; "AZUL"; "TERÇA";~ e verdadeiro?

a) NOME f- DIAb) SOMA f- NUMz/x + ARREDONDA lX + I)c) TUDO +- njQ TESTE Ql!. COO ~ SOMA < X

X,Aç ~ t X

é o nome da variável à qual está sendo atribuído o valor;

t o símbolo de atribuição;. _ •.pode ser uma expressão aritmética, exp~ssao loglca ouexpressão Iiter~1 de cuja avaliação é obtido o valor a ser

atribuído à variável.

ar

identificador

+­expressão

40

identificador +- expressão

onde:

a) AI BICb) AICIBc) CIAIB

1.7. COMANDO DE ATRIBUIÇÃO. • . d'li . comando como sendo a descrição

A partir dos conceitos introduzlllos no capitulo O, podc-se c 100r

de uma ação a ser executada em um dado momento. d . rever as ações bâsicas contidas emDa presente seção ao final deste capítulo. discu~c-sc ~O~~\? e:co desenvolvimento de algoritmos e

um algoritmo, ou seja, os comandos e as estruturas dlspon Vt~Sã~~OS me~mos. .o conjunto de regras e convenções adotadas para a,represen ç d de atribuição. Este comando pennl­

O primeiro dos comandos considerad~denomma-se ~omllO :este valor tem de ser compatível comte que se forneça um valor a uma eerta vanável, onde a natureza

. da variável na qual está sendo armazenado. , .o tlpoO comando de atribuição tem a forma geral apresentada a seguir.

\I

1

S .MP.. .4

Page 33: Harry farrer   algoritmos estruturados

unI COIlUIJIUU "''-' ... uw ...... _ .... "._ .. - ...

42

~ lista-de-identificadores e/ou constantes

FORMULÁRIO

JOSÉ. ao. "'AR/A. 75, PAULO. 100

JOSÉ, aoMARIA. 75PAULO, lOC

JOSÉaoMARIA75PAULO100

.. - ...•••~" ~ 'lu\- '">, I C L sao \'anaVCl~ do tipO

x y zI IJOSÉ MARIA I IPAULO I

A B C

80 ] I 75 I I 100 JFig. 1.1 E;,qucma de memória

~ X,A.Y.B.Z.C

~X,A

~Y.6~Z.C

!llilli xescreva Aescreva Y~B

~Z

'Screva C

llleral, o comando

Os comandos são executados na ordem em que aparecelll.

_ kiil X,A, Y,B,Z,Cao ser executado, armazena nestas variáveis na ordem --------

. . Uma segunda alternativa seria ler as linhas individu .dlsllnto para cada uma das linhas AssI·m. d ai mente, ou >eja. u.~ar um comando de entrad'l

. , os coman os '

leia X,Aleia Y,B "leia z.e

se .executados nesta ordem, efetuam a leitura das linhas u .veIs o par de valores da respectiva linha. ma a uma, armazenando em cada par de variá-

, ~ode-~e concluir, então, que, a cada execu ã dda a dIsposição para lei!ura. ç o e um comando de entrada, uma nova linha é collJ-:a-

o Exemplo 1.27

Seja a. unidade de saída uma impressora de linhas Escreve .conteudos das posições de memória A B C X Y Zd r o(s) com~ndo(s) de salda que imprima<m I ü,

De m.a~eira ~náloga à entrada de dado~, ; c'ada~:::~~o antenor. .do formulano de Impressão é posicionada Port . ç. de um comando de salda, uma nora linhana unidade de saída. Al!wmas destas fo~as sãamo, :xlsdtem múme.ras formas de apresentado dos d;Jdos

_ . o mOstra as a segUIr: . '

COMANDO

é uma palavra-chave;são os nomes das variáveis, cujos conteúdos serãomostrados ao usuário através de um meio de saída.Além dos conteúdos das variáveis, o valor de umaconstante pode ser emitido diretamente.

é uma palavra-chave;são os nomes das variáveis, separados por vírgula,nas quais serão armazenados os valores provenientesdo meio de entrada.

E.<;crever o(s) comando(s) de entrada que leia(m) estas linhas e armazene(m) os valores na memória

principal..Ora, é pr~ciso que, existam seis variáveis (posições de memória) para o armazenamento dos dados

conudos nus hnhas (dOIS valores em cada linha).É necessário, ainda, que haja uma correspondência de número. ordem e tipo entre os valores digitados

e as variáveis que aparecem no comando de entrada.

o .:xemIJlo 1.26

Foram digitadas três linhas, onde cada uma delas contém o nome e a nota de um aluno, como se segue:

o Exemplo 1.25

a) 1I:ia X;b) hllil NOME,N,Y;c) ~K,SOMA;d) ~21."NOME",N;c)~ "TABELA DE PREÇOS".

A seguir são apresentados dois exemplos que mostram, com maiores detalhes, o funcionamento dos

comandos de entrada e saída.

PAULO, 100MARIA,75JOSÉ, 80

escreva A,X,35

indica que a constante 35 e mais os conteúdos das posições de memória, representados pelos identifica­dores A e X, serão exibidos em uma unidade de saída.

escrevalista-de-identificadores

o Exemplo 1.24

°comando

onde:

o Exemplo 1.23Supondo que NOTA e NUM são variáveis do tipo numérico, o comando

kli! NOTA, NUM

indica que dois valores numéricos serão lidos de uma unidade de entrada, quando este comando for exe­cutado. Os valores serão armazenados nas posições de memória (variáveis) identificadas pelos nomes

NOTA e NUM.Analogamente, um comando de saída tem a forma geral:

)

tf klilIist<l-~_e-ic1cntjfi~~dores

} onde:leialista-de-identificadores

, I

Page 34: Harry farrer   algoritmos estruturados

eco@

?(;

•:)C)

()

J()o••••'oooo(;.)

9O'··

·li

45

F

A+B<C

Condição

leia A. B. C

leiaA.B

escreva A.B.C

C t- (A + B) x B

v

v

seqüência de comandos

Texto do algoritmo

r~ A,',e wmmookliI A.BC+- (A + B) x B~A.B,C '

fim algoritmo.

j~O:diÇãO~ seqüência de comandos

1 s

liliA,', e ,,~Ó,"lmA.B.CeA+B<C

!me::ão escreva "MENSAGEM"

fim aleoritmo

Di;}grama de Chapin

Neste caso, a seqüência de comandos 56 será executada se a cond"- ç. .Obs _ É bo I~ao tor \crdadetraerv~fao: m que fique claro que. até o final deste . .

mandos . está implícito que ela contém um ou maIo cadPllulo. ao ser mencionada "seqüência de co-s coman os e pode' t .con er uma ou matS estruwras.

O Exemplo 1.29

A.estrutura condicional pennite a escolha do ru -determma?as ~o~dições. representadas por express~et~ d.e açoe..s e estr~lluras. a ser executado quandoestrutura e deltmnada pelo comando ... e pel OglCas, sao ou nao satisfeitas. Ne'!e li ~'TO esta

E "'" a expressão~ '.sta estrutura pode se apresentar de duas fonoas. .

1.10. ESTRUTURA COm>ICIONAL

1.10.1. Estrutura condicional simples

Neste exemplo. após serem definidos os ti os da ". .• .o valor de C calculado e os valores contidos e PA B

SvCanav:ls A.~.C. os valores de A e B serão lidosm . e serao escntos. •

onde: ----------------------------------------

dJ• d2••••• d.. são declaraç"'-c c ""SI' 2' .... c. são comandos

Observação: As declaraçõe ãs n o são representadas no diagrama de Chapino

O Exemplo 1.28",.

Diagrama de Chapin

c.fim alaorilrno.

Tellto do algmtmo

44

Num algoritmo aparecem em primeiro lugar as declarações seguidas por comandos que, se não hou­ver indicaçãu cm contrário, deverão ser executados numa seqüência linear. seguindo-se o texto em queestão escritos. de cima para baixo. Neste livro, os algoritmos são iniciados com a palavra A\:loritffiQ e

terminados com a expressão fim algQritmQ.

1.9. ESTRUTURA SEQÜENCIAL

c.

d..C,c2

Como já foi visto na seção 0.3. um algoritmo completo é constituído por declarações. comandos eestrutums. As dcchlr~\çõese QS principais comandos acabamm de ser mostrados. faltando. para concluireste capítulo. apenas algumas considerações sobre as principais estruturas que serão utilizadas ao longoueste livro. Para mdhor explicá-Ias. além do texto do algoritmo. será mostrado também o diagrama de

Chapin correspondente.

x-o\lia N,Ax_x+ AP_N~P,X

X_X+A~xA_X~N.X,A

[MMAA.2SI

interpretar a seqüência de comandos. a seguir. e preencher o formulãrio de impressão com os valores que

serão impressos na unidade de saída.

() Supondo

N e P variáveis do tipo literalX e A variáveis do tipo numéricoe uma linha digitada contendo os valores

1.8.1. Exerdcio de fixação

Page 35: Harry farrer   algoritmos estruturados

serãolaLlllllCIIIC CACLULavcl. C ISLO que ser"! IClto a' '

B for

finamentos. • . gora. apllLanoo-,e " caoa uma das açoes UI\) ou mais rc-

I)~ç r~' n. n.~~

i .1m A. B, C-- ------------

fim ref.

,/"

F Ref. Determine o menor número

jA<BeA<C~MENOR~A

s senão Determine o menor dentre B e Cfim se

fim ref.

or ver-Ref. Determine o menor dentre B e C

se B < CTentão MENOR ~ Bsenão MENOR ~ C

fim sefim ref.

/'

Ref. Escreva o menor númeroI ~MENOR

fim ref.

Ref. Defina os tipos das variáveis,

I declare A.B,C,MENOR numérico

Ifim ref.

~a;:::~~re~~~~~:ioai~~:t~~t:I;O~~~~~: s;~~~t~I~~ra~:~ o desenv~lvimenlO do alg~ritmoserão

e Y osnos seus respectivos lugares e colocam-se comentário dera _executado. ms~~em-se o.s rehnamentos

ontido

~ S on e se nzerem necessanos. AssIm, obtém-se:

ntidos l"orilmo{Definição do tipo das variiveis}

~ A,B,C, MENOR numérico

.k.rn A.B,C{Leitura dos números}

r<B'A<C{Determinação do menor m:mero}

então MENOR ~ Asenão se B < C

~MENOR~B

senão MENOR ~ Cfim..g

fim se

escreva MENOR{Escrita do menor número}

mexe-fim algoritmo.

oritmo

47

seqüência Bde comando

Condição

IciaA, B

X(--1,5Y (- -2,5

escreva X, Y

Diagrama de Chapin

v

X (- 1,5Y (- 2.5

v

lO't o\Icdmc A. B, X. Y numéricolJililA.B

1:· A = B

então X~ 1.5Y~2,5

senãQ X (- - 1.5Y (- -2,5

~~X,Y

!im ah:oritmo.

Após a leitura do problema. foi esboçado o algoritmo acima com as principais açõcs a serecutadils. Como se pode observar. essas ações não estão detalhadas o suficiente para tomar o alg

o Exemplo 1.31Fazer um algoritmo que leia três valores inteiros, determine e imprima o menor deles:

DefIRa os tipos das variáveisLeia os númerosDetermine o menor númeroEscreva o menor número

!im ahlllritmQ.

46

Neste exemplo, após serem definidos os tipos das variáveis A, B. X, Y, os valores de A. Blido!!: em !!eguida, se o valor contido em A for igual ao valor contido em B, serão atribuídos a Xvalores 1.5 e 2,5. respectivamente; caso contrário. se o valor contido em A for diferente do valor ccm a, serão atribuídos a X e Y os valores - 1,5 e - 2,5, respectivamente; finalmente, os valores co

em X e Y serão escritos.Nos exemplos seguintes. será usada a técnica de refinamentos sucessivos.

Texto do algoritmo

o Exemplo 1.30

Neste caso, a seqüência A de comandos só será executada se a condição (expressão lógica) fdadeira e a seqüência B de comandos só será executada se a condição for falsa.

1:;'"~ seqüência A de comandos~ seqüência B de comandos

1.10.2. Estrutura condicional composta

Neste exemplo, após serem definidos os tipos das variáveis A. B. C. os valorcs de A. B, C"aos; CI1rscguitltt;t'iI!;f) a soma deA.±...IlJ;gamenordo que C. uma mensagem será escrita. Se A +maIor ou igual a C. nenhuma ação será empreendida.__ - --- ----------

I

)

)

}

)

__ "l--,

I·.Ii

~

•j

Page 36: Harry farrer   algoritmos estruturados

o••••OOO(j

O~

O()/)

49

Ref. Annazene em L o menor valor

rL>MQ.\lL>N~M<N

~ troque L com MgnãQ troque L com N

finlK~

fim ref.

..la~I~.a X Y;Z {~finição do tipo das variáveis}~ •. numéncQ

{Leitura dos números}

I.kiil L,M,Nfim ref.

Ref. Ordene esses números

IArmazene em L o menor valorAnnazene em M o valor inte d" .fim ref. nne lano e em N o maior valor

kiiX,Y,Z\Ç X < Y + Z Y {Verificação da existência de triângulo}

ç <X+ZçZ<X+Ylmli2

1X = Y ~ X{~e~ficação do tipo de triângulo}

~~ ''TRIÂNGULO EQÜlLÁTERO"~ X ,,:,YQlI.X=ZQllY=Z

1~~''TR~GULOISÓSCELES"GllJ!Q~ ''TRIANGULO ESCALENO"

I~

~~ _ {Escrita da mensagem}~ "NAO EXISTE TRIÂNGULO"

~fim a1goritrnQ.

De?na o tipo das variáveisLeIa os númerosOrdene esses númerosEscreva o resultado

fim a1gQritrno.

R1ef. Defina o tipo das variáveis_ mIm X,Y;Z numéricofim ref.

Finalmente. inserindo-se os refinamentos no algoritmo. tem-se:

o Exemplo 1.33

Dados três valores distintos colocá I ·d, - os em or em crescente:

[ Rof.!.<i...n'~

Ref. Leia os númerosI lriil X,Y,Zfim ref.

Defina os tipos das variáveisLeia os números

\

e existe triângulo~ Verifique o tipo do triângulo~ Escreva mensagem

fiJ.lUÇ.fim ah:oritmo.

1ef. Se existe triânguloS!:. X < Y + Z~ Y < X + Z~Z < X + Y

1m ref.

ler. Verifique se ele é escaleno ou isósceles

Tx = YQ.\lX=ZQ.\lY ='Zenl.ào escreva ''TRI~NGULO ISÓSCELES"sçnilo escreva ''TRIANGULO ESCALENO"

!iIJUg.fim rer.

'.

Cf. E.'icreva mensagem~ "NÃO EXISTE TRIÂNGULO"

Imref.

R\Cf\.~~ri~~~ ~ti!,:0 triângulo~ntãQ escreva "TRIÂNGULO EQÜlLÁTERO"

~jio Verifique se ele é escaleno ou isósceles

Itm ref.

o Exemplo 1.32Dados três valores, X, Y. Z, verificar se eles podem ser os comprimentos dos lados de um triângulo e. seforem. verificar se é um triângulo eqüilátero, isósceles ou escaleno. Se eles não fonnarem um triângulo.

escrever uma mensagem.Antes de começar a elaboração do algoritmo, toma-se necessária a revisão de algumas propriedades

e definições.Propriedade _ O comprimento de cada lado de um triângulo é menor do que a soma dos compri-

mentos dos outros dois lados.Definição 1_ Chama-se triângulo eqüilátero ao triânguloque tem oscomprimentos dos três lados iguais.Definição 2 _ Chama-se triângulo isósceles ao triângulo que tem os comprimentos de dois lados

iguais. portanto, todo triângulo eqüilátero é também isósceles.Definição 3 _ Chama-se triângulo escaleno ao triângulo que tem os comprimentos de seus três la·

dos diferentes.

Page 37: Harry farrer   algoritmos estruturados

SI

~A2:5' B3

I, ent~o TESTE ~ verdadeiro_ senao TESTE ~ falso

1J.m...gC~TESTE

loori mo

Il;ooriIrllo

declare AIIXUI.<\RL M N t~ dulípo âas variáveis}.•. , numenco ---- f---

kiil L,M.N (Leitura dos números)

~L>MQl!L>N {Ordenação desses números}

k!!illQ~M<N

~ AUXILIAR ~LL~M

M ~ AUXILIARseniiQ AUXILIAR ~ L

L~N

fun~N~ AUXILIAR

fim seseM >Nr0"" AUXILIAR ~M

M~N

N ~AUXILíAR~

~çreva L,M,N {Escrita do resulrado}

fim algoritmo.

1.10.3. Exercícios de fixação

() 1.10.3.1. Após a exec - duçao o seguime trecho de um algoritmo

fim af~orit.lllil.

m C estará armazenado o . 1 f I\ a or a so se. originalmente:A2< B3A2 s B3A2 ~ B3A2 > 83A2 = B3

Ref. Troque L com MAUXIL-IAR.... L

- .......· M-Mf- AUXILIAR

fim ref.

-';~,

A troca de conteúdo entre duas variáveis é muito comum no desenvolvimento de algoritmos, por-tanto toma-se necessário uma explicação da utilização de uma variável auxiliar. que neste caso recebeuo nome de AUXILIAR. Se. simplesmente. fossem feitas as seguintes atribuições L ~ M, M ~ L o queocorreria?

Supondo-seque, inicialmente, em L estivesse o valor 27 e em M o valor 15. ao se executar o coman-do L f- M em L seria armazenado o valor 15 e o valor 27 desapareceria.

Ao se executar o comando M ~ L em M. seria armazenado o valor contido, atualmente. em L,ou seja, o valor 15 e. portanto. L e M armazenariam o mesmo valor. e o número 27 teria desapare-cido.

Agora. supondo-se que. inicialmente, em L estivesse o valor 27. em M, o valor 15 e executando orefinamento anterior, obtém-se:

• em AUXILIAR é armazenado o número 27;• em L é armazenado o número 15;• em M é armazenado o que está contido em AUXILIAR. ou seja, o valor 27.

Logo, a troca foi processada, pois L passou a conter o valor 15 e M. o valor 27.Feito este esclarecimento. pode-se continuar a refinar as ações iniciais.

Ref. Troque L com NI AUXILIAR f- LLf-NN f- AUXILIAR

fim ref.

Ref. Armazene em M o valor intermediário e em N o maior valorr>Nl:JlliW AUXILIAR ~ MM~N

N f- AUXILIARfi.ID..&:.

fim rer.

Rer. Escreva o resultadoI~L,M.N

fim rer.

Ref. Defina o tipo das variáveise

I lJl:.diw: AUXILlAR.L.M.N numérico a)fim ref. b)

c)

Finalmente, inserindo-se os refinamentos em seus devidos lugares. obtém-se:d)e)

50

)

Page 38: Harry farrer   algoritmos estruturados

52

••()

)

')

-)

)

-)

/)

")

~)

O

••O()

Diagrama de Chapin

seqüência B de comances

interrompa

repita

Texto do algoritmo

53

dcdm A,B.C,MAT,x,XX,Y,yy numéricoX +-0XX +-0Y +-0YY +-0A +-2B +- 5C +--4MAT+-o último algarismo do dia em que você nasceu

iMAT 2: 5~ X +- (A + B)"! + C/2 x A

Y +- RESTO (B,AlIA - QUOCIENTE (C,B!)~ XX +- QUOCIENTE (B,A)/A! + RESTO (B2,C)

YY +- AJ2 x C + (3 + AfiAfim..x~X,Y,XX,YY

fim algoritmo.

n'ti condição

mtjQ interrompa~seqüência B de comandos

fim repita

!'esta estrutura. a seqüência B de comandos será repetida até que a condição seja satisieita. Quandoisto ocorrer. a repetição é interrompida e a seqüência de comandos que vier logo após a e:l.pressão fimrepita passa a ser executada.

Primeira forma. Interrupção de início

A estrutura de repetição permite que uma seqüência de comandos seja executada repetidamenteaté que uma determinada condição de interrupção seja satisfeita. Neste livro, esta estrutura é delimita­da pelo comando repita e pela expressão fim repita e a interrupção é feita através do comando inter­rompa.

A condição de interrupção que deve ser satisfeita é representada por uma expressão lógica.Esta estrutura pode se apresentar nas formas que se seguem:

1.11. ESTRUTURA DE REPETIÇÃO

que valores seriam escritos se. em sucessivas ex.ecuções. fossem lidos os valores 30; 19; 27; 60; O?

() 1.10.3.5. Quais os valores escritos pelo algoritmo a seguir?

I +-- TRUNCA (MlI2)A +-- M/12B +-- ARREDONDA (M/12)

iRESTO (M.12) õ?:. 6~l+--l+l

ÚJ]UC~A.B,1

A\I!Orit.mo~ A,B.I.M l1IImérjcohâ;lM~~ M*"O

cD1ãl2

que valores serão e~ritos'~

() 1.10.3.4. Dado °seguinte algoritmo:

fim..j,çfim ah:uritmo.

,6lo oritmo~ A.B,C.l.J,K numériçoA +-- 32C +--21 +-- 5B +-- A"5J +-- C X 3/4

1:n~~ K +-- 8 X 6 11/C

snjQ K +-- A + liA - 1

~~B,J,K

fim ah:oritmo.

em D estará armazenado o valor 5 se:

a) A < B < Cb) A ~ B ~ Cc) A < B ~ Cd) B < C < Ae) nenhuma das respostas acima.

() 1.10.3.3. Dado o seguinte algoritmo:

() 1.10.3.2. Após a cXl:cução do seguinte trecho de um algoritmo

Page 39: Harry farrer   algoritmos estruturados

-

-

-

PAR (- PAR -"- 2

SOMA ..... SOMA - PAR

~>~interrompa I

~ndiç~

interrompa I

seqüência :\ de comandos

repita

repila

~~-----===.--/--1--

1------ 1

~--_..---

declare PAR. SOMA num' . ISOMA (- O enco

PAR i- 1110 I

~l~oril~"

~ PAR. SOMA numéricoSOMA +-0PAR (- 98

nAR+-PAR+2e PAR> 200i então interrompa

fim.&SO~IA +- SOMA + PAR

fim rep!laescreva SOMA

fim all:0ritmo.

~seqUência A de comandosK condição

então interrompa~ ~

fim repita

o Exemplo 1.35

!escreva SOMA I

,,,~ .I,.ri.mo. 'pó""" O< "'" .. '. I jdo o valor Oe em PAR o valo t an~vel> PAR e SOMA serem delinido' .a soma deles são repe~idos at~ 8, Em seguida. os comandos que geram os núm: e~l SO~IAe armazena-estrutura de repetição ê interro qu.~ o valor armazenado em PAR seja maior ro~ pare> e o qlle ca~culado. ou seja. o ,.alor contido emn;r~t-.~1~ ~~~~ndoque vem logo após a expre;~ã~ ~~. ~up~~~~' ent~o. anto. e e.~ecula'

55

Terceira forma Interrupç- fi~. • ao no 1m

II

Texto do algoritmo. DIJ!!rama C· Cha .

. l'esta estrurura. a se üê . ~ ~ plnIsto ocorrer. a re . _ 9. nCIa A de comandos será repetida até' . - .repita passa a ser;:~~~~t:~:~erromPlda e a seqüência de comando~~~c~~~lí~~ seJa,satisfeita. Q.uando,,,o apos a expressal' fim

o Exemplo U6-IAI"n10lQ

,.

repita

seqüência A de comandos

~di~interrompa \

-

seqüência B de comandos

SOMA +-0

PAR +- 100

repita

~~.interrompa \

-I

SOMA +- SOMA + PAR

PAR+- PAR + 2

escreva SOMA

Texto do algoritmo

Nesta estrutura. as seqUências A e B de comandos serão repelidas até que a condição seja satisfeita.Quando isto ocorrer. a repetição é interrompida e a seqüência de comandos que vier logo após a expres-

são fim repita passa a ser executada.

fseQUência A de comandos

~con~iç?oI ÇJillIQ IOlerrompa

~seqllílncia B de comandos

Um repilil .

Neste algoritmo. após os tipos das variáveis PAR e SOMA serem definidos. em SOMA é armazena­do o valor zero e em PAR. o valor 100. Em seguida, o conjunto de comandos que gera os números parese dctua a soma deles é repetido até que o valor armazenado em PAR seja maior do que :200. quando,então. a estrutura de repetição é interrompida e o comando. que vem logo após a expressão fim repita. é

cxccut<ldo, ou seja. o valor contido em SOMA é escrito.

Diagrama de Chapin

Segunda forma. Interrupção no interior

,\nnnt=n~ PAR.SOMA !ll!mérico

SOMA +-0PAR+- 100

~~ PAR> 200I !mtão interrompa

~SOMA +- SOMA + PARPAR+- PAR + 2

fim repitª~rcvaSOMA ,-

fim ill ..orituill.

o Exemplo 1.34

t~m ~)(crnl'los 1.34. 1.35 c 1.36 são mostrados trê~ algoritmos que. cmhora ligeiramente dife­rentes. calculam por um proCesso fepctittw-llsema~IlÚlllCrQS pan;s desde 100 até 200. inclusive.

Page 40: Harry farrer   algoritmos estruturados

TIOMA +- SOMA + PAR

PAR+- PAR + 2

rm;~~n;:mpafim repita~SOMA

fim algoritmo.

Neste algoritmo. após o tipo das variáveis PAR e SOMA ser definido. em SOMA é armazenado ovalor zero e em PAR. o valor 100. Em seguida. o conjunto de comandos que gera os números pares eefctua a soma deles é repetido até que o valor armazenado em PAR seja maior do que 200. quando. então.a estrutura de repetição é interrompida e o comando que vem logo após a expressão rtm repita é execu-

tado. ou seja. o valor contido em SOMA é escrito.

Observação: Deve-se ressaltar que a estrutura condicional

j cOndiçãoentão interrompa

~é parte integrante da estrutura de repetição. Em benefício da maior clareza e simplicidade do algoritmo.chI deve ser usada apenas como estrutura condicional simples (sem a parte referente ao senão). Alémdisso. ela deve ocorrer. explicitamente. uma e uma só vez para cada estrutura de repetição e dentro do

mesmo relinamento.

1.11.1. Exercícios de fixação

() 1.11.1.1. Executando o seguinte algoritmo

~ N.QUADRADO numérico

N +-- 10

I~QUADRADO +-- N

2

~QUADRADO

~ N= 1I eotão interrompa

~N+-N-I

fim repitafim p)gOÔtmo.

que valores serilo escritos?

() 1.11.1.2. Executando o seguinte algoritmo

~. A.Q.TERMO numéricoA+-lQ+-3TERMO+-A

~ TERMO 2; 2000

S6

1 11 .~TERMO

TERMO +-- TERMO X Qfimn:pita

fi~:mo.

que valores serão escritos?

() 1.11.1.3. Executando o seguinte algoritmo

~ D.K.NúMERO.SOMA numéricokilNUMEROSOMA +-- NúMERO + 1K +-- QUOCIENTE (NúMERO 2)D+--2 •

1FJ2Ílª

i ~~~terrompafi.In..&

i RESTO (NÚMERO,D) = O~ SOMA +-- SOMA + D

fi.In..&D+-O+ 1

fim repita~SOMA

fim algoritmo.

que valor seria escrito se fosse lido o valor 30?Nos exemplos seguintes. será usada a técnica de refinamentos sucessivos.

O Exemplo 1.37

F~zer um algoritmo que calcule o valor de N' (fato' Idisponível em uma unidade de entrada e que; na de N). sendo que o valor inteiro de N encontra-se

a) N! = I X 2 x 3 X ... X (N - 1) X N:b) O! = I, por definição.

lanri.onn

Defina tipo das variáveiskiANCalcule o fatorial de NEscreva o fatorial de N

fim algoritmo.

ef. Calcule o fatorial de NFATORIAL +-- I1+--2

l1:r~i'-'57

o(;)

•••G

Page 41: Harry farrer   algoritmos estruturados

59

I

___~I

}'. L.EA1lJR'AL <- FATORIAL x I

onde:

-- - -M--. mo~ta~e. após teremdec~ I\- trimestres·

f1.-1+ Irepita

C capJlal !Olclal investido; ,

fim ref.

i taxa de juros;

I

n número de períodos decorridos (trimestres)

iNeste último refinamento. a variável I assume os valores 2. 3, 4•... até atingir o valor N + I, quandO,

entào, a estrutura de repetição é interrompida. Ainda dentro da estrutura. à medida que I passa a assumirJ.ll?oritmo

um noVO valor, este é multiplicado pelo conteúdo ua variável FATORIAL e o produto é armazenado emDefina tipo das variáveis

FATORIAL.

llli CAPITAL,TAXA.XAtr!bua valores iniciais necessários

Ref. Escreva o fatorial de N

re I a

I ~FATORIAL

Calcule rendimento trimestral

fim rer.

Calcule montante trimestralEscreva rendimento e montante trimestrais

se TRIMESTRE = l"

Ref. Defina tipo das variáveis

T então interrompa

I ~ FATORIAL,I,N numérico

~

i

IModifique valor de TRI\1ESTRE

fim ref.

fim repila .-tim algoritmo.

Finalmente, inserindo-se os refmamentos cm seus respectivos lugares no algoritmo inicial, ob-

tém-se:Ref. Calcule rendimento trimestral

.h,orilmo

1 RE~DI~IENTO'- TAXA X MONTA\;TE!1m rel. .

{Definição do tipo das variáveis}

~ FATORIAL.I,N numéricQ

lili N

~ef. Calcule montante trimestral

{Cálculo do fatorial de N}

~ MONTANTE (- CAPITAL X (I + T:\XA)TR'''ESTRE

FATORIAL (- I

11m ref. . .

lt-2

I:~jl>N

R~f. Escreva rendimento e montante trimestrais

então interrompa

~ escreva RENDlMENTO.MO:'-lTANTE

~

11m rer.

FATORIAL (- FATORIAL x I

I~I + Iim rpoi."

Rcf. Moditique valor de TRIMESTRE

{Escrita do fatorial de N}! TRIMESTRE (- TRIMESTRE + I

~FATORIAL

11m ref.

fim uhmrillUo.

O Exemplo 1.38

~d. Atribua valores iniciais necessáriosMONTANTE (- CAPITAL

Uma pessoa aplicou seu capital ajuros e deseja saber. trimestralmente. a posição de seu investimento Ci TRIMESTRE.- I

inicial. Chilmando de i a taxa de juros do trimestre. escrever uma tabela que dê para cada trimestre o ren-

N(-4xX

dimento auferido e o saldo acumulado durante um período de X anos. supondo-se que nenhuma retiradarim rer.

tenha sido feita.

ObservcIC;,jes:Rd. Detina tipo das variáveis

a) Os valores de C. I e X estão disponíveis nllma unidade de entrada.

I declare CAPITAL.MONTANTE.N,RENDIME:-"iO TAX

b) A fórmula para capitalização composta é dada'por:fim ref.

TRIMESTRE.X numéricQ , •.-\

M. = C (I + i)"

l:Q

(

Page 42: Harry farrer   algoritmos estruturados

Finalmente. inserindo-se DO algoritmo inicial os refinamentos realizados. tem-se:

Ref. Leia '}úmcro de identificação e peso do boiI Iriil NUMERO.PESO

fim ref.

')

)

<)

.S)

o••••\)()

()(J

..•:J

{Definição do tipo das variáveis}{número de bois examinados}{número do boi mais gordo}{número do boi mais mal!To}{peso do boi mais gordo}{peso do boi mais magro}{número de identificação dos bois}

BOIS.GORDO.MAGRO.MAIORPESO.MENORPESO.NÚMERO.

Inserindo-se os refinamentos em seus respecti\'os lugares no algoritmo inicial. obtém·se:

Ref. Escreva o número e o peso do boi mais gordoI~ GORDO,MAIORPESO

fim ref.

Ref. Determine o boi mais magro

iPESO < MENORPESOmlW2 MENORPESO~ PESO

MAGRO ~ NUMEROfim..&

fim ref.

Ref. Escreva o número e o peso do boi mais masrroI escreva MAGRO,MENORPESO ~

fim ref.

ReC. Determine o boi mais gordo

TPESO> MAIORPESOmtiQ MAIORPESO ~ PESO

GORDO ~ NUMEROfim..g

fim ref.

ReC. Defina tipo das variáveis

I~ BOIS,GORDO.MAGRO.MAIORPESO.MENORPESO NúMERO

PESO numérico • •fim ref.

Ref. Atribua valores iniciais necessários

I

BOIS t- OMAIORPESO t- OMENORPESO t- 100000

fim ref.

IRor. Coo" ",,, boiI BOIS t- BOIS + 1)im ref.

{Cálculo do montante trimestral}RENDIMENTO ~ TAXA X MONTANTE

{Cálculo do montante trimestral}MONTANTE ~ CAPITAL X (1 + TAXA)TR'MESTItE

{Escrita do rendimento e montante trimestrais}~ RENDIMENTO,MONTANTESF TRIMESTRE = NI então interrompa~

{Definição do tipo das variáveis}~ CAPITAL.MONTANTE.N,RENDIMENTO.

TAXA.TRIMESTRE.X. numérico1m CAPITAL,TAXA.X

{Atribuição de valores iniciais necessários}MONTANTE ~ CAPITALTRIMESTRE~ 1N~4xX

~

,I" ...i.,,,n

Defina tipo das variáveisAtribua valores iniciais necessários[~~ o número de bois examinados é igual a 90I então interrompa

fim...KLeia número de identificação e o peso do boiDetermine o boi mais gordoDetermine o boi mais magroConte o boi

fim repitaE.'icreva o número e o peso do boi mais gordoEscreva o número e o peso do boi mais magro

!im alaoritmo.

{Modifique valor de TRIMESTRE}TRIMESTRE ~ TRIMESTRE + 1

!im repitalim ah:oritmo.

o Exemplo 1.39Num frigorífico existem 90 bois. Cada boi traz preso em seu pescoço um cartão contendo seu número deidentificação e seu peso.

Fazer um algoritmo que escreva o número e peso do boi mais gordo e do boi mais magro.

6061

Page 43: Harry farrer   algoritmos estruturados

62

l Defina tipo das variáveisAtribua valores iniciais necessários

63

ki.íI SEXO,OLHOS,CABELOS,IDADE

t~~~~IT~pau _Calcule maior idadeConte os indivíduos pesquisadosConte os indivíduos entre 18 e 35 anos, do sexo feminino, com olhos verdes

e cabelos lourosfim repitaCalcule porcentagem de indivíduos entre 18 e 35 anos. do sexo feminino, com olhosverdes e cabelos lourosEscreva a maior idadeEscreva a porcentagem calculada

fim algoritmo.

Ref. Conte os indivíduos pesquisadosI TOTALlI'DlVÍDUOS +- TOTALlNDIVÍDUOS + I

fim ref.

Ref. Calcule maior idade

I~ IDADE> MAIORIDADE

então MAIORIDADE to- IDADEfim se

fim ref.

Rd. Escreva a porcentagem calculadaI escreva PORCENTÃGEM

fim ref.

Ref. Conte os indivíduos entre 18 e 35 anos. do sexo feminino, com olhos verdese cabelos louros~ IDADE ~ 18 ~ IDADE 5:; 35 ~ SEXO = "FEMININO" e OLHOS = "VERDES"

~ CABELOS = "LOUROS" -então INDIVÍDUOS +- II'DlVÍDUOS + I~

fim ref.

Rd. Calcule porcentagem de indivíduos entre 18 e 35 anos, do sexo feminino.

Icom olhos verdes e cabelos lourosPORCENTAGEM f- INDIVÍDUOS x 100 I TOTALINDI\"ÍDUOS

fim ref.

Rd. Escreva a maior idade1 escreva MAIORIDADE

fim ref.

{peso dm; hois}

{Alnõlliçãade valores inici:ris necessários}

{Contagem deste boi}

{Leitura do número de identificação e do peso do boi}

PESOQJ,!1lIt' dc51

{Determinação do boi mais magro}se PESO < MENORPESO

Tentão MENORPESO~ PESOMAGRO +- NUMERO

~

ki.il NÚMERO,PESO . .{Detenninação do bOI mais gordo}

s PESO> MAIORPESO

T~ MAIORPESO ~ PESOGORDO +- NUMERO

fim..g

BOIS +- BOIS + Ifi!D repil;1

8015+-0MAIORPESO to- OMENORPESO to- 100000

~i 801S=9Oentão interrompa

fim..5!:

{Escrila do número e do peso do boi mais gordo}

escreva GORDO,MAIORPESO . .(Escrita do número e do peso do bOI mais magro}

escrev!\ MAGRO,MENORPESOlim algoritmo.

f -

! 1.11.2. Exercício de fixação

} t) Se houver dois ou mais bois com o mesmo peso. maior que todos os demais, este algoritmo escreverá

o número de qual deles?\} O Exemplo 1.40

. " f' . d I - de uma detenninada região coletou osUma ~sqUlsa sobre algumas caracten~ltcas lSIcas a popu ~çao ..seguintes dados, referentes a cada habItante, para serem analisados.

• sexo (masculino, feminino);• cor dos olhos (azuis, verdes. castanhos);• cor dos cabelos (louros. castanhos, pretos);• idade cm anos.Para cada habitante, foi digilada uma linha com esses dados e a última linha. que não corresponde a

ninguém, conterá o valor de idade igual a - I.Fazer um algoritmo que detennine e escreva:

a) a maior idade dos habitantes; . .b) a porcentagem de indivíduos do sexo feminino cuja idade está enlre 18 e 35 anos mcluslve e que le-

nham olhos verdes e cabelos louros.

1

J

}

)

Page 44: Harry farrer   algoritmos estruturados

:>)

......J.-•)

UTILIZAÇÃO CLASSE POTÊt'CINm2

quarto I 15sala de TV I 15salas 2 18cozinha 2 .. 18varandas 2 18escrit6rio 3 :!Obanheiro 3 :!O

J ..-_.,.- ,.

PORCENTAGEM +-INDIVIDUOS X IOO/TOTALINDIVIDl,;OS{Escrita da maior idade}

~ MAIORIDADE{Escrita da porcentagem calculada}

~ PORCENTAGEMfim aleorilmo.

Defina tipo das variáveisAtribua valores iniciais necessários

~kliI CÔMODO.CLASSE.COMPRlMENTO.LARGURA

i CÔ~?DO = "VAZIO"entao mterrompa~Calcule a área do cômodo

Supondo que s6 serão usadas lâmpadas de 60W. fazer um algoritmo que:

a) Leia um número indeterminado de linhas contendo cada uma:• cômodo de uma residência;• classe de iluminação deste cômodo;• as duas dimensões do cômodo.

b) Calcule e escreva:b.l) para cada cômodo:

·ocômodo;• a área do cômodo;• potência de iluminação;• número de lâmpadas necessárias;

b.2) para toda a residência:• total de lâmpadas;• total de potência.

Observações:

I) Se o número calculado de lâmpadas for fracionário. considerar o menor inteiro que contenha essenúmero. Ex.: 8.3 -+ 9; 8.7 -+ 9.

2) A última linha. que não entrará nos cálculos. conterá no lugar do cômodo a pala\Ta vazio.

o Exemplo 1.41

Para se determinar o número de lâmpadas necessárias para cada cômodo de uma residência. existem nor­mas que dão o mínimo de potência de iluminação exigida por metro quadrado (m2

) conforme a utilizaçãodeste cômodo.

Seja a seguinte tabela tomada como exemplo:

{cor de cabelos}{cor dos olhos}

{Cálculo da porcentagem de indivíduos entre 18 e 35 anos.}{do sexo feminino. com olhos verdes e cabelos louros}

MAIORIDADE.PORCENTAGEM

{Definição do tipo das variáveis}

IDADE. 18 }INDIVíDUOS. {número de indivíduos com idade entre e

{35 anos. com olhos verdes e cabelos louros}

{porcentagem de indivíduos com idade entre}{18 e 35 anos. com olhos verdes e cabelos}

{louros} .{número de indivíduos pesquisados}TOTALlNDIVÍDUOS

numéricodeclare CABELOS.

OLHOSSEXO

~ .... "s}{Atribuição de valores IniCiaiS necessano

MAIORIDADE +- OTOIALlNDlVÍDUOS +- OINDIVíDUOS +- O

-tktl SEXO.OLHOS.CABELOS,IDADE

j lDADE =-1então interrompa

fim..K {Cálculo da maior idade}se IDADE> MAIORIDADET mYi2 MAIORIDADE +- IDADE

t:im...& {Contagem dos indivíduos pesquisados}TOTALlNDlVIDUOS +- TOTALINDlvíDUOS + I

{Contagem dos indivíduos com idade entre 18 e 35 anos. do sexo}{feminino. com olhos verdes e cabelos louros} " _ "VERDES"

IDADE 2: 18 ~ IDADE s 35 ~ SEXO = "FEMININO ~ OLHOS -sr ~ CABELOS = "LOUROS"I mtã2 INDIVIDUOS +- INDIVíDUOS + 1

fim...Kfim repita

decl ~re

. . I ares no algoritmo inicial. obtém-se:Final rIlente, inserindo os refinamentos em seus respectlvos ug

64

R f Defi tipo das variáveis

1

e decla;.:a IDADE.INDlVfDUOS.MAI~RIDADE.PORCENTAGEM.TOTALINDlVfDUOS numéoco

declare CABELOS.OLHOS.SEXO lliwlfim ref.

Ref. Atribua valores iniciais necessários

IMAIC>RIDADE +- OTOTALlNDlVfDUOS +- OINDI V(oUOS +- O

fim ref.

III

1I

Page 45: Harry farrer   algoritmos estruturados

Calcule a potência de iluminação do c~~odo •.1 ..ca.Icuk.Q.oúmcrudelâmpadas necessanas ao C<'IIIUdo

ule o tOtai de lâlnpaâãifãal'esidêllcia-TI-rI~C':'a:""lcul~e~o:~t;::otll5-1~de~po:;tê;:;n';;c;;;la~d,t;a;:;r';'e"';siertdep,·I,,"lc+'iao--- - o. - ---

Escreva CÓMODO, área do cômodo. polência de iluminação, número de

lâmpadas necessárias

fim rçpjtaEscreva o total de lâmpadas e o total de potência da residência

fim algoÓtrnQ.

{tipo co cômodo}

{Definição do tipo de variáveis}{área do cômodo }{variá\el auxiliar para cálculo}{classe de iluminação}{comprimento do cômodo}{número de lâmpadas necessárias por cômOOos·~{largura do cômodo} ,{p~tên.:ia nec_essária para c:1da cômcx:o}{numero de lampadas nece,;sárias par:! a){residência}{potên.::ia necessária para a r~sidência}

ÁREA,AUXILIAR,CLASSE,COMPRIMENTOLÂMPADAS, 'LARGURA.POTÊNCIA.TOTALÂMPADAS,

TOTALPOTÊNCIAnumérico

declare CÔMODOliteral

• {Atribuição de valores ini.::iais necessários}TOTALAMPADAS t- OTOTALPOTÊNCIA t- Orepitai k..ill ÇÔMODO.CLASSE.COMPRlME~TO.LARGURA! iCO~t<?DO = "VAZIO"

I

entao Interrompafim se

i. {Cálculo da área do cômOOo}i AREA t- COMPRIMENTO X LARGURA

{Cálculo da potência de iluminação do cómodo}se CLASSE = I

1entào POTÊKCIA t- ÁREA X 15senào sr CLASSE = 2

ent~o POT~l\CIA t- ~REA x 18senao POTEKCIA t- AREA x 20

fim sefim se

{Cálculo do número de lâmpadas necessárias ao c<':nOOo}

67

Finalm t' . den e, IOsenn o-se os refinamentos em seus respectivos luo;;.res no alcoritlDo ,oru·cloal obt'= o = • em-se:

Ref. Defina tipo das variáveisdeclare Á~A,AUXILIAR,CLASSE,COl\IPRIMENTO

LAMPADAS.,LARGURA,POTÊKCIA,TOTALAMPADAST9TALPOTENCIA numérico '

declare C0!\10DO literalfim ref.

R,ef. E'>creva o total ~e lâmpadas e total de potência da residénLoia...e- -time;';;ocva TOTALAMPADAS,TOTALPOTÉ~Cli\~_ f----.....b~~~~~~~~~~~~~~ ____l.

, Ref. Atóbu~ valores iniciais necessáóos; I TOTALAMPADAS t- OTOTALPOTÊNCIA t- O

fim ref.

Ref. Calcule o total de lâmpadas da residênciaI TOTALÂMPADAS t- TOTALÂMPADAS + LÂMPADASfim reL

Ref. Calcule o total de potência da residênciaI TOTALPOTÊNCIA t- TOTALPOTÊNCIA + POTÊNCIAfim rer.

Ref. Calcule o menor inteiro que contém LÂMPADASAUXILIAR t- POTÊNCIAl60

i· AUXILIAR"* LÂMPADAS~ LÂMPADAS t- LÂMPADAS + I

~fim rer.

Ref. Escreva CÓMODO, área do cômodo, potência de iluminação, número de

I lâmpadas necessárias~CÔMODO,ÁREA,POTÊNCIA,LA~IPADAS

fim rer.

66

Ref. Calcule a potência de iluminação do cômodo

1CLASSE = I~ POTÊNCIA +-- ÁREA X 15senão CLASSE = 2

l:Jl1ãQ POTÊNCIA +-- ÁREA X 181~não POTÊNCIA +-- ÁREA X 20

tlI!illum se

fim rer.

Ref. Calcule o número de lâmpadas necessárias ao cômodo

ILÂMPADAS +-- QUOCIENTE(POTÊNCIA,60)Calcule o menor inteiro que contém LÂMPADAS

fim rer.

Ref. Calcule a área do cômodoI ÁREA r COMPRIMENTO X LARGURAfim ref.

)

)

)

: '}

( J

( .\

(1

Page 46: Harry farrer   algoritmos estruturados

o Exemplo 1.42

.)

'~)

i"')

")

,')

'),()

Ofieei~)

ti

•').,)

()C)()Ç)

•••o<)CJo<J,.)

C)

()

o('\

Finalmente, inserindo-se os refinamentos em seus respectivos lugares no algoritmo inicial. tem-se:

Ref. Compare ALTURA com MAIOR2

IALTURA> MAIOR2~ MAIOR2 t- ALTURA

CONTADOR2 t- I- ALTURA = MAIOR2 '

~ãoCONTADOR2t-CONTADOR2 + 1

~fim rer

Ref. Escreva resulladosI~ MAIOR I ,CONTADOR I ,MAIOR2,CONTADOR2

fim rer.

Ref. Verifique se ALTURA é igual a MAIOR I

1ALTURA =MAIORIm1ãQCONTADORI t- CONTADORI + 1sniQ Compare ALTURA com MAIOR2

ti.m..Kfim rer.

{Definição do tipo das variáveis}~ ALTURA,CONTADORI.CONTADOR2,MAIOR I,MAIOR2

numérico~ NO~IE lliml

{Atribuição de \'a\ores iniciais necessários}COl\'TADOR I f- O

a

Ref. Atribua valores iniciais necessáriosCO~ADORI f- OCO~TADOR2 ~ OMAIORI t--IMAIOR2t- -I

fim rer.

Ref. Delina tipO das variáveis

I~;uL~~,CONTADORI.CONTADOR2,MAIORI,MAIOR2

~ NOMEllimlfim rer.

. Ref. Atualize a 1.' maior altura e o número de moças que a possuem

IMAIORI t- ALTURACONTADOR I +- I

fim ref.

LÂMPADAS ~ QUOCIENTE(POTENCIA,60)AUXILlARt- POttNCIA/60

AUXILIAR =F LÂMPADASf ~ LÂMPADAS t- LÂMPADAS + IfinJ...1& iCálculo do total de lâmpadas da residêns.ia}TOTALAMPADAS t- TOTALAMPADAS + LAMPADAS

{Cálculo do total de potência da residência}TOTALPOTÊNCIA t- TOTALPOTÊNCIA + POTÊNCIA

(Escrita do CÔMODO, área do cômodo, potência de){iluminação. número de lâmpadas necessárias}

~ CÔMODO.ÁREA,POTÊNCIA.LÂMPADAS

fim repita

dooritmoDefina tipo das variáveisAtribua valores iniciais necessários

r~kill NOME,ALTURA

NOME = "VAZIO"i então interrompa~~ NOME,ALTURACompare ALTURA com as duas maiores alturas

fim repitaEscreva resultados

fim algoritmo.

Ref. Atualize a 2." maior altura e o número de moças que a possuem

I MAIOR2 +- MAIOR IcomADOR2 t- CONTADOR I

fim ref.

Ref. Compare ALTURA com as duas maiores alturas

IALTURA> MAIOR I~ Atualize a 2." maior altura e o número de moças que a possuem

Atualize a I." maior altura e o número de moças que a possuem~ Verifique se ALTURA é igual a MAIOR1

ÍÍlllXfim rer.

68

{Escrita do total de lâmpadas e total de potência da}{residência}

~ TOTALÂMPADAS,TOTALPOTÊNCIA

fim algoritmo.

Fazer um algoritmo que:a) leia e escreva o nome e a altura das moças inscritas em um concurso de beleza. Para cada moça, existe

uma linha contendo seu nome e sua altura. A última linha que não corresponde a nenhuma moça, conterá

a palavra VAZIO no lugar do nome;b) calcule e escreva as duas maiores alturas e quantas moças as possuem.

; Xl ; .s ..1

Page 47: Harry farrer   algoritmos estruturados

71

Inserindo-se os refinamentos em seus respectivos lugares no aloon'tmo I'n'c', I b'~ e I la. O tem-se:

SENA (- OTt-ANrO

i1itilse ABS(T) < 0.0001T então interrompafim se

I" rir o{Declaração das variáveis}

~ A,N.SENA.T numérico~"A SENA N"ArOre 't

i A> 1.6. então interrompa

fim se{Cálculo de SENA}

R,ef. Atribua valores iniciais necessáriosSENArOTrAl'\rO

fim ref.

Rer. Calcule o próximo T

I Tr-TX A~I 2 X N X (2 X N + I)fim ref.

Ref. Declare as variáveisI~ SENA,A.N,T numérico

fim ref.

Dccharnçllo dl\~ variáveis~"A SENA N"

~.O~ A> 1,6I .;0110 10lÇaQmlla

0JJugCalcule SENA.umD A,SENA.NA~A+'O.'

11... _ftItA

70

fim seíiJ.U repj la~ MAIORl.CONTADOR l,MAIOR2,CONTADOR2

Ú'" "h:oriIOlQ.

AJ ASsenA = A - - +3! 5!

com erro inferior a0.000I. Imprimir também o número de termos usados.'. ,Em M6riCllllltcmlldus, o valor absoluto do erro cometido com a interrupção da série é inferior ao valor

abllOluto do primeiro termo abandonado. Daí o seguinte algoritmo:

o ":xemplo 1.43ElICfCvcr um algorilmO para fazer uma labela de sen A. com A variando de Oa 1.6 radiano de décimo em

d~cimo de radinRo. usando a série

}

CONTADOR;2~r~O;------------------------:---:--~-::-------------------------------MAIOR I r "" I m "ure, ,"U< ..",," - "" ""-, -""" ".- ".m'

_. j MA"'"\D') b I ~ A,SENA,N é um comano ,.,__.~_ _ ' ' _ _ o p"",~re,,, o '~N , .. ",""i, A.sENA , N

--:7 IIHfI'D'"lI!Wtml--:-.-:N:-::O~M-=E=-,A~L;-;;T;:;U~R:-;A----------------------~--+---+-- - ~~~:;:;;SEW:;C::======-=-=-=-=~-~~~==~:=~~:-....---=::.:..:--i

NOME = "VAZIa" A~bua valores iniciais necessários

rolão interrompa n:.:.NOME,ALTIlRA i ~~~~~:'

(Comparação da ALTURA com as duas maiores alturas) fiJIl.M~e ALTURA> MAIOR I SENA r SENA + T

gJtão MAIOR2 +- MAIOR I N r N + ICONTADOR2 r CONTADORI I Calcule o próximo TMAIORI r ALTURA fim repilaCONTADOR I r 1 fim ref.

~não se ALTURA = MAIOR I~tão CONTADORI r CONTADOR1 + 1

senªº-lALTURA> MAIOR2~nlão MAlüR2 r ALTURA

CONTADOR2 r 1~não i ALTURA = MAIOR2

então CONTADOR2 t- CONTADOR2 + I

fim sefim se

Page 48: Harry farrer   algoritmos estruturados

SENA +- SENA + TN4-N+ I

T 4- -T X 2 X N X (2 X N + 1)

fim repita~A.SENA.N

A4- A + 0.1fim repita

fim aleOÓtmQ.

o Exemplo 1.44Para cada aluno da disciplina Programação de Computadores deste semestre. será digitada uma linha

com:• a identificação da turma (A.B, ...• R, nesta ordem);• número de matricula;• nota final.

, Após o último aluno de cada turma. virá uma linha. que não corresponde a nenhum aluno, contendozero no lugar do número de matricula. Deseja-se, através de um computador. ler estas linhas e imprimir.para cada turma, a sua identificação, o número de alunos aprovados (nota final ~ 60), a média das notase a melhor nota. Após todas as turmas serem processadas. deseja-se imprimir também o total de alunosaprovados. a média geral e a melhor nota na disciplina. neste semestre.

Em problemas deste tipo. sugere-se pensar primeiro em um nível mais geral (disciplina) e depois,gradalivamente. em níveis mais particulares (turma. aluno). Em cada nível. deverá haver. quando neces­sário. uma parte inicial. uma parle intermediária e uma parte final. que terão de ser repetidas ou não. Nocaso de se repetir, deverá existir uma condição de interrupção.

,I ..nrit~n

Declare as variáveisAtribua valores iniciais às variáveis relativas à disciplinaExecute os cálculos intermediários relativos à disciplinaExecute os cálculos finais relativos à disciplina

fim aleoritmQ.

A nível de disciplina não há repetição. já que só existe uma. Neste exemplo. o desenvolvimento dosrefinamentos será iniciado pelo último. especificando-se o que se deseja obter neste nível.

Ref. Execute os cálculos finais relativos à disciplina

I MEDIADlSC +- SOMADlSC I NDISC~ APROVDlSC.MEDlADISC.MELHORDlSC

fim ref.

As letras DlSC no final do nome das variáveis indicará. neste algoritmo. que elas se referem à dis­ciplina Programação de Computadores. Neste momento. já se sabe quais variáveis devem ter seus valo-

res iniciais atribuídos a nível de disciplina.

Ref. Atribua valores iniciais às variáveis relativas à disciplina

1

SOMADISC +- ONDlSC 4-0APROVDlSC +- OMELHOROISC +- -I

fim ref.

72

".;.

Re~~cute cálculos intermediários relativos à disciplina

Atribua valores iniciais às variáveis relativas a urna turmaExecute cálculos intermediários relativos a uma turmaExecute cálculos finais relativos a uma turma

i TURMA = "R"então interrompa

fim....&fim repita

fim ref.

Novamente, o desenvolvimento dos refinamentos será iniciado pelo último.

Ref. Execute os cálculos finais relativos a uma turmaMÉDIA +- SOMA I N~ TL"RMA,APROV.MÉDIA.MELHORSOMADlSC +- SOMADISC + NAPROVDISC +- APROVOISC + APROV

i MELHOR> MELHOROISCm!.ão MELHORDlSC f- MELHOR

fim...gfim rer.

Cálcu?:sv~::i~~e::;::~~: :~v:~~u::na._e também .a ní\'eis inferiores aos de turma. a execução detotais com os valores relativos ao nível~~:â~:~:~~etasls da. turma. como tam~~ ~ vinculação destesupenor. neste caso. a dlsclp1Jna.

Ref. .Atribua valores iniciais às variáveis relativas a uma turmaN f-OAPROV +-0MELHOR+- -ISOMAf-O

fim ref.

A seguir. desenvolve-se o refinamento relativo aos cálculos intermediários d::I:~ conta que uma turma é formada de vários alunos, vindo após o último w: ~~:oru::C:'r::a=~~~

Ref. E~ecute os cálculos intermediários relativos a uma turma

rr·TURMA.ALUNO,NOTA

i AleNO = Oentão interrompa

~te os cálculos relativos a um alunofim repita

fim ref.

73

"

)

")-}.,O.,••O••():)t)'~).\"" .

€I

••••<)

Q(J<"~o

Page 49: Harry farrer   algoritmos estruturados

75

{Execução dos cálculos finais relativos a uma turma}MÉDIA f- SOMAINescreva TURMA.APROV,MÉDlA,MELHORSOMADlSC +- SOMADISC + SOMANDISC f- NDlSC + NAPROVDlSC f- APROVDlSC + APROVse MELHOR> MELHORDlSCT~ MELHORDlSC +- MELHORfim se

TURMA = "R"i então interrompafim se

fim repita

{Execução tios cálculos intermcJi;irios relillivos ii tlisl'iplma}ita

t,k..lli TURMA,ALUNO,NOTA~ ALUNO = OI então interrompa

fim se

{AtnõuiçãO de vaIoresillíCillis à" variáveiSrefallvas ,. uma turma JSOMA f--U---------:--------- ----------------------------

N+-OAPROVf-OMELHORf- -I

{Execução dos cálculos intermediários relativos a uma turma}

{Execução dos cálculos relativos à disciplina}MEDIADISC f- SOMADISC I NDISCescreva APROVDISC.MEDIADISC,MELHORDISC

fim algoritmo.

{Execução dos cálculos relativos a um aluno}Nf-N+ I

is NOTA ~60

então APROV f- APROV + I~

j, NOTA> MELHORentão MELHOR f- NOTA

fim seSOMA f- SOMA + NOTA

fim repita

PROBLDt\S GER-\IS6. 1.12.1. Fazer um algoritmo que:

o Leia um número indeterminado de linhas contendo cada uma a idade de um indivíduo,,\. última linha, que não entrará nos cálculos. contém o valor da idade igual a zero.

o Calcule e escreva a idade média deste grupo de indivíduos.~ 1.12.2. Tem-se um conjunto de dados contendo a altura e o sexo (mas.ulino. feminino) de 50 pes soas,Fazer um algoritmo que calcule e escreva:

o a maior e a menor altura do grupo;o a média de altura das mulheres:o o número de homens.

1.12. EXERCÍCIOS PROPOSTOS

{identificação de uma turma}

{média das notas de todos os alunos da disciplina}{soma de todas as notas da disciplina}{número de alunos matriculados na disciplina}{número de alunos aprovados na disciplina}{melhor nota na disciplina} ..{média das notas de todos os alunos de uma turma}{soma de todas as notas de uma turma}{número de alunos de uma turma}{número de alunos aprovados em uma turma}{melhor nota de uma turma}{número de matrícula de um aluno}{nota de um aluno}

o{Declaração das variáveis}

~ MEDlADlSC, {média das notas de todos os alunos da disciplina}SOMADlSC {soma de todas as notas da disciplina}NDISC ' {número de alunos matriculados na disciplina}APROVDISC, {número de alunos aprovados na disciplina}MELHORDISC, {melhor nota na disciplina}MÉDIA, {média das notas de todos os alunos de uma turma}SOMA, {soma de todas as notas de uma turma}N. {número de alunos de uma turma}APROV. {número de alunos aprovados em uma turma}MELHOR, {melhor nota de uma turma}ALUNO, {número de matrícula de um aluno}NOTA {nota de um aluno}numérico

~ TURMA {identificação de uma turma}lliroll

{Atribuição de valores iniciais às variáveis relativas à disciplina}SOMADISC +- ONDISC +- OAPROVDISC +- O

Ref. Declare as variáveis~ MEDIADlSC,

SOMADlSC,NDlSC,APROVDlSC,MELHORDlSC,MÉDIA,SOMA,N.APROV.MELHOR,ALUNO,NOTAnumérico

!kdm. TURMA~

Finalmente, inserindo-se os refinamentos em seus respectivos lugares no algoritmo inicial. tem-se:

Agora, falta apenas se definir o tipo das variáveis utilizadas

I fim ref.

i' Rcf. Execute os cálculos relativos a UIlI alunoi N"","N±l. :> -----

mIl42 APROV +- APROV + I

t'im.K

iNOTA> MELHOR

. ~ MELHOR +- NOTA! ~J. SOMA +- SOMA + NOTA( fim ref.

)

)

t,} 74

Page 50: Harry farrer   algoritmos estruturados

li 1.12.3. A conversão de graus Farenheit para centígrados é ohtida por

C;: ~ (F - 32).9

Fazer um algoritmo que calcule e escreva uma tabela de centígrados em função de graus Farenheit. quevariam de 50 a 150 de I em I. .Á 1.12.4. Um comerciante deseja fazer o levantamento do lucro das mercadorias que ele comercializa.Para isto, mandou digitar uma linha para cada mercadoria com o nome, preço de compra e preço de ven­da das mesmas. Fazer um algoritmo que:

• determine e escreva quantas mercadorias proporcionam:lucro < 10%10% $ lucro ~ 20%lucro > 20%

• determine e escreva o valor total de compra e de venda de todas 'as mercadorias. assim como olucro total.

Ob.ren'ação: o aluno deve adotar umf1ag,li 1.12.S. Supondo que a população de um país A seja da ordem de 90.000.000 de hahitantes com umataxa anual de crescimento de 3% e que a população de um país B seja. aproximadamente, de 200.000.000de habitantes com uma taxa anual de crescimento de 1,5%. fazer um algoritmo que calcule e escreva onúmero de anos necessários para que a população do país A ultrapasse ou iguale a população do país B.mantidas essas taxas de crescimento. ,.. 1.12.6. Um determinado material radioativo perde metade de sua massa a cada 50 segundos. Dada amassa inicial. em gramas, fazer um algoritmo que determine o tempo necessário para que essa massa setome menor do que 0.5 grama. Escreva a massa inicial, a massa final e o tempo calculado em horas, minutose segundos... 1.12.7. Deseja-se fazer um levantamento a respeito da ausência de alunos à primeira prova de Progra­maçào de Computadores para cada uma das 14 turmas existentes. Para cada turma. é fornecido um con­junto de valores. sendo que os dois primeiros valores do conjunto correspondem à identificação da turma(A, ou B. ou C.... ) e ao número de alunos matriculados, e os demais valores deste conjunto contêm onúmcro de matrícula do aluno e a letra A ou P para o caso dc o aluno estar ausente ou presente, respecti­vamente. Fazer um algoritmo que:

• para cada turma, calcule a porcentagem de ausência e escreva a identificação da turma e a por­centagem calculada;

• determine e escreva quantas turmas tiveram porcentagem de ausência superior a 5%.I:::. 1.12.8. Uma certa firma fez uma pesquisa de mercado para saber se as pessoas gostaram ou não de umnovo produto lançado no mercado. Para isso. forneceu o sexo do entrevistado e sua resposta (sim ou não).Sabendo-se que foram entrevistadas 2.000 pessoas, fazer um algoritmo que calcule e escreva:

• o número de pessoas que responderam sim;• o número de pessoas que responderam não;• a porcentagem de pessoas do sexo feminino que responderam sim;o a porcentagem de pessoas do sexo masculino que responderam não.

.. 1.12.9. Foi feita uma pesquisa para determinar o índice de mortalidade infantil em um certo período.Fazer um algoritmo que:

o leia inicialmente o número de crianças nascidas no período;o leia, em seguida. um número indeterminado de linhas, contendo, cada uma, o sexo de uma crian­

ça morta (masculino. feminino) e o número de meses de vida da criança. A última linha. que nãoentrará nos cálculos. contém no lugar do sexo a palavra "vazio";

o determine e imprima:II) li porcentagem de crianças mortas no período;b) li porcentagem de crianças do sexo masculino mortas no período;c) a porcentagem de crianças que viveram 24 meses ou menos no período.

li 1.12.10. Foi feita uma pesquisa de audiência de canal de TV em várias casas de uma certa cidade numdeterminado dia. Para ~a~a casa visitada, é fornecido o número do canal (4. 5, 7, 12) e o número d~ pes­soas que \I estavam aSSistindo naquela casa. Se a televisão estivesse desligada, nada era anotado. ou seja.esta caslI nao entr,lVa na pesquisa. Fazer um algoritmo que:

o ~cia um número indeterminado de dados. sendo que o "fLAG" corresponde ao número do canalIgual a zero;

76

• calCUle a porcentagem de audiência para cada emissora'• es a ' di'. crev o numero o cana e a sua respectiva porcentagem.

A 1.12.11. Uma universidade deseja fazer um levantamento a respel'to d .d é"'d . , e seu concurso vesllbular Paraca a curso. .omeel o o seguinte conjunto de valores: .o o código do curso;o número de vagas;o número de candidatos do sexo masculino'o número de candidatos do sexo feminino. '

O úlúmo conjunto, para indicar fim de dados, contém o código do curso igual a zero Fazer u ai .• calcule e es d • . . m gontnlo que:

creva, p~a ca a curso, o numero de candIdatos por vaga e a porcentagem de candi.• datos d? sexo f~mlnl~o (escreva ~bém o código correspondente do curso);d~termIne o maior numero de candidatos por vaga e escreva esse número juntamente co 'dIgo do curso correspondente (supor que não haja empate); m o co-

o calcule e escreva o total de candidatos... 1.12.12. O sistema de avaliação de uma determinada disciplina obedece aos seguintes critério .

• durante o semestre são dadas três notas; s.• ~ nota .flnal é obtida pela média aritmética das notas dadas durante o curso;• e con~lderado ap~.vado o aluno que obtiver a nota final superior ou igual a 60 e que tiv .

pareCIdo a um mmlmo de 40 aulas. er comFazer um algoritmo que:

a) Leia um c~njunto de dados contendo o número de matrícula, as três notas e a freqüência rnún daulas frequentadas) de 100 alunos. lero e

b) Calcule:o a nota final de cada aluno;• a maior e a menor nota da turma;• a nota média da turma;• o total de alunos reprovados;o a porcentagem de alunos reprovados por infreqliência.

c) Escreva:

o para cad~ aluno. o núm~ro de matrícula. a freqüência. a nota finai e o código (aprovado ou reprovad I'o o que fOI calculado no Item b (2, 3, 4 e 5). o.

Ó. 1.~2.13. ~eseja-se fa,zer u~a pesqui~a a respeito do consumo mensal de energia elétrica em uma de­termInada CIdade. Para ISSO, sao fomectdos os seguintes dados:

• preço do kWh consumído;o número do consumidor;• quantidade de kWh consumidos durante o mês'o código do tipo de consumídor (residencial. co~ercial industrial)

O número.do consumídor i~ual a ~ero deve ser usado comof1~g. Fazer~ algoritmo que:o leia os dados descntos aCima;o calcule:

a} para cada consumídor, o total a pagar,b) o maior consumo verificadoc) o menor COnSUmo veriflcad~.d) o total do consumo para cada um dos três tipos de consumidorese} a média geral de consumo; ,

• escreva:a) para cad~ consumidor, o seu número e o total a pagar,bl o que fOI calculado nos itens b. c, d. e acima especificados.

 1.12.1~. Tem-se uma estrada ligando várias cidades. Cada cidade tem seu marco qu'l ., Fum algoritmo que: I omernco. azer

o leia vários pares de ,dados, co~te.ndo cada par os valores dos marcos quill'métricos. em ordemcrescente. de duas cldad~s. O ultimo par contém estes dois valores iguais:

o calcule os tempos decomdos para percorrer a distância entre estas du 'd d .I 'd d 2 as CI a es. com as seguin-tes ve OCI a es: O, 30. 40, 50, 60. 70 e 80 km/hora, sabendo-se que

et = ;' onde t ;: tempo; e = espaço; v = velocidade;

77

'')

•••€)

••1.·."'\~.J

OOO~

••••"OOO()(,)

()

CJ

Page 51: Harry farrer   algoritmos estruturados

)

)

79

TIPON.o DE TELEVISORES

VENDIDOS COMISSÕES

a cores maior ou igual a 10 R$ 50,00 por televísor vendidomenor do que 10 RS 5,00 por televisor vendido

preto e maior ou igual a 20 RS 20.00 por televisor vendicobranco menor do que 20 RS 2,00 por televisor vendido

-represe?ta o ?úmero do mês. Janeiro e fevereiro são os meses 11 e I" do dmarço e o mes I e dezembro é o mês 10: ~ ano prece ente,

D - representa o dia do mês:A -representa o n~mero formado pelos dois últimos algarismos do ano'

,S -repres:nta o numero formado pelos dois primeiros algarismo d 'Os dIas da semana sao numerados de zero a seis' dominoo c - d OS o ano,diante. ' lO orrespon e a ,segunda a I. e assi rn pl'f

Fazer um algoritmo que:- leia um conjunto de 50 datas (dia, mês, ano);- determine o dia da semana correspondente à data lida segundo o n 'too 'fi_ escreva, para cada data lida, o dia mês ano e o dia da' se-ma I lei dO especl Icado:Â 11"1 N " " na ca LU a o• .._. uma fabnca trabalham homens e mulheres d' ··d'd .'A,~, • 1\1 I os em Ires classes'

- o, que ,azem ate 3D peças por mes; .B - os que fazem de 31 a 35 peças por mês;C - os que fazem mais de 35 peças p<.'f mês.

Sabe-se. ainda, que ele tem um desconto de 8% sobre seu I" fi(fixo + comissões _ INSS) for maior ou igual a RS 500~~o ~x~ para,o INSS. Se o seu ;a~árJo totalesse salário total. relativo ao imposto de renda retido na iom e ~ ~n ~ tera um de~conto de 1''70 • sobrenesta seção, leia o valor do salário fixo e para cada . ,e. a en o-se que eXistem 20 empregados

I. ,comerClano o número de s . . - ,

~e ev~sores a cores e o número de televisores preto e branco v~ndido" I ~a mscnçao. o n~trlero demscnção de cada empregado. seu salário bruto e ~u salan" I' 'd >. ca cu e e escreva o nunero do:Â I 12'0 O d' d o IqUt O." ._, la a semana para uma data qualquer pode ser calculado pela seguinte fórmula:

Dia da semana = RESTO(TRUNCA(26 X \1 - O I) + D AQUOClENTE(SA) - 2 X S). 7) .., - + QUOCIE:"TE\A,4)

onde:M

d;~~~di~~-;I;~~:i; ;u"m:·;:;~;:a CIIUC U lcmpo-paarao (1100 na pnmeira linha) e <:> tempo

á < 3 ltUnut~s . - atribuir 100 pontos à etapa3:S A~ 5 mmutos - amõuir-go póiilosãelapa-

A> 5 minutos=~tribuj~-80--=--â ~5-;~t;~~-~;a;~;

b.2) o total de pontos de cada equipe nas três etapas'b.3) a equipe vencedora, •

c) Escrever:c.l) ~~~~d~:~a equipe, o número de inscrição, os pontos obtidos em cada etapa e o total de pontos

!::l1.12.19. Numa certa loja de eletrodomésticos o c ...be, mensalmente, um salário fixo mais comissã~ E~mercI~o en~arregado da seção de televisores rece·mero de televisores vendidos por mês, obede~endo :~a~~~I:~ã~:o~alculada em relação ao tipo e ao nú·

78

) • escreva os marcos quilométricos, a velocidade e o tempo decorrido entre as duas cidades, apenas

quanuo esle lempo for superior a 2 horas,} /5. 1.1%.15.05 ~alualilam~~rontaHleSCllS clientes. Essllªtllªli;zª~ª()el1volve.a aná-

_,-püe:crosdepósiIOS e ,eliradas de cada çonta Numa conla de saldo mínimo. uma laxa de serviço~~1IZl:_da se a conca cai abaixo de uma certa quantia especificada.

) Suponha que uma conla particular comece o dia com um saldo de RS 60,00. O saldo mínimo exigi-do ~ RS 30,00 e se o saldo de fim de dia for menor do que isso. uma laxa é reduzida da conta. A fim de queessa alualização fosse feita ulilizando computador, é fornecido, para cada conla, o seguinte conjunlo de

dados: • a primeira linha conlém o número da conta, o valor do saldo aluai e do saldo mInimo diário,

quantidade de transações e taxa de serviço;• as linhas seguintes contêm o valor e o código da Iransação (depósilo ou retirada).

Escrever um algoritmo que:• calcule o saldo (saldo/débito) da conta ao fim do dia (se o resultado for negativo, isto significa

insuficiência de fundos na conta);• escreva, para cada conta. o seu número e o saldo calculado. Se não houver fundos, imprima o

número da conla e a mensagem "NÃO HÁ FUNDOS";• utilize como flag o número da conla igual a zero.

Á 1.12.16. Uma empresa decidiu fazer um levantamento em relação aos candidatos que se apresentarempara preenchimento de vagas no seu quadro de funcionários, utilizando processamento eletrônico. Su­pondo que você seja o programador encarregado desse levantamento, fazer um algoritmo que:

• leia um conjunto de dados para cada candidato contendo:a) número de inscrição do candidato.h) idade,d sexo (masculino. feminino),d) experiência no serviço (sim ou não).

O último conjunto contém o número de inscrição do candidato igual li zero.

• calcule:a) o número de candidatos do sexo feminino,b) o número de candidatos do sexo masculino.c) idade média dos homens que já têm experiência no serviço,d) porcentagem dos homens com mais de 45 anos entre o total de homens,e) número de mulheres que têm idade inferior a 35 anos e com experiência no serviço.I) a menor idade entre mulheres que já têm experiência no serviço;

• escreva:a) o número de inscrição das mulheres pertencentes ao grupo descrito no item e,b) O que foi calculado em cada item acima especificado.

 1.12,17. Uma companhia de teatro planeja dar uma série de espetáculos. A direção calcula que, a RS5,00 o ingresso, serão vendidos 120 ingressos, e as despesas montarão em RS 200,00, A uma diminuiçãode RS 0,50 no preço dos ingressos espera-se que haja um aumento de 26 ingressos vendidos.

Fazer um algoritmo que escreva uma tabela de valores do lucro esperado em função do preço doingreliso. fazendo-se variar este preço de R$ 5,00 a R$ 1.00 de RS 0,50 em RS 0,50. Escreva, ainda. olucro máximo esperado, o preço e o número de ingressos correspondentes.!::l1.12.1S. A comissão organizadora de um ral/ye automobilístico dediciu apurar os resultados da com-

pctiçi10 através de um processamento eletrônico.Um dos algoritmos necessários para a classificação das equipes concorrentes é o que emite uma lis-

tagem geral do desempenho das equipes, atribuindo pontos segundo determinadas normas:

O algoritmo deverá:a) Ler:

a.l) uma linha contendo os tempos-padrão (em minutos decimais) para as três fases de competição;a.2) um conjunto de linhas contendo cada uma o número de inscrição da equipe e os tempos (em

minutos decimais) que as mesmas despenderam ao cumprir as três diferentes etapas. A últi­ma linha iflClg), que não entrará nos cálculos, contém o número 9999 como número de ins-

crição.b) Calcular:

b.l) os pontos de cada equipe em cada uma das etapas, seguindo o seguinte critério:

Page 52: Harry farrer   algoritmos estruturados

. A classe A recebe salário-mínimo. A classe B recebe salário-mínimo e mais 3% do salário-mínimopor peça. acima das 30 iniciais. A classe C recebe .salário-mínimo e mais 5% do salário-mínimo por peçaacima das 30 iniciais.

Fazer um algoritmo que:a) leia drias linhas. contendo cada uma:

• o número do operário,• o número de peças fabricadas por mês,• o sexo do operário;

b) calcule e escreva:• o salário de cada operário.• o total da folha mensal de pagamento da fábrica,• o número total de peças fabricadas por mês,• a média de peças fabricadas pelos homens em cada classe,• a média de peças fabricadas pelas mulheres em cada classe,• o número do operário ou operária de maior salário (não existe empate).

Observação: A última linha, que servirá deflag, terá o número do operário igual a zero.I:::> 1.12.22. Uma determinada fábrica de rádios possui duas linhas de montagem distintas: standard e luxo.A linha de montagem standard comporta um máximo de 24 operários; cada rádio standard dá um lucrode X reais e gasta um homem-dia para sua confecção. A linha de montagem luxo comporta no máximo32 operários; cada rádio luxo dá um lucro de Y reais e gasta 2 homens-dia para sua confecção. A fábricapossu i 40 operários. O mercado é capaz de absorver toda a produção e o fabricante deseja saber qualesque ma de produção a adotar de modo a maximizar seu lucro diário.

Fazer um algoritmoque leiaos valores de Xe Yeescreva, para esse esquema de lucro máximo, o númerode operários na linha standard e na linha luxo, o número de rádios standard e luxo produzidos e o lucro. 1.12.23. Fazer um algoritmo para calcular o número de dias decorridos entre duas datas (considerartambém a ocorrência de anos bissextos), sabendo-se que:a) cada par de datas é lido numa linha, a última linha contém o número do dia negativo;b) a primeira data na linha é sempre a mais antiga;c) ° ano está digitado com quatro dígitos;d) um ano será bissexto se for divisível por 400, ou se for divisível por 4 e não o for por 100.

PROBLEMAS ENVOLVENDO CÁLCULO DE SOMATÓlUOSI:::> 1.12.24. Fazer um algoritmo que calcule e escreva o valor de S:

I 3 5 7 ~S=-+-+-+-+ ..·+-I 2 3 4 50

I:::> 1.12.25. Fazer um algoritmo que calcule e escreva a seguinte soma:

2' 22 2) 250

-+-+-+ ... +-50 49 48 I

 1.12..26. Fazer um algoritmo para calcular e escrever a seguinte soma:

S = 37 x 38 +~ + 35 x 36 + ... + I x 2I 2 3 37

I:::> 1.12.27. Fazer um algoritmo que calcule e escreva o valor de Sonde:

I 2 3 4 5 6 -lOS=_-_+_-_+_-_o.o_I 4 9 16 25 36 100

I:::> 1.11.28. Fazer um algoritmo que calcule e escreva a soma dos 50 primeiros termos da seguinte série:

1000 _ 997 + 994 _ ~I + ...I 2 3 4

 1.11.19. Fazer um algoritmo que calcule e escreva a soma dos 30 primeiros termos da série:

480 _ 475 + 470 _ 465 + ...lO 11 12 13

80

.@

D. 1.1k.JU. t.screver um algoritmo para gerar e escrever uma tabelA em radianos. utilizando a série de Mac-Lauri t d a com os val~res do seno de um ângulo

n runca a, apresentada a seguir:

A1 A5 A'senA=A- - + _6 120 S040

~O;'~~r~:zvatores::os~gulos A devem variar de 000 a 6.3. inclusive, de 0.1 em O Ius;U;do a série: er um gonrmo para calcular e escrever o valor do número 1f. com P~cisão de 0.000 I.

1f= 4- ~ + ~ - ~ + ~ _ ~ + "o3 5 7 9 11

Para obter a precisão desejada, adicionar ape .I:::> 1.12.31. O valor aproximado de 1f pode ~:Sr c°al

scteurmlado°s cUJo dva10r absol~to seja maior ou igual a 0.000 I.

usan o-se a séne

S=..!..-.!-+.!--J..+ IP 3) 51 71 91

sendo 1T = VS x 32Fazer um algoritmo para calcular e escrever o valor de 1f com 51 teI:::> 1.~2.33. Fazer um algoritmo que: nnos.a) leia o valor de X de uma unidade de entrada' 'b) calcule e escreva o valor do seguinte somatório:

X:!S _ X24 X"J X 21 XI T + 3"" - ""'4 + ... + 25

I:::> 1.12.34. Fazer um algoritmo que calcule e escreva o valor de S no seguinte somatório:

S = _1_ _ 2 4 8 16384225 196 + 169 - 144 + ... + -I-

I:::> 1.12.35. Fazer um algoritmo que calcule e escreva a soma dos 20 primeiros termos da série:

100 ~ 98 97-+-+-+-+ ...O! I! 2! 3!

 1.12.36. Elaborar um algoritmo que:

a) ~~.~~~~reva o valor da série abaixo com precisão menor que um décimo de milionésimo

b) indique quantos termos foram usados.

S= 63 + ~ + 59 + 57 + ...1! 2! 3!

 1.12.37. Fazer um algoritmo que calcule e escreva a soma dos 50 . . .pnmelros termos da séne:

I! _ 2! 3! 4! 5!- -+---+I 3 7 15 31 - ...I:::> 1.12.38. Fazer um algoritmo que calcule o valor de e' através da série:

Xl x2 Xle'=xO+-+_+_+ ...l! 2! 3!

de modo que ~ mesmo difira do valor calculado através da fun ão EX .de xdeve ser bdo de uma unidade de entrada. Oalgoritmodev ~ Pde. no mb,lmo, 0.0001. O valoratravés da série. o valor dado pela função EXP e O número d et escrev~r.o valor de x, o valor calculado 1 P.39 FI' e ermos utilIzados da série• - • azer um a gontmo para determinar e escrever o valo d' ..r o seguinte somatóno:

S = X _ X2 X4 X·-+---+3! 5! 7! '"

81

o

~

••••O(}IQ

O{:~(;,

~G)

a

Page 53: Harry farrer   algoritmos estruturados

j 82

São 64 quadros

63

Fórmula: L 2"n "" ,

1y,= 3' x

!'c: 1.12.47. Fazer um algoritmo para calcular e escrever . d ~ . - .dldos entre B e A. Suponha que os valores de B e A (B ~s~~la _o~ ~ubos dos numeros pares com:Jreen-6. 1.12.48. Fazer um algoritmo que calcule o volume d . sao ados em ~ma linha. .variar de Oa 20 cm de 0.5 em 0,5 cm. e uma esfera em funçao do nno R. O raio dewrá

Ó. 1.12.~. A, coordenadas de um ponlo (x, y) estão disponívei, em uma unid ..valores (até quando umj1ag llcorref) e escrever "INTER10R" ., . . ade de entrauLl. Ler ,,',escªdamostradaabaUo.t ,. <: /.. ! " . se lJ ponto eSlIver dentro da região h'l 'hu-

+-;!'T 11'/' YrHaso cOlltrárlO. escrever "EX'fEJti()R". m ..... "--

83

v = ~JrR)3 .

Ó. 1.12.49. Fazer um algoritmo para calcular e escrever a . d •numa circunferência de raio R. O número de olío ar~a e um. polIgono re~ula~ de ~ lados inscritolinhas seguintes serão fornecidos os valores l N""°Rnos sera forneCido na pnmelra lInha de dado> e nasÁII'-OP • . e e.

• _.::l • ara um polígono regular mscrito numa cÍJ1 nfi • . '.no, mais seu perímetro se aproxima do com rimen cu. erencI~. q~anto mUl.or o numero de lados do !X'lígo-e o rJ.Ío da circunferência for UlÚtário o s p. . to da~lrcu~erencJa. ~e o numero de lados for mu ito grande

Fazer um algoritmo que escre~a u~~::~~e~~ o ~líg?nO tera um valor muito próximo de "'.polígonos regulares inscritos. numa circunferência dsem.lpen~~t:o eOm f~nção do número de lado:,. para5 a 100 de 5 em 5. e raio unUano. numero de lados deverá va"';:JC de

f::, 1.12.51. Construir uma tabela de perd d -10.0 Os. de 0.1 em O, I, através da fórmuI: d: ~:;:e~~~~~~;~:~f:~aa~'(a~:õesque vaiem de 0.1 Os a

J = QW X 10.643 X O"" X C-"'sonde:

J perda de carga (m/IOOOm);Q vazão (m.'/s);O diâmetro de tubo (m:);C coeficiente de rugosidade.

Os valores de O e C serão lidos de uma unidade de entrada Cons'd6. 1.12.52. Fazer um algoritmo que calcule e escreva o número de' _ J er~ como flag o valor O = O.tabuleiro de xadrez, colocando I no primeiro quadro d graos de milho que se p....de coloca: num

e nos qua ros seguJnles o dobro do quadro ant~rior.

-c ay= ---u+---v

ad-bc ad-bcd b

x= ---u----vad - bc ad - bc

é dada por:

h(x) = x2 - 16

f(x) = {h(X), se h(x) ;;:: O1, se h(x) < O

d "" ~(X2 - XI)2 + (Y2 + YI)2

Escrever então um algoritmo que, lendo várias linhas onde cada uma contém as coordenadas dosdois pontos, escreva para cada par de pontos lidos a sua distância. A última linha contém as coordenadasXI' Xl' Y" Y2 iguais a zero.6. 1.12.43. A solução x. Ypara o sistema de equações lineares abaixo:

ax + by = ucx + dy = v

g(x) = {X2+ 16, se f(x) = OO. se f(x) > O

Escrever um algoritmo que:• leia várias linhas, onde cada uma contém os parâmetros a, b, c, d, u, v do sistema (a última linha

contém os valores de a, b, c, d iguais a zero);• calcule a solução x, Yde cada sistema dado por seus parâmetros;• escreva os parâmetros lidos e os valores calculados.

Ó. 1.12.44. Fazer um algoritmo que, tendo em uma unidade de entrada os parâmetros A e B de uma retano plano dado pela equação Y = AX + B, determine a área do triângulo formado por esta reta e os eixoscoordenados.

O algoritmo lerá um número indeterminado de linhas, cada linha contendo um par de parâmetros(A, B). e para cada par lido deverá escrever: os parâmetros A e B e a área do triângulo.

A execução do algoritmo deverá terminar quando ler uma linha com um par de zeros.Observação: Se, em uma linha (à exceção da última), um dos parâmetros for igual a zero, não haverátriângulo - assim, o programa deverá imprimir A, B, e O(zero).Á 1.12.45. Fazer um algoritmo para tabular a função y = f(x) + g(x), para x = 1,2, 3..... 10 onde:

usando os 20 primeiros termos do somatório. O valor de X é lido de uma unidade de entrada.A 1.12.40. Fal.el" um algoritmo que:lIJCafcü1e1Yvator do co-seno de x atra'Jés 4c2().Il:rmOS da série seguinte'

x2 x· - x6 . Xl

co-seno (x) = 1 - - + - - - + - - ...2! 4! 6! 8!

b) calcule a diferença entre o valor calculado no item a e o valor fornecido pela função COS(X).c) imprima o que foi calculado nos itens a e b.Ob.fcrvação: o valor de x é fornecido como entrada.

PROBLEMAS DE APLICAÇÃO EM CltNCIAS EXATAS6. 1.12.41. Escrever um algoritmo que:

• leia várias linhas. cada uma delas contendo um valor a ser armazenado em X.• para cada valor X lido. calcule o valor de Y dado pela fórmula:

Y =2,5 * cos IXI2!

• escreva os valores de X e Y.Observaçeio: A última linha de dados. cujo conteúdo não será processado, deverá conler um valor nega-tivo. Use esta condição para testar o fim do processamento.6. 1.12.42. Sejam P(x

l, YI) e Q(x2, Y2) dois pontos quaisquer do plano. A sua distância é dada por

"

)

},

)

-l}

}

( )

Page 54: Harry farrer   algoritmos estruturados

O".,~rvaçéI(): Desvio padrão =

f(x, Y) = x2 + 3x + y2

xy - Sy - 3x + IS

Fazer um algoritmo que:• considere como primeira aproximação X = 1.5;• calcule e escreva a trigésima aproximação da raiz.

t:. I.11.56. Fazer um algoritmo que tabule a seguinte função;

()

)..0)

,,, ...

"•

fi(I

•e

fi)

••••()oo(..".'~.. '.'w()()

()()

J~)

()

A - Yi + Yi + I- 2 . h. área de cada trapézio

h b-a= Xi + I - xj = -- =conslanten

Fazer um algoritmo para determinar e escrever o valor de 77', o qual pode ser calculado pela integral:

1T =41' _1_ dxo 1+ x2

Yk+ I = y, + hf(x,. Y.)

onde II é um acréscimo que se dá aos valores de .To

x. limite superior do intervalo'Xo limite inferior do intervalo' •n número de subintervaloso •

Fazer, portanto. um algoritmo que encontre e escreva I - .com ylO) = 1 no intervalo fechado de Oa 1 com n _ 10 ~.so uç~s aproximadas da equação y' = xy6. 1.12.63. Fazer um algoritmo que: • - su mterv os.

o calcule o número de divisores dos números compreendidos entre 300 400,. escreva cada número e o número de divisores correspondentes e .

... 1.1•.64. Fazer um algoritmo que. dados 100 números int . . ..números perfeitos. elros POSItiVOS, calcule e imprima os que são

Nota: Número perfeito é aquele cuja soma de seus divisores exc I ..Exemplo: 6 é perfeito porque 1. + 2 + 3 = 6. . eto e e própnoo é Igual a" número.

85

h = x. - Xon

... 1.12.60: Fazer um algoritmo que:o ~~e:;conjunto de 25 linhas, contendo. cada uma três números inteiros positivos (em qualquer

o calcule o máximo divisor comum entre tr-' . . .sucessivas; os es numeros lidos, utilizando o método das divisões

o escreva. os três números lidos e o mod.c. entre eles.6. 1.12.61. a numero 3025 possui a seguinte característica:

{30 + 25 = 55552 = 3025

Fazer um algoritmo para um programa ue . . omos que apresentam tal característica. q pesquIse e Impnma todos os números de quatro algorit-

6. 1.12.62: Dada u?la equação diferencial y = f(x,y) e a condi ão in' . -uma soluçao aproximada desta equação. usando o seguinte mé(odo: IClal Y(XO) - YO' pode-se encontrar

y, = Yo + hf(xo,yo)Y2 = y, + hf(x,.y,)

o.tazer um algommo que leIa um conJumo oe unnas caoa uma conCódIgo MULTIPLICA indica que se quer operar a multiplicação dos t·nao

•um coolgo e quatro valores.~s pelos quatro valores (ri' 6•• f

J• 8z). CódijoDIVIDE indi OIS numeros complexos represen­

códIgo VAZIa vai indicar fim de dados Para cada ca que a operaçJo~ é a divido Ee os valores obtidos. . ope~Çilo completada, escrever todos os valores lidos

... I:l~~. ~ cálculo do valor de uma integral definida. us d oé feIto dlvldmdo o intervalo de integração em n parte' . an o o ,:"étodo da aproxImação por trapézios

bt'd SIguais e aproXImando a fi • 'o I O. po~ um segmento de reta. a valor da integral é calcul d ti unçao. em cada subintervalosos trapézIOs formados. a o, eo o, como a soma das áreas dos diver-

~ (i x~ - -!- (i x,)11N 1 i~1 N i-I

Ao. 1.12.58. Números complexos podem ser escritos na forma cartesiana Z = x + iy ou na forma exponencialZ ~ r fiO. Multiplicações e divisões de números complexos na forma exponencial ficam muito mais fá-

ceIs de serem feitas, pois assumem a seguinte forma:

pa.ra x = 1.4.9.16•...• 100;c Y = O. 1. 2, ...• 5 para cada valor de x.... 1.11.57. Tem-se 10 conjuntos de valores. onde cada conjunto é formado pelo número de um aluno. a

nto>ta provisória do seu trabalho prático e a data em que foi entregue.

Fazer um algoritmo para:a) Calcular e imprimir a nota final de cada aluno. sabendo-se que os trabalhos entregues:

• até 20104. nota final = nota provisória + 10 pontos;• até 02/05. nota final = nota provisória;• até 30105. nota final = nota provisóriaJ2;• até 30106. nota final = O.

b) Calcular a média e o desvio padrão das notas provisória e final.

Z, x Zz = rlei~ X r2e'" = (r, X r2) ei(~ + B,)

Z .~

--.!.. =~ = .!!.-e'(~+")

Zl rlei" rI

bastando, portanto, operar os módulos (r, e rz) e os argumentos (8, e 82),

a algoritmo deverá prever 20 aproximações.t:. ~ _t 1.55. Dada a equação x) - 3x1 + I = O, pode-se en~ontrar qualquer urna de suas raízes reais atra-

vé~ de aproximações sucessivas utilizando a seguinte fórmula:

~X;.:~.:..---=3.:..X=.:~.:..+--=-1X.+,=X.- - 3X;' - 6X.

 1... 1.53. Um certo aço é classificado de acordo com o resultado de trê~ testes, que devem verificar se

o mc::smo satisfaz às seguiiltes especificações:Teste I _ conteúdo de carbono abaixo de 1%;Teste 2 _ dureza Rokwell maior que 50;Teste 3 _ resistência à traçio maior do que 80.000 psi.

,Ao aço é atribuído o grau lO, se passa pelos três testes; 9, se passa apenas nos testes I e 2; 8. se passano teste I; e " se não passou nos três testes. Supondo que sejam lidos de uma unidade de entrada: númerode U"Wlostra, conteúdo de carbono (em %), a dureza Rokwell e a resistência à tração (em psi) - fazer umalgc>ritmo que dê a classificação de 112 amostras de aço que foram testadas, escrevendo o número da

am~strae o grau obtido. 1_11.54. Fazer um algoritmo para calcular a raiz quadrada de um número positivo, usando o roteiro

abai xo, baseado no método de aproximações sucessivas de Newton:

Seja Y o número: y• a primeira aproximação para a raiz quadrada de Y é XI = "2;

• as sucessivas aproximações serão: X. + I = X~+Y2Xn

Page 55: Harry farrer   algoritmos estruturados

De~lna tipo de variáveisAt~bua valores iniciais necessário"re !la -

"e I > 101 então interrompa~kii!NOTAAcumule NOTAConte as nOlas lidas

fl!TJ repit!!Calcule a média das nOlasConte os alunos .E .. com nOla supenor à média

screva a media e o número d Ialgoritmo. e a unos com nola SUperior à média

. Acumule NOTA

I rit o

SOMA ~ SOMA + NOT.-\ref.

Estruturas de Dados

R7

2.1. INTRODUÇÃO

~omo já foi visto, vari)Íveis .atraves de um algoritmo visand:or:es~ondem a POSIÇõeS de memória h ua··declaração quando ent~ Ih _ aunglrresultadospropostos Uma' "q llsoprogramadortelnacesso. ' ,ao, e saoass . d . vanave pas '. .

na por ela representada Qual' • OCHl os um nome ou identificador sa a eXlstu apartir de sua. '. . quer referénc·" e a respectiva '-unlca pOSição de mem' . Ia ao seu Identificador' 'fj. posl~aodc memó-

Eona. sIgO! lca o acesso a •

sle capítulo tratará da fo -, o comeudo de um"adotado par I _ rma de se ter acesso a co .a a so uçao de um determinado problema. nJuntos de dados agrupados segundo o algoritmo

O Eltemplo 2.1

~aginando que se deseje calcul' . .umero de aluno . ar a media das notas de 10 Itmo: s que lIveram nota superior à média calcula~aun~~ de uma disciplina e determinar o

,p e-se desenvolver o seguinte algo-

~-

_._- I----

Inri

l

fim

jef1m

y=ax+b

b = 1'/' 1:x1 -r.x ·1:xyn r.x 1 - (r.x)'

;:.1

.L X,'Ii

i""'

y

~.

." o'.,. ,"..............:..... • x

nlxy - 1:x . 1:'1n I.x1 - (I:X)1

Ixy

;.:01

As fórmulas para os coeftcientes Cl e b. dado um conjunto de n pares de pontos (x,y), são

o intervalo de variação de Ré de - I~ R~ 1. Quanto mais próximo de I ou - I ficar o valor de R,

melhor lerá sido o ajustamento da reta.Fu~r um algoritmo para ler e imprimir um conjunto de pares de ponlOs (x,y) e calcular eescrever os

YlIlorcll de tI, "c R.A 1.\1.66. Capicuas são números que têm o mesmo valor. se lidos da esquerda para li direita ou da direita

para a CIIq\lcrda. Ex.: 44, 232 etc., FIl~r unlll.lgoritmoque determine e escreva todos os números inteiros menores que 10.000 que são

quadl'ldulI perfCitOli e capicuas ao mesmo tempo.A 1.12.67. Nllmcro primo é aquele que só é divisível por ele mesmo e pela unidade.

Pat.er um a\S0ritmo que determine e escreva os números primos compreendidos entre 5.000 e 7.000.

A 1.12.68. Pa7Ar um lI\gorílmo que:, .1~11l um conjunto de linhas contendo, cada uma, um número inteiro, na base 10, de até cinco dí-

1'101. A G\lilt\l\ linha contém o valor zero;• ltAnlrorme C~IIC número da base 10 para li base 2;

,:. lecfOVIl O ndmero na base 10 e na base 2.

A 1.12.69. fazer um alsontmo que:., ::"" l~l',\Ip\. ~unlo de linhas contendo, cada uma, um número inteiro na base 3. A última linha

'/oconum Oya\or zero;, ~'. traMforme elao ntimero na base 3 para a base 10;. • oacnv,onllmcro na buse 3 e na base 10.

, .. --, .•~~~lí..'ll~! ';úi:~;;J"·~.rú.~t~. .'- .: -.. ,.

~ ,~.,~;_. -)kf;:~_'

R== nr.xy-I.X·1:y

~nL.x1 - (r.X)1 . Jn'f.y1 - ('Ey)l

Uma vez al:hada a equação da reta, é importante determinar a precisão de ajustamento dessa linhallll~ d~\dlls reais. Uma medida disso é o coeficiente de correlação R, dado pela fórmula

a==

sendo: l.x == !. x,;"1

,)

)

}

)

). /). 1.12.65. Regressão linear é uma técnica estatística que ajusta uma equação linear (da fooou Y= ax + bJJa-um~LkpºIllosAados. ºpro~l~ma consiste em achar uma equação linear que melhor se ajuste

_, aes poRtos dados Um dos métodOS empregaoose o365- ITtÍlllmmquadlados. que~ em minimí.z.ar4\ soma dos quadrados dos desvios vertIcaIS dos põiUospara alinha reta. ---------------

),)

l

(

( )

)

li~

)

Page 56: Harry farrer   algoritmos estruturados

AI

/)I")')/),,)

)(C"')

C)

•e•olOfi}

•o')

()ooo••••oQ<:)

o()

ooo

~ MÉDIA. NOTAI, NOTA2. NOTA3, NOTA4. NOTAS. NOTA6NOT~7.NOTAS. NOTA9. NOTAIO. QUM"TIDADE. SOMA'Duménco

QUANTIDADE~ Om NOTAI. NOTA2, NOTA3. NOTA4, NOTA5. NOTA6 NOT ~7

NOTAS. NOTA9. NOTAIO ' '.

SOMA+-NOTAl + NOTA2 + NOTA3 -r NOTA4.,.. NOTA5 -r NOTA6, + NOTA7 + NOTAS + NOTA9 + NOTAIO

MEDIA ~ SOMA/lO

j NOTAI> MÉDIA.entãQ QUANTIDADE +- QUANTIDADE + 1

.fim..&

j NOTA2 > MÉDIA

mliQ QUANTIDADE f- QUANTIDADE + Illin..&

j NOTA3 > MÉDIA

.en!ãa QUANTIDADE~ QUANTIDADE + I~

j NOTM > MÉDIAe.n\ãQ QUANTIDADE r QUANTIDADE + I~

j NOTAS > MÉDIAm!.ãQ QUANTIDADE +- QUANTIDADE + I~

{Definição do tipo das variáveis}dWm J, M~DJA. ~o:rA, QUAN1lDADE numérico

{AtribUição de valores iniciais necessMios}1+-0QUANTIDADE +- OkiiMÉDJAlljJllia

j ~:tã~Ointerrompafiin...skiiNOTA

{Contagem dos alunos com nOla SUperior à média}j NOTA> MÉDIAenüQ QUANTIDADE +- QUANTIDADE + I

fiin.R1+-1+1

ti ln renit"

~ QUANTIDADEfim al~oÓtmo.

, . Os dois programas a serem criados a partir desses dois alaoritmos podem oe. .praticas em problemas mais complexos. '" aSlonar Situações pouco

A outra fonna de resolver o problema ~ '.rar 10 variáveis para o armazenamento das ~~~:~: ~rramentas dlspo~veis até o momento. seria decla­IOde comparação. O algoritmo segundo este e~çoqru mficoman~ode leitura. um de acumulação e outros

, lU' e. Ica asSim:

{Definição do tipo das variáveis}declare I, MÉDIA. NOTA. SOMA numérico

{Atribuição de valores iniciais necessáriosJ

Ref. A~ribua valores iniciais necessários

11+--0S<>NA~O

QUANTIDADEE-Ofim cet"".

lf-l+1fim repita

{Cálculo da média}MÉDIA f- SOMA/lO

{E.~crilada média}~MÉDIA

Cim all0rilmo.

ReL I::>efina tipo das variáveisI declare I, MÉDIA. NOTA. QUANTIDADE. SOMA numérico

fim ref.

Ref. Calcule a m~dia das notasI M~DIA ~ SOMA/lO

fim ret"".

1 .-0SOMAf-O~;pilil

i Ic~~interrompaCiDl.Klc.Ul NOTA

{Acumulação de nota}SOMA +- SOMA + NOTA

{Contagem de notas lidas}

I------------------------

Para se proceder à solução do refinamento "Conte os alunos com nota superior à média", faz·se ne·ccssári a a comparação de cada uma das 10 notas com o conteúdo de MÉDIA. Mas surge um problema, oconju n ~() de notas utilízado para o cálculo da média estava disponível na unidade de entrada, e uma vezlidos os dados, não se tem mais acesso a todos eles. pois s6 se consegue manipular a última nota lida quese encontra annazenada na variável NOTA.

Com os recursos do capítulo anterior. é possivel solucionar o impasse de duas maneiras. Uma delasseria a divisão do algoritmo em dois. ou seja. um leria as notas e calcularia a média. o outro leria a média e,nova.rnente. todas as notas para que as comparações pudessem ser feitas. Os dois algoritmos ficariam assim:

I" C ..114:-- J+ 1fim ref'"_ .

Page 57: Harry farrer   algoritmos estruturados

90

fim algoritmo.

91

Algoritmo

I f- I

TIitae I > 10i então interrompa~.klli! NOTAli]I f-I + 1

fim repita

fim algoritmo.

1.- IrwiJ.;l~I > 10I então interrompa~leia NOTA[I]SOMA .- SOMA + NOTAli]1.-1+1

fim repitat\IEDlA f- SOMNIO

NOTA

A urna referê?cia à NOTA. II ). antes de ser consultada a variáwl composta NOTA. I seria substituí-do pelo seu conteudo no dado /Ilslante. Neste caso. está-se referenciando ao elementod' .,_.,,__ 6 . d . . n o conJurl.lo YUltcUl-UJlJU1\,.o;; assocIa O,.nu seja, a-llOta- ...1..

oExemplo 2.4

Escrever? trecho do algoritmo que faça a leitura de 10 notas dos alunos de uma disciplina e armaz.ene-asnuma vanávcl composta NOTA: .

AI"on1mo

~upo.n?o que as notas fossem 70, 75.80,90.65.85.75.85.91.92 e estivessem uma em cada linha deum dlspostuVO de entrada. após a cxecução do trecho do algoritmo anterior, a variá\'el NOTA ticaria as,im:

o Exemplo 2.5

Escrever o trecho ~o algoritmo que leia um conjunto de 10 notas, armazene·as na variável composta NOTA.e calcule a sua media.

I[I]

NOTA

j NOTA6> MÉDIA~ QUANTIDADE f- QUANTIDADE + 1

tíin:K-

No mesmo conjunto NOTA. esboçado no exemplo 2.2, utilizando-se da variável I. tem-se a possibilidadede acesso a qual(IUer uma das notas armazenadas.

O Exemplo 2.3

)

)

)

j =~~~~I:DE f- QUANTIDADE~--------

fiin..R _

, NOTAS> MEDIAm1ãQ QUANTIDADE f- QUANTIDADE + I

~ -i

NOTA9 > MEDIAm1ãQ QUANTIDADE f- QUANTIDADE + I

fim..s _~ NOTAIO> MEDIAI mliiQ QUANTIDADE f- QUANTIDADE + I

~~ MÉDIA, QUANTIDADE

)~~.:::o::'~t=:... --:)

I Variáveis compostas homogéneas correspondem a posições de memória, identificadas por um mes­mo nome, individualizadas por índices e cujo conteúdo é de mesmo tipo.

I O conjunto de 10 notas dos alunos de urna disciplina pode constituir uma variável composta. A estel conjunto associa-se o identificador NOTA que passará a identificar não uma única posição de memória.

mas lO.) A referência ao conteúdo do n-ésimo elemento do conjunto será indicada pela notação NOTAln].

onde n é um número inteiro ou uma variável numérica contendo um valor inteiro.

)O Exemplo 2.2

) Supondo-se que em um dado instante a variável composta NOTA contivesse os seguintes valores.

J

J NOTAl31 estaria referenciando o terceiro elemento do conjunto cujo conteúdo é 90.

). É possível, também, a utilização de uma forma de acesso genérico. através de uma variável que con-

tenha um valor inteiro.

)

)

)

>

( }

) Novamente, tem-se uma soluçft0 bem pouco prática, em virtude do tamanho do texto que seria ob-tido. Se. ao invés de 10 notas, houvesse 100 ou 1.000 notas, a elaboração deste algoritmo seria imprati­

, cável.. A introdução do conceito de variáveis compostas visa facilitar a manipulação de conjunto de dados

;,.J de mesma natureza, na memória do computador. Embora aumente o grau de abstração dos algoritmos.~ representa um grande passo no desenvolvimento das técnicas para confecção de algoritmos.

) 2.2. VARIÁVEIS COMPOSTAS HOMOGÊNEAS

Page 58: Harry farrer   algoritmos estruturados

NOTA

,.~)

-~i, .. 1

'\)"

'~ ,')-}'~)

,"""'.. ~,.J

•••eC).,•oJC)o''''')''t "\",

fi

••••ooo()

()()

oo

12 19 32

69 14 37

11 112 42

93

IDADE

~NOME

~

3

MATRIZ1 2 3

2

2.2.1. Variáveis compostas unidimensionais

PESO

A partir do conceito fundamental de variáveis compostas são criadas estruturas de dados mais com­plexas. visando adequar o instrumento aos vários problemas do dia-a-dia do programador. Assim, sur­gem as variáveis compostas bidimensionais, que necessitam de dois índices para1ndividuaJizaçio de seuselementos. São muito úteis quando se tem que manipular matrizes e tabelas. O primeiro índice representao número da linha e o segundo, o número da coluna.

Conjuntos de dados referenciados por um mesmo nome e que necessitam de somente um índice paraque seus elementos sejam endereçados são ditos compostos unidimensionais.

o Exemplo 2.8

A variável MATRIZ é constituída por nove elementos dispostos em três linhas de três colunas cada:

MATRIZ[2,2] referencia o elemento da segunda linha e segunda coluna. cujo conteúdo é 14; MA­TRIZ[2.3] referencia o elemento da segunda linha e terceira coluna, cujo conteúdo é 37.

O conceito de variáveis compostas bidimensionais é estendido para as de D dimensões. Trata-se,apenas, de uma facilidade a mais, visto que o conjunto de índices, conceituaimente, pode ser encaradocomo um refinamento da individualização do elemento do conjunto. A seguir, serão abordadas as variá­veis compostas unidimensionais e as mu1tidimensionais.

o Exemplo 2.9

São unidimensionais as variáveis NOTA, PESO. IDADE e NOME ffi0stradas a seguir.

1.2.1.1 DECLARAÇÃOA criação de variáveis compostas unidimensionais é feita através da seguinte declaraçlo:

De forma genérica, utilizando a variável íNDICE, tem-se:

..QUANTIDADE ... O.4-1 '.

'..

(NDIC::E-7:i!' N03A,((NDlCEl > 60

~

CJ Exe....plo 1.7 I IEtlcrcvcr o trecho do algoritmo que, tendo em ~ista a v~ável composta montada no exemplo 2.5. ca cu e

e ClereVI' o número de alunosDcEom n?ta sudPenoar

armà ~~::a; o número de alunos que estão nas condiçõesA. variável QUANTlDA sem usa a par

••pecl fie.dos pelo problema.

i NOTA[7] > 60

~

o Ellenap10 2." I 60Escrever a estrutura que compare °conteúdo da sétima posição da variável NOTA com o va or .

Page 59: Harry farrer   algoritmos estruturados

A Cll.ClCuçln do cnmandn "c!lcrcva" ocasionaria o aparecimento de

Dados na unidade de entradah. 40. 90, 37,18

Finalmenle, inserindo-se os refinamentos em seus respe..otivos luga;~so obtem-se:

9S

I o't oDefma tipo das variáveiski.íI NÚMEROS(ljo.J,ÚMEROS(IOO!Verifique se existem elementos iguais a 30

fim algoritmo.

{Definição do tipo das variáveis}declare NÚMEROS(I:IOO] numérico~ [ numérico1m NÚMEROS(I] ...Nl'MEROS(IOO]

-----_ .._-------------

Ref. Defina tipo das variáveis

I~ NUMEROS(I:lOO] numéricodeclare 1 numérico

fim ref.

Ref. Verifique se existem elementos ieuais a 30I ..... I ~

repitase I> 1001 então imecrompa~

i NÚMEROS(I) = 30então escreva I

~lt-I+l

fim repitafim rel'.

1't!A[l51 .'m'riç.llliA(I] ...A(5]~A(I] ...A(S]

fim algoritmo.

Ler um conjunto de cinco elementos numéricos. armazená· lo na variável A e escrevê-lo.

na unidade de saída.

o Exemplo 2.13

Ler uma variável de 100 elementos numéricos e verificar se existem elementos iguais a 30. Se existirem.escrever as posições em que estão annazenados.

DEmnptoZ.n

2,2,2,2,2,2'. ,

Com esta declaração, cria-se uma estrutura de dados constituída por lO elementos numéricos,

~nucreçáveispor índices que podem variar de I a 10.

M

~J 2 3 456

· -~ lisla de iUl:nlifit.:adores [t'i:tsjl

~ ~ M[\:6] numéricoI ~ I numérico) I +- I1 '.

I+-I + I;Oro repilamlIWl Mil). MI2) ... M[6]

fln, nlunritlnt\i .

Apólll cll.ccuçilo do "repita". a variável composta M ficaria assim:

i .~ NOTA[I:lO] numérico

)

tJ Exemplo 2.11

U'rccnchcr II arranjo M. abaixo, com o valor 2.

de: -~-----------

--)- ~:ident~::~ores :ã~m.:,~:::~:c~:~~~às variáveis que se deseja declarar;) fi é o limite inferior do intervalo de variação dos índices;

is é o limite superior do intervalo de variação dos índices;) t é o tipo dos componentes da variável (numérico, literal, lógico)

) As regras para a formação dos identificadores das variáveis compostas são as mesmas dos identifi-ladores das variáveis simples. Quanto aos índices, a única restrição é que o limite superior não seja me­

nor do que o limite inferior (fs ~ fi).

bExemplo 2.10

t. hcclarar uma variável composta de la elementos numéricos de nome NOTA.

Page 60: Harry farrer   algoritmos estruturados

J+- I

PC

:)

:)

'))")

")

Or3CPe•ooii

•,~~-4.1

Qoo()

•••••<)

oo()C)

oQ

oI..~Cl.

{ma~cula em Programação de Computadores}{maUicula em Cálculo Numérico}

Ref. Leia a matrícula dos alunos que estão cursando CNJ~ 1

~. CN[I]

dlf~Ji::~~ih-I + I

fim repilafim rer.

Ref. Verifique a matrícula simultânea em PC e CNI t- Il!iJ2Í1a

j PC[lJ = 9999eotão interrompa

fun..gJ t- 1

~.t CNjJJ. = 9999 Qll PC[lJ = CNfII

entao IPlerrompa~J~J + I

fim reuila

i PC[II = CN[J]então escren perl]~It-I+I

fim repitafim ref.

97

Ref. Declare as variáveis

I~ PC[1:15IJ.

CN[I:221]numérico

~ I. J numéricofim rer.

~ {Declaração das variáveis}I~ ~[f~:~~~]J' {matrícula em P~gramação de Computadores}. {matrícula em Calculo Numérico}

Pode-se observar que. mesmo para o caso extremo em ue h .mação de Computadores e 220 alunos matriculados e C'Iq I ~r;} IS? alun~matriculados em Prograposta PC quanto na variável composta CN uma posiç~o a cU.°deu~énco. ~XI~te .tanto na variável com9999. a m3JS vldo à e:ustencla da matrícula fictícia

Inserindo-se os refinamentos em seus respectivos lugares no algoritmo. tem-se:

221

ISO

2204 5 6

4 5 6

2 3

2 3

Rcr. l.-ei3 a matrícula dos alunos que estão cursando PCI+-I

11·PelllPC[I) = 9999

~tãO inlcrrompa

I~I + Ifim repita

fim rcf.

Declare variáveisLe ia a matrícula dos alunos que estão cursando PCLe ia a matrícula dos alunos que estão cursando CNVerifique a matrícula simultânea em PC e CN

fim ahloritmQ.

j J> 100'Mio inlcrxo!DPa

&..K

j NÚMEROS[lj = 30cntAo escreva 1

tiíD..KI~l + 1

fim repitafim aJpritmo.

{Verificação da exislência de elementos iguais a 30}

o ExeIRplo Z.14

O Instituto de Ciências Exalas da UFMG deseja saber se existem alunos cursando. simultaneamente, asdisciplinas "Programação de Computadores" e "Cálculo Numérico". Existem disponíveis na unidade deentrada os números de matrícula dos alunos de "Programação de Computadores" (no máximo ISO alu­nos) e de "Cálculo Numérico" (no máximo 220 alunos). Cada conjunto dos números de matrícula dosalunos de uma disciplina tem a matrícula fictícia 9999 no final.

Formular um algoritmo que imprima o número de matrícula dos alunos que estão cursando estasdisciplinas simultaneamente.

Trata-se. então. da verificação da ocorrência de um elemento de um conjunto em um outro conjun­to. Assil"ll. após a leitura dos dados. pooeriarn estar montadas as seguintes variáveis compostas unidimen.siom\is PC e CN contendo. respectivamente. os números de matrícula dos alunos que estão cursando:"ProgralTlação de Computadores" e ''Cálculo Numérico".

~IIJJ'__ _______JL~ 9999

CN

=l- -----L..-_-.1...._99_ 9_9 _

151

Page 61: Harry farrer   algoritmos estruturados

98 99

DOVÕO

-oNUMEROCCLIENTE"

15

16

O

90

16

15

LUGARESDISPONÍVEIS

727

331

221

291

4471

N.ODOS VÔOS

2

3

35

36

37

I ritmDeclare as variáveiskiª: VÔOS[I] ...VÔOS[37J. LDISP[I] ...LDISP[37]

Ita

llli CLIENTE, NVÔO~ CLIENTE = 9999I então interrompa~Verifique a existência do vôoVe~fique a existência de lugar

fim repitafim al~oritmo.

Ref. Verifique a existência de lugar

1APONT * Oe l-O s LDISPlAPONT] > O

então escreva CLIENTE, NVÔOI _Atualize o nú!l!ero de lugares disponíveisI senao escreva NVOO. "LOTADO"fim se

Ref. Verifique a existência do vôoI +- O

TI'taI+-I + I~ I =_3~ ou VÔOS[I] = NVÔOI entao mterrompa

fim...g,fim rgita

1V OS[I] = NVOO~APONTt-l

senão eScreva "VÔO INEXISTENTE"I APONTt-O~

fim rer.

~fim ref.

I+-I

n·CN[IJ

: CN[I] = 9999, então interrompafim...gIt-I+I

fim repita{Verificação da matrícula simultânea em PC e CN}

1llill!~.r.i.çQ

LlulImérico{Leitura da matrícula dOs alunos que estão cutsanâóPel

}+- I

rr·PC[I]

PC[I] = 9999~ãO interrompa

It-I+Ifim repila

{Leitura da matrícula dos alunos que estão cursando CN}

I +- It·

j. PClII = 9999então interrompa

t:iJI!.gJt-I

TIise CN[J] = 9999 QY. PC[I] = CN[J]1 então interrompafi!n.gJt-J+ I

fim repita

iPC[I] = CN[J]então escreva PC[I]~It-I+ I

fim repitatim alll0ritmo.

o Exemplo 2.15Escrever um algoritmo que faça reserva de passagens aéreas de uma companhia. Além da leitura do nú­mero dos voos e quantidade de lugares disponíveis. ler vários pedidos de reserva. constituídos do númeroda carteira de identidade do cliente e do número do vôo desejado.

Para cada cliente. verificar se há disponibilidade no voo desejado. Em caso afirmativo. imprimir onúmero da identidade do cliente. e o número do vôo. atualizando °número de lugares disponíveis. Casocontrário, avisar ao cliente da inexistência de lugares.

Indicando o fim dos pedidos de reserva. existe um passageiro cujo número da carteira de identidadeé 9999. Considerar fixo e igual a 37 o número de vôos da companhia.

Estrutura de dados necessária:

Page 62: Harry farrer   algoritmos estruturados

o Exemplo Z.16

Fazer um algoritmo para corrigir provas de múltipla escolha. Cada prova tem 10 queslões. cada ques130valendo um ponto. O primeiro conjunto de dados a ser lido será o gabarito para a corrcção da prova. Osoutros dados serão os números dos alunos e suas respectivas resposLas, e o·último número. do aluno fic­tício. será 9999. O algoritmo deverá calcular e imprimir:

a) para cada aluno. o seu número e sua nota;b) a porcentagem de aprovação, sabendo-se que a nota mínima de aprovação é 6;c) a nota que leve maior freqUência absoluta, ou seja. a nota que apareceu maior número de vezes (su­

pondo a inexistência de empates).

Ref. Corrija a provaNOTA +-0L+-I

i

i ~n~~nterrompafiIn..g

iGABARITO[L] = RESPOSTAS[L]l:JlijQ NOTA +- NOTA + I~L+-L+I

fim repitafim rer.

oOOO()

OO

..OA...·~1

.')

••))

.):):)

O.,••O

101

NOTA

DTOTAL

DPORCENT

D

NÚMERO

DAPROVADOS

DMAIOR

CJAh!Oritmo

Declare as variáveisAtribua valores iniciais necessárioski.íI GABARITO[ I] ... GABARITO[ 10]

I!iJ2ܪ ,kiiNUMERO, RESPOSTAS[I] ... RESPOSTAS[IO]

j ~~~~:t~U::;:9~Corrija a prova~ NúMERO, NOTATOTAL+-TOTAL + IDetennine a freqUência das notas

fim repitaDetennine a porcentagem de aprovaçãoDetennine a nota de maior freqUência~ NOTAMAIOR, PORCEr..'T

fim al~oritmo.

Estrutura de dados principal:

GABARITO

=RESPOSTAS=FREQÜÊNCIA

y.

('.

A lanritmo {Reserva de passagens aéreas}{Declaração das variáveis} • .

~ VÕOS, {número d.os VO?S ~xlstentes}LDISP[ I:37) {lugares dlspomvels}

numérico • .~ APONT.CLlENTE.I.NVOO numéncokÍíl VÔOS[ I] ...vÕüS[37]. LDISP[I) ...LDISP[37)

u~ CLIENTE. NVÔO

jCLIENTE = 9999então interrompa

~ .•. d '}{Verificação da eXlstencla o voo

1(-0

U'I\_I + I •

iI = 37 QY VÔOS[I) = NVOOentão interrompa

~

fi1mV~S[I] = NVÔO~APONT+-! ..senão escreva "VOO INEXISTENTE

APONT+-O

~ {Verificação da existência de lugar}

11APONT *L~ISP[APONT]> O •

então escreva CLIENTE. NVOO ILDISP[APONT] +- LDlSP[APONT] ...

senão escreva NVÔO, "LOTADO"

finl..&~

fim repilafim algQritl1lQ.

100

R f Declare as variáveis • . }e. VOOS {número dos voos eXistentes~ LDlSpil:37] {lugares disponíveis}

numériCQ .~ APONT, CLlENTE,I,NVÕü numénco

fim ref.

I· on~ de lugares disponíveis

ief Atua Ize UlIl"'U 1LoISPLAPONT] +- LDI5P[APONT] -

fim ref.

Pode-se observar que se duas ou mais variáveis com'p0~tasde mes~o lipo têm o mesmo número de

ente o úllimo identificador terá o par de Imutes dos índices.elementos. som . I t .

Inserindo-se os refinamentos em seus respectivos ugares, em-se.

Page 63: Harry farrer   algoritmos estruturados

fim reI'.

)

)

)

)

J)

)

}

}

)

)

)

) ~------------Ref. Detenninc a freqül:ncia das notas ..

l fFREQOI1NClAINQTAl~ FR.I::QUÊNC/AINOTA] -+t:~ _f

Este comando de atribuição annazena na variável composta unidimens~onalFREQÜ~NCIAo.nú­mero de vezes que cada nota está ocorrendo. Observe-se, ainda, que a própna nota determma a postçãodo elemento de FREQÜÊNC/A que será alterado.

ReI'. Determine a porcentagem de aprovaçãoAPROVADOS +- OL+-6

TI',seL>1O1 então interrompa

~W~bvADOS +- APROVADOS + FREQÜÊNCIA[L]L+-L+ I

fim repitaPORCENT +- APROVADOSrrOTAL x 100

fim reI'.

ReI'. Determine a nota de maior freqüênciaL+-OMAIOR +- O

~IDiL>1OJ então interrompa~se FREQÜÊNCIA[L] > MAIOR

l mli\Q MA/OR ~ FREQÜÊNC/A[L]NOTAMAIOR ~ L

~L+-L+I

fim repitatim rct'.

ReI'. Atribua valores iniciais necessáriosTOTAL +-0L+-O

TI·L>IO

então interrompafiin...sl:FREQÜÊNCIAlLj ~ OL+-L+\

fim repitafim reI'.

102

r-ReI'. Decl"rc as variáveis-~ OABA~To.R.ESJ>OSTAS l LW}lilm!-~__ FREQUÊNCIA (0'10] numérico _~ APROVADOS,L,MAJOR,NOTA..'õOTAMAJOR.NÚMERO,

PORCENT,TOTAL numérico

Inserindo-se os refinamentos em seus respeL1ivos lugares no algoritmo, tem-se:

~ looritmo {Correção de provas de múltipla e><:olha}{Declaração das variáveis}

~ GABA.~/TO,RESPOSTAS[I:IOJ J.i1lli.J.~ FREQUÊNCIA [O: IOJ numéricodeclare APROVADOS,L,MA/OR,NOTASOTAMAIOR,NÚMERO,

PORCENT,TOTAL numérico _{Atribuição de valores iniciais necmários}

TOTAL ~ OL~O

TIi~ ~n~ol~terrompa~FREQÜÊNC/A[Lj ~ OL+-L+I

fim repilakill GABAR/TO[IJ ... GABAR/TO[\OJr,;Jlli;l

kill NPMERO,RESPOSTAS[ 1]...RESPOSTAS[ 10J~ NUMERO = 9999J então interrompafim se

{Correção da prova}NOTA~O

L~l

~~

j L> 10então inlerrompa~

Jse GABARITO[L] = RESPOSTAS[L]

então NOTA ~ NOTA + I~L~L+ \

fim repitalliID'l! NÚMERO, NOTATOTAL~TOTAL + I

{Detenninação da freqüência das notas i

FREQÜÊNC/A[NOTAJ ~ FREQÜÊNCI.'\[NOTAJ + \fim repila

{Detenninação da porcentagem de apro\ ação}APROVADOS ~ OL~6

l1 ~n~o\~nterrompaIn~seJ 03

Page 64: Harry farrer   algoritmos estruturados

APROVADOS +- APROVADOS + FREQüêNCIA[L]

L+-L+Jfimn;pitaPORCENT +- APROVADOSrrOTAL X 100

{Detenninação da nota de maior freqUência}

L+-OMAIOR +-0

i ~~I~nterrompafim.S

1FREQÜÊNCIA(L] > MAIORl:Jl1IQ MAIOR +- FREQÜÊNCIA(L]

NOTAMAIOR +- L

fim.SL+-L+J

fim repita~ NOTAMAIOR,PORCENT

fim algoritmo.

o Exemplo 2.17 •Dado um conjunto A de n valores numéricos (n :S 200), fazer um algoritmo que imprima seus valores em

ordem crescente.

Declare as variáveiskililNkm A( I ] ...A(N]Ordene A~A[I] ...A[N]

fim ah:oritmo.

Ref. Ordene A1+-2

~~~interrompa~A(I] dentre os elementos já ordenados. deslocando os maiores que A[I]

1+-1+1fim repita

fim reC.

Ref. Insira AlI] dentre os elementos já ordenados. deslocando os maiores que AlI]AUX +- A(I]1+-1

TI+-I-l

i I =. 1~ AUX > Ali]entoo IDterrompa

tim..xAli + 1] +- Ali]

fim repita

JAUX > A[I]~ Ali + I] +- AUX~ AlI + I] +- A(I)

AlI] +-AUX

fim~~.i

Para inserir A(J), ~upõe·se Ali]. A(2]...A(J - I) já ordenados e compara-se A(J] com AIJ - 1] AIJ- 2]•... até se ~escob?r que ele deve ser inserido entre A(I) e A(I + I]. Move-se, então A[I + 1] 'e oselementos segulDtes, Já ordenados. atribuindo-se a A[I + I] o valor original de AIJ). •

•••e••

104

E.~te algoritmo lê a quantidade de dados disponíveis (N), e os transfere para a memória, armazenan­

do-os na variável composta unidimensional A.Suponha N = 4, tem-se a seguinte simulação desta situação:

Para se refinar o comando "Ordene A", será usado o método de inserção direta. Este método ado­ta um procedimento análogo ao do jogador de baralho que, ao receber um conjunto de cartas desorde­nadas. ordena-as, partindo das cartas colocadas mais à direita na sua mão, inserindo-as na posição mais

adequada.

{Declaração das variáveis}A[ I :200] numéricoAUX,I,J.N numérico

Qo()

o()(i~

V

flI

••••o~

~

lmlik.i!LA(I]...A[N]

{Ordenação de A}

105

o algoritmo final é dado a seguir e foi obtido a partir dos refinamentos:

J+-2

~IEr:interrompa

Ref. Declare as variáveis

I~ A[ I :200] numérico~ AUX, I, 1, N numérico

fim ref.

MEMÓRIA

o NA~L- I123 45 200

leitura

•UNIDADE

DEENTRADA

42. 19,37.2. 14

Page 65: Harry farrer   algoritmos estruturados

iI

107

Ref. Verifique o eSlOqueg ESTOQl'E[I) 2: Ql'ANTlDADE

I,~ alualize o estoque

senão escreva "NÃO TEMOS A MERCADORIA EM ESTOQUEI SUFICIENTE"

fim sefim rei.

Ref. :\tualize o estoqueI ESTOQUE[I] t- ESTOQUE[I] - QUANTIDADEfim rer.

Ref. Escreva o estoque final1.- 1

TI't

se I > ~J então interrompa

=aCÓDIGO[I]. ESTOQl"E[I]I t- I + I

fim repitafim rei.

Ref. Declare as variáveis

Idedare ESTOQUE,CÓDIGO[l:lOl] numéricodeclare CLIEmE,I.MERCADORJ.~.N.QU.-\i'ITIDADE numéri.:,'

fim rei,

Ref. Leia e escreva o estoque inicial

II+-'

~ CÓDIGO[I).ESTOQUEIl]

106

A onr:""nDeclare as variáveisLeia e escreva o estoque inicial

rr·CLIENTE. MERCADORIA. QUANTIDADE

j CLIENTE = 9999então interrompa

fiin....s:Verifique a existência da mercadoria

fim repitaEscreva o estoque final

fim al&lQritmo,

Observação: Considerar que. separando os dados do estoque inicial dos de pedidos. exista um dado cujocódigo de mercadoria é 9999 e encerrando os pedidos haja um cliente fictício, cujo número é 9999.

o Exemplo 2.18

Eslá disponível num equipamento de entrada de dados o estoque de mercadorias de uma loja. São dadosos códigos das mercadorias e as respectivas quantidades existentes. A seguir, eslão os pedidos dos clien­tes, Fazer um algoritmo para atualização do estoque. tal que:

a) seja lido e listado o estoque inicial (máximo de 100 mercadorias);b) sejam lidos os pedidos dos clientes, constituído, cada um, do número do cliente, código da mercado­

ria e quantidade desejada;c) seja verificado. para cada pedido. se ele pode ser integralmente atendido. Em caso negativo. imprima

o número do cliente e a mensagem "NÃO TEMOS A MERCADORIA EM ESTOQUE SUFICIEN­TE";

d) seja atualizado o estoque após cada operação;e) seja listado o estoque final.

)

.>

; t;l <-A[Jllii,~'~~~~;m-~ ~- r--~P{~;~(:::~~Ai-I]---- ---- -- -- --- - -- ---------- -----------+------,------ -+---1--- ~~y~ ~ÓDIGO(I),ESTOQ1JE{lJ---- -- - ---- --- - - ----

finl$ fim repita

l AlI + I] ~ A[I] N t-I - 1fim repita ~.. fim ref.) 1AUX > Ali] , I--------------------------~~ Ali + ll~AUXS;não A[I + I] ~ A[I] Ref. Verifique a existência de mercadoria

A[I] ~ AUX 1 t- O~ repitaJ~J+I 1~I+l

fim repita i I = !i Q!! MERCADORIA = CÓDIGO[I]escreva A[ I] ...A[N] entao Interrompa

fim al&oritmo. fim sefim repita

IMERCADORIA =CÓDIGO[IJentão Verifique o e~[oque

senão escreva "NÃO EXISTE A MERCADORIA PEDIDA"'~

fim ref.

Page 66: Harry farrer   algoritmos estruturados

A sc.uir. pode ser visto o texto final do algoritmo:Exemplo:

A

)0)

{Declaração das variáveis}declare ESTOQUE,CÓDlGO[ I: lO I) numéricodeclare CLlENTE,I,MERCADORIA,N,QUANTIDADE numéÓcQ

{Leitura e escrita do estoque inicial}2 99 100

• 2.2.1.2.3. Fazer um algoritmo que:

a) ~eia duas variáveis compostas unidimensionais, contendo, cada uma 25 elementos numéricos·b) IDtercale os elementos destes dois conjuntos foemando uma nova variável composta 'do '.

de 50 elementos: um lmenSlOnal

c) escreva o novo conjunto, assim obtido.

Exemplo:

A

~I 225,9 667 ~2 3 23 24 25

B

7 4 II ~2 3 23 14 25

C

••«8

•..•

~9 50~6 47 484565432

A

~ ~~L....- ~

I 2 3 100

100

SOMATÓRlO = 32 + 17 + ... + 193,7 + 15,8 = L aii· I

100 •

S = L.. ~, onde a; é o i·ésimo valor annazenado na variável A'j., I ai .

c) calcule e escreva quantos termos da série têm o numerador inferior ao denominador.

Exemplo:

() 2.2.1.2.4. Fazer um algoritmo que:

a) leia 100 valores numéÓcos e os annazene numa variável composta unidimensional Aob) calcule e escreva '

I +- O

TI',1+-1+ I

je I =_N.!W.MERCADORIA = CÓDlGO[I]

entao mterrompa

fiiIU1<fim repitaSI MERCADORIA = CÓDlGO[I)

t- ESTOQUE[I] ~ QUANTIDADE

!lliWl ESTOQUE[!] +- ESTOQUE[I] .- QUANTIDADE§enão escreva "NAO TEMOS A MERCADORIA EM

ESTOQUE SUFICIENTE"

senão e§creva "NÃO EXISTE A MERCADORIA PEDIDA"

~fim repita

{EscÓta do estoque final}

I+-l

.kia CÓDlGO[I),ESTOQUE[I]

j~:I:~::99fiiILg~ CÓDIGO[I),ESTOQUE[I]

1+-1+1fiUl repitaN..-I-In,~ita

ki.íl CLlENTE,MERCADORIA,QUANTIDADE

jCLIENTE = 9999então interrompa

fiin${Verificação da existência d~ mercadoria}

I _1

]

~~~ interrompafiill.K.1+-1+1~ CÓDlGO[I],ESTOQUE[I]

fim repitafim allºritmo.

1..08

1.%.1.~EXERc(CIOS DE FIXAÇÃO• 2.2..1.2.1. Resolver o exemplo 2.1 utilizando variáveis compostas unidimensionais e calcular e escre·v~r a porcentagem de alunos que tiveram notas abaixo da média.

O 2.2..1.2.2. Fazer um algoritmo que calcule e escreva o somatório dos valores annazenados numa variá·V~ I ccmposta unidimensional A, de 100 elementos numéricos a serem lidos do dispositivo de entrada.

Page 67: Harry farrer   algoritmos estruturados

114

Ref. Calcul<: a soma de todos os elementosI TOTAL ~ TOTAL + SOMALINHA

fim rer.

l

a ritmo

Inserindo-se os refinamentos em seus respectims lugares no algoritmo inicial. obtém·,e:

{Definição do tipo das variáveis}declare MAT[ I :-1.1 :5] numérico~ I.J.Sm.1ALlNHA.TOTAL numéricoTOTAL~O

leia MAT[I.I] ...MAT[.l.5]I~I

re itase I> 4J então interrompa~

{Cákulo da soma dos elementos da linha}SOMALIJ\HA ~ OJ~I

TIe

~ ~:ã~ interrompafim..gSOMALINHA ~ SOMALI~HA + M.-\T[I.J]J ~J - I

fim repitaescreva SO~IALlNH.-\

{Cálculo da soma de todos os elementos}TOTAL ~ TOTAL.,. SOMAU:-;HAI ~I + I

fim repita{Escrita da soma de todos os elementos}

escreva TOTALfim algoritmo.

115

Ref. Defina tipo das variáveis

Ideclare MAT[I:4,1:5] numéricodeclare I,1,SO~IALINHA, TOTAL numérico

fim rer.

jer. Atribua valores iniciais necessáriosTOTAL~O

fim rer.

Rer. Escreva a soma ue todos o, dementaslmKY.! TOTALfim~ . ._. _

o Exemplo 2.25

A multiplicação de duas matrizes A e B "ó é possível se o número de c\1lunas da matriz A for igual aonúmero de linhas da matriz B. Assim. se .-\ é uma matriz m x n e B. uma matriz n x p. a multiplicaçãoserá possÍ\'el e o produto será uma matriz C. m x p.

45

19

lO

II

SOMALlNHA

-----~-

TOTAL

d. Calcule e escreva a soma dos elementos da linha

SOMALlNHA ~ OJrl

]

Je:t~ jntelTOmpa

11ill.lKSOMAUNHA~ SOMALINHA + MAT[I,J]

J~ J + IfiiD repita~SOMAUNHA

fim rer.

Defina tipo das variáveis , .Atribua valores iniciais necessanoskii\ MAT[l.I1 ...MAT[4,5]

I r I't

lij 1>4então interrompa

~:~:~Ie e escreva a soma dos elementos da linhaCalcule a soma de todos os elementos

Irl + Ifim repilJl .Escreva a soma de todos os elementos

fim alçoritmo.

ádos elementos da linha, e usan-

d SOMALINHA a uma variável que conter a soma

Chamando-se edo-se notação matemática, tem-se:

5

sOMALlNHA = L. MATii ' i = I. 2, 3, 4j'"' I

)

1M!I O 7- ""-t-

}

'\ 4 3 2 O

-2 3 4 5

8 5 3 2

(

Page 68: Harry farrer   algoritmos estruturados

M,

o setor de controle de vendas tem uma tabela do custo e do lucro (em unidades monetárias) obtidosCllIll cada motor.

o produ10 matricial pode ser llIuito útil em várias aplicações como, por exemplo, na situação descri.

ta a seguir. . .Uma certa fábrica produziu dois tipos de motores MI e M2 nos meses de Janeiro..... dezembro e o

número de motores produzidos foi lcgistrado na tabela a seguir:

)

.')

•••",.~.... ;I

().,.<.

••

Declare as variáveis1m PRODUÇÃO[I,I] ...PRODUÇÃO[12,2j1m VALORES[I,I] ...VALORES[2.2]Calcule custo e lucro mensaisCalcule custo e lucro anuaisEscreva os resultados obtidos

fim al&oritmo.

Portanto.

Ou seja:

CII =Ali X BII + A'2 x B21Cz, = Ali X BII + A22 x B21

Fazer um algoritmo que. a partir da produção mensal de motores M, e M! e seus respectivos custose lucros. calcule o custo e lucro em cada um dos meses e o custo e lucro anuais.

2

C,j= L A,.Btj•• I

30 20

5 \O

7 15

18 25

JAN

DEZ

FEV

MAR

Para saber o custo e o lucro nos meses de janeiro, .... dezembro. basta que se faça o produto matricialdas duas tabelas.

-::UI

117

Ref. Calcule custo e lucro mensaisI~ II:!~

j I> 12então interrompa

fiin...KJ~I

~

j J >2então interrompa~CLM[I,J] ~ OK~I

H'tj ~~o2interrompa

~I,1] ~ CLM[I.J] + PRODUÇÃO[I,Kj x VALORES(K,J]K~K+ I

fim repitaJ ~ 1+ 1

fim n:pitaI~I+ I

fim n:pitafim rer.

P~a se calcular o custo e lucro anuais, somam-se os elementos das colunas I e 2. respectivamente.da matnz de custo e lucro mensais.

C

DEZ

CUSTO LUCRO CUSTO LUCRO

-4 M, 8HB -"+ JAN 30 X 10+20 X 15

M! 15 2

B FEV 5 X 10+\O X 15

MAR

LUCRO

A

30 20

5 10

7 IS

18 25

CUSTO

116

DEZ

MAR

FEV

JAN

Page 69: Harry farrer   algoritmos estruturados

o

Inserindo-se os refinamentos em seus respectivos lugares no algoritmo, tem-se:

119

v- constante a ser lida:D- número de palpites duplos:T - número de palpites triplos.

j ~~; interrompafiinJL .,__ . _CLM[I,J] +- OK f- 1

ni

~;02interrompafim seCLM[I.J] f- CLM[I,J] + PRODUÇÃO[l K] X VALORES[K J]K+-K+I ' ,

fim repitaJ (-J + I

fim repjta1+-1+1

fim repita{Cálculo do custo e do lucro anuais}

J(-lr ita

j J>2então interrompa

fim seCLA[1] +- OI +- I

n'i:;',;~""uom.'CL~[J] +- CLA[J] + CLM[I,J)I+-I +1

tim repita1(-1+1

fim repita(Escrita dos resultados obtidos}

escrevaCLM[I.J) ...ClM[12,21escreva CLA[ IJ,CLA[2J

fim algoÓtmo.

VALOR=VX2D X3T

o Exemplo 2.26

Na I~teria espo,:iva da década de 80 o jogador tinha que escolher resultados para 16 jogo.; Fazer umalgontmo que leIa os palpites de um jogador e calcule o valor a ser pago. O algoritmo deverá le~'e im rillliros dados referentes ao te,ste e ao revendedor como especificado na página seguime. p

O valor a ser pago e calculado por:

onde:

liZ&&JiU"...,.j!!Zig••'N· tAZllEa

{produção mensal de cada motor}{custo e lucro mensais dos motores}{custo e lucro de cada motor}{custo e lucro anuais dos motores}

,&li

Ref. Declare as variáveisdeclare PRODUÇÃO

CLM[I:12.1:2],VALORE5[1:2,1:2],CLA[I:2]numérico

~ I,J,K numéricoJim ref.

I, Ref. Calcule custo e lucro anuais) 1~1 .

L+-_.:--),\ j ~ã; inlerrompa

íiiIU'I CLA[J] (- O

I I (- I

iTIJ) . j ~;ã~~nterrompaI ~) CLA(J] f- CLA[J] + CLM[I,J]

I" 1(-1+1fim repita

. H-J+ IJ fim repila

, LI..:.1i:::1I1:.1~re:f.:....- ....;

}

)

)

{Declaração das variáveis}~ PRODUÇÃO, {produção mensal de cada motor}

CLM[I:12,1:2]. {custo e lucro mensais dos motores}VALORES[I :2,1:2J. {custo e lucro de cada motor}CLA[I :2) {custo e lucro anuais dos motores}

numérico~ 1,1,K numéricokii PRODUÇÃO[I,I} ...PRODUÇÃO[12.2]kii VALORES[I,I) ...VALORE5[2,2J

{Cálculo do custo e do lucro mensais}

.; 118

Ref. Escreva os resultados obtidos

IescrcvaCLM[I,I] ...CLM[12,2j

...- emcv:! CLAII j,CLAI2]lílll reL",L.:..::..::::-_----------------J

-

Page 70: Harry farrer   algoritmos estruturados

A matriz de apostas conterá X na coluna correspondente ao palpite dos apostadores em cada umadas linhas correspondentes a cada jogo.

A estrutura de dados a ser manipulada pelo algoritmo consiste principalmente de duas variáveis com­postas bidimensionais esquematizadas abaixo:

O)

)

C

•ee

~ oo••()C).~}\.~.,:

oo••••o()

fioo()

"3.'.~.i~< •

12]

Ref. Leia os dados do teste e revendedorI 1m NTESTE. NMAQ, NREV. NAPOSTA. V

fim ref.

Ref. Verifique o número de duplos e triplosDt-OTt-OIt-IIJJllia

j ~~~~nterrompafiin.RNt-O

j APOSTAS[I,J] = "X"~Nt-N + I

fiin.R

j APOSTAS[2,J] = "X"mliQNt-N+I~

j APOSTAS[3.1] = "X"~Nt-N+I

~

1N=3mli\2Tt-T + I

ã e N =2Kn!Q-:te::ão D t- D + I

fiin..g1 t-] + I

fim repitafim ref.

It-I

~~~ã~ interrompa

~aAPOSTAS[I,I ]...APOSTAS[I. 16]It-I+ I

fim repita~VALOR

fim reC.

Ref. Escreva resultados obtidos~ "LOTERIA ESPORTIVA FEDERAL", NTESTE. NMAQ. NREV,

NAPOSTA

Ref. Declare as variáveis

I~APOSTAS[I:3.1:16]~~ O,I,N.NAPOSTA.NMAQ,NREV.NTESTE,T.V,VALOR numérico

fim ref.

''''f'..1.·.•.·.•·..... 0:.-'

.•..

if:

JOGO 16

>:: I •

CZ$4€1, til)

, I ,

I ,

x '

MATRIZ DE APOSTAS

lOGO 2lOGO I

I -PROGNOSTICOS­1111111

~ 005/ 1 2 3 4 5 6 7 8 9 0 1 2 J 4 5 6CIL 2/ I • ~-:: • , • >:: ~: ::-c:

G!lL~</' ~< I I ,(:>~."~

Cf}l 1.,'" ~: • • >:; , I I • :%;'< .~"'Al DR PAGO::Iic::>zCJ~~

COL.l

COL.2

COL. DOMEIO

~

CI

:~::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

.-:~ 088781. e084 0933 002731 0561 066846~ 0000 000000 0035 054313­C'2C-)....-:(

><;.:~TERIA ESPORTIVA FEDERAL -TESTE 0933

I REV 11.1. 00236-2 t'lA[~ 0:3878-1BILHETE N2002.732 44776497­CIO

Declare as variáveisLeia os dados do teste e revendedor~ APOSTAS[I.I) ...APOSTAS[3,16]Verifique o número de duplos e triplosVALOR ..... V X 2D X JTE.'icreva resultados obtidos

Om all:orilIDo.

120

Page 71: Harry farrer   algoritmos estruturados

lB

6543

Matriz D de distânciaentre as cidades

2

(( 100 15 O O O

100 O 40 180 200 O

15 40 O 45 90 O

O 180 45 O O 101

O 200 90 O O 120

O O O 101 120 O

2

3

4

5

6

Pode-se representar numericamente este grafo por uma variável composta bidimensional, na qual adistância entre duas cidades i, j é indicada pelo elemento D[i.j]; se i = j ou se não houver conexão entrei e j, D[i,j) será zero. Desta forma tem-se:

Seja proposto agora o problema de se achar o caminho mais curto entre duas cidades qu:u;quer. Esteproblema foi resolvido por Dijkstra [DIJKSTRA. 1971] e tem uma série de aplkações em '1uestê>es deotimização.

Além da matriz D das distâncias. considera-se a variável composta unidimensional D.-\. cuja com­ponente DA[I] representa a distij,ncia acumulada em um caminho percorrido desde a origem J[é a c idadeL Cada uma destas componemes será iniciada com um valor bem grande. por exemplo. 1O.c00.

Ainda serão consideradas mais duas variáveis compostas unidimensionais. A primeira. designadaANT. será tal que a sua componente Al'o'T[I] indica qual é a cidade antecedente de I no camirllO cOflside­rado. A outra, EXP terá componentes lógicas, todas elas inicialmente com o valor ialso. indic.1l1do q ue ascidades ainda não foram "expandidas".

Partindo de uma cidade C, inicialmente igual ii origem. calcula-se a nOl'a distância acumulada(NOVADA) de cada uma das cidades adjacentes a C ainda não expandidas. A nO\'a distância acumuladaprevalecerá sobre o valor anterior se lhe for inferior: neste caso, C será atribuído ii componente ANT[I].Quando terminar a expansão de C, registra-se que EXPA[C] é verdadeiro.

Em seguida, procura-se. dentre as cidades ainda não expandidas. aquela que tenha a men,'r distânciaacumulada. Esta será a nova cidade C e a sua distância acumulada é. em;io. a menor que pos,;;} ser conse·guida a partir da ORIGEM.

O processo será repetido até que a cidade C seja () DESTINO ou que não se en..:omre nenhuma cida­de ainda não expandida, cuja distância acumulada seja inferior a 10.000. :\esle último caso. i,w significaque não existe caminho ligando a ORIGEM ao DESTINO.

. fi mentos em seus respectivos lugares, tem-se:Insenndo-se os re ma

{Declaraçâo das variáveis} +~ APOSTAS[I:3,1:16].1i1wl .

DI N NAPOSTA,NMAQ,NREV,NTESTE,T,V,VALOR numéocQ~ '{Le'itura dos dados do teste e revendedor}kill NTESTE,NMAQ,NREV,NAPOSTA, V

kiJ APOSTAS , .{Verificação do numero de duplos e toplos}

D(-OTf-OJ (- 1

't

jJ> 16~tão interrompa

Iün..KN(-O

j.e APOSTAS[I,l] = "X"

rotão N (- N + I

~se APOSTAS[2,J] = "X"J~Nf-N+I~

jAPOSTAS[3,J) ="X"lmliID N (- N + I~

J~n;;T f- T + I~N=2

J então D f- D + Ifim..&

~J(-J+I

fim repitaVALOR f- V X 2° X 3'

{Escrita dos resultados obtidos} V~ "LOTERIA ESPORTIVA FEDERAL",NTESTE,NMAQ,NRE ,

NAPOSTAI (- I

TIS' 1>3

eDlão interrompa

=a APOSTAS[I,I] ...APOSTAS[I,16]If-l+ I

fim repita~VALOR

fim ahl0ritmo.

122

o Exemplo 2.27ença de uma estrada liDando duas destasOs nós do grJ.fo a seguir representam cidades e os arcos. a pres"l" e

cidades. Os números ao lado dos arcos são a distância medida em qUi ometros.

)

)

i

ontI

Page 72: Harry farrer   algoritmos estruturados

Declare as variliveis .Atribua os valores iniciais necessáriosC+-ORIOEMDA[C) +-0

TI'j (C == ~ESTINO) OY (C =O)

então IDterrompa

fiin..GExpanda CDetennine °próximo C

fim repitaC"" DESTINO

1cnlã2 Descreva o caminho mínimo . . ..senão escreva "Não existe caminho umndo as duas cIdades

tim..&fim ah:oritIDQ.

Rd. Descreva o caminho mínimo

n~C. C == ORIGEMj eorão interrompa

~C+-ANT[Cl

fim repitafim reCo

Rcf. Expanda CI +- I

j l>Nentão interrompa~

lD[C.J] *' Oui9. EXP[I]~ NOVADA +- DA[C] + D[C,I]

1NOVADA < DA[I]çn!iQ DA[I] +- NOVADA

ANT[I] +- C

.fim..s.!:.~1+-1+1

fim repitaEXPA[C] +- verdadeiro

fim ref.

Rcf. Detennine o próKimo C

~. MIN +- 10.000

'. 'C+-O. i 1+-1

j ~~~interrompafiin..&

J(ojQ EXPA[I]) e (DA[I] < MIN)mI1lI! MIN +- DA[I)

C +- Ifiin..R1+-1+1

fim repitafim reCo

Ref. Atribua os valores iniciais necessárioskiílNkiíl D[I,I]. ..D[N,N]kiíl ORIGEM,DESTINO1+-1

i

, j ~;:interrompa

~EXPA[I] +- ÍlIill!DA[I) +- 10.0001+-1+ 1

fim repitafim reCo

Ref. Declare as variáveis~ D[I:1oo,I:loo). DA[I:loo}.ANT(I:loo} numérico~ EXPA[I:1OO]1QgkQ~ N,ORIGEM,DESTINO,I.C,NOVADA,MIN numérico

fim ref.

O texto final do algoritmo é °seguinte:

{Declaração das variáveis}~ D[I:I00,1:100].DA[I:00],ANT[I:I00} numérico~ EXPA[I:I00]~~ N,ORIGEM,DESTINO,I,C.NOVADA.MIN numérico

{Atribuição dos valores iniciais necessários}ki;lN1m D[I,I)...D[N,N]1m ORIGEM,DESTINOI+-I

't

j ~~~interrompafi.in..&EXPA[I] +- filW2DA[I] +- 10.0001+-1+1

()

()()C)

•••••QCl)

Q

'JQO

.0:O

Page 73: Harry farrer   algoritmos estruturados

117

GTIPODESllNO

TIPO 3

TIPO 2

I - Rio de Janeiro2 - Petrópolis3 - Juiz de Fora4 - Barbacena

1 - automóvel2 - caminhão3 - ônibus

I - Belo Horizonte2· São Paulo3 - Santºs Dumont

___________4_-_B_r_as_n_i_a _

MATRIZ DE TRÁFEGO

ORIGEM2f---1--+-+--f---f--+.......- ..

ORlGEM3t--+-I--+----i'-'-----'

ORIGEM4

ORIGEM I

TIPO I

DEST. I

lo ritDeclare as variáveisAtribua valores iniciais à matriz de tráfegoMonte a matriz de tráfegoEscreva a matriz origem X destino para cada tipo de veículoCalcule e escreva o número de veículos originários de Belo HorizonteCalcule e escreva o número de ônibus originários de Brasília e que se destinama Petrópolis ou Barbacena

fim algoritmo.

3 - Qual o tipo de veículo?

1 - De onde veio?(origem)

2 • Para onde vai?(destino)

As respostas a estas três questões de cada entrevista. utilizando códigos numéricos (I. 2. 3. 4). estãodisponíveis numa unidade de entrada. A última entrevista possui as três respostas iguais a zero.

A fim de fornecer respostas a algumas questões formuladas pelos engenheiros responsáveis peloestudo do problema. fazer um algoritmo que calcule e imprima:

• a matriz origem-destino para cada tipo de veículo;• o número de veículos que tem Belo Horizonte como origem; ,• a quantidade de ônibus que se originam de Brasflia e se destinam a Petrópolis ou Barbacena

A principal estrutura de dados utilizada é uma variável composta tridimensional. constituída de trêsmatrizes bidimensionais. ou seja. três matrizes origem X destino. uma para cada veículo. esquematiza­das a seguir:

IRef. Atribua valores iniciais à matriz de tráfegoII+-I ~

o~~~ .. . - d t 'f" de uma malha rodoviária e defimr alter-

Visando fazer um levantamento das atuals condlçoes e ra eeo. d 'f do i o ORIGEM-DESTI­nativas para uma reformulação futura. foi realizada uma pesquisa ~_tra ego dt Pum uestionário comNO, Esta pesquisa submeteu aos motoristas que trafegavam pela reglUo em estu o q

as seguintes perguntas:

}I fim l'ÇJ2itil) .. c.~ ORIGEML DAró+-O .\.~~=oo~ ------J fiin.&} {Expansão de C}

I +- I

[l pllil I> Nj çntão interrompa

~

lD[C.J] *Oç niQ EXP[I]çn!fiQ NOVADA +- DA[C] + D[C,I]

1NOVADA < DA[I]~ DA[1J f-- NOVADA

ANTlr] f-- Cfi!n...g

fi!n.$If--I+ I

fim repitaEXPA[C) +- verdadeiro

{Determinação do próximo C}MIN +- 10000Cf--OI f-- I[!J2Í!ª

se I> NJ então interrompa~se (IlliQ EXPA[I]) ç (DA[1] < MIN)

Jentão MIN f-- DA[I]Cf--I

fim seI+-I + I

fim rçpitafim repitaSJ; C = DESTINO ., .~ {Descrição do cammho miOlmo}

TI~~crevacse C =ORlGEMJ então interrompa~C+- ANT[C)

fim repita .d d ..senão escreva "Não existe caminho unindo as duas CI a es

~fim algoritmo.

I

)

I)

(

(

( !

Page 74: Harry farrer   algoritmos estruturados

t)

OOeo:)

••C).:)f.···.'.i.J

ooo••••oo()

ooooo129

j ~~: interrompafiin..s.Kf-I

~K>3

I f-l

ef. Calcule e escreva o número de veículos originários de Belo HorizonteQ+-O1+-1

o texto final do algoritmo é dado a seguir:

{Declaração das variáveis}~TRÁFEGO[I:4,1:4,1:3] numérico~ DESTINO,I,J,K,ORIGEM,Q,TIPO numérico

{Atribuição de valores iniciais à matriz de tráfego}

1~:~ interrompa

Kf-l

TI~~o3interrompa~Q + TRÁFEGO[I,J,K]Kf-K+ I .

fim repita1 f-J + I

fim repita~Q

fim ref.

ReC. Calcule e escreva o número de ônibus originários de Brasília e que se destinama Petrópolis ou BarbacenaQ f- TRÁFEGO[4. 2, 3] + TRÁFEGO[4. 4, 3]~Q

fim ref.

Jef. Declare as variáveis~ TRÁFEGO[I:4,1:4,l:3] numérico~DESTINO,I,J,K,ORIGEM.Q,TIPO numérico

fim reCo

128

fim repitafim ref.

Ref. Escrita da matriz origem X destino para cada tipo de veículo

KE-l~nil:l

i""'""K>3j então interrompa

llin..K I PO" K~ "VE CULO DO TI ,I +- I

TI~:tã: interrompa

:r:aTRÁFEGO[I, I,K]...TRÁFEGO[I,4,K]lE-l+ I

fim repilaK+-K+ 1

fim repilafim ref.

ReC. Monte a matriz de tráfego'a1m ORIGEM, DESTINO, TIPO _

jORIGEM = O~ DESTINO = O~ TIPO - Og1tão interrompa~TRÁFEGO[ORlGEM. DESTINO, TIPO] +-

TRÁFEGO [ORIGEM, DESTINO, TIPO] + 1

j J >4CJ}tão interrompa

fiJll.gK+-I

TIfim~~i-TRÁFEGO[I,J,K] E- OKE-K+I

fim repita1+-J+1

fim repitalE-I + I

fuo repitalim ref,

2J2

Page 75: Harry farrer   algoritmos estruturados

-------------------------------------------

() 2.2.2.2.2. Fazer um algoritmo que efetue um produto matricial. Seja A (01 X nj e B (n X m) as matri­zes-fatores. sendo m :5 40 e n :5 70. Deverão ser impressas as matrizes A. B e a matriz-produto obtida.

2.1.2.1. EXERCfclOS DE FIXAÇÃO.2.2.2.2.1. A variável composta X, de N linhas por quatro colunas, contém informações sobre alu~o~ daUniversidade, Os elementos da primeira, segunda. terceira e quarta colunas são, respectivamente. o nú­mero de matrícula, sexo (O ou I), número do curso e a média geral no curso.

Fazer um algoritmo que:

a) leia o número N de alunos (N ~ 2000);b) leia as informações sobre os alunos;c) deteITIÚne e imprima o número da matrícula do aluno de sexo I, curso 153 que obteve a melhor média,

Supor a inexistência de empate.

PRODUTO I PRODUTO 2 PRODlTO 3(unid.) (unid.) {unid.}

ARMAZÉM I 1200 3700 3737

ARMAZÉM 2 1400 4210 422-l

ARMAZÉM 3 2000 2240 2444

I [ ICUSTO ($) 260.00 420.00 330.00

.2.2.2.2.3. A tabela dada a seguir contém vários itens que estão estocados em vários armazéns (te umacompanhia. É fornecido. também, o custo de cada um dos produtos armazenados.

131

2.3.1. Registros

2.3. VARIÁVEIS COMPOSTAS HETEROGÊNEAS

Fazer um algoritmo que:

a) leia o estoque inicial;b) determine e imprima quantos itens estão armazenados em cada armazém;c) qual o armazém que possui a maior quantidade de produto 2 armazenado;d) o custo total de:

• cada produto em cada armazém;• estoque em cada armazém;• cada produto em todos os armazéns.

o Exemplo 2.29

Numa dada aplicação pode-se ter os seguintes dados de funcionários dt' uma empn"'i1 (figuras 2.1 e 2.~ I.

São conjuntos de dados logicamente relacionados. ma, de tipos diferentes (numérico. literal. ló­gico)

Q+-OJ+-In,lilia

j J>4então interrompa

1iin.1il:.K+-I

TI,K>3

eotão interrompa~Q +- Q + TRÁFEGO[ 1,J,K]K+-K+I

fim n:pitaJ+-J+I

fim repila~Q n'){Cálculo e escrita do número de õnibus originários de Brasl la

{e que se destinam a Petrópolis ou Barbacena}

130

f ,I

I },

I

!

, ,..,~

)

\

I

I

I

I

j

,J

;

:)

.1

)

I

)

f-' )

)

\

1

i

}

I

Page 76: Harry farrer   algoritmos estruturados

Em cada uma destas figuras. os dados estão logicamente relacionados entre si. pois constituem asinformações cadastrais do mesmo indivíduo.

Cada conjunto de informações do funcionário pode ser referenciável por um mesmo nome, por exem­plo. FICHA. Tais estruturas são conhecidas como registras e aos elementos do registro dá-se o nome decomponentes.

o Exemplo.2.30

Supondo-se que o registro FICHA. num dado instante, contivesse os valores a seguir:

ACHA

)

@

••••OOOO()f;1ila.f:\./I

OIQ~_~ (-~t

AL".",:u .U

o••f)··.·

\:;;c.-c;.

:>C\

09214 JOSÉ DA SILVA

SAGRES 210 I 30000

274165106-44

M I 030255

FALSO I 25.5

é uma palavra-chave;

são os nom~s que estão sendo associados aos registrosque se deseja declarar'

são declarações,e1ou identificadores de variáveis compostasseparados por VIrgula; .é uma palavra-chave.

componentes

registro

~ CADASTRO~ (NpME, RUA lit.m!l,NUME~O. CEP, CPF numérico.SEXO literal,HT [1:3J numérico.NASCIMENTO numérimTEMDEP~

~ lisla-de-identificadores~ (componentes)

NOME

RUA I NÚMERO I CEP

CPF

SEXO T HTI I HT2 I HT)

NASCIMENTO

TEMDEP

133

INSCRIçÃO NOME

RUA NÚMERO ICEP

CPF

SEXO I DATADENASCIMENTO

TEM DEP. I HORAS TRAB.

FICHA.INSCRIÇÃO estaria se eti . dIro FICHA, isto é, 09214. r erenClan o ao conteúdo do componente INSCRIÇÃO do regis-

Z.3.t.1. DECLARAÇÃO

Criam-se estruturas de dados a d "grupa os na lorma de registros através da seguinte declaração:

onde:declarelista-de-identificadores

o Exemplo 2.31

Declarar o registro cadastro que tem a seguinte forma:

CAU l'lICWIII'_L

tIS ""'321

510 PEDRO. 100121

....OlC--IE I"OUCÇO j:;j;j...... 10'. ano, '0111 ----r- CI' CIIlOlOl u,.uu...o DE r"l . _ &lo JOlo. 12'" -L 30.000_'" lIIQ

OOCVaolN1'O.c.,174HStOl

Identificador da variáveldo componente Tipo

NOME literalESTADO CIVIL literalSALÁRIO numérico

Fig. I ••

Dentre os vários componentes de FICHA podem ser citados os seguintes:

identificador do registro ide~tificador do componente

['rTUAÇAo] oacU",CIOTOSDoe. ItIILITAR ,,'TULO C"

NORMAl 1 07 12 114211 nA MG .412\ &111D2215

r'-T" ...1IC ...·,..~rUTAOOCIVIL~rC"'eo II'AL."'O~

L- 124510 '02 011 -.lL CASADO ~L-0_PE_"'_OO_"__---.JL 2.'20.732-----.J

131

o conceito de registro visa facilitar o agrupamento de variáveis que não são do mesmo tipo, mas queguardam estreita relação lógica.

Registros correspondem a conjuntos de posições de memória conhecidos por um mesmo nome eindividualizados por identificadores associados a cada conjunto de posições.

O registro é um caso mais geral de variável composta na qual os elementos do conjunto nãoprecisam ser. necessariamente, homogêneos ou do mesmo tipo. O registro é constituído por compo­ncnles.

Na variável composta homogênea, a individualização de um elemento é feita através de índices,jáno registro cada componente é individualizado pela explicitação de seu identificador.

A referência ao conteúdo de um dado componente do registro será indicada pela notação abaixo:

Page 77: Harry farrer   algoritmos estruturados

CAMISA AZUL

148200 .f .-----~131__------+-7721 I

NO~IE

RUA I NÚMERO CPF

SALDO

é o nome associado a esta estrutura:é u?l ~o~junto de um ou mais índices capazes~e IDdlvldualiz~r um registro do .:ojunto de registras:~ o nome aSSOCIado ao registro. que, dependendo03 declaração feita, pode ser omitido; ,.é..:> nome associado ao componente. cuja referência30 conteúdo está sendo feita.

é uma ralavra-chave;são non:es ~ssociados às variáveis compostas heterogêneasque se deseja declarar; -são os~ites dos intervalos de variação dos índices?3 va.navel, onde cada par está associado a um índice:Idenllfic:.ldor ou descrição do registro.

NOME

ESTOQI JE + n_~-

:2

-' O-l

5

identificador da variáveli

identificador do registro

CÓDIGO

identificador do componente

onde:

o Exemplo 2.35

Declarar 3 seguinte estrutura de dados

li,:ls" ...•li,,:ls,

1.35

CLlE~TE

declare lista de identificadores [Ii.:ls,. li;:ls2.....li,,:ls,l t

CONTAS

l.J.2.1. DECLARAÇÃOA declaração de conjuntos de registros tem a seguinte forma:

identificador da variável[ij-identificadcr do registro' identificador do componente

o conjunto de mercadorias da loia pod . d "-DORIAS O d d 1 d

J ena ser agrupa o numa vanavel composta heterooênea MERCA• n e ca a e emento este con'unto é . . , c ­GO, NOME, PREÇO e ESTOQUE). J um regIstro conslJtUldo por quatro componentes (CÓDl·

A referência ao i-ésimo elemento ou registro do conjunto é feito pela seguinte notação:

onde:declarelista de ídentificadores

declare CO~TAS[ I:51 CLIENTE. declare CLIENTE registro(NOME, RUA literal,

NÚMERO, CEPo SALDO numériCl'i

(NOME literal,ENDEREÇO.CPF numérico,SEXO literal,HT [ I :31 numérico,NASCIMENTO numérico,TEMDEP lógico)(RUA literal,NÚMERO, CEP numérico

CAD

ENDEREÇO

NOME

ENDEREÇO

CPF

SEXO I HT

NASCIMENTO

TEMDEP

Podem-se ter conjuntos de registros referenciáveis por um mesmo nome e individualizados por ín­

dices.

o Exemplo 2.33O acesso ao componente CEP do registro declarado no ex.emplo 2.32 é feito através da menção ao nomedo registro mais ex.terno. o CAD. passando pelo ENDEREÇO e finalizando com o identificador do com-

ponente, ou seja, CEPo

Comparando-se os exemplos 2.31 e 2.32, vê-se a possibilidade que existe de se aplicar a tilosofia da

técnica de refinamentos sucessivos à declaração dos registros.Nu caso de estruturas complexas, como o do exemplo 2.32, quando na declaração do registro se

encontra um outro registro. o acesso aos elementos é feito hierarquicamente. Primeiro. faz-se men­ção aos registros mais externos, depois aos mais internos e. finalmente, ao identificador do compo-

nente.

De acordo com a notação adotada, tal referência seria indicada por

CAD.ENDEREÇO.CEP

2.3.2. Conjunto de registros

o Exemplo 1.34Considerando-se o registro de uma mercadoria de uma loja como descrito a seguir

•) 134

Jo Exenlplo 2.32) Dedarlll" «) registro CAD Q-ue tem a se~uinte forma:

-~-­

)

, }

onde endereço é um registro contendo o nome da rua, número e código de endereçamento postai. HT é

UIIl arranjo numérico de três elementos e TEM DEP é uma variável lógica.I )

Page 78: Harry farrer   algoritmos estruturados

Escrever um algoritmo que. dados SOO CÓDIGOS DE PROFISSÃO (fornecidos em 500 linhas).emita o l:iQME das profissões correspondentes. A tabela acima também deve ser lida.

()()O()

"••••OOg:)

))

/!,j

'}

.:)

")i)

.1

137

~---

o

o

{Definição do tipo das variáveis)~ TABELA[ I: 1(0) rçgillm (CÓDIGO numérico,

NOMEli!ml)~ CÓDIGODESEJADO,I,K numérico1mTABELA[I)...TABELA[loo)K+-I~~

j ~~Si:rrompat:iiIul:kii CÓDIGODESEJADO

(Escrita do nome da profissão}I t- Ort;J2lli\

1+-1+1

Inserindo-se os refinamentos em seus respectivos lugares DO algoritmo inicial. cótém-se:

Ref. Defina tipo das variáveislkdm TABELA[I:IOO]~ (CÓDIGO numérico.

NOMEli!ml)~ CÓDlGODESEJADO,I.K, numérico

fim rer.

Ref. Escreva o nome da profissãoIt-O

TI+-I + I

j TAB~LA[Ij.CÓDlGO = CÓDlGODESEJADO ºº I = 100então Interrompa

fiíl.Lgfim rçpita

]

TABELA[lj.CÓDlGO =CÓDlGODESEJADOen~o escreva CÓDlGODESEJADO,TABELA[I).NOMEsenao escrçva "CÓDIGO INVÁLIDO"~

fim ref.

Defmao tipo das variáveiskia TABELA[I)...TABELA[lOO)K +-1D;pila

j K>500então interrompa

fiin..Kkiíl CÓDlGODESEJADOEscreva o nome da profissãoK+-K+I

fim rçpitafim alaoritmo.

I ~ CÓDIGO NOME..J~ L.-----'----(numérico) (literal)

CÓDIGO NOME

001000 ALFAIATE

001050 ALMOXARlFE

002000 ANALISTA

002050 ANTROPóLOGO

003000 BOMBEIRO

()()30S0 CARPINTEIRO

198050 TORNEIRO

199000 VENDEDOR

2

3

100

136

2

3

4

6

5

99

100

Estrutura de dados

Com uma declaração como a anterior. passa a existir a variável CONTAS, onde cada elemento doconjunto II! um registro, com componentes NOME. RUA, NÚMERO. CEP e SALDO.

O Exemplo 2.36Dada a tabela a seguir:

dec1an: CONTAS[ I:5)~ (NOME, RUA 1i1Wl)(NÚMERO. CEP, SALDO numérico)

ou. equivalentemente:

Page 79: Harry farrer   algoritmos estruturados

139

IMPOSTO MESESAT L.t. .t.

numérico numérico

Inserindo-se os refinamentos em seus respecti\os lugar~ . no alg·· ... I" onlmo !DICIJ . tem-se:

IMÓVEL

R1ef. Escreva resultados obtidosescreva IMÓVEL, MULTA

fim ref.

Ref. Calcule MULTA((-6re ita

1+-1- I

Jse IM?~EL.lMPOSTO 2: TABELA[I, I ] ou I = I

entao !Dterrompatim se

fim repita~ l~lÓVEL.lMPOSTO 2: TABEU.[I, I]

então MULTA +- TABELA[I.3] X IMÓYEL.IMPOSTO/lOO"' IMÓVELMESESAT .

AllmritmoDefina tipo das variáveis~ TABELA[I,I] ...TABELA[5,3]e !ta

ki.!! IMÓVEL

j IM?~EL IDENTIFIC = "VAZIO"entao !Dterrompa~Calcule MULTAEscreva resultados obtidos

fim repitafim al!mritmo.

.J IDENTIAC

.t.literal

fim sefim ref

Ref. D<:fina tipo das variáveisdeclare TA~ELA[ I:5,1 :3] numéricodeclare IMOVEL registro (IDENTlRC literal.

IMPOSTO numéricl).MESESAT numérico)

declare I. MULTA numéricofim ref.

,~:

f ;

",;.,.,i

% por mês em atrasoI247

lO

Para os dados de cada imóvel, será adotado o seguinte registro (variável composta heterogênea)

TABELA

LIMITESPERCENTUAL

DE ATÉ

O 50,00 I

51,00 180,00 2 Variável composta

181.00 500,00 4 homogênea de 5 linhas

501.00 1.200,00 7 por 3 colunas

1.201.00 10

Valor do impostouté R$ 50,00

de R$ 51,00 a R$ 180,00de R$ 181,000 a R$ 500,00de R$ 501,00 a R$ 1.200,00acima de R$ 1.200,00

.....

• o último registro lido, que não deve ser considerado, contém a identificação do imóvel igual a vazio;• na saída deverão ser impressos: a identificação do imóvel, valor do imposto, meses em atraso e a

multa a ser paga.As estruturas de dados a serem adotadas para a solução do problema são:

o Exemplo 2.37Em certo município, vários proprietários de imóveis estão em atraso com o pagamento do imposto predial.Desenvolver um algoritmo que calcule e escreva o valor da multa a ser paga por esses proprietários

considerando que:• os dados de cada imóvel: id$ntificação (literal), valor do imposto e número de meses em atraso

estão à disposição numa unidade de entrada;• as multas devem ser calculadas a partir do valor do imposto e de acordo com a seguinte tabela

(também à disposição numa unidade de entrada);

I:;::ELAI1I.CÓDlGO o CÓDIGODESEJADO "" I ~ 100

J cntãe- ifltmQIJllla--ll--I--!-. -- ----- --filo rc;pita --- - --- -

1TABELA(I).CÓDlGO = CÓDlGODESEJADO!:Dtio escreva CÓDIGODESEJ~DO,TABELA[I].NOMEsenão escreva "CÓDIGO INVALIDO"

fiin$K E-- K+ I

fim repilafim ali0ritmo.

J}

}

)

)

..---'

Page 80: Harry farrer   algoritmos estruturados

)

)

)

)

)

)")

(I'

~

4',.~

)

••:J")

")

()C)O

•••OOC)O')

OOOQ

l141

765

aUANnDAOExxxxxxxxxxxxxxxxxxxx

4

3 4

Estrutura de dados

3

2

2

PRODUTOCIMENTOAREIATUBOSBLOCOS DE CONCRETOMADEIRACALSAIBRO

PRODUTOS

~ MATERIAL

1 QUANTIDADE I NOME I'--'" numérico literal

PÁTIO 1

2

3

4

o

20 , cimento 00' 80 I saibro 40 I madeiras

00' 23 I blocos 00 I30 ' cimento, , I ,

00' 00I , ,, I 30 I areia 25 , areia

53 , tubos 15 I 45 , tubos 20 I calI I I

Defina tipo das variáveisAtrit>ua valores iniciais necessários

Em cada espaço do depósito estão colocados a quantidade do material e o nome correspondente.Assim, 30 cimento significa que naquele local existem 30 sacos de cimento.

Escrever um algoritmo capaz de contar quantos elementos de calÚJ material existem no pátio (ob­serve que pode haver mais de um local com o mesmo material).

Sabe-se que os dados estão dispostos em linhas.O algoritmo deve imprimir os resultados conforme o diagrama a seguir:

r TABELAII.I! seria substituído por TAHI::.LALJJ.KW.LlMITI::.INr1 TABELA[I,2] seria substitufdo por TABELA[l].REG.LlMlTESUP

!TABELA{I,3) seria substituído por TABELA[I).REG.PERC

\ '. 'r' O Exemplo 2.38

; ',: ',~ O diagrama abaixo representa o pátio de um depósito de uma empresa de construções, que armazena os1 "seguintes materiais: cimento. areia. tubos, blocos, madeira, cal e saibro:

lt'.i",

ILlMITEINF I LlMITESUP I PERC I4

5

3

2

{Definição do tipo das variáveis}~TABELA[I:5,1:3] nurMrico~ IMÓVEL~ (IDENTlRC 1ilml.

IMPOSTO nurMrico.MESESAT numérico)

~ I. MULTA nyméricokilTABELA

DJÚlikiJIMÓVEL

jIMÓVEL.lDENTIFIC = "VAZID"então interrompa

.fiin.g{Cálculo da MULTA}

TABELA

I~6

TI+--I- I

jIMÓ":EL.IMPOSTO 2: TABELA[l,I] QY I = I

,. l;ntào mterrompa

~fim repita

JIMÓVEL.lMPOSTO 2: TABELA[l,I]\W!iiQ MULTA +- TABELA[l,3) X IMÓVEL.lMPOSTOflOO x

IMÓVEL.MESESAT

~{Escrita dos resultados obtidos}

~ IMÓVEL,MULTAfim repila

fim algoritmQ.

Pode-se observar que, para efeito de documentação e clareza do algoritm~,a estrutura de dados TA·BELA, embora variável composta homogênea, poderia ser declarada da segumte fonna:

lIWmTABELA[I:5) REG~ REG lUillm (LIMlTEINF,

LIMITESUP,~i PERC numérico)

~'~'~"" "'" """'"""" d"~"'".~ de ....,. ,I,,,. ~;m~ ..fren. " re••I."" ....

Page 81: Harry farrer   algoritmos estruturados

}·B

. {Definição do tipo das variáveis}~ PATIO(I:4,1:4] M~TERIALdeclare MATERIAL registro (QUANTIDADE numérico,

• NOME literal)declare OCORRENCIA[ I:7J numéricodeclare PRODUTO[I:7] literaldeclare U,K numérico

{Atribuição dos valores iniciais necessários}I +- I

Inserindo-se os refinamentos em seus respectivos lugares no algoritmo inicial, obtém-se:

re i a~I>7J então interrompa~OCORRÊ~CIA[IJ+- O1+-1+1

fim repitakli! PÁTIO[I.Ij ...PÃTIO[4,4]kli! PRODUTOr 1]...PRODUTO[7j

{Determinação da quantidade de cada material}{existente no pátio}

I +- Iit~1>7J então interrompa~1+-1

ita~J>.t

J então interrompl\ ..fi..in..M.K+-I

n't~ K>4J então interrompa.fi..in..M.

lse PÁTIO[J,Kj.MATERIAL.Nm.IE = PRODUTO[lj~ OCORRÊNClA[l] +- OCORRÊNClA[IJ T

Ref. Defina tipo das variáveis~ PATIO[I :4,1 :4J MATERIAL~ MATERIAL~ (QUANTIDADE numérico.

NOMEliIm!)~ OCORRÊt'jCIA[ 1:7J numérico~ PRODUTO(l:7J.I.i!lli.!~ I,J,K numérico

fim ref.ii.'

~..

+

142

Rcf. E.~crcva a quantidade calculadaI +- I

TI·t•j l>7

então interrompa~escreva PRODUTO[lj, OCORRÊNCIA[lj1+--1+ I

fim repitafim rer.

Ref. Atribua valores iniciais necessáriosI +- I

TI~ ~;~ interrompa~OCORR~NCIA[IJ+- O

kill PÁ1'10[1.1] ...PÁTlO[4.41lcíll PRODUTOr IJ ...PRODUTOP].. .Determine a quantidade de Gadamaterial cXlStente~pátio-Escreva a quantidade calculada ------ --------+--+----

~:~:~'t1~De~lIon~te~~~m~;::.:..·'-a-q-u-a-n-tid-a-d-e-d-e-ca-d-a-m-a-l-en-'a-)-e-xI-'s-te-nt-e-n-o-p-á-Ü-O-------------l , 1I +- I t.

't 1; _K I >7 ~

então interrompa

~J+-I

t

j J>4então interrompa

~K+-I

't

~ K>4J então interrompafim se

Js PÃTIO[J,K].MATERIAL.NOME = rRODUTO[)]

então OCORRENCIA[11 +- OCORRENCIA[I] +PÁTIO[J.K].MATERIAL.QUANTIDADE

~K+-K+I

fim repitaJ+-J+ I

lliD repila1+-1+ I

fim repitaIim rer.

)

)

Page 82: Harry farrer   algoritmos estruturados

)

)

')

ReC. Verifique se DATA.DlA está correto

IiD.UA.DlA > o, DATA.DIA s DIASOOMÊS[M]mtjQ Calcule a DIFERENÇA para 211junll985

Calcule TOTALDIASl[lp,ila

kiiDATA

JDATA.DIA =O,DATA.BARRAl ="",DATA.MÊS ="JAN", DATA.BARRA2 ="" , DATA.ANO =Oentão interrompa

fiín..E .

JDATA.ANO = 1985mli2 verifique se DATA está correta

~ão escreva "DATA FORNECIDA", DATA, "DATA INCORRETA"

fim repitafim a1soritmo.

ReC. Calcule TOTALDIAS ITOTALDIAS I +- 211+- I

TII=6então interrompa~TOTALDIASI +- TOTALDlASI + DlASDOMÊS[I]I +- I + I

fim repitafim ref.

Ref. Verifique se DATA está corretaVerifique se DATA.MÊS está correto

1MÊSVÁLIDO~ Verifique se DATA.DIA está correto

~ão escreva "DATA FORNECIDA =", DATA, "DATA INCORRETX'

fim ref.

ReC. Verifique se DATA.MÊS está corretoM+-O

TI'IM+-M + I

j DAT~.~S = MESES[M] ou M = 11então IDlerrompa

fiin..&fim repita

JDATA.MÊS =MESES[M]mtjQ MÊS VAuoo +- verdadeirogMQ MÊS VÁLlOO +- ÍilS.Q

fiin..xfim ref.

12

ANO

109

BARRA 2

10 11 12

. e 44"$'--$".,' .' ~~.~'·,~;:':::,~:1::::'kj:;"~,!,"

87

.,

65

Ç@J

. ~~:r,:7~Eb' iGt'7""

4 5 678

BARRA I

3

{Escrita da quantidade calculada}

2

DIA

Defina tipo das variáveiskia MESES[ I]...MESES[ 12]leia DIASDOMÊSi 1]...DlASDOM~S( 12]

I~ PÁTIO[J,KJ.MATERIAL.QUANTIDADE

K+-K+l(im !'lêpitaJ+-J+I

(im repita1+-1+1

fim !'lêpita

DATA (variável composta não homogênea)

DATA FORNECIDA = 25/junl1985 - Diferença = + 4DATA FORNECIDA = 20/junl1985 - Diferença = -IDATA FORNECIDA = 31/Cev/1985 - Data incorreta

I+-I

TI~;~ interrompa

~ .~ PRODUTO[I],OCORRENCIA[I]

1+-1+ Ifim repita

filJJ. alsoótmo.

DIAS 00 MÊS (variável composta homogênea)

Estrutura de dadosMESES (variável composta homogênea)

o Exemplo 2.39Escrever um algoritmo que leia um conjunto de linhas contendo, cada uma, uma data:

di;V~lill2 (flag = OO/janlOOOO)vcritlque se a data está correta (se o mês é um dos meses do ano e se o dia está de acordo com °mês) e se() anCo) é igual a 1985. Se a data não estiver correta. imprimir "DATA INCORRETA" e os valores de dia,mês e ano. Se a data estiver correta e o ano for 1985. verificar qual é a diferença (em dias) para com a data21/J UN/1985, e imprimir esta diferença (positiva ou negativa).

Page 83: Harry farrer   algoritmos estruturados

Comu já foi dilO, um aspecto fundamental na formulação de um ah:~)ritmo é a estrutura de dacosu,;ada para representar as informações do problema <'m resolução. Variá\-~l> simple> ou compostas. e re-

1~7

i.'" J

1 ..... 1 + Ifim repitaDIFERENÇA ..... TOTALDIASI­

TOTALDIAS:!escreva"DATA FORNECIDA =". D.-\TA.

"DIFERENÇA =".DIFERE\"ÇAsenão escreva"DATA FORNECIDA =",DATA.

"DATA L,\;CORRETA"

fi.i!llisenão escreva"DATA FORNECIDA=",D.UA,

"DATA I:\CORRETA"fim..g

senão escreva"DATA FORNECIDA=".DATA,"DATA INCORRETA"

ImDATA

JDATA.DIA = O~ DATA.BARRAI = ",. ~ DATA. MÊS = "JAN"l;DATA.BARRA2 = "r e DATA.ANO = oentão interrompa

fiin..Ke DATA.ANO = 1985

{Verificação da correçãu da data}então M+--O

re itaM+--M+ I

Jse DA_T~.MÊS = MESES[~tl ou M = 12

entao IDterrompafim se

fim repitase DATA.MÊS = MESES[Mj

Jentão M~SV~L1DO +-- verdadeirosenão MESV ALlDO +-- falso

fim ses MÊSVÁUDO

entàose DATA.DIA>O~DATA.DIA$DIASDOMÊSIMjentão TOTALDIAS:! +-- DATA.OIA

If-Ie ita~ I=MJ então inlerrompafim seTOTALDL-\S2 +-- TOTALDL-\S2 +

DIASDOMÊ5[1]

aaZE

fim sefim repita

tim al~ori!mQ.

2.4. ARQUIVOS

~H lTALDlAS I +-- TOTALDIAS I t DIASDOMÊS\IJ

~--l---,,.L--I~+--~r_+_l_- ~_-------~-------

Ref. Calcule a DIFERENÇA para 21/junl85TOTALDlAS2 t-- DATA.DIAI t-- I

PI=Mcntão interrompa

~LDlAS2t-- TOTALDlAS2 + D1ASDOMÊS[I]1+--1+ I

fim repitaDIFERENÇA +-- TOTALDIASI - TOTALDIAS2

fim rer.

{Definição do tipo das variáveis}~ DATA~ (DIA numérico,

BARRAI~,

MÊS literal,BARRA2~,

ANO numérico)dllim MESES[I:I2Illieral~ DlASDOMÊS[l:12] numérico~ I,l'1.TOTALDIAS 1,TOTALDIAS2,DlFERENÇA numérico~ MESVALIDO 1QgkQlcii" MESES[ I}...MESES( 12}kill DlASDOMÊS(1j...DlASOOMÊS[I2j

{Cálculo de TOTALDIAS I }TOTALDIASI +--21] +-- 1

~~1=6I então interrompi)

Inserindo-se os refinamentos em seus respectivos lugares no algoritmo inicial, obtém-se:

Ref. Dcl1na tipo das variáveis. s.h:rli!n; DATA regist[o (DIA numérico,

BARRA 1!.ili;rill,MÊS literal,BARRA2~,

ANO numérico)~ MESES[l:I2] li!mldeclare DIASDOMÊS[I: 12J numéricodJ:dm 1.~.TOTALDlAS1,TOTALDIAS2,DIFERENÇAnumérico~ MESVALIDO~

fim ref,

146

~ _.r'1oJ.f"l. I. '-U"l''U...\....JlJI"\ ,LJt\ lA;-Vlt'cKENÇA =",

I DIFERENÇAsenàQescrevu "DATA fORNECIDA =", DATA, "DATA INCORRETA"

~ ~-- ---------~----~-+__fifft_'ref;--------------~

( I

Page 84: Harry farrer   algoritmos estruturados

148

INSTITUTO DE IDENTIFICAÇÃO

REGISTRO GERAL A-9876

t)

O

•••eooQ,r,"'\t~

f,/'''~

V

ooQ

é uma palavra-chave;são nomes que serão usados pelo algoritrll<' para referenciaros arquivos;é uma palavra-chave;indica o tipo de organização do arquivo. "ue pode serseqüencia/ ou dire/a;é uma palavra-chave;é o nome do registro que será usado parJ ;.: ler acessoao arquivo.

arquivoorganização

denome

149

~ Iista-de-identificadores~ organização~ nome

2.4.3. Declaração

ência, é um conjunto de um ou mais registras lógicos. Esta questão, entretanUJ. Iiiv mteressa ao projellstade algoritmos, que poderâ continuar pensando no arquivo como uma coleção te regislros. As questõesrelalivas aos registros fisicos, e a outros conceitos. poderio ser resolvidlls q-w da implementação doalgoritmo em uma linguagem de programação.

O fato de o arquivo ser armazenado em uma memória secundária o lOI'n2 mJependente de qualqueralgoritmo. Isto é, um arquivo pode ser criado. consultado. processado e e\'enwàínente removido poc al­goritmos distintos.

Sendo o arquivo uma estrutura fora do ambiente do algoritmo. para que esr: tenha acesso aos dadosdo arquivo é necessária a operação de leitura do registro no arquivo. Analog~te,para que o algori tmocoloque alguma informação no arquivo. é necessária a operação de escrita do J:gÍstro no arquivo. Estasoperações de acesso ao arquivo são básicas nos algoritmos, e os usuários de\'~ procurar minimiza-las,pois são muito demoradas e podem tomar o algoritmo ineficiente. A escolha e : _'Onhecimento das orga­nizações de arquivo ajuda na minimização destas operações.

As operações básicas que podem ser feitas em um arquivo através de um <êP)r1uno são: obtenção deum registro do arquivo. inserção de um novo registro, modificação ou ell;:\LL<.ã: Je um registro. Depen­dendo do tipo de problema, estas operações poderão ocorrer em maior ou mej.:r número de vezes.

A disposição dos registras no arquivo pode favorecer determinadas operaçre; ~n delrimenlo de outras. Oconhecimento das possibilidades de organização dos registras nos arquivos permiti: .c projetistade aJgoritmosescolher aquela que seja mais adequada à solução do seu problema em termos~ e:"dcia e eficiência.

Basicamente, ellistem duas possibilidades de organização de arqui\'05: 2. :rganização seqüencial,na qual os registros são obtidos ou inseridos no arquivo em ordem seqüenciaJ. ~ .l _'rganização direta. emque o acesso do registro é feito em ordem aleatória. Outros tipos de organiza.:-L,: ;:io, na verdade. varia­ções destas e, ainda que possam ser imponantes em algumas aplicações. nãl' ~,lo tratados neste li vro,em nome da simplicidade.

2.4.2. Organização de arquivos

onde:declarelis ta-de-identificadores

O acesso a um arquivo dentro do algoritmo é feito através da leitura e es..7.ta de registros. No algo­ritmo, o arquivo deve ser declarado e aberto, antes que tal acesso possa ser fe:r.'. ~o final do algoritmo,ou quando houver necessidade, o arquivo deve ser fechado.

A declaração de um arquivo é feita através da seguinte especificação:

o Exemplo 2.40

lkclm. AGENDA arquivo seqUencial de ENDEREÇO~ ENDEREÇO~ (NOME. RUA lliml.

NÚMERO numérico,CIDADE llimD

29/02/1900

29/0211900NASCIMENTO

NOME: Fulano de tal

PAI: Sicrano de TalFILIAÇÃO:

MÃE: Beltrana de Tal

DESCOBERTO-MGNATURALIDADE

Fulano de Tal Sicrano de Tal Beltrana de TalA-9876

Sicrano de Tal Bcltrana de Tal Descoberto 29/0211900A-9876 Fulano de Tal 30/03/1944

João da Silva Maria Silva Belém8-3686 José da Silva

Glória Maria Manaus 03/04/1950C-3384 Maria da Glória Afonso Mendes 15/06/1958Sílvia Lopes Brasília, D-6666 Márcia Lopes Mário Lopes

2.4.1. Conceito de arquivo

uivo é um conjunto de registras armazenados em um dispositivo de mem?ria secu~dária. Re.Arq . d un'tdades de informação logicamente relacionadas. Cada uOIdade de IDformação

gistroé um conjunto e .co~stitui um campo do registro. .

Considé're-se a cédula de identidade, a seguu:

"ARQUIVO DE IDENTIDADES"

O registro conforme apresentado neste capitulo é.denominad? regis~r~ lógico ou, ;i":.~~~~:~~t:fi~~gistro. Na verdade, o arquivo é constituído de um conjunto de reglstros flSltoS que, pc q

Nela encontram-se alguns dados referentes a um cidadão: nome, filiação, ~gí;tra geral. nat~r~i~a­de. nascimento etc. O conjunto de informações apresentado por estes dados po e ormar um regls o.

Pai Mãe Naturalidade NascimentoR.G. Nome

. . - é iação a uma pessoa. O annazenamento do conjunloA relação lógIca e~~re estas tnforma.çofes a s~asaJ:~arteiras de identidade dos membros de uma comu­eormado pelas regloes contendo as 10 ormaç~nidade. por exemplo, poderá fonnar um arqUIVO.

'd.. I . nnalm,ente usadas para declarar estruturas de dados alocadas no mesmo ambi­gist:re>s são as tnU auCS no

cnte do algoritmo. re é sslveI. ou desejável, construir e/ou manter uma estrutura de dado.s noEntretanto. nem seCmp 'd po do a memória do computador como o ambiente comum ao algontmo

b - t do algoritmo. onsl eran . . .am ..cn e dados não é diflcil perceber, por ellcmplo, que pode não e~lstlr espaço para armazenare Aestrutura de '. d Em outra situação poderá haver necessIdade de armazenamento de

I e de dados mUIto gran e. . hei)um vo um . õe ríodo de tempo longo (da ordem de mmutos, oras ou, anos.um conjunto de I~fonna~an:o~~tna memória principal por ser es~e um recurso caro e Iimita~o.nã<> fazendo sentido, po d d dos que na-o podem ou não necessttam estar alocadas no ambiente

A It mativa para estruturas e a . fi . Ia e é . Este é uma estrutura de dados conhecida pelo algontmo. mas ISIcamente a 0-

do algoritmo ~ arqutVod'a'n'o de armazenamento sendo mais comum o uso de meios magnéticos comocacl a em um meIO secun •fita.s ~ discos ou disquetes.

Page 85: Harry farrer   algoritmos estruturados

uti-

é urna palavra-chave;são os nomes declarados dos arquivos e pel .o algoritmo os referenciará' os quais

es~cifica se o arquivo será usado somente paraleitura, somente para escrita ou ambossimultaneamente. •

tipo-de-utilização

feche NOTASfim algoritmo.

151

feche NOTASll!m! ~OTAS leitura

.1!lm! NOTAS escrita

~ 10 0 'tmo~ NOTAS arquivo seqüencia! de DADOSdeclare DADOS recistro (MATRÍCULA numérico,

NOMEALUNO literal.NOTATOTAL numérico)

onde:fechelista-de-identificadores-de-arquivos

é uma palavra-chave;são .os nome~ declarados dos arquivos e pelosquais o algontmo os referencia.

Utiliza-se este comando oeralmente no fi dai'lização do arquivo. ' e • m O gontmo ou quando se deseja alterar o tipo de

o Exemplo 2.43

.~.

IDATA DA ÚLTIMA

OPERAÇAoSALDO

CIDADE

NOME DOCLIENTE

}REGISTROS

I--_----I------+----+-----i ENDEREÇOS

TELEFONE

NÚMERO DACONTA

() 2.4.3.1.2. Declarar dois arquivos seqüenciais usando o mesmo registro dado abaixo:

] TEMPO DE LIGAÇÃOl- '-------------'

ARQUIVOAGENDA

() 2.4.3.1.3. Escrever. agora, um trecho de algoritmo que compare um registro de um arquivo com umregistro do outro arquivo, campo a campo. Caso os registros sejam iguais, atribuir ao camro "tempo deligação" do registro correspondente ao primeiro arquivo a soma dos tempos de ligação dos dois registroS,e atribuir zero ao campo de "tempo de ligação" do registro correspondente ao segundo arquivo.

150

A declaração do arquivo é a deflOição. para o algoritmo. do modelo e dos nomes que estarão asso­ciados à estrutura de dados, isto é. ao arquivo. A associação deste modelo ao arquivo físico é uma ques­tão que, no algoritmo, pode ser resolvida pelo comando:

2.4.4. Abertura de arquivo

O exemplo mostra a declaração de dois arquivos seqüenciais com os nomes de COMPRA e PEDi­DOS. Ambos possuem registros idênticos ao registro PAPELETA.

É bom lembrar que a declaração de registro define no ambiente do algoritmo um espaço para o mes­mo. O fato de se declarar um arquivo associando-o a um registro é apenas para definir os componentesdos registros do arquivo. Eventualmente. pode-se ter acesso a registros de um arquivo utilizando-se umregistro cuja declaração não foi explicitamente associada ao arquivo. Veja o exemplo 2,47.

1,.1.3.1. EXERCíCIOS DE FIXAÇÃO() 2.4.3.1.1. Declarar um arquivo com organização seqüencial para registras com o seguinte formato:

Fig.l.3

o F:xemplo 2.41

~ COMPRA. PEDIDOS arquivo seqüencial de PAPELETAdçc!arc PAPELETA registro (QUANTIDADE numérico.

ESPECIFICAÇÃO literal)

)

'>

) Neste exemplo, foi declarado um arquivo de nome AGENDA, ~ompo;lode registros de nome EN-}- DEREÇO. Cªç111 registro é composto dlls campos NOME, RUA, NUMERO e CIDADE. Esquematica- m Iista-de-identificadores-de-arquivo tipo-de-utilizaçfiu

t-_~mc:nu:.-J;e:J>st~e~~e ser representado pera figura 2.3. :;;~-=---------~~-~_---.:~:=~~=~~~----- ~J~ .~·;·,...----o=cnd,e:

(. abra) ".; lista-de-identificadores-de-arquivo

) NOME RUA NÚMERO CIDADE 5,

Page 86: Harry farrer   algoritmos estruturados

151

(}

êe,~

'J

••"])r')

C)'''')''.rl"

O

•••Otl()

a()()

oop15J

ESTADOCIDADENÚMEROLOGRADOUROTELEFONE

I.{Escrita do registro T no arquivo B}

~B.T

6mRPlla~A

~B

fim a1&oritmo.

Defina as estruturas de dadosAbra arquivosLeia dados e crie arquivosFeche arquivos

fim algoritmo

Ref. Defina as estruturas de dados~ TECLADO. {arquivo do qual serão lidos os dados}

AGEi\o'DA {arquivo onde serio armazenados os dados}llrQuivo seQUencial de El\l)EREÇO

~ ENDEREÇO~ (NOME llim!.TELEFONE numérico.LOGRADOURO liIw!!..NÚMERO numérico.CIDADE. ESTADO lilwll

Ref. Abra arquivos

Ii.I2rn TECLADO k.i.tY.m11m! .-\GENDA mri!lI

fim ref.

fim ref.

Neste exemplo surgiu a necessidade de se determinar a leitura do último registro do arquivo_ Pararesolver esta questão, que será comum na elaboração de algoritmos. supõe-se a existência de uma variá­vellógica associada ao arquivo. de nome FDA (Fim de Arquivo). que assumirá o valor verdadeiro quan­do se tentar ler um registro após a leitura do último.

Não há necessidade de se declarar esta variável,já que ela é um atributo que está associado ao arqui­vo. Este tipo de acesso é largamente utilizado pelas linguagens mais recentes, para resolver alguns pro­blemas análogos. tais como condições de erro, registro n30 encontrado etc. O sistema operacional encar­rega-se de atualizar estes atributos a cada acesso do arquivo. de tal forma que o usuário possa testá-los deacordo com as suas necessidades.

Um arquivo seqUencial pode ser implementado em qualquer tipo de dispositivo. Inclusive, pode·setratar uma impressora. a tela de um terminal, uma leitora de cartões ou um teclado como um arquivo se­qüencial. respeitadas as características de cada um quanto à capacidade de leitura c/ou escrita. Fitas magonéticas. discos e disquetes são os meios mais comuns para tais arquivos.

o Exemplo 2.45

Escrever um algoritmo para criar um arquivo seqUencial. com dados de uma agenda. sendo que os dado,:serão lidos a partir de um teclado. O registro de entrada do arquivo possui os seguintes campos:

é uma palavra-chave; .é o nome do arquivo declarado no algontmo;. .é o nome do registro usado para armazenar no ambiente do algontmoo registro do arquivo. antes da escrita.

é uma palavra-chave; .é o nome do arquivo declarado no algontmo; .é o nome do registro que será usado para armazenar. no ambientedo algoritmo. o registro do arquivo. após a leitura.

escrevanome-do-arquivonome-da-registro

leianome-do-arquivonome-da-registro

~nde:

onde:

{Leitura do arquivo}

killA.T . A}{Teste para detectar fim do arqUivo

G. A.FDAnLe:etão interrompa

~ nome-do-arquivo nome-do-registro

ZA.6.2_ COMANDO DE SAlDASUA fORMA GERAL É DADA POR:

o Exemplo 2.44 , .Supondo-se a existência de um arquivo A. COl~ registras.com campos de NOME e SALARlO. o algont­mo a seguir cria um arquivo B. através da cópIa dos registras de A.

Alloriuno .~ A. B arquivo seQUenc~al de T~ T~ (NO~E li1ml. , .

SALARIO numencQ)

2.4.6. Organização seqüencial

A. . ai característica da organização seqUencial é a de que os re.gistros são a~azenados

. pnncIP. após o outro. Como conseqUência, o acesso aos regIstras do arquIvo. tanto nac~r1ugl.lamente. IstO é•.~msão feitos seqUencialmente, ou seja. a leitura de um registr? ~6 é pos~{vel apósleI t~ra quanto na escn aistros anteriores e a escrita de um registro s6 é feita ap6s o u~u~o regIstro.a lellura de tod~s os reg d -d m um arquivo de organização seqUencIal são mdlcadas nos algo-

As operaçoes de entra a e sal a. eri~mos pelos comandos dados a seguir:

1....6.1. COMANDO DE ENTRADASua forma geral é dada por:

I J.çi;& nome-da-arquivo. nome-do-registro

. Uencial de nome NOTAS. composto do registro DADOS.Neste exemplo ~ declarado um arqul~~~ alguns comandos. ~ f«hado e. em seguida, é aberto

Inicialmente. o arqUIvO é abe,nupara ~7voéfechado.para leitura. Ao fim dOI~gontmo. ~tarqade um arquivo são dependentes do tipo de organização do arquivo

Os formatos para eltura e escne pocr isto serio vistos nos itens seguintes.

'.JSa Q

Page 87: Harry farrer   algoritmos estruturados

)

)

~-.

.~ ,

) ReC. Leia dados e crie arquivos~';"

: _t~1";>

) Cl~ TECLADO.ENDEREçoJ Q!:fina a estrut\lril de dadu~

r -~------- ---------- - .-

.:- Ab~uivos __ ~~ ___ --------- ------------- ------------ - - -------_ .. -- -- ---------- --- ------- ---

j TECLADO.fDA f,.1' Leia salário mínimo

'Dtlo interrompa;j .1 Crie arquivo de funcionários acima de 30 salários-:iil_;. ~.

1 fiin..g :·f :.1 Feche arquivos~ AGENDA.ENDEREÇO -. :j fim al~oÓtmo.

I fim repita'1" I

fim ref.,

}~-~

1 Ref. Defina a estrutura de dados.)

~ CADASTRO. {arquivo com dados de todos os funcionários}

Ref. Feche arquivos BEMPAGOS {arquivo dos funcionários acima de 30 salários}

\ I~TECLADO arquivo seqüencial de DADOS

~AGENDA declare DADOS registro (FUN.CIONÁRIOS,CARGO literal,

) fim ref. SALARIO numéÓco)

1declare ENTRADA {arquivo de onde será lido o salário mínimo ~

Inserindo-se os refinamentos em seus respectivos lugares no algoritmo inicial, obtém-se:arquivo seqüencial de REG .

declare REG registro (S.\LÁRIO~líNIMOnumérico)fim ref.

A "oÓtmo

,I

{Definição das estruturas de dados} No relinamento anterior, além dos arquivo~ CADASTRO e BEMP:'t.GOS, foi declaradc1 o arq ui\ oI declan: TECLADO, {arquivo do qual serão lidos os dados}

AGENDA {arquivo onde serão annazenados os dados}ENTRAD.\. que será usado para a leitura do valor do sahírio mínimo. E,te arqui\o pode ser. por e:xem-

arquivo següencial de ENDEREÇOpio, o teclado de um [erminal.

declare ENDEREÇO rej;istro (NOME literal,TELEFONE numérico. Ref. Abra arquivos

I

LqGRADOURO literal.,

abra CADASTRO leituraI

NUMERO numérico. Mr.í! BEMPAGOS escrita,

CIDADE.ESTADO literal)!

00 E:'ITRADA leitura I

{Abertura dos arquivos} fim ref.illml TECLADO leiturallllli! AGENDA escrita

{Leitura de dados e criação de arquivos}Ref. Leia salário mínimo

[l~

,

leia TECLADO.ENDEREÇOI leia E;-;TRADA.REG

se TECLADO.FDAfim ref. i

J então interrompafim seescreva AGENDA.ENDEREÇO Ref. Crie arquivo de funcionários acima de 30 salários

:

fim repita Le,I!i1!{Fechamento dos arquivos} kia CADASTRO.DADOS

~TECLADO ~ CADASTRO.FDA

~AGENDA i então interrompa

fim algoritmo. lijn seEscreva registro de funcionários acima de .'0 salários

fim repita

O Enmplo 2.46 fim ref. ,

Uma companhia resolveu diminuir sua folha de pagamentos. Para tal, mandou criar um arqui\-o, a partirdo arquivo cadastro da empresa, com todos os funcionários que recebam mais de 30 salários mínimos.

Ref. Es.:reva registro de funcionários a.:ima de 30 saláriosSabendo-se que os registras possuem os campos mostrados na figura abaixo, escrever um algoritmo paracriar o arquivo pedido.

j C-\DASTRO.DADOS.SALÁRIO> 30 x REG_SAL\RIOMj~L\IOelUào escre\a BEMPAGOS.DADOS

I NOME DO FUNCIONÁRIO I CARGO I S.\LÁRIO Ifim ,;c

lim rer.

154 155

,•J

l

)

Page 88: Harry farrer   algoritmos estruturados

••

')

)

)

()O

"••OOO.t:;l:'U

OO\t()

G

Ref. Abra arquivos

ImSAfDA~~ REGlÃOI.REGIÃ02.REGIÃ03 ki!urn

fim ref.

Ref. Gere o arquivo de sarda

n·aj RE?I~Ol.FDA ç REGIÃ02.FDA ç REGIÀ03.FDA

culã0 mterrompa

~variável para seleção do registro com a menor idade

Ref. Leia um ~gislro de cada arquivoki.i! REGIAOl.PESQUISAI1m REGIÃ02.PESQUlSA2ki1l REGIÃ03.PESQUISA3

fim ref.

fim ref.

157

Ref. Defina as estruturas de dadosdeclare SAfD~ {arquivo <!nde serão e~critos os r~gistro~intercalados}

REGIAOI. REGlA02. REGIA03 {arquIvos de entrada por região}arquivo seqüencial de PESQUISAI

~ P~QUISAI. PESQUIS~2.PESQUISA3 {um registro por arquivo}~ (IDADE.SALARIO,NDEPENDENTES,PATRIMÓNIO.

CALORIAS numéÓco.SEXO,ESTADOCIVIL,INSTRUÇÃO likrnl)

~ NARQUIVO, {indica a qual arquivo pertence o registro com menor idade}MENORIDADE numérico

~bserYe-se na dec1araçã~ de arquivos que todos foram definidos como tendo o registro do fonnatodo ~glstro PESQUISAI. Pore~. foram decl~dos out~os registros (PESQUISA:! e ~ESQUSA3) queserao u~ados para manter no amble.nte dO,algont~o os reglstros lidos dos arquivos REGIA02 e REGIÃ03.respectivamente. Também o arquIvo salda usara estes mesmos registras para escriu.

f ~fina as estruturas de dadosr' Abra arquivost Leia um registro de cada arquivo

Gere o arquivo de saídaFeche arquivos

fim ali0ritmo.

ij!±f4':.';;i;c.".'~

..(CM

'tak.iíl CADASTRO.DADOS

jCADASTRO.FDAentão interrompa~ , í

j' CADASTRO.DADOS.SALÁRIO > 30 x REG.SALARIOM NIMO

então escreva BEMPAGOS.DADOS

~fim repita

{Fechamento de arquivos}~CADASTRO

~BEMPAGOS

~ENTRADA

fim aleoritmo.

IS6

o ":xemplo 2.47U aTIa instituição de pesquisa recolheu amostras em ttês re~iões a respeito do lÚvel~ vida da ~pulação~regiões. Cada amostra constitui um registro com os segumtes com~nentes: ~xo. ldad~. salário, es~o CI~.número de dependentes. valor do patrimônio. quantidade de cal~nas ab~~rvl?ªspor dIa. grau.de mstruçao.

Em cada região. os dados foram armazenados em um arqUIVO sequencIal. sendo os registras coloca-

d~s em ordem crescente de idade.Escrever um algoritmo que intercale estes arquivos de modo que o arquivo resultante permaneça

Drdenado.

S~J/"t,'cio: . ..A intercalação de arquivos é um problema muito comum ~m processamento de arquIvos sequen-

c i ui~. A solução aqui apresentada certamente servirá de referênCIa para problemas semelhantes.

AIa:;QritrnQ {Criação de um arquivo com dados selecionados}{Definição da estrutura de dados}

declare CADASTRO. {arquivo com dados de todos os funcionári~s}BEMPAGOS {arquivo dos funcionários acima de 30 salários}arquivo seQüencial de DADOS

~ DADOS~ (FUNCIONÁRIOS,CARGO lliml,SALÁRIO numérico)

~ ENTRADA {arquivo de onde será lido o salário mínimo}arquivo seqüencial de REG

~ REG~ (SALÁRIOMÍNIMO numérico){Abertura de arquivos}

i!b.ril CADASTRO ki!Jm!lliml BEMPAGOS lliIlli!i!brn ENTRADA leitura

{Leitura do salário mínimo}k11 ENTRADA. REG

{Criação de arquivos de funcionários acima de 30}{salários}

Inserindo-se os refinamentos em seus respectivos lugares no algoritmo inicial. obtém-se:

Rcr_ Feche arquivos~CADASTRO

~BEMPAGOS

~ENTRADA

fim ref.

Page 89: Harry farrer   algoritmos estruturados

;j:~I.~

SEXO,HSTADOCIVIL,INSTRUÇÃO 11lml)NARQUIVO, {indica a qual arquivo pertence o registro com menor}

{idade}MENORIDADE numérico

{Abertura dos arquivos}

159

PESQUISA I,PESQUISA2,PESQUISA3 {um registro por arqui vo}~ (IDADE,SALÁRIO.NDEPENDENTES,PATRIMÔf\ lO,

CALORIAS nurntrleo,

m SAÍDA mrilílm REGIÃOl,REGIÃ02,REGIÃ03~

{Leitura de um registro de cada arquivo}kliI REGIÃOI.PESQUISAIkill REGIÃ02.PESQUISA2hlli! REGIÃ03.PESQUISA3

{Geração do arquivo de saída}e ita

se REGIÃO I.FDA e REGIÃ02.FDA e REGIÃ03.FDAJ então interrompa- -fi.!IL.s.e.

{Iniciação das variáveis para seleção do registro com a menor idade}MENORIDADE +-- 9999

{Seleção do registro com a menor idade}se PESQUISA I.IDADE < MENORIDADE e não REGIÃO I.FDA

Jentão MENORIDADE f- PESQUISAI.lDADENARQUIVO +-- I

~se PESQUlSA2.IDADE < MENORIDADE~ REGlÃ02.FDA

Jentão MENORIDADE f- PESQUISA2.IDADENARQUIVO +-- 2

~se PESQUlSA3.1DADE < MEl\ORIDADE e não REGIÃ03.FDA

Jentão MENORIDADE +-- PESQUISA3.IDADENARQUIVO +-- 3

fim se{Escrita no arquivo do registro selecionado e leitura do próximo}

se NARQUIVO = I

Jentão eScreva SA!DA.PESQCISAIkli! REGIAOI.PESQUISAI

fim sese NARQUIVO = 2

Jentão escreva SA!DA.PESQUISA2kli! REGIA02.PESQt:ISA2

fim sese NARQUIVO = 31 então escreva SA!DA.PESQlJISA3J kli! REGIA03.PESQlJISA3fim se

fim repita{Fechamento dos arquiros}

feche SAÍDA,REGlÃO 1.REGIÃO~,REGlÃ03fim algoritmo.

1.4.6.6.3. EXERC(CIOS DE FlXAÇ\O.2.4.6.3.1. Escrewr um algoritmo para listar o arquivo AGE~DA cri~do no exemplo 2.4:' .() 2.4.6.3.2. A seção de controle de produção de uma fábrica mantém um arquivo dI.' registros de prClJu­ção por máquinas. Cada registro contém o número da máquina e o núml.'ro de peças produzidas em um

);:r:.-;

;

) JSeleciope o registro com menorid~de . .. . . .. -fr f.;

iEsc~va no arquivo II registro seIeclonado e ICla~Jll'{)Xrm~_______._.____.________ .

fim n:pJlAfim rer. ·i

Ref. Inicie variável para seleção do registro com a menor idade'i

I I MENORIDADE t- 9999.-

fim rer.

Ref Selecione o registro com menor idade -:e PESQUISA I.IDADE < MENORIDADE e não REGIAO I.FDA

J 1~ MENORIDADE +-- PESQUISA l.IDADE) NARQUIVO +-- I

I) ~em:~SQUISA2.1DADE < MENORIDADE ~ não REGIÃ02.FDAI Jentão MENORIDADE +-- PESQUISA2.IDADE ,f NARQUIVO +-- 2~ -.• PESQUISA3.1DADE < MENORIDADE e não REGIA03.FDA1jclltàll MENORIDADE +-- PESQUISA3.IDADEl' NARQUIVO~ 311'11 se

fim reI'.)

ReI'. Escreva no arquivo o registro selecionado e leia o próximo1NARQUIVO ~ I,então escreva SAIDA.PESQUISAI

hlliI REGIÃO I.PESQUISA I

~se NARQUIVO = 2. .,Jentão escreva SA!DA.PESQUISA;

kli! REGIA02.PESQUISA-J:i1D..gse NARQUIVO = 3.Jentão escreva SAIDA.PESQUISA3

kli! REGIÃ03.PESQUISA3

llin..1i!:tim rer.

Ref. Feche arquivos _-\~ SAÍDA,REGIÃ01,REGlA02,REGIA03

fim ref.

. I o es no algoritmo inicial. obtém-se:Inserindo-se os refinamentos em seus respectiVOS uoarF {ln"~.I,,,o '" '"I"i.,,} .

{Definição das estruturas de dado~}. .. r SAlDA, (arquivo onde serão_escritos o~ reglstros tntercalado:L~ REGIÃOI.REGIÃO:!.REGIA03 {arqUIvos de entrada por re",lao}

i.\fQUivo seqUencial de PESQUISA I

v."·

JJ

Page 90: Harry farrer   algoritmos estruturados

(~)

')OO

••••QOQ

G)

o&OP161

~ LINHA~ (COMPONENTEJilm!)

lIml ALUNOS lc.itw:a {Abertura dos arquivos}

abri LISTAGEM §gjlJ

. {Pesquisa do registro}

H·ALUNOS.DADOS

j ALlJl':lOS.FDA.QJ.! DADOS.MATRla;1.A = 830008então Interrompa

.fiin.Rfim repiti

JALUNOS.FDA

~ LINHA.COMPONENTE ~ "REGISTRO NÃO ENCONTRAOO"~ LISTAGEM.LINHA

~ão escreva LISTAGEM.DADOS

{Fechamento dos arquivos}~ ALUNOS,LISTAGEM

fim aJioritmo.

Se a organização for direta, a disposição dos re .stros n . _ .tada pelo arquivo seqUencial Através de fu _ . gJ o arqUIvo nao será ne.::ssanamente apresen.

. . . . nçoes Internas ao computador cada r 'tr . Iu~a poSição umvocamente determinada pela cha\'e escolhida A fi i 5 :gls o sera ocado emdispostos os registros num arquivo direto. . Igura. mostra como poderiam ser

Para se ter acesso a um registro bast ~ ti' .caso, o número de matrícula deseiado' Na"oahe, neeuar'~ed a

dedllura ao arqUIVO usando a chave desejada. no

O· ,. cessl a e e o algoritmo prover oh 'd 'sa. mecamsmo de gerência de arquivo de ac d' do ~ um tipo e pesqul-registro procurado. Caso a chave não exista u~:~o I~~t~ d c~mputador é capaz de associar a chave aotestada. semelhantemente ao mecanismo de' FIM D:~kQ~v~VE lNVÁLIDA será possível de ser

Função que associa a chave com os registros

820001 KKI<ZDXZ 140300

820007 ACKYOVZ 111'11Matriculasusadas como 820003 KYZ ZZZZ 0010chave paraacesso ao outrasregistro 820005 ZZZ DEEK 111'

informaçóes

830008 ZKO AMA 99990

830001 ZZZ AOOEF 00000

Fig. 2.5 Arquivo de acesso direlo.

A escolha da chave é feita pelo usuári d .como chave um dos campos do registro. Ca~~~~:e~~e ~ cnação ~o arquivo. Em geral. escolhe-sehaver registros usando a mesma chave, já que nã~ haverá u;:~:~\;:;;s:;:_sua c~~ve. Não pode

As operações de entrada e saída em um " d . . ~ungut- os.pelos comandos dados a seguir. arqUI\O e orgamzação dlreta são indicadas nos algoritmos

1.4.7.1. Cml-\NOO DE ENTRADASua forma geral é dada por

INFORMAÇÕESOUTRASMATRÍCULA

820001 ZZZADDEF 00000

820007 KKKZDXZ 140300

820003 ACKYDYZ 111111

820005 ZKDAAAA 99990

830008 ZZZDEEK 1111

830001 KYZZZZZ 0010

Fig. 1.4 Organização seqüencial do arquivo de alunos.

1M

o ":xemplo 2.48

Supunha-se um arquivo de registros de alunos de um colégio. Cada registro possui um campo para o númerode .natrícula e uma seqüência de outros campos com outras informações. A figura 2.4 representa a o,rga­nização deste arquivo seqüencialmente. Um algoritmo para a obtenção de um registro neste arquivo, porexenlplo procurando um registro com um determinado número de matrícula. deverá preocupar-se empesquisar cada registro até encontrar. ou não, o registro desejado.

,4

J!!i~w:i1m.Q {Pesquisa pelo registro cuja matrícula seja 830008, num arquivo seqUencial}{Definição do arquivo de alunos}

~ ALUNOS W!livo seqUencial de DADOS~ DADOS~ (MATRíCULA numérico.

OUTROSDADOS li!ml){Definição do arquÍ\'o,para impressão}

~ LISTAGEM arquivo seqUencial de LINHA

2.4.7. Organização direta

Um algoritmo para encontrar o registro com a matrícula 830008 poderia ser o seguinte:

A principal característica da organização direta é a facilidade de acesso a um registro desejado. Aocontrário da organização seqüencial, para se ler acesso a um registro de um arquivo direto, não é neces­sário pesquisar-se pelo registro, pois este pode ser obtido diretametlte. Isto é possível porque aposição doregistro no espaço físico do arquivo é univocamente determinada a partir de um dos campos do registro.escolhido no momento de criação do arquivo direto como "chave".

clia. Supondo que a fábrica possua três máquinas. escreva um algoritmo que separe o arquivo em trêsoutros arquivos. um para cada máquina..,2.4.6.3.3. Reescrever o algoritmo do exemplo 2.47, substituindo os três registros declarados por umavariável composta helerogênea.• 2.4.6.3.4. Uma agência bancária cria diariamente dois arquivos: o primeiro com as operações de crt.dito e o segundo com as operações de débito. Ambos os arquivos são ascendentemente ordenados, pelonúmero da conta do cliente. Para atualizar o arquivo de contas correntes, é necessário intercalar o arquivode débito e o de crédito. e gerar um único arquivo.

Supondo que o registro de cada um dos arquivos tenha as seguintes informações: número da conta,código da operação (débito ou crédito), valor da operação e data da operação. escrever um algoritmo quecrie um arquivo intercalando débitos e créditos.C) 2.4.6.3.5. Supondo que o arquivo de contas correntes seja ascendentemente ordenado. escrever umalgoritmo que atualize este arquivo a partir do arquivo criado no exercício anterior.

Page 91: Harry farrer   algoritmos estruturados

I"orim o {Exibição de saldo em coma corren:e}{Detinição da estrutura de dadl'; j

declare CO:'iTAS CORRENTES {arqui'" contend.' registro é.lS contas .:orremes)arquivo direto de CLlE;-;TE

~ TECLADO {arquivo p;lfa leitura ~v número da conta'·arquivo seQüencial de CO~TA

declare TELA {arqui\o para exibição do, Jados do .:lieme}arquivo seQüencial de U;-;HA

declare CLlE:'I."TE registro (NO~[EDOCLlE;-;TE literal.SALDO numér.,:oJ

~ TEXTO rellistro ,COMPO:\El\TE htera!)declare CONTA~ (CA.\1PO numéri.: ..'Ideclare L1NH.-\. registro ,NOMEDOCLlE;\TE literal.

163

re italeia FOi'iTE.REG~ FONTE.FDAJ então imerrompa11m seescreva item [PLACA] VEÍCL·LOS.REG

fim repita{Fechamento de arquivos}

truKFONTEfeche VEÍCL'LOS

fim algoritmo.

.Q,!,ió!.l.I.l!ll1!l {Criação de arquivo de acesso direto a pal1ir de arquivo seqüencial}{Definição das estruturas de dados}

declare FONTE {arqui\'O seqüencial contendo os registras dos veículos}arquivo seQüencial de REG

declare VEÍCULOS {arquivo de acesso direto com os registros dos veículos}arquivo direto de REG

declare REG registro (PLACA.TIPO.PROPRIETÁRIO literal){Abertura dos arqui\'Os}

m FONTE leitura~ VEÍCULOS escrita

{Criação do arquivo direto}

o Exemplo 1.50

Criar, a partir de um arquivo seqüencial. um arquivo de acesso direto. com registros comendo a placa.tipo e nome do proprietário de um veículo. Usar como chave a placa do veículo.

o Exemplo 2.51

Um terminal. composto de uma tela e um tecladl'. pode ser tratado em um algoritmo. e t:L'TIbém e m umprograma. como um arquivo. Pela própria naturaa do equl?amento. ;l tela de\erá ser traI;lda COIDO u!narquivo de saída. e o teclado. como um arquivo ce entrada..-\.mbos s5.., arquivo,; seqüenciJ.is.

Agora. supondo-se que em um sistema compUlacional bancário exista um arqui vo de :ices,;o dire:,'.e que cada registro gravado usa como chave o numero da C.lnta do cltente. escrever um algoritmo P;l[;lum programa que receba através do teclado o número da conta do cliente e de\-olva. na teb. o nome ..1.)cliente e o saldo da conta. Supor que o registro d., arquivo contenha ,,-'mente e,w.s infom:ações.

nome-do-registro

é uma palavra-chave;é uma palavra-chave;é o nome ou o valor do campo do registro escolhido como chave paraendereçar o registro;é o nome do arquivo declarado no algoritmo;é o nome do registro declarado para o arquivo e que será usado paraarmazenar no ambiente do algoritmo o registro após a leitura ouantes da escrita.

é uma palavra-chave;é uma palavra-chave: . .é o nome ou o valor do campo do registro escolhido como chave paraendereçar o registro;é o nome do arquivo declarado no algorilmo;é O nome do registro declarado no algoritmo e que será usado paraarmazenar no ambiente do algoritmo o registro após a leitura ou antesda escrita.

nome-do-arqui vonome-do-registro

escrevaitemchave

nome-do-arquivonome-do-registro

A "O itm {Pesquisa pelo registro cuja matrícula seja 830008. num arquivo direto}{Definição do arquivo de alunos}

~ ALUNOS arquivo direto de DADOS~ DADOS registro (MATRíCULA numérico.

RESTO literal){Definição do arquivo para impressão}

~ SAíDA arquivo seQüencial de LINHA~ LINHA registro (COMPONENTE~)

{Abertura dos arquivos}il!m! ALUNOS leituraª-ºrn SAÍDA~

{Leitura do registro. usando a matrícula 830008 como chave}kiA..item [830008] ALUNOS.DADOS .

{Se esta chave não for encontrada no arquivo. então eXiste erro)

le ALUNOS.INV

mti\Q LINHA ~ :'CHAVE NÃO EXISTE NO ARQUIVO"~ SAIDA.LINHA

senão LINHA ~ DADOS.RESTOescrenl SAÍDA.LlNHA

~{fechamenlo dos arquivos}

escreva item [chave] nome-da-arquivo

~ [chave] nome-da-arquivo. nome-da-registro

o Exemplo 2.49

o algoritmo desenvolvido anteriormente para encontrar o registro c?m a matrícula830008 no ar­quivo seqüencial poderá ser reescrito com a seguinte forma para um arquIvo de acesso dlreto.

onde:

onde:leiaitemchave

)

)

)

}

..J,J

}

.1

}

LJ

)

)------ --------------------- ------------------------------

-)

)

)

)

)

) 1.4.7.2. COMANDO DE SAfDA{ ) Sua forma geral é dada por:

()" )

)

""

Page 92: Harry farrer   algoritmos estruturados

2.5. EXERCÍCIOS PROPOSTOS

.J1)")

))

)

()

•••8()

••()i)...'\

(),,'i-J

CJ)

•••••~

OiQ

OOOOG.\ ,,r')

99 100

~,---_1_60_--'--- -----.J,----3_3-----,~I 2

S = (210 - 97)3 + (160 - 33)3 + ...À 2.5.1.5. Fazer um algoritmo que:a) leia um conjunto de valores inteiros correspondentes a SO notas dOi alunos de uma turma, notas estas

que variam de Oa 10;b) calcule a freqüência absoluta e a freqüência relativa de cada nota:c) imprima uma tabela contendo os valores das notas (de Oa 10) e suas respectivas freqüências absoluta

e relativa.

S = (bl - bUll») + (b: - b,,») + (b) - b98») + "0 + (blO - bll)l

Exemplo:

MESES

165

EMPREGADOS

B

Exemplo:

Observações:\. Freqüência absoluta de uma nota é o número de vezes em que ela aparece no conjunto de dados.2. Freqüência relativa é a freqüência absoluta di\'idida pelo número trtal de dados"3. Utilizar como \'ariável composta somente aquelas que forem nece~;árias.

À 2.5.1.6. Fazer um algoritmo que leia diversos pares de conjuntos nu;néricos e que imprima a identifi­cação dos pares de conjuntos disjuntos (aqueles que não possuem elementos comuns a ambos). Os ele­mentos de cada par de conjuntos são precedidos pelo nome que identifi'::l o par e pelo número de elemen­tos de cada conjunto. Após o último par de conjuntos vem como identi.':icação do par o literal VAZIO. Onúmero máximo de elementos de cada conjunto é 250,t:. 2.5.1.7. Um armazém trabalha com 100 mercadorias diferentes identi::cadas pelC'S números inteiros de 1a 100. O dono do armazém anota a quantidade de cada mercadoria venlida durante o mês. Ele tem umatabela que indica, para cada mercadoria, o preço de venda. Escreva um alf')ritmo par:! calcular o faturarneDlomensal do armazém. A tabela de preços é fornecida seguida pelos número; das meIL..dorias e as quantidade-;;vendidas. Quando uma mercadoria não tiver nenhuma venda, é informado i:" valor zero no lugar da quantidade. 2.5.1.S. Uma grande firma deseja saber quais os três empregados l'LlÍs recentes. Fazer um algoritmopara ler um número indeterminado de informações (máximo de 3(0) ..:-.:ontendo o número do empregadoe o número de meses de trabalho deste empregado e imprimir os três ruais recen:es.

Observações: A última informação contém os dois números :fuais a ze~o. l"ão e:tistem doisempregados admitidos no mesmo mês.

Empregado mais recente: 4631.t:. 2.5.1.9. Fazer um algoritmo que:a) leia uma variável composta A com 30 valores numéricos:b) leia uma outra Yariável composta B com 30 valores numéricos;c) leia o valor de uma variável X:d) verifique qual o elemento de A que é igual a X:e) imprima o elemento de B de posição correspondeDle à dl' elemeDll' je A iguJ.i a X.

NÚMERODACONTA,SALDO numérico)

{Abertura dos arquivos }

IbmTECLA~ kinmIIbmTELA llinlíl .Ibm CONTASCORRENTES~

{Leitura dos arquIvos}

kia TECLADO.CONTATECLADO.FDAj então jntl:rrompa

=m (CONTA) CONTASCORRENTES.CLlENTECONTASCORRENTES.INV - ..W2 TEXTO ~ "NÚMERO DA CONTA NAO EXISTE

lliGYll TELA.TEXTO~ L1NHA.NOMEOOCLIENTE~CLlENTE.NOMEDOCLIENTE

LlNHA.NÚMERODACONTA~ CONTA.CAMPOLlNHA.SALDO ~ CLIENTE.SALDO~ TELA.LlNHA '

2.5.1. Variáveis compostas unidimensionais

PROBLEMAS GERAIS . d d' . be-se que de J"aneiro a abril de 1976 (\21 dias}. não ocorreu,.. 2 5 1 1 Em uma clda e o mtenor,sa, . d d" t-ao d'lspo~ ....." ° "400C As temperaturas venficadas em ca a la es -temperatura IDfenor a 15 C nem supenor a .I'l í veis em uma unidade de entrada de d~dos ..

Fazer um algoritmo que calc.ule e Impnma:• a menor temperatura ocomda;• a maior temperatura ocorrida;• a tcmperatura média; . • •d'• o número de dias nos quais a temperatura foi infenor a temperatura me la.

.. 2.5.1~Fazer um algoritmo que:a) leia uma frase de SO caracteres, incluindo brancos;b) conte quantos brancos existem na frase;

c) conte quantas vezes a letra A:p~:~~ par de letras na frase e quais são elas;d) conte quantas vezes ocorre u .e) imprima o que foi calculado nos Itens b. c e d.

.b. 2.5.1.3. Fazer um algoritmo que: I d a variável composta A de valores numéricos, orde-u) Icia o valor de n (n :5 1000) e os n va ores e um

nados de fo~a c~scente:. pete no conjunto. a quantidade de vezes em que eleb) determine e Impnma, para cada numero que se re

aparece repetido;" vo conJ'unto'c) elimine os elementos repelidos. formando um no 'd) imprima o conjunto obtido no item c. ." s disponíveis num meio de entrada qualquer. fazer 1.5.1.4. Dado um conjunto de 100 valore.s nulmenco ta B e calcular e imprimir o valor do somatórioum algoritmo para armazená-los numa vanáve compos ,ÕIdO a seguir:

fiiIl$.fim repila .

{Fechamento dos arquIvos}~ TECLADO.TELA.CONTASCORRENTES

11m algoritmo.

ii

Page 93: Harry farrer   algoritmos estruturados

167

9 ,~

-'-

16 II

34 17

TRANSPOSTA DE :\

B

6 9 II 15

32 19 3 -I

B

17

34

II

169

32

[2I2]~

A

~~

A

A

Exemplo:

Exemplo:

Calcular o conjunto C = A +,.. B. 2.5.2.5. Fazer um algoritmo que:a) leia duas variáveis compostas bidimensionais de dimensão m x n (01 ~ 20. n ~ 30). Os valores de m

e n são fornecidos inicialmente. A seguir. são informadas cada uma das linhas de cada uma das variáveis:b) calcule e imprima a soma dessas variáveis.[, 2.5.2.6. Fazer um algoritmo que:a) leia uma matriz A. de dimensão M x N (M ~ 20; N ~ 50). Os valores de M eN são dados e. a s~gllir.

são fornecidas as linhas da matriz; -b) determine a matriz transposta de A;c) imprima a matriz A e a sua transposta.

 2.5.2.7. Fazer um algoritmo que:a) leia uma matriz inteira A de M X N. onde os elementos de cada linha e os valores de M e ;'II são for­

necidos (M ~ 20. N ~ 10);b) imprima a matriz lida;c) calcule e imprima uma matriz modificada B (M x N + I). sendo que os elementos da (N .,.. I l-é sima

coluna são formados com o produto dos elementos da mesma linha.

6

o

18

4.75

2000

7321

5

156

442

9000

992

432

6381

9000 3.7

A

B=~

C =

175 225 10

2 9.8 100 363

3 40 301 30.2

4 402 4211 7213

5 21 3 2

2 3

166

2,5,2. Variáveis compostas multidimensionais

PROBI.EMAS GERAIS/:"2.5.2.1. Seja a seguinte variável composta bidimensional A;

I. •. ' • l:"~-"'-. ~. II} 'lulUnvoJ "'H..'U""UV~ "U.•'-U.l yU...... '-IV '"'VUJU"'V,Ã 2.5.1.111. Inlercalaç~~) e o processo ullI lI,ado para construir uma tabela ordenada, de tamanho n + m. a :.::~;"; ~~ b) Qual o conteúdo do elemento identificado por A[4,5]?partir de dilas tabelas Ja ordenadas de tamanhos nem. Por exemplo. a panJr das tabelas:,,'!" ... 1f,V. c) Qual o conteúdo de X após a execução do comando X f- A[3,2] + A[5, I]?

o . , '. d) O que acoiltet-eria 'ClmYfosse referenciado o elemerlto A[6.2t noalgoritmu?oe) Somar os elemelltos da quarta colulla ---------- ----" (A[I,4) + A[2,4] + A[3.4] + A[4,4) + A[5,4]).. O Somar os elementos da terceira linha:

(A[3.l] + A[3,2] + A[3,3] + A[3.4».:; f). 2.5.2.2. Dada a variável bidimensional B. de 100 linhas por 200 colunas. escrever o trecho de algorit­

'(;. mo que calcula o somatório dos elementos da quadragésima coluna.~ A 2.5.2.3. Com a mesma variável composta do exercício anterior, escrever o trecho de algoritmo que',. calcula o somatório dos elementos da trigésima linha.r: A 2.5.2.4. Dadas as variáveis compostas A e Babaixo:.e

P = a"X" + a,,_,X"-1 + a"_lX"-l + ... + a1x + Uo

Escrcver um algoritmo que:a) leia o valor de n. sendo n ~ 20;b) leia os c~ficientes ai' i = O. 1,2..... n;c) clllcule o valor de P para 10 valores lidos para x;li) imprima o valor de x e o valor de P correspondente.

construímos a tabela

Fazer um algoritmo que:a) Ida NA. número de elemenos do conjunto A (NA ~ 100);b) leia. em seguida, os elementos do conjunto A;c) leia. logo após o valor de NB. número de elementos do conjunto B (NB ~ 100);d) Il:ia. finalmente, os elementos do conjunto B;e) crie e imprima um conjunto C, ordenado. de tamanho NA + NB. a partir dos conjuntos originais Ae B.

Ob.\·l'n·açiles:I. Considerar os elementos de A e B como inteiros.2. Os elementos de A e Bjá são lidos ordenados.

I'IWIIL.:MAS m: AI'I.ICAÇÃO EM Cli,NCIAS EXATASÃ 2.5.1.11. Fazer um algoritmo que:a) leia o valor de M (M ~ 30) e os M valores de uma variável composta A;h) leia o valor dc N (N ~ 20) e os N valores de urna variável composta B;e) determine o conjunto C = A U B (união de A com B). onde C não deverá conter elementos repetidos

(A e B não contêm elementos repetidos);d) imprima os elementos contidos em A. B e C.Ã 2.5.1.12. Seja

)

)

~-----k-=- L---L---.J-....I.----I

) e

)

)

)

)

)

I )

)

•)

W~

Page 94: Harry farrer   algoritmos estruturados

')

)

)

)

~

•••OG)

••J)

()Cl()

O

••••OOQ

3OO'3

~".",.",169

UJ..JCJ

~Hora de Hora de

Cimento Areia Brita pedreiro servente Tijolo BetoneiraAtividade (kg) mI m! (h) (h) (u) (h)

I - Fundação m l 50 0,4 0,6 5 3 O 32 - Alvenaria m' 20 0,3 O 2 1 100 I3 - Estrutura m·1 70 0,3 0,7 6 3 O 354 - Acabamento m' 40 0,2 O 9 5 O I

e que. as despesas indiretas (administração) são dados levantados a cada mês. fazer um algoritmo que'a) leJ.ll o percentual de administração do mês; .b) leia os custos unitários dos sete recursos envolvidos;c) leia um conjunt? indetenninad~ ~e dados (máximo de 15 atividades) contendo os quantitativos de

recursos envolVidos em cada allvldade;d) calcule e imprima:

d.l) o preço unitário de custo (direto + administração) de cada atividade'd.2) o pre.ço unitário que a empreiteira deve cobrar em cada atividade. p~a que tenha 36% de lucro;d.3) conSiderando o. percentual de I~% para as leis sociais, incidentes sobre a mão-de-obra, quanto

deve ser recolhido para cada Unidade de atividade;dA) considerando o percentual de administração fornecido + 36% de lucro + 16% de leis sociais

qual.será o ~r~ço a ser cobrado pela empreiteira para a construção de uma obra que envolva a~seguintes allvldades:

50 m! de fundação,132 m2 de alvenaria,200 m l de estrutura,

339 m' de acabamento;d.5) para a mesma obra acima. qual será a quantidade total de cada recurso envohido?

t. 2.5.2.13. Desenvolver um algoritmo para imprimir uma tabela com o indice de aJinidade exísten­~~~.ntre cada moça e cada rapaz de um grupo de M moças e um grupo de R rapazes (R :s 50 e M ::s

Foi distribuído entre eles um questionário de 100 perguntas. tais como:Você se incomoda que seu parceiro fume?Você é vidrado em música sertaneja?Você gosta de cebola?

1.l3.

100. Você gosta do AMÉRICA FUTEBOL CLUBE?Cada resposta tem as seguintes opções:

51."1l!IíDIFERENTENÃO

O índice de afinidade de um rapaz com uma moça é dado pelo número de perguntas em que ambosderam a mesma resposta ou em que um deles deu a resposta indiferente.

O algoritmo poderá ler:• os valores de R eM;• as 100 resposlas de cada rapaz;• as 100 respostas de cada moça.A tabela que será impressa deverá ter o aspecto:

POPULAÇÃO [ij]

população do j-ésimo municípiodo i·ésimo estado.

102

2

-t"'..:. -\

1:12.5.2.8. Uma biblioteca possui lIito departamentos. Cada depanamento contém 40 estantes capazes de ;{ ~, tivos), impostos, depreciação de equipamentos, leis sociais etc., totalizando o preço final para a execu­conter, cada uma. ISO livros. Supondo que o livro-padrão tenha 200 págifIas de 35 linhas por 60 coll1l1a& "~:; '. ção de cada fase.de caract.cres. declarar uma variável composta capaz de conter todos os caracteres presentes nos livros da ·f't. Este proc~dimento básico ~ &dotado em várias empreiteiras de obras e o objetivo deste trabalho ébiblioteca. . ,T' i:. fazer um algontmo que execute estes cálculos para auxiliar o analista de custos de uma empreit .1:12.5.2.9. Um Brupo de pessoas respondeu a um questionário composto de 10 perguntas. Cada pergunlll . l.-" Supondo-se que na execução do prédio são realizados quatro tipos de atividades e que ca:~mcontém cincoopções ou respostas possíveis. codificadas de I a 5. Cada perguntaé respondida com a escolha ; f consome os recursos especificados na tabela dada a seguir ade apenas uma opção dentre as cinco opções possíveis. ,",' .t'

São fornecidos os nomes das pessoas e suas respectivas respostas. A última infonnação. utililllda '. ~

comoj1~g. contém o nome da pessoa igual a "VAZIO". :1... ,.Fazer um algoritmo para ler e imprimir os dados lidos e calcular e imprimir o número de pessoas ~,

que resp<>nderam a cada uma das cinco opções de cada pergunta. t· t1:1 2.5.2. 10. Fa:zer um algoritmo para controlar as reservas de passagem dos voos de uma companhia aé. '~:.rea e verificar os lucros e prejuízos da mesma.

O algoritmo deverá:l. Ler 'Os dados de 10 voos. Os dados de cada vôo são fonnados pelo:

• 011 O1ero de voo;• tipo de avião utilizado (707, 727, 737);• preço da passagem.

2. Ler um número indetenninado de pedidos de reservas, contendo cada um:• mi mero da identidade do passageiro; e• mi mero do voo desejado;(flag: número da identidade = O).

J. Veri ficar. para cada passageiro, se há disponibilidade no vôo. Em caso afirmativo, atualizaro númerode lugares disponíveis e imprimir:• nú Incro da identidade do passageiro;• nú mero do voo desejado;• preço da passagem;• a ntensagem "RESERVA CONFIRMADA".El11l caso negativo, imprimir os dois primeiros itens e a mensagem "VÕO LOTADO".

4. Ao fin ai, i mprimir uma estatística de lucros e prejuízos por voo e no total da companhia aérea. Con.siderar que a lotação de 60% de capacidade de cada avião não produz lucros nem prejuízos. Sendoass i m~ aci ma deste valor é lucro e abaixo é prejuízo.OI7.wrvaçCio: Capacidade de cada avião: 707 -200 lugares; 727 - 170 lugares; 737 -1:20 lugares.

À 2.5.2.11. Fazer um algoritmo que leia e imprima uma variável composta bidimensional cujo conteúdoé a população dos 10 municípios mais populosos de cada um dos 23 estados brasileiros.

23

Dete rTni nar e imprimir o número do município mais populoso e o número do estado a que peJ1ence. Con·siderando que a primeira coluna contém sempre a população da capital do estado. calcular a média dapopulação das capitais dos 23 estados.À 2.5.2.12. A composição dos custos das diversas atividades de construção de um prédio é feita a partirda elaboração de um quadro de quantitativos dos diversos recursos envolvidos em cada atividade. Estesrec\&r~ sãc:> de vários tipos e envolvem principalmente os custos mais diretos, como. por exemplo, ma·~ri_·primas. mão-de-obra. hora de equipamento etc., Sendo conhecidos os custos unitários para cada recurso envolvido. chega-se facilmente ao custo li·nal ullitMo de cada atividade. A este custo são acrescidos os percentuais de custos indiretos (adminisrra-

Page 95: Harry farrer   algoritmos estruturados

lL'GARESPREÇOTIPO

l\0Mr.... nner:m--

NOME:

AVIÔES

4

---HeRA5-NORMA1S

(

'\ r-__ ,...---+ ~~_~_-l-~(numérico)

: JI--l---~- 1 J' l IINSCRIÇÃO CLASSE HORAS EXTRAS(numérico) (numérico) (numérico)

3

2

10

NÚM.ERO DE INSCRiÇÃO:5ALARlO HORAS NORMAIS:SALÁRIO HORAS EXTRAS:DEDUÇÃO lNSS:

SALÁRIO LÍQUIDO:

---rl---

CADASTROHCHA

100

Fazer um algoritmo que processe a tabela e emita, para cada funcionário, seu contfi\checue. c\.Ijo(onnato é dado a seguir: .

103,08,01.05. 07, OJ.09,03.0~.05

VÔOS

171

O salário de referência deverá ser lido previamente.O salário referente às hora,; extras é calculado acrescentando 30<;f ao sahíriu-hxa nurm,,!' O de,,­

conto do Il\SS é de 8% do salário bruto (.aiário correspondente às horas normais trJbalhada, - sal~írío

correspondente às horas extras l.Para o cálculo do salário. considerar que existem duas classes de fun.ionários. J classe I. ~ujo sab·

rio é 1.3 vez o salário de referên.:ia, e a classe 2. cujo salário é 1.9 vez o salário de referênciJ.f::,. 2.5.3.4. Resolver novamente o exercício 2.5.2.9.. considerando as seguintes estruturas de (LJos:

"2.5.3.5. Uma empresa de transporte illlerestadual deseja cakular a di,l:incia perc,'rrida pc:,'s ônibu,.Para isto. é fornecido o percurso de cada ônibus com os seguintes dados:

• número do ônibus:• número de cidades percl'rridas;• códigos de todas as cidades percorridas.

Assim:

_._~~~;,

';4J

== b,b,b~

+----literal

0/----- numérico

lógico

SEXO

allX 1

a!IX, + a!2X2

a."X, + aJ2X2 + aJJX,

numérico

NOME

SALÁRIO

REG

Para isto. ler:• número de equações, N :$ 20;• a matriz triangular A dos coeficientes;• o vetor B dos termos independentes.

A 1.5.3.2. Escrever o comando que atribui 7840212,00 ao campo de nome SALÁRIO do registro REG.li. 2.5.3.3. Uma indústria faz a folha mensal de pagamentos de seus empregados baseada no seguinte:

Existe uma tabela com os dados do funcionário

PROBLEMAS GERAISf:::" 2.5.3.1. Declarar o registro cuja representação gráfica é dada a seguir.

R

.~ •• e '''''''' •••••••••••••• 0,0 0'0 •••••••••••••••••••••••••••••••••

2.5.3. Registros

)

) 2 3 M-----

)1 60 70 20

) 2 10 30 82

3 41 73 9l

)

l

}

~ )

( )

)

)

I

)

l

J}

onde se pode observar. por exemplo, que o índice de afinidade do segundo rapaz com a terceira moça ~

82.

PROBLEMAS DE APLICAÇÃO EM CIÊNCIAS EXATASÂ 2.5.1.14. Fazer um algoritmo que:a) leia uma matriz quadrada real A. de dimensão M x M (M :$ 20). O valor de M é fornecido inicial·

mente;b) verilique se a matriz é simétrica. ou seja, se A[I.l] = A[l.I] para 'tII.l :$ M;c) imprima a palavra simétrica, se a matriz A for simétrica. e não·simétrica, em caso contrário. 2.5.2.15. Escrever um algoritmo que calcule e imprima as "n" raízes do seguinte sistema particular de

.. "II" CqUilÇÕCS com "n" incógnitas.

n

Page 96: Harry farrer   algoritmos estruturados

o•..•~(:)

••(),)

C)

C)

Oil

•••.."()OOO()

()

:Qf"\

- - ,.![., ; ..A.

173

010

Quantidade

Valor

Preço unitário

Preço unilário

N.· do produto

"'.0 do pedido N.· do produto Quantidade

CONTAS DE NÚMERO CORRETO

413~99·7 987.30 Dl!borI NcucllSl:handcrIt It t8-ll6 121.99 Juliana Bere

CONTAS DE NÚMERO ERRADO

765432·1 335.66 Júnia Faria

Exemplo:

Existe uma tabela de preços para cada produto e esta tabela está em linhas com o form~to:

t:. 2.5.3.7. Seja um conjunto de dados, cada um com valores

,-

classificados em ordem crescente pelo número do pedido e contendo uma linha para cada produto pe_dido.

Para se descobrir o preço de cada produto, basta pesquisar esta tabela. (Não existe nenhum produtoque não esteja na tabela, nem existe produto na tabela que não tenha preço.)

Escrever um algoritmo para emitir o relatório abaixo:

N.• doproduto IL.--- ~L- _

[ N.· do pedido______---L--------L- _

, ,1.- s z': -;'-~::~- ;~;ç::';'':;~--:L::t.r

(.~-, G ...J3J':~'~;,G:;,i::?2t7'

3004

4,-,JS,.~_M

030201

o IS 10 18 ... 90

15 O 25 42 ...

10 25 O 12 ...

18 42 12 O .. ,

01

03

02

etc.Cada. ônibus percorre um máximo de 24 cidades.Para calcular a distância entre cidades, a empresa possui uma tabela de distâncias (30 X 30):

8 X 7. I X 6. I X 5. O X 4.5 X 3,7 X 2;

56 + 6 + 5 + O+ 15 + 14 = 96;

indica que <> Onibus n.· 103 percorreu oito cidades, na seguinte ordctw.da cidade 01 para a cidade OS;da cidade OS para a cidade 07;da cidade 07 para a cidade 03.

11 - 8 = 3;

c) NC o v a.tor encontrado for 10 ou II, o dígito verificador será O; nos outros casos, o dígito verificador 6o próprio valor encontrado.E~cre"cr um algoritmo capaz de:

I. Leru~ conjunto de registros contendo, cada um. o número de uma conta bancária. o dígito verificadordeste número. o saldo da conta e o nome do cliente. O último registro. que não deve ser considerado.conté aTa o número de conta igual a zero.

2. Uti I iz.ando o esquema de verificação acima, imprimir duas listas de clientes distintas no seguinte for­mato de saída:

.....,

b) soma~-se as parcelas obtidas:

c) calcul a-se o resto da divisão desta soma por II:

96 dividido por II dá resto 8 (96 = 8 X II + 8);

d) subtrai-se de II o resto obtido:

 2.5.3.6_ Para evitar erros de digitação de seqüências de números de importância fundamental. como amatricula de um aluno. o CPF do Imposto de Renda, o número de conta bancária. geralmente se adicionaao n ú01erc::> um dfgito verificador. Por exemplo. o número de matrícula 811057 é usado como 8110573,onde: 3 é C> dígito verificador. calculado da seguinte maneira:a) eõ.lda a.lgarismo do número é multiplicado por um peso começando de 2 e crescendo de I, da direita

p.ara a esquerda:

Page 97: Harry farrer   algoritmos estruturados

).A 2.5.3.8. Supondo-se q~e o C.'.ld.a.slro..d?S rUl~cionários de. uma empresa seja do tipo do exemp.lo ~.~9,lu.er Wftlllilllritmo que lemo cadastro. dlSplllll vcllluma unIdade de entrada. e h~te todos os funclOnanos~go seja "INSTRUTOR", situal[~o "AF~~T_ADO" e salario superiora R$ 4~OO9;ell

. ).5.4. Arquivos

)'ROBLEMAS GERAIS. b. 2.5.4.1. Copiar o arquivo seqüencial denominado FONTE para um arquivo seqiiencial chamado FON·)rENOVA. Em ambos os arquivos os registros têm os seguintes campos:

>1"

L'

~q!.II''l'U;

3.1. INTRODUÇÃO

175

looritm"Leia os dados do funcionárioDetermine o salárioEscreva o salário

tim algoritmo

Modularização

_ No fim da ~écada de 60, ~m c?njunto de problemas no desenvolvimento de sistemas de pro!!ram.a·çao levou os paIses desenvolvIdos a chamada "crise de software". ~

. Os custos ~as ativídades de programação mostravam a cada ano uma clara tendência a se elevaremmUlto em relaça? aos custos dos equipamentos. Essa tendência era devida. em grande parte ao rápidoa~'anço te~n~lóglco~a fabricação dos equipamentos de computação. em contrapartida com a I~nta evol u­çao das lecmcas apltcadas ao desenvolvimento de software.

. A ausência de uma metodologia para a.construção de programas conduz a um soitware geralmentecheIO de e~os e com alto ~usto de desenvolVimento que. conseqüentemente. e:<:ige um custo elevado pa.rasua correçao e manutençao futuras.

_ A program.ação estruturada é.hoje o resultado de uma série de estudos e propostas de discip li­na, e metodologl~s para o desenvolVImento de software. Conceitos associados como técnica de refi·namentos S~CesSIVOS ~ ~odularização de programas integram o ferramental para a elaboração <lepro~r~~as VIsando. pnnclpalmente. os aspectos de confiabilidade. leail:>ilidade manutenibilidade efle:<:lblltdade. e- •

Pode-se reunir as idéias da programação estruturada em três grup~s:a) desenvolvimento de algoritmos por fases ou refinamentos sucessivos;b) uso de um número muito limitado de estruturas de controle'c) transformação de certos refinamentos sucessivos em módulos.

O desenvolvimen~o ~e algoritmo por refinamentos sucessivos e o uso de número limitado de estrU­turas de contr?le são tecmcas largamente usadas nos capítulos anteriores do presente texto.

_ Este cap~~lo aborda ?s aspectos de decomposição de algoritmos em módulos. tendo em vista osretmamentos Ja desenvolVIdos. para ~ominar a ~omplexidade e organizar o processo de programação..'._ Quando s~ desenvolve um ~Igontmo atrav~s de refinamentos sucessÍ\os. faz-se uma opção pela di­

\" Isao do a1g~ntm~; este.procedimento conduz a modularização da solução do problema._ Um m~~lo e, enta?, ~m grupo de comandos. constituindo um trechl' de algoriuno. com uma fu n­

çao bem .detmlda e o maIs mdependenle possível em relação ao resto do aJi!oritmo.A~stm sendo. ao se elaborar um algoritmo para calcular o salário líquido de um empreaado lem- se

as segumtes etapas: c •

I-- --

CHAVE - numéricoINFORMAÇÃO - literalDATA - numérico

CÓDIGO = I - registro RS;CÓDIGO = 2 - registro RM operação depósito;CÓDIGO = 3 - registro RM operação retirada.

NÚMERO do cliente, SALDO apurado, TIPO de saldo

174

6.. 2.5.4.6. No exercício de fixação 2.4.6.3.4. foi criado um arquivo com o movimento de débitos e crédi·tos. ordenados por número de contas bancárias. Escrever agora um algoritmo que kia os regimos daque·le arquivo. calcule o resultado do movimento por número de conta e atualize o saldo em um arquivo deacesso direto em que a chave é o número da conta. Escolher um formalo adequado para o registro.

O TIPO de saldo será igual a C (de CREDOR). se o valor comprado for maior ou igual que o vendi·do. Caso contrário. o saldo será D (de DEVEDOR).6.. 2.5.4.5. O arquivo seqüencial ENTRADA contém registros RS com os campos CÓDIGO. NOME eDISPONíVEL e registros RM com os campos CÓDIGO. NOME. DEPÓSITOS ou RETIRADAS. Oregistro RS fornece a situação. ou o saldo. do cliente de um banco e RM fornece o movimento do dia.Supondo que os registros estejam ordenados por nome. e que o último reftistro referente a um mesmocliente seja um registro RS. escreva um algoritmo que crie um arquivo SAlDA somente de registros RS,sendo cada registro atualizado pelas operações indicadas nos registros RM correspondentes ao cliente. Ocampo CÓDIGO identifica cada registro da seguinte forma:

)

),)

)

)

»)

() f::" 2.5.4.2. listar um arquivo seqüencial denominado DADOS que possui registros com campos de NOME.ENDEREÇO. CEP e TELEFONE.

t) f::" 2.5.4.3. Dado o arquivo CADASTRO com registros com os campos NOME, SEXO, COR-DE-OlHOS,') ALTURA. PESO EDATA-OE-NASCIMENTO, separá-los em dois arquivos: um chamado HOMENS,

. com registros cujo campo SEXO apresente o valor I (sexo masculino). e outro chamado MULHERES,) com rcgistros cujo campo SEXO seja igual a 2. Os registros dos novos arquivos deverão possuir os se·

guintes campos: NOME, COR-OE-OLHOS. PESO e DATA-DE-NASCIMENTO.ii Á 2.5....4. O arquivo BOlETA contém registros das operações de clientes na Bolsa de. Valores. Cada

opemção ~e compra ou vend.\ que um cliente realiza na bolsa gera um regis}ro com o NUMERO do cli­'" enh:. o CODIGO da operação (V para venda e C para compm), a DESCRIÇAO do título comercializado,

a QUANTIDADE de títulos comerciali/..ados e o VALOR unitário de cada título. Estes registros estão) se1lüencialmente organizados no arquivo BOLETA, de tal modo que todos os registros de um mesmo) cliente estão juntos. Escrever um algoritmo para gerar o arquivo seqiiencial RESULTADO, onde. para

cada cliente. apareça um registro da forma:

)

.>)

)

.))

:))

)

"J()

Page 98: Harry farrer   algoritmos estruturados

177

3.2. FERRAMENTAS PARA MODULARIZAÇÃO

')o'),O)>j.

I)

()!)

JQ

•••e()

••ot)

()oo\)

••••\)ooooo:!j.,.

f)

móduloprincipal

Tr 1módulo módulovantagens

deduções

A descrição estlUlUral da modularização pode ser feita atravb do diagrama hierárquico. como a seguir.

módulo {Cálculo das deduçõeS}

JJNSS +- SALARIOBRUTO x~IRPF +- SALARIOBRUTO x TAXADEDUCOES +-lNSS + IRPF

1m modulo

Dentre as ferramentas de modularização pode-se destacar:

sub-rotinasfunções

A maneira mais intuitiva de proceder à modularização de problemas é feita defmindo-se um móduloprincipal de controle e módulos especfficos para as funções do algoritmo. No diagrama anterior. o módu­lo principal tem a função de receber os dados, escrever os resultados e exercer o controle na execução dasfunções do algoritmo. A determinação das vantagens e deduções é delegada a módulos espeC:.ficos.

. As linguagens de programação hoje existentes dispõem de recursos que facilitam a constr~ção e ma­nipulação de módulos. Estes recu~os permitem não só a modularização dos comandos do prognma. comotambém a modularização dos dados utilizados.

A experiência recomenda que os módulos de um programa devem ter um tamanho limitado. Módu­los muito grandes são difíceis de ser compreendidos e. em geral. são multifuncionais.

Um outro aspecto importante é a possibilidade de cada módulo poder definir as própri35 estruturasde dados, suficienles e necessárias apenas para atingir o objeti~·o final do módulo.

Todo módulo é constituído por uma seqUência de comandos que operam sobre um conjl!!lto de oh­jelos. que podem ser globais ou locais.

Objet05 globais são entidades que podem ser usadas em módulos internos a outro módulo do algo­ritmo onde foram declaradas.

Objetos locais são entidades qUé só podem ser usadas no módulo do algoritmo onde foram declara­das. Estes objetos não possuem qualquer significado fora deste módulo. São exempk'S de obje:os globaisou locais: '"ariáveis. arquivos, outros módulos etc.

Um módulo pode usar objetos globais ou locais em relação a ele. Porém. não pode usar obj~.os decla.rados em módulos que não o abrangem. Islo significa que objelos globais. declara~ em módulos maisexternos ou mesmo a nível do módulo principal. podem ser também utilizados em módulos mais internos.

A comunicação en~-módulos deverá ser feita através de vínculos, utilizando-se objetos globais outransferência de parâmetros (vide 3.2.1).

A decisão pela divisão do algoritmo em módulos traz benefícios tais como:

a) a independência do módulo permite uma manutenção mais simples e evita efeitos colaterJis em ou-tros pontos do algoritmo;

b) a elaboração do módulo pode ser feita independentemente e em época diferente do restante do .tIgoólD1O;c) testes e correçõcs dos módulos podem ser feitos em separado:d) um módulo independente pode ser utilizado em outros algoritmos que requeiram o mes:meoprocessa­

mento por ele executado.

~ódUIO {Cálculo das vantagens}

Calcule as vantagenstmmódulo

Os módulos seriam:

Ref. Determine o salário ..Ative o módulo "Cálculo das vantagensAtive o módulo "Cálculo das deduções"SALARIOLlQUlOO +- VANTAGENS - DEDUCOES

fim ref.

Leia os dados do funcionárioAtive O módulo "Cálculo das vantagens"Ative o módulo "Cálculo das deduções"SALARIOLlQUlDO +- VANTAGENS - DEDUCOES~ SALARIOLIQUIDO

lim . o.

j ódUIO {Cálculo das deduções}Calcule as deduções

fim módulo

]

ef' Detennine o salárioCalcule as vantagensCalcule as deduçõesSALARJOLlQUlOO +- VANTAGENS - DEDUCOES

1m ref.

JódUIO (Cálculo das vantagens}

SALARlOBRUTO +- NHORAS XS.-\.LARlOHORASALARIOFAMILlA +- NFILHOS X VALORPORFILHOVANTAGENS +- SALARIOBRUTO + SALARIOFAMlLIA

1m módulo

o comando "determine o salário" pode ser refinado como a seguir:

Na elabora io do refinamento acima, não houve preocupação de como o proc~sso de cálcu.lo dasdas~eduções seria efetuado. Essas ações constituem funções bem defirndas no algontmo e

vantagens e tadas r módulos específicos Nesta fase do projeto do algoritmo, pode-se. então. optar~~~:~:::~ de ml:ulos para o cálculo das' vantagens e cálculo das deduções. O mesmo refinamentoficaria. então:

A versão final modularizada do algoritmo ficaria então constituída do algoritmo seguinte, mais osmódulos refinados:

: ··1'16

Page 99: Harry farrer   algoritmos estruturados

179

é o nome dado à sub-rotina:é a lisla de objetos que subs-rituirão os parãmetr.,sformais durante a execução da sub-rolina.Os parâmetros atuais devem concordar em número.ordem e tipo com os parâmetros fonnais.

é uma palavra-chave;é o nome dado à sub-rotina:é a lista dos objelos que serão substituídos por outrosobjelos. fornecidos quando da chamada da su!:--rotina_

subrotinaNOMElista-de-parâmetros-formais

onde:NOMElisla-de-parâmelros-aluais

~~S4--------

Uma sub-rotina é declarada como a seguir:

A chamada de uma sub-rotina é feita com uma referência a seu nome e a indicação dos par.imetros aluaisno local do algoritmo onde a sub-rolina deve ser ati\'ada. ou seja. onde a sua execução deve ser iniciada.

A forma geral para o comando de alivação de uma sub-rotina é a seguinte:

comandos da sub-rotina

br lina NOME(lisla-de-parâmetros-formaisl

onde:

declarações dos objetos locais à sub-rotina

fim subrotina

3.2.1. Sub-rotina

Tendo em vista os conceitos de objeto local e global, a função F3. declarada dentro da sub-rotina SI.ê conhecida apenas em SI. Entretanto, a sub-rotina S2, declarada no módulo principal, é conhecida emtodo o algoritmo e pode ser ativada dentro de SI.

A sub-rotina e a função são criadas através das suas declarações em um algoritmo. Para serem e_~~­

cutadas, necessitam de ativação provocada por um comando de chamada.Adeclaração de uma sub-rotina ou função é constituída de um cabeçalho e de um corpo. O cabeça­

lho, que identifica a sub-rotina ou função. contém o seu nome e a lista de parâmetros ronnais. O corpocontém declarações locais e os comandos da sub-rotina ou função. A ativação de uma sub-rotina ou fun­ção é feita através da referência a seu nome e a indicação dos parâmetros alUais.

-, [ NOME(lista-de-parâmetros-atuais)

SI

~53

fim subrotina

~F3

fim função

~S2

fim subrotina

178

'd I ., al MP as sub-rotinas SI. 52, 53A figura 3.1 ilustra um algoritmo constituído de um mo u o pnnclp ,

e S4 e as funçõe.s F~~, F? e F4. d' hi rárquico anterior, é mostrada, a seguir. com a notaçãoA modulanzaçao. mdlcada no lagrama e

algorítmica.

Fig. 3.1 Diagrama hierárquico.

rão que servem basicamente a três objetivos:f fies são módu los de programa"

As suh·rotinas e as unç . , . vários llh:ais de um algoritmo tenha• ft6~" """iiência de comandos necessana em

.cVffitf que uma.....--...- .... repeljdamente nestes locais, ----o -- ---

que ser CSl:nta . partes fechadas e logicamente coerentes,• dividir eestruturar um algontmo en~• nlar a legibilidade de um algontmo. .

aume . além de facilitar a sua elaboração. permIte u~a melhor,A divislio de um algontrno em m6d~IOSé d 6d I implementado como uma sub-rotlna ou uma

documentação e verificação d~ sua correçao._ a a~e s~ro~erificado independentemente. Isto !~rna efi·função, deve conter sua ~rópna documen:a~~o.~Pue um algoritmo pode ser dividido entre vanos pro­ciente o trabalho de equ~pes de program ç ,J qlo ar suas respectivas partes. separadamente.gramadores que pode~Im~lem:a~.t~ta~q~~~:m~ntesubordinados a um algoritmo. comumente cha-

Sub-rolinas e funçoes sao m u os er b rotina ou uma função pode conter outras sub-ro-I ". I Da mesma forma, uma su - .

mado de m~u o ~nhncdtp~ . pode ser visto no diagrama hierárquico a segUIr:tinas e funçoes amn a as, como

)

)- --_._--_.-

)

)

)

)

)

)

()()()f }

)

Page 100: Harry farrer   algoritmos estruturados

C)

•••O()

••())

C>

o

"••••GO(3

O()()

'.'."\II

!9f"

UI

ii.

- são aqueles que têm seus valores estabelecidos fora da sub-rotina e não po­dem ser modificados dentro da sub-rotina;

- são aqueles que têm seus valores estabelecidos dentro da sub-rotina;- são aqueles que têm seus valores estabelecidos fora da sub-rotina. mas po-

dem ter seus valores alterados dentro dela.

• de entrada

• de saída• de entrada~saída

-J E±·!S$

~TROCA(A'B)

~ A,B,AUX numéricoAUX+-AA+-BB+-AUX

fim subrotjna

Cada vez que a sub-rotina TROCA for ativada. os comandos dentro dela sãoexecutados tendo emvista os valores contidos nos parâmetros atuais e, em seguida. a seqüência do algorilmo retoma ao co­mando imediatamente seguinte ao da ativação.

Os parâmetros de uma sub-rotina classificam-se em:

~L,M.N

fim algoritmo.

(Definição do tipo das variáveis}~ L,M,N numérico

(Leitura dos números}kiaL.M,N

lL >M2YL>N

- M<N~ m!iQ TROCA(L,M)I~ TROCA(L,N)

.fim.gfim...g

i M>NmlãQ TROCA(M,N)

fim..g(Escrita do resultado}

A vinculação entre módulos pode ser feita através da transferência ou passagem de parâmetros. queassociam parâmetros atuais com os parâmetros fonnais.

Dentre os modos de transferência de parâmetros. pode-se destacar a passagem por valor. a passa­gem por resultado e a passagem por referência.

Na passagem de parâmetros por valor. as alterações feitas nos parâmetros formais. dentro da sub­rotina, não se refletem nos parâmetros atuais. O valor do parâmetro atual é copiado no parâmetro formal.na chamada da sub-rotina. Assim, quando a passagem é por valor. isto significa que o parâmetro é deentrada.

Na passagem de parâmetros por resultado, as allerações feitas nos parâmetros formais, dentro da sub­rotina. refletem-se nos parâmetros atuais. O valor do parâmetro fonnal é copiado no parâmetro atual. aoretomar da sub-rotina. Assim, quando a passagem é por resultado. isto signitica que o parâmetro é de saída.

Na passagem de parâmetros por referência, a toda alteração feita num parâmetro fonna! corres­ponde a mesma alteração feita no seu parâmetro atua! associado. Neste caso, quando a passagem é porreferência. isto significa que o parâmetro é de entrada-saída.

No presente texto, será adotada apenas a passagem de parâmetros por referência. por atender a todasas necessidades. Desta fonna. ao se elaborar uma sub-rotina. deve-se tomar cuidado em clas.ificar osparâmetros entre os tipos mencionados (entrada, saída e entrada-saída). para evitar os efeitos colateraisdecorrentes do modo de passagem utilizado.

Finalmente, é importante q:ssaltarq«nas linguagens de programação existem. muitas vezes. maisde um modo de passagem de pârãmetros com regras e.pecíficas para indicar qual o modo que se aplica acada parâmetro, sendo necessáóo. às vezes. realizar adaptações no algoritmo.l(Declaraçàlll!l&a sub-rotina TROCA}

(Escrita do resultado}

lim se

l'M>N

. ~ AUXILIAR +- MM+-NN +- AUXILIAR

~

I~lioÓtmQ

(Definição do tipo das variáveis}~ AUXILlAR.L,M,N numérico

(Leitura dos números}

leia L.M,N%i L>MQ.YL>N

.."tão ~e M < N~ AUXILIAR +- L

L+-MM +- AUXILIAR

~ AUXILIAR+- LL+-NN +- AUXILIAR

AUXILIAR +- LL+- MM +- AUXILIAR

AUXILIAR +- LL+- NN +- AUXILIAR

AUXILIAR +- MM+-NN +- AUXILIAR

Todas estas repelÍções têm objetivo que é a troca de valores de 2 variáveis. podendo ser substituídas

por uma única sub-rotina.

Observa-se que há repetição de um grupo de comandos que diferem entre si devido às variáveis uti·

lizadas:

~L,M.N

fi(IJ algoritmo

. ~ dos comandos de uma sub-rotina, o fluxo de controle retoma ao comando .......'\0 tennanar a execuçao hamada Desta maneira a execução dc uma sub-rolÍna se constitui Cm ';t

segui nlc "~Ic ~Ute propov::;::acexecuçã~ do módulo ch~ador para a sub-rotina. relomando depois lO iuma uans,en,ncla em .i! I

algoritmo que a chamou. . ~'i

O E~emPIIOI33·13 apresenta o problema "Dados três valores distintos, colocá-los em ordem crescente", rJ.;HO exemp o '. .~.,..'lcuja solução algorflmlca encontrada é dada por. li

" II

Page 101: Harry farrer   algoritmos estruturados

) o Exemplo 3.2Nu exemplo 2.14. pode-se observar que existem dois refinalllcntos de leitura que diferem entre: si apenas

) na vanavet conrpostllutitirada. Neste caso, pode~ usadl1 tlfttast!b-roÜtta. ,~--- ---- - - --- ~~--'--

é uma palavra-chave;é o tipo do valor que será ret<'mado;é o nome dado à função;é a lista dos objetims que serio substituídos por outrosobjetos, fornecidos quando <ii chamada da função.

funçãotipoNOMElista-de-parâmetros-formais

183

A chamada de uma função é feita com uma referência a seu nome e a indicação dos parâmetros atu­ais em uma expressão. A seguir, apresenta-se a forma geral para a ativaçlo de uma função:

m-o tipo NOME(1ista-de-parâmetros-formais)declaração dos objetos locais à funçãocomandos da função

fim função

É bom ressaltar. então. que. se uma variável composta é passada co;no parâmetro numa função ousub-rotina, os limites superiores de seus índices, declarados no módulo ;>rincipal. também têm de serpassados como parâmetros.

1<- I

I~

Li :~~fu:rr:pa. I- fim..s

J+-l

ij.~:J~\::::~: PC[I] = CN[J]

~J+-1+1

fim repita

i PC[I] = CN[J]l:I11iiQ escreva PC[I]

.fim....K1+-1+1

fim repitafim algoritmo.

As funções. embora bastante semelhantes às sub-rotinas. têm a carac:~rística especial de relOrn~u aoalgoritmo que as chamou um valor associado ao nome da função. Esta cancterística permite uma analo­gia com o conceito de função da Matemática.

No item 1.4 do capítulo I. quando foram apresentadas as expressões ::ritroéticas. foram usadas algu­mas funções que já são consideradas como itens fundamentais da notação .!lgorítmica. adotada neste tex­to, como, por exemplo: RESTO. ABS. LOG etc.

A utilização de outras funções no algoritmo, como por exemplo, falerial. ou qualquer outra funçãoespecial, pode ser feita declarando-se uma função. A declaração de uma f~nção é id~nlica à de uma sub­rotina. com exceção de que é necessário o seu tipo, ou seja, o tipo do valer que seri retomado. Alénl denuméricas. as funções podem ser lógicas ou literais.

Apresenta-se seguir a forma de declaração de funções:

onde:

3.2.2. Função

{Leitura da matrícula dos alunos que estão cursando CN}

{Leitura da matrícula dos alunos que estão cursando PC}

{Verificação da matrícula simultânea em PC e CN}

LEITURA(NMAX,PC)NMAX t- 221

LEITURA(NMAX,CN)

I' itmo

••LEITURA(NMAX,A)~ NMAX,I numérico~ A[ I:NMAX] numérico1+- I

TI~2t~~~n~:~~mpaJlm..g;I t-I + I

fim repitatim subrotina

{Declaração das variáveis}~ PC[ I: 15 I]. {matrícula em Programação de Computadores}

CN[I:221] {matrícula em Cálculo Numérico}numérico~ NMAX.I,J, numéricoNMAXt- 151

{Declaração da sub-rotina de leitura}sub in LEITURA(NMAX.A)

declare NMAX,I numérico~ A[ I :NMAX] numéricoIt- I

nital!:.i.il A[I]

A[I] = 9999i então interrompa.t:i.m..xIt-I+ I

fim repitat' a

l8Z

Na sub-rotina anterior. a declarj)Ção do parâmetro A é feita com o dimensionamento em função deum outro parâmetro de entrada. NMAX. que contém o número máximo de elementos que a variável com­polila A pode ter. ou seja, o valor do limite superior com que o parâmetro atual a ela associado foi decla­rmlo no módulo principal.

Cll/110 esta 5uh-rotina será utilizada pam a leitura de dUils variáveis unidimensionais. com númerodi/crente de elementos (151 e 221). ao parâmetro atual NMAX deverá ser atribuído o valor 221.

Tendo em vista a sub-rotina LEITURA, o algoritmo final para°problema proposto no exemplo 2.14pilSSOU a ser o seguinte:

)

l.J

oO:)

)

U

()O()

Page 102: Harry farrer   algoritmos estruturados

o•••" fiO

••(')O~

C)

O

•••

185

{Definição da função que verifica a existência de um}{número em um dado conjunto}

~,mLJ~~EXlSTE(M,N,X)

~ M[I:N] numérico~ N,X,I numérico1+-1

r;~~:':::IJI~~I + I

fim repitaEXISTE~ (I ::s N)

fim função

f mdln IMico EXISTE(M,N,X)~M[l:N] numérico~ N,X,I numéricoI~ I

ij~~:'~:IJI~I+ I

fim repitaEXISTE +- (I ::s N)

fim função

{Definição do tipo das variáveis}~M[I:20) numérico~ N,X,J numérico1m M[I]...M[20)N~20

J~I

O módulo principal pode ser dado por:

Pode-se observar neste algoritmo que o parâmetro atual de uma função pode ser a ativação de umafunção. Neste caso, ao ser ativada no módulo principal a função HIPOTENUSA, o fluxo do algoritmo seII'llIIsfere paraafunção. a fim de calcular a bipotenusa referente aos eatetos a;b, e, em seguida, a funç!o~ novamente ativada para o cálculo da hipotenusa, referente aos catetos L e c.

Esta observação-aplica-se, também, às sub-rotinas.

oExemplo 3.4

Escrever uma função lógica que receba:

• uma variável composta unidimensional M;• o número N de elementos de M;·um valor X

e devolva o valor verdadeiro, se X for igual a algum dos elementos de M. ou falso, em caso contrário.Escrever um algoritmo que leia um conjunto de 20 números inteiros. seguido de outro conjunto de

10 números inteiros, e determine quais destes 10 números são iguais a um dos 20 primeiros.

Fig. 3.2

L = 'lia 2 + b2

0= ...:U + c2

é o nome dado à função;é a lista de objetos que substituirão os parâmetros formaisdurante a execuçllo da função. Os parâmetros atuais devemconcordar em números, ordem e tipo com os parâmetrosformais.

NOMElist.a.-de-parãmetros-atuais

Alg<:>ri t:rnCJ_ {Definição da função que calcula a hipotenusa}C\J!.IU~tulnWI!IIJmrT1'éa:iri·~rn HlPOTENUSA(A,B)

J declare A,B numéric0-r.-.--:-=:­HIPOTENUSA~ -lN + B2

fim função{Declaração do tipo das variáveis}

declare A,a,C.O numérico{Leitura das dimensões do paralelepfpedo}

ktiA A.D,e{Cálculo do valor da diagonal do paralelepfpedo}

D +- HlPOTENUSA(HIPOTENUSA(A.B),C){Escrita do valor da diagonal do paralelepípedo}

escreya Dlimo

..-

C> algoritmo principal é dado por.

ÍjIDJ~I!.L.D1I..1D~0d2 HlPOTENUSA(A,B)declare A,a numéricosH lP07ENUSA ~ ..J~A~2-+""""BC7"2

fim função

onde:

, NOME(l ista-dc-parâmetros-atuais)

C> fluxo de controle é desviado para a função, no momento em que ela éativada. Ao terminar a execu.ção dos comandos da função, o fluxo de controle retoma ao comando seguinte àquele onde ela foi alivada.

Sãe> válidas aqui as considerações já feitas sobre passagem de parâmetros.

-184

o Exetmpl«> 3.3

Escrevoer UOl algoritmo que leia as medidas dos três lados a, b e c de um paralelepfpedo, calcule e escrevao valor de sua diagonal.

Page 103: Harry farrer   algoritmos estruturados

q= WP!(~I- P)!

C~ =0eA:' =O

AP = M!.. (M - P)!

Se M < P, por definição

187

declare I,N numéricoFATORIAL f-- I1~2

ríPita~1>N

{Detinição da função que calculJ o fatoria! de um né }

!1'ful!!n..,ã!!.!o~uWS:·L!!·C,.y FATORIAUN){Delinição do tipo do parâmetr,) e da variáleI local}

!Onn1moDefina o tipo das variáveisre ita

lmM,PseM=OeP=OTentão i~terrompafim sese M < P~Af--O

C+-Osenão Calcule o fatorial de M

Calcule o fatorial de (M - p)Calcule o arranjo de M elementos P a PCalcule o fatorial de PCalcule a combinação de M elementos P a P

oritmo

tim se~A,C

fim repitafim all:0ritmo.

o Exemplo 3.6

Fazer um algoritmo que:

oleia vários pares de números inteiros positivos, M e P. O último par terá o valor zero para M e P;ocalcule e escreva o número de arranjos e combinações de ~I elementos P a p. dado pelas fórmulas:

Pode-se observar que neste algoritmo eltistem três comanJos, a serem refinados. que são iguais. ex­ceIO pelas Yariáveis envolvidas. o que demonstra a necessidade de se usar uma sub-rotina ou uma função.Como o módulo deverá retornar apenas um resultado, que será utiliza.!o em expressões antméti-=as. aescolha recai sobre uma função.

Transformando-se o algoritmo de cálculo de ialorial, de~nvolvido no exemplo 1.37. em funçào einserindo-a no algoritmo anterior, juntamente com o desenv(\lvimento dos retinamentos, tem-se:

ÁREA (- ~SP X (SP - LA) X (SP - lB) X (SP - LC)

{Escrita dos resultados}~ XI,YI,X2,Y2,X3,Y3,ÁREANf--N+I

i N,= 10então interrompa

{Leitura das coordenadas dos pontos}.Illi XI,Y LX2,Y2,X3,Y3

{Cálculo das medidas dos lados do triângulo}LA (-- OlSTANCIA(XI,YLX2,Y2)LB f-- OlSTANCIA(XI,YLX3,Y3)LC f-- DISTANCIA(X2,Y2,X3,Y3)

(Cálculo do semiperímetro)SP f-- (LA + LB + LC)J2

{Cálculo da área}

o valor da expressão 16gica I < N será o valor a ser retomado pela função EXISTE.

Nf--O

lO":

{Definição da função que calcula a distância)~) ]' i o DISTANCIA(AI,BI,A2,B2)

~ AI ,B I.A2.~B:2-=n=u=ffi~é=ri=c~o ----:

DISTANCIA f-- ~(A2 - Al)~ + (B2 - BI)~fim função

(Declaração do tipo das variáveis)~ XI.YI,X2,Y2,X3,Y3,ÁREA,

LA. {Lado A)LB, (Lado B)LC {Lado C}SP, (Semiperímetro)N (Contador)numérico

J ) {Leitura do número}

I ~XI i EXISTE(M,N,X)

J cotão escreva Xl fim.g

I h-1+1~ ) fim ccpitaI fim alLl0ritffiO.

fInp Exemplo 3.5'escrever uma função que calcule a distância entre dois pontos de um plano, sendo fornecidas as coorde­r>~lldas X I, Y I e X2, Y2. Escrever, ainda, um algoritmo que leia 10 linhas contendo, cada uma, as coorde­

.. ",luas de três pontos, XI, Y I, X2, Y2, X3, Y3 e determine a área do triângulo formado por estes pontos.pscrcva, para cada linha, as coordenadas lidas e a área determinada.

'\

>.J

JJJJO)

,J

Page 104: Harry farrer   algoritmos estruturados

o'"jf")

()J

;"2)

(')

$

•••..Q

••O(')

oC)Q

O

•••

189

{Definição do tipo das variáveis utilizadas}fim função

{Declaração da função que calcula a integral }~iQ..llmm INTEGRAL(A,B,N)~A,B,N,H,C,I,SOMA,X,Y numérico

H+- _B_-_AN

SOMA ..... SENO(A) + SENO(B)I ..... I

fim função

Inserindo-se a função INTEGRAL no módulo principal. tem-se:

b -ah é constante e determinada por h = Xi + I - X; s --;

nR é o mlmero de subintervalos, n > I c parYi =seOo(l;'

O algoritmo de integração é o seguinte:

XrA+IXHY f-SENO(X)C f- 2 X (RESTO(1.2) + I)SOMAr SOMA + C X Y1+-1+1

j l=Nentão interrompa~

fim repita

INTEGRAL f- SOMA X H3

f .n..lln INTEGRAL(A,B,N)~ A,B,N,H,C,I,sOMA,X,Y numérico

H ..... B - AN

SOMA"'" SENO(A) + SENO(B)h-I[~

X ..... A+IXHY +- SENO(X)C f- 2 X (RESTO(I,2) + I)

" SOMA ..... SOMA + C X YIf-I+I

i l= Nentão iOlelTOJDpa

.t:im.xfim repita

INTEGRAL t- SOMA x H3

onde:

x

ItL;:io iBJçrrompa

FATORIAL ..... FATORIAL X I1+-1+1fim tCJ!ita

fim f'u~

Fig. 3.3

~M,P

.:tF M=Ol<P=OI cotão interrompa

.fim...KM<PmliQ A O

C Osni2 FATM 4- FATORIAL(M)

MP ..... M - PFATMP 4- FATORIAL(MP)

{Cálculo do arranjo de Melementos P a P}A f- FATMlFATMP

(Cálculo da combinação de M elementos P a P)C f- FATM/(FATORIAL(P) x FATMP)

y

Para o cálculo da integral, será utiliza4w primeira regra de Simpson, dada por:

fi.m..:!.ç~A.C

fi,n repitafim ai &OritIDO.

1IIiii

fb h5 = J .. seno(x)dlt = "3 (Yo + 4YI + 2yz + 4Yl + 2y. + .., + Y.)

o Exe~plo 3.7

Escrever uma função que integre numericamente, sobre um intervalo dado (a,b) C (O, 1T), a função seno(lt)descrita. na figura 3.3. Escrever, ainda, um algoritmo que leia várias linhas contendo, cada uma, um inter­valo (X: l,XN) de integração. Para cada intervalo de integração, calcular a área descrita pela função SENOusando 10. 20. 30. 40 e 50 subintervalos. A última linha, que não será considerada, contém os valores deX I e x: N iguais a zero.

Page 105: Harry farrer   algoritmos estruturados

191

{Definição do tipo das variáveis}{número do empregado}{horas de início}{minutos de início}{segundos de início}{horas de término}{minutos de término}{segundos de término}{duração da tarefa em segundos}{horas de duração}{minutos de duração}{segundos de duração}

{Detinição da sub-rotina que calcula o m.d.c.}

NEMP,HI,MI,SI,HT,MT,ST,DUR.HD,MD,SD,numérico

e it

br' HORAS(SEG,H,M,S)declare SEG,H,M,S numéricoH~ QUOCIENTE(SEG,3600)M~ QUOCIENTE(RESTO(SEG,3600),60)S ~ RESTO(RESTO(SEG,3600),60)

fim subrotina

~Igoritmo

lnsennoo-se eSles IIlUUUlU' IIU iIIU\JU1U I"'ll'-'P"" ,,,.w.~.

(Ttansformação de horas, minutos ~segundos eml{segundos}

~W~~SEGUNDOS(H,M,S)~ H,M,S numéricoSEGUNDOS f- H X 3600 + M X 60 + S

fim função h . }(Transformação de segundos em oras, mmutos e{segundos}

{Leitura dos horários de início e término da tarefa}

1m NEMP,HI,MI,SI,HT,MT,ST

j NEMP<Oentão interrompa

fim..g. {Cálculo da duração da tarefa}DUR f- SEGUNDOS(HT,MT,ST) - SEGUNDOS(HI.MI,SI)HORAS(DUR,HD,MD.SD)escreva NEMP,HD,MD,SD

fim repitafim algoritmo.

o Exemplo 3.9 ." .Fazer uma sub-rotina que calcule o máximo divisor comum entre dois números \Drenas (mewdo da s di-

visões sucessivas ou "jogo da velha").Fazer um algoritmo que:oleia 50 linhas, contendo. cada uma. um par de números.inteiros; .oescreva, utilizando a sub-rotina anterior, os números pnmos entre SI.

Dois números são primos entre si quando só admitem como divisor ,omum a unidade.

{Leitura do intervalo de integração}kiJlXl,XN

j XI =O~XN=Oentão interrompa

fiJ.n...gN f- 10

lkfj,uç AREA, {resull<luo da integração}XI, {limite inferiordu intervalo}XN. {limite~ 00 iRwrvale}

-----N------ ---------{número à@ subinlervalos para ínl@gração}numérico

'T-'-'"-"",-"-",-"m",,,',,,,'c"""o SEGUNDOS(H.M,S)~ H,M,S numéricoSEGUNDOS f- H X 3600 + M X 60 + S

fim função

190

Fazer uma função que transforme horas, minutos e segundos em segundos. Ex. 2 h40min IOseg~ 9.610segundos.

Fazer uma sub-rotina que transforme segundo em horas, minutos e segundos. Ex. 11.030 segundos~ 3h 3min 50seg.

Fazer um algoritmo que:

oleia um conjunto de linhas contendo, cada uma, o número de um empregado, a hora de início (ho­ras, minutos e segundos) e a hora do término (horas, minutos e segundos) de uma determinadatarefa. A última linha (FLAG) conterá o número do empregado negativo;

ocakule, para cada empregado, a duração da tarefa que ele executou, num mesmo dia, utilizando osdois módulos anteriormente definidos;

oescreva, para cada empregado, o seu número e a duração de sua tarefa em horas, minutos e se­gundos.

i

j N>50então interrompa~ÁREA f- INTEGRAL(XI,xN,N)escreva "A ÁREA SOB A SENOIDE NO INTERVALO",X I,XN,

"INTEGRADA COM",N,"PONTOS E IGUAL A",ÁREANf-N+IO

fim repitafim repila

Hill ah:oritmo

- - --- ----------------------------------------------------------------------

)

)

JJ:>:>;D[)

)'----------------------------'

))ffl' HORAS(SEG,H,M,S)~ SEG,H,M,S numérico

) H~ QUOCIENTE(SEG,3600)

.,J'. M~ QUOCIENTE(RESTO(SEG,3600),60)

S ~ RESTOtRESTO(SEG,3600).60)fim subrotina

'") '---- ---.J

)

,)"\

ii~ O Exemplo 3.8

)

)

Page 106: Harry farrer   algoritmos estruturados

o ExeoJplo 3.10

2. Se um número inteiro X possui um divisor Y igual a sua raiz quadrada. o quociente da divisão de Xpor Y será o próprio divisor Y.

{Definição do tipo das variáveis}~ I,M,N I,N2 numéricoI +- I

t

••(3

()oOoo••••()

~

o()

G

•o()

:)

:)

)

J:>!)

o•••,-

e

193

{Leitura dos limites do intervalo}

{Definição do tipo das variáveis}{limite inferior do intervalo}{limite superior do interYalo}{soma dos divisores próprios de A}{soma dos divisores próprios de S.-\}

killA.B

~A.

B.SA•SAMIGOnumérico

{Definição da sub-rotina que calcula os divisores de um}{número, exceto ele próprio}

~r.2liIli SDIV(N,SOMA)~ N,SOMA.DIVISOR numérico

{Cálculo da soma dos divisores menores que a raiz qua-}{drada de N e de seus respectivos quocientes}

SOMA+-IDIVISOR +- 2

i

i ~::~~:r:m:.fim...g

i RESTO(N.DIVISOR) = Om1ão SOMA +- SOMA + DIVISOR + QUOCIENTE(X.DIVISOR)

fim..gDIVISOR +- DIVISOR + I

fim reJlita

i DIVISOR = .lNm1ão SOMA +- SOMA + DIVISOR

fim..Kfim subrotina

Inserindo-se a sub-rotina no módulo principal. tem-se:

j~~t~~~~~fi.m..K

i RESTO(N.DIVISOR) = Om1ão SOMA +- SOMA + DIVISOR + QUOCIENTE(N.DIVISOR)

.fim..RDIVISOR +- DIVISOR + I

jqm~e:OR = .lN~ SOMA +- SOMA + DIVISOR

.fim...gfim subrotina

_.SDIV(N.SOMA)~ N,sOMA.DIVISOR numérico

{Cálculo da soma dos divisores menores que a raiz qua-}{drada de N e de seus respectivos quocientes}

XfY = 8. que é igual a .J64

XJY == 16 > .J64 e é. também, divisor de 64.

192

X-&4Y-a

X=64Y=4

~!m1íJ1lílMOC(A.B,M)~ A.8,M.AUXI,AUX2 numéricoM+-8AUXI +- RESTO(A,8)

i AUXI = Oentão interrompa

fim...RAUX2+-MM+-AUXIAUXI +- RESTO(AUX2,M)

fim repitafim subrotina

{Leitura dos números}~Nl.N2MDC(N I,N2,M)

i M=Ientão escreva NI,N2~

i·· 1=50então interrompa~I +- I + I

fi rn repitariU! algoritmo.

Fazer uma sub-rotina que. dado um número inteiro N. retome a soma dos divisores deste número. excetoele próprio.

Fazer um algoritmo que. utilizando a sub-rotina anterior, determine e escreva todos os pares de númerosamígos em um intervalo [A.B}. Os valores de A e 8 (A < B). inteiros maiores que zero. deverão ser lidos.

D<Jis números inteiros Me N são amigos se a soma dos divisores de M, excluindo M, é igual a N ea soma dos divisores de N; excluindo N. é igual a M.

A. ntes de se elaborar um algoritmo para este problema. algumas observações se fazem necessárias:

I. Se um número inteiro X possui um divisor Y menor que sua raiz quadrada, o quociente da divisão de~ por Y será maior que a raiz quadrada de X e será, também, um divisor de X.

Exe,nplo:

. ~-~ ~

c.xcl/lplo:

Page 107: Harry farrer   algoritmos estruturados

···1 O Exemplo 3.11

} Escrever um algoritmo que emita um relatório e forneça dados estatísticos a respeito de uma turma (no:.1 mállimo, 50 alunos) do 1.° período do Ciclo Básico do Instituto de Ciências Ellatas da UFMG. O algorit-

.. Il\odcve:'" aI ler a freqüência mínima elligida como requisito parcial para a aprovação do aluno em Geometria

Analítica, Programação de Computadores e Cálculo I, nesta ordem;) b) ler o número de matrícula de cada aluno e sua nota final em cada disciplina (na mesma ordem citada

na alínea a). além de sua freqüência (ou seja, a quantas aulas assistiu) por disciplina;) c) conter uma sub~rotinaque verifique se um aluno tem direito de fazer exame especial numa disciplina) (isto é. se o aluno é freqüente e obteve, no mínimo, 40 pontos);

d) conter uma sub-rotina para calcular a percentagem dos alunos que já foram aprovados (sem exame) especial) em uma disciplina, cuja nota mínima de aprovação é 60;

e) conter uma sub-rotina que classifique os elementos de um conjunto de informações de duas grande-) zas diferentes em ordem crescente de uma delas;

f) determinar (utilizando a sub-rotina da alínea c) quais alunos podem fazer exame especial em cada

) disciplina;...). g) escrever. para cada disciplina, o número de matrícula dos alunos que têm condições legais de fazer o

exame especial, em ordem crescente. com suas notas respectivas, utilizando a sub-rotina definida na

) alínea e;h) calcular e escrever, para cada disciplina. a percentagem de alunos já aprovados, utilizando a sub-roti-

J na da alínea d e a percentagem dos que têm direito ao exame especial.

)

•.~~.., ~ .,

b t EXAME(NMAX,N,FM,NUM,NOTA.F,NUMEX.NOTEX,NEX)declare NMAX, {limite superior das variáveis compostas}

N. {número de alunos da turma}FM, {freqüência mínima}NEX, {número de alunos que podem fazer o exame}

{especial}{variável auxiliar}

{podem fazer exame especial}{nota dos alunos que podem fazer }{ellame especial}

{nola dos alunos da turma}{freqüência dos alunos da turma}

NOTEX[I:NMAXj

numérico

ubr tina PERCEN(NMAX.N,FM,NOTA.F,PA)declare NMAX, {limite superior da variável composta}

N, {número de alunos da turma}FM, {freqüência mínima}PA. {percentagem de alunos aprovados}NA. {número de alunos aprovados}I {variável auxiJ iar}númerico

~ NOTA[I:NMAX],F[I:NMAX]numérico

19~

NA+-O1+- Ire ila

se I> NT então interrompa.fi.m...gse NOTA[I] ~ 60 ~ F[I] ~ FMT~NA+-NA+ Ifim seI +- I + I

fim repita

PA+- NAx 100N

I +- INEX+-O

i

i ~~ã~jnteaompafim..E

1F[I] ~ FM ~ NOTA[I] ~ 40 ~ NOTA[I] < 60mffi.Q NEX +- NEX + I

NUMEX[NEXj +- NUM[I]NOTEX[NEX] +- NOTA[I]

~1+-1+1

fim repitafim subrotina

fim subrQtina

Tbr~ti~:l CLASSIFICA(NMAX,N,NlM,NOTA)declare NMAX. (limite superior das \'ariáveis .ompostus)

N. {número de alunos}

Tr.ansformando o exemplo ~.17, que coloca em ordem crescente os elementos de um ('l'njllnto e1"

sub-rotma e fazendo algumas adaptações para este problema. tem-se: . -"

{número de matrícula dos alunos}{nota dos alunos}{freqüência dos alunos}{número de matrícula dos alunos que}

(CálcUlo da soma dos di visores próprios de A)

numéricoNUM[I:NMAX],NOTA[l:NMAX].F[I:NMAX],NUMEX{I:NMAX].

.......... 'v'." 'J

1Q4

{Verificação se SA está dentro do intervalo}

lSA2A'SASB{Cálculo da soma dos divisores próprios de SAl~ SDlV(SA.SAMIGO)

iA=SAMIGO'nlão escreva A,SA

fim..Rt:im..&A+-A+I

i A=Bentão jnterroml2a

finu!:fim repita

fim aJ&oritmo.

.~

)

)

.~

)

)

, I}

Page 108: Harry farrer   algoritmos estruturados

numérico

Como <> l1úmero de alunos não foi dado. será utilizado como FLAG um número de matrícula negativo.O algori ~mo é dado por:

()r'}

,.:)

:JJG)()

tE)

••••O••OO()

OQ

•••••O()

Gir)

C)

OC)

O.__,~~~_ 1'-'

I!J7

{nota dos alunos da turma}(freqüência dos alunos da turma)

{número de matricula dt'S alunos}{nota dos alunos}

N.I.J,AUXI.AUX2numéricoNUM[I:NMAXI,NOTA[l:NMAX]numérico

(Declaração da sub-rotina que classifica em otdem){crescente a relação dos alunos que podem fazer exame}(especial)

'Ç""J.",...... CLASSlFICA(NMAX.N.NUM.NOTA)!kdm i.'"MAX. {limite superior das vari:íveis}

{compostas}{número de alunos}{variáveis auxiliares}{variáveis auxiliares}

fim subrotina

1..-1NEX ..-0

..... ~ •• • .... ' .. c .,

~ ~:~interrompa~

i NOTA[I] 2 60 c. F(I] 2 FMl:!Uã2 NA ..- NA + I

fim.K1+-1+1

fim repita

PAf- NAX 100N

j l>Nentio interrompa

tim.x

rF[I] ~ FM, NOTA[I] ~ 40, NOTA[II < 60~ NEX..-NEX+ I

NUMEX[NEX] ..- NUM[I]NOTEX[NEX] ..- NOTA[IJ

fim.R .1..-1+1

fimrepjtafim subrotina

NA..-OH-I

{Declaração da sub-rotina que calcula a percentagem de}{alunos aprovados}

Sj,!hmliJili PERCEN(NMAX.N,FM.NOTA.F.PA)~ NMAX. {limite superior da variável composta}

N. {número de alunos da turma}FM. {freqUência mínima}PA, {percentagem de alunos aprovados}NA. {número de alunos apro\'ados}I {variável auxiliar}numérico

~ NOTA[l:NMAX].F(I:NMAXInumérico

{variáveis auxiliares}{variáveis auxiliares}

{número de matrícula dos alunos}{nota dos alunos}

K J::::- N'DUo in!elTOmpa~AUX I .- NUM[J]AUX2 .- NOTA[J]I+-J

1.1.AUXI.AUX2lJúmerico

~ "NUM[I:NMAX1."NOTA[I:NMAX]Quamrico

J .-2

{Declaração da sub-rotina que verifica quais os alunos}{que podem fazer exame especial}

EXAME(NMAX.N,FM.NUM.NOTA.F,NUMEX,NOTEX.NEXldeclare NMAX. {limite superiOt das variáveis compostas}

N, {número de alunos da turma}FM. {freqüência mínima}NEX, {número de alunos que podem fazer o exame}

{especial}1 {variável auxiliar}numérico

dec lare NUM[ I:NMAX], {número de matrícula dos alunos}NOTA[I:NMAXI. {notados alunos}F{I:NMAX]. {freqUência dos alunos}NUMEX[ I:NMAX]. {número de matricula dos alunos}

{que podem fazer exame especial}NOTEX[ I:NMAX] {nota dos alunos que podem fazer}

{eume especial}

1_1-1

i I =_1 ?u AUXI > NUM[I]entoo tnterrompa~NUM[I + 1] (- NUM[I)NOTA[I + IIr-NOTA[I]

fim repita

I'I = I~ NUM[I] +- AUXI

NOTA[I] ..- AUX2~ NUM[l+ I/f-AUXI

NOTA(! + 11"- AUX2fim seJ+-J+I

fim repit.Afim subrotina

Page 109: Harry farrer   algoritmos estruturados

I h.'

199

{Escrita da percentagem dos alunos já arrovados}PERCEN(NMAX.N,FM[2),NOTAP.FREQP.PA)escreva PA

PA +- NEX X \00N

UUllkvuq

PA +- NEX X 100N

{Escrita da percentagem dos alunos que podem fazer}{exame especial}

N+-I- I

{Escrita da percentagem dos alunos já aprovados}PERCEN(NMAX,FM[ I].N,NOTAG,FREQG.PA)escreva PA

~PA

escreva PA

{Escrita da percentagem dos alunos que podem fazer}{exame especial}

{Para a disciplina Programação de Computadores:}{Verificação dos alunos que podem faur exame especial}

EXAME(NMAX,N,FM[2].NUM,NOTAP,FREQP.NU},IEX,NOT.-\EX.NEX,{Escrita dos alunos que podem fazer exame especial}

CLASSIFICA(NMAX.NEX,NUMEX.NOTAEX)1 +- Ire i a

i I>NEXentão interrompa~escreva NUMEX[I).NOTAEX[I]1+- 1 + I

fim repita

{Para a disciplina Cálculo I:}{Verificação dos alunos que podem fazer ex.ame especial}

EXAME(NMAX.N,FM[3].NUM.NOTAC.FREQC,NU~IEX.NOT.-\EX,NEX){Escrita dos alunos que podem fazer eX:L-ne especial}

CLASSIFICA(NMAX.NEX,NUMEX.NOTAEX)1+-1

TIita

i ~~ã~~~errQmpa~escreva NUMEX[I].NOTAEX[IJ

{Para a disciplina Geometria Analítica:}.-+-+.......,[TT'.....,. íVerific~dosa1ullQ!~mf~~xameespc:cial}

E(NMAX,N,FM[ I).NUM.NOTAG.FREQG,NUMEX,NOTAEX,NEX){Escrita dos alunos que podem fazer exame especial}

CLASSIFICA(NMAX.NEX,NUMEX,NOTAEX)I+-I

TIr~:ã~~~rrompafim se~ NUMEX[I],NOTAEX[I]1+-1+1

fim repita

{limite superior das variáveis compostas}{variável auxiliar}{número de alunos da turma}(percentagem){número de alunos que podem fazer exame}{especial}

{Leitura da matrícula, notas e freqüências dos alunos}

{Leitura da freqüência mínima exigida nas 3 disciplinas}

!+- I

numéricoNMAX +-51

MAT[I).NOTAG[I).NOTAP[I].NOTAC[I].FREQG(I].FREQP[I).FREQC[I]

In~AT(I] < Oentão interrompas

1+-1+ I

{Declaração das variáveis utilizadas}~ FM[I:3]. {freqüência mínima exigida}

MAT[ I:S 1]. {número de matrícula dos alunos}NOTAG[I:51). {nota dos alunos de Geom. Analítica}NOTAP[ 1:51). {nota dos alunos de P. de Computadores}NOTAC[ I:51). {nota dos alunos de Cálculo I}FREQG[ 1:51). {freqüência dos alunos de Geom. AnaL}FREQP[ I :51). {freqüência dos alunos de P. de Comp.}FREQC[ 1:5 I). {freqüência dos alunos de Cálculo I}NUMEX(I:51). {número de matrícula dos alunos que}

{podem fazer exame especial}NOTAEX[ 1:51] {nota dos alunos que podem fazer exame}

{especial}

se J > NT"filão inlerrouwaÚ!JlJiÇ

. AUX I '=-NUM(l)--·AUX2 +- NOTA[J]1+- 1

ita1+-1-1

i i =_1 ~AUXI > NUM[I)enlao mlerrompa~NUM[I + I] +- NUM[I)NOTA[! + I) +- NOTA[!)

fim repitase I = I

Irn!ÃQ NUM[I] +- AUXINOTA[I] +- AUX2

~ NUM[I+I)+-AUXINOTA(I + I) +- AUX2

fim se1+-1+1

fim repitatim subrotina

kiJl FM( I ). ..FM[3]

numéricodeclare NMAX.

I.N.PA,NEX

> ''198

}

)

)

)

)

J)

)

)

)

)

))

f).>

Page 110: Harry farrer   algoritmos estruturados

<)

•••fi()

••Oo()

O

••••A-OOa()

oQ

o201

{número de matrícula dos alunos}{nota dos alunos}{freqUência dos alunos}{número de matrícula dos alunos}{que podem fazer exame especial}{nota dos alunos que podem fazer}{exame especialt

numérico

NOTEX[I :NMAX]

InuméricoNUM[1:NMAX],NOTA[l:NMAX],F[I]:NMAX],NUMEX[l:NMAXI,

ie~;'~ntermmpa~

1F{11 2: FM~NOTA[ll2:40~NOTA[I] < 60~NEX +- NEX + 1

NUMEX[NEX] +- NUM[I]NOTEX[NEX] +- NOTA[I]

fim.g1+-1+ 1

fim repitafim subrotina

I+-INEX+-O

v Ai6U' _. - --- - r - - -

{Declaração da sub·rotina que verifica quais os alunos}{que podem fazer exame especial}_1&Da EXAME(NMAX,N,FM,NUM,NOTA,F.,NUMEX~~NEX)

~ NMAX, {limite supenor das vanávels compostas}N {número de alunos da turma}FM {freqUência mínima}NEX, {número de alunos que podem fazer o exame}

{especial}{variável auxiliar}

{Declaração da sub-rotina que calcula a percentagem de}{alunos aprovados}.:&nII PERCEN(NMAX,N.FM.NOTA,FYA)

~ NMAX, {limite superior da variável composta}N {número de alunos da turma}Fil {freqUência miníma}PA: {percentagem de alunos aprovados}NA {número de alunos aprovados}I, ' {variável auxiliar}numérico

~ NOTA[l:NMAXI, {nota dos alunos da turma}F[ I:NMAX] {freqUência dos alunos da turma}numérico

NA+-O1f- I

11 ~~~interrom~I~TA[I] 2: 60 ~ F{I] 2: FM

33Á."._

{número de matrícula dos alunos}{nota dos alunos}{freqüência dos alunos}{número de matrícula dos alunos}{que podem fazer exame especial}{nota dos alunos que podem fazer}{exame especial}

{Escrita da percentagem dos alunos que podem fazer}{exame especial}

8......

NMAX.N,FM.NEX.

I

numérico

,E, 143

PA +- NEX X 100N

numérico~ NUM[I:NMAXI.

NOTA[I :NMAX].FREQ[ I:NMAXI.NUMEX[ I :NMAXI.

NOTAEX[ I:NMAX]

{Escrita da percentagem dos alunos que podem fazer}{exame especial}

II+-J+IliI!J re.pila

{Escrita da percentagem dos alunos já aprovados}PERCEN(NMAX,N,FM[3],NOTAC,FREQC,PA)~PA

FA f- NEX X 100N

{Escrita da percentagem dos alunos já aprovados}FERCEN{NMAX.N,FM.NOTA,FREQ,PA)escreva PA

~PA

fim aJeoritmo.

{Verificação dos alunos que podem fazer exame especial}EXAME(NMAX,N.FM.NUM.NOTA.FREQ,NUMEX,NOTAEX,NEX)

{Escrita dos alunos que podem fazer exame especial}CLASSlFICA(NMAX.NEX.NUMEX,NOTAEX)If-I

n~:;~7ermmpa~a NUMEX[lI.NOTAEX[II1+-1+1

fim repita

~mmllílDISCIPLlNA[NMAX,N,FM,NUM.NOTA,FREQ){Declaração dos parâmetros e variáveis utilizadas}

{limite superior das variáveis compostas}{número de alunos da turma}{freqüência mínima}{número de alunos que podem fazer o exame}{especial}{variável auxiliar}

Pode-se notar q~e, para cada disciplina, ainda existe um grupo de comandos que se repete, diftdo, apenas, pelas vanáveis envolvidas. Portanto, faz-se necessária a utilização de mais uma sub-' .declarada como se segue:

~PAfilTl subrotím,

200

~; .p-SQ $

Page 111: Harry farrer   algoritmos estruturados

263

Inúmero de matrícula dos aluno" }{nota dos alunos}{freqUência dós alunos}{número de matiícula ôOSaliinosr­{que podem fazer exame especial}{nota dos alunos que podem fazer exame}{especial}

{Leitura da matrícula. notas e freqüências dos alunos}

{Leitura da freqüência mínima exigida nas 3 disciplinas}

{Escrita da percentagem dos alunos que podem fazer}{exame especial}

NEX X 100

NPA +-

{Escrita da percentagem dos alunos já apro\-ados}PERCEN(l'óMAX,N,FM,NOTA,FREQ.PA)~PA

numérico{Verificação dos alunos que podem fazer exame especial}

EXAME(NMAX.N,FM,NUM,NOTA,FREQ,NUMEX,NOTAEX,NEX){Escrita dos alunos que podem fazer exame especial}

CLASSIFlCA(NMAX,NEX,NUMEX,NOTAEX)I+-I

TI~ I> l'.'EX

então interrompafim seescreva NUMEX[I].NOTAEX[I]1+-1+1

fim repita

numencogcclare l\UM[ I:NMAX].

NOTA[I:NMAX].FREQ{I :NMAX],

- NUMEX[i:NMAXr,-

NOTAEX[ I:NMAX]

leia FM[I] ...FM[3]

{Declaração das variáveis utilizadas}declare FM[I:3], {freqüência mínima exigida}

MAT[ I:51]. {número de matrícula dos alunos}NOTAG[I:51]. {nota dos alunos de Geom. Analítica}NOTAP[ I:51]. {nota dos alunos de P. de Computadores}NOTAc[ 1:5 I]. {nota dos alunos de Cálculo I}FREQG[1:5 I]. {freqüência dos alunos de Gcom. Anal.}FREQP[ I:51 I. {freqüência dos alunos de P. de Comp.}FREQC[I:511. {freqüência dos alunos de Cãlculo I}numérico

declare NMAX. {limite superior das variáveis compostas}I. {variável auxiliar}N, {número de alunos da turma}numérico

NMAXf-51

escreva PAfim subrotina

I f- I

n'tkm MAT[I],NOTAG[11,NOTAP[I].NOTAC[I]FREQG[I] ,FREQP[l].FREQC[I]

i ~~~[i~t:rr~mpafim..g1+-1+1

{número de matrícula dos alunos}{nota dos alunos}

NUM[J]NOTA[J]

NUM[I] +- AUXINOTA[I] +- AUX2NUM[I + I] +- AUXINOTA[I + I] +- AUX2

- 11QY. AUXI > NUM[I]

ão interrompa

interrompa

x IDO

N

{Declaração da sub-rotina que escreve os resultados}{para cada disciplina}

PLINA(NMAX.N.FM.NUM,NOTA,FREQ){Declaração dos parâmetros e variáveis utilizadas}

MAX, {limite superior das variáveis compostas}{número de alunos da turma}

• {freqüência mínima}X, {número de alunos que podem fazer o exame}

{especial}{variável auxiliar}

UXI,AUX2mérjco

UM[I:NMAX].OTA[I:NMAX}mérico

{Declaração da sub-rotina que classifica em ordem}{crescente a relação dos alunos que podem fazer exame}{especial}

SSIFICA(NMAX,N,NUM,NOTA)MAX. {limite superior das variáveis}

{compostas}{número de alunos}{variáveis auxiliares}{variáveis auxiliares}

I + I] +- NUM[I]A[I + I] +- NOTA[I]

gUiQ NA <- NA + I•~

I

~ 1+-1 +-

PA+-NA

~-

CLAlkrlm N

N.I.JAnu

lkdm NNnu

J +- 2( a;!.i1;l

jJ>Ncntão~AUXI +-AUX2 +-I+-Je it

I +- I~I=

entfim...s.e.NUM[NOT

fim repita

r~1mtiQ

senão

fim..KJ+-J+I

fim repitafim subrotjna

DISCI

~ NN,FMNE

)

')

C)!)

~

')

)

iJI:))

'))

JJ~

tt;)

)

))

)

)

)

Page 112: Harry farrer   algoritmos estruturados

I1iDl.m!Í1i!N+-I-I

{Para a disciplina Geometria Analítica:}DISCIPLlNA(NMAX.N,FM[11,NUM.NOTAG,FREQG)

{Para a disciplina Programação de Computadores}DISCIPLINA(NMAX.N,FM[2l.NUM,NOTAP,FREQP)

{Para a disciplina Cálculo I:}DISCIPLINA(NMAX.N,FM[3l,NUM.NOTAC,FREQC)

firo aleoritmo

3_3. CONSIDERAÇÕES SOBRE A MODULARIZAÇÃO DE PROGRAMAS

Existem várias vantagens e, naturalmente, algumas desvantagens na modularização de programas.A. IgLl~as destas desvantagens são específicas de cada linguagem de programação que se escolha para ~implenlentação do algoritmo.

Dentre as vantagens da modularização de programas podem-se citar:

I _ P a etes c?muns a vários programas ou que se repetem dentro de um mesmo programa, quandotnCK!ulanzadas em uma sub-rotina ou função, são programadas e testadas uma só vez. mesmo quetenham que ser eltecutadas com variáveis diferentes.

2 _ P~cm-se constituir bibliotecas de programas, isto é, uma colcção de módulos que podem ser usados em~l t ~rentes p'rograma.~ sem alteração e mesmo por outros programadores. Por eltemplo, as funções pré-de­i ln .da.~da.~ I~nguagensde programação, como citada.~no item anterior, con.~tituem uma bibliotecade módulos.

3 _ A nlodulanzação dos programas permite preservar na sua implementação os refinamentos obtidoscu rante o desenvolvimento dos algoritmos.

4 _ Ecanomia de memória do computador, uma vez que o módulo é armazenado uma única vez mesmoGue utilizado em diferentes partes do programa. Permite, também, que, em um detemúnado'instanteda e xecução do programa, estejam na memória principal apenas o módulo ou os módulos necessáriosà e xecução desse trecho de programa.

~e?tre as desvantagens ~e-se citar que exi~t~ um acréscimo de tempo na execução de programasc~nsta t.uldos de módulos, deVIdo ao tratamento adICIonai de ativação do módulo etc.

C=onclui-se que, sem dúvida, a modularização dos programas é uma técnica altamente recomendá­veI. ta... to pela eficiência no projeto e desenvolvimento dos mesmos quanto pela quantidade, confiabili·dadc e manutenção do produto elaborado.

r illalmente. o critério de modularização, utilizado nos exemplos apresentados, foi o de "funcionali­~ade··_ isto é, a tarefa de construção do algoritmo foi dividida em partes, segundo a função que estas te­~arTI de executar: Entre~t~:existem outros critérios para modularização. Dentre eles, pode-se citar o~u~t.am~nto d~ mfonnaçao [Pamas, 19721. que geralmente produz algoritmos cuja manutenção poste­

ra<>r e WIlalS efetlva.Estes e outros detalhes, referentes à modularização. são tratados de fonna mais adequada na disci­

p I i na denominada "Engenharia de Programas" [STAA, 19831, cujo conteúdo foge ao escopo deste texto.

3.4_ EXERCíCIOS PROPOSTOS

PN.<>B~EMAS GERAISÓ. 3."_1. Refazer o exercício proposto em 1.12.18. do capítulo I, usando uma função para calcular o nú­ITIcro de pontos de uma etapa. Esta função deve ser ativada para se obter os pontos de cada etapa paracada equipe.6. 3."_2. Reescrever o algoritmo do exemplo 1.41, do capítulo I, sendo que o cálculo da potência de cadaCÔ....~o deve ser feito por uma função.... .3.4_3. A avaliação de aproveitamento de uma certa disciplina é feita através de 4 provas mensais nov. ar de 20 pontos e uma prova final no valor de 40 pontos. A nota final é obtida somando-se as 3 melho­.-.:. "~a!l.dentre as provas mensais, com a nota da prova final.

':;.-.....

o conceito final é dado atendendo-se ao seguinte critério:

de 90 a lOO-conceito Ade 80 a 89-conceito Bde 10 a 19-conceito Cde 60 a 69 - conceito Dde 40 a 59-conceito Ede O a 39-conceito F

Fazer uma sub.rotina que. recebendo como parâmetro 4 (quatro) nómeros !nteiros, dev~lva ao mó­dulo que a chamou a soma dos 3 (três) maiores números dentre os 4 (quatro) numeros recebIdos.

Fazer um algoritmo que: , .• leia um conjunto de 80 linhas contendo, cada uma, o numero do aluno, as 4 notas mensaIs e a

nota da prova final; .• calcule. para cada aluno. sua nota final, utilizando a sub-rotina antenor,

• verifique o conceito obtido; .• escreva, para cada aluno, o seu número, a sua nota final e o seu con~ello. . . .

D. 3.4.4. Fazer um algoritmo para um programa de apostas da LOTO. O algontmo deverá ler, inICIalmen­te, as cinco dezenas sorteadas e, a seguir, ler várias linhas, uma para cada aposta, contendo:

• número da aposta;• quantidade de dezenas apostadas (no máximo, 10);• as dezenas apostadas. .

A última linha, que não entrará nos cálculos, conterá o númer~ da apost~ Igual a zero..O algoritmo deverá escrever o número de todas as apostas que t1\'ere~tres, quatro ou CinCO dezenas

sorteadas e. ao final, a quantidade de apostadores que fizeram o temo (tre~ dezenas sorteada~).. a quadra(quatro dezenas sorteadas) e a quina (cinco dezenas sorteadas). Neste algontmo. deverá ser utlh~ada umasub-rotina que faça a avaliação do número de pontos de cada aposta. . .. . . 3.4.5. Construir uma função que receba como parâmetro de entrada um nu~~ro inteIro POSltlvo e de­volva um dígito \erificador confonne o processo de cálculo descrito no exerCICIO 2.5.3.6.

Escrever um algoritmo capaz de: ,• ler um conjunto indeterntinado de linhas contendo, cada uma. o nome de uma pessoa e seu nu-

mero de CPF (n.o de inscrição no Cadastro de Pessoas F~sicas)." .. .'• impriDÚr. para cada pessoa. os seus dados de entrada m31S a mensagem VÁLIDO. ou IN\ A-

LIDO", confonne a situação do número de CPF.• utilize a função acima para calcular os dígitos verificadores.. .

Obs: l'm n.o de CPF é validado através de seus dois último~ dígi.tos (dígitos v~n.ficador~s..denoffil~adoscontrole). Por exemplo, o CPF de número 23086025620 e vahdado pelos dígltos venfi~adores _O. O

esquema de verificação é o seguinte:230860256 função ) dígito veriticador igual a 2

2308602562 função ) dígito verificador igual a OD. 3A.6. Fazer uma sub-rotina que. dados N números, dete~e o ~úmero que apareceu~vez~s: Su\X?rque os valores possíveis de cada número estão entre I e 6. mcluslve. e que sempre havera um UOICO nu-

mero vencedor. . ' .. linhSabendo-se que um jogo de dados ocorre .w vezes por dIa e que a cada dIa é dIgitada uma a

contendo os 40 números que saíram, fazer um algoritmo que: .'• leia os dados contidos em 30 linhas, correspondentes a um mes de Jogo:• determine o número ganhador do dia, utilizando-se a sub.roti~a anterior;• escreva este número e a mensagem "RESULTADO DIARIO :• verifique também qual o número ga~ador do mês: "• escreva este número e a mensagem RESULTADO MENSAL DO JOGO .

 3....7. Fazer uma sub-rotina, cujo cabeçalho é dado por:QUANTOSDIAS(DIA,MES,MO,N)

onde:DIA, MES e ANO são parâmetros de entrada; . • .N é um parâmetro de saída que conterá o número de dIas do ano ate a dala fomecld3.

205

).

~

•••..(J

••QJ()

ao4D

••••"Q"(JG).

ooo

Page 113: Harry farrer   algoritmos estruturados

. sendo l' = l.j32 x S

............... _' ... -----_._...... __ ..... _-,_ .. _- ._--- -- ._-------_ .. ,.----D. 3.4.12. Escrever uma sub-rotina que calcule a distância entre dois vetares:

X = [Xl' Xl' .... x.l e Y = [Yl' Yz• .... yJ---Eserevet'1Jm-algoritmo que, utilizando a sllb rotina anterior. calcule e escre~ ii djstância~M

pares de vetores. O valor de M será fornecido. . 3.4.13. Calcular e escrever a área total de 10 tetraedros, dadas as coordenadas de cada um de seu:s quatrovértices. Para tanto, deverão ser utilizadas as seguintes sub-rotinas:a) que calcula a distância entre dois pontos do espaço;

b) que calcula a área de wn triângulo em função de seus lados (AREA = ., p x (p - a) x (p - b) x Cp - c),

onde pé o semi-perímetro do triângulo).63.4.14. Escrever uma sub·rotina que calcule o valor de r. através da série

207

8 = 3 + 5. 16 = II + 5. 68 = 31 + 37 etc.

'Dado um conjunto de números inteiros positivos. pares. fazer um algoritmo que caI.:ule. para ~ada

número. um par de números primos cuja soma seja igual ao próprio número. Adotar como,r7ag um núme­ro negativo.

Para verificar se um número é primo, fazer uma sub-rotina que deverá retomar em uma vari:ivdlógica o valor verdadeiro, se o número for primo. e falso. em caso contrário.63.4.18. Fazer uma sub·rotina que. recebendo como parâmetro dois :onjuntos de números inteiros e ostamanhos destes conjuntos. devolva ao módulo principal um outro conjunto de números inteiros. comen­do a interseção dos dois conjuntos recebidos e o tamanho desse no\'o conjunto iormado.

Fazer uma sub-rotina que. recebendo como parâmetro um número inteiro. devolva ao módulo prin­cipal um conjunto de números inteiros. contendo todos os divisores do número recebido e o tamanhodesse conjunto.

Fazer um algoritmo que:• leia um conjunto de 3D pares de números inteiros:• escreva, para cada par de números lidos. os seus valores e os ;eus divisores comuns. faze ndl' uso

das sub·rotinas anteriomiente definidas.

I J I "e = I + - +- +- +...

I! 2! 3!

O número de termos da série deverá ser fornecido à sub-rotina como parâmetro.Escrever um algoritmo que. utilizando a sub-rotina anterior. determine o número de termos da série

necessário para calcular o valor de e. cuja diferença em relação ao valor obtido através da função EX?I I)

seja menor que 0.0001.6 3.4.16. Escrever uma sub-rotina que determine o conjunto interse.;ão entre dois conjuntos Â. e B decaracteres.

Escrever uma sub-rotina que determine o conjunto união entre esses mesmos conjumos A e B.Escrever um algoritmo que leia 50 pares de conjuntos de 100 cancteres cada. determine e escreva a

interseção e a união desses conjuntos. utilizando as sub-rotinas anteriormente definidas. 3.4.17. Segundo a conjectura de Goldbach. qualquer número par. maior que 2. pode ser escrito comoa soma de dois números primos.Exemplo:

I I IS = I - - +- -- +...

3J 5J 7J

Deverá ser fornecido à sub-rotina o número de termos da série para o cálculo de 'TT.

Escrever um algoritmo que, fornecendo à sub·rotina. sucessivamente. o número de termos (I. 2. 3,.... N). escreva uma tabela com o valor de 7T e número de termos utilizados. O valor de N deverá :ser lido. 3.4.15. Escrever uma sub-rotina que calcule o valor de e através da série:

69X66-+122448 -+

942I + 48

54

A seguir. escrever um algoritmo que leia 10 pares de números, calcule e escreva os respectivos pro­dutos. usando a função anterior.

~ 3.4.1.0. Determinar os números inteiros, menores que 5.000. que são quadrados perfeitos e tambémsao caplcuas. • ,

Capicuas são números que têm o mesmo valor se lidos da esquerda para a direita ou da direita paraa esquerda. Exemplo: 44.232.1661. etc.

Deverão ser escritos os seguintes algoritmos:• um módulo principal;

: uma função .que calcule quantos algarismos tem um determinado número inteiro;uma sub·rotlna para separar um número em n alaarismos'

• uma sub-rotina para fonnar o número na ordem inversa.•6 3.4.11. Dado um polinômio na forma

P = a1x· + ll:!x· - I + ... + a"x + a" + I

a) Fazer um~ sub-rotina que retome o valor do polinômio e o de sua derivada no ponto x recebendocomo parametros de entrada a ordem do polinômio os coeficientes e o x •

b) Faz~r um algoritmo que: • .

: le~a. a ordem do polinômio e os seus coeficientes;

. ~llrzan~o a sub·rotina da alínea a, calcule o valor do polinômio e o de sua derivada para diversos,c:n~~s ~x. Esse.s val~res de~erão estar digitados um por linha. sendo que a primeira linha desse

Unto e dados contem o numero de valores de x a serem lidos;

,)

)

- .. - ..' ~ .... - .... - - •.~ _ .. - _.u ............u .V•••~ ... IU&4, "" PI\;-\..13U VCJUn.:a..1 U lI11lnero<Jed"Glda m~s. Ornes dc fevereiro poJe ter 28 ou 29 dias, dependendo de o ANO ser bissexto ou _ las decxcrc{clO 1.12.23). nao (ver 0.

cfaur umalgorimw'flH!: c'

oleia um conjunto de linhas contendo. cada Ullla; duas dalas.Aumma1iil1iã:-ijUeseiáIT--:;,comoflag. conterá os valores O O O O O O. • u 1lZada,..

o verifique se as datas estão corr~t~ (I :::~ MES < = 12, dia de acordo com o mês e se ambas?estão ~~ntro do mesmo ano). Se alguma das datas não estiver correta. escreva "DATA INCOR •...~RETA e os valores de DIA. MES e ANO das duas datas' •.. :

o verifique, se as d~tas estiverem corretas. qual a diferença:em dias. entre essas duas datas'o escreva as datas lidas e a diferença entre elas. '

63.4.8. Escrever um algoritmo que leia um conjunto de 1.000 linhas contendo cada uma uma I. r d - • " " pa aVraem tng es e a sua tra uçao em portugues. Em segUIda. leia um número indeterminado de linhas COnte dcada uma: n 0,

• a letra I (i~di~ando inglês) e uma palavra qualquer das 1.000 em inglês; ou.. ~ I~tra P (mdlcando português) e Uma palavra 9ua1quer das 1.000 em português.

Para cada u~a d~ssa~ linhas, e~crever a palavra hda e a sua tradução. A última linha. indicandofim de dados, tera a pnmelra letra diferente de I e P. o

. A ~r~dução da ~~Iavra lida deve ser feita através de u~a sub·rotina que recebe as listas de palavrasem tngles e portugues, a letra I ou P e a palavra que se deseja traduzir. devolvendo a tradução da mesma.

PROBLEMAS DE APLICAÇÃO EM CIÊNCIAS EXATAS

 3.4.9. Es.c~ever uma fu~Ção que receba dois números inteiros. positivos. e determine o produto dmesmos. ~t~h~ando o ~egutnte método de multiplicação: os

• diVidir. sucesSivamente. o primeiro número por 2, até que se obtenha I como quociente'• paralclame~te. dobrar. sucessivamente. o segundo número; •o son.lar ~s numeros da segunda coluna que tenham um número ímpar na primeira coluna. O total

obtido e o produto procurado.) E.femp/o:

dJ)

J

L)

)

l)

.J

)

)

-y--

}

~)

.J

.Jti;.

".r1)·~

()

()C)

j

Page 114: Harry farrer   algoritmos estruturados

Capítulo 4

Conclusões

A técnica apresentada neste livro para o desenvolvimento de algoritmos é útil e indicada mesmo~uando não se cogita da utilização dos computadores. Ao se defrontar com problemas de organização deuma empresa. do estabelecimento de uma política econômica. do projeto de uma obra de engenharia. dafixação do plano de ação de uma equipe de pesquisa. do planejamento de uma novela. romance ou mes­mo um livro didático. como este. as técnicas de desenvolvimento estruturado de algoritmos podem e devemser empregadas. Os problemas devem ser abordados. primeiro. na sua generalidade e somente depois.gradativamente. nas suas particularidades. As ações devem ser consideradas na sua seqüenciação. na suacondicionalidade e na sua repetição.

Por outro lado. o desenvolvimento de um algoritmo capaz de fazer com que as operações básicas deum computador conduzam à solução de um problema. até a obtenção dos seus resultados finai s. é apenasuma das fases necessárias para o uso do computador.

Particularmente. para se resolver um problema num computador. é necessário passar pelas fases des­critas a seguir.

4.1. DEFINIÇÃO DO PROBLEMA

Antes de se utilizar o computador. é necessário saber qual é o problema que se deseja resoh"er. Énecessário caracterizá-lo de uma maneira clara e completa.

4.2. DESENVOLVIMENTO DE UM ALGORITMO

Definido o problema. passa-se em seguida à fase de desenvolvimento de um algorinno capaz deproduzir os resultados desejados. Nesta fase. quanto mais complexo for o problema. nuis se recomendaa utilização da técnica apresentada neste livro.

4.3. CODIFICAÇÃO

Desenvolvido satisfatoriamente um algoritmo, faz·se nesta fase a sua transcrição para uma lingua­gem de programação aceita pelo computador.

4.4. DIGITAÇÃO

Escrito o programa. na linguagem escolhida. é necessário introduzi-lo no computador. a rim deexecutá-lo. Faz-se então a sua digitação num teclado. ligado a um computad,'r diretamente ou atrJvés deum tenninal.

209

')

i)

)

)

')

)

)

(D

•••O()

••()O()O()

Q

••••QQ

"OOQ

O~

-{~

Page 115: Harry farrer   algoritmos estruturados

Apêndices4.6. ANÁLISE DOS RESULTADOS

4.5. "'KUl.:t.;~~AMt.;NIU UU YK(J(,;KAMA

A obtenção de resultados através de um computador não é a garantia de que eles estejam Corretosmas apenas uma indicação de que o programa está escrito sem erros de linguagem. Geralmente, o com:putador não executa programas com erro de linguagem, mas emite mensagens, tentando localizar o erroe determinar a sua natureza. Por conseqüência, os primeiros resultados de cada alternativa contida numprograma devem ser cuidadosamente veri ficados.

No item 0.5 faz-se uma referência às principais linguagens de programação em uso, atualmente, ede como proceder-se à sua escolha. Estas linguagens serão apresentadas de uma maneira sistemática. uni.fonne e unificada nos volumes seguintes da coleção que ora se inicia e tem por base este livro AlgoritmosEstruturados.

210

Esta fase é feita pelo próprio computador. verificando a correção sintática do programa. COIlside.cando o signíficado de suas sentenças e procedendo a sua execução. Em a~ns ca",s",os""c'a~an"!!Jlál!!li~üW>-seft'~~~~_~ __~__~. ~ ~ ~__

~ tenÇiis----ao programa e a sua execução são realizadas alternadamente: diz-se, então, que o programa estisendo interpretado. Em outros casos, é feita, antes, a tradução de todo o programa para a linguagem demáquina e somente depois se processa a sua execução: diz-se, neste caso, que o programa foi compilado.

)

)

)

J)

)

}

,)

:>)

:i>:>)

)

Page 116: Harry farrer   algoritmos estruturados

Apêndice A

Exercícios Resolvidos

Neste apêndice sao apresentadas possíveis soluções ~ara

alguns dos exercicios formulados no livro. Fora::-. escolhidos osexercícios mais significativos de cada capi -:ulo e que repre ser.:amurna classe de problemas semelhantes.

Todo exercicio, cuja solução está incl~ída neste a~êndice, édestacado, na lista correspondente do cap:' ':ulo, através de :.unamarca em negrito. Por exemplo, o exercício de núrner~ 3.4.17 aparecena lista de exercícios propostos do capitulo 3 na f:rma  3.4.17.

Os algoritmos são agrupados por capít~los na mesma ordem emque foram originalmente formulados.

Todos os algoritmos presentes neste apêndice foram implemen­tados e devidamente testados na linguagem Pascal, sendo que osprogramas encontram-se listados no Apêndice A cio liv::::> Pas=alEstruturado.

213

j>':-#

))

.~

')

")

;)

Ofi..•.-$<':J

••iO.)

~E)

()

*'~

"••••Of"'IV

"OQ

OOO

Page 117: Harry farrer   algoritmos estruturados

) Capitulo 1 - Exercícios propostos 1.12.2.

115

(Nome de cada mercadoria:

{Definição do tipo das variáveisj{Preço de compra de cada mercadoria}(Preço de venda de cada mercadoria;{Porcentagem de lucro de cada mercadol-ia}[N°de mercadorias com lucro < 10%;{N°de mercadorias com 10 S lucro S 20%J{N° de mercadorias com lucm > 20%}{Valor total de compras}{Valor total de vendas){Lucro total}

{Atribuição dos valores iniciais necessãrios}

______________lE~cl"itado número de hOIIlen~L _

{Leitura}

{Escrita da média de altura das mulheres}

{Cálculo dos valores totais de compra e je venda:TOTALCOMPRA +- TOTALCOMPRA + COMPRATOTALVENDA +- TOTALVENDA + VENDA

fim repita

leia NOME, COMPRA, VENDA{Verificação de fim de dados para le:mra}

se NOME = "VAZIO"J então interromoafun se

{Cálculo da porcentagem de lucro}LUCRO +- (VENDA - COMPRA) x 1001 COMPRA

{Cálculo do n° de mercadorias em cada intervalo de lucro}se LUCRO < 10

1então LUCROlO +- LUCR010 + 1senão se LUCRO :s 20---Ientão LUCR01020 +- LUCR01020 + 1

senão LUCR020 +- LUCR020 + 1fim se

fim se

numéricodeclare NOME

literal

escreva MÉDlI\

declare COMPRA,VENDA,LUCRO,LUCR010,LUCRO 1020,LUCR020,TOTALCOMPRA,TOTALVENDA,LUCROTOTAL ~

LUCROlO +- OLUCRO 1020 +- OLUCR020 +- OTOTALCOMPRA +- OTOTALVENDA +- Ore ita

 1.12.4.

escreva HOMENSfim algoritmo.

AI oritmo

------f----~

{Sexo: masculino ou feminino}numérico

declare SEXOliteral

{Atribuição dos valores iniciais necessários}MULHERES +- OSOMA +- OMAIOR +- OMENOR+- 5PESSOAS +- 1r.e ita

(Determinação da maior e menor alturas do grupo}se ALTURA> MAIOR1 então MAIOR +- ALTURAfim sese ALTURA < MENOR1 então MENOR +- ALTURAfim sePESSOAS +- PESSOAS + 1se PESSOAS> 501 então interrompafim se

fim repita

{Leitura da altura e sexo de cada pessoa}leia ALTURA, SEXO

(Determinação da soma das alturas das mulheres)se SEXO = "FEMININO"

1então SOMA +- SOMA + ALTURAMULHERES +- MULHERES + 1

fim se

{Cálculo da média de altura das mulheres}MÉDIA +- SOMAI MULHERES

{Cãlculo do número de homens}HOMENS +- PESSOAS - MULHERES

{Escrita da maior e da menor altura}escreva MAIOR, MENOR

)

) AlGoritmo --------------~__c_=_ _

) [Definição do tipo das variáveis}declare ALTURA, {Altura das pessoas}

PESSOAS. {Número de pessoas}MAIOR, [Maior altura do grupo}MENOR, {Menor altura do grupo}MULHERES, {Número de mulheres}HOMENS, {Número de homens}SOMA, {Soma das alturas das mulheres}MÉDIA {Média das alturas das mulheres}

j

)

) 214

Page 118: Harry farrer   algoritmos estruturados

216

Alizoritmo

••••CJ

••Q"~

OGO

•••••OCtCDOQ

OQ$r~

217

{Número de alunos ausentes em cada turma}(porcentagem de alunos ausentes}rrurmas com mais de S% de alunos ausentes}

{Identificação da turma}{Frequência de cada aluno: A ou P}

AUstNCIA,PERCAUS,PERCS,numérico

declare TURMA,FREQUeNCIAliteral

{Defmição do tipo das variáveis}declare NASCIMENTOS, {Número de crianças nascidas no período}

MESES, {Número de meses de vida}MORTAS, {Número de crianças mortas}MASCULINOS, {Número de meninos mortos}VIDA24, {W de crianças que viveram até 24 meses}

{Atribuição dos valores iniciais necessários}PERCS ~OCONTURMA.- 1ce ita

se CONTURMA :> 14] então interrompafim se

{Leitura da identificação da turma e do n° de seus alunos}leia TURMA, ALUNOS

{Atribuição dos valores iniciais necessários}" CONTALUNOS ~ O

AUSeNCIA ..- Ore ita

se CONTALUNOS :> ALUNOSJ então interrompafim se

{Leitura dos dados de cada aluno}leia MATRICULA, FREQUÊNCIAse FREQUeNCIA ="NJentão AUSÊNCIA ..- AUSÊNCIA + 1fim seCONTALUNOS..- CONTALUNOS + 1

fim repitaPERCAUS ..- AUSÊNCIA x 100/ALUNOSse PERCAUS :> S1 então PERCS ~ PERCS + 1f1m seescreva TURMA, PERCAUSCONTURMA ..- CONTURMA + 1

fun repitaescreva PERCS

fim algoritmo. 1.12.9.Alaoritmo

{Definição do tipo das variáveis}{Número de turmas}{Número de alunos de cada turma}{Contador de alunos}{Número de matricula de cada aluno}

{Definição do tipo das variáveis}{Massa inicial em gramas do material}{Massa final em gramas do material}(Tempo necessário para massa final ficar < 0,5g}{Horas}{Minutos}{Segundos}

declare INICIAL,FINAL,TEMPO,H,MIN,SEG

declare CONTURMA,ALUNOS,CONTALUNOS,MATRICULA,

TEMPO~O

numérico{Atribuição dos valores iniciais necessários}

ce itase FINAL < 0 ,5J então interrompafim seFINAL..- FINAL/2TEMPO ..- TEMPO + 50

fim repita§e TEMPO = O

então escreva INICIAL, "MASSA INICIAL MENOR QUE 0,50"senão H ..- QUOCIENTE(TEMPO,3600)

SEG ..- RESTO(TEMPO,3600}MIN ..- QUOCIENTE(SEG,60)SEG ..- RESTO(SEG,60)escreva INICIAL, FINAL, H, MIN, SEG

leia INICIALFI NAL ..- INICIAL

{Cálculo do tempo necessário para que FINAL fique < O,5g}

{Leitura da massa inicial do material radioativo}

{Cálculo do lucro total}LUCROTOTAL ~ TOTALVENDA - TOTALCOMPRA

• {Escrita dos valores calculados}escreva LUCRO 1Oescreva LUCROI020escreva LUCR020escreva TOTALCOMPRA, TOTALVENDA, LUCROTOTAL

fim algoritmo.. 1.12.6.Alaoritmo

fim sefim a·1aoritmo.~ 1.12.7.

W,.•w. ##4M4 Ak44t4 $ ,-'o ""0') .-$ 44

Page 119: Harry farrer   algoritmos estruturados

'{Sexo das crianças}

119

{Código: aprovado ou reprovado}

{Porcentagem de alunos infrequentes)

{Definição do tipo das variáveis}(Marco quilométrico da 1a cidade){Marco quilométrico da 2 a cidade}{Distância entre as duas cidades}

declare MARCO I,MARC02,E,

PERCnumérico

declare CóDIGOliteI ai ...

 1.12.14.

{Atribuição dos valores iniciais necessários}REPROVADOS +- OINFREQUENTES +-- OTOTAL +-- OMAIOR +-- OMENOR +-- 100ALUNOS +-- 1re ita

leia MATRÍCULA, NOTAI, NOTA2, NOTA3, FREQUENCIANOTAFINAL +- (NOTAI + NOTA2 + NOTA3)/3se (NOTAFINAL < 60) ou /FREQUÊNCIA < 40)

então CÓDIGO +- "REPROVADO'REPROVADOS <- REPROVADOS + 1se FREQUENCIA < 401 então lN FREQUENTES +-- INFREQUE:'-iTES + 1fim se

senão CÓDIGO +-- "APROVADO"fim seescreva MATRÍCULA, FREQUENCIA, NOTAFINAL, CÓDIGOTOTAL <- TOTAL + NOTAFINAL

[Leitura das notas e frequência dos outros alunos}TOTAL <- TOTAL + NOTAFINALse NOTAFINAL > MAIOR1 então MAIOR <- NOTAFINALfim sese NOTAFINAL < MENOR1 então MENOR +- NOT.\FINALfim seALUNOS +-- ALUNOS + 1se ALUNOS> 1001 então interrompafim se

fim repitaMÉDIA +-- TOTAL/ 100PERC +- INFREQUENTES x 100/100escreva MAIOR, MENOR, MEDIA, REPROVADOS, PERC

fim algoritmo.

Alaoritmo

worcentagem de cnanças mortas}{porcentagem de meninos mortos}{porcentagem de crian~asque viveram até 24 meses}

{Definição do tipo das variáveis}{Número de alunos}{Número da matricula de cada aluno}{Primeira nota de cada aluno}{Segunda nota de cada aluno}{Terceira nota de cada aluno}{N° de aulas frequentadas por aluno}{Nota final de cada aluno}{Maior nota final da turma}{Menor nota final da turma}{Soma das notas finais da turma}{Média das notas finais da turma}{Total de alunos reprovados}{Total de alunos infrequentes}

.t'CKI..-MUK!/\0,

PERCMASC,PERC24

.. numéricodeclare SEXO

literal

declare ALUNOS,MATRÍCULA,NOTAI,NOTA2,NOTA3,FREQUENCIA,NOTAFINAL,MAIOR,MENOR,TOTAL,MEDIA,REPROVADOS,INFREQUENTES,

{Atribuição dos valores iniciais necessários}

218

MORTAS +-- OMASCULINOS +-- OVIDA24 +-- O

{Leitura do número de crianças nascidas no período}leia NASCIMENTOSre ita

{Leitura do sexo e dos meses de vida de cada criança}leia SEXO, MESESse SEXO = "VAZIO'1 então interrompafim seMORTAS +-- MORTAS + 1se SEXO = "MASCULINO'1 entào MASCULINOS +-- MASCULINOS + 1fim sese MESES :5 241 então VIDA24 +- VIDA24 + 1fim se

fim repitaPERCMORTAS +- MORTAS x lOO/NASCIMENTOSPERCMASC +- MASCULINOS x 100/MORTASPERC24 +- VIDA24 x 100/MORTASescreva PERCMORTAS, PERCMASC, PERC24

fim allzoritmo.... 1.12.12.AI oritmo

\

)

I~

J)

))

)

)

DD,)

))

)

)

)

Page 120: Harry farrer   algoritmos estruturados

)..')

oO

••••oEJ,O

OOOO()r\

221

·kG44,

MULHEXP35+- OMENOR+-lSOe ita

 1.12.17.

fim sesenão MASCULINOS +- MASCULINOS + 1

se EXPERIÊNCIA = "SIM"

1~ THOMEXP +- THOMEXP + 1TIDADE +- TIDADE + IDADE

fim sese IDADE> 451 então THOMENS45 +- THOMENS45 + 1fim se

{Definição do tipo das variáveis}declare PREÇO, {Preço do ingresso}

INGRESSOS, {Numero provável de ingressos vendidos}DESPESAS, {Despesas com o espetáculo}LUCRO, {Lucro provável}LUCROMAX, {Lucro mãximo provável}PREÇOMAX, {Preço mãximo}INGRESSOSMAX {Número máximo de ingressos vendidos}numérico

{Atribuição dos valores iniciais necessários}LUCROMAX +- O

A oritmo

fim sefim repitaIDADEMED ...... TIDADE/THOMEXPPERC45 +- THOMENS45 x lOO/MASCULI:-lOSescreva FEMININOS, MASCULINOS, IDADEMED, PERC45, MULHEXP35,

MENORfim aI oritmo.

{Leitura dos dados de cada candidato}leia INSCRIÇÃO, IDADE, SEXO, EXPERIE:NCIAse INSCRIÇAo = OJ então interrompafim sese SEXO = "FEMININO·

'i então FEMININOS +- FEMININOS + Ise EXPERIeNCIA = "SIM"

então se IDADE < MENOR--l então MENOR +- IDADEfim sese IDADE < 35

Ientão escreva INSCRIÇAoMULHEXP35 +- MULHEXP35 + 1

fim se "

J,. S x. ) .; u

{Velocidade}(Tempo decorrido entre as cidades)

(Definição do tipo das variáveis)(Número de inscrição do candidato){Idade do candidato}{Número de candidatos do sexo feminino}{Número de candidatos do sexo masculino}(Total de idades de homens c/experiência}{Idade média dos homens c/experiência}(Total de homens com mais de 45 anos)(Total de homens c/experiência}{Percentual de homens c/mais de 45 anos}(Total de mulheres c/experiência e idade < 35 anos){Menor idade das mulheres c/experiência}

V,T,numérico

re ita

declare INSCRIÇAo,IDADE,FEMININOS,MASCULINOS,TIDADE,IDADEMED,THOMENS45,THOMEXP,PERC45,MULHEXP3535,MENORnumêrico

declare SEXO, {Sexo do candidato}EXPERIÊNCIA {Experiência no serviço: sim ou não}literal

{Atribuição dos valores iniciais necessários}FEMININOS +- OMASCULINOS +- OTHOMEXP+-OTIDADE +- OTHOMENS45 ...... O

(Leitura dos marcos quilométricos de duas cidades)leia MARCO I, MARC02se (MARCO 1 '" O) ~ (MARC02 = O)1 então interrompafim seE MARC02 - MARCO1V 20re ita

T ...... E/Vse T > 2l então escreva MARCOI, MARC02, V, Tfim seV ...... V + 10se V > 80l então interrompafim se

fim repitafim repita

fim algoritmo. 1.12.16.AI oritmo

210

IlÇA _,,#.:<:.1:'.. _

Page 121: Harry farrer   algoritmos estruturados

 1.12.21.

{Atribuição dos valores iniciais necessários}

113

{Sexo do operário: masculino ou feminino}

{Definição do tipo das variáveis;(Número de cada operãrio){Número de peças produzidas;{Salário de cada operário){Salário minimo}{Total da folha mensal}{Total de peças produzidas no mês]{Total de homens - classe A}{Total de peças produzidas pelos homens - classe AI{Média de peças produzidas pelos homens - cl2.sse A}{Total de homens - classe B}{Total de peças produzidas pelos home:J.s - classe BI{Média de peças produzidas pelos homens - cl2.sse B]{Total de homens - classe C}{Total de peças produzidas pelos homens - classe q{Média de peças produzidas pelos homens - cl2.sse C}{Total de mulheres - classe AI{Total de peças produzidas pelas mulheres - cl=.sse AI{Média de peças produzidas pelas mulheres - c:asse A:{Total de mulheres - classe B}{Total de peças produzidas pelas mulheres - c!=.sse BJ{Média de peças produzidas pelas mulheres - c:asse B:{Total de mulheres - classe C}{Total de peças produzidas pelas mulheres - classe C}{Média de peças produzidas pelas mulheres - c:asse C}{Maior salário}{Número do operário com maior salário:

declare NÚMERO,PEÇAS,SALARIO,SALMÍNIMO,TFOLHA,TPEÇAS,HOMENSA,HPEÇASA,MÉDlAHA,HOMENSB,HPEÇASB,MÉDIAHB.HOMENSC,HPEÇASC,MÉDIAHC,MULHERESA,MPEÇASA,MÊDIAMA,MCLHERESB,MPEÇASB,MÉDIAMB,MULHERESC.MPEÇASC,MÉDIA:-'IC,MAIOR,MAIOR;\lUMnumérico

declare SEXOliteral

TFOLHA ~ OTPEÇAS ~ OHO~IENSA ~ OHOMENSB ~ OHmlENSC +- O

UI'" +- t\:c;:, j V\\ I t\:u l~~"'\"':,o XlVI - V,i) i U + '" i \.,!UVLlt·.I~ I ~l1\':1j -QLiUCIENTE(S,4) - 2 x S),7}

se DIA oe: (;1entãoE7tA_DfA + 7fim seescreva D, MÊS. ANO. DIADATAS ~ DATAS + 1

fim repitafim algoritmo.

AI oritmo

(Definição do tipo das variáveis)declare DATAS, (NU de datas pesquisadas)

DIA, (Dia da semana a ser determinado)MES, (Més lido)ANO, {Ano lido)M, {Número do mês}D, {Dia do mês}A, {Dois últimos algarismos do ano)S {Dois primeiros algarismos do ano)numêrico

(Atribuição dos valores iniciais necessários)

leia D, MÊS, ANOS +- QUOCIENTE{ANO, 100)A+- RESTO{ANO,lOO)se MÊS $ 2

1então M +- MÊS + 10A +-A - 1

senão M +- MÊS - 2fim se

DATAS +- 1re ita

se DATAS> 501 então interrompafim se

{Leitura de uma data)

I PJ<J.<;<";U ~;)

INGRESSOS ~ 120DESPESAS +- 200rePIta

se PREÇO < 11 então interrompafim seLUCRO +- INGRESSOS x PREÇO - DESPESASescreva LUCRO, PREÇOse LUCRO> LUCROMAX

1então LUCROMAX ~ LUCROPREÇOMAX ~ PREÇOINGRESSOSMAX ~ INGRESSOS

fim seINGRESSOS +- INGRESSOS + 26PREÇO +- PREÇO - 0,5

fim repitaescreva LUCROMAX, PREÇOMAX, INGRESSOS MAX

fim algoritmo. 1.12.20.

222

Aloritmo

)

)

)

)

)

,]

)

)

)

J

)

.J

)

)

)

)

)

)

)

)

\)( )

I)

)

)

W

"

Page 122: Harry farrer   algoritmos estruturados

 1.12.23.

{Leitura das datas}leia DlAl, MÊSl, ANOI, DlA2, MES2, AN02se DIAl < O1 então interrompafim se--(Cálculo do número de dias contidos em cada uma das datas)DIA..- DIAlMÊS..- MÊSlANO ..-ANOlDATA..- 1

o•••e"••o()ooo•••••<Io~()

o<)

ocaQ;C'\

225

{Defmição do tipo das variáveis}{Dia da primeira data}{Mês da primeira data}{Ano da primeira data}{Dia da segunda data}{Mês da segunda data}{Ano da segunda data}{Dia de uma data}(Mês de uma data}{Ano de uma data}{Número de dias contidos em uma data}{N° de dias decorridos entre duas datas}{Resíduo dos anos bissextos}(Contador}{Contador}{Variável de controle}

re ita

declare DIA I,MÊSl,ANOl,DIA2,MÊS2,AN02,DIA,MÊS,ANO,D,DIAS,RESfDUO,M,DATA,Inumérico

jse SALARIO > MAIOR

1~ MAIOR ..- SALARI.OMAIORNUM ..- NUMERO

~fim repitaMeDIAHA ..- HPEÇASA/HOMENSAMeDIAHB ..- HPEÇASB/HOMENSBMeDIAHC ..- HPEÇASC/HOMENSCMeDIAMA ..- MPEÇASA/MULHERESAMeDIAMB..- MPEÇASB/MULHERESBMeDIAMC..- MPEÇASC/MULHERESCescreva TFOLHAescreva TPEÇASescreva MeDIAHA, MeDIAHB, MeDIAHCescreva MeDIAMA, MtDIAMB, MeDIAMCescreva MAIORNUM

fim algoritmo.

AI oritmo

.....- , .~

.,' 10 t

HPEÇASB..- OHPEÇASC..-OMULHERESA ..- OMULHERESB ..- OMULHERESC ..- OMPEÇASA..-OMPEÇASB ..-0MPEÇASC..-OMAIOR ..-0SALMfNIMO..- 120re ita

fim seescreva NÚMERO, SALARIOTFOLHA ..- TFOLHA + SALARIOTPEÇAS ..- TPEÇAS + PEÇAS

{Leitura dos dados de cada operário}leia NÚMERO, PEÇAS, SEXOse NÚMERO = OTentão interrompafim sese PEÇAS ~ 30

então SALARIO..- SALMfNIMOse SEXO = -MASCULINO·

1então HOMENSA ..- HOMENSA + 1HPEÇASA ..- HPEÇASA + PEÇAS

senão MULHERESA ..- MULHERESA + 1MPEÇASA ..- MPEÇASA + PEÇAS

fim sesenão se PEÇAS ~ 35

então SALARIO ..- SALMfNIMO + 0,03 x SALMfNIMOx (PEÇAS - 30)

se SEXO = -MASCULINO·

1então HOMENSB ..- HOMENSB + 1HPEÇASB ..- HPEÇASB + PEÇAS

senão MULHERESB ..- MULHERESB + 1MPEÇASB ..- MPEÇASB + PEÇAS

fim sesenão SALARIO..- SALMfNIMO + 0,05 x SALMfNIMO

x (PEÇAS - 30}se SEXO = -MASCULINO·

1então HOMENSC ..- HOMENSC + 1HPEÇASC ..- HPEÇASC + PEÇAS

senão MULHERESC ..- MULHERESC + 1MPEÇASC ..- MPEÇASC + PEÇAS

fim se

%24

Page 123: Harry farrer   algoritmos estruturados

)

)

))

f

)

),C)r)

( ))

)

li

")

•»»)

226

re Itase DATA> 21então interromoo

-fim-se------ --- ------- ---- - -------

{Cálculo do n° de anos bissextos ocorridos entre os anos 1 e}{o anterior à data pesquisada}

RESÍDUO +- OI+-4re ita

se I> ANO-11 então interrompafim sese (RESTO(I,400) = O) ou (RESTO(I, 100) :f. O)J então RESÍDUO +- RESíDUO + 1fim se1+-1+4

fim repita{Transformação dos anos anteriores ao da data em dias}

D +- (ANO - 1) * 365 + RESIDUO + DIA{Transformação dos meses anteriores ao da data em dias}

se MÊS :f. 1então D +- D + 31 {Dias de janeiro}

M +- 2repita

se M > MÊS-l1 então interrompafim sese M = 2 {Dias de fevereiro}

então se ((RESTO(ANO,4) = O) S; (RESTO(ANO, 100) 'I;. O))

l ou (RESTO(ANO,400))então D -t- D + 29senão D +- D + 28

fim sesenão se (M = 4) ou (M = 6) ou (M = 9) ou (M = III

l então D +- D + 30senão D +- D + 31

fim sefim seM+- M + 1

fim repitafim sese DATA = 1

1então DIAS 1 +- DDIA +- DIA2MÊS +- MÊS2ANO +-AN02

II senão DIAS2+- D

fim seDATA +- DATA + I

fim I epitaDIAS +- DIAS2 - DIAS 1escreva DIA1, MÊS1, ANOI, DIA2, MÊS2, AN02, DIAS

fim repitafim algoritmo. 1.12.26.Ahwritrno

{Definição do tipo das variáveis}declare DENOMINADOR, {Valor do denominador}

SOMA {Valor do somatório}numêrico

{Atribuição dos valores iniciais necessá:ioslSOMA +- ODENOMINADOR +- 1re ita

SOMA +- SOMA + ((38 - DENO~lINADO?i x (39 - DEi\OMINADOR)) /DENOMINADOR

DENOMINADOR +- DENOMINADOR + 1

se DENOMINADOR> 371 então interrompafim se

fim repita{Escrita da soma}

escreva SOMAfim algoritmo. 1.12.29.AI oritmo

{Definição do tipo cas variá::eisldeclare NUMERADOR, {Valor do nurr:erador:

DENOMI~ADOR, {Valor do denominador;QUANT,{Quantidade de terrncs;SINAL, (Sinal da parcela}SOMA {Valor do somatório:numêrico

{Atribuição dos valores iniciais necessár.0s1NUMERADOR +- 480DENOMINADOR +- 10SOMA +- OSINAL +- 1QUANT +- 1re ita

SOMA +- SOMA + (NU~1ERADOR / DE\OMINADOR) , SINALNUMERADOR +- NUMERADOR - 5DENOMINADOR +- DE:"l"OMINADOR + 1

227

Page 124: Harry farrer   algoritmos estruturados

SINAL ~ SINAL x (·1)QUANT ~ QUANT.; 1se QUANT > 301 então interrompafim se

fim repita{Escrita da soma}

escreva SOMAfi~ algoritmo..... 1.12.31.Alg:oritmo

{Definição do tipo das variáveis}declare DENOMINADOR, {Valor do denominador}

PARCELA, {Parcela do somatório}PI, {Valor do somatório para calculo da PI}SINAL {Sinal da parcela}numérico

{Atribuição dos valores iniciais necessários}DENOMINADOR ~ 1PI ~OSINAL ~ 1PARCELA ~ 4!:e ita

se PARCELA < 0,00011 então interrompafim sePI ~ PI + PARCELA )( SINALDENOMINADOR ~ DENOMINADOR + 2SINAL ~ SINAL)( (-1)PARCELA ~ 4 / DENOMINADOR

fim repita{Escrita do somatório de PI}

escreva PIfirTl algoritmo.... 1.12.36.Ai oritmo

{Definição do tipo das variáveis}declare NUMERADOR, {Valor do numerador}

PARCELA, {Parcela do somatório}PARCELAANTERIOR, {Parcela anterior do somatório}DENOMINADOR, {Valor do denominador}SOMA, {Valor do somatório}QUANT {Quantidade de termos}numérico

{Atribuição dos valores iniciais necessários}NUMERADOR ~ 61DENOMINADOR ~ 1

2Z8

SOMA~63

PARCELA ~61

PARCELAANTERIOR ~ 63QUANT~ 1re ita

se IPARCELA - PARCELAANTERIOR I < 0,00000011 então interrompafim se •SOMA ~ SOMA + PARCELAQUANT ~ QUANT + 1NUMERADOR ~ NUMERADOR - 2DENOMINADOR ~ DENOMINADOR x QUANTPARCELAANTERIOR ~ PARCELAPARCELA ~ NUMERADOR / DENOMINADOR

fim repita{Escrita da soma}

escreva SOMAfim algoritmo.... 11231.Alaoritmo

{Definição do tipo das variãveis}declare NUMERADOR, {Valor do numerador}

DENOMINADOR, {Valor do denominador:SOMA, {Valor do somatório}SINAL, {Sinal da parcela}QUANT {Quantidade de parcelas}numérico

{Atribuição dos valores iniciais necessários}NUMERADOR ~ 1 .DENOMINADOR ~ 1SOMA~ 1SINAL ~ 1QUANT~ 1r.e ita

NUMERADOR ~ NUMERADOR x QUANTDENOMINADOR ~ DENOMINADOR x 2 - 1SINAL ~ SINAL x (-1)SOMA ~ SOMA + NUMERADOR / DENOMINADOR x SIK-\LQUANT ~ QUANT + 1se QUANT > 501 então interrompafim se

fim repita{Escrita do somatório}

escreva SOMAfim algoritmo.

229

Page 125: Harry farrer   algoritmos estruturados

• 1.12.45.

escreva SOMAfim algoritmo.

leia X

131

{Leitura dos dados}

{De::nição do tipo das variáveis}::\úmero lido}:\'alar da raiz quadrada):Contadc:- de aproximações}

numérico

declare Y,R.A.IZ,I

LADOS ~ ore ita

leia (Y)R.A.IZ ~ Y /21.-2re ita

RAIZ ~ ( RAIZ2 - Y ) / /.:: '< RAIZ,I ~ I + 1se I> 201 entáo interrompafim se

fim repita

• 1.12.54.

(Cálculo do semi-perímetro:SEMIPERÍMETRO ~ LA::>OS x SEN(3,1416/ LADOS)escreva LADOS, SEMIPERÍMETROLADOS +- LADOS + 5se LADOS > 1001 entáo interrompafim se

fim repitafim algoritmo.

AI oritmo

'.'lsenao se r = v1então F ~,- :\" + 16

fim sefim-$@---- _._-- ---- --------

f.'Y~F+G

escreva X, YX~X+ 1

! se X > 10i 1 então interrompa,

fim se,,fim repita

fim algoritmo,

 1.12.50.Allzoritmo

{DeEnição do tipo das variáveis:declare LADOS, {Número de lados do polígono}

SE~IPERÍMETRO

numérico-

-{Valor do numerador}{Valor do denominador}{Valor do somatório}{Sinal da parcela}{Quantidade de parcelas}

{Definição do tipo das variáveis}{Valor do incremento}{Valor das funções}

declare X, __ __ _ _ ___NUMERADOR,DENOMINADOR,SOMA,SINAL,QUANTnumérico

X~1

re itaH ~ X2 - 16se H ~ O

1então F~ Hsenão F ~ 1

fim sese F > Ol~G~O

declare X,Y, H, F,Gnumérico

(Escrita do somatório)

{Leitura dos dados}

{Definição do tipo das variáveis;

{Atribuição dos valores iniciais necessários}NUMERADOR ~ 1DENOMINADOR ~ 1SOMA~X

SINAL ~ 1QUANT~2

[e itaSINAL ~ SINAL x (-1)NUMERADOR ~ NUMERADOR x X x XDENOMINADOR ~ DENOMINADOR x (2 x QUANT -2) x (2 x QUANT - 1)SOMA ~ SOMA + NUMERADOR/ DENOMINADOR x SINALQUANT ~ QUANT + 1se QUANT > 201 então interrompafim se

fim repita

Alporitmo

230

Aloritmo

---

j

)

)

)

..>

I

)

I

}

, )

)

)

)

)

))

: i

Page 126: Harry farrer   algoritmos estruturados

232

{Leitura dos dados} o

)

')

))

233

{Definição do tipo das variáveis}{Limites de integração}

{Operação a ser realizada}

{Definição do tipo das variáveis}{Módulos dos números complexos}{Argumentos dos números complexos}{Parte real}{Parte imaginária}

declare A, B,

SOMAPROVISÓRIA2 +- SOMAPROVISÓRIA2 + NOTAPROVISÓRIA2SOMAFINAL2 +- SOMAFlNAL2 + NOTAFINAL21+-1+ 1se I> N1 então interrompafim se

fim repitaMÉDIAPROVISÓRIA +- SOMAPROVISÓRIA / NMÉDIAFINAL +- SOMAFIN~A~L:......J-I..:.N=---- -:-- _DESVIOPROVISÓRIO +- ~ 1UN-1I x (SOMAPROVISÓRIA2 - l/N x

SOMAPROVISÓRIA2)

declare RI, R2,TI, T2,PR,PInumérico

declare OPERAÇAoliteral

{Leitura e processamento dos dados}leia OPERAÇÃO, RI, R2, TI, T2re ita

se OPERAÇÃO = -VAZIO"1 então interrompafim se!e OPERAÇAO = -MULTIPLICA"

então {multiplicação dos números}PR +- RI x R2PI +- TI + T2

senão {divisão dos números}PR +- RI / R2PI +- TI - T2

fim seescreva RI, R2, TI, T2, PR, -EXP(", PI, -I)"leia OPERAÇAO, RI, R2, TI, T2

fim repitafim algoritmo.

AllZoritmo

... 1.12.59.

DESVIOFINAL +- ~ 1/(N-1) x (SOMAFINAL2 - l/N x SOMAFINAL2)escreva MÉDIAPROVISÓRIA, MÉDIAFINAL, DESVIOPROVISÓRIO,

DESVIOFINALfim algoritmo.... 1.12.58.AlIzoritmo

(Escrita da raiz )

{Defmição do tipo das variáveis}{Número do aluno}{Dia de entrega do trabalho pelo aluno}{Mês de entrega do trabalho pelo aluno}{Nota provisória}{Nota final}{Soma das notas provisórias}{Soma do quadrado das notas provisórias}{Soma das notas finais}{Soma do quadrado das notas finais}{Média das notas provisórias}{Média das notas fin.$lis}{Desvio padrão das notas provisórias}{Desvio padrão das notas finais}{Número de alunos}{Contador de leitura}

declare NÚMERO,DIA,M~S,

NOTAPROVISÓRIA,NOTAFINAL,SOMAPROVISÓRIA,SOMAPROVISÓRIA2,SOMAFINAL,SOMAFINAL2,MÉDIAPROVISÓRIA,MÉDIAFINAL,DESVIOPROVISÓRIO,DESVIOFINAL,N,I

{Escrita da nota dos alunos}escreva NÚMERO, NOTAFINAL

(Acúmulo das notas)SOMAPROVISÓRIA +- SOMAPROVISÓRIA + NOTAPROVISÓRIASOMAFINAL +- SOMAFINAL + NOTAFINAL

I +--- 1re~ita

.§e MÊS < 4 ou (DIA 5; 20 e MÊS = 4)então NOTAFINAL +- NOTAPROVISÓRIA + 10senão se M~S < 5.Q.!:! (DIA 5; 2 ~ M~S = 5)

Ientão NOTAFINAL +- NOTAPROVISÓRIAsenão se DIA :s; 30 e MÊS = 5--lentão NOTÃFINAL +- NOTAPROVISÓRIA / 2

senão NOTAFINAL +- Ofim se

fim se

numérico{Atribuição dos valores iniciais necessários}

N _10SOMAPROVISÓRIA +- OSOMAPROVISÓRIA2 +- OSOMAFINAL +- OSOMAFINAL2 +- O

1~S(;l"eva Y, RAIZJun algoritmo..... 1.12.57AlIl~ritmo

Page 127: Harry farrer   algoritmos estruturados

234235

{Teste dos números de 1 a lOO}

{Definição do tipo das variá\"ê'isl{Valor a ser testado}(Divisores do número){Soma dos divisores}

NÚMERO ~ 1

declare NÚMERO,DIVISOR,SOMA,numérico

{Cálculo do MDC entre A e S, e C;

Tie ita

se NÚMERO:> 1001 entáo interrompafim se

[to ,ila

se A <: B {Ordena: A :> I3f

l-=tão-AtfX-FAA~B

a~AUX

fim seRESTO +- I

{Cálculo do MDC pelo método das divisões sucessivas}re ita

se RESTO = O1 então interrompafim seRESTO ~ RESTO(A,S)se RESrO = O

1entào MDC ~ Bsenão A ~ a

B (--"RESTOfim se

fim repitase JACALCULOU { Inclusão do C:

1então A ~ MDCa~c

JACALCULOU +- falsosenão JACALCULOU ~ verdadeiro

fim sese JACALCULOU1 então interrompafim se

fim repitaescreva MDCLINHA +- LINHA + I

fim repitafim algoritmo.

AI oritmo

... 1.12.64.

; i

I

I- .

{Escrita da integral}

{Leitura dos dados}

{Número de intelvaJos}{Largura dos intervalos}tAbscissas e ordenadas da função;

-- -CC-óntaaõi~--cremtervarosr ----- - --{Valor da Integral}

{Definição do tipo das variáveis}{Variável de controle das linhas a serem lidas}{Variáveis usadas no cálculo do M.D.C}{Máximo Divisor Comum}(Resto da divisào){Variável au"iliar}

leia A, 8, NH+- (8 - A)/NINT +- OXl +-- AI+- 1r.e ita

X2 ~XI + HY1 ~ 1 / (1 + X12)Y2 ~ I / (1 + X22)

INT ~ INT + Y1 + Y2Xl ~X21+--1+1se I = N1 entào interrompafim se

fim repitaINT +-- INT x 4 x H / 2

N,H,Xl, X2, Yi, Y2,

_.r,-INTnumérico

declare LINHA,A,8,e,MDe,RESTO,AUXnumérico

declare JACALCULOU {Variável de controle do cálculo do MDC entre A e B, e C}lógico

LINHA ~ 1

{processamento de 25 linhas contendo valores de A, 8 e C}r.e ita

se LINHA:5 251 entào interrompafim seleia A, B, Cescreva A, a, CJAeALCULOU := verdadeiro

escreva INTfim algoritmo.... 1.12.60.Algoritmo

)

)

}

)

)

I

)

Ij'

)

)

Page 128: Harry farrer   algoritmos estruturados

..... 1.12.67.

(Atribuição de valores iniciais para teste do próximo número)LIMITE (-. ARREDONDA( ~ NÚMERO)DIVISOR ~- 2SOMA t- 1

<:)

•e•~.~~

()

••()C~

"'...\"....;;}

(;)

oo••••oo,(;)

o()C)

(I()237

{Definição do tipo das variáveis}(Valor a ser convertido}{Resto da divisão}

declare NÚMERO,RESTOnumérico

declare BINÁRIO {Representação em binário}literal

{Escrita do número primo}se EPRIMO1 então escreva NÚMEROfim seNÚMERO .- NÚMERO + 1

fun repitafIID algoritmo. 1.12.68.

re ita... ., leia NUMERO~NÚMERO

se NÚMERO = O1 entào interrompafim seBINÁRIO +--" "

{Geração da representação binária do valor lido pelo método}{ das divisões sucessivas por 2}

re itaRESTO.- RESTO(NÚMERO,2){Concatenaçào do caractere O, ou 1, à esquerda, dependendo do resto.}

{ Por ex.: "O" I"II" ="0 II" e "I" I "II" = "lU"}se RESTO = O

1então BINÁRIO +-- "O" IBINÁRIOsenão BINARIü +-- "I" I BINARIO

fim seNÚMERO +- QUOCIENTE(NÚMERO,2)se NÚMERO =O1 então interrompa.finl.g

fim repitaescreva BINARIO

fim repitafim algoritmo.

AlllOritmo

{Definição do tipo das variáveis}{Valor a ser testado}{Limite do teste do divisor}{Divisores do número}

(Pesquisa e soma dos divisores do número}

declare NÚMERO,LIMITE,

DIVISORnumérico

declare EPRIMO {Variável lógica auxiliar}lógico

N ÚMERO ~ 5000re ita

se NÚMERO ~ 70001 então interrompafim seLIMITE ~ ARREDONDA( ~ NÚMERO)DIVISOR t- LIMITEEPRlMO +- verdadeirore ita

se RESTO(NÚMERO,DIVISOR) =O1 EPRIMO +- falsofim seDIVISOR~ DIVISOR - 1se DIVISOR = O ou não EPRIMO1 então interro;oa-fim se

fim repita

re itase DIVISOR ~ LIMITE1 então interrompafim sese RESTO(NÚMERO,DIVISOR) = O

1(Acúmulo do DIVISOR e do quociente, que também é divisor}SOMA t- SOMA + DIVISOR + NÚMERO I DIVISOR

fim seDIVISOR +- DIVISOR + 1

fim repita

se SOMA = NÚMERO {Verificação se número é perfeito}1 então escreva NÚMEROfim se

NÚMERO +- NÚMERO + 1 {próximo número}fim repita

fim algoritmo.

AI C)ritmo

.:r;. $i; m .U 4 . #1.4 ..., l.! lU .I P Pt•• $ .. 1= ..,_

Page 129: Harry farrer   algoritmos estruturados

numérico

239

{}'Ielhor média}lindice de identificação da melhor média)I\'ariãveis auxiliares}

{Definição do tipo das variá\-eis}{Estrutura contendo informaçãesldeclare X[ 1:2000,41

numéricodeclare MELHORMÉDIA

MELHORN,I,Jnumérico

Cl2 x I - 1] ~ AlI]Cl2 x I} .- BII}I +- 1+ 1

fim repita

{Definição do tipo das variáveis:

declare A[1:200] numéricodeclare AUX. I numéricoleiaA[lj, A[2] .... , A[200]escreva A[I!, A[2], ...• A[2001 {Escrita do conjunto lido:1.- I.r.e ita {Inversão do conjunto}

se I = 1011então interrompafim seAUX.- A[I]A[I} +- A[20 1 - l}A[201 - 1]..- AUX1+-1+ 1

fim repita{Escrita do conjunto invertido]

escrevaA[I]. A[2J, ... , A[200]fim algoritmo.

Capitulo 2 . Exemcio$ de fixação· Variáveis Compostas Multidirrumrionais

 2.2.2.2.1.

 2.2.1.2.5.

{Intercalação dos conjuntos}

Aloritmo

{Escrita do conjunto intercalado}

escreva Cll], C(2!, .... CISO)fim algoritmo.

Alaoritmo

\CSCnla aos CUIlJUlllU:; llUU"J

escreva AlI), A[2]. A125]

JLfJ----l~;;,:.~=e~T~e'=';~ Bf I}, B{2} , Bf25}

re itase I = 2S1então interrompafim se

{Leitura dos conjuntos}

{Variável usada como índice}

{Definição do tipo das variáveis}{Conjuntos lidos}{Conjunto intercalado]

-

--1IJeClaração âe aas varlavels utlhzaâasl-declare NOTAS(0:10] numéricodeclare SOMA. {Soma das notas}

MÉDIA. {Média das notas}QUANTIDADE. {Quantidade de notas acima da média}I (Variável auxiliar}

declare A. Bll:25],C(1:50]numérico

declare 1numérico

1.- OQUANTIDADE ..- O.r.e ita

se 1= 101 então interrompafim se

Capitulo :4 • /!;XerClClos ae J1Xaçao . vanaveu (;ompostas untatmensionais... 2.21.21

leiaA[l], A[2], ... , A[25]leia B[I]. B[2], ...• B125]

Ailloritmof-I-~

1.- OSOMA ~Ore ita {Leitura e soma das notas}

se 1= 101 então interrompafim seleia NOTA[I] {Leitura e acumulação das notas}SOMA ~ SOMA + NOTA[l-j1..-1+1

fim repitaMÉDIA ..- SOMAI lO {Cálculo da média}

{Contagem dos alunos com nota superior à média}

{Contagem dos alunos com nota inferior à média}se NOTAII] :> MÉDIA1 então QUANTIDADE .- QUANTIDADE + 1fim se1..-1+1

fim repitaescreva MÉDIA, QUANTIDADE {Escrita dos resultados}

fim algoritmo. 2.2.1.2.3.AI oritmo

)

)

)

}

)

)

)

,J

)

" )

U

()

( )

( )

Page 130: Harry farrer   algoritmos estruturados

(Leitura do número de alunos e das demais informações sobre cada aluno}U Nleia XII,. II, X[1,2j, ... , X[N,3), X[N,4)

{Identifi~ação da melhor média}MELHORMÉDIA+- OI+- 1ce ita

se I:> N1então interrompafim sese XCI ,3] = 153 ~ X[I,4j > MELHORMÉDIA

1en tio MELHOR +- IMELHORMÉDIA +-- X[I,4]

fim seI +- I ..... I

fim repita(Escrita dos resultados}

escreva"X[MELHOR,l], X[MELHOR,2], X[MELHOR,3), X[MELHOR,4)fim algoritrn.o. 2.2.2.2_3.AI oritmo

(Definição do tipo das variáveis}declare ESTOQUE[I:3,1:3J

C USTOPRODUTO[1:31T ABELACUSTO[1 :3]n.umérico

declare CUSTO,CUSTOESTOQUE,TOTALITENS,ARMAZÉM,PRODUTO,MAIORARMAZÉMnumérico

leia ESTOQUE[I,I], ESTOQUE[I,2), ... , ESTOQUE[3,2], ESTOQUE[3,3)leia TABELACUSTO[1), TABELACUSTO[2), TABELACUSTO[3]

{Determinação e escrita da quantidade de itens por armazém}ARMAZ~N +-- Ire ita

se ARNAZÉM > 31 então interrompafim sePRODUTO +-- ITOTALITENS +-- OlQ

::PRODUTO> 3"1 entào interrompafiII1 se

240

ITOTALITENS +-- TOTALlTENS + ESTOQUE[ARMAZÉM,PRODUTOJPRODUT{) +-- PRODUTO + 1

fim repitaescreva "Armazém·, ARMAZÉM, "TOTAL ESTOCADO·, TOTALITENSARMAZÉM +-- ARMAZÉM + 1

fun repita{Pesquisa do armazém com o maior estoque do produto 2}

ARMAZÉM +-- 1MAIORARMAZ:ÉM +- 1PRODUTO +-- 2re ita

se ARMAZÉM> 31então interrompafim repitase ESTOQUE[ARMAZÉM,PRODUTO] >

1ESTOQUE[MAIORAR~AZÉM,PRODUTO)então MAIORARMAZEM +-- ARMAZÉM

fim seARMAZÉM +-- ARMAZÉM + 1

fim repitaescreva·O maior estoque do produto 2 está no armazém: • , MAIORARMAZÉM

{Cálculo dos custos}PRODUTO +-- 1re ita

se PRODUTO> 31então interrompafim seCUSTOPRODUTO[PRODUTO) +-- O

fim repitaARMAZÉM +- 1re ita

se ARMAZÉM> 31então interrompafim seCUSTOESTOQUE +-- OPRODUTO +-- 1re ita

se PRODUTO> 31então interrompafim seCUSTO +-- ESTOQUE[ARMAZÉM,PRODCTO) x TABELACUSTO[PRODUTOIescreva·O custo do produto" , PRODUTO,· do armazém·,

ARMAZÉM, CUSTOCUSTOPRODUTO[PRODUTOJ +- CUSTOPRODCTO[PRODUTOI + CUSTOCUSTOESTOQUE +-- CUSTOESTOQUE + CUSTOPRODUTO +-- PRODUTO + 1

fim repita

1-1.

)

),~~

•••,•()

••

WA " ...~"~,--,,,. ~-:~. ,_.~_.".,.~~...._~_.:.• ,_,".. ,_"..:;.,:.:,,;.• _..:...,.til:>.,-.::....

c- Ç..,",.

Page 131: Harry farrer   algoritmos estruturados

2~3

{Definição do tipo das variáveis}declare FRA.SE literal

UMPAR literalBRA.NCOS numéricoCONTAA numéricoI, J, K nur::érico

{Fechamento dos arquivos;feche ARQCRÉDITO, ARQDÉBITO, ARQATCALIZA

fim al17oritmo.

Capítulo 2 . Exercícios propostos.... 2.5.1.2.Aloritmo

declare ARQCREDJTO, ARQDEBITO, ARQATUALIZAarquivo sé,~lIencialde DÉBITO, CRÉDITO

declare CONTAFIl\AL numérico-~~- 1--. -~. -,t-~I-~- ---- - ~ - -- ~ -- ~ ~ ~ {AtI ibuição dos valores iniciais lIecessáI ios l

CONTAFINAL ~ 9999CRÉDITO.CONTA +- CONTAFINALDÉBITO.CONTA ~ CONTAFlNAL

{Abertura dos arquivos)abra ARQCRÉDITO leituraabra ARQDÉBITO leituraabra ARQATUALIZA escrita

{Leitura dos primeiros registros}leia ARQCRÉDITO.CRÉDITOleia ARQDÉBITO.DÉBITO

{Intercalação dos registras de débito e crédito}r.e ita

se CRÉDITO.CONTA = CONTAFINAL e DÉBITO.CONTA = CONTAFl.'lAL1 então interrompa -fim sese CRÉDlTO.CO.'lTA S DÉBITO.CONTA

1então escreva ARQATCALIZACRÉDITO

se ARQCRÉDITO.FDA

1entào C~ÉDITO.C<?NTA+- C~)NTAFli\:\Lsenào leia ARQCREDlTO.CREDlTO

fim sefim sese DÉBlTO.CO:\TA < CRÉDITO.CONTA

1então escreva ARQATCALIZA.DÉBITO

se ARQDÉBITO.FDA

1então DÉBITO.C,?NTA f- CONTAFINALsenào leia ARQDEBITO.DÉBITO

fim sefim se

fim repita

{Fechamento do arquivo}

----- (Escrita do custo total-pot" produto}

Iescreva ·Custo do estoque do armazém' , ARMAZEM , CUSTOESTOQUEARMAZÉM ~ ARMAZÉM + 1

fim I'epita

{Definição do tipo das variáveis}declare CRÉDITO,

DÉBITO registro (CONTA numéricoOPERAÇAO literalVALOR numéricoDATA literal)

{Declaração das estruturas de dados}declare AGENDA {Arquivo onde estão armazenados os dados}

arquivo sequencial de ENDEREÇOdeclare ENDEREÇO registro (NOME literal,

TELEFONE numérico,LOGRADOURO literal,NÚMERO numéricoCIDADE, ESTADO literal)

{Abertura do arquivo para leitura}abra AGENDA leitura

{Leitura do arquivo e Escrita dos dados}re ita

leia AGENDA.ENDEREÇOse AGENDA.FDA1 então interrompafim seescreva AGENDA.ENDEREÇO

fim repita

241

PRODUTO~ 1re ita

se PRODUTO> 31 então interrompafim seescreva ·Custo total do produto· , PRODUTO, CUSTOPRODUTO[PRODUTOIPRODUTO ~ PRODUTO + 1

fim repitafim algoritmo.

Exercícios de fixação. Arquivo. Organização SeqUencial.& 2.4.6.3.1.Ahzoritmo

feche AGENDAfim algontmo.

Aloritmo

.& 2.4.6.3.4.

I- ---- --

)

)

}

J)

)

")

))

{

r 1

(

Page 132: Harry farrer   algoritmos estruturados

.. 2.5.1.5.

')

-,1

••O

o

"••••OOO()

OeQo

.•"'l\.....";J

•e•~.,,;'VJ#

245

{Leitura do vetar}

{Cálculo da soma}

{Escrita de cada FREQABS e cada FREQREL}

{Leitura de cada NOTA e sua contagem em FREQABS}

{Indice do vetar tl/

numérico

N+-Ore ita

se N > NTOTl então interrompafim seleia NOTAFREQABS[NOTA) +- FREQABS[NOTA) + 1N-+--N+ 1

fim repita

NOTA+-Ore ita

se NOTA> 101 então interrompafim seFREQREL +- FREQABS[NOTA) / NOTAescreva NOTA, FREQABS[NOTAI. FREQREL

NTOT +-- 80NOTA +- Ore ita

se NOTA> 101 então interrompafim seFREQABS[NOTAj +- ONOTA +-- NOTA + 1

fim repita

{Definição do tipo das variáveis}

declare N, NTOT, NOTA, FREQREL numérico~ FREQABS[O:101 numérico

{Atribuição dos valores iniciais necessários}

A oritmo

I -+-- 1re ita

seI>501 então interrompafim seS -+-- S + (B[l) + B[101 - 11l 3

1+-1+ 1fim repita

fim algoritmo.

I+-- 1re~ita

se I > 80I então interrompafim se..§e FRASE[Ij = « •

então BRANCOS +-- BRANCOS + 1senão se FRASE[IJ = 'A'

1 entáo CONTAA +-- CONTAA + 1fim sese 1< 80!: FRASE[IJ = FRASE[I+l)1 então UMPAR +-- FRASE[I] + FRASE[I+ 11fim seJ+--l

{Pesquisa dos brancos, K s e repetições}

{Escrita dos resultados}

K+-OCONTAA+-- Oleia. FRASE

re itase J > K ou UMPAR = PARES.PARLETRASP]1 então interrompafim seJ+--J+l

fim repitaseJ > K

fentao K -+-- K + 1

PARES.PARLETRAS[KI -+-- UMPARPARES.CONTAPAR[K] +- 1

senão PARES.CONTAPAR[K) +- PARES.CONTAPAR[K) + 1fim se

declare PARES [1 :20) registro (PARLETRAS literal,CONTAPAR numét"ico)

(Atribuição de valores iniciais}

fim seI +- I + 1

fim repita

Aolorinno{Definição do tipo das variáveis}

declare Bll:100] numéricodeclare S, {Soma}

escreva FRASEescreva CONTAAesc reva BRANCOSescreva PARES[!!. .... PARES[K]

ftII1 algoritmo..... 2.:5.1.4.

f"".,1;",." *

Page 133: Harry farrer   algoritmos estruturados

 2.5.1.8.

se DISJUNTOS1 então escreva NOMEfim se

fim repitafim algoritmo.

U7

{Escrita do nome dos pares disjuntos}

re itase M > MTOT Qll DISJUNTOS = falso1 então interrompa

- -fim-se--se X(N) = Y(M]1 então DISJUNTOS +- falsofim seM..-M+l

fim repitaN..-N+l

fim repita

{Definição do tipo das variáveis}

declare I ITOT N, NTOT, AUX numérico~ ÉMPRÊGADO, MESES (1:3011 numérico- {Leitura das informações dos empregados}escreva "Digite o n° de cada EMPREGADO e o n° de MESES'

N+-lre ita

leia EMPREGADO(NI, MESES(NJ-;-EMPREGADO(N) = O!< MESES(N) = O

1 então interrompafim seN+-N+ 1

fim repitaNTOT+-N-lITOT +- 3 {Colocação dos empregados mais recentes na frente:

se ITOT > NTOT1 então ITOT..- NTOTfim se1..- 1re ita

se I> ITOT1 então interrompafim seN..- I

r~N>NTOT1 então interrompafim se

AI oritmo

jI NOTA <- NOTA + 1

fim repitafim algoritmo.

AI oritmo{Definição do tipo das variáveis}

declare X, Y [1:250) numéricodeclare N, ~TOT, M, MTOT numéricodeclare NOME literaldeclare DISJUNTOS lógicore ita {para cada par de conjuntos}

{Leitura do nome de cada par de conjuntos}escreva "Digite o NOME de um par de conjuntos·leia NOMEse NOME = "VAZIO·1 então interrompafim se

{Leitura do número de elementos de cada conjunto}escreva "Digite o número de elementos de cada conjunto·leia NTOT, MTOT

{Leitura dos elementos de cada conjunto}escreva "Digite os ., NTOT, "elementos do 1° conjunto'N..-lre ita

se N > NTOT1 então interrompafim seleia X[N)N..-N+l

fim repitaescreva "Digite os " MTOT, " elementos do 2° conjunto·M..- 1re ita

se M > MTOT1 então interrompafim seleia Y[M]M..-M+l

fim repita{Verificação se X e Y são disjuntos}

DISJUNTOS ..- verdadeiroN..-l

1";:;N > N1'OT ou DISJUNTOS - falso1 então interrompafim seM..-l

.to 2.&.1.6.

· j )

)

)

Page 134: Harry farrer   algoritmos estruturados

... 2.5.1.10.

o•O•••

:>

(#

••••(Z)()

Gt(.)

~

G()

O2~9

.-{Transferência dos elementos restantes de A}

(fransferência do menor dentre A e B para q

{Intercalaçao aos conJUl1lU:S l"l. ,,"u." .... vu,~..~v ~ ~v .... _ •••__,

IA +- 1IB +- 1IC +- O

{Transferência de valores enquanto houver elementos em A e em B}re ita

se IA > NA ou IB > NB1 então int;.rompafim se

IC +-IC + 1se A[IA) < BIIB]

1então C(IC) +- AlIA)

IA+-IA+lsenão C(IC) +- B[I8)

IB +- IB + 1fim se

fim repitaI +- IAre ita

se I > NA1 então interrompafim seIC +- IC + 1C(Ie] +- AlI)1+-1+ 1

fim repitaI +- 18 (fransferência dos elementos restantes de BJre ita

se I > NB1 então interrompafim seIC +- IC + 1Clle] +- BII)1+-1+ 1

fim repita{Escrita dos elementos intercalados}

~·VALORESINTERCALADOS·

I+- 1re ita

se I> IC1 então interrompafim seescreva C(l)1+-1+ 1

fim repitafim algoritmo.

se MESESlN) < MESES II)então AUX +- MESES/I]

MESES II) +- MESESlN)MESESINj +- AUX(froca de EMPREGADOII] com EMPREGADOIN)}

AUX +- EMPREGADOEMPREGADO[I) +- EMPREGADOIN]EMPREGADOINI +- AUX

{Definição do tipo das variáveis}declare I, IA, IB, IC, NA, NB numéricodeclare A, B [1: 100] numéricodeclare C [I :200) numérico

{Leitura do n° de elementos do conjunto A, seguido de seus elementos}leia NAIA +- 1re ita

se IA > NA1 então interrrompafim seleia AlIA]IA+-IA+1

fim repita

{Leitura do n° de elementos do conjunto B, seguido de seus elementos}leia NBIB +- 1re ita

se IB > NB1 entào interrrompafim seleia B[IB)IB +- IB + 1

fim repita

fim sefim repita

fim repita

{Escrita do n° dos empregados mais recentes}escreva "EMPREGADOS MAIS RECENTES.1+-1re ita

se I > ITOT1 entào interrompafim seescreva EMPREGADO[I]

fim repitafim algoritmo.

A oritmo

248

Page 135: Harry farrer   algoritmos estruturados

.. -' • ..., • .J. • .L.1.

2.31

NX t- 10IX t- 1

.À. 2.5.1.12.

re itase I> :.;1 então interrompafim seleiaA[IjI t- I .,. 1

fim repita

I':screva "L:niáo de: A com 3"Jt-l

Lê itase J > P1 então interrompafim seescreva CP]J<-J-l

lim repitafim algoritmo.

:r:.scrita c:.:: C:

PI<ESE>;n~ <-- fé11so

J <- 1

I~ .+++-s~e'"-J-;>?mr PRESES"f-E

1 entào"'in'terrompafim sese B[II = CPl1 então PRESENTE <- verdadeiro

fim seJ<-J+l

fim repitase PRESENTE = falso

1então P t- P + 1

ClP] <- Billfim se

fim repita

:D",finição ia tipe ias \'ar:",':eis:

declare p. X. I, \. IX. r-;x ::umeri:~

declare .4.[0:20] n~lmêric(--- (Lei:l:ra de~'; segui'::J de A[C. A[N]:escreva "Digite:'; seguido dos va:Jres X =: ... A[\-leia NI t- O

Alaritmo

~-

-

:Leitura de N e dos N valor<::s de B:escreva "Digite "i': seguido dos N valores de B"If:ia NI <- 1re ita

se I> N1 então intelTompafim seleia BlI]I ~ I + 1

fim repita

:Colocação em C dos elementos resultantes da união de A com B::Transferencia dos elementos de A para C:

re itase I> Iv!1 entào intelTompafim se

ClIJ +--- A[III ~ 1+ 1

fim repita

tTransferéncia para C dos elementos de B que nào estão em C:

1<- 1

Pt- M1<- 1re ita

se I> N1 então intenompatim se

2.511

)

~ )

()

)

I

l

I

, )

Of t,

I

I..'")

)

)

)

)

)

,)

~)

;))

)

,)

)

)

,)

J),"

Page 136: Harry farrer   algoritmos estruturados

:\1b, c.... ritllJo

252

(Cálculo de P = f!A"x + A".l)x +A",~)x + ...}

oI)

O

•e•oo••()

(').,.',,;

Qoo•••••()

oo()

ooQo253

:Escr:::. da matnz soma C:

:Cálculo da matriz some. C = A + a;

r.e itase [ > \1

1 então interrompafim seJ~1

re itase J > N1 então interrompafim seleia B[I, JIJ ~ J + 1

fim reoita1<-1-1

fim repita1<-1I.é ita

se 1 > ~!1 então interrompafim seJ<-lLe ita

se J > N1 ;:cntào interrompafim seC[l. JI <- A[i, J] + Bp. JIJ<-J+l

fim re::lttaI <- I - I

rim repir?escreva "SOMA D,-\S ~IAT?IZES"

1 f-- 1Ie ita

se r > ~.!J então interrompafim seMude de bnhaJ~1

r..e iraseJ > N1 então interrompé',fim se~C[[,JI

J.-J+lfim repitar~ 1- 1

tim repitafim algoritmo.

III

:Escrjta de P;

!Leitura de um valor de XI

Le itase IX> NX1 entáo interrompélfim se

:Leitum da matriz B:e=<'reva "Digite as ]\r[ linhas de B, cada uma com N vaiores"I .-- 1

:Deflmçi\o (/-:, tipO da,; variáveis;cl':c!are A, B, QL20,l:30j numeri,:ocl·:clare M, N, I, J numerico

:Leitul'a de \[ e N e d3. matriz A;escreva "Digite as dimensões Me:-; das matrizes"leiaM, N

escreva "Digite as M linhas de A, caja uma com ~ valores"I - 1I-epita

s': I > ;VI

1 então interrompalim seJ<-lr.e ita

se J > ~

1 então interrompafim seleia A/I, J)J<-J+l

fim repita[<-1-1

fi rll repita

p~o

I f-- N.re ita

se I < O

1 IT!.BQ interrompafim sep ~ P I X + APl1<-1-1

fim repitaescl'eva "P =", PIX ~ [X + 1

11m I'epitafiru algoritmo. 2.5.2.5.

Page 137: Harry farrer   algoritmos estruturados

 2.5.2.7.

255

AI oritmo

 2.5.2.11.

B[I,N+1)t-1Jt-1re ita

t-f·-t·+ -seJ>W1 entào interrompafim seB[I, J] t- A[I, J)B[I, N + 1) t- B[I, N + 1) x B[I, J]Jt-J+ 1

Ifim repita1+--1+1

fim repita

{Definição do tipo das variá\'eis}declare POP[1:26, 1:10) numéricodeclare MUN, EST, NMUN, NEST, MUNMAIS, ESTMAIS numéricodeclare MAIS, SOMA, MÉDIA numérico--- {Leitura da Matriz POP, com a população}

NEST t- 26:-lMUN t- 10escreva "Digite a população de", NMUN, • Municípios de·, NEST, "Estados·

EST t- 1re ita

se EST > NEST1 então interrompafim seMUN t- 1

{Escrita da matriz modificada B}escreva "MATRIZ MODIFICADA"I t- 1r.e ita

se I > M1 então interrompafim seJ~l

re itase J > N + 11 entáo interrompafim seescreva B[I, JjJ t- J +1

fim repitaIt-I+ 1

fim repitafim algoritmo.

I~1

{Escrita da matriz A}

{Cálculo da matriz modificada Bl

r.e itase I> M1 então interrompafim seMude de linhaJ+--1re ita

se J > N1 então interrompafim seescreva A[I, J)J+--J+1

fim repita1+--1+1

fim repitaIt-l

1iitase I > M] entào interrompafim se

254

Abzoritmo) {Definição do tipo das variáveis}

- .~ .~ .. cleclare-A:[T:20;EIOfiiumeriCO--- -------

J declare B[1:20, 1: II) numéricodeclare M. N. I, J numérico

{Leitura de M e N e da matriz A}escreva "Digite as dimensões M e N da matriz A"leia M, Nescreva "Digite as M linhas de A, cada uma com N valores"I t- 1r.e ita

se I > M] então interrompafim seJt-1re ita

se J > N] então interrompafim seleiaA[I.J)Jt-J+1

fim repitaIt-I+ 1

fim repitaescreva "MATRIZ LIDA"I t- 1

.)

)

)

)

)

)

)

)

ii, ~i

.~

J

Page 138: Harry farrer   algoritmos estruturados

{M~nicípio mais populoso do país}

il

I

re itase MUN:> NMUN1 então interrompafim seleia POP/EST, MUN)MUN +-MUN + 1

fim repitaEST +- EST + 1

fim repitaescreva "MATRIZ LIDA'EST +- 1re ita

se EST > NEST1 então interrompafim seMuda de linhaMUN +- 1re ita

se MUN > NMUN1 então interrompafim seescreva POP[EST, MUNIMUN +- MUN + 1

fim repitaEST +- EST + 1

fim repita

MAIS +- POP[l, 1)ESTMAIS +- 1MUNMAIS +- 1EST +- 1re ita

se EST > NEST1 então interrompafim seMUN +- 1re i

se MUN > NMUN1 então interrompafim sese POP/EST, MUNj > MAIS

1então MAIS +- POP/EST, MUNjESTMAIS +- ESTMUNMAIS +- MUN

fim seMUN +- MUN + 1

!l.m repita

{Escrita de POP}

I EST+-~::;T+ 1

fim repita{Escrita de MUNMAts, ESTMAIS}

escreva "Município·, MUNMAIS, " do Estado·, ESTMAIS, "é o mais populoso·{Média da população das capitais}. .

SOMA+- OEST +- 1re ita

se EST > NEST1 então interrompafim seSOMA +- SOMA + POP/EST, 1)EST +- EST + 1

fim repitaMtDlA +- SOMA / NEST

{Escrita da MeDIA}escreva "Média da população das capitais = ., MÉDIA

fim ontmo. ,-... 2.5.2.12.All1oritmo

{Definição do tipo das variáveis}declareTABELA[1:15, 1:71 numéricodeclare CUSTOUNITREC[1:7) numéricodeclare CUSTOUNITATIV, INSSRECUNITATIV. QUANTIDADE [1:15J numéricodeclareADM, LEISSOC, LUCRO, OBRA, TOTAL, ATIV, NATIV. REC numérico

{Leitura de ADM}escreva "Digite o percentual de administração·leiaADM

{Leitura de CUSTOUNITREC}escreva "Digite o custo unitário dos 7 recursos·REC +- 1r.e ita

se REC > 71 então interrompaf1Dl seleia CUSTOUNITREC(REC)REC +- REC + 1

fim repita{Leitura da TABELA de Quantitativos}

escreva "Digite o número total de atividades·leia NATIVescreva "Digite para cada atividade (NATIV), a quantidade de recursos (7)"ATIV +- 1

rre itase ATIV > NATIV1 então interrompaf1Dl se

257

o.,••f)

O

••Oc>f,'''''\,'"V

o~W

••••O()

O()C)

(J

oQ

Page 139: Harry farrer   algoritmos estruturados

;

h• )

•- I

•,,I

ti..hJ

II

fI

j

II

I

1I

.1I),}

!

REC +- 1re ita

seREC>71~mterrorrfj5a­fim seleia TABELA[ATIV, REC]REC +- REC + 1

fim repitaATIV +- ATIV + 1

fim repita{Cálculo e escrita de CUSTOUNITATIV}

escreva "1- PREÇO DE CUSTO UNITÁRIO (DIRETO+ADM} DE CADA"," ATIVIDADE"

ATIV +- 1re ita

se ATIV > NATIV] então interrompafim se ,.CUSTOUNITATlV[ATIVj +- OREC +- 1re ita

se REC > 71 então interrompafim seCUSTOUNITATIV[ATIV] ~ CUSTOUNITATIV[ATIVI + TABELA[ATIV,RECj

x CUSTOUNITREC(REC]REC +- REC + 1

fim repitaCUSTOUNITATIV[ATIV] ~ CUSTOUNITATlV[ATIVj x (1 + ADM/ 100)escreva CUSTOUNITATIV[ATIVIATIV ~ ATIV + 1

fim repita{Cálculo e escrita de CUSTOUNITTIV x 1,36}

escreva "2- PREÇO UNITÁRIO A SER COBRADO EM CADA ATIVIDADE'ATIV ~ 1re ita

se ATIV > NATIV1 então interrompafim seescreva CUSTOUNITATIV[ATIV] x 1,36ATIV ~ ATIV + 1

fim repita{Recolhimento ao INSS por atividade}

escreva "3- A SER RECOLHIDO AO INSS El\1 CADA UNID DE ATIV"ATlV ~ 1

158

. ~)

r,.

, ~. ,~

~'"

"i'f.

re itase ATIV > NATIV1 entào interrompa

-fim se --.. -------INSSRECUNITATIV[ATIV) +- rrABELAIATIV,4) x CUSTOUNITREC (4]

+ TABELA[ATlV,5) x CUSTOUNITREC[511 x 0,16escreva lNSSRECUNITATIV(ATlV)ATlV ~ ATIV + 1

fim repita{Cobrança por uma obra}

escreva "Digite a quantidade de cada atividade usada na obra"ATlV ~ 1re ita

se ATIV > NATIV1 entao interrompafim seleia QUANTIDADEIATlV)ATlV ~ ATlV + 1

fim repitaescreva "4- A SER COBRADO PELA OBRA"OBRA ~ OATIV +- 1re ita

se ATIV > NATIV1 então interrompafim seOBRA +- OBRA + (CUSTOUNITATIVIATIVj . 1,36 + lNSSRECUNIlA:'IV[ATI\-;

x QUANTIDADE[ATIV]ATIV ~ ATIV + A

fim repitaescreva OBRA

(Total de cada recurso envolvido na obra)~ "5- QUANTIDADE TOTAL DE CADA RECURSO ENVOL'.'IDO·REC +- 1re ita

se REC > 71 então interrompafim se

TOTAL +- °ATIV ~ 1re ita

se ATIV > NATIV1 então interrompafim seTOTAL ~TOT.-\L + TABELA[ATIV, REC]" QUA],;TIDADEI:mqATIV ~ ATIV + 1

fim repita

Page 140: Harry farrer   algoritmos estruturados

Iescreva TOTALREC ~ REC + 1

fim repitafim algoritmo... 2.5.2.14.A oritrno

{Definição do tipo das variáveis}declare A[1:20, 1:20) numéricodeclare M, I, J numéricodeclare SIMÉTRICA lógica

{Leitura de M e A}escreva "Digite M, seguido de M linhas de A, cada uma com M elementos·leia MI ~ 1re ita

se I > MI ~ntão interrompafixn seJ..-lre ita

seJ > M1 então interrompafim seleia A[I, J)J ~J +1

fixn repita1..-1+1

fim repita{Verificação da simetria da matriz A}

SIMeTRICA ~ verdadeiro1~2

re itase I > MI então interrompafixn seJ..-lre ita

se J > I ou SIMÉTRICA = falso1 então"""irtterrompa -­fim sese A[I, J) ~ Ap, I)1 então SIMÉTRICA ~ falsofim seJ ~J+1

fixn repita1..-1+1

fim repita

260

.'.,

{Escrita da simetria de Aj

se SIMtfRlCA

1então escreva "SIMÉTRICA"senão escreva "NAO SIMÉTRICA·

fim se.fim algoritmo.

{Definição do tipo das variáveis}declare N, I, J, SOMA numêricodeclare A[I:20, 1:20) numéricodeclare B, X,11:20) numérico

{Leitura de N e da matriz A}

leia NI ~ 1

{Leitura de B}

I ~ 1re ita

se I> N1 então interromparuo seleia B[I)I ~ I + 1

fim repita(Cálculo de Xl

XII) ~ B[l) IA[l,l)I~2

re itase I> N1 então interromparuo seSOMA~O

J~l

•Ofi ,.<::)

J

gO

261 0

Page 141: Harry farrer   algoritmos estruturados

{Escrita da Tabela de Distâncias;~scflwa·'I'A8ELA-DE-I»STANCIAS:"

I+- 1re ita

se I :> TOTLINHAS1 então interrompafim seJ+-lre ita

se J :> TOTLlNHAS1 então interrompafim seescreva TABDIST[I, JIJ+-J+I

fim repita1+-1+ 1 "

fim repitare ita

leia ÔNIBUS {Leitura do número de uma linha de ônibus)se ÔNIBUS = O1 então interrompafim se

{Leitura do percurso da linha de ônibus}escreva "Digite o n° de cidades percorridas e o código de cada um a"leia NCIDN+-Ire ita

se N:> NCID1 então interrompafim seleia CODCID[N]

fim repitaDIST +- O {Cãlculo da dis:â.ncia percorrida}N+-Ire ita

se N:> NCID - 11 então interrompafim seDIST +- DIST + TABDIST[CODCID[N], CODCID[l\-1]]N+-N+1

fim repita

I H-I + 1

fim repita

{Escrita da distância percorridalescreva "DISTÂNCIA PERCORRIDA = ", DIST

fim repitafim algoritmo.

re itase J > I -11 então interrompa

-- Hfiijfse-------

SOMA +- SOMA + Ali, J) x X(J)J+-J+I

fim repitaXIII +- (B[I] - SOMA) / A[I, I)1+-1+ 1

fim repita

{Definição do tipo das variãveis)declare TABDIST[I:30,I:30) numéricodeclare CODCID[I:241 numéricodeclare I, J, N, TOTLlNHAS, ÔNIBUS, NCID, DIST numérico

{Leitura da tabela de distâncias}TOTLINHAS +- 30escreva "Digite em ", TOTLlNHAS - 1, "linhas a parte triangular inferior da ",

"tabela de distâncias"TABDIST[I, II +- OI+-2r.e ita

se I :> TOTLINHAS1 entâo interrompafim seJ+-Ir.e ita

se J :> I -11 então interrompafim seleia TABDIST[I, J]TABDIST[J, II +- TABDIST[I, JIJ+-J+1

fim repitaTABDIST[I, II +- O

---~~~~~~---------------------

lo 25.35

{Escrita de X}escreva "RAÍZES DO SISTEMA DE EQUAÇÓES"1+-1re ita

se I > N1 então interrompafim seescreva XII]1+-1+ 1

fim repitafim algoritmo.

Allzoritmo

162

Page 142: Harry farrer   algoritmos estruturados

9O

265 0

Iescreva VÁLIDAS(K).CONTA.NUM, C_", VALIDAS(K).CONTA.DV,VALIDAS(K).CONTA.SALDO, VÁLIDAS(Kj.CONTA.NOME

fim repitaK +- 1 {Escrita das contas inválidas}escreva ·CONTAS DE NÚMERO ERRADO"re ita

se K > J1 então interrompa[1m seescreva INVALIDAS[KI.CONTA.NUM, "-", INVÁLlDAS[K).CONTA.DV,

INVALIDAS[K).CONTA.SALDO, INVALIDAS[K].CONTA.NOME

declare CLIENTEATUAL literaldeclare TCOMPRAS, TVENDAS numéricoabra BOLETA leituraabra RESULTADO escritaTCOMPRAS f- OTVENDAS f-O

leia BOLETA.OPERAÇAoCLIENTEATUAL f- OPERAÇAO.NÚMEROre ita

se OPERAÇAo.FDA1 então interrompafim se

'riai OPERAÇAO.CÓDIGO" ·C· {Acúmulo de operação}

{Definição do tipo das variáveis}" declare BOLETA {Operações dos clientes na Bolsa de Valores}

arquivo següencial de OPERAÇAOdeclare RESULTADO {Resultados totais das operações dos clientes}

arquivo següencial de SALDOCLIENTEdeclare OPERAÇAO registro (NÚMERO, (Identificação do cliente)

CÓDIGO, (V-venda, C-compra}DESCRIÇAo [I'itulo negociado} 8literal, i)VALOR {Valor unitãrio do titulo negociado}QUANTIDADE, (Quantidade de titulos negociados])numérico)J,

declare SALDOCLIENTE registro (NÚMERO, {Identificação do cliente}TIPO, \C-cl"edor, O-devedor} Oliteral,SALDO, ;Saldo apurado do cliente} Onumérico) Q

)

')

)

)

J.,)

~~ta OL:fi:1m==a:=lg:o;=r=:itm==:o:.;.. ....J.

 2.5.4.4.

{Definição do tipo das variáveis}declare VALlDAS[l:lOO), INVALIDASI1:100) CONTAdeclare CONTA registro (NUM, (Número da conta bancária)

DV, {Dígito verificador do n° da conta}SALDO (Saldo da conta}numérico,NOME {Nome do titular da conta}literal)

declare NÚMERO, SOMA, PESO, DIGVER, D, I, J, K numéricoI f- O

J~O

re italeia CONTA.NUM, CONTA.DV, CONTA.SALDO, CONTA.NOMEse CONTA.NUM .. O1 então interrompafim seSOMA +- O (Cálculo do dígito verificador do número da conta}PESO +- 2NÚMERO f- CONTA.NUMre ita

se NÚMERO = °1 então interrompafim seD ~ RESTO(NÚMERO,10)SOMA f- SOMA + (D x PESO)NÚMERO +- QUOCIENTE(NÚMERO,10jPESO f- PESO + 1

fim repitaDlGVER f- 11 - RESTO(SOMA, 11)se DlGVER > 91 então DIGVER f- Ofim sese DlVGER = CONTA.OV (Verificação da validade do número da conta)

1então I f- I + 1vALIDAS[I) f- CONTA

senão J f- J + 1INVÁLIDASP] f- CONTA

fim sefim repitaK~ 1 {Escrita das contas válidas}escreva ·CONTAS DE NÚMERO CORRETO·

r:aK>'1 então interrompafim se

Â. 2.5.3.6.

Alsloritmo

Page 143: Harry farrer   algoritmos estruturados

26'

{Conceito final obtido pelo aluno}numérico

declare CONCEITOliteral

1.-0r.e ita

leia NALUr...;O, Nl, J:\2, N3, 1\4, NFSOMATRESMAIORES(N 1,N2 ,N3,N4,SOMA}NOTAFINAL (- SOMA + NF.§.e NOTAFINAL ~ 39

então CONCEITO (- "F"senão §.e NOTAFINAL :5 59

então CONCEITO .- "E"senão .§.e NOTAFINAL :5 69

então CONCEITO (- "D'senão se NOTAFINAL :5 :"9

1então CONCE::-O (- "Csenão se NOT:\FINAL 5 89

1entà0 CONCEITO .- "B"senà0 CONCEITO (-- "A"

fim sefim se

{Definição do tipo das variáveis utilizadas}declare Nl, N2, N3, N4, {Notas das provas mensais}

NF, (Nota da prova final:NALU;-;-O, (Número do aluno}NOTAFINAL, (Nota final do aluno}SOMA, {Soma das três maior~s notas mensais:I (Contador}

Alaoritmo1-- -----fDec1aração da sub rotina ~.soma~tl"êsmaiores valoresl

subrotina SOMATRESMAIORES(A,B,C,D,SOMAjdeclare A, B, C, D, {Números fornecidos}--- SOMA {Soma dos três maiores números}

numérico§.eA<B~A<C~A<D

então SOMA (- B + C + Dsenão se B < C ~ B < D

1então SOMA (-A + C + Dsenão se C < D--1então SOMA (-A + B + D

senão SOMA .- A + B + Cfim se

fim se

CapItulo .$ • ~erctctos proPOStoSJ,. 3.4.3.

fim sefim subrotina

I~ ,'-'v.... IV"'> ~ (;~J;~~~;.QUANTIDADEx OPERAÇÃO. VALOR)senào TVENDAS f- VENDAS +

---------------LQ~QUANTJDAQE*_0PBRAÇAO.VAL~fim se .

leia BOLETA.OPERAÇÃO

1se (OP~~ÇÃO.FDA).Q!!(CLlENTEATUAL '" OPERAÇAO.NÚMERO)

entao Interrompafim se

fim repita

se CLlENTEATUAL '" OPERAÇÃO. NÚMERO

então se TCOMPRAS> TVENDAS {Cálculo do saldo do cliente}entào SALDOCLIENTE.SALDO f- TCOMPRAS - TVENDAS

SALDOCLIENTE.TIPO f- "C·senão se TCOMPRAS < TVENDAS

Ientão SALDOCLIENTE.SALDO f-TVENDAS - TCOMPRASSALDOCLIENTE.TIPO (- "D"

senãp SALDOCLIENTE.SALDO f- Ol3ALDOCLIENTE.TIPO (-" "

fim sefim se

SALDOCLIENTE.NÚMERO (- CLIENTEATUALescreva RESULTADO, SALDOCLIENTETCOMPRAS f- OTVENDAS (-O

CLIENTEATUAL f- OPERAÇAo.NÚMEROfim se

fim repitase TCOMPRAS > TVENDAS

então SALDOCLlENTE.SALDO (- TCOMPRAS - TVENDASSALDOCLIENTE.TIPO (- "e"

senão se TCOMPRAS < TVENDAS

Ientão SALDOCLIENTE.SALDO (- TVENDAS - TCOMPRASSALDOCLlENTE.TIPO (- "D"

~SALDOCLIENTE.SALDO .- OSALDOCLIENTE.TIPO.-· "

fim sefim se

SALDOCLIENTE.NÚMERO (- CLIENTEATUALescreva RESULTADO.SALDOCLIENTEfeche BOLETAfeche RESULTADO

fim algoritmo.

)

).

,I

f·, ,\.

)

i '\~ I

rr

:,

Page 144: Harry farrer   algoritmos estruturados

.. 3.4.:5.

NUM ~ NUM x 10 +DVIL,\DV2 ~DiGlTOVERlFICADOR(NUM)l'NUM ~ NUM )( 10'" DV2 • )

l~=~ ~então esc'ceva NOME, CPF, -VÁLIDO· 1senão escreva NOME, CPF, -INVALIDO· )

fim se h~~~ L

L!i!!1lm~alg~ogJr!:!itmggg,o.,--- . }

JÂ~3~.4::1.7:... -:,)

A oritrno . d d' d }{Declaração da sub-rotina que calcula o numero e las o ano{até uma data fornecida} ,

subrotina QUANTOSDIAS(DlA,ME:S ,ANO,N)declare DIA, MÊS, ANO, {Da~ fornecida como paràr:letro de entrada}--- N, {Número de dias do ano até a data fornecida}

I (Contador)numérico

N~DIA

I~ 1re i~

se I > MÊS - 11~ interrompafim sese 1=2

então se RESTO(ANO,400) = OQ!!--1 (RESTO(ANO,4) = O~ RESTorANO, 100) =O)então N ~ N + 29senão N~ N + 28

fim sesenão se I = 4 Q!! I = 6 Q!! I = 9 Q!! I = 11--1então N ~ N + 30

senão N ~ N + 31fim se

fim seI ~ I + 1

fim cepi~

fim subrotina{Declaração da função que verifica se uma data é válida}

run ão lógico DATAVALlDA(DlA,MeS,ANO)declare DIA, MeS, ANO {Data fornecida como er_:rada}

numéricodeclare OIASOO~IES(1:12) fl'abela do número de d:as em cada mês;

numéricoDIASOOME:S(I) 31DIASOOMES[2} 29DIASDOME:S(3) ~ 31DIASDOMÊS(4) ..... 30

Ifim se

{Definição do tipo das variãveis}{NlI de inscrição no Cadastro de Pessoas Físicas}{Parte do CPF sem os dígitos de controle}{Digitas verificadores}

{Norne da pessoa}

Ifim se

declare CPF,NUM,DVl, DV2numérico

declare NOMEliteral

..te italeia NOME, CPFse CPF =O1 então interrompafim se

NUM ~ QUOCIENTE(CPF,I00)DV 1 ~ DIGITOVERIFICADOR(NUM)

{Declara;ção da função que calcula um dígito verificador}funcão numérico DIGITOVERIFICADOR(NÚMERO)

declare NÚMERO, SOMA, PESO, D, DV numéricoSOMA~O

PESO~2.[e ita

D ~ RESTO(NÚMERO, 10)SOMA ~ SOMA + (D x PESO)NÚMERO ~ QUOCIEN1'E(NÚMERO, 10)se NÚMERO = °1 então interrompafim sePESO ~ PESO + 1

fim repitaDV ~ 11 - RESTO(SOMA,11)se DV > 9

1então DIGITOVERIFICADOR ~ Osenào DIGITOVERIFICADOR ~ DV

fim sefim funcão

jfim seescreva NALUNO, NOTAFINAL, CONCEITOI ~ 1+ 1se I '" 801 então interrompafim se

fim repitafim algoritmo.

Ahzoritmo

i

Page 145: Harry farrer   algoritmos estruturados

I }I 't

t )

,"

Uln.:>UV1Ylc..0!<.Jj .- 01

DIASDOMÊS[6] ~ 30DIASDOMÊS(7l ~ 31DIASDOMÊS(8j~m3L

DIASDOMÊSl9j ~ 30DIASDOMeS(lO] +- 31DIASDOMÊSlllj ~ 30DIASDOMÊSl12j +- 31DATAVALIDA +- verdadeirogANO < O

então DATAVALIDA ~ falsosenãq .§e I < 1 ou I > 12

então DATAVALIDA ~ falsosenão se (DIA < 1) ou (DIA> DIASDOMÊS(MÊS)) ou

1(MÊS = 2 ~ DIA = 29 !< não((RESTO(ANO,400) = O Q.!!

(RESTO(ANO,4) =O!< RESTO(ANO,lOO) * O))então DATAVALIDA ~ falso

fim se

fim sefim função

{Definição do tipo das variáveis}declare DI, MI, AI, 02, M2, A2, {Datas de um mesmo ano}

N1, N2, {Número de dias do ano para çada data}DIFDIAS {Diferença em dias entre as datas}numérico

re italeia 01, MI, AI. 02. M2. A2se 01=0 e M1=0 e AI=O e 02=0 e M2=O e A2=O1 então interro~pa - - -fim se.§e não DATAVALIDA(Dl, MI, AI)

então escreva "DATA INCORRETA", DI, "/". MI, "/". AIsenãq .§e não DATAVALIDA(D2, M2, A2)

então escreva "DATA INCORRETA", 02, "/", M2, "/". A2senãq .§.e AI * A2

então escreva "DATAS INCORRETAS: ""ANOS DIFERENTES"

senão QUANTOSDIAS(D1. MI. AI, NI)QUANTOSDIAS(D2. M2, A2, N2)DIFDIAS +- ASS(NI - N2)escreva DIFDIAS

fim sefim repita

fim Rla~ritmo.

270

- "'."'9'.7.

Ak'oritmo{Declaração da função que calcula o produto de dois números inteiros}

r. ." - numérico PRODUTOíX.Y~m - - -

"""declare x, Y, {Fatores da multiplicação}P {Produto}numérico

P+-Or e ita

se RESTO(X. 2) ~ O1 então P ~ P + Yfim seX ~ QUOCIENTE(X, 2jY~Yx 2se X = O1 então interrompafim se

fim repita ;

PRODUTO~ Pfim função

{Definição do tipo das variáveis}declare A. S, {Par de números inteiros pos:tivos}

PAS, {Produto A ' S}I {Contador}numérico

I +- Ore ita

leia A. SPAS ~ PRODUTO(A,S)escreva A, S, PABI ~ I + 1se I = 101 então interrompafim se

fim repitafim algoritmo. 3.4.10.

AI oritmo{Declaração da função que calcula o número de algarismos}

{existentes em um nún:ero inteiro}fun ão numérico NUMALG:\RISMOS(N)

declare N, NA numéricoNA ...... 1

Tie ita

se QUOCIENTE(N,lOl = O1 então interrompafim se

271

Page 146: Harry farrer   algoritmos estruturados

numérico

numérico

declare ALGARrSMOS[l:NAj {Algarismos do número NUM}numérico

)

'))

)

)

')

)

~

••..a~C,•8O()t'..·.:J

()('\.lJ

(lt

•••.,OO(J

Q

OO

27~ :

{Definição do tipo das variáveis}{Coordenadas do vértice 1 do tetraedro}{Coordenadas do vértice 2 do tetraedro}{Coordenadas de vértice 3 do tetraedro}{Coordenadas do vértice ~ do tetraedro}{Areas das faces de um tetraedro}{Area total do tetraedro}{Contador}

I +- O

rjPitaleia Xl, YI, 21, X2, Y2, 22, X3, Y3, 23, X4, y~, Z4

declare Xl, Y1, Zl.X2, Y2, 22,X3, Y3, Z3,X4, Y4, Z4,ATl, AT2, AT3, AT4,AREATOTAL,Inumérico

DISTÂNCIA +- " (X2 - X1)2 + (Y2 - Yl)2+ (22 - 21)'2fim funcão

{Declaração da sub-rotina que calcula a área de um triângulo}subrotina AREATRIÂNGULO(A,B,C,AREA}

declare A, B, C, {Lados do triângulo}--- ÂREA, {Area do triãngulo}

P {Semiperimetro do triãngulo}numérico

P +- (A + B:-:-+,=:,C:L)LL~2=-- ---= -::--AREA +- ..j P x (P - A) x (P - S) x (P - C)

fim subrotina

numéricodeclare ALGARlSMOSll:4j (Algarismos de N}

numéricoK+-Ore itaN~K2

SEPARAALGARISMOS(N,NUMALGARISMOS(N),ALGARISMOSIINVERTENÚMERO(NUMALGARISMOS(N},ALGARISMOS,INVERSON)se N = INVERSON1 então escreva Nfim seK~K+ Ise K > 701 então interrompafim se

fim repitafim-algoritmo.... 3.4.13.

Alaoritmo(Declaraçáo da função que calcula a distãncia entre dois pontos no espaço}

lun ão numérico DISTÃNCIA(Xl,Yl ,21 ,X2,Y2,221declare XI,Yl,21, X2, Y2, 22 {Coordenadas dos pontos}

numérico

{Definição do tipo das variáveis}{Número quadrado perfeito}{Contador}{Número N invertido}

decla.re N,K,INVERSON

INA ~ NA + 1N..- QUOCrENTE(N,10)

fim. repitaNlTNALGARISMOS +- NA

fim funcão(Decla.ração da sub-rotina que separa os algarismos de um número inteiro}

subr tina SEPARAALGARISMOS(NUM,NA,ALGARISMOS)declare NUM, (Número fornecido}

NA, (Quantidade de algarismos de NUM)r (Contador)

N.--OORDEM +-1I_NAre ita

:N ~ N + ALGS[Ij x ORDEM1..-1-1ORDEM ~ ORDEM x 10se I =OI então interrompafim se

firJ3. repitafim s~brotina

I +- Ore ita

1..-1+1ALGARISMOS[I) +- RESTO(NUM,10)NUM +- QUOCIENTEINUM, 10)se 1 = NAI então interrompafim se

fixn repitafim su brotina

{Declaração da sub-rotina que forma um número na ordem inversa}subrQtina rNVERTENÚMERO(NA,ALGS,N)

declare N, (Número inverso de saída)NA, (Quantidade de algarismos de N)I, ORDEM {Contadores}numérico

declare ALGS[I:NA) {Algarismos do número N}

272

ª-.4 - 2;AM# #_$4 .4 41. U JSt .$ $i' $ ..Ui2$1k_ Xii g;L&@AU$ a

Page 147: Harry farrer   algoritmos estruturados

... 3415AI'loritmo

27~

{Definição do tipo das \'ariáveis: .declare NPAR. {Número inteiro positivo par fornecido na ent:-3.da:

J, K {Candidatos a números primes cuja soma é ig-..lal a NPAR;numérico

 34.17

D~2

r.e itase D > .>IN ou RESTO(N,D) = O1 então interrompafim seD+-D+ 1

fim repitase RESTO(N,D) ~ O

1então PRIMO +- verdadeirosenão PRIMO +- falso

fim sefim funçào

re lta

CALCULANÚMEROE(NTERMOS,Ejse ABS( EXP(I} - E) < 0,0001-=f-elltão interrompa- ----fim seNTERMOS ~ NTERMOS + 1

fim repitaescreva NTERMOS

fim algoritmo.

AIRoritmo .{Declaração da função que determina se um dado número é prtmo;

fun ão lógico PRIMO(N) .declare N, {Número a ser pesquIsado}

D {Possível divisor de N}numérico

re italeia NPARse NPAR < O1 então interrompafim seJ~l

re ita~ K +- NPAR - J

se PRIMO(K) ~ PRIMO(J)1 então interrompafim seJ ~J + 2

fim repitaescreva NPAR, J. K

fim repitafim algoritmo.

f

II

I

{Definição do tipo das variáveis}{Número de termos da série}{Contador}(Valor do número neperiano calculado pela série}

declare NTERMOS,I,Enumérico

NTERMOS +-1

E+-ODEN +- 1I +- Ore ita

se I = NT1 e~tão interrompafim seE +- E + ( 1 / DEN )1+-1+ 1DEN +- DEN x I

fim repitafim subrotina

{Declaração da sub-rotina que calcula o valor da série}subrotina CALCULANÚMEROE(NT,E )

declare NT, {Número de termos da série}E, {Valor da série - número neperiano}I. {Contador de termos da série}DEN {Denominador de um termo da série}numérico

ÁREATl~IANGULO(DISTÂNCIA(Xl.Yl,Zl,X2,Y2,Z2).

DISTÂNCIA(Xl,Yl,Zl,X3,Y3,Z3J,- - ----DISTÃNCIA(X2,Y2,Z2,X3,Y3,Z3), A'l'lf

AREATRIÂNGULO(DISTÃNCIA(Xl ,Yl ,ZI,X2,Y2,Z2).DISTÃNCIA(Xl,Yl,ZI,X4,Y4,Z4),DISTÃNCIA(X2,Y2,Z2,X4,Y4,Z4). AT2)

AREATRIÃNGULO(DISTÃNCIA(XI,YI,ZI,X3,Y3,Z3),DISTÃNCIA(Xl,Yl,ZI, X4,Y4,Z4),DISTÃNCIA(X3,Y3,Z3,X4,Y4,Z4). AT3)

AREATRIÃNGULO(DISTÃNCIA(X2,Y2,Z2,X3,Y3,Z3),DISTÂNCIA(X2,Y2,Z2,X4,Y4,Z4),DISTÃNCIA(X3,Y3,Z3,X4,Y4,Z4), AT4)

ÁREATOTAL ~ ATI + AT2 + AT3 + AT4escreva AREATOTAL1+-1+1se I = 101 então interrompafim se

fim repitafim algoritmo.

274

\

"~

"..'

~..'.. '

),

Page 148: Harry farrer   algoritmos estruturados

Apêndice B

Este apêndice resume o conjunto de regras e convenções estabelecidas para a hotação algorítmicade finida neste livro. Apresentam-se aqui as declarações e formas de referência às estruturas de dados, àsi "taxe dos comandos existentes e às ferramentas de modularização disponíveis.

dech::l.re é uma palavra-chave;lista -de-identificadores são os nomes escolhidos para as variáveis,

que devem estar separados por vírgula;nome-da-tipo é uma das três palavras-chaves: numérico,

lógico ou literal.

•e

(componentes)

Declaração de registros

lista-de-identificadores

Referência ao conteúdo de variál'eis compostas

declare é uma palavra-chave:Iista-de-identificadores são os nomes associados às variáveis

compostas heterogêneas que se desejadeclarar:

li,: Is l lin:lsn são os limites dos intervalos de variação dosíndices da variável. onde cada par delimites está associado a um índice;

tipo identificador ou descrição do registro.

Declaração de conjuntos de registros

lista-de-identificadores [Ii I:Is...... Ii.:Is.1 tipo

onde:

onde:declare é uma palavra-chave;lista-de-identificadores são os nomes que estão sendo associados

aos registros que se deseja declarar;componentes ; são declarações elou identificadores de

variáveis compostas, separados por vírgula;registro é uma palavra-chave.

nome-do-tipo

Declaração de variáveis simples

lista-de-identificadoresdcel;lrc

onde:

ItI

f

Observaç~s :

Iik •• - - - - - limite inferior do intervalo de variaçãodo índice k;

Isk •• - - - - - limite superior do intervalo de variaçãodo índice k.

decla.re é Uma palavra-chave;Iisla-rle-identificadores são os nomes que irão ser associados

às variáveis múltiplas;li. :Is I. - .. , li.:lsn são os limites dos intervalos de variação

dos índices da variável, onde cada parde limites está associado a um índice;

tipo - tipo a que pertencem todos os componentesdo conjunto.

277

(c) Conjunto de variáveis compostas heterogêneas

(a) Variável composta homogênea

ident-da-variável é o nome associado à estrutura;ident-do-registro é o nome associado ao registro:i é uma lista de um ou mais índices capazes

de individualizar um elemento do conjunto;ident-do-componente é o nome associado ao componente cuja

referência ao conteúdo está sendo feita.

ident-da-variável [i] . ident-do-registro . ident-do-componente

onde:

'Ol_i_de_n_t-_da_-_van_·á_ve_I...:..[i_1 I :

(b) Variável composta heterogênea

----_......::..-_-- 1 ••ident-da-variável . ident-do-componente .

O(7)

OQ(J()

OOO

Declaração de variáveis compostas homogêneas

lista-de-identificadores [Ii, :Is••... , li.:ls.1tipodeclare

onde:

276

, #JLA_ U .M UU$Uti

Page 149: Harry farrer   algoritmos estruturados

Prioridade entre os operadores

VI'C."\'''''' ... IlIlICUCas

Comando de atribuição

expressão

279

Comando de entrada

identificador é o nome da variável à qual está sendo atribuído o valor;__ é o símbolo de atribuição;expressão pode ser uma expressão aritmética, expressão lógica ou

expressão literal de cuja avaliação é obtido o valor a seratribuído à variável.

leia é uma palavra-chave;lista-de-identificadores são os nomes das variáveis, separados p~r vírgula.

nas quais serão armazenados os valore~

provenientes do meio de entrada.

di, d2, dm são declaraçõescI, c2 cn são comandos

~condição

Ientão seqüência A de comandossenão seqüência B de comandos

fim se

~condição

Ientão seqüência de comandos~

lista-de-identificadores e/ou constantes

escreva é uma palavra-chave;lista-de-identificadores são os nomes das variáveis cujos conteúdos senio

mostrados ao usuário através de um me io desaída. Além dos conteúdos das \ariávei s, O valorde uma constante pode ser emitido diretamente.

Comando de saída

Comando condicional composto

onOc:

Comando condicional simples

onde:

onde:

onde:

I leia lista-de-identificadores

I identificador ..~>---

RESULTADO FORNECIDO

logaritmo na base 10 de EAlogaritmo neperiano de EAo número e (base dos logaritmos neperianos) elevado a EAvalor absoluto de EAparte inteira de um número fracionáriotransforma, por arredondamento, um número fracionário

em inteirofornece o valor - I, + I ou zero conforme o valor de EA ,5eja

negativo, positivo ou igual a zeroquociente inteiro da divisão de EAx por EAyresto da divisão de EAx por EAy

dm

NOME

Principais funções aritméticas

LOG (EA)LN (EA)EXP(EA)ABS (EA)TRUNCA (EA)ARREDONDA (EA)

SINAL (EA)

QUOCIENTE (EAx, EAy)RESTO (EAx, EAy)

clc2c3

cn

Estrutura de um algoritmo

Algoritmo

did2d2

---PRJORIDADE _OPERAÇÃO

---r- --1--potenciação. radiciaçà()

-- I-

2.' multiplicação, divisão3.' adição, subtração

fim aleoritDlQ

PRIORIDADE OPERADOR

L' aritmético2.' relacional3.' não4.' e5.' ou

278

)

,)

)

,I,I

I

'1

Page 150: Harry farrer   algoritmos estruturados

------------_.__ . __..._.

~~ [chave] nome-do-arquivo' nome-do-registro

••••ti()

•eDeclaração de funções

Comandos de entrada e saída (arquivos de acesso direto)

Declaração de sub-rotinas

função é uma palavra-chave:tipo é a especificação do tipo do valor de retomo;NOME é o identificador da função; T dlista-de-parâmetros é a lista de objetos globais que serão utl Iza os

dentro do procedimento e que têm seus valorespassados do algoritmo ou procedimentochamador para este procedimento. e vice-versa.

I . . são palavras-chaves' Cescreva ela e Item ,chave é o nome ou o valor do campo escolhido como chave

para endereçar o registro;nome-do-arquivo é o nome do arq~ivo declarado no algoritrn.o; Onome-do-registro é o nome do registro declarado par~ o arqUIVO e ~ue ~.'.,

será usado para armazenar no ambiente do algontrrn ,]o registro após a leitura ou antes da escrita.

sOO-rotina NOME (lista-de-parâmetros)

Ideclaração dos objetos locais à sub-rotinacomandos da sub-rotina

fim sub-rotina

onde:

~ tipo NOME (lista-de-~arâmetro~) _

I declaração dos obJetos locaiS à funçaocomandos da função

fim função

onde:

).')

")')

')a) Comando deentrada')

I=im;;'~~;t;~[~C~h~aV~e~] =no=m=e=-=d=o-=arq=~U=iv=o=.=n=om==e=-d=o=-re==gi=st=ro===============================t:=)b) Comando de saída ':')

onde:leia e escreva são palavras-chaves;nome-do-arquivo ; é o oomedo arq~vodeclarado no algoritmo;nome-do-registro é o nome do registro usado para annazenar no

ambiente de algoritmo o registro do arquivoapós a leitura ou antes da escrita.

Comandos de entrada e saída (arquivos de acesso seqüencial)

declare é uma palavra-chave;Iista-de-identificadores são os nomes que serão usados pelo algoritmo

. • para referenciar os arquivos;arquIvo e uma palavra-chave;organização indica o tipo de organização do arquivo, que pode

ser seqUencial ou direta;de é uma palavra-chave;nome é o nome do registro que será usado para se ter

acesso ao arquivo.

~& condição

cntão inte!TQmpafim..KseqUência B de comandos

fim repita

Declaração de arquivos

~seqUência A de comandosse condição

então interrompat:inlKseqUência B de comandos

fim repila

~seqüência A de comandos~condição

então interrompafi.m..E

fim repita

~ Iista-de-identificadores~ organização~ nome

Comando de repetição (interrupção no início)

Comando de repetição (interrupção no meio)

Comando de repetição (interrupção no tinal)

onde:

a) Comando de entrada

Il:iil nome-do-arquivo . nome-do-registro

b) Comando de saída

~ nome-do-arquivo' nome-do-registro

280

onde:sub-rotina é uma pala\Ta-chave:NOME é o identificador da sub-,:ºtina; "I' zad. d • • a lista de obietos globaiS que serão Utl I os

l1sta- e-parametros e dentro do p~edimento e que tem seus valoca

passados do algoritmo ou procedimen!Dchamador para este procedimento. c Vlce·versa.

Page 151: Harry farrer   algoritmos estruturados

o

283

l'egação.37

Leitoraslpcriuradoras de . ,".ln. 12- d~ caral.:{cre.; magnétin,' 11· de C:lraclere, ópticos. 1- de marca, ,'plÍca,.. I.lLinguag~m Je prograrn;.a~ -. l

- de máquina. 22- ;imbólica. 2~Literais. e,\prc;sõe s. 39L0~ica e aritmética~ lIniJ~. ;r::

I l:LA). 2. ­Lóglca~. ~Xrr~ss0e- s· "'peradore; \ógicl~s. 36· prioridade. ~~- rdações. ~5Lógico. vall.'f. 35L6Go.27

~Iemórias. ~. ~

- magnética~. 3· semiconduwras. ~~licroproce"adores. 7Modulariza\'jo de progra:-..l'. I 7:;- ierramelllJs. 177

Objelos· dobais, 171

· iocais, 177Operadores

Identilicadure>, 30Impressora. 8Interpretador. 27Interrupçào· no fim. 55· no início. 5",-· no interior. 54

L

G

Falso. I'alor. 30. ~5Faloria!. 57FDA (fim de arquiml. 152Filas magnéticas e .:assetes.unidades de. 10FORTH.26FORTR.-\N. 21, ~~. 25Funções. 33. 183Fundamentais. itens. 29

Gráfi.:os, traçador de. 13

F

E

Entrada. unidade, de. 41. IS:Entrada. unidade de. 2. 7- arquivos. 152. 161. 162. sub-rolÍna. 180-1 ~ 1EPRml.6Estruturada. prognmação. 1-~

Dados. estrulruras de, 87- arquil'os, 147- variáveis cOlllpO\tas heterogéneas.

131- variáveis compo,tas hOlllog~~eas.

90Declarações. 44- olr'luil'oS, 149• variáreis COmpO'IJS, 94. I I '. LUDiagrama hier:írqui.:o. 177Digitação, 20 IDigitai;. estrulura dos.. 2Discos magnéllco; e disquete'.

unidades de. 8Disjunção. 37EARml,6

- numérica. 29Controle, unidade de. 2. 6. 15

D

B

Chapino diagrama de. 26. 45Clareza. 32COBOL, 23Codificação. 209Comandos. 15.44Comentários. 32Compilador. 23. 27Comportamento. padrão de. 14Condiciona!. estrutura. 16- .:omposta. 46• simples, 45C,'njunção.36Constantes- lileral, 30-lógica. 30

BASIC, 24Blocos, diagrama de. 20

c

A

Ação, conceilo de, 14ADA,27Álgebra das Proposições, 36ALGOL. 25, 26Algoritmos- conceiluação, 14· eslruluroldos. 19• retinamenlos sucessivos. 15Analógicos, IAPL. 27Arilmélicas. expressõcs. 32• funções. 33Arquivos· abertura. 150- conceito. 148• declaração. 149• fechamento. 151· onzunização.. direla, 149. 160· . seqüencial. 152Atribuição. comando de. 40

Índice Afahético

Bibliografia

AUERBACH. Objectil'es ofStructured Programming. Philadelphia. Pa., 1974 (Computer Programming ManagementPortfolio, 14·02·01).

BARTEE, T. C. Fundamemos de Computadores Digitais. Rio de Janeiro, Guanabara, 1980.DAHL, 0.1.; DIJKSTRA, E. W.; HORRE, C. A. R. Structured Programming. London, Academic Press, 1972.DIJKSTRA. E. W. A Discipline ofProgramming. Englewood Cliffs, N.J., Prentice-Hall, 1976.GEAR. C. W. Organi:ação e Programação de Computadores. Rio de Janeiro. Guanabara, 1980.MAIA. M. L. Curso de Programação de Computadores. Belo Horizonte, Publicação Interna do ICEx-UFMG, 1977.PARNAS, D. L. On the Critaia du be used in Decomposing Systellls imo Module.v. Communicalions 01' lhe ACM,

/5( 12). 1972.

STAA, A. V. En,r:enharia de Pmgmmil.l'. Rio de Janeiro, LTC - Livros Téwicos e Científicos, 1983.WIRTfI. N. Program Devel"pment by Stepll'i.re ReJinemellt. Communications 01' lhe ACM. /4(4), April, 1971.WIRTH. N. Frolll Pmgramlllillg Teclmiqlles to Progralllllling Met/wds. Gunther, A. et alli -Intemational Computing

SYlllposium. AmstenJam. North-Holland. 1974.

I

J!

1

... ,

Page 152: Harry farrer   algoritmos estruturados

i I,

I"

- de concatena~ão, 39- lóIicos. 36- relacionais. 35

p

Palavra-chave, 32Palimetros. passagem de- por referencia, 181- porresultado,I81- por valor. 181Paridade. bit de, 3PASCAL,26Periféricos. 7PUJ.24Prioridade das operações. 38Processamento. unidade central de

(UCP),6PROM.6

284

R

RAM.5Registros, 131• conjunto. 134- físico. 148- lógico, 148Relações. 35Repelição. estrutura de, 16, 53ROM,5.6RPG.26

sSaída. unidade de, 2. 7- arquivos. 152- sub-rotina. 179Seqüencial. estrutura. 15, 44- parâmetros. 180. 18 I

T

Teclado. 7Tipos• constantes. 29• variáveis, 30

vVariáveis- compostas heterogêneas, 131- - registros. 131• compostas homogêneas. 90- - multidimensionais, 110- - unidimensionais. 93· declara~ilo de, 3I• identificadores, 31Verdadeiro, valor, 30. 40Vídeo. 7

44!"~-""~""""""'",~. ",,."'''''''''''''''';''''''''_'''''_'''''''_''''''''''-'''''''''' ''''_·.",F""~" - .~. """'_'_<C".'~~'~"'~'~_"'__=""""'""'_~_"_

.,_, BJ Z '" .__ LhU .. Ag ú2 s_,~ tL.