1. INSTITUTO TECNOLÓGICO
DE CIUDAD ALTAMIRANO
Carrera:
Ingeniería En Informática
Portafolio De Evidencias
Materia:
Fundamentos De Programación
Facilitadora: L.I Verónica Reyes Reyes
Alumna: Isela de Jesús Martínez Carachure
Semestre: 1
Periodo Agosto 2012 A Enero 2013
Fecha: 31/08/12
2. EVOLUCIÓN 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:
instrucciones de transferencia e instrucciones de llamada de subrutina.
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áquina, 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
3. instrucción de la máquina se representan mediante símbolos
alfanuméricos. En particular, dependiendo del lenguaje 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 resultado 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
lenguajes 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:
4. Una instrucción de transferencia incondicional (siempre
se produce un salto sin retorno 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 ALGOL 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.1
11
http://www.todo-programacion.com.ar/archives/2005/04/evolucion_histo.html
5. Inicialmente los programas seguían una ejecución similar a la del
código ensamblador, es decir, existía un control sobre qué línea de
instrucción se ejecutaría a continuación, que se podía cambiar
mediante ciertas redirecciones (GOTO y GOSUB en BASIC, por
ejemplo). Sin embargo, poco a poco se tendió hacia lo que se llama la
programación estructurada.
La programación estructurada sigue tres reglas: la secuencia, la
iteración y la decisión. La primera de ellas indica que las instrucciones
del código se leerán de principio a fin; la segunda indica que, según
cierta condición, un número de instrucciones podrían repetirse un
numero determinado de veces, y la tercera indica que según unas
ciertas condiciones se ejecutarán o no un conjunto de instrucciones. En
el siguiente algoritmo para limpiar platos se aprecian estas tres
características. La indentación de las instrucciones indican cuáles son
englobadas y cuáles no por sus predecesoras.
mientras haya platos coger plato mientras haya suciedad
echar jabon pasar el estropajo por el plato si plato es azul
ponerlo con los azules
En código no estructurado, quedaría algo más lioso.
1 coger plato 2 echar jabon 3 pasar el estropajo por el plato 4 si hay
suciedad ir a la instrucción 2 5 si el plato no es azul ir a la instrucción
7 6 ponerlo con los azules 7 si hay más platos ir a la instrucción 1
En programas más grandes, esto es muchísimo más lioso.
Ahora conocemos la ejecución de los algoritmos. Sin embargo, un
programa se compone tanto de algoritmos como de una estructura de
datos sobre los que operar. 2
2
http://www.wikilearning.com/monografia/fundamentos_de_programacion-
evolucion_de_la_programacion/3650-2