Sei sulla pagina 1di 83
LOGICA ESTRUTURADA PARA PROGRAMACAO Meyer ts a) Pu 2 cc ur rain ru id A-B Ssereva "A subtragdo de fim ORT een bisica desia cbra é o fato de ter sido concebide para utlizagao em sala de aula ‘com 0 acomponhamento'de um professor especializado no assunto. Espero sinceramente que 0 leitor estudantel, devidamente orientado pelo ‘seu professor, fenha nesta obra o oportunidade de ampliar e fortiicar o conheci- mento de légica de programayéo que necessita para ingressar no mercado de trabalho, Vole solientar que néo & pretenséo do autor esgotar o assunto em si com este trabalho, pois 6 ele de cunho basico. A pretensao é to somente acender o luz no final do tonel, pare que o caminho possa ser cruzado com maior comodidade, Oavior Logica Estruturode para Pragramacao de Computadores | Pe Indice Vi Capitulo 1 -Introdugao — 1.1 - Resolugdo de Problemas Computacionais. 1.2 - Diagrama de Quadres..... 13 - Portugués Estruturado, Capitulo 2 - Seqiiéncia. ' 2.1 Tipos de Dados Primitivos. 2.2 - Varidveis e Constantes. 2.3 - Operadores Aritméticos 2.4 - Expressbes Matematicas. ' 2.5 - Instrugdes Bésicas. 2,6 - Consideracées Operacionais. 2.7 - Exercicios de Aprendizagem. 2.7.1 - Primeiro Exemplo. 2.7.2 - Segundo Exemplo 2.7.3 - Terceiro Exemplo. 2.8- Exercicios de Fixagio Copitulo 3 - Decisdes. 3,1 - Tomada de Deciséo. 3.11 - Decisdo Simples 3.1.2 - Decisdo Composta: 3.13 - Decisdo Encadeada 3.2- Uso de Condigdes. 3.2.1 - Operadores Relacionais 3.2.2- Operadores Légicos 3.3 - Exercicios de Aprendizagem. {| Logica éstrururado para Programacdo de Computadores, uP 3.31- Primetro Exemplo 43 3.3.2 Segundo Exemplo . M4 3.3.3-Terceito Exemplo.. 45 3.3.4 - Quarto Bx2MPIO on a7 3.35 Quinlo Bxempo.... 49 3.4--Exercicos de Foxagéo. ——— oo st Copitulo 4 - Lacas de Repetigio. = ssn SS 41 Utlizagéo de Lacos de Repeticéo 55 4.2- Os Lagos de Repeticao 56 4.2.1-Logo Enquanto ses 56 4.2.2--Logo Repita 57 4.2.3 -Laco Paro 58 4.3 -Exercicos de Aprendizagem (Lacos Predeterminados) 58 4.3.1- Primeiro Exemplo sn SD 4.3.2 - Segundo Exemplo 6 4.3.3-Terceiro Exemplo. 62 44 - Bxetccios de Aprendizagem (Laces Indeterminados) sens 68 4.4.1 Primeiro Exemplo we senna O 4.4.2 Segundo Exemplo 64 4.5 - Bxetticios de Fxacoo. 66 Capivlo 5 - Matizes Uniimensiondis nn 69 5.1 -Tabelas em Memério, 6 5.2 - Operagbes Bésicas com Matrizes n 5.3- Bxercicios de Aprendizagem nm 73 5.3.1- Primeiro Exemplo - 73 53.2 - Segundo Exemplo 75 5.4 - Classifcagdo de lementos... se 7% ne \bgica Estutvrada pora Programacée de Computadores | De 5.5- Métodos de Pesquisa 5.5.1- Pesquisa Sequencial 5.5.2 - Pesquiso Binério 5.6- Exercicios de Fixago Copitulo 6 - Matrizes Bidimensionais. 6.1 - Matrizes com Duas Dimensées. 6.2 - Operacdes com Matrizes de Duas Dimensées.... 6.3 - Exercicios de Aprendizagom. 6.3.1- Primeiro Exemplo, 6.3.2 Segundo &xempl... 6.4 Exetcicios de Fixago Capitulo 7 - Registros.. 7.1 Estrutura de um Registro, 7.2.-Estrutura de um Registro de Conjuntos. 7.3 Estrutura de um Conjunto de Registros.... 7.4 Exercicios de Aprendizagem. 7.41 - Primeiro Exemplo. 7.4.2 Segundo Exemplo 7.5 - Exercicios de Fxagao, Capitulo 8 - Sub-Rotinas 8.1- Modularidade. 8.2 - Método Top-Down... 83 - Tipos de Sub-Rotina, 8.4 -Sub-Rotinas do Tipo Procedimento, 8.4.1 - Exercicios de Aprendizagem, 8.4.2 - Estrutura de Controle com Moltiple Escolha, 8.5 - Voriéveis Globais e Locais “4 | Legica Estruturoda para Programacéo de Computedores By 85.1 -Escopo de Ve 8.5.2 - Refinomento Sucessivo, 86 - Uso de Porametros. 8.6.1 -Pardmetros Formeis e Reais. 8.6.2 - Possagem de Pardmetro por Valor e por Referéncia 147 8.7 -Exercicios de Aprendizagem . _ 87.1- Primeiro Exemplo sn seneed T 87.2- Segundo Exemplo. von 49 8.8 - Sub-Rotina do Tipo Funsao. 150 8.6.1 - Exercicio de Aprendizagem.. 153 8.8.2 - Programa Calculadora so 155 8.9 - Exercicios de Fixacdo. 158 Aplindice - Exemplos de Codificagéo. 163 Indice Remissivo. 173 L6gjcaEsiicoda para Programasto de Computodores. | Introducao Neste capitulo ser feita uma introducéo basica aos conceitos de resolugdo de problemas baseados nos técnices de diagrama de quadros e portugués tesruurado. Assim sendo, serdo fornecidas olgumos informagdes sobre o criacdo dos diagramas de quadros baseados no método de Nassi-Shneiderman/chapin © da definicdo de programas escrtas em Program Design Language linguagem de Projeto de Programacéol. 1.1 - Resolugdio de Problemas Computacionais © trobalho de desenvolvimento de programas para computador esté sempre baseado na torefo de “ensinar”(progromari um computador pare que ele possa realizar uma tarefa existente no mundo recl, ¢ assim atender és necessida- des dos usuérios de sistemas computacionais Toda farefe do mundo real a ser introduzida em um computador, sefa um microcomputador, um minicomputador, um maimframe, deve primeiramente ser muito bem entendida por parte do desenvalvedor, ele no papel de um analista de sisternas (gerente de sisternas de informagdol ou de um programador. importancia que hoja sempre o melhor enten- dimento possivel do necessidade de um ususrio; caso contrério, © profissionol de ‘staré fadado 00 insucesso de sev trabal ‘existem varios métodos de trabalho. Um dos mois conhecidos & o pratico de rafcomente a légica de execugdo do fluxo de um programa por meio 10 grdfcol, que pode ser 0 modelo tradicional, conhecido [introduce I> pelo nome de dlagrama dle locos’, ou 0 modelo baseado em quadros, conhecido pelos nomes de diagrama de NassiShnelderman (é-se naci chinairdemara, dhagrama de NS\é-se ene essa, dlagrama de Chapin (é-se chap) Pelo fato de serem varias as formas de referéncia uliizadas para identiicar este tipo de diagrama, seré uscda nesta obra a nomenclature alagrama de ‘quacks. Apés 0 enlendimenio do problema e suc devida representacdo grafico com 0 uso do diagrama de quadres, 0 programa seré codificado em portugues estruturadd lalgoriimo descrilvel, baseado na técnica de linguagem de projeto de programagao (ADL - Program Design Language. A técnica de projeto de progro- Tmagdo baseada em PD também 6 denominada de pseudocdalgo, mefalingua- (gem ou portugole caracterize-se por poder ser escrita em qualquer idioma exis- ‘ene na face da Terra. Esto obra utlize a referéncia portuguiés estrufurado para os poises que utlizom o idioma portugues. De acordo com o exposto, nols-se que a utlizacao de algoritmes baseados no dlagrama de quadras e no cédigo em portugués esiruturadt € uma t fadlito « documentacéo grafica © descriive da solugde traciocinio programader) uilizada para o resolugdo odequada do problema compuiacional ‘apresentado. ‘Segundo VERZELLO (1984), ossim como um arquiteto desenha e escreve es- pecificacdes para descrever como uma torela deve ser efetuado, e um engenhelro desenvolve um esqueme detalhado dos atvidades de consirucGo, um especialista fem informagéo desenvolve um plano que sera comunicado ¢ outros, explicando ‘como o problema de processamento de dados deve ser, ov foi resolvdo. Assim sendo, as técnicas de algoritmizagio igrdfico e descritiva), clam de ‘rumento de documentocéo, servem tombém de instrumento de redo em uma eventual necessidade de consulta futura sobre a izada pora solucionar um problema computacional,principal- 5 em que ocorra a necessidade de fazer monutencdo em 1 Matos protssionois fazem relerénca 0 este po de diagrams, denominondo-o de fuxograma fate ferme € empregodo um povco foro de foco, pois fuxograma & uma fera ode {so excise do fase de ondize de sistemas. No que longe 6 progremaréo dt ares vio. 7 © programa escito em portugues estuzurodo normaimente nao & comple! em um Computodor, mos pode se foclmentecodicado em umo inguager de alto nivel come: POs, Object Pasco. C.Ces, Jovescipl 00, eX <6 Logica Esmuturade pore Progremacdo de Computadores | ‘As formas de representar o raciocinio légico utiizado na resolugéo de um problema no formato grdfico | 10 de quadros) ou formato descrivo (porugués estruturado) podem ser varias, desde que se respeliem sempre os ‘mesmas “regras do jogo™. Isto ocorre porque os programadores pensam ¢ atuam de forma diferenciada, tendo como influéncio em suas solucées « su criatvidade ‘@experiéncias acumulados durante o tempo que programam. 1.2 - Diagrama de Quadros © diagrama de quadros* fe fombém 0 diagroma de blocs’) & uma ferramenta de representacio gréfica de um determinado algoritmo computacioncl, utlizada com « fnalidade de opresentar uma “raciografia [um mapa} do raciocinio légico de um programador. Esse instrumento serve para que o programador saibo exatamente 0 que fez depois de um certo tempo do desenvolvimento de um ‘Serve também para que ferceiros saibom exatamente como foi « linha inio de um determinado programader. ‘Muitos supostos “profissionois” da drea de informagdo afirmam que essas formas de representacGo logico ndo so usodas, que ao Usar esses meconismos perde-se tempo, Imagine se um fengenheiro, médico, advogado pensasse assim, com cerleza @ humanidade estaria perdida na mao desses profissionais. 15 0S profissionais em suas respectivas Greas De um modo 9 zzer um planejamento de suas atividades, por mais 3m, de certa fo que as conhegam, Qual elaborar 0 conceito da técnica do diagrama de quadros de programocéo? Quel seria o motivo que levou Chapin a NoSsi e Shneiderman? Seré que eles nao finham nada melhor para fazer em sucs (© diagrama de quadros foi originaimente desenvolido por Nassi_e Shneiderman e oficiaimente apresentado em agosto de 1973, na publicagéo ACM SIGPLAN Notices com 0 artigo "Howchart Techniques for Structured Programming” 1ga0 SOFTWARE - PRACTIVE & EXPERIENCE, fa © seu artigo "New Format for FlowCharts", ampliando, os cconceitos originariamente apresentados. Por esto razao se faz referéncio 00 dio- {grame de quadros com os nomes: 2 oterma diagrama de quodios ests de ocordo ‘obra ntuiada Engenhano do Sefware, ph Eeslora Matron Bogks em 1995, * © conceito de dagroma de dloces & explorado no obra Algormes - lipo par 2 ‘Desenvommento de Progremacée do Compuiadores, dos overs José Augusto NG Marana e soy Fgueitedo de Obvera eer rc. | ntroducao 4 Diagrama de Nossi-Shneiderron; + Diagrame de NS; 4+ Diagroma de Chapin. A proposio do diagrama de quadros baseia-se na concepedo de progra- magdo estruturada, em que se torna inadmissivel 0 uso do conceito do instrucco GOTO (ir paro) normalmente existente nos linguagens de segunda geracdo (261 - Second Generation Longuoges|, mas néo encontradas normalmente em linguo- gens de terceiro geracéo° (3G! - Third Generation Languages! ‘Segundo NASSI-SHNEIDERI 774),0 método baseado em quadros permi- te @ utllzagio do ordenacdo de estruturas légicas numa forma mais simples, em que cade estrutura (quadrol representa 0 idéia de um pensamento completo. Como vantagem do todo baseado em diagrama de quadros, hé c obri- gotoriedade de escrever roinas de programas no forma Menor tamanho possivel. Como desvantagem, estc técnica somente pode ser usada para documentar 0 raciocinio l6gico utlizado com linguagens de terceiro pertencem’& colegoria de terceira geragéo de linguagens de programacio de ‘computador. 1.3 - Portugués Estruturado © portugues estruturado & ume ferramenta d determinado olgoritmo computacional. Este método é uilizado com a finalidade de opresentar ume codificagdo simples que seja de fécil tradugdo para outras linguagens de programogéo de computador, que muitas vezes so complexas, Além desta caracterisica, esta técnica pode também ser usada como forma de documentagdo de cédigo de programa, A técnica aqui denominado portugués estruturado é baseada na técnica de projeto de programacéo estuturada (POL - Program Design Language, 0 qual 1: ssentacdo textual de um ‘Apesor de encontrar © concelo @ @ inskucéo GOTO em knguogens de terceita geroxBo, come Pascal, ¢ © Basic Miual Basicl eles nunco 30 da instugdo GOTO em programas etcros em inguagens de for programadot com bois ‘experiencia e aco conhecmento de op 1acae. Poronto, € aconse Ihave! esquecer que este po de nstuoo este «18 Lgica Estruturada pora Programacéo de Computadores | D> desenvolvida por Caine e Gordon e apresentada pela primeira ver oficialmente em 1975, na conferéncia nacional de procedimentos computacionais no estado de Califérnia fEstodos Unidos de América] com a publicagdo do artigo "POL - A Tool for Software Design’ junio a AFIPS (American Federation of information Processing Societies} ‘Segundo CAINE & GORDON (1975), a técnica denominada PDL é um concetto de pseudocédigo qu ‘© vocabulério de um idioma {como inglés] em conjunto com a sintaxe giot uma lingvagem estruturada utilizada nas linguagens de programacdo de alto nivel, Desta forma, pode-se referenciar a PDL como sendo um cédigo em inglés estruturado, ‘A finalidade da técnica € faciitar a descrigio textual do cédigo de um programa em uma linguagem mais natural e mais préxima ao entendimento humano, de preferéncia no idioma natal do desenvolvedor. Ao longo destes anos, {@ técnica apresentado por Caine e Gordon passou a ser aceita por varios profssionais da érea de Tecnologia da informacdo em todo o mundo. introduce I> CAPITULO Este capitulo opresenta os detalhes pora a criagéo de programas seqen- Gigis. SerGo estudados os conceitos de tipos de dados, voridveis, constantes, operadores aritméticos, expresses aritméticas, entrada, processamento, soida, diagrama de quadros com seqiiéncia e cédigo em portugués estruturado para representagdo de sequéncia. 2.1- Tipos de Dados Primitivos (Os dades primitives o serem manipulados em um computador sdo repre- sentodos pelos elementos bésicos @ serem tratados (processados) que sao representados por trés tipos de dados tipos primitivas): dados numéricos fnteiros € reais), dados coracteres e dados l6gicos: ‘¢ Dados primitives numéricos i sentados por volores numér racterizam-se por serem repre- ros positives ov negatives, ex racionério). Exemplos deste tipo Dados primitives numéricos reois - sdo representados por volores uméricos reais positives, negativos e valores fracionarios. Exemplos deste tipo de dado: -1 -13, 2 1000, 500.96: Dados primitives légicos - sio representados por valores do tipo verdadero e falso, sim e ndo. Este tipo de dado também & conhecido pela identicagdo tipo booleane. Exemplos: .falso, .F, verdadero, .V, coracteres -coracterizam-se por serem representados Por valores delimitados entre porénteses e que contenhom letras, Umeros e simbolos especiais. Este tipo de dado também € conhecido pela identfcagéo tivo fteral ov tipo string. SG exemplos: “I “casa "5088-8668", "O#°8E" st sequsncio 2p 2.2 - Varidveis e Constantes ee ee eee ae ceca Conceitua-se como variével aquilo que é sujeito © variacdes, que é incerto, instavel inconstante. Os dades monipulados em um computador, sejam eles jlores iros, valores reais, valores caracteres ou valores ldgicos, séo na sua maioria tombém varigveis, Do ponto de vista de programacdo de computadores, pode-se considerar que variavel é a regido de meméria que seré uilizada pelo programa para ‘armazenar um certo tipo de dado por um determinado espaco de tempo. Assim sndo, qualquer volor a ser processado em um computador necesita ser viamente armazenado em uma regido de meméria, denominado variével. As variGveis definides no meméria de um computador funcionam como as govetas de um grande arquivo, tendo como caracteristica a peculicridade que cade gaveta Wariével) pode armazenar apenas um valor por vez, seja esse um némero inteiro, um némero real, uma seqiiéncia de coracteres ou um cont ‘Assim como as gavetas de um arquivo si ontificadas por etiquetas, tom- necessério identificar as variGveis a serem utilizadas em um computador. sta forma o val mazenado pode ser ado a qualquer momento, pois Pode facilmente ser identificado. A figura 2.1 mostra um exemplo de como pode ser considerada a meméria de um computador, segundo a explicagéo explonado anteriormente. Vaitvel fea ae Cope ot oft o Coe areata Cope ale ayt a t ‘Figura 2.1- Representoséo gréfica da meméria de um computador. © nome de uma variével é utiizado para sua identiicacdo e posterior uso dentro de um programa. Desta forma, & necessério estabelecer algumas regras ora a devida utlizacdo de variéveis dentro de um programa: ‘¢ Nomes de variéveis podem ser atribuidos com um ou mais coracteres; + © primeiro coractere do nome de uma variével no pode ser, em + hipétese alguma, um némero; sempre deve ser uma letra; + Onome de uma voriével ndo pode possvir espacos em branco. Caso ne- Cessile separar segmentos, utlize o simbolo *_" anderscoreou underine} 22 Logica Estruturada pare Programacéo de Computadores | Nao pode ser nome de uma varidvel uma palava: reservado o uma insiruco do lingvagem de codificacao de um programa; +” Nao podem ser uflizados na formacéo de nomes de variéveis outros caracteres @ ndo ser letras, némeros e 0 simbolo underline (ou undescora, Um variével pode exercer dois papéis dentro de um programa. Um papel de ago, quando modiicade ao longo do processamento de um programa para opresentar um determinado resuitado, ou 0 papel de controle, quando essa varidvel pode estar sendo “Vigiada' e controlada durante 0 execugdo do fuxo de um programe. ‘As constantes serdo valores fxos, normal de peso em formulas mateméticas para dar constante é tudo aquilo que é fixo ou estive este conceito deverd estar em uso. Por exemplo, 0 ‘uma constante: RESULTADO = ENTRADA* 1.23. 2.3 - Operadores Aritméticos Com certeza uma das exigéncios de um computador & o execucéo de cBlculos matemiticos. Neste sentido os computadores so excelentes. Assim sendo, tanto varidveis como consfonfes podem ser uilizadas na execucdo de célculos matemiticos. Os céleulos mateméticos so operacdes comandados por operadores méticos que podem ser clasificados em duos categorios, sendo binérios unéries. Séo binérios quando atuam em operacdes de exponenciacéo, mulipi- ca¢do, divséo, adicéo e subtracdo. Sdo unérios quando atuam na inverse de um indo a ele o sinal positive ou negativo. Veja em seguida a tabela de prioridade matemética existente quando da utiizacdo destes operadores ite encontrados como valores jo ao cAlculo. Assim sendo, ‘Go vétios momentos em que jor 1.23 da formula sequinte Operador | Operagio Tipo ee rent . Monviengéo de sinal__| Unario. Postive 5 nario [Negative T a infeiro oureal 7 dw : a 4 | seqiéncio 23|> 2.4- Expressdes Mateméticas £ muito comum o necessidade de trabalhar com expresses matemétices, ume vez que o maior parle do trabalho de processamento computacional esta relacionada e envolve a utlizacéo de célculos mateméiicos. Tanto que, todo ‘perogao matemética é sempre considerada um processamento computacionol do ponto de vista de programagio, Porém, nem todo 0 processamento computo- ‘clonal executado por um compuiador é uma operagdo matemética, ‘As expresses matematicas sé0 defnidas pelo relacionamento existente entre voriaveis e constantes numéricas com a G0 dos operadores critméticos. Considere Jo do Grea de uma is AREA e RAO, o constante 7% (pi icos de multipicagao e também a operagao de tlevando o valor da variavel R/O ao quadrado. Assim sendo, « formula ‘em quesidio deveria ser definida como: AREA - 3.74159 * RAIO T 2. ‘As expressées aritméticas em computagdo séo escritas de uma forma um pouco diferente da matematica, por exemplo, o exoressao X= {43 . [BS : 80+ 2) ) seré escrita na forma computacional como X «(43 * (55 / (30+ 2))). Perceba que as chaves e colchetes sao abolides, utllizando-se em seu lugar cepenos os parénteses. E também foi substtvido nos dois exemplos o sincl (=] igual €@ pelo sinol de (<1, 0 qual é referencicdo pela nomenciatura implicado ov ctribuido, 0 sinal implicado ou atribuido (+) é utlizedo para indicar que © valor {de uma expresstio matemética esté sendo armazenado em uma variével. Observe cinda o formule ullizada pora colculor ¢ érea de um triéngulo, em que é necessério efetvar a icagdo da bose pela altura e em seguida divicir pela constante 2. Como ficaria? Observe a formula padréo: BASE. ALTURA AREA = 2 Ela deveria ser escrita como: AREA <~ (BASE * ALTURA) / 2. 2.5 - Instrugdes Basicas As instruges bésicas so representadas pelo conjunto de palavras-chave fvocabulério) de ume determinada linguagem de programacao, que tem por fnolidode comandar em um computador 0 seu funcionamento € « forma como os dados armazenados devem ser tratados. L8cico Estruturad para Programacae de Computadores | 4/24 e & 5 Para a confeccao deste livro foi adotado 0 concelto partugués estruwrado. ‘Assim sendo, serd utilizado daqui para frente um conjunto de palavras reser- ‘vadas, que ndo pode ser usado para atribuir nomes de programas e de varia = veils. AAs instrucdes basicas em portugués estruturado utiizadas nesta obra sao: Inicio, fim, var, programa, enquanto fim_enquanto, se, entéo, senéo, fim_se, para, fim_para, escrevo, leia, faca, repita, até_que, conjunto, i real, grocers, Vigico, tipo, registro, fim_registro, procedimento, funciio, caso € 2.6 - Consideragdes Operacionais Pora que seja possivel efetuar 0 trabalho de progromagdo e a continuidade do estudo desta obra, 6 necessario levar em consideracéo alguns detalhes opera- cionais,tais como: + Todo problema computacional a ser resolvido deve ser previomente entendido, passado para a notagdo gréfica na forma de diagrama de Quadros para entéo ser escrito em cédigo portugués estruturado; Nesta obra toda referéncia feita © uma instrugdo seré escrita em lero mindscuia em formato negrto; As releréncias feitas o uma varidvel serdo escritas em letra moidiscula em formato italico; Quaiquer valor atribuido 0 uma variével seré feito com o simbolo < [seta ora esquerda}, tanto no diagrama de quadros quanto em cédigo portugués estruturado, Para que seja criedo um programa de computador, devem-se levar em consideragao trés pontos basicos de trabalho: * entrada de dodos; + processamento de dedos; ¢ saido de informacoes. Todo programa de computador executa de algumo forma estes trés conceitos. Se 0s dads forem enirados de forma errada, seréo proces-sados de forma errada e resultaréo em saidas de informagdes errados. Uma entrado e uma scida podem ocorrer dentro de um computador de sas formas, Por exemplo, uma entrada pode ser feita vic teclado, modem, , disco, entre outros. Uma soida pode ser feito em video, outros formas. Devido a esta grande variedade, os programas deste capitulo foram escritos com as insttugées lela e escreva para determinarem, 4 |Sequsncio 251> respectivamente, 05 operocbes de entrado © soida, Quanto ao processamento, resp do reterenciodo com o sible de ctbvieSo fe-lem varias operacbes de cunho simples. 2.7 - Exercicios de Aprendizagem Com 0 objetivo de colocar demonstrar 0 uso do diagrome ‘Como exemplo os problemas Co! em pratica 0 que foi exposto als este momento Pith e 40 portugués esrutrado, consdere nputacionais opresentados em seguice efetue « leitura de dois valores 2.7.1- Primeiro Exemplo Je computador que presente o resultado obtido. Elaborar um programa d numéricos inoiros, execute a-soma dos volares © o £ necessétio levar em consideragao qe, © programador sempre estar diante de um problema a ser resoWido,Esie problema deve primeito ser entencido Selo programadr parc que depois ee onsiga colocé-lo deniro de um compe elo Pesta formo, 0 segredo de um boo ico ‘esta na compreensao adequade do problema a ser solucionado 7 separé-lo dentro dos ee ioe saida. Paro tonto, observe © eS U"o do a So rema do eitura dos dois valores (ave, 60 s8o igos e devem set represeniados Por varidvels) e sua respective soma oot ermados, © qual também & uma neo con {conseqidéncia dos val Algoritmo 4, Entrada - ler dois valores inteiros, ne C050 representados pelos variavels Aes, 2, Processomento - efetuar a soma dos varia resultado ne vari6vel R: wyeis A e B, implicando 0 seu 4, Seida - opresentor o valor do variavel R pés 0 operacéo de somo dos {ois volores fornecidos. {nterpretacéo} passo o passo de um ser feito de varias formas diferentes P pode ser codificado. Perceba que 0 algoritmo & determinado probleme. Um algoritmo « Pode ser escrito, pode ser diagromado, lag Lbojco Estrturada pora Programacoo de Computadores 1 Diagrama de Quadros ‘Completada a fase de és diagramacao dé inlerpretagéo do problema, again ogy a ove rh de anno tema desia obra, Jicional ou com o diagrama de aaa one que é 0 Programa Soma, Nameros Leia ROM EscrevaR Fin Fura 2.2 2 -Diagrama de quadhes com entrada, processamento e soda. Observe que a seq neste au2 © sei de comands & defi indicadas os ogies de coca Insrugto, Observe qu 1a em quadros em que sdo Fc ciee ceerar Reriotos Wis ose oa ee nee Portugués Estruturado ‘Apés defini 0 diagram fogramma de quod programa ‘quadros, seré efetuadi . programe em poriguls ehuhfad, sof see * Sdcmone 2 r iteragdo] do que esté defnido . idamente {sem oprosenloge gta do loge do pogrom asercoatcode em uso. Is io, poi yuogens estruturadas exige Isto € necessario, pois que se reserve espaco de memar lodos as variGveis existentes dentro do programa. Observe que 0 exemplo faz uso de trés variaveis (A, 8 e R), as quais Be RI, as quai -1as no corpo do programa, programa SOMA NUMEROS Apés relacionar as vorié verigveis que sed ee que serdo uilizedas no Iago wer, postot pro fa da montage do ell Dae dures ‘quadros entre os quadros inicio e fim, que esto estabelecido no | Sequiéncio 27> Observe que o bloco de instrugdes de programa, indicado entre os instrucdes inicio e fim, apresentado em portugués estruturade deslocado um pouco para a direta, Este estio de escrita deve ser obedecido, para facltar a leftura de um bloco de programa, recebendo o nome de indentacéo, Anieto ‘eta a dela B Rea+s Ee ‘Apés a leiture dos valores para as varidveis A e B, eles serdo somados e implicados -} & voriével R, 0 qual seré apresentada com o valor da soma processade. A seguir, é apresentado o programe completo: Dagui para frente o processo de montagem de um programa fica mais faci basta que o leitorsiga os instrugSes anteriores. 2.7.2 - Segundo Exemplo Elaboror um programa de computador que efetue o uméricos reais e apresente o resultado da soma dos quads © perteito entendimento do problema proposto gorante 0 sucesso na operacde de programagdo. Observe que o problema sugere apresentar o resulto- do da soma dos quadrados dos valores lidos. Isto implica que, ao ler cada um dos valores, eles devem ser elevados co quadrado separadamente pare em seguida ‘serem somados e proporcionarem o resultado esperado. Algoritmo + 1. Entrada - ler dois valores reais, no caso representados pelos variaveis A eB; de dois valores dos valores lidos 4128 Logica Estruturoda pore Programagéo de Computadores | > 2. Processamento - efetuar a soma dos quadrados das voridveis A e B, implicondo o seu resultado na voridvel R; 3. Said - apresentar o valor da variével R. Diagrama de Quadros Completada o fase de interpretagdo do problema, passo-se para o fase de diagramacao do algorimo como apresentada anteriormente, utlizndo diagrama de quodros. rogram Some_Quadrascs Reatart EecwaR Fim Figura 2.3 - Diagroma de quadres para a soma des quadrados. Portugués Estruturado 2.7.3 - Terceiro Exemplo Elaborar um programa de computador que efetue © apresente o célculo da Grea de um tropézio. Observe que para apresentar o valor da Grea de um trapézio, toma-se necessario conhecer sua formula de cdlculo. Neste sentido, a érea de um trapézio 6 caleulade pelo soma da base maior com a base menor, muliplicoda pela cura, tudo isto dividido por dois 4 | seqvsncio 29|> 1. Entrada - ler tr8s valores que representem a base maior jvaridvel BS_MAIORI, a base menor tvariével BS_MENOR] e a altura tvariével Hl; 2, Processamenlo - efetuar a soma dos varidveis e B e muliplicé-las pela vorivel H. Na sequncia, dividir 0 célculo anterior por dois e Implicar seu resultado na varidvel R; 3. Soida- apresentar 0 volor da variavel R. Diagrama de Quadros Programa Area Trapeze ie ela BS_Maor ‘sia BS_Menor Lela H Re (BS_MaioreBS_ Menoxi@Hy2 EecevaR Fm Figura 2.4 Diograma de quadtos para 0 eélevlo da érea de um trapézio. BR, BS.HAIOR, BS_MBWOR, H+ real inicio Leta BS 2az0R Re ((BSHAIOR +. BS_MENOR) escreva # tm , quarta e quinta {60 dos conceitos eguido, fara os ‘de sexta bateria, {exerci de fxagdo 6) para tenor o uso dos conceltos de enrodo, processomento e saida, 4130 Logica Estruturada poro Programacéo de Computadores | 2.8 - Exercicios de Fixagdo 1. _Indique com um X quais dos dados apresentados sd do tipo inteiro. ( )1000 i ( ("Caso 8" ( 10 ( ) Falso. i 1-156 2, Indique com um X quais dos dados so do fipo Real (1-678 )o8r" aw Verdadeiro. 456 (1-998 (1 Cinco" (145.8976 (1 Falso. (1456 i i ( 3. Indique com um X quais dos dodos seguintes so do tipo Literal (1678 (1087 (oy egae |) Verdodeiro” (1-456 4 | Sequencio ld {1-998 6. Desenvolva os algoritmos, diagramas de quadros ¢ codiiicacdo em por- (1 Cinco" fugues estruturado dos seguintes programas: ( ) 452976 L@) Ler uma temperatura em graus Celsius e apresenté-la convertida —S em agraus Fahrenheit. A formula de conversio 6 F + 9* C + 160)/ 5, 1) Falso. endo F a temperatura em Fahrenheit e C a temperatura em Celsius. C1156 A») Ler uma temperatura em graus Fahrent resenté-la convertida ‘em graus Celsius. A formula de conversdo 6 C < (F - 32)* Indique com um X quais dos dados sé do tipo Légico. sendo F a temperatura em Fahrenheit e C a temperatura em Celsius Coed 254 Coleuior e apresentar 0 valor do volume de uma lta de deo, ( )"087" _utlzando 6 formula VOLUME — 3.14159 ° RT 2* ALTURA. 1) see ) Efetvar 0 célculo de quantidade de ios de combustvel gasto em i veneaee izando um automével que faz 12 Km por lo. Para © ususrio deve fomecer 0 tempo gosto e a (1-456 velocidade madia durante @ viagem. Desta forma, sera possivel a AY - bier c distancia percordo com «formula. DSTANCIA < TEMPO * ie i VELOCIDADE. Tendo o volor da distancia, basta calcular a () "Cinco" quantidade de litros de combustivel da na viagem com a () False formula UTROS_USADOS < DISTANCIA / 12. O programa deve apresentar os valores da velacidade média, tempo gasto na {VF viagem, a distancia percorrida e a quantidade de litros utiizada na ) 156 Viagem Efetuar 0 cdlculo e @ apresentagdo do valor de uma prestacdo em 5 PI 5 Assinale com um X os nomes validos para uma variével atraso, utlizando o formula PRESTAGAO «- VALOR + [VALOR = TAXA () ENDEREGO 7100) * TEMPO} ( ) 21BRASIL )_Lerdois volores para as varidveis A e B, e efetvar o roca dos valores «de forma que a varidvel A passe o possuir 0 valor da variével B e a (ected XS satigvel B passe c possuir 0 valor do voriavel A. Apresentor os (| NOMEUSUARIO \" valores trocodos. (1 Nome_usuARO } Ler quatro nomeros © opreseniar 0 resullado da odkéo @ art baseands tiizagéo ied *USUA mutiplicagéo, baseando-se na utlizagéo da _propriedade {1 NOME*USUARIO + distribuiva, Ou sejo, se forem lidas os varidveis A, B, Ce D, devem (D END*A-6 } ser somados e muttiplcadas A com B, A com Ce A com D. Depois B ( } cDADES com C, Bcom De por fm C com D. () acaBEC t hy) Elaborar um programa que calcule e apresente o volume de uma coixa retongular por meio da férmula: VOLUME — COMPRIMENTO * LARGURA * ALTURA, |) Efetuar o leitura de ur nomero inteiro e apresentar o resultado do quadrado desse nomero Logica Esrutvcada para Progromacéo de Computodores | | | seqiencio 33h {1 Ler dois interos variveis A e Bl e imprimir 0 resultado do quadrado dc diferenga do primeiro vaior pelo segundo, oma que efetue a apresentagée do volor do {RS} de um valor lido em délar (USS). O programa r da colagdo do délar e também a quantidade disponivel com o usu. rama que efetue a apresentacéo do valor do jo em real (RS). O programa jar e também o quontidade de reais disporivel com o usuario. 'm) Elaborar um programa que efeive o leitura de trés valores (A, 8 e Cl fe apresenie como resuliado final a soma dos quadrados dos és valores lidos. @s valores 1A, B e C) 1A). Elaborar um programa que efe! juro de trés val c fe apresente como resultado final 0 quadrade da soma dos trés volores lidos. 4134 Légica Estruturada para Programocao de Computadores | CAPITULO Neste capitulo so estudados os conceitos de tomada de decisdo por um programa, So apresentados os conceitos de decisdo simples, decisdo composta, decisdo encadeada, operadores relacioncis, operadores légicos, diograma de uadros com decisio e cédigo em portugués estruturado. 3.1 - Tomada de Deciséo © conceito de tomada de deciséo em um computador é um dos procedi- mentos mais importantes. Este conceito esté boseado na caracteristica que um computador possui de tomar decisées em um nivel controlado por condigo, Para que seja necessério tomar uma decisio em um computador, é preciso ter uma condicao. Esta condigéo pode retornar uma de duas respostas: sim ou no, verdadeira ou falsa © fato de uma condicéo ser verdadeira ov falsa permite co programa ‘executar a¢des distinfas existentes na mesma estrutura logica. Imagine, por exem- plo, um programa que seja usado para colcular a cobranga de um ftulo, Ao verificar a data de vencimento, esse programa pode ou ndo efetuar 0 co- branga de juros sobre 0 valor do fitulo, caso esteia sendo pago apés o vencimento Idecis6o simples|, ov mesmo pode também proporcionar o aplicagéo de um desconto, caso 0 ftulo esteja sendo pago antes do vencimento (decisdo compostal A sequit, apresenta-se o formato de aplicacdo dos conceitos de decisao sim- ples e composta, além de apresentar também o conceito da ullizagdo de decisao encadeada, quando for este 0 caso. 3.1. - Decisdio Simples A deciso do tipo simples caracteriza-se por prever uma aco légica quando 1 condigéo é verdadeira. Se o condigéo for falsa, ndo seré executado absoluto- mente nada. Este tipo de ago € representado na figura 3.1 com seu respectivo “I Decistes 351> diograme de quadros taribém com a inlrodugdo das instrugdes em portugués esiruturado se...entio e fim_se. Diagrama de Quadros Observe no diagrama igure 3.1) a existéncia dos letras $ (sim) e N (ndo}. Pode também ser utlizada a referéncia V (verdadeira) ou F ffalsa) em substituicio 4s indicacdes Se N. 0 cédigo de letro $ esta posicionado pora indicar que um determinado quadro de operagées sera executado quando a condigéo atribuida for verda- deira. A tomada de decisdo ocorreré sempre com base em uma determinada condigéo. Condigto Inaiugses ligdo>) entfo \cbes para condicko verdadeira> 3.1.2 - Decistio Composta A deciséo do tipo compesta coracteriza-se por prever uma acéo légica . quando a condi¢éo é verdadeira ou umo outra a¢do légica quando a condicdo & falsa, Este tipo de ado é representado na figura 3.2 com seu respectivo diagrama de quadros e também com a introdugdo da instrucéo em portugues estruturado senéo. 4136 Logica Estruturade pare Programacao de Computadores | P> aS Diograma de Quadres ‘Observe no diagrama figura 3.2) a existéncia dos letras $ (sim) e Ni indo). 0 cédigo de letra $ est6 posicionado para indicar que um determinado quadro de ‘operacées sera executado quando a condicéo for verdadeiro, e o cédigo de letra 'N esté posicionado para indicar que um determinado quadro de operagées sera ‘executado quando a condicéo for falsa. Observe que neste caso sera executada ‘openas uma das duas possibilidades. A tomada de decisdo ocorre sempre com bose em uma determinada condicéo. Condigto Verdadera Figura 3.2 - Diograma de quadros para decisto composta. Portugués Estruturado ‘Be () ent&o 3.1.3 - Decistio Encadeada ‘A decisdo do tipo encadeada coracteriza-se por prever uma acéo légica quando ocorre a necessidade de estabelecer uma verificagtio lagica em uma Sequiéncic de condicées sucessivas, Desta forma, uma determinada aca fexecutado se um conjunto anterior de instuGdes Ou condides for 5 tipo de estruture pode possvir olguns nivels de condig&o faconselho-se no maximo uinze niveis|, sendo chamadas de aninhamentos ou encadeamentos. A figura 3.3, ‘presenta um exemplo deste tipo de estrutura. 4 Decisses 37|> Diagroma de Quadros Observe no diagroma (figura 3.3] a existéncia de duas condigées. Se o primeira condicao for verdadeira, serdo executadas as instrucées para 0 quadro considerado verdadeiro, representado pelo cédigo da letra $ da condiggel. Em i seguido serdo executodas as instrugdes comuns. Caso a condig&iol seja folsa, seré entéo avoliada c condig&ie2, que pode ser verdadeira ov falsa. Apés avaliar a segunda condigao, o programa execuia a porcdo légica pertinente & acéo condi- ional e executa também as instrucdes comiuns. t mento ‘se () entiio cinstrugies para condigdo? verdadeira, port enko igsol false> rucSes para condigiol © condic&o2 faisac> * 138 viurode pora Programardo de Computadores.| Pe 10 exemplo apresentado faz referéncia a um encadeomento a p ‘condigBo} como falsa. Este é um mero exemplo, e assim si ia também ser considerado © encadeamento para @ condigdo ver- dodeira 3.2 - Uso de Condicées Como apresentado anteriormente, 0 conceito de tomada de decisdo est moldado no fato de existir pelo menos uma condigéo que necessita ser avoliada. A condigo sob ovaliagéo pode gerar uma de duas respostas (sim ou ndo, verdadei- +0 ov falso). Poro definir uma condi¢do, é necessdria a avaliagéo de no minimo dois elementos que podem ser repre: riGveis e/ou valores®, Desta forma, ima & formada por dois elementos em conjunto com Uma condig I, ou mesmo com o uso de operadores légicos. algum operadorrelaci 3.2.1 - Operadores Relacionais quanto & possi Jacionais valides em relog G0 0s seguintes: Significado 5 igual @ = Diferente de > ‘Moior que = ‘Menor que = ‘Maior ov igual o = ‘Menor ou igual a © Considera-se valor © conteddo que uma variéwel pode fer. Assim sendo, um valor pode ser um ‘Romero infero, um nbmero teal uma sequence de caracieres ov mesmo vm voor lgico do too: ‘erdodeio ov ils. 4 | Decisses 391> 3.2.2 - Operadores Légicos Foi comentado anteriormente que paro ocorrer a tomada de deciséo & necessério uso de no minimo uma condigho. Mas haverd situacdes em que se toma necessirio o uso de mais de uma condi¢do para que uma Unica decisio seja tornada sem o uso do concelto de decisdes encadeadas. Para estes casos 6 preciso trabalhar com os operadores légicos, sendo os mois comuns: .€. operador de conjuncad), .ov. loperador de disiungdo) e .nao. loperador de negacaol. Em alguns cosos, 0 uso de operadores légicos evita. a ultlizagdo de decises encadeades. © operador lagico do fipo .e. & utlizodo quando duas ou mois condigées necessitam ser verdadeiras. Desta forma, cria-se 0 conceito de conjungao entre as condigées, ou seja, apesar de existir mais de uma condigéo, 0 resultado légico somente seré verdadeiro quando todas os condigdes também o forem. Imagine como exemplo a possibilidade de um oluno poder soir da sola de ‘aula somente apés concluit 0 exercicio dais € o exercicio tr8s, Observe que ambos ‘os exercicios precisom ser realizados para que ele posse scir. A seguir, veia o tobela de decisdio para o operador légico .e,, bem como um exemplo da forma de uso no diagrama de quadros figura 3.4) e em portugués estruturado. [condigéot [concise Resultado Faso False Falso Verdadeira Folso Faso Foleo Verdadeira Falso verdadeira Verdadeira Verdadeiro Diagrama de Quadros Condgaot & Conditoe s N Insirugbes 2 seem erecutades Sepeomencs Uma conceao fortase ‘Figura 3.4 - Diagrama de quadros com utitzaeéo do operadorlagico... 4140 Logica Estruturade para Progromacdo de Computadores | Portugués Estruturado ‘pe () .e. () entao fim se : 0 operador do tipo .ou. é utiizado quando pelo menos uma das condicSes necesita ser verdadeira, Desta forma, cria-se 0 conceito de disiungdo entre as condigdes, ou seio, apesar de existir mais de uma condigdo, 0 resultado légico somente sera verdadeiro quando pelo menos uma das condigies for verdadeira, Imagine como exemplo a possibilidade de um aluno poder scir da sala de ‘aula somente apés concluir 0 exerccio dois ou 0 exercicio irs. Observe que basta 0 oluno resolver um dos exercicios para que ele passa sair. A seguir, observe a tabela de deciso para o operador légico .ou,,,bem como um exemplo da forma de uso no diagrama de quadros figura 3.5)e em portugués estruturado. [Condigao 1 Condigio 2 Resultado Folso) Faisa Falko Verdadeira Folsa Verdodeiro Falsa Verdadeira Verdadeiro Verdadeira Verdadeira | Verdadeiro Diagrama de Quadros Condigao1 OU. Condigo2 s ni Inseugoes 2 sorem executaces Ses concaot ov 3 concigoe fore verdaceras Figura 3.5 - Diograma de quadros com uitizardo do operador légico ov. 1 Decisées ap Portugués Estruturado vou, () enttio eee iol ou condicdo2 forem verdadeires.> ‘cinetrugses executadas se condick sims © operador do tipo sno. é vilizado para efetvor a inverséo do resultado Jégico de uma determinada condigéo, ume vez que este operador Nege & Ab estrita.& sus frente. Se a condido for verdadeira, seré tratado como 0. Se a condicao for seré fotada, como, vert Gpresenta-se a tabela de decisto para 0 operador l6gico nde., mn creep da forma de use no diograma de quadros figura 3.6) ¢ em portugues estruturado, Resultado False Verdadeire Diagroma de Quadros [Nio, Consi8o Instrugbes 2 secer Inatrvgbes 2 sere Fgura 3.6 - Diagroma de quadtos com utlzeedo do eperaderIétco nce. Portugués Estruturado _ condigho>) entito SPexccutadas se condi¢de nso for verdadeize> 4/42 Ligica Esruturade para Programasao de Computadores | Pr L ]0 us0 do operador logico .nfio. & um pouco mais roro que os demais, Joperadores légicos. Uma de suas aplicacdes ocorre quando hé neces- sidade de priorzar a agdo de uma condicGo que sejafalsa Fessxnci} 3.3 - Exercicios de Aprendizagem Com 0 objetivo de mostrar um exemplo pratico na uilizacdo dos conceltos de tomada de decisées, apresentam-se em seguida alguns exemplos de apren- dizogem, os qucis estardo tratando os conceitos de deciséio simples, decisco com- posta, decisdo encadeada, operadores relacionais e logicos. Observe ctentamente Cada exercicio e avalie seu funcionamento légico antes de efetuar os exercicios de fxogao. 3.3.1 - Primeiro Exemplo Ler dois valores numéricos, efetar a adigéo e apresentar o seu resultado cas0 0 valor somado seja maior que 10. Algoritmo 1. Conhecer dois valores incégnitos (estabelecer voridveis Ae B); 2. Efetuar 0 soma dos volores incégnis A e 8, implicando o volor da some ‘na variavel X; 3. Apresentor o valor da soma contido na variével X, caso 0 valor de X seja maior que 10. Diagrama de Quadros Programs Soma, Numeros nico Leh tea XeA8 0 s 4 Esceva X Fin Figura 3,7 - Diagrama de quadros pare o primeiro exemple. 4 | Decisbes 43i> Portugués Estruturado programa SOMA NIMEROS x, A, 5+ dntetre Anieto deta A leia B (> 10) ante Note que apés a definicéo do tipo inteiro para as variéveis do programa, solicitada @ leitura dos valores para as voridveis A e B, depois esses valores séo implicados na varidvel X, c qual possui 0 resuitado da adigao dos dois valores. Neste ponto, c condicéo do programa é avaliada. Se a condicéo for verdadeira, ou seja, o resullado da varidvel X for maior que 10, ele serd entéio apresentado; caso contrério, nado ocorreré. 3.3.2 - Segundo Exemplo Ler de 2s numéricos e efetvar a adi¢Go. Caso o resultado seja moior ou igt jeve ser acrescido de mais 5; caso contrrio, este tado deve ser diminuido em 7. Ao final apresente 0 resultado apés o avaliacdo da condicao, Algoritmo 1. Conhecer dois valores (varidveis A e B); 2." Efetvar a soma dos valores A € B e implicar 0 valor da soma em X; 3. Vetificar se X € moior ou igual 10; caso sim, calcule R — X45, sendo calcule R « X-7 € apresente ao final o valor 44 Légico Estruturada para Programagéo de Computadores | Diagroma de Quadros Programa Soma_Nimeros ni LeaAB XeAeB 7 = n ROXeS ROX-7 EscevaR Fi Figura 3.8 - Diagrama de quadros para o segundo exemplo. Portugués Estruturado XA, Bt inteiro inicio lela 2, 3 ae (x >= 10) antio Rexss RExX-7 fimee encreva K fim Note que apés 0 definicdo do tipo inteiro para as variéveis do programa, & efetuads a leituro dos valores para as varidveis A e B, depois esses volores s60, implicados na vari6vel X. Perceba que, neste ponto, o programa questiona © con- digdo que permitira imprimir o resultado com a adicdo de 5 ou a subtragio de 7. 3.3.3 - Terceiro Exemplo Elaborar um programa que efetue 0 célculo do reajuste de solario de um funcionario. Considere que o funcionério deve receber um reojuste de 15% caso seu solério seja menor que 500. Se 0 salario for maior ou igual a 500, mas menor {0 igual a 1000, seu reajuste seré de 10%; caso seja ainda maior que 1000, juste deve ser de 5%. Ao final o programa deve apresentar 0 valor do novo solério. 4 | Decisses eae Algoritmo Observe que, pera resolver o problema opresentado, & necessério utilizar uma de trés condicdes para calcular 0 reojuste do solario do funcionério, sendo: 4+ Solio < 500, reojuste sera de 15% + Salério >= 500, mas <= 1000, reajuste sera de 10% ¢ Soldrio > 1000, reajuste seré de 5% ‘As condicées em questtio deve ser encadeadas, pois todas os possibil- dades de reojuste devem ser cercadas. Assim sendo, observe os possos do calgoritmo em seguida: 1. Definie uma variével para o solério reajustado: NOVO_SALARIO, 2. Lerum valor para a voriével SALARIO; 3. Vericar se 0 volor de SALARIO < 500, se sim em 15%; Verificar se o valor de SALARIO > 1000, se sim regjustar em 5%; Apresentar 0 valor regjustado, implicado em NOVO_SALARIO. A releréncio uiiizada na linha § do algoriimo no ser6 utlizada no — ros e em portugués estruturado. Isto ocorre, uma vez [osseevacho) © conceito de avoliagdo da condigdo deixa quinto referBncia S| subentendide. Desta forma, qualquer valor que nao seja menor que 500 ‘ou que nde estejasityado na faixa de 500 « 1000, esté acima de 1000 Diograma de Quadros ‘ia Sa Sato «1090 Seuraot 10 Figura 3.9 - Diagrama de quadros para o tercero exemple, 4146 Ligic Estutucade pora Programacao de Computadores | Pe ‘ i Portugués Estruturade programa REAJUSTA_SALARIO NOVO_SALARIO 2 read SALARIO + real nse saninz0 [SALARI0 < $00) ent fo jO_SMLARIO © SMARIO * 1.15 wento ‘se (SALARIO <= 1000) ent&o NOVO_SALARIO + SALARIO * 1.10 enio NOVO_SALARIO © SALKRIO * 1.05 3.3.4 - Quarto Exemplo Elaborar um programa que efetve a leitura de trés valores para tm triéngulo, considerando lados como: A, B e C. O programa deve v lados forecidos formam um tridngulo, e se for esta condicdo verdadel indicado qual po de triéngulo fol forrnado: isésceles, escaleno ou equilatero. Algoritmo Para que este programa seja desenvolvido, é necessério saber em esténcia 0 que € um iriéngulo: triéngulo € uma forma geométrica composta por trés lados, e cada lado é menor que c some dos outros doi Observe que a definicdo de um tridngulo impée algumas regras (condicdes) «as quais precisam ser consideradas pore ¢ criagdo do programa. € um tiangulo quando AcB+C, quando BcA+C e quando CB e Bc >C; e € equilétero quando possvi todos os lados iguais, sendo AzBe Bel 4 |Decistes Tw cen, =) cease Bento 1. Lerttés volores para os lados de um triéngulo: A, Be C: 2. Verifcar se cada lado € menor que a somo dos outros dois lados. Se nna sim, sober se A=B e se B=C, sendo verdade o triéngulo é equiltero. Se no, verificor A=B ou se A=C ou se B=C, sendo verdade o tridngulo é {sdsceles; caso contrario, otriéngulo é escoleno; sreva “Tringulo Escaleno" 3. Caso 0s lados fornecidos ndo caracterizern um triéngulo, ovisar a ocor- réncia Diagrama de Quadros ; Progam Trngua 3.3.5 - Quinto Exemplo Ino Elaborar um programa que efetve c leltura de um valor numérico inteiro & LeeABe presente-o caso esse valor néo seja divisivel por 4. AeBHC E.BEAIC €. CeAIB Algoritmo = N Se for ido um valor divisivel por quatro (como: 4, 8, 12, 16, etc 0 programa mee resentar 0 mensagem ido". Quolqu Jor que no seja : por quatro deve ser apres . ‘lem do uso do operador logico SE OO OU OU ARE OU 8 i ificar se 0 condicao di ido & ou no divisive! por 4. Para verificar se 7 eee numérico (dividendo) @ divisivel por outro valor_ numérico é Esceva N] fang levar em consideragdo que 0 resto da diviséo deve sé é cours também considerar que os volores de dividendo, divisor, quociente e Esco Esco Sango | ng he iedones Eacaen Para detect ‘ Ke inteiro, deve ser utlizado © operador aritmético de divisdo “div, Fm ciona @ oblencéo do resultado da divisdo Iquociente) como um volor numérico ‘Figura 3.10 Diagrama de quadtes para o quaro exemple. inteiro Desta forma, se for efetuada a operacio 5 div 2, diviséo 0 valor 2. Sendo 0 quociente 2, isto indica que o r Portugués Estruturado ! se conclvir que o valor numérico 5 ee 3) Verdadeiro( } Falso( b) 1X<1).€. no, 18> 0) Verdadeiro |} Falso( sno. (D<0).€. (C> 5) Verdadeiro( } Folso( 4) .nBo. (X> 3}.0u.(C<7) Verdadeirot ) Folso( @) A>B).0v. (C>8) Verdadeiro( } Faso | Falso| | Falso( Falso( 1) .nb0. (D> 3).0u. .ndo.(8<7) Verdadeiro( } Folso( ) D A>8).0u. no. (C>6) Verdadeiro( 1 Folso( | Decisées sup 152 2, Indique © saido dos trechos de programa em portugués estruturado, mosirados em seguida. Para as scidas considere os seguintes valores: Az2, B=3, C=5 @ D=9. Nao & necessério calcular os valores de X. ‘Marque na resposta apenas o formula que sera executada de acordo com a condigao, @) Resposta: KOUA+ BDF (C+D) tinse )_Resposta: se (A> 2) .0¥. sno. (B< 7) enti Keane B-2 nenko xKea-e ©} Resposta 0 sake. (A> 2) .ou. .ndo. (B < 7) entho senko KeAsB fin ee Logico Estruturada pora Programagéo de Computadores | D> 4 [Decisées » f) Resposta;__ se wn, (A> 3) -0. -nilo. (B < 5) entio xea+D eno xeDsB fimse escreva x 9) Resposta: ge (C2 2) a. (EB <2 7) enti Ke as Ds? onto eocreva x h)__ Resposto: se (A >= 2) vou. (C <= 1) entfo xe onto xeprc timse encreva x |. Desenvolve os diagramas de quadros e codificago em portugués estu- turado dos seguintes problemas: (} Ler dois valores numéricos e apresentar c diferenga do maior pelo menor. b)_Efetuar a letura de um valor inteiro positive ou negativo e apresentor © némero lido como sendo um valor postive, ou seja, © programa deve opresentar o médulo de um nomero fomecido. Lembre-se de Verificar se o nimero fornecido é menor que zero; sendo, muti que-o por). Ler quatro valores referentes a quatro notas escolares de um aluno fe imprimir uma mensagem dizendo que o aluno foi oprovado, se ° Valor da médio escolar for maior ou igual a 5. Se o aluno néo foi icar urna mensagem informando esta _condigéo. junto das mensagens o valor da média do oluno para: qualquer condicdo. 4) Ler dois volores referentes a duos notes escolares de um aluno € imprimir umia mensagem dizendo que 0 aluno foi aprovado, se 0 {a medio escolar for maior ou igual a 7. Se 0 valor da medio val 531> for menor que 7, solicitar a not de exame, somar com 0 valor do média e obter nova média. Se & nova média for maior ou igual a 5, gpresentar uma mensagem dizendo que o aluno fol oprovado em exome. Se 0 aluno néo Iprovado, indicar uma Mensagem informando esta condi¢do. Apresentor com as mensagens 0 valor do médic do aiuno para ‘qualquer condicdo. Efetvor a letra de és valores variéveis A,B e C}e efetuar o célculo da equasao completa de segundo grav, apresentondo os duas izes, se pare os valores informados for possivel efetvar o referide Alculo. Lembre-se de que a variével A deve ser diferente de zere Efetuar a Ieitura de trés valores (varidveis A, 8 eC) e apresentéclos dispostos em ordem crescente. Para solucionar o problema, uilizer 68 conceilos de propriedade distributive © troca de valores entre voriéveis, Eletuar leituro de quatro. nimeros inteitos e apresentar os meres que séo divsiveis por 2 ¢ 3. Hetuor 0 fro niimeros inteiros e apresentar os 10 divisiveis por 2 ou 3. leiluro de cinco nimeros inteiros e identficar © maior eo ‘menor valores. Ndo execute a ordenocdo dos valores, Elaboror um programa que efetue a leitura de um nimero intelro & Opresentar uma mensogem informando se o numero 8 par ou impor. Etaborar um programa que efetve a letura de um valor que esteio entre @ faixa de Ve 9. Apés a letura do valor fornecido pelo ususrio, © programa deve indicar uma de duas mensagem: “O valor esta na {aixa permifida’, caso © usuario forneca o valor nesta faixa, ou mensagem “O valor esté fora da faixo permitidat, caso o usuario forneca valores menores que 1 ov maiores que 9 Elaborar um programa que efetue a leitura de um determinado Valor, e apresenté-lo caso ndo seja maior que trés, Eloborar um programa que efetue a leitura do nome e do sexo de umo ess0o, apresentonde como saida uma dos seguintes mensagens: ‘Imo Sr”, para o sexo informado como masculing, ova ensagem ‘lima Sra.*, para 0 sexo informado como feminino. Apresente tombém aboixo da mensagem impressa 0 nome de pessoa Légica Estruturoda pora Programacéo de Computadores | be CAPITULO Go de logos de repetigéo, Este capitulo mostra os conceltos de utiiza¢do de_ sc fombém denominados malhas de repetictio ou /oopings. Sao apresentadas irés formas de lacos de repeticdo: enquanto, repita e para, 4.1 - UtilizagGo de Lacos de Repetictio Os lacos de repetigéio so muito dieis e muito faclidade de repetir um certo trecho de program: vezes. O nimero de vezes que um laco pode repetr um trecho de programa pode ser previomente conhecido ou nao, vai depender de caracteristica de execucdo do loco, a Ql le sera Um laco de repetigéio em que se conhece 0 nimero de vezes que el executado € predetorminoco, pols sobe-se quando comesa e quando termina Porém, hé ainda @ possibiidede de desenvoiver um laco de repetcéo indetermi- nado, ou seja, sabe-se quando ele comega, mas ndo se sabe quando ele termina, pois apenas 0 usuario do programa é que determina o final Para os lacos predeterminados, de forma geral podem ser usados os foe de lagos de repeticbo: enquante, repita e para. Para os lacos indeterminades, podem ser usados apenas os laos de repeticdo dos tipos enquanto e repito, Os lacos de repetigdo dos tipos enquanto e repita so controlados pelo ‘80 de condicdo, logo s60 locos de repetigéo condicionas. 4 0 laco de repetio do tipo para é incondicional, pois ndo faz uso do conceito de condigées : 6 har com um lago de De forma geral, quando hé a necessidade de trabal repeticdo predeteminode, uliza-se © conceto pore, dexando ce cancels, de locos‘ repetgto enquanto « repo ora sigs de locos indeterminedos. Apesor desia caracieristico operacional, nesta obra serao utlizados todos os tipo de lago para demonstrar suas oplicacées nas mais variadas situacdes. ago que liza condo para 7 apesor date concto, sem olgumas Inguogens de programe que i ool um ge dopo por, coma bo casacas nuapens or See Te a 55|> [Locos de Repetigso 4.2 - Os Lagos de RepeticGo ‘Como exposto anteriormente, os lacos de repetigdo so irés, cada qual para uma finalidede especifica. Mas, apesar desta caracterstica especifca, um laco de repetido pode, em algumas ocasiées, substiuir outro loco de repetigéo, além de execvior sua acdo especiica, desde que um consiga atender & necessidade do ‘outro, Caso contrério, o laco de repeficdo no pode ser usado em substivigao o outro lago. , com alguns cuidados, executar também os agdes dos lagos de repeticdo enquanto e para. Jé 0 laco enquanto consegue, além de sua a¢éo especifica, executar com alguns cuidados « acd do lago de repeticdo para. Por sua vez, 0 laco de repeticéo para executa apenas suo acéo specifica. 4 tabela seguinte demonstra o nivel de ado de cada estrutura de repeticdo. tego derepetiio | Repita Enguento Pore Repo Beata Bxecvio Brea Enquanie : Execute Execute Pore : 5 [Bxecuta Outro detathe o ser considerado 6 0 foto de ocorrer a necessidade de tencadear entre si as estruturas de repeticdo, segundo alguma necessidade especi- fica 4.2.1 - Lago Enquanto © laco de repeticdo do tipo enquanto carocleriza-se por efetuar um teste condicioncl no inicio do fare. Desta forma, & possivel verificar se é permitido executar 0 trecho de instrucées subordinado @ condicéo. Para este tipo de estrutura serd uiilizado 0 cédigo em portugués estruturado enquanto...faca e fim_enquanto. A seguir, é mostrado um exemplo da representacdo grafica no diagrame de quadros e sua forme sintético em portugués est ado, Diograma de Quadros Observe no diagrama {figura 4.1) a colocagdo da condi¢do sobre as instrucdes que serdo executadas enquanto a condigdo permanecer verdadeira. No ‘momento em que a condigéo se tornar falsa, o laco de repeticéo € encerrado. 156 Légjco Esrturede pore Programacéo de Computadores | Pe onaigao Insbugtes que sero executadss enqvanio 3 ondiege pomanecer verdadee Figura 4.1 - Diograma de quadros para laco de repeligéo do tipo enquanto. Portugués Estruturado: ‘enquanto () faga instrugdes executadas enquante condicée for verdadeiza #im_enquanto 4.2.2 - Laco Repita © lace de repeticao do tipo repita carocteriza-se por efetuar um teste condicional no final do /aco. Desta forma, as instrugBes subordinadas ao /aro sero executadas no minimo uma vez. Para este fipo de estrutura seré utlizodo'o édigo em portugués estruturado repita e até_que. A seguir, observe um exemplo da representacdo gréfica no diagrama de quadros e sua forma sintalica em portugués estruturado, Diagrama de Quadros Observe no diagrama figura 4.21 0 colocagdo da condicéo apés a defnicéo das instrugdes que serdo executadas até que a condicdo torne-se verdadeira. No momento em que a condicio se tornar verdadeira, o laco de repeticdo 6 encer- rado. Consiga instrucdes executadas até que condicke torne-se verdadeira ss_que () 4 |ogos de Repetigdo s71> 4.2.3 - Lago Para para ccracteriza-se por efetuar um /aro por um jamente definido. Para este tipo de estrutura fim_para, A seguir, veja um exemplo da representago gréfica no diagrama de ‘quads e suc forma sintatica em portugues estruturado. Diagrama de Quadros Observe no diagrama figure 4.3} 0 colocagdo da definicéo do contador de vezes sobre as instrugées que serdo executadas enquanto a contagem de vezes for vélida, No momento em que 0 contador chega ao seu final, 0 lago de repeticoo 6 encerrado. “Ware ~ tie, Fm, ovement Ineugdes que serdo Figura 4.3- Diagrama de quadros para lao de repetigéo do tipo para. Portugués Estruturado a ‘para varidvel Ge inicio avé final paso increnento faga TnserucSes executadas até contador atingir seu final fe para Ampere 43 - Exercicios de Aprendizagem (Lacos Predeterminados) Com 0 objetivo de mostrar um exemplo pratico de uso do conceito de lagos de repeticdo predeterminados, sdo opresentados alguns exemplos de oprendiza- ‘gem, criados com os conceifas de logos de repetico' do tipo enquanto, repita e Pora. Para os exemplos em questo considere de forma genérica 0 seguinte problema computacional: 158 Logica Estruturada pare Programacao de Computadores | P> Hloborar um programe de computador que efetue e apresente o resultado do célevlo da fatorial do némero 5. Neste sentido, vale lembrar que fatorial é 0 produto sucessivo dos nimeros turais iniciodos em 1 até 0 inteiro n, no caso apresentado 5. Desto forma, © TEjeulo de uma fototial € conseguido pela mutipicacco sucessiva do nomero de fermos. No caso do céiculo de uma fatorial de nimero 5 efetvar 0 mutiplicagtio sucessiva de:5.4.3.2.101 ro valor 120. © programa deve executar os multplicagées sucessivamente e acurnuld-las ‘fim de possuir 0 valor 120 opés cinco passos. | serio entéo necessério 3.4. 5, que resultoria 43.1 - Primeiro Exemplo COndmero de passos deve ser controlado por um contador por intermédio do loco de repeticéo enquanto. Algoritmo 1. Inicializar as variaveis FATORIAL e CONTADOR com I; 2. Muttiplicar sucessivamente o varigvel FATORIAL pela variavel CONTA- 3. Incrementar 1& variével CONTADOR, efetuando o controle até 5: 4. Apresentar a0 final 0 valor obtido, de ter que efetuar 0 célculo de ume fotorial de 5 (51, isto implica ‘deve voriar de 1.0 5, e por este motivo deve ser voriavel ‘alizado com volor 1. Pelo fato de a varidvel FATORIAL possuir 00 la deve ser inicializada com resultado final, pois qualquer CONTADOR final © resultado do célculo do fatorial preter valor 1. Se ela for inicializade com zero, nao existir valor mt -ado por zero resulte zero. ‘car sucessivamente implica em efelvar a muliplicagéo da voriével CONTADOR pelo valor atual do taridvel FATORIAL a coda passo controlade pelo Jaco. No caso, por cinco vezes. coe Veja em seguide a resolucSo do problema do céleuo de fatoral idbndoa ‘estrutura de repeticao do tipo enquanito. Séo apresentados também o diagrama de quadros e 0 cddigo em portugues estruturado. 4 | Locos de Repeticdo 591> Diagrama de Quadros Programa Fatora Foil (Gontador (Contador <5 Fateial «Fate! © Contador Contador = Contador + 1 Eneova Fatal de = Fatoral Fim Figura 4.4 - Diagrama de quads para céiculo de fatorial com laco enquanto, Note dentro do laco de repetigtio a indicacdo de dois contadores. O primeiro funciona como um acumulador, pois ele teré'no final o valor do resultado da {otorial, e o segundo é utiizado para controlar a execucéo do laco de repeticdo € ser a bose para o céleulo do acumnulador. /eis CONTADOR € FATORIAL Logo no inicio do diagrama de quadros, os va lago, 0 varivel FATORIAL do igualodas em 1. Na primeira passagem dent implicada pelo seu valor CONTADOR também com valor T que resulta 1. Em seguida a variével CONTADOR € incrementada por mais 1, tendo agora 0 valor 2. Como 2 menor ou igual 5, ‘corre um novo célculo, Desta vez a voriével FATORIAL que possui o volor 1 é multipicada pela variével CONTADOR que possui o valor 2, resutiando 2 FATORIAL, Doi voridvel CONTADOR & incrementada de mai {alsa e sejc entéo apresentado o valor 120. Veja em seguida a tobele com os Volores das voriéveis antes e durante a execugo do laco: ‘Contador | Fatorial | Fatorial < Fatorial* Contador | Comentirios eee esa Volorinciol das varioveis e de fotorial 2 ie 2 Calculo da foiorial com o contador ern 2 3 pa [Célculo da atonal com contador em 3 4 6 (za (Célculo do fatorial com o contador em 4 5 za [120 ‘Céiculo do fatoral corn 0 contador em 5 <160 LBojca Estutvrada pare rogramoséo de Computedores | Percebo que quondo a voriével CONTADOR esta com volor 5, 0 voriavel FATORIAL estd com 0 valor 120. Neste ponto, o laco é encerrado e apresentado o jor do variavel FATORIAL Portugués Estruturado ne Ee ‘provrana FATORIALL = CONTADOR : intetro FATORIAL + Amteiro inicio FATORIAL © 2 CONTADOR © 2 Geuanco (CONTADOR <= 5) faga FATORIAL «= PATORIAL * CONTADOR CONTADOR & COWMADOR + 3 fim enquanto eecteva vFatorial de 5 é=* Hs a No cédigo anterior, estéo sendo apresentadas pela instrugéo escreva duas informagdes, sendo uma mensagem e uma varidvel, Note que isto feito utilzando | uma virgule para separar as duas informacées. FATORIAL 433.2 - Segundo Exemplo Com base no mesmo problema do célculo da fatoriol de 5, € opresentada em seguida a solucao utlizando o ago de repeticdo do tipo repita. Diograma de Quadros Prowama Fai Fatorar— 1 Conaaor Fale Fateril @ Contador Conradoe + Contador 1 Condos 5 Erreva ator de = Fatal Figura 4.5 - Blagrama de quadros para célculo de fatorial com logo repita 4 | La;os de Repetigao ap Portugués Estruturado programa FATORIAL2 cowrazor + inteire FATORIAL + imteire iniele FAORTAL © 2 CONTADOR + 3 repite FATGRIAL © FATORTAL * CONTADOR CONTADOR — CONTADOR + 2 avé_que (CONTADOR > 5) escreva “Fatorial de 5 é = *, as FATORIAL 43.3 - Terceiro Exemplo Com base no mesmo problema do célculo do fatoral de 5, € apresentoda ‘em seguida a solugéo utlizando 0 laco de repeticao do tipo para. Diagrama de Quadros Programa Fiona Trice Fatoral Gontador= 16.1 Fatoria - Fateril © Contador aeS= Farad Figura 4.6 - Diagrama de quacros para calcuio de fatoral com lago paro. Portugués Estruturado programa FATORIALS CONTADOR : Antetro FATORIAL + inteize inicio FATORIAL © 1 < 162 Lagica Estruturada para Programasdo de Compuiedares | Pe i GERTADOR do 1 ate 5 paseo 1 faye PTATORIAL + FATORTAL * CONTADOR sim pare Gecreva "fatorial de 5 ¢ = tm +, FATORIAL ‘4.4 - Exercicios de Aprendizagem (Lagos Indeterminados) ‘Com 0 objetivo de mostrar um exemplo pratico de uso do conceito de lacos de repeligao indeterminados, veja em seguida dois exemplos de aprendizagem, Giodos com os conceitos de lacos de repeticie do tipo enquonto e repita. Nesta Sivagdo em espectico ndo é possivel © solugéo com a uilizacéo do lago de repetigdo do tipo para. No topico anterior, foi apresentado um exemplo para a resolucdo do mo do célculo da fatorial de 5. Neste sentido, seria melhor possuir faberta para que um programa calcule « fatorial de um némero também interessante co} © programa a calcular outras fot Usuério ndo mais dese} {00 usuario @ sue conti que 0 © programa. Sendo assim, o programa deve pedir ou nao. 4.4.1 - Primeiro Exemplo © primeiro exemplo apresenta um programs cde um nomero qualquer. O programa em questo s de continuidade de execucdo e controla esta tipo enquanto. {20 ususrio autoriza¢ao ‘opcdo com o lago de repeticao do Algoritmo 1. Inicoizar os variaveis FATORIAL e CONTADOR com I; Definir os variaveis RESP (respostal para confrmacéo e N para receber limite de volor para 0 célculo de fotorial, Enquanto RESP do usuerio for sim, executor os passos 3, 4,5, 667: Repetr a execucéo dos possos 4 € 5 por N vezes; 5. FATORIAL « FATORIAL * CONTADOR; . Incrementor 16 voriavet CONTADOR: . Solictar autorizagdo de continvidade do programa; pe pxuovPye Apresentar a0 final 0 valor obtido, 4 | Logos de Repeticao ep _ Prager Fateh Tea ‘Coraor = N1 Falotal = Fatorat@ Contador Eocrova Fears Tela Rese - jo fipo enquanto. a7 TI TITA O Portugués Estruturado ‘programa FATORIALS RE epavoR, FATORIAL, N+ intel Gesr curectere snieto Elaborar um programa que efetue a leitura de 10 valores numéricos © opresente no final o somatério e a médio dos valores lidos. Elaboror um programa que efetue a numéricos e apresente no final o somatério, a média e 0 totol de volores ides. © programa deve fai iuras dos valores fenquanto 0 usuario estiver fomecendo val sivos. Ov seja, programa deve porar quando usuério fornecer um valor negativo {menor que zero). or um programa que apresente como ré {atorial dos valores impores situados na faixa numérica de 1 010. Elaboror um programe que apresente os resultados da soma e da média oritmética dos volores pares sitvados na foixa numérica de 50070, Elaboror um programa que possibiite calculor a Grea total de uma residéncic [salo, cozinhe, bonheiro, quartos, rea de servico, quint garagem, etc). 0 programa deve solcitar a entrade do nome, « largura e 0 comprimento de um determinado comodo. Em seguida, deve apresentar o érea do cdmods lido e também uma mensagem sdlitando do usuério a confrmagao de continuar calculande novos cémodos. Caso 0 io responda “NAO", 0 programa deve ‘apresentar 6 valor total acumuiado do rea residencil ftado 0 valor de Elaborar um programa que efetue a leitura de valores positivos inteiros até que um valor negativo seja informado. Ao final devem set apreseniados 0 maior € 0 menor volores informados pelo Elaborar um programa que apresente o resultado inteiro do divis6o de dois nimeros quaisquer. Para 0 elaboracéo do programa, nao utilizar em hipétese clguma o conceito do operador aritmetico DIV. & solugGo deve ser alcangada com a “a0 de laco. Ou seja, 0 programa deve apresentar como resultado (quociente) quantas vezes 0 divisor cabe dentro do dividendo, va 0s olgoritmos, diagrama de quadros e codificacdes dos elencadas de ), usando o estrutira de repe- iporepito, |. Desenvolva os olgoritmes, diagroma de quadros e codifcagées dos exercicios elencados de o até s fexercicio 1), usando o estrutura de repe- 1ig60 do tipo para Pode ocorrer 0 fato de algum exercicio no poder ser solucionado com este tipo de estrutura de repeticao. Légico Estruturada pare Programazdo de Computadores | D> CAPITULO Matrizes Unidimensionais Este capitulo mostra uma técnica de programagio que possibilita ao progra- mador trabalhar com 0 ogrupamento de varios dados dentro de uma mesma voriével. Vale solientar que esse agrupamento obedece sempre ao mesmo tipo de dado, e por esta razéo pode ser chamado de estrutura de dados homogéneos. ‘Agrupamentos de tipos de dados diferentes serdo estudados mais adiante quando forem abordadas os técnicas de registos. A utllzocao de matrizes em programa- ‘gdo recebe também outros nomes, fais como: variSveis indexadas, varidveis com- postas, voriaveis subscrita, vetores, fabelas em meméria ou arranjos. 5.1 - Tabelas em Meméria ‘As matrzes ttabelas em meméria} de uma dimenso ov matrizes unidimen- sionais séo utlizedas ne criacbo de tabelas que s6o armazenadas em mem: priméria. Este tipo de esiruturo corocleriza-se por ser formado por uma énica varié- vel que ser6 dimensionada com um determinado tamanho ‘A dimensio de ume matrz é constivida de constantes inteiras ¢ positives. Os nomes dados &s matrizes seguem as mesmas regras de nomes utilzados para indicar as variéveis simples. Paro se fer uma idéia de como utiizor matrizes em ume determinada situa 60, serdo apresentados dois programas, um com o uso de varidveis simples e © Outro com o uso de uma matriz. Considere para tanto o seguinte probleme: Elaborar um programa que efetue « leltura e apresente os médias de uma turme de 8 alunos, {lista seguinte opresenta o nimero de alunos e suas respectivas médios convcis, Com © conhecimento adquirido até este momento, possivelmente seria elo- borado um programa conforme indicado na figura 5.1 4 | Matizes Unicimensionois 69> [atone ee Algoritmo 1. _Leroito valores pora a média de cada aluno; 2. Apresentar 0 valor da média de cada aluno. Diograme de Quadros Programa Med Iria (Leia MOT, MD2, MDS, M4 MDS. MDS, MOT. MOE ‘Escreva MD, MO2, MD3, MD6, MDS, HO6, MOT, MDE ‘Figura 5.1- Diagrama de quadtas para leiturae escrita de oto méchos. Portugués Estruturado prograna MEDIA MDL, HD2, NDS, MDS, MOS, MDG, MDT, MDB + real inicio Leia HD), MD2, x03, HDs, HOS, eacreva MEDIA fim 106, OT, D8 _ Perceba que pars receber a média for voriéveis. Com a técnica proposta neste co voriével com a capacidade de armazenar os 4170 \égica Estruturada para Programagio de Computadores | D> a 5.2 - ‘5.2 - OperacGes Basicas com Matrizes Basicas com Matrizes ‘Uma matriz de uma dimenstio deve ser representada por um nome € por ume dimenséo. Desta forma seria conveniente definir para 0 problema proposto ro topico anterior a matriz MD (pore armazenar os valores das médias} com uma dimensio para cito elementos. Assim sendo, elo deveria ser representado ‘computacionaimente como: MB[l..], Isto significa que podem ser armazenados ‘em MD até cito elementos (de 10 8). ‘Anteriormente foi definido 0 conceito de voridvel como sendo o regio de meméria que seré ufilzada pelo programa para atmazenar um certo tipo de dado um deferminado espaco de tempo. No caso das matrizes Wvariaveis indexa- Gas}, pode ser armazenado mais de um valor por vez, desde que os valores n6o esiejarn nas mesmas posigdes de meméria, pois cade posicdo armazena apenas ‘um valor por vez. Observe que a matriz MD[L..8] sera formada por oito posicdes (MOM), MOI2], MOIS], MDI4}, MOIS), MDI6), MDI7} e MOIS} esta forma poder-se-a manipular uma quantidade moior de dados ou informacdes com pouco trabalho de processamento. Deve-se apenas consideror que com relagdo 8 manipulacdo dos elementos de uma motiz, ocrreré de forma individualizado, pois néo € possivel efetuar a monipulacdo de todos os elementos do conjunto co mesmo tempo, Na utlizacdo de matrizes deve ser usada em portugués estrufurado a instru- ‘¢60 conjunto que indica a utlizagéo de uma matriz, tendo como sintaxe: VARIAVEL conjuntof] de , em que seré a indicagGo dos volores inicil e final do tamanho da matriz e se 0 velor em questo vai utlizor valores reais, inteiros ou coracteres. ‘A letra dos dados de uma matriz é processada passo o passe, um elemento por vez. A insirucao de letura é lela seguida da variével indexada mais 0 indice de controle. O.processo de escrita 6 semelhante ao processo de leituro de seus elementos. Para esta ocorréncic deve ser utlizade o insttucdo escreva seguida da indicagdo da variavel indexada e sev indice de controle. ‘A seguir, S60 opresentados © diagramo de quadros figura 5.2) € o codifi- cago em portugués estruturado da leitura e escrita das médias dos oito alunos. Algoritmo 1. Leroo valores pare a média de coda aluno em uma varigvel indexoda: 2, Apresentar os valores das médias de cado aluno armazenados no variével indexade. “4 | Matrizes Unidimensionais: np Diograma de Quadros Programa Média tno Tenet ela mom, Tenet Escrova MOM Fim ‘Figura 5.2 - Diagrama de quadros para 0 letura e escita de elementos de uma mati. Portugués Estruturado: programe MEDIA conjunto[1..8) de reat inteire fimpara escreva x0{z) Observe que opesar dé o programa ficar maior em nimero de linhas, ficou mais compacto, alem de uma mobilidade moior, pois se houver a necessidade de efetuar o cai sionar a matriz e mudar ov. Observe que tanto a leitura quanto a escrite so processadas uma linha por vez. Desto forma, a mattiz é controlada pelo némero do indice que faz com que cade entrado aconteca em uma posicéo diferente da outra. Assim sendo, o matriz passa o fer fodas as médias. A tabela seguinte mostra como ficardo 0s valores _ ormazenados na matrz: 172 {6gica Estrturada para Programocio de Computadores | P lice com o element Tenha cuidado para néo confundir 0 iz, enquanto eleme rego de alocagto de uma unidade da m ‘armazenado em um determinado enderes 6 0 contetdo 5.3 - Exercicios de Aprendizagem Para demonstrar a uitlizacGo mais intensa do conceito de matrizes, conside- re como problemas os exemplos apresentados em sequida. 5.3.1 - Primeiro Exemplo Desenvolver um programa que efelve matriz denominada A de uma dimenséo. Co mesmo tipo que o motriz A, observando a set indice da matriz A for par, 0 voior {elemento} sendo 0 indice imp somado a0 valor existe jtura de dez elementos de uma ‘uma matriz denominada B de lei de formacao: se 0 valor do ‘ser multiplicado pelo valor 5; © valor 5. Ao final Algoritmo, Este exemplo de resolugdo mostra como fazer o trotamento da condicao do indice. 1. Iniciar 0 contador de indice, variével | como Tem um contador até 10; 2. Ler os 10 valores, um a um; 3. Verifcor se 0 indice é por; se sim, mutipica por 5, se ndo sora 5. Crior omatiz 8; 4, Apresentar os contedidos das duas matrizes. 4 | matizes Unicimensioncis, 731> Diagrama de Quadros Programa Veen indice Deve ser verificado se 0 valor do vee indice | em um determinado momento & ORIN) seré par quando dividido por 2 obtver resto igual a zero}. Sendo a Leia At) condigdo verdadeiro, seré implicada na matriz Bll a multiplicagéo do elemento Tod do matriz All por 5. Caso 0 valor do indice | sejo impor, sera implicada no © soma do elemento de All por 5. crave Bt) Fm Figura 5.3 - Diagrama de quados para co primero exemplo. Portugués Estruturado A, B+ conjuntell..10) de reat 3) Ri: dnteiro inicio para Ide 1 até 10 paso 1 faga dele Alt) tim_pare para Ide 1 até 10 passo i tage Rer-2* (diva) para 7 de} até 10 paso 1 fage eacreva 217) Himpare tin 4174 Logico Estutsrode pare Programacéo de Computadores | Pe 5,3.2 - Segundo Exemplo Desenvolver um programa que efetve a leitura de cinco elementos de uma matriz A de uma dimensao. No final, opresente o total do soma de todos os ‘elementos que sejam impores existentes dentro da matriz A. Algoritmo Perceba que em relacio ao primeiro exemplo, este apresenta uma diferen- a: 0 primeiro pedia para verificar se o indice era por ov impar. Neste exemplo, Esta sendo solicitado que se onaiise a condicéo do elemento ser impar e no do dice. Foi observado anteriormente para tomar cuidado e néo confundir elemento com indice. 1. Iniciar © contador de indice, variavel | como 1 em um contador até 5; 2. Leros 5 valores, um o um; 3. Verificar se o elemento é impar, se sim efetuar a soma dos elementos; 4, Apresentar o total de todos os elemento impares da matriz Diagroma de Quadros Observe que quando se for mengdo ao indice, indica-se @ voriével que controla © contador de indice, e no caso do exemplo anterior, o variével | Quando ‘se faz mengdo o elemento, indica-se: All, pois desta forma esté se pegondo o valor ormazenado e no @ sua posigao de endereco, Programa Checa Elements Leia A touat some = Soma + x Eeerova Soma Fim Fgura 5.4 Diagrame de quactes pora o segundo exemple. 4 | matizes Unidimensionois 751> program CHCA iO A} conjustot..5] @e inteizo RZ, SOMA: Sntedze Anicto soma = 0 Para I de 1 até paseo 1 face a are Ide 1 até 5 passe 1 aga Re alt] ~ 2+ «aay aiv 2) se (8 <> 0) antéo SOMA & SOMA + ALT) timee fim pera escreva soma, fm a Se desejor, em seguida pode executor r © primeira bateria lexercicio de fxa- sao Spresriods no fal do opivlo para treinar © apicarao do once ce trizes unidimensi 0s con r partes wnimensiona, Dep inue deste ponto para poder fazer a segqun- 5.4 - Classificagdo de Elementos mee eriementos © conceito de utiizagéo de matizes em é 10 & bostante omy Pode ser uilzaso para escher problemas de Uverscs shingbes, Uno es mols peculores & o neessidade de cetoro or ” ‘atriz. Quando os elementos forem do t é a iPO numérico, @ ordenagdo pode ‘ordertacdo pode ser ascendente ou descendente. " Existem vérios métodos para obter o ord iL a lena¢do de elementos de = tra, Nesto ob, sere apreseniado Um mélodo baste smpes de ecto lemento com todos os elementos subse Para demostrar este fpo de o¢do, imagine o seguinte programa: voi « _aboror um programa ue efeve olelura de cinco valores numéricos inti- fos om re imensdo. Apresentar os valores da matriz em 176 1 Logica Estruturada para Programagéo de Computadores | Algoritmo Considere para a solucéo do problema proposto a explicacéo dos valores apresentados na tabela seguinte: aia: A 5 indice [Elemento 1 Observe que os valores estéo ormazenados no ordem: 9, 8, 7, 5e3¢ deverdio ser apresentados nc ordem 3, 5, 7, 8 e 9. Para efetuar o processo de ordenacdo, é adequado fazer 0 uso do método de propriedade distributive para que todos os valores sejam combinados entre si, de forma que nébo folte nenhuma ‘combina¢éo, tampouco ocorra repetigao de uma combinacao ja estabelecido. Desto forma, 0 elemento que estiver em All] deve ser comparado com os elementos que estiverem em Al2], Al3], Ald] e AIS). Depois, o elemento que estiver em Al2] nao necesita ser comparado com o elemento que estiver em All, pois {6 do. somente com os. ue estiver foi anteriormente comporado, passando a ser com; elementos que estiverem em AI3], Ald] e AISI. Na sequnci em Al3] € comparado com os elementos que estiverem em Ala] € por fim 0 elemento que estiver em Ald] & comparado com 0 elemento que estiver em AS] Seguindo este rat bosta comparor 0 valor do elemento crmazenado em All valor 9} com o valor do elemento armazenado Al2] valor 8). Se 0 primeiro for ior que 0 segundo, entéo trocam-se os seus valores. Como a condi¢ao de troca é verdadeira, 0 elemento 9 de All é maior que o elemento 8 de A2], Passa-se para {Allo elemento & e para A\2| passo-se 0 elemento 9, desta forma os valores dentro da motriz passam a ter 0 seguinte formagéc: 4 | Matrizes Unidimensionais m7 ‘Assim sendo, verifica-se que 0 i que 0 valor do elemento de AIS) {valor 7) Efetua-se entdo a sua troco, ficando Al] com 0 valor 7 e Ai3} com o valor’. Desa forma, os valores de matriz passom c ter 0 seguinte formocéo ctuel valor do elemento de Alf) {valor 8) 6 mai Mitte: A dice [Eomento: i [7 ‘Agora devem ser comparados os valores dos elementos armazenad 4 nados nas posigdes AMll (valor 7) € Ald] valor 5). O valor do elemento 7 de All] € maior que © valor do elemento 5 de Ald) Eles sao trocados, passando AM a possuir 0 valor 5 € Ald) a possuir o vaior 7. A matriz passa a ter a seguinte formacéo. mar indie [Bemento 7 2 3 a 3 Observe que até aqui os elementos comparados foror ym sendo trocados de posi¢6o, estando agora em All} 0 elemento de valor 5 e que seré mudado mais uma’ vez por ser maior que © valor do elemento 3 armazenade em Als]. Desto forma, o matriz passa a ter a seguinte formacao: [Matias A Indice Elemento 1 2 3 4 5 4178 Légice Estruturada para Programagdo de Computadores | ‘© elemento de valor 3 armazenado em Alll néo ido. Assim sendo, deve ser pego © atual valor do parado sucessivamente com todos 0s outros mento armazenado em AZ] deve ‘em A(3}, Ald] e AIS}, segundo 18 parr deste porto necessita mais ser compara elemento do posigdo AIZ] e coms tlementos restontes. Desta forma, 0 valor do ele er comporado com os elementos armazenodos regra do oplicagao de propriedade distributive. Comparando © volor do elemento 9 da posigéo AlZ] com 0 elemento 8 da posicbe As} €efetuando roca de forma que 8 esija em A121 € 9 eseio erm AIS, @ maiz passa ater a seguinte formacto: Em seguido, o atucl valor do elemento de Al2 (valor 8) deve ser comporade com o valor do elemenio de Ald] Wvalor 7). 8 & maior que 7 e s60 trocados, feando 2) com 7€ Ald] com 8, Desta forma, o matriz passa a ter @ seguinte formagso: Matiz: A indice [Elemento 7 3 : poracdo e troca. O atual valor do elemento na posigao Al2é 7 e ser6 comporado com o valor do elemento AIS] que @ 5 S60 teibe valores trocades, passando Al2] ficar com © elemento 5 e AISI fcar com 9 elemento 7, conforme indicado em seguide: nfo continua 0 processo de cor Matra: A nice i yA 4 | Motizes Unidimensionois: 79> uCeeeesOSSSSCEEEESIEREERCESESSSOSSSSCESSSSCERESCOSSSOSOSSSSTESESCEEEERISSSSSSRSSSS com Ald} € AIS]. Sendo assim, o volor do elemento da posicdo Al3) {valor 9) s Note que até este ponto a posigdo Al2) foi comy - a 0 yparada com tod pg EEO al pee A cra om dso et seré efetvoda a comparacdo da préxima posicdo com o restante. No caso, de Al3] ‘comporado com 0 valor de posigdo Ald] (valor 8) Ser com eA} com 9, conorne em segues nn oes Wocads, and Aa © valor do elemento do posi¢do AIS) We segundo, ocore @ taco. Desta forma passa o possviro elemento &, como indicado em seguide: somehte o vitima com; <180 A seguir, ser6 cor TH [ | parade o valor do elemento da posi¢éo AS) Wvalor 8] com 7), Sendo 0 primeiro maior que o Passa a possuir 0 elemento 7 e AIS) Apés efetuar todos os comparagées necessérias de Al3) com Ald) e Als], fica paracdo que & Ald) com Al ossando Al4] possuir 0 elemento de valor 8 e AS) possuir como mostrado em seguida: cujos L6gica Estruturade pore Programagéo de Computadores | Pe 4 | Motrizes Unidimensionois esta forma, pode-se notar que ido ordenagao fol executada, opre- ‘sentando 0s elementos da matriz em ordem crescente. Pore dados do tipe caractere o proceso é o mesmo, uma vez que coda letra possui um volor diferente do outra, A letra “A’, por exemiplo, tern jor menor que a letra 8", e assim por dianle. Se a letra “A° matiscuic rmacdes). Fé com base nessa tabela que o pracesso de ordenacdo tha, pois cada coractere tem um peso, um valor previamente deter- inado, segundo este padrao. Diagrama de Quadros A seguir, é apresentado o diagrama de quadros da entrada, processamento de ordenagéo e apresentado dos valores ordenados figure 5.5). Atente para dois pontos: 1. primeiro pont bservado 6 0 ulllzacdo de uma segundo varidvel para cor ice subsequent no processo de ordenaséo, no caso 0 varidvel 1 Observe que 0 va a para como: | de 1, e depois pelo instruct encadeada 6 primeira ¢ iniciando o varidvel J, como: J de | + 1. Isto implica na seguinte sequi [Quando 1 for Jers i 2.3.4.5 2 3.4.5 3 45 4 3 Observe que somente quando « variavel /atinge o valor 5 € loco de repetigde se encerra, retomando ao lago de repeti«de do Variével /,acrescentando mais um em /até que | atinjo 0 seu limite © ‘ambos os lagos sejom encerrados. Quando o varidvel /for 1, « variével /serd 2 © contaré até 5. Ao final deste ciclo, « variavel /é acrescentodo de mais 1, tomando-se 2; assim Jpossa a ser 3. Quando a varigvel J voliar o set 5 passa a ser 3 € a voridvel J passe o ser 4, Este Ciclo Voi ser executado até que por fim a varisvel /seja 4 © c voriével 4 aur 182 Sela 5, @ seré comparado o peniitimo elemento com o seu elemento subseatiente, no caso, 0 tltimo. + © segundo panto a ser observado & a uilizacéo do algoritmo de troco, vitilzado junto da instrugdio de decisdo se All > AU entiio. Apés o verificagao desta condi, sendo o primeito valor maior que o segundo, efetua-se ento o sua troca com o algoritmo: Xeall Al — AU AUX Considere 0 elemento All) com o valor 9 (posicéo 1) ¢ 0 elemento ALi Com 0 valor 8 lposicée 2). Apé estar com 0 valor 8 e Necesséia a utlizagdo de uma va denominada x. Para que 0 elemento All| fique livre para receber o valor do elemento AUll, X deve ser implicado pelo valor do elemento All. Assim sendo, X Neste momento pode-se implicar 0 valor de All] © valor 9. Em 9. Para conseguir este eeito, & de apoio, @ qual esta sendo Prserama Grdanapao Tenet Tea A Toad tenet Escova A Figura 5.5 - Diagrema de quacios para 0 processo de erdenagéo. Logica Estruturada pore Programaséo de Computadores | Pe { Portugués Estruturado Observe em segudo a codiicacdo em poniguésestulwrado da rain de rdenacd 12.0 detalhe das instrucées para i Processes terivese de qv ro cso de efcaseamena sé enc 7 rofina de contagem , fina mais interno, no caso a Remarc 0 processomento por 0 fotna mols exiema, quando @ rofna mais interna fechar 0 seu ciclo. ee ‘programe ORDENAGKO TS, + conjuntot1..5} de intatzo 3, J, 1 Anteiro inicio (Rotina de entrada de dados) para J de 1 até 5 passo 2 face leia (2) f1m_para (Rotina de processamento de ordenacio) 20 1 face 5 passo 1 face ‘entto pare 7 de 1 até 4 fim, fimpare fim_pare notina Ge saida com dados ordenados} 6 5 passo 1 face para ra fescreva AlZ) fim_pare tim oe —_— rags LT a ae ae ERVAGAO) | documentar o programe, faciitando a interpretagdo de um determi trecho. 4 [ Matizes Uridimensionois 5.5 - Métodos de Pesquisa ——_EAErTrvesgs © trabalio com matrizes envolve muitas vezes 0 uso de grandes tabelos, dificuttande localizar um determinado elemento de forma répida, Imagine um: Matriz possuindo 4000 elementos. Seré que vocé conseguiria encontrar r mente um elemento desejado de forma manual, mesmo estando a listo de elementos devidamente ordenada? Certamente que ndo. Para solucionar este ‘ipo de problemo, vocé pode fazer pesquisos em matrizes com o uso de progra: ‘macGo. Serdo apresentados dois métodos para efetuar pesquisa em uma maiz, sendo o primeiro 0 seqiencial e o segundo o matodo de pesquisa binéria, 5.5.1 - Pesquisa Seqiencial © primeiro método consiste em efetuar a busca da informacéo desejada @ partir do elemento seqdencialmente alé o titimo, Localizande a infor- magéo no camino, ela é apresentada. Este mélodo de pesquisa é lent rém eficiente nos casos em que uma matriz possua seus elementos desorde- nados. Considerando a necessidade de trabalhar com uma matriz com 10 nomes, vejo em seguida o algoritmo, diagrama de quadros e codificagdo em portugués estruturado para efetuar uma pesquisa seqdencial na referida matriz, Algoritmo © algoritmo indicado em seguida estabelece a entrada de 10 nomes e ‘presentagdo de nomes que venham a ser solcitados durante a fase de pesqui- so 1. Iniciar um contador e pedir a letura de 10 nomes; um laco que efetue a pesquisa enquor Durante o fase de pesquisa, deve ser i esquisada. Esso informagdo deve ser elemento; sendo igual masa; caso cont Se ndo achar em tod odo; se exis, deve mos 3. Encerfar a pesquisa quando desejado. Usuatio assim © dese- da @ informacai parada com o ‘avanga para o préximo, existe 0 elemento pesqui- 184 Lica Estuucade para Programacéo de Computadores | De Diagramo de Quadros Prog'oma Pesguise_ Sequencil Ini Tet Fase 0 E Aas Faw esa » Norell IN s cha = iat ‘redader, Baa = Verdader. " s Escova Escrow est Nig Foi | “Fei Localzado Celina | outer! Leia Reso Far Figura 5.6 - Diagrama de quadros para o pesquisa sequencial. Portugués Estruturado ‘programa PESQUISA_SEQUENCIAL + conjunto[i..10) de caractere 3 Ge 1 até 10 passo 1 face ‘NOMELT) fenquanto (RESP = °SIM") faga ‘icio da rotina de pesquisa) wreva “Entre o none a ser pesquisado: * | Matrizes Unidimensionois 85> (ACHR = False.) faga fe (AcHA = .Verdadeiro.) entto fescreva 2250, * f03 localizado na posicko *, 7 ya PESQ, * nto foi localizado” ‘da roting de pesquisa) ne foi montade a rofna de pesquisa sequencial empregada em fo pratico, Observe 0 Trecho seguinte que executa o pesquisa com seus fenquanto (I <= 10) ‘ee (PESO = NOME AGHA © .Verdadeizo 7 2 3 4 5 6. 7. mento Borer 9. tim eo 10, fim enquanto Tl, e (ACHA = -Verdadeiro.) entto 2, escreva PESQ, “foi localizado na posicéo". 3B. ws. No linha 1, € solicitado que se informe o nome © ser pesquisado no variével 32 2, € setado 0 volor do contador de indice como 1€ na setada como tendo um valor folso. A linha 4 apresenta a instrugdo enquanto, indicando que enquanto © valor de variavel | for menor ou igual 0 10 e simullaneamenie 0 volor do varidvel ACHA for falso, deve ser processado 0 conjunto de instugées stuadas nas linhas 5, 6,7, 8 € 9 <186 Légica Estruturade para Programacao de Computadores | Pr Neste ponto, a instrugdo se do linha 5 verifica se 0 volor da variével PESQ & igual co volor da varigvel indexada NOMEI|,€ se for igual, é sinal que o nome foi encontrado. Neste caso, a varidvel ACHA passa a ser verdadeira, forgando a ‘execugGo do linha TI, uma vez que uma das condicdes do laco enquanto da linha 4se tornou folsa, Na linha 11, 6 confirmado se a varidvel ACHA esta mesmo com 0 -dadeiro. Sendo esta condicbo verdadeira, € apresentada a mensagem da 0 Caso na linha 5 seja verificado que o valor de PES néo é igual ¢ NOME ‘sera entdo incrementado 1 4 varidvel |. Seré executada o préxima veriicagao de ESQ com NOMEI2], e assim por diante. Caso 0 processamento chegue até o final e do seja encontrado nada, a varivel ACHA permanece com valor falso. Quando candlisada pela linha Tl, sera entdo falsa e apresentard o mensagem da linha 14. Observe que © voridvel ACHA exerce um papel importante dentro da rotine de pesquisa, pols serve como ur stabelecendo um volar verdadeiro quando uma determinada informacéo é localizada. Este tipo de tratomento de variével & conhecido pelo nome de FLAG [Bor ‘que, co comecar arrotine, a band 60 encontrada, a bandeira & de informagéo desejado, 5.5.2 - Pesquisa Binéria © segundo método de pesquisa é em média mais répido que o primeira, porém exige que a matriz esteja previamente classificada, pois esse método “divide” a lista em duas partes e “procura” saber se c informacao a ser pesquisada esté acima ou abaixo da linha. de divisdo. Se estiver acima, por exemplo, toda o metade obaixo € desprezada. Em seguido, se o informagio no foi encontrado, € novomente dividida em duas partes, @ pergunta se aquela informacdo esté acima ou abaixo, e assim voi sendo executada até encontrar ou no a informacéo pes- quisada. Pelo fato de ir dividindo sempre em duas partes o volume de dados é © método recebe a denominacéo de pesquisa binéria. Pora exempliicar © 60 deste tipo de pesquisa, imagine o seguinte fabela indice <4 | Motrizes Unidimensionais 87|> ‘A tabela esté representondo uma matriz de umo dimenséio com 7 elemen- os. Desejc-se neste momento efetuor ume pesquisa de um dos seus elementos. No caso, seré escolhido 0 elemento 20, sendo este o Ultimo registro do tabela. © processo binério consiste em pegar o némero de por dois, Sendo assim, 7 +1} dv2 = 4; 0 que interessa de foto é somente 0 valor do {uocienteineiro, Entéio« fabela fica chdida em cuas partes, como em seguido: Primera porte apés primeira divisio neice [Elements 1 10 2 W 3 12 4 15 ‘Segunda parte apés primeira diviso indice Blementos: 5 7 é [8 7 20 esté na primeira ou na segunde parte. Delecio-se que 20 esta no segundo parte. Desto forma desprezo-se 0 primeira e divide-se em duas partes novamente o segunda porte da fabela. Como s6o 4 elementos dvididos por 2, resultam duas ‘tobelas, cada uma com dois elementos, conforme em seguide: Primeira parte opés segunda divsio nce [Eementos Légic0 Estruturoda para Programacdo de Computadores | Pe Apés esta segunda diviséo, veriico-se em qual das partes 20 esté sitvodo. Veja que esté na segunda parte; desprezo-se @ primeira e divide-se a segunda parte novamente por dois, sobrando um elemento em cado porte: Primeira parte apés terceira divisto Indice [Biemertos 6 8 Segunda parte opés terceira divistio indice [Bementos: 7 20 Apés a ferceira diviséo, 20 encontrado no segunda parte da tabela. Se estiver sendo pesquisade o elemento ¥4, ele no sera apresentado por ndo exist. Considerando a necessidade de trabalhar com uma matriz com 7 elementos numéricos, veja em seguida o algoritm: fama de quadros e codificagdo em porugués estruturado para efetuar uma pesquisa binéria no referida matriz, Algoritmo © algoritmo indicado em seguide estabelece a entrada de 7 volores numéricos e respectiva ordenacéo crescente, Em seguida efetua a apresentacdo ‘somente dos valores que venham a ser solitados durante a fase de pesquise. 1. Iniciar um contador, pedir o leitura dos sete valores numéricos e colocd- -los em ordem crescente; 2 cr um laco que efetue o pesquisa enquanto 0 usuario assim 0 Durante c fose de pesquisa, deve ser solicitada a informagao o ser pesquisada. Esso informacéo deve ser comporads, utiizando © método de pesquisa binéric, Sendo igh 0; cOS0 contrario, avanga para 0 préximo, Se ndo achar em toda formar que ndo existe 0 ‘elemento pesquisado; se existr, deve most 3. Encerrar @ pesquise quando desejado. Diagrama de Quadros © diagram seguinte concentro-se somente no trecho de pesquisa binéria, uma vez que os demais algoritmos jé séo conhecidos. “€ | Motrizes Unicimensionois 891> Resp «Sint ep "Sir" Lola Pes Comego 1 Finale? Ache «False omega <= Final.© Acha = False Meio = (Comegn + Fina DIV? Pesa= A eo] N s esq < Ae} x s cha = Nerdocer ‘comego Fal Meo Meio" cha = Verdadeiro N s Esrova Pesg, "N80 Foi Upesizase™ Escleva Pesg, "Fo Locatzado na Pesca ea Resp Figura 5.7 - Dlagrama de quadres para o pesquisa bind, Portugués Estruturado © programa seguinte demonstra 0 utiizagéo de rotina de pesquisa binéria dentro de um contexto pr programa PESQUISA BINARIA ‘At conjunto{i..7] de inteire 1, X, Jy PBSQ, COMBCO, FINAL, MEIO + inteiro ACHA 1 1égic0 inicio (Leitura dos elenentos) para 7 de 1 até 7 paso 1 face <190 Légica Estruturado pare Programacéo de Computadores | Pe | motrizes Unidimensionois Tele AUT fim pare {ordenagae) para T de 1 até 6 paso 1 faga (rrecho de pesquisa) RESP © *SIM" fenquante (RESP = “SIN") faga ‘cecreva’“Entre ¢ elenento a ser pesquisado: * Leia PESD compco «1 ACHR + -Falso. fenquante (COMECO <= FINAL) MEIC © (coMEco + Fray) fe (PESQ = A[MBIO]) ent ho CHA .Verdadeire senko ‘be (PESQ < A[MEIO]) entBo (AHA = .Falso.) faga comeco + MEIO + 3 fimse Himse fim _enquante CHA = Verdadeixo.) entio sreva PESQ, " foi localizado na posicto *, MEIO 1, * nlo foi localizado Anferiormente foi montada a rotina de pesquisa empregada goda dentro de um Contexfo. Observe em sequida o trecho que execuia © pesquisa com seus comen- trios: a como + 2 FIWAL © 7 ACHA © -Falso. fenguanto (COKBCO <= FINAL) MEIO © (COMECO + FINAL) div 2 ‘se (PES = A[METO]) entfo |. ACHA © Verdadeizo. senko ye (PESO < AIMETO}) entde (CHA = -Faiso.) faga | COMECO + MEIO + 2 fimse extito jereva PESQ, “foi localizado na posigto”, MEIO “no foi Localizadot No linha 1, & solicitado que seja informado o dado a ser pesquisado. As linhas 2 e 3 inicializam os variaveis de controle COMECO com 1 FINAL com 7. linha 4 inicialza © fag ACHA. A linha 5 opresenia a insirugéo que manterd o Pesquisa em execucdo enquanto 0 COMECO for menor ou igual co FINAL simultaneamente 0 flag ACHA seja falso. Assim sendo, o processamento divide 0 tabela do meio, conforme instrugao na linha 6, em que 1 que é 0 comeco da tabela 6 somado com 7 que € 0 fim da tabela, resuliando no total 8 que dividido por 2 resulta 4 que é 0 meio da tabelo. Neste ponto, 0 tabela esta dividida em duas partes. A instrugéo da linho 7 verifica se 0 volor fornecido para PESQ & igual ao valor armazenado na posigao Ald]. Se for, o fag € setado como verdadeiro sendo em seguida apreseniada a mensagem da linha 18, Se condigdo de busca néo for igual, pode ocorrer uma de duas sitvacées, ‘A primera sitvacto em que @ informacdo pesquisade esté numa posigdo ‘acima do atual no caso 1, © valor da variave| PESQ é menor que 0 valor vel FINAL deve ser implicada pelo valor da variavel MEIO subtroido de icando © varidvel FINAL com valor 3. Se for 192 Légica Estrutucada para Programacéo de Computadores | D> ‘esta a situacéo ocorrida, seré processada a linha 5 que efetuaré novamente 0 lago pelo fato de 0 valor 1 da variavel COMECO ser menor que um, igual 00 valor 3 da. Yoriavel FINAL. A instrugéo da linha 6 divide a primeira porte do tabela erm mais dduas partes, desta forma, o COMECO Walor 1) do tabela é somado com 3, resuitan- do 4, e dividido por 2 resulta 2 \sendo considerada o parte inteira do resultado da diviséol, que € 0 meio da primeira parte do tabela. A segunda sitvagtio pode ocorrer caso a informacéo pesquisada esteja : r de {or esta a situagdo ocortida, seré processada a linha 5 que efetuard novamente o ago pelo fato de o valor § do varidvel COMECO ser menor que um, iguol ao valor 7 da variével FINAL. A instrucGo da linha 6 divide @ segunda parte da duos partes, desta forma, 5 € somado com 7, resultando 12 que dividido por 2 resullard 6, que é o meio da segunda parte da tat {qual for a situacéo executada, a rotina efetua o processo de diviso oté encontrar umd das extreridades de tabela. Desta forma, se nade for encontrado {até este momento, a ratine avisa que o referido elemento nao foi localizodo. A seguir, faca os exercicios da segunda bateria exercicio de fxocéo 2) pare treinar a aplicagao dos conceitos de pesquisa e ordenacao. 5.6 - Exercicios de Fixacéo 1. Desenvolva os diagramas de quadros e codificacao em porfugués estru- turado dos seguintes problemas: X49) Ler 10 elementos de uma matriz ipo vetor e apresenté-los, b) Ler 6 elementos em umo matriz A tipo vetor. Construir umo matriz B de mesme dimenséo com os elementos da matriz A muliplicados por 3. 0 elemento Bil] deve ser implicado pelo elemento elemento B12] implicado pelo elemento Al2|* 3 e assim por diante, ‘até 8, Apresentar a matriz B. xe) Ler duas matrizes A e B do tipo vetor com 20 elementos. Construir ‘uma matriz C, em que cada elemento de C deve ser 0 subtracdo do elemento correspondent de A com B. Apresentar a matriz C. d) Ler 15 elementos de umo matriz A do tipo vetor. Construir uma matriz B de mesmo tipo, observando a seguinte lei de formacéo: “Todo elemento de B deve ser 0 quadrado do elemento de A correspondente". Apresentor os matizes Ae B 4 | morizes Unicimensionais 931> 4194 €) Ler uma matriz A do tipo vetor com 15 elementos. Construir uma matriz 8 de mesmo tipo, de modo que cada elemento da matriz B ‘seja © fatorial do elemento correspondiente da matriz A. Apresenta’ ‘as motrizes A eB. | Ler duos matrizes A e B do tipo velor com 15 elementos cado. Construir uma mattiz C, sendo esta a juncdo das duas outros matrizes. Desta forma, C deve ter o dobro de elementos, ou seja, 30. Apresentor matriz C. {9}, Ler duas matrizes do tipo veto’, sendo A com 20 elementos e B com 30 elementos. Constr uma matriz C, sendo esta a juncéo das duos outras matizes. Desta forma, C deve ter a capacidade de ‘armazenor 50 elementos, Apresentar a matriz C. Ler 20 elementos de uma matriz A fipo vetor e construir uma matriz de mesmo dimensdo com os mesmos elementos da mattiz A, os quais devem estar inveridos. Ou seja, 0 primeiro elemento de A Passa a ser 0 oltimo de B, o segundo elemento de A passa a sero Pentitimo de 8 e assim por diante. Apresentar as matrizes Ae B. \atrizes (A, B e C) de uma dimensdo com 5 elementos cada, uma matriz D, sendo esta a jungdo das trés outras zes. Desia forma D deve ter 0 triplo de elementos, ou seja, 15. Apresentar os elementos da matriz D. Ler uma matriz A do tipo vetor com 20 elementos. Construir uma matriz 8 do mesmo tipo da matriz A, e cade elemento de B deve ser ‘9 somatério do elemento correspondente do matriz A. Se 0 valor do elemento de A {l) for 5, 8 [ll deve ser 15 © assim por diante, Apresentar o motriz B. XK) Ler uma matriz A do fipo velor com 10 elementos positives. Con uma matriz B de mesmo tipo e dimenséo, e cade elemento do matriz B deve ser 0 valor negativo do elemento correspondente da matriz A. Desta formo, se em All] estiver armazenado 0 elemento 8, deve estar er -8, e assim por diante. Apresentar os Ler uma motiz A tipo vetor com 10 elementos. Construir um matiz \*" B de mesmo tipo, e cada elemento de B deve ser a metade de cada elemento de A. Apresentar os elementos dos matrizes A e B. Xm) Elaborar um programa que efetue o célculo de uma tabuada de um niuimero quolquer e armazene os resultados em uma matriz A de uma dimenséio para 10 elementos. Apresentar os valores armaze- nados na mati, Logica Estrturada para Programacéo de Computadores | Ler 20 elementos (valores reais) pora teriperaturos em graus Celsius ‘em uma matriz A de uma dimenséo do tipo vetor. O programa deve ‘apresentar a menor, a maior e a média das feriperaturas das. Ler 25 elementos {valores reais) para temperaturos em graus Celsius ‘em uma matiz A de uma dimenséo do tipo vetor. Constrir uma ‘matrz B de mesmo tipo e dimensGo, e cada elemento da matiz 8 deve ser o converso da temperatura em graus Fahrenheit do ‘elemento correspondente da matriz A. Apresentar as matrizes Ae B. er 12 elementos infeiros para uma matriz A de uma dimensao do velor. Consiruir ume matriz B de_mesm« observando a seguinte lei de formacdo: “Todo elemento da .) 9) que for impor deve ser mutiplicado por 2; caso contrario, o elemento da matriz A deve permanecer constante”, Apresentar o matriz B. Ler 15 elementos reais para uma matriz A de uma dimensao do tipo vetor. Consiruir uma matriz B de mesmo tipo e dimensdo, observando a seguinte lei de formacéo: “Todo elemento da matriz A que possuir indice par deve ter seu elemento dividido por 2; caso contrério, 0 elemento da matriz A deve ser mi Apresentor a matriz B ql 4 Ler 6 elementos Wal dimensdo do tipo vet dimenséo. A matriz C deve ser formada pelos elementos de indice impar das matrizes A e B, e a matriz D deve ser formada p elementos de indice par das matizes A e B. Aprest CeD. 3) Ler duas matrizes Ae B de uma dimenséo com 6 elementos. A matriz A deve aceitor openas a entrada de valores pares, enquanto ‘a matriz B deve aceitar openas a entrada de valores impares. A entrada das matrizes deve ser validada pelo programa ¢ néo pelo usuério. Consiruir uma matriz C de forma ela seja a jungdo das matrizes A e 8, de modo que a motriz C contenha 12 elementos. Apresentar a matriz C f) Ler duas matrizes A e 8 de uma dimenséo com 10 elementos. A matriz A deve aceitar apenas a entrada de valores que sejam divisiveis por 2 e 3, enquonto a motriz 8 deve aceitar openas o entrada de valores que sejam miltiplos de 5. A entrada das matrizes deve ser validada pelo programa e ndo pelo usuario. Construir umo matriz C de form que seja a juncdo das matrizes Ae 8, de modo que o mattiz C contenha 20 elementos. Apresentor a motiz C 4 | Matizes Unidimensioncis 95 1h u) Ler duas motrizes Ae B de uma dimensdo com 12 elementos. A matti2 A deve aceitar openas a entradc de valores que sejam divisiveis por 2 ou 3, enquanto a matriz B deve cceitar apenas o entrada de valores que nio sejam mittiplos de 5. A entrada das motrizes deve ser validada pelo programa e nao pelo usvério, Construir uma matriz C de forrna que seja a juncdo das matizes Ae B, de modo que a matriz C contenha 24 elementos. Apresentar o motrz C 2. Desenvolva os diagramas de quadros e codificagée em portugués 4196 esiruturado dos seguintes problemas: Ler 12 elementos de uma matriz fipo vetor, colocd-los em ordem decrescente e apresentar 0s elementos ordenados. ’ Ler 8 elementos em uma matriz A tipo vetor. Construir uma matriz B de mesma dimensdo com os elementos da ‘A multiplicados por 5. Montar uma rotine de pesquisa binario, para pesquisar os elementos armazenados ne matriz B. a Ler uma matriz A do tipo vetor com 15 elementos. Construir uma matriz B de mesmo tipo. Cada elemento da matriz B deve ser 0 fatorial do elemento correspondente do matriz A. Apresentar os elementos da matriz B ordenados de forma crescente, @) Ler uma matriz A com 12 elementos. Apds sua leitura, colocor os ‘seus elementos em ordem crescente. Depois de ler uma motriz B também com 12 elementos, colocar os elementos de B em ordem ‘crescente. Construir uma matriz C, em que cada elemento de C é a ‘soma do elemento correspondente de A com 8. Colocar em ordem decrescente o matriz C e apresentar os seus valores. ) Ler duas matrizes do fipo vetor A com 20 elementos e 8 com 30 ‘elementos. Consiruir uma matriz C, sendo esta a jungéo das duas outras matizes. Desta forma, C deve ter a capacidade de armaze- rar 50 elementos. Apresentar os elementos do matriz C em ordem decrescente. AL ler 30 elementos de uma matriz A do tipo vetor. Const: uma matriz B de mesmo tipo, observando o seguinte lei de formacéo: “Todo elemento de B deve ser 0 cubo do elemento de A correspon- dente“. Montar uma rotina de pesquisa seqiencial, pore pesquisor (05 elementos ormazenados na matrz 8 19) Ler 20 elementos de uma matriz A tipo vetor e construir uma matriz B de mesma dimens6o com os mesmos elementos de A acrescen- todos de 2. Colocar os elementos da matriz 8 em ordem crescente Logic Estrutrade pote Programacéo de Computadores | Pe hy ‘Montar uma rofina de pesquisa binéria, para pesquisar os elemen- tos ormazenados na matriz B. Ler umo matriz A do tipo vetor com 20 elementos negotivos. Construir uma motriz 8 de mesmo tipo e dimensio. Cada elemento da matriz B deve ser 0 valor positive do elemento correspondente da mattiz A, Desta forma, se em All estiver armazenado 0 elemento -3, deve estar em Bill o valor 3, e assim por diante. Apresentar os elementos da matriz B em ordem decrescente. Ler uma matriz A tipo vetor com 15 elementos. Construir uma mattiz B de mesmo tipo. Cada elemento de B deve ser a metade de cado ‘elemento de A. Apresentar os elementos das matrizes A em ordem decrescente e os elementos da matriz B em ordem crescente. Ler duos matrizes A e B do tipo vetor com 15 elementos coda. Construir duas outros matrizes Ce D de mesmo tipo. Cada elemento da matriz C deve ser 0 somatério do elemento correspondente do matriz A, ¢ cada elemento da matriz 0 deve ser 0 ‘elemento correspondente da matriz 8. Em seguida const matriz E, que deve conter a diferenca dos elementos das mi fe D com a soma dos elementos das matrizes A e B. Aprest elementos da matriz E em ordem crescente, g 4 f+ } Pa CST erik S ee a> 4 | Motrizes Unicimensionais 4| Anotagdes CAPITULO Matrizes Bidimensionais Este capitulo opresenio a uflizacdo de tabelas em memérios com mais de uma dimensio. Neste sentido seré dado énfase ao conceito de uilizagéo das ma- trizes bidimensionais. 6.1 - Matrizes com Duas Dimensdes ‘Anteriormente, foi explicado 0 uso de variéveis indexadas com apenas uma dimenséo (uma coluna e verias linhas). A portir deste ponto, serdo apresentadas tabelas com mais colunas. Sendo assim, teremos posigdes indexadas nos sentidos horizontal e vertical. Desta forma, essas tabelas so denominadas matrizes bidi- ‘mensionais. ‘Amatriz de duas dimensées, por se relacionar diretamente com o uiliza¢é0 de tobelas, é 0 estrutura mois comumente utiizada. Matrizes com mais de duas dimensdes so izadas, porém com menos frequéncio. Sabendo mani- puler adequadamente uma motriz de duas dimensées, sera muito féci utilizar dis Logica Estruturada pora Programacao de Compuladores | matrizes que tenham trés, quatro ou mais dimensbes. Um importante aspecto a ser considerado é que na manipulacée de uma matriz de uma dimenséo utliza-se apenas um aco. No caso de matrizes com mais dimensdes, deve ser utlizado 0 numero de lacos relativo ao tamanho da dimenstio ‘tribuido a uma matrz. Desta forma, uma matriz de duos dimensdes deve ser con- trolada com dois lagos, uma matriz de trés dimensées deve ser controlada com tr€s lagos e assim por diane. Em matrizes de mais de uma dimensdo 0s seus elementos sdo também monipulados de forma individualizada, sendo a referencia feita sempre por meio de dois indices: o primeiro para indicor a linha e o segundo para indicar @ coluna. Desta formo, TABELAI2,3] indica que esté sendo feita uma referéncio ao elemento ‘ormazenado na linha 2 coluna 3. € | Matrzes Bidimensionois 99h 6.2 - Operacdes com Matrizes de Duas Dimensdes Uma matiz de duos dimensées esté sempre fazendo mengéo a colunas e é representada por seu nome e seu tamanho dimensdo) entre Desta forma, é uma matiz de duos dimensées 0 estrutura TABELAN. nome é TABELA, possuindo um tamanho de 6 linhas (de 10 8) 5 colun ‘ou sejo, é uma matriz de 8 por 5 (8 x 5). Isto significa que podem ser armazenados na mattiz TABELA até 40 elementos. A figura 6.1 opresenta a matriz TABELA com a indicogéo dos enderecos (posigdes) que podem ser ulllzades para armazenar seus elementos. Matric TABELA ma —+ 1 T Figura 6.1- Exemplo da matr TABELA com suas posigées. Uma miatiz de duas dimensées € atribuida pela instrucdo eanjunto jé uliizada para defi o uso de ura matriz de uma dimensdo, sendo bastante parecidos em sua referéncio. A sinlaxe €: VARIAVEL : conjunto[) de , em que e séo c indicagdo do tamanho da la e o fipo da matriz, que pode ser forriada por valores reais, inteiros, lagicos ov caracteres. As operacées de leitura e escrita de umo matriz de duas dimensées, assim como des matrizes de uma dimensto, s6o processadas posso 0 passo, um elemento por vez. A seguir, sd0 apresentados 0 diagrame de quadros e codifico- ‘$80.em portugues estruturado de leitura dos 4 notas bimestois de 8 alunos. <1100 Légica Estruturada pore Programacae de Computadores | De Diograma de Quadros Observe que esté sendo considerada c leitura das 4 notes de 8 alunos figura 6.2), Assim sendo, a tabela em questo armazena 32 elementos. Um detolhe a ser considerado é a utlizacéo de duas variévels para controlar os dois, Indices de posicionamento de dados na tabela. Anteriormente, foi utizada o varivel | para controlar as posigSes dos elementos dentro da matriz, ou sejo, posicdo em nivel de linha. Neste exemplo, a variével | continua tendo © mesmo feito e a segunda variével a J, esté controlando a posi¢éo da colune, Programa Mat Beimensional nico Tenet dened Leia Notas J} Tenet denat screva Notas} Far Figura 6.2 - Diagrama de quadros para a keitura e escrita de uma mati bidimensional. 1a de quadros, percebe a seré efetuada no pr Em seguida imeiro lugar 0 lac posigée em rlact és tnhos e depos 6 iniiado logo de vanvel J para conlar {© posigdo em relagdo.ds colunas. ‘Ao cnalisar o dic NOTASIL., lembrondo que © primeiro valor dentro dos colchetes representa a linha e o segundo representa a coluna. Assim sendo, itada para 0 primeiro aluno a sua primeira nota. Depois € incre- sm relagéo & coluna, sendo colocade para o entrada « posicéo NOTASIL21, linha 1 e coluna 2. Desta forma, seré digitada para o primeito aluno a ‘suo segunde nota, Quando o contador de coluna, 0 lao da variével J, cfingir 0 valor 4, ele seré encerrado. Em seguida 0 contador da variével | serd incrementado com mais 1, fornando-se 2. Seré entéo inicializado novamente o contador J em 1, permitindo que sejo digitado um novo dado ne posi¢éo NOTAS! “4 | Matrizes Bidimensionais 1081 1> io © Teeanisme de preenchimentoestenderse-4cté que o contador de lnhas Giinj © seu ilo voor, no caso 8. Esse lag & 0 principal, tendo a funcéo de Posicionomento na tabela por oluno, tonirola posionomento das nats. Segundo leo, mats itemo, Portugués Estruturado: programa YATRIZ_BIDIMENSIGNAL NOTAS + conjuntofi..6,1..4) de reat I, 3: Antetzo infeto para I de 1 até © paso 1 face para J de 1 até ¢ paszo 1 tage para I de 1 até @ passo 1 face para J de 1 até ¢ passo 2 face fescreva NOTAS(I, J] fin pare ttm pare tim 6.3 - Exercicios de Aprendizagem ! Para demonstrar a uilizagdo de matizes de dk 3 me fe duas dimensées, consi exemplos apresentados em seguido: + considere os 6.3.1 - Primeiro Exemplo Desenvolver um programa de agenda que cadastre o nome, endere homo e etne de pesios Ao tae rogram dove epson c sett ispostos em ordem aliabética, in men semen de jabato, independentemente do forma em que Algoritmo Para resolver este problema, vocé precisa de uma tabela com 10 linhas | {pessoos| e § colunas (dados pessoas). Assim sendo, imagine essa tabela como diva | Logico Estruturade para Programacao de Computadores | Sioa 0 _t Em cada coluna é indicado 0 seu niémero, sendo 5 colunos, uma para cada informagao pessoal e 0 nomero de linho totalizando um conjunto de 10 informo- bes. Nesia tabela, so utilizados dois elementos numéricas, o CEP e o Telefone, mas como néo s60 executados cdlculos com esses numeros, eles so armazena- dos como caracteres. fo 6 foi oF fo, bastando aplicé-lo neste contexto. Porém, apés a coms imeiro nome com 0 segundo, sendo o primeiro maior que © segundo, devern ser rocades, mos os elementos relacionados ao nome também devem ser frocados rno mesmo nivel de verificacdo, ficando para o final o trecho de apresentacdo de todos 0s elementos. Diagrama de Quadros Neste exemplo, ndo estio séndo ullizados para a entrada de dados dois locos pare controlar 0 posicionamento dos elementos na matriz. Note que os referéncios feitas ao endereco das colunas so ctades como constantes, durante o variagdo do valor da variavel |, Com relacéo é ordenaco de elementos de uma motiz de duas dimensbes, 0 processo 6 0 mesmo uilizado para ordenor matizes de yp dimenséo. Se voce sabe fazer 0 ordenacéo de um estilo de matriz, sabe ‘ordenagéo de ‘qualquer esi, seja ela da dimensdo que for. Observe No de ordenacéo. fRoure 6.1, 0 trace de posigao de todos os elemenios. assim que os nomes $29 Camparados e verficado que esto fora de order. Percebe que assim que o ome Seats de posicée, os demeis elementos relacionadas a ele no mesma fhe também o séo. | matrizes Bidimensionais: 103 |> Aual 1.9.4 Pedemo «Atul 1.10, ‘Fgura 6.3 -Diagrama de quacras para o echo de ordenazio do agenda 0 dos dadi e locos ne &,orresentacde dos dodos ordenodos estéo sendo uizados os dois \6gica Estrutureda para Programogéo de Computadores | x © papotaruaL, 4) CO trecho de ordenagéo do programa AGENDA pode ser simplificado com 0 insercao de um laco para administra a troca apés a verficacdo do condigéo: $& (DADOIATUAL] > DADOIPROXIMO. I} ento. 4 | Motrizes Bidimensionais 105 |> Diagrama de Quadros Neste segundo exempo est send len do em consk Alogrdma de quads tech conespondenteetdenagan, Panes Pea Dati Prexame, K] =x ‘Figura 64 - Diegrama de quactos para 0 trecho de ordenaséo simpiticado da agenda Portugués Estrvturado ee programa AGENDA ADO ; conjuntoll..10,1..5) de caracteres (Rotine de crdenacse © troca de todos os elementos ea de to se elementos) para ATUAL de 3 (pare PRORINO (wanotare 41106 Légice Esrutorada para Programagdo de Computadores | be —_aamnman Fe BADOLATUAL, DADO[ATUA:, K) « DADOLPROXTHO, K] DADO PROXINO, KI & x eim_para fHimse fim_pare fim pare (Rotina de sada) 6.3.2 - Segundo Exemplo Desenvolver um programa que efetue a leitura dos nomes de 6 alunos © também de suos 4 notas bimestras, Ao final, o programa deve apresentar o nome de cada aluno clossiicado em ordem aifebstice, bem como suas médias © © medio geral dos 8 alunos Algoritmo Neste exemplo, é apresentado um problema cuja sol metizes para a entrada de dados. J6 @ sabido que uma matriz trabalha somente com dados de mesmo tipo thomogéneosl. E neste caso, em parficular, sera ecessario ter uma matiz tipo vetor para armazenar os nomes € 0 oUtra tipo fabela para armazenar os notas, uma vez que 0s tipos de dados 0 serem manipulados sdo diferentes. Considere para tanto as duas tabelas seguintes 40 sera uillizar duos [Notas [Notes 2 [Notas [Notas 4 eT 7e]9]5]°]"]— Sy] >] ]2)=]— 4 | Matrizes Bidimensionois 107 > © programa deve pedir 0 nome do aluno e em seguida as quatro notas, coleular a média e armazené-la numa terceira matriz de uma dimensio, para entdo opresentar 0 nome de cada aluno e suc respectiva média, bem como, a mia do grupo, Logo no inicio, a variével SOMA_MD € inicializada com valor zero. Esta variével seré utiizada pora ormazenar @ soma das médias de cada aiuno durante entrada de dodos. Depois o instrucdo pora /de | até 8 paso 1 faga inicializa o primeiro loco ‘que tem por finalidade controlar 0 posicionamento dos elementos no sentido linear. Neste ponto, « voriével SOMA_NT é iniciaizada com o valor zero para 0 primeiro aluno. Esta varidvel guorda @ soma das quatro notes de cada aluno durante 0 execugéo do segundo laco. Neste momento, é solcitado antes do ‘segundo lago o nome do aluno. Toda vez que 0 segundo laco é encerrado, a matriz MEDIA é alimentada com © valor da variavel SOMA_NT dividido por 4, Deste modo, ter-se o resultado da média do aluno cadastrado. Em seguida é efetvado o célculo da soma das médias de cada aluno no variével SOMA MD, que posteriotmente serviré para determinar © célculo da média do grupo. € neste ponto que o primei processo para o préximo cluno, e assim iré transcomrer até apresentacéo dos nomes de cada aluno e suas respectivas médias. Ao final, a variével MEDIA_GP determina 0 célculo do média do grupo (média das médias} por meio do volor ormazenado na varidvel SOMA_MD dividido por 8 {total de ‘lunos) Diograma de Quadros at ‘Nome [ual] > Nome [xoxo] ‘Figura 6.5 Diagrama de quadros para o trecho de ordena;éo do programa de notas. <1108 jturoda para Programacao de Computadores | Pe maDIA(T] © SOMALNT / 4 SOHAL & SOMA_MD + MEDIATI) fim_pere (Rotina de oxdenagso ¢ troca de elenentos) ao 1 face, 8 passe 1 face fee [NOMES|ATUAL] > NOMES(PROXTNO]) entéo x © NONES[ATUAL) [NOMES|ATUAL] — NOMES( PROXTHO] Noms |PROXIHO] = X Y © MEDIALATUAL) PROKIMO) = Y ‘NOMEST) 5°) sgprat) +, séprace ‘A seguir, fara os exercicios de fixagéo (exercicio de fixa¢do 1) pare treinar a aplicacdo dos conceitos de utilzacdo de matrizes de duas dimensdes. 4 | Motizes Bidimensionais 109 1> 6.4 - Exercicios de Fixagdo a nee ee eee eee ESTEE 9) Ler uma matriz A de duas dimensées com 4 i Desenvolve os diagramas de quadros e codificagéio em portugués estru- turado dos seguintes problemas: 4 9) Lerduas matrizes Ae B, cada uma de duas dimensées com 5 linhas @ 3 colunas. Construir uma matiz C de mesma dimensdo, que & formoda pela soma dos elementos da matriz A com os elementos do matrie B. Apresentar a matriz C 1). Lerduas matizes A e B, cado uma com uma dimensdo para 7 elemen- tos. Construir uma matrz C de duas dimenstes. A primeira coluna deve ser formada pelos elementos da matriz A e a segunda coluna deve ser ‘ormade pelos elementos da matriz B. Apresentor a maiz . 9) Ler 20 elementos para uma matriz qualquer, considerando que ela fenha o tamanho de 4 linhas por 5 colunas, em seguida opresentar omateiz 4) Ler uma matriz A de uma dimenséo com 10 elementos. Constn uma motriz C de duas dimensées com irés colunas. A primei in dimensdo para 5 elementos, que seja formoda pelo somatério dos elementos correspondentes de cada coluna da mattiz A. Ao final o programa deve apresentar 0 totcl do somatrio dos elementos da mattiz B com 0 somotério dos elementos da matriz C. Ler quatro matrizes A, B, Ce D de uma dimensdo com 4 elementos. Constr uma motriz € de duas dimensbes do tipo 4 x 4, sendo que © primeira linha do matrz £ deve ser formada pelo’ dobro dos valores dos elementos da motriz A, a segunda linha da matriz E deve ser formada pelo triplo dos valores dos elementos da matrz B, « ferceira linha do matniz E deve ser formada pelo quédruplo dos valores dos elementos de matrz Ce a quart linha da matriz € deve ser formade pela fatorial dos volores dos elementos da motiz D. Apresentor o matriz E. ler duas matrizes A e B de duas dimensdes com 5 linhos € 6 colunas. A matriz A deve ser formado apenas por valores pares, lenquanto a matriz B deve ser formade apenas por volores impores, As entradas dos volores nos matrizes devem ser validadas pelo programa e néo pelo ususrio, Constuir e apresentar uma motriz C ‘de mesma dimensio e ndmero de elementos que contenha a soma das matrizes A e B. ler duos motizes Ae B de duas dimenses com 4 linhas e 5 colunas. A mottiz A deve ser formada por valores que sejom divisiveis por 3 e 4, enquanto @ matriz B deve ser formade por valores que sejam divisiveis por 5 ou 6. As entradas dos valores nas matrizes devem ser volidadas pelo programa e néo pelo usuario, Construir e apresentor uma motriz C de mesma dimensao e numero de elernentos que contenha o subtragdo dos elementos da matriz A em relagdio cos elementos da matriz B. ler duas matizes Ae B de duas dimensdes com 4 linhas e 5 nas. A matriz A deve ser formada por valores que sejam divisiveis por 3 ov 4, enquanto a matiz B deve ser formado por volores que sejam divsiveis por 5 € 6. As entradas dos valores nos matrizes dever ser validadas pelo programa e nao pelo ususrio. Construire opresentar ume matriz C de mesma dimenséo e nimero de elementos que contenha o valor da multipicagao dos elementos ‘da matriz A com os elementos correspondentes da motriz B. Ler duas matizes A e B de duas dimensées com 5 linhas e 5 colunas. ‘A matriz A deve ser formada por valores que ndo sejom divsiveis por 3, enquanto a matriz B deve ser formada por valores que néo sejam divisiveis por 6. AS entrados dos valores nas matrizes devem ser validadas pelo programa e néo pelo ususrio. Constuir e apresentar uma matriz C de mesmo dimenséo e nimero de elementos que Confenha a some dos elementos dos matizes Ae B Logica Estruturad pora Programogéo de Computadores | it a ipal estrutura de Neste capitulo, 0 leitor teré contalo com a ufiiza¢6o da principal dados, 0 registro, a qual consiste em trabolhar varios dads de tipos diferentes fos campos) em uma mesma estrutura. Por ests £0280, este tipo de dado & considera- do heterogéneo, 7.1 - Estrutura de um Registro 7.1 - Estrutura de um Registro [Anteriormente fo! apresentado um exemplo no qual foi solictada o entrada de nomes de oito alunos e sues notas bimestrais, 0 que obrigou a vuillizacdo de ‘duos matrizes, sendo uma pora conier os nomes, por seus valores serem do tipo Coractere, e @ outta pora conter as noias, por seus valores serem do tipo ret Imagine como seria mais fell agrupar os dois tipos de dads em uma mesmo esirutura, £ exatamente isto que se consegue fazer com 0 utlizaséo de 8 figure 7.1 mostra um exemplo do layout de um registro com as suas informagées, ‘os quais recebem o nome de campos. 4 Layout do formato de um regio com seus campos ‘Cadatro de Notes Escolares Nome —— Primera Nota Segunda Note “eres Not Quan Nota Figura 7.1-Exemple do layout de um regisio com seus campos. 4 | Regisiros n31> Sendo assim, o registro esté formado pelos campos: Nome, Primeire Noto, Segunda Nota, Terceira Nota e Quarto Nota e pode ser chamado de Aluno. © tipo de dado registro feriado a partir dos primitivos| deve ser declarado antes do definicdo des variéveis que serdo utlizadas em um programa, pois pode ocorrer ¢ necessidade de dedarar uma variavel com o fipo registo ‘anteriormente defnido A declaragéo de um registro & citada no algoritmo e em portugués estu- turado, mas néo no diagrama de quadras, que sé fard meno a ullizagéo de um determinado campo da estrutura heterogénea definida Para que seja declarado um tipo registro em portugués estruturado, deve ser Uitizade © instrugéo fipe em conjunto com a instrugéo registro...fim. regisro, cconforme sintaxe indicodo em seguida Portugués Estruturado ee tte sidentificador> = registro fim_zepletro ~ a avartdvets> : 4 | Registros: fescreva ALUKO.ODAS fn Tanto @ letura como a escrta de registros também podem ser feitas como: lela ALUNO e escreva AIUNO. Neste caso, setdo feits, respectvomente, uma leltura e @ escrita do tipo genérica, em que todos os campos serdo referenciados implcitamente. A forma expiicita apresentada anteriormente & mois legivel, uma vez que se faz referéncia a um campo em especifico. 7.2 - Estrutura de um Registro de Conjuntos No t8pico anterior, foi apresentado 0 conceito de trabalho com uso de registro. No ponto de aprendizado em que o leifor se encontra, é provével que esieja se perguntado: Sera que ndo & possivel definir um vetor ou mesmo uma matriz dentro de um registro, pora nao ser necessério utilizar somente os tipos primiivos de dados? isto & realmente possivel. Considere ainda © exemplo do fegistro ALUN, em que femos o campo NOME tipo caractere e mois quatro campos tipo real para o armazenomento de suas notas, sendo NOTA, NOTA2, NOTA3 e NOTAA. Veja que & possivel definir um vetor chamado NOTA com quatro Indices, um para cada nota. A figura 7.3 mostra um layout deste nova proposto. ine Légica Estruturada para Progromacdo de Computadores | > Layout do fermata de um regio com sous campos Ccadasve de Notas Escoares Nome ————— | z Z aa Figura 7.3- Exemplo do layaut de um regisio de conjunto com seus campos. Com base na proposta de crior um registro denominado ALUNO, cujas rnolas serdo informadas em um velor, ele deve ser assim declorado: tipo BIMESTRE » conjunto{1..4} de read CAD_ALINO = regiatro NOME + caractere HOTA + Bimestre fin registro reste Observe que, ao ser especificado 0 registro CAD_ALUNO, existe nele um ‘campo chamado NOTA do tipo bimestre, sendo bimestre a especiicagdo de um tipo de conjunto matricial de uma Gnica dimensdo com capacidade para quatro elementos. Veja que 0 tipo bimestre foi onteriormente definido, pois se caracterize por um tipo criado, assim come o tipo cad_aluno atribuido @ voridvel de registro ‘ALUNO, A leitura e a escrita de um registro de conjunto sdo efetvadas, respectiva- mente, com os instrucées lela e escreva geralmente dentro de um lago de repetigéo, Assim sendo, observe o diagrama de quadros figura 7.4) e o cédigo em portugués esiruturado em seguide, que representam ¢ leitura do nome e das quatro notas bimestrais do aluno. | Registros Wp Programa Regiave_De_Conpnte nie Escreva Ano Nola} Fim Figura 7.4 -Exemplo de letura de um registo de conjunto, 7.3 - Estrutura de um Conjunto de Registros ‘Com as técnicas de programagao anteriormente opresentados, passou-se a ter uma mobiidade bastante grande, com 0 possibilidade de trabalhar de uma forma mais adequada com diversos problemas, imente os que envoivem a utlizagdo de dados heterogéneos, faciltondo a construgdo de programas mais eficientes. Porém, os programas apresentados até agui com a uilizagao de registros s6 fizeram mengao @ letura e escrita de um Gnico registro. Neste momento, 0 leitor ter6 contato com o conjunto de registros que permite 1 construcéo de programas, em que possivel fazer a entrada, processomento € saida de diversos registros. Para declarar um conjunto de registros, & necessétio, em primeiro luger, possuir a defnigéo de um ier 0 formato de um dnico registro pora ento definit utlizado pelo programa Para exemplificar 0 que esid sendo exposto, considere que vocé deve fazer um programa que leia 0 nome e as quatro notas escolares de 8 alunos. é familiar. Veja em seguido, « detinigGo do tipo regisito e também a defi conjunto de registros pora os oito alunos a REGTSTRO_DE_CONTINTO pe ‘BIMESTRE © conjunto[t..{7 de real JCAD_ALUNO = regiatzo Légica Estruturod para Progromacéo de Computadores | BIMESTRE © conjunto[!..4) de real CAD_ALUNO = registro VALUNO + conjuntol..61 de ca@eiune Observe que apés a insirucao var, é indicade 0 variével de registro ALUNO, sendo esta um conjunto de 8 registros do fipo cod_aluno que, por suo vez, & me como caractere € a nota como bimestre. formas onteriores, jar @ entrada das Ino, 6 necessério controlar o entrada de cito alunos. Esto estrutura & bastante similor a uma matriz de duas dimensdes. Assim sendo, observe em seguide 0 diagrama de quadros e 0 cédigo em portugués estru- turado. 4 |Registros 91> Programa Conjnto_De Regie ne Figura 7.5 - Exemplo de letura de um canjunto de regisros. Portugués Estruturado Veja que o loco da variével! contrala o nimero de alunos do turma, no caso 8, ¢ © logo do varigval J contro mero de notas, afé 4 por cluno. Para cada movimen- facdo de mais um no variével | existem quatro movimentades no variavel J iv0 Logice Estrutwrada para Programacéo de Computadores | P 7.4 - Exercicios de Aprendizagem 7.4 - Exercicios de Aprendizagem Para demonstror a ulizagéo de programas com tabelas de dados heterogé- neos, considere os seguintes problemas 7.4.1 - Primeiro Exemplo Efetvor a leitura das 4 notas bimestrais de 8 alunos, apresentondo no final os dados dos alunos clasificados por nome em ordem ascendente. Algoritmo © algoritmo de ordenacéo € o mesmo e serd aplicado da mesma formo, mas se faz necessirio estabelecer alguns critérios. Por se tratar de umo ordenagdo, & necessério estabelecer mais duos variéveis, as quais podem ser ATUAL @ PROXIMO. Também deve ser estabelecida Uma varidvel de auxiio & troca, a qual pode ser a variavel X, porém deve ser do ‘ipo registro. ‘A ordenacéo seré efetuade com base no nome de cada aluno e quando estiver fora do ordem, os dados dever ser trocados de posicéo. Diograma de Quadros No diograma seguinte, € apresentada o comporagao efetuada, sendo ALUNOIATUALI NOME > ALUNOIPROXIMO]NOME, Observe que esté sendo questio- nado se o nome do alune atual é maior que o nome do préximo aluno. A condicéo endo verdadeira 6 efetvada a troca néo s6 do nome, mas de todos os elementos {ue estéo armazenados na fabelo. Iso & possive, uma vez que a voriével X & do mesmo fipo que o tabela ALUNO. al Nome > sooo) NOME n s Xeno fata) ‘Nore al «= Ano [Péxino} ‘Ana [Préxero} Figura 7.6 - Bxemplo de rotina de ordenaséo com dads heterogéneos. 4 [Registios wy Portugués Estruturado [Programa LEITURA_ORDENACKO_ESCRITA ya)! 2 BIMBSERE = conjunto(]..4) de-r6eF W0NO = registro HOME + caractere NOTA 1 bimestre Him regiatro nD + conjuntofi. 8] de cad_aluno J, ATUAL, PROKINO + ineedzo (Retina de ordenacto de dados heterogéness) ATUAL de 1 pare PROXINO de 2X & ALUNOLATUAL] ALUNOLATUAL] + ALUNOL PROXIHO| ALUNOLPREXIMO] x fim tim_pa: tim pare fuga NOME) entiio pare 3 de Legico Estnuturade para Programiacao de Computadores | D> 7.4.2 - Segundo Exemplo Eloborar um programa que efetve a letura de uma tabelo de cargos salérios, Em seguida, o programa deve solicitar que seja forecido 0 cddigo de um determinado cargo. Esse cédigo deve estar entre 1€ 17, © usuério do programa pode fazer quantas consultas desejar. Sendo 0 cédigo valido, 0 programa deve opresentar 0 cargo e 0 respectivo salério. Caso seja 0 cédigo invalid, o programa deve avisor o operador da ocorréncia. Pare dar entrada co cbdigo de cargos/solarios, observe « tabela seguinte: [cédigo | Corgo [Salério 1 [Analista de Solérios 9.00 2 ‘Auxiior de Contabiidade 625 3 Chefe de Cobranco 8.04 a Chele de Expedigao 8.58 5 (Contador 15.60 6 22.90 7 5.00) 8 3.20 9 70.30 70 10.40 T [Gerente de Pessool 70.29 2 Gerente de Treinamento, 10.68 3 Gerente Financeiro [16.54 4 ‘Continue 246 5 (Operador de Micro 605 6 Programador 910 ‘| 7 Secretério| 731 Algoritmo Observe 0s breves posses que © programa deve executor, No tocante & pesquisa, seré usado 0 método de pesquisa sequencia 1. Atabela em questo é formada por trés fipos de dodos: o céd inteiro, o cargo como caractere e o nimero de salarios como real. ro.com tol format cédigo sera fornecido ‘automaticamente no momento do cadastra 4 LRegistos Te jor: 4, Pedi 0 cédigo do cargo; se val 5. Se 0 c6digo for inexster Diograma de Quadros ‘operador. 6. Saber do usuério se ele deseja contin fir os passos 3, 4 e 5; se ndo, encerrar o programa. 3. Crior um laco para executar as consuitas enquanto o operador dese- resentar 0 cargo eo solério: snsagem ao operador; com os consultas; se sim, repe- Observe que o diagrame de quadros figura 7.7) concentra-se na légica no ue tonge & pesquisa, pois os dados da tabela anterior devem ser fornecidos pelo Resp = "Sin™ Resp "Sint T<= 17 E Acha= Faso x Céigo = Tabeta 0 _Coaigo, hens ‘cha =. Vardadeio. Escreva “No Exist” eis Resp ‘Figura 7.7 - Exemplo da rotina de pesquisa sequencial em uma fabela Légica Esttuturade pare Programagéo de Computadores | Pe Portugués Estruturado programa TABELA_D=_SALARIOS po DADOS = registro D_CODIGO : intetre fern caractere //H#AL DLcARGO DsAL fim_regiatre ver gio 'TABELA : conjuntot? 1, eiprec: inteiro real 71 de aados (arecho de pesquisa seqilencial) RESP © “SIM” enguante (RESP = “SIM") faga ‘eacreva “gual cédigo - Leia céoco La a7 cua = Falso.) faga .céD2G0) entike #) TARELALT) .D_CARGO eecreva “Deseja continuar pesquisa?” Leia RESP #1m_enquante fim ace | Registros 125|> ‘A seguir, foca 0s exercicios de fixagdo pare treinar « aplicacéo dos conceitos de utlizacdo de registres em algumas situacées trvcis. 7.5 - Exercicios de FixacGo Considerando a necessidade de desenvolver uma agenda que conle- inho nomes, enderecos e telefones de 10 pessoas, defina a estrutura de registro apropriada, 0 diagramo de quadros e 0 codificagéio de um programa que, por meio de urn menu de opcées, execule as seguintes tapas: ©) Cadastrar os 10 registros. 'b) Pesquisar um dos 10 registros de cada vez pelo campo nome (usor ‘ométodo sequencial. @Classiicar por ordem de nome os registros cadastrados. 4} _Apresentor todos os registros, ©) Sair do programa de cadastro. . Considerando a necessidade de um programa que armazene o nome & ‘95 nolas bimestrais de 20 alunos do curso de Técnicas de Programacéo, defina o estruture de registro apropriada, o diagrama de quadros © @ codtficagéo de um programa que, por meio do uso de um menu de opgies, execute as seguintes etapas: ©) Cadastrar os 20 registros (apés o cadastto efetuar a classificagdo por nome b)Pesquisor os 20 registros, um de cado vez, pelo campo nome lusar ‘© método binério; nesia pesquiso o programa deve também ._ apresentar 0 média do aluno e as mensagens: “Aprovadot caso sua média sejo maior ov igual o 5, ov “Reprovado" para média abaixo de 5) }_Apresentar todos os registros, médias e a mensagem de aprovacéo ou reprovacéo, @)Scir do programa de cadastro, |. Elaborar um programa que armazene nome e @ altura de 15 pessoas, com a utiiza¢éo de registros. O programe deve ser manipulado por um menu que execute as sequintes etopas: @) Codostrar os 15 registros. L69ice Esrturoda para Prgromagae de Computadores | |. Considerando 0s registros de 20 funcionér b} Apresentar os registros Inome e altura] das pessoas menores ou Iguois a 1.5m. ©) Apresentor os registros (nome e altural das pessoas que sejam ‘maiores que 1.5m. 4} Apresentar os registros (nome e altural das pessoas que sejam maiores que 1.5m e menores que 2.0m. @} Apresentar todos os registros com a média extraide de todas os auras ormazenadas. 4) Sair do programa de cadastro, , contendo 0s campos matricula, nome e solério, desenvolver um programa que, por meio de um menu, execute os seguintes etapas 9) Cadastrat os 20 empregads. b) Classificar os registros por némero de matricula. 1) Pesquisar um determinado empregado pelo némero de matricula y forma ordenada os registros dos empregados que recebem solérios acima de $1,000. ‘Apresentar de forma ordenada os registros dos empregados que recebem salérios abaixo de $1.000. 4) Apresentar de forma ordenada os registros dos empregados que recebem solérios iguais 0 $1,000. 9). Sair do programa de cadastro. a 127|> 4 |Regstros Logica Estrutrada para Programacéo de Computadores | Pe CAPITULO Neste capitulo, o letor ter6 contato com a ullizagéio da técnico de programa- 960 modular denominada sub-rotina. Esta técnica possibiiia construir um grande programa em pequenas partes que se fornam mais faceis de administrar do que 0 Yodo de um sistema maior. Sub-rotinas também sdo denominadas: médulos, sub- programas ov subalgoritmos. Neste sentido, o leitor sera apresentado aos conceitos de sub-rofina do fipo procealimento e funcdo, passagem de parémetros por valor e por referencia, parémetros formaise reais. 8.1 - Modularidade Normalmente problemas complexos exigem algoritmos complexos na busca de suas solucdes. Todo grande problema computacional pode vir a ser dvidido em problemas menores. Desta forma, coda parte menor tem um algoritmo mais simples e de mois fécil compreensio e adi ho menor & chamado de sub-rotina fou mesmo de médi 6 um programa firecho de um programa m forma pode efetvar diversas operagSes computacionais (como: entra somentos € € deve ser tratada com 0 mesmo cuidado, como foram trotados os programas projetados até este momento, ‘Ao trabalhar com a técnica de sub-rofinas, és vezes se depara com o neces- sidade de dividir uma sub-rotine em outras fontos quantas forem necessérias, buscando uma solugdo mais simples de uma porte do probleme moior.O proceso de diviir sub-rotinas em outras é denominade Método de Refinamento Sucessivo. 8.2 - Método Top-Down © proceso de programar um computad ‘quando aplicado 0 método de Porém, o utllzacéo dessas sub-rotinas deve s top-down. bostante simples fos de programas} lo com aplicagao do método 4 | sub-rotinas, 129 |> \Um método adequado & programagdo de um computador & a utilzacdo do foncelo de programacéo estrutvrade, pois os jinguagens de programacao de terceire geracao uilizadas atvolmente como: C, C++, Jova, ObjeciPuscal Pascal) $00 baseadas nesia estruture, 0 que faciita a aplicacdo deste proceso oe Frabalho. 0 métode mais utlizado para c progromagdo estruturada de compute, dores € 0 fop-down ide cima para baixo] o qual se caracteriza basicamente per ‘+ Antes de inicar @ consirugéo do programa, © programador deve ter em mente os farefas principais que este deveré executor. Ndo é necessario ‘saber como funcionaréo, somente saber quantas sao, Conhecidas todas as torefas a serem executadas, tem-se em mente como deve sero programa principal, © qual vai controlar todas as outtos farefas cistibuidas em suas sub-rotinas,, Tendo defnido © programa principal, & iniciado 0 processo de delatha- mento para cada sub-roina, Desta forma séo detinidos varios algort- Mos, um para cade rolina em separado, para que se tenha uma visGo do que deve ser executado em cada médulo de programa. Existem Programadores que estabelecem o numero maximo d Programa que uma rotina deverd possuir. Se o nimero Passo o limite preestabelecido, a rotina em desenvolvimento é dividide em outra sub-rofina (é neste ponto que se aplica o método de refinamen- to sucessivo} . © método top-down conceitualmente dé a idéia de que um programa tem uma estrutura semelhante & de um organograma. A figura 8.1 apresenta um exemplo desta estrutura, Programa Ponca! [ Retna ] Reine Retina Reta | “ 3 _ se eure 8.1 - Organizoréo hierdrquica de programa com o método. top-down. Logic Estrutureda para Programagéo de Computadores | A.uitlizagdo do método “de cima para baixo' permite que seja efetuado cada médulo de programa em separado. Assim sendo, cada parte do programa pode ser testada separadamente, garantindo que o programa completo esteja sem erro 00 seu término. Outro detalhe « ser considerad ma trechos de c6 Je muitas vezes existern em um progro- repetidos vérias vezes. Esses trechos ‘oporcionando um programa menor e imo, quando hower a necessidade de 8.3 - Tipos de Sub-Rotina A técnico de modularizacdo de cédigo de programa baseado no conceito de sub-rotinas disponibiliza para o trabalho de um programador dois modos de trata- mento do problema. Um modo denomina-se procedimenioe o outro denomina-se fongdo. Uma sub-rotina {seja ela um procedimento ou uma funcéd € consideroda um bloco de programa que possui obrigatoriamente inicio e fim. Uma sub-rotina & ‘entiicada por um nome, por meio do qual sero feitas as devides referéncias em qualquer parte do programe principal ov do programa chamador da rotina yando uma sub-rolina é chamada por um programe, ela é executado, e ao seu ino © controle de processamento retorna automaticamente para 4 primeira 12 de instrugdo apés a linha que efetuou a chamado da sub-rotina. A diferenga ica entre os ipos de sub-rotina sd: + As sub-rotinas do tipo procedimento séo mecanismos que podem ov 'nGo retornar algum fipo de valor ao fim se seu processamente; + As sub-rotinas do tipo fungo sdo mecanismos que sempre retornam ) | [evarddveio>) Anieie tim fi { Prograna Principal ) programe PRINCIPAL Anieio zotinal (!] te Note que primeiramente é definido no programa em portugues estruturado o CBdligo da sub-rotina paro que depois seja definido 0 cédigo do programa princi pal. Esta coroctersica deve ser mantida, pois existem algumas linguagens de pro- (gramagio que trabalham desta forma. Observe que o chamada efetuada da sub- 4ita2 Logica Estruturade para Programagéo de Computadores | D> -rofina definida é feita no programa principal com seu cédigo sublinhado. Esle detalhe é utlizedo pora diferenciar 0 nome da rotina das polavras-chave dos linguagens e também das voriéveis que venham a ser vilizadas. {A indicog&o {) entre os colchetes € opcional e sera utilzada dependendo apenas da esratégic l6gica a ser implementada pelo programador. Quando uflizada a relagGo de parémetros, deve obrigatoriamente estar defnida entre os simbolos de parénteses. Esta coracteristica seré apresentada mais adionte, 8.41 - Exercicios de Aprendizagem Elaborar um programa do tipo colculadora simples para operar apenas dois valores: numéricos, que cpresente um menu de selegdes no programa principal Esse menu deve dor co usuario a possibiidade de escolher uma entre quatro operagdes ariméticas. Escolhida a opcdo desejado, deve ser solictado a entrada de dois nomeros, e processada 0 operacio, deve ser exibido o resultado. Algoritmo Note que esse programa deve ser um conjunto de cinco rotinas, sendo uma principal e quatro sub-rofinos. A rotina principal efetuoré o controle das quatro sub- srolinas que, por sua vez, pedirdo c leitura de dois valores numéricos, fardo racdo e opresentordo o resultado obfido. figura 8.3 apresenta um orgono- 9 ia de hierarquizagdo das rotinas do programa. A quinta opcéo ‘nGo se caracieriza por ser uma rotina, apenas opcdo que vai encerrar © aco de controle do menu, Rained Dede ‘Raina 1 Boina2 aga Subtragso Figura 8.3 - Hierarquia das rotinas do programa calcuiadora. ‘A partir da idéia do estrutura geral do programa, seré escrito em separado cade algoritmo com os seus detolhes de operacéo. Primeiro o programa principal fe depois as outras rotinos, de preferéncia no mesma ordem em que eskio ‘mencionados no organograma. “| sub-rotinos 133 [> Programa Principal 1. Apresentar um menu de selecdo com cinco opsdes: 1 = Adigdo 2- Subtragio 3- Mutiplicagéo 4- Divisio 5~ Fim de Programa todo; 3. Aoescolher 0 valor 5, 0 programa deve ser encerrado. Rotina 1- Adigao 1. Ler dois volores, no caso variéveis Ae B; 2. Eletuor a soma das variéveis A e 8, implicando 0 seu resultado na voriével R: 3. Apresentar o valor da variével R, \Rotina 2 - Subtragtio 1. Ler dois valores, no caso varidveis A B; 2, Efetuar a subtracdo das varidveis A e B, implicando o seu resultado no variavel R; 3. Apresentar o valor do varidwvel R, ina 3 - Mutfiplicagdo 10 caso variéveis A e B; icogdo das variéveis A e B, implicando.o seu resultado 3. Apresentar o volor da varidvel R, |4- Divisio |. Ler dois valores, no caso variéveis A e 8, . Hetuor a diviséo das variéveis A e B, implicando © seu resultado no * voriével R; J. Apresentar 0 valor da varidvel R. Logica Estruturada para Programacde de Computodores | 2, Ao ser selecionado um valor, a rofina correspondente deve ser execu- F Observe que em cada rotina serdo utilizadas as mesmas variéveis, mas elas no serdo executadas ao mesmo tempo para todas as operagées. Serdo ullizadas ‘em seporado e somente para a rofina escolhida, Diagrama de Quadros Observe que a diagramagéo de cada rotina é definida em seperado como um progroma independente, como mostram as figuras 8.4 € 8.5. Programa Calaadors nice os Fm Figura 8.4 - Diagramo de quadres para @ parle principal do programa cakculadora. | sub-rotnas, 1351h Procedierio RelSubiwacso nko 6 Mau tea ia 8 RAAB Escrova Retome ‘Aigura 8.5 - Dlagromas de quadros para as sub-rotinas de programa calculadora. Portugués Estrsturado Na definicdo do cédigo em portugués estruturado, serdo definidos em prrimeiro lugar as sub-rofinas e por éttimo, o programa principal. Guando no programa principal ou rotina chamuadora for referenciada & chamada de uma sub- fotina, ela seré grafada na forma sublinhada para faciliar sua visualizagéo © identifcacdo jana. CALCULADORA {Sub-rotinas de ediculos) procedimeite ROTSoMA RR, Bs: reat Anteto lescreva *Rotina de Soma @toreva ‘Entre un valor para A: * dete A (esoreva “Entre um valor para B: * dete B ease eeareva “A sora de Accom Be =", R ti, Preeedinento ROTSUBTRACKO t fescreva “Entre un valor para B: * leis 5 ReA-3 Secreva "A subtragko de A com B 6 = 7, tin procedinente ROTMULTIPLICAGKO REA‘B eecreva “A multiplicacto de A comBé =", F fim procedimente ROTDIVISKO Ro A, Bt read inicio feecreva *Rotina de Divisio" feva ‘Entre um valor para A: wreva “entre um valor para B: * (B= 0) antko jereva "Inpossivel dividir’ ReATB escreva "A divisio de AcomB Es", R Hn se tn (programa Principal) ‘cPcHO : inteize 1371> 4 |sub-ro8inas fescreva “Escolaa una opcdo: * late oPcko M8 » Estrutura de Controle com Milfipla Escolha programa calculadora demonstra « aplicagao de técnica de programocéo tanto no diagrama de quadros como no cédigo em porlugués Possibiltando a consirucdo de programas mais elaboradas, Porém, (0 selecionomento das sub-rotinas, ada a instrucéo se. Observe 88 0 programa possuir um menu com 15 0 do tipo se para verfcar a escolha do Indo hover a necessidade de construir um programa no qual seja utllzar uma seqdéncia grande de instruces do fipo se, sejam estas @outra ov mesmo encadeadas, pode ser simplificada com a utiizacéo {en80...m_caso, que possui c seguinte sintaxe: devem ser definidas 15 lor. sendo verificado e operacdo pode ser a chamada de de quolquer operacéo matemética ou de quolaver demonstra a estruture do diograma de quadros para Logica Estroturada pare Programagéo de Computadores | D> Diagrama de Quadros E Operasi0 | operacto2 ‘figura 8.5 - Diagrames de quadros para instrucdo caso...fim_caso, Desta forma, 0 rotina principal do programa calculadora pode ser escrita fazendo uso da instrugdo cnso...m_caso no selecionomento de uma op;ao escolhida pelo operador, como em seguida, conforme demonstra a figura 87 ‘seu respectvo cédigo em portugués estruturado, Diagrama de Blocos ReiSome Reisarasso| Fn ‘Figura 6.7 - Diograma para 0 programa principal usando a Insiruvdo case..._im eso. 4 [ub-rotinas 1391p Antes do uso da instrucdo caso...fim_caso, esté sendo verificado se 0 valor da opcéo informado é realmente diferente de 5. Sendo, seré verificado se é 1, 2, 3 ou 4; néo sendo nenhum dos valores , @ instrugdo Seno informa que o fentativa foi invalida. O uso desta nova instrugdo agiliza 0 processamento das instrugées, ov seja, é muito mais rapido utilizar a instru¢o caso...fim_caso do que ‘ninhar diversas instrucdes do tipo se. 8.5 - Varidveis Globais e Locais aa Mamas Cros etocais No programa anterior foram utiizadas variéveis dentro dos sub-rotinas, no caso as variéveis A, Be R, e fora das sub-rotinas, no caso o variavel OPCAO, sem que howvesse a preocupacée de agrupar as variéveis de uma forma coerente Segundo 0 seu tipo. Sdo dois os tipos de voridveis utlizados em um programa: as varlévels Globaise os Locais. Uma voriével & considerada Global quando @ declarada no inicio do Algoritmo principal de um programa, podendo ser uilizada por qualquer sub- “Felina subordinada co algoritmo principal. Assim sendo,"este tipo de varidvel ossa a ser visivel a todas as sub-rotinas hierarquicamente subordinadas rotina Principal, que pode ser 0 préprio programa principal ou uma outra sub-rotina. No Programa ontetior,« variavel OPGAO é global, opesar de néo estar sendo uitizada ‘hes demais sub-rotinos. 140 Lagica Estruturade pora Programaséo de Computadores | > a we Uma variével é considerada Loca/ quando é declorada dentro de uma sub- “olin e & somente valida dentro da rotina & qual esté declarada. Desta forma, as emais sub-rotinas e programa principal néo podem fazer uso daquelas variéveis, ‘como Global, pois no visualizom a existéncia delas. No programa anterior, as variéveis A, Be R s6o locais. Por este motivo esttio sendo declaradas repetidas vvezes dentro de cada sub-rotina. spendendo do forma como se trabalha com as variéveis, & possivel economizer espace em meméc, fomando 0 progrema mois ete. Considers dois exemplos apresentados em seguida em portugués estruturado, sendo o primeiro sem uso de sub-rolina e o segundo com sub-rotina, fazendo uso de vvariével global e local: Programa TROCA_VALORES_EXENPLO_2 Xt dnteiro At inteize Bt inteizo inielo leis A,B Kea ace bex escreva 4, © sin programa TROCA_VALORES_EXENPLO_2 2: Snteizo Bi: snteizo 1uco maior que o Observe que apesar de 0 segundo exemplo ser um pouco maior qi ele possibiita ume economia de espago em meméria bastante ante, pois © espaco a ser ullizado pela varidvel X é somente solicitedo | sub-rotinas wap quando a sub-rotina TROCA & executada. Terminada a execucdo, o varigvel X & -desconsiderode, ficando em uso somente os espacos reservados para as voriaveis globais A e B. 8.5.1 - Escopo de Varidveis © escopo de uma variével ou suc abrangéncia esté vinculoda o suc \Vsibiidade (Global ou Local) em relago ds sub-rolinas de um programa, visto que © sua visibiidade esta relacionads a sua hierarquia. Mas existe urn detalhe importante 0 ser levado em conta, pois uma variével pode ser considerada global pare todas as sub-rofinas inferiores a ume rotina principal, e dentro de uma dessas sub-rotinas a mesma variavel pode estar sendo utlizada como local Observe o gréfico apresentado na figure 8.8. Fotina Propel AS Retina $ lax Rotina 1.1 Rowna 12 y Rota 2 oy Rouna 24 K Figura 8 8 - Representoso do escopo de varies: ___Com relacéo a0 gréfco da figura 8.8, as variéveis A e B do rotina principal ‘sd, num primeiro momento, globais &s sub-rotinas 1 e 2. Porém, dentro do sub- e 1.2 sdo locais. A varidvel B é global para as sub- srotinas 1, 1.1e 1.2 8 amas Pora a sub-rotina 2 os varidveis A e 8 do rotina a v principal so globois e seréo fembém visvalizades como globsis para o rotina 2.1. A rotina 2 possui uma variével local M que é considerada global pora o rotina 2.1 que faz referéncia & ariével X local c essa sub-rolina, néo tendo nenhuma referéncia com a voriavel X da sub-rofina | Um cuidado importante a ser considerado com relacéo ao escopo de uma vyariével & 0 fato de uma varidvel ser declarada antes ou depois de uma seqdéncia de sub-rotinas. Se declorada antes, elo sera global a todas as sub-roiinas texistentes apés a sua declaragdo. Porém, se for declarada apés uma seqUéncia de sub-rotinas, ela sera global do ponto em que esté para baixo e local com relagdo ds sub-rotinas definidas acima dela, Por exemplo, o programa de troca ‘presentado anteriormente tem as voridveis A e B globais para todo o programa Mos se as varidveis A e B fossem declaradas apés a sub-rotina, seriam loccis, conforme & demonstrado em seguida: ee neste eee ‘programa TROCK_VALORES (Rotina com erro de declaracdo de variaveis) procediments TROCA X + inteiro iniele xeR tin At Anteiro Bt inteiro inieto deta A, 2 fin Isto caracteriza um erro, pois as variaveis A e B para a sub-rotina TROCA néo sd0 validas por nao estorem definidas. Desta forma, estas varidveis precisam ser declaradas dentro da sub-rotina, 8.5.2 - Refinamento Sucessivo © refnamento sucessive € uma técnica de programacéo que possibiita dividir uma sub-rofina em outras sub-rotinas. Deve ser aplicado com muito critério para que o programa c ser construido ndo se tome desestruturado e dificil de ser compreendido por vocé ou por outras pessoas. 4 sub-rotinos 31> © programa colculadora apresentado antetiormente permite que seja apli- cada esta técnica, pois nas quatro sub-rotinas de célculo existe instrugdes que efetuom as mesmas tarefas. Por exemplo: c entrada e a saida so eletuadas com ‘as mesmas varidvels. Observe que os varidvels A, B e R so definidas quatro vezes, ume em cade sub-rotina, A solugéo & definir cs variveis A, B e R como globais e construir mois duos sub-rofinas, uma para entrada e a outra para soida. As quatro sub-rotinas otuais serdo diminuidas em nomero de linhas, pois tudo 0 que se repete nas sub-rotinas, seré refirado Observe a declaracéo dos variéveis A, Be R como globais e a definicéo chomada das dues noves sub-rotinas, entrada e saida. Percebo que nos sub- -totinas de calculos ndo esta sendo declarada nenhuma varivel, uma vez que ‘agora estao fazendo uso do conceito de variéveis globais, OPChO + inteire ROA, Bi real (Sub-rotinas de entrada ¢ saiéa) procedimento ENTRADA inteto spntre um valor para A: * spnere um valor para Bs" so resultade de AconBé=*, 8 nas de célcules} Procedinento ROTSOMA Anteto fescreva *Rotina de Soma’ antrada Rease PRen to Procedinento ROTSUBTRACEO inteto | Morera “Rotina de Subtracko Logica Estruturoda pare Programacao de Computadores | D> sa A oo Rea eB eaiéa ie procedimento ROTMULTIPLICAGKO inicio secreva “Rotina de Multiplicecto” entrada Reacts eaiga un procedinento ROTDIVISKO inteto feacreva “Retina de Divicko" 4 | Sub-rotinas ash e A rae rep exercicios da primeira bateria lexercicio de fixagdo 1) para reinar a aplicagdo dos conceitos de ufilizogdo de sub-rotinas licacd é- veis globois ¢ locais. sass epleagto de vars 8.6 - Uso de Pardmetros © conceito de passagem de porametros tem por finalidade servir como um onto de comunicacdo bidirecional entre uma sub-rotina e © programa principal ‘ou uma outra sub-tofina hierarquicomente de nivel mais alto, Desta for possivel passor valores de uma sub-rotina ou rotina chamadora a outa sub- Siero zi pessoa a etna both] auc 8.6.1 - Pardmetros Formais e Reais Sdo pardmetros formais os variéveis declarados juntamente com a identiicagdo do nome da sub-rotina. Desta forma, um parametro é tratado da mesma forma que sdo fratadas os vari6veis globais ou locais, Considere como exemplo de parémetros formais 0 cédigo em portugues estruturado da sub-rotina, ‘apresentado em seguida: " procedinento CALCSOMA(A, 5 + inteiro) 2 + inteizo inicio Observe que a varidvel Z @ local e esté sendo usada pare armazenar o ‘soma dos voridveis A e B que representom os parémetros formais da sub-rotina CALCSOMA. S80 considerados pardmetros reais aqueles que fazem a substtuigéo dos reais 0 cédigo em portugues estruturado do programa que faz uso de sub-rofina |CALCSOMA, opresentado em sequide: " Logica Esruturad pore Programacéo de Computodores | Neste trecho, toda vez que a sub-rotina CALCSOMA é chamada, faz-se uso de pordmetros reais. Desta forma, séo pordmetros reais as varidvels X, Y, W eT, pols seus valores séo fornecidos pela instrucéo lela, © também os valores 8 e 2 8.6.2 - Passagem de Pardimetro por Valor e por Referéncia ‘A passagem de pardmetro é um fendmeno que ocorre quando ha o necessidade de efetuar a substtuicio dos parémetros formais pelos reais no momento da execu¢do do sub-rolina, Essas possagens de parémetfos ocorrem de duos formos: por valore por referéncia. ‘A passagem de pardmetro por volor caracleriza-se pela nao alteracao do volor do parametro real quando pardmetro formal @ monipulado dentro da sub- 1a. Assim sendo, 0 valor passado pelo pordmetro real € copiado para 0 parémetro formal, que no caso assume 0 papel de varidvel local da sub-rolina, Besta formo, qualquer modificacéo que ocorra na variavel local da sub-rotina née ofetaré 0 valor do pardmetro real correspondente, ov sejo, o processamento € executado somente dentro da sub-rotina, ficando 0 resultado obtido “preso” na sub-rotina ‘A possagem de parémetro por referncia caracterizo-se pela ocorréncia de ‘alteragéo do valor do parametro reol quando o parémetro formal € manipulado dentro do sub-rotina. Desta forma, qualquer modficagdo feita no porémetro formal implica em alteragdo no porémetro real correspondent. A clteragdo efetuada & devolvida para o rotina chamadora. 8.7 - Exercicios de Aprendizagem [A seguir, so opresentados dois exemplos de programa que utiizam conceito de sub-rolina com passagem de pardmetro por valor e por referencia, 8.7.1 - Primeiro Exemplo Este exemplo faz uso do conceito de passagem de partmetro por volor. Desta forma, considere o seguinte problema computacional: Flaborar um programa que efetve 0 célculo e apresente o resultado de uma fotorial de um nimero qualquer. 4 | sub-rotinas: Le a ‘Quando se utizam parémettos por vaior em uma sub-rolina, eles devem ser manconados no dogeme de quadros, conforme indicado no exemplo da figura rograra Gai Fall nice Le Fatal N) ‘Figura 8.9 Diagramas de quadres para passagem de pardmetro por valor Portugués Estruturado Sn cee ne ‘programa CALC_PATORIAL procedimento FATORI Anteire) ( programs Pfincipal } LIMITE + inteiro infeio Neste exemplo, é indicado o uso da passagem de pardimetro + exemplo, & ind por valor. No case verve N & 0 pordmato formal, que receberé 0 valor fornecido 6 varidvel IMITE por meio do sub-rotina FATORI lor estabelece o nimero de vezes }que 0 laco de repeticao deve ser executado. Dentro do procedimento é encontrade das Légice Estruturade pore Programacdo de Computadores | Pe «9 varigvel FAT que realize um efeto de acumulader, tendo ao fina do lago o resu- fade de fatorial do valor informado para © pardmetro N. Ao término do lago, o InstrucGo escreva FAT imprime o valor da variével FAT, que somenteé valide dentro a eiberotina e por esta raz60 ficaré “preso” denifo dela. A passagem de pare caso por valor é ufzeda somente para o entrada de um determinado valor: 8.7.2 - Segundo Exemplo Este exemplo faz uso do conceito de passage de parametro por referéncia. Desta forma, considere o seguinte problema computacional: Elaboror um programa que efetue o célculo e opresente o resultado de uma fotorial de um nmero qualquer. Diagrama de Quadros quando se utiizam pardmetros por referéncia em uma sub-rotina, eles deve ser meneionades no diagrame de quadras, conforme indicado no exemplo do figura 8.10 ograma Fara Figura 8.10 - Diagrams de quacros para passagem de pordimetto por relevance Portugués Estruturado cn ‘programa FATORIAL procedimente PATORIAL(W + inteiro, var FAT + inteiro) T+ dnteizo inicio Fare pare T de 1 até N passo 1 face rare Fars I fim pare en 4 [sub-rotinos 149 [> Progeans Principal) LIMITE, Rt inteizo fescrava “Qual fatoria? Neste exemplo, &indicado o uso do possagem de pardmetro pi idvel FAT por meio da instrucéo war na decioracdo do name da st riével N neste exemplo continua sendo do tipo ‘passage de pordmetro por or, pois ela receberd 0 volor fornecido & voriével UMITE por meio da sub-rotina RATORIAL Esse valor estabelece o némero de vezes que o laco deve ser executado, Jentro do procedimento encontrado a variével FAT que é do tipo passogem de metro por referéncia © possvi no final o valor acumulado do calcuio da fatoriol Yérmino do laco, 0 valor da varidvel FAT & tronsferido parc fora do rofina, ou fe, & tronsferido para a voriavel R do programa principal. Entéo, a insiruco Rimprime 0 valor recebido de dentro da sub-rotine por meio do voridve! \T. A passagem de pordmetto por referéncia é utlizada para que se fenha o ida de um determinado valor de dentro de ume sub-rofina. 9s da segunda bateria lexercicio de fixagéo 2) para nar @ aplcacéo dos conceitos de utiizacdo de sub-rotinas com passagem de Fémetro por valor e por referéncia, .8 - Sub-Rotina do Tipo Funcdo Uma fungdo & um bloco de programa, como também & um bloco de Jograme do tipo procedimento. Esso estrutura contém inicio e fm e é identficada um nome: Uma sub-rotina do fipo fungdo é muito parecida com uma sub- ina do tipo procedimento, O desenho do diagrama de quadros e a sintaxe em rtugués estruturado também séo idénticos ao modelo usodo para definir um cedimento, Observe a figura 6.11 com um exemplo basico do diagrame de qua- @ assintaxe do cédigo em portugués estruturado de ume funcao. Logica skuturede pore Programogéo de Computadores | Fangio Rota eparamatoo rio do Modo Inseugoes a serem executadas quando ccarer chamada da fungae de programa pineal Retora Ratna Figura 8.11-Estrutura de uma fungéo. Portugués Estruturado programa TESTE ( sub-Rotina ) funglo ROTINA| (parnetros)] + (varl [evarddveis>) Anieto ‘ fin Programa Principal } programa PRINCIPAL inicio zotinal iparénetzos)] renga existente entre uma sub-rotina do tipo procedimento & ipo fungdo @ « copacidade que uma funcdo tem de retornar ‘sempre um valor, © qual é sempre retornado no préprio nome da fund. Quando se diz valor, devem ser levados em consideragio os valores numéricos, l6gicos ou Uma sub-rotine do tipo procedimento que utlize o concetto de possagem de parémetro por referéncia consegue, de ceria forma, fazer o mesma ago que uma Sub-rotina do tipo fungdo. Porém, toma-se necessério considerar que o uso de sub-rofinas do tipo fungao é mais simples e prtic. Como exemplo, considere 0 procedimento opresentado em seguida usado pore calcula « fatorial de um némero qualquer. Observe que temos que fornecer | sub-rotinas I> jois parametros, sendo um MV pare a entrada do volor o ser calculado e FAT pare soida do resuitado obtido. jrocedimento FATORIALIN + imteiro, vax FAT 1 inteiro) Se este sub-rotina for escrita em forma de fungdo, seré necesséria apenas a formacéo de um parémetro, no caso 0 valor do porametro W’do qual deve ser culada a fatorial. Veja ern seguida, como isto é feito: inteiro jo FATORIAL(N + inteszo) + ‘Observe que o nome da funcao, no caso FATORIAL, é também o nome do na que recebe o valor acumulado da variavel FAT, caso 0 numero eto, pois se for zero, 0 valor da funcéo Jadoo 1, que é 0 volor da fatorial de zero. Desta forma, uma fun¢do ppelo seu préprio nome, pois esse nome é usado dentro do corpo recep6o do valor calculado, ‘Outro detalhe o ser considerado numa fungdo, olém do seu nome ser usado varigvel de retomo, € 0 fato da defnigéo do seu tipo, no caso, fungé {TORIALIN : Inteiro) : inteiro, em que NV esté sendo considerado como dos parénteses. Isto significa que o valor fomecido pelo pardmet pordm existe uma segunda definicdo de tipo fora dos parénteses, que é 0 188 Fetorno da funcdo. Desta forme entra um valor inteiro com o parametro Ne }¥m volor inteiro para FATORIAL. Observe que pode ocorrer o fato de entrar um de um tipo e retornd-lo como outro tipo. Logico Estruturode pora Programacao de Computadores | Pe 8.8.1 - Exercicio de Aprendizagem (© exemplo seguinte faz uso do conceito de sub-rotina do tipo fungéo com passagem de porémetro e retomo com fipo diferente de dados, daqueles que Joram entrados na rotina, Desta forma, considere 0 seguinte problema computa- ona Deve ser criado um programa que por intermédio de uma sub- fungdo efetve a leitura de dois volores reais e apresente como saido uma ‘mensagem informando se os némeros sdo iguais ou diferentes. Algoritmo Assim como o primeiro, este problema também é simples, pois o fungo em ‘questéo recebe dois valores, comparo-os e retorna se sdo iguais ou diferentes. Desta forma, o programa principal pediré os valores e chamara a fungdo para ter 0 retomo da condigo de igualdade. Programa Principal 1. Pedir a leitura de dois valores, no caso variévels NUMI e NUM2; 2, Chomar a fungéo de comporacdo de igualdade, fomecendo os dois 3. Apresentor o resultado retomado, ‘Sub-rotina para Comporagiio 1. Receber dois valores fornecidos por meio de parémetros; 2. Efetuar o comparagdo entre os valores para determinar se so iguais ov diferentes; 3. Retomar para a fungio 0 resultado obtido. Observe que este tipo de problema jé indica o entrada de parémetros de um tipo e 0 retorno da resposta da funcdo de outro tipo. 4 sub-rotinas. 153 [> de Quadros Programe Conparesio Fangio Compara AB) = rice do Modo — [compara — A= 8 Leia nur nur [Retoma Comoare Compara fant, naa) s N Escrove Escova Nraores "atores ‘gvate Dierentes™ Fim ‘Figura 8 12 - Diagramas da funcéo comparagdo e de programa principal. rtugués Estruturado © programa principal efetue « leitura dos valores reais para os variévels 7e NUM2, tronsferindo os seus valores para os parémetros formals A e 8 do Teal, que assumem seus respectivos valores, tornando-se seguida é processada o comporacéo dos dois valores e im Horo da condigdo, deste forma o retorno desta funcdo deve ser ygrama COMPARAGKO \gho COMPARA(A, 8 + real) + 16gie0 wecreva “Informe © 10. valor: * leva “Informe © 20. valor: * ‘wuN2 compara (NUM, NUMZ)) entitle fescreva “Niners iguais’ panto eecreva “Mineros diferentes" ise Légico Estruturada para Programacao de Computadores | Pe 8.8.2 - Programa Calculadora Em um exemplo anterior, foi demonstrado 0 uso de sub-rotinas do tipo procedimento no programa coiculadora. Naquele momento, as sub-rotinas de Célcuio foram simplificados (por meio do conceilo de refinamento sucessivo] com 0 Uso das sub-rotinas de enirade e saida que sao operacdes genéricas de todos as rolinas de célcuio. ‘A proposta seguinie é criar uma sub-rotina de fungdo que efetue 0 célculo, segundo 0 pardmetro de operacéo fomecido. Assim, essa sub-rotina deve receber {rs parémettos, sendo os dois nimeros mais 0 operador para calcul. 1. Se coperador wz-se 0 soma dos dois valores; " foz-se a subtragdo dos dois valores; 2-se a mutiplicagdo dos dois valores; faz-se 0 divistio dos dois volores. 2. Se ooperador for 3. Se ooperador 4, Seo operador ‘Observe no exemplo do diagrama de quadros figura 8.13) e do trecho de programa em portugués estruturado em seguida de rofine CALCULO quando da Uilizagéo do estrutura de controle com mitipla escolha, a omissdo da instrux60 sendo. Isto é possivel e pode ser utiizado quando nao se deseja estabelecer uma ‘operacéo ou execugdo para alguma opsdo invélida. Perceba que isto, neste ‘exemplo, ndo é necessar parémetro serd indicado dentro de cada sub-rotina de c Diogramas de Quadros Fangao Gaia (a 6, Operad) rico do Moca Operator ‘agto coe Paardo Rap | Caled me Cteuto eso aad ale Retoma Calouo Figura 6.13 - Dagrames para 0 tinct CHICO. 4 |ub-rotinas 155 1> raga CLCULO A+B cancmno HA B MLO AS ‘A seguir, 6 apresentado somente o clgoritmo em portugués estruturado do. progroma calculadora, aplicando 0 uso da nova funcdo. cheno eA B chew eat chemo HA) B Logic Estruturede pore Programogio de Computadores | 4 | sub-rotinos 157|1> enttio zordivisto ‘A seguir, faga os exercicios de fixacdo para treinar a aplicagdo dos conceitos de ullizagdo de sub-rotinas do tipo funcéo. 8.9 - Exercicios de Fixacao 1 | sub-rotinas 4+ Pesquisar os 20 registro, um de cada vez, pelo campo nome {usor o método binGrio; nesta pesquisa o programa deve tarn- bém opresentar a mécia do aluno e as mensagens: “Apr vado" caso sua mécia seja maior ov igual a 5, ou “Reprovad para média aboixo de 5} + Apresentar todos os registros, médias e o mensagem de apro- vacdo ou reprovacéi. ¢Apresentor apenos os registros e médias dos alunos aprova- dos. ‘+ Apresentor openas os registros e médias dos olunos reprova- dos. ‘¢ Scir do programa de cadasto. Elaboror um programa que armazene 0 nome e o altura de 15 pessoas com o uso de registros. O programa deve ser manipulado por meio do uso de sub-rotinas tanto na opresentagdo do menu, como também de suas rofinas, para a execucdo das seguintes tapas: ‘¢ Codastrar os 15 registros. 4° Apresentar os regisiros (nome e ov iguais a 1.5m. 4+ Apresentar os registros inome e altura} das pessoas que sejam moiores que 1.5m. 4 Apresentar os registros inome e altura] das pessoas que sejam maiores que 1.5m e menores que 2.0m 4 Apresentar todos os registros com a média extrcida de todas ‘5 alturas armazenadas. + Sairdo programe de cadastr. Considerando os registros de 20 funcionérios, contendo os compos ‘matricule, nome e salério, deserwolver um programa que uilizando conceito de sub-rotinas apresente um menu e suas respecivos rofinas para a execugao dos seguintes etapos: 4 Cadastrar os 20 empregados. 4 Clossiicar os registros por némero de maticul. 4 Pesquisar um determinado empregado pelo nimero de maticula (método binério}. ¢Apresentar de forma ordenada {que recebem solérios acima de $1 ¢ Apresentar de forma ordenade que recebem salarios abaixo de das pessoas menores isros dos empregados jistros dos empregados 159 |b ‘* Apresentar de forma ordenada os registros dos empregados que recedem salérios igucis « $1,000, + Sair do programa de cadastro. 2. Desenvolva 0s clgoritmos dos problemos opresentados em seguide e 'u0s sub-rotinas do fipo procedimento. Cada problema deve ser resolv do usando passagem de pardmetto por valor e por referéncia °) ») Grior um clgoritmo que efetue o célculo de uma prestacdo em otraso. Para tanto, uilize a formula PREST = VALOR = (VALOR * (TAXA/100) * TEMPO}. Apresentar 0 valor da presiacéo. 2Ma_que Possua ume sub-rotina que efetue e presentar 0 somatorio dos N primeiros nimeros inteiros, definidos por um operadar. 142+3+4+5+647+...4N) Escreva um programa que utilize uma sub-rotina para coleulor a série de Fibonacci de N termos. A série de Fibonacci é formada pela seqiéncio: 3,5, 34, .. ec. Esla série coracteriza-se F com 0 Seu anterior subsequente. o resultado, Desenvolva um algoritmo de programa que crie uma sub-rotino ora colcular e apresentar 0 valor de uma poténcia de um numero Qualquer. Ou seja, ao informar para a sub-rotina o numero € sua Poténcio, deve ser opresentado 0 seu resultado. Por exemplo, se for Mencionado no programa principal @ sub-rotina POTENCIA(2,3}, deve ser apresentado 0 valor 8, borar um progroma que efetve a leltura de um nimero inteiro & presente uma mensagem informando se © nimero € par ou impar. Elaborar um programa que efetue a leltura de trés valores (A, B e C) © apresente como resultado final a soma dos quadrados dos trés valores lidos. Elaborar um progroma que efetue 0 leitura de irés valores JA, B e C) © apresente como resullado final © quadrado da soma dos valores lidos. Elaborar um programa que uitlizando uma sub-rotina opresente o valor de uma temperatura em graus Fahrenheit. © programa deve ler a temperatura em graus Celsius. Eloborar um programa que por meio de sub-rotina fet presentacéo do valor da conversdo em real (RS) de um valor em délar (USS). Deve ser solcitado por meio do programe principal o valor da cotagdo do délar e a quantidade de déiar disponivel Logica Estrturado pare Programacae de Computadores | Pe I sub-rotinos 1D Eloboror um programa que por meio de sub-rotina efetue a ‘opresentacaio da mensagem: “Este valor 6 divisivel por 2 e 3°. Deve ser solcitado pelo programa principal o valor a ser verticado. Caso © valor néo atende @ condicdo desejada, @ sub-rolina deve ‘epresentar @ mensogem: “Valor invdlido ) Elaboror um programa que por meio de sub-roling efetue a ‘apresenta¢éo da mensagem: “Este valor & divisivel por 2 ou 3”. Deve 1do pelo progroma principal o valor a ser verificado. Coso © valor ndo atenda @ condigéo desejado, a sub-rofino deve ‘presentar a mensagem: "Valor invlido” 1) laborer um programa que por meio de sub-rotina efetue a ‘presentagdo da mensagem: “Este valor no é divisivel por 2 e 3° Deve ser solictado pelo programa principal o valor a ser verificado. Caso 0 valor néo cienda ¢ condicéo desejada, o sub-rotina deve ‘opresentar @ mensager: “Valor invélido". ™m)_Elaboror um programe que por meio de uma sub-rotina apresente como resultado Um nimero positive, mesmo que o entrada tenha sido feito com um valor negativo. 1)_Elaborar um programa que efetue « leitura do nome e sexo de um individuo, Por meio de uma sub-rolina o programa deve opresentar ‘© mensagem “Imo. Sr”, caso 0 sexo seja masculin, e “ma. Sra.” caso 0 sexo seja feminino. Apresentar também junto de cada mensagem o nome do individvo. Elaborar um programa que por meio de sub-rotina apresente o resultado do valor de uma fatorial de um nimero qualquer. P)_Um determinado estabelecimento faré uma vendo com descontos ‘Ros produtos A e B, Se forem comprados openas os produtos & ou ‘apenas 0s produtos 8, 0 desconto seré de 10% Caso sejam comprados 0s produtos A e B, 0 desconto seré de 15%. O custo da unidade de coda produlo é dodo, respecivamente, para os produlos A e B como sendo de $10 e $20. Elaborar um programa ue por meio de sub-rotina colule e apresente 0 valor do despesa do fregués na compra dos prodvtos. Lembre-se que o tregués pode levar mais de uma unidade de um determinado produto 0 algoritmos dos seguintes problemas, usando © conceito de sub-rofina de funcdes 9) _Eloborar um programe que possua uma sub-rotina que apresente 0 somotorio dos N primeiros nomeros inteiros, definidos por um Operador (1+2+3+4+5+647+...+N °) 161|> Escreva um programa que utilize uma sub-rotina pora calcular © série de Fibonacci de N fermos. A série de Fibonacci & formada pele seqUéncia: 11, 2, 3, 5, 8,13, 21, 34, .. etc. Esta série carocterizo-se pela soma de um fermo posterior com o seu anterior subsequent. Apresentar o resultado. Criar um aigoritmo que efetve 0 célculo e apresente 0 valor de uma Prestogdo em atraso. Pora tonto, uilize a formula PREST = VALOR +. [VALOR * TAXA/100) * TEMPO). Desenvolva um algeritmo de programa que crie ume sub- Paro celcuiar e apresentar o velor de uma poténcia de um nimero ualquer. Ou sejo, co informar para sub-rotina o némero e suo Poténcia, deve ser opresentado o seu resultado. Por exemplo, se for Mencionado no programa principal « sub-rotina POTENCIA 3) eve ser apresentado o valor 6. Elaboror um programa que efetve o letra de trés valores (A, B e C) € presente como resultado final o soma dos quadrados dos trés valores lidos. Elaborar um programa que efetue o leitura de tr8s valores (A, B e C) © apresenie como resultado final 0 quadrado da soma dos trés valores lids. Elaborar um programa que eletue @ opresentacéo do de dares disponivel com 0 usueri. Elaborar um programa que efetue © opresentagdo do valor do convers6o em délar{USS] de um volorlido em real RS) O loro valor da cotagdo do dolar e também qu de recis dsponivel com o usuario. tum programa que com o uso de uma 5 esenie 0 valor de uma temperatura em Programe deve ler a temperatura em graus Fahrenheit \69}co Esirturoda para Programocdo de Computadores | P Exemplos de Codificacdo linguagens de programagio Pascal, Obasic e C. Observe atentamente cada detalhe, fazendo uma comparacio enire as sintoxes. Algoritmo em Portugués Estruturado procedimento ENTRADA Inteio escreva “Entre um valor para A: * carcuo + x - ¥ CALCUL + x ¥ fescreva “0 resultado de A conBé =", x ey 4 | emplos de Cosifcagao ites raturade pora Programacéo de Computadores | Pe soja “47 fage rotdivisso epee invalids - Tene novemente* fia_caso since Eim_enquanto in Codificagiio do Programa Colculadora na Linguagem Pascal £m seguida 6 apresentado um exemplo de um programa escrito na sinfaxe 1d. © conceito Tur pelo fato de o idade limpar a tela. Esta instru voc’ estiver usando o Pascal padréo e Co “4 | Exemplos de Codificacéo 165 [> rocedure ROTSOM) weiteln: begin . } weiteln: Rotina de Divisao") Fim de Prograna’) Escolha una opcao: *); readin (opeao) ‘oper <> "5! then Codifieagéo do Programa Calculadora na Linguagem QBasic Em seguida é cpresentado um exemplo de um programa escrito na sintaxe da linguagem QBasic da Microsoft. Observe que alguma coisa da sintaxe do QBasic é como a Em QBasic « instrugéo que efetua a limpezo de tela & ds. £m programas 105 sGo denominadas: Procedures e Funci -rotinas. DECLARE FUNCTION calculo(x AS SINGLE, y AS SINGLE,operadar AS STRING! DECLARE SUB DECLARE SUB DECLARE SUB rot DIM SHARED opcao A DIM SHARED ¥, 8, B ‘Programa Principal opcacs = | emplos de Codiicacdo 167 > ‘BREW “2 — Subtracao™ PRINT “3 - wulesplicacaot PRINT 4 - Divisao’ opeac: *, opeas rotmultiplicacao “4°? rotdivieas PROT “Opcac imvalida - Tente novanento WoIrcE INKEYS = "+> wen, END SELECT ‘subeotines FUNCTION celcuio(s, y AS SINGLE, operador AS STRING stuect case opecaser were) CASE "eS ealewio = x+y ease *"! Selous 2x0 2 case “1; Gaieule 22) y SUB entrada INPUT “Entre un valor pare A: *, a INPUT “Entre um valor para B ~, b SUB rotaivisac PRINT “Rotina de Divisaot priwr »——— PRINT : PRINT» PRINT 2 = calculoia, B, +/+) sais xD Sup ‘SUB rotmultipiicacas PRINT *Rotine de Multiplicacest Parnes PRINT : PRINT » PRIND tit68 \Ogico Estruturada pore Programacdo de Computodores | D> F = ealeuiote, & aida xD SUB SUB roteona PRINT : PRINT + PRINT entrads F = ealeulela, b, eaica END SUB SUB roteubtracas cus PRINT “Retina de Subtracac* PRINT : PRIND : PRINT entrada Fs caleulota, by *=") aida END SUB SUB aida PRINT : PRINT PRINT *O resultado entre Ae B=", F WHILE INKEYS = **2 wEND END suB Codificagéio do Programa Calculadora na Linguagem ¢ Em seguida, é apresentado um exemplo de um programe escrito na sintoxe da linguagem Turbo C da Borland. Assim como na linguagem Pascal, a linguagem ‘Cndo possui instrucéo para limpar a tela. A fungio drser) & um recurso do Turbo Ce ndo do C padéo. Nos programas escritos na lingvagem Pascal, as sub-rolinas G0 denominadas Procedures e Functions, em C sao apenas referenciadas segui- das de parénteses e consideradas todas como funcdes. A sub-rotina (funcdo) que efetua 0 retomo do célculo esté precedide da instrugdo float que fem por finalidade indicor que seré retomado um volor real, sendo que esta funcéo & declarada logo no inicio do programa antes da fungéio main, caracterizando 0 indicagéo ;ada, sendo este detalhe parecido \guagem GBasic. Observe que uagem C em relagdo és outras linguagens € um pouco mois ‘complexa em algumas instrugées ou funcées. | Exemplos de Codticacao. 169 > ‘ineluce “eeaio. hy finciude *conio.h* fleat r,a,b: calevlo(float x, floar y, char operador! char opeso: epene = "0 while(opeso Ie 5!) prinee("\ne); ")s scanti*ee* sopene) rotmltiplicacae(! break, break, : defeuit print! (“opcae invalida - Tente novanente* getche() ) , ) entrada) Printf(~mere un valor para A: *); scant (78f*, 4a) Print£(cEntre un valor pare B: ~); seanf(-¥£",eb) > Host caiculo(fioat x, float y, char operedor! \eaico Estruturada pora Programordo de Computadores | switch (operager! cage ‘+" : retus case */" : returnix / ¥} ) > saida() printf(*\nt); printé(*\a") vegultads entre Ae B= f",r7 ovina de Soma\n") nd; print ent): prints (nian) roreubtracse() printf(*Rotina de Subtracao\n") prineé (¢@——————vn") prince ¢\nr eacaot) jotina de multiplicacao\n") hin) print ers\nr) “4 | empios de Cosiicacto mp yi printe(s\nr) jabela Comparativa de instrugies entre os Linguogens de Programacéo ‘A tabela seguinte opresenta apenas uma comparasao ilustrativa das insiru- e/ou funcées utlizedas no programa colculadora escrito em Portugués yrado, Pascal, Qbasic e C. N3o é apresentada uma tabela comparativa sompleta, porque se tora até impossivel, pois cerfos recursos que existem numa inguagem podem ndo exist em outta, Deste forma, voce pode fer uma noo de da sintaxe mais detalhada em relacdo ao algaritmo em portugues estruturado Turbo Pascal [basic Turbo os sting chor selec cose. case else Tuneton i it fos integer nt input scant) sub E as single foot athen i ‘Go existentes em portugués esiuturado opreseniadas no programa fash isidin) scr as reodkey inkoys = declare ses winclode gio Estrturade pare Programacéo de Compuadores | Pe Seniesa Indice Remissivo cBlculos matematcos. 20 fm £080 nn Chapin. lossitcagao de elementos... codtcagto do programa ‘comunicagéeo bidreconal conto conjunt, : conjunte de registos, conjunto matricial constonte intra. constones. construgdo de programas. D dads coradiere... dades lgicos ods numéricos dads primtvos. decsbo compost, 4 Lindice Remissivo 40 an, 42,49 nw,

Potrebbero piacerti anche