Docsity
Docsity

Prepare-se para as provas
Prepare-se para as provas

Estude fácil! Tem muito documento disponível na Docsity


Ganhe pontos para baixar
Ganhe pontos para baixar

Ganhe pontos ajudando outros esrudantes ou compre um plano Premium


Guias e Dicas
Guias e Dicas

1a-Algoritmos I - Livro de Logica de Programação - Forbellone, Manuais, Projetos, Pesquisas de Análise de Sistemas de Engenharia

Livro de Logica de Programação

Tipologia: Manuais, Projetos, Pesquisas

2014

Compartilhado em 20/04/2014

asimov-isaac-5
asimov-isaac-5 🇧🇷

4.9

(11)

119 documentos

1 / 228

Documentos relacionados


Pré-visualização parcial do texto

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.
Docsity logo



Copyright © 2024 Ladybird Srl - Via Leonardo da Vinci 16, 10126, Torino, Italy - VAT 10816460017 - All rights reserved