Você está na página 1de 39

Algoritmos

Lgica para Desenvolvimento de Programao

Introduo

Este trabalho fruto de minha experincia em desenvolvimento de softwares e cursos lecionados na rea de programao! " material a#ui apresentado foi recolhido de algumas literaturas de Estrutura de Dados e $utoriais da encontrados no sites da %nternet! & programao para mim uma diverso' apesar de complexo' mas ve(o como a

capacidade de um ser humano dominar e solucionar com recursos computacionais problemas do dia)a)dia de uma Empresa' *orporao' etc!!! " racioc+nio da lgica para a programao tra, ao indiv+duo um novo mundo cheio de outros mundos! Dominando a lgica voc ser orientada a ob(eto' orientada a eventos! capa, de aprender sem grandes dificuldades #ual#uer outra linguagem de programao se(a ela estruturada'

Alessandro Coelho Porto

Sobre o Autor
&tualmente trabalha como -ebdesign . -ebmaster na Embrapa *errados' sua principal tarefa est no plane(amaneto e desenvolvimento de /ites! 0tili,a as linguagens 1$2L' 3ava/cript e 4b/cript e /istemas de 5anco de Dados 6&/P7 para a %nternet! Em sua experincia profissional tambm encontramos servios aut8nomos na desenvolvimento na *lipper' 4isual 5asic e Delphi! rea de

rea comercial' as ferramentas por ele utili,adas foram

Abordagem Contextual

2uitas pessoas gostam de falar ou (ulgar #ue possuem e sabem usar o racioc+nio lgico' porm' #uando #uestionadas direta ou indiretamente' perdem esta linha de racioc+nio' pois este depende de in9meros fatores para complet )lo' tais como: calma' conhecimento' vivncia' versatibilidade' experincia' criatividade' ponderao' responsabilidade' entre outros! 5em sem mais delongas podemos di,er #ue lgica a cincia #ue estudas as leis e critios de validade #ue regem o pensamento e a demonstrao' ou se(a' cincia dos princ+pios formais do racioc+nio! 0sar a lgica um fator a ser considerado por todos' principalmente pelos profissionais de inform tica 6programadores' analistas de sistemas e suporte7' pois seu dia)a)dia dentro das organi,a;es solucionar problemas e atingir os ob(etivos apresentados por seus usu rios com eficincia e efic cia' utili,ando recursos computacionais e.ou automati,ados macatronicamente! /aber lidar com problemas de ordem administrativa' de controle' de plane(amento e de estratgica re#uer ateno e boa performance de conhecimento de nosso interesse mostrar como desenvolver e aperfeioar melhor esta tcnica' lembrando #ue para isto' voc dever ser persistente e pratic )la constantemente' chegando < exausto sempre #ue (ulgar necess rio! Princpios de Resolues de Problemas Primeiramente' devemos entender e compreender a palavra =problema>! Podemos di,er #ue problema um proposta duvidosa' #ue pode $er in9meras solu;es' ou #uesto no solvida e #ue o ob(eto de discusso' segundo a definio encontrada no Dicion rio &urlio! Preferimos di,er #ue problema uma #uesto #ue foge a uma determinada regra' ou melhor' o desvio de um percurso' o #ual impede de atingir com sucesso um determinado ob(etivo com eficincia e efic cia! 0ma das solu;es utili,adas para a resoluo de problemas tem sido a utili,ao dos diagramas' no decorrer do curso ser bastante enfati,ado em sala de aula o uso de tais ferramentas com o intuito de auxiliar os aprendi,ados tanto na resoluo de problemas como no conhecimento das tcnicas de programao!
ALGORI !O

0m &lgoritmo uma se#?ncia de instru;es ordenadas de forma lgica para a resoluo de uma determinada tarefa ou problema!
PROGRA!A"#O $S R% %RA&A

5asicamente' a Programao Estruturada consiste numa metodologia de pro(eto de programas visando: facilitar a escrita dos programas@ facilitar a leitura 6o entendimento7 dos programas@

permitir a verificao a priori dos programas@ facilitar a manuteno e modificao dos programas! " maior problema em grandes sistemas de software reside na enorme complexidade desses sistemas' cu(a a apreenso vai geralmente muito alm da capacidade intelectual de um ser humano! Entenda)se a#ui por complexidade de um sistema uma medida do n9mero de seus componentes e do grau de interao entre eles! Para Di(Astra' o indiscut+vel iniciador da programao estruturada' =a arte de programar consiste na arte de organi,ar e dominar a complexidade>! & idia da Programao Estruturada' #ue vai ao encontro da mencionada tarefa do programador' redu,ir a complexidade' em trs n+veis: B! desenvolvimento do programa em diferentes fases por refinamento sucessivo 6desenvolvimento $op)Down7@ C! decomposio do programa total em mdulos funcionais' organi,ados de preferncia num sistema hier r#uico@ D! usando dentro de cada mdulo s um n9mero muito limitado de estruturas b sicas de fluxo de controle! " curso tem por ob(etivo apresentar aos alunos os conceitos e desenvolvimento da programao estruturada' utili,ando duas ferramentas muito utili,adas em cursos acadmicos' o Portugol e o Pascal! PROGRA!A 0m programa um &lgoritmo escrito em uma linguagem computacional! Mais o que um Algoritmo? &lgoritmo um processo de c lculo matem tico ou de resoluo de um grupo de problemas semelhantes' em #ue se estipulam' com generalidade e sem restri;es! Podemos di,er tambm' #ue so regras formais para obteno de um resultado ou da soluo de um problema' englobando frmulas de express;es aritmticas! LI'G%AG$'S &$ PROGRA!A"#O /o /oftwares #ue permitem o desenvolvimento de programas! Possuem um poder de criao ilimitado' desde (ogos' editores de texto' sistemas empresariais at sistemas operacionais! Existem v rias linguagens de programao' cada uma com suas caracter+sticas prprias! Exemplos: Pascal *lipper * 4isual 5asic Delphi e etc!

(C'ICAS A %AIS &$ PROGRA!A"#O

Programao /e#?encial Programao Estruturada Programao "rientada a Eventos e "b(etos Programao "rientada a "b(etos

ALGORI !OS $! )POR %GOL* Durante nosso curso iremos aprender a desenvolver nossos &lgoritmos em uma pseudo)linguagem conhecida como =Portugol> ou Portugus Estruturado! =Portugol> derivado da aglutinao de Portugus E &lgol! &lgol o nome de uma linguagem de programao estruturada usada no final da dcada de FG! OP$RA&OR$S ARI !( ICOS E ) H . &dio /ubtrao 2ultiplicao Diviso

OP$RA&OR$S R$LACIO'AIS I J IK 2aior #ue 2enor #ue 2aior ou %gual

JK K JI

2enor ou %gual %gual Diferente

LI'$ARI+A"#O &$ $,PR$SS-$S Para a construo de &lgoritmos todas as express;es aritmticas devem ser lineari,adas' ou se(a' colocadas em linhas! !O&%LARI+A"#O &$ $,PR$SS-$S & modulari,ao a diviso da expresso em partes' proporcionando maior compreenso e definindo prioridades para resoluo da mesma! *omo pode ser observado no exemplo anterior' em express;es computacionais usamos somente parnteses =6 7> para modulari,ao! La inform tica podemos ter parnteses dentro de parnteses! Exemplos de prioridades: 6CEC7.CKC CEC.CKD OP$RA&OR$S $SP$CIAIS .!O& e &I/0 !O& Metorna o resto da diviso entre C n9meros inteiros! &I/ Metorna o valor inteiro #ue resulta da diviso entre C n9meros inteiros!

1%'"-$S 0ma funo um instrumento 6/ubNalgoritmo7 #ue tem como ob(etivo retornar um valor ou uma informao! & chamada de uma funo feita atravs da citao do seu nome seguido opcionalmente de seu argumento inicial entre parnteses! &s fun;es podem ser predefinidas pela linguagem ou criadas pelo programador de acordo com o seu interesse! 2I2LIO $CAS &$ 1%'"-$S &rma,enam um con(unto de fun;es #ue podem ser usadas pelos programas! 1%'"-$S PR(3&$1I'I&AS &5/6 7 /OM$6 7 /OM6 7 $M0L*6 7 M"0LD6 7 L"Q6 7 /%L6 7 *"/6 7 $&L6 7 4&L"M &5/"L0$" M&%P O0&DM&D& ELE4& &" O0&DM&D" 4&L"M $M0L*&D" 4&L"M &MMED"LD&D" L"Q&M%$2" /EL" *"/EL" $&LQEL$E

&s fun;es acima so as mais comuns e importantes para nosso desenvolvimento lgico' entretanto' cada linguagem possui suas fun;es prpias! &s fun;es podem ser aritmticas' temporais' de texto e etc! /ARI4/$IS 4ari veis so endereos de memria destinados a arma,enar informa;es temporariamente! H $odo &lgoritmo ou programa deve possuir vari velR /ARI4/$IS &$ $' RA&A $ SA5&A 4ari veis de Entrada arma,enam informa;es fornecidas por um meio externo' normalmente usu rios ou discos! 4ari veis de /a+da arma,enam dados processados como resultados! Exemplo:

C=A+B

De acordo com a figura acima & e 5 so 4ari veis de Entrada e * uma 4ari vel de /a+da! CO'S A' $S *onstantes so endereos de memria destinados a arma,enar informa;es fixas' inalter veis durante a execuo do programa! Exemplo: P% K D!BSBT I&$' I1ICA&OR$S /o os nomes dados a vari veis' constantes' $ipo de Dados' Megistros e programas! Megras Para construo de %dentificadores: Lo podem ter nomes de palavras reservadas 6comandos da linguagem7@ Devem possuir como BU caractere uma letra ou 0nderscore 6 6 7@ $er como demais caracteres letras' n9meros ou 0nderscore@ $er no m ximo BCV caracteres@ Lo possuir espaos em branco@ & escolha de letras mai9sculas ou min9sculas indiferente! Exemplos:

10

L"2E L"$&B

$ELEW"LE /&L&M%"

%D&DEXW%L1" P%

02L"2E20%$"*"2PM%D"ED%W%*%LDELEM 02XL"2EX20%$"X*"2PM%D"XEXW&*%LXDEXLEM IPOS &$ &A&OS $odas as 4ari veis devem assumir um determinado tipo de informao! " tipo de dado pode ser: Primitivo Pr)definido pela linguagem@ /ub)Waixa Y uma parte de um tipo ( existente@ Escalar Definidos pelo programador! IPOS PRI!I I/OS &$ &A&OS I' $IRO R$AL &D2%$E /"2EL$E LZ2EM"/ %L$E%M"/! QEM&L2EL$E Y 0$%L%P&D" P&M& MEPME/EL$&M 02& *"L$&QE2 6O0&L$%D&DE7! &D2%$E LZ2EM"/ ME&%/ 6*"2 "0 /E2 *&/&/ DE*%2&%/7! QEM&L2EL$E Y 0$%L%P&D" P&M& MEPME/EL$&M 02& 2ED%[\"! &D2%$E *&M&*$EME/ &LW&L02YM%*"/! "/ LZ2EM"/ O0&LD" DE*L&M&D"/ *"2" *&M&*$EME/ $"ML&2 /E MEPME/EL$&$%4"/ E PEMDE2 & &$M%50%[\" DE 4&L"M!

CARAC $R$

L7GICO

&D2%$E /"2EL$E 4&L"ME/ L]Q%*"/64EMD&DE%M".W&L/"7!

11

CO!A'&OS &$ I8O .I'P% 8O% P% 0 L$IA *omando de entrada #ue permite a leitura de 4ari veis de Entrada! $SCR$/$RA *omando de sa+da #ue exibe uma informao na tela do monitor! I!PRI!A *omando de sa+da #ue envia uma informao para a impressora! SI'AL &$ A RI2%I"#O 0ma 4ari vel nunca eternamente igual a um valor' seu conte9do pode ser alterado a #ual#uer momento! Portanto para atribuir valores a vari veis devemos usar o sinal de =9:*; Exemplos: & 9: C@ 5 9: D@ * 9: & E 5@ SI'AL &$ IG%AL&A&$ &s constantes so eternamente iguais a determinados valores' portanto usamos o sinal de =K>! Exemplos: P% : D!BSBT@ Empresa K ^*olgio de %nform tica L!$!D!&!_ 4 K 4erdadeiro CORPO G$RAL &$ %! PROGRA!A PM"QM&2& JJidentificadorII@ *"L/$ JJidentificadorII K JJdadoII 4&M JJidentificadorII : JJtipoII@ `L%*%" a *"2&LD"/ DE EL$M&D&'PM"*E//&2EL$" E /&`D& JJcomandoBII@ JJcomandoLII b W%2!

12

$S R% %RAS S$<=>'CIAIS *omo pode ser analisado no tpico anterior' todo programa possui uma estrutura se#?encial determinada por um `L%*%" e W%2! (C'ICAS 24SICAS &$ PROGRA!A"#O & partir deste ponto de estudo' voc ter um contato direto com a parte mais pr tica deste trabalho! &nteriormente nos preocupamos em proporcionar a voc' leitor' um conhecimento terico b sico' de algns pontos #ue so por ve,es causadores de d9vidas at a alguns profissionais de inform tica considerados experientes! /endo assim' da#ui para frente voc ter um contato maior com a aplicao pr tica dos &lgoritmos! $' RA&A? PROC$SSA!$' O $ SA5&A Para se criar um programa #ue se(a execut vel dentro de um computador' voc dever term em mente trs pontos de trabalho: a entrada de dados' o seu processamamento e a sa+da dos mesmos! /endo assim' todo programa estar trabalhando com estes trs conceitos! /e os dados forem entrados de forma errada' sero conse#uentemente e resultaro em respostas erradas! Desta forma' di,er a algum #ue foi erro do computador ser um pouco =med+ocre>! " processo de execuo de um programa ocorre segundo o exposto' aps a entrada de dados com a instruo leia e sa+da dos mesmos com a instruo escreva' o processamento ser uma conse#?ncia da manipulao das vari veis de ao! 0ma entrada e uma sa+da podero ocorrer dentro de um computador de diversas formas! Por exemplo' uma entrada poder ser feita via teclado' moddem' leitores ticos' disco' entre outras! 0ma sa+da poder ser feita em v+de' impressora' disco' entre outras formas! Devido a esta grande variedade' nossos programas escrito em portugus estruturado faro meno <s instru;es leia e escreva!

13

$xemplo @A /egue um &lgoritmo #ue l o nome e as S notas bimestrais de um aluno! Em seguida o &lgoritmo calcula e escreve a mdia obtida! PM"QM&2& 2ED%&XW%L&L 4&M L"$&B' L"$&C' L"$&D' L"$&S' 2ED%&: %L$E%M" L"2E : *&M&*$EME %L%*%" LE%& 6L"2E7 LE%& 6L"$&B' L"$&C' L"$&D' L"$&S7 2ED%& JK 6L"$&B E L"$&C E L"$&D E L"$&S7 . S E/*ME4EM 6L"2E' 2ED%&7 W%2! $xemplo @B /egue um &lgoritmo #ue l o raio de uma circunferncia e calcula sua rea! PM"QM&2& &ME&X*%M*0LWEMEL*%& *"L/$ P% K D!BSBT 4&M M&%"' &ME& : ME&L %L%*%" LEM 6M&%"7 aPM"*E//&2EL$"b &ME& JK P% H /OM6M&%"7 aEL$M&D&b E/*ME4EM 6=&ME& K>' &ME&7 a/&`D&b W%2! CLI'DAS &$ CO!$' 4RIOE Podemos inserir em um &lgoritmo coment rios para aumentar a compreenso do mesmo' para isso basta #ue o texto fi#ue entre *haves =ab>! Exemplo: LEM 6M&%"7@ C$' RA&AE

14

$xerccios de AprendiFagem B7 *onstruir um programa #ue efetue o c lculo de um sal rio l+#uido de um professor! Para fa,er este programa voc dever possuir alguns dados' tais como: valor da hora aula' n9mero de aulas dadas no ms e percentual de desconto do %L//! Em primeiro lugar' deve)se estabelecer #ual ser o seu sal rio bruto para efetuar o desconto e $er o valor do sal rio l+#uido! C7 Efetuar o c lculo da #uantidade de litros de combust+vel gastos em uma viagem' utili,ando)se um automvel #ue fa, BC cm por litro! Para obeter o c lculo' o usu rio dever fornecer o tempo gasto na viagem e a velocidade mdia durante a mesma! Desta forma' ser poss+vel obter a distdncia percorrida com a frmula D%/$eL*%& JK $E2P" H 4EL"*%D&DE! $endo o valor da distdncia' basta calcular a #uantidade de litros de combust+vel utili,ada na viagem com a frmula: L%$M"/X0/&D"/ JK D%/$eL*%& . BC! " programa dever apresentar os valores da velocidade mdia' tempo gasto na viagem' a distdncia percorrida e a #uantidade de litros usados na viagem! D7 Ler dois n9meros inteiros e efetuar as opera;es de adio' subtrao' multiplicao e diviso de & por 5 apresentando ao final os #uadro resultados obtidos! $strutura de Controloe G A tomada de &ecises Executa uma se#?ncia de comandos de acordo com o resultado de um teste! & estrutura de deciso pode ser /imples ou *omposta' baseada em um resultado lgico! /imples: /E JJ*"LD%[\"II EL$\" JJ*"2&LD"BII *omposta B: /E JJ*"LD%[\"II EL$\" JJ*"2&LD"BII /EL\" JJ*"2&LD"BII

*omposta C: /E JJ*"LD%[\"II EL$\" %L%*%" JJ*"2&LD"BII@ JJ*"2&LD"LII W%2@ /EL\" %L%*%" JJ*"2&LD"BII@ JJ*"2&LD"LII W%2@

15

OP$RA&OR$S L7GICOS &tuam sobre express;es retornando sempre valores lgicos como Walso ou 4erdadeiro! ME$"ML& 4EMD&DE%M" /E &25&/ &/ P&M$E/ W"ME2 4EMD&DE%M&/! 5&/$& O0E 02& P&M$E /E3& 4EMD&DE%M& P&M& ME$"ML&M 4EMD&DE%M"! '#O %L4EM$E " E/$&D"' DE 4EMD&DE%M" P&//& P&M& W&L/" E 4%*E) 4EM/&! A2$LA /$R&A&$ A 4 4 W W $,PR$SS-$S L7GICAS &s express;es compostas de rela;es sempre retornam um valor lgico! Exemplos: CEFIS 4erdadeiro DJID Walso 2 4 W 4 W A$2 4 W W W A O% 2 4 4 4 W '#O .A0 W W 4 4 $ O%

De acordo com a necessidade' as express;es podem ser unidas pelos operadores lgicos! Smbolo K JI I J IK JK SigniHicado %gual a Diferente de 2aior #ue 2enor #ue 2aior ou igual a 2enor ou igual a

16

$xemplo @A /egue um &lgoritmo #ue l C n9meros e escreve o maior! PM"QM&2& &*1&X2&%"M@ 4&M &' 5 : %L$E%M"@ %L%*%" LEM 6&' 57@ /E &I5 EL$\" E/*ME4EM 6&7 /EL\" E/*ME4EM 657 W%2! $xemplo @B /egue um &lgoritmo #ue l o nome e as S notas bimestrais de um aluno! Em seguida o &lgoritmo calcula e escreve a mdia obtida pelo aluno escrevendo tambm se o aluno foi aprovado ou reprovado! 2dia para aprovao K T PM"QM&2& 2ED%&XW%L&L@ 4&M L"$&B' L"$&C' L"$&D' L"$&S' 2ED%&: ME&L@ L"2E : *&M&*$EME fDFg %L%*%" LEM 6L"2E7@ LEM 6L"$&B' L"$&C' L"$&D' L"$&S7@ 2ED%& :K 6L"$&B E L"$&C E L"$&D E L"$&S7 . S@ /E 2ED%&IKT EL$\" E/*ME4EM 6^&PM"4&D"_7 /EL\" E/*ME4EM 6^MEPM"4&D"_7 E/*ME4EM 6L"2E' 2ED%&7 W%2! 'I'DOS &$ S$ 0sados para tomadas de decis;es para mais de C op;es! Worma Qeral: /E JJ*"LD%[\"II EL$\" IICO!A'&OAJJ /EL\" /E JJ*"LD%[\"II EL$\" IICO!A'&OAJJ /EL\" IICO!A'&OAJJ

17

$xemplo @A /egue um &lgoritmo #ue l D n9meros e escreve o maior! PM"QM&2& &*1&X2&%"M@ 4&M &' 5' * : %L$E%M"@ %L%*%" LEM 6&' 5' *7@ /E 6&I57 E 6&I*7 EL$\" E/*ME4EM 6&7 /EL\" /E 65I&7 E 65I*7 EL$\" E/*ME4EM 657 /EL\" E/*ME4EM 6*7 W%2! $S R% %RAS &$ CO'&I"#O & estrutura de condio e#?ivale a um ninho de /E_/! Worma Qeral: W&*& *&/" *&/" JJ*"LD%[\"BII JJ*"2&LD"BII@ *&/" JJ*"LD%[\"LII JJ*"2&LD"BII@ "0$M"/ *&/"/ JJ*"2&LD"BII@ W%2 DE *&/" $xemplo @A /egue um &lgoritmo #ue l D n9meros e escreve o maior! PM"QM&2& &*1&X2&%"M@ 4&M &' 5' * : %L$E%M"@ %L%*%" LEM 6&' 5' *7@ W&*& *&/" *&/" 6&I57 E 6&I*7 E/*ME4EM 6&7@ *&/" 65I&7 E 65I*7 E/*ME4EM 657@ "0$M"/ *&/"/ E/*ME4EM 6*7@ W%2 DE *&/" W%2! Exerc+cios de &prendi,agem B7 Ler trs valores para os lados de um tridngulo' considerando lados como: &' 5 e *! 4erificar se os lados fornecidos formam realmente um tridngulo' e ser for esta condio verdadeira' dever ser indicado #ual tipo de tridngulo for formado: issceles' escaleno ou e#uil tero! C7 Wa,er a leitura de D valores para extrair uma e#uao do CU grau! Dever ser verificado se existem ra+,es reais' uma ou duas ra+,es conforme necess rio!

18

D7 Ler #uatro valores referentes a #uatro notas escolares e um aluno e imprimr uma mensagem di,endo #ue o alunos foi aprovado' se o valor da mdia escolar for maior ou igual a F! /e o aluno no foi aprovado' indicar uma mensagem informando esta condio! &presentar (unto das mensagem o valor da mdia do aluno para #ual#uer condio! S7 Ler #uatro valores referentes a #uatro notas escolares de um aluno e imprimir uma mensagem di,endo #ue o aluno foi aprovado' se o valor da mdia escolar for maior ou igual a V! /e o valor da mdia for menor #ue V' solicitar a nota de exame' somar com o valor da mdia e obter nova mdia! /e a nova mdia for maior a F' apresentar uma mensagem di,endo #ue o aluno foi aprovado em exame' se o aluno no foi aprovado' indicar uma mensagem informando esta condio! &presentar com as mensagens o valor da mdia do aluno' para #ual#uer condio! $S R% RA &$ CO' ROL$ G LA"OS O% !ALDAS &$ R$P$ I"#O Existem ocasi;es onde se necess rio efetuar a repetio de um trecho de programa um determinado n9mero de ve,es! Leste caso' poder ser criado um looping #ue efetue o processamento de um determinado trecho' tantas ve,es #uantas forem necess rias! "s loopings tambm so chamados de: laos de repetio ou malhas de repetio! La programao estrutura ocorre a existnciade comandos apropriados para efetuar a repetio de determinados trechos de programas o n9mero de ve,es #ue for necess rio! & principal vantagem deste recurso #ue o programa passa a $er um tamanho menor' podendo sua amplitude de processamento ser aumentada em se alterar o tamanho do cdigo de programao! Desta forma' pode)se determinar repetioes com n9meros variados de ve,es!

19

Repetio do ipo9 este lKgico no Incio do Looping Y usada para repetir L ve,es uma ou mais instru;es! $endo como vantagem o fato de no ser necess rio o conhecimento prvio do n9mero de repeti;es! Worma Qeral B: ELO0&L$" JJ*"LD%[\"II W&*& JJ*"2&LD"BII@ Worma Qeral C: ELO0&L$" JJ*"LD%[\"II W&*& `L%*%" JJ*"2&LD"BII@ JJ*"2&LD"LII W%2@ $xemplo /egue um algoritmo #ue calcule a soma dos sal rios dos funcion rios de uma empresa! " programa termina #uando o usu rio digitar um sal rio menor #ue G! PM"QM&2& /"2&X/&L&M%"/@ 4&M /"2&' /&L&M%" : ME&L@ %L%*%" SO!A9:OL SALARIO9:AL ELO0&L$" /&L&M%"IKG %L%*%" LEM 6/&L&M%"7@ /"2&:K/"2&E/&L&M%" W%2@ E/*ME4EM 6/"2&7 W%2! & estrutura enMuanto;;;Haa;;;Him6enMuanto tem o seu funcionamento controlado por deciso! /endo assim poder executar um determinado con(unto de instru;es en#uanto a condio verificada for 4erdadeira! Lo momento em #ue esta condio se torna falsa' o processamento da rotina desviado para fora do looping! /e a condio for Walsa logo de in+cio' as instru;es contidas no looping so ignoradas!
VALIDAO INICIAL

TODAS AS VARIVEIS QUE ACUMULAM VALORES DEVEM RECEBER UM VALOR INICIAL.


Repetio do ipo9 este lKgico no Him do Looping &ssim como a estrutura ELO0&L$" Y usada para repetir L ve,es uma ou mais instru;es! /ua validao final fa,endo com #ue a repetio se(a executada pelo menos uma ve,!

20

Worma Qeral@ MEP%$& JJ*"2&LD"BII@ JJ*"2&LD"LII &$E JJ*"LD%[\"II $xemplo @A /egue um algoritmo #ue calcule a soma dos sal rios dos funcion rios de uma empresa! " programa termina #uando o usu rio digitar um sal rio menor #ue G! PM"QM&2& /"2&X/&L&M%"/@ 4&M /"2&' /&L&M%" : ME&L@ %L%*%" SO!A9:OL MEP%$& LEM 6/&L&M%"7@ /"2&:K/"2&E/&L&M%" &$E /&L&M%"JG@ E/*ME4EM 6/"2&7 W%2! $xemplo @B /egue um algoritmo #ue escreve os BGG primeiros n9meros pares! PM"QM&2& P&ME/XC@ 4&M %' P&M' *"L$&D"M : %L$E%M"@ %L%*%" *"L$&D"M :K G@ P&M :K G@ MEP%$& E/*ME4EM 6P&M7@ P&M :K P&MEC@ *"L$&D"M :K *"L$&D"MEB@ &$E *"L$&D"MKBGG W%2! & estrutura repita;;atN6Mue tem o seu funcionamento controlado por deciso! Porm' ir efetuar a execuo de um con(unto de instru;es pelo menos uma ve, antes de verificar a validade da condio estabelecida! Diferente da estrutura enMuanto #ue executa somente um con(unto de instru;es' en#uanto a condio verdadeira! Desta forma repita tem seu funcionamento em sentido contr rio a enMuanto' pois sempre ir processar um con(unto de instru;es' no m+nimo uma ve, at #ue a condio se torne 4erdadeira! Pra a estrutura repita um con(unto de instru;es executado en#uanto a condio se mantm Walsa e at #ue ela se(a 4erdadeira!

21

R$P$ I"#O &O IPO9 /ARI4/$L &$ CO' ROL$ &nteriormente' formas vistas duas formas de se elaborar looping! 0ma usando o conceito enMuanto e a outra usando o conceito repita! Woi visto tambm como se estabelecer rotinas #ue efetuarem a execuo de um looping um determinado n9mero de ve,es atravs da utili,ao de um contador 6atravs de uma vari vel de controle7! Porm' existe uma possibilidade de faciliar o uso de contadores finitos' sem fa,er uso das estruturas anteriores' deixando)as para a utili,ao de loopings onde no se conhece de antemo o n9mero de ve,es #ue uma determinada se#uncia de instru;es dever ser executada! "s looping #ue possuem um n9mero finito de execu;es podero ser processados atravs de estrutura de laos contados para' sendo conseguida com a utili,ao do con(unto de instru;es para;;de;;atN;;passo;Haa;;Him6para! & estrutura para;;de;;atN;;passo;Haa;;Him6para tem seu funcionamento controlado por uma vari vel denominada contador! /endo assim' poder executar um determinado con(unto de instru;es um determinado n9mero de ve,es! /ua sintaxe a seguinte:
Para Ivari velJ de IinicioJ atN IfimJ passpIincrementoJ Haa Iinstru;esJ Him6para

$xemplo Pedir a leitura de um valor para a vari vel h' multiplicar este valor por D implicando)o < vari vel de resposta M e apresentar o valor obtido' repetindo esta seg?ncia por cinco ve,es! Programa LoopingXPara 4ar h' M '*"L$: %nteiro %nicio Para *"L$ de B at F passo B faa Leia 6x7 M JK h H M Escreva6M7 WimXpara Wim! /er executado o con(unto de instru;es entre a instruo para e a instruo Him6para' sendo a vari vel *"L$ 6vari vel de controlo7 iniciali,ada com valor B e incrementada de mais B atravs da instruo passo at o valor F! Este tipo de estrutura de repetio poder ser utili,ado todas as ve,es #ue se tiver a necessidade de repetir trechos finitos' onde se conhece o valor inicial e o valor final!

22

$xerccios de AprendiFagem 6Desenvolver *ada Exerc+cio utili,ando as trs estruturas de repetio apresentadas7 B7 &presentar os #uadrados do n9meros inteiros de BF a CGG! C7 &presentar os resultados de uma tabuada de um n9mero #ual#uer! Esta dever ser impressa no seguinte formato: *onsiderando como exemplo o fornecimento do n9mero C ChBKC ChCKS ChDKT ChSKi C h F K BG 6!!!7 C h BG K CG D7 &presentar o total da soma do cem primeiros n9meros inteiros 6 B E CE D E S!!!E jj E BGG 7! S7 Elaborar um programa #ue apresente no final o somatrio dos valores pares existentes na faixa de B at FGG! F7 &presentar todos os valores numricos inteiros +mpares situados nafaixa de G a CG! Para verificar se o n9mero +mpar' efetuar dentro da malha a verificao lgica desta condio com a instruo se' perguntando se o n9mero +mpar' sendo mostre)o' no sendo' passe para o prximo passo! T7 &presentar todos os n9meros divis+veis por S #ue se(am menores #ue CGG! Para verificar se o n9mero divis+vel por S' efetuar dentro da malha de verificao lgica desta condio com a instruo se' perguntando se o n9mero divis+vel' sendo' mostre)o' no sendo passe para o prximo passo! & vari vel #ue controlar o contador dever ser iniciada com valor B! V7 &presentar as potncias de D variando de G a BF! Deve ser considerado #ue #ual#uer n9mero elevado a ,ero B' e elevado a B ele prprio! i7 Elaborar um programa #ue apresente o valor de uma potncia de uma base #ual#uer elevada a um expoente #ual#uer' ou se(a' de L 2 ! j7 Escreva um programa #ue apresente a srie de Wibobnacci ato dcimo #uinto termo! & srie de Wibonacci formada pela se#?ncia: B'B'C'D'F'i'BD'CB'DS'!!! etc! Esta srie se caracteri,a pela soma de um termo posterior com o seu anterior subse#?ente! $S R% %RA 24SICA &$ &A&OS G A2$LAS $! !$!7RIAS $strutura de &ados DomogOneas Durante os pontos estudados anteriormente' percebemos #ue o poder de programao se tornou maior! Porm' tendo dom+nio das tcnicas anteriores' ainda correr)se < o risco de no conseguir resolver alguns tipos de problemas' pois foram trabalhadas at a#ui apenas vari veis simples' vari veis #ue somente arma,enam um valor por ve,! Leste cap+tulo' ser apresentado uma tcnica de programao #ue permitir trabalhar com o agrupamento de v rias informa;es dentro de uma mesma vari vel! 4ale salientar #ue este agrupamento ocorrer obedecendo sempre ao mesmo tipo de dado' e por esta ra,o chamado de estruturas de dados homogneas! &grupamentos

23

de tipo de dados diferentes seto estudados mais adiante #uando forme abordadas as estruturas de dados heterogneas! & utili,ao deste tipo de estrutura de dados recebe diversos nomes' com: vari veis indexadas' vari veis compostas' vari veis subscritas' arran(os' vetores' matri,es' tabelas em memria ou arraks 6do ingls7! /o v rios os nomes encontrados na literatura voltada para o estudo de tcnicas de programao #ue envolvem a utili,ao das estruturas homogneas de dados! Por ns' sero definidas como matri,es! &s matri,es 6tabelas em memria7 so tipo de dados #ue podem ser =constitu+dos> < medida #ue se fa,em necess rios ' pois no sempre #ue os tipos b sicos 6real' inteiro' caractere ou lgico7 e .ou vari veis simples so suficiente para representar a estrutura de dados utili,ado em um programa! !atriFes de uma &imenso ou /etores Este tipo de estrutura em particular tambm denominado por alguns profissionais como matri,es unidimensionais! /ua utili,ao mais comum est vinculada < criao de tabelas! *aracteri,a)se por ser definida uma 9nica vari vel dimensionada com um determinado tamanho! & dimenso de uma matri, constituida por constantes inteiras e positivas! "s nomes dados <s matri,es seguem as mesmas regras de nomes utili,ados para indicar as vari veis simples! Operaes 2Psiccas com !atriFes do ipo /etor 0ma matri, de uma dimenso ou vetor ser ' neste trabalho' representada por seu nome e seu tamanho 6dimenso7 entre colchetes' desta forma seria uma matri, 2D fB!!ng' onde 2D o seu nome e possuindo uum tamanho de B a n! %sto significa #ue podero ser arma,enados em 2D at um valor definido pelo programador! Perceba #ue na utili,ao de vari veis simples existe uma regra: uma vari vel pode conter apenas um valor por ve,! Lo caso das matri,es' esta podero arma,enar mais um valor por ve,! Lo caso das matri,es' esta podero arma,enar mais de um valor por ve,' pos so dimensionadas' exatamente para este fim! Desta forma poder)se manipular uma #uantidade maior de informao com pouco trabalho de processamento! Deve)se apenas considerar #ue com relao < manipulao dos elementos de uma matri,' eles ocorrero de forma individuali,ada' pois n<o poss+vel efetuar a manipulao de todos os elementos do con(unto ao mesmo tempo! Atribuio de uma !atriF &nteriormente' foram utili,adas v rias instru;es em portugus estruturado para poder se definir e montar um programa! Lo caso da utili,ao de matri,es' ser definida a instruo conQunto #ue indicar em portugus estruturado a utili,ao de uma matri,' tendo como sintaxe: 4ari vel : conQunto fJdimensoIg de Jtipo de dadoI! "nde JdimensoI ser a indicao dos valores inicial e final do tamanho do vetor e Jtipo de dadoI se o vetor em #uesto ir utili,ar valores reais' inteiros' lgicos ou caracteres! Leitura dos &ados de uma !atriF & leitura de uma matri, processada passo a passo' um elemento por ve,! & instruo de leitura leia seuida da vari vel mais o +ndice! &baixo' apresentado a codificao em portuguol da leitura de i notas de i alunos' c lculo da mdia e a apresentao da mesma!

24

Programa 2ediaX$urma 4ar 2d : con(unto fB!!ig de real /oma' media : real % : inteiro %nicio /oma JK G Para % de B ate i faa Leia 62df%g7 /oma JK /oma E 2Df%g WimXPara 2dia JK /oma . i Escreva 62edia7 Wim! $scrita dos &ados de uma !atriF " processo de escrita de uma matri, bastante parecido com o processo de leitura de seus elementos! Para esta ocorrncia dever ser utili,ada a instruo escreRa seguida da indicao da vari vel e seu +ndice! /upondo #ue aps a leitura das i notas' houvesse a necessidade de apresent )las antes da apresentao do valor da mdia! &baixo exibido a codificao da escritados i alunos antes de ser apresentado o c lculo da mdia! Programa 2ediaX$urma 4ar 2d : con(unto fB!!ig de real /oma' media : real % : inteiro %nicio /oma JK G Para % de B ate i faa Leia 62df%g7 /oma JK /oma E 2Df%g WimXPara Para % de B ate i faa Escreva 62df%g7 WimXPara 2dia JK /oma . i Escreva 62edia7 Wim! $xerccios de AprendiFagem B7 Desenvolver um programa #ue efetue a leitura de BG elementos de uma matri, & do tipo vetor! *onstruir uma matri, 5 de mesmo tipo' observando a seguinte lei de formao: /e o valor do +ndice for par' o valor dever ser multiplicado por F' sendo +mpar dever ser somado por F! &o final mostrar os conte9dos das duas matri,es! C7 Desenvolver um programa #ue efetue a leitura de F elementos de uma matri, & do tipo vetor! Lo final' apresente o total da soma de todos os elementos #ue se(am +mpares!

25

D7 Ler duas matri,es & e 5 do tipo vetor com CG elementos! *onstruir uma matri, *' onde cada elemento de * a subtrao do elemento correspondente de & com 5! S7 Ler BF elementos de uma matri, & do tipo vetor! *onstruir uma matri, 5 de mesmo tipo! "bservando a seguinte lei de formao: =$odo elemento de 5 dever ser o #uadrado do elemento de & correspondente>! F7 Ler uma matri, & do tipo vetor com BF elementos! *onstruir uma matri, 5 de mesmo tipo' sendo #ue cada elemento da matri, 5 se(a o fatorial do elemento correspondente da matri, l T7 Ler duas matri,es & e 5 do tipo vetor com BF elementos cada! *onstruir uma matri, *' sendo esta a (uno das duas outras matri,es! Desta forma' * dever $er a capacidade de arma,enar FG elementos! V7 Ler CG elementos de uma matri, & tipo vetor e construir uma matri, 5 de mesma dimenso com os mesmos elementos de &' sendo #ue estes devero estar invertidos! "u se(a' o primeiro elemento de & passa a ser o 9ltimo elemento de 5! " segundo elemento de & passa a ser o pen9ltimo de 5 e assim por diante!

26

!A RI+$S CO! !AIS &$ %!A &I!$'S#O &nteriormente' voc teve contato com o uso de uma 9nica vari vel indexada com apenas uma dimenso 6uma coluna e v rias linhas7' #uanto foi utili,ado o exemplo para efetuar o c lculo da mdia geral das mdias dos oito alunos! & partir deste ponto' sero apresentadas as tabelas com mais colunas' sendo assim teremos vari veis no sentido hori,ontal e vertical! *om o conhecimento ad#uirido at este ponto' voc teria condi;es suficientes para elaborar um programa #ue efetuasse a leitura das notas dos alunos' o c lculo da mdia de cada aluno e no final apresentar a mdia do grupo' utili,ando)se de matri,es unidemensionais! Porm' h de se condiderar #ue o trabalho seria grande' uma ve, #ue se necessitaria manter um controle de cada +ndice em cada matri, para um mesmo aluno! Para facilitar o trabalho com estruturas deste porte #ue sero utili,adas matri,es com mais dimens;es! & mais comum a matri, de duas dimens;es por se relacionar diretamente com a utili,ao de tabelas! 2atri,es com mais de duas dimens;es so utili,adas com menos fre#?ncia' mas podero ocorrer com momentos em #ue se necessite trabalhar com um n9mero maior de dimens;es' estas sero f ceis de serem utili,adas se voc dominar bem a utili,ao de uma matr, com duas dimens;es! 0m importante aspecto a ser considerado #ue na manipulao de uma matri, utili,ada uma 9nica instruo de looping6enMuanto? para ou repita7! Lo caso de matri,es com mais dimens;es' dever ser utili,ado o n9mero de loopings relativos ao tamanho de sua dimenso! Desta forma' uma matri, de duas dimens;es dever ser controlada com dois loopings' sendo #ue de trs dimens;es dever ser controlada por trs loopings e assim por diante! Em matri,es de mais uma dimenso os seus elementos sero tambm manipulados de forma individuali,ada' sendo a referncia feita sempre atravs de dois +ndices: o primeiro para indicar a linha e o segundo para indicar a coluna! Desta forma' $&5EL&fC'Dg' indica #ue est sendo feita uma referncia ao elemento arma,enadona linha D coluna D! Pode)se considerar #ue uma matri, com mais de uma dimenso tambm um vetor' sendo v lido para este tipo de matri, tudo o #ue ( foi utili,ado anteriormente para as matri,es de uma dimenso! Operaes 2Psicas com !atriFes de &uas &imenses 0ma matri, de das dimens;es est sempre fa,endo meno a linhas e colunas e ser representada por seu nome e seu tamanho 6dimenso7 entre colchetes' desta forma seria uma matri, de duas dimens;es$&5EL&fB!!i' B!!Fg' onde $&5EL& o seu nome' possuindo um tamanho de i linhas 6de B a i7 e F colunas 6de B a F7' ou se(a' uma matri, de i por F 6ihF7! %sto significa #ue podero ser arma,enados em $&5EL& at SG elementos! & figura i!B apresenta a matri, $&5EL& com a indicao dos endereos 6posi;es7 #ue podero ser utili,adas para arma,enamento de seus elementos! Atribuio de uma !atriF 0ma matri, de duas dimens;es ser atribu+da pelas instruo conQunto ( utili,ada para definir o uso de uma matri, de uma dimenso' sendo bastante parecidos em sua referncia! & sinta,e ser : 4&M%&4EL : conQunto fJdimensoB: dimensoCIg de Jtipo de dadoI' onde JdimensoBI e JdimensoCI sero indica do tamanho da tabela e Jtipo de dadoI o tipo da matri,' #ue poder ser formada por valores reais' inteiros' lgicos ou caracteres!

27

Leitura dos &ados de uma !atriF & leitura de uma matri, de duas dimens;es assim como as matri,es de uma dimenso processada passo a passo' um elemento por ve,' sendo utili,ada a instruo leia seguida da vair vel mais os seus +ndices! & seguir apresentado a codificao em portugus estruturado da leitura das S notas bimestrais de i alunos' sem considerar o c lculo da mdia! Programa LerXElementos 4ar Lotas : conQunto fB!!i' B!!Sg de real %' 3 : inteiro %nicio Para % de B at i faa Para 3 de B at S faa Leia6notasf%'3g7 WimXPara WimXPara Wim! $scrita dos &ados de uma !atriF " precesso de escrita ser bastante parecido com o processo de leitura de seus elementos! /upondo #ue aps a leitura das notas dos i alunos' houvesse a necessidade de efetuar a apresentao das notas! &baixo apresentado a codificao em portugus estruturado da escrita das S notas dos i alunos! Programa LerXElementos 4ar Lotas : conQunto fB!!i' B!!Sg de real %' 3 : inteiro %nicio Para % de B at i faa Para 3 de B at S faa Escreva6notasf%'3g7 WimXPara WimXPara Wim! $xerccios de AprendiFagem B7 Ler duas matri,es & e 5' cada uma de duas dimens;es com F linhas e D colunas! *onstruir uma matri, * de mesma dimenso' onde * formada pela soma dos elementos da matri, & com os elementos da matri, 5!

28

$S R% %RA &$ &A&OS D$ $ROG>'$AS Lo tpicos anteriores' voc teve um contato com tcnicas de programao #ue envolveram o uso de estruturas de dados homogneas' atravs da utili,ao de matri,es de uma e duas dimens;es! "bservou #ue somente foi poss+vel trabalhar com um tipo de dado por matri,! Lo momento em #ue se precisou trabalhar com dois tipos de dados diferentes' foi necess ria a utili,ao tambm de duas matri,es' uma de cada tipo! $strutura de um Registro &gora voc ter contato com a utili,ao da principal estrutura de dados' o registro' a #ual consiste em trabalhar v rios dados de tipos diferentes 6os campos7 em uma mesma estrutura! Por esta ra,o' este tipo de dado considerado heterogneo! Atribuio de Registros "s tipos registro devem ser declarados ou atribu+dos antes da vari veis' pois poder ocorrer a necessidade de se declarar uma vari vel com o tipo registro anteriormente atribu+do! Para se declarar um tipo registro em portugus estruturado dever ser utili,ada a instruo tipo em con(unto com a instruo registro;;;Him6registro' conforme a sintaxe indicada abaixo! ipo JidentificadorI K registro Jlista dos campos e seus tiposI Him6registro Rar Jvari velI : JidentificadorI "nde indentificador o nome do tipo registro em caracteres mai9sculos' em it lico como as vari veis' e lista dos campos e seus tipos a relao de vari veis #ue sero usadas como campos' bem como o seu tipo de estrutura de dados' podendo ser: real' inteiro' lgico ou caractere! &ps a instruo Rar' dever ser indicada a vari vel tipo registro e a declarao do seu tipo de acordo com um identificador definido anteriormente! Perceba #ue a instruo tipo dever ser utili,ada antes da instruo Rar' pois ao definir um tipo de vari vel' pode)se fa,er uso deste tipo definido! $omando como exemplo a proposta de se criar um registro denominado &L0L"' cu(os campos so L"2E' L"$&B' L"$&C' L"$&D e L"$&S' este seria assim declarado:

29

tipo *&DX&L0L" K registro L"2E : caractere L"$&B : real L"$&C : real L"$&D : real L"$&S : real Him6registro Rar &L0L" : *&DX&L0L" "bserve #ue especificado um registro denominado *&DX&L0L"' o #ual um con(unto de dados heterogneos 6um campo tipo caractere e #uatro do tipo real7! Desta forma poss+vel guardar em uma mesma estrutura v rios tipos diferentes de dados! & t+tulo de comparao' pode)se di,er #ue um tipo registro tambm um vetor 6matri, de uma dimenso7! Pois tem)se a vari vel &L0L" do tipo cadXaluno como um vetor com os +ndices L"2E' L"$&B' L"$&C' L"$&D e L"$&S! Leitura de Registros & leitura de um registro efetuada com a instruo leia seguida do nome da vari vel registro e seu campo correspondente separado por um caractere =!> ponto! Programa Leitura tipo *&DX&L0L" K registro L"2E : caractere L"$&B : real L"$&C : real L"$&D : real L"$&S : real Him6registro Rar &L0L" : *&DX&L0L" Incio Leia 6&luno!Lome7 Leia 6&luno!LotaB7 Leia 6&luno!LotaC7 Leia 6&luno!LotaD7 Leia 6&luno!LotaS7 1im

30

$scrita de Registros " processo de escrita de um registro feito com a instruo escreRa de forma semelhante ao processo de leitura! Programa $scrita tipo *&DX&L0L" K registro L"2E : caractere L"$&B : real L"$&C : real L"$&D : real L"$&S : real Him6registro Rar &L0L" : *&DX&L0L" Incio Escreva 6&luno!Lome7 Escreva 6&luno!LotaB7 Escreva 6&luno!LotaC7 Escreva 6&luno!LotaD7 Escreva 6&luno!LotaS7 1im $strutura de um Registro de ConQuntos Lo tpico anterior' foi apresentado o conceito de se trabalhar com um registro! Lo ponto de aprendi,ado em #ue estamos' podemos at (urar #ue voc este(a perguntando: /er #ue no poss+vel definir um vetor ou mesmo uma matri, dentro de um registro' para no ser necess rio utili,ar somente os tipos primitivos de dadosm %sto realmente poss+vel! *onsidere ainda o exemplo do registro &L0L"' onde temos o campo L"2E tipo caractere e mais #uatro campos tipo real para o arma,enamento de duas notas sendo' L"$&B' L"$&C' L"$&D e L"$&S! 4e(a #ue se pode definir um vetor chamado L"$& com #uatro %ndices' uma para cada nota! Atribuio de Registros de ConQuntos $omando como exemplo a proposta de se criar um registro denominado &L0L"' cu(as notas sero informadas em um vetor' este seria bastante declarado: tipo 5%2E/$ME K conQuno fB!!Sg de real *&DX&L0L" K registro L"2E : caractere L"$& : 5%2E/$ME Him6registro "bserve #ue ao ser especificado o registro *&DX&L0L"' existe nele um campo chamado L"$& do tipo bimestre' onde bimestre a especificao de um tipo de

31

con(unto matricial de um 9nica dimenso com capacidade para #uatro elementos! 4e(a #ue o tipo de bimestre foi anteriormente definido' pois se caracteri,a por um tipo criado' assim como o tipo cadXaluno atribu+do < vari vel de registro &L0L"! Leitura de Registro de ConQuntos & leitura de um registro de con(unto efetuada com a instruo leia geralmente dentro de um lao de repitao! &ssim sendo' observe o cdigo abaixo: Programa Leitura tipo 5%2E/$ME K conQunto fB!!Sg de real *&DX&L0L" K registro L"2E : caractere L"$& : bimestre Him6registro Rar &L0L" : CA&6AL%'O % : inteiro Inicio Leia 6&L0L"!L"2E7 Para de % ate S faa Leia 6&L0L"!L"$&f%g7 1im6para 1im; $strutura de um conQunto de Registros *om as tcnicas de programao anteriormente apresentadas' passou)se a $er uma mobilidade bastante grande ' podendo)se trabalhar de uma forma mais ade#uada com diversos problemas' principalmente os #ue envolvem a utili,ao de dados heterogneos' facilitando a construo de programas mais eficientes! Porm' os programas apresentados at a#ui com a utili,ao de registros' s fi,eram meno < leitura e escrita de um 9nico registro! Leste momento' voc ter contato com o con(unto de registros #ue permite a construo de programas' onde poss+vel se fa,er a entrada' processamento e sa+da de diversos registros! Atribuio de ConQunto de Registros Para se declarar un con(unto de registros necess rio em primeiro lugar' possuir a definio de um registro' ou se(a necess rio $er um formato de um 9nico registro para ento definir o n9mero de registros #ue ser utili,ado pelo programa! Para exemplificar o #ue est sendo exposto' considere #ue voc dever fa,er um programa #ue leia o nome e as #uatro notas escolares de i alunos! %sto ( e familiar! 4e(a a seguir a codificao do con(unto de registros para os oito alunos: ipo 5%2E/$ME K conQunto fB!!Sg de real

32

*&DX&L0L" K registro L"2E : caractere L"$&: 5%2E/$ME 1im6registro /ar &L0L": conQunto SA;;TU de *&DX&L0L" "bserve #ue aps a instruo Rar? indicada a vari vel de registros &L0L"' sendo esta um con(unto de i registros do tipo *adX&luno' #ue por sua ve, 5imestre um con(unto de #uatro valores reais! Leitura de ConQunto de Registros & leitura de forma semelhante <s anteriores! Lo entanto'm sero utili,adas dois laos' pois alm de controlar a entrada das #uatro notas de cada aluno' tem)se #ue controlar a entrada de i alunos! Esta estrutura bastante similar a uma matri, de duas dimens;es! &ssim sendo' observe o cdigo em portugus estruturado: Programa LE%$0M& ipo 5%2E/$ME K conQunto fB!!Sg de real *&DX&L0L" K registro L"2E : caractere L"$&: 5%2E/$ME 1im6registro /ar &L0L": conQunto SA;;TU de *&DX&L0L" %' 3 : inteiro incio Para 3 de B at i faa Leia 6&L0L"f3g!L"2E7 Para % de B at S faa Leia 6&L0L"f3g!L"2Ef%g7 WimXpara WimXpara 1im 4e(a #ue o looping da vari vel 3 controla o n9mero de alunos da turma' no caso i' e o looping da vari vel % controla o n9mero de notas' at S por aluno! Para cada movimentao de mais uma vari vel 3 existem #uatro movimenta;es na vari vel %! $scrita de ConQunto de Registros " processo de escrita de um con(unto de registros similar aos modos anteriores' ( estudados! &ssim sendo' ve(a o cdigo: Programa LE%$0M&

33

ipo 5%2E/$ME K conQunto fB!!Sg de real *&DX&L0L" K registro L"2E : caractere L"$&: 5%2E/$ME 1im6registro /ar &L0L": conQunto SA;;TU de *&DX&L0L" %' 3 : inteiro incio Para 3 de B at i faa Escreva 6&L0L"f3g!L"2E7 Para % de B at S faa Escreva 6&L0L"f3g!L"2Ef%g7 WimXpara WimXpara 1im PROGRA!A"#O !O&%LAR /er estudado a partir deste ponto' a aplicao de subrotinas em algoritmos' tambm conhecidas pela denominao mdulos ou subalgoritmos! La realidade' no importa como so chamadas' o #ue importa a forma como funcionam e como devem ser aplicadas em um programa' e isto #ue voc aprender ! Leste cap+tulo' ser introdu,ido o conceito da criao estruturada de programas' pois para escrever um programa de computador necessita)se de estudo 6levamtamento de todas as necessidades e detalhes do #ue dever ser feito7 e metodologia 6regras b sicas #ue devero ser seguidas7! /em a aplicao de mtodos no ser poss+vel resolver grandes problemas' #uanto muito' pe#uenos problemas! As Sub3Rotinas Lo geral' problemas complexos exigem algoritmos complexos! 2as sempre poss+vel dividir um problema grande em problemas menores! Desta forma' cada parte menor tem um algoritmo mais simples' e estre trecho menor #ue chamado de sub) rotina! 0ma sub)rotina na verdade' um programa' e sendo um programa poder efetuar diversas opera;es computacionais 6entrada' processamento e sa+da7 e dever ser tratada como foram os programas pro(etados at este momento! &s sub) rotinas so utili,adas na diviso de algoritmos complexos' permitindo assim possuir a modulari,ao de um determinado problema' considerado grande e de dif+cil soluo! &o se trabalhar com esta tcnica' pode)se deparar com a necessidade de se dividir uma sub)rotina em outras tantas #uantas forem necess rias' buscando uma soluo mais simples de uma parte do problema maior! " processo de dividir sub)rotinas em outras denominado Mtodo de Refinamento Sucessivo! Procedimentos

34

0m procedimento um bloco de programa' contendo in+cio e fim e ser identificado por um nome' atravs do #ual ser referenciado em #ual#uer parte do programa principal ou do programa chamador da rotina! Ouando uma sub)rotina chamada por um programa' ela executada e ao seu trmino o controle de processamento retorna automaticamente para a primeira linha de instruo aps a linha #ue efetuou a chamada da sub)rotina! Procedimento Jnome do procedimentoI Rar Jvari veisI incio Jinstru;esI Him & melhor maneira de se entender como trabalhar com sub)rotinas fa,er a sua aplicao em um programa mais complexo! Para tanto' imagne o seguinte problema: $xerccio de AprendiFagem *ria um programa calculadora #ue apresente um menu de sele;es no programa principal! Este menu dever dar ao usu rio a possibilidade de escolher uma entre #uadra opera;es aritmticas! Escolhida a opo dese(ada' dever ser solicitada a entrada de dois n9meros' e processada a operao dever ser exibido o resultado! Lote #ue este programa dever ser um con(unto de F rotinas' uma principal e S secund rias! & rotina principal efetuar o controle sobre as S rotinas secund rias' #ue por sua ve, pediro a leitura de dois valores' faro a operao e apresentaro o resultado obtido! "bserve agora a codificao:

35

Programa calculadora 4ar "pcao : caractere asub)rotinas de c lculosb procedimento M"$/"2& var r' a' b : real in+cio Escreva 6=Motina de /oma>7 Escreva 6=Entre um valor para &: =7 Leia6&7 Escreva 6=Entre um valor para 5:>7 Leia657 M JK & E 5 Escreva 6=& soma de & com 5 K =' M7 Wim procedimento M"$//05$M&*&" var r' a' b : real in+cio Escreva 6=Motina de /ubtrao>7 Escreva 6=Entre um valor para &: =7 Leia6&7 Escreva 6=Entre um valor para 5:>7 Leia657 M JK & ) 5 Escreva 6=& subtrao de & com 5 K =' M7 Wim procedimento M"$20L$%PL%*&*&" var r' a' b : real in+cio Escreva 6=Motina de 2ultiplicao>7 Escreva 6=Entre um valor para &: =7 Leia6&7 Escreva 6=Entre um valor para 5:>7 Leia657 M JK & H 5 Escreva 6=& multiplicao de & com 5 K =' M7 Wim procedimento M"$D%4%/&" var r' a' b : real in+cio Escreva 6=Motina de Diviso>7 Escreva 6=Entre um valor para &: =7 Leia6&7 Escreva 6=Entre um valor para 5:>7 Leia657

36

M JK & . 5 Escreva 6=& Diviso de & com 5 K =' M7 Wim aPrograma Principalb inicio opcao JK =G> en#uanto 6opcao JI>F =7 faa escreva 6=B N &dio>7 escreva 6=C N /ubtrao>7 escreva 6=D N 2ultiplicao>7 escreva 6=S N Diviso>7 escreva 6=F N Wim do Programa>7 escreva 6=Escolha uma opo>7 leia 6opcao7 se opcao K =B> ento rotsoma fimXse se opcao K =C> ento rotsubtracao fimXse se opcao K =D> ento rotmultiplicacao fimXse se opcao K =S> ento rotdivisao fimXse fimXen#uanto fim! Obs9 "bserve #ue em cada sub)rotina possuia suas prprias vari veis' estas porm s podem ser acessadas dentro de cada procedimento' neste caso so chamadas de vari veis locais! Lo caso da vari vel opcao uma vari vel global' pode ser acessada em #ual#uer local do programa' tanto nos procedimentos como no programa principal! 1unes 0ma funo tambm um bloco de programa como so os procedimentos' contendo in+cio e fim e sendo identificado por um nome' atravs do #ual tambm ser referenciada em #ual#uer parte do programa principal! 0ma sub)rotina de funo na verdade muito parecida com uma sub)rotina de procedimento! & sintaxe em portugus estruturado ser tambm idntica ao estudo anterior! "bserve a seguir' o cdigo em portugus estruturado de uma funo! Portugus Estruturado 1uno Jnome da funoI 6pardmetros7 : Jtipo da funoI /ar Jvari veisI incio Jinstru;esI Him;

37

& sua principal diferena est no fato de uma funo retornar um determinado valor' #ue retornado no prprio nome da funo! Ouando se di, valor' devem ser levados em considerao os valores numricos' lgicos ou literais 6caracteres7! 4oc deve ter observado a presena de um item na sintaxe da funo' #ue so os pardmetros' #ue tanto podem ser referenciados nos procedimentos' mas ve(amos sua utilidade! ns pardmetros tm por finalidade servir como um ponto de comunicao bidirecional entre uma sub)rotina e o programa principal ou com uma outra sub)rotina hierar#uicamente de n+vel mais alto! Desta forma' poss+vel passar valores de uma sub)rotina ou rotina chamadora < outra sub)rotina e vice)versa' atravs do uso de pardmetros #ue podero ser formais ou reais! /ero considerados pardmetros formais #uando forem declarados atravs de vari veis (untamente com a identificao do nome da sub)rotina' os #uais sero tratados exatamente da mesma forma #ue so tratadas as vari veis globais ou locais! /ero considerados pardmetros Meais #uando estes substitu+rem os pardmetros formais' #uando a utili,ao da sub)rotina por um programa principal ou por uma rotina chamadora!

38

%tiliFao de 1unes *riaremos uma funo #ue calcule a rai, c9bica de um determinado n9mero inserido pelo usu rio! "bserve o Programa: Programa Mai,X*ubica 4ar % : %nteiro Wuno *ubo6L7 : Meal %nicio *ubo JK L H L H L Wim %nicio Leia 6%7 Escreva6*ubo6%77 Wim! "bserve #ue neste caso o pardmetro formal foi a vari vel = L >' en#uanto o pardmetro real foi a vari vel =% >!

39