2. 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 .
3. 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.
4. 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.
5. 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.
6. • 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.
7. • 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.
8. • 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.
9. 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.
10. • 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.
11. • 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.
12. • 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.
13. •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.
14. La Apple I, en 1976.
Las primeras microcomputadoras fueron:
La Altair 8800, en 1975.
15. La Apple II y
la TRS-80 de
Radio Shack,
en 1977.
19. 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.
20. 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.
21. 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.
22. 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.
23. 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).
24. 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 operaciones
elementales 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.
25. 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.
26. 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.
27. 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.
28. 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.
29. 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.
30. 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.
31. 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.
33. 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.
34. 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 en
Lenguaje Ensamblador
⇒ Programa
Ensamblador
⇒ Programa en
Código de Máquina
35. 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.
36. 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.
37. 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.
38. 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).
39. 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”.
40. 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.
41. 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.
42. 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.
43. 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)
44. 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).
45. 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.
46. 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.
47. 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.
48. 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.
49. 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.
50. 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.
51. 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.
52. 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.
53. 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
54. 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:
Nombre
Edad
Licencia de conducir
Número
Fabricante
Modelo
Número de serie
Tipo de carrocería
Color
Relaciones:
Posee
55. 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.
56. 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.
57. 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?
58. 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.
59. 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.
60. 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.
61. 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.
62. 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.
63. Fases de un ciclo de resolución de problemas
Situación
actual
Integración de
soluciones
Desarrollo
técnico
Definición de
problemas