Vamos a hablar de programación en lenguajes de alto nivel.

Para empezar, repasamos los conceptos de algoritmo y de programa.

Un algoritmo es una secuencia de pasos a seguir para resolver un problema. Es un concepto previo a la programación (algoritmo de multiplicación, algoritmo de Euclides, etc.). La secuencia tiene que ser finita, y el tiempo de ejecución (y por lo tanto, cada uno de los pasos) también. Generará una o más resultados (salidas) y necesitará ninguno o más datos (entradas) para poder generar los primeros.

Un programa es la traducción de un algoritmo a un lenguaje de programación, es decir, a un lenguaje que un ordenador “entiende”.

Por ejemplo, en el caso del algoritmo de Euclides, que calcula el MCD de dos números A y B, utilizamos las propiedad 1) MCD(D,d) = MCD(d,r), donde D es el Dividendo, d es el divisor y r es el resto de la división entera entre D y d. Y que, si r=0 entonces MCD(d,r)=d. Con esto, un posible algoritmo sería:

Datos de entrada: dos enteros A y B
Datos de salida: el MCD

1.- Calcular el resto r de dividir A entre B
2.- Si la r es 0, el MCD es B y acabamos
3.- Colocamos el valor de B en A y el de r en B
4.- Volvemos a 1

Fijémonos que, la primera vez que se ejecuta el paso 1, en el caso de que B fuera mayor que A, el calculo de la división entera hace el swap entre las dos variables.

Ya veremos mas adelante que evitaremos sentencias del tipo 4 (equivalentes al GOTO) simplemente utilizando un bucle.

Con respecto a las fases de creación de programas, hemos visto el modelo en cascada, utilizado en ingeniería del software. La fase de análisis contesta a la pregunta de que debe hacer mi programa, la de diseño a como debo hacerlo (describir el algoritmo) y la implementación no es mas que la traducción de nuestro algoritmo a un programa. La fase de validación consiste en eliminar errores (que pueden ser léxicos, sintácticos o semánticos y que nos harán volver a alguna de las fases anteriores).

Para terminar, y con respecto a la representación de algoritmos (necesaria en el diseño de los mismos) utilizaremos pseudocódigo, aunque también podríamos hacerlo mediante el uso de diagramas de flujo u organigramas. Al final necesitamos una representación (textual o gráfica) de las estructuras secuencial, alternativa e iterativa junto con las operaciones de entrada/salida de los datos.

Anuncios