version2libro1.doc

96
Unidad 1. Resolución de problemas I.1 Introducción Todos los días resolvemos problemas, aún sin ser consiente de esto. Comúnmente tenemos que definir el problema, decidir con que información necesitamos trabajar y cuales deben ser los resultados esperados. En particular, los ingenieros en ciencias de la computación son resolvedores o solucionadores de problemas computacionales. El Ingeniero en Computación (ver figura 1) es un profesional que diseña, implanta y desarrolla soluciones computacionales integradas, lo que implica la elaboración de planes, el desarrollo de sistemas y la adaptación de nuevas tecnologías en su campo de acción profesional y laboral. En el ámbito computacional obtener una solución, muchas veces, implica escribir un programa. El proceso de programar lo podemos ver resumido en la figura 1.1. Este proceso se encuentra dividido en dos fases principales: Fase de resolución de problemas o Análisis y especificación: Entendimiento (definición) del problema e identificación de cual debe ser la solución. o Solución general (algoritmo): Especifica los objetos (elementos) y sus interacciones para resolver el problema o Verificación: Sigue los pasos exactamente para ver si la solución realmente resuelve el problema.

Upload: daniel-alonso

Post on 18-Aug-2015

220 views

Category:

Documents


1 download

TRANSCRIPT

Unidad 1. Resolucin de problemasI.1 IntroduccinTodoslosdas resolvemosproblemas,ansinser consientede esto. Comnmentetenemos que definir el problema, decidir con que informacin necesitamos trabajar ycuales deben ser los resultados esperados. En particular, los ingenieros en ciencias dela computacin son resolvedores o solucionadores de problemas computacionales.El ngeniero en Computacin (ver figura 1) es un profesionalque disea, implanta ydesarrollasolucionescomputacionalesintegradas, loqueimplicalaelaboracindeplanes, el desarrollo de sistemas y la adaptacin de nuevas tecnologas en su campode accin profesional y laboral.En el mbito computacional obtener una solucin, muchas veces, implica escribir un programa.El proceso de programar lo podemos ver resumido en la figura 1.1. Este proceso se encuentradividido en dos fases principales: Fase de resolucin de problemaso Anlisis y especificacin: Entendimiento (definicin) del problema eidentificacin de cual debe ser la solucin.o Solucin general (algoritmo): Especifica los objetos (elementos) y susinteracciones para resolver el problemao Verificacin: Sigue los pasos exactamente para ver si la solucin realmenteresuelve el problema. Fase de implementacino Solucin concreta: Traduce la especificacin de objetos y la solucingeneral en un lenguaje de programacin.o Pruebas: Se ejecuta el programa y se checa los resultados. Si seencuentranerrores, seanalizael programaylasolucingeneral paradeterminar la causa de los errores y entonces se hacen las correcciones. Figura 1.1 Proceso de ProgramarAntes que se busque la solucin, se debe entender elproblema. As que aqu cabepreguntarnos: qu es un problema?Qu es un problema?SegnNewell ySimonunproblemasedefinecomo"unasituacinenlacual unindividuodeseahacer algo, perodesconoceel cursodelaaccinnecesariaparalograr lo que quiereOtra definicin es la dada por Chi y Glaser, la cual lo define"como una situacin en lacual unindividuoactaconel propsitodealcanzar unametautilizandoparaelloalguna estrategia en particularFigura 1.2 - Qu es un problema?Cuandohacemosreferenciaalametaoalograr loquesequiere, nosestamosrefiriendo a lo que se desea alcanzar:la solucin. La meta o solucin est asociadacon un estado inicial y la diferencia que existe entre ambos se denomina "problema.Lasactividadesllevadasacabopor lossujetostienenpor objetooperar sobreelestadoinicial paratransformarloenmeta. Deestamanera, sepodradecirquelosproblemas tienen cuatro componentes (Mayer, 1983).1) las metas2) los datos3) las restricciones4) los mtodos Figura 1.3 - Los componentes de un problemaConsideremosel siguienteejemplo: "Anitatieneunamuecayquierevestirlaconpantalnyblusa. Tienecuatropantalones: rojo, blanco, azul ynegroytienetresblusas: verde, amarillo y rosado. Ella quiere hacer diferentes combinaciones con todoslos pantalones y las blusas verde y rosada. Cuntas combinaciones diferentes puedehacer?Para nuestro ejemplolameta,consisteen sabercuntascombinacionesdiferentespuede hacer Anita con los pantalones y las blusas. Los datos son4 pantalones y 3blusas. Las restriccionesson que Anita solo quiere utilizar 2 de las 3 blusas: la verdeyrosada. Enconsecuencianotodaslasblusasvanaser consideradasparalascombinaciones. Por ltimo, los mtodos son las operaciones requeridas para obtenerel nmero de combinaciones.Unavezentendidoquesunproblema, el siguientepasoescomprender cmopodemos resolverlo, es decir, qu es la resolucin de problemas.Qu es la resolucin de problemas?SegnDijkstra (1991), laresolucindeproblemases unprocesocognoscitivocomplejoqueinvolucraconocimientoalmacenadoenlamemoriaacortoyalargoplazo. Polya (1965) seala que un problema puede resolverse correctamente si se realizanlas fases o etapas mostradas en la figura 1.4. Figura 1.4 - Etapas en la resolucin de problemasComprender el problema nos lleva a conocer qu es los que se va a resolver; mientrasque concebir un plan para llegar a la solucin involucra el como. Una buena noticia esqueexistendiferentestcnicas oestrategias quenos guanenlaresolucindeproblemas.1.2 Tcnicas o estrategiaspara resolucin de problemasLas estrategias para resolver problemas se refieren a las operaciones mentales que seutilizan para pensar sobre la representacin de las metas y los datos, con elfin detransformarlos en metas y obtener una solucin.Algunas tcnicas para resolucin deproblemas se muestran en la figura 1.5.Figura 1. - !cnicas de resolucin de problemasHacer preguntasUna de las tcnicas para resolucin de problemas ms simples pero muy importantees la de hacer preguntas.Debemos asegurarnos que estamos procediendo a resolverel problema real y no el problema que percibimos. (Figura 1.6).Figura 1."- #u$l es el problema real?Algunas preguntas tiles que podemos hacer son:1. Qu es lo que s acerca del problema?2. Cul es la informacin con la que debo trabajar para encontrar la solucin?3. Cmo se ve la solucin, qu parece?4. Quclase de casos especiales existen?5. Cmo voy a saber que he encontrado la solucin?Siempre que se nos d una tarea o un problema que no est bien definido, o que serequiera informacin adicional,debemos hacer preguntas hastaque tengamos claroexactamente que es lo que se quiere otiene que hacer. Figura 1.% - &acer preguntas1.2.1 i!ide " !encer#di!ide " !encer$s%Frecuentementedespedazamos problemas grandes en pequeas unidades que sonms fciles de manejar. Por ejemplo,limpiar la recmara puede parecer demasiadocomplicado, en comparacin a limpiar slo los pisos, o hacer la cama, o escombrar ellibrero. La misma idea aplica a problemas computacionales; as esta tcnica se basaen la idea de separar o dividir un problema grande, en pequeas piezas msmanejables. Figura 1.' - (i)idir un problema en subproblemas1.2.2 &todo de bloques de construccinEsta estrategia tambin es til para problemas grandes o complejos y consiste en versi existe solucin para piezas mas pequeas del problema (los bloques o ladrillos)y sies posible unir estas soluciones para resolver todo o la mayora del problema grande(hacer la pared). Figura1.* - +nir blo,uesLa idea es analizar el problema completo y ver si se puede dividir en pequeas piezasparalas cuales ya exista solucin. Por ejemplo, si sedeseaconstruir unauto,podemosdividir el diseoensuspartes: Llantas, puerta, ventanas, motor, ect. Yencontrar estas partes ya hechas que puedan acoplarse juntas para formar el auto.1.2.' (nalog)aEsta estrategia consiste en relacionar un problema o una situacin, con otraseme*anteque ya se haya resuelto anteriormente. Es decir, identificar algn patrncomn. Figura 1.1- - .nalog/aPor ejemplo, si tu ya antes has escrito recetas de cocina, y en la escuela se te pidehacer un instructivo para armar un papalote, podras escribir este, relacionndolo conla forma como se escribe una receta, es decir, por analoga!1.2.' +uscar cosas que son ,amiliasEsta estrategia es muy parecida a la de resolucin por analoga. Sin embargo, l a ideaes "nunca reinventar la rueda, Si una solucin ya existe, se puede usar esta. Es decir,si ya has resuelto el mismo o un problema muy similar antes, slo repite la solucin.Uno no aprende a ir a comprar el pan, despus a ir a comprar leche, despus huevo! ,simplemente aprende uno a "ir a comprar a la tienda , es decir, repite uno la mismasolucin. En programacin ciertos problemas se repiten uno y otra vez, por ejemploobtener la mxima y mnima calificacin de un grupo de alumnos, es iguala obtener latemperatura mxima y mnima de un conjunto de datos.Figura 1.11- obtencin de m$0imo 1m/nimo1.2.- (n$lisis de medios " ,inesLa tcnica de anlisis de medios y fines permite trabajar con un objetivo o fin a la vez.Esdecir, estatcnicaconsisteendescomponer el problemaensub-metasosub-objetivos, ir escogiendo una sub-meta para trabajar y solucionar sta, despusseleccionar otra sub-meta y as hasta completar la tarea, eliminando los obstculosque le impiden llegar al estado final.Un buen ejemplo donde aplicar est tcnica, es para el problema de ir de una ciudad aotra, con varias ciudades intermedias. En este caso las sub-metas son las ciudadesintermedias y los medios son la forma de llegar de una ciudad a otra. Por ejemplo siquisiramos recorrer la ruta Maya,podramos identificar las ciudadesinvolucradas como sub-metas y decidir como llegar ah, por ejemplo para llegar dePuebla a San Cristobal, no podra ser por avin, tendramos que buscar otra sub-meta,Tuxtla Guitierez, y de Tuxtla a San Cristobal por auto, y as a cada localidad.Figura 1.12 - .plicar estrategia de medios 1 2nes1.2.. /ombinar 0olucionesLaltimatcnicapararesolver problemasescombinar solucionesexistentes.Estatcnicapodra parecerse a la tcnica de Buscar cosas que sean familiares, pero eneste caso, es combinarlas soluciones paso a paso, no solamente unirsolucionesobtenidas separadamente. Porejemplo: Para calcularelpromediode unalistade valoresdebemos hacerdoscosas: sumar los valores y contarlos. Si tenemos dos soluciones separadas, una parasumar los valores y otra para contarlos, podemos combinarlas y as paso a paso irsumando y contando al mismo tiempo de tal manera queal final tendremos la solucinal problema. Una vez discutidas las diversas formas para abordar un problema, se puede en la fasede resolucin la manera en que se va a disear el algoritmo particular de solucin almismo, para lo que se introducir el concepto de algoritmo. Diseo del algoritmoUnalgoritmopuede ser definido como lasecuencia ordenadade pasos, sinambigedades,que conducen a la resolucin de un problema dado y expresado enlenguaje natural. Todo algoritmo debe ser:-1reciso2 ndicando el orden de realizacin de cada uno de los pasos.- e,inido2 Si se sigue el algoritmo varias veces proporcionndole #consistente% losmismos datos, se deben obtener siempre los mismos resultados.34inito2 Al seguir el algoritmo, este debe terminar en algn momento, es decir tenerun nmero finito de pasos.Para disear un algoritmo se debe comenzar por identificar las tareas ms importantespara resolver el problema y disponerlas en el orden en el que han de ser ejecutadas.Los pasos en esta primera descripcin pueden requerir una revisin adicional antes deque podamos obtener un algoritmo claro, preciso y completo.Este mtodo de diseo de algoritmos en etapas, yendo de los conceptos generales alos de detalle, se conoce como mtodo descendente (top-down).En un algoritmo se deben de considerar tres partes:-5ntrada2 nformacin dada al algoritmo.-1roceso2Operaciones o clculos necesarios para encontrar la solucin delproblema.-0alida2Respuestasdadaspor el algoritmooresultadosfinalesdelosprocesosrealizados.Como ejemplo supongamos que desea desarrollar un algoritmo que calcule lasuperficie de un rectngulo proporcionndole su base y altura. Lo primero que debemos hacer es plantearnos las siguientes preguntas:Especificaciones de entradaQue datos son de entrada?Cuntos datos se introducirn?Cuntos son datos de entrada vlidos?Especificaciones de salidaCules son los datos de salida?Cuntos datos de salida se producirn?Qu formato y precisin tendrn los resultados?El algoritmo que podemos utilizar es el siguiente:Paso 1. Entrada desde el teclado, de los datos de base y altura.Paso 2. Clculo de la superficie, multiplicando la base por la altura.Paso 3. Salida por pantalla de base, altura y superficie calculada.El lenguaje algortmico debe ser independiente de cualquier lenguaje de programacinparticular, perofcilmentetraducibleacadaunodeellos.Alcanzar estosobjetivosconducir al empleo de mtodos normalizados para la representacin de algoritmos,tales como los diagrama de flujo o pseudocdigo.Verificacin de algoritmosUna vez que se ha terminado de escribir un algoritmoes necesario comprobar querealizalastareasparalasquesehadiseadoyproduceel resultadocorrectoyesperado. El modo ms normal de comprobar un algoritmo es mediante su ejecucinmanual, usando datos significativos queabarquen todo elposible rango de valores.Este proceso se conoce como prueba del algoritmo. A continuacin se formularn unconjunto de algoritmos:Ejemplo 1.1Un procedimiento que realizamos varias veces al da consiste en lavarnos los dientes.Veamos la forma de expresar este procedimiento como un Algoritmo:1. Tomar la crema dental2. Destapar la crema dental3. Tomar el cepillo de dientes4. Aplicar crema dental al cepillo5. Tapar la crema dental6. Abrir la llave del lavamanos7. Remojar el cepillo con la crema dental8. Cerrar la llave del lavamanos9. Frotar los dientes con el cepillo10. Abrir la llave del lavamanos11. Enjuagarse la boca12. Enjuagar el cepillo13. Cerrar la llave del lavamanos14. Secarse la cara y las manos con una toallaEjemplo 1.2Veamosquealgotancomncomolospasosparacambiar unabombilla(foco) sepueden expresar en forma de Algoritmo:1. Ubicar una escalera o un banco debajo de la bombilla fundida2. Tomar una bombilla nueva3. Subir por la escalera o al banco4. Girar la bombilla fundida hacia la izquierda hasta soltarla5. Enroscar la bombilla nueva hacia la derecha en el plafn hasta apretarla6. Bajar de la escalera o del banco7. FinActividad 1.1Discutir en parejas el ejemplo de la bombilla y proponer algunas mejoras. Luego, unvoluntario debe pasar al pizarrn y escribir un Algoritmo con participacin de toda laclase..Ejemplo 1.3Consideremos algo ms complejo como el algoritmo de Euclides para hallar el MximoComn Divisor (MCD) de dos nmeros enteros positivos dados. Obsrvese que no seespecifica cules son los dos nmeros, pero si se establece claramente unarestriccin: deben ser enteros y positivos.ALGORTMO Paso 1: nicio. Paso 2: Leer los dos nmeros ("a y "b). Avanzar al paso 3. Paso 3: Comparar "a y "b para determinar cul es mayor. Avanzar al paso 4. Paso 4: Si "a y "b son iguales, entonces ambos son el resultado esperado y terminael algoritmo. En caso contrario, avanzar al paso 5. Paso 5: Si "a es menor que "b, se deben intercambiar sus valores. Avanzar al paso6; si "a no es menor que "b, avanzar al paso 6. Paso 6: Realizar la operacin "a menos "b, asignar el valor de "b a "a y asignar elvalor de la resta a "b. r al paso 3.Actividad 1.2Reflexiona sobre el lenguaje que utilizas diariamente para comunicarte con tus padres,hermanos, profesores y compaeros. Utilizas un lenguaje preciso? Utilizas vocabloscorrientes?Actividad 1.3A diferencia de los seres humanos que realizan actividades sin detenerse a pensar enlos pasos que deben seguir, los computadores son muy ordenados y necesitan quequien los programa les especifique cada uno de los pasos que debe realizar y el ordenlgico de ejecucin. Numerar en orden lgico los pasos siguientes (para pescar):___ El pez se traga el anzuelo.___ Enrollar el sedal.___ Tirar el sedal al agua.___ Llevar el pescado a casa.___ Quitar el Anzuelo de la boca del pescado.___ Poner carnada al anzuelo.___ Sacar el pescado del agua.Actividad 1.4 Supongamos que desea ir de Chihuahua a Cancn. Para logar esto se tienen variasopciones: usar el autobs, caminar, viajar en motocicleta, por tren, por avin ocaminar. Dependiendodelas circunstancias, ustedelegirlaopcinquemsleconvenga. Sies que esta apurado, elegir viajar por avin, si su presupuesto no esmuyalto, probablementeelijaviajarporautobs. Diseeunalgoritmosiguiendolatcnica de medios y extremos para llegar a la solucin del problema. Unidad 2 5lementos b$sicos para el desarrollo de (lgoritmos2.1 (rquitectura 4uncional de la /omputadora.Como primer paso en el estudio del funcionamiento de la computadora, se inicia dandoalgunas definiciones elementales y se recomienda la lectura cuidadosa de losconceptos,con el objetivo de entenderlos adecuadamente.0istema Conjunto de Unidades que colaboran entre si para realizar una funcin general y donde cada unidad efecta un trabajo especfico. Por ejemplo:Sistema Circulatorio, Sistema Digestivo, Sistema de Transporte Colectivo, etc./omputadora Sistema de Procesamiento de nformacin que recibe datos como entrada, los modifica (procesa) y produce resultados como salida. Las unidades que conforman este sistema son: Unidad de Memoria, Unidad Aritmtico Lgica, Unidad de Entrada / Salida y Unidad de Control.Figura 2.1 Diagrama General de la ComputadoraU. de&emoriaConjuntodeCeldasdeAlmacenamientoqueguardannformacin(puedenserdatosy/oprogramas). NormalmentelacantidaddeceldassemideenMillones y el tamao de cada celda se mide en mltiplos de ocho dgitos binarios. Estaunidad se subdivideen Memoria Primaria y Memoria Secundaria en funcin desuscaractersticas (tamao, velocidad, volatilidad).U. (ritmtico LgicaConjunto de Circuitos que realizan las operaciones Aritmticas(+, -, *, /) y Lgicas (and, or, neg, xor) de datos almacenados en registros de propsitogeneral. El tamao de los registros,as como el nmero de operaciones aritmticas ylgicas diferentes est en funcin del tamao de la computadora.U. de 5ntrada 6 0alida Conjunto de Registros ( Datos, Estado y Control) que permitenrealizar las operaciones de comunicacin (E/S) con el exterior. Estas dos funciones, laEntradaylaSalida, debenversecomoactividadesseparadas. Losregistrosestnconectados fsicamente a los dispositivos correspondientes, por ejemplo, los registrosde salida del Puerto Paralelo estn conectados a la mpresora.U. de /ontrol Conjunto de registros que conforman la parte activa de la computadora.Lafuncinprincipal esladerealizarel ciclodemquina:Alimentaunainstruccin,Decodificas la nstruccin y Ejecuta la nstruccin.Comentarios: No puede realizar cualquier operacin (hacer pasteles). La computadora puede realizar las operaciones Aritmtico Lgicas definidas ensu Unidad solamente. Es posible construir nuevas operaciones tomando como base las ya existentes(coseno, tangente, suma de vectores, etc.). La computadora es una herramienta para el humano. Lasolucinalosproblemascomputacionaleslasdael especialistaynolacomputadora.2.2 7ariables /omputacionalesLasvariablespuedenversedesdediferentespuntosdevistacomoel matemtico,computacional, filosfico, etc. En nuestro caso, debemos ver las variables desde unenfoque computacional (funcional).7ariable: rea de almacenamiento, de tamao fijo y que sirve para guardar un tipo dedatoespecfico. Lasvariablestienedoselementos: El NombredelavariableyelContenidodelavariable. El nombredelavariablesirveparadistinguirladeotrasvariables y el contenido se refiere al dato que es guardado en ese lugar. La variablepuede almacenar unslo tipodedatocomopuede ser datos enteros, reales,booleanos, caracteres, etc.2.' 8peraciones (ritmticas " LgicasLasoperaciones AritmticasyLgicasqueunacomputadorapuedehacerestn en funcin del tamao y delpropsito de dicha computadora. Es decir, si unacomputadora es chica entonces el nmero de operaciones aritmtico y Lgicastambin es "chico. Por ejemplo en una computadora personal (pequea), el nmerode operaciones ser alrededor de 10 (aproximadamente), mientras que en unacomputadora"grandepuedellegar a20o25. Debemosrecordarquetodasestasoperaciones se realizan por medio de circuitos electrnicos y que entre mas circuitostenga, su costo ser mucho ms alto. Las operaciones Aritmticas bsicas, en una computadora pequea, son:ncremento, Decremento, Suma, Resta, MultiplicacinyDivisin. LasOperacionesLgicas bsicas son: AND, OR yNegacin.Como notacin, normalmente se utilizan los smbolos siguientes para los operadoresAritmticos y Lgicos:Smboloncremento ++Decremento --Suma +Resta -Multiplicacin *AND &&OR ||Negacin !

Tabla 2.1 Operadores Aritmticos y Lgicos.En computadoras "grandes las operaciones pueden ser: ncremento,Decremento, Suma, resta, Multiplicacin, Divisin, Residuo, Raz Cuadrada, RazCbica, Valor Absoluto, Potencia, Logaritmo, Seno, Coseno, Tangente, AND, OR,Negacin, OR exclusivo, NAND, NOR,etc. Ademsdelooperadores AritmticosylosLgicosexistentambinlosoperadores relacionales. Dichos operadores se basan en el concepto de ORDEN queexistedentrodelosconjuntos, esdecir,losnmerosenteros, losnmerosreales,incluso los caracteres (en computacin) son conjuntos ordenados.Como notacin, normalmente se utilizan los smbolos siguientes para los operadoresrelacionales:Smbolosgual que ==Menor que Menor o igual que =Distinto que !=Tabla 2.2 Operadores RelacionalesLos operadores relacionales son binarios, es decir, que requieren dos operandos yelresultadodelaoperacinpuedeser "Falso o"Verdad. AlgunosautoresutilizanApagado/Prendido, 0/1, No/Si.2.- 5xpresionesUna expresin es una combinacin de operandos (variables), constantes yoperadores. La expresin debe estar bien escrita, es decir, siguiendo las reglas de losoperadores. Las expresiones se pueden dividir en expresiones aritmticas o expresiones lgicas.Ejemplos de expresiones aritmticas:25(50 * 2) + 10Salario * 0.15Las expresiones normalmente se usan junto con otros conceptos como lasproposiciones(tambinllamadas sentencias)que sonestructurasformadasporunavariable, seguida de un smbolo de asignacin (tambin llamado operador deasignacin) y finalmente una expresin. Las expresiones incluyen los parntesis comosmbolos de apoyo.La manera ms fcil de ver esto, es con ejemplos.Ejemplos de proposiciones con expresiones aritmticas:Base = (500 * 2) + 100Salario = DiasTrabajados * SalarioDiariompuesto = Salario * 0.15Ejemplos de proposiciones con expresiones lgicas:Mayor=a > b Menor=( a < b )&&( b < c )Unidad '. ise9o estructurado usando :erramientas derepresentacin de algoritmos'.1 iagramas de ,lu*oUndiagrama de ,lu*oes una representacin grfica de un algoritmo que secaracterizapor usar smbolosgrficos, paraexpresar deformasencillayclaraelordenlgico enel queserealizan las acciones deunalgoritmo. Los smbolosutilizados han sido normalizados por el nstituto Norteamericano de Normas (ANS) [1],y los ms frecuentemente utilizadosse muestran en la Tabla 3.1 0)mbolo 0igni,icadoo 4uncinescripcin 5*emplonicio / Finndicael iniciooelfin del diagrama deflujo.Entrada /SalidaPermite la lecturade datos deentrada(comnmente elteclado) as comola salida de datos(comnmente lapantalla).ProcesoSe utiliza pararealizarasignaciones,operaciones,pasos, procesos yen generalinstrucciones deprogramas decmputo.DecisinPermite evaluaruna condicin ydependiendo delresultado se siguepor una de lasramas o caminosalternativos.ConectorConector paraunirelflujo aotra partedel diagrama.SubprogramaPermiteel llamadoa otros diagramasde flujoTabla 3.1. Smbolos ms utilizados en los Diagramas de FlujosSiNoLos smbolos mostrados en la tabla 3.1.1 son unidos por medio de flechas que indicanel flujo de control del diagrama ver tabla 3.1.2.0)mbolo 0igni,icado o 4uncinireccin del ,lu*o deldiagramaTabla 3.2. Flechas de control de flujo del diagrama'.1.1 Reglas para la construccin de diagramas de ,lu*oA continuacin se indican algunas reglas que permiten la construccin de diagramasde flujo [2]:1. Todo diagrama de flujo debe tener un inicio y un fin.2. Las lneas utilizadas para indicar la direccin del flujo del diagrama deben serrectas, verticales y horizontales3. Todas las lneas utilizadas para indicar la direccin del flujo del diagrama debenestar conectadas a alguno de los smbolos mostrados en la tabla 3.1.1.4. El diagrama de flujo debe ser construido de arriba hacia abajo y de izquierda aderecha.5. Si el diagramadeflujorequirieramsdeunahojaparasuconstruccin,debemos utilizar los conectores.'.2 1seudocdigoEl pseudocdigo es una herramienta de programacin en la que las instrucciones seescriben en palabras similares al ingls o espaol, que facilitan tanto la escritura comolalecturadeprogramas. Enesencia, el pseudocdigosepuededefinir comounlenguaje de especificacin de algoritmos [1]. Laspalabrasreservadascomnmenteutilizadasenpseudocdigoson:Inicio, Fin,Leer, Escribir, Si, Entonces, Sino, FinSi, Segn, FinSegun, !ientras, "acer,Fin!ientras, #epetir, "astaQue, $ara, Fin$ara, Desde, entre otras.'.2.1. /aracter)sticas del pseudocdigoA continuacin se describen las caractersticas principales del pseudocdigo: Mantiene una identacin o sangra adecuada para facilitar la identificacin delos elementos que lo componen. Permite la declaracin de los datos (constantes y/o variables) manipulados porel algoritmo. Dispone de un conjunto pequeo de palabras reservadas (normalmenteescritas con letra negrita) para expresar las acciones del algoritmo. Supera las dos principales desventajas del diagrama de flujo: lento de crear ydifcil de modificar. Permite el seguimiento de la lgica de un algoritmo.'.' 5structuras de secuenciaLas estructuras de secuencia tambin son conocidas comosentenciasoproposiciones.Una sentencia o proposicin es unaunidad completa, ejecutable en s misma.La ejecucin de estas sentencias se realiza de manera secuencial, es decir, cada unaa continuacin de la anterior, empezando por la primera y terminando con la ltima. 1roposicin 0impleConsiste en una sla sentencia:Por ejemplo:a )Edad 18b )SUMA DATO1 + DATO2 + DATO3c )ESCRBE(' Dame tu opcin')En algunos lenguajes de programacin las sentencias terminan con el carcter punto ycoma (;).1roposicin /ompuesta o bloqueEs un conjunto de declaraciones y sentencias (proposiciones) agrupadas dentro delos delimitadores NCO y FN.Ejemplos:a) Una proposicin compuesta de 2 enunciados:I;I/I8 X 5 Y 894I; b)Una proposicin compuesta de 4 enunciados:I;I/I8 PRECO89.50 NTERES 0.15 COSTO_FNAL PRECO + NTERESESCRBE('El costo final del producto es: ', COSTO_FNAL) 4I;'.- 5structuras de /ontrolLas estructuras de control, tambin conocidas como estructuras de decisin, controlanel flujo de ejecucin de un programa. Permiten seleccionar la prxima proposicin aejecutarse dependiendo del valor de una condicin (cierta o falsa). Para construir estacondicin se usarn las expresiones lgicas o relacionales.Entre las estructuras de control se tienen las siguientes: condicional simple,condicional doble y condicionales mltiples.5xpresiones lgicas " relacionalesa% 8peradores relacionales Los operadores relacionales se usan para comparar expresiones. Una expresin quecontiene un operador relacional evala a cierto (1) o falso (0).0intaxis2expresion1operador relacional expresion28peradores relacionales8perador s)mbolo #en pseudocdigo%gual =Mayor que >Menor que =Menor qu o igual a y )"(y = 100) x es mayor que y " y es igual a 100?FalsoF C (x y) y(y = 100) x es distinto de y " y es igual a 100?CiertoC C(x > y )o(y = 100) x es mayor que y o y es igual a 100?CiertoF C (x y )) o( y = 100) x es distinto de y " x es mayor que y?oyes igual a 100? CiertoF"FFo C'.-.1 /ondicional 0imple Se evala la condicin, si la condicin es cierta se realiza proposicin, y si es falsaentonces no se realiza la proposicin.0intaxis2SicondicinentoncesproposicinEjemplos. a ) Supongamos que se tienen las variables x=5, y=100 0i(x = y) entonces Escribe('Las variables x e y tienen el mismo valor ')La condicin evala a falsa, por lo que no se imprimir ningn mensaje en pantalla.b ) Supongamos que se tienen las variables x=5, y=5 0i(x = y) entonces Escribe('Las variables x e y tienen el mismo valor ')La condicin evala a Cierta, por lo que en pantalla se visualizar el mensaje:as !ariables x e y tienen el mismo !alorc )Supongamos las variables COSTO_FNAL = 0.0,COSTO = 1989.50,NTERES= 50.00 0i(COSTO < = 5000)"(NTERES = 50.00) entonces COSTO_FNALCOSTO+NTERES La condicin evala a cierta por lo que el valor actual de COSTO_FNAL es:2039.50d ) Supongamos k=0, x =10, y =7, w =0 si( x < 50)entoncesI;I/I8w x+ ykw-5 + y4I;Despus de realizar la decisin, el valor de la variable k ser: 19'.-.2 /ondicional dobleSe evala la condicin, si la condicin es cierta se realizar proposicin1 y si condicines falsa se realizar la proposicin 2.0intaxis2SicondicinentoncesProposicin 1Si noProposicin 2Ejemplos:a ) Supongamos que se tienen las variables x=5, y=100 0i(x = y) entonces Escribe('Las variables x e y tienen el mismo valor ') 0i no Escribe('La variable x tiene un valor menor al valor de la variable y')mprimir en pantalla:a !ariable x tiene un !alor menor al !alor de la !ariable yb)Supongamos las variables NUM1 = 50y NUM2=10, NUM3 = 00i(NUM1 0 ) entonces NUM3NUM1 + NUM20i no NUM3 NUM1 NUM2Despus de llevarse a cabo "la decisin, la variable NUM3 tendr el valor: 60c )Supongamos k = 10, R = 2Si ( R< 100 )NCOR = R + kESCRBE(' R =', R)FNSi noESCRBE('R =', r) mprimir en pantalla:R = 12 d)Supongamos k = 10, R = 300Si ( R< 100 )NCOR = R + kESCRBE(' R =', R)FNSi noESCRBE('R =', R) mprimir en pantalla: R = 300

'.-.' /ondicional m= 0 y para 6? Fin del anidamiento ?6 escribir# FDesea ver otra tabla (s/n)?: F % leer# seguir %mientras # seguir CE GnG % ,in(nidamiento de alternati!a simple en bucle 1araEn pseudocdigo,para anidar una alternativa simple en un bucle 1ara, se utiliza lasintaxis: para = :asta [ incremento | decremento ] :acer6? nicio del anidamiento ?6si # % ,in>si6? Fin del anidamiento ?6 ,in>paraEjemplo 3.22.Sequieredisear el algoritmodeunprogramaquemuestreporpantallatodoslosnmeros enteros del 1 al 100 (ambos inclusive) que sean divisibles entre 17 21:Anidando una alternativa simple en un bucle 1ara, el problema se puede resolver conel siguiente algoritmo:Nombre del algoritmo: algoritmo Nmeros_enteros_divisibles_entre_17_o_21Variables: nmeroTipo enteroiniciopara nmero = 1 :asta 100 :acer 6? nicio del anidamiento */ si # nmero mod 17 D 0 o nmero mod 21 D 0 %escribir# nmero % ,in>si /* Fin del anidamiento */,in>para ,in5% Instrucciones de /ontrol de 0altoEnpseudocodigo, paraescribir unainstruccindesalto interrumpir, seutilizalasintaxis:InterrumpirLainstruccindesaltointerrumpirsiempreseusaparainterrumpir (romper) laejecucin normal de un bucle, es decir, la instruccin interrumpirfinaliza (termina) laejecucinde un bucle y, por tanto, elcontroldelprograma se transfiere (salta) a laprimera instruccin despus del bucle.Ejemplo 3.23Estdiese el siguiente algoritmo:Nombre del algoritmo: Nmeros_opuestos_del_menos_10_al_mas_10Variables: n, aTipo entero inicioa = 0:acer escribir# Fntroduzca un nmero entero: F % leer# n % si # n D 0 % escribir# FERROR: El cero no tiene opuesto.F % interrumpir 6? En el caso de que n sea un cero, el bucle se interrumpe. ?6 ,in>si escribir# FEl opuesto es: F, 3n % a = a B nmientras # n ED 310 " n CD 10 %escribir# FSuma: F, a % ,inEl algoritmo puede ser la solucin del problema siguiente:Disee el algoritmo:1) Pida por teclado un nmero (dato entero).2) Si el nmero introducido por el usuario es distinto de cero, muestre por pantalla el mensaje: "El opuestoes: $%n&mero'". 3) Repita los pasos 1 y 2, mientras que, el usuario introduzca un nmero mayor oigual que -10 y menor o igual que 10.Cero, si el usuariointroduceuncero, el bucletambinfinaliza, mostrndoseporpantalla el mensaje: "ERROR: El cero no tiene opuesto.". 4) Muestre por pantalla la suma de los nmeros introducidos por el usuario. La traza del algoritmo es: 0ecuencia2 (ccin #instruccin%2 7alor de2a n1 a = 0 @ Inicio de la iteracin 1.2escribir# Fntroduzca un nmero entero:F %@ I3 leer# n % @ 1.4 (Comprobar si n D 0) @ 1.La condicin de la alternativasimple es ,alsa.5 escribir# FEl opuesto es: F, 3n % @ 31.6 a = a B n 1. 1.Fin de la iteracin 1.7 (Comprobar si n ED 310 " n CD 10) 1. 1.La condicin del bucle es ,alsa.El bucle finaliza despus de 1iteracin.8 escribir# FSuma: F, a % 1. 1.El bucle ha finalizado porque la condicin (n ED 310 " n CD 10) es ,alsa, ya que, 1. noes mayor o igual que 31@ y menor o igual que [email protected] embargo, el bucle tambin puede finalizar, no porque sea ,alsa la condicin(n ED310"nCD10), sino, porqueseejecutelainstruccininterrumpir. Estoocurrircuando el usuario introduzca un cero. Por ejemplo:Veamos otra traza: 0ecuencia2 (ccin #instruccin%27alorde2a n1 a = 0 @ Inicio de la iteracin 1.2escribir# Fntroduzca un nmero entero:F%@ I3 leer# n % @ K4 (Comprobar si n D 0) @ KLa condicin de la alternativasimple es ,alsa.5 escribir# FEl opuesto es: F, 3n % @ 3K6 a = a B n K KFin de la iteracin 1.7 (Comprobar si n ED 310 " n CD 10) K KLa condicin del bucle es !erdadera.nicio de la iteracin 2.8escribir# Fntroduzca un nmero entero:F%K K9 leer# n % K 3L10 (Comprobar si n D 0) K 3LLa condicin de la alternativasimple es ,alsa.11 escribir# FEl opuesto es: F, 3n % K L12 a = a B n 1 3LFin de la iteracin 2.13 (Comprobar si n ED 310 " n CD 10) 1 3LLa condicin del bucle es !erdadera.nicio de la iteracin 3.14escribir# Fntroduzca un nmero entero:F%1 3L15 leer# n % 1 @16 (Comprobar si n D 0) 1 @La condicin de la alternativasimple es !erdadera.17escribir# FERROR: El cero no tiene opuesto.F %1 @18 interrumpir 1 @El bucle se interrumpe en la 3 iteracin.El control del programa se transfiere(salta) a la primera instruccin despus delbucle.19 escribir# FSuma: F, a % 1 @Normalmente, cuando en un bucle se utiliza una instruccin interrumpir, la ejecucinde sta se condiciona.En el ejemplo 1, el bucle se interrumpe si la condicin (n D 0) es !erdadera. Nteseque, dicha condicin no est contemplada en la condicin de salida estndar del bucle,porloque, alacondicin(n D 0)seleconsideracondicindesalidainternadelbucle.Ejemplo 3.23.No obstante, elproblema tambin se puede resolver sin hacer uso de la instruccininterrumpir:Nombre del algoritmo: Nmeros_opuestos_del_menos_10_al_mas_10Variables: nmero, acumuladorTipo entero inicioacumulador = 0:acer escribir# Fntroduzca un nmero entero: F % leer# numero % si # numero D 0 % escribir# FERROR: El cero no tiene opuesto.F % sino escribir# FEl opuesto es: F, 3nmero % acumulador = acumulador B nmero ,in>simientras # nmero ED 310 " nmero CD 10 " nmero CE 0 %escribir# FSuma: F, acumulador % ,inObsrvese que, en este algoritmo, s se contempla en la condicin de salida del buclela posibilidad de que el usuario teclee un cero, en cuyo caso, el bucle deja de iterar deforma natural.Los resultados por pantalla de este algoritmo son idnticos a los del algoritmo anterior.Instruccin /ontinuarEn pseudocodigo, para escribir una instruccin de salto continuar, se utiliza lasintaxis:La instruccin de saltocontinuarsiempre se usa parainterrumpir(romper) laejecucin normal de un bucle. Sin embargo, el control del programa no se transfiere ala primera instruccin despus del bucle (como s hace la instruccin interrumpir), esdecir,el buclenofinaliza, sinoque, finalizala iteracinencurso, transfirindoseelcontrol del programa a la condicin de salida del bucle, para decidir si se debe realizaruna nueva iteracin o no.Por tanto, la instruccin continuarfinaliza (termina) la ejecucin de una iteracin deun bucle, pero, no la ejecucin del bucle en s. De forma que, la instruccin continuarsalta (no ejecuta) las instrucciones que existan despus de ella, en la iteracin de unbucle.Ejemplo 3.24. En el algoritmo siguiente se muestra como se puede utilizar la instruccin continuar:Nombre del algoritmo: Nmeros_opuestos_del_menos_10_al_mas_10Variables: n, aTipo entero inicioa = 0:acer escribir# Fntroduzca un nmero entero: F % leer# n % si # n D 0 % escribir# FERROR: El cero no tiene opuesto.F % continuar 6? En el caso de que n sea un cero,la iteracin en curso del buclese interrumpe aqu. ?6 ,in>si escribir# FEl opuesto es: F, 3n % a = a B nmientras # n ED 310 " n CD 10 %escribir# FSuma: F, a % ,inEste corresponde a:1) Pida por teclado un nmero (dato entero).2) Si el nmero introducido por el usuario es distinto de cero, muestre por pantalla elmensaje: "El opuestoes: $%n&mero'". En caso contrario, muestre el mensaje: "ERROR: El cero no tiene opuesto.". 3) Repita los pasos 1 y 2, mientras que, el usuario introduzca un nmero mayor oigual que -10 y menor o igual que 10.4) Muestre por pantalla la suma de los nmeros introducidos por el usuario.La traza del algoritmo es: 0ecuencia2 (ccin #instruccin%27alorde2a n1 a = 0 @ Inicio de la iteracin 1.2 escribir# Fntroduzca un nmero entero:F % @ I3 leer# n % @ 24 (Comprobar si n D 0) @ 2La condicin de la alternativa simple es ,alsa.5 escribir# FEl opuesto es: F, 3n % @ 326 a = a B n 2 2Fin de la iteracin 1.7 (Comprobar si n ED 310 " n CD 10) 2 2La condicin del bucle es !erdadera.nicio de la iteracin 2.8 escribir# Fntroduzca un nmero entero:F % 2 29 leer# n % 2 @10 (Comprobar si n D 0) 2 @La condicin de la alternativasimple es !erdadera.11escribir# FERROR: El cero no tiene opuesto.F%2 @12 continuar 2 @La 2 iteracin se interrumpe (finaliza) aqu.El control del programa se transfiere (salta) ala condicin de salida del bucle.13 (Comprobar si n ED 310 " n CD 10) 2 @La condicin del bucle es !erdadera.nicio de la iteracin 3.14 escribir# Fntroduzca un nmero entero:F % 2 @15 leer# n % 2 3.M16 (Comprobar si n D 0) 2 3.MLa condicin de la alternativa simple es ,alsa.17 escribir# FEl opuesto es: F, 3n % 2 .M18 a = a B n3.L3.MFin de la iteracin 3.19 (Comprobar si n ED 310 " n CD 10)3.L3.MLa condicin del bucle es ,alsa.El bucle finaliza despus de 3 iteracin.20 escribir# FSuma: F, a %3.L3.MLa instruccincontinuarse ejecuta cuando el usuario introduce un cero,interrumpiendolaiteracinencurso; pero, el buclesolamentefinalizacuandolacondicin (n ED 310 " n CD 10) sea ,alsa.Normalmente, al igual que ocurre con la instruccin interrumpir, cuando en un bucleseutilizaunainstruccincontinuar, laejecucindestatambinsecondiciona.Enel ejemplo3, laiteracinencursodel bucleseinterrumpesi es!erdaderalacondicin (n D 0).Ejemplo 3.25. No obstante, el problema tambin se puede resolver sin hacer uso de lainstruccin continuar:Nombre del algoritmo: Nmeros_opuestos_del_menos_10_al_mas_10Variables: nmero, acumuladorTipo entero inicioacumulador = 0:acer escribir# Fntroduzca un nmero entero: F % leer# nmero % si # nmero D 0 % escribir# FERROR: El cero no tiene opuesto.F % sino escribir# FEl opuesto es: F, 3nmero % acumulador = acumulador B nmero ,in>simientras # nmero ED 310 " nmero CD 10 %escribir# FSuma: F, acumulador % ,inUnidad -. (rreglos " /adenasEsta unidad tiene como objetivo analizar y aplicar las operaciones sobrearreglos y cadenas para la solucin de problemas.e,inicin de (rreglo21. Unarregloesunconjuntofinitoeindexadodeelementoshomogneos,quesereferencianporunidentificadorcomn(nombre).Lapropiedadindexado significaqueelelementoprimero,segundo,hastaeln-simodeunarreglo puedenseridentificadosporsuposicinordinal. 2. Un arreglo es una coleccin finita, homognea y ordenada de elementos delmismo tipo.De manera ,ormal se define un arreglo de tamao n de los elementos de tipo A,es un elemento del espacio n-dimensional del conjunto A, es decir,X es arreglode tamao n del tipo A si y solo sinAmbas definiciones reconocen los siguientes conceptos:4inita2Todoarreglotieneunlmite, esdecir,debedeterminarsecual serelnmero mximo de elementos que podrn formar parte del arreglo.Homognea2 Todos los elementos de un arreglo son del mismo tipo o naturaleza(todos enteros, todos booleanos, etc,), pero nunca una combinacin de distintostipos.8rdenada2Sedebedeterminar cul esel primer elemento, el segundo, eltercero..... y el n-simo elemento./aracter)sticas de los arreglos. Tienen un nico nombre de variable, que representa todos los elementos. Contienen un ndice o subndice, los cuales diferencian a cadaelemento del arreglo. Se pueden realizar ciertas operaciones como son: recorridos,ordenaciones y bsquedas de elementos. El nmero total de elementos del arreglo (NTE) es igual al lmite superior(LS),menos lmite inferiorNTE = LS - L + 1 El tipo de ndice puede ser cualquier tipo ordinal (carcter, entero,enumerado) El tipo de los componentes puede ser cualquiera (entero, real, cadena decaracteres, registro, etc.) Se utilizan [ ] para indicar elndice de un arreglo. Entre los [ ] se debeescribirunvalorordinal (puedeserunavariable, unaconstanteounaexpresin que d como resultado un valor ordinal). Por tanto, si unarreglotienencomponentes, laltimalocalidadestdada por n, como se muestra en la siguiente figura 4.1Figura 4.1 . Representacin de un Arreglo En la Figura 4.2 es un arreglo llamado EDADES donde se almacenan las edadesde un grupo de alumnos de la clase deNatacin de la BUAP.Figura 4.2Arreglo Unidimensional EDADESdentifiquemos lo siguiente: EDADES es elnombre del arreglo EDADES[1] es el primer elemento del arreglo EDADES que hacereferencia al elemento de la posicin 1,cuya edad almacenada es 16. EDADES[10] es el ltimo elemento del arreglo EDADESque hacereferencia al elemento de la posicin 10,cuya edad almacenada es 25. 1, 2, 3, ... n, sonlosndices osubndices del arreglo(puedenserenteros, no negativos, variables o expresiones enteras). NTE= LS - L + 1= 10-1+1=10 elementos./lasi,icacin de los arreglos.Los arreglos se clasifican en: Unidimensionales (Vectores): un slo ndice Bidimensionales (Tablas o Matrices): dos ndices Multidimensionales: ms de dos ndices -.1 (rreglos unidimensionalesUnarreglodeunadimensinovectoresunconjuntofinitoyordenadodeelementos homogneos.Se pueden representar como una lista o columna de datos del mismo tipo, a los que colectivamente nos referimos mediante un nombre. Los arreglos unidimensionales deben cumplir lo siguiente: 23mite "nferiorE(4(ES15 161718 /+/1// /0/9 /: /:2imite Superior E(4(ES&1) E(4(ES&/)E(4(ES&0) E(4(ES&9)E(4(ES&:) E(4(ES&5)E(4(ES&6)E(4(ES&7)E(4(ES&8)E(4(ES&1+) Compuesto por un nmero de elementos finito. Tamao fijo: el tamao del arreglo debe ser conocido en tiempo de compilacin. Homogneo: todos los elementos son del mismo tipo. Son almacenados en posiciones contiguas de memoria, cada uno de los cualesse les puede acceder directamente. Cada elemento se puede procesar como si fuese una variable simple ocupandouna posicin de memoria. Ejemplo 4.1 : Dado un arreglo unidimensional denominado PRECO cada uno de suselementossedesignarporesemismonombrediferencindosenicamenteporsucorrespondiente subndice. LoselementosdelarreglounidimensionalPRECO, serepresentanconlasiguiente notacin: PRECO[1], PRECO[2], PRECO[3], ..., PRECO[N].Es decir, todos los elementos pertenecen almismo arreglo unidimensionalllamadoPRECO y se referencian a travs del subndice que indica la posicin que ocupan enel arreglo. Dichos elementos semanipulancomovariables individuales. Deestamanera se le puede asignar un valor a un elemento, por ejemplo PRECO [1]=15.5En un arreglo unidimensional o vector se distinguen tres elementos:a) Nombre del arreglob) Longitud o rango del arregloc) Subndices del arreglo A continuacin se muestra el arreglo unidimensional Figura 4.3identificando los tres elementos.1...12..1-.2M.LN..-..1:.:1/.: 19./8.6 5.: 9.:;0 entonces Leer Xi 1Mientras (i X) o ( i>N) entonces Pos1 Sino Pos1 Fin_si Si Pos =1 entoncesi 1encontrado falsoMientras i,ila;ENTERO posicin>columna;Algoritmo:1aso 12 NCO1aso 22 PARA fila = 0 HASTA 2 NCREMENTO 1PARA columna = 0 HASTA 4 NCREMENTO 1ESCRBR ("ntroduce un numero);LEER (DATOS[fila][columna]);FN_PARAFN_PARA1aso '2Mayor = A[1][1];Posicin_fila = 1;Posicin_columna = 1;1aso -2 PARA fila = 0 HASTA 2 NCREMENTO 1PARA columna = 0 HASTA 4 NCREMENTO 1S (A[fila][columna] > mayor) ENTONCESMayor = A[fila][columna];Posicin_fila = [fila];Posicin_columna = [columna];FN_SFN_PARAFN_PARA1aso .2ESCRBR ("El mayor es: ,mayor);ESCRBR ("La posicin es:posicin_fila, Posicin_columna);1aso N2FN Ejemplo 4.12Leer una matriz de 10X10 elementos ygenerar un vector con los elementos que estnpor encima de la diagonal principal. nformar el vector generado.0olucin2La diagonal principal esta formada por los elementos en los cuales coincide el nmero de fila con el nmero de columna, si tenemos una matriz como la siguiente:0 1 2 3 Observamos que elelemento "a" esta en la fila0, columna 0. El elemento "b"esta en la fila 0, columna 1. El elemento "f", esta en la fila 1, columna 1, el elemento"o esta en la fila 3, columna 2, etc. Por lo que los elementos que se encuentran en ladiagonal son: RaS (fila 0, columna 0) ,R,S (fila 1, columna 1), "TS (fila 2, columna 2) yRpS (fila 3, columna 3), por lo que es fcilver los elementos que se encuentran porencima de la diagonal principal, es decir, los que su numero de columna es mayor alnmero de fila, para el ejemplo serian: "b" (fila 0, columna 1), "c" (fila 0, columna 2) ,"d(fila0, columna3), "g(fila1, columna2), "h"(fila1, columna3)y"l(fila2,columna 3).Utilizaremos las siguientes variablesENTERO &(TRIUO-PO-PQENTERO 75/T8R O-PQENTERO ,ilaQENTERO columna;ENTEROTQ(lgoritmo21aso 12 NCOa b c de f g hi j k lm n o p1aso 22 PARA fila = 0 HASTA 3 NCREMENTO 1PARA columna = 0 HASTA 3 NCREMENTO 1ESCRBR ("ntroduce un numero);LEER (MATRZ[fila][columna]);FN_PARAFN_PARA1aso '2k= 1;

1aso -2 PARA fila = 0 HASTA 3 NCREMENTO 1PARA columna = 0 HASTA 3 NCREMENTO 1S ( columna > fila) ENTONCESVECTOR [k] = MATRZ[fila][columna];k = k+1;FN_SFN_PARAFN_PARA1aso .2PARA k =0 HASTA 3 NCREMENTO 1 ESCRBR(VECTOR[k])1aso N: FNActividades. Desarrollar:4.10Un algoritmo que almacene nmeros en una matriz de 5 x 6. mprimir la suma delos nmeros almacenados en la matriz.4.11Un algoritmo que llene una matriz de 7x 7. Calcularla suma de cada rengln yalmacenarla en un vector, la suma de cada columna y almacenarla en otro vector.

4.12 Un algoritmo que llene una matriz de 5 x 5 y que almacene la diagonal principalen un vector. mprimir el vector resultante. 4.13 Un algoritmo que llene una matriz de 10 x10 y que almacene en la diagonalprincipal unos y en las dems posiciones ceros. 4.14 Un algoritmo que llene una matriz de 6 x 8 y que almacene toda la matriz en unvector. mprimir el vector resultante. 4.15 Unalgoritmoquelleneunamatrizde5x6yqueimprimacuantosdelosnmeros almacenados son ceros, cuantos son positivos y cuantos son negativos.Unidad .. ise9o &odular..1 IntroduccinPara comprender la programacin modular, es importante describir la siguienteanaloga:Suponga que la seora Juanitaprepara memelas en un lugar cercano al zcalo de laCiudad. Ellasolarealizael conjuntodetareasqueimplicanprepararmemelas, esdecir, pica cebollas, muele la salsa en la licuadora, fre las tortillas, vierte salsa sobrelas tortillas,revisa que estn en su punto, adems cobra y devuelve cambio. Todasestas actividades las realiza una sola persona.Si hablamos de programacin, los programas que slo tienen la funcin principal, soncomo la seora Juanita, que realizan un conjunto de tareas secuencialmente, lo cualhace ms complicada su legibilidad y mantenimiento.Regresandoalaanaloga, laseoraahoracontrataunciertonmerodepersonasparaayudarle en el proceso de elaboracin de memelas. Acada seorale esencomendada una tarea o funcin. Cuando alguna de las seoras contratadas terminasu tarea, sta informa a la seora Juanita que ha terminado y le devuelveel resultadode su tarea. Cuando todas las seoras han terminado su tarea, el problema complejode elaborar memelas ha concluido. El problema fue dividido entre varias seoras, parasu realizacin, stas fueron coordinadas por la seora Juanita queindica el orden derealizacin de las tareas.En la programacin modular, el problema complejo es dividido en subproblemas mspequeosomsfcilesderesolver.Cadaproblemaseresuelveporunafuncinomodulo. Una vez que cada modulo resuelve su tarea, elproblema complejo ha sidoresuelto en su totalidad [2].Si algnsubproblema, anesdemasiadocomplejo, steesdivididoasuvez, ensubproblemas, y as sucesivamente. Observemos el siguiente diagrama para ilustrar loanterior.Figura 5.1 Divisin de problemas en subproblemas..2/onceptos de mduloa) Es un conjunto de instrucciones o sentencias que resuelven una tareaespecifica, al cual sehacereferenciapormediodeunnombre. stepuedeinvocarse varias veces en un programa.b) Es unprocesoconciertogradodeindependencias del moduloprincipal(programa principal).c) Es un subprograma que resuelve una parte del problema.d) El concepto de modulo tiene varias acepciones, dependiendo del lenguaje deprogramacin: subrutinas (Basic y Fortran), procedimientos y funciones (Pascaly Delphi, Ada, etc), funciones o mtodos (C++, Java y C#)eclaracinde un mduloLos mdulos tienen un formato bien definido para su utilizacin: Tiene un tipo de retorno Tiene un nombre o identificador. Puedetener onolistadeparmetros(elementosdecomunicacinconelmodulo principal) Tiene un cuerpo o conjunto de instrucciones que resuelven una tareaespecifica. Pueden o no devolver un valor delalgn tipo de dato bsico, estructurado odefinido por el usuario.Esquemticamente podemos observar el formato de un mdulo como el siguiente:Esquema5.2 Sintaxis de la declaracin de un mdulo en pseudocdigo [2]Los elementos del formato de un mdulo que se encuentran entre corchetes indicanquesonopcionales, esdecir, podemosprescindir deellos. Lalistadeparmetrosaparece despus de nombrar almdulo y siempre se encuentra delimitada por losparntesis, el nmero de parmetros van desde 0 hasta n.Estos parmetros se les denominan par$metros ,ormales, mientras que cuando serealiza elllamado delmdulo desde cualquier otro, a estos parmetros se les llamaactuales y se enlazan con cada uno de los formales para llevar a cabo la ejecucin.Enparticularunmdulopuedeserdedostipos:,uncionesoprocedimientos, las,uncionessecaracterizanporquesiempredevuelvenunvalor mientrasquelosprocedimientos pueden devolver 0,1 o n valores en forma de lista de parmetros./aracter)sticas que deben tener los mdulosa) Deben esta jerarquizadosb) Debenser pequeos y sencillosc) Deben ocultar los detalles poco importantes a mdulos superiores en jerarqua.d) Debeusar tantosmdulosdemsbajajerarquacomoseanecesarioparacumplir con el modo b) O Tipo P ;ombre del modulo #tipo param1, tipo param2,A tipo paramn%Inicio0entencia 1Q0entencia 2Q0entencia nQO e!ol!er # expresin % P4in&oduloe) Deben usar estructuras de datos y control adecuados para cumplir con el puntob)f) Debenser legibles, esdecir quenosoloel autor puedaentenderlos, sinocualquieraquetengaaccesoaellosconunconocimientofundamental deprogramacin..'7enta*as de la modularidadEl uso de modularidad para disear programas tiene varias ventajas:a) Disminuye la complejidad del problema a resolver.b) Aumenta la legibilidad y confiabilidadc) Disminuye costos computacionales.d) Se obtiene un mejor control del proyecto.e) Se pueden agregar nuevos mdulos.f) Facilita el mantenimientoLa programacin modular se representa por medio de bloques donde cada uno hacereferencia a un modulo. En la representacin esquemtica, se manifiesta lacomunicacin entre el mdulo principal y los mdulos secundarios.El modulo principal coordina a todos los dems mdulos. Debe ser claro y conciso, yreflejar los elementos fundamentales del problema...- 1roceso de modulariJacin #Rdi!ide " !encer$sS%El procesodesubdivisindel problemacomplejoensubproblemasmsfcilesderesolver consiste en la comprensin total del problema y posteriormente se procede ala subdivisin de ste en partes ms pequeas. Se llevan a cabo las siguientes fases para la modularizacin:1) Serealizaunanlisis del problemaconsiderando las especificaciones delmismo (comprensin del problema)2) Se forma un primer modulo enunciando el problema en trminos de la solucina ste.3) Se toma este mdulo y se busca la forma de dividirlo en otro mdulos mspequeos que ejecuten tareas o funciones especificas.4) Se repite el paso 3) para cada mdulo nuevo definido, hasta llegar a un niveldedetalleadecuado, es decir, hastaquecadamduloejecuteunatareaespecifica, que este claramente definida y que el diseo de la lgica del mismoresulte fcil (utilizando pseudocdigo).5) Serealizanpruebasdeescritorioparcialesacadamdulo, paraasegurarseque stos realizan correctamente su tarea especifica.6) Serealizaunaprueba deintegracinenlaqueseconsideran todos losmdulos, as como el mdulo principal.7) Si esel caso, secodificanlosmdulosenunlenguajedeprogramacin,iniciando desde los mdulos del nivel ms inferior en la estructura jerrquica dela solucin.5.5 Llamada a los mdulos Variables globales, locales y parmetrosEn el diseo modular participan tres tipos de variables que reciben sunombredependiendo de sumbito de operacin. Las*ariablesglobalessonaquellasquesedefinenodeclaranfueradelmdulo principaly tienen efecto en todos los mdulos. Esto es, una variableglobal puede ser modificada en cualquier mdulo incluido el principal. Las*ariableslocalessonlasquesedefinendentrodeunmdulo, ysondistintas a las que se definen en otros mdulos, a pesar de que pueden tener elmismo nombre. El contexto de estas variables es el mdulo donde sedeclaran, fuera de stos no son reconocidas o vlidas. Lospar,metrosson un mecanismo de comunicacin o intercambio deinformacin entre los mdulos, inclusive el mdulo principal. Se relacionan deacuerdo a su posicin y el tipo de dato asociado.Existen dos tipos de parmetros:1or 7alor. Son constantes, elvalor en s mismo de los datos que se envancomo argumentos en la invocacin o llamada al mdulo, la cual se realiza, escribiendonicamente el dato del mdulo y sus parmetros en el caso de que tenga.Una caracterstica de los paramentos por valor es que stos copian sus valoresen los argumentos de los mdulos. Al finalizar la llamada del mdulo, los parmetrosno se ven modificados; no alteran su valor.1or re,erencia: son variables; es copia de la referencia o localidad de memoriadonde se encuentran los datos que se envan como argumentos en la invocacin. Lacaracterstica de estos parmetros es que son modificados dentro delmdulo en elcual fueroninvocados. Conel usodeparmetrosporreferencia, unmdulopuededevolver ms de un valor al mdulo principal o a los mdulos que lo invoquen. Mdulos predefinidos por el sistema (funciones)Existen algunos mdulos definidos pordefecto en elsistema, loscuales se puedenclasificar dependiendo de la funcin de stos. Para el uso de estos mdulos,solamente debemos invocarlos mediante su nombre y parmetros, agregandopreviamentelalibrera dondeseencuentrandefinidos. Lalibrera contieneaunconjunto de mdulos que se pueden utilizar. Estos mdulos pueden ser: matemticos,carcter, cadena, etc.Por ejemplo la librera matemtica contiene los mdulos entre otros [2]: 4uncin escripcinexp(x) exponencial de x, x es entero o realln(x) logaritmo neperiano de x, x es entero o realraiz2(x) ra)J cuadrada de x, x es entero o realseno(x) 0eno de x, x es entero o realredondeo#x% redondea x, x es realTabla 5.1 Divisin de problemas en subproblemasEjemplo 5.1 Si deseascalcular larazcuadradadeunnmero, podemosrealizarlassiguientesoperaciones:Esquema5.1 Sintaxis de la declaracin de un mdulo en pseudocdigo5.5 Ejemplos de programacin modularEjemplo 5.1 CircunferenciaElaborar unalgoritmomodular paracalcular el rea, permetroydimetrodeunacircunferencia de radio R.1aso1. Seconsideranlosdatosdeentrada, salidayprocesospararealizar losclculos que resuelven el problema.Datos de entrada: Radio RDatos de salida: Area = Pi*R*R Permetro= 2*Pi*R Dimetro = 2*R1aso 2.1aso '. El problema puede ser dividido en los siguientes mdulos Circunferencia(Principal)Circunferencia(Principal)rea Permetro DimetroLeer x;Realr = raiJ2# x %// calcula la raz cuadrada de xEscribirrEn este caso no es necesario seguir dividiendo los mdulos en submdulos. 1aso -2 Disear la lgica de programacin de cada modulo, iniciando desde los mdulos de nivel mas inferior.Real Area (real R)// declaracin del mdulonicioReal a; a=Pi*R*RRegresar( a)FinModuloReal Perimetro(real R)nicioReal p; p=2*Pi*RRegresar( p)FinModuloReal Diametro(real R)nicioReal d; d=2*RRegresar( d)FinModuloCircunferencia (Principal)nicioReal radio, A,P,DEscribir "ngrese radio:Leer radioA= Area( radio) //llamada del moduloP= Perimetro( radio)D= Diametro( radio)Escribir" El area es = ", AEscribir" El perimetro es = ", PEscribir" El Diametro es = ", AFinModulo1aso .. Realizar pruebas de escritorio a cada modulo individualmente1aso N. Realizar pruebas de escritoriointegrando todos los modulo.Ejemplo 5.2/oe,iciente +inomial.Algoritmo modular para calcular el coeficiente binomial definido como:/#n, T % DnV 6 TV ? #n W T %V(n$lisis: Datos: n, kProcesos: Factorial de un nmero y8(n79).Real Factorial (real n)nicioReal f=1;Entero iPara i= 1 hasta n hacerf = f *ifinpararegresar(f)FinModuloReal CoefBin( real n, real k)nicioRegresar( factorial(n) / (factorial(k)* factorial (n-k))FinModuloNada CoeficienteBinomial( Principal )nicioReal n, kLeer n, kEscribir" Coeficiente Binomial =",CoefBin(n, k )FinModulo (Principal)CoeficienteBinomialCoeficienteBinomial (Principal%CoefBin4actorial