You are on page 1of 32

Clase #1

EVOLUCIN Y DESARROLLO DE LOS COMPUTADORES


Evolution. Fuente: R.B. Muhama.( Kent State University, 2004,.http://www.cs.kent.edu/~rmuhamma/),.

Los objetivos bsicos que se pretenden lograr dentro de esta asignatura son los siguientes: Desarrollar destrezas lgico-abstractas para conceptualizar e implementar la solucin de problemas utilizando un computador. Propender por el aprendizaje de tcnicas que permitan y faciliten la representacin algortmica, en el proceso de la solucin de problemas, aunando los enfoques algortmico y ecuacional. Incentivar el aprendizaje de un entorno grfico, visual e interactivo de programacin de computadores.

En tal sentido se emplear la Metodologa de Solucin de Problemas (Aprendizaje va ejemplos), en la cual se mezcla el enfoque ecuacional (modelacin matemtica) y el enfoque algortmico.

1.1 ENFOQUE DEL CURSO


Mediante el enfoque ecuacional se modela una parte de la realidad, generalmente vista como situacin o problema a resolver, empleando el lgebra y las matemticas ms avanzadas para construir un modelo abstracto-lgico-matemtico que representa esa parte de la realida, o ese problema a solucionar. El enfoque algortmico, implementado por medio de computadores digitales, ha surgido desde mediado del siglo XX como una filosofa y una herramienta que permite abordar y resolver problemas complejos. La sinergia entre los dos enfoques ha catapultado ms y mejores soluciones de problemas en prcticamente toda disciplina del saber humano, especialmente en reas tcnicas y de ingeniera. Tradicionalmente este curso en la Facultad de Minas se ha organizado en dos sesiones o clases, de 2 horas- de trabajo presencial en la semana. En una de las sesiones se explican los aspectos conceptuales y tericos de los Algoritmos y la Programacin de Computadores. Y en la otra sesin utiliza el computador para resolver problemas en los cuales se aplican los conceptos y la teora vistos en la sesin terica. De ah, que esta documentacin incluya ambos niveles de complejidad de un curso orientado al nivel bsico del pregrado en Ingeniera (unas 10 ingenieras, excluyndose a la Ingeniera de Sistemas, a la Ingeniera de Control, y a otras de reciente creacin como la Ingeniera Biolgica y la Ingeniera Fsica). Este tipo de trabajo terico y prctico- le exije al estudiante, de entrada, unas estrategias diferentes de estudio de la asignatura. La recomendacin que normalmente se la hace a los estudiantes (entre 500 y 600 estudiantes por semestre, con cerca de un 40% mujeres) es muy simple: estudiar de manera frecuente y sistemtica el material de cada mdulo sesin o clase- y repasarlo asiduamente; interactuar, adicionalmente, con el computador, por lo menos una sesin adicional cada semana, para lograr un refuerzo extra en la aprehensin de los conceptos, estrategias y tcnicas. En este curso hay una dificultad mayor, para abordarlo de forma eficiente, por cuanto se avanza muy rpidamente en la estructura de contenidos; de suerte, que cada semana es necesario estudiar los temas que se explican en cada clase terica y en cada clase prctica. En este sentido, es muy conveniente que los (las) estudiantes se apersonen de las tcnicas eficientes de estudio que le permitirn realizar su labor de forma ms eficiente, no slo en esta asignatura sino tambin en las dems asignaturas de su carrera, lo cual -igualmente- redundara en un mejor desempeo en su futura actividad profesional. Saber estudiar de manera eficiente es una habilidad que toda persona puede desarrollar y hecer parte de su bagaje de conocimientos, aptitudes y actitudes. El material del curso se organiza en tres partes, incluyendo cada una teora y prctica: walvarem@unalmed.edu.co Clase# 1.- Evolucin y Desarrollo de los Computadores Pgina 1

Ingeniero William Alvarez Montoya http://www.unalmed.edu.co/~walvarem/ 02/02/07 ____________________________________________________________________________________________ La primera parte consta de 6 semanas, 6 sesiones tericas y 6 sesiones prcticas. Al final de estas seis semanas se hace la primera evaluacin consistente en un examen escrito individual y en un examen prctico frente al computador. No se hace una presentacin rigurosamente matemtica de los algoritmos y la programacin sino que se aborda de una forma ms o menos intuitiva toda la temtica terico-prctica. Los temas incluyen: (1) una presentacin general del curso, de la secuencia de contenidos, de la metodologa, de la evaluacin y de la bibliogrfa y dems referencias a emplear; (2) un vistazo general del desarrollo histrico de los computadores, enmarcando el concepto de algoritmo y las estructuras fundamentales mediante las cules se construyen algoritmos secuenciales: secuencia, seleccin lgica, iteracin; (3) los conceptos de acumulador y contador, y sus aplicaciones; (4) con los conceptos anteriores se efectan algunas aplicaciones sencillas como los clculos de series, de sumatorias y productorias, de ciertas medidas estadsticas, de mtodos de integracin numrica y de mtodos para la obtencin de races de funciones no-lineales; (5) una introduccin a las grficas complementa la teora explicada; (6) en la parte prctica se inicia con el concepto entorno grfico, visual e interactivo de programacin, basado en el concepto de proyecto Visual Basic, y se elaboran sencillas aplicaciones que constan de su interfaz grfica de usuario con la programacin respectiva; (7) lo concerniente al lenguaje de programacin incluye el manejo de variables y constantes, tipos de datos, operadores, expresiones, tipos de instrucciones, funciones de librera estndar, controles bsicos y eventos y procedimientos asociados a dichos controles. En la segunda parte se introducen y se manejan los conceptos de arreglo, de archivos de datos, subprogramas definidos por el usuario, y de datos definidos pro el usuario. Para la interfaz grfica de usuario se trabaja con men tipo barra, mdulos de programas y formularios mltiples. Las aplicaciones con las cuales se ilustran los conceptos tericos incluyen: ordenamiento y bsqueda; operaciones con vectores, matrices y archivos de datos. Esta parte consta de 5 semanas, al final de las cuales se hace la segunda evaluacin terico-prctica. En la tercera parte se aplican los conceptos y tcnicas trabajados en las dos partes previas en la solucin de problemas tales como: ecuaciones lineales simultnes, mtodo de Gauss y de Jacobi; el clculo de la Inversa, mtodo de Gauss-Jordan; el ajuste de curvas por el mtodo de mnimos cuadrados; y una sencilla miscelnea de otras aplicaciones, con fines meramente descripticos, para enfatizar el uso de los algoritmos y la programacin en la solucin de problemas prcticos en reas de ingeniera. Estas ltimas aplicaciones pueden variar semestre a semestre dependiendo de la disponibilidad de soluciones que el docente tenga a la mano.

Los problemas de ejemplo estn a nivel de las ciencias bsicas de ingeniera, por cuanto el grueso de los estudiantes pertenecen a los primeros semestres (del 1 al 3) en las carreras de ingeniera en las cuales esta asignatura es obligaroria en las currcula. Por lo cual los prerrequisitos son mnimos y corresponden a los bsicos del lgebra y la Aritmtica, la geometria, la fsica, la qumica, el lgebra Lineal y el clculo de los primeros semestres universitarios. Es de suma importancia para un estudiante universitario el apersonarse de las tcnicas eficientes de estudio. Semestre a semestre se observa y las estadsticas- lo corroboran que los porcentajes de repitencia de asignaturas, prdida del semestre, y de desercin son relativamente altos1. Aunque en la solucin de esta problemtica intervienen muchos factores, hay una categora de factores sobre la cual el estudiante como individuo- s puede tener un alto grado de control: mejorar las tcnicas de estudio. Las tcnicas bsicas incluyen2: (i) - Actitud proactiva para asistir a clases; (ii) - Saber concentrarse en clase y toma de apuntes eficaces que ayuden efectiamente al aprendizaje, (ii) - Estudio frecuente y sistemtico extraclase; (iv) - Saber preparar exmenes, trabajos y exposiciones; (v) - Sabia administracin del tiempo, dentro del plan general del semestre acadmico tener una clara y realista agenda diaria y semanal; (vi) - Mtodos de lectura rpida y ultrarrpida; (vii) - Mtodos para mejorar la memoria de forma creativa e inteligente; (viii) - Nutricin adecuada para el aprendizaje; (ix) - Saber identificar y controlar de manera inteligente los distractores (y obstructores) que impiden centrarse en el estudio (amistades y grupos de inters demasiado absorventes, drogas, alcoholismo, tabaquismo, embarazos en las jvenes) que inciden negativamente sobre el desempeo acadmico de calidad en amplios grupos de estudiantes; (x) - Aprovechar los recursos de financiamiento, acompaamiento, asesora, prevencin y apoyo que brinda la universidad. El material del curso est disponible en la pgina web principal en la Escuela de Sistemas, http://pisis.unalmed.edu.co/cursos/algoritmos/, y tambin en sendas pginas que el suscrito mantiene para tal efecto: 0
1

Ver las estadsticas sobre el tema presentada por las instancias pertinentes en unalmed. Estos problemas han suscitado continuios dabtes, vase, por ejemplo: Problemas curriculares y pedaggicos del pregrado en la Universidad Nacional de Colombia, Serie de documentos de trabajo No. 3, Bogot, 2003.. 2 Vase, por ejemplo, Study Skills for Science & Technology Students, Brunel University, 2005, http://www.brunel.ac.uk/~mastmmg.

__________________________________________________________________________________________ walvarem@unalmed.edu.co Pgina 2 Clase# 1.- Evolucin y Desarrollo de los Computadores

Ingeniero William Alvarez Montoya http://www.unalmed.edu.co/~walvarem/ 02/02/07 ____________________________________________________________________________________________ http://www.unalmed.edu.co/~walvarem, http://xue.unalmed.edu.co/~walvarem . Este material consta de: diapositivas de las clases tericas, guas de prcticas, problemas propuestos, bibliografa, referencias y enlaces, problemas resueltos, exmenes resueltos, textos de apoyo, tanto en formato HTML como PDF y ZIP.

1.2 IMPACTO DE LOS COMPUTADORES


Ningn invento ha cambiado ms profundamente la vida moderna que el computador. Para bien o para mal, los computadores se han infiltrado en cada aspecto de nuestra sociedad. Actualmente, los computadores hacen mucho ms que simplemente calcular: por ejemplo, las cajas registradoras de los supermercados estn dotadas con rastreadores pticos y tecnologa de cdigo de barras, y calculan el importe de las compras mientras actualizan el inventario; las centrales telefnicas computarizadas manejan millones de llamadas diariamente, permitiendo las comunicaciones locales, nacionales e internacionales; los cajeros automticos facilitan y controlan las transacciones financieras, virtualmente desde cualquier lugar del mundo; los vehculos de transporte (automviles, trenes, aviones) se basan en la electrnica y en multitud de microprocesadores que pemiten el control y la programacin; en las empresas, mquinas de toda ndole realizan desde las labores ms sencillas hasta las ms complejas, desde el diseo de productos y servicios hasta la fabricacin automtica de partes y de bienes terminados; y, virtualmente, todo electrodomstico moderno est dotado de microprocesadores que permiten su control y programabilidad. Pero, de dnde ha surgido toda esta tecnologa informtica, cules son sus implicaciones y hacia dnde est jalonando a las organizaciones y a los pases? Para entender en profundidad y apreciar los mltiples efectos que los computadores y sus tecnologas conexas tienen en nuestras vidas y cules son las megatendecias que ellos estn moldeando hacia el prximo futuro, es preciso estudiar y entender cul ha sido su evolucin, y quines son los hombres y mujeres que han determinado con sus ideas e invenciones los ms sobresalientes logros. A continuacin se hace una sntesis de la evolucin de los artefactos de cmputo, desde la antigedad hasta nuestros das. Ms detalles en la pgina web http://xue.unalmed.edu.co/~walvarem/. ANTIGEDAD. Primer sistema de cmputo: la cuenta con los dedos (de ah la palabra dgito). El baco (o Soroban) emergi hace unos 500 aos y es considerado como el aparato de cmputo ms antiguo. Los Sistemas Numricos ideados por los Babilonios, Los Egipcios y Los Indes constituyen las races del Sistema de Numeracin Internacional usado en los albores del siglo XXI.
FIGURA 1.1 El baco, considerado como el artefacto ms antiguo de clculo.

Son caractersticas bsicas de este sitema: (a) disponer de slo diez guarismos (0 al 9) para representar cantidades; (b) la base es 10, por lo caul cada cifra dentro de un nmero est multiplicada por una potencia de 10; (c) el valor relativo de la cifras depende de su posici; (d) el uso del cero para representar la ausencia de cantidad. As, por ejemplo, 4054 se expresa de derecha a izquierda, vista de frente-como 4 x 100 + 5x101 + 0x102 + 4x103. Otros Sistemas Numricos utilizados son el Binario (base 2), el Octal (base 8), el hexadecimal (base 16) y el romano (para nomenclatura escrita y otros usos culturales). MEDIOEVO. Durante la edad Media, especialmente en Europa, se emplearon diversos dispositivos mecnicos de clculo. La sumadora mecnica de Pascal, 1623-1662, (La Pascalina, figura adjunta) se considera tradicionalmente como el primer artefacto mecnico para calcular.
FIGURA 1.2 La Pascalina, sumadora mecnica ideada por Blas Pascal.

En 1694 Gottfried Wilhem von Leibtnitz (1646-1716) perfeccion la sumadora de Pascal, logrando un artefacto de clculo mecnica que efectuaba sumas y multiplicaciones. Estos dos inventos sirvieron de base para muchos otros artefactos de clculo que efectuaban las operaciones bsicas de la Aritmtica. ERA INDUSTRIAL. Slo hasta 1820 las calculadoras mecnicas ganaron popularidad y un uso ms amplio. El Arithmetro, de Cahrles Xavier Thomas de Colmar poda sumar, restar, multiplicar y dividir. Se us ampliamente hasta la Primera Guerra

__________________________________________________________________________________________ walvarem@unalmed.edu.co Pgina 3 Clase# 1.- Evolucin y Desarrollo de los Computadores

Ingeniero William Alvarez Montoya http://www.unalmed.edu.co/~walvarem/ 02/02/07 ____________________________________________________________________________________________ Mundial. Charles Babbage, en Inglaterra, propuso el diseo de dos artefactos de clculo: La Mquina Diferencial y La Mquina Analtica. sta ltima se considera en su diseo- la precursora de los computadores actuales.
FIGURA 1.3 Una seccin de la Mquina Diferencial diseada por Charles Babbage en Inglaterra.

Las rutinas de programacin de esta mquina las ide Ada Augusta Byron, quien es considerada la primera persona en programar un computador. Hacia 1890 el gobierno de Estados Unidos, USA, contrat el procesamiento de la informacin del censo con Herman Hollerith quien ide un tipo de mquina electromecnica, basada en tcnicas de tarjeta perforada, que hizo mucho ms eficientemente los clculos y en muchsimo menos tiempo. Esto marc el inicio de toda una industria de procesamiento de datos, especialmente con la empresa que Hollerithn y sus asociados fundaron, la que despus se convirti en IBM (International Business Machines). EN EL SIGLO XX. . Vannevar Bush (1890-1974) desarroll una calculadora para solucionar ecuaciones diferenciales, en 1931. La mquina poda resolver ecuaciones diferenciales tan complejas, que dej asombrados tanto a cientficos como a matemticos.
FIGURA 1.4 Computador ENIAC en 1946.

Sin embargo, dicha mquina era demasiado engorrosa pues requera cientos de ruedas y poleas para representar los nmeros y sus diversas relaciones. John V. Atanasoff (nacido en 1903), un profesor del Iowa State College (llamado ahora Iowa State University) y un estudiante de postgrado que lo asista, Clifford Berry, envisionaron un computador electrnico que aplicaba el lgebra de Bool en su circuitera. Este enfoque se basaba en los trabajos del matemtico ingls del siglo 19 George Boole (1815-1864), quien dise el sistema binario del algebra y de la lgica simblicas, estableciendo que cualquier ecuacin o relacin matemtica puede dar un resultado que sea falso o verdadero (de ah, su naturaleza binaria).
FIGURA 1.5 Computador electromecnico, a mediados del siglo XX

Extendiendo este concepto a los circuitos electrnicos en la forma apagado/encendido (on/off), Atanasoff y Berry desarrollaron el primer computador electrnico alrededor de 1940. Su proyecto, no obstante, se qued sin apoyo financiero y dicho aporte tecnolgico fue rpidamente sobrepasado por otros proyectos similares de otros grupos de cientficos e ingenieros. Se haba iniciado la etapa electrnica del proceso de datos, cuyos desarrollos an continan. Todos estos aportes han convergido para estructurar la mquina denominada computador cuyos componentes se esquematizan en las figura mostrada. Surgi tambin la Informtica o Computacin, conjunto de conocimientos cientficos y de tcnicas que hacen posible el tratamiento automtico de la informacin por medio de computadoras. La informtica combina los aspectos tericos y prcticos de la ingeniera, electrnica, teora de la informacin, matemticas, lgica y comportamiento humano. Los aspectos de la informtica cubren desde la programacin y la arquitectura informtica hasta la inteligencia artificial y la robtica. Las industrias de Hardware (componentes fsicos, microprocesadores) y de Software (programas) se han desarrollado en forma acelerada, de tal suerte que no existe ningn mbito empresarial, gubernamental, social, familiar y profesional exento de la influencia de estas tecnologas.
FIGURA 1.6 Computador de la segunda generacin.

__________________________________________________________________________________________ walvarem@unalmed.edu.co Pgina 4 Clase# 1.- Evolucin y Desarrollo de los Computadores

Ingeniero William Alvarez Montoya http://www.unalmed.edu.co/~walvarem/ 02/02/07 ____________________________________________________________________________________________ Desde la dcada de 1940s se han desarrollado varias generaciones de computadores: (i) (1945 1956) De estructura electro-mecnica principalmente, implementaron el diseo de Babbage de su Mquina Analica; (ii) (1957 1963) Se involucr el invento del transistor, lo que compact ms los equipos, los hizo ms seguros y confiables, y se inici un gran auge de aplicaciones comerciales, cientficas y militares, y se basaban en su diseo interno en los modelos de la Fsica del Estado Slido; tambin tenan Sistema Operativo y se cimenzaron a emplear Lenguajes de Programacin de Computadores como el FORTRAN orientado hacia aplicaciones en Ingeniera- y el COBOL orientado hacia aplicaciones comerciales; (iii) (1964 1971) Mquinas basadas en circuitos integrados, lo cual elimin gran parte de la disipacin trmica; se hicieron mucho ms compactos; grandes mejoras en los Sistemas Operativos y en los Lenguajes de Programacin, en los dispositivos de almacenamiento; primeras aplicaciones tcnicas y comerciales a gran escala; (iv) (1971 _ Presente) Computadores basados internamente, en la microelectrnica- en grandes escalas de integracin, con miles de millones de componentes electrnicos en un solo chip, Sistemas Operativos y entornos visuales interactivos de programacin, amplia y profunda utilizacin en todas las reas del saber humano; (v) (Presente Futuro) Los computadores inteligentes, mediante el perfeccionamiento de tcnicas de Inteligencia Artificial, y otras tcnicas avanzadas del Software.
FIGURA 1.7 Sistema de Cmputo de la tercera generacin. Microelectrnica, Programacin

FIGURA 1.8 Esquema Hardware/Software

del

cambio

dramtico

en

Tecnolgicamente, en las mltiples reas de la computacin tanto hardware como Software- se ha avanzado en las ltimas 6 dcadas muchsimo ms que en los ltimos 10 milenios. Las tecnologas basadas en microprocesadores (chips) han permeado todo tipo de industria y de esferas de la ciencia, del conocimiento, de las artes, de los negocios, de las sociedades y de culturas en general. La programabilidad de los computadores es una de sus principales carctersticas que los hace tan tiles.

A o 2 0 0 7

FIGURA 1.9 Ejemplo de telfono celular. Est basado en la tecnologa de microprocesadores.

Desde 1981, los computadores personales, de escritorio, porttiles, de mano, calculadoras programables estn llevando a ms y ms personas, en ms y ms ambientes de trabajo, sociales, de negocios, cientficos, las ingentes posibilidades de la programacin. Y desde 1990, La Internet ha completado todo un contexto de revolucin tecnolgica, de grandes proporciones, a escala mundial, cuyos efectos estn moldeando nuevas formas de pensar, de trabajar y estudiar, de hacer negocios, etc. Las aplicaciones de los microprocesadores son innumerables, abarcando prcticamente toda esfera del saber humano. Est en desarrollo la tecnologa nanotrnica, es decir el diseo y aplicacin de mquinas de tamao molecular que promete revolucionar todo lo que hasta ahora se ha hecho con la tecnologa computacional.

1.2 IMPORTANCIA DE LOS COMPUTADORES


Los computadores y las redes de computadores se han convertido en la herramienta imprescindible en toda rea tcnica y de ingeniera. Por lo cual, todo tcnico y profesional debe manejar y aplicar eficientemente dicha herramienta, en sus reas propias de profesin. Las necesidades y exigencias de las empresas, de los negocios, de las sociedades actuales, requieren que los ingenieros sean ms eficientes en sus labores. Las __________________________________________________________________________________________ walvarem@unalmed.edu.co Pgina 5 Clase# 1.- Evolucin y Desarrollo de los Computadores

Ingeniero William Alvarez Montoya http://www.unalmed.edu.co/~walvarem/ 02/02/07 ____________________________________________________________________________________________ herramientas computaciones, computadores, entornos y lenguajes, permiten lograr mayores niveles de eficiencia en el desarrollo tcnico personal. Los computadores justifican su uso en las ingenieras, por ejemplo, por la necesidad de efectuar clculos repetitivos y complejos que involucran grandes volmenes de datos con un tratamiento matemtico intensivo. Adems, los computadores y las redes de computadores- proporcionan velocidades de proceso a tiempo real con precisiones de clculo que diflcilmente en forma manual se puede lograr. Estas exigencias son cada vez ms fuertes porque hay una megatendencia de fondo muy clara: las empresas y los pases estn evolucionando hacia organizaciones cimentadas en el aprendizaje continuo, en las cuales la informacin y el conocimiento, basados en el Talento Humano, son los recursos estratgicos ms importantes que potencian a los otros recursos organizacionales (tierra, capital y trabajo).
FIGURA 1.10 La Internet est perfilando nuevas formas del trabajo, del estudio, de los negocios.

El boom tecnolgico inciado con los computadores, desde mediados del siglo XX, ha permeado todas las actividades de los hogares, los individuos, los gobiernos, las empresas, las ciencias. Prcticamente, no hay quehacer humano que pueda sustraerse a esta influencia. Sin embargo, la tecnologa propicia igualmente- delitos e inseguridades. Los virus informticos son el pan de cada da de los computadores y de las redes. El fraude electrnico es una de las nuevas modalidades delictivas. Los efectos sobre los organismos y sobre la psicoemotividad de las personas estn moldeando nuevas categoras de dolencias y de enfermedades laborales. De ah, la necesidad de que todo estudiante se apersone de los mtodos eficientes de estudio que le permitirn ser ms productivo durante su estada en la universidad, y que redundar en un mejor desempeo como profesional.
FIGURA 1.11 Didctica de las actividades de estudio, para lograr un aprendizaje eficiente.

En la pgina web http://xue.unalmed.edu.co/~walvarem/ encontrar ms detalles sobre los mtodos eficientes de estudio. En particular, y a manera de introduccin, se recomienda la lectura, el estudio, y aplicacin de las tcnicas explicadas en el documento Cmo aprender y estudiar una disciplina, usando los conceptos y herramientas del Pensamiento Crtico3, por Richard Paul y Linda Elder. Una clave fundamental es la de adquirir una actitud proactiva hacia el proceso de aprender, logrando desarrollar la capacidad de aprender a aprender. Un buen complemento de esta seccin est conformado por las lecturas adicionales del captulo 1 en la pgina web, y por las diapositivas de la clase #1 en las cuales se presenta el esquema de las evaluaciones y las referencias a utilizar.

1.3 EL ENFOQUE ALGORTMICO


El enfoque basado en algoritmos, para la solucin de problemas en Ingeniera, permite resolver problemas complejos, potenciando as el enfoque meramente ecuacional. Un algoritmo se conceptualiza en su forma ms simple- como una secuencia lgicamente ordenada de operaciones, tareas, o procesos, que permiten lograr un resultado til, que generalmente ayuda a la solucin de un problema. La estructuracin de algoritmos permite realizar el anlisis lgico-conceptual de un problema y poder as- anticipar posibles soluciones. En cierta medida, el enfoque algortmico facilita modelar la realidad o una parte de ella- de una manera que gua a la solucin de problemas en Ingeniera, convirtiendo la herramienta del computador en una especie de laboratorio virtual, en el cual se puede experimentar con diferentes posibilidades de los parmetros del problema en cuesttin. En trminos generales, la modelacin y en particular la modelacin matemtica- forma parte del conjunto nuclcear de tcnicas de solucin de problemas en reas tcnicas y de Ingeniera. La elaboracin de algoritmos tiene tanto de arte como de ciencia. Existe una teora en crecimiento y todo un bagaje de experiencias. Hacer un buen algoritmo exige abstraccin, lgica, imaginacin, creatividad, dominio de las 0
3

2003 Fundacin para el Pensamiento Crtico http://www.criticalthinking.org .

__________________________________________________________________________________________ walvarem@unalmed.edu.co Pgina 6 Clase# 1.- Evolucin y Desarrollo de los Computadores

Ingeniero William Alvarez Montoya http://www.unalmed.edu.co/~walvarem/ 02/02/07 ____________________________________________________________________________________________ tcnicas de programacin, y dominio del rea del problema que se intenta resolver. Cuando un algoritmo se expresa en la sintaxis de un lenguaje de programacin de Computadores, entonces se le denomina un programa. Para elaborar un algoritmo se expresaa secuencia lgica de operaciones (tareas, oprocesos) que llevan a la solucin de un problema. Considerando todas las posibilidades lgicas del problema en cuestin. Y analizando, y expresando matemticamente, las relaciones y restricciones pertinentes al problema. (Para ms informacin sobre el concepto de algoritmo vase el captulo 2 de la documentacin en PDF).

CONSTRUCCIN DE ALGORITMOS
Un algoritmo se elabora (construye) mediante ciertos componentes bsicos llamados ESTRUCTURAS. Desde la dcada de 1960s se vi que este enfoque, aunque sencillo, es muy til para representar secuencias de procesos (tareas, actividades, operaciones). Inicialmente, se plantearon y se aplicaron, en la solucin de problemas a travs de computadores, tres estructuras automticas bsicas: SECUENCIA, SELECCIN LGICA, ITERACIN (REPETICIN). Mediante estas tres estructuras es posible representar una gama muy amplia de algoritmos. La estructura de SECUENCIA es la estructura bsica de los algoritmos secuenciales, ya que todo algoritmoes una SECUENCIA LGICA de ciertas operaciones ( procesos, o tareas, o eventos). En la solucin de un problema existe una secuencia general, y dentro de ella muchas otras secuencias ms detalladas. La estructura de SELECCIN LGICA permite elegir entre dos o ms vas de accin (o alternativas). En un problema especifco, el conjunto de ALTERNATIVAS puede ser muy extenso. La estructura de ITERACIN es la REPETICIN de una o ms operaciones (o tareas, o procesos, o eventos). De antemano, puede conocerse o no cuntas veces se repetirn las operaciones. El conjunto de operaciones que se repite se llama RANGO DE ITERACIN. Si se conoce exactamaente cuntas veces se repite el rango de iteracin, entonces la iteracin se llama iteracin definida; de lo contrario, recibe el nombre de iteracin indefinida.
Figura 1.12 Etapas bsicas en la elaboracin de algoritmos secuenciales. Generalmente, en la solucin de un problema es posible identificar y representar un cierto conjunto de datos (constantes y/o variables), imprescindibles para efectuar clculos y obtener otros resultados; tales datos se llaman los datos de entrada. Con estos datos de entrada, y mediante ciertos mecanismos, son capturados y puestos a disposicin del algoritmo, el cual realiza con ellos una especie de transformacin mediante relaciones lgicas y operaciones de clculo; dichas operaciones se denominan de procesamiento. Como resultado de la etapa de procesamiento, el algoritmo suministra otros datos (constantes y/o variables) que constituyen la salida, o el resultado del algoritmo. Con los datos de salida se realiza un proceso de retroalimentacin, basado en el seguimiento exacto del flujo lgico del algoritmo (prueba de escritorio) para determinar si los resultados son congruentes con el anlisis y el diseo elaborados previamente, y con los resultados esperados. Esto es precisamente, una parte muy importante del proceso de diseo en Ingeniera4. EJEMPLOS DE CONSTRUCCIN DE ALGORITMOS Como un primer ejemplo, considrese el problema de solucionar ecuaciones cuadrticas de la forma: AX2 + BX + C = 0. El anlisis es muy simple. Del lgebra5 se sabe que si se conocen los coeficientes A, B, C es posible calcular las races aplicando la frmula correspondiente, mostrada en la figura 1.13. FIGURA 1.13 Frmula para hallar las races de una ecuacin cuadrtica de la forma AX2 + BX + C = 0. B B 2 4 AC X = El algortimo es muy simple: (a) Conocer los coeficientes A, B, C; (b) Aplicar la frmula, obteniendo las 2 A races. La figura 1.14 lo ilustra. FIGURA 1.14 Algoritmo secuencial para calcular las races de una ecuacin cuadrtica AX2 + BX + C = 0. Para calcular X1 se emplea la frmula X1 = (-B + Sqr(B^2 4*A*C))/(2*A). Y para calcular X2 se emplea la frmula siguiente: X2 = (-B - Sqr(B^2 -4*A*C))/(2*A). Aqu se emplea directamente la notacin algebrica usual para denotar variables, empleando, tambin, los parntesis para agrupar; Sqr() es una funcin de librera estndar que obtene raz cuadrada; los operadores aritmticos corresponden a las cuatro operacionea aritmticas (vase el capitulo 3 de la

0
Beakley, George C.; Evans, Donovan L.; Keats, John Bertrand: ENGINEERING, An Introduction to a Creative Profession, Macmillan Publishing Company, New York, 1986, 0-02-307090-0. 5 Baldor, Aurelio: lgebra, Editorial Norma, 1990.
4

__________________________________________________________________________________________ walvarem@unalmed.edu.co Pgina 7 Clase# 1.- Evolucin y Desarrollo de los Computadores

Ingeniero William Alvarez Montoya http://www.unalmed.edu.co/~walvarem/ 02/02/07 ____________________________________________________________________________________________


documentacin en PDF). Para sumar, el signo ms (+), para restar el signo menos (-); para multiplicar el asterisco (*); para dividir la diagonal (/), para asignar contenido se emplea el signo igual ( = ). Otros ejemplos adicionales de la elaboracin de algoritmos secuenciales se encuentran en la pgina web en formato HTML (problemas resueltos), y en la documentacin en formato PDf en el captulo 2.

1.4 LA PRCTICA #1 ASIGNACIN Y CONCATENACIN


En esta primera sesin prctica se resuelven problemas muy sencillos, aplicando dos conceptos bsicos ASIGNACIN, y CONCATENACIN. Mediante la instruccin de ASIGNACIN se le da contenido (valor), o se cambia el contenido, a una variable, como en las frmulas empleadas para calcular X1, X2, empleando la ecuacin de la figura 1.14. El operador de asignacin es el signo igual ( = ). Como cada variable que se emplea en un algoritmo es, realmente, una localizacin fsica en la memoria interna de mquina, entonces la asignacin que se hace es una ASIGNACIN DE MEMORIA. Para realizar esta prctica se sigue la GUA DE PRCTICA #1 que se encuentra disponible en la pgina web, y que en el momento de estar en la prctica, utilizando el computador, entonces se descarga de la carpeta respectiva, indicada en el instructivo mismo de la prctica. En este mismo instructivo estn todas las indicaciones para realizar la prctica. Tambin se encuentran tareas extraclase a desarrollar. En esta prctica tambin- se comienza el estudio, familiarizacin y utilizacin del ENTORNO DE DESARROLLO DE APLICACIONES que se utiliza como herramienta para implementar los algoritmos en un Lenguaje de Programacin de Computadores. Este entorno se muestra en la figura 1.15 y corresponde a la versin 6.0 del Visual Basic6. Ms detalles en el captulo 3 de la documentacin en PDF.

Figura 1.15 Escritorio principal del entorno de desarrollo de aplicaciones Visual Basic 6.0 (1) es el formulario base de diseo, en el cual se dibuja la interfaz; (2) es la ventana exploradora de proyectos; (3) es la ventana de propiedades; (4) es la vcaja de herramientas, o caja de controles; (5) es la ventana de distribucin; (6) comprende la barra de ttulo y control, el men principal tipo barra, y la barra de herramnientas.

El proceso de elaborar un proyecto, en este entorno, consta de tres tiempos: (1) En el tiempo de diseo se dibuja la interfaz, se establecen propiedades de los objetos, y se escribe el cdigo 2 5 fuente (el algoritmo escrito en la sintaxis del Lenguaje de Programacin). (2) Tiempo de ejecucin, en el cual se ejecuta 3 4 efectivamente la programacin elaborada a travs de la interfaz y de los programas escritos; el algoritmo debe recibir los datos de entrada, efectuar los clculos respectivos, y suministrador los resultados. Si hay errores se llega el tercer tiempo. (3) Tiempo de depuracin, en el cual se corrigen los errores que se presentan en la ejecucin del proyecto; normalmente, para que se reciban las correcciones hechas, se debe detener el tiempo de ejecucin y reiniciarlo.

1.5 TAREAS EXTRACLASE


Elaborar algoritmos para los siguientes problemas de la problemateca: 2, 3, 4, 5, 30, 31, 32, 33, 34, 36, 39, 40. Del texto de Chapra

& Canal, elaborar algoritmos para los problemas 1.7, 1.8, 1.12, 1.13, 2.1, 2.5, 2.8, 2.9, 2.10, 2.11, 2.13, 2.14, 2.15. Para los algoritmos diseados, elaborar proyectos Visual Basic, diseando las interfaces y ejecutando la programacin. Realizar el estudio del documento Cmo aprender y estudiar una disciplina, usando los conceptos y herramientas del Pensamiento Crtico7. Seguir, por lo menos, varios de los 18 consejos iniciales, con miras a adquirir mtodos ms eficientes de estudio.

0
Marca registrada de Microsoft Corporation. Esta versin se utiliza bajo licencia, dentro del convenio existente entre la Universidad Nacional y la empresa Microsoft (Campus Agreement). 7 2003 Fundacin para el Pensamiento Crtico http://www.criticalthinking.org . (Op. Cit.).
6

__________________________________________________________________________________________ walvarem@unalmed.edu.co Pgina 8 Clase# 1.- Evolucin y Desarrollo de los Computadores

Notas de Clase 3004578 Algoritmos y Programacin 02/02/07 Ingeniero William Alvarez Montoya http://www.unalmed.edu.co/~walvarem/ ____________________________________________________________________________________________

Clase #2
ESTRUCTURAS DE SECUENCIA Y SELECCIN LGICA
Evolution. Fuente: R.B. Muhama.( Kent State University, 2004,.http://www.cs.kent.edu/~rmuhamma/)

Uno de los primeros logros de la Teora de Algoritmos fue el de establecer y aplicar las estructuras automticas bsicas mediante las cuales es posible expresar y representar una gama muy amplia de algoritmos. Ya hacia finales de la dcada de 1960's, en 1967 y 1968, se reunieron grupos de expertos en Europa y Norteamrica para tratar de formalizar un enfoque slido de ingeniera, basado en la lgica y en la matemtica, para la emergente disciplina de elaborar programas para computador, usualmente denominada Ingeniera de Software, o Ingeniera de Programacin de Computadores. Desde estos primeros esfuerzos se puedieron identificar tres estructuras bsicas presentes en muchos procesos naturales y artificiales: secuencia, seleccin lgica e iteracin. Surgi, as, un enfoque estructurado para programar, denominado Programacin estructurada, cuyo boom se di en la dcada de 1970's y que ha sido la base para los otros paradigmas tecnolgicos que surgieron en los aos 1980's y 1990's.

2.1 LA ESTRUCTURA

DE SECUENCIA

La estructura de secuencia establece el orden lgico de ejecucin de los procesos u operaciones dentro de un algoritmo. Para nuestro caso, en la cultura occidental, dicho orden es de arriba a abajo y de izquierda a derecha. Cada proceso se representa por medio de un rectngulo.
FIGURA 2.1 Conceptualizacin diagramtica de la estructura de secuencia.

Antes de poderse ejecutar la serie de operaciones Sn es preciso ejecutar la serie ordenada S1, S2, S3, ..., SnA su vez, cada una de la serie de operaciones Si se ejecuta con el mismo sistema de orden lgico: de arriba a abajo y de izquierda a derecha. Incluso, dicho sistema lgico de ejecucin est implementado a nivel de hardware (microprocesadores y circuitos lgicos) y a nivel de software (lenguajes de
1.

programacin).

2.2 PROGRAMA DE COMPUTADOR


Un programa para computador es una secuencia lgica y ordenada arriba abajo de instrucciones en un lenguaje especfico. Cada instruccin es una secuencia lgica y ordenada de izquierda a derecha de comandos y otros elementos del lenguaje. Esta secuencia lgica de ejecucin es automtica y as est implementada en los entornos visuales que se utilizan elaborar aplicaciones (proyectos de software) que automatizan las labores diarias en las empresas y en la vida cotidiana.

2.3 REPRESENTACIN DE UN ALGORITMO


Existen varias tcnicas para representar los algoritmos. Algunas de ellas son: (i) - Lenguaje natural estructurado que utiliza expresiones del lenguaje de una forma tal que es posible seguir la secuencia lgica del algoritmo; (ii) - Pseudo Cdigo (o PCdigo); (iii) - Diagramacin Libre ; (iv) - Diagramacin Estructurada . La representacin diagramtica que se seguir empleando es la correspondiente al diagrama rectangular estructurado de lgica, o simplemente diagrama de lgica, que utiliza un rectngulo para incluir los diferentes procesos secuenciales, de seleccin lgica o __________________________________________________________________________________________ walvarem@unalmed.edu.co Pgina 9 Clase# 2.- Estructuras de Secuencia y Seleccin Lgica

Notas de Clase 3004578 Algoritmos y Programacin 02/02/07 Ingeniero William Alvarez Montoya http://www.unalmed.edu.co/~walvarem/ ____________________________________________________________________________________________ de iteracin. Tambin se utilizar su equivalente de P-cdigo estructurado en combinacin con las instrucciones sintcticas del lenguaje de programacin empleado (Visual Basic). Este sistema de representacin de los algoritmos tambin se llama diagrama N-S en honor a sus inventores y propulsores. Varias ventajas posee este tipo de diagramacin algortmica:
Es compacto, permitiendo representar y visualizar en poco espacio el flujo lgico de un algoritmo. Obedece a la norma heurstica en el rea informtica, segn la cual un algoritmo ha de estructurarse en bloques lgicos coherentes cuya visualizacin no exija ms de una pgina tamao carta. Esto es as debido al condicionamiento cultural de occidente, en el cual desde las ms tempranas etapas del proceso educativo se nos capacita para entender pginas de datos, de textos. Es visual, obedeciendo a la regularidad emprica de que una imagen vale ms que mil palabras. Y actualmente, se ajusta a los condicionamientos culturales de la imagen como medio portador e instrumentador de informacin. Induce al pensamiento estructurado, base de todas las corrientes tecnoinformticas de las ltimas dcadas. Permite utilizar las estructuras automticas bsicas de una manera concisa y coherente. Es una herramienta muy til para expresar los procesos de refino en la estructuracin de una solucin algortmica para un problema especfico. Facilita la estructuracin modular de los algoritmos, siendo cada mdulo, o bloque, un procedimiento o una funcin que puede representarse diagramticamente en forma independiente. Al ser una notacin estndar que se ha utlizado en las ltimas cuatro dcadas, es un lenguaje fcilmente reconocible y aplicable en muchas situaciones prcticas dentro de las organizaciones. Tambin, diversos manuales e instructivos emplean este tipo de representacin. Y es especialmente til para las personas que se inician en la programacin de computadores, por cuanto los induce al anlisis y diseo estructurado de algoritmos.

2.4 LA ESTRUCTURA

DE SELECCIN LGICA

Es la representacin algortmica de la serie de procesos lgicos de pensamiento que permiten tomar una decisin. Corresponde a la expresin sencilla de opcionalidad: Si ... Entonces, que es la base de la eleccin de una alternativa especfica, tanto a nivel conceptual como prctico. Diagramticamente se representa como se ilusdra en la figura 2.2, mostrada a continuacin:
If (Clog)Then '... operaciones Sv Else ' ... operaciones Sf End If Sintaxis propia del lenguaje. La sentencia If evala una condicn lgica, Clog; si el valor de verdad de Clog es cierto, entonces se ejecuta el conjunto de opearciones Sv; de lo contrario, se ejecutar Sf. Slo se ejecuta una de las d i T d If i E d If FIGURA 2.2 Estructura de Seleccin Lgica: (a) - Diagrama estructurado; (b) Sintaxis en Visual Basic.

(a)

(b)

El simbolo diagramtico para la Estructura de Seleccin Lgica consta de un rectngulo, dividido proporcionalmente- en tres rectngulos: uno superior y dos inferiores. El rectngulo superior se divide a su vez- en tres tringulos, por medio de dos lneas que se originan en el extremo superior del segmento que separa los dos rectngulos inferiores. En el tringulo del centro va la condicin lgica, y en los otros dos tringulos respectivamente- sus valores de verdad. En cada rectngulo inferior van las correspondientes secuencias de operaciones a ejecutar segn el valor de verdad que adopte la condicin lgica. Esta estructura es automtica, y tambin se llama de decisin lgica, o de transferencia de control, y permite elegir uno de varios caminos lgicos a seguir dentro de un algoritmo. En el esquema de la figura anterior, que es la representacin diagramtica de la estructura, CLog es una condicin lgica que se evala. Si dicha evaluacin da verdadero, o V, entonces se ejecuta la serie de operaciones Sv; si la evaluacin da falso, o F, entonces se ejecuta la serie de operaciones Sf. A la derecha se presenta la codificacin como se escribe en Visual Basic, por ejemplo; la comilla simple significa comentarios (ignorados a tiempo de ejecucin). En un caso particular, por ejemplo si la condicin lgica es A > B, slo se ejecutar una de las dos posibilidades; nunca las dos a la vez, como se muestra en el diagrama y programa siguientes.
If (A > B)Then '... operaciones Sv MAX = A Else ' ... operaciones Sf MAX = B End If

Aqu la condicin lgica evaluada, Clog, es A > B; si es cierta, entonces se ejecuta la asignacin MAX = A ( conjunto de operaciones Sv); de lo contrario, se ejecutar la asignacin MAX = B (conjunto de operaciones Sf). FIGURA 2.3 Un ejemplo de la utilizacin de la estructura de seleccin lgica: (a) Diagrama estructurado; (b) Programa Visual Basic.

(a) (b) __________________________________________________________________________________________ walvarem@unalmed.edu.co Pgina 10 Clase# 2.- Estructuras de Secuencia y Seleccin Lgica

Notas de Clase 3004578 Algoritmos y Programacin 02/02/07 Ingeniero William Alvarez Montoya http://www.unalmed.edu.co/~walvarem/ ____________________________________________________________________________________________ Si la condicin lgica es verdadera, entonces se ejecutar la instruccin MAX = A; si la condicin lgica es falsa, entonces se ejecutar la instruccin MAX = B. Los comentarios slo sirven para documentar, esplicar o describir, los programas con el fn de que llas personas los puedan entender mejor. Despus de que se haya ejecutado la serie de operaciones pertinente al resultado de la evaluacin de la condicin lgica, la secuencia lgica de ejecucin continuar con la instruccin que sigue a la seleccin lgica. MAX = A es una asignacin de memoria, pues las variables MAX, A son una localizaciones de memoria interna; el signo igual (=) es el operador de asignacin de memoria, y su funcionalismo consiste en evaluar la expresin a su derecha (puede ser toda una frmula compleja) y el resultado asignarlo a la variable ubicada a su izquierda (en este caso MAX). Como resultado, la variable MAX cambia su contenido, pues la asignacin de memoria es destructiva. Esta estructura, as representada, es automtica, es decir que slo es preciso utilizar la sintaxis diagramtica mostrada para expresar todo el proceso de seleccin lgica que internamente la mquina realizar. La estructura de seleccin lgica puede efectuar mltiples evaluaciones de una condicin lgica o de una variable, como se ilustra en el diagrama y programa siguientes:
If (K = 1)Then '... operaciones A ElseIf (K = 2)Then ' ... operaciones B ElseIf (K = 3)Then ' ... operaciones C ElseIf (K = 4)Then ' ... operaciones D ElseIf (K = 5)Then ' ... operaciones E Else ' ... operaciones F End If

Aqu la condicn lgica evaluada, Clog, es K ; si K es 1, entonces se ejecutan las operaciones A; si es 2, las operaciones B; y as sucesivamente. La sentencia ElseIf permite evaluar cada una de las condiciones lgicas. La sentencia Else ejecutar el conjunto de operaciones correspondientes a otro valor de K.

FIGURA 2.4 Estructura de Seleccin Mltiple. (a) Diagrama estructurado; (b) Programa en Visual Basic.

(a)

(a)

En dicho caso, se dice que es de ramificacin mltiple, cuyo esquema diagramtico es el que se ilustra. Si la variable K toma el valor de 1, entonces se ejecutar la serie de operaciones A; si toma el valor de 2, se ejecutar B, y as sucesivamente. Esta estructura tambin es automtica, y en los lenguajes de programacin de computadores tiene varias implementaciones, como se ver ms adelante. Se aconseja utilizar la estructura If ... ElseIF ... End If cuanto se presentan ramificacin mltiple en los algoritmos y programas, por cuando slo es necesario cerra un If. Ejemplo #1 de seleccin lgica: Dados tres valores numricos, determinar cul es al mayor de ellos. Solucin: Sean A, B, C los tres valores numricos. El mayor de los tres es el que sea a la vez- mayor que los otros dos. Esto plantea tres
posibilidades: (1) Si A > B y a la vez A > C, entonces el mayor es A; (2) si B > A y a la vez B > C, entonces el mayor es B; (3) si C > A y a la vez C > B, entonces el mayor es C. Este es el algoritmo bsico (vase la figura 2.5).

If (A > B And A > C)THEN Text4 = A es el mayor ElseIf (B > A And B > C)Then Text4 = B es el mayor ElseIf(C > And C > B)Then Text4 = C es el mayor End If (a) (b)

Slo se presenta la estructura de Seleccin Lgica. La instruccin LEER y el uso de un control tipo cajatexto, Text4, se explican ms adelante. En el captulo 3 se tiene un resumen de la sintaxis del lenguaje de programacin.

FIGURA 2.5 Ejemplo # 1: (a) Diagrama estructurado de lgica; (b) Programa en Visual Basic.

__________________________________________________________________________________________ walvarem@unalmed.edu.co Pgina 11 Clase# 2.- Estructuras de Secuencia y Seleccin Lgica

Notas de Clase 3004578 Algoritmos y Programacin 02/02/07 Ingeniero William Alvarez Montoya http://www.unalmed.edu.co/~walvarem/ ____________________________________________________________________________________________
En este ejemplo, figura 2.5, se presenta un algoritmo dentro de varios posibles. El programa (codificacin) tambin admite varias posibilidades. Puede usted encontrar otras variantes?. En el programa se ha empleado el operador lgico And para concatenar dos relaciones lgicas (vase en el captulo 3 de la documentacin online leseccin sobre los operadores). En las guas prctica#1 y prctica#2 se explica sobre los diferentes controles que se manejan en Visual Basic 6.0.

Ejemplo #2 de seleccin lgica: Dados tres segmentos de lnea recta, determinar si forman un tringulo, y decir cul tipo de
tringulo es: equiltero, issceles o escaleno. Solucin: De la Geometra Euclidiana se sabe que en todo tringulo cada lado es mayor que la suma de los otros dos. Adems, el tringulo equiltero tiene sus tres lados iguales, el issceles slo tiene dos lados iguales, y en el escaleno los tres lados son diferentes entre s. El algoritmo, entonces, tiene los siguientes pasos: 1. Conocer los tres segmentos de recta (saber su tamao en alguna unidad de medida). (Nota: A este proceso se le llama genricamente LEER). 2. Si se cumple a la vez que A > B + C y B > A + C y C > A + B, entonces los tres segmentos forman triangulo; de lo contrario, no forman tringulo y el algoritmo termina. 3. Si los tres segmentos forman tringulo, entonces si A = B y A = C, el tringulo es equiltero; si A = B pero A C, A = C pero A B, B = A pero B C, B = C pero B A, C = A pero C B, C = B pero C A, el tringulo es issceles; si A B y a la vez B C, el tringulo es escaleno.

En este ejemplo es necesario utilizar una expresiones lgicas compuestas (vase el captulo 3). Por ejemplo, para determinar si los tres segmentos forman tringulo, la variable lgica T tendra asignada la siguiente expresin lgica:

T = (A > B + C) And (B > A + C) And (C > A + B) Que el evaluarse deber dar una de dos posibilidades: Falso (False) Verdadero (True). Entonces, se preguntara por el valor de verdad de la variable T. Para el caso de determinar el tipo de tringulo, pueden emplearse las variables lgicas Te para tringulo equiltero, Ti para tringulo issceles, Ts para tringulo escaleno, y cuyas expresiones lgicas asignadas seran: Te = (A = B) And (A = C), Ti = ((A = B) And (A <> C)) Or ((A =C ) And A <> B)) Or ((B = C) And B <> A) , Ts = (A <> B) And (B <> C) Un diagrama de lgica es el que muestra a continuacin, figura 2.6, en el cual para abreviar- se emplean las definiciones de T, Ti, Te, Ts especificadas.
T = (A > B + C) And (B > A + C) And (C > A + B) If(T)Then Te = (A = B) And (A = C) Ti = ((A=B) And A <> C) Or ((A=C) And A <>B) Or ((B=C) And B<>A) Ts = (A <>B) And (B <>C) If(Te)Then Txt4 = Tringulo equiltero ElseIf(Ti)Then Text4 = Tringulo issceles ElseIf(Ts)Then Ts = Tringulo escaleno End If Else Text4 = No hay Tringulo End If

(a) (b)

FIGURA 2.6 Ejemplo # 2: (a) Diagrama estructurado de lgica; (b) Programa en Visual Basic.

__________________________________________________________________________________________ walvarem@unalmed.edu.co Pgina 12 Clase# 2.- Estructuras de Secuencia y Seleccin Lgica

Notas de Clase 3004578 Algoritmos y Programacin 02/02/07 Ingeniero William Alvarez Montoya http://www.unalmed.edu.co/~walvarem/ ____________________________________________________________________________________________ Ejemplo nmero 3 de seleccin lgica Problema: En una promocin comercial, un almacen ha instalado en las cajas registradoras ciertas urnas de las cuales los usuarios pueden extraer, al momento de pagar su compra, una balota. Las balotes estn numeradas de 1 a 5. Si se extrae la balota con el nmero 1, entonces el descuento hecho al cliente es del 20%; si es la2, ser del 15%; si es la 3, es del 10%; si es la 4, ser del 5%; y si se extrae la balota nmero 5 no se da descuento. Elaborar un algoritmo, representado mediante un diagrama estructurado de lgica. Solucin: Puede emplearse una estructura de ramificacin mltiple, como se ilustra en la figura 2.7.
If (Balota = 1)Then D = 20 ElseIf (Balota = 2)Then D = 15 ElseIf (Balota = 3)Then D = 10 ElseIf (Balota = 4)Then D=5 ElseIf (Balota = 5)Then D=0 End If Text1 = Compra = & Str(C*(1-(D/100)))

La instruccin If .. ElseIf ... End If es especialmente apropiada para codificar en el lenguaje una ramificacin mltiple.

(a)

(b)

FIGURA 2.7 Ejemplo # 3: (a) Diagrama estructurado de lgica; (b) Programa en Visual Basic.

2.5 PASOS PARA PLANTEAR UN ALGORITMO


El Enfoque Algortmico es el concepto y la harramienta nuclear en las estrategias de solucin de problemas en Ciencias y en Ingeniera1. La utilizacin de computadores y de entornos computarizados permiten a los estudiantes interactuar activamente con los diferentes materiales de aprendizaje2, a su propio ritmo e inters, obteniendo realimentacin a tiempo real. El Enfoque Algortmico comparte la Metodologa bsica de solucin de problemas en reas tcnicas e ingenieras. Dicha Metodologa cosnta de las siguientes etapas3: 1. 2. 3. 4. 5. 6. Entender el problema. Identificar las constantes y variables (estructura de entrada y de salida). Identificar las restricciones y relaciones matemticas entre variables y constantes. Establecer una estrategia de solucin, elaborando un ALGORITMO, representado por medio de alguna tcnica pertinente. A partir del Algoritmo, que especifica el Proceso Lgico de Solucin del Problema, elaborar el Programa en un lenguaje de programacin de computadores. Ejecutar y depurar el programa con base en los resultados obtenidos. Anlisis de los resultados.

Segn el anlisis de resultados, en algunas categoras de problemas, habr que repetir desde la etpa 1 proceso denominado Refino- para depurar, mejorar, redisear, realimentar el algoritmo y sus especificaciones.

0
1

Grogono, Peter and Nelson, Sharon: Problem Solving and Computer Programming, 1985 (Op. Cit.) // MIT Open CourseWare: Introduction to Computer and Engineering Problem Solving, 2002 2007. // Fogler, H. Scott and LeBlanc, Steven E.: Strategies for Creative Problem Solving, 2nd Edition, 2007. 2 Fogler, Montgomery and Zipp, Comp, Appl. in Eng. Educ., Vol 1(1), p. 11-12, September/October 1992. 3 Engineering A Creative Profession..

__________________________________________________________________________________________ walvarem@unalmed.edu.co Pgina 13 Clase# 2.- Estructuras de Secuencia y Seleccin Lgica

Notas de Clase 3004578 Algoritmos y Programacin 02/02/07 Ingeniero William Alvarez Montoya http://www.unalmed.edu.co/~walvarem/ ____________________________________________________________________________________________

2.6 CONSTRUCCIN DE UNA INTERFAZ GRFICA DE USUARIO - PROYECTO


En Visual Basic, y entornos similares, se sigue una secuencia de etapas para disear una Interfaz Grfica de Usuario (o simplemente Interfaz) que efecte las operaciones de un algoritmo previamente diseado, conformando un proyecto que aceptar los datos de entrada, procesndolos segn el algoritmo y suministrando los resultados (la salida). Dichas etapas se estructuran en tres tiempos: (i) tiempo de diseo, en el cual se disea la interfaz y los procedimientos (programas) respectivos; (ii) tiempo de ejecucin, en el cual el interpretador Visual Basic ejecuta en memoria interna-las instrucciones de los diferentes procedimientos, suministrando los resultados; (iii) tiempo de depuracin, en el cual se corrigen errores que se presenten en la ejecucin del proyecto. Estos tres tiempos implican las siguientes actividades: Ubicar en un formulario los diferentes controles que correspondan a la estructura del algoritmo diseado. Establecer las propiedades (atributos) de los controles previamente ubicados, que determinan la apariencia de la interfaz propiamente dicha. Escribir los procedimientos (programas) que correspondan a las operaciones algortmicas a efectuar. Activar el tiempo de ejecucin. Interactuar con el proceso de depuracin de errores, si los hay. Obtener los resultados, en pantalla, en archivo, o en papel. Anlisis de los resultados.

En la figura 2.8 se ilustra el diseo de una interfaz para el problema del tringulo. En dicho problema, se trata de determinar si tres segmentos de recta forman un tringulo (vase el ejemplo #2).

Controles para la entrada de datos: un LABEL despliega texto; un TEXTBOX despliega y recibe datos. Control tipo BotonComando que contiene programacin Controles tipo TEXTBOX para desplegar los resultados.

FIGURA 2.8 Una Interfaz Grfica de Usuario diseada para el problema de determinar si tres segmentos de recta forman un tringulo. Los segmentos de recta se leen en sendos controles tipo cajatexto.

2.6 EL LENGUAJE DE PROGRAMACIN


Un Lenguaje de Programacin de Computadores es un entorno sintctico en el cual es posible suministrar las secuencias de instrucciones (procedimientos) correspondientes a las etapas lgicas de un algoritmo diseado. En trminos generales, un Lenguaje de Programacin de Computadores consta de los siguientes elementos4: (i) Un conjunto de caracteres (el alfabeto) que para Visual Basic y muchos lenguajes similares- son 256 caracteres, numerados del 0 al 255, lo que conforma la tabla ASCII American Standard Code for Information Interchange) de caracteres; (ii) Tipos de datos (entero, real, alfanumrico, lgico, objeto), variables, constantes, operadores; cada variable y constante tiene un nombre y un tipo de datos; los operadores permiten expresar las operaciones aritmticas y matemticas en general; (iii) Expresiones con las cuales se representan sintcticamente las diversas frmulas matemticas o lgicas de los lagoritmos; (iv) Instrucciones y comandos (rdenes), con los cuales se asigna memoria (contenido) a las variables, se ejecutan diversas operaciones especificadas en el algoritmo, y se realizan variados 0
4

Vase el captulo 3 de la documentacin online para mayores detalles y ejemplos.

__________________________________________________________________________________________ walvarem@unalmed.edu.co Pgina 14 Clase# 2.- Estructuras de Secuencia y Seleccin Lgica

Notas de Clase 3004578 Algoritmos y Programacin 02/02/07 Ingeniero William Alvarez Montoya http://www.unalmed.edu.co/~walvarem/ ____________________________________________________________________________________________ procesos en el ambiente de diseo de aplicaciones (entorno); las instrucciones pueden ser de lectura (directamente de la interfaz, o mediante un archivo de datos), de asignacin de memoria (aritmtica, string, boolean, o de establecimiento o cambio de propiedades de objetos), de salida (visualizacin en pantalla, impresin en papel, o grabacin en un archivo); los comandos generalmente- tienen que ver con la interaccin con objetos especficos (por ejemplo, si un objeto de dilogos comunes se llama CD1, CD1.ShowOpen abre un panel de dilogo para cargar un archivo), o interaccin del proyecto con el Sistema Operativo ( como por ejemplo ChDir que cambia el directorio de ubicacin); (iv) las Estructuras Bsicas de Programacin, como son La Secuencia (cada procedimiento es una secuencia arriba-debajo de instrucciones, y en cada instruccin el orden de ejecucin es de zquierda a derecha), la Seleccin Lgica If End If para tomar decisiones, For Next para efectuar repeticiones. La definicin de variables se efecta con la instruccin Dim, por ejemplo: Dim A as Single, B As Single, N As Integer. En esta definicin, se incluye el nombre d ela variable y con la clusula As se especifica el tipo de datos. La definicin de constantes se hace con la instruccin Const as: Const Pi As Double = 3.141592. La plantilla estndar para escribir los programas en Visual Basic es la siguiente: Private Sub Command1_Click() ....................................... En Sub Entre Sub ... End Sub va la secuencia de instrucciones que define un programa. Command1_Click() es el nombre del procedimiento (Subprograma o Subrutina), y est constitudo por el nombre del control (un botncomando, por ejemplo) y el nombre del evento (Click).

2.7 LA PRCTICA #2 SECUENCIA Y SELECCIN LGICA


FIGURA 2.9 Interfaz Grfica de Usuario diseada en la prctica #2.

En esta prctica se aplica la instruccin de Seleccin Lgica, If End If, en sus diversos formatos. Se utilizan expresiones lgicas, operadores aritmticos, de concatenacin y operadores lgicos. Se introduce el uso de funciones matemticas de librera estndar. Un control tipo cajatexto se limpia (o borra) con la asignacin Text1 = , por ejemplo, en la cual dentro de las comillas dobles no hay nada, significando esto el carcter nulo (vaco) dentro del mundo de los textos. Se hace uso de la funcin MsgBox() para desplegar ventana de mensajes.

2.8 TAREAS EXTRACLASE


Elaborar algoritmos para los siguientes problemas de la problemateca, considerando cada vez un solo dato a la vez: 35, 39, 41, 45, 48, 54, 75, 77, 88, 94, 95, 96, 97. Qu dificultades se encuentran si se pretenden considerar todos los datos a la vez, en cada problema? Del texto de Chapra & Canal, elaborar algoritmos para los problemas 1.7, 1.8, 1.12, 1.13, 2.1, 2.5, 2.8, 2.9, 2.10, 2.11, 2.13, 2.14, 2.15. Para los algoritmos diseados, elaborar proyectos Visual Basic, diseando las interfaces y ejecutando la programacin. Realizar el estudio del documento Gestin Eficiente del Tiempo5. Adaptar para uso personal, una tcnica que le permita mejorar su gestin del tiempo. Puede usted conceptualizar este proceso como un algoritmo?

0
5

2003 Fundacin para el Pensamiento Crtico http://www.criticalthinking.org . (Op. Cit.).

__________________________________________________________________________________________ walvarem@unalmed.edu.co Pgina 15 Clase# 2.- Estructuras de Secuencia y Seleccin Lgica

Notas de Clase 3004578 Algoritmos y Programacin 02/02/07 Ingeniero William Alvarez Montoya http://www.unalmed.edu.co/~walvarem/ ____________________________________________________________________________________________

Clase #3
ESTRUCTURA DE ITERACIN ACUMULADOR/CONTADOR
Evolution. Fuente: R.B. Muhama.( Kent State University, 2004,.http://www.cs.kent.edu/~rmuhamma/)

Uno de los primeros logros de la Teora de Algoritmos fue el de establecer y aplicar las estructuras automticas bsicas mediante las cuales es posible expresar y representar una gama muy amplia de algoritmos. Ya hacia finales de la dcada de 1960's, en 1967 y 1968, se reunieron grupos de expertos en Europa y Norteamrica para tratar de formalizar un enfoque slido de ingeniera, basado en la lgica y en la matemtica, para la emergente disciplina de elaborar programas para computador, usualmente denominada Ingeniera de Software, o Ingeniera de Programacin de Computadores. Desde estos primeros esfuerzos se puedieron identificar tres estructuras bsicas presentes en muchos procesos naturales y artificiales: secuencia, seleccin lgica e iteracin. Surgi, as, un enfoque estructurado para programar, denominado Programacin estructurada, cuyo boom se di en la dcada de 1970's y que ha sido la base para los otros paradigmas tecnolgicos que surgieron en los aos 1980's y 1990's.

3.1 LA ESTRUCTURA

DE ITERACIN

La estructura de Iteracin permite repetir una serie de instrucciones dentro de un algoritmo. Dicha repeticin puede ser definida o indefinida. La iteracin es definida cuando de antemano se sabe cuntas veces se repetir el conjunto de instrucciones; es indefinida cuando de antemano no se sabe cuntas veces se repetir el conjunto de instrucciones, y en este caso el proceso repetitivo finalizar cuando se cumpla una cierta condicin especificada para lograr la finalizacin de los ciclos repetitivos. La figura 3.1 ilustra la iteracin definida. FIGURA 3.1 Esquena diagramtico de la iteracin definida.

En este esquema se ilustra la representacin diagramtica de la iteracin definida, para la cual se conoce de antemano cuntas veces se va a repetir un conjunto de instrucciones. Antes de ejecutarse este proceso iterativo, la variable N debe estar definida de antemano. De ah, que a este tipo de iteracin se le denomina precisamente- iteracin definida. El smbolo diagramtico consta de dos rectngulos, uno mayor que el otro, que comparten dos lados, el derecho y el inferior (vista frontal). El rectngulo mayor encierra a toda la estructura iterativa, implicando que es un proceso que se ejecuta antes de pasar al proceso siguiente. El rectngulo menor encierra las instrucciones que se repiten. Ese es el rango de iteracin. Encima del rectngulo menor se escribe la asignacin que define los parmetros bsicos de iteracin: la variable K es el ndice de iteracin; el signo igual (=) le asigna contenidos a la variable K; a la derecha del signo igual vista frontal- se escriben los lmites inferior y superior del recorrido de K, separados por una coma. As, la expresin K = 1, N significa que el ndice K toma valores en el intervalo [1, N], includos ambos lmites, con incremento unitario (de 1). La estructura es automtica. Esto significa que el ndice K automticamente se inicializa en el lmite inferior (en la figura es 1); ejecuta la secuencia de operaciones definida por el rango de iteracin (S1 en la figura), y al final de tal ejecucin K se incrementa en 1; evala el valor (o contenido) de K con respecto al lmite superior (en la figura es N): si es cierto que K es mayor que el lmite superior (K > N), entonces termina la iteracin y el algoritmo continua con la siguiente operacin; si el valor de K es menor o igual que el lmite superior (K N), entonces se repite el conjunto de operaciones definido por el rango de iteracin (S1 en la figura 3.2). __________________________________________________________________________________________ walvarem@unalmed.edu.co Pgina 16 Clase# 3.- Estructura de Iteracin Acumulador/Contador

Notas de Clase 3004578 Algoritmos y Programacin 02/02/07 Ingeniero William Alvarez Montoya http://www.unalmed.edu.co/~walvarem/ ____________________________________________________________________________________________

For K = 1 To N ' ... rango de repeticin ' ... S1 ' ... S2 ' ... ' ... Sn Next K

Sintaxis propia del lenguaje. La sentencia FOR K = 1 To N inicia el proceso de iteracin, estableciendo el ndice de iteracin (K), el lmite inicial (1), el lmite final (N), y el incremento (como es unitario se omite). La sentencia Next K demarca hasta donde llega el rango iterativo, e incrementa a K en 1, y evala su contenido.

(a)

(b)

FIGURA 3.2 Iteracin definida: (a) Diagrama estructurado; (b) - Sintaxis del lenguaje Visual Basic. La expresin FOR K =1 To N significa que se itera desde K igual a 1 hasta K igual a N. La secuencia de operaciones S1, S2, ..., Sn se denomina el rango de iteracin y puede estar conformado por una nica instruccin o por una serie muy grande de instrucciones. Este proceso iterativo, as expresado, es automtico e internamente la estructura tiene los controles especficos para determinar cuando se contina la iteracin o cuando se termina. Como se dijo anteriormente, antes de iniciarse la iteracin, el valor de la variable N debe estar previamente definido. Despus de salir de la iteracin, el valor del ndice de iteracin K es N + 1, por cuanto se ha de iterar hasta K = N inclusive. El paso, o el valor del incremento, en la representacin mostrada es unitario; es decir, que el ndice de iteracin tomar valores de 1, 2, 3, hasta N. Es posible que el incremento sea diferente de la unidad. En general, el incremento puede ser una variable o una constante. En la figura 3.3 se explica con ms detalle todos los elementos implicados en la estructura de Iteracin Definida, como se esquematiz en las figuras 3.1 y 3.2.

Palabra clave del lenguaje

Valor inicial del ndice de iteracin

Valor final del ndice de iteracin

(a)

FOR J = 1 To 200 Step 15 . Rango Next J


Comienzo y fn del ciclo iterativo iterativo

Incremento del ndice iterativo

Nombre del ndice de iteracin

(b)

FIGURA 3.3 Iteracin definida: (a) Elementos constitutivos de la instruccin de Iteracin Definida en Visual Basic; (b) - Diagrama esquemtico. La sintaxis genrica de la instruccin de Iteracin Definida, en el lenguaje Visual Basic, se esquematiza en la figura 3.4.

__________________________________________________________________________________________ walvarem@unalmed.edu.co Pgina 17 Clase# 3.- Estructura de Iteracin Acumulador/Contador

Notas de Clase 3004578 Algoritmos y Programacin 02/02/07 Ingeniero William Alvarez Montoya http://www.unalmed.edu.co/~walvarem/ ____________________________________________________________________________________________ For variable = exp_inicio To exp_final Step incr [Accin 1] [Accin 2] [Accin n] Next variable FIGURA 3.4 Sintaxis genrica de la Iteracin definida.

variable: ndice de iteracin


Cuando variable est por fuera del intervalo [exp_inicio, exp_final] el proceso termina. incr: es el incremento de variable del intervalo [exp_inicio, exp_final].

exp_inicio, exp_final: pueden ser expresiones


enteras o reales.

Con respecto a la iteracin definida expuesta en las figuras 3.2, 3.3 y 3.4 es necesario anotar lo siguiente: Si el incremento es unitario, puede escribirse o no: For K = 1 To N Step 1 tiene el mismo efecto que escribir la instruccin de iteracin definida as: For K = 1 To N. Si el incremento No es unitario, hay que escribirlo siempre: For X = -10.0 To 10.0 Step 2.5. Si exp-inicio > exp_final la iteracin no se ejecuta ni una sola vez. Por ejemplo For K = 1 To N, siendo N = 0, implica que el rango de iteracin no se ejecuta. El incremento puede ser negativo, convirtindose en un decremento, como en el siguiente caso: T = MAX, MIN, -2 para el cual el ndice de iteracin T tomar valores decrecientes desde un valor MAX hasta un valor MIN con decremento de 2.

Ejemplo #1 de iteracin definida: Para un conjunto de valores numricos determinar cul es el mayor de todos.
Elaborar un algoritmo y representarlo con un diagrama de lgica. Solucin: Un forma de hacer este algoritmo es obtener (leer) el primer nmero; luego, obtener el segundo y compararlo con el primero, llevando el mayor a una variable, por ejemplo, MAX; despus, obtener el tercero y compararlo con MAX, si el tercero es mayor que MAX entonces MAX toma el valor del tercero; el proceso se contina hasta que se haya obtenido el ltimo nmero. Se suponen N nmeros en total. Se emplea una variable X para contener cada nmero ledo (vase la figura 3.5). La lectura del nmero de datos, N, y del primer valor, en X, se hace por medio de controles cajatexto en rl programa. Dentro de la iteracin, se lee cada valor con la funcin InputBox() que genera una ventana de entrada de datos. La instruccin de seleccin lgica, IF, se utiliza en su formato ms simple el cual no requiere ceerar con end If por cuanto el rango es una nica instruccin MAX = X.

N = Val(Text1) X = Val(Text2) MAX = X FOR K = 2 TO N X = InputBox(Valor=) If(X > MAX)Then MAX = X NEXT K Text3 = Mayor = & STR(X) (a) (b)

FIGURA 3.5 Ejemplo #1 de la Iteracin definida: (a) Diagrama estructurado; (b) Sintaxis en el lenguaje Visual Basic. En el conjunto de valores numricos que se emplee deberan mezclarse nmeros negativos y nmeros positivos. Cmo puede afectar esto el resultado obtenido? Tambin puede aprovecharse este algoritmo para calcular el menor valor, MIN. Cmo lo hara usted? Igualmente, elabore proyectos Visual Basic con datos de prueba.

__________________________________________________________________________________________ walvarem@unalmed.edu.co Pgina 18 Clase# 3.- Estructura de Iteracin Acumulador/Contador

Notas de Clase 3004578 Algoritmos y Programacin 02/02/07 Ingeniero William Alvarez Montoya http://www.unalmed.edu.co/~walvarem/ ____________________________________________________________________________________________

Ejemplo #2 de iteracin definida: Un ingeniero desea obtener datos para trazar una curva que determine la carga (S) en funcin de la relacin de esbeltez (R). Ha seleccionado de un manual dos frmulas empricas que dan la carga permisible en dos intervalos de variacin de la relacin de esbeltez1. Las frmulas son las mostradas en las ecuaciones 3.1. Elabore un algoritmo que calcule S para valores de R en el rango [50,300] y variando con incrementos de 10.
Solucin: El empleo de la iteracin definida es directo. Se puede utilizar la variable R como ndice de iteracin, variando desde 50 a 300 con incrementos de 10, y para cada valor de R aplicar la frmula respectiva segn el valor dentro del rango dado. La figura 3.6 presenta el algoritmo y el resultado de un proyecto Visual Basic. (3.1)
For R = 50 To 300 STEP 10 If(R < 120)THEN S = 17000-0.485*R^2 Else S = 18000/(1+((R^2)/18000)) End If Text1 = Str(R) & vbTab & Str(S) & vbCrLf Next R

(c)

(a)

(b)

FIGURA 3.6 Ejemplo #2 de la Iteracin definida: (a) Diagrama estructurado; (b) Sintaxis en el lenguaje Visual Basic (c) Resultados obtenidos con un proyecto Visual Basic.

Esta es una muestra de un posible resultado, en forma tabular, del algoritmo descrito en este ejemplo. El control cajatexto Text1, al cambiarle las propiedades MultiLine a True y ScrollBars a 3-Both permite desplegar muchas lnes de texto. La constante vbCrLf se usa para el cambio de lnea.

Ejemplo #3 de iteracin definida: Elaborar un algoritmo para calcular la raz cuadrada de los primeros 100 nmeros
naturales pares Solucin: El empleo de la iteracin definida, con incremento diferente de 1, permite generar rpidamente muchos resultados, como se muestra en la figura 3.7. For j = 2 To 200 Step 2 txt_R = j = & j & vbtab & _ Sqr & j & ) = & Sqr(j) & _ vbCrLf Next j (b) (a)

Private Sub Form_Load() txt_R = "Nos. PARES Y SUS RACES" & vbCrLf & _ (c) String(30,_) & vbCrLf En d Su b

(d)
txt_R = txt_R & "J=" & j & vbTab & "Sqr(" & j & ")= " & Sqr(j) & vbCrLf

Empleando concatenacin y asignacin se obtienen los resultados mostrados. El ttulo se hace en el evento Load() del formulario. vbTab, vbCrLf son constantes string de Visual Basic 6.0. La funcin String() concatena caracteres.

FIGURA 3.7 Ejemplo #3 de la Iteracin definida: (a) Sintaxis en el lenguaje Visual Basic; (b) Interfaz diseada en el proyecto; (c) Procedimiento Load() para los ttulos; (d) Para cada valor del ndice j se ejecuta esta asignacin. 0
1

Problema #3 de la Problemateca, http://xue.unalmed.edu.co/~walvarem

__________________________________________________________________________________________ walvarem@unalmed.edu.co Pgina 19 Clase# 3.- Estructura de Iteracin Acumulador/Contador

Notas de Clase 3004578 Algoritmos y Programacin 02/02/07 Ingeniero William Alvarez Montoya http://www.unalmed.edu.co/~walvarem/ ____________________________________________________________________________________________

3.2 ACUMULADOR Y CONTADOR


Los procesos de acumulacin son frecuentes en los clculos dentro de los algoritmos. Se presenta acumulacin cuando se pretende obtener la suma de los trminos de una serie, por ejemplo, o cuando se quiere hallar una sumatoria de N valores, siendo cada uno Xi. Cuando se intenta efectuar procesos de acumulacin en un algoritmo es preciso emular los procesos acumulativos de los sistemas naturales. Para ello, desde los ms tempranos desarrollos computacionales, se ide el concepto de acumulador, que es simplemente un rea de la memoria fsica de la mquina sobre la cual se va sumando un valor ledo o calculado. El proceso fsico emulado corresponde al de una alcanca en la cual se echa una cierta cantidad de dinero cada vez, cantidad que en general es variable; despus de cada adicin de dinero a la alcanca, el nuevo contenido de la misma corresponde al contenido previo ms el valor adicionado. La expresin genrica de una acumulacin es: T = T + X, donde el signo igual acta como operador de acumulacin o de asignacin de memoria. La expresin anterior se interpreta como que el nuevo valor de la variabla T es igual al valor anterior ms el contenido de la variable X. Si la expresin anterior es el rango iterativo de una estructura automtica de iteracin, entonces el efecto final es el de obtener una sumatoria. Supngase que se desea obtener la sumatoria de N valores Xi, expresada algebraicamente como se muestra. El diagrama estructurado de lgica es el que se muestra, conjuntamente con un programa Visual Basic en la figura 3.8. T = 0.0 For K = 1 to N X = InputBox("X = ") T=T+X Next K (b)
El valor de N ha de estar previamente definido. Cada vez que se lee un valor de X, se le adiciona al contenido de T; al leer N valores de X, por medio del control iterativo K = 1, N, se tendr la sumatoria X1 + X2 + X3 + ... + Xn. La instruccin de asignacin X = InputBox("X = ") utiliza una lectura desde el teclado. La variable T se inicializa en cero, para garantizar que se acumula correctamente.

(a)

FIGURA 3.8 Ejemplo de acumulador: (a) Diagrama estructurado; (b) Sintaxis en el lenguaje Visual Basic. Es sorprendente saber que este es el proceso mediante el cual todo computador ejecuta las operaciones ms complejas: sumas de los trminos de series, pues toda operacin aritmtica o matemtica puede convertirse a una sumatoria de los trminos de una serie. La ventaja de los computadores es que realizan extremadamente rpido dichas sumas (del orden de 10-6 segundos para los PC's, hasta 10-18 segundos para los supercomputadores), y en trminos de la velocidad de respuesta de los sentidos humanos (del orden de 10-3 segundos) parece que el proceso fuera instantneo. Una vez entendido lo que es un acumulador, el concepto de contador es directo: un contador es un acumulador con incremento unitario. Si NP es una variable que se incrementa una unidad en cada iteracin, dentro de un proceso de N iteraciones, el efecto final es que se ha efectuado un proceso de conteo. En el diagrama y programa ilustrados en la figu8ra 3.9, se cuenta el nmero de valores que son mayores que cero (positivos) y esa cantidad se almacena en la variable NP.
NP = 0 For K = 1 to N X = InputBox("X = ") If (X > 0) Then NP = NP + 1 Next K La variable NP debe ser de tipo entero. Se inicializa en cero con el fn de garantizar el inicio correcto del conteo. El formato de seleccin lgica empleado es el ms simple y no requiere usar End If. Esto se puede hacer siempre que el rango de la seleccin lgica sea una nica instruccin.

(a)

(b)

FIGURA 3.9 Ejemplo de contador: (a) Diagrama estructurado; (b) Sintaxis en el lenguaje Visual Basic.

__________________________________________________________________________________________ walvarem@unalmed.edu.co Pgina 20 Clase# 3.- Estructura de Iteracin Acumulador/Contador

Notas de Clase 3004578 Algoritmos y Programacin 02/02/07 Ingeniero William Alvarez Montoya http://www.unalmed.edu.co/~walvarem/ ____________________________________________________________________________________________

Ejemplo de acumulador: Para la siguiente serie calcular la suma de los N primeros trminos, 1 < X < 2:
X X 3 X 5 X 7 X 9 + + ... 3 7 11 15 19

En la figura 3.10 se ilustra un algoritmo y programa para este caso.

N = Val(Text1) : X = Val(Text2) Suma = 0.0 : D = 3 Fo r K = 1 T o N Ter = (X^(2*K-1)) / D Suma = Suma + Ter D=D+4 Next K Text3 = Suma = & Suma (a) (b)

La asignacin de acumulacin, Suma = Suma + Ter, repetida N veces emula el clculo de la sumatoria. El signo igual (=) es el operador de asignacin (vase el captulo 3, seccin 3.2) cuyo efecto consiste en evaluar la expresin ubicada a su derecha (vista frontal) y el resultado asignarlo a la variable ubicada a su izquierda. El esquema se muestra en la figura 3.11.

FIGURA 3.10 Ejemplo de acumulador: (a) Diagrama estructurado; (b) Sintaxis en el lenguaje Visual Basic. FIGURA 3.11 La Instruccin de Asignacin de Memoria.

3.3 PRCTICA#3: ITERACIN DEFINIDA ACUMULADOR/CONTADOR


Disear la interfaz mostrada. Con un control tipo PictureBox (cajagrfica) se muestra la frmula para el Sen(x). En una cajatexto, los resultados se visualizan en forma tabular. El Programa para calcular la suma de la serie es el siguiente
Suma = 0.0 For i = 0 To N F=1 For K = 1 To 2*I + 1 F=F*K Next K Ter = ((-1)^i)*(X^(2*i + 1)) / F Suma = Suma + Ter Next i Text3 = Str(Suma)

sigue

Calcula el factorial

3.4 TAREAS EXTRACLASE


Implementar en Visual Basic, los ejemplos de esta clase. Apyese en el documento Aprednda Visual Basic Como si estuviera en primero, captulos 3 y 4, de Garca et al. (lo encuentra en formato PDF en la pgina web de la asignatura), y en los captulos 2 y 3 de la documentacin bsica del curso. Estudiar los ejemplos resueltos. Ver: http://xue.unalmed.edu.co/~walvarem Implementar tcnicas de estudio eficiente. Vase el documento sobre motivacin. Resuelva de la problemateca: 6, 11, 12, 13, 14, 15, 17, 18, 24, 42, 72, 73, 74, 83, 90, 91. Y las siguientes series:

__________________________________________________________________________________________ walvarem@unalmed.edu.co Pgina 21 Clase# 3.- Estructura de Iteracin Acumulador/Contador

Notas de Clase 3004578 Algoritmos y Programacin 01/29/07 Ingeniero William Alvarez Montoya http://www.unalmed.edu.co/~walvarem/ ____________________________________________________________________________________________

Clase #4
ESTRUCTURA DE ITERACIN INTEGRACIN NUMRICA
Evolution. Fuente: R.B. Muhama.( Kent State University, 2004,.http://www.cs.kent.edu/~rmuhamma/)

El problema de encontrar la solucin numrica de una integral definida es un problema comn de ingeniera. Estos mtodos numricos se utilizan cuando los mtodos analticos no son fciles de aplicar, o simplemente cuando no se pueden aplicar. Por ejemplo, la siguiente integral -mostrada en la ecuacin 4.1- no tiene solucin analtica:

La estrategia bsica de los mtodos de integracin numrica consiste en aproximar la integral a una sumatoria, lo cual implica utilizar la iteracin definida. La ecuacin 4.2 es la esquematizacin matemtico-conceptual de dicha estrategia:

1 x2 / 2 e dx 2

(4.1)

f ( x) = reas Figuras Geomtricas


i =0

(4.2)

4.1 MTODOS DE INTEGRACIN NUMRICA


La Integracin Numrica implica el calcular un valor aproximado de una integral de una funcin f(x), como en la ecuacin 4.1, mediante la evaluacin de una serie de puntos discretos1. En general, hay dos categoras de mtodos para lograr dicha aproximacin. (i) - En primer lugar, estn los mtodos que como el trapezoidal o el de Simpson calculan la aproximacin a la integral evaluando a la funcin f(x) en una serie de puntos igualmente espaciados, configurando as- franjas o tiras de igual ancho. Estos mtodos, frecuentemente, se les denomina como de la frmula Newton-Cotes. (ii) En segundo lugar, estn los mtodos que utilizan puntos irregularmente espaciados; estos mtodos se denominan genricamente como Cuadratura Gauss, o Integracin Numrica de Gauss-Legendre2, diseados para obtener una mayor precisin numrica para un cierto conjunto de puntos dentro de un intervalo dado. Sobre este tipo de mtodos hay ms detalles en captulo 6 de las aplicaciones en Mtodos Numricos (http://xue.unalmed.edu.co/~walvarem). De la primera categora, los mtodos que se emplean para calcular numricamente una integral, y que se tratan en esta clase#4, son los siguientes: (i) Mtodo Rectangular; (ii) Mtodo Trapezoidal; (iii) Mtodo de Simpson.

MTODO RECTANGULAR
En el mtodo Rectangular, se divide el intervalo [a, b] en subintervalos (franjas o tiras) igualmente espaciados, y cada franja Ai se considera como un rectngulo (vase la figura 4.1). La integral se aproxima por la sumatoria de los rectngulos.

Ai

Y= f(x)

FIGURA 4.1 Elementos bsicos a considerar en el Mtodo Rectangular de Integracin Numrica: (a) esquema de los subintervalos; (b) - Aproximacin de la integral.

(a) (b)

f ( x)dx Ai
i =1

a
0
1 2

numerical-methods.com :Numerical Integration,http://www.numerical-methods.com. Dyer, Charles: Numerical Integration, 2002

__________________________________________________________________________________________ walvarem@unalmed.edu.co Pgina 22 Clase# 4.- Estructuras de Iteracin / Integracin Numrica

Notas de Clase 3004578 Algoritmos y Programacin 01/29/07 Ingeniero William Alvarez Montoya http://www.unalmed.edu.co/~walvarem/ ____________________________________________________________________________________________ En la figura 4.2 se esquematiza cada franja de las mostradas en la figura 4.1; cada franja tiene una altura f(x) y un ancho , que se calcula as: = (b-a)/n . El rea de cada franja est dada por Ai = *f(x), siendo en general- cada franja diferente de las otras. f(x) 1 1 1) Se declaran x, , n, a, b, Suma f (x) = + 6 2) a, b, n son definidos por el usuario 2 (x 0.3) + 0.01 (x 0.9)2 + 0.04 3) =(b-a)/n 4) Para i=0,,n-1 (c) x = a + i* Suma = Suma + f(x)* Ai (a) 5) Se imprime Suma Private Function f(X As Single) As Single f = 1 / ((x - 0.3) ^ 2 + 0.01) + 1 / ((x - 0.9) ^ 2 _ + 0.04) - 6 (b) (d) End Sub

x+

FIGURA 4.2 El Mtodo Rectangular: (a) Esquema de cada franja; (b) Esquema general del algoritmo; (c) Frmula de la funcin f(x) empleada; (d) Sintaxis de la funcin f(x) en el Lenguaje Visual Basic. La figura 4.3 muestra un esquema grfico de la funcin f(x), cuya frmula es la que aparece en la figura 4.2(c), y una interfaz Visual Basic con los resultados del caso. FIGURA 4.3 El Mtodo Rectangular: (a) Esquema grfico de f(x); (b) Interfaz Visual Basic con resultados.

(a)

(b)

MTODO TRAPEZOIDAL
En el Mtodo Trapezoidal de Integracin Numrica se considera cada franja como un trapezio, como se ilustra en la figura 4.4.

Ai = [f(xi)+f(xi + )]*/2
Ai (a) X X+ (b) (c)

a, b, n son definidos por el usuario 3) =(b-a)/n 4) Para i=0,,n-1 x = a + i* Suma = Suma + f(x)* 5) Se imprime Suma

FIGURA 4.4 El Mtodo Trapezoidal: (a) Esquema de cada franja; (b) Frmula para calcular el rea de cada franja; (c) Esquema del algoritmo que utiliza la funcin f() definida en la figura 4.2(d).

__________________________________________________________________________________________ walvarem@unalmed.edu.co Pgina 23 Clase# 4.- Estructuras de Iteracin / Integracin Numrica

Notas de Clase 3004578 Algoritmos y Programacin 01/29/07 Ingeniero William Alvarez Montoya http://www.unalmed.edu.co/~walvarem/ ____________________________________________________________________________________________

MTODO DE SIMPSON
El Mtodo Simpson de Integracin Numrica proporciona una aproximacin ms precisa, ya que consiste en conectar grupos sucesivos de treso ms puntos sobre la curva mediante parbolas de segundo grado, y sumar las reas bajo las parbolas para obtener el rea aproximada bajo la curva. La figura 4.5 ilustra varias frmulas del Mtodo Simpson.

Ai = [f(x)+4*f(x + /2)+f(x + )]*/6

Regla de Simpson de 1/6


(n2) / 2 i=1

(b)

Ai

f (x)d(x) = Ai = 3 f (a) + 4f (xi ) + 2 i=1 i=1 a


Ai =
X+

n/ 2

n/ 2

f (x

i+1

) + f (b)
(c)

Regla de Simpson de 1/3, n es par

X
(a)

3 2 f ( x) + 3 f ( x + ) + 3 f ( x + ) + f ( x + ) 8 3 3
(d)

Regla de Simpson de 3/8; 4 puntos

FIGURA 4.5 El Mtodo Simpson: (a) Esquema de cada franja; (b) Frmula para calcular el rea de cada franja, considerando tres puntos; (c) Frmula llamada de 1/3 para calcular el rea total; (d) Frmula de los 3/8. Empleando el esquema algortmico de la figura 4.2(b) es fcil implementar un proyecto en Visual Basic que emplee el Mtodo Simpson en cualquiera de sus variantes expuestas en la figura 4.5.

4.2 PRCTICA4: MTODOS DE INTEGRACIN NUMRICA


Calcular el rea de la funcin definida en la figura 4.2(c). Emplear los mtodos explicados: Rectangular, Trapezoidal, Simpson. Emplear varios intervalos para la funcin. Modificar esta interfaz para presentar los resultados tabulares en cada mtodo que se emplee. Efectuar una tabla de comparacin de los tres mtodos, para un mismo intervalo.

4.3 ACTIVIDADES EXTRACLASE - TAREAS


Elaborar algoritmos e implementarlos como proyectos Visual Basic para calcular numricamente las integrales de la figura 4.6. Incluya en dicha lista la funcin f(x) de la ecuacin 4.1, en el intervalo [-3.0, 3.0]. FIGURA 4.6 Ejemplos de integrales cuya solucin es ms fcil por mtodos de Integracin Numrica.

__________________________________________________________________________________________ walvarem@unalmed.edu.co Pgina 24 Clase# 4.- Estructuras de Iteracin / Integracin Numrica

Notas de Clase 3004578 Algoritmos y Programacin 01/29/07 Ingeniero William Alvarez Montoya http://www.unalmed.edu.co/~walvarem/ ____________________________________________________________________________________________

Clase #5
ESTRUCTURA DE ITERACIN INDEFINIDA RACES DE F(X )= 0
Evolution. Fuente: R.B. Muhama.( Kent State University, 2004,.http://www.cs.kent.edu/~rmuhamma/)

Adems de la iteracin definida, estudiada en las clases #3 y #4, se dispone de la Estructura de Iteracin Indefinida que se caracteriza porque de antemano se desconece exactamente cuntas veces se repetir un conjunto de instrucciones (el rango iterativo). La figura 5.1 presentan dos esquemas diagramticos bsicos de este tipo de repeticin.

4.1 FORMATOS DE LA ITERACIN INDEFINIDA


FIGURA 5.1 En la iteracin indefinida NO se sabe de antemano cuntas veces se repetir el rango de iteracin: (a) Iteracin Indefinida del tipo HAGA MIENTRAS; (b) Iteracin Indefinida del tipo HAGA HASTA QUE. La iteracin MIENTRAS QUE es de tipo indefinido por cuanto se persistir la repeticin en tanto la condicin lgica, CondLog, sea verdadera, y de antemano no se sabe exactamente cuntas repeticiones se efectuarn. En el diagrama y programa (a) (b) siguientes, el valor de verdad de la condicin lgica controla la iteracin cuya evaluacin se realiza siempre al inicio de la iteracin. La figura 5.2 presenta dos formatos en la sintaxis del lenguaje Visual Basic para la Iteracin Indefininida del tipo HAGA MIENTRAS QUE. Otra forma de la sintaxis de esta instruccin es la siguiente: Do ' ... rango de repeticin ' ... S1 ' ... S2 (c) ' ...... ' ... Sn Loop While (CondLog)

(a)

Do While (CondLog) ' ... rango de repeticin ' ... S1 ' ... S2 ' ...... ' ... Sn (b) Loop

FIGURA 5.2 La Iteracin Indefinida del tipo HAGA MIENTRAS QUE: (a) Esquema diagramtico; (b) En este formato de la sintaxis del lenguaje, la condicin lgica se evala al inicio; (c) En este formato de la condicin lgica se evala al final. Es decir, que si de entrada la condicin lgica es falsa, no se ejecutar el rango de iteracin conformado por la serie de procesos S1, S2, ..., Sn. Se saldr de la iteracin tan pronto la condicin lgica sea falsa. Como en el caso de la iteracin definida, el smbolo diagramtico de esta iteracin consta de dos rectngulos, uno ms pequeo dentro de otro mayor, que comparten un lado; la palabra MIENTRAS es requerida y es la que define el tipo de iteracin. En el programa mostrado, se ve que la eleccin de

__________________________________________________________________________________________ walvarem@unalmed.edu.co Pgina 25 Clase# 5.- Estructuras de Iteracin Indefinida / Races de f(x) = 0

Notas de Clase 3004578 Algoritmos y Programacin 01/29/07 Ingeniero William Alvarez Montoya http://www.unalmed.edu.co/~walvarem/ ____________________________________________________________________________________________ esta palabra, para utilizarse en la diagramacin, obedece a que en los lenguajes se utiliza un comando exactamente igual (Do While = haga mientras). En el programa mostrado, la estructura iterativa se inicia con Do While (CLog) y se termina con Loop. Sin embargo, en la segunda variante de la sintaxis, la condicin lgica se evala al final. Es decir, que por lo menos- se ejecuta una vez el rango iterativo de instrucciones.

Ejemplo #1 de iteracin indefinida: Para dos nmeros enteros M, N, hallar el Mximo Comn Divisor (mcd)
utilizando el algoritmo de Euclides. Solucin: Como se estableci en el captulo 2 de la documentacin, el algoritmo de Euclides consta de los siguientes pasos: (1) Dividir el nmero mayor (dividendo),M, entre el nmero menor (divisor), N. Esto da en general- un cociente y un residuo. (2) El nuevo dividendo es el divisor anterior, y el nuevo divisor es el residuo anterior. (3) Se repite el paso 2 mientras el residuo sea diferente de cero. (4) Cuando el reisduo sea cero se termina el algoritmo. El mcd es el ltimo divisor. El la figura 5.3 se ilustra un diagrama estructurado de lgica para el proceso del algoritmo de Euclides. Obsrvese que la variable R, el residuo, se inicializa en un valor diferente de cero con el fn de ejecutar la iteracin desde el principio ( en este caso, R = 77); tambin, dentro de la iteracin indefinida es necesario preguntar si R <> 0 para poder definir cuando se ha obtenido el mcd, o realizar las sustituciones de dividendo y divisor.

(a)

(b)

M = InputBox(M = ) N = InputBox(N = ) R = 77 Do WHILE (R <> 0) C=M\N:R=MC*N If (R <> 0)Then M=N:N=R Else MCD = N End If Loop Text1 = MCD = & MCD

M \ N significa divisin en aritmtica entera (vase la seccin 3.2). Mediante dos puntos se separan dos, o ms intrucciones, en una misma linea de programa. Para obtener el residuo se resta del dividendo el producto del coiente por el dividor, R = M C * N. Cuando R = 0 la iteracin termina y en N estar contenido el ltimo divisor.

FIGURA 5.3 Ejemplo #1 de la Iteracin Indefinida: (a) Esquema diagramtico; (b) Un programa en la sintaxis del lenguaje, la condicin lgica se evala al inicio.

Ejemplo #2 de iteracin indefinida: En cierta parte de un proceso acadmico se calculan las calificaciones de cierta asignatura, teniendo como base los puntajes obtenidos en las calificaciones parciales. El proceso consiste en leer para cada estudiante un cdigo de cinco dgitos, una nota, entre 0.0 y 5.0, que esl 35%, otra nota del 35%, y una tercera nota del 30%. El proceso termina si se digita un cero para el cdigo. Elaborar un algoritmo y representarlo diagramticamente.
Solucin: En la figura 5.4 se ilustra el algoritmo representado mediante un diagrama estructurado de lgica y la sintaxis del lenguaje Visual Basic; tambin presenta algunos resultados obtenidos con un proyecto Visual Basic. El clculo de la nota Def slo se efectua si el cdigo es diferente de cero.

__________________________________________________________________________________________ walvarem@unalmed.edu.co Pgina 26 Clase# 5.- Estructuras de Iteracin Indefinida / Races de f(x) = 0

Notas de Clase 3004578 Algoritmos y Programacin 01/29/07 Ingeniero William Alvarez Montoya http://www.unalmed.edu.co/~walvarem/ ____________________________________________________________________________________________ Cod = 99 Do WHILE (Cod <> 0) Cod = InputBox(Cdigo:) Nota1 = InpuBox(Nota1:) Nota2 = InputBox(Nota2) Nota3 = InputBox(Nota3) If (Cod <> 0)Then Def = 0.35*Nota1 + 0.35*Nota2+ _ 0.30*Nota3 Text1 = Cod & vbtab & Def& vbCrLf End If (b) Loop

(c)

(a)

FIGURA 5.4 Ejemplo #2 de Iteracin Indefinida: (a) Esquema de un diagrama estructurado de lgica; (b) Un programa en la sintaxis del lenguaje Visual Basic; (c) Algunos resultados obtenidos con un proyecto elaborado en Visual Basic.

Ejemplo de resultados para este problema. Si se pretende obtener notas definitivas aproximadas a las dcimas, es precisa utilizar una funcin de redondeo, como Round(), vase el captulo 3.

Otra variante de la iteracin indefinida es la iteracin HAGA HASTA QUE; tambin es de tipo indefinido por cuanto se persistir la repeticin en tanto NO se cumpla la condicin lgica, CLog, y de antemano se ignora exactamente cuntas repeticiones se efectuarn, como se ilustra en el diagrama y programa de la figura 5.5. (a)

Do
' ... rango de repeticin ' ... S1 ' ... S2 ' ...... ' ... Sn

Tambin se puede escribir as:

Do Until (CondLog)
' ... rango de repeticin ' ... S1 ' ... S2 ' ...... ' ... Sn

Loop Until (CondLog)


(a)

Loop
FIGURA 5.5 Iteracin Indefinida HAGA HASTA QUE: (a) Esquema diagramtico; (b) Un programa en la sintaxis del lenguaje Visual Basic. En este tipo de iteracin la condicin lgica siempre se evala al final, de suerte que de entrada siempre se ejecutar la serie de operaciones S1, S2, ..., Sn que conforman el rango de iteracin. An si la condicin lgica no se cumple, el rango de iteracin se ejecutar una vez. El smbolo diagramtico para esta iteracin tambin incluye un rectngulo menor dentro de otro mayor, compartiendo un lado, pero, como se puede apreciar en el esquema mostrado, el rectngulo menor tiene espacios arriba y abajo para incluir las expresiones de control y el lado compartido es el de la izquierda. En el programa, mostrada a la derecha de la figura anterior, la estructura iterativa se inicia con Do y se termina con Loop Until (CondLog) ( Do Until = haga hasta que). En la segunda variante, sin embargo, la condicin lgica se evala de entrada. La figura 5.6 hace una comparacin entre la iteracin definida y la indefinida para calcular una serie.

S =

1 2 i =0 1 + i

S =

1 2 i =0 1 + i

Iteracin definida: Calcular la S para los primeros 100 trminos de la Sumatoria, por ejemplo.

Iteracin Indefinida: Calcular S mientras que la suma sea menor que 2.0. Cuntos trminos se suman?

FIGURA 5.6 Comparacin entre la Iteracin Indefinida y la Iteracin Definida.

__________________________________________________________________________________________ walvarem@unalmed.edu.co Pgina 27 Clase# 5.- Estructuras de Iteracin Indefinida / Races de f(x) = 0

Notas de Clase 3004578 Algoritmos y Programacin 01/29/07 Ingeniero William Alvarez Montoya http://www.unalmed.edu.co/~walvarem/ ____________________________________________________________________________________________

4.2 MTODOS PARA OBTENER RACES DE F(X) = 0


Calcular las races de funciones no-lineales se reduce al problema fundamental de obtener las races de una ecuacin de la forma genrica: f(x) = 0 (5.1) Es decir, que el problema consiste en determinar los valores de x, o los ceros de f(x), para los que se cumple f(x) = 0. Normalmente, no es posible obtener una forma explcita en x por lo cual es preciso emplear una forma implcita, como la explicada en secciones anteriores. Esto implica - a su vez- que es preciso emplear mtodos aproximados. Por otro lado, la determinacin de las races de una ecuacin f(x) = 0, correspondiente a una funcin no-lneal, es uno de los problemas ms antiguos y ms estudiados en algunas reas de las Matemticas Aplicadas, de los Mtodos Numricos, y del Anlisis Numrico, y se han realizado un gran nmero de esfuerzos en para lograr mtodos de solucin que permitan obtener los ceros de f(x) = 0. Su importancia radica en que si podemos determinar las races de una ecuacin, tambin podemos determinar mximos y mnimos, valores propios de matrices, resolver sistemas de ecuaciones lineales y diferenciales, etc. Todo lo cual tiene muchsimas aplicaciones en muy diversas reas tcnicas y de ingeniera, especialmente con el desarrollo de los computadores y de las redes de computadores, en especial de la Internet, que han permitido abordar problemas que antes eran inabordables con tcnicas manuales. La determinacin de las soluciones de la ecuacin1 puede llegar a ser un problema muy difcil, en especial cuando intervienen varios tipos de funciones (exponenciales, trigonomricas, polinmicas, logartmicas, etc.). Si f(x) es una funcin polinmica de grado 1 2, conocemos expresiones simples que nos permitirn determinar sus races. Para polinomios de grado 3 4 es necesario emplear mtodos complejos y laboriosos. Sin embargo, si f(x) es de grado mayor de cuatro o bien no es polinmica, no hay ninguna frmula conocida que permita determinar los ceros de la ecuacin, es decir sus races (con excepcin de casos muy singulares). Existen una serie de reglas que pueden ayudar a determinar las races de una ecuacin como la definida por 5.1: El Teorema de Bolzano, que establece que si una funcin continua, f(x), toma en los extremos del intervalo [a,b] valores de signo opuesto, entonces la funcin admite, al menos, una raz en dicho intervalo. En el caso en que f(x) sea una funcin algebraica (polinmica) de grado n y coeficientes reales, podemos afirmar que tendr n races reales o complejas. La propiedad ms importante que verifican las races racionales de una ecuacin algebraica establece que si p/q es una raz racional de la ecuacin de coeficientes enteros:

entonces el denominador q divide al coeficientes an y el numerador p divide al trmino independiente a0. La mayora de los mtodos utilizados para el clculo de las races de una ecuacin son iterativos y se basan en modelos de aproximaciones sucesivas, que siempre suministran un valor muy aproximado de las races. Estos mtodos trabajan del siguiente modo: a partir de una primera aproximacin al valor de la raz, determinamos una aproximacin mejor aplicando una determinada regla de clculo y as sucesivamente hasta que se determine el valor de la raz con el grado de aproximacin deseado.

Si slo se presenta una variable independiente en la ecuacin 5.1 entonces se emplean dos categoras de mtodos de solucin: (a) - de intervalo cerrado como el mtodo de biseccin y el mtodo Regula Falsi o de la Falsa posicin;

0
1

Carnahan, Brice, et al: Applied Numerical Methods, John Wiley and Sons, 1969, pp. 173-17

__________________________________________________________________________________________ walvarem@unalmed.edu.co Pgina 28 Clase# 5.- Estructuras de Iteracin Indefinida / Races de f(x) = 0

Notas de Clase 3004578 Algoritmos y Programacin 01/29/07 Ingeniero William Alvarez Montoya http://www.unalmed.edu.co/~walvarem/ ____________________________________________________________________________________________ (b) - de intervalo abierto2, que son los dems mtodos. Cuando se presenta ms de una variable independiente, entonces habr de resolverse un sistema de ecuaciones lineales nolineales (vase el captulo 8 de las aplicaciones en Mtodos Numricos). Por ahora, se tratarn races de funciones, para una ecuacin f(x) = 0, donde slo interviene una nica variable independiente, y la funcin es no-lineal. La ecuacin 5.1 tiene siempre en forma implcita a la variable independiente. Particularmente, dado que este e sun curso introductorio al tema del Anlisis Numrico y de los Mtodos Numricos se vern los siguientes Mtodos: El Mtodo de Bolzano, llamado generalmente el Mtofdo de Biseccin, que es de intervalo cerrado. El Mtodo de Regula Falsi, o de la Falsa Posicin, que tambin es de intervalo cerrado. El Mtodo de Newton-Raphson, generalmente llamado Mtodo de Newton, que es de intervalo abierto. El Mtodo de la Secante, como una variante del Mtodo de Newton. Adems, hay muchos otros Mtodos que se mencionan en la literatura especializada, tales como: Punto Fijo, Steffensen, Graffe, Muller, Bernoulli, Factorizacin Iterativa de polinomios, Mtodo de Ward, Algoritmo QD de RutisHauser, Mtodo de Bairstow para factores cuadrticos, Mtodos acelerativos, etc.

MTODO DE BOLZANO (BISECCIN)


f(x) FIGURA 5.7 f(x) tiene una raz en el intervalo [1.0, 1.5]. El Mtodo de Bolzano3, conocido popularmente como Mtodo de Biseccin, es uno de los procedimientos ms simples para hallar la raz de una funcin f(x) = 0 en un intervalo dado, como en la figura 5.7. Precisamente, el Teorema de Bolzano4 suministra la base lgico-matemtica que permite hallar dicha raz. En trminos sencillos, dicho Teorema establece que si una funcin f(x) es continua en el intervalo [a,b] y se cumple que f(a)*(b) < 0, entonces f(x) tiene una raz en dicho intervalo. Mediante mtodos grficos o mediante la tabulacin de valores de f(x), es posible determinar el intervalo, que es aquel en el cual la funcin cambia de signo al ser evaluada en el punto a y luego en el punto b. El procedimiento, en s, es bastante directo. Una vez determinado el intervalo que encierra la raz a obtener, se calcula un tercer valor c que es la mitad del intervalo, es decir que c = (a + b), bisectando el intervalo en dos subintervalos: [a,c] y [c,b]; de ah el nombre conque este mtodo es conocido. Luego se verifica si este nuevo valor c es la raiz, o en cul de los intervalos est, ahora, la raz (vase la figura 5.8). El proceso se repite hasta que el valor absoluto de f(c) sea suficientemente pequeo. FIGURA 5.8 Diagrama esquemtico de los subintervalos involucrados en el Mtodo de Bolzano.

0
2 3

The Free Dictionary , Copyright 2006 Farlex, Inc. http://encyclopedia.thefreedictionary.com/Root-finding+algorithm R. E. White, Nonlinear Problems and Intermediate Values; the Bisection Method Undergraduate Computational Engineering and Science, The Department of Energy (DOE), Krell Institute, Copyright 1994. // Tam, Ming T.: The Bisection Method, Notes and Animation, Chemical Engineering Dept., Newcastle University upon Tyne, UK, 1999. // Houben, Stephan: The Bisection Method, Dept. of Math. & Comp. Sci., Eindhoven University of Technology, The Netherlands, 2000, http://www.win.tue.nl/~stephanh/dictaat/solvers/node1.html. 4 Mathews, John H. And Finks, Kurtis: Numericals Methods using Mathematica, 2004. // Arfken, G.: Mathematical Methods for Physicists, 3rd ed. Orlando, FL: Academic Press, pp. 964-965, 1985. // Press, W. H.; Flannery, B. P.; Teukolsky, S. A.; and Vetterling, W. T. Bracketing and Bisection, 9.1 in Numerical Recipes in FORTRAN: The Art of Scientific Computing, 2nd ed. Cambridge, England: Cambridge University Press, pp. 343-347, 1992.

__________________________________________________________________________________________ walvarem@unalmed.edu.co Pgina 29 Clase# 5.- Estructuras de Iteracin Indefinida / Races de f(x) = 0

Notas de Clase 3004578 Algoritmos y Programacin 01/29/07 Ingeniero William Alvarez Montoya http://www.unalmed.edu.co/~walvarem/ ____________________________________________________________________________________________ FIGURA 5.9 Diagrama esquemtico de los parmetros bsicos involucrados en el Mtodo de Bolzano. Los pasos bsicos del algoritmo, en Lenguaje Natural Estructurado (LNA)5, son los siguientes: 1. Conocer la funcin f(x) a la cual se le quiere conocer su raz. 2. Establecer el intervalo [a, b] a partir del cual se va a iniciar el proceso y un > 0 (margen de error, o tolerancia numrica). 3. Calcular el punto medio del intervalo: c = (a+b)/2 3.1 Si |f(c)| < entonces c es la raz. Finalizar. 3.2 Si f(a)*f(c) < 0 entonces b = c. Es decir, el nuevo extremo superior del intervalo es b. 3.3 Si f(c)*f(b)<0 entonces a = c. Es decir, el nuevo extremo inferior del intervalo es b. Repetir el proceso desde el paso 3. Como ejemplo de aplicacin, considrese la siguiente funcin:

f ( x) =

1 1 + 6 2 ( x 0.3) + 0.01 ( x 0.9) 2 + 0.04

(5.2)

Cuyo esquema grfico y la solucin mediante un proyecto Visual Basic se presentan en la figura 5.10:

FIGURA 5.10 Diagrama esquemtico de la funcin f(x) de la ecuacin 5.2, y resultados obtenidos con un proyecto Visual Basic para el intervalo [1, 2].

0
5

Esta es una de las tcnicas bsicas de representacin de algoritmos. Vase el captulo 2 de Algoritmos y Programacin con Visual Basic, en http://xue.unalmed.edu.co/~walvarem.

__________________________________________________________________________________________ walvarem@unalmed.edu.co Pgina 30 Clase# 5.- Estructuras de Iteracin Indefinida / Races de f(x) = 0

Notas de Clase 3004578 Algoritmos y Programacin 01/29/07 Ingeniero William Alvarez Montoya http://www.unalmed.edu.co/~walvarem/ ____________________________________________________________________________________________

MTODO DE NEWTON (NEWTON-RAPHSON)


Es de gran importancia resolver una ecuacin de la forma f(x)=0 (3.3.1), en muchas reas de Ciencia e Ingeniera, como en Matemticas, Fsica, Qumica, Elctrica, etc., y tambin en el clculo de algunas funciones o constantes matemticas como las races cuadradas y otros tipos de races. El Mtodo de Newton_Raphson6, conocido ms comnmente como Mtodo de Newton, es un Mtodo de intervalo abierto, y slo requiere un valor inicial, cercano a la raz, para obtener un valor ms aproximado a la raz de una funcin f(x) = 0 (3.3.1) . Este mtodo es atribudo a Sir Isaac Newton (1643-1727) y a Joseph Raphson (1648-1715)7. La figura 5.11 presenta los parmetros principales a considerar en el mtodo de Newton. FIGURA 5.11 Elementos bsicos para hallar una raz de la funcin f(x) = 0 por medio del Mtodo de Newton-Raphson.

Xn = Xn1

f ( Xn1) , n 1 f (Xn1)

(5.3)

Los pasos bsicos de un algoritmo para el Mtodo de Newton son los siguientes: 1. Conocer la funcin f(x) a la cual se le quiere obtener su raz. Tambin su derivada f(x). 2. Establecer un punto de inicio X0 a partir del cual se va a iniciar el proceso. 3. 4.

Si f(X0) = 0 entonces habr divisin por cero, finalizar; de lo contrario, continuar con paso 4.. Si f(X0) = 0 entonces la raz es X0, finalizar, e ir al paso 5; de lo contrario: Calcule X1 mediante la ecuacin: Hacer X0 igual a X1.

= X

f (X 0 ) f (X 0 )

(3.3.11)

5. Repetir el paso 3 hasta que |f(X0)| epsilon. f 6. Mostrar X0 Sin embargo, el Mtodo de Newton-Raphson presenta varios inconvenientes: (i) - Cuando la raz es un Punto de Inflexin, es decir que: f(x)=0, el mtodo falla, o sea que no converge; (ii) Igualmente, la convergencia es inexistente cuando cae en un punto de mxima o o de mnima (f(x) = 0); (iii) En ocasiones, el mtodo converge demasiado lentamente, especialmente cuando el punto inicial no es cerdcano a la raz; (iv) tambin se suele presentar bamboleo o secuencias oscilatorias de iteraciones.

0
6

Murison, Marc A.: A Symbolic Newton-Raphson Method of Finding Roots, Astronomical Applications Department U.S. Naval Observatory , http://arnold.usno.navy.mil/murison/, December 1996. // Pascal Sebah and Xavier Gourdon , Newtons method and high order iterations, numbers.computation.free.fr/Constants/constants.html, October 3, 2001. // Recktenwald , Gerald: Numerical Methods with MATLAB: Implementations and Applications, 2000, Prentice Hall ISBN: 0201308606. 7 Tjalling J. Ypma: Historical Development of the Newton-Raphson Method, SIAM Review, Vol. 37, No. 4 (Dec., 1995), pp. 531-551

__________________________________________________________________________________________ walvarem@unalmed.edu.co Pgina 31 Clase# 5.- Estructuras de Iteracin Indefinida / Races de f(x) = 0

Notas de Clase 3004578 Algoritmos y Programacin 01/29/07 Ingeniero William Alvarez Montoya http://www.unalmed.edu.co/~walvarem/ ____________________________________________________________________________________________

MTODO DE LA SECANTE
El Mtodo de La Secante8, es en realidad- una variante del Mtodo Newton-Raphson. Como se vi en la seccin 3.3, el Mtodo Newton-Raphson tiene muchos aspectos positivos, pero una de sus principales falencias es que requiere la evaluacin de dos funciones diferentes en cada iteracin, f(x) y su derivada f(x). Cuando la funcin f(x) es relativamente simple, es fcil calcular ambas funciones iterativamente; pero cuando f(x) es una funcin complicada como sucede en la prctica en muchas reas tcnicas y de ingenieras- el clculo de la derivada no es fcil, y en el mejor de los casos es un proceso tedioso. En estos casos, resulta muy til tener a la mano un mtodo que no requiera la evaluacin de la derivada, f(x). Uno de estos mtodos es el Mtodo Secante, o Mtodo de La secante, que en lugar de la derivada utiliza una aproximacin lineal en cada iteracin. Este mtodo es de intervalo abierto. Este mtodo empieza con dos valores iniciales xo, x1, como se ilustra en la figura 5.12. FIGURA 5.12 Esquema grfico que muestra los parmetros bsicos del Mtodo Secante. En este mtodo, la funcin f(x) es aproximada por medio de una linea recta, la cual es una extrapolacin basada en dos puntos xo y x1 de la funcin f(x). Los dos puntos (x0,f(x0)) y (x1,f(x1)) definen una linea recta secante (de ah el nombre del mtodo) cuya ecuacin es la siguiente:

x2 = x1 f ( x1 )

x1 x0 f ( x1 ) f ( x0 )

(5.3)

4.3 PRCTICA #5 RACES DE F(X) = 0


Realizar un proyecto Visual Basic que tenga esta apariencia para obtener las races de una funcin f(x), como la definida en la ecuacin 5.2, en los intervalos respectivos:

f ( x) =

1 1 + 6 2 ( x 0.3) + 0.01 ( x 0.9) 2 + 0.04

(5.2)

4.4 ACTIVIDADES EXTRACLASE - TAREAS

Indagar cmo funcionan y cules son los algoritmos de los siguientes mtodos, y elaborar proyectos Visual Basic: (i) - Regula Falsi, o de la Falsa Posicin; (ii) - Punto Fijo; (iii) - Steffensen; (iv) - Graffe, Muller, Bernoulli, Factorizacin Iterativa de polinomios, Mtodo de Ward, Algoritmo QD de RutisHauser, Mtodo de Bairstow para factores cuadrticos, Mtodos acelerativos.
Dyer, Charles and Ip, Peter S.S.: An Elementary Introduction to Scientific Computing, Division of Physical Sciences University of Toronto at Scarborough, http://pathfinder.scar.utoronto.ca/~dyer/ 2000, 2002 2006. // Press, W. H.; Flannery, B. P.; Teukolsky, S. A.; and Vetterling, W. T. Secant Method, False Position Method, and Ridders' Method, 9.2 in Numerical Recipes in FORTRAN: The Art of Scientific Computing, 2nd ed. Cambridge, England: Cambridge University Press, pp. 347-352, 1992. // Recktenwald , Gerald: Numerical Methods with MATLAB: Implementations and Applications, 2000, Prentice Hall ISBN: 0201308606.

0
8

__________________________________________________________________________________________ walvarem@unalmed.edu.co Pgina 32 Clase# 5.- Estructuras de Iteracin Indefinida / Races de f(x) = 0