Baixe 1a-Algoritmos I - Livro de Logica de Programação - Forbellone e outras Manuais, Projetos, Pesquisas em PDF para Análise de Sistemas de Engenharia, somente na Docsity!
MM A construção de algoritmos
EEE CEGEpo
1
32 Edição -
Lógica e
Lógica a
——
(3º Edição
A Angélica, Andressa e Arissa
(ALVE)
A Aline e Matheus
(HER)
SUMÁRIO
PREFÁCIO ....
CarítuLo | — INTRODUÇÃO À LÓGICA DE PROGRAMAÇÃO.
Noções ot Lógica
O que É Lógica?
ExiSTE LÓGICA NG DIA-A-DIA?
MAS EA LÓGICA DE PROGRAMAÇÃO!
O QUE É UM ALGORITMO? ......
AALGORITMIZANDO A LÓGICA ... =
POR QUE É MPORTANTE CONSTRUIR UM ALGORITMO!
VAMOS 4 JM EXEMPLO?,
De QUE MANEIRA REPRESENTAREMOS O ALGORITM!
Exercícios DE rixação |
Exsrcícios PROPOSTOS ...
Resumo...
CapírtuLo 2 — TÓPICOS PRELIMINARES...
Tiros PRIMITIVOS ...
Exercício DE Fixação |
CONSTANTES ........
MARIÁVEL ..
FORMAÇÃO DE IDENTIFICADORES.
DECLARAÇÃO DE VARIÁVEIS
Exercicios DE FIXAÇÃO 2.
EXPRESSÕES ARITMÉTICAS..
OPERADORES ArITMÉTICOS
PRIORIDADES........... F
Exercício DE Fixação 3
ExrRESSÕES LÓGICAS...
OPERADORES RELACIONAIS
OPERADORES LÓGICOS ..
TABELAS-VERDADE ....
PRIORIDADES......
Exercício DE FIXAÇÃO 4
(COMANDO DE ATRIBUIÇÃO
Exercício DE Fixação 5
COMANDOS DE ENTRADA E SAÍDA
ENTRADA DE DADOS .
VII | lógica do oregramação
| SAÍDA DE DADOS
| Brocos .... ”
Exercícios ProrosTOS.
REsuMO ...
CaríruLo 3 — ESTRUTURAS DE CONTROLE .
ESTRUTURA SEQUENCIA...
EXERCÍCIOS DE FIXAÇÃO |
ESTRUTURAS DE SELEÇÃO...
SELEÇÃO SIMPLES
SELEÇÃO COMPOSTA.
SELEÇÃO ENCADEADA...
Seleção encadeada heterogênea.
Seleção encadeada homogênea.
Se enrão se...
Se senão se
Seleção de múltipla escolha.
EXERCICIOS DE FIXAÇÃO 2...
EsTRUTURAS DE REPETIÇÃO
REPETIÇÃO COM TESTE INO INÍCIO
REPETIÇÃO COM TESTE NO FINAL...
REPE-IÇÃO COM VAR ÁVEL DE CONTROLE.
CorranaÇÃO ENTRE ESTRUTUMAS DE REPETIÇÃO.
Exercícios DE FIXAÇÃO 3
Exercícios Prorostos....
Resumo ..
CarítuLo 4 — ESTRUTURAS DE DADOS ...
INTRODUÇÃO
VARIÁVEIS COMPOSTAS HOMOGÉNEAS
VANIÁVEI COMPOSTAS UNIDIMENSIONAIS
Declaração...
Manipulação a
Exercícios de fixação |
VARIÁVEIS COMPOSTAS MULTIDIMENSIONAIS
Declaração
Manipulação
Exercícios de fixação
VARIÁVEIS COMPOSTAS HETEROGÊNEAS
Recistros
Declaração
Manipulação
REGISTRO CE CONJUNTOS
Declaração
Manipulação
PREFÁCIO
Este livro foi concebido para ser utilizado em cursos de técnicas de programação é cons
trução de algoriumos. Dado seu caráter didático, o detalhamento dos assuntos e a abrangên-
cia de seu conteúdo, o material é indicado como livro-exto em disciplinas que neces
am
ae uma ferramenta de apoio pedagogicamente concebida para facilitar o aprendizado de
programação. Ele é útil também como fonte de estudo independente e de aprimoramento
iécnico para profissionais ou imeressados em lógica de programação
Uma das estratégias dese material é abordar os tópicos passo a passo, permitindo uma
aprendizagem gradual e consistente. O abjetivo é ie dlas éeni-
erminir que o le
de program;
o apreadizado de tópicos mais complexos, assim como de outras ling;
orseaprop
cas fundamentais e crie uma base sólida em lógie ão, facilitando na segitência
agens e de outros
paradigmas de programação.
A linguagem empregada no livro é bastante informal + acessível, mas nem por isso menos
rigorosa, também são utilizados intimeros exemplos « analogias provenientes do dia-dia
para facilitar a explicação dos conceitos e para aproximar os temas abstratos a assuntos liga-
dos ao cotidiamo do leitor.
No texto não são utilizados jargões nem referências a arquiteturas de computadores ou
a plataformas de desenvolvimemo, ou seja, o livro é “independente de máquina” e voltado
para a lógica de programação, conferindo assim um alto grau de acessibilidade para estu-
dantes e iniciantes na programação de computadores. Paradoxalmente, a pseudolinguagem
adotada é intencionalmente próxinta das linguagens de programação comumente adotadas
em esco facil
e universidades como primeira linguagem, justâmente pa
ar posterior
tradução é implementação prática.
Este livro é dividido em sete capítulos. Cada capítulo conta com uma série de exercícios
em discussão, e com uma
de fixação, criada para sedimentar conhecimentos locais ao tópi
ilo. Ao final
lista de exercícios propostos, elshorada para tratar de todo o conteúdo do capí
lo livro encontra-se um anexo com a Solução de todos os exercícios de fixação
O Capítulo 1 — Introdução à lógica de programação — apresenta, por meio de uma
abordagem sucinta e natural, os conceitos iniciais que introdnzirão o leitor ao contexto do
liso, Ele tem como objetivo dar os primeiros passos para a familiarização com a lógica, 08
algoritmos e seus métodos de construção,
O Capítulo 2 — Tópicos preliminares — ira dos conceitos de ba
gados ao longo do livro. Nesse capítulo são apresentados os co
se que serão empre
ceitos de tipos, constantes,
variáveis, expressões e comandos de entrada e saída.
O Capítulo 3 — Estruturas de controle — apresenta em detalhes as estruturas básicas de
controle do fluxo de execução de um algoritno. As estruniras sequencial, de seleção e de
AM | tágica de prograrcoção
repetição são explicaras minuciosamente, contando com muitos exemplos e exercícios. Esse
capítulo é muito importante, pois junto com os dois primeiros, encerra o conhecimento
mínimo e indispensável para
contirução e o e
tendimento de algoritmos.
O Capítulo 4 Estruturas de dados — estuda os vetores, matrizes, registros e suas com-
binacões. Fases tipos são utilizados para organizar e manipular um conjunto de dados de
forma estruturada. À definição, declaração e manipulação dessas estruturas são exploradas
por meio de vários exemplos e exercícios,
O Capítulo 5 — Arquivos — explora o conceito de conjunto de registros armazenados na
forma de arquivos. Apesar da abordagem tradicional fazer referência aos arquivos compu-
tacionais, são focalizadas
situações é circunstâncias do cotidiano, o que permive abordar os
arquivos sequenciais, randômicos e indexados de forma natural e acessível.
O Capítulo — Modularizando algoritmos — trata da decomposição de um problema
complexo em várias partes, cada qual sendo resolvida por meio da constução de wi mó-
dulo — um subalgoritno, Neste capítulo são abordados os contextos dos módulos (ação e
resultado), escopo de variáveis é passagem de parâmerros.
O Capítulo 7 — Estruturas de dados avançadas — apresenta uma noção sobre as estrutu-
ras de dados
uma introdução ao tema através de seus com
avançadas, como listas, filas, pilhase árvores, O objetivo deste capítulo é fazer
eitos e térmicas de base. Um esundo completo
e exaustivo do assunto pode ser encontrado em livros específicos da área.
Os trê
goritmos básicos. O Capitulo 4 tráta das estruturas de dados essenciais para o estudo dos
primeiros capítulos são fundamentais para a compreensão é construção de al-
capítulos seguintes é para a elaboração de uma grande quantidade de tipos de algorimos.
Oscapítulos 5, 6 e 7 possuem um maior grau de independência e podem ser estudados con-
forme a necessidade € interesse do leitor.
Nesta terceira edição, o livro conta com uma +
visão geral em seu texto, ampliação signi-
licativa dos exercícios de fixação e propostos, assim como a resolução de todos os exercícios
de tixação no anexo. O novo projeto gráfico inelui a muneração das linhas dos algoritmos
(atendendo a pedidos), objetivos de cada capítulo, índice remissivo e lista de algoritmos no
final do livro.
Ousra grande novidade é que o livro agora tem material de apoio, que pode ser encon-
do em wwuprenhall com /forbellone br, no qual o estudante encontrará a solução de
exercícios propostos escolhidos e uma lista adicional com outras sugestões de exercívios. No
material complementar aos professores estarão disponíveis apresentuções em PowerPointde
cada capítulo, para uso en: sela dé aula.
Esperamos que todo este nova material continue contribuindo decisivamente pára a for
mação do leitor e que seja uma boa opção para os professores de lógica de programação
Os antores
INTRODUÇÃO |
À LÓGICA DE
PROGRAMAÇÃO
Objetivos
Apresentar os conceitos elementares de lógica E aiii
pj 8 P Introdução à lógica de
programação
P Algoritmizando a lógica
e sua aplicação no cotidiano. Delinir algoritmo,
Estabelecer uma relação entre lógica e algoritmos;
a lógica de programação. Exemplificar a aplicação
P Conceitos e exemplos de
algoritmos
dos algoritmos utilizando simações do dia-a-di
a
Comparar as principais formias de representação
dos algoritmos, P Noções de fluxos de controle
Noções DE LÓGICA
O QUE É Lógica?
O uso conriqueiro da palavra lógica está normalisente relacionado à coerência e à racio
nalidade. Frequentemente se associa lógica apenas à matemática, não se percebendo sua
plicabilidade e sua relação com as demais ciências.
Podemos re
ionar a lógica com a correção do pensamento”, pois uma de suas preoct-
pações é determinar quais operações são válidas « quais não são, fazendo análises das formas
im não de
e leis do pensamento. Camo filosofia, ela procura saber por que pensamos a
outro jeito. Com arte ou técnica, ela nos ensina à usar corretamente as leis do pensamento.
Poderísmos dizer também que a lógica é a ciência das
rte de bem pensar, que é a
formas do pensamento”. Visto que a forma mais complexa do pensamento é o raciocínio,
a lógica estuda a “correção do raciocínio! Podemos ainda dizer que a lógica tem em vista a
“ordem da razão”. Isso dá a entender que à nossa razão pode funcionar desordenadamente
Por isso, a lógica estuda e ensina a colocar “ordem no pensamento”.
4 | tógimade programação
exemplo, a troca de uma lâmpada, Apesar de aparentemente óbvia demais, muitas vezes
lizamos esse tipo de atividade inconscientemente, sem percebermos seus pequenos detalhes
que são as ações que nos levam a alcançar o objetivo proposto.
Vejamos esse primeiro algoritmo, descrito passo a passo!
ALGORITMO |.! Troca de lâmpada
* pegar una escada;
* posicionar a escada embaixo da lâmpadas
buscar uma lâripada nova;
subir na escada;
retirar a lâmpada ve” h
colocar a lárpada nova.
Involuntariamente, já seguimos uma determinada sequência de ações que, representadas
nesse algoritmo, fazem com que ele seja seguido naturalmente por qualquer pessoa, estabe-
lecendo u
padrão de comportamento, pois qualquer pessoa agiria da mesma
nianeira.
A sequenciação é ma convenção com o objetivo de reger o fluxo de execução do algo
vitmo, determinando qual a primeira ação a ser executada e qual acão vem a seguir, Nesse
caso, a sequência é lincar, de cima para baixo, assi como é a sequência pela qual lemos um
texto, de cima para baixo e da esquerda para à direita
Reexaminando o algoritmo anterior, notamos que ele em um objetivo bem definido:
tre
ar uma lâmpada. Porém, e se à lâmpada não estivesse queimada? A exccui
ão das ações
conduziria à uma troca, independentemente de a lâmpada estar ou não queimada, porque
não foi prevista ess possibilidade em sua construção.
Para solucionar essa necessidade, podemos efetuar um teste, a úm de verificar se à lâm-
pada está ou não queimada. Uma solução para esse novo algoritmo seri
ALGORITMO 1.2 Troca de lâmpada com teste
* aegar uma escada;
* posiviorar a escada embaixo da lâmpada;
* buscar uma lémpaca neva;
* acionar 9 interruptor;
e se a lampada não acender, então
* subir na escada;
* retirar a lâmpada queimada;
* colccar a lâmpada nova.
Agora estamos ligando algumas ações à condição ânpada não acender, ou seja, se essa
condição far verdadeira (lâmpada queimada) eleiuaremos a troca da lâmpada, seguindo as
próximas ações:
* subir na escada;
* retirar a lâmpada queimada;
* colecar a lâmpada nova.
a
tágica de programação
acionar o interruptor;
subir na escada;
retirar a lâmpada queimada;
colocar a “âmpada novas
se a lârpada não acender, então
* retirar a lânpada queimada;
* colocar outra lâmace nova;
* se z lâmpada não ecender, então
* retirar à lâmpada queimada;
* colccar outra lâmpada novas
* se a Tinpada não acender, então
e retirar a lânpada queimada;
* colocar outra “ânpada covas
Até quando?
Notamos que o Algoritmo 1.4 não está terminado, falta especificar até quando será feito
o teste da lâmpada. Asações cessarão quando conseguirmos colocar uma lâmpada que acen-
da;
so contrário, ficaremos testando indefinidamente (note que o interruptor continua
aciomado!). Essa solução está mais próxima do objetivo, pois garante que a lâmpada acenda
de não saber
novamente, ou melhor, que seja trocada com êxito, porém, temos o problem:
o túmero exato de testes das lâmpadas.
Observemos que o teste da lâmpada nova é eletuado por um mesmo conjunto de ac
* se a lâmpada não acender, então
* retirar a lâmpada queimad.
* cojocar uma lâmpada nova.
Portanto, em vez de reescrevermos várias vezes esse conjunto de ações, podemos alterar o
fluxo sequencial de execução de forma cue, após excentada à ação colocar cura lâmpada
nova, voltemos a executar o teste se 3 lâmpada não acender, lazendo com que essas ações
sejam executadas o número de vezes necessário sem termos de reescrevêlas.
Precisamos, então, expressar essa repetição da ação sem repetir o texto que representa a
ação, a
ssim como determinar um limite para tal repetição, com o objetivo de garantir uma
condição de parada, ou seja, que seja cessada a atividade de testar a lâmpada nova quando
cla já estiver acesa, Uma solução seria:
* enquanto à lâmpada não acender, faça
* retirar a lmoada queimada;
* colocar uma Timpada nova.
A condição lâmpada não acender permaneceu e estabelecemos um fluxo repetir
o que
será finalizado assim que a condição de parada for falsa, ou seja, assim que a lâmpada acen-
des, Percebemos que o número de repetições é indefinido, porém é finito, e que depende
Cogítuo | Introdução à légica de programação 7
apenas da condição estabelecida, o que leva à repetir as ações até alcançar o objetivo: trocar
1 lâmpada queimarta por uma que funcione, O novo algoriano ficaria:
ALGORITMO 1.5 Troca de lâmpada com teste e condição de parada
acionar o interrupror;
se à lâmpada não acender, então
pegar uma escada;
posicionar a escada embaixo de lâmpada;
buscar uma lâmpada nova;
acionar o irterruptor;
subir na escadas
retirar a lâmpada queirrada;
colocar uma lâmpada nova;
enquanto a Vimpada não acender, faça
* retirar a lâmpada queimada;
* colocar una lâmpada nova;
Até agora estamos eletmando a troca
de una única lâmpada, na verdade estamos testan-
do um soquete (acionado por um interruptor), trocando tantas lâmpadas quantas forem
necessárias para asegurar que 6 conjunto funcione. O que faríamos se tivessemos mais
soquetes
A solução aparentemente mais óbvia seria repetir o algoritmo de uma única lâmpada
aresta
r, por exemplo, dez soquetes?
omo:
para os dez soquetes existentes, ficando algo
ALGORITMO 1.6 Troca de lâmpada com teste para 10 soquetes
* acicrar o interruptor do primeiro soquete;
* sea lâmpada hão acerder, entao
pegar uma escada;
posicionar 2 escada embaixo da Jânpada;
buscar uma lâmpada nova;
acionar o interruptor;
subir na escada;
retirar a lâmoada queimada;
colocar uma Têmpada nova;
enquanto a lâmpada não acender, faça
* retirar a lâmpada queimada;
* cclocar uma lâmpada nova;
acionar o interruptor de segundo soquete;
se a lâmpada não acender, então
* pegas uma escada;
* posicionar a escada embaixo da lâmpada
erionar o interruptor do terceiro soquete;
* «e a Tâmpada rão acender, então (Cominuay
10 | Lógica de programação
ALGORITMO 1.8 Fluxograma
tod
irícia
ir para o primeiro soquece
2 Saquetes ==.
= testados < “0
> Vampada
TD não acendeu?
pegar uma escada
colocar 2 escada erbaixe
du soquete
tuscar uma lânpada nova
acionar o interruptor
suntr na escada
x
vetirar a lâmpada queimada
colocar a lânpada nov
A
—iânpada >=.
não acerde?
Capitulo | Intredução à lógica de programação | 11
ALGORITMO 1.9 Diagrama de Chapin e
ir para o primeiro soquete
soquetes testados < 10
acionar o interruptor
pa âmpada não acende =|
pegar uma esceca
colocar a esceca enbaixo do soquete
buscar .ma lâncada nova
ionar e interruptor
subir na escaca
retirar a lâmzada queimada
colocar a lâmpada nova
lâmpada nao acendeu?
retirar a lâmpada queimada
colocar & lánpada nova
ir para o próxino soquete
Eles DO ego cera)
Para representar textualmente algoritmos usaremos o português, como já v
ihamos uti-
lizando. Todavia, não poderiamos utilizar toda a riqueza gramatical de nossa língua pátria.
Discorremos sobre pelo menos um bom e claro motivo:
ambigitidade
Vejamos a seguinte ltase: “O pregador foi grampeado durante o conserto”. Esse exem-
plo, quando falado, pode ter até vit sentidos diferentes, uma vez que pregador pode ser
tum religioso que prega a palavra de Deus ou um prendedor de roupas: grampeado pode se
trat;
de uma escuta telefônica ou do grampo que ume folhas de papel; conserto, quando
pronunciado, pode se tratar de uma apresentação musical ou da manutenção em algum
objeto,
amos até distinguir qual dos oito sentidos diferentes se aplicaria, caso
aval
ássemos à sentença dentro de seu contexto, Entretanto, o computador é desprovido do
raciocínio necessário para interpretar a frase,
Para evitar osse e outros problemas, utilizaremos um conjunto de regras que visam res
toingir e estruturar à não do português na representa
o dos algoritmos e que, intencional
mente, se aproximam da maneira pela qual 9 lacem às linguagens de programação reais
feoma G e Pascal), com a iinalidade de facilitar à fuura codificação dos algoritmos.
Alé então, já sa
bemos o que é um algoritmo e já estamos aptos a escrever algoritmos (e
resolver us exercícios do capítulo). A partir do próximo capítulo agregaremos alguns concei-
tas e estabeleceremos o conjunto de regras de escrita de nosso português estruturado.
Lagica de pregrameção
Exercicios DE FIXAÇÃO |
Três senhoras — dona Branca, dona Rosa e dona Violeta — passeavam pelo parque quando
dona Rosa disse:
— Não é curioso que estejamos usando vestidos de cores branca, rosa e violera, embora
nenhuma de nós esteja usando um vestido de cor igual ao seu próprio nome?
— Uma simples coincidência — respondeu a senhora com a vestido violeta.
Qual à cor do vestido de cada senhora ?
Um homem precisa atravessar um rio com um barco que possui capacidade apenas para
carregar ele mesmo e mais uma de suas três cargas, que são: um lobo, um bode e um
maço de alfafa. O que o homem deve fazer para conseguir atravessar o rio sem perder
suas cargas? Escreva um algoritmo mostrando a resposta, ou seja, indicando todas as ações
necessárias para efetuar uma travessia segura.
Elabore um algoritmo que mova três discos de uma Torre de Hanói, que consiste em três
hastes (a —b — ), uma das quais serve de suporte para três discos de tamanhos diferentes
(1=2-3), os menores sobre os maiores. Pode-se mover um disco de cada vez para
qualquer haste, contanto que nunca seja colocado um disco maior sobre um menor.
O objetivo é transferir os três discos para outra haste,
para tal, dispoem de um barco
Três jesuítas e três canibais precisam atravessar um ri
com capacidade para duas pesscas. Por medida de segurança, não se deve permitir que
em alguma margem a quanticade ce jesuítas seja inferior à de canibais. Qual a solução para
efetuar a travessia com seguranca? Elabore um algoritmo mostrando a resposta, indicando
as ações que concretizam a solução deste problema.
EXERCÍCIOS PROPOSTOS
No tomeio de atletismo, Barnabé, Gumercindo e Teodoro participaram das provas de
100 metros rasos, salto em distância e arremesso de dardo. Cada um deles conseguiu um
primeiro lugar, um segundo e um terceiro. Descubra o que cada um conquistou, sabendo
que:
Capítulo 2 Tópicos preliminares | 15
Exemplos
Vejamos algumes proposições declaretivas comuns em que é usado o tipo inteiro;
a. Eletem J5irmãos.
b Aescada possui 8 degraus.
€ Meu vizinho comprou 2 carros novos.
Enfatizanco o conceito de dado, vale observar, por exemplo, o item b: 8 é um dado do
fipa inteiro e a informação é associar que 8 é o número de degraus da escada,
Real: toda e qualque
formação numérica que pertença ao conjunto dos núrieros reais
(negativa, nula ou positiva),
Exemplos
a. Elatem !,73 metro de altura,
b. Meu saldo bancário é de $ 215,20,
& No momento estou pesando 82,5 kg.
Garacter: toda e qualquer informação composta de um conjunto de caracteres alfanumé-
. 6).
ricos: numéricos (0...9), alfahéticos (A...Z, a..4) e especiais (por exemplo, &, É
Exemplos
a Constava na prova: “Use somente canetal”.
b. O parque municipal estava repleto de placas: "Não pise na grama”.
«O nome do vencedor é Felisberto Loranjeiro,
Lógico: toda e qualquer informação que pode assumir apenas duas situações (biestável)
Exemplos
a. Aporia pode estar aberta ou fechado.
b. A lômpada pode estar acesa ou apagada
Exencicio DE rixação |
[1 Dexermine qual é o tipo primítivo de informação presente nas sentenças a seguir:
a) A placa “Pore!" tinha 2 furos de bala.
b) Josefina subiu 5 degraus para pegar uma maçã boa,
<) Alberta levou 3,5 horas para chegar ao hospital onde concebeu uma garota.
d) Astrogilda pintou em sua camisa: “Preserve o meio ambiente”, e ficou devendo $ 100,59
ao vendedor de tintas.
&) Felisberto recebeu sua 18! medalha por ter alcançado a marca de 57,3 segundos nos
100 metros rasos
O tágien de orogramação
CONSTANTES
Entendemos que um dado é constame quando não sofre nenhuma variação no decorrer
plo
do tempo, ou seja, seu valor é constante desde o início até o fim da execui |goritno,
assim como é constante para execuções diferentes no tempo.
ara diferenciar os dados constamtes de ripo caracter dos outros Lipos, usaremos aspas
duplas (*”) para delimitádos.
Convenicionaremos que as informações do tipo lógico poderão assumir um dos seguintes
valores constantes: verdade (V) ou falsidade (F).
Exemplos
5, “Não fume”, 2527, - 0.58, V
VARIÁVEL
Um dado é classificado como variável quando tem a possibilidade de ser alterado em
algum instante no decorrer do tempo, ou seja, durante à execução do algoritmo em que é
utilizado, o valor do dado sofre alteração ou o dada é dependente da execução em um certo
momento ou circunstância,
Exemplo
A cotação do dólar, o peso de uma pessoa, o Índice da inflação.
Um exemplo para ilustrar a diferença entre valores constantes e variáveis seria a cons-
trução dem algoritmo para calentar à valor da área de uma circunferência, Naturalmente,
teríanios de usar à fórmula que expressa que área é igual a xrº, na qual tem valor constante
de 3,1416.., independente de qual seja a circunferência (vale para todas as ocasiões em que
caleularmos a área): já o valor de r, que representa o raio, é dependente da circunferência
que estamos calculando, logo é variável a cada execução do algoritmo.
FORMAÇÃO DE IDENTIFICADORES
Vamos supor que, ao fazer um
or lixo em moeda corrente como base para o reajuste do contrato, pois com o p:
ntrato de locação de imóvel, não possamos utilizar um
ar do
sempo esse valor estaria defasado. Para resolver esse problema, poderiamos utilizar um pa-
râmetro que fomecesse valores atualizados em moedla corrente para cada período, ou seja,
um dado variável dependente do período
Haveria, então. a necessidade de nomear esse parâmetro que representa os valores em
miitação, tal como IRT, Índice de Reajustes Totais
Esses nomes das informações de caráter variável são os identificadores, os quais devem
acompanhar as seguintes regras de formação
1. Devem começar por um caracter alfabético.
2. Podem ser seguidos por mais caracteres alabéticos ou numéricos.
Capítule 2 tópicos preliminares | 17
3. Não devem ser usados caracteres especiais,
O diagrama de sintaxe a seguir resume graficamente essas regras
=
é identiicador
y
o
a
Exemplos
a. Identificadores válidos:
Alpha, X, BJ153, K?, Notes, Média, ABC, INPS, FGTS.
b. Identificadores inválidos
5X, E(13), A:B, X-4, Nota/2, AHQ*, PRA,
DECLARAÇÃO DE VARIÁVEIS
No ambiente computacional, às informações variáveis são guardadas em dispositivos
eletrônicos analogamente chamados de memória. Podemos imaginar essa “memória como
sendo um armário repleto de gavetas, no qual as gavetas seriam os locais físicos responsáveis
porarmazenar objetos; os objetos (que podem ser subs
imídas) seriam os dados e as gavetas,
1 variáveis,
Visto que na memória (armário) existem inúmeras variáveis (gavetas), precisamos dife-
renciálas, o que é leito por meio de identificadores (etiquetas ou rótulos). Cada var
(gaveta), no entanto, pode guardar apenas um dado (objeto) de cada vez, sendo sempre de
mesmo tipo primitivo (material)
el
Portanto, precisamos definir nomes para determinadas gavetas especificando qual o ma-
terial dos objetos que lá podem ser armiazer
los; em outras palavras, declarar as variáveis
jue serão usadas para identificar os dados.
Para tal atividade vamos adotar as seguintes regras sintáticas:
declaração de variéveis >] tipo
tipo
identificador
inteiro
rr DIAGRAMA ——
20 | tbgicndo programação
PRIORIDADES
Na resolução das expressões ariuméticas, as operações guardam uma hierarquia entre si
TES
Precedência entre os operadores os
Prioridade Operadores
te parênteses mais internos
z pot rad
x * | dv mod
4 +
Em casa de empate (operadores de mesma prioridade), devemos resolver da esquerda
para a direita, conforme à segiência existente na expressão
. Para alterar a priori-
dade da tabela, utilizamos parênteses mais internos.
Exemplos
a 5+9+7-B/4
5+9+7-2
2
b 1-4 3/6- pot(3,2)
1-4+3/6-9
1-12/6-9
1-2-9
=10
c pot(s,2) -4/2 + rad(i+3+5)/2
pot(5,2) — 4/2 1 rad(2 + 15)/
pot(5.2) — 4/2 + rad(16)/2
25-42 +aj2
2-2+2
2
Exercicio DE Fixação 3
31 Supondo que A, E e C são variáveis de tipo inteiro, com valores iguais a 5, 10 e -8,
respectivamente, e uma variável real D, com valor de 1,5, quais os resultados das
expressões aritméticas a seguir?
a) 2*Amod3-C
b) rad(=2 * 0) div 4
t(20 div 3) div 3) + poz(B,2)/2
d) (30 rod 4 * pot(3,3)) * 1
e) pot(-C,2) + (D * 10)/4
9 radípot(a,B/A)) + C*D
o)
Copítulo 2 Tópicos preliminares 21
ExPRESSÕES LÓGICAS
Denominamos expressão lógica aquela cujos operadores são lógicos ou relacionais e
cujos operandos são relações ou variáveis ou constantes do tipo lógico.
expressão o operador Tágico E [ >
operande lógize
constante lógica ——»
A
DIAGRAMA
variável lógica
erp
expressão relacional
OPERADORES RELACIONAIS
Utilizamos os operador
relacionais para realizar comparações entre dois valores de
mesmo tipo primitivo, Tais valores são representados por constantes, variáveis ou expressões
:risméticas
Os operadores relacionais são comuns para construirmos equações, Adotaremos como
onvenção para esses operadores os sínibolos apresentados na Tabela 2.5
Tabela 25 Operadores relacionais
Operador Função Exemplos
= Igual a ai gear
> Maior que 5>4X>Y
< Menor que 3<6x<Y
>= Maior ou igual a 5>=3,X>=Y
<= Menor cu igual a as day
<> Diferente de B<>9,X<>Y
Ox
sultado obtido de tema velação é sempre um valor lógico. Por exemplo, analisando
a relação numérica A + B = €, o resultado será verdade ou falsidade à medida que o valor
da expressão aritmética À 1 B seja igual ou diferente do conteúdo da variável C, respectiva:
mente,
9
3
| Lógica de programação.
| expressão expressão operador >| expressão sé
| relacional aritmética relacional aritmética
£ >| expressão operador expressão
z literal relacional “iteral
Q
ê exoressão constante a
| literal caracter
| [5 variável
caracter
Exemplos
a 2*4=24/3
8-8
Y
b 15 rod 4 < 19 mod 6
481
F
e 3*5 dive <= pos(3,2)/0,5
15 div 4 <= 9/0,5
3<=13
Y
d 2+8mod7>3*6-15
2+1>=- 18-15
3 > 3
Y
OPERADORES LÓGICOS
Unilizaremos três operadores básicos para a formação de novas proposições lógicas com-
postas a partir de outras proposições lógicas simples. Os operadores lógicos estão descritos
na Tabela 2.6
Operadores lógicos
o Operador Função
não negação
e conjunção
ou disjunção
Capitulo 2 Tópicos peeliminoros | 25
Exemplos
o não (5<>10/2)ouve?-5>5-270uv)
não (5 <>5ouVe-3>30uY)
não (Fou Ye Fou y)
não (F ou F ou V)
não (F ou v)
não dv)
F
b pot(2,4) <> 4+20u2+3+*5/3mod5<o
16 <>6 ou 2 + 15/3mod 5<0
16<>60u2+5mod5<o
16<> 60u2-0<0
16 <> 60u2<0
You F
v
Exercicio DE Fixação 4
4.1 Determine os resultados obtidos na avaliação das expressões lógicas seguintes, sabendo
que A, B, C contêm, respectivamente, 2, 7, 3.5, e que existe uma variável lógica L cujo
valor é falsidade (F):
a) B-A*Ce(Louv)
b) B>AouB=pot(A,A)
O) LeBdivê>Counãoh<C
d) não Louve rad(A + 6) >=€
e B/A=CouB/A<L
O Lou pot(B.A) <=C*I0+A*B
COMANDO DE ATRIBUIÇÃO
Um comando de atribuição permite-nos fornecer um valo!
ima variável (guardar um
jeto em uma gaveta). em que 9 po do dado deve ser compatível com o tipo da variável,
« somente podemos atribuir um valor lógico a uma variável capaz de comportá-lo, ou
seja, uma variável decl:
rada como sendo do tipo lógico.
O comando de atribuição possui a seguinte sintaxe:
atribuição identificador is | Re
expressão
expressão aviimética
expressas logica
expressão literal
DIAGRAMA
26 Lógica de programação
Exemplos
lógico: A, B;
inteiro; X;
Ae 8;
Xe B+I3 divs;
Be 5=3;
fd 8
Esses comandos atribuem às variáveis 4, X é B os valores fornecidos à direita do símbolo
de atribuição. Vale ressaltar que à esquerda do símbolo de atrih
identificador.
ão deve existir apenas um
Percebemos que as variáveis & e B devem ser do tipo lógico e que a variável X deve ser do
tipo inteiro, o que já foi explicitado na declaração das variáveis.
Nos comandos em que o valor à ser atribuído à variável é representado por uma expres
são aritmética ou lógica, estas devem ser resolvi
em primeiro lugar, para que depois o ve-
vel. Por exemplo, na penúltima atribuição, 8 receberia
bberá falsidade
vel pode ser utilizada diversas vezes. Ao atribuirmos um
segundo valor, o primeiro valor armazenado anteriormente será descartado, sendo subsutuí-
sultado possa ser armazenado na vai
verdade se 5 fosse igual a 3: como não é, 8 rec
Notemos também que uma vari
do pelo segundo. Por exemplo, ua primeira utilização, X reeche o resultado da expressão
ariumética (o valor inteiro 10), na segunda utilização esse valor é descartado, pois X passa a
ter como valor o inteiro 2
Exercício DE FIXAção 5
5.1 Encontre os erros dos seguintes comandos de atribuição:
lógico: A;
real: B, C;
inteiro: D;
ge D=t;
Dc a;
C+1 e B+C;
Ge Bo qc
3 pot(5,2)/3 <:
rad(9) * q
COMANDOS DE ENTRADA E SAÍDA
Os algoritnos precisam ser “alimentados! com dados provenientes do meio externo para
efei
tarem as operações « cálculos que são necessários à fim de alcançar o resultado deseja-
do. Gom essa finalidade, utilizaremos os comandos de entrada e saída. Vejamos uma analo-
gia desse processo com wma atividade que nos é corriqueira, como a respiração.
Capitulo 2 Tópicos preliminares | 27
No processo respiratório, inspiramos os diversos gases que compõem a atmosfera: reali-
zamos uma entrada de substâncias externas que agora serão processadas pelo organismo,
ndo que, depois de devidamente aplicadas por ele, sc
s o devolvidas, alteradas, ao meio,
como saída de substâncias para o meio externo,
Da mesma forma funciona o “organismo! do computador, só que no Ingar de substâncias
atmosféricas entram e saem dados.
Outra analogia interessante é proveniente da culinária doméstica. Para fazer um bolo
também seguimos o mandamento da informática: como entrada, temos os ingredientes que
serão processados segundo um algoritmo, a receita, e finalizarão tendo por saída o bolo
pronto, Notemos que nem os ingredientes nem o bolo pertencem à receita, pais são prove-
nientes do meio externo à receita.
ENTRADA DE DADOS
Para que o algoritmo possa receber 98 dados de que necessita, adotaremos um comando
de entrada de dados denominado lei
variável identificada.
o dado a ser fornecido à
, cuja finalidade é atribui
O comando leia segue a seguinte regra sintática:
< e
é entrada de e O ij |
z e
a
Exemplos
Teia (1);
leia (4, XPTO, NOTA);
SAÍDA DE DADOS
Fara que a algoritmo possa mostrar os dados que calculou, como resposta ão problema
que resolveu, adotaremos um comando de saída de dados denominado escreva, cuja finali-
dade é exibir o conteúdo da variável identificada,
O comando escreva segue a seguinte regra sintática:
DIAGRAMA
ESTRUTURAS |
DE CONTROLE
Objetivos
* Estruturas de controle do
Apresentar o conceito de estrutura segiiencial
de fluxo de exe:
fluxo de execução
ão e ilustrar a construção de
& Estrutura segiiencial
algoritinos através de etapas lógicas. Explicar a E -
aplicabilidade des estruturas de seleção, sitas ii
riantes, combinações e equivalências, Apresentar » Estrutura de repetição
as estruturas de repetição, suas partienlaridades, P Aplicações específicas de cada
aplicações e equivalências. estrutura
Na criação de algoritmos, utilizamos os conceitos de loco lógico, entrada e sai
de
dados, variáveis, constantes, atribuições, expressões lógicas, relacionais e aritmé . bem
“amo comandos que traduzam esses conceitos de torma a representar 6 conjunto de ucões,
Para que e
se conjunto de ações se tome viável, deve existir uma perfeita relação lógica
imtrinse:
vas modo peia qual essas ações são executadas, ao modo pelo qual é regido o fluxo
de execução do algoritmo.
Por meio das estrutuías básicas de controle da fltixo de exce ução — seg
Nenciação, sele-
vão, repetição — e da combinação delas, poderemos criar algoritmos para solucionar nossos
problemas.
ESTRUTURA SEQUENCIAL
A estrutura sequencial de um algoritmo corresponde a faxo de que o conjunto de ações
primitivas será executado em uma sequência linear de cima para baixo e da esquerda para
Copilvlo3 Esmuvrosdecontrolo | 31
ações
a direta, isto & na mesma ordem em que foram escritas. Convencionaremos que
serão seguidas por um ponto-exírgula (5), que objetiva separar uma ação da outra e auxiliar
à organização sequencial das ações. pois após encontrar um (:) deveremos executar o pró-
«imo comando da sequência.
O Algoritmo 3.1 ilustra o modelo básico que usaremos para escrever os algoritmo
den-
mos com à declaração das
uticamos 6 bloco, colocando imício e fim, e dentro dele inici:
variáveis e depois o corpo do algoritmo.
ALGORITMO 3.1! Modelo geral
1. início // identificação do início do bloco correspondente ao algoritmo
2.
3. // declaração de voriáveis
4.
Da !! corpo do algoritmo
5. ação 1;
7. ação?
8. ação 3;
9.
10.
ln. “
tê; ação n;
13,
14, fim. // fim do algoritmo
Exemplos
a. Construa um algoritmo cue calcule a média aritmética entre quatro notas bimestrais
quaisquer fornecidas por um aluno [Lsuério).
Dados de entrada: quatro notas bimestrais (N?, N2, N3, N4).
Dados de saído: média aritmética anual MA)
O que devemos fazer para transformar quatro notas bimestrais em uma média anual?
Resposta: utilizar média aritmética.
O que é média aritmética?
Resposta: a soma dos elementos divididos pela quantidade deles. Em nosso caso
particular: (NT 4 N2 + N3 + N4]/4
NOTA ———=—=— en E no jo
Durante a elaboração do Algoritmo 3.2, depois de defnidas as variações de entrada e saída de da-
dos, realizamos uma série de perguntas “o quê?” com o objetivo de descobrirmos, de uma man
|
cara |
e objetiva, os aspectos relevantes que devemos considerar no desenvolvimento do algoritmo e das ações
ervolvidas no processamento necessário à obrenção das respostas desejadas.
32 Lógica de programeção
Construção do algoritmo:
ALGORITMO 3.2 Média aritmética
início // começo do algoritmo
ls
fã
3 f| declaração de varidveis
4. real: NL, N2, N3, Nº, // notas bimestruis
bs MA; // média onumi
6.
7
8.
9
/ entrado de dados
Teia (NI, N2, N3, N4);
10. // processamento
u. MA e- (NL + N2 + N3 + Na) / 4;
r.
13. )/ saido de dados
1. escreva (MA);
15.
16. fim. // término do algoritmo
b. Construa um algoritmo que calcule à quantidade de latas de tinta necessárias é o
custo para pintar tanques cilindricos de combustível, em que são fornecidas a altura
e o raio desse cilindro.
Sabendo que:
* alata de tinta custa $ 50,00,
* cada lata contém 5 litros;
* cada liro de tinto pinta 3 metros quadrados.
Dados de entrado: altura (H) e raio (RJ.
Dados de saída: custo (C) e quantidade [QTDE).
Utilizando o planejamento reverso, sabemos que:
* o custo é dado pela quantidade de lotas * $ 50,00;
* a quantidade de lotas é dada pela quantidade total de | tros/5;
* a quantidade total de litros é dada pela área do cilindro/3;
* a área do cilindro é dada pela área da base + área luteral;
* area da base é [PI * soi(R,2));
* cúrea lateral é altura * comprimento: [2 * PJ *R* Hj;
* sendo que R fraio) e H altura) são dados de entrada e PI é uma constante de
valor conhecido: 3,14.
Construção do algoritmo:
ALGORITMO 3.3 Quantidade de latas de tinta
1. início
2. real: H, R;
3. real: €, Qtde, Área, Litro; Ceitiaa
to
à
Capítulo 3 Estruturas de controle
ALGORITMO 3.4 Média aritmética com aprovação
1, início
ê // declaração de variáveis
3 real: NI, N2, N3, M4, // notas bimestrais
. HA; // médio anual
5. Teia (NI, AZ, N3, N4); // entrada de dodos
6. MA e (NL + NZ+N3+ NI), 4; // processomento
7 escreva (MA); // saíuu de dados
8
9
0
1
se (MA >= 7)
então
10. escreva ("Aluno Aprovado!");
q, fimse;
12. fim.
SELEÇÃO COMPOSTA
Quando tivermos sitnações em que duas alternativas deperidem de uma mesma condi
», uma de a condição ser verdadeira e outra de a condição ser falsa, usamos a estrutura
de seleção composta. Supondo que um conjunto de ações dependa da avaliação verdadeiro
« uma única ação primitiva dependa da avaliação falso, usaremos uma estrutura de seleção
semelhante ao seguinte modelo:
se <condição»
então
início // início do bloco verdade
et;
(2; // segiiência de comundos
Cn;
fim; // fim do bloco verdade
senão
C; (ação primiciva)
fimse;
Observamos que a existência do bloco verdade continua, sendo que cle será executado
caso <condição» (expressão lógica) seja verdadeira. Porém, a seleção agora é composta,
pois, caso o resultado seja falso, teremos a execução do comando C (ação primitiva) que
segue a cláusula senão.
| lógica de programação
seleção composta p((se)) —” expressão Tógica Ce
ação primitiva | q>( senã
ação primitiva
E |
No caso de existir um conjunto de ações que deveria ser executado quando o iesultado
da condição fosse fals
[— DIAGRAMA 4 &
+ exiaríamos um “bloco falsidade”, como apresentado no seguinte
modelo:
se <condição>
então
início // início do bloco verdade
Cla
C2; // sequência de comandos
Cn;
fim: // fim do bloco verdode
senão
início // início do bloco faisidade
Ci;
C2; // sequência de comardos
En;
fim; // fim do bloco falsidade
fimse;
Exemplo
8. Vamos incluir agora, no Algoritmo 3.4, q informação que provém do resultado falso
da condição (MA >= 7), ou seja, a reprovação do aluno.
ALGORITMO 3.5 Média aritmética com aprovação e reprovação
1. início
2. fi declaração de variáveis
% real: Ni, N2, N3, N4, // notas bimestrais (Continue)
Copitulo 3 Estruturas de control
4 Ma; // médio onual
5. Teia (NI, N2, N3, N4);
6. Mae (NIENZ-N3-N9)/ 4;
E escreva ("Nédia Anual =", MA);
8
se (MA >=7)
9. então
10. início // bloco verdade
1. escreva ("Aluno Aprovado!");
IB: escreva ("Parabéns!");
13: fim;
14. senão
15. início // bloco falsidade
16. escreva ("Aluno Reprovado!)
1. escreva ("Estude Mais!"
18. fim;
19 fimse;
20. fim,
SELEÇÃO ENCADEADA
Quando, devido à necessidade de processamento, agruparmos várias seleções, formare-
os uma seleção encadeada, Normalmente, tal formação ocorre quando uma determinada
«ção vu bloco deve ser executado se um grande conjunto de possibilidades ou combinações
de situações for satisfeito.
Seleção encadeada heterogênea
Podemos construir uma estrutura de seleção de diversas formas, sendo que, ao enca-
dearmos várias seleções, as diferentes possibilidades de construção tendem a um número
ado.
Quando não conseguimos identificar um padrão lógica de construção em numa estrutura
te seleção encadeada, dizemos que ela é uma estrutura de seleção encadeada heterogênea.
O modelo a seguir expressa um exemplo de uma seleção heterogênea
se <condição 1>
então
se <condição 2>
então
início // bloco verdade 1
cl;
fim; // bloco verdade 1
fimse; (Gontima)
40 Lógico de programação
Te então
8. escreva (“Triângulo Equilátero");
9. enão
10. se ((A=B) ou (A=C)ou(B=C))
1 então
12, escreva ("Iriêngulo Isásceles);
is. senão
14. escreva ("Triângulo Escaleno");
15. finse;
16. fimse;
v. senão
18. escreva ("Estes valores não formam um triângulo!"
19, fimse;
20. fim. // algoritmo
Seleção encadeada homogênea
Chamamos de seleção encadeada homogênea 2 constmição de diversas estruturas de se-
leção encadeadas que seguem um determinado padrão lógico.
Se então se
Vamos supor que, em um dado algorimo, um comando genérico W dexa ser executado
apenas quando farem satisfeitas as condições <Condição 1>, Condição 2>, <Condiçao 3>«
<Condição 4>, Teríamos:
se <Condição 1>
então se <Cundição 2>
então se <Condição 3>
então se <Condição 4>
então W;
fimse;
fimse
fimse;
fimse;
Esta construção segue um padrão, Após cada então existe ontro se, não existem senões:
temos uma estrutura encadeada homogênea. Outro fator importante é que o coinando V só
condições forem ao mesmo tempo verdadeiras; portanto,
será executado quando todas à
seria equivalente a escreves: simplificadamente:
se (<Condição 1> e «Condição 2> e «Condição 3> e <Condição 4>)
então W;
fimse;
Capítulo 3 Estruturas de controle 4
A Tabela 3.3 expressa nitidamente a necessidade de todas as condições serem verdadeiras
simultaneamente.
Condição! Condição? Condição3 Condiçãos Ação executada
W V à V w
Se senão se
Vamos supor que em determinado algoritmo uma variável X possa assumir apenas quatro
valores, VL, V2, V3, V4, é que exista um comando diferente que será executado para cada
valor armazenado em X.
Teremos, por
emplo, a seguinte situação
se (X = V1)
então
Ely:
fimse;
se (X - v2)
então
c2;
se (X = 43)
então
C3;
fimse;
se (X = vá)
então
Cg;
fimse;
A tabela de decisão para 0 exemplo é
=v2 X=v3 Xx=V4 Ação
v F F F ci
F v F F cz
F F v F c3
F F F Y c4
Somente um, e apenas um, comando pode ser executado, isto é, trata-se de ima situação
excludente (se X é igual a Y3, não é igual a VI nem a V2 nem a V4).
42 | lógicade progromeção
Não se trata de uma estrutura encadeada, pois as seleções não estão interligadas. Por isso,
todas as condições (X = Yn) serão avaliadas e ocorrerão testes desnecessários, Para diminuir
a quantidade de testes dessa
estrutura podemos transformá-la em tum conjunto de seleções
encadeadas, conforine o seguinte modelo;
se (X = V1)
então Cl;
senão se (X = 42)
então (2
senão se (X = 43)
então C3;
sendo se (k = V4)
então U4;
fimse;
fimse;
fimse;
fimse;
Essa nova estratura de seleção gera ;
Tabela 3.5
x=vi X=v2 Xx=v3 x=va Ação
Y = e = ci
F v Es = c2
F F v = c3
F F F v ca
Nessa estrutura, o número médio de testes à serem executados foi reduzido. Se o contei
do de X for igual « V2, serão executados
apenas dois testes 4X =VL) é (K=V2) e um comando
(62), enquanto na estrutura anterior seriam inspecionadas quatro condições. embora um
único comando (C2) tenha sido extentado, Em outras palavras, nessa estrutura os testes
terminam depois de encontrada à primeira condição verdadeira.
Essa construção segue um padrão, após cada senão existe outro comando se, c depois
do então existe umusição qualquer (que não seja outra seleção), compondo uma estrutura
tipica que denominaremos se-senão-se.
Por constituir um encadeamento homogêneo. pode ser simplificado, e para tal utilizae-
mos uma nova estrutura, a seleção de milúpia escolhia.
Seleção de múltipla escolha
Quando um conjunto de valores discretos precisa ser testado e ações diferentes
associadas a
io
esses valores, estamos diânie de uma seleção
» encadeada homogênea do tipo
rulo 3 Estruturas de controle | 45
Código de origem Procedência
7,80u9 Sudeste
10 oté 20 Centro-Oeste
Nordeste
ALGORITMO 3.7 Múltipla escolha
« início
!| declaração de voriáveis
real: Preço;
inteiro: Origem;
teia (Preço, Origem);
escolha Origem;
caso 1: escreva (Preco, " — produto do Sul");
caso 2: escreva (Preço, " — produto do Norte");
caso 3: escreva (Preço, " — produto do Leste");
caso 4: escreva (Preço, " — produto do Qeste")
caso 7, 8, 9: escreva (Preço, " — produto do Sudeste");
caso 10..20: escreva (Preço, " — procuto co Centro-Oeste");
caso 5, 6, 25..30: escreva (Preço, " — oroduto do Nordeste");
caso contrário: escreva (Preco, " — produto importado");
15. fimescolha;
16. fim.
ExERCÍCIOS DE FIXAÇÃO 2
2.1 Dado o algoritmo a seguir, responda:
início
lógico: A, B, Cs
se À
então CI;
senão
início
se B
então
se €
então C2;
senão
início
03;
ca;
fm
fimse; ontianta
“6
| Lógica de progremução
fimse;
cs;
fim;
finse;
C6;
fim.
22
29
24
26
a) Se A = verdade, B = verdade, C = falsidade, quais comandos serão executados?
bj Se A = falsidade, B = verdade, C = falsidade, quais comandos serão executados?
Se A = falsidade, B — verdade, C = verdade, quais comandos serão executados?
à) Quais são os valores de A, B, C para que somente os comandos C5 e Có sejam
executados?
e)
Quais são os valores de A, B, C para que somente o comando Cé seja executado?
Escreva um algoritmo que leia três valores inteiros é diferentes é mostre-os em ordem
decrescente. Utilize para tal uma seleção encadeada.
Desenvolva um algoritmo que calcule as raízes de uma equação do 2º grau, na forma
Axº 4 Bx + C, levando em consideração a existência de raízes reais.
Tendo como dados de entrada a altura e o sexo de uma pessoa, construa um algoritmo que
calcule seu peso ideal, utilizando as seguintes fórmulas:
* parahomens: (72.7 * h)— 58;
* para mulheres: (62.1 *h) 44,7,
Faça um algoritmo que leia o ano de nascimento de uma pessoa, calcule e mostre suá idade
e, também, verifique e mostre se ela já tem idade para votar (16 anos ou mais) é para
conseguir a Carteira de Habilitação (E anos ou mais).
Escreva um algoritmo que leia o código de um determinado produto é mostre à sua
classificação, Utilize a seguinte tabela como referências:
Código Classificação pi
I Alimento não-perecível
230u4 Alimento perecível
5ou6 Vestuário
7 Higiene pessoal
Bate IS Limpeza e utensílios domésticos
Qualquer outro código Inválido
27
28.
29
Copítulo 3 Estruturas de controle | 47
Elabore um algoritmo que, dada a idade de um nadador, classifique-o em uma das seguintes
categorias:
Idade o Categoria
Saté 7 anos Infantil A
Baté IO anos Infantil B
[até |3 anos Juvenil A
14 até 7 anos Juvenil B
Maiores de 18 anos Adulto
Elabore um algoritmo que calcule o que deve ser pago por um produto, considerando
o preço normal de etiqueta e a escolha da condição de pagamento. Utilize os códigos
da tabela a seguir para ler qual a condição de pagamento escolhida e efetuar o cálculo
adequado,
Código Condição de pagamento
I À vista em dinheiro ou cheque, recebe 10% de desconto
E À vista no cartão de crédito, recebe 5% de desconto
3 Em duas vezes, preço normal de etiqueta sem juros
4 Em três vezes, preço normal de etiqueta mais juros de 10%
Elabore um algoritmo que leia o valor de dois números inteiros e a operação aritmética
desejada; calcule, então, a resposta adequada. Utilize os simbolos da tabela a seguir para ler
qual a operação aritmética escolhida.
É
Operação aritmética
Adição
Subtração
Multiplicação
Divisão
O IMC Índice de Massa Corporal é um critério da Organização Mundial de Saúde para
dar uma indicação sobre a condição de peso de uma pessoa adulta. A fórmula é IMC =
peso | (altura)?. Elabore um algoritmo que leia o peso e a altura de um adulto e mostre sua
condição.
abaixo de 18,5
entre 18,5e 25
entre 25e30
IMC em adultos —
abaixo do peso
peso normal
acima do peso
obeso
acima de 30
50 | Lógica do programação
9. MA e (NI + N2 + N3 + N9)/4; // cálculo de média
10. escreva ("Média Anual =", MA);
dis se (MA >= 7)
12. entao
13. início
14, escreva (“Aluno Aprovado! ");
15, escreva ("Parabérs!!);
16. fim;
17. senão
18. início
19, escreva ("Aluno Reprovado!");
20. escreva ("Estude Mais!");
Bl. fim;
22. fimse;
23. CON — CON + 1; // incrementar q contador em um
24. fimenquanto;
25. fim
Devemos abservar que o contador CON foi inicializado com o valor Q antes do lago, e que
a cada iteração exa incrementado em |
Em uma variação do Algoritmo 3.8, pode
séria à média aritmética das 50 médias anuais, utilizando uma expressão arimética gigan-
fumos calcular à média geral da turma, que
tescas
(MI + MZ + MI + ME + 5 +... + MM + M50)/50
9 que se torna inviável. Pademos utilizar nessa situação a
lo acumule em uma variável, conhecida conceitral-
s vantagens da estrutura de reped-
cão, fazendo um laço que a cada execu
mente como acumulador, o somatório das médias anuais de cada aluno, Após o término da
repetição, teríamos a somia de todas as médias na variável de acumulação, restando apenas
dividia pela quantidade de médias somadas (50).
Exemplo (acumulador)
1. inteiro: ACM, // declaração do ocumutador
Bi t: // declaração de uma variável numérico quelquer
3. AM e O: // inicialização do acumulador
é. ACM ACM + X5 // ocumulor em ACM O valor anterior mais o valor de x
O processa de acumulação é muito similar aa processo de contagem. A única diferença
é que na acumulação o yalor adicionado pode variar (variável X, no exemplo; enquanto na
ática, execute mais
contagem o valor adicionado é constante. Pará ilustrar o processo na |
alguntas vezes as duas últimas ações do exemplo acima, observando o que acontece com à
variável ACM.
Uma solução para o algoritmo que deve ler a nota de 59 alunos e caleulay a média aril-
mética da turma seria:
Capitulo 3 Estruturas deconrole | 51
ALGORITMO 3.9 Média aritmética de 50 alunos
início
4 | declaração de variâveis
real: MA, // médio anuoi de um dado aluno
ACM, // acumulador
MaT; // média anual da turma
inteiro: CON; // contador
CON — 0; // inicialização do contador
AM - 0; // inicialização do acumulador
enquanto (CON < 50) faça // teste de condição
Teia (MA);
ACM + ACM + NA; // soma em AH dos valores Lidos em MA
CON e CON + 1; // contugem do número de médias fornecidas
fimenquanto;
MAT + ACM/50; // cóiculo da média anual da turma
escreva ("média anua da turma = ", MAT);
fim.
O Algoritmo 3.9 utiliza o pré-conhecimento dia quantidade de alunos da turma da qual
desejava a média geral, o que permitiu construir um laço de repetição com quantidade
pre-determinada de execuções, Entretanto, se não soubéssemos quantos eram os alunos, o
“e Eavíamos pára controlar 6 laço de sepelição? Precisaríamos de tum laço que fosse exe-
uado por uma quantidade indeterminada de vezes. Assim, teríamos de encontrar outro
critério de parada, que possibilitasse que o laço fosse finalizado após a última média anual
ndependente de quantas sejam) ter sido informada. Isso pode ser feito utilizando um valor
edelinido como finalizador, a ser informado após a última média.
Para aplicar tal conceito ao algoritmo da média geral da turma, usaremos como finali-
zador o valor —1 que, quando encontrado, encerra o laço sem ter seu valor computado ao
umulador.
ALGORITMO 3.10 Média anual com finalizador (estrutura enquanto)
1. início
ê real: MA, // médio anual de um dudo aluno
ACM, // acumulador
4: MAT; // médio anual da turma
5. inteiro: CON; // contador
5. CON «O; // inicialização do contador
ACM e 03 // iniciolização do acumulador
3. MA + 0; // inicialização da voriável de leitura
3. enquanto (MA <> 1) faça // teste da condição de porada
0 leia (MA);
se (MA <> 1) então // evita acumulação do finaiizador
início
ACM «ACM + MA; // acumula em ACM os valores lidos em MA
14. CON « CON + 1; // contagem do número de médias fornecidos
(Gontinta)
Sa Lógica de programação
16. fimse;
Bs fimenquanto;
18. se (CON=>0) // houve pelo menos ums execução
19. então
20. início
al. MAT + ACM/CONS
2. escreva ("Méúia anusl da turma = ", MAT);
23. fim;
2a. senão
25. escreva (“Nenhuma média válida fornecida");
26. fimse;
27. fim.
Deveinos observar que a construção desse algoritmo é muito similar ao seu antecessor
(Algoritmo 3.9), exceto pelas condiçõ
licionais nas linhas 11 e 13, Aconclição da linha 11
impede que o valor finalizador (-1) seja acumulado é, ao mesmo tempo, evita que o conta-
dor seja inereimentado. A condição da linha 18 garante que a média somente será calculada
se ao menos um valor válido tiver sido fornecido.
Exemplo
Construa um algoritmo que calcule a média aritmética de um conjurito de números pares
que forem fornecidos pelo usuário. O valor do Enalização será a entrada do número O
Observe que nade impede que o usuário forneça quantos números ímpares quiser, com
a ressalva de que eles não poderão ser acumulados.
ALGORITMO 3.11 Média aritmética de um conjunto de números pares
1, início
inteiro: N, // número fornecido pelo usuário
CON, // conimior
ACM; // acumitador
// média dos números pares
CON inicialização do contador
ACM — 0; // inicialização do acumulador
o Ne lj df inicialização da variável de Leitura
9. enquanto (N > 0) faça // teste do condição de porada
2
3
4.
5 real: MM
õ
%
8
10, Teia (N);
u. se (N>0) e ((N mod 2)=0) // resto da divisão é igual a zero?
1z. então // o número é par (divisivel por 2) e maior que 9
13. início
4 ACM + ACM + N5 // ocumvlo em ACH DS números pares
15. CON — CON + 1; // contugem de números pares
16. fim;
17. finse;
18. — fimenquanto;
19. se (CON>0) // houve pelo menos um nimero par válido
20. então dlontistum
Capitulo 3 Esmuturas decontrolo | 55
* o laço é execintado pelo menos uma vez, é se este for 0 caso o usuário teve bastante
sorte e acertou o número na primeira tentativa (TEN será igual a um);
«Construa um algoritmo que permita fazer um levantamento do estoque de vinhos de
uma edega, tendo como dedos de entrada tipos ce vinho, sendo: 'T' para tinto, 'B'
pera branco e 'R“ para rosê. Especifique a porcentagem de cada tipo sobre o total
geral de vinhos; e quantidade de vinhos é desconhecida, utilize como finalizador
“Fº de fim.
ALGORITMO 3.14 Repita com escolha
1. início
caracter: TV; // tipo de vinho
inteiro: CONV, // contador de vinho
CT, // contador de tinto
CB, // contador de branco
CR; // contador de rosê
real: PT, PB, PR; // porcentugem de tinto, branco e rose
4! inicialização das diversos contadores
CONV e 0;
ET É 04
CB e O;
CR e 0;
repita
leia (TV);
escolha TV
casa "TºE CT €- CT + 14
CB CB +];
: CRE CR+1
caso
fimescolha;
CONV «- CONV + 1;
até TV = "FP";
CONV e CONV —
se (CONV > 0)
então
início
PT < (AT*100) /CONV;
PR e (AB*100)/CONV;
PR e (AR*100) /CONV;
escreva ("Porcentagem de Tintos =", PT);
escreva ("Porcentagem de Brancos - *, PB);
escreva ("Porcentagem de Rusês = ", PR);
; H descontar o finalizador “p”
fim;
senão
escreva ("Nenhum tipo de vinho foi fornecido!")
fimse;
36. fim.
56
| tégimaida proginicião
Observamos que:
* além do contador geral de vinhos (CONV), foi necessário utilizar u
cada tipo de vinho, €7, CB e 2a
contador para
* esta É uma aplicação típica da seleção de múltipla escolha, em que cada tipo de si
uho cortesponde a um caso;
* após laca de repetição, o contador geral de vinhos foi decrementado em 1, para
descontar o linalizador
REPETIÇÃO COM VARIÁVEL DE CONTROLE
minar 6 número de vezes em que o bloco será executado, Sabemos que ele ser
enquanto mma condição for satisteita — enquanto — vii até que uma coná
= repita A sutura para é diferente, já que sempre repete execn
Nas estruturas de repetição vistas até agora, ocorrem cases em que se tórna dificil deser-
executado
vo predeterminado de vezes, pais ela tão prevê uma condição e possti limites fixos
O modelo genérico para a estrutura de repetição para É o seguinte:
para V de vi até yº passo : faça
E;
te;
ch;
fimpara;
Em que:
* Vénvariável de controles
* vi é oxalor inicial da variável V;
* ví o valor final de variável V, ouseja, oxaloratê o qual cla vai chegar;
* pévwsalor do incremento dada à variável U
|
DIAGRAM,
| >| opeando aritrético
Lag primitiva —+( fnpaa)——+()—
A
Copítulo 3 Estruturas ce controle | 57
Possuímos, então, um laço com contador de forma compacta, em que sempre temos uma
ável atingiu o
nicialização (vi Jda variável de controle (V), um teste para verilicar se a var
mite (vf) e um acréscimo (incremento de p) na variável de controle após cada execu
to bloco de repetição.
Exemplos
a. Vollando ao cálculo da média eriimética de uma turma fixa de 50 alunos, resolven-
do o problema com a repetição para, teríamos:
ALGORITMO 3.15 Média anual de 50 alunos (com para)
1. início
2. real: MA, // média onuul de um dado aluno
% ACM, // acumulador
MAI; // média anual da turma
inteiro; V; // vuriável de controle
AM e 0;
para V de 1 até 50 passo 1 faça
Teia (NM);
ADM + ACM + HA;
fimpara;
MAT + ACM/50;
escreva ("média anual da turma =", MAI);
b, Ecbore um algoritmo que efetue a soma de todos os números ímpares que são múl-
tiplos de 3 e que se encontram no conjunto des números de 1 até 500
ALGORITMO 3.16 Soma dos números míltiplos de 3
início
teiro: SI, // soma dos números impores
4) maltiplos de três
vi // variável de controle
sLe 0;
para V de 1 até 50 passo 1 faça
se (Wmod 2 = 1) // 0 número é impor?
então
início
se (V mod 3 =0) // múltiplo de três?
então SI «SI +;
finse;
fimse;
fimpara;
escreva ("Soma
60 | Lógica de programação
b Modifique o algoritmo pora que ele imprima a tabuada de quaisquer húmeros,
sendo que esses são fornecidos pelo usuário, até encontrar como finalizador =)
Sabendo que o primeiro número-buss fornecido não é —1:
* utilizando enquanto:
ALGORITMO 3.21 Tabuada de qualquer número usando enquanto
1. início
2. inteiro: N, // nimero-base
& CON; // contador
4. Teia (N);
5. — enquanto (N <> 1) faça
6. CON e Is
e enquanto (COM <= 10) faça
8. escreva (CON, "x", MN, =, CONS);
ER CON e CON = 1;
10. finenquanto;
da teia (n);
12. — fimenquanto;
13. fim.
* utilizando repita:
ALGORITMO 3.22 Tasuada de qualquer número usando repita
lo
2. inteiro: N, // nômero-base
3 CON; // contidor
A eia (N);
5. repita
6 CON 15
7 repita
8. escreva (CON, "xt, N, =", CON);
9. CON + con +
10. atê (CON > 10);
ii Teia (N);
i2. até (N=-1);
13. fim.
* utilizando para:
ALGORITMO 3.23 Tabuada de qualquer número usando para
1. início
2. inteiro, // núero-base
3. COM; // contador
tn X; // variável de controte
5. Teia (N);
5. para Xde l até 7 para l faça // nimero de repetições
z. [4 & indefinido! (eia
Copihlo3 Estruturas deconralo | 61
8. cor e 1;
3. para CON de 1 até 10 passo 1 faça
19. escreva (CON, “x "4 N, ! =", CONAN);
ds CON & CON + 1;
12. fimpara;
13 Teia (N);
1 fimpara;
- fim.
Verificamos na linha 6 desse exemplo a impossibilidade de construir esse algoriumo utili
rando à est
tura para, pois esta exige que o número de repetições, além de ser finito, seja
predeterminado
Exercicios DE FIXAÇÃO 3
3.1 Dado o algoritmo a seguir, responda:
1, inicio
2, inteiro: 8, B, 1, d;
3. eia (A);
4, repita
5. para 1 de 1 até & passo 1 faça
6. Je li;
7. enquanto (U <= A) faça
8. escreva (J);
9. Je d+;
10. fimenquanto;
El fimpara;
iê, Bea;
13, Teia (A);
14. até ((A = 8) ou (A <= 0));
15, fim,
a) O que será mostrado se forem fornecidos os números 4 e O
b) O que será mostrado se forem fornecidos os números 3, 2e 2.
€) O que será mostrado se forem fornecidos os números 2, |, e O.
d) O que será mostrado se forem fornecidos os números | e O
3.2 Elabore um algoritmo que calcule um número inteiro que mais se aproxima da raiz
quadrada de um número fornecido pelo usuário.
3.3 Construa um algoritmo que verifique se um número fornecido pelo usuário é primo ou não.
62
| lógica ee programação
Sendo H= | + 1/2+ 1/34 1/4 + .. + IN, escreva um algoritmo para gerar 0 número
H. O número N é fornecido pelo usuário.
Elabore um algoritmo que calcule N! (fatorial de N), sendo que 6 valor inteiro de N é
fornecido pelo usuário,
Sabendo que
* NS [X2%3x%. x (NO DN;
* O!= |, por definição.
A série de Fibonacci é formada pela seguinte seguência: |, |,2,3,5,8, 13,2], 34,55... etc,
Escreva um algoritmo que gere a séi
de Fibonacci até o vigésimo termo.
Escreva um algoritimo que leia um conjunto de 20 números inteiros & mostre qual foi o
maior e o menor yalor fornecido.
EXERCÍCIOS PROPOSTOS
ESTRUTURAS DE SEQUENCIAÇÃO
y | “| "| "|
Construa um algoritmo que calcule a média ponderada entre 5 números quaisquer, sendo
que os pesos a serem aplicados são |, 2, 3, 4 e 5 respectivamente.
Elabore um algoritmo que calcule a área de um circulo qualquer de raio fornecido.
Prepare um algoritmo capaz de inverter um número, de 3 dígitos, fornecido, ou seja,
apresentar primeiro a unidade e, depois. a dezena e a centena.
Ao completar o tanque de combustivel de um automóvel, faça um algoritmo que
calcule o consumo eferuado, assim como a autonomia que o carro ainda teria antes do
abastecimento. Considere que o veículo sempre seja abastecido até encher o tanque e
que são fornecidas apenas a capacidade do tanque, a quantidade de litros abastecidos e à
quilometragem percorrida desde o último abastecimento
Dada uma determinada data de aniversário (dia, mês e ano separadamente), elabore um
algoritmo que solicite a data atual (dia, mês e ano separacamente) e calcule a idade em
anos, em meses é em dias.
Um dado comerciante maluco cobra 10% de acréscimo para cada prestação em atraso
& depois clá um desconto de [0% sobre esse valor: Faça um algoritmo que solicite o
valor da prestação em atraso e apresente o valor final a pagar, assim ceme o prejuizo do
comerciante na operação.
EstRuTURAS DE SELEÇÃO
7.
Escreva um algoritino que, a partir de tm mês fornecido (número inteiro de | a 12),
apresente o nome dele por extenso ou uma mensagem de mês inválido.
23.
24.
Copítula 3 Estrufurcis de contele | 65
Elabore um algoritmo que imprima todos os números primos existentes entre NI e N2,
em que N| e N2 são números naturais fornecidos pelo usuário.
Construa um algoritmo que leia um conjunto de dados contendo altura e sexo ((M' para
masculino e 'F" para feminino) de 50 pessoas e, depois, calcule e escreva:
* a maior e a menor altura do grupo;
* amédia de altura das mulheres;
* o número de homens e a diferença porcentual entre eles e as mulheres.
Prepare um algoritmo que calcule o valor de H, sendo que ele é determinado pela série
H= 1/1 132 45841144. 49950
Elabore um algoritmo que determine o valor de S, em que:
S= 1/1 -U4 + 3/9- 4/16 + 5/25 - 6/36 ...— 10/100.
Escreva um algoritmo que calcule & escreva a soma dos dez primeiros termos da seguinte
série:
2/500 — 5/450 + 2/400 — 5/350 — ...
Construa um algoritmo que calcule o valor dos dez primeiros termos da série H, em que:
H= Ipot(1,3) = 1/pot(3,3) + lipot(5,3) — I/pot(7,3) + 1/pot(9,3) =...
Uma agência de publicidade quer prestar serviços somente para as maiores companhias
— em número de funcionários — em cada uma das classificações: grande, média, pequena
e microempresa. Para tal, consegue um conjunto de dados com o código. o número de
funcionários e o porte da empresa. Construa um algoritmo que liste o código da empresa
com maiores recursos humanos dentro de sua categoria. Utilize como finalizador o código
de empresa igual à O.
Calcule o imposto de renda de um grupo de dez contribuintes, considerando que os dados
de cada contribuinte, número do CPF número de dependentes e renda mensal são valores
fornecidos pelo usuário. Para cada contribuinte será feito um desconto de 59% do salário
mínimo por dependente
Os valores da alíquota para cálculo do imposto são:
” Rendalíquida Alíquota
Até 2 salários mínimos Isento
253 salários mínimos 5%
3asS salários mínimos 10%
Sa 7 salários mínimos 15%
Acima de 7 salários mínimos 20%
Observe que deve ser fornecido o valor atual do salário mínimo para que o algoritmo
calcule os valores corretamente.
ca de programação
Foi realizada uma pesquisa sobre algumas características físicas da população de uma certa
região, a qual coletou os seguintes carlos referentes a cada habitante para análise:
* sexo ((M'— masculino ou 'F'- feminino);
* cor dos alhos (A — azuis, 'V' — verdes ou “C'- castanhos):
* cor dos cabelos (IL! — loiros, 'C' - castanhos ou 'P-- pretos);
* idade.
Faça um algoritmo que determine e escreva:
* a maior idade dos habitantes;
* a porcentagem entre os indivíduos do sexo masculino, cuja idade está entre [8 e 35
anos, inclusive;
* a porcentagem do total de indivíduos do sexo feminino cuja Idade está entre 18 e 35
anos, inclusive, e que tenham olhos verdes e cabelos loiros.
O final do conjunto de habitantes é reconhecido pelo valor —| entrando como idade.
Anacleto tem [,50 metro e cresce 2 centímetros por ano, enquanto Felisberto tem
1,10 metro e cresce 3 centimetros por ano, Construa um algoritmo que calcule e imprima
quantos anos serão necessários para que Felisberto seja maior que Anacleto.
Realizou-se uma pesquisa para determinar alguns dados estatísticos em relação ao conjunto
de crianças nascidas em um certo período de uinia determinada maternidade, Construa um
algoritmo que leia o número de crianças nascidas nesse periodo e, depois, em um número
indeterminado de vezes, o sexo de um recém-nascido prematuro ('Mº - masculino ou
= feminino) e o número de dias que este foi mantido na incubadora.
Como finalizador, teremos a letra “X' no lugar do sexo da criança.
Determine e imprima:
* a porcentagem de recém-nascidos prematuros;
* a porcentagem de recém-nascidos meninos e meninas do total de prematuros;
* a média de dias de permanência dos recém-nascidos prematuros na incubadora;
* o maior número de dias que um recém-nascido prematuro permaneceu na incubadora;
Um cinema possui capacidade de 100 lugares e está sempre com ocupação total. Certo dia,
cada espectador respondeu à um questionário, no qual constava:
* sua idade;
* sua opinião em relação ao filme, segundo as seguintes notas:
A
B
c Regular
D Ruim
E
o
r
a.
2
x
Copltulo 3 Estruturas decontrole | 67
Elabore um algoritmo que, lendo esses dados, calcule e imprima:
* aquantidade de respostas Ótimo;
* adiferença porcentual entre respostas Bom e Regular;
* amédia de idade das pessoas que responderam Ruim:
* a porcentagem de respostas Péssimo e a maior idade que utilizou essa opção;
* adiferença de idade entre a maior idade que respondeu Ótimo e a maior idade que
respondeu Ruim,
Em um prédio há três elevadores denominados A, Be C. Para otimizar o sistema de
controle dos elevadores foi realizado um levantamento no qual cada usuário respondia:
+ o elevador que utilizava com mais fregiéncia:
* o período em que utilizava o elevador, entre
* IM — matutino;
* *W' = vespertino;
* “N' = noturno.
Construa um algoritmo que calcule e imprima:
* qual é o elevador rmais frequentado e em que período se concentra o maior fluxo;
* qual o período mais usado de todos e a que elevador pertence:
* quala diferença porcentual entre o mais usado dos harários e o menos usado;
* quala porcentagem sobre o total de serviços prestados do elevador de média
utilização.
Neste capítulo vimos que o fluxo de execução de um algoritmo segue uma estrutura
segiencial, que significa que o algoritmo é executado passo a passo, sequencialmente, da
primeira à última ação. Vimos a estrutura de seleção, que permite que uma ação (ou blo-
co) seja ou não executada, dependendo do valor resultante da inspeção de uma condição. A
seleção pode ser simples, quando contém apenas a cláusula então; ou composta, quando
contém então e senê
Verificamos que seleções encadeadas homogêneas são multo comuns, por Isso especifica-
quando é encadeada, pode ser homogênea cu heterogênea.
mos a seleção de múltipla escolha, que apresenta casos que são avaliados. Por último,
apresentamos a estrutura de repetição, que permite que trechos de algoritmos sejam
repetidos conforme certos critérios de parada, e verificamos que podemos construir os
laços de repetição de três maneiras: repetição com teste no início — enquanto; repetição
com reste no final -- repita; e repetição com variável de controle — para. Observamos que
no enquanto o laço pode não ser executado, pois a condição está no início; que no repita
o laço é executado pelo menos uma vez, pois a condição está no final; e que no para é ne-
cessário um número finito e determinado de iterações, pois é preciso conhecer o valor final
da variável de controle do laço.
70 | togicade programpção
Exemplo
Um vetor de 40 posições reais poderio ter a seguinte definição e decleração:
tipo CLASSE - vetor [1..40] de reais; // definição do tipo vetor
CLASSE: VCLASSE; // declaração do vartóvei vetor
A Tigura 4.1 ilustra como o vetor YCLASSE, do tipo construido CLASSE. poderia ser repre-
sentado. Observamos que à primeita posicão do vetor é 1, que € o limite inicia! (LI, e que
a última posição é 10, que é o limite final (LF).
FIGURA AI Vetor VCLASSE
VCLASSE
5 | 23 | 96 | 6,4 73 8,9
Devemos ressaltar que LI e LF devem ser obrigatoriamente constantes inteiras cc LT > LF
Um
cõesdo vetor
nero de elementos do vetor será dado por LF — LI = LL Isto significa que as posi-
io identificadas a partir de LI, com incrementos unitários, até LF, conforme
representado na Figura 4.2
42 Vetor genérico
RA Es
Manipulação
Ao imaginarmos o elevador de um prédio, sabeisos que é
é capaz de acessar qual-
quer um de seus andares. Entretanto, não basta saber qual undar desejamos atingir se não
souhermos o nome do edifício, póis qualquer um possui andares, O que precisamos saber
de antemão é o nome do edifício é só então nos preacuparmos para qual daqueles andares
queremo
O mesmo acontece com os vetores, visto que são compostos por diversos dados é, como
podem existir muitos vetores, torna se necessário determinar priméiro qual vetor contém o
dado desejado é, depois, especificar em qual posição este se encontra.
A Figura 4.3 mostra im dado em particular dentro do vetor VCLASSE
Capítulo 4 Estruturas de dados | 7]
Exemplo
FIGURA 4.3: Exemplo de posição em um vetor
VELASEETO] ———— =,
O nome do vetor é determinado por meio do identificador utilizado na declaração de va-
riáveis, e a posição, por meio da constante, da expressão aritmética ou da variável que estiver
dentro dos colchetes, também denominada indice.
NOTA —— == —
É importante não confundir o índice com o elemento. O índice é a posição no vetor (o andar do pré-
dio), enquanto o elemento é o que está contico naquela posição (a conteúdo do encar)
=
Após isolar ur único elemento do vetor, poderemos manipulílo através de qualquer
operação de entrada, saída ou atribuição
Exemplo
v[5] — 28;
teia (v[5]);
escreva (v[5]);
As estruturas de dados são estritamente relacionadas com os algoritmos. Então, para uma
melhor percepcão desses conceitos, utilizaremos a situação de construir um algoritmo que
calcule a média aritmética geral de uma classe com dez alunos e imprimir à quantidade de
notas acima da média calculada.
Normalmente, para calcular a média, faríamos:
ALGORITMO 4.1 | Cálculo da média aritmética de |O notas
1. início
2. real: MA, // médio anuol de um dado atuno
de ACF, // acumulador
& MAT; // média anual da turma
Bu inteiro: CON; // contador
6. CON «— O:
Pa ACM e Os
8. enquanto (CON < 10) faça “Contirna)
72 Lógica do programação
Teia (MA);
ACM e ACM + Ma;
CON e con + 1;
12. fimenquanto;
13. MAT — ACN/Ã0;
14, escreva (“Védia enual da turma = *, MT);
15. fim.
Entretanto surge um probleiá: para procedera contagem dos áiihos com not acima da
média da turma, fizse necessária a comparação de cada unia dasidez notas córi 6 conteúdo
da variável MAT. Porém, todas as notas Lojam lidas em uma mesma va
foi acumulado em uma seguneia var
“el MA) é seu valor
vel (ACM), a fim de poder calcular à média (NAT). Isto
ato a média, amos acesso às nove notas anteriores que-o
amos, portanto, utilizar uma variá
implica que, ao ter calo
algoritmo utilizo; dev
el para cada nota, algo como:
ALGORITMO 4.2 Notas acima da média usando variáveis simples
1. início
2. inteiroi A, B, E, DE, FG H 1, d, Notafcima:
3. real; Média;
4. Notafcima e 0;
5 Teia (A, B, C,D, E, F, GH, 1, d);
5. Média < (S+B+C+D+EsF+G+H+149)/10;
7. se (A > Média)
8. então Notadcira c NotaAcima + 1;
Gs fimse;
10. se (B > Média)
Hs então Notafcims — NotaAcima + 1;
12. fimse;
Edo se (C > Média)
14. então Notafcima — Nolafcima + 1;
35. fimse;
16. se (D > Média)
17 então Notahcima — Notafcima 4 1;
18, fimse;
19, se (E > Média)
20. então NotaAcima « - Notancima + 1;
Elis fimse;
22. se (f > Media)
2. então Hotaúcima <— Notaacima + 1;
28. fimse;
25. se (G> Média)
26. então Notaflcima <— Notalcima + 1;
22. fimse;
28, se (H > Media)
ao. então NotaAcira < Notalcima + dg
30. fimse;
3, se(l> Média)
(Cia
Copitlo 4 Esruturas dedados | 75
ALGORITMO 4.5 Preenchendo o vetor
ESBvosau
ício
tipo VNS = vetor [1..100] de inteiros;
WAS;
inteiro: T;
para ! de 1 até 100 faça
se ((I mod 2) => 0)
então A[I] — 1;
senão ALI] e 0;
fimse;
fimpara;
fim.
Exercicios DE FIXAÇÃO |
Sendo o vetor V igual à:
x E 6 8 E fu o r | ES
1 2 3 4 5 6 7 8 9 10
eas variáveis X = Ze Y = 4, escreva o valor correspondente à solicitação:
a) VIX +] b) vIX + 2] o vIix +3] a) vIX + 4)
e) VIK*1] 9 vIx*2] e) vIx + 3] h) VIVIX + Y]]
D vIK+Y d vI8 = vLz]] D vIvIa]] m) VIVEVEO]
np VLVTI + vta]] o) vix 44]
Elabore um algoritmo que, dados dois vetores inteiras de 20 posições, efetue as
respectivas operações indicadas por outro vetor de 20 posições de caracteres também
fornecido pela usuário, contendo as quatro operações aritméticas em qualquer combinação
e armazenando os resultados em um terceiro vetor.
Altere o exemplo de soma de vetores para que este realize a seguinte operação: o produto
do primeiro vetor pela inverso do segundo é armazenado a partir do centro para as
bordas; de modo alternado, o vetor é de reais e possui 20 posições.
Desenvolva um algoritmo que leia um vetor de 20 posições inteiras e o coloque em ordem
crescente, utilizando a seguinte estratégia de ordenação:
* selecione o elemento do vetor de 20 posições que apresenta o menor valor;
+ troque este elemento pelo primeiro;
* repita estas operações, envolvendo agora apenas os 19 elementos restantes
(selecionando o de menor valor com a segunda posição), depois os 18 elementos
(trocando o de menor valor com a terceira posição), depois os 17, os 16 e assim por
diante, até restar um único elemento, o maior deles.
76 | légico de progromeção
1.5 Desenvolva um algoritmo que leia um vetor de 20 posições inteiras e o coloque em ordem
crescente, utilizando como estratégia de ordenação a comparação de pares de elementos
adjacentes, perrmutando-os quando estiverem fora de ordem, até que todos estejam
ordenados,
OBSERVAÇÃO — — se = 1
O Exercício |,4 apresenta um método ce ordenação que é tradicionalmente conhecido como seleção
direta, Já o Exercício |.5 se refere a um método de ordenação conhecido como bubble sort Vordenação
por bolhas').
VARIÁVEIS COMPOSTAS MULTIDIMENSIONAIS
Suponha que,
também a divisão desse andar em apartamentos, Para chegar a algum deles,
lém do acesso pelo elevador até um determinado andar, tenhamos
não basta só o
número do andar, precisamos também do número do apartamento.
Os vetares têm como principal característica a necessidade de apenas um índice para
endereçamento — são estruturas unidimensionais, Uma estrutura que precisasse de mais de
nm índice, coma no caso do edifício dividido em andares divididos em apartamentos, seria
denominada estrutura composta multidimensional, nesse caso, de duas dimensões (bidi-
mensional).
Declaração
Denominaremos as estruturas compostas homogêncas multidimensionais de matrizes,
usarmos uma matriz precisamos, primeiramente, definir em detalhes como é constituí
Pa
do o tipo construído e, depois, decia
de variáveis ao identificador do tipo matriz
uma ou mais variáveis, associando os identificadores
Para definir o tipo construído matriz, seguimos a vegra sintática a seguir:
—»( tipo )—> itentificador [-+(= matriz [)—» LUI +) tn
—— DIAGRAMA
Em que:
LES. bFL, LI&, ABR,
vel, em que cada par de limites
io 08 limites dos intervalos de variação dos índices da variá-
assoriado a um índice;
Capítulo 4 Estruturas de dodos | 77
tipo primitivo: representa qualquer um dos tipos básicos ou tipo anteriormente defi-
nido,
O número de dimensões da matriz é igual ao número de intervalos.
O número de elementos é igual ao produta do número de elementos de cada dimensão:
(LFI = LIL=1) * (LE2 — LIZ + 1) 84, * (LN = Lind 0).
Exemplos
o tipo é = matriz [1,.3,2..4,3..4] de reais;
M: MAT;
b. tipo SALA = matriz [1..4,1..4] de inteiros;
SALA: MSALA
MAT tem três dimensões e (3-1 + 1) *(4-2+1)* (4-3 4 1) = 18 elementos
MSALA tem duas dimensões e [4-1 + 1) * (4-1 + 1) = 16 elementos)
Manipulação
Para acessar um elemento em uma estrutura composta multidimensional — matriz = pre-
cisamos, como em um edifício, de seu nome, de seu andar e de seu apartamento. Consíde-
vando uma estrutura bidimensional (dois índices: andar € apartamento) , o primeiro índice
indica a linha e 6 segundo, a colina.
A Figura 4.4 ilustra como a matriz HSALA, do tipo construído SALA, poderia se
da. Observamos na figura o elemento NSALA[2, 3], que se encontra na linha 2, coluna 3.
epresenta-
Matriz MSALA
12 3 4 + indices de colura
1
2 | ywsaLa [2, 3]
4
indices da Vinha — À MSALA
com trés dimensões, repete-se à estrutura bidimensional 0 mesmo número
Para matri;
de vezes que o número dos elementos da terceira dimensão, numerando-as de acordo com
os limites especificados na declaração de tipo.
Exemplo
A matriz MAT poderia ser representoda conforme a Figura 4.5:
80 | Lsgiside programação
30. escreva (“Jogo mais marcato: “, njogo);
at. escreva ("Quantidade de marcações: *, maisMar);
32. fim.
Quiro problema
seria descobrir qual das colunas do cartão possui mais marcações, se a
coluna 1, a coluna 2 oua coluna do meia (que representa empate).
pate)
Pata resolver essa quest
« precisamos determinar quantas marcações existem em cada
coluna e verificar qual dos três valores é o maior. Neste caso, estanios invertendo o modo
de percorrer a matriz, verificando todas as linhas de uma coluna e seguindo depois para a
próxima coluna.
Percorrendo a matriz dessa forma, precisamos;
* tixaracoluna;
e variara inha,
O Algoritmo 4.7 mostra uma solução possível para o problema apresentado.
Percebemos aqui que quando J (coluna) vale L, à variável T (linha) varia de 1 até 14 (ele-
mentos nLoteria[1,1], mLotenta[2,1], mLoteria[3,1),..., mlozeria[14,1]). Depois disso
a variável d passa a valer 8, enquanto a variável T volta a valer 1 e continua variando nova-
mente até 14 (perfazendo os elementos mloteria[1,2], mLoteria[2,2] mLoteria[3,2]. .
mloteria[14,2]). Isso continua se repetindo até que J aúnja 3 (última coluna)
ALGORITMO 4.7 Loteria esportiva, coluna mais marcada
1. início
2. fi definição do tipo construído matriz
% tipo Loteria = matriz [1..14, 1..3] de caracteres;
4
5. // declaração do voriôvei comosta do tipo motriz definido
6. Loteria: mloteria; // nome do matriz
te
B. // declaração dos vorióveis simples
9. inteiro: 1, // Índice pora Vinha
10. dy /j indice pora coluna
As maisMar, // maior número de murcadores encontrado
dBu nentuna, // número da coluna com mais marcações
13. marCol; // número de mercações em uma coluna
18.
15. maisMar e
16. parad de 1 até 3 faça
à martol — 05
18. para I de 1 até 1é faça
19. se mLoteria[1,J] = "x"
20. então martol e martol + 1;
2. fimse;
22. fimpara;
8. se marco] > maisMar
“Cantina
Copiulo4 Esrutvrasdedados | 8]
24. então início
25. maisMar — marco];
28. ntoluna + Jd;
ar fim;
28. fimse;
8. fimpara;
30. — escreva ("Coluna mais marcada: ", nColuna);
H. escreva ("Quantidade de marcações: ", maisMar);
32, fim.
Exemplos
a. Construa um algoritmo que efetue a leitura, a soma e a impressão do resultado entre
duas matrizes inteiros que comportem 25 elementos.
ALGORITMO 4.8 Soma de duas matrizes
1. início
2. tipo M=matriz [1..5, 1..5] de inteiros;
3. MMA, MB, MR; // matrizes do tipo M definido
4. inteiro: 1, J;
5 Le
6. — enquanto (1 <= 5) faça
Po Je;
8. enquanto (J <= 5) faça
9. Teia (HATI,J], MB[L,J]);
10. MREL,0] e MALL,J]) + MBII,J];
11. dest
17. fimenquanto;
13. E de Tx
14. — fmenquanto;
15. Je l;
16. enquanto (J <= 5) faça
df ls dz
18. enquanto (1 <= 5) faça
19. escreva (MR [1,9]);
20. le l+%
ti fimenquanto;
22, JeJ+]
. fimenquanto:
24. fim.
b. Elabore um algoritmo que leia duas matrizes internas, À e B, do tipo [3 x 3) e cal
culs em uma matriz R sua multiplicação, ou seio, R = A * E
Para resolver esse problema, precisamos levantar a Fórmula que mostra como obter R e,
em seguida, precisamos construir o algoritmo do processo de multiplicação de duas matrizes
(3x3)
82 | Lógica de programação
Recorrendo à matemátie:
, vamos representar o que seria uma ilustração das matrizes
envolvidas:
JURA 4.7 Representação das matrizes A, Be R
[Ri By R An dm By By Bo]
wo Ro R da Aa A] E | Ro Bo Bye
lho Ro Ro) Ay do Ay By Bo Br)
Matriz R Matriz À Matriz B
A partir da Pigura 4.7, e seguindo o método de multiplicação de matrizes, poderíamos
escrever as seguintes expressões:
Rj = MBy * Apto
Rg AB 0 A" Bo É Agr Be
Rig = Ants + Bos * AtBs
Ra = AB + AutBa + ArotBa
Ro = MutBo + AutBia + Bot
Rap = AntBi + AGE, + AgtBi,
Ra = Aula + AtBo + AB
Podemos perceber que, ao calcular qualquer elemento R[1,:], o indice de linha 4 se re-
pete na matriz 4 e o índice da coluna j se repete na matriz 8. Já a coluna de A é igual alinha
de 3, e repetese 3 ve
es, de 143. Criando tm cerceiro índice k para efetuar essa repetição,
teríamos, então, que um elemento R[5,5] é igual A[i, +] *BLk, 3], somados env 3 momentos,
conforme a variação de k.
Umasolução para calentar R = AB é expressa no Algoritmo 4.9.
ALGORITMO 4,9 Multiplicação de 2 matrizes
1. inícia
2 4! definição do tipo motriz
Ba tipo MATINT = matriz [1..3,1..3] de inteiros;
4. 1! decivração de variáveis
5
6
7
= MATINTE O, // primeira matriz
3, // segundo matriz
À &; )/ motriz de resposta
8. inteiro: I, d, K // indices
9. 4! laço paro ler os valores de entrado da matriz 4
10. para I de! até 4 passo 1 faça
Ú; para J de 1 até 4 passo 1 faça
1. Teia (ALL, J]);
13. fimpara;
14, fimpara; “Ciativanesy
Estruturas de dados | 85
&) Escreva um algoritmo que auxilie um usuário à escolher um roteiro de férias, sendo
que o usuário fornece quatro cidades: a primeira é sua origem, a última é seu destino
obrigatório & as outras duas caracterizam as cidades alternativas de descanso (no meio
da viagem). Por isso, o algoritmo deve fornecer ao usuário qual das duas é a melhor
opção, ou seja, qual fará com que a duração das duas viagens (origem para descanso,
descanso para destino) seja a menor possível.
VARIÁVEIS COMPOSTAS HETEROGÊNEAS
Já sabemos que um conjunto homogêneo de dados (tal como uma alcatéia) é composto
de variáveis do mesmo tipo primitivo (Lobos): porém, se tivessemos um conjunto em que os
elementos não são do mesmo tipo, teriamos, então, um conjunto heterogênco de dados.
Exemplificando, poderíamos ter um conjunto de animais quacrúpedes, formado por cães
(matilha), camelos (cáfila), búfalos (manada) cte
Registros
Uma das principais estruturas de dados é o registro. Para exemplificar, imagine uma
identificação de passageiro, aquele formulário de informações que o passageiro entrega
ao motorista antes de embarcar nó ônibus, junto com sua passagem. Ela é formada por um
conjunto de informações logicamente relacionadas, porém, de tipos diferentes, tais como
mimer
de passagem (inteiro), origem e destino (caracteres), data (caracteres), horário
(caracteres), poltrona (inteiro), idade (inteiro) e nome do passageiro (caracteres), que são
subdivisões do registro (elementos do conjunta), também chamadas de campos.
Um registro é composto por
mpos que são partes que especilicam cada uma das infe
mações que 9 compõe. Uma variável do tipo registro é uma variável composta, pois englaba
um conjunto de dados, é é heterogênea, pois cada canipo pode ser de um tipo primitivo
diferente.
A Figura 4.8 ilustra graficamente um exemplo de unia hipotética identificação de embar-
que (registro) em um ônibus, com diversas informações (campos) solicitadas pela compa-
nhia de transporte para o controle dos passageiros embarcados.
| Passagem de ônibus
Número da passagem:
De:
Horário: Idade:
Nome do passageiro
86 | Lógicade programação
Declaração
Para nsarmos um registro precisamos, primeiramente, definir ci detalhes como é cons-
tituído o tipo construído, especificando todos os campos e, depois,
variáveis, associando os identificadores de variáveis ao identificador do úipo regi
Para detinirmos o tipo construído registro, seguintos a seguinte sintaxe:
declarar uma ou mais
ra.
fo idRegistro = registro — |
sl
Op ao O
| — DIAGRAMA ——
Em que:
idRegistro: representa o nome associado a tipo registro construído;
tipo primitivo: representa qualquer um dos tipos básicos ou tipo anteriormente defi-
nido:
“dtampo: representa à nome associado a cada campo do registro.
Exemplo
A definição do registro da Figura 4.8 poderia ser feito da seguinte forma:
/) definição do tipo registro
tipo regembarque = registro
inteiro: NunPas, HumPoltrona, Idade;
caracter: Nome, Data, Origem, Destino, Hor;
fimregistro;
|! dectáração da variável composta do tipo registro definido
regEmbarque: Embarque;
O exemplo corresponde à definição de um modelo regEmbarque de um registo é à
criação de uma variável composta chamada Embarque, capaz de conter eito subdivisões
[campos do registro).
Manipulação
Em determinados mamentos podemos precisar de todas as informações contidas ny
Tegistro (Embarque) eu de apenas algum campo do registro (como, Irequentemente,
o nú-
mero da poltrona).
lo 4 Esruturascedodos | 87
Quando acessamos o registro genericamente, estamos referenciando obrigatoriamente
todos os campos por ele envolvidos.
Exemplo
leia (Embarque);
escreva (Embarque);
Para utilizar um campo específico do registro devemos diferenciar esse campo. Para tal,
ulilizunos o caracter *.” (ponto), a fim de estabelecer a separação do nome do registro do
tome do campo.
Exemplo
leia (Embarque. Poltrona);
escreva (Entarque.Data);
Exemplo
Utilizando o registro Embarque:
// acessa genérico ao registro
leia (Embarque); // Ler todos os campos do registro
// acesso específico a um compo do registro
escreva (Embarque. Idade) ;
se (Embarcue. Idade < :8)
então escreva (Enbarque.Nome, " é menor de idade."
fimse;
REGISTRO DE CONJUNTOS
Os registros vistos até agora possuiam em seus campos apenas dados de tipos primitivos,
entretanto, podemos dispor também de campos que , formados por
compastos, ou se!
outros tipos construídos.
Digamos que possuímos um registro de estoque de um produto, contendo como um de
seus campos um valor numérico que indique baixas do produto por dia da semana, Temos,
então, um vetor de seis posições, no qual cada posição corresponde a um dia útil da semana
Gneluindo o sábado), conforme ilustrado na Figura 1.9.