Documente Academic
Documente Profesional
Documente Cultură
La Computación es una forma de arte, Algunos programas son elegantes, algunos son
exquisitos, algunos son brillantes,
Mi afirmación es que es posible escribir programas grandiosos, nobles, realmente magníficos.
Donald E. Knuth
Objetivo de este artículo: Trazar las pautas que nos permitan entender los fundamentos del
diseño de Algoritmos y de la Programación estructurada como base fundamental para adquirir
destrezas en la elaboración de Soluciones de software a problemas que se planteen
2
I.- ALGORITMOS
Comencemos definiendo un ALGORITMO como una serie de pasos finitos los cuales partiendo de
unas condiciones iniciales y expresados estos pasos sin ambigüedad, al ejecutarse, produce unos
resultados en determinado tiempo. Según esta definición, los algoritmos no están limitados a
expresar soluciones a problemas de índole computacional sino que abarcan la representación de
una multitud de problemas de diversos campos.
Solución:
Paso 1 : Hervir 50 c.c. de agua en un recipiente durante 5 minutos
Paso 2 : Verter una porción mínima de agua en el frasco que contiene
el polvo de la suspensión.
Paso 3: Agitar muy bien hasta obtener una solución espesa.
Paso 4: Si el volumen de medicamento obtenido es inferior a 50 ml entonces
Volver al paso número 2, de lo contrario finalizar la preparación
Ejemplo2: Se requiere leer desde el teclado una serie de caracteres. El proceso debe terminar
cuando se introduzca el carácter ‘#’, hecho lo cual debe entonces indicar cuantas vocales fueron
introducidas durante el proceso.
Solución:
CARACTERES
/* Variables: car: tipo carácter ; cuantas: tipo entero */
cuantas 0; Lea (Car)
MQ ( Car <> ‘#’) Haga
SI ( car=’a’ OR car=’e’ OR car=’i’ OR car=’o’ OR car=’u’) Entonces
cuantas cuantas + 1
FSI
SI ( car=’A’ OR car=’E’ OR car=’I’ OR car=’O’ OR car=’U’) Entonces
cuantas cuantas + 1
FSI
Lea (Car)
FMQ
Escriba(“El total de Vocales introducidas fue “, cuantas)
FIN CARACTERES
3
R/ Comencemos indicando que por más veloz y exacta que sea una computadora, lo normal es
que su utilidad se resuma en: Recibir datos, Procesarlos y Producir resultados. Es necesario
entender esto puesto que los Algoritmos se elaboran para luego ser representados (decimos
codificados) en un Lenguaje de Programación de manera que pueda este programa ser
introducido a la máquina y ejecutado para comprobar si resuelve el problema para el cual fue
diseñado el algoritmo.
Ahora bien, entendido lo anterior, le sugiero que considere el problema que va a resolver
mediante algoritmos computacionales, como si este fuera un ENFERMO que necesita ser llevado a
la EPS para ser tratado. Una vez que nuestro enfermo llega de urgencias es necesario que nos
planteemos y resolvamos los siguientes interrogantes:
Si usted considera necesario volver a leer detenidamente una o más veces el problema, no dude
en hacerlo hasta que lo haya entendido perfectamente. ¿ Como saber si lo ha entendido?, pues
sencillamente, lo habrá entendido si está en capacidad de contestar las tres (3) preguntas
anteriores. Una vez que esto suceda entonces aplique usted su lógica y comience a elaborar su
algoritmo. No existen formulas para esto; Escriba El nombre del Algoritmo o simplemente la
palabra INICIO, trace una línea Vertical debajo de esta palabra y comience….
Por ultimo, conviene escribir en un recuadro cuales son las VARIABLES que su algoritmo
utilizará (Cada dato leído y también cada dato que se calcule en el proceso de la información
requiere de una VARIABLE en memoria para ser almacenado).
Una VARIABLE no es mas que el nombre que le damos a ciertas posiciones de memoria en el
computador para almacenar en ellas un dato de algún tipo (Numérico, alfanumérico, etc.)
La solución del Ejemplo1 está dada en LENGUAJE NATURAL mientras que la del Ejemplo2 lo
está en PSEUDOCODIGO
SIMBOLO DE CONDICIONES
INICIO
HERVIR AGUA
AGITAR LA SOLUCION
SI Volumen <
50 Ml
NO
Medicamento
PREPARADDO
FIN
Teorema 1 : PROGRAMA PROPIO: Sea P = {P1, P2, P3, …,Pn} Un conjunto de programas.
Diremos que un programa Pi de este conjunto es “PROPIO” SI y SOLO SI satisface las siguientes
características:
Teorema 2 : Sea S={S1, S2, S3, ..., Sn}, un Conjunto de Estructuras denominadas “Básicas” ó
“Privilegiadas”; y sea Pi un programa Propio, según el teorema 1 enunciado anteriormente.
Diremos pues, que Pi es “ESTRUCTURADO en S” SI y SOLO SI se escribe utilizando UNICAMENTE
las estructuras del conjunto S.
Ejemplo:
.
.
.
LEA (SUELDO)
RETE (SUELDO*0.15)
NETO SUELDO – RETE
.
.
.
SI (CONDICION) ENTONCES
ACCION
FINSI
Ejemplo1:
Ejemplo2:
SI (CONDICION) ENTONCES
ACCION1
SINO
ACCION2
FINSI
Ejemplo1:
Ejemplo2:
SI (CONDICION1) ENTONCES
SI (CONDICION2) ENTONCES
SI (CONDICION3) ENTONCES
ACCION
FINSI
FINSI
FINSI
9
Ejemplo:
SUBSIDIO (10*SALBASICO)/100
BONO 10.000
FINSI
FINSI
FINSI
Observe que las condiciones anidadas se CIERRAN de la más interna hasta la mas externa
SUBSIDIO (10*SALBASICO)/100
BONO 10.000
FINSI
Note usted el uso del OPERADOR LOGICO AND , lo cual implica que las tres (3) condiciones
enlazadas mediante este operador deben cumplirse para que se realicen los cálculos de
SUBSIDIO y BONO.
Las utilizamos en los algoritmos cuando del análisis de EPS que hemos hecho al problema
deducimos que alguna(s) tarea(s) deben procesarse cierto número de veces. Estas estructuras
son:
La utilizamos siempre y cuando conozcamos el NUMERO DE VECES que el (los) proceso (s)
deben repetirse. Es claro entonces que NO siempre es posible conocer de antemano este dato.
Ejemplo: ALGORITMO PARA MOSTRAR EN PANTALLA LOS 100 PRIMEROS NUMEROS ENTEROS
Y SU SUMA TOTAL.
Nota: Observe que hasta ahora no hemos escrito ningún algoritmo completo en pseudos código
sino únicamente “Trozos” de este. Ahora si hagamos un algoritmo completo para resolver el
problema planteado y para ello comenzaremos por darle un nombre al algoritmo.
NUMEROS1
Suma 0
Para I 1 Hasta 100 Haga
Suma Suma + I
ESCRIBA ( I )
Fin Para
Escriba (“ Resultado de la suma de los 100 números=”,Suma)
FIN NUMEROS1
FIN MQ
Nota: Observe que primero debe INICIALIZAR la condición, es decir asignarle a esta un valor
tal que garantice que ingresa al ciclo por lo menos una vez y luego, dentro del ciclo se requiere
también MODIFICAR de alguna manera la condición para garantizar que en algún momento deja
de cumplirse y finaliza el ciclo. Si usted no tiene en cuenta estas dos características
(Inicializar la Condición Y Modificar la Condición) entonces con seguridad su algoritmo
“VIOLA” el teorema 1 de la Programación estructurada ya que obtendrá un CICLO INFINITO.
Ejemplo: ALGORITMO PARA MOSTRAR EN PANTALLA LOS 100 PRIMEROS NUMEROS ENTEROS
Y SU SUMA TOTAL.
NUMEROS2
Suma 0; I 1
MQ ( I <= 100) Haga
Suma Suma + I
ESCRIBA ( I )
II+1
Fin MQ
Escriba (“ Resultado de la suma de los 100 números=”,Suma)
FIN NUMEROS2
3.- REPITA
La utilizamos en las mismas situaciones de la estructura MQ, solo que ahora en el REPITA la
Condición para saber si continúa o no se evalúa al FINAL de la estructura y no al COMIENZO
como sucede en el MIENTRAS.
Inicializar la Condicion
REPITA
ACCION1
ACCION2
.
.
ACCION n
Modificar la Condición
Nota: Observe que al igual que el MQ, primero debe INICIALIZAR la condición, es decir
asignarle a esta un valor tal que garantice que ingresa al ciclo por lo menos una vez y luego,
dentro del ciclo se requiere también MODIFICAR de alguna manera la condición para garantizar
que en algún momento deja de cumplirse y finaliza el ciclo. Si usted no tiene en cuenta estas
dos características (Inicializar la Condición Y Modificar la Condición) entonces con
seguridad su algoritmo “VIOLA” el teorema 1 de la Programación estructurada ya que obtendrá
un CICLO INFINITO.
Ejemplo: ALGORITMO PARA MOSTRAR EN PANTALLA LOS 100 PRIMEROS NUMEROS ENTEROS
Y SU SUMA TOTAL.
NUMEROS3
Suma 0; I 1
REPITA
Suma Suma + I
ESCRIBA ( I )
II+1
HASTA QUE (I = 100)
Escriba (“ Resultado de la suma de los 100 números=”,Suma)
FIN NUMEROS3