CATEDRA 0 2 Facultad de Ingeniería de Minas, Geología y Civil Departamento académico de ingeniería de minas y civil METODOS NUMERICOS Ingeniería Civil ING. CRISTIAN CASTRO P. Capitulo II Herramientas de Cálculo ING. CRISTIAN CASTRO P. Que es el Software ? Programas de cómputo y su documentacion asociada • • • • • • Sistemas o Productos de software grandes y complejos. Que contiene el software. Que tipos de software hay ? Cual es el costo del software. Como se desarrolla el software ? Como saber si un software tiene calidad. Que tipos de software hay ? • Por su estructura: • Funcionales. • Orientados a objetos. • Orientados a listas. • Orientados a componentes. • Por su función: • Programas o Sistemas de Usuario • Interfaces Hombre-Maquina. • Herramientas de Software. • Librerias. • Sistemas de uso generico: Compiladores, S.O’s, Procesadores de Texto, etc • Bases de Datos. • Sistemas basados en Web. Que tipos de software hay ? • Por su plataforma de computo: • Sistemas embebidos. • Sistemas de computo distribuido. • Sistemas de computo paralelo. • Sistemas de tiempo real. • Sistemas basados en Chips. • Wearable computing systems. • Sistemas de computo ubiquos. TIPOS DE SOFTWARE • Software de sistemas • • Sistemas operativos Lenguajes de programación • Bajo nivel: Lenguaje máquina, Ensamblador • Alto nivel: • • • • Utilerías Software de aplicación • • • Compilados: Lenguaje C, Pascal, Fortan Interpretados: Basica, Visual Basic. Especializados De uso general Software del usuario final • • • • • • Sistemas de bases de datos Generadores de gráfica Lenguajes de 4ª. Generación Herramientas RAD Sistemas adaptables Sistemas de información geográfica Que contiene el software ? • El software contiene: • Líneas de código de algún lenguaje ? • Instrucciones de computadora. • Descripción de las estructuras de datos. • Algoritmos. • Procedimientos y funciones. • Componentes de software. Características de los Productos de Software • Mantenibles. Debe ser posible que el software evolucione y que siga cumpliendo con sus especificaciones. • Confiabilidad. El software no debe causar danos físicos o económicos en el caso de fallos. • Eficiencia. El software no debe desperdiciar los recursos del sistema. • Utilización adecuada. El software debe contar con una interfaz de usuario adecuada y su documentación. Características del proceso • Entendible Se encuentra el proceso bien definido y es entendible ?. • Visible El proceso es visible al exterior ?. • Soportable Puede el proceso ser soportado por herramientas CASE ?. • Aceptable El proceso es aceptado por aquellos involucrados en el ?. Costos del Software • Los costos del software a menudo dominan al costo del sistema. El costo del software en un PC es a menudo mas caro que la PC. Costos • Cuesta mas mantener el software que desarrollarlo. Para sistemas con una larga vida, este costo se multiplica. • La Ingeniería de Software concierne a un desarrollo efectivo en cuanto a costes del software. Eficiencia REPRESENTACION DE LOS NUMEROS EN LA COMPUTADORA • ENTEROS • REALES SISTEMA DE ARITMETICA DE PUNTO FLOTANTE Unidades de Medida de Memoria Nombre Abrev. Factor Tamaño en el SI kilo K 210 = 1024 103 = 1000 mega M 220 = 1 048 576 106 = 1 000 000 giga G 230 = 1 073 741 824 109 = 1 000 000 000 tera T 240 = 1 099 511 627 776 1012 = 1 000 000 000 000 peta P 250 = 1 125 899 906 842 624 1015 = 1 000 000 000 000 000 E 260 = 1 152 921 504 606 846 976 1018 = 1 000 000 000 000 000 000 Z 270 = 1 180 591 620 717 411 303 42 4 1021 = 1 000 000 000 000 000 000 000 yotta Y 280 = 1024 = 1 208 925 819 614 629 174 70 1 000 000 000 000 000 000 000 000 6 176 Bronto B 290 = 1024 Yottabytes exa zetta 1027 = 1 000 000 000 000 000 000 000 000 Ley de Moore Herramientas de Cálculo Equipo • Computadora • Calculadora Herramientas de Cálculo Software • Desarrollo de programas • Software matemático • Hoja de cálculo • Calculadora graficadora Herramientas de Cálculo NIVELES DE LENGUAJES DE PROGRAMACIÓN Lenguajes declarativos (4ª. Generación) Alto Nivel Lenguajes de alto nivel (Compilados o interpretados) Lenguajes ensambladores Bajo Nivel Lenguajes máquina Herramientas de Cálculo Módulos de un Algoritmo Algoritmo Datos de entrada Módulo 1 Procesamiento de los datos Módulo 2 Impresión de resultados Módulo 3 Módulo 1: representa la operación que permite el ingreso de los datos del problema Módulo 2: representa la operación o conjunto de operaciones secuenciales, cuyo objetivo es obtener la solución del problema Módulo 3 : representa una operación o conjunto de operaciones que permite comunicar al exterior el o los resultados obtenidos Herramientas de Cálculo Algoritmo • Conjunto finito de instrucciones bien definidas para lograr alguna tarea (objetivo), que dado un estado inicial, terminará en un estado final una vez alcanzado un criterio. Ejemplo 1: Torre de Hanoi http://www.wikipedia.org/ ¿Cuántos pasos para “n” discos? • • • El objetivo es mover todos los discos de su posición inicial a o tra guía, obedeciendo las reglas: Sólo se puede mover un disco a la vez Ningún disco se puede poner sobre un disco menor Herramientas de Cálculo • • • • • Características de un Algoritmo + Sumar - Menos Donald E. Knuth Fundamental Algorithms Vol. 1, 2nd edition * Multiplicación / División ± Mas o menos = Equivalente a > Mayor que < Menor que >= Mayor o igual que <= Menor o igual que <> Diferente de Finito Definido con Precisión Entradas Salidas Efectividad Si No True False Herramientas de Cálculo Compilación Common Language Runtime Assembly Código fuente Compilación C++, C#, VB o cualquier otro lenguaje (Strong name opcional) DLL o EXE Lenguajes de Programación Historia 50 60 70 80 90 FORTRAN ALGOL 60 PL/I Simula Pascal Smalltalk C Ada COBOL LISP Prolog ML Miranda Lenguajes de Programación 1950 1960 1970 1980 PL/I(66) Historia Eiffel (86) Ada(95) Ada(83) Cobol(58) ENSAMBLADOR 1990 Pascal(70) Java(96) Algol(60) C(72) Fortran(54) Simula(67) Basic(66) C++(89) Smalltalk(80) Lenguajes de Programación PERSPECTIVA HISTÓRICA DE VARIOS LENGUAJES Área de aplicación Origen lingüístico 1960 1970 ANS FORTRAN I FORTRAN II FORTRAN IV Científica Algebra Algol 58 Algol 60 FORTRAN IV ANS BASIC Procedimiento de datos Inglés COBOL 58 APL Propósito General Lambda Inteligencia artificial calculo Programación de sistemas Algoritmo de Markov Maquina de Von Neumann FORTRAN 77 FORTRAN Pascal ANS ANS BASIC COBOL 68 ANS PL/I PL/I ANS UCSD Pascal Pascal LISP ANS PL/I (G) PROLOG LISP 1,5 Procesamiento de texto 1980 SNOBOL 3 SNOBOL ICON SNOBOL 4 C Ensamblador y Lenguajes maquina ANS Ada Ada Modula Modula-2 Lenguajes de Programación PERSPECTIVA HISTÓRICA DE VARIOS LENGUAJES Lenguajes de Programación Lenguajes de Programación • Son herramientas que nos permiten crear programas y software. Entre ellos tenemos Fortran, C, Delphi, Qbasic, Visual Basic, Pascal, Java, etc.. • Una computadora funciona bajo control de un programa el cual debe estar almacenado en la unidad de memoria; tales como el disco duro. • Los lenguajes de programación facilitan la tarea de programación, ya que disponen de formas adecuadas que permiten ser leídas y escritas por personas. Lenguajes de Programación Lenguajes de Programación • Los lenguajes de programación se representan en forma simbólica y en manera de un texto los códigos que podrán ser leídos por una persona tales como: 1 celulares 2 cajeros Automáticos 3 los mp3 4 Calculadoras Lenguajes de Programación Lenguajes de Programación Hay lenguajes de programación que utilizan compilador QUE ES UN COMPILADOR……..? Un compilador es un programa que, a su vez, traduce un programa escrito en un lenguaje de programación a otro lenguaje de programación La razón principal para querer usar un compilador es traducir un programa de un lenguaje de alto nivel, a otro lenguaje de nivel inferior. Lenguajes de Programación Lenguajes de Programación Los lenguajes de programación se determinan según el nivel Nivel Bajo Nivel Medio Nivel Alto Comparación de Lenguajes ¿Cuáles son los criterios usados? • Tres criterios usados comúnmente cuando se evalúan los lenguajes de programación son: • Cuán fácil se pueden leer y entender programas (re adability) • Cuán fácil se pueden escribir programas (writability) • Cuán confiables son los programas (reliability) • Recuerde: no existe un lenguaje de programación que se pueda clasificar como el mejor de todos. Si existiera, todo el mundo lo usaría. Muchas Gracias