29
MÉTODOS NUMÉRICOS Y APLICACIONES COMPUTACIONALES Apuntes 1. Introducción a la computación 2. Lenguajes de programación 3. Sistema operativo 4. La resolución de problemas con computadora 5. Métodos numéricos y su importancia 6. Algoritmo

1. Aio - c. Metodos Numericos y Aplicaciones Computacionales - 2. Apuntes

  • Upload
    wferbm

  • View
    238

  • Download
    0

Embed Size (px)

DESCRIPTION

Metodos Numericos

Citation preview

MÉTODOS NUMÉRICOS Y APLICACIONES COMPUTACIONALESApuntes

1. Introducción a la computación

2. Lenguajes de programación

3. Sistema operativo

4. La resolución de problemas con computadora

5. Métodos numéricos y su importancia

6. Algoritmo

1. Introducción a la computación

Definición de computadora: una computadora es un dispositivo electrónico utilizado para procesar información y obtener resultados. La computadora es una maquina capaz de realizar y controlar a gran velocidad cálculos y procesos complicados que requieren una toma rápida de decisiones. Su función consiste, por tanto, en tratar la información que se le suministra y proveer los resultados requeridos.

Tipos de computadoras analógico y digital: vamos a ver un ejemplo que nos permita distinguir entre codificación analógica y codificación digital. Imaginemos un sistema computarizado de control de la climatización de un edificio, que emplea como dato la temperatura exterior, mediad por un termómetro. La lectura obtenida debe ser codificada y transmitida mediante conductores eléctricos a la computadora. Podemos hacer la codificación de distintas formas: Podemos establecer un convenio de proporcionalidad entre la temperatura y la tensión de salida, de modo que a cada grado centígrado corresponda un voltio de tensión. Con este tipo de codificación, con un solo valor de tensión a la salida, obtendríamos la información. Por ejemplo, a una temperatura de 20,5 ºc corresponderían 20,5 v. A este tipo de codificación se le denomina analógica. Otro tipo de codificación que podríamos emplear seria la digital. Para ello tomaríamos cada cifra de la lectura obtenida y la transmitiríamos como un dato distinto. Tendríamos que establecer un convenio que indicara él numero d cifras que transmitirían, la posición de la coma decimal, y la equivalencia entre las cifras y las tensiones que les representan. Si adoptáramos el convenio de transmitir tres cifras, una de ellas después de la coma y una proporcionalidad de un voltio por unidad, para transmitir el valor de 20,5 ºc enviaríamos una tensión de 2 v, luego una de 0 v, y más tarde una de 5 v. Este tipo de codificación seria de tipo digital decimal, ya que las cifras que transmitimos pertenecen al tipo de numeración de nominada digital.

  Elementos que integran una computadora:

o Hardware: son todos aquellos componentes físicos de una computadora, todo lo visible y tangible. El hardware realiza las 4 actividades fundamentales: entrada, procesamiento, salida y almacenamiento secundario. Se han desarrollado mucha jerigonza en el campo de la computación. Él termino hardware se refiere a los aspectos físicos de los aparatos o equipos. Los usos del hardware incluyen la conversión de datos primos a una forma aceptable de entrada para la computadora; transferir los datos e instrucciones de un lugar a otro dentro de la computadora y los instrumentos de control. El hardware incluye en la computadora es en sí, los aparatos de almacenamiento externo (como cintas, discos y tambores magnéticos) y el equipo de entrada-salida (como las lectoras de tarjetas, impresoras y terminales).

COMPONENTES DEL HARDWARE:

Unidad de control: realiza las funciones de dirección central, interpreta las instrucciones, indica las acciones que ha de realizar, y asigna las tareas a las distintas partes del conjunto.

Unidad central de proceso (c.p.u.): la unidad central de proceso u.c.p dirige y controla el proceso de información realizado por la computadora. La u.c.p. consta de dos componentes: unidad de control y unidad aritmética lógica. La unidad de control coordina las actividades de la computadora y determina que operaciones se deben realizar y en que orden; la unidad aritmética – lógica realiza operaciones aritméticas y lógicas.

Memoria central: la memoria es de dos tipos: rom y ram. La memoria rom (siglas que corresponden a la expresión inglesa read only memory, es decir, memoria de solo lectura) no puede alterarse, viene prefijada físicamente por el fabricante. La memoria ram (siglas de la expresión inglesa random access memory, o sea, memoria de acceso aleatorio) es la que el usuario puede utilizar libremente.

Periféricos: los periféricos son elementos que forman parte del sistema físico del equipo. Los fundamentales son el teclado, el monitor, la unidad lectora de disco, la impresora, el ratón o mouse, el escáner, la palanca de control (joystick) y el acoplador acústico o módem, entre otros.

Dispositivos de entrada: son maquinas que convierten los datos y programas en una forma que la c.p.u. puede entender y procesar. Los dispositivos de salida son maquinas que convierten los datos procesados en una forma que los usuarios pueden comprender. Los dispositivos de almacenamiento secundario son maquinas que pueden poner fácilmente a disposición de la c.p.u. datos y programas usados con frecuencia. Dispositivos de entrada – salida son aquellos que nos permiten introducir y que también nos muestra información.

o El software (los programas): conjunto de instrucciones codificadas, que son interpretadas y ejecutadas por la computadora. Archivos y programas que se encuentran en una computadora. Se emplean para hacer referencia a los programas que se ejecutan en una p.c. las operaciones que debe realizar el software son especificadas por una lista de instrucciones, llamadas programas o software, el software se divide en dos grupos: software del sistema y software de aplicaciones.

Usos de las computadoras: las computadoras tienen infinidad de usos entre los cuales podemos citar los siguientes: Investigación. Educación. Contabilidad. Oficinas. Hogar.

2. Lenguajes de programación

Los lenguajes de programación cierran el abismo entre las computadoras, que sólo trabajan con números binarios, y los humanos, que preferimos utilizar palabras y otros sistemas de numeración. Mediante los programas se indica a la computadora qué tarea debe realizar y como efectuarla, pero para ello es preciso introducir estas ordenes en un lenguaje que el sistema pueda entender. En principio, el ordenador sólo entiende las instrucciones en código máquina, es decir, él especifico de la computadora. Sin embargo, a partir de éstos se elaboran los llamados lenguajes de alto y bajo nivel. Una computadora trabaja siempre con un conjunto muy reducido de instrucciones las cuales forman el código o lenguaje de maquina. Estas instrucciones se codifican de forma binaria e indican al procesador las operaciones elementales a realizar, como mover una palabra de una posición a otra de memoria. Los programas realizados directamente en lenguaje maquina son los que permiten al programador obtener mas rendimiento de la computadora, tanto en velocidad como en versatilidad. En realidad, este código es raramente utilizado por los programadores, ya que tiene el inconveniente de estar formado por interminables listas de unos y ceros, totalmente incomprensibles para una persona. En los años cuarenta era el único código de programación utilizado, pero pronto se crearon los primeros programas ensambladores.

El ensamblador es un programa capaz de traducir el lenguaje ensamblador a lenguaje maquina. El lenguaje ensamblador no es mas que una representación más comprensible para las personas de las instrucciones del código maquina. Sin embargo, el lenguaje ensamblador cuenta con una desventaja importante: sigue limitado por el pequeño numero de instrucciones elementales que es capaz de realizar el procesador. El lenguaje de maquina y el lenguaje ensamblador tuvieron su momento de apogeo con las computadoras de la primera generación lentas y con una memoria muy limitada.

A mediados de los años cincuenta apareció un nuevo tipo de lenguajes de

programación denominados de alto nivel. En estos lenguajes se escriben las instrucciones en notaciones mucho más resumidas que en el lenguaje ensamblador. La computadora es totalmente incapaz de trabajar directamente con un programa de lenguaje de alto nivel. Un programa llamado compilador debe traducir cada instrucción a código maquina. La gran ventaja de los lenguajes de alto nivel es, además de su brevedad, el hecho de no trabajar con posiciones de memoria. Sino con nombres de variables. Es el programa compilador quien traduciría el programa que hemos escrito, llamado programa o código fuente, a código maquina ejecutable. El programa obtenido, llamado código objeto, es el que debemos suministrar a la computadora cada vez que deseemos hacerla trabajar.

Posteriormente ha aparecido un nuevo tipo de lenguajes que no deben ser tratados por el compilador antes de ser ejecutados; nos referimos a los lenguajes interpretados. En estos lenguajes se trabaja siempre con el código fuente, es decir el programa escrito en lenguaje de alto nivel, y un programa interprete. Este ultimo contiene una serie de subprogramas o subrutinas en código maquina que se va a ejecutando a medida que se leen nuestras instrucciones. Este tipo de lenguajes tiene la gran ventaja de que el programa puede conocer el funcionamiento del programa a medida que lo escribe, pues no tiene que esperar al final para realizar la compilación a fin de probar el código objeto.

Los lenguajes de programación sirven para escribir programas que permitan la comunicación usuario / maquina. Unos programas especiales llamados traductores convierten las instrucciones escritas en lenguajes de programación en instrucciones escritas en lenguajes que esta pueda entender. Los programas de utilidad facilitan el uso de la computadora; los programas que realizan tareas concretas se denominan programas de aplicación. Se debe diferenciar entre el acto de crear un programa y la acción de la computadora cuando ejecuta las instrucciones del programa. La creación de un programa se hace inicialmente en papel y a continuación se introduce en la computadora y se convierte en lenguaje entendible por la computadora. La entrada puede tener una variedad de formas, tales como números o caracteres alfabéticos. La salida puede también tener formas, tales como datos numéricos o caracteres, señales para controlar equipos o robots, etc.

Clasificación de lenguajes:

o Lenguaje maquina: son aquellos cuyas instrucciones son directamente entendibles por la computadora y no necesitan traducción posterior para que la u.c.p. pueda comprender y ejecutar el programa. Se expresan en términos de la unidad de memoria más pequeñas, el bit. Estas instrucciones serán fáciles de leer por la computadora y difíciles por un programador, y viceversa. Esta razón hace difícil escribir programas en código o lenguaje maquina y requiere buscar otro lenguaje para comunicarse con la computadora, pero que sea más fácil de escribir y leer por el programador.

o Lenguajes de bajo nivel (ensambladores): la programación en lenguaje maquina es difícil, por ello se necesitan lenguajes que permitan simplificar este proceso. Los lenguajes de bajo nivel han sido diseñados para ese fin. Estos lenguajes son generalmente dependientes de la maquina, dependen de un conjunto de instrucciones especificas de la computadora. Un lenguaje típico de bajo nivel es el lenguaje ensamblador. En este lenguaje las instrucciones se escriben en códigos alfabéticos conocidos como nemotécnicos. Las palabras nemotécnicas son mucho más fáciles de

recordar que las secuencias de dígitos 0 y 1. Una instrucción típica en ensamblador pueden ser: add x,y,z

o Lenguajes de alto nivel: los lenguajes de programación de alto nivel son aquellos en los que las instrucciones o sentencias a la computadora son escritas con palabras similares a los lenguajes humanos, lo que facilita la escritura y la fácil comprensión por el programador. Los lenguajes de programación son –en general- transportables, esto significa que un programa escrito en un lenguaje de alto nivel se puede escribir con poca o ninguna modificación en diferentes tipos de computadora, otra propiedad es que son independientes de la maquina, esto es, las sentencias del programa no dependen del diseño o hardware de una computadora especifica. Los programas escritos en lenguaje de alto nivel no son entendibles directamente por la maquina, necesitan ser traducidos a instrucciones en lenguaje maquina. Los programas que realizan esta traducción se llaman compiladores, y los programas escritos en una lenguaje de alto nivel se llaman programas fuente. El proceso de traducción de un programa fuente se denomina compilación y tras la fase de enlace se obtiene un programa ejecutable directamente por la computadora.

  Clasificación de lenguajes de alto nivel:

o Lenguaje Basic: proviene de las siglas beginner’s all-purpose symbolic instruction code (código de instrucción simbólico de uso general para principiantes).se creo en el dartmouth college en combinación con el primer sistema de tiempo compartido en el mundo. Al paso de los años, el lenguaje Basic se ha convertido en uno de los lenguajes de programación más populares y de más fácil acceso para almacenes especializados. Debido a que resulta fácil de utilizar y que las necesidades de almacenamiento de su traductor de lenguajes son pequeñas, trabaja con eficiencia en casi todas las computadoras personales. Existen muchas versiones del lenguaje Basic. Características:  casi toda característica principal se relaciona con su facilidad de uso para los principiantes. Entre estas características se encuentran la nominación simplificada de variables, el formato opcional, el modo de programación conversacional y el fácil diagnostico.Limitaciones:  las versiones de Basic no están diseñadas para facilitar los programas estructurados. Existen tantas versiones de Basic, un programa desarrollado en una computadora puede requerir modificaciones sustanciales para ejecutarse en otra máquina.

 o Lenguaje cobol: su nombre proviene de las siglas de commmon bussiness-

oriented language (lenguaje común orientado a los negocios)fue introducido por primera vez en los inicios de la década de 1960, y es el principal lenguaje de procesamiento de datos empresariales que se utiliza

actualmente. Hasta que apareció, no había un lenguaje particularmente adecuado para las aplicaciones comerciales de las empresas como nomina, facturación, cuentas por pagar y cobrar, etc. Representantes de los principales productores de computadoras se entrevistaron en Washington con usuarios de la industria y del gobierno para estudiar este producto. Subsecuentemente formaron un comité para delinear un lenguaje, y el resultado fue cobol.Características:  muchas características diferencian al cobol de otros lenguajes. Casi todas ellas se relacionan con su orientación al procesamiento de datos de negocios, incluso la independencia de la máquina, la auto documentación y la orientación a la entrada y salida.Limitaciones: debido a que los programas escritos en cobol utilizan largos nombres como los del idioma ingles y especifican los formatos con mucho detalle, tienden a ser extensos. Asimismo, se necesita un traductor de lenguaje grande y complejo para convertir los programas en lenguaje de máquina, lo cual hace al cobol difícil de implantar en muchas computadoras más pequeñas. Debido a su orientación al procesamiento de datos de negocios, no resulta adecuado para ingeniería.

 o Lenguaje fortran: su nombre proviene de formula translator (traductor de

formulas), data del año de 1954 y el lenguaje comercial de alto nivel superviviente más antiguo. Fue diseñado por científicos y esta orientado hacia la resolución de problemas científicos y de ingeniería. Las aplicaciones de procesamiento de datos de negocios requieren complicadas operaciones de entrada / salida y cálculos relativamente simples. Las aplicaciones científicas y de ingeniería, en contraste, requieren cálculos complejos y operaciones de entrada / salida relativamente simples. El fortran ha probado ser de utilidad en ciertos tipos de aplicaciones de negocios. Pero seguirá siendo el lenguaje popular científico y de ingeniería por muchos años.Limitaciones:  el lenguaje fortran se creó mucho antes de que la programación estructurada comenzara a recibir considerable atención, de modo que es un tanto débil en esta área si se compara con algunos de los lenguajes más recientes. La lógica de los programas escritos en lenguaje fortran es más difícil de seguir que la lógica de algunos otros lenguajes, y es inferior al cobol para aplicaciones de procesamiento de datos de negocios. Pero seguirá siendo un lenguaje popular científico y de ingeniería por muchos años.

o Lenguaje pascal: el lenguaje pascal, así llamado en honor al matemático

blaise pascal, es un lenguaje de programación relativamente nuevo. Fue creado hacia 1970 por el profesor niklaus wirth de zurich Suiza.

Características: el pascal se creó principalmente para cubrir la necesidad de un vehículo de enseñanza que alentara la programación estructurada. Sus características principales son su orientación estructurada fácil de aprender y su eficiencia de memoria.Limitaciones:  la mayor debilidad del lenguaje pascal es que tiene capacidades marginales de entrada y salida. De este modo, no es tan adecuado como el cobol para las aplicaciones de procesamiento de datos de negocios como lenguaje de resolución de problemas, sin embargo se espera que dé cerrada competencia al fortran y al Basic.

 o Lenguaje pl / 1: pl/1 (siglas en inglés de programming language 1) fue

introducido a mediados de la década de 1960 por IBM como lenguaje de propósito general. Es decir, fue diseñada para aplicaciones de procesamiento de datos tanto científicos como de negocios. Es un lenguaje extremadamente poderoso, con grandes capacidades de programación estructurada con fines de enseñanza se han creado variantes de pl/1, como pl/c.

 o Lenguaje apl: apl (siglas en inglés de a programming language) fue creado

en 1967, bajo los auspicios de IBM, con el objeto de realizar con rapidez trabajos de resolución de problemas. Es un lenguaje extraordinariamente compacto y solo puede utilizarse en un teclado especial. Al igual que Basic, es un lenguaje altamente interactivo apl tiene dos modos de operación: calculadora y programa.

  Lenguajes de muy alto nivel: los lenguajes de muy alto nivel ofrecen la atractiva

ventaja de ser relativamente fáciles de aprender y utilizar. Algunos de estos lenguajes se denominan amigables para el usuario, debido a que permiten a usuarios finales con poco o ningún adiestramiento formal en programación trabajar sin sufrimiento en el sistema computacional con ciertos tipos de aplicaciones interactivas después de sólo unas cuantas horas de capacitación. Comparados con los lenguajes de alto nivel, sin embargo, los de muy alto nivel carecen de flexibilidad: cada uno está diseñado para resolver únicamente un tipo específico de problema. Algunos lenguajes de muy alto nivel son: generador de informes, software de procesamiento de palabras., hojas electrónicas de trabajo, paquetes de gratificación.

3. Sistema operativo  Concepto de sistema operativo: conjunto de programas que sirven de interpretes

entre el usuario y la computadora. Un sistema operativo consta de una serie de programas que controlan todas las actividades que la computadora realiza, su función, consiste en controlar el trabajo que la computadora efectúa. El sistema operativo controla la posibilidad o imposibilidad de ejecución de un programa. El sistema operativo controla la entrada de programas en la memoria, permite el acceso del programa a la zona de memoria requerida y abre paso o no a la entrada de mas programas en la memoria.

Clasificación de los sistemas operativos:o OS/2: de todos los sistemas operativos os/2 será tal vez el de mayor

impacto durante la presente década, o quizás sea superado solo por unix. Al parecer, os/2 va a dominar en el mercado del IBM ps/2 y en el de los computadores compatibles con el at, en tanto que unix dominara en el mercado de las estaciones de trabajo avanzadas y de los sistemas abiertos. Con base en el éxito de MS-dos, al que IBM llama dos, IBM y Microsoft acordaron desarrollar juntos os/2 como sistema operativo de las siguientes generaciones para la línea IBM ps/2 de computadores personales, sucesores del bim PC. Os/2 es un sistema operativo mas potente y por tanto mas complejo que dos. La arquitectura del ps/2 incluye micro channel, el canal asíncrono interno propiedad de IBM.

o Apple macintosh: un computador personal que se diseño pensando en el usuario novato. ¿qué significa que un computador sea amable con el usuario?, ¿qué técnicas pueden hacer a un computador fácil de usar?, ¿qué consideraciones en el área de los sistemas operativos son importantes para el diseño del sistema amable con el usuario?. El presente análisis supone que el lector esta familiarizado hasta cierto punto con el macintosh y algunas de sus características fundamentales, como el control del ratón, las ventanas, los menús despegables y los gráficos con iconos. La interfaz con el usuario de macintosh orientado a los gráficos y al razón hizo que la computación personal se volviera mucho mas amable y cómoda. Resulta interesante que IBM no introdujo una interfaz grafica de potencia comparable hasta la aparición del administrador de presentación de os/2 en 1988. Cuando fue anunciado en 1984, el macintosh acaparo la atención de la industria, pero no tenia las características necesarias para el éxito en ambientes de negocios. Hoy día, los diversos modelos macintosh abarcan toda la gama desde sistemas de computo personales a nivel básico, pasando por sistemas de negocios a gran escala, hasta estaciones de trabajo de alto rendimiento para ingeniería.

o VM: una maquina virtual es una ilusión de una maquina real. La crea un sistema operativo de maquina virtual, el cual hace que una sola maquina real aparente ser varias maquinas reales. Desde el punto de vista del usuario, las maquinas virtuales pueden parecer maquinas reales ya existentes, o pueden ser drásticamente diferentes. El concepto ha mostrado su valía y se han desarrollado muchos sistemas operativos de maquina virtual. De ellos, el de uso mas generalizado es vm de IBM.

o MVS: mvs es uno de los dos sistemas operativos primarios de IBM para macrocomputadores; el otro es vm, descrito anteriormente. IBM produce cerca de la mitad de los macrocomputadores que se fabrican cada año en el mundo. Los sistemas de macrocomputadores han tendido a conservar su naturaleza centralizada en vez de volverse distribuidos, y a menudo dan apoyo a cientos o hasta miles de usuarios. Con la enorme capacidad de manejo de direcciones de mvs/esa, es probable que mvs siga siendo el principal sistema operativo para procesamiento por lotes de IBM para sus macrocomputadores, al menos durante la presente década, aunque sin duda enfrentara una fuerte competencia por parte de vm en el caso de los ambientes interactivos.

o MS-DOS: MS-dos apareció en 1981. Fue el primer sistema operativo para microcomputadores de 16 bit. En 1988 se habían vendido mas de 10 millones de copias, y el numero crece rápidamente conforme se coloca en el mercado el sistema personal 2 de IBM. El crecimiento y el éxito de MS-dos no pueden separarse del desarrollo del computador personal de IBM: el IBM PC. El primer computador verdadero fue el Altaír, desarrollado en 1975 por mits. Se basaba en el microprocesador 8080 de intel y contaba con 256 bytes de memoria. Se vendía por 397 dólares sin teclado, pantalla, disco o cinta. Estaba dirigido principalmente a personas cuyo pasatiempo era la computación. Bill Gates y Paul Allen de Microsoft desarrollaron una versión de Basic para el Altaír. Allen se fue a trabajar a mits y pidió a Gates que desarrollara una versión de Basic que trabajara con discos flexibles. Esta tarea obligo a la creación de un sistema de administración de archivos basado en el empleo de una tabla de asignación de archivos residente en memoria, no en disco, que finalmente se convirtió en el fundamento de MS-dos.

o UNIX: los sistemas operativos unix desarrollados en bell laboratories se encuentran entre los éxitos notables en el campo de los sistemas operativos. Los sistemas unix ofrecen un ambiente amable para el desarrollo de programas y el procesamiento de textos. Facilitan la combinación de unos programas con otros, lo cual fomenta un enfoque modular, de piezas de construcción y orientado a las herramientas, para el

diseño de programas. Una vez transportado un sistema operativo unix a otra maquina un enorme acervo de programas de utilidad general queda disponible en la maquina de destino; esta ha sido la clave del éxito de los sistemas unix, de los cuales se han embarcado mas de un millón. Es posible que dichos sistemas lleguen a convertirse en los sistemas operativos mas utilizados a nivel mundial.

Usos de los sistemas operativos: los sistemas operativos se usan para poder utilizar

nuestra computadora ya que ellos se encargan de administrar todos los recursos de la misma y así hacerla mas eficiente y utilizable.

4. La resolución de problemas con computadora

El proceso de resolución de un problema con una computadora conduce a la escritura de un programa y a su ejecución en la misma. Aunque el proceso de diseñar programas es un proceso creativo, se pueden considerar una serie de fases o pasos comunes, que generalmente deben seguir todos los programadores. Las fases de resolución de un problema con computadora son:

o Análisis  del problema: esta fase requiere una clara definición, donde se contemple exactamente lo que debe hacer el programa y el resultado o solución deseada. Dado que se busca una solución por computadora, se precisan especificaciones detalladas de entrada y salida. Para poder definir bien un problema es conveniente responder a las siguientes preguntas:

¿qué entrada se requiere (tipo y cantidad)?

¿cuál es la salida deseada (tipo y cantidad)?

¿qué método produce la salida deseada?

o Diseño del algoritmo: En la etapa de análisis del proceso de programación se determina que hace el programa. En la etapa de diseño se determina como hace el programa la tarea solicitada. Los métodos mas eficaces para el proceso de diseño se basan en el conocido por divide y vencerás. Es decir, la resolución de un problema complejo se realiza dividiendo el problema en sub problemas y a continuación dividir estos sub problemas en otros de nivel mas bajo, hasta que pueda ser implementada una solución en la computadora. Este método se conoce técnicamente como diseño descendente o modular. El proceso de romper el problema en cada etapa y expresar cada paso en forma mas detallada se denomina refinamiento sucesivo. Cada sub problema es resuelto mediante un modulo que tiene un solo punto de entrada y un solo punto de salida. Cualquier programa bien diseñado consta de un programa principal que llama subprogramas que a su vez pueden llamar a otros subprogramas. Los programas estructurados de esta forma se dice que tienen un diseño modular y el método de romper el programa en módulos mas pequeños se llama programación modular. El proceso que convierte los resultados del análisis del problema en un diseño modular con refinamientos sucesivos que permitan una posterior traducción a un lenguaje se denomina diseño del algoritmo. El diseño del algoritmo es independiente del lenguaje de programación en el que se vaya a codificar posteriormente.HERRAMIENTAS DE PROGRAMACIÓN:

Diagramas de flujo: un diagrama de flujo (flowchart) es una representación grafica de un algoritmo. Los símbolos utilizados han sido normalizados por el instituto norteamericano de normalización (ANSI), y los mas frecuentes empleados se muestran a continuación:

Terminal Proceso / Subprograma Entrada / Salida Decisión Conectores

Seudo código: el seudo código es una herramienta de programación en la que las instrucciones se escriben en palabras similares al ingles o español; que facilitan tanto la escritura como la lectura de programas. En esencia, el seudo código se pueden definir como un lenguaje de especificaciones de algoritmos. Aunque no existen reglas para escritura del seudo código en español, se ha recogido una notación estándar que ya es muy empleada en los libros de programación en español. Las palabras reservadas básicas se representaran en letras negritas minúsculas. Estas palabras son traducciones libre de palabras reservadas de lenguajes como Basic, pascal, etc.

o Codificación: codificación es la escritura en un lenguaje de programación de la representación del algoritmo desarrollada en las etapas precedentes. Dado que el diseño de un algoritmo es independiente del lenguaje de programación utilizado para su implementación, el código puede ser escrito con igual facilidad en un lenguaje o en otro. Para realizar la conversión del algoritmo en programa se deben sustituir las palabras reservadas en español por sus homónimos en ingles, y las operaciones y instrucciones correspondientes indicadas en lenguaje natural expresarlas en el lenguaje de programación correspondiente. Aunque, lógicamente, no comprenda las sentencias del programa anterior, es necesario observar las siguientes características básicas.

1. Cabecera del programa. Nombre del programa, autor, fecha de creación, etc.

2. Lista de variables. Es obligatoria su declaración en pascal.3. Legibilidad. Los programas deben ser lo mas legibles posibles,

por ello el espaciado y las sangrías se deben utilizar con frecuencia.

4. Diseño modular. Este simple programa solo consta de un modulo principal.

5. Documentación. Los programas deben incluir comentarios internos, en forma de líneas con separadores o bien por * *.

o Compilación y ejecución: una vez que el algoritmo se ha convertido en un programa fuente, es preciso introducirlo en memoria mediante el teclado y almacenarlo posteriormente en un disco. Esta operación se realiza con un programa editor, posteriormente el programa fuente se convierte en un archivo de programa que se guarda en disco. El programa fuente debe ser traducido a lenguaje maquina. Este proceso se realiza con el compilador y el sistema operativo que se encarga prácticamente de la compilación. Si tras la compilación se presentan errores en el programa fuente, es preciso volver a editar el programa, corregir los errores y compilar de nuevo. Este proceso se repite hasta que no se producen errores, obteniéndose el programa objeto que todavía no es ejecutable directamente. Suponiendo que no existen errores en el programa fuente, se debe instruir el sistema operativo para que realice la fase de montaje o enlace, carga, del programa objeto con las librerías del programa del compilador. El proceso de montaje produce un programa ejecutable. Cuando el programa ejecutable se ha creado, se puede ya ejecutar desde el sistema operativo con solo teclear su nombre. Suponiendo que no existen errores durante la ejecución, se obtendrá la salida de resultados del programa. Las instrucciones u ordenes para compilar y ejecutar un programa pueden variar según el tipo de compilador.

o Verificación y Depuración: la verificación o depuración de un programa es el proceso de ejecución del programa con una amplia variedad de datos de entrada, llamados datos de test o prueba, que determinaran si el programa tiene errores. Para realizar la verificación se debe desarrollar una amplia gama de datos de test: los valores normales de entrada, valores extremos de entrada que comprueben los limites del programa y valores de entrada que comprueben los aspectos especiales del programa. La depuración es el proceso de encontrar los errores del programa y corregir o eliminar dichos errores. Cuando se ejecuta un programa, se pueden producir tres tipos de errores:

1. Errores de compilación. Se producen normalmente por un uso incorrecto de las reglas del lenguaje de programación y suelen ser errores de sintaxis. Si existe un errores de sintaxis, la computadora no puede comprender la instrucción, no se obtendrá el programa objeto y el compilador imprimirá una lista de todos los errores encontrados durante la compilación.

2. Errores de ejecución. Estos errores se producen por instrucciones que la computadora puede comprender pero no ejecutar. Ejemplos

típicos son: división por cero y raíces cuadradas de números negativos. En estos casos se detiene la ejecución del programa y se imprime un mensaje de error.

3. Errores lógicos. Se producen en la lógica del programa y la fuente del error suele ser el diseño del algoritmo. Estos errores son los mas difíciles de detectar, ya que el programa puede funcionar y no producir errores de compilación ni ejecución, y solo pueden advertir el error por la obtención de resultados incorrectos. En este caso se debe volver a la fase de diseño del algoritmo, modificar el algoritmo, cambiar el programa fuente y compilar y ejecutar una vez mas.

o Documentación   y  mantenimiento:  la documentación de un programa consta de las descripciones de los pasos a dar en el proceso de resolución de un problema. La importancia de la documentación debe ser destacada por su decisiva influencia en el producto final. Programas pobremente documentados son difíciles de leer, mas difíciles de depurar y casi imposibles de mantener y modificar. La documentación de un programa puede ser interna y externa. La documentación interna es la que se incluye dentro del código del programa fuente mediante comentarios que ayudan a la comprensión del código. Todas las líneas de programas que comiencen con un símbolo { o con un símbolo ( * son comentarios. El programa no los necesita y la computadora los ignora. Estas líneas de comentarios solo sirven para hacer los programas mas fáciles de comprender. La documentación externa incluye análisis, diagramas de flujo y/o seudo códigos, manuales de usuario con instrucciones para ejecutar el programa y para interpretar los resultados. La documentación es vital cuando se desea corregir posibles errores futuros o bien cambiar el programa. Tales cambios se denomina mantenimiento del programa. Después de cada cambio la documentación debe ser actualizada para facilitar cambios posteriores. Es practica numerar las sucesivas versiones de los programas 1.0, 1.1, 2.0, 2.1, etc, (si los cambios introducidos son importantes, se varia el primer digito [1.0, 2.0,. . .], en caso de pequeños cambios solo se varia el segundo digito [2.0, 2.1,. . .].)

5. Métodos numéricos y su importancia

El análisis numérico trata de diseñar métodos para aproximar, de una manera eficiente, las soluciones de problemas expresados matemáticamente. La eficiencia del método depende tanto de la precisión que se requiera como de la facilidad con la que pueda implementarse. En una situación practica, el problema matemático se deriva de un fenómeno físico sobre el cual se han hecho algunas suposiciones para simplificarlo y para poderlo representar matemáticamente. Generalmente cuando se relajan las suposiciones físicas llegamos a un modelo matemático mas apropiado pero, al mismo tiempo, mas difícil o imposible de resolver explícitamente. Ya que normalmente de todos modos el problema matemático no resuelve el problema físico exactamente, resulta con frecuencia mas apropiado encontrar una solución aproximada del modelo matemático mas complicado que encontrar una solución exacta del modelo simplificado. Para obtener tal aproximación se idea un método llamado algoritmo. El algoritmo consiste en una secuencia de operaciones algebraicas y lógicas que producen la aproximación al problema matemático y se espera que también al problema físico, con una tolerancia o precisión predeterminada.

Como la eficiencia de un método depende de su facilidad de implementación, la elección del método apropiado para aproximar la solución de un problema esta influenciada significativamente por los cambios tecnológicos en calculadoras y computadoras. Hace veinticinco años, antes del uso generalizado del equipo digital de computo, no se podían aplicar los métodos que requerían una gran cantidad de computo, sin embargo, desde entonces, los adelantos en el equipo de computo han hecho que estos métodos sean mas y mas atractivos. El factor limitante en la actualidad es generalmente la capacidad de almacenamiento de la computadora, a pesar de que el costo asociado con los tiempos de computo es, desde luego, también un factor importante, la disponibilidad de computadoras personales y de calculadoras programables de bajo costo es también un factor que influye en la elección de un método de aproximación, ya que estas pueden usarse para resolver muchos problemas relativamente simples.

Las ideas básicas sobre las cuales se apoyan la mayoría de las técnicas numéricas actuales se conocen ya desde hace algún tiempo, al igual que los métodos usados para predecir las cotas del error máximo que se puede producir al aplicar los métodos. Por lo tanto, es de interés primordial determinar la manera en la que estos métodos se han desarrollado y como puede estimarse su error, ya que, sin duda, algunas variaciones de estas técnicas se usaran en el futuro para desarrollar y aplicar procedimientos numéricos independientemente de la tecnología.

El objetivo principal del análisis numérico es encontrar soluciones aproximadas a problemas complejos utilizando solo las operaciones mas simples de aritmética. En

pocas palabras, se trata sencillamente de resolver problemas difíciles mediante muchos pasos fáciles. Ello significa identificar los procedimientos por medio de los cuales las computadoras pueden hacer ese trabajo por nosotros. Los problemas provienen de diversas áreas de las matemáticas, sobre todo del álgebra y el análisis; en ocasiones los limites o fronteras entre ellas no están bien definidos. Gran parte de la teoría básica la toma el analista de esas áreas.

6. Algoritmo

El objetivo del análisis numérico es resolver problemas numéricos complejos utilizando solo operaciones simples de la aritmética, con el fin de desarrollar y evaluar métodos para calcular resultados numéricos a partir de los datos proporcionados. Los métodos de calculo se denominan algoritmos.

Nuestros esfuerzos se centran en la búsqueda de algoritmos. Para algunos problemas aun no se ha encontrado un algoritmo satisfactorio, mientras que para otros hay varios, por lo que deberemos elegir de entre ellos. Son varias las razones para elegir un algoritmo en vez de otro; dos criterios evidentes son la rapidez y la precisión. La rapidez es una ventaja evidente, aunque en el caso de problemas pequeños dicha ventaja se ve casi eliminada por la capacidad de la computadora. En problemas de grande escala, la rapidez es aun un factor principal y un algoritmo lento tiene que rechazarse por impractico. Así, siendo otros factores iguales, es seguro que el método mas rápido será el elegido.

Dado que una computadora esta compuesta de dispositivos que realizan operaciones lógicas y aritméticas; los procedimientos matemáticos deben de simplificarse a tal grado que sean accesibles para procesarse en una computadora. Este es uno de los objetivos principales para el estudio de los métodos numéricos.

Las aplicaciones de los métodos numéricos son prácticamente ilimitadas y se requieren conocimientos de la materia en disciplinas tan variadas como: economía, contabilidad, mercadotecnia, física e ingeniería industrial, civil, eléctrica, mecánica, química, etc. Asimismo, proporciona la formación de criterios de decisión para la elección del método adecuado, dependiendo del equipo computacional con el que nos estemos auxiliando, pudiendo ser este desde una gran computadora hasta una calculadora de bolsillo (programable o no), pasando por equipos orientados hacia uno o mas usuarios, ya que el comportamiento de los procesos diferirá mucho dependiendo del equipo.

Un algoritmo es el procedimiento matemático que nos indica la serie de pasos y decisiones que vamos a tomar para la solución de un problema, debe producir un resultado en un tiempo finito. Los métodos que utilizan algoritmos se denominan métodos algorítmicos, en oposición a los métodos que implican algún juicio o interpretación que se denominan métodos heuristicos. Los métodos algorítmicos se pueden implementar en computadoras; sin embargo, los procesos heuristicos no han sido convertidos facilmente en las computadoras. En los últimos años las técnicas de inteligencia artificial han hecho posible la implementación del proceso heurística en computadoras.

Ejemplos de algoritmos son: instrucciones para montar en una bicicleta, hacer una receta de cocina, obtener el máximo común divisor de dos números, etc. Los algoritmos se pueden expresar por formulas, diagramas de flujo o n-s y seudo códigos. Esta ultima representación es la mas utilizada en lenguajes estructurados como turbo pascal.

Características de un algoritmo:

1. Finito: siempre debe terminar en un numero determinado de pasos.2. Definido: las acciones deben definirse sin ambigüedad.3. Entrada: puede tener una o varias entradas.4. Salida: debe tener una o mas salidas.5. Efectividad: todas las operaciones deben ser lo suficientemente básicas para que

puedan hacerse exactamente en un determinado tiempo, no mayor que el que tome una persona empleando lápiz y papel.

Se debe tener en cuenta: Precisión: determinación, exactitud, puntualidad, concisión. Exactitud: puntualidad y fidelidad en la ejecución de una cosa. Cifras significativas: se dice que el numero p* aproxima a p con t dígitos

significativos (o cifras) si t es el entero mas grande o negativo para el cual p – p* < 5 x 10 p

Error absoluto: es la diferencia entre el valor exacto (un numero determinado, por ejemplo) y su valor redondeado o calculado: error absoluto = exacto – calculado

Error relativo: es el error absoluto dividido entre un numero positivo adecuado. Error relativo = exacto – calculado

Error de redondeo: cuando se usa una calculadora o una computadora digital para calcular cálculos numéricos, se debe considerar un error inevitable, el llamado error de redondeo. Este error se origina porque la aritmética realizada en una maquina involucra números con solo un numero finito de números, con el resultado de que muchos cálculos se realizan con aproximaciones redondeadas de los números verdaderos.

Error de truncamiento: el termino error de truncamiento generalmente se refiere al error involucrado al usar sumas finitas o truncadas para aproximar la suma de una serie infinita.

Error significativo: tener presente este tipo de error significa que el numero de cifras significativas (es decir, que tengan sentido y que sean validas) es algunas veces menor de los esperado. Ocurre con mayor frecuencia cuando se restan números casi iguales, pero también puede ocurrir cuando varios números de magnitud y signo diferentes se suman o cuando se emplea un divisor relativamente pequeño.

Error propagado: puede definirse como el error de salida provocado por un error en la entrada, suponiendo que todos los cálculos intermedios se efectúan exactamente (en particular, sin error de redondeo). Incluye la evaluación de funciones cuando el valor del dominio es aproximado, etc. Por supuesto, en una situación realista todos los tipos de error pueden intervenir, de modo que la salida de un proceso contendrá el error propagado mas los errores generados en el proceso.