*La estructura del programa*
Estructura general de un programa. Un programa puede considerarse como una secuencia de acciones (instrucciones) que manipulan un conjunto de objetos (datos).
Bloques de un programa
- Bloque de declaraciones: en él se especifican todos los objetos que utiliza el programa (constantes, variables, tablas, registros, archivos, etc.).
- Bloque de instrucciones: constituido por el conjunto de operaciones que se han de realizar para la obtención de los resultados deseados.
Partes principales de un programa
Dentro del bloque de instrucciones de un programa se pueden diferenciar tres partes fundamentales. En algunos casos, estas tres partes están perfectamente delimitadas, pero en la mayoría sus instrucciones quedan entremezcladas a lo largo del programa, si bien mantienen una cierta localización geométrica impuesta por la propia naturaleza de las mismas.
- Entrada de datos: la constituyen todas aquellas instrucciones que toman datos de un dispositivo externo, almacenándolos en la memoria central para que puedan ser procesados.
- Proceso o algoritmo: está formado por las instrucciones que modifican los objetos a partir de su estado inicial hasta el estado final, dejando éstos disponibles en la memoria central.
- Salida de resultados: conjunto de instrucciones que toman los datos finales de la memoria central y los envían a los dispositivos externos.
Clasificación de las instrucciones
Una instrucción se caracteriza por un estado inicial y final del entorno. El estado final de una instrucción coincide con el inicial de la siguiente. No siempre una instrucción modifica el entorno, pues su cometido puede limitarse a una mera observación del mismo o a un cambio en el orden de ejecución de otras. Las instrucciones pueden ser:
- Instrucciones de declaración: Se utilizan en aquellos lenguajes de programación que no tienen declaración explícita de los objetos. Su misión consiste en indicar al procesador que reserve espacio en la memoria para un objeto del programa, indicando asimismo su nombre, tipo y características.
- Instrucciones primitivas: Son aquellas que ejecuta el procesador de modo inmediato. Las principales son asignación, entrada y salida.
- Instrucción de asignación: Consiste en calcular el valor de una expresión y almacenarlo en una variable. En algún lenguaje es preciso calcular previamente el resultado de la expresión, pues la instrucción de asignación sólo permite el movimiento de un valor simple.
- Instrucción de entrada: Toma un dato de un dispositivo de entrada y lo almacena en un objeto. En algún lenguaje, los datos de entrada no provienen de un dispositivo externo, sino que han sido colocados previamente en el mismo programa.
- Instrucción de salida: Toma el valor de una expresión u objeto y lo lleva a un dispositivo externo.
- Instrucciones compuestas: Son aquellas que el procesador no puede ejecutar directamente, sino que realiza una llamada a un subprograma, subrutina o párrafo.
- Instrucciones de control: Son aquellas de controlar la ejecución de otras instrucciones.
- Instrucción alternativa: Controla la ejecución de unas u otras instrucciones según una condición. Puede ser simple o doble (SI y SINO).
- Instrucción de salto incondicional: Altera la secuencia normal de ejecución de un programa, continuando la misma en la línea indicada en la propia instrucción (IR A).
- Instrucción de salto condicional: Altera la secuencia normal de ejecución de un programa únicamente en el caso de cumplimiento de una condición asociada a la propia instrucción (SI ... IR A).
- Instrucción repetitiva: Hace que se repitan una o varias instrucciones un número determinado o indeterminado de veces (PARA, MIENTRAS, HASTA e ITERAR).
Elementos auxiliares de un programa
Son variables que realizan funciones específicas dentro de un programa, y por su gran utilidad, frecuencia de uso y peculiaridades, conviene hacer un estudio separado de las mismas. Las más importantes son:
- Contadores: Un contador es un campo de memoria cuyo valor se incrementa en una cantidad fija, positiva o negativa, generalmente asociado a un bucle. Toma un valor inicial antes de comenzar su función, y cada vez que se realiza el suceso, incrementa su valor. Se utiliza en los siguientes casos:
- Para contabilizar el número de veces que es necesario repetir una acción (variable de control de un bucle).
- Para contar un suceso particular solicitado por el enunciado del problema (asociado a un bucle o independientemente).
- Acumuladores: Un acumulador es un campo de memoria cuyo valor se incrementa sucesivas veces en cantidades variables. Se utiliza en aquellos casos en que se desea obtener el total acumulado de un conjunto de cantidades, siendo preciso inicializarlo con el valor 0. También en las situaciones en que hay que obtener un total como producto de distintas cantidades se utiliza un acumulador, debiéndose inicializar con el valor 1.
- Interruptores (switches): Un interruptor es un campo de memoria que puede tomar dos valores exclusivos (0 y 1, -1 y 1, FALSO y CIERTO, etc.). Se utiliza para:
- Recordar en un determinado punto de un programa la ocurrencia o no de un suceso anterior, para salir de un bucle o para decidir en una instrucción alternativa qué acción realizar.
- Para hacer que dos acciones diferentes se ejecuten alternativamente dentro de un bucle.
Tipos de programa
Un programa, por lo general, estará compuesto por una secuencia de acciones, algunas de las cuales serán alternativas o repetitivas. En determinados programas sencillos, no se da esta mezcla de acciones, en cuyo caso se pueden clasificar como sigue:
- Programas lineales: consisten en una secuencia de acciones primitivas (su ejecución es lineal en el orden en que han sido escritas).
- Programas alternativos: consisten en el anidamiento de acciones alternativas (las tablas de decisión se realizan mediante programas alternativos).
- Programas cíclicos: son aquellos en los que un conjunto de acciones se repiten un número determinado o indeterminado de veces (un programa de este tipo se denomina bucle).
- Programas de gestión: se caracterizan por el manejo de gran cantidad de datos con pocos cálculos (resuelven problemas de gestión).
- Programas técnicos-científicos: al contrario que los anteriores, realizan gran cantidad de cálculos con pocos datos (revuelven problemas matemáticos, físicos, etc.).
- Programas de diseño (CAD): se caracterizan por la utilización de técnicas gráficas para resolver problemas de diseño.
- Programas de simulación: intentan reflejar una situación real, para facilitar su estudio.
- Programas educativos (EAO): utilizan las ventajas del ordenador para la docencia.
- Programas de inteligencia artificial: se utilizan para simular el razonamiento humano.
Otra clasificación relativa a la aplicación desarrollada por el programa es:
Lenguajes de programación
Un lenguaje de programación es una notación para escribir programas, es decir, para describir algoritmos dirigidos al computador. Un lenguaje viene dado por una gramática o conjunto de reglas que se aplican a un alfabeto. El primer lenguaje de programación que se utilizó fue el lenguaje máquina, el único que entiende directamente el computador, cuyo alfabeto es el binario, formado por los símbolos 0 y 1. El lenguaje ensamblador, resultó de la evolución del lenguaje máquina, al sustituir las cadenas de símbolos binarios por nemotécnicos. Posteriormente surgieron los lenguajes de alto nivel, cuya evolución es:
- 1955: FORTRAN.
- 1960: LISP, ALGOL, COBOL.
- 1965: APL, SNOBOL, PL/1, BASIC.
- 1970: PROLOG, ALGOL68, SIMULA67.
- 1975: C, PASCAL.
- 1980: MODULA-2, LIS, EUCLID.
- 1985: ADA.
- Según su parecido con el lenguaje natural:
- Bajo nivel: lenguajes máquina y ensambladores.
- Alto nivel: todos los demás.
- Según la estructura de los programas:
- Convencionales o línea a línea: ensambladores, FORTRAN, BASIC, COBOL, etc.
- Estructurados: Algol, PL/I, Pascal, Ada, COBOL estructurado, etc.
- Según la realización de los programas:
- Funcionales: Lisp, Prolog, APL, etc.
- Imperativos: la mayoría.
- Según el tipo de proceso:
- Interactivos o conversacionales: BASIC, Pascal, APL, etc.
- Orientados al proceso por lotes (batch): COBOL, FORTRAN, PL/I, etc. factorial.
*Estructura de un programa en lenguaje en c que tiene funciones*
Un programa en C es un conjunto de funciones, definiciones de tipos de datos y declaraciones de variables contenidos en un conjunto de ficheros. Un programa en C siempre comienza a ejecutar por la función con nombre
main. Cualquier función puede llamar a cualquier función, y las variables declaradas fuera de las funciones tienen ámbito global o local al fichero que las contiene (si se declaran con el prefijo static). La siguiente figura ilustra la estructura de un programa en C contenido en varios ficheros.
El compilador es el programa encargado de traducir un conjunto de funciones, definiciones y declaraciones en múltiples ficheros a un fichero ejecutable. El compilador de C tiene un comportamiento sorprendentemente sencillo y realiza mucho menos trabajo del que se está acostumbrado con otros compiladores como el de Java. Para crear un ejecutable, el compilador procesa los ficheros de código uno a uno de forma independiente, de forma que las definiciones de variables y funciones de un fichero no las recuerda cuando procesa el fichero siguiente. Además, el compilador realiza una única pasada por el texto, por lo que cuando se traduce un fichero, en un punto concreto del texto, sólo se dispone de las definiciones que se han encontrado hasta ese punto.
Como consecuencia de este comportamiento, una variable no puede ser utilizada, a no ser que se haya declarado previamente en ese mismo fichero. Igualmente, una función no puede ser invocada a no ser que se haya incluido previamente en el mismo fichero. Para poder dividir igualmente el código en múltiples ficheros el lenguaje permite la definición de “prototipos de funciones” (el tipo del resultado que devuelven, seguido del nombre de la función y del tipo de sus parámetros entre paréntesis) sin incluir el código, y además permite la definición de variables como “externas”, es decir, que están en otro fichero. A continuación se muestran dos ficheros en los que la función
fill_in y la variable table están definidas en un fichero pero las utiliza la función main en el otro fichero.
No hay comentarios.:
Publicar un comentario