diapositivas de la primera unidad del curso fundamentos de programación

63
FUNDAMENTOS DE PROGRAMACIÓN (Algoritmos, Diagramas de Flujo y Programas) Apuntes elaborados por: M. C. JOSÉ NICOLÁS ZARAGOZA GONZÁLEZ

Upload: nzaragoza

Post on 03-Jul-2015

344 views

Category:

Education


0 download

DESCRIPTION

Breve historia de las computadoras y descripción de sus principales componentes.

TRANSCRIPT

Page 1: Diapositivas de la primera unidad del curso Fundamentos de programación

FUNDAMENTOS DE PROGRAMACIÓN

(Algoritmos, Diagramas de Flujo y Programas)

Apuntes elaborados por: M. C. JOSÉ NICOLÁS ZARAGOZA GONZÁLEZ

Page 2: Diapositivas de la primera unidad del curso Fundamentos de programación

En nuestras actividades cotidianas siempre están presentes las computadoras ya sea en forma directa o indirecta. Términos como "programable" y "computarizado" se han vuelto tan comunes, que incluso en nuestro hogar contamos con enseres desarrollados con tecnología derivada de la computación. Así mismo, en nuestras actividades diarias utilizamos continuamente el concepto de programación, en ocasiones de manera inconsciente. Pero, ¿Qué son las computadoras? ¿Cómo nacen las computadoras? ¿Cuál fue su desarrollo? ¿Cómo están constituidas? ¿Cómo funcionan?

FUNDAMENTOS DE PROGRAMACIÓN .

Page 3: Diapositivas de la primera unidad del curso Fundamentos de programación

Breve historia de la computadora.

• 4500 a. c. en Mesopotamia, se han encontrado tabletas de arcilla con información acerca de ingresos, desembolsos, inventarios, préstamos, compras, arrendamientos, formación y disolución de sociedades y contratos.• Aparece el ábaco, utilizado por los árabes y los chinos desde hace poco más de 2000 años.

Page 4: Diapositivas de la primera unidad del curso Fundamentos de programación

Los mayas descubrieron y utilizaron el concepto del cero, con lo que pudieron construir un poderoso sistema numérico que les permitió abordar problemas matemáticos y astronómicos • Hace más de 500 años en Sudamérica, los Incas desarrollaron sistemas de información bastante completos, con bases de datos y modelos de procesamiento compuestos por miles de cuerdas con nudos denominados quipus.

Page 5: Diapositivas de la primera unidad del curso Fundamentos de programación

El 1642, el matemático y filósofo francés Blaise Pascal inventó una máquina capaz de llevar la cuenta automática de sumas y restas elementales. En esta máquina, conocida posteriormente como ’Pascalina’, existían ruedas dentadas que representaban las unidades, decenas, centenas y así sucesivamente.

Page 6: Diapositivas de la primera unidad del curso Fundamentos de programación

• En 1671, el alemán Gottfried W. Leibnitz mejoró el sistema de Pascal y proyectó una máquina que podía sumar, restar, multiplicar, dividir y extraer raíces. • En 1804, el francés Joseph-Marie Jacquard puso en práctica la idea de automatizar ciertas fases del funcionamiento de las máquinas de tejido textil, las telas mostrarían un dibujo correspondiente a un patrón registrado en una tarjeta perforada que la máquina podía identificar.• En 1822, el matemático inglés Charles Babbage ideó su máquina diferencial que podía realizar automáticamente operaciones aritméticas en secuencias diferentes.

Page 7: Diapositivas de la primera unidad del curso Fundamentos de programación

• En 1887, el experto en estadística Herman Hollerith inventó un sistema para representar los datos esenciales de cada ciudadano bajo la forma de agujeros hechos en una tarjeta de cartón que podía ser contada (procesada) por una máquina.

• En 1936, el alemán Konrad Zuse de 26 años construyó un calculador electromecánico, el Z1.

Page 8: Diapositivas de la primera unidad del curso Fundamentos de programación

• El primer prototipo de computadora electrónica se concibió en el invierno de 1937-1938 por el doctor John Vincent Atanasoff, profesor de física y matemáticas en Iowa State College.

• En 1944 el profesor Howard H. Aiken, de la Universidad de Harvard en los Estados Unidos, desarrolló después de siete años de estudio un calculador automático llamado Mark I, el cual funcionaba con instrucciones que se leían en una cinta de papel perforada.

• En febrero de 1946 comenzó a funcionar la ENIAC (Electronic Numerical Integrator And Calculador), desarrollada en la Universidad de Pensilvania por J. P. Eckert, J. W. Mauchly y H. H. Goldstine.

Page 9: Diapositivas de la primera unidad del curso Fundamentos de programación

El científico de origen húngaro, John Von Neumann proyectó lo que hoy es universalmente reconocido como el prototipo de las computadoras modernas, la EDVAC (Electronic Discrete Variable Automatic Calculador), cuyo diseño estaba basado en el concepto de “programa almacenado”.

Von Neumann escribió un trabajo en el cual definía los conceptos básicos con los que debería contar una computadora electrónica: 1) utilizar sistemas de numeración binarios, y 2) que las instrucciones para la computadora, así como los datos que se manipularan, se almacenaran internamente en la máquina.

Page 10: Diapositivas de la primera unidad del curso Fundamentos de programación

• La compañía Remington Rand desarrolló la UNIVAC I (UNIVersal Automatic Computer), que fue la primera computadora de uso comercial, apareciendo en el año de 1951.

Page 11: Diapositivas de la primera unidad del curso Fundamentos de programación

• A fines de 1954, en Boston, entró en servicio por primera vez la IBM 650, esta computadora dio a la IBM el liderazgo en la producción de computadoras. Iniciando la primera generación de computadoras.

Page 12: Diapositivas de la primera unidad del curso Fundamentos de programación

• Las computadoras de la segunda generación, que comenzó a aparecer en 1959, eran más pequeñas y rápidas y tenían una capacidad de cómputo mayor. La escritura de programas de aplicación en lenguaje de máquina fue desplazada por el uso de lenguajes de programación de alto nivel, los transistores sustituyeron a los bulbos.

Page 13: Diapositivas de la primera unidad del curso Fundamentos de programación

•En 1964 apareció en el mercado la tercera generación de computadoras constituidas con circuitos integrados monolíticos, gracias a los cuales aumentó considerablemente su velocidad de operación, incrementando su confiabilidad y disminuyendo su costo y tamaño. Una de las características fundamentales de estos nuevos equipos fue la gran compatibilidad de sus componentes.

• A principios de la década de los setentas, la manufactura de circuitos integrados llegó a ser tan avanzada que se lograron incorporar miles de componentes electrónicos en espacios de una fracción de pulgada. A partir de estos circuitos aparecen los microprocesadores y surgen las computadoras de la cuarta generación.

Page 14: Diapositivas de la primera unidad del curso Fundamentos de programación

La Apple I, en 1976.

Las primeras microcomputadoras fueron:

La Altair 8800, en 1975.

Page 15: Diapositivas de la primera unidad del curso Fundamentos de programación

La Apple II y la TRS-80 de Radio Shack, en 1977.

Page 16: Diapositivas de la primera unidad del curso Fundamentos de programación

La Commodore 16 y la Atari, en 1980.

Page 17: Diapositivas de la primera unidad del curso Fundamentos de programación

La IBM-PC, en diciembre de 1981.

Page 18: Diapositivas de la primera unidad del curso Fundamentos de programación
Page 19: Diapositivas de la primera unidad del curso Fundamentos de programación

Conceptos Básicos.

Las computadoras u ordenadores, son dispositivos electrónicos que manejan símbolos o datos con gran precisión y velocidad, y están diseñados para aceptar entradas (datos), procesarlos y producir salidas (resultados). Así mismo, las computadoras son consideradas como sistemas que realizan diversas operaciones las cuales incluyen el procesamiento de datos, el cual consta de tres actividades básicas:1. Captura de los datos de entrada. 2. Manipulación de los datos. 2.1. Agrupación.

2.1.1. Códigos numéricos. 2.1.2. Códigos alfabéticos. 2.1.3. Códigos alfanuméricos.

2.2. Cálculo. 2.3. Clasificación.2.4. Síntesis.

3. Manejo de los resultados de salida. 3.1. Almacenamiento y recuperación. 3.2. Comunicación y reproducción.

Page 20: Diapositivas de la primera unidad del curso Fundamentos de programación

Operaciones de proceso de las computadoras. 1. Operaciones de entrada/salida. 2. Operaciones de cálculo y manipulación de texto. 3. Operaciones de lógica/comparación. 4. Operaciones de almacenamiento y recuperación de

información.

Page 21: Diapositivas de la primera unidad del curso Fundamentos de programación

Los sistemas de cómputo.Las computadoras están conformadas a su vez por subsistemas. Los

componentes de las computadoras electrónicas digitales son los siguientes:

1.Dispositivos de entrada. 2.Unidad Central de Proceso.

2.1.Unidad aritmética-lógica. 2.2.Unidad de control.

3.Almacenamiento primario (memoria principal).4.Dispositivos de almacenamiento secundario (memoria

secundaria). 5.Dispositivos de salida.

Page 22: Diapositivas de la primera unidad del curso Fundamentos de programación

Unidad Central de Proceso (CPU)

Unidad de Control

Unidad de aritmética y lógica

Unidad de

entrada

Unidad de salida

Unidad de memoria principal

Componentes de un sistema de cómputo.

Page 23: Diapositivas de la primera unidad del curso Fundamentos de programación

A. Dispositivos de entrada. Entre los dispositivos de entrada se encuentran:1. El teclado alfanumérico.2. El ratón.3. Lápiz óptico.4. Pantallas sensibles al tacto.5. Cámaras de televisión, video o web.6. Micrófonos.7. Lectores de código de barras.8. Sensores (térmicos, eléctricos, etc.).9. Lectores de dispositivos magnéticos y ópticos (cintas, disquete,

cd o dvd).

Page 24: Diapositivas de la primera unidad del curso Fundamentos de programación

B. Unidad Central de Proceso. Para ejecutar estas acciones, la unidad central de proceso cuenta con los dos siguientes elementos fundamentales:1.Unidad aritmética-lógica. Esta unidad puede realizar un número reducido de operacioneselementales a gran velocidad, éstas son:• Suma y resta de dos números.• Multiplicación y división de dos números.• Operaciones lógicas: and, or, not.• Comparación entre dos valores.2.Unidad de control.Sus funciones consisten en leer y escribir contenidos en las celdillas de memoria; llevar y traer datos entre celdillas y, decodificar y ejecutar las instrucciones de un programa.

Palabra. Es el número de bits que procesa la computadora por unidad de tiempo, esto, de acuerdo a cada impulso eléctrico que emite el reloj. Las computadoras tienen tamaños de palabra de 32, 64 y 128 bits.

Page 25: Diapositivas de la primera unidad del curso Fundamentos de programación

C. Almacenamiento primario (memoria principal).La unidad de memoria principal de la computadora permite almacenar instrucciones y datos, además de resultados parciales y finales que se generen. Básicamente podemos decir que la memoria principal se utiliza para cuatro funciones:

• Almacenamiento de entrada. (buffer de entrada)• Memoria de trabajo. • Almacenamiento de salida. (buffer de salida)• Área de almacenamiento de programas.

Page 26: Diapositivas de la primera unidad del curso Fundamentos de programación

Hay dos tipos de memoria que son:a) Memoria RAM (Random Access Memory / Memoria de Acceso Aleatorio).- Es una memoria de lectura y escritura.- Es volátil (pierde información con la falta de energía eléctrica).- Se pueden direccionar sus celdillas aleatoriamente.- En esta memoria residen los programas y datos del usuario.

b) Memoria ROM (Read Only Memory / Memoria de Solo Lectura).- Memoria de lectura.- Instrucciones permanentes grabadas con anterioridad.- No se ve afectada por la falta de corriente eléctrica.- El usuario podrá utilizar las instrucciones que contiene, más no podrá modificarlas.

Los componentes de la memoria principal son la dirección y el contenido. La dirección, es la posición relativa de un byte en memoria y, contenido, es el dato o instrucción almacenado en dicha posición.

Page 27: Diapositivas de la primera unidad del curso Fundamentos de programación

D. Dispositivos de almacenamiento secundario (memoria secundaria). Este tipo de memoria es de lectura/escritura y puede consistir en alguno de los siguientes dispositivos:a) Discos magnéticos fijos o removibles (disquetes, discos duros, discos zip, etc.).b) Discos ópticos (discos compactos o dvd).c) Cintas magnéticas.d) Dispositivos: memory Stick, memory Flash y memorias USB.

Page 28: Diapositivas de la primera unidad del curso Fundamentos de programación

E. Dispositivos de salida. Algunos de los dispositivos de salida más comunes son:• Monitor.• Impresoras (de chorro de tinta, LASER, de matriz de puntos).• Bocinas.• Dispositivos grabadores de medios magnéticos y ópticos (cinta,

disquete, cd, dvd, etc.).• Cañón de proyección.• Brazos robóticos.

Page 29: Diapositivas de la primera unidad del curso Fundamentos de programación

Finalmente, un sistema de cómputo está conformado por dos estructuras: el hardware y el software.Hardware. Es el conjunto de componentes físicos, ya sean electrónicos, magnéticos o mecánicos.Software. Es el conjunto de programas y datos necesarios para el funcionamiento de la computadora. Este conjunto de programas está compuesto entre otros por:• Sistemas operativos (windows, linux, unix, panther, jaguar, etc.). • Paquetes (Word, Excel, MathLab, SPSS, CONTPAQ, etc.). • Programas de aplicación (contabilidad, inventarios, nómina,

control escolar, etc.). • Utilerías (Norton, Nero, FTP, etc.). • Ensambladores, compiladores e intérpretes.

Page 30: Diapositivas de la primera unidad del curso Fundamentos de programación

Concepto de Lenguaje.

En general, las computadoras operan bajo un sistema binario para representar y manejar internamente la información.

Para podernos comunicar con la computadora requerimos de un sistema operativo o de un lenguaje. Un lenguaje es un conjunto de símbolos, señales o sonidos articulados usados para comunicarse o para dar a entender una cosa. En computación es un conjunto de instrucciones que nos sirven para comunicarnos con la computadora.

Page 31: Diapositivas de la primera unidad del curso Fundamentos de programación

Las primeras computadoras que operaban bajo el concepto de Von Neumann (quién introdujo el concepto de programa almacenado) eran programadas en lenguaje máquina (lenguaje binario, compuesto de unos y ceros), y las instrucciones se introducían en forma secuencial (una tras otra) a través de tarjetas perforadas. Además, este lenguaje máquina era específico para cada computadora. Esto hacía la programación muy complicada, lenta y costosa; por lo que sólo unos cuantos “iniciados” podían operar las computadoras.

Page 32: Diapositivas de la primera unidad del curso Fundamentos de programación

Ejemplo de un programa en código máquina que imprime los números del 0 al 99:

0 0 0 0 1 1 1 00 0 0 0 0 0 0 00 0 1 1 1 1 1 00 1 1 0 0 1 0 00 0 0 0 1 1 0 01 0 0 1 0 0 0 11 1 0 0 0 0 1 00 0 0 0 0 0 1 00 0 1 0 0 0 0 0

Page 33: Diapositivas de la primera unidad del curso Fundamentos de programación

Sin embargo en la década de los cincuenta aparecen los primeros lenguajes de programación, también llamados lenguajes simbólicos, el primero fue el lenguaje ensamblador, el cual constaba de instrucciones representadas por caracteres alfanuméricos, los cuales conforman instrucciones, las cuales son más fáciles de comprender. Sin embargo, al igual que con el lenguaje máquina, el lenguaje ensamblador era especifico para cada tipo de computadora, y por su bajo nivel de comunicación con el usuario se denominaron lenguajes de bajo nivel. Se presenta el mismo programa contador de 0 a 99:

LD C, 00 Carga (LOAD) C con un cero

Ciclo: LD A, 63 Carga A con un 63 (63 en hexadecimal es 99 en decimal)

INC C Incrementa el contenido de C

SUB C Hace la resta C - A

JP NZ ciclo Si el resultado no fue cero salta (JUMP) a ciclo.

Page 34: Diapositivas de la primera unidad del curso Fundamentos de programación

Al lenguaje máquina y lenguaje ensamblador se les denomina: lenguajes de bajo nivel, por su bajo nivel de comunicación con el usuario.a) Lenguaje Máquina.El lenguaje máquina es una representación particular de las instrucciones y datos, los cuales son interpretados inmediatamente por el hardware de la computadora. Esta representación está dada en bits por lo que puede presentarse en términos de ceros y unos.b) Lenguaje Ensamblador.El lenguaje ensamblador consta de un conjunto de instrucciones representadas con caracteres alfanuméricos, que son nemotécnicos de palabras que indican instrucciones, lo cual le da una mayor comprensión. Al igual que el lenguaje de máquina, el lenguaje ensamblador es específico para cada arquitectura de computadoras.

Programa enLenguaje Ensamblador

⇒ ProgramaEnsamblador

⇒ Programa enCódigo de Máquina

Page 35: Diapositivas de la primera unidad del curso Fundamentos de programación

Pero es finales de los años cincuenta cuando aparecen los primeros lenguajes de alto nivel, los cuales tiene entre otras ventajas: que son fáciles de aprender, son independientes de la computadora y constan de instrucciones formadas por palabras cortas del idioma inglés; permitiendo elaborar programas fáciles de entender y de corregir, así como sistemas grandes y complejos en un menor tiempo.

Lenguajes de Alto Nivel.

i) Fáciles de aprender.ii) Permiten elaborar programas fáciles de entender y por lo tanto de corregir.iii) Son independientes de la computadora. Pueden utilizarse en cualquier máquina y son de carácter universal.iv) Utilizan un conjunto de palabras generalmente en inglés, que permiten comprender con mayor facilidad y claridad el razonamiento que presenta el programador para la solución de su problema.

Page 36: Diapositivas de la primera unidad del curso Fundamentos de programación

Algunos de los lenguajes de programación más comúnmente usados son:a) FORTRAN (FORmula TRANslation o TRANslator).(Traducción ó Traductor de Fórmulas).Fue el primer lenguaje de programación diseñado en 1957 por John Backus para la IBM, su principal aplicación es en el área de Ingeniería y Ciencias. b) COBOL (COmmon Business Oriented Language).(Lenguaje Común Orientado a Negocios).Uno de los primeros lenguajes de programación. Fue diseñado en 1958 por la almirante Grace Murray Hopper dentro de un comité norteamericano llamado CODASYL (COnference on DAta SYstems Languages) y se utiliza para aplicaciones comerciales y administrativas.

Page 37: Diapositivas de la primera unidad del curso Fundamentos de programación

c) ALGOL (ALGOrithmic Language).(Lenguaje Algorítmico)Lenguaje de aplicaciones científicas que surge en 1960 diseñado por un comité internacional con sede en Europa, fue el primero con una sintaxis definida de manera formal y matemática, por lo que puede ser considerado como el iniciador de la familia de lenguajes de programación estructurada. d) BASIC (Beginners All purpose Symbolic Instruction Code).(Código de Instrucciones Simbólicas para Principiantes para Todo uso).Lenguaje diseñado para la educación y dedicado fundamentalmente a la programación de máquinas pequeñas. Fue diseñado en 1964 por John Kemeny y Thomas Kurtz, del Dartmouth College, en New Hampshire, Estados Unidos.

Page 38: Diapositivas de la primera unidad del curso Fundamentos de programación

e) PL/1 (Programming Language 1).(Lenguaje de Programación 1). Lenguaje de programación muy amplio y extenso que IBM propuso en 1964 como alternativa para trabajos científicos y comerciales. f) Pascal.Lenguaje de programación diseñado en 1970 por Niklaus Wirth, del Instituto Tecnológico de Zurich, en Suiza, llamado así en honor a Blas Pascal.

g) C.Lenguaje especializado para la programación de sistemas. Diseñado en 1972 por Dennis Ritchie, de los Laboratorios Bell, en New Jersey, Estados Unidos. Se emplea para escribir compiladores y sistemas operativos. C++ es una versión expandida de C y fue desarrollada 1980 por Bjarne Stroustup de los Laboratorios Bell denominada originalmente “C con clases”, cambiando su nombre en 1983 a C++. La principal aplicación de C++ es la programación orientada a objetos (OOP, Object-Oriented Programming).

Page 39: Diapositivas de la primera unidad del curso Fundamentos de programación

h) RPG (Report Program Generator).(Programa Generador de Reportes).Es un lenguaje diseñado en 1956 por IBM para producir, como su nombre lo indica, informes administrativos y comerciales. i) Ada.Llamado así en honor de Augusta Ada Lovelace (Ada Byron), asistente de Charles Babbage, quién es considerada como la primer programadora. Este lenguaje fue desarrollado en 1978 por un grupo a cargo de Jean Ichbiah, con la intención de tener un único lenguaje de programación de uso universal. j) Modula-2.Lenguaje creado en 1978, diseñado por el creador de Pascal, Niklaus Wirth, por lo que se considera una especie de “Pascal mejorado”.

Page 40: Diapositivas de la primera unidad del curso Fundamentos de programación

k) LISP (LISt Processing).(Procesador de Listas).Lenguaje diseñado por John McCarthy en 1960, usado en la investigación de la inteligencia artificial. Maneja en forma dinámica conjuntos llamados listas.l) PROLOG (PROgramming LOGic).(Programación Lógica).Lenguaje creado en 1972 por Alan Comerauer y Philippe Roussel en la Universidad de Marsella, Francia. Adoptado por el proyecto de la quinta generación de computadoras emprendido en Japón, como vehículo de creación de los sistemas y programas para el manejo de inteligencia artificial.m) Logo.Fue diseñado por un educador y matemático del Instituto Tecnológico de Massachussets, Seymour Paper a finales de los 60’s. Se usa para aplicaciones de tipo educativo y se ha enfocado principalmente para enseñar a los niños computación.

Page 41: Diapositivas de la primera unidad del curso Fundamentos de programación

n) Smalltalk.La primera versión de Smalltalk fue desarrolada en XEROX en 1971. Smalltalk es el primer lenguaje orientado a objetos con una interfaz de usuario integrada, con ventanas que se superponen y un editor con las opciones copiar y pegar. o) PERL (Practical Extraction and Reporting Language)..PERL fue desarrollado por Larry Wall en 1987 para ser utilizado en el manejo de textos.p) Java.El lenguaje Java nace en 1991 en Sun Microsystems Inc. Es un lenguaje derivado de C y fue creado por James Gosling, Patrick Naughton, Chris Warth, Ed Frank y Mike Sheridan. Originalmente se llamó “Oak”, pero en 1995 cambió su nombre a Java.

q) Phyton.Creado a finales de los años 80 en los Países Bajos por Guido van Rossum , es considerado un lenguaje multiparadigma.

Page 42: Diapositivas de la primera unidad del curso Fundamentos de programación

CONSIDERACIONES ACERCA DE LOS LENGUAJES DE PROGRAMACION.

Algunos aspectos que debemos considerar para los lenguajes de programación son:a) Modularidad.b) Transportabilidad (Portabilidad).c) Eficiencia.d) Facilidades para la entrada/salida de datos.

Page 43: Diapositivas de la primera unidad del curso Fundamentos de programación

Compiladores e Intérpretes.

a) Compiladores.Son programas que teniendo como entrada un programa fuente en lenguaje de alto nivel, producen un programa objeto listo para ser ejecutado.* Programa Fuente.Es un programa que está escrito en lenguaje ensamblador o lenguaje de alto nivel.* Programa Objeto.Es aquel que se encuentra en código máquina y que está listo para ser ejecutado.Un compilador tiene como función producir programas objeto a partir del programa fuente:

Programa Fuente(En Lenguaje de Programación)

⇒ Compilador ⇒ Programa Objeto(En Código de Máquina)

Page 44: Diapositivas de la primera unidad del curso Fundamentos de programación

El trabajo de un compilador puede dividirse en cinco fases:i) Análisis Lexicográfico.-Verificación de que las palabras utilizadas en el programa fuente son válidas en el lenguaje.ii) Análisis de Sintaxis.-Examen de la ortografía y organización de cada instrucción del programa fuente.iii) Generación de Código Intermedio.-Producción de un conjunto de instrucciones similares a las de un lenguaje ensamblador que corresponden al programa que se está compilando.iv) Optimización de Código.-Simplificación del código intermedio obtenido, con el fin de producir un programa objeto más compacto y con uso óptimo de memoria.v) Generación de Código Máquina.-Producción final del programa objeto (programa ejecutable).

Page 45: Diapositivas de la primera unidad del curso Fundamentos de programación

b) Intérpretes.Un intérprete es un programa que traduce y ejecuta una por una, las instrucciones de un programa fuente escrito en lenguaje de alto nivel. El intérprete no produce un programa objeto, analiza la sintaxis y semántica de cada línea del programa y si son correctas, las ejecuta, de lo contrario manda un mensaje del error correspondiente y se suspende la ejecución.

Para la programación en lenguajes como FORTRAN, COBOL, ALGOL, PASCAL, C y algunas versiones de BASIC (VISUAL BASIC), se utilizan compiladores.

En casi todas las versiones antiguas de BASIC para microcomputadoras, así como en los lenguajes LISP, FORTH, LOGO y JAVA, se utilizan intérpretes.

Page 46: Diapositivas de la primera unidad del curso Fundamentos de programación

PARADIGMAS DE LA PROGRAMACIÓN.

Con el advenimiento de estos lenguajes, la programación empezó a tener un gran desarrollo, apareciendo diferentes estilos de programación, ya que los avances tecnológicos de los equipos de cómputo, permitieron la creación de nuevos lenguajes, así como de los cinco estilos o paradigmas de programación que se indican a continuación.

1. Programación Lineal.2. Programación Estructurada y Modular.3. Programación Orientada a Objetos.4. Programación Orientada a Eventos.5. Programación Concurrente.

Page 47: Diapositivas de la primera unidad del curso Fundamentos de programación

1. Programación Lineal. La programación lineal, fue el primer estilo de programación y era utilizado por los primeros lenguajes de alto nivel BASIC, FORTRAN, COBOL, etc. Es un tipo de programación imperativa, donde el programa recibe entradas de datos, los procesa y devuelve como salidas una serie de resultados. La forma en que se ejecutan los procesos es secuencial, esto es, se ejecutan una instrucción tras otra hasta la terminación del programa. Sin embargo, este tipo de programación permite el uso de transferencias de control y de llamadas a subrutinas o subprogramas.

Page 48: Diapositivas de la primera unidad del curso Fundamentos de programación

Dentro de las transferencias de control, existen dos tipos de transferencias, estas son: 1) Transferencia incondicional. Utiliza la sentencia GOTO para ceder o transferir el control de la ejecución del programa sin imponer ningún tipo de condición. Esto provoca que durante su ejecución, el programa pueda saltar de una instrucción que se encuentre al principio hacía otra que se encuentre al final, brincando después a otra línea del programa, y así sucesivamente, haciendo que los programas se vuelvan mas complicados conforme aumentan las sentencias de transferencia incondicional, haciendo más difícil su entendimiento y su corrección.2) Transferencia condicional. También utiliza la sentencia GOTO, pero esta va precedida de alguna sentencia condicional como la sentencia IF o IF-THEN.

Page 49: Diapositivas de la primera unidad del curso Fundamentos de programación

Además de las transferencias de control, existen las llamadas (CALL) y transferencias (GOSUB) a subrutinas y subprogramas, los cuales son pequeños programas que realizan operaciones muy específicas, los cuales al terminar de realizar sus operaciones, devuelven el control al programa que los llamó.El concepto de programación lineal fue muy popular en sus inicios, pero la creación de programas y sistemas con este estilo se volvía compleja y difícil cuando los programas aumentaban de tamaño por lo que a finales de los sesenta se buscó un nuevo estilo de programación.

Page 50: Diapositivas de la primera unidad del curso Fundamentos de programación

2. Programación Estructurada y Modular. La programación estructurada y modular, de hecho está compuesta por dos estilos de programación, los cuales se complementan, aún cuando en ocasiones son utilizados ambos términos como sinónimos.La programación estructurada, basada en la programación lineal, es una metodología que utiliza una lógica ordenada y simple, haciendo uso de las estructuras lógicas de la programación, también llamadas estructuras de control, las cuales se clasifican en tres tipos:a) Estructuras Secuenciales. Es la ejecución de un proceso seguida inmediatamente por otro. Esto es, una secuencia de instrucciones.b) Estructuras Selectivas o de Decisión. Indican la ejecución de procesos de acuerdo a una expresión evaluada, denominada expresión condicional, este tipo de estructuras se encuentran bien definidas, eliminando las transferencias de control. Utilizan las sentencias IF y CASE.

Page 51: Diapositivas de la primera unidad del curso Fundamentos de programación

c) Estructuras Repetitivas, Iterativas, Ciclos o Bucles. Indican la acción repetida de un proceso o procesos, mientras (DO-WHILE) o hasta (REPEAT-UNTIL) que se cumpla una condición. También puede ejecutarse la estructura un determinado número de veces (FOR), desde un valor inicial hasta un valor final.La programación modular, también llamada procedimental o funcional, consiste en dividir un problema en problemas más pequeños, llamados subproblemas o módulos. Estos a su vez se dividen en subproblemas más pequeños y así sucesivamente, con la idea de solucionar los problemas más pequeños y así, paso a paso, darle solución al problema en general. Cada uno de estos módulos o subprobgramas, reciben los nombres de funciones o procedimientos, según el tipo de proceso que ejecuten.

Page 52: Diapositivas de la primera unidad del curso Fundamentos de programación

3. Programación Orientada a Objetos. Otro estilo de programación, es el de la programación orientada a objetos (POO). El elemento fundamental de la programación orientada a objetos es, como su nombre lo indica, el objeto. Podemos definir un objeto como un conjunto complejo de datos y programas que poseen estructura y forman parte de una organización. También podemos definirlo como una encapsulación de un conjunto de datos y los métodos para manipularlos. El diseño orientado a objetos se interesa en primer lugar por los datos, a los que se asocian posteriormente procedimientos.Cuando escribimos un programa orientado a objetos, lo que hacemos es diseñar un conjunto de clases, desde las cuales se crean los objetos necesarios cuando el programa se ejecute. Cada una de estas clases incluye dos partes claramente diferenciables: los atributos y los métodos.

Page 53: Diapositivas de la primera unidad del curso Fundamentos de programación

Los atributos definen el estado de cada uno de los objetos de esa clase y los métodos su comportamiento.Los métodos son las operaciones que pueden realizarse sobre el objeto, que normalmente estarán incorporados en forma de programas (código) que el objeto es capaz de ejecutar y que también pone a disposición de sus descendientes a través de la herencia.Normalmente, los atributos se ocultan a los usuarios del objeto, manteniendo como única conexión con el exterior, los mensajes.

Objeto

Atributos

métodos

mensajes

Page 54: Diapositivas de la primera unidad del curso Fundamentos de programación

Cada objeto es una estructura compleja en cuyo interior hay datos y programas, todos ellos relacionados entre sí, como si estuvieran encerrados conjuntamente en una cápsula. Esta propiedad (encapsulamiento), es una de las características fundamentales en la POO.

Objetos: Atributos:

NombreEdadLicencia de conducirNúmero

FabricanteModeloNúmero de serieTipo de carroceríaColor

Relaciones:

Posee

Page 55: Diapositivas de la primera unidad del curso Fundamentos de programación

4. Programación Orientada a Eventos. La programación orientada a eventos, asimila elementos de la programación orientada a objetos, ligando unidades de código escritas para determinado objeto, mediante eventos que pueden ocurrir sobre dicho objeto, de tal forma que cuando ocurra un evento se ejecute la unidad de código correspondiente. A la unidad que agrupa ese código recibe el nombre de procedimiento conducido por un evento. En general un evento ocurre cada vez que un sistema orientado a objetos y un actor (persona, dispositivo o sistema externo) intercambian información. Los lenguajes visuales son básicamente orientados a objetos, pero también están orientados a eventos. Por ejemplo, una aplicación en Windows es conducida por eventos y orientada a objetos.

Page 56: Diapositivas de la primera unidad del curso Fundamentos de programación

5. Programación Concurrente. La programación concurrente es soportada por casi todos los sistemas operativos utilizados en la actualidad. También se le conoce con el nombre de multiprogramación o multitarea, y se refieren a la ejecución intercalada de dos o más programas diferentes e independientes por la misma computadora. Sin embargo, la multiprogramación no se define como la ejecución de instrucciones de varios programas en el mismo instante de tiempo. Más bien significa que el procesador puede tener acceso a varios programas de uno o más usuarios y que ejecuta una porción de un programa, después una porción de otro programa y así sucesivamente. Por lo que el sistema operativo transfiere el control de un programa a otro de manera casi instantánea.

Page 57: Diapositivas de la primera unidad del curso Fundamentos de programación

Principales Herramientas para el Análisis y Diseño.

La ingeniería es el análisis, diseño, construcción, verificación y desarrollo de entidades técnicas (o sociales). Con independencia de la entidad a la cual se va a aplicar la ingeniería, se deben cuestionar y responder las siguientes preguntas:

· ¿Cuál es el problema a resolver?

· ¿Cuáles son las características de la entidad que se utiliza para resolver el problema?

· ¿Cómo se realizará la entidad (y la solución)?

· ¿Cómo se construirá la entidad?

· ¿Qué enfoque se va a utilizar para no repetir los errores que se cometieron en el diseño y en la construcción de la entidad?

· ¿Cómo se apoyará la entidad cuando los usuarios soliciten correcciones, adaptaciones y mejoras de la entidad?

Page 58: Diapositivas de la primera unidad del curso Fundamentos de programación

El Instituto de Ingenieros Eléctricos y Electrónicos (IEEE –Institute of Electrical & Electronics Engineers-), define la Ingeniería de Software como:

La aplicación de un enfoque sistemático, disciplinado y cuantificable hacía el desarrollo, operación y mantenimiento del software;

es decir, la aplicación de ingeniería al software.

El trabajo que se asocia a la ingeniería del software se puede dividir en tres fases genéricas, con independencia del área de aplicación, tamaño o complejidad del proyecto. Cada fase se enfrenta con una o varias cuestiones de las indicadas anteriormente.

Page 59: Diapositivas de la primera unidad del curso Fundamentos de programación

La fase de definición se centra sobre el qué. Es decir, durante la definición, el que desarrolla el software intenta identificar que información ha de ser procesada, qué interfaces van a ser establecidas, qué restricciones de diseño existen, y qué criterios de validación se necesitan para definir un sistema correcto. Por tanto, han de identificarse los requisitos clave del sistema y del software. Aunque los métodos aplicados durante la fase de definición variarán dependiendo del paradigma de ingeniería del software (o combinación de paradigmas) que se aplique, de alguna manera se llevarán a cabo tres tareas principales: ingeniería de sistemas o de información, planificación del proyecto del software, y análisis y determinación de los requerimientos.

Page 60: Diapositivas de la primera unidad del curso Fundamentos de programación

La fase de desarrollo se centra en el cómo. Es decir, durante el desarrollo un ingeniero de software intenta definir cómo han de diseñarse las estructuras de datos, cómo ha de implementarse la función como una arquitectura del software, cómo han de implementarse los detalles de los procedimientos, cómo han de definirse las interfaces, cómo ha de traducirse el diseño en un lenguaje de programación y cómo han de realizarse las pruebas. Los métodos aplicados durante la fase de desarrollo variarán, aunque las tres tareas técnicas específicas que deberán ocurrir siempre son: diseño del software, generación del código y prueba del software.

Page 61: Diapositivas de la primera unidad del curso Fundamentos de programación

La fase de mantenimiento se centra en el cambio que va asociado a la corrección de errores, a las adaptaciones requeridas a medida que evoluciona el entorno del software, y a cambios debidos a las mejoras producidas por los requisitos cambiantes del cliente. La fase de mantenimiento vuelve a aplicar los pasos de las fases de definición y de desarrollo, pero en el contexto del software ya existente. Durante la fase de mantenimiento se encuentran cuatro tipos de cambios:

Para resolver los problemas reales de una industria, un ingeniero del software debe incorporar una estrategia de desarrollo que acompañe la proceso, la cual incluye métodos y herramientas. Esta estrategia se denomina modelo de proceso o paradigma de ingeniería del software. Se selecciona un modelo de proceso para la ingeniería del software según la naturaleza del proyecto y de la aplicación, los métodos y las herramientas a utilizarse, y los controles y metas que se requieran.

Page 62: Diapositivas de la primera unidad del curso Fundamentos de programación

Todo el desarrollo del software se puede caracterizar como un ciclo de resolución de problemas en le que se encuentran cuatro etapas distintas: situación actual, definición de problemas, desarrollo técnico e integración de soluciones. La situación actual representa el estado actual de sucesos; la definición de problemas identifica el problema específico a resolverse; el desarrollo técnico resuelve el problema a través de la aplicación de alguna técnica o tecnología, y la integración de soluciones ofrece los resultados a los solicitantes o usuarios (por ejemplo: documentos, programas, datos, producto nuevo, etc.).

El ciclo de resolución de problemas se aplica al trabajo de ingeniería de software en diferentes niveles de solución. Se puede utilizar a un macro nivel, considerando la aplicación entera; en un nivel medio, cuando se están considerando los componentes del sistema e incluso a nivel de código o programa.

Page 63: Diapositivas de la primera unidad del curso Fundamentos de programación

Fases de un ciclo de resolución de problemas

Situación actual

Integración de soluciones

Desarrollo técnico

Definición de problemas