harry farrer algoritmos estruturados
TRANSCRIPT
Edição
. - _ "T··-
ESTRUTURADADE COMPUTADORES
. . ..-,' :', .:......,.,.' ~ ..' '-~'" ...
ALGORITMOS~STRUTURADOS
, , .\: :.~~.TJ~41
• Algoritmos'Estrutúradô~!'
• Pascal Estruturado
• Basic Estruturado
• Fortran Estruturado
)
I I I I9788521611806
)
)
J)
)
)
)
) -
)
)
)
)-------------~....::.;;:.::::::~)
)
)
),
,
------- ---._- -------
ocooo
')
~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
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 Pr0postos 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 depois 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]
)
)
)
}
)
)
}
)
•,)
)
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 projetadas com o principal objetivo de viabilizarem a expressão, em um nível mais elevado, dos programas 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 limitam 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 utilizaçã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 desenvolvimento 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ância 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 deforma 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 elaboração de programas. Obviamente, o modelo lógico obtido através dessa notação deve ser transposto 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 caracterí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 programador 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 expressã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
. 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~)
----- ------------------- ------ --------------------------------------------- -------------- -------- ------- -------------------- -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
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()
--~!Il!P,!II~..",~.•.-~----------------------_. __.._-----
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
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 signifka 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 armazenados 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 princí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
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.
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 operaçã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 operaçõ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 Jidade Central de Processamento apena dno e. quando a !Jnha eS!l\'er perfeita. ela é introduzida na Uniou 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
duz o que está sendo digitado no teclado. mas pode mostrar também resultados de cálculos ou mensagens. 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 computador, indispensável nos jogos eletrônicos, por exemplo. Mas tem a desvantagem de não deixar registrado os resultados obtidos. além de também prender o computador durante a sua utilizaçào. Como o teclado, 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 aquecimenlo), 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 leiloras/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
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 magné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, aliado 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)
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 perfuraç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 gravadas 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 canhoto 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 microcomputadores são as fitas cassetes, as mesmas utilizadas nos aparelhos de som. Muitos microcomputadores 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 cartões, totalmente separada do computador. Esta máquina possui um teclado semelhante ao de uma máquina 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 interpretados 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 sucessivamente 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·.
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 expressao 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 computador 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 dISto, 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
)
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 comandos 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. segundo 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 realização de uma ação.
Uma terceira estrutura de controle, a estrutura de repetição, será necessária ao se desdobrar o comando "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 executados 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 comandos 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 lugares, 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 retinamentos 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
(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 seguida 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 operaçõ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 desenvol\·;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)
)
)
)
)
)
)
~
•>)
)
)
)
)
)
)
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 antccipadamenl<: 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 especiais 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 desenvolvimento da tecnologia na área eJetrónica. a rapidez, a memória e as potencialidades dos computadores cresceram 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 complexos 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 objetivos 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 claramente o ambiente em que ele deve atuar. A alteração dos módulos já desenvolvidos é teoricamente desnecessá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 complexidade. 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 desenvolvido 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 simplicidade 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
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. Trata;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 administrativa. 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 simples, pode ser usada mentalmente.
))
))
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 desenvolvim~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 exemplo. ~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 Imgua2em 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 ~IIPurpose Symbolic Instruction Code") que inicialmente prete?~la ser apenas uma 1inguage~ m~ls. simples 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~clmento dos microcomputadores. A sua evolução, porem. fOI um tanto desordenada. não tendo aInda Sido
_4-...
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?nstruir 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 existência de um programa compilador (que traduza o algoritmo escrito na linguagem escolhida para a linguagem 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 forma 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
•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 estabelecidas 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 execuçã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)
) 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 rellitam, 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 numé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 c1assilicadas 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 referê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;
)
)
)
)
)
)
)
)
)
)
)
)
)
)
)
•,
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 algumas 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ímbolos 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 Matemá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úscula (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
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 obtidos 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)
")
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
, - " "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 diversilicadas 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?ndaexiste 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,
, .
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 variá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éricas na sua forma mais simples. Raciocínio análogo pode ser aplicado para e~pressões lógicas e expressõ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
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 identificadores 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 executado. 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
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 houver 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
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
•
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.
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
)
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 é delimitada pelo comando repita e pela expressão fim repita e a interrupção é feita através do comando interrompa.
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
-
-
-
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 é armazenado 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 diferentes. calculam por um proCesso fepctittw-llsema~IlÚlllCrQS pan;s desde 100 até 200. inclusive.
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
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
(
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
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
}
)
:>)
......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 normas 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
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
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
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
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 necessá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 à disciplina 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
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
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 venda 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 Programaçào de Computadores para cada uma das 14 turmas existentes. Para cada turma. é fornecido um conjunto 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, respectivamente. Fazer um algoritmo que:
• para cada turma, calcule a porcentagem de ausência e escreva a identificação da turma e a porcentagem 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~ pessoas 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 determInada 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
)
)
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. Supondo 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 última 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:
. 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
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}
}
( )
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
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~
)
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 declaIOde 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'"_ .
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 mesmo 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
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 complexas. visando adequar o instrumento aos vários problemas do dia-a-dia do programador. Assim, surgem 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; MATRIZ[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 .
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.
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 alunos) 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 conjunto. 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
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:
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 fictí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.
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
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 adota um procedimento análogo ao do jogador de baralho que, ao receber um conjunto de cartas desordenadas. 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
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 clientes, 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 SUFICIENTE";
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.
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.
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
(
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
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
-
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 compostas 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 -PROGNOSTICOS1111111
~ 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 054313C'2C-)....-:(
><;.:~TERIA ESPORTIVA FEDERAL -TESTE 0933
I REV 11.1. 00236-2 t'lA[~ 0:3878-1BILHETE N2002.732 44776497CIO
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
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 componente 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 cOflsiderado. 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 cidade 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
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
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. esquematizadas 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-DESTInativas 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)
(
(
( !
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
-------------------------------------------
() 2.2.2.2.2. Fazer um algoritmo que efetue um produto matricial. Seja A (01 X nj e B (n X m) as matrizes-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
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 exemplo. 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 componcnles.
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:
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 )
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:
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}
}
)
)
..---'
)
)
)
)
)
)")
(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 (observe 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."" ....
}·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.
)
)
)
)
')
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).
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
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 algoritmos 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 organizaçõ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. Dependendo 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 algoritmo, 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~ade. 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 comueormado 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 ambigist: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.
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 associados à estrutura de dados, isto é. ao arquivo. A associação deste modelo ao arquivo físico é uma questã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 PEDiDOS. 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 mesmo. 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,
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 quando 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 arquivo. Este tipo de acesso é largamente utilizado pelas linguagens mais recentes, para resolver alguns problemas análogos. tais como condições de erro, registro n30 encontrado etc. O sistema operacional encarrega-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 seqü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 algontmo 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
)
)
~-.
.~ ,
) 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
)
••
')
)
)
()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.
;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
(~)
')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,rganizaçã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 é necessá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.
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 arquivo 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:
()" )
)
""
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 identificação dos pares de conjuntos disjuntos (aqueles que não possuem elementos comuns a ambos). Os elementos de cada par de conjuntos são precedidos pelo nome que identifi'::l o par e pelo número de elementos 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
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~
')
)
)
)
~
•••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 execuconter, 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-
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
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 formato 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:
).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 lina, 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 estrUturas 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()
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ódulo 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 manipulaçã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ódulos 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 ohjelos. que podem ser globais ou locais.
Objet05 globais são entidades que podem ser usadas em módulos internos a outro módulo do algoritmo onde foram declaradas.
Objetos locais são entidades qUé só podem ser usadas no módulo do algoritmo onde foram declaradas. 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
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 prociente 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 }
)
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 podem 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 comando 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 passagem 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 subrotina, 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 subrotina. 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! corresponde 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
) 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 atuais 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 analogia 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 algumas funções que já são consideradas como itens fundamentais da notação .!lgorítmica. adotada neste texto, 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 subrotina. 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 compolila A pode ter. ou seja, o valor do limite superior com que o parâmetro atual a ela associado foi declarmlo 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()
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.
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. exceIO 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 coorder>~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
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 intervalo (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.
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 (horas, 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 segundos.
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
)
)
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:
···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}
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
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).>
<)
•••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 $
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;)
)
))
)
)
)
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é-dei 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, inICIalmente, 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 devolva 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
. 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úmero 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. comendo 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 principal 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 produtos. 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
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 mesmo 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 descritas 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 linguagem 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
"OOQ
O~
-{~
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>:>)
)
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 implementados 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
) 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
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
'{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,)
))
)
)
)
)..')
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:'.. _
 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
"
 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
)
)
))
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
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
• 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
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
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'
)
)
..... 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= ..,_
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
()
( )
( )
(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- Ç..,",.
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
(
.. 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;",." *
 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 )
)
)
... 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
.. -' • ..., • .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),"
:\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.
 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
{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
;
h• )
•- I
•,,I
ti..hJ
II
fI
j
II
I
1I
.1I),}
!
REC +- 1re ita
seREC>71~mterrorrfj5afim 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
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
{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
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
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
:,
.. 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
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
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
... 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
\
"~
"..'
~..'.. '
),
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
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
------------_.__ . __..._.
~~ [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.
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
... ,
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.