Sunteți pe pagina 1din 24

INTRODUCCION De manera general aportamos en este texto una gua para el desarrollo de algoritmos y la aplicacin del mismo en problemas

de ingeniera. Por lo mismo, el alumno que cursa la materia de Ingeniera Asistida por Computadora, requiere tener buena base lgica para poder desarrollar de manera fcil y rpida sus programas de aplicacin y as profundizar en el campo de la programacin avanzada para simular procesos que permitirn visualizar el comportamiento de los fenmenos fsicos, qumicos a travs de modelos matemticos simulados. Estos apuntes, servirn sin duda de apoyo no solo al docente de la materia sino que le ayudar al estudiante a entender el propsito de la misma. En la labor cotidiana de enseanza facilitar tambin al dicente a desarrollar su capacidad lgica, analtica y creadora, para mejorar su destreza en la elaboracin de algoritmos que servirn como base para la codicacin en cualquier lenguaje de programacin. De manera particular se hace referencia a MATLAB como el lenguaje de mejor aplicacin prctica en reas de Ingeniera Petroqumica e Ingeniera del Petrleo y Gas Natural, como herramienta estndar utilizado por ingenieros y cientcos en el mundo para solucionar problemas en procesos de simulacin en qumica, fsica y control automtico en pozos petroleros. Hoy da, existe una amplia variedad de lenguajes y entornos para la computacin tcnica. Ciertamente, todos ellos son importantes, as como varios lenguajes matemticos comerciales. Sin embargo, en mi opinin personal, MATLAB es la opcin correcta porque es fcil de aprender y usar, potente, exible y extensible, exacto, robusto y rpido; ampliamente utilizado en ingeniera y ciencias. Adems puede interactuar con otros programas como Hysys en procesos petroqumicos. En la materia de referencia no se presupone una experiencia previa en la computacin. Los conocimientos matemticos requeridos para el desarrollo del curso son lgebra universitaria, trigonometra, matemtica avanzada y el manejo de mtodos numricos para la solucin de problemas complejos como ejercicio de aplicacin prctica.

I.

CONCEPTOS BSICOS Y METODOLOGA PARA LA SOLUCIN DE PROBLEMAS POR MEDIO DE COMPUTADORAS. OBJETIVO EDUCACIONAL:

El alumno ser capaz de: 1

Conocer la terminologa relacionada en la computacin y las partes elementales de la computadora Conocer el desarrollo generacional de las computadoras y lenguajes de programacin. Conocer principios de creacin de algoritmos, as como la importancia de aplicar tcnicas adecuadas de programacin. Conocer la metodologa en cada una de sus etapas. 1.1 Introduccin La computadora no constituye una alternativa de la capacidad intelectual del hombre, por el contrario es una prolongacin de esta ltima. Tampoco representa en s misma una solucin para cualquier clase de problema. Es un instrumento: un instrumento de poder y valor inmensos, que permite dirigir la actividad profesional, estudiantil, comercial o industrial con mejores posibilidades de desempeo y eciencia. En consecuencia, se la considera como el aporte ms importante desde la revolucin industrial. Por lo mismo, tanto ingenieros como cientcos se valen de la computadora para resolver diversos problemas, desde la evaluacin de una funcin sencilla hasta la resolucin de sistemas complejos aplicando procesamiento de nmeros con acceso fcil a la gracacin y manejo de matrices como herramienta en la solucin de problemas en procesos matemticos, fsicos, qumicos, simulacin de procesos, optimizacin, control, etc. La computadora no es solamente una mquina que puede realizar procesos para arrojar resultados esperada, sin que tengamos la nocin exacta de las operaciones que realiza para llegar a esos resultados. Con la computadora adems de lo anterior tambin podemos disear soluciones a la medida de los requerimientos, de problemas especcos que se nos presenten. Ms aun, si estos involucran operaciones matemticas complejas y/o repetitivas, o requieren del manejo de un volumen muy grande de datos que hace inviable su tratamiento directamente por una o varias personas. En otros casos nos encontramos con que existen datos comunes que son utilizados por multitud de personas como pueden ser constantes de reacciones qumicas, datos astronmicos, atmosfricos, etc. Un rea donde los ordenadores son realmente tiles y que evitan un trabajo pesado al ser humano es en las tareas repetitivas antes de llegar a la solucin del algoritmo. El diseo de soluciones a la medida de nuestros problemas, requiere como en otras disciplinas una metodologa que nos ensee de manera gradual, la forma de llegar a estas soluciones. A las soluciones creadas por computadora se les conoce como programas y no son ms que una serie de operaciones que realiza la computadora para llegar a un resultado, con un conjunto de datos especcos. Para poder realizar programas, adems de conocer la metodologa mencionada, tambin debemos de conocer, de manera especca las funciones que pueden realizar la computadora y las formas en que se pueden manejar los elementos que hay en la misma. Computadora: Es un dispositivo electrnico utilizado para procesar informacin y obtener resultados. Los datos y la informacin se pueden introducir 2

en la computadora como entrada (input) y a continuacin se procesan para producir una salida (output). El hardware de computadora se reere al equipo, como el teclado, el ratn, la terminal, el disco duro y la impresora. El software de computadora se reere a los programas que describen los pasos que queremos que la computadora realice. 1.1.1 Proceso de informacin en la computadora Datos de Proceso Datos de Entrada salida Programa: Es el conjunto de instrucciones escritas en algn lenguaje de programacin y que ejecutadas secuencialmente resuelven un problema especico. 1.1.2 Organizacin fsica de una computadora CPU Unidad de Unidad Dispositivos de Control Aritmtica Dispositivos Entrada (procesador) y Lgica de Salida Memorias Dispositivos de Entrada: Como su nombre lo indica, sirven para introducir datos (informacin) en la computadora para su proceso. Los datos se leen de los dispositivos de entrada y se almacenan en la memoria central o interna. Ejemplos: teclado, scanners (digitalizadores de rastreo), mouse (ratn), trackball (bola de ratn estacionario), joystick (palancas de juego), lpiz ptico. Dispositivos de Salida: Regresan los datos procesados que sirven de informacin al usuario. Ejemplo: monitor, impresora. La Unidad Central de Procesamiento (C.P.U) se divide en dos: Unidad de control (procesador) Unidad Aritmtico - Lgica Unidad de Control: Coordina las actividades de la computadora y determina que operaciones se deben realizar y en qu orden; as mismo controla todo el proceso de la computadora. Acepta valores de entrada y las almacena en la memoria. Interpreta las instrucciones de los programas de computadora. Si queremos sumas dos valores, el procesador recuperar los valores de la memoria y los enviar a una unidad de aritmtica y lgica (ALU). La ALU, realizar la suma y el procesador almacenar despus el resultado en la memoria. La unidad de procesamiento y la ALU utilizan memoria interna de solo lectura (ROM) y memoria de acceso aleatorio (RAM) en su procesamiento; la mayor parte de los datos se almacenan en memoria externa o memoria secundaria usando unidades de disco. El procesador y la ALU juntos reciben el nombre de unidad central de proceso (CPU). Un microprocesador es una CPU contenida en un solo chip de circuitos integrados que contiene millones de componentes en un rea ms pequea que un sello de correo. Unidad Aritmtico - Lgica: Realiza operaciones aritmticas y lgicas, tales como suma, resta, multiplicacin, divisin y comparaciones. La Memoria de la computadora se divide en dos: 3

Memoria Central o Interna Memoria Auxiliar o Externa Memoria Central (interna): La CPU utiliza la memoria de la computadora para guardar informacin mientras trabaja con ella; mientras esta informacin permanezca en memoria, la computadora puede tener acceso a ella en forma directa. Esta memoria construida internamente se llama memoria de acceso aleatorio (RAM). La memoria interna consta de dos reas de memoria: La memoria RAM (Randon Access Memory): Recibe el nombre de memoria principal o memoria del usuario, en ella se almacena informacin solo mientras la computadora est encendida. Cuando se apaga o arranca nuevamente la computadora, la informacin se pierde, por lo que se dice que la memoria RAM es una memoria voltil. La memoria ROM (Read Only Memory): Es una memoria esttica que no puede cambiar, la computadora puede leer los datos almacenados en la memoria ROM, pero no se pueden introducir datos en ella, o cambiar los datos que ah se encuentran; por lo que se dice que esta memoria es de solo lectura. Los datos de la memoria ROM estn grabados en forma permanente y son introducidos por el fabricante de la computadora. Memoria Auxiliar (Externa): Es donde se almacenan todos los programas o datos que el usuario desee. Los dispositivos de almacenamiento o memorias auxiliares (externas o secundarias) ms comnmente utilizados son: cintas magnticas y discos magnticos. 1.1.3 Sistema Operativo Ciertos tipos de software, como el sistema operativo, normalmente viene con el hardware de la computadora cuando se adquiere sta. El sistema operativo provee una interfaz entre el ususario y el hardware estableciendo un entorno cmodo y eciente que permite seleccionar y ejecutar el software del sistema. El sistema operativo tambin contienen un grupo de programas llamados utileras que permiten realizar funciones como imprimir archivos, copiar archivos de un disco a otro y listar los archivos que se han guardado en un disco. Internet La internet es una red de computadoras que evolucion a partir de un pequeo proyecto de investigacin experimental nanciado por la ARPA (Advanced Research Projects Agency), una dependencia del gobierno estadounidense, a mediados de la dcada de 1980. Diez aos despus, la Internet era la red ms grande del mundo, en conexin con ms de un milln de computadoras. Internet es un conglomerado de ordenadores de diferente tipo, marca y sistema operativo, distribuido por todo el mundo y unidos a travs de enlaces de comunicaciones muy diversos. El nacimiento de la Internet comercial a partir del ao 1995, el crecimiento de la red ha superado todas expectativas. A partir de aqu la escalada de tecnologa es impresionante. SE desarrollan los motores de bsqueda que rpidamente aaden bsquedas inteligentes en varios idiomas. El uso de lenguaje java se extiende. Se desarrolla de una manera denitiva el comercio electrnico, para comprar productos y servicios a travs de Internet. Se pueden ver cientos de 4

televisores y escuchar radios de todo el mundo en tiempo real. Los bancos se asientan en la red y la gente empieza a ceder en su miedo inicial, conando en la seguridad que orecen los servidores seguros. En la actualidad se estima que hay ms de 200 millones de usuarios de Internet repartidos en ms de 100 pases. Clasicacin Consideremos la clasicacin segn la cobertura en: LAN (Local Area Network) red de rea local. Puede abarcar desde unos pocos metros hasta cubrir un edicio o como mximo unos edicios cercanos entre si (el entorno de un campus universitario). WAN (Wide Area Network), redes de area ancha. Es la red de mayor cobertura, llegando a cbrir el rea de todo un pas, continente o incluso ms. MAN (Metropolitan Area Network), redes de rea metropolitana. Abarcan un rea intermedia entre LAN y WAN. Segn el objetivo empresarial: Pblica. Son accesibles por cualquier usuario siempre que se pague el precio establecido para la conexin. La mayora son redes WAN. Privadas. Las redes privadas habitualmente pertenecen a empresas o instituciones. Slo son utilizadas por los trabajadores y el objetivo es mejorar la comunicacin dentro de la empresa. Elementos de una red: Host, denido como el ordenador principal de un organismo o empresa. Debe ejecutar procesos para dar servicio a sus usuarios y debe ser capaza de comunicarse con otros hosts a travs de la subred. Subred de comunicaciones, es el entramado o estructura l que se conectan los hosts. Debe garantizar la conectividad total, es decir que dos hosts cualesquiera se puedan comunicar. Medios de transmisin Los medios de transmisin son el material del que est formado/fabricado la lnea por la que se transmite la seal. Se pueden clasicar en: Guiados caracterizado por un conductor metlico: par trenzado y cable coaxial y por conductor ptico como bra ptica, como el medio ms nuevo para transmitir grandes cantidades de datos. La bra ptica est formada por un ncleo de vidrio o plstico y un revestimiento que mantiene la luz en su interior. Entre sus ventajas podemos citar gran ancho de banda con lo que logra transmisiones a ms de un Gbit/seg. El material del que se construye es el slice. Es casi inmune a las radiaciones externas. Los medios no guiados, utilizan el aire para transmitir las seales. Normalmente se transmiten seales va radio. El inconveniente de este tipo de transmisin es que se necesita un enlace visual entre emisor y receptor, lo que solo puede conseguirse en distancias cortas. Una variante de esta tcnica consiste en el uso de satlites de comunicacin. Cada usuario est identicado con su direccin de correo. nombre@nombre_dominio, por ejemplo manuel@hotmail.com, representa al usuario manuel que pertenece al dominio Hotmail.com Correo Electrnico 5

Un sistema de correo electrnico es software que permite a los usuarios de una red de computadoras enviar mensajes a otros usuarios de la red. Los usuarios de Internet pueden enviar mensajes electrnicos (email) a usuarios en todo el mundo. El envi de correo electrnico y su contestacin se ha convertido en el modo de comunicacin estndar en muchas universidades y compaas. Si bien el uso de correo electrnico simplica muchas interacciones, tambin introduce algunas cuestiones interesantes que es preciso resolver. Por ejemplo, el correo electrnico es correspondencia privada o una compaa tiene derecho a leer el correo electrnico de sus empleados? 1.1.4. Procesadores de texto Llamadas tambin herramientas de software, son programas que se han escrito para realizar operaciones comunes. Por ejemplo, los procesadores de textos como Microsoft Word, son programas que ayudan al usuario a introducir texto y darle formato. Los procesadores de textos permiten cambiar de lugar frases y prrafos y a menudo cuentan con capacidades para introducir ecuaciones matemticas y revisar la ortografa o la gramtica. Los procesadores de textos ms avanzados permiten producir pginas bien diseadas que combinan diagramas y grcos elaborados con texto y ttulos. Estos programas usan una tecnologa llamada autoedicin, que combina un procesador de texto potente con una impresora de alta calidad para producir documentos de aspecto profesional. 1.1.4. Hoja de Clculo Los programas de hoja de clculo son herramientas de software que facilitan el trabajo con datos que se pueden exhibir en una retcula de las y columnas. Las hojas de clculo se usan inicialmente para aplicaciones nancieras y de contabilidad, pero muchos problemas cientcos y de ingeniera se pueden resolver con facilidad usando hojas de clculo. La mayor parte de los paquetes de hojas de clculo cuenta con funciones de gracacin, por lo que pueden ser de especial utilidad para analizar y exhibir informacin. 1.1.6. Administracin de base de datos Otro grupo muy utilizado de herramientas de software lo constituyen los programas de administracin de base de datos, como dbase, paradox, php, etc. Estos programas permiten al usuario almacenar una gran cantidad de datos, recuperar elementos de esos datos y darles formato para presentarlos en informes. Las organizaciones grandes como bancos, hospitales, hoteles y lneas areas usan bases de datos. Tambin se usan bases de datos cientcas para analizar grandes cantidades de datos. Los datos meteorolgicos son un ejemplo de datos cientcos que requieren una base de datos grande para su almacenamiento y anlisis. 1.2 Denicin de Lenguaje Lenguaje: Es una serie de smbolos que sirven para transmitir uno o ms mensajes (ideas) entre dos entidades diferentes. A la transmisin de mensajes se le conoce comnmente como comunicacin. La comunicacin es un proceso complejo que requiere una serie de reglas simples, pero indispensables para poderse llevar a cabo. Las dos principales son las siguientes: Los mensajes deben correr en un sentido a la vez.

Debe forzosamente existir 4 elementos: Emisor, Receptor, Medio de Comunicacin y Mensaje. 1.2.1 Lenguajes de Programacin Las relaciones humanas se llevan a cabo a travs del lenguaje. Un lenguaje permite la expresin de ideas y de razonamientos, y sin ella la comunicacin sera imposible. Los ordenadores slo aceptan y comprenden un lenguaje de bajo nivel, que consiste en largas secuencias de ceros y unos. Estas secuencias son ininteligibles para muchas personas, y adems son especcas para cada ordenador, constituyendo el denominado lenguaje de mquina. Un lenguaje de programacin se puede denir de distintas formas: El ms general es un conjunto de smbolos, caracteres y reglas (programas) que les permiten a las personas comunicarse con la computadora. Los lenguajes de programacin tienen un conjunto de instrucciones que nos permiten realizar operaciones de entrada/salida, clculo, manipulacin de textos, lgica/comparacin y almacenamiento/recuperacin. Los lenguajes de programacin se pueden clasicar desde distintos puntos de vista: Segn su grado de independencia de la mquina Segn la forma de sus instrucciones Por generaciones Los lenguajes se pueden clasicar segn su grado de independencia de la mquina en que se ejecutan en cinco grupos: Lenguaje Maquina: Son aquellos cuyas instrucciones son directamente entendibles por la computadora y no necesitan traduccin posterior para que la CPU pueda comprender y ejecutar el programa. Las instrucciones en lenguaje maquina se expresan en trminos de la unidad de memoria ms pequea el bit (dgito binario 0 o 1). El lenguaje de mquina se escribe usando dos smbolos, que usualmente se representan con los dgitos o y 1. Por tanto, el lenguaje de mquina tambin es un lenguaje binario, y las instrucciones se escriben como sucesiones de ceros y unos llamadas cadenas binarias. Lenguaje de Bajo Nivel (Ensamblador): En este lenguaje las instrucciones se escriben en cdigos alfabticos conocidos como mnemotcnicos para las operaciones y direcciones simblicas. Cada cdigo de operacin se indica por un cdigo simblico. Por ejemplo ADD para adicin y MUL para multiplicacin. Los lenguajes ensambladores normalmente no tienen muchas instrucciones, por lo que escribir programas en ellos puede ser tedioso. Adems, para usar un lenguaje ensamblador se debe contar con informacin relacionada con el hardware de computadora especco. Los lenguajes de medio nivel, tienen algunas de las caractersticas de los lenguaje de bajo nivel (posibilidad de acceso directo a posiciones de memoria, indicaciones para que ciertas variables se almacenen en los registros del microprocesador, etc. . . ) aadidas a las posibilidades de manejo de estructuras de control y de datos de los lenguajes de alto nivel. 7

Lenguaje de Alto Nivel: Los lenguajes de programacin de alto nivel (BASIC, Pascal, Cobol, Fortran, Java, etc.) son aquellos en los que las instrucciones o sentencias a la computadora son escritas con palabras similares a los lenguajes humanos (en general en ingles), lo que facilita la escritura y comprensin del programa. Un lenguaje de alto nivel contiene gran nmero de comandos y un conjunto amplio de reglas de sintaxis (o gramtica) para usar los comandos. Los lenguajes orientados a problemas concretos se utilizan para la resolucin de problemas en un campo especco como SQL, XBASE, SPSS entre otros. Segn la forma de sus instrucciones se pueden clasicar en: Lenguajes imperativos o procedimentales son los que usan la instruccin o sentencia de asignacin como construccin bsica de la estructura de los programas. Son lenguajes orientados a instrucciones, es decir la unidad de trabajo bsica de estos lenguajes es la instruccin o sentencia. FORTRAM, COBOL, ALGOL HISTRICAMENTE SON LOS PRECURSOSRES. Lenguajes declarativos Son lenguajes de muy alto nivel cuya notacin es muy prxima al problema real del algoritmo que resuelven. Hay dos tipos de lenguajes declarativos: lenguajes lgicos y lenguajes funcionales. Los lenguajes funcionales tienen todas sus construcciones como llamada a funciones matemticas. Es decir no hay instrucciones, todo el programa es una funcin y todas las operaciones se realizan por composicin de funciones ms simples. En la ejecucin de los programas funcionales se aplica la funcin a los datos de entrada (que son los argumentos de la funcin) y se obtiene el resultado (el valor calculado por la funcin). Ejemplo Hope, Haskell entre otros. Los lenguajes lgicos denen sus instrucciones siguiendo un tipo de lgica. El lenguaje de programacin lgica ms utilizado es el PROLOG, que utiliza la lgica clausal. La programacin lgica maneja relaciones (predicados) entre objetos (datos). Las relaciones se especican con reglas y hechos. Lenguajes concurrentes son los que permiten la ejecucin simultnea (paralela o concurrente) de dos o varias tareas. Ejemplo ADA, CONCURRENT C, CONCURRENTE PROLOG, ETC. Lenguajes orientados a objetos Actualmente existen ms de 2000 lenguajes de alto nivel diferentes, de los cuales alrededor de un centenar son lenguajes orientados a objetos o lenguajes basados en objetos si soporta directamente tipos abstractos de datos y clases, adems aade mecanismos para soportar la herencia y el polimorsmo. Ejemplo C++, Turbo pascal, Delphi, Java, etc. Los Lenguajes segn su generacin se clasica en: Primera generacin, constituida por los lenguajes mquina y ensamblador en los aos 40 y 50. La segunda generacin, comienza con el desarrollo del primer compilador de FORTRAM en el ao 1958 hasta mediados de los aos 60 con la normalizacin por el American National Standard Institute (ANSI) de los lenguajes de programacin. Se caracteriza con la asignacin de memoria en tiempo de compilacin. FORTRAM Y COBOL. La tercera generacin, comprende los lenguajes de alto nivel, ligada al trmino programacin estructurada y se desarrolla entre mediados de los aos 8

60 y 70. Se caracteriza por el uso de mdulos o subprogramas, variables locales, recursividad y estructuras dinmicas. Ejemplos Algol60, PL/I, Pascal, Modula, Etc. La cuarta generacin, est caracterizada por lenguajes de muy alto nivel dedicadas a tareas especicas. Una gran parte de ellos estn dedicados a la gestin de base de datos y a la generacin de aplicaciones con herramientas CASE, corresponde a mediados de los aos 70 hasta nales de los 80. Ejemplos SQL, DB2, DBASE, etc. La quinta generacin, est asociada a los lenguajes ligados a la inteligencia articial. Ejemplo Prolog, Haskell, Miranda, etc. Generacin Orientada a objetos, comienza a mediados de los aos 80 con Simula67 y la proliferacin de las interfaces Grcas de Usuario (IGU). Ejemplo C++, Turbo pascal, Simula, etc. Generacin Visual, comienza a mediados de los aos 90, ligado a la exigencia de los usuarios de disponer de interfaces amigables. Ejemplo. Visual Basic, Delphi. Generacin Internet, Comienza a mediados de los aos noventa, ligado a la gran explosin de internet y a la necesidad de manejar aplicaciones en distintas plataformas dentro de toda la red. El lenguaje ms caracterstico es Java, dentro de esta generacin esta XML, HTML, VRML y otros. Compilador Un programa escrito en un lenguaje de alto nivel debe traducirse a lenguaje de mquina antes de que el computador pueda ejecutar las instrucciones. Se usa un programa especial llamado compilador para llevar a cabo dicha traduccin. Si el compilador detecta errores durante la compilacin, imprime los mensajes de error correspondientes. Debemos corregir las instrucciones del programa y luego realizar otra vez el paso de compilacin. Los errores identicados durante esta etapa se llaman errores de compilacin o errores de tiempo de compilacin. Si ya no hay errores de compilacin, el compilador genera un programa en lenguaje de mquina que ejecuta los pasos especicados en el programa original. Llamamos a este programa original programa fuente, y la versin en lenguaje de mquina se denomina programa objeto. Una vez que el programa se ha compilado correctamente, se requieren pasos adicionales para preparar el programa para su ejecucin. Esta preparacin implica vincular otras instrucciones en lenguaje de maquina con el programa objeto y luego cargar el programa en la memoria, Despus de esta vinculacin/carga, la computadora ejecuta los pasos del programa. En esta etapa podran identicarse nuevos errores llamados errores de ejecucin, errores de tiempo de ejecucin o errores de lgica. Ciclo de vida del software En 1955, el costo de una solucin por computadora tpica se estimaba en un 15% para el desarrollo de software y un 85% para el hardware de computadora correspondiente. Con el tiempo, el costo del hardware ha disminuido drsticamente, mientras que el costo del software ha aumentado. En 1985 se estim que los nmeros mencionados prcticamente se haban invertido, con el 85% del costo para el software y el 15% para el hardware. 10

El desarrollo de un proyecto de software generalmente sigue pasos o ciclos denidos, llamados colectivamente el ciclo de vida del software. Estos pasos por lo regular incluyen la denicin del proyecto, la especicacin detallada, codicacin y pruebas modulares, pruebas integradas y mantenimiento. Los datos indican que los porcentajes de esfuerzo invertido correspondientes son a grandes rasgos los que se detallan a continuacin. Ciclo de vida porcentaje de esfuerzo Denicin 3% Especicacin 15% Codicacin y pruebas modulares 14% Pruebas integradas 8% Mantenimiento 60% A la luz de estas estimaciones, es evidente que el mantenimiento del software representa una parte signicativa del costo de un sistema de software. Este mantenimiento incluye agregar mejoras al software, corregir los errores identicados al usar el software, y adaptar el software para trabajar con hardware o software nuevo. Una de las tcnicas que ha resultado efectiva para reducir el costo del desarrollo de software tanto en tiempo como en dinero es la creacin de prototipos de software. 1.3 Denicin de Algoritmo La palabra algoritmo se deriva de la traduccin al latn de la palabra rabe alkhowarizmi, nombre de un matemtico y astrnomo rabe que escribi un tratado sobre manipulacin de nmeros y ecuaciones en el siglo IX. Un algoritmo es una secuencia nita de operaciones que resuelve un problema en un tiempo nito. Los principales atributos que tiene que presentar un algoritmo son: debe ser nito, denido, preciso e independiente de lenguaje de programacin. Finito signica que debe tener un nmero nito de pasos y por tanto estar limitado tanto por el tiempo de realizacin como por el nmero de operaciones que realiza. Denido implica que ante los mismos datos de entrada se obtienen los mismos datos de salida. Preciso requiere que se indique de una forma inequvoca el orden de realizacin de cada paso. Independiente de lenguaje de programacin signica que debe ser de propsito general, y al no contener ningn paso especco de un lenguaje en particular permite su implementacin en cualquier lenguaje de programacin. Este atributo marca la clara diferencia entre algoritmo y programa de ordenador, y es que el algoritmo siempre es anterior al programa de ordenador, un algoritmo se puede codicar con diversos lenguajes de programacin, dando lugar a diferentes programas de ordenador. Un algoritmo maneja la informacin que se le suministra para generar una serie de resultados, as consta de datos y de sentencias. Los datos se almacenan 11

como variables o constantes y se involucran en expresiones. Las sentencias describen las acciones algortmicas que pueden ser ejecutadas y en general realizan asignaciones, entradas/salidas de datos y control de ujo del algoritmo. 1.4 Tipos de Algoritmos Cualitativos: Son aquellos en los que se describen los pasos utilizando solo palabras. Cuantitativos: Son aquellos en los que se utilizan clculos numricos para denir los pasos del proceso. 1.5 Lenguajes Algortmicos Es una serie de smbolos y reglas que se utilizan para describir de manera explcita un proceso. 1.5.1 Tipos de Lenguajes Algortmicos Grcos: Es la representacin grca de las operaciones que realiza un algoritmo (diagrama de ujo). No Grcos: Representa en forma descriptiva las operaciones que debe realizar un algoritmo (pseudocdigo). 1.6 Metodologa para la solucin de problemas por medio de computadora En las disciplinas de ingeniera, ciencias y programacin de computadoras, es importante tener un enfoque consistente para resolver los problemas tcnicos. El enfoque que se plantea a continuacin es til en cursos tan distintos como qumica, fsica, termodinmica y diseo de ingeniera. Tambin se aplica a las ciencias sociales, como economa y sociologa. Otros autores quiz formulen sus esquemas de resolucin de problemas de forma ligeramente diferente, pero todos tienen el mismo formato bsico. 1.7 Plantear el Problema Esta fase est dada por el enunciado del problema, el cual requiere una denicin clara y precisa. Es importante que se conozca lo que se desea que realice la computadora; mientras esto no se conozca del todo no tiene mucho caso continuar con la siguiente etapa. En esta etapa con frecuencia es til hacer un dibujo. 1.8 Anlisis del Problema Una vez que se ha comprendido lo que se desea de la computadora, es necesario denir: Los datos de entrada (conocidos) y las salidas (incgnitas) que se requieren. Tenga cuidado de incluir las unidades conforme describen los valores en entrada y salida. El manejo descuidado de las unidades con frecuencia lleva a respuestas incorrectas. Identique las constantes que tal vez requiera en el clculo, como la constante de los gases ideales y la aceleracin de la gravedad y todas las frmulas que se necesita para procesar los datos. Si es apropiado, en un dibujo escriba los valores que haya identicado o agrpelos en una tabla. 12

Una recomendacin muy practica es el que nos pongamos en el lugar de la computadora y analicemos que es lo que necesitamos que nos ordenen y en que secuencia para producir los resultados esperados. 1.9 Diseo del Algoritmo Desarrollar un algoritmo para resolver el problema. En aplicaciones de cmputo, es frecuente que esto se logre con una prueba de escritorio. Para ello necesitar: identicar cualesquier ecuaciones que relacionen los valores conocidos con las incgnitas. Trabajar con una versin simplicada del problema, a mano o con calculadora. Las caractersticas de un buen algoritmo son: Debe tener un punto particular de inicio. Debe ser denido, no debe permitir dobles interpretaciones. Debe ser general, es decir, soportar la mayora de las variantes que se puedan presentar en la denicin del problema. Debe ser nito en tamao y tiempo de ejecucin. 1.10 Codicacin La codicacin es la operacin de escribir la solucin del problema (de acuerdo a la lgica del diagrama de ujo o pseudocdigo), en una serie de instrucciones detalladas, en un cdigo reconocible por la computadora, la serie de instrucciones detalladas se le conoce como cdigo fuente, el cual se escribe en un lenguaje de programacin o lenguaje de alto nivel. 1.11 Prueba y Depuracin Los errores humanos dentro de la programacin de computadoras son muchos y aumentan considerablemente con la complejidad del problema. El proceso de identicar y eliminar errores, para dar paso a una solucin sin errores se le llama depuracin. La depuracin o prueba resulta una tarea tan creativa como el mismo desarrollo de la solucin, por ello se debe considerar con el mismo inters y entusiasmo. Al probar una solucin se debe considerar los siguientes aspectos: Sus resultados tienen sentido fsico? Coinciden con los clculos de la muestra? La respuesta es la que se peda en realidad? Las grcas con frecuencia son formas tiles de vericar que los clculos son razonables. 1.12 Documentacin Es la gua o comunicacin escrita en sus variadas formas, ya sea en enunciados, procedimientos, dibujos o diagramas. A menudo un programa escrito por una persona, es usado por otra. Por ello la documentacin sirve para ayudar a comprender o usar un programa o para facilitar futuras modicaciones (mantenimiento). La documentacin se divide en tres partes: Documentacin Interna Documentacin Externa 13

Manual del Usuario Documentacin Interna: Son los comentarios o mensaje que se aaden al cdigo fuente para hacer ms claro el entendimiento de un proceso. Documentacin Externa: Se dene en un documento escrito los siguientes puntos: Descripcin del Problema Nombre del Autor Algoritmo (diagrama de ujo o pseudocdigo) Diccionario de Datos Cdigo Fuente (programa) Manual del Usuario: Describe paso a paso la manera cmo funciona el programa, con el n de que el usuario obtenga el resultado deseado. 1.13 Mantenimiento Se lleva a cabo despus de terminado el programa, cuando se detecta que es necesario hacer algn cambio, ajuste o complementacin al programa para que siga trabajando de manera correcta. Para poder realizar este trabajo se requiere que el programa este correctamente documentado. Si utiliza en forma consistente un enfoque estructurado de resolucin de problemas, como el que acaba de describir, descubrir que los problemas tipo narracin son mucho ms fciles de resolver, como veremos en el siguiente ejemplo. II. DESARROLLO DE ALGORITMOS

OBJETIVO EDUCACIONAL:

El alumno ser capaz de: Conocer las reglas para cambiar formulas matemticas a expresiones vlidas para la computadora, adems de diferenciar constantes e identicadores y tipos de datos simples. Entender principios lgicos para crear un buen algoritmo. Diferenciar los mtodos de representacin y formulacin de algoritmos, as como de conocer las caractersticas ms importantes de cada tcnica. 2.1 Tipos De Datos Todos los datos tienen un tipo asociado con ellos. Un dato puede ser un simple carcter, tal como b , un valor entero tal como 35. El tipo de dato determina la naturaleza del conjunto de valores que puede tomar una variable. Numricos Simples Lgicos Alfanumricos (string) Tipos de datos Arreglos (Vectores, Matrices) Estructurados Registros (Def. por el Archivos Usuario) Apuntadores 14

2.1.1 Tipos de Datos Simples Datos Numricos: Permiten representar valores escalares de forma numrica, esto incluye a los nmeros enteros y los reales. Este tipo de datos permiten realizar operaciones aritmticas comunes. Datos Lgicos: Son aquellos que solo pueden tener dos valores (cierto o falso) ya que representan el resultado de una comparacin entre otros datos (numricos o alfanumricos). Datos Alfanumricos (String): Es una secuencia de caracteres alfanumricos que permiten representar valores identicables de forma descriptiva, esto incluye nombres de personas, direcciones, etc. Es posible representar nmeros como alfanumricos, pero estos pierden su propiedad matemtica, es decir no es posible hacer operaciones con ellos. Este tipo de datos se representan encerrados entre comillas. Ejemplo: Ingeniera de Petrleo y Gas Natural 2011 2.2 Expresiones Las expresiones son combinaciones de constantes, variables, operadores y funciones que al evaluarla en el orden correcto tiene un valor concreto, adems puede utilizar parntesis y nombres de funciones especiales. b+c ; sqrt(9); sin(x); 2 pi r Por ejemplo: a+ c Cada expresin toma un valor que se determina, tomando en cuenta los valores de las variables y constantes implicadas en ella y la ejecucin de las operaciones indicadas. Una expresin consta de operadores y operandos. Segn sea el tipo de datos que manipulan, se clasican las expresiones en: Aritmticas Relacinales Lgicas 2.3 Operadores y Operando Operadores: Son elementos que relacionan de forma diferente, los valores de una o ms variables y/o constantes. Es decir, los operadores nos permiten manipular valores. Aritmticos Relacinales Lgicos

Tipos de Operadores

Operadores Aritmticos: Los operadores aritmticos permiten la realizacin de operaciones matemticas con los valores indicados (variables y constantes).

15

Los operadores aritmticos pueden ser utilizados con tipos de datos enteros o reales. Si ambos son enteros, el resultado es entero; si alguno de ellos es real, el resultado es real. Operadores Aritmticos: + Suma Resta * Multiplicacin / Divisin Mod Modulo (residuo de la divisin entera) Ejemplos: Expresin 7/2 Mod(12,7) 4+2*5

Resultado 3.5 5 14

2.3.1 Prioridad de los Operadores Aritmticos Todas las expresiones entre parntesis se evalan primero. Las expresiones con parntesis anidados se evalan de dentro a fuera, el parntesis ms interno se evala primero. Dentro de una misma expresin los operadores se evalan en el siguiente orden. 1.2.3.^ *, /, mod +, Exponenciacin Multiplicacin, divisin, modulo. Suma y resta.

Los operadores en una misma expresin con igual nivel de prioridad se evalan de izquierda a derecha. El operador DIV, divisin entera, en otros lenguajes (no en MatLab) devuelve el entero ms prximo por defecto que resulta de dividir un nmero a entre otro b. El operador MOD devuelve el resto de la divisin entera de a entre b. El orden de precedencia de los operadores, que depende del lenguaje de programacin, indica en qu orden se realiza las operaciones. Sin embargo, cuando se desee forzar la evaluacin de una expresin en un determinado orden, independientemente del orden de precedencia de los operadores, se utilizaran los parntesis. Las operaciones encerradas entre parntesis se evalan primero. Si existen diferentes parntesis anidados las expresiones internas se evalan antes. Si coinciden varios operadores de igual prioridad, el orden a seguir es de izquierda a derecha.

16

Ejemplos: 4 + 2 * 5 = 14 23 * 2 / 5 = 9.2 46 / 5 = 9.2 3 + 5 * (10 - (2 + 4)) = 23 3 + 5 * (10 - 6) = 3 + 5 * 4 = 3 + 20 = 23 3.5 + 5.09 - 14.0 / 40 = 5.09 3.5 + 5.09 - 3.5 = 8.59 - 3.5 = 5.09 2.1 * (1.5 + 3.0 * 4.1) = 28.98 2.1 * (1.5 + 12.3) = 2.1 * 13.8 = 28.98 Operadores Relacinales: Se utilizan para establecer una relacin entre dos valores. Compara estos valores entre si y esta comparacin produce un resultado de certeza o falsedad (verdadero o falso). Los operadores relacinales comparan valores del mismo tipo (numricos o cadenas) y tienen el mismo nivel de prioridad en su evaluacin. Los operadores relacinales tiene menor prioridad que los aritmticos. Operadores Relacinales: > Mayor que < Menor que >= Mayor o igual que <= Menor o igual que ~= Diferente o no igual a ( =, <> ) == Igual a Ejemplos: Si a = 10 a a a a b = 20 c = 30

+b>c -b<c -b=c * b ~= c

Falso Verdadero Falso Verdadero

Ejemplos no lgicos: a<b<c 10 < 20 < 30 T < 30

(no es lgico porque tiene diferentes operando)

Operadores Lgicos: Estos operadores se utilizan para establecer relaciones entre valores lgicos. Adems, estos valores pueden ser resultado de una expresin relacional. 17

Operadores Lgicos And & Or j Not ~ Ejemplos: (a < b) and (b < c) (10<20) and (20<30)

Prioridad de los Operadores Lgicos Not And Or Prioridad de los Operadores en General 1.() 2.^ 3.*, /, Mod, Not 4.+, -, And 5.>, <, > =, < =, ~ =, =, Or Ejemplos: a = 10 b = 12 c = 13 d = 10 1) ((a > b) or (a < c)) and ((a = c) or (a > = b)) F T F F T F F 2) ((a > = b) or (a < d)) and (( a > = d) and (c > d)) F F T T F T F

not (a = c) and (c > b) T T T 2.4 Identicadores Los identicadores representan los datos de un programa (constantes, variables, tipos de datos). Un identicador es una secuencia de caracteres que sirve para identicar una posicin en la memoria de la computadora, que nos permite accesar a su contenido. Ejemplo: Nombre Num_hrs Calif2 2.4.1 Reglas para formar un Identicador 18

3)

Debe comenzar con una letra (A a Z, maysculas o minsculas) y no deben contener espacios en blanco. Letras, dgitos y caracteres como la subraya ( _ ) estn permitidos despus del primer carcter. La longitud de identicadores puede ser de hasta 8 caracteres. 2.4.2 Constantes y Variables Constante: Una constante es un elemento del algoritmo de tipo numrico o alfanumrico que no cambia durante la ejecucin del programa. Ejemplo: Pi = 3.1416 Variable: Es un espacio en la memoria de la computadora que permite almacenar temporalmente un dato durante la ejecucin de un proceso, su contenido puede cambiar durante la ejecucin del programa. Es decir es un elemento del algoritmo que posee un valor, es conocido por un nombre o identicador y pertenece a un tipo de dato declarado al principio del algoritmo. Antes de usar una variable debe ser declarada, la declaracin de una variable en un algoritmo consta de una sentencia en la que se especica el tipo de dato de la variable que se est declarando, su nombre y en ocasiones se le asigna un valor inicial. Las variables aparecen en cualquier forma y tamao. sta es una lista comn de variables: El primer carcter deber ser siempre una letra (i.e A,G,D,F,z,e,t, y) Despus de la primera letra en el nombre de la variable, podr ser letras, nmeros o subrayados (_ ). Recuerda que el nombre de la variable no puede ser una palabra reservada. Por ejemplo en MatLab hay una sentencia llamada "fprintf", no puede ser usado sta ni cualquier otra sentencia reservada propio de cada lenguaje como nombre de variable. Ejemplo: area = pi * radio ^2 Las variables son: el radio, el rea y la constate es pi numero = 10: entero texto: string En esta declaracin se dice que la variable numero es de tipo entero y toma el valor 10 y la variable texto es de tipo cadena de caracteres y no tiene ningn valor asociado inicialmente. 2.4.3 Clasicacin de las Variables Numricas Lgicas Alfanumricas (String) De Trabajo Contadores Acumuladores 19

Por su Contenido Variables Por su Uso

Por su Contenido: Variable Numricas: Son aquellas en las cuales se almacenan valores numricos, positivos o negativos, es decir almacenan nmeros del 0 al 9, con signos (+ y -) as como el punto decimal. Ejemplo: Iva = 0.15

pi = 3.1416

costo = 2500

La variable Iva guarda el 15% de algn valor pi (palabra reservada) no puede ser variable tiene un valor asignado de 3.1416 En la variable costo se asigna un valor entero de 2500 Variables Lgicas: Son aquellas que solo pueden tener dos valores (cierto o falso) estos representan el resultado de una comparacin entre otros datos. Variables Alfanumricas: Esta formada por caracteres alfanumricos (letras, nmeros y caracteres especiales). Ejemplo: Letra = a apellido = Lpez direccin = Av. Libertad #190 Por su Uso Variables de Trabajo: Variables que reciben el resultado de una operacin matemtica completa y que se usan normalmente dentro de un programa. Ejemplo: Suma = (a + b)/c Contadores: Se utilizan para llevar el control del nmero de veces que se realiza una operacin o se cumple una condicin. Con incrementos generalmente de uno en uno (n = n+1). Acumuladores: Forma que toma una variable y que sirve para llevar la suma acumulativa de una serie de valores que se van leyendo o calculando progresivamente. Por ejemplo: suma = suma + n Es decir la suma actual es la suma de la anterior operacin ms un valor n. 2.5 Cadenas Hablaremos de las cadenas mas despus, por ahora slo haremos una breve descripcin.

20

Una cadena es una forma de guardar informacin en la variable. Por ejemplo podras guardar el nombre del usuario o la direccin en una cadena. Aqu tienes un pequeo cdigo como ejemplo para mostrarte cmo funciona: nombre=input( Tu Nombre: ); edad=input( Tu Edad: ); Las variables, nombre y edad almacenaran tu nombre y tu edad y es de tipo cadena. 2.6 Diagrama de Flujo Un diagrama de ujo es la representacin grca de un algoritmo. Tambin se puede decir que es la representacin detallada en forma grca de cmo deben realizarse los pasos en la computadora para producir resultados. Esta representacin grca se da cuando varios smbolos (que indican diferentes procesos en la computadora), se relacionan entre s mediante lneas que indican el orden en que se deben ejecutar los procesos. Los smbolos utilizados han sido normalizados por el instituto norteamericano de normalizacin (ANSI).

2.7 Recomendaciones para el diseo de Diagramas de Flujo Se deben de usar solamente lneas de ujo horizontal y/o vertical. Se debe evitar el cruce de lneas utilizando los conectores. Se deben usar conectores solo cuando sea necesario. No deben quedar lneas de ujo son conectar. Se deben trazar los smbolos de manera que se puedan leer de arriba hacia abajo y de izquierda a derecha. 21

Todo texto escrito dentro de un smbolo deber ser escrito claramente, evitando el uso de muchas palabras. En el desarrollo de un programa siempre es aconsejable el trazado de un diagrama de ujo, entre otras, por las siguientes razones: Es un importante paso intermedio entre el planteamiento original del problema y las instrucciones escritas en lenguaje de programacin. Sirve de gua al codicar el programa, ofreciendo una idea clara de la secuencia correcta de operaciones y de la lgica de la solucin. Permite experimentar diferentes enfoques para resolver un problema sin codicarlos, y as determinar el posible enfoque ptimo. Facilita la modicacin de un programa, especialmente cuando ha transcurrido mucho tiempo desde que se realiz la concepcin original. 2.8 Seudocdigo Mezcla de lenguaje de programacin y espaol (o ingls o cualquier otro idioma) que se emplea, dentro de la programacin estructurada, para realizar el diseo de un programa. En esencial, el pseudocdigo se puede denir como un lenguaje de especicaciones de algoritmos. Es la representacin narrativa de los pasos que debe seguir un algoritmo para dar solucin a un problema determinado. El pseudocdigo utiliza palabras que indican el proceso a realizar. Ventajas de utilizar un seudocdigo a un Diagrama de Flujo Ocupa menos espacio en una hoja de papel Permite representar en forma fcil operaciones repetitivas complejas Es muy fcil pasar de pseudocdigo a un programa en algn lenguaje de programacin. Si se siguen las reglas se puede observar claramente los niveles que tiene cada operacin. Su estructura tpica es la siguiente: 2.9 Notacin algortmica: Debe permitir describir informaciones (tanto datos constantes como datos variables) Las acciones (tanto elementales como de composicin). Descripcin de informaciones: Una variable es un contenedor de valores/datos que pueden cambiar durante la ejecucin. Ocupa espacio en memoria, por lo tanto se localiza en una posicin de memoria y tienen asociado un identicador o nombre y un tipo que determina su rango de valores y las operaciones permitidas. Los tipos elementales son: LOGICO, rango {V,F}, Operaciones lgicas (AND, OR, NOT,..) ENTERO: rango, nmeros enteros (sin decimales) Operaciones aritmticas enteras REAL: Rango, nmeros reales, dgitos y smbolos empleados en la escritura. La identicacin de una variable se ajusta al siguiente patrn: < identicador_variable >: < tipo_variable > Ej. X: ENTERO declara la variable x, de tipo entero REAL declara la variable x de tipo real 22

Asignacin: Sintaxis: <variable> <expresin> Ej. x = 5, x = y+3 La parte izquierda de la asignacin siempre es una variable. La parte derecha de una asignacin, siempre es una expresin cuyo resultado es el mismo tipo de variable. Las expresiones representan operaciones que pueden evaluarse como entero o real o una cadena. Lectura: Sintaxis: LEER (<variable>) Ej: LEER (x) El argumento de la accin LEER siempre debe ser una variable; pueden leerse varios datos por ejemplo LEER (x, y) Escritura: Sintaxis: ESCRIBIR (<expresin>) Ej: ESCRIBIR(x); ESCRIBIR(x+y) Puede escribirse el resultado de varias expresiones, sin ms que escribir una lista de expresiones separadas por comas por ejemplo: ESCRIBIR (x, x+y) Accin nula: Sintaxis: SEGUIR, en trminos de ejecucin signica no hacer nada. 2.10 Acciones de composicin Las acciones de composicin determinan cmo se organiza la ejecucin de las acciones elementales u otras acciones de composicin. En este punto, se introduce un aspecto importante de la notacin algortmica, que se reere al anidamiento (en el sentido de contener completamente) de las acciones de control, unas dentro de otra. Secuencia: Sintaxis: <Accion_1>; <Accion_2>; <Accion_3>; ...... <Accion_n>; Ejemplo: LEER(x); LEER(y); Sum = x+y; ESCRIBIR(sum); 2.11 Diagramas estructurados (Nassi-Schneiderman) El diagrama estructurado N-S tambin conocido como diagrama de chapin es como un diagrama de ujo en el que se omiten las echas de unin y las cajas son contiguas. Las acciones sucesivas se pueden escribir en cajas sucesivas y como en los diagramas de ujo, se pueden escribir diferentes acciones en una caja. Un algoritmo se represente en la siguiente forma: Ejemplo:

23

inicio Leer, Nombre, horas, precio salario = horas*precio impuesto=salario*0.15 neto= salario + impuesto escribir, salario, impuesto, neto n

24

S-ar putea să vă placă și