ESTE BLOG SE MANEJA COMO UN LIBRO. SI VAS AL INDICE ENCONTRARAS TODOS LOS TEMAS ORDENADOS POR MATERIAS. MUCHAS GRACIAS.

Programación en Pascal

Programación en Pascal - CAPITULO 1 -




Introducción al lenguaje Pascal: concepto de algoritmo y programa, acciones = sentencias ejecutables, estructura de un programa Pascal, concepto de tipos de datos, asignación, entrada/salida


1. Algoritmo 


El diseño e implementación de algoritmos constituye una metodología de resolución de problemas muy usada en programación de computadoras.

Se denomina algoritmo a un procedimiento con las siguientes características:
1. Poseer una secuencia finita y ordenada de acciones primitivas (órdenes elementales)
2. Las acciones primitivas son no ambiguas
3. La ejecución de la secuencia de acciones primitivas, en el orden dado, conduce a la solución del problema en un tiempo finito

Las acciones son las tareas o trabajos que realiza el procesador. Estas acciones pueden ser:
a) Primitivas: su enunciado es suficiente para que el procesador pueda ejecutarlo sin  información adicional.
b) No primitivas: son órdenes no elementales de una abstracción mayor a las órdenes elementales. Cada una de ellas puede ser dividida en otras acciones (primitivas o no).

Una vez que el algoritmo ha sido correctamente diseñado e implementado en algún lenguaje apropiado, puede ser usado para solucionar problemas específicos. Para obtener la solución, se debe recurrir a una entidad capaz de ejecutar el algoritmo. Esa entidad es denominada, en un sentido amplio, procesador. Entonces, un procesador es toda entidad capaz de “entender” órdenes elementales y llevarlas a cabo.

Los algoritmos deben ser expresados en un lenguaje, por ejemplo la lengua natural (para nosotros el español).

Ejemplos:

E0) Se tiene un procesador que realiza las siguientes acciones primitivas: leer (ingresar o captar) datos numéricos- almacenar datos numéricos -sumar dos  datos  – multiplicar dos datos. Se desea resolver el siguiente problema: calcular el valor de una función  f(x)=ax+b para un x0 dado.

ALGORITMO RECTA
1) Leer y almacenar los valores de a, b, y x0.
2) Multiplicar a por x0 y almacenarlo
3) Sumar b al valor obtenido en 2)
4) Fin del ALGORITMO RECTA

E1) Problema: encontrar la raíz positiva de la siguiente ecuación cuadrática x2-4 x +4 = 0 Un algoritmo para este problema puede ser enunciado con las siguientes acciones y constituye una solución: 

ALGORITMO RAIZ1
1) Ingresar los valores de los coeficientes de la ecuación
2) Calcular el discriminante
3) Calcular las raíces
4) Fin de algoritmo RAIZ1

A fin de identificar los algoritmos, estos poseen un encabezamiento donde, además de figurar la palabra ALGORITMO, se escribe un nombre. Luego de esta cabecera, se enumeran las acciones en orden. Finalmente, se indica la terminación del algoritmo con la acción 4. Sin embargo, el lenguaje con el que se expresó el algoritmo RAIZ1 debe abandonar la lengua natural (con cierta ambigüedad) para tomar el formalismo (mas rígido) de los lenguajes programación. Por ejemplo, expresemos el mismo algoritmo usando un lenguaje más formal (sin ser un lenguaje de programación):

Solución:

      ALGORITMO RAIZUNO
1) Ingresar los valores 1, -4 y 4
2) Discriminante  (-4)2 – 4*1*4
3) Raiz  4+√Discriminante 2*1
4) Fin del algoritmo RAIZUNO

La acción primitiva de ingresar indica que el algoritmo necesita cierta información para trabajar apropiadamente. En el presente ejemplo esa información (o datos, como veremos posteriormente) son los coeficientes de la ecuación. El símbolo  indica una acción primitiva de reemplazo del valor actual de la variable que figura a la izquierda de  por el resultado del cálculo de la expresión que figura a la derecha. Las palabras que figuran en negrita representan variables (en forma similar a las  variables matemáticas).

E2) Problema: encontrar las raíces de la siguiente ecuación cuadrática x2-4 x +3 = 0     
Solución:

       ALGORITMO RAIZDOS
1) Ingresar los valores 1, -4 y 3
2) Discriminante  (-4)2 – 4*1*3
3) Raiz1  4+√Discriminante 2∗1
4) Raiz2  4−√Discriminante 2*1
5) Fin del algoritmo RAIZDOS

Si bien se han resuelto los problemas planteados, los algoritmos usados carecen de una importante cualidad que es la generalidad. Los algoritmos RAIZUNO y RAIZDOS solucionaron problemas muy particulares. Mas adelante se planteará un algoritmo para tratar la búsqueda de las raíces de una ecuación cuadrática cualquiera   a x2 +b x + c = 0

E3) Problema: Dados 3 números enteros (cualesquiera), se desea detectar los que son positivos y escribirlos. Vamos a usar una nueva acción primitiva que nos permita tomar una decisión.
Solución:

ALGORITMO DECISION_1
1) Ingresar a,b,c
2) Si a es positivo entonces escribir a
3) Si b es positivo entonces escribir b
4) Si c es positivo entonces escribir c
5) Fin del algoritmo DECISIÓN_1

Este algoritmo acepta tres números enteros y escribe los que son positivos. A fin de precisar las acciones primitivas 2,3 y 4 las escribimos de la siguiente manera:

ALGORITMO DECISION_2
1) Ingresar a,b,c
2) Si a>0 entonces escribir a
3) Si b>0 entonces escribir b 4) Si c>0 entonces escribir c
5) Fin del algoritmo DECISIÓN_2

La decisión que se toma en 2,3 y 4 establece que se escribe el número entero solo si es mayor que cero, no se establece acción si el número es menor o igual que cero.

E4) Problema: Dados 3 números enteros (cualesquiera), se desea escribir aquellos que sean positivos y aquellos que no lo sean, aclarando cada caso. Vamos a usar una nueva acción primitiva que nos permita tomar una decisión más compleja.
Solución:

ALGORITMO DECISION_3
1) Ingresar a,b,c
 2) Si a>0 entonces escribir a,'es positivo'                           
 sino escribir a,'es negativo o cero'
3) Si b>0 entonces escribir b,'es positivo'   
 sino escribir b,'es negativo o cero'
4) Si c>0 entonces escribir c,'es positivo'                           
 sino escribir c,'es negativo o cero'
5) Fin del algoritmo DECISIÓN_3

Vemos que la decisión discrimina entre valores mayores que cero (la acción que se sigue es escribir que el número es positivo) de aquellos que no lo son (la acción que se sigue es escribir que es negativo o cero).

Considerando que los algoritmos son métodos para solucionar problemas, veamos  como trabaja uno de ellos para alcanzar tal fin. A continuación presentaremos un ejemplo de resolución de un problema específico usando el algoritmo REPETICION. El procesador que trabaja con el algoritmo es un ser humano adulto que entiende correctamente las acciones y puede ejecutarlas.

La ejecución de un algoritmo es una secuencia operaciones calculadas a partir de las acciones primitivas del algoritmo. La ejecución de un algoritmo para una entrada específica de datos constituye la resolución de un problema particular. Esos datos son propios del problema. 

Debemos tener en cuenta que pueden escribirse diferentes algoritmos para resolver un mismo problema. Una consecuencia a la que nos enfrentamos, entonces, es la elección del mejor algoritmo. Un parámetro para alcanzar una elección acertada es la eficiencia: las acciones que se ejecutan deben ser especificadas rigurosamente y sin ambigüedad para cada caso, las operaciones deben ser lo suficientemente básicas para que puedan ser ejecutadas exactamente en un tiempo finito y sin redundancias1. Mas tarde volveremos sobre el concepto de eficiencia algorítmica.

Computacion - Capitulo 1 - Universidad Nacional de Mar del Plata

No hay comentarios:

Publicar un comentario