Logica para computacion Kindle

  • Published on
    13-Nov-2015

  • View
    13

  • Download
    1

Embed Size (px)

Transcript

<ul><li><p>5ARREGLOSY MTODOS</p><p>5.1 ARREGLOS</p><p>El arreglo es un tipo de dato estructurado formado por un conjuntode elementos de un mismo tipo de datos.</p></li><li><p>En los captulos anteriores hemos utilizado los tipos dedatos Entero, Real, Cadena, Carcter y Boolean, los cuales sonconsiderados como datos de tipo simple, puesto que una variableque se define con alguno de estos tipos slo puede almacenar unvalor a la vez, es decir, existe una relacin de uno a uno entrela variable y el nmero de elementos (valores) que es capaz dealmacenar.</p><p>En cambio, un dato de tipo estructurado como el arreglo,puede almacenar a ms de un elemento (valor) a la vez, con lacondicin de que todos los elementos deben ser del mismo tipo dedato, es decir, que se puede tener un arreglo de datos</p><p>LGICA PARA COMPUTACIN LEOBARDO LPEZ ROMN / FELIPE RAMREZ</p><p>208 5. ARREGLOS Y METODOS</p><p>enteros, reales, etc. Los arreglos se clasifican de acuerdo conel nmero de dimensiones que tienen. As, se tienen losunidimensionales (de una dimensin), los bidimensionales (dosdimensiones) y los multidimensionales (de ms de dosdimensiones); dentro de stos estn los tridimensionales (tresdimensiones), tetradimensionales (cuatro dimensiones), etc. Eneste libro se tratarn los unidimensionales, bidimensionales,tridimensionales y tetradimensionales.</p><p>1111 Arreglos unidimensionalesArreglos unidimensionalesArreglos unidimensionalesArreglos unidimensionales</p><p>El arreglo unidimensional o de una dimensin, est formado porun conjunto de elementos de un mismo tipo de datos que sealmacenan bajo un mismo nombre y se diferencian por la posicin</p></li><li><p>que tiene cada elemento dentro del arreglo de datos.</p><p>Veamos el siguiente ejemplo:</p><p>Se tiene el nmero de unidades producidas por un obrero encada uno de los 30 das del mes. Elaborar un algoritmo que permitaleer la produccin de cada uno de los 30 das, sin que se pierda laproduccin de ninguno de los das; esto es, se lee la produccin delprimer da, se lee la produccin del segundo da, sin que se pierda ladel primero, y as sucesivamente, al leer la produccin del da 30,que no se pierda la de ninguno de los 29 das anteriores.</p><p>a) Una opcin sera usar 30 variables, una para cada da, dela siguiente manera:</p><p>produccion1, produccion2, produccion3, --, produccion30</p><p>b) Otra opcin es usar un arreglo con una dimensin de30 elementos,</p><p>como se muestra en la siguiente figura:</p><p>En la figura tenemos un arreglo llamado produccion con 30elementos, el primero de ellos se identifica con la posicin 0, elsegundo tiene la posicin 1, el tercero la posicin 2, y</p></li><li><p>as sucesivamente hasta el elemento 30 que tiene la posicinnmero 29. As, la produccin del da 1 se almacena en elelemento nmero 0, la</p><p>ALFAOMEGA LGICA PARA COMPUTACIN LEOBARDO LPEZ ROMNALFAOMEGA</p><p>5. ARREGLOS Y MTODOS 209</p><p>produccin del da 2 se almacena en el elemento 1, y assucesivamente hasta la produccin del da 30 se almacena en elelemento 29.</p><p>Sin embargo, los lenguajes C, C++, Java y derivados tienen lapeculiaridad de que el primer elemento de un arreglo es elnmero 0 (cero), el segundo es el nmero 1, el tercero el 2, y assucesivamente hasta el elemento N-1; donde N es el nmero deelementos del arreglo. Por ejemplo, un arreglo de 50elementos tendr desde el elemento 0 hasta el elemento49; y un arreglo de 100 elementos tendr desde el elemento 0hasta el elemento 99. En la metodologa que se est presentandoen este libro se utilizar este concepto.</p><p>Definicin del arreglo unidimensionalDefinicin del arreglo unidimensionalDefinicin del arreglo unidimensionalDefinicin del arreglo unidimensional</p><p>Cuando se define un arreglo, es necesario hacerlo como unavariable. En la parte de declaraciones de variables se utiliza el</p></li><li><p>siguiente formato:</p><p>nombreVariable: Arreglo[Tamao] Tipo de dato</p><p>Donde:</p><p>nombreVariable Es el nombre de identificacin de la variable.Arreglo Es la palabra reservada que indica que lavariable es un arreglo.Tamao Es un nmero entero que indica lacantidad de</p><p>elementos que tendr el arreglo, por ejemplo, 10, 20,50, 100, 500, 1000, etctera.</p><p>Tipo de dato Es el tipo de dato que tendr el conjunto deelementos</p><p>del arreglo que se est definiendo, puede ser Entero,Real, Cadena, etctera.</p><p>Si aplicamos los conceptos anteriores para definir unarreglo que nos sirva para almacenar la produccin de los 30 dasdel mes, tenemos:</p><p>Declaraciones</p><p>Variables</p><p>produccion: Arreglo[30] Entero</p><p>LGICA PARA COMPUTACIN LEOBARDO LPEZ ROMN / FELIPE RAMREZELIPE RAMREZ</p><p>210 5. ARREGLOS Y METODOS</p></li><li><p> Produccin es el nombre de la variable que se est declarando Es un arreglo que contiene 30 elementos (del 0 al 29) Cada elemento del arreglo es un dato de tipo entero</p><p>Manejo de los elementos del arreglo unidimensionalManejo de los elementos del arreglo unidimensionalManejo de los elementos del arreglo unidimensionalManejo de los elementos del arreglo unidimensional</p><p>Cada elemento individual de un arreglo se relaciona con el nombrede la variable y un nmero que indica la posicin que ocupa elelemento dentro del arreglo. Dicho nmero se pone entre [ ] yse le llama subndice, ndice o suscrito. De acuerdo con loanterior, en nuestro ejemplo tenemos que:</p><p>El subndice puede ser un valor constante de tipo entero como: 0,1,2,.., 29. Tambin puede ser una variable de tipo entero, como:</p><p>produccion[i]</p><p>O bien, puede ser una expresin algebraica que d un resultadode tipo entero, como:</p><p>produccion[i+3]produccion[(i*4)-j]</p><p>Como toda variable, una de tipo arreglo puede usarsepara leer datos, asignarle valores mediante expresionesaritmticas, imprimir su contenido, formar parte de expresioneslgicas, etctera, por ejemplo:</p></li><li><p>produccion[0] = 20Leer produccion[i]Leer produccion[10]produccion[20] = produccion[0] + produccion[5]Imprimir produccion[20]</p><p>ALFAOMEGA LGICA PARA COMPUTACIN LEOBARDO LPEZ ROMN</p><p>ALFAOMEGA</p><p>5. ARREGLOS Y MTODOS 211</p><p>Elaborar un algoritmo que lea la produccin de un obrero en cadauno de los 30 das del mes y que lo imprima.</p><p>La lectura se podra hacer de la siguiente manera:</p><p>Leer produccion[0]Leer produccion[1]Leer produccion[29]</p><p>O bien, planteando un ciclo repetitivo, se hace la lectura ms</p><p>eficiente:</p><p>FOR i=0; i</p></li><li><p>Se plantea el ciclo desde que i tome el valor de 0 hasta 29, por cadavalor de i entra al ciclo; donde se solicita y lee la produccin del danmero i+1, es decir, la primera vez solicita la produccin del danmero 1 y lo lee en el elemento produccion[i], es decir, en elelemento 0 del arreglo produccin, la produccin del da 2 lo leeen el elemento 1, y as, hasta llegar a leer la produccin del da 30 enel elemento 29.</p><p>Por qu se solicita la produccin del da i+1 y se lee en elelemento i? Porque se tiene la produccin del da 1, del da 2, del da3 y as hasta la produccin del da 30; pero en el arreglo se tiene elelemento 0, el 1, el 2, el 3 y as hasta el elemento 29; y lo que sehace es: la produccin del da 1 leerla en el elemento 0, laproduccin del da 2 leerla en el elemento 1 y as, hasta laproduccin del da 30 leerla en el elemento 29.</p><p>El algoritmo completo quedara de la siguiente manera:</p><p>Algoritmo PRODUCCION 30 DiaS</p><p>Produccion</p><p>1. Mtodo principal</p><p>a. Declaraciones</p><p>Variables</p><p>produccion: Arreglo[30] Enteroi: Entero</p><p>b. FOR i=0; i</p></li><li><p>212 5. ARREGLOS Y METODOS</p><p>d. FOR i=0; i</p></li><li><p>Forma ms general de definir arreglosForma ms general de definir arreglosForma ms general de definir arreglosForma ms general de definir arreglos</p><p>Un arreglo puede definirse de una forma ms general utilizando ladeclaracin de tipos, para definir un nuevo tipo de dato de tipoarreglo, por ejemplo:</p><p>Declaraciones</p><p>Tipos</p><p>DiezEnteros = Arreglo[10] Entero</p><p>Se ha definido un nuevo tipo de dato llamado DiezEnteros,que es un arreglo de 10 elementos de tipo Entero cada uno.</p><p>Ahora, ese tipo de dato puede ser utilizado en la definicinde variables, por ejemplo:</p><p>Declaraciones</p><p>Variables</p><p>ALFAOMEGA LGICA PARA COMPUTACIN LEOBARDO LPEZ ROMN</p><p>ALFAOMEGA</p><p>5. ARREGLOS Y MTODOS 213</p><p>a: DiezEnteros</p><p>b: DiezEnteros</p><p>s: DiezEnteros</p><p>Otra forma de definir las variables anteriores:</p><p>Declaraciones</p><p>Variables</p><p>a, b, s: DiezEnteros</p><p>Donde:</p></li><li><p>a, b, s Son variables de tipo DiezEnteros, es decir, son</p><p>arreglos de 10 elementos de tipo Entero cada uno.</p><p>1.11.11.11.1 Ejercicios resueltos para unidimensionalesEjercicios resueltos para unidimensionalesEjercicios resueltos para unidimensionalesEjercicios resueltos para unidimensionalesEjercicioEjercicioEjercicioEjercicio 1.1.11.1.11.1.11.1.1Elaborar un algoritmo que lea el nombre de un vendedor y lasventas realizadas en cada uno de los 30 das del mes, que lasalmacene en un arreglo y que imprima el reporte siguiente:</p><p>Nombre del vendedor : XXXXXXXXXXXXXXXXXXXXXXXXXXVenta del da 1: 999,999.99Venta del da 2 : 999,999.99</p><p>Venta del da 30: 999,999.99</p><p>Venta total del mes: 9,999,999.99</p><p>Donde la venta total del mes se calcula mediante la suma</p><p>de las ventasrealizadas en cada uno de los 30 das.</p><p>(Primero hgalo usted...despus compare la solucin)</p><p>Algoritmo VENTAS MES</p><p>Venta</p><p>1. Mtodo principal</p><p>a. Declaraciones</p><p>Variables</p><p>LGICA PARA COMPUTACIN LEOBARDO LPEZ ROMN / FELIPE RAMREZELIPE RAMREZ</p></li><li><p>214 5. ARREGLOS Y METODOS</p><p>nombreVend: Cadena</p><p>ventas: Arreglo[30] Reali: Entero</p><p>totVenta: Real</p><p>b. Solicitar nombre del vendedor</p><p>c. Leer nombreVend</p><p>d. FOR i=0; i</p></li><li><p>las ventasde los 30 das</p><p>b. Se solicita el nombre del vendedorc. Se lee en nombreVend</p><p>d. Inicia ciclo FOR desde i=0 hasta 29 con incrementos de 11. Solicita la venta del da nmero i+12. Se lee en ventas[i]</p><p>e. Fin del FOR</p><p>f. Inicia totVenta en 0g. Imprime nombreVendh. Inicia ciclo FOR desde i=0 hasta 29 con incrementos de 1</p><p>1. Imprime ventas[i]2. Incrementa totVenta con ventas[i]</p><p>i. Fin del FORj. Imprime totVentak. Fin del Mtodo principal</p><p>ALFAOMEGA LGICA PARA COMPUTACIN LEOBARDO LPEZ ROMN</p><p>ALFAOMEGA</p><p>5. ARREGLOS Y MTODOS 215</p><p>Luego se tiene el fin del algoritmo.</p><p>EjercicioEjercicioEjercicioEjercicio 1111... .1111.2.2.2.2</p><p>Elaborar un algoritmo que lea los elementos de dos arreglos,cada uno con 10 nmeros enteros. Calcular los elementos deun tercer arreglo, sumando los elementos correspondientes delos dos primeros, de la siguiente manera: que se sume elelemento 1 del primer arreglo y el 1 del segundo y que elresultado se almacene en el 1 del terceroy as sucesiva- mente. Adems, se requiere que al final imprima los</p></li><li><p>tres arreglos de la siguiente forma:</p><p>(Primero hgalo usted...despus compare la solucin)</p><p>Algoritmo SUMA ARREGLOS</p><p>SumaArreglos</p><p>1. Mtodo principal</p><p>a. Declaraciones</p><p>Variables</p><p>a, b, s: Arreglo[10] Enteroi: Entero</p><p>b. FOR i=0; i</p></li><li><p>LGICA PARA COMPUTACIN LEOBARDO LPEZ ROMN / FELIPE RAMREZELIPE RAMREZ</p><p>216 5. ARREGLOS Y METODOS</p><p>En el Mtodo SumaArreglos, se tienen las acciones:</p><p>a. Se declaran las variablesa, b, s como arreglos de 10 elementos cada uno.i : Entero</p><p>b. Inicia ciclo FOR desde i=0 hasta 9 con incrementos de 11. Solicita elemento i del arreglo a2. Se lee en a[i]3. Solicita elemento i del arreglo b4. Se lee en b[i]5. Calcula s[i]=a[i]+b[i]</p><p>c. Fin del FORd. Imprime encabezadoe. Inicia ciclo FOR desde i=0 hasta 9 con incrementos de 1</p><p>1. Imprime a[i], b[i], s[i]f. Fin del FORg. Fin del Mtodo principal</p><p>Luego se tiene el fin del algoritmo.</p><p>EjercicioEjercicioEjercicioEjercicio 111 1... .1111.3.3.3.3</p><p>Elaborar un algoritmo que permita leer un vector de 10 nmeros enun arreglo A de 10 elementos, lo mismo para un arreglo B; calcular eimprimir el producto de A B. Para obtener el producto de dos</p></li><li><p>vectores se multiplica el elemento 1del vector A por el elemento1del vector B, el 2 de A por el 2 de B, y as sucesivamente,obtenindose la sumatoria de los productos; el resultado no es unvector, sino un valor simple.</p><p>(Primero hgalo usted...despus compare la solucin)</p><p>Algoritmo PRODUCTO DE VECTORES</p><p>ProductoVectores</p><p>1. Mtodo principal</p><p>a. Declaraciones</p><p>Variables</p><p>vectorA, vectorB: Arreglo[10] Enteror, producto: Entero</p><p>b. FOR r=0; r</p></li><li><p>vectorB[r])i. ENDFOR</p><p>j. Imprimir productok. Fin Mtodo principal</p><p>Fin ProductoVectores</p><p>Fin</p><p>En el Mtodo ProductoVectores, se tienen las acciones:</p><p>a. Se declaran las variablesb. Inicia ciclo FOR desde r=0 hasta 9</p><p>1. Solicita vectorA[r]2. Se lee en vectorA[r]</p><p>c. Fin del FORd. Inicia ciclo FOR desde r=0 hasta 9</p><p>1. Solicita elemento r del vectorB2. Se lee en vectorB[r]</p><p>e. Fin del FORf. Imprime encabezadog. Inicia producto en 0h. Inicia ciclo FOR desde r=0 hasta 9</p><p>1. Imprime vectorA[r], vectorB[r]2. Incrementa producto con (vectorA[r] * vectorB[r])</p><p>i. Fin del FORj. Imprime productok. Fin del Mtodo principal</p><p>Luego se tiene el fin del algoritmo.</p><p>LGICA PARA COMPUTACIN LEOBARDO LPEZ ROMN / FELIPE RAMREZELIPE RAMREZ</p></li><li><p>218 5. ARREGLOS Y METODOS</p><p>2 Arreglos bidimensionales2 Arreglos bidimensionales2 Arreglos bidimensionales2 Arreglos bidimensionales</p><p>El arreglo bidimensional o de dos dimensiones, est formado porun conjunto de elementos de un mismo tipo de dato que sealmacenan bajo un mismo nombre y que al igual que en elunidimensional, se diferencian por la posicin que tiene cadaelemento dentro del arreglo de datos, con la aclaracin de que ladisposicin de los elementos es en forma rectangular o cuadrada,donde la primera dimensin est dada por los renglones, y lasegunda, por las columnas. Un arreglo de este tipo, tambinconocido como matriz, es de orden M N, donde M es elnmero de renglones y N el nmero de columnas, es decir, en formade tabla.</p><p>Un arreglo de orden 4 5 tiene 4 renglones y 5 columnas, es decir,cada rengln se divide en 5 columnas, como se muestra acontinuacin:</p></li><li><p>Para esta matriz tenemos:</p><p>Es decir, el elemento rengln 0, columna 0; el elemento rengln0, columna 1; y as hasta el elemento rengln 3, columna 4.</p><p>ALFAOMEGA LGICA PARA COMPUTACIN LEOBARDO LPEZ ROMNALFAOMEGA</p><p>5. ARREGLOS Y MTODOS 219</p><p>DefiniciDefiniciDefiniciDefinicin nnn deldeldeldel arregloarregloarregloarreglo bidimensionalbidimensionalbidimensionalbidimensional</p><p>Al definir un arreglo es necesario hacerlo como una variable,</p><p>por lo cual en la parte de declaraciones de variables se utiliza elsiguiente formato:</p><p>nombreArreglo: Arreglo[tamRenglones][tamColumnas] Tipo</p><p>de dato</p><p>Donde:</p></li><li><p>nombreArreglo Es el nombre de identificacin de la variable.</p><p>Arreglo Es la palabra reservada que indica que lavariable es un tamRenglonesarreglo.Indica el nmero de renglones que tendr el arreglo. tamColumnasIndica el nmero de columnas que tendr el arreglo. Tipo de datoEs el tipo de dato que tiene el conjunto de elementos</p><p>del arreglo que se est definiendo; pueden ser Entero, Real,Cadena, etctera.</p><p>Si aplicamos los conceptos del formato anterior para definir lamatriz de orden 4 5 de nmeros enteros, tenemos:Declaraciones</p><p>Variables</p><p>matriz: Arreglo[4][5] Entero</p><p> Matriz es el nombre de la variable Es un arreglo que contiene 4 renglones y 5 columnas (20elementos) Cada elemento del arreglo es un dato de tipo entero</p><p>Manejo de los elementos del arreglo bidManejo de los elementos del arreglo bidManejo de los elementos del arreglo bidManejo de los elementos del arreglo bidimensionalimensionalimensionalimensional</p><p>Para relacionar cada elemento individual de una matriz se usandos subndices; el primero indica el rengln y el segundo la columna,como sigue:</p><p>matriz[renglon][columna]</p><p>Donde:</p></li><li><p>renglon indica el nmero de rengln y columna indica el nmerode columna que ocupa el elemento relacionado.</p><p>LGICA PARA COMPUTACIN LEOBARDO LPEZ ROMN / FELIPE RAMREZELIPE RAMREZ</p><p>220 5. ARR...</p></li></ul>