MC Bertha López Azamar - UNPA

unpa.edu.mx
  • No tags were found...

MC Bertha López Azamar - UNPA

M. C. Bertha López AzamarUniversidad del PapaloapanMateria:Programación EstructuradaTema:ArreglosEjemploExpositor:M. C. Bertha López AzamarTuxtepec, Oaxaca.Enero/2005-20061


ArreglosM. C. Bertha López AzamarSe requiere realizar un programaque permita almacenar el númerode afectados en desastres naturales(sismos, huracanes, inundaciones,incendios) en cada uno de los mesesdel año 2005.2


M. C. Bertha López AzamarSe requiere realizar un programaque permita almacenar el númerode afectados en desastres naturales(sismos, huracanes, inundaciones,incendios) en cada uno de los mesesdel año 2005.¿Qué dato se almacenara en términos generales?Número de afectados3


M. C. Bertha López AzamarSe requiere realizar un programaque permita almacenar el númerode afectados en desastres naturales(sismos, huracanes, inundaciones,incendios) en cada uno de los mesesdel año 2005.¿Cómo se van a organizar los datos?Por desastre natural en cada mes de año4


Se organiza con un arreglo bidimensional.El enunciado dice tipos de desastres:M. C. Bertha López AzamarSe requiere realizar un programa que permita almacenar elnúmero de afectados en desastres naturales (sismos, huracanes,inundaciones, incendios) en cada uno de los meses del año 2005.Una dimensión para cada tipo de desastre natural, unrenglón o una columna, según se desee.También nos dice todos los meses del año 2005.Se requiere realizar un programa que permita almacenar elnúmero de afectados en desastres naturales (sismos, huracanes,inundaciones, incendios) en cada uno de los meses del año 2005.La otra dimensión es entonces para los meses del año.Un renglón o una columna para cada mes.5


mesMeses del año 2005M. C. Bertha López Azamardes0 1 2 3 4 5 6 7 8 9 10 11012Desastre naturalessismohuracaninundación3incendioeneroFeb.Mayo.AbrilMarzo.Junio.JulioOct.Sep.AgostoNovDic.6


desmesMeses del año 20050 1 2 3 4 5 6 7 8 9 10 11M. C. Bertha López AzamarEl arreglo dedeclara:012Desastre naturalessismohuracaninundaciónint INEGI[4][12];incendio3eneroMarzo.Feb.Junio.Mayo.AbrilAgostoJulioOct.Sep.NovDic.Para obtener por ejemplo, la cantidad de afectados porinundaciones en el mes de agosto, ‘inundaciones’ es el tercerdesastre pero se encuentra en la posición 2, agosto es el mes 8,pero se encuentra en la posición 7; la referencia en el arregloes:INEGI[2][8]7


M. C. Bertha López AzamarInformación (además del dato guardado), que puedeobtenerse con los datos guardados:Cantidad de afectados:• en el año.• promedio de afectados anual.• en todos los desastres en un mes determinado.• promedio en un mes.• por desastre en todos los meses.• mes con mayor cantidad de afectados.• mes con menor cantidad de afectados.• en un desastre especifico en todos los meses (en el año.)• promedio en un desastre en el año•por mes en general en todos los desastres.• desastre con mayor cantidad de afectados.• desastre con menor cantidad de afectados.8


M. C. Bertha López AzamarPuedo tener un menú (con submenús), para manejar lainformación:Menú principal:1. Captura de datos2. Consulta de informaciónSubmenú para capturar los datos:1.- Por desastre en un mes especìfico2.- De un desastre especifico todos los meses del año3.- En un mes especifico todos los desastresEn todo año:4.- por mes5.- por desastre9


Submenú para consulta de información:Cantidad de afectados:1. En el año.2. Promedio de afectados anual.3. En todos los desastres en un mes determinado.4. Promedio en un mes.5. En todos los desastres en cada uno de los meses6. Mes con mayor cantidad de afectados.7. Mes con menor cantidad de afectados.8. En un desastre especifico en el año.9. Promedio en un desastre en el año.10. Por cada uno de los desastre en el año.11. Desastre con mayor cantidad de afectados.12. Desastre con menor cantidad de afectados.M. C. Bertha López Azamar10


M. C. Bertha López AzamarPara la opción 1 del submenú capturar (1.Por desastre en unmes especifico), las pantallas a mostrar son:1 Captura de afectados pordesastre en un mes específico:21. Sismo2.Huracán3.Inundación4.IncendioElija un desastre:1. Enero 7. Julio2. Febrero 8. Agosto3. Marzo 9. Septiembre4. Abril 10. Octubre5. Mayo 11.Noviembre6. Junio 12. DiciembreElija un mes:3Número de afectados:11


M. C. Bertha López AzamarPara la opción 1 del submenú capturar (1.Por desastre enun mes especifico), lo ideal para estructurar el código es:1.- Presentarle al usuario un menú de los desastres, para queelija el tipo desastre, haciendo coincidir el orden del menú conel orden de la información guardada en el arreglo. Ejemplo:1. Sismo2.Huracán3.Inundación4.Incendio1 en el menú posición 0 en el arreglo2 en el menú posición 1 en el arreglo3 en el menú posición 2 en el arreglo4 en el menú posición 3 en el arreglo2. Presentar al usuario otro menú con los meses de año paraque elija el mes a capturar.Con esto ya se tiene una referencia a una posiciónespecífica de memoria, recordando restar en uno laposición del renglón y la columna. Para:3.- leer el valor.12


M. C. Bertha López AzamarPara la opción 2 del submenú capturar (2. De un desastreespecífico todos los meses del año), las pantallas amostrar son:1Captura de afectados pordesastre en todos los mes1. Sismo2.Huracán3.Inundación4.IncendioElija un desastre:2MesEnero:Febrero:Marzo:Abril:Mayo:Junio:Num. afectados3 Julio:Agosto:Septiembre:Octubre:Noviembre:Diciembre:13


M. C. Bertha López AzamarPara la opción 2 del submenú capturar (2. De un desastreespecífico todos los meses del año), lo ideal paraestructurar el código es:1.- Presentarle al usuario un menú de los desastres, para queelija el tipo desastre, haciendo coincidir el orden del menú conel orden de la información guardada en el arreglo. Ejemplo:1. Sismo2.Huracán3.Inundación4.Incendio1 en el menú posición 0 en el arreglo2 en el menú posición 1 en el arreglo3 en el menú posición 2 en el arreglo4 en el menú posición 3 en el arregloCon esto ya se tiene la posición del renglón (recordarrestar en uno lo leído).2.- Emplear un for que permita controlar el índice de lacolumna y vaya leyendo cada mes según avance en el for.Obviamente para ir mostrando de que mes se trata, puedeimplementar un switch que imprima en cada case solo elnombre del mes en cuestión.14


M. C. Bertha López AzamarPara la opción 3 del submenú capturar (3. En un mesespecifico todos los desastres), las pantallas a mostrarson1Captura de afectados por mes entodos los desastres:1. Enero 7. Julio2. Febrero 8. Agosto3. Marzo 9. Septiembre4. Abril 10. Octubre5. Mayo 11. Noviembre6. Junio 12. DiciembreElija un mes:2DesastreSismoHuracánInundaciónIncendioNum. afectados15


M. C. Bertha López AzamarPara la opción 3 del submenú capturar (3. En un mesespecifico todos los desastres), lo ideal para estructurarel código es:1.- Presentarle al usuario un menú de los meses del año, paraque elija el mes, haciendo coincidir el orden del menú con elorden de la información guardada en el arreglo. Ejemplo:1. Enero2. Febrero…12. Diciembre1 en el menú posición 0 en el arreglo2 en el menú posición 1 en el arreglo.….uno para cada opción …..12 en el menú posición 11 en el arregloCon esto ya se tiene la posición de la columna (recordarrestar en uno lo leído).2.- Emplear un for que permita controlar el índice del renglón yvaya leyendo cada desastre según avance en el for. Obviamentepara ir mostrando de que desastre se trata, puede implementarun switch que imprima en cada case solo el nombre del desastreen cuestión.16


M. C. Bertha López AzamarPara la opción 4 del submenú capturar (4. Todo el año pormes), las pantallas a mostrar son:1 Captura de afectados en el año en todos los desastres:Mes: EneroDesastre Num. afectadosSismoHuracánInundaciónIncendioMes: FebreroDesastreSismoHuracánInundaciónIncendioNum. afectados17


M. C. Bertha López AzamarPara la opción 4 del submenú capturar (4. Todo el año pormes), lo ideal para estructurar el código es:1. Para localizar la posición del dato a leer se emplean dos foranidados. Como se va a leer por mes, el for que controle elíndice del mes (es decir el de la columna) debe ser el externo,y el for que controla el índice del desastre va a ser el interno.2. Obviamente para ir mostrando de que mes se trata, puedeimplementar un switch que imprima en cada case solo elnombre del mes en cuestión. (esto va en el cuerpo del forexterno).3. Igualmente para ir mostrando de que desastre se trata, puedeimplementar un switch que imprima en cada case solo elnombre del desastre en cuestión. (esto va en el cuerpo del forinterno).4. En el for interno se leerá el valor y se guardará en la posicióncorrespondiente del arreglo.19


M. C. Bertha López AzamarPara la opción 5 del submenú capturar (5. Todo el año pordesastre), las pantallas a mostrar son:1 Captura de afectados en el año en Mes todos los desastres: Num. afectadosDesastre: SismoMesNum. afectadosEnero:Febrero:Marzo:Abril:Mayo:Junio:Julio:Agosto:Septiembre:Octubre:Noviembre:Diciembre:20


M. C. Bertha López AzamarY así se van pidiendo cada uno se los desastres, hasta llegar alúltimo que es incendios2 Captura de afectados en el año en Mes todos los desastres: Num. afectadosDesastre: IncendioMesNum. afectadosEnero:Febrero:Marzo:Abril:Mayo:Junio:Julio:Agosto:Septiembre:Octubre:Noviembre:Diciembre:21


M. C. Bertha López AzamarPara la opción 5 del submenú capturar (5. Todo el año pordesastre), lo ideal para estructurar el código es:1. Para localizar la posición del dato a leer se emplean dos foranidados. Como se va a leer por desastre, el for que controle elíndice del desastre (es decir el de la columna) debe ser elexterno, y el for que controla el índice del mes va a ser elinterno.2. Obviamente para ir mostrando de que desastre se trata, puedeimplementar un switch que imprima en cada case solo elnombre del desastre en cuestión. (esto va en el cuerpo del forexterno).3. Igualmente para ir mostrando de que mes se trata, puedeimplementar un switch que imprima en cada case solo elnombre del mes en cuestión. (esto va en el cuerpo del forinterno).4. En el for interno se leerá el valor y se guardará en la posicióncorrespondiente del arreglo.22


M. C. Bertha López AzamarEn el caso del submenú de consultas de información parala opción 1: Número de afectados en el añoLa cantidad a mostrar se obtiene: realizando una suma(acumular) del contenido de cada una de las posiciones delarreglo, y debe realizarse la operación dentro de dos for:•uno que permita mover el índice de los renglones y•otro para el índice de las columnas.En el caso del submenú de consultas de información para laopción 2: Promedio de afectados anualLa cantidad a mostrar se obtiene: realizando una suma(acumular) del contenido de cada una de las posiciones delarreglo, y debe realizarse la operación dentro de dos for:•uno que permita mover el índice de los renglones y•otro para el índice de las columnas.Y luego se debe dividir ese resultado entre (12 por se lacantidad de meses).23


M. C. Bertha López AzamarSi analizamos lo anterior, vemos claramente que el emplearfunciones facilitará el manejo del código:ya que si tengo el total de afectados anual, lo que requierorealizar es una división únicamente para obtener elpromedio.Así, el obtener una información nos sirve para obtenerposteriormente otra.O también, la forma de obtener un tipo de dato por ejemplode un mes, es la misma que la que se requiere paraobtener los de todos los meses, por lo tanto, se puederealizar una función que realice la operación más sencilla yluego reutilizarla para realizar otra más compleja. Todo escuestión de reacomodar el código.24


M. C. Bertha López AzamarEn el caso del submenú de consultas de información para laopción 3: Número de afectados en todos los desastres en unmes determinadoLa cantidad a mostrar se obtiene: realizando una suma(acumular) del contenido de cada una de las posiciones delarreglo en una columna específica, para lo cual:primero se le debe pedir al usuario de que mes quiereobtener el dato, esto es, mostrarle un menú con los meses,para que elija una opción y ocuparla (restandole un 1 antes)como la referencia de la columna,luego emplear un for para recorrer los renglones uno poruno e ir sumando el valor.25


M. C. Bertha López AzamarEn el caso del submenú de consultas de información para laopción 4: promedio de afectados en todos los desastres en unmes determinado.La cantidad a mostrar se obtiene: realizando una suma(acumular) del contenido de cada una de las posiciones delarreglo en una columna específica, es decir, se reutiliza lafuncionalidad de la opción 3 y la cantidad resultante sedivide entre 4 por ser el número de desastres.26


M. C. Bertha López AzamarEn el caso del submenú de consultas de información para laopción 5: Número de afectados en todos los desastres en cadauno de los meses.La cantidad a mostrar se obtiene: realizando una suma(acumular) del contenido de cada una de las posiciones delarreglo columna por columna (es decir, se reutiliza lafuncionalidad de la opción 3), mostrando la suma de cadacolumna. Es decir:Se emplea un for el cual se encargará de controlar elíndice para la columna (mes),dentro del for se realizará la llamada a la función quese realiza con la explicación de la opción 3.Al ir obteniendo cada valor, se muestra en pantalla,obviamente se requiere mostrar de que mes se trata,puede implementar un switch que imprima en cada casesolo el nombre del mes en cuestión (esto ya se mencionoanteriormente, por lo que se trata de una reutilización deuna función).27


M. C. Bertha López AzamarEn el caso del submenú de consultas de información para laopción 6: Mes con mayor cantidad de afectados.Con la explicación de la opción 5, ya se detallo como encontrarel total de afectados de cada mes, así, para esta opción serequiere reutilizar el mismo funcionamiento.Ahora, para encontrar el valor mayor:Puede optarse por tener una variable (ej. Mayor) quepermita guardar valor mayor (que permita compararbuscando el número mayor), la cual se debe inicializarcon 0, así:•al obtener el valor de cada mes,•se compara contra el contenido de la variable(Mayor),•si es mayor se reemplaza el contenido de la variable(mayor) por el nuevo valor (el del resultado del mes).28


M. C. Bertha López AzamarEn el caso del submenú de consultas de información para laopción 7: Mes con menor cantidad de afectados.Lo mismo que para la opción 6 pero ahora con una variableque permita comparar buscando el número menor:Con la explicación de la opción 5, ya se detallo comoencontrar el total de afectados de cada mes, así, para estaopción se requiere reutilizar el mismo funcionamiento.Ahora que, para encontrar el valor menor:Puede optarse por tener una variable (ejm. Mayor) quepermita guardar valor menor (que permita compararbuscando el número menor), la cual se debe inicializarcon 0, así:•al obtener el valor de cada mes,•se compara contra el contenido de la variable(Mayor),•si es menor se reemplaza el contenido de la variable(mayor) por el nuevo valor (el del resultado del mes).29


M. C. Bertha López AzamarEn el caso del submenú de consultas de información para laopción 8: Número de afectados en un desastre específico en elaño.La cantidad a mostrar se obtiene: realizando una suma(acumular) del contenido de cada una de las posiciones delarreglo en un renglón específico, para lo cual:primero se le debe pedir al usuario el tipo de desastredel que quiere obtener el dato, esto es, mostrarle un menúcon los tipos de desastre, para que elija una opción yocuparla (restandole un 1 antes) como la referenciadel renglón.luego emplear un for para recorrer las columnas una poruna e ir sumando el valor.30


M. C. Bertha López AzamarEn el caso del submenú de consultas de información para laopción 9: promedio de afectados en un desastre en el año.La cantidad a mostrar se obtiene: realizando una suma(acumular) del contenido de cada una de las posiciones delarreglo en un renglón específico, es decir, se reutiliza lafuncionalidad de la opción 8 y la cantidad resultante sedivide entre 12 por ser el número de meses.31


M. C. Bertha López AzamarEn el caso del submenú de consultas de información para laopción 10: Número de afectados por cada uno de losdesastres en el año.La cantidad a mostrar se obtiene: realizando una suma(acumular) del contenido de cada una de las posiciones delarreglo renglón por renglón (es decir, se reutiliza lafuncionalidad de la opción 8), mostrando la suma de cadarenglón. Es decir:Se emplea un for el cual se encargará de controlar elíndice para el renglón (desastre),dentro del for se realizará la llamada a la función quese realiza con la explicación de la opción 8.Al ir obteniendo cada valor, se muestra en pantalla,obviamente se requiere mostrar de que desastre se trata,puede implementar un switch que imprima en cada casesolo el nombre del desastre en cuestión (esto ya semenciono anteriormente, por lo que se trata de unareutilización de una función).32


M. C. Bertha López AzamarEn el caso del submenú de consultas de información para laopción 11: Desastre con mayor cantidad de afectados.Con la explicación de la opción 10, ya se detallo como encontrarel total de afectados de cada desastre, así, para esta opción serequiere reutilizar el mismo funcionamiento.Ahora, para encontrar el valor mayor:Puede optarse por tener una variable (ejm. Mayor) quepermita guardar valor mayor (que permita compararbuscando el número mayor), la cual se debe inicializarcon 0, así:• al obtener el valor de cada desastre,• se compara contra el contenido de la variable(Mayor),• si es mayor se reemplaza el contenido de la variable(mayor) por el nuevo valor (el del resultado deldesastre).33


M. C. Bertha López AzamarEn el caso del submenú de consultas de información para laopción 12: Desastre con menor cantidad de afectados.Lo mismo que para la opción 11 pero ahora con una variableque permita comparar buscando el número menor:Con la explicación de la opción 10, ya se detallo comoencontrar el total de afectados de cada desastre, así, paraesta opción se requiere reutilizar el mismo funcionamiento.Ahora que, para encontrar el valor menor:Puede optarse por tener una variable (ejm. Mayor) quepermita guardar valor menor (que permita compararbuscando el número menor), la cual se debe inicializar con0, así:•al obtener el valor de cada desastre,•se compara contra el contenido de la variable (Mayor),•si es menor se reemplaza el contenido de la variable(mayor) por el nuevo valor (el del resultado deldesastre).34

More magazines by this user
Similar magazines