LINGUGEM DE PROGRMÇÃO ESTRUTURD CPÍTULO 6 RRYS VETORES E MTRIZES trdução do termo rry pr língu portugues seri rrnjo. Em progrmção, empreg-se este termo pr representção de um vriável com diversos elementos ordendos segundo um seqüênci de índices, Fig. 24. 2 3 4,, 2, 3, 4,,, 2, 3, 4,,2,2 2, 2 3,2 4, 2 Figur 24 Forms de um rry Imginr que vetores e mtrizes em progrmção são comprdos às mtrizes e vetores tl qul são representdos mtemticmente é um grnde erro. mplitude d plicção de mtrizes e vetores em tecnologi d informção é muito mis mpl do que se pode imginr mtemticmente. Por exemplo, pode-se empregr um mtriz pr representção de um sl de tetro, onde o índice que represent linh e colun de um elemento representri fileir poderi ser por um letr e numerção d cdeir que um indivíduo estri sentdo. Este indivíduo poderi ser representdo pelo número do seu ingresso e seri o elemento representdo n mtriz. Um mtriz poderi representr disposição de mess em um resturnte, um tbuleiro de xdrez, etc.. Vetores podem representr lists de comprs, um list de procedimentos pr instlção de um softwre em um computdor, um pilh ou um fil de ddos estruturdos ou ordendos segundo um seqüênci lógic, um pilh de rquivos textos que represent um cix de entrd de mensgens de celulr, etc.. Em tods s lingugens de progrmção, vetores, são trtdos como rrys unidimensionis e mtrizes multidimensionis, ou sej, vetores possuem pens um índice pr representção de seus elementos, pois, estão todos dispostos em um únic colun ou linh. Mtrizes rrys multidimensionis possuem dois ou mis índices e depende d dimensão desejd e do tipo de elemento representdo. s vriáveis conhecids té este cpítulo erm denominds de vriáveis de tipos simples. Já os rrys são conhecidos, ssim como estruturs e enumerções, como vriáveis de tipos complexos. Ests vriáveis possuem crcterístics própris onde se destcm: Lingugem de Progrmção Estruturd 57
Lingugem de Progrmção Estruturd 58 Os elementos são trtdos pel su loclizção, ou sej, índice que represent posição d linh no cso do vetor e posição d linh e d colun pr mtrizes, figur 25; Os elementos são de um mesmo tipo, ou sej, um mtriz ou vetor não podem possuir tipos diferentes e identificção de um elemento se dá pelo identificdor do vetor ou d mtriz e os índices que representm su posição dentro d estrutur, figur 25. Observe d figurs 25-, dotndo-se um índice com vlor inicil zero, conforme o pdrão d lingugem C#, o elemento [3] seri o String São Pulo, já n figur 25-b, que represent um mtriz de imgem binári, dotndo-se o mesmo critério de índices pr loclizção de um vlor, no cso representdo por um posição em um linh e um colun, tem-se que [,]. 6. Vetores sintxe de declrção de um vetor em C# é: <tipobse> [ ] <nome>; Onde tipobse pode ser qulquer tipo de vriável, inclusive de outros tipos complexos que não serão trtdos nest postil, como enumerção e estrutur. Os vetores devem ser cridos ou declrdos e inicilizdos. inicilizção dos vetores pode ser feit de váris forms. Pode-se especificr o conteúdo completo do vetor ou e seu tmnho e usr plvr-chve new pr inicilizção de seus elementos. b legre Porto Florinópolis Curitib Pulo São Jneiro Rio de Horizonte Belo Vitóri Figur 25 Vetor de String representndo s cpitis do Sul e Sudeste do Brsil b Mtriz com elementos binários representndo imgem d letr B. b legre Porto Florinópolis Curitib Pulo São Jneiro Rio de Horizonte Belo Vitóri Figur 25 Vetor de String representndo s cpitis do Sul e Sudeste do Brsil b Mtriz com elementos binários representndo imgem d letr B.
Ex.: int [ ] myintrry 5, 9,, 2, 99; O vetor myintrry possui 5 elementos cd qul com um vlor de número inteiro tribuído ele. Dest form tem-se: myintrry[]5; myintrry[]9; myintrry[2]; myintrry[3]2; myintrry[4]99; Neste segundo exemplo: int [ ] myintrry new int[5]; todos os elementos do rry form inicilizdos com o vlor zero, devendo ser tribuído os vlores posteriormente. sintxe de declrção neste cso é: int [ ] myintrry new int[tmnho do Vetor]; Deve-se ressltr que em nenhum dos csos pode-se tribuir um número mior de vlores os elementos do vetor. tividde em Lbortório: Um fbricnte de motores desej vlir resistênci de um ds peçs componentes de seu motor em relção à tempertur. Pr tnto, diversos experimentos form relizdos e cd um deles consisti n medição d tempertur d peç em dois pontos diferentes. Um lgoritmo foi elbordo com o propósito de receber como entrd leitur de cd um dos termopres medidores de tempertur considerndo condução de clor e presentr como síd, de form ordend, mior e menor tempertur medid e médi entre s dus temperturs. Vle ressltr que o número de experimentos pr um peç é indefinido tendo como máximo 5 experimentos. SOLUÇÃO: Pr entrd de ddos temperturs medids empregremos dois vetores: T e T2 contendo 5 elementos cd. Deve-se ressltr que cso não utilizemos os demis elementos o espço reservdo pr eles não será utilizdo e ficrá sem conteúdo n memóri do computdor. Sendo ssim, sintxe de declrção destes vetores seri: flot [ ] T:new flot[5]; flot [ ] T2: new flot[5]; Lingugem de Progrmção Estruturd 59
Observe ind que serão cridos vetores com índices e dimensões correspondentes de form rmzenr os prâmetros de síd resultdos desejdos do lgoritmo: flot [ ] T_M:new flot[5]; flot [ ] T_m: new flot[5]; flot [ ] T_medi:new flot[5]; Um estrutur de repetição deve ser plicd com um vriável de controle i. Est vriável terá como função vrição do vlor do índice que represent posição do elemento no vetor. Com isto fz-se leitur dos vetores elemento elemento e os vetores que representrão o resultdo do lgoritmo terão índices correspondentes. Fic clro então que, se numerrmos os experimentos sendo o número máximo nexp, terímos índices vrindo de zero nexp- e cd um deles corresponderim um experimento. Início T[5],T2[5],T_M[5], T_m[5],T-medi[5], nexp,i nexp I ;i < nexp; V T[i], T2[i] F T_medi T[i]+T2[i]/2 F T[i]-T2[i] > V T_M[i] T2[i] T_m[i] T[i] T_M[i] T2[i] T_m[i] T[i] Temp C Temp2 C T Mior C T Menor C T Médi C I ;i < nexp; F V T[i],T2[i],T_M[i],T_m[i],T_medi[i] Fim Figur 26 lgoritmo pr vlição experimentl d tempertur médi de um utopeç - Fluxogrm Lingugem de Progrmção Estruturd 6
O lgoritmo resultnte em C# fic: sttic void Minstring[] rgs /* Cálculo ds temperturs máxims, mínims e médis em um conjunto de * experimentos relizdos em um indústri utomobilistic */ Declrção de vriáveis nexp - número de experimentos i - vriável de controle T[... nexp-] - Tempertur medid no termopr de número T2[... nexp-] - Tempertur medid no termopr de número 2 T_M[... nexp-] - Mior vlor de tempertur entre os termopres; T_m[... nexp-] - Menor vlor de tempertur entre os termopres; T_medi[... nexp-] - Tempertur médi entre os termopres. int i, nexp; flot[] T new flot[5]; flot[] T2 new flot[5]; flot[] T_M new flot[5]; flot[] T_m new flot[5]; flot[] T_medi new flot[5]; Entrd de Ddos Número de experimentos: nexp Console.Write**********************\n Digite o número de experimentos > ; nexp int.prseconsole.redline; for i ; i < nexp; i++ Entrd de Ddos: Temperturs nos termopres: T e T2 Console.WriteLine > Experimento n., i + ; Console.Write Digite tempertur em C do Primeiro Termopr > ; T[i] flot.prseconsole.redline; Console.Write Digite tempertur em C do Segundo Termopr > ; T2[i] flot.prseconsole.redline; T_medi[i] T[i] + T2[i] / 2; if T[i] - T2[i] > T_M[i] T[i]; T_m[i] T2[i]; else T_M[i] T2[i]; T_m[i] T[i]; Console.WriteLineT - C \tt - 2 C \tmior T C \tmenor T C \tt Médi C; for i ; i < nexp; i++ Console.Write \t\t \t\t2 \t\t3 \t\t4\n, T[i], T2[i], T_M[i], T_m[i], T_medi[i]; síd do lgoritmo é presentd n figur 27. Os resultdos referem-se os ddos de entrd tmbém presentdos n figur. TIVIDDE: Fç implementção do lgoritmo e fç su execução psso psso Tecl F. Observe o fluxo de execução do lgoritmo e concordânci entre s vriáveis de entrd e de síd. Fç um teste de mes e execute novmente o progrm. Fç um verificção se os resultdos obtidos pel execução do progrm estão de cordo com o teste de mes relizdo. Lingugem de Progrmção Estruturd 6
Figur 27 presentção do console resultnte d execução do lgoritmo. Exercícios Propostos : Elbore um lgoritmo que receb como entrd dois vetores e B cujos elementos são números inteiros. O lgoritmo deverá presentr como síd três vetores, C, D e E, sendo: C + B D B E * E 2 Elbore um lgoritmo que receb como entrd um vetor de crcteres contendo um plvr qulquer. O lgoritmo deverá presentr como síd est plvr invertid. 3 Elbore um lgoritmo que receb como entrd s componentes de dois vetores u x, y, z e v x, y, z. O lgoritmo deverá presentr como resultdo o vetor w 2 2 2 que é o vetor resultnte d som entre os vetores, bem como os módulos dos vetores, o produto esclr e o ângulo entre os vetores u e v. 4 Elbore um lgoritmo que clcule e exib os ângulos formdos por um vetor e os eixos de um sistem crtesino no R 3. Sugestão: Lembre-se que os eixos de um sistem podem ser representdos por versores e, o produto esclr entre esses vetores e versores resultm em um expressão mtemátic que permite obtenção do ângulo entre eles. 5 Elbore um lgoritmo que receb como entrd um string. Este lgoritmo deverá trnsformr este string em um vetor e seguir escrever est plvr invertid. Not: fç um teste ou investigção ds instruções bixo: nome_d_string.tochrrry ; nome_d_string.tolower ; nome_d_string.toupper ; nome_d_string.trimtrim_crcteres; Lingugem de Progrmção Estruturd 62