Matriz de Evaluación de Software
Short Description
Download Matriz de Evaluación de Software...
Description
MATRIZ DE EVALUACIÓN DE SOFTWARE ANTECEDENTES
Desde tiempos antiguos diferentes civilizaciones han mencionado en sus textos diversos parámetros de calidad ya sea en la construcción de estructuras selección de semillas o de frutos y herramientas para el uso de los artesanos. Con el transcurrir del tiempo y con la llegada de la revolución Industrial, se comenzó a fabricar todo tipo de productos pero a gran escala, lo que implicaba un mayor control de la calidad. Distintas piezas que se ensamblaban después unas con otras. Todos estos procesos de fabricación en cadena implicaban que toda la cadena de producción se basase en las mismas medidas de control de calidad. La especialización esta creando un mundo de mercado cada vez más competitivo que exige de nuevas mejoras y nuevas referencias de calidad estos a su vez íntimamente relacionados con la toma de decisiones. El auge, en los últimos años, de la técnica de simulación ha traído como consecuencia un incremento de este tipo de software en el mercado. La complejidad y dificultad inherente a la evaluación de cualquier clase de software,aunado al abanico de posibilidades que existen de Software de Simulación de Eventos Discretos (SSED),representan un dilema para las organizaciones a la hora de una selección adecuada. Por lo tanto esta investigación propone desarrollar un modelo de especificaciones de calidad que permite evaluar SSED aplicables al área de logística de suministro, manejo, transporte y distribución de hidrocarburos en la industria petrolera. Como producto de esta investigación se generó el Modelo Sistémico de Calidad (MOSCA ), identificándose 40 criterios y 131 subcriterios que soportan el proceso de evaluación de SSED en esta área particular de aplicación. En este trabajo se describe en detalle el modelo propuesto MOSCA y los resultados obtenidos de su utilización para la evaluación de SSED en una organización que presta servicios de consultoría en el área de logística de la industria petrolera. INTRODUCCIÓN
Tecnologías de la información y su creciente presencia en los diversos ámbitos de la industria (robots, centros de control, etc.) y sus productos finales (medicina, aviación, automóviles, electrodomésticos, telefonía, toma de decisiones etc.) conlleva cada vez más la presencia de software lo cual representan una herramienta que las organizaciones tienen a su disposición. Si bien es cierta la calidad es el conjunto propiedades que son parte del objeto que le confiere capacidad para emplear en su beneficio satisfacer necesidades implícitas o explícitas, no es menos cierto que dicha selección debe tomar en cuenta una serie de factores que permitan adquirir el software mas ajustado a las necesidades de dicha empresa. Evaluar software es una tarea compleja que en ocasiones puede conducir a las organizaciones a tomar decisiones inadecuadas. Según Rojas et al (2001), la utilización de enfoques que tienden a subestimar o ignorar aspectos importantes para la selección y uso de la tecnología que compran, puede conducir a escoger software que no se ajusta a las necesidades o intereses específicos de la organización. Además, destacan lo difícil que es diseñar un conjunto de criterios adecuados para evaluar todas los softwares y medir sus beneficios. Por otra parte, Nikoukaran, Hlupic y Paul (1998) indican que la técnica de simulación ha tomado un auge creciente en un amplio rango de aplicaciones, incrementándose el número de
software de alta calidad con fines específicos que se encuentran en el mercado. Asimismo, Hlupic (1999) afirma que el conjunto de herramientas de Software de Simulación de Eventos Discretos (SSED) disponibles conforman un abanico de posibilidades que representan un dilema para las organizaciones a la hora de una selección adecuada. Nikoukaran et al (1998) explican que en la selección de software de simulación, éstos se evalúan bien sea por sus propios méritos o comparándolos con otros, pero en cualquier caso se requiere una lista de criterios para hacer una selección adecuada. Asimismo, agregan, que una vez identificados, los criterios deben ser estructurados en términos de un modelo de decisión, capaz de maximizar la racionalidad en la transferencia de la tecnología correspondiente. El objetivo de este trabajo es proponer un modelo de especificaciones de calidad que permita evaluar SSED, a ser empleado en logística de suministro, manejo, transporte y distribución de hidrocarburos en la industria petrolera. MODELO SISTÉMICO DE CALIDAD (MOSCA) En la búsqueda de trabajar con un sistema organizado que permita ordenar la información sobre SSED y,que conduzca a obtener una herramienta que sea útil para evaluar este tipo de software, se aplicó el modelo propuesto por Mendoza et al (2002), Modelo Sistémico de Calidad (MOSCA), cuyo propósito es estimar la calidad sistémica dentro de una organización desarrolladora de software.
Las siguientes tablas y matrices están basadas a la discusión de cómo evaluar un software y los criterios propuestos en la página de Matriz de Evaluación , los productos a evaluar son: Software 1 Software 2 El análisis comparativo técnico se hará sobre productos finales; es decir productos ensamblados que vienen en formato de ejecutables. Para lo cual se apreciaran las características de cada software y se estimaran, dándoles ponderación a cada una, verificando y comparando así que programa es mejor en cada aspecto y cuál es el más conveniente al momento de su uso. La siguiente tabla indica lo que se evaluara para ambos software:
matriz_222.JPG
La Matriz que se presenta a continuación presenta la evaluación de los criterios de ambos software comparándolos y dándoles puntuación a cada una. La matriz indica, ponderación máxima, tipos de calidad, características sub-características, descripción de cada característica, si se tuvo evaluación de dicha característica y el puntaje correspondiente y el total que obtuvo cada software:
matriz_descripcion.JPG
Ahora a continuación tenemos la misma matriz evaluativa pero sin la descripción para poder detallar mejor las características y sub-características se evalúan junto con su puntuación correspondiente para ambos software evaluados:
matriz_sin_descripcion.JPG
COMPARACIÓN GRAFICA DE LOS RESULTADOS OBTENIDOS:
A parte de realizar la evaluación numérica como se reflejo en la matriz, la parte gráfica de este ejemplo permitirá visualizar como de manera más fácil las comparaciones realizadas: 1. FUNCIONALIDAD:
G-1.jpg
FIABILIDAD:
G-2.jpg 3. EFICIENCIA:
G-3.jpg
4. PORTABILIDAD:
G-4.jpg
5. CALIDAD DE USO:
G-5.jpg
ANÁLISIS DE RESULTADOS Y CONCLUSIONES: Así pudimos evaluar el Software y el Software, obteniendo que: Software1 según los criterios evaluados obtuvo mayor puntuación, ya que permite la utilización de recursos de manera más efectiva y eficiente, provee más tolerancia a fallas lo que lo indica que su tiempo de recuperación ante amenazas tanto tecnológicas o por parte de usuario es mucho menor al obtenido con respecto a Software2, y gran reemplazabilidad con capacidad de ser utilizado en lugar de otro software en el mismo entorno.
Efectivamente aunque ambos software están dirigidas a la misma función tras evaluarlos se hizo notable la gran diferencia entre las fortalezas y debilidades con respecto a varios aspectos, es decir, que uno de ellos es más competentes para lograr satisfacer tanto a los usuarios como a sus vendedores. ASPECTOS A CONSIDERAR CATEGORÍAS PARA EL SUBMODELO DEL PRODUCTO
Funcionalidad (FUN) Es la capacidad de la herramienta para proveer funciones que cumplan con necesidades específicas implícitas.
Fiabilidad (FIA) Es la capacidad del producto para mantener un nivel especificado de rendimiento cuando es utilizado bajo condiciones especificadas.
Usabilidad (USA) Se refiere a la capacidad del producto para ser atractivo, entendido, aprendido, y utilizado por el usuario bajo condiciones específicas.
Eficiencia (EFI) Es la capacidad del producto para proveer un rendimiento apropiado, relativo a la cantidad de recursos utilizados, bajo condiciones específicas.
Mantenibilidad (MAN) Es la capacidad del software para ser modificado. Las modificaciones pueden incluir correcciones, mejoras o adaptaciones antes cambios del ambiente, requerimientos y especificaciones funcionales.
Portabilidad (POR) Es la capacidad del producto para ser transferido de un ambiente a otro. CATEGORÍAS PARA EL SUBMODELO DEL PROCESO
Cliente-Proveedor (CUS) Está conformada por procesos que impactan directamente al cliente, apoya el desarrollo y la transición del software hasta el cliente, y provee la correcta operación y uso del producto o servicio de software.
Ingeniería (ENG) Consisten en procesos que directamente especifican, implementan o mantienen el producto de software, su relación con el sistema y su documentación.
Soporte (SUP) Consta de procesos que pueden ser empleados por cualquiera de los procesos (incluyendo a los de soporte) en varios niveles del ciclo de vida de adquisición.
Gestión (MAN) Consiste en procesos que contienen prácticas de naturaleza genérica, que pueden ser utilizadas por cualquier personaje que dirija algún tipo de proyecto o proceso, denrto de un ciclo de vida de primario.
Organizacional (ORG) Está relacionado con procesos que establecen las metas comerciales de la organización y desarrollan bienes (valores) de proceso, producto y recurso, que ayudarán a la organización para alcanzar sus metas en los proyectos.
¿QUE ES MANTENIMIENTO PREVENTIVO? El mantenimiento preventivo consiste en la revisión periódica de ciertos aspectos, tanto de hardware como de software en un ordenador. Estos influyen en el desempeño fiable del sistema, en la integridad de los datos almacenados y en un intercambio de información correcta, a la máxima velocidad posible dentro de la configuración óptima del sistema.
MANTENIMIENTO PREVENTIVO HARDWARE En las operaciones de mantenimiento, el mantenimiento preventivo es el destinado a la conservación de equipos o instalaciones mediante realización de revisión y reparación que garanticen su buen funcionamiento y fiabilidad. El mantenimiento preventivo se realiza en equipos en condiciones de funcionamiento, Las tareas de mantenimiento preventivo incluyen acciones como cambio de piezas desgastadas, cambios de aceites y lubricantes, etc. El mantenimiento preventivo debe evitar los fallos en el equipo antes de que estos ocurran.
Kit de herramientas *Desarmador *Pulcera antiestática *Espuma o limpiador para computadora *Franela *Soplador *Estopa *Aire comprimido o soplador *isopos de algodon
Medidas de Seguridad e Higiene Para un Mantenimiento Preventivo *Usar pulsera antiestática que este conectada al chasis en todo momento. * Herramientas limpias y totalmente libres de polvo. *No hacerca demasiado el aire comprimido, usarlo en momentos pausados pues si se usa prolongadamente se puede dañar el equipo. *No tocar componentes interno inesesariamente.
PASOS PARA UN MANTENIMIENTO PREVENTIVO HARWARE
1.-Desconectar el equipo de la corriente electrica y despues el monitor,bocinas, ratón,teclado y unidades conectadas al equipo. 2.-Destornillar el chasis.
chasis.
3.-Ponerse la pulsera antiestatica y conectarla al
4.-Desconectar los componentes necesarios para una mejor limpieza: fuente de poder, ventilador,etc. 5.- Soplar los ventiladores y al hacerlo poner un desarmador en los ventiladores para que cuando empiece a soplar no den vuelta.
6.-Empesar a soplar muy bien por dentro y por fuera pero siempre y cuando no pegemos tanto las mangera a la tarjeta madre por que podemos dañar algo. 7.-Conectar los componentes que se hayan quitado asegurando muy bien los tornillos para que ningun componente se mueva. 8.- Volver a armar CPU debes de seguridad muy bien los tornillos. 9.- Limpiar gabinete por fuera con la espuma o en liquido y la estopa.
10.- Limpiar el monitorcon mucho cuidado, el teclado con la ayuda de isopos y raton con el soplador muy bien y después limpiarlo con la estopa y la espuma o líquido (el raton no necesita soplar). 11.-Cuando tengas toda limpio hasta la mesa donde se va a colocar puedes empezar a conectar todo de nuevo con cuidado y de manera correcta. (Al final conectar la corriente electrica).
MANTENIMIENTO PREVENTIVO SOFTWARE
El mantenimiento preventivo de software es el proceso por el cual se mejora y optimiza el software que se ha instalado, este mantenimiento se realiza para la prevención de posibles problemas que puedan llegar a surgir a medida que se utiliza el computador. La revisión de instalación por SETUP: Consiste en una revisión que se realiza ingresando directamente al menú que se encuentra en la setup detectando las unidades conectadas a la computadora. Mediante este se puede detectar alguna falla en conectores.
Depuración de archivos: Este proceso consiste en la eliminación de los archivos generados por las aplicaciones instaladas en la computadora y que ya no se utilizan.
La desfragmentacion de disco duro: la desfragmentacion es el proceso en el cual se acomodan los archivos de un disco, este se realiza cuando el disco se fragmenta, esto sucede cuando el sistema ha escrito diferentes versiones de los archivos, esto es, cuando un archivo después de ser modificado no ocupa direcciones de memoria contiguas en el disco duro.
La eliminación de archivos TMP (temporales): Este proceso consiste en la eliminación de los archivos generados por las aplicaciones instaladas en la computadora y que ya no se utilizan. Liberación de espacio en el disco duro: El liberador de espacio busca en la unidad y enumera los archivos temporales, archivos de cache de Internet y archivos de programa innecesarios que puede eliminar de forma segura.
Ejecución de Antivirus: Este se utiliza para realizar una análisis del sistema en busca de algún virus para prevenir que el equipo se infecte o bien para eliminar alguno ya adquirido. Aunque hoy en dia, la eliminación de un virus se convierte en una tarea titanica ya que estos han ido evolucionando hasta ser casi indetectables.
Detección de errores: Consiste en una revisión que se realiza ingresando directamente al menú que se encuentra en la setup detectando las unidades conectadas ala computadora. Mediante este se puede detectar alguna falla enconectores.
Papelera de reciclaje: La papelera de reciclaje no es más que una carpeta más, creada por Windows para almacenar los archivos que el usuario desea eliminar del computador, solo que el usuario en ciertas veces cambia de parecer con respecto a borrar dicha información, entonces ahí esta otra función de la papelera de reciclaje. Como parte de un mantenimiento preventivo la papelería de reciclaje debe estar vacía, ya que almacena datos que pueden perjudicar el equipo.
PRACTICAS HECHAS EN CLASE:
MANTENIMIENTO PREVENTIVO HARDWARE
LIMPIANDO EL TECLADO
DURANTE EL MANTENIMIENTO
MANTENIMIENTO PREVENTIVO SOFTWARE:
Procesamiento manual de datos Aunque el uso generalizado del término procesamiento de datos sólo data de los años 1950 funciones de procesamiento de datos se ha realizado manualmente por milenios. Por ejemplo contabilidad involucra funciones como el envió de las transacciones y la producción de informes como el balance y el estado de flujos de efectivo . Métodos completamente manual fueron aumentados por la aplicación de las calculadoras mecánicas o electrónicas . Una persona cuyo trabajo consistía en realizar los cálculos manualmente o utilizando una calculadora se llama un "computador" .
El Censo de los Estados Unidos 1850 fue el primero en recopilar datos individuales en vez de los hogares. Una serie de preguntas puede ser respondida por hacer una marca en la casilla correspondiente en el formulario. Desde 1850 hasta 1880 la Oficina del Censo utiliza un sistema de cómputo, el
cual, debido a la cada vez mayor número de combinaciones de clasificaciones requeridas, se hizo cada vez más complejo. Sólo un número limitado de combinaciones puede ser registrada en una cuenta, por lo que era necesario manejar los programas de 5 o 6 veces, para tantos recuentos independientes". "Se tardó más de 7 años para publicar los resultados del censo de 1880" utilizando métodos de procesamiento manual.
Procesamiento automático de datos El término procesamiento automático de datos se refiere a las operaciones realizadas por medio de equipos de registros unitario, tales como el sistema de tarjetas perforadas creada por Herman Hollerith basado en la lógica de Boole, utilizado para realizar el Censo de los Estados Unidos 1890, la Oficina del Censo fue capaz de completar la tabulación de la mayoría de los datos del censo de 1890 de 2 a 3 años, en comparación con 7 a 8 años para el censo de 1880. También se estima que el uso del sistema de Herman Hollerith ahorró unos $5 millones en costos de procesamiento" (en 1890).
Procesamiento electrónico de datos Procesamiento de datos computarizada, o el procesamiento electrónico de datos representa la evolución ulterior, con el ordenador tomando el lugar de varias piezas independientes de equipos. La Oficina del Censo hizo por primera vez el uso limitado de equipos electrónicos para el Censo de Estados Unidos de 1950, con el uso de la UNIVAC I .
La evolución posterior El término procesamiento de datos a largo plazo ha sido subsumida bajo el término más nuevo y general que es tecnología de la información (IT). El procesamiento de datos ha adquirido una connotación negativa, lo que sugiere el uso de las tecnologías más antiguas. A modo de ejemplo, en 1996 la Asociación de Gestión de Proceso de Datos ("DPMA") cambió su nombre por el de Asociación de Profesionales de Tecnología de la Información . Sin embargo, los términos son casi sinónimos.
DATO, PROCESO E INFORMACIÓN DATO, PROCESO E INFORMACIÓN Dato e información son dos términos que suelen confundirse. Se consideran datos a toda entrada de información a una computadora. Estos datos pueden ser administrativos, científicos, co-merciales, etc. son elementos primitivos, de los cuales a través del procesamiento se obtiene la in-formación. La computadora se utiliza para procesar en forma automática y a gran velocidad esos datos. Como resultado del procesamiento de esos datos se obtiene la información deseada, la cual será útil en la toma de decisiones.
DATO PROCESO INFORMACIÓN
SISTEMA Un sistema es un conjunto de componentes relacionados que interactúan para realizar una tarea. Un sistema de informática está compuesto por el Hardware (CPU, dispositivos periféricos) y el Software (sistema operativo y los programas). El software de un sistema de información está formado por los datos, los programas de ingreso, actualización e informe de resultados y los procedimientos manuales y por máquina. ESTRUCTURA DE UNA COMPUTADORA Una PC es una computadora personal, originalmente diseñada para servir a un sólo usua-rio. Sale al mercado en 1981 y va evolucionando en capacidad y velocidad, además su costo se va reduciendo. Existen diferentes configuraciones para adecuarse a la múltiples necesidades de los usuarios. La informática es la ciencia que estudia el tratamiento, elaboración , transmisión y utilización de la información. Es una ciencia porque constituye un conjunto de conocimientos de validez universal y porque utiliza el método científico para el logro de sus objetivos. Se denomina HARDWARE (ferretería) a todos los componentes electrónicos y mecánicos, es decir físicos de una computadora. Se denomina SOFTWARE al conjunto de programas o procedimientos que determinan las acciones de la máquina, es todo lo concerniente a la programación. Las computadoras están estructuradas según un modelo básico de funcionamiento que des-cribe la interacción que se realiza entre los elementos que la componen. Este modelo es:
MONITOR
MOUSE CPU IMPRESORA
SCANNER TECLADO MÓDEM
UNIDADES Las unidades son las partes físicas que componen nuestro ordenador, y se clasifican en unidades de entrada–salida (E/S) denominadas periféricos, y la unidad de proceso (UCP o CPU). Además de las unidades encontramos los soportes, que son elementos externos al ordenador, no imprescindibles para su funcionamiento, pero necesarios para el almacenamiento de la información. Unidades E/S Las unidades de entrada–salida son aquellos elementos del hardware que fueron diseñados para el ingreso y egreso de los datos. Existen unidades cuya tarea específica es el ingreso de da-tos, otras que solo sirven para el egreso de la información, y hay un tercer grupo que puede cumplir con ambas funciones. Teclado Mouse o Ratón, TrackBall, Cat Scanner Entrada Lectora de barras Lápiz óptico Lectora de CD-ROM (DVD) Micrófono Monitor Sistema de vídeo Unidades de Placa de vídeo Impresora Entrada–Salida Salida Plotter Parlante Placa de audio Sistema de audio Parlantes Modem Disqueteras E/S Grabadora/Reproductora de CD Integer Pantallas táctiles Soportes de la información Los soportes de la información son medios físicos de almacenamiento de información. Ellos
pueden ser clasificados como: Papel: es el soporte más antiguo de información que aún sigue en uso. Listados Magnéticos: son aquellos medios que están basados en las propiedades magnéticas para el registro de la información. La mayoría de los mismos son usados como elemento de almacenamiento masivo. • Cintas de carrete abierto de 1/2" de ancho. • Cintas de vídeo (casete denominado super 8) • Disquetes • Cintas en tarjetas plásticas Medios Ópticos: están basados en la capacidad de poder o no reflejar la luz emitida por un determinado elemento (emisor) • CD-ROM. • DVD (Digital Vídeo Disk o Digital Versatil Disk El Disco Rígido es difícil de catalogar ya que es un sistema en sí mismo, y posee una unidad de entrada/salida que son las cabezas lectoras-grabadoras y un soporte que son los discos propiamente dicho. Alguno de ellos vienen con una pequeña pero completa uni-dad de proceso. LA UNIDAD CENTRAL DE PROCESO Y EL PROCESADOR La unidad central de proceso UCP es el verdadero cerebro de la computadora; su misión consiste en coordinar y controlar o realizar todas Las operaciones del sistema. Se compone de elemen-tos cuya naturaleza es exclusivamente electrónica (circuitos). Sus partes principales son Las siguientes: • El Procesador (P). Que a su vez se compone de: • La unidad de control (UC). • La unidad aritmético–lógica (UAL). • La Memoria Central (MC). La unidad central de proceso también incorpora un cierto número de registros rápidos (pequeñas unidades de memoria) de propósito especial, que son utilizados internamente por la misma. Una aproximación a diseño interno de un microprocesador es el siguiente
Figura 1
Como vemos en el esquema 1, la unidad de control y la unidad aritmético–lógica constituyen lo que se ha venido a denominar el procesador central del sistema; este elemento es parte de la unidad central de proceso encargada del control y ejecución de las operaciones del sistema. Estos elementos en un ordenador personal se encuentran integrados en un único chip llamado micropro-cesador. Las funciones principales de la UCP de un ordenador son:
• Ejecutar las instrucciones de los programas almacenados en la memoria del sistema. • Controlar la transferencia entre la UCP y la memoria o las unidades de E/S • Responder a las peticiones de servicio procedente de los periféricos. Todo programa tiene como objetivo realizar diferentes funciones o aplicaciones, solo limitadas por la capacidad e imaginación del programador. Para que un programa sea ejecutado el mismo se debe hallar en determinadas posiciones de memoria y escrito en un lenguaje que la UCP pueda entender. La UCP lo único que comprende es lenguaje binario. La UCP lee en forma ordenada la lista de instrucciones, luego las interpreta, y posteriormente controla su ejecución de cada una de ellas. Las ejecuciones se realizan en forma consecutiva una tras otra. Para ejecutar cada instrucción la UCP realiza la siguiente serie de pasos: • Lee de la memoria la instrucción que hay que ejecutar y la guarda en un regis-tro interior de la UCP. • Identifica la instrucción que acaba de leer • Comprueba si la instrucción necesita utilizar nuevos de memoria, si fuera así, determina donde debe ir a buscarlos. • Busca los datos en la memoria y los trae en UCP. • Ejecuta la instrucción propiamente dicha. • El resultado de la misma puede ser que se almacene o invoque la necesidad de tener que comunicarse con la memoria o con otro elemento externo a la propia UCP. • Vuelve al primer paso para empezar una nueva instrucción. La anterior es una lista simplificada de los pasos que ejecuta el microprocesador. La ejecución de cada instrucción implica el movimiento de datos, como estos pasos deben ser se deben realizar en forma secuencial y ordenada, para lo cual la UCP siguen las señales dadas por un reloj. El reloj es un elemento simple pero de gran importancia como se verá luego. Para una mejor compresión del funcionamiento de la UCP, la misma se puede dividir en dos unidades la uni-dad de control y la unidad aritmético-lógica. . Unidad de control (UC) La unidad de control (UC) es el centro nervioso de la computadora; desde ella se controla y gobiernan todas las operaciones (búsqueda, decodificación, y ejecución de la instrucción). Para realizar su función, consta de los siguientes elementos: Registro de contador de programas (CP) Registro de Instrucciones (RI) Decodificador (D)
Reloj (R) Generador de Señales o Secuenciador (S) Registro de contador de programas (CP). También denominado registro de control de Secuencia (RCS), contiene permanentemente la dirección de memoria de la próxima instrucción a ejecutar. Si la instrucción que se está ejecutando en un instante determinado es de salto o de ruptu-ra de secuencia, el RCS tomará la dirección de la instrucción que se tenga que ejecutar a continua-ción; esta dirección la extraerá de la propia instrucción en curso. Como ya se dijo el primer paso para la ejecución de una instrucción, consiste en ir a buscarla en memoria, el CP indica cual es la dirección de memoria donde se halla esa instrucción. Una vez obtenida y antes de continuar con los siguientes pasos una señal de control incrementa el CP en una unidad, por lo cual los programas deben estar escritos (cargados) en posiciones consecutivas de memoria. El CP pasa la dirección al Registro de Direcciones Registro de Direcciones (RD). Contiene la dirección de memoria donde se encuentra la próxi-ma instrucción y esta comunicado con el Bus de Direcciones. El tamaño de este registro determina el tamaño de la memoria que puede direccionar.( Si es de 32 bits se puede direccionar 232=4.294.967296 (4 GB posiciones de memoria). Con la dirección de memoria, se transfiere a través el Bus de Datos desde la memoria central al Registro de Datos en la UC la instrucción correspondiente. Esta transferencia se realiza mediante señales de control. Una vez que la instrucción se encuentra en la UCP, el código de la instrucción pasa al registro de instrucciones. Registro de Instrucciones (RI). Contiene la instrucción que se está ejecutando en cada momento. Esta instrucción llevará consigo el código de operación (CO), acción de que se trata, y en su caso los operandos o las direcciones de memoria de los mismos. Pasa el CO al decodificador. Decodificador (D). Se encarga de extraer y analizar el código de operación de la instrucción en curso (que está en el RI) y dar las señales necesarias al resto de los elementos para su ejecu-ción por medio del Generador de Señales. Generador de Señales(GS). En este dispositivo se generan órdenes muy elementales (microórdenes) que, sincronizadas por los impulsos del reloj, hacen que se vaya ejecutando poco a poco la instrucción que está cargada en el RI. Reloj (R). Proporcionar una sucesión de impulsos eléctricos a intervalos constantes (frecuen-cia constante), que marcan los instantes en que han de comenzar los distintos pasos de que consta cada instrucción.
Figura 2
Unidad aritmético–lógica (UAL)
Esta unidad es la encargada de realizar las operaciones elementales de tipo aritmético (generalmente sumas o restas) y de tipo lógico (generalmente comparaciones). Para realizar su función, consta de los siguientes elementos: Banco de registros (BR). Circuitos operadores (CIROP). Registro de resultado (RR). Señalizadores de estado (SE). Banco de registros (BR). Está constituido por 8, 16 ó 32 registros de tipo general que sirven para situar dates antes de cada operación, para almacenar datos intermedios en las operaciones y para operaciones internas del procesador. Circuitos operadores (CIROP). Compuesto de uno o varios circuitos electrónicos que reali-zan operaciones elementales aritméticas y lógicas (sumador, complementador, desplazador, etc). Registro de resultado (RR). Se trata de un registro especial, en el que se depositan los resultados que producen los circuitos operadores. Señalizadores de estado (SE). Registro con un conjunto de biestables en los que se deja constancia de algunas condiciones que se dieron en la última operación realizada.
LA MEMORIA CENTRAL (MC) Es la parte de la unidad central de proceso de una computadora donde están almacenadas las instrucciones y los datos necesarios para que un determinado proceso pueda ser realizado. La memoria central está constituida por una multitud de celdas o posiciones de memoria, numeradas de forma consecutiva, capaces de retener, mientras la computadora esté conectada, la información necesaria. Por otra parte, es una memoria de acceso directo, es decir, puede accederse a una de sus celdas conociendo su posición. Para esta memoria el tiempo de acceso es más corto que para Las memorias auxiliares, por tanto, los datos que manejan los procesos deben residir en ella en el mo-mento de su ejecución. Es importante no confundir los términos celda o posición de memoria con el de palabra de computadora, ya que esta última es el conjunto de posiciones de memoria que pueden introducirse o extraerse de la memoria de una solo vez (simultáneamente). La memoria central tiene asociados dos registros para la realización de operaciones de lectura o escritura, y un dispositivo encargado de seleccionar una celda de memoria en coda operación de acceso sobre la misma:
Registro de dirección de memoria (RDM)). Registro de intercambio de memoria (RIM). Selector de memoria (SM). • Registro de dirección de memoria (RDM). Contiene la dirección de memoria donde se encuentran o va a ser almacenada la información (instrucción o dato), tanto si se trata de una lectura como de una escritura de o en memoria central, respectivamente. • Registro de intercambio de memoria (RIM). Si se trata de una operación de lectura, el RIM es quien recibe el dato de la memoria señalado por el RDM, para su posterior envío a uno de Los re-gistros de la UAL. Si se trata de una operación de escritura, la información a grabar tiene que ester en el RIM, para que desde él se transfiera a la posición de memoria indicada por el RDM. • Selector de memoria (SM). Es el dispositivo que, tras una orden de lectura o escritura, conecta la celda de memoria cuya dirección figure en el RDM con el RIM, posibilitando la transferencia de Los dates en un sentido o en otro. La memoria central suele ser direccionable por octeto o byte; por tanto, una celda o posición de memoria contiene 8 bits. Una de Las características fundamentales de una computadora es su ca-pacidad de memoria interna (memoria central), la cual se mide en un múltiplo del byte denominado Kilobyte, Kbyte, Kb o simplemente K, y que equivale a 1 024 bytes (1 024 = 2'°). Otro múltiplo utili-zado ampliamente en Los últimos tiempos es el Megabyte o simplemente Mega, que equivale a 1 024 * 1 024 Bytes; es decir, a 1 048 576 bytes.
Bus de Direcciones
Bus de Datos Registro de de dirección memoria Registro de de intercambio memoria Bus de
Control
Selector
Memoria Central
0001
0010
0110
1011
TIPOS DE INSTRUCCIONES Nos referiremos en este apartado a instrucciones del lenguaje máquina. Son aquellas que puede ejecutar directamente el hardware de la computadora. Las instrucciones máquina se pueden clasificar por la función que desempeñan en: • Instrucciones de transferencia de datos. • Instrucciones de ruptura de secuencia. • Instrucciones aritméticas y lógicas. • Instrucciones declarativas. • Etcétera. O por su contenido, teniendo en cuenta que todas ellas tienen en primer lugar lo que se lla-ma código de operación (CO), que indica qué operación se debe realizar por el procesador, y aquellas en Las que su misión sea hacer alguna operación con determinados dates; llevarán, ade-más, implícita o explícitamente dichos dates, que denominaremos operandos. Instrucciones de tres operandos También se denominan instrucción es de tres direcciones. En primer lugar constan de un código de operación al que siguen tres operandos, de Los cuales, Los dos primeros son Los operandos y el tercero es la dirección donde se depositará el resultado. Este formato de instrucción es el más cómodo de trabajar, pero es el que precise mayor número de bits. Esquema siguiente. Código de operación Operando1 Operando2 Operando3 Instrucciones de dos operandos
Constan de un código de operación, seguido de dos operandos, de Los cuales uno de ellos actúa además como receptor del resultado. También se denominan instrucciones de dos direccio-nes. En el siguiente esquema se ve la Instrucción de dos operandos. Código de operación Operando 1 Operando2 Instrucciones de un operando También denominadas instrucciones de una dirección. Son Las que se utilizan generalmente en máquinas cuya arquitectura funciona con filosofía de acumulador. El acumulador es un registro especial, en el que se encuentra uno de Los operandos para es-te tipo de instrucciones y donde además se guarda el resultado. En la instrucción se encuentra el código de operación seguido del segundo operando Código de operación Operando 1 Instrucciones sin operandos También denominadas instrucciones sin ninguna dirección. Este tipo de instrucciones se utilizan generalmente en computadoras cuya arquitectura tiene filosofía de pila. Una pila está formada por dates almacenados en orden consecutivo en la memoria, existiendo un registro especial denominado puntero de pila que nos indica la dirección del último dato introdu-cido en ella. Cuando un dato es sacado de ella, el puntero de pila decrece, apuntando al dato que está a continuación en la pila hacia el fondo de la misma y que será aquel dato que se introdujo en primer lugar. Cuando se trata de introducir un dato en ella el puntero toma la dirección de memoria siguiente en orden ascendente y se introduce en dicha dirección. Estas instrucciones sólo llevan código de operación, de tal forma que cuando se trata de una operación, se sacan Los operandos de la pila (previamente introducidos) y el resultado se introduce en la misma. código de operación Una computadora en su lenguaje máquina puede tener instrucciones de las anteriores, según sea su arquitectura. METODOS DE DIRECCIONAMIENTO Se habla de direccionamiento en una instrucción al modo de indicar en la misma el lugar don-de está situado el dato que va a intervenir en ella. Los direccionamientos utilizados en Las instrucciones son Los siguientes: • Direccionamiento inmediato: en él, el dato a utilizar se halla en la propia instrucción, en el acumulador o en la pila. • Direccionamiento directo: en este caso la instrucción contiene la dirección de me-moria central donde se encuentra el dato. • Direccionamiento indirecto: la instrucción contiene la dirección de memoria central donde se encuentra la dirección de memoria que contiene el dato.
• Direccionamiento indexado: en el la dirección de memoria central donde se encuen-tra el dato, se obtiene sumándole a la dirección que lleva la ins-trucción una cantidad, que se encuentra en un registro especial llamado índice.
LENGUAJES DE PROGRAMACIÓN Para poder desarrollar las capacidades del hardware, se ha necesitado la creación de códigos por medio d los cuales hacer que el ordenado ejecute una serie de órdenes a este conjunto de códigos se denomina lenguaje. Un lenguaje de programación es una notación para escribir programas, a través de los cuales podemos comunicarnos con el hardware y dar así las órdenes adecuadas para la realización de un determinado proceso. Un lenguaje viene definido por una gramática o conjunto de reglas que se aplican a un alfabeto constituido por el conjunto de símbolos utilizados. Los distintos niveles en que se clasifican los lenguajes, no son índice de la capacidad del lenguaje. Cuando se habla de lenguajes de bajo nivel implica indicar que el lenguaje es fácil de ser procesado por el microprocesador, ocupa poca lugar en memoria y de muy difícil programación para el hombre, cuando hablamos de alto nivel nos indica que el mismo programa es de fácil programar por un programador pero ocupa mucho lugar de memoria y es de difícil acceso al hardware, de tal forma que según utilicemos un nivel u otro así tendremos que utilizar un determinado lenguaje liga-do a sus correspondientes traductores. El siguiente esquema representan la evolución de los distintos lenguajes. Periodo Influencias Lenguajes 1950 - 1955 Ordenadores primitivos Lenguajes ensamblador. Lenguajes experimentales de alto nivel 1956 - 1960 Ordenadores pequeños, caros y lentos Cintas magnéticas. Compiladores e intérpretes Optimización del código. FORTRAN ALGOL 58 y 60 COBOL LISP 1961 - 1965 Ordenadores grandes y caros Discos magnéticos Sistemas operativos Lenguajes de propósito general. FORTRAN IV COBOL 61 Extendido ALGOL 60 Revisado
APL (como notación sólo) 1966 - 1970 Ordenadores de diferentes tamaños, velocidades, y costes. Sistemas caros de almacenamiento masivo de datos. Sistemas operativos multitarea e inter-activos. Compiladores con optimización. Len-guajes estándar, flexibles y generales. PL/I FORTRAN 66 (estándar) COBOL 65 (estándar) ALGOL 68 SIMULA 67 BASI C APL/360 1971 - 1975 Micro ordenadores. Sistemas pequeños y baratos de alma-cenamiento masivo de datos. Progra-mación estructurada. Ingeniería del software. Lenguajes sencillos. PASCAL COBOL 74 PL/I 1976 - 1980 Ordenadores baratos y potentes. Sis-temas distribuidos. Programación interactiva. Abstracción de datos. Programación con fiabifidad y fácil man-tenimiento. ADA FORTRAN 77 PROLOG C 1980 Ordenadores más baratos y potentes. Mayor abstracción de datos. Menor costo de memorias Programación Orientada o Objetos SmallTalk OOCOBOL C++ Ojective C Object Pascal (Delphi) Visual Basic Lenguajes de programación se clasifican:
• Bajo nivel (Lenguaje máquina) • Intermedios (Lenguaje ensamblador), C • Alto nivel Gestión Científicos Propósito general y específicos Lenguaje máquina El lenguaje máquina es el único que entiende directamente la computadora, utiliza el alfabeto binario que consta de los dos únicos símbolos 0 y 1, denominados bits (abreviatura inglesa de dígi-tos binarios). Fue el primer lenguaje utilizado en la programación de computadoras, pero dejó de utilizarse por su dificultad y complicación, siendo sustituido por otros lenguajes más fáciles de aprender y utilizar, que además reducen la posibilidad de cometer errores. EJEMPLO 0000 0001 1010 0001 01 A1 1000 1001 1001 1010 89 9A 0011 1010 1001 1100 3A 9C 0111 0100 0111 0000 74 70 1110 1001 0010 0000 E9 20 Lenguaje ensamblador El lenguaje ensamblador es el primer intento de sustituir el lenguaje máquina por otro más similar a los utilizados por las personas. En este lenguaje cada instrucción equivale a una instrucción en lenguaje máquina, utilizando para su escritura palabras nemotécnicas en lugar de cadenas de bits. EJEMPLO INICIO: ADD B, 1 MOV A, E CMP A, B JE FIN JMP INICIO FIN : END Este lenguaje presenta la mayoría de los inconvenientes del lenguaje máquina: • Cada modelo de computadora tiene un lenguaje ensamblador propio diferente del de los demás, por lo cual un programa sólo puede utilizarse en la máquina para la cual se programó. • El programador ha de conocer perfectamente el hardware del equipo, ya que maneja directamente las posiciones de memoria, registros del procesador y demás elementos físicos. • Todas las instrucciones son elementales, es decir, en el programa se deben describir con el máximo detalle todas las operaciones que se han de llevar a cabo en la má-quina para la realización de cualquier proceso. Por otro lado, tanto el lenguaje máquina como el ensamblador gozan de la ventaja de mínima
ocupación de memoria y mínimo tiempo de ejecución en comparación con el resultado de la compi-lación del programa equivalente escrito en otros lenguajes. Lenguajes de alto nivel Los lenguajes de alto nivel, también denominados lenguajes evolucionados, surgen con posterioridad a los anteriores, con los siguientes objetivos, entre otros: • Lograr independencia de la máquina, pudiendo utilizar un mismo programa en dife-rentes equipos con la única condición de disponer de un programa traductor o compi-lador, que lo suministra el fabricante, para obtener el programa ejecutable en lengua-je binario de la máquina que se trate. Además, no se necesita conocer el hardware específico de dicha máquina. • Aproximarse al lenguaje natural, para que el programa se pueda escribir y leer de una forma más sencilla, eliminando muchas de las posibilidades de cometer errores que se daban en el lenguaje máquina, ya que se utilizan palabras (en inglés) en lugar de cadenas de símbolos sin ningún significado aparente. • Incluir rutinas de uso frecuente como son las de entrada/salida, funciones matemáti-cas, manejo de tablas, etc, que figuran en una especie de librería del lenguaje, de tal manera que se pueden utilizar siempre que se quieran sin necesidad de programarlas cada vez. Se puede decir que el principal problema que presentan los lenguajes de alto nivel es la gran cantidad de ellos que existen actualmente en uso (FORTRAN, LISP, ALGOL, COBOL, APL, SNO-BOL, PROLOG, MODULA2, ALGOL68, PASCAL, SIMULA67, ADA, C++, LIS, EUCLID, BASIC), además de las diferentes versiones o dialectos que se han desarrollado de algunos de ellos. FORTRAN Abreviatura de Fórmula Translator (traductor de fórmulas), fue definido alrededor del año 1955 en los Estados Unidos por la compañía IBM. Es el más antiguo de los lenguajes de alto nivel, pues antes de su aparición todos los programas se escribían en lenguaje ensamblador o en lengua-je máquina. Es un lenguaje especializado en aplicaciones técnicas y científicas, caracterizándose por su potencia en los cálculos matemáticos, pero estando limitado en las aplicaciones de gestión, manejo de archivos, tratamiento de cadenas de caracteres y edición de informes. A lo largo de su existencia han aparecido diferentes versiones, entre las que destaca la reali-zada en 1966 por ANSI (American National Standard Institute) en la que se definieron nuevas re-glas del lenguaje y se efectuó la independencia del mismo con respecto a la máquina, es decir, comenzó la transportabilidad del lenguaje. Esta versión se denominó FORTRAN IV o FORTRAN 66. En 1977, apareció una nueva versión más evolucionada que se llamó FORTRAN V o FORTRAN 77, esta versión está reflejada en el documento «ANSI X3.9-1978: Programming Language FORTRAN» y define dos niveles del lenguaje denominados FORTRAN 77 completo y
FORTRAN 77 básico, siendo el segundo un subconjunto del primero. Esta última versión incluye además instrucciones para el manejo de cadenas de caracteres y de archivos, así como otras para la utilización de técni-cas de programación estructurada. Estas características hacen que el lenguaje también sea válido para determinadas aplicaciones de gestión. COBOL Es el lenguaje más usado en las aplicaciones de gestión, creado en 1960 por un comité denominado CODASYL, patrocinado por el Departamento de Defensa de los Estados Unidos, a fin de disponer de un lenguaje universal para aplicaciones comerciales como expresa su nombre (COm-mon Business Oriented Language). Entre sus características se pueden citar su parecido al lenguaje natural (inglés), es auto- documentado y tiene gran capacidad en el manejo de archivos, así como en la edición de informes escritos. Entre sus inconvenientes están sus rígidas reglas de formatos de escritura, la necesidad de describir todos los elementos al máximo detalle, la extensión excesiva en sus sentencias e inclu-so duplicación en algunos casos, la inexistencia de funciones matemáticas y, por último, su no ade-cuación a las técnicas de programación estructurada. a PL/1 Fue creado a comienzos de los años 60 por IBM para ser usado en sus equipos del sistema 360. El PL/I (Programming Language 1) se desarrolló inspirándose en los lenguajes ALGOL, CO-BOL y FORTRAN, tomando las mejores características de los anteriores y añadiendo algunas nuevas, con el objetivo de obtener un lenguaje lo más general posible, útil para aplicaciones técnicocientíficas, comerciales, de proceso de textos, de bases de datos y de programación de sistemas. Entre sus novedades está su gran libertad en el formato de escritura de los programas, sopor-tar la programación estructurada y el diseño modular. No obstante, no ha superado a sus progenitores en sus aplicaciones específicas debido en parte a su amplitud y por ello, al tamaño de su compi-lador, que hasta ahora sólo se podía instalar en grandes equipos. BASIC Fue diseñado por los profesores John G. Kemeny y Thomas E. Kurtz del Dartmouth College en 1965 con el objetivo principal de conseguir un lenguaje fácil de aprender para los principiantes, como se indica en su nombre Benginner’s All-purpose Symbolic Instruction Code (Código de ins-trucción simbólico de propósito general para principiantes). Entre sus principales novedades están las de ser un lenguaje interpretado y de uso conversacional, útil para aplicaciones técnicas y de gestión. Estas características, unidas a la popularización de las microcomputadoras y computadoras personales, ha hecho que su utilización se haya exten-dido enormemente, a la vez que ha propiciado el surgimiento de una gran diversidad de versiones que extienden y adaptan a necesidades particulares el lenguaje original. Existen multitud de intér-pretes y compiladores del lenguaje.
PASCAL Fue creado por el matemático suizo Niklaus Wirth en 1970, basándose en el lenguaje AL-GOL, en cuyo diseño había participado en los años 60. Su nombre proviene del filósofo y matemáti-co francés del siglo xvii Blaise Pascal, que inventó la primera máquina de tipo mecánico para sumar. Aunque en principio la idea del diseñador era proporcionar un lenguaje adecuado para la enseñanza de los conceptos y técnicas de programación, con el tiempo ha llegado a ser un lenguaje ampliamente utilizado en todo tipo de aplicaciones, poseyendo grandes facilidades para la progra-mación de sistemas y diseño de gráficos. Aporta los conceptos de tipo de datos, programación estructurada y diseño descendente, en-tre otros, además de haberse convertido en predecesor de otros lenguajes más modernos, como MODULA-2 y ADA. C Fue creado en 1972 por Dennis Ritchie a partir del trabajo elaborado por su colega de los laboratorios Bell Telephone, Ken Thompson. Estos habían diseñado con anterioridad el sistema ope-rativo UNIX, y su intención al desarrollar el lenguaje C fue la de conseguir un lenguaje idóneo para la programación de sistemas que fuese independiente de la máquina con el cual escribir su sistema UNIX. Aunque fue diseñado inicialmente para la programación de sistemas, posteriormente su uso se ha extendido a aplicaciones técnico-científicas, de bases de datos, de proceso de textos, etc. La utilización óptima de este lenguaje se consigue dentro de su entorno natural, que es el sistema operativo UNIX. Entre sus características destaca el uso de programación estructurada para resolver tareas de bajo nivel, así como la amplia librería de rutinas de que dispone. ADA Es el último intento de obtener un único lenguaje para todo tipo de aplicaciones e incluye los últimos avances en técnicas de programación. Su diseño fue encargado por el Departamento de Defensa de los Estados Unidos a la empresa Honeywell-Bull después de una selección rigurosa entre varias propuestas realizadas sobre una serie de requerimientos del lenguaje y de haber eva-luado negativamente veintitrés lenguajes existentes. De éstos se seleccionaron como base para la creación del nuevo lenguaje el PASCAL, el ALGOL y el PL/I. La estandarización del lenguaje se publicó en 1983 con el nombre de ADA en honor de la considerada primera programadora de la historia Augusta Ada Byron, condesa de Lovelace. Entre las características del lenguaje se encuentran la compilación separada, los tipos abstractos de datos, programación concurrente, programación estructurada, libertad de formatos de escritura, etc., presentando como principal inconveniente su gran extensión. Interpretes y Compiladores
Existen dos tipos principales de traductores de los lenguajes de programación de alto nivel: • Compilador, que analiza el programa fuente y lo traduce a otro equivalente escrito en otro lenguaje (por ejemplo, en el lenguaje de la máquina). Su acción equivale a la de un traductor humano, que toma un libro y produce otro equivalente escrito en otra len-gua. • Intérprete, que analiza el programa fuente y lo ejecuta directamente, sin generar nin-gún código equivalente. Su acción equivale a la de un intérprete humano, que tradu-ce las frases que oye sobre la marcha, sin producir ningún escrito permanente. Intér-pretes y compiladores tienen diversas ventajas e inconvenientes que los hacen com-plementarios: • Un intérprete facilita la búsqueda de errores, pues la ejecución de un programa pue-de interrumpirse en cualquier momento para estudiar el entorno (valores de las varia-bles, etc.). Además, el programa puede modificarse sobre la marcha, sin necesidad de volver a comenzar la ejecución. • Un compilador suele generar programas más rápidos y eficientes, ya que el análisis del lenguaje fuente se hace una sola vez, durante la generación del programa equiva-lente. En cambio, un intérprete se ve obligado generalmente a analizar cada instruc-ción tantas veces como se ejecute (incluso miles o millones de veces). • Un intérprete permite utilizar funciones y operadores más potentes, como por ejemplo ejecutar código contenido en una variable en forma de cadenas de caracteres. Usual-mente, este tipo de instrucciones es imposible de tratar por medio de compiladores. Los lenguajes que incluyen este tipo de operadores y que, por tanto, exigen un intér-prete, se llaman interpretativos. Los lenguajes compilativos, que permiten el uso de un compilador, prescinden de este tipo de operadores. EVOLUCIÓN HISTÓRICA DE LA PROGRAMACIÓN En el comienzo de la informática, sólo había una forma de programar (en binario), que consistía en la ejecución secuencial (una tras otra) de instrucciones de la máquina, con posibles cambios de secuencia basados en dos tipos especiales de instrucciones de control Las instrucciones de control se dividieron en dos tipos: • instrucciones de transferencia • instrucciones de llamada de subrutina. Las instrucciones de transferencia dan lugar a un salto sin retorno en la ejecución, y a su vez pueden ser condicionales (si el salto se produce únicamente cuando se cumple una condición determinada) o incondicionales. La instrucción de llamada de subrutina guarda la dirección de retorno para que la secuencia de ejecución original se reanude cuando termina la ejecución de la subrutina (momento en el que se ejecutará una instrucción de retorno). En la década de los años cincuenta surgió un nuevo tipo da lenguajes (llamados simbólicos, o de
segunda generación: assembler), que trataban de simplificar la programación: ya que, a medida que los programas eran cada vez más complejos, se hacía impracticable utilizar directamente el lenguaje de la máquina, en el que las instrucciones estaban formadas por secuencias de ceros y unos. Un lenguaje simbólico no es más que una representación codificada del lenguaje de la máqui-na, donde cada instrucción simbólica se traduce (en principio) por una sola instrucción de la máquina equivalente, y el código de operación y la dirección de memoria asociados a cada instrucción de la máquina se representan mediante símbolos alfanuméricos. En particular, dependiendo del len-guaje simbólico utilizado, las instrucciones de cambio de secuencia se suelen representar mediante los siguientes símbolos: • La instrucción de transferencia incondicional: JMP (jump, es decir, salto); B (branch, ramificación); GOTO (go to, ir a); etc. • Las instrucciones de transferencia condicional: JZ (jump on zero, salto si el resul-tado anterior es cero); BC (branch on condition, ramificación condicional); etc. • La instrucción de llamada de subrutina: CALL (llamar, en inglés); BAL (branch and link, es decir, ramificación con enlace); etc. • La instrucción de retorno de subrutina: RET (return, retorno); etcétera. A finales de los años cincuenta, y a medida que las aplicaciones iban creciendo en tamaño y en complicación, la programación en los lenguajes simbólicos resultaba aún demasiado compleja, por lo que se inventaron los lenguajes de alto nivel o de tercera generación, tales como FORTRAN, LISP, COBOL, ALGOL, APL, PL/I, BASIC, Pascal, C, etc., que hacían más legibles los programas mediante expresiones de aspecto matemático, como X + Y * Z (que significa, en muchos de los len-guajes citados, sumar el valor de la variable X al resultado de multiplicar el valor de la variable Y por el de la variable Z). Todos estos lenguajes, y muchos más que no voy a mencionar por el momento, no son totalmente independientes entre sí, sino que unos influyeron en el diseño de los otros, por lo que forman una jerarquía histórica. Además de simplificar la sintaxis de las expresiones, los lenguajes de alto nivel introdujeron una serie de instrucciones de control para hacer más simple la definición de la estructura de los programas. Estas instrucciones pueden agruparse en las siguientes clases: • Una instrucción de transferencia incondicional (siempre se produce un salto sin re-torno en la ejecución), generalmente representada mediante el símbolo GOTO, GO TO, u otro equivalente. • Instrucciones de transferencia condicional, como las sentencias GO TO calculada y asignada de FORTRAN, o la sentencia IF del mismo lenguaje, en su forma original. • Instrucciones de ejecución condicional, como el conjunto IF- THEN-ELSE de AL-GOL y Pascal, la instrucción CASE de Pascal o el conjunto if-else y la instrucción switch de C.
• Instrucciones de ejecución en bucle, en sus formas DO-UNTIL, DO-WHILE y FOR. • La instrucción de llamada de subrutina, representada mediante el símbolo CALL, o implícitamente, especificando sólo el nombre de la subrutina que se invoca, junto con un conjunto de argumentos entre paréntesis. • La instrucción de retorno de subrutina: RETURN o equivalente. PROGRAMACIÓN ESTRUCTURADA En ciertos lenguajes clásicos (como APL o las formas primitivas de FORTRAN y BASIC) se emplea con frecuencia la instrucción GOTO de transferencia incondicional, que permite pasar la ejecución del programa a otra parte del mismo, señalada por una etiqueta. En otros (como C o Pas-cal) se utiliza un estilo diferente de programar (la programación estructurada) en la que la instruc-ción GOTO está prohibida o, al menos, desaconsejada. Por ello, la programación estructurada se llama a veces programación sin GOTO. En la programación estructurada se utilizan sólo cuatro es-tructuras de control básicas: • El bloque de instrucciones consecutivas. En C se representa con los símbolos { y ). • La instrucción condicional. En C y en PASCAL existen dos tipos principales: 1. La instrucción if-else: Si la condición se cumple, se ejecuta la instrucción 1. En caso contrario, se ejecuta la instrucción 2. 2. La instrucción switch (o case of): - Si la variable tiene el valor1, se ejecuta el bloque de instrucciones 1. - Si tiene el valor2, se ejecuta el bloque de instrucciones 2. Y así sucesiva-mente. - Si no tiene ninguno de los valores indicados, se ejecuta el bloque de ins-trucciones n. • El bucle: En C (o en PASCAL) existen tres tipos principales: 1. La instrucción for: Se ejecuta primero la instrucción iniciadora. A continuación, mientras la con-dición se cumpla, se ejecutan repetidamente las instrucciones, seguidas por la instrucción termi-nadora. 2. La instrucción while: Mientras la condición se cumpla, se ejecutan repetidamente las instruccio-nes. Si la condición no se cumple cuando la ejecución llega a la instrucción while, las instruccio-nes no se ejecutan ninguna vez. 3. La instrucción do: Mientras la condición se cumpla, se ejecutan repetidamente las instrucciones. Si la condición no se cumple cuando la ejecución llega a la instrucción do, las instrucciones se ejecutan al menos una vez. • La cuarta instrucción de control es la llamada de subrutina, a la que dedicaremos el apartado siguiente. PROGRAMACIÓN PROCEDIMENTAL La llamada de subrutina (conocida, en general, como instrucción CALL) sirve para relacionar unos programas con otros y permite modular las aplicaciones, descomponiéndolas en dos o más
secciones llamadas procedimientos, subrutinas, o funciones, según los casos. Por esta razón los lenguajes de programación clásica se llaman también procedimentales. Gracias a la capacidad de invocar la ejecución de procedimientos, los distintos programas que constituyen una aplicación sue-len formar una estructura jerárquica, con un programa principal (main en C) que llama a otros sub-programas, y éstos a otros, hasta llegar a los niveles más bajos de la jerarquía, donde suelen si-tuarse los programas que prestan servicios especiales a casi todos los demás. La jerarquía en cues-tión no forma siempre, un árbol invertido, sino un esquema algo más complejo. Es cierto que siem-pre suele haber un nodo principal o raíz (el programa principal), pero un mismo nodo puede tener más de un antecesor (puesto que una subrutina puede ser invocada por varios módulos). Además, es posible que haya ciclos, simples o compuestos, pues los módulos pueden ser recursivos, direc-tamente o indirectamente. En cambio, en esta forma de programar, los datos no tienen ninguna organización preestablecida: cada programador decide cómo se relacionan unos con otros y cómo se distribuyen entre los subprogramas. En principio, existen dos clases de datos: • Datos globales: son accesibles por todos los subprogramas. • Datos locales: son accesibles por un solo subprograma, módulo o función. A veces, dependiendo del lenguaje de programación, los datos locales son automáticamente heredables por los subprogramas o funciones situados, en la jerarquía de llamadas, por debajo del subprograma en que dichos datos han sido definidos.
View more...
Comments