Вы находитесь на странице: 1из 28

Universidad Centroccidental Lisandro Alvarado

Decanato de Ciencias y Tecnologa

Gua de Apoyo a la Asignatura Robotica


Jose Gregorio Sanchez

Prorama Ingeniera de Producci


on
Departamento de Sistemas
Lapso 2015-I

Indice general

1. Algoritmos
1.1. Introduccion . . . . . . . . . . . . . . . .
1.2. Algoritmos . . . . . . . . . . . . . . . . .
1.2.1. Algoritmos en lenguaje natural .
1.2.2. Algoritmos en Pseudo-lenguaje .
1.2.3. Algoritmos en diagramas de flujo
1.2.4. Preguntas y ejercicios resumen . .

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

1
. 1
. 2
. 3
. 7
. 12
. 25

Indice de figuras

1.1.
1.2.
1.3.
1.4.
1.5.
1.6.
1.7.

Diagrama de flujo para calculo del area de un crculo . . .


Leyenda de smbolos de un flujograma . . . . . . . . . . .
Ciclo con pre-verificacion . . . . . . . . . . . . . . . . . . .
Ciclo con post-verificacion . . . . . . . . . . . . . . . . . .
Flujograma del calculo del mayor de 2 n
umeros . . . . . .
Flujograma del calculo serie parcial de Fibonacci . . . . . .
Diagrama de flujo para el calculo del mayor de 3 n
umeros .

ii

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

14
14
15
16
17
18
19

Cuanta energa psquica gastada en


buscar una diferencia fundamental
entre algoritmo y programa.
Alan J. Perlis
Epigrams on Programming, 1982

Algoritmos
1.1.

Introducci
on

En nuestras vidas cotidianas nos enfrentamos da a da con la necesidad de resolver problemas, de hecho, el solo reto de sobrevivir es un inconveniente que todos los
seres vivos debemos enfrentar a diario. Algunos de estos problemas los resolvemos
sin pensar en ello o de manera inconsciente como por ejemplo mantenernos de pie
sin caernos (nuestro cerebro continuamente coordina movimientos para compensar
por los desplazamientos de nuestro centro de gravedad), o nuestro sistema nervioso
simpatico tomando acciones para mantener funciones vitales activas, etc.
Un problema es en resumidas cuentas, un obstaculo, impedimento o dificultad para
alcanzar alg
un fin y desde esta perspectiva pudiera decirse que la actividad mas
com
un de los seres humanos y seres vivos en general es la de resolver problemas.
De acuerdo al n
umero de variables que inciden o afectan un problema, la informacion disponible sobre estas variables, la cantidad de posibles soluciones, las
restricciones en el espacio de b
usqueda o solucion, podemos agrupar los problemas
en grandes familias como por ejemplo problemas simples, complejos, indeterminados,
determinados, computables, no computables, etc.

CAPITULO 1. ALGORITMOS

Jose G. Sanchez

En esta parte del curso trataremos estrategias formales para abordar el proceso de resolver problemas, en particular aquellos determinados y computables. Los
analizaremos para llegar a una serie de pasos que le puedan dar solucion y describiremos esos pasos usando una semantica llamada pseudo-lenguaje y una representacion
grafica llamada diagramas de flujo.

1.2.

Algoritmos

Si un problema tiene solucion (y no es un problema abierto 1 ), entonces se pueden


encontrar una serie de pasos secuenciales para resolverlo, es decir, se puede escribir
un algoritmo para su solucion.
Algoritmo
Un conjunto de reglas a seguir en calculos u otras operaciones de resolucion de
problemas. Tambien se define como la secuencia de pasos a ser realizados para
llegar a una meta deseada a partir de entradas determinadas.
Tomando esta definicion general, vemos entonces que un algoritmo debe no solo
componerse de una serie de pasos que se
nalen como resolver el problema, sino que
tambien deben poseer entradas y producir una salida. Los pasos son instrucciones a
realizar y por tanto estas deben ser claras, completas, precisas y sin ambig
uedad, es
decir, la instruccion en cada paso debe explicarse por s misma. Donald Knuth ha
definido cinco propiedades basicas de los algoritmos, estas son:
Finito: el algoritmo debe llegar a una solucion en una serie finita de pasos, con
cada instruccion realizada se esta mas cerca de la solucion.
Definido: cada paso debe estar correcta y precisamente definido, si existe duda de
que significa un paso o instruccion, entonces esta no esta bien definida.
Entrada: un algoritmo debe tener al menos una entrada
1

Probelma que puede ser correctamente planteado y se asume que tiene un objetivo y soluci
on
verificable pero que a
un no ha sido resuelto. Fuente: http://en.wikipedia.org/wiki/Open problem

Pagina 2

CAPITULO 1. ALGORITMOS

Jose G. Sanchez

Salida: un algortitmo debe producir alguna salida.


Efectividad: el algoritmo debe ser compuesto de operaciones basicas que puedan
ser realizadas con exactitud en tiempo finito.

1.2.1.

Algoritmos en lenguaje natural

Un algoritmo puede ser expresado en lenguaje natural, o sea, en nuestro lenguaje


cotidiano. Un buen ejemplo de esto son las recetas de cocina; indican que hacer para
lograr un fin especfico (el plato).
Digamos que deseas cambiar el caucho de tu carro, podemos hacer un peque
no
manual para que alguien que no sepa como resolver ese problema, pueda hacerlo sin
mucho inconveniente. Escribamos la secuencia de pasos que deberan seguirse.

1. Acu
nar una rueda del carro para evitar movimiento
2. Colocar triangulo de seguridad si esta en la va p
ublica
3. Sacar el caucho de repuesto y herramientas necesarias
4. Colocar el gato en posicion y subir hasta hacer algo de presion con el carro
5. Aflojar las tuercas de la rueda
6. Levantar el carro
7. Sacar las tuercas y la rueda. Colocar el repuesto
8. Ajustar tuercas hasta que la rueda suspendida gire
9. Bajar el carro
10. Ajustar bien las tuercas
11. Guardar las herramientas de trabajo y de seguridad usadas

Pagina 3

CAPITULO 1. ALGORITMOS

Jose G. Sanchez

Como ves, estos pasos seguidos en orden logran el objetivo de cambiar el neumatico. Si ejecutas el paso 6 antes del 5 no podras liberar la rueda de sus tuercas y si
haces el 10 antes del 9 tampoco lograras el objetivo con la calidad que se requiere
(la rueda firme y segura). En algunos pasos se puede cambiar el orden o incluso
hacerse en forma simultanea sin alterar el objetivo, por ejemplo, los pasos 1, 2 y 3
puedes hacerlos simultaneamente e incluso hay pasos que si no los haces el objetivo
principal a
un se cumple, el u
ltimo paso es un ejemplo puesto que si no guardas las
herramientas, el caucho a
un quedo firme y seguro. La computacion es en principio
secuencial, sin embargo, en ocasiones es posible tomar pasos de un proceso y realizarlos de forma simultanea o asignarles otro nivel de prioridad, pero esto es materia
de otras ramas de la ingeniera en computacion como el paralelismo, el computo
distribuido, el multiprocesamiento, etc. Para efectos de nuestro estudio todos los
pasos del algoritmo son esenciales y secuenciales. Veamos otros ejemplos, Que pasos seguiras para cosechar tus propios tomates?
1. Adquirir la semilla
2. Preparar la tierra
3. Sembrar la semilla
4. Regar
5. Colocar sostenes para la planta
6. Regar y controlar periodicamente
7. Al crecer los tomates, cosechar
Estas tareas, como se describen aqu, no son muy complicadas en cuanto a los
diferentes estados que puedan tener las variables que las afectan, por ejemplo, si en la
tarea de cambiar el neumatico hay una falla del gato y ocurre un evento inesperado,
tenemos que tomar acciones correctivas no contempladas en el algoritmo. A mayor
consideracion de los posibles eventos que puedan suceder, mas acciones a seguir
se deben considerar, esto es, mientras mayor sea el n
umero de variables que se
consideran al resolver un problema, y mayor la amplitud de los posibles estados de
estas variables, mas complejo sera el algoritmo que lo resuelva.
Una forma de tratar con diferentes estados de variables es con las llamadas reglas
Pagina 4

CAPITULO 1. ALGORITMOS

Jose G. Sanchez

de produccion, que tienen la forma de SI (ocurre algo) ENTONCES (haga esto).


Es decir, se mantiene la secuencialidad de pasos pero se bifurca el flujo de estas
secuencias. Veamos un sencillo ejemplo, supon que tienes una sala de emergencias
veterinarias y solo atiendes casos de fiebre y desangramiento:
1. Abrir y preparar la sala de emergencia
2. Si hay pacientes, entonces atenderlos seg
un prioridad o llegada
3. Si el paciente presenta sangramiento aplicar antihemorragicos e hidratantes
4. Si el paciente presenta fiebre aplicar antibioticos y fro al cuerpo si es muy alta
5. Emitir un diagnostico y/o referir a un especialista
6. Si es hora de cierre y hay pacientes, cerrar y terminar de atender a los pacientes
7. Limpiar y cerrar al no haber mas pacientes en espera
Otra forma de plantear las mismas generalidades descritas en los 7 pasos de
arriba pudiera ser el siguiente algoritmo. Compara el nivel de detalle dado en cada
instruccion en cuanto a la lnea de accion o flujo de ejecucion de las instrucciones.
1. Abrir sala de emergencia
2. Preparar equipo medico, reiniciar sistema de control y atencion
3. Hay pacientes en espera?
Si Paso 4
No Paso 11
4. Revisar y atender al paciente
5. El paciente presenta sangramiento?
SI: Paso 7
No: Paso 6
6. El paciente presenta fiebre?
Si: Paso 8
No: Paso 9

Pagina 5

CAPITULO 1. ALGORITMOS

Jose G. Sanchez

7. Colocar antihemorragico e hidratar. Ir al paso 6


8. La fiebre es superior al umbral para su especie?
Si: Aplicar fro a su cuerpo
No: Aplicar antibiotico
9. Preparar diagnostico
10. Recetar tratamiento y/o referir a especialista
11. Es hora de cierre?
Si: Cerrar sistema de control, terminar de atender pacientes, ir a paso 12
No: Paso 3
12. Limpieza de equipos y cierre de sistemas
13. Cerrar
Observa que solo hay una lnea de flujo en la ejecucion de las instrucciones, solo
que esta se bifurca basada en condiciones observadas. Nota tambien que para evaluar
o indagar sobre estas condiciones se utiliza una interrogante dicotomica cerrada, es
decir, una pregunta cuya respuesta solo puede ser de manera exclusiva un Si o un
No. En caso de ser si se toma un curso, en caso de no otro.
Dado que al verificar una condicion la respuesta puede ser solo si o no, se debe
especificar que hacer en al menos una situacion. Considera el caso que la respuesta
sea Si, si no se especifica que hacer en caso de No entonces se asume que el curso
no cambia y se sigue a la siguiente instruccion. Por ejemplo, SI (hay un paciente
en espera) ENTONCES (hacer paso x). No hace falta especificar que hacer si no
hay pacientes en espera porque simplemente se sigue con la proxima instruccion
del algoritmo.

Algoritmos en lenguaje natural


Un algoritmo que especifica sus reglas y pasos con el lenguaje natural de uso
cotidiano. Las especificaciones, restricciones, entradas, salidas, etc se describen
sin el uso de convenciones formales mas que las dictadas por la gramatica.

Pagina 6

CAPITULO 1. ALGORITMOS

1.2.2.

Jose G. Sanchez

Algoritmos en Pseudo-lenguaje

La palabra pseudo viene del griego y significa falso, por ejemplo, un pseudo-Doo
es un objeto que parece ser un Doo pero no es exactamente un Doo (sea lo que sea
eso). Como vimos en la seccion anterior, un algoritmo en lenguaje natural nos da
mucha versatilidad para describir los pasos que se deben hacer pero con el costo que
el nivel de detalle usado puede causar ambig
uedades o no ser completo o en fin, perder algunas de las 5 propiedades de los algoritmos mencionadas en la introduccion.
Por un lado nos permite abordar generalidades en problemas muy complejos, no
bien definidos o imprecisos pero para problemas muy bien definidos, computables,
determinados y especificados es mejor usar un sistema de representacion un poco
mas formal para hacer el algoritmo mas universal y eficiente.
Algoritmos en pseudo-lenguaje
Algoritmo cuyas instrucciones y reglas especficas de construccion estan en lenguaje natural pero representan operaciones, organizacion y una estructura facilmente traducibles a un codigo de computadora, por eso tambien es llamado
pseudo-codigo.
Generalmente, un algoritmo en pseudo-lenguaje comienza con especificar cuales
son las entradas con las que trabajara y cuales las salidas esperadas. Las operaciones
deben especificarse lo mas clara y precisamente posible y el flujo de ejecucion debe
identificarse claramente. Usualmente se enumeran las lneas de manera de facilitar
el seguimiento de las bifurcaciones y ciclos. Veamos algunos ejemplos.
Algoritmo 1 Calculo del area de un crculo
Entrada: radio del crculo
Salida: area del crculo
1: r radio
2: A = r 2
3: imprimir "Area =" A
El algoritmo 1 especifica al principio la entrada que necesita y la salida que espera producir. En este caso la salida esperada es el area de un crculo pero este calculo
no se puede realizar si no se le suministra al algoritmo el radio de ese crculo. La
primera lnea del codigo es la asignacion de la entrada a una variable del algoritmo
Pagina 7

CAPITULO 1. ALGORITMOS

Jose G. Sanchez

llamada r, se puede deducir por la direccion de la flecha que el valor que el usuario
de para el radio se almacenara en esta variable. En otras palabras, la instruccion
1 lo que hace es decirle al usuario bien, dame el valor del radio del crculo cuya
area quieres saber y una vez que eso ocurre, se pasa a la lnea 2 donde se realiza el
calculo en s y se almacena en una variable llamada A para poder imprimirla luego
ya que es la salida deseada.
Veamos otros ejemplos:
Algoritmo 2 Calculo del mayor de 2 n
umeros
Entrada: n
umero1, n
umero2
Salida: n
umero mayor
1: num1 n
umero1
2: num2 n
umero2
3: si num1 > num2 entonces
4:
mayor = num1
5: si no
6:
mayor = num2
7: fin si
8: imprimir n
umero mayor = mayor
Las variables num1 y num2 son las que hacen posible que el usuario ingrese al
algoritmo los valores de n
umero1 y n
umero2. Es importante que entiendas bien
esta diferencia. N
umero1 y n
umero2 son valores que solo conoce el usuario pues
el algoritmo no puede saber que valores se daran, mientras que num1 y num2 son
variables que no poseen valor hasta que se hace la operacion num1 n
umero1
en cuyo momento ya el algoritmo puede acceder a esos valores y trabajar con ellos.
La bifurcacion de la lnea 3 hace que solo se pueda realizar o bien la instruccion de
la lnea 4 o la de la lnea 6, solo una de esas dos se ejecutara, y la lnea 7 muestra
donde termina la instruccion de bifurcacion. Es conveniente saber donde finaliza
una instruccion de bifurcacion para saber cual es la instruccion siguiente a esta, por
ejemplo, el flujo del si en la bifurcacion de la lnea 3 se va a la lnea 4, el del no va
a la lnea 6 y la instruccion siguiente a la bifurcacion es la lnea 8. Si sigues bien
el algoritmo veras que la instruccion 3 solo ejecuta una operacion de asignacion y
luego pasa a la siguiente que es la lnea 8 para imprimir la salida.

Pagina 8

CAPITULO 1. ALGORITMOS

Jose G. Sanchez

Veamos el siguiente ejemplo con instrucciones de bifurcacion un poco mas complejas. Dentro del flujo de una bifurcacion puede haber otra bifurcacion, y dentro
de alguno de los flujos de esta puede haber otra y luego otra, etc. A esto se le llama
anidamiento y para evitar que se vuelva muy confuso, generalmente nos ayudamos
de la identacion del codigo para saber los niveles, es decir, cual bifurcacion es padre
de cual.
Algoritmo 3 Calculo del mayor de 3 n
umeros
Entrada: n
umero1, n
umero2, n
umero3
Salida: n
umero mayor
1: A n
umero1
2: B n
umero2
3: C n
umero3
4: si (A B) y (A C) entonces
5:
mayor = A
6: si no
7:
si (B A) y (B C) entonces
8:
mayor = B
9:
si no
10:
mayor = C
11:
fin si{del si de la lnea 7 }
12: fin si{del si de la lnea 4}
13: imprimir n
umero mayor = mayor
El algoritmo 3 muestra un ejemplo de bifurcaciones si-entonces-si no anidadas.
En la lnea 4 se pregunta si A es mayor o igual a B y a C. Si ambas de estas cosas
ocurren entonces el flujo va a la lnea 5, asigna a la variable mayor el valor de la
variable A y se va a la lnea 15; imprimir la salida, pero Por que se va a la lnea 15
y no a la 6 u otra? veamos, si ocurre que A no es mayor o igual a B la condicion de
la bifurcacion es falsa, o sea, debe irse al si no, pero ah encontramos otra bifurcacion que pregunta si es B mayor o igual a A o C. Si esto no ocurre se debe ir al
si no donde hay otra bifurcacion mas, es decir, hubo un total 3 tres bifurcaciones
anidadas. Tres niveles de anidamiento y para saber donde termina cada uno puedes
ver los comentarios en las lneas 12, 13 y 14.

Pagina 9

CAPITULO 1. ALGORITMOS

Jose G. Sanchez

Veamos otros ejemplos, escribe un algoritmo en pseudo-lenguaje que permita

2
calcular las races de una ecuacion cuadratica mediante la formula: x = b 2ab 4ac
Algoritmo 4 Calculo de races cuadraticas
Entrada: coeficiente cuadratico, coeficiente lineal, termino independiente
Salida: raices de la ecuacion
1: a coeficiente cuadr
atico
2: b coeficiente lineal
3: c t
ermino independiente
4: si a = 0 entonces
5:
imprimir La ecuacion no es cuadratica, es lineal!
6:
Salir
7: si no

8:
x1 = (b + b2 4ac)/2a
9:
x2 = (b b2 4ac)/2a
10: fin si{de la lnea 4}
11: imprimir Las raices son x1 , x2
Escribe un algoritmo que calcule el Indice de Masa Corporal (IMC) de al menos
una persona. Observa que este algoritmo debe repetir el proceso de calculo por un
n
umero desconocido de veces.
Algoritmo 5 Calculo del Indice de Masa Corporal
Entrada: altura en metros, peso en kilos
Salida: IMC
1: repetir
2:
imprimir Ingrese la altura en metros
3:
a altura en metros
4:
imprimir Ingrese el peso en kilos
5:
p peso en kilos
6:
I = p/a2
7:
imprimir Su Indice de Masa Corporal es: I
8:
imprimir Desea calcular IMC para otra persona (si/no)?
9:
resp respuesta
10: hasta que resp =no

Pagina 10

CAPITULO 1. ALGORITMOS

Jose G. Sanchez

Algoritmo 6 Calculo del Indice de Masa Corporal 2


Entrada: altura en metros, peso en kilos
Salida: IMC
1: imprimir Desea calcular un IMC (si/no)?
2: resp = respuesta
3: mientras resp =si hacer
4:
imprimir Ingrese la altura en metros
5:
a altura en metros
6:
imprimir Ingrese el peso en kilos
7:
p peso en kilos
8:
I = p/a2
9:
imprimir Su Indice de Masa Corporal es: I
10:
imprimir Desea calcular IMC para otra persona (si/no)?
11:
resp respuesta
12: fin mientras

Algoritmo 7 Serie de Fibonacci


Entrada: Tama
no de la serie parcial
Salida: Serie parcial de Fibonacci
1: n 10 {Tama
no de la serie parcial}
2: i = 1 {Primer n
umero en la serie}
3: j = 0 {Para el c
alculo de la serie}
4: para contador = 1 to contador = n hacer
5:
Fcontador = i + j
6:
i=j
7:
j = Fcontador
8:
contador = contador + 1
9:
imprimir Fcontador ,
10: fin para
Los algoritmos 5 y 6 hacen la misma tarea, sin embargo, de acuerdo al planteamiento del problema (calcular el IMC de al menos una persona) el algoritmo 5 se
ajusta mejor que el algoritmo 6. La diferencia esta en los ciclos usados. El primero
usa un ciclo de post-verificacion, esto es, realiza los pasos del ciclo y luego eval
ua
la condicion de parada. El segundo es de pre-verificacion, as que eval
ua primero
Pagina 11

CAPITULO 1. ALGORITMOS

Jose G. Sanchez

la condicion de parada y si es procedente pasa a ejecutar las instrucciones dentro


del ciclo. Es posible que en el algoritmo 6 no se calcule el IMC de persona alguna
mientras que en el 5 se calcula al menos el de una, tal como lo plantea el problema.
El algoritmo 7 calcula las primeras 10 instancias de la serie de Fibonacci. La
variable n toma este valor para controlar el ciclo de calculos. Observa que la lnea 10
es la instruccion imprimir Fcontador ,, y esta dentro del ciclo para. Esto significa
que en cada ocurrencia de esa instruccion se imprimira el valor de la variable Fcontador
seguido de una , de manera que si n = 10 la salida sera: 1,2,3,5,8,13,21,34,55,89,

1.2.3.

Algoritmos en diagramas de flujo

Los humanos somos buenos en procesar informacion grafica y por esta razon
siempre usamos diferentes instrumentos y herramientas para visualizar conceptos,
ideas, procesos y practicamente todo lo que tiene que ver con el conocimiento. Los
algoritmos no escapan a esta situacion y tienen tambien su representacion grafica
en la forma de los diagramas de flujo.
Algoritmos en diagramas de flujo
Son algoritmos representados de forma grafica a traves de una serie de figuras
geometricas basicas y lneas dirigidas (flechas) que las conectan e indican el flujo
de operacion. Observan las mismas reglas de todos los algoritmos y pueden ser
mas faciles de seguir por su naturaleza grafica.
El cuadro 1.1 muestra los smbolos basicos de un diagrama de flujo. Existen
algunos otros como por ejemplo para representar subprogramas (otros programas
enlazados al que se ejecuta), conexiones a otras secciones del algoritmo (cuando este
es muy largo y necesita varias paginas), etc, sin embargo, para mayor simplicidad y
debido a que estos son suficiente para nuestras necesidades, los omitiremos.
Un diagrama de flujo comenzara y finalizara con un rectangulo de puntas redondeadas. Lneas dirigidas deben mostrar el flujo o lnea de ejecucion que puede tener
ciclos y bifurcaciones. Toda figura debe estar conectada con una flecha a alguna
otra, es decir, no pueden haber figuras separadas ya que no estaran dentro del flujo
de ejecucion del algoritmo.

Pagina 12

CAPITULO 1. ALGORITMOS

Jose G. Sanchez

Veamos un primer ejemplo, la figura 1.1 es el diagrama de flujo del algoritmo 1


(caluclo del area de un crculo de radio r). Comienza con el smbolo de inicio y la
flecha nos indica que la primera operacion del algoritmo es solicitar el valor del radio.
Una vez que la entrada ha sido suministrada, se ejecuta el proceso del calculo del area
en s para luego imprimir esa salida, lo que esta representado con el paraleleppedo
Imprimir A. Se indica por u
ltimo el final del algoritmo.

Inicio/Fin

Rect
angulo redondeado: Indica
un nodo terminal, es decir, comienzo
y final de un algoritmo.

Proceso

Rect
angulo: Representa un proceso,
cualquier operacion en el procesador
o memoria del dispositivo ejecutor.

Decision

Diamante: Usado para representar


bifurcaciones. Por dos de sus puntas
salen flechas indicando los caminos a
seguir seg
un se cumpla o no la condicion evaluada. Generalmente se escribe esta condicion o pregunta en su
interior.

Entrada/Salida

Paraleleppedo: Simboliza una operacion de entrada o salida del algoritmo.


Flechas: Indican el sentido del flujo,
la secuencia de ejecucion que sigue el
algoritmo. Usualmente va desde arriba hacia abajo

Cuadro 1.1: Smbolos basicos de un diagrama de flujo


La figura 1.3 muestra un ciclo de pre-verificacion. Observa que la primera etapa
del ciclo es la verificacion de la condicion (i n)? y si esta se cumple observa que el
flujo se bifurca por el si que va directamente al final. Si por otro lado la respuesta
es negativa, se hacen dos procesos, uno de los cuales es incrementar el valor de la
Pagina 13

CAPITULO 1. ALGORITMOS

Jose G. Sanchez

INICIO

Leer radio

A = r2
Imprimir A

FIN
Figura 1.1: Diagrama de flujo para calculo del area de un crculo

INICIO

Entrada/Salida

Terminales

Leer radio

Proceso

A = r2
Imprimir A

FIN
Figura 1.2: Leyenda de smbolos de un flujograma

Pagina 14

CAPITULO 1. ALGORITMOS

Jose G. Sanchez

Inicio

Leer n

suma = 0, i = 1

i n?

si

no
suma = suma+i

ciclo

i=i+1

Fin

Figura 1.3: Ciclo con pre-verificacion

Pagina 15

CAPITULO 1. ALGORITMOS

Jose G. Sanchez

Inicio

Leer n

suma = 0, i = 1

suma = suma+i

i=i+1

no

i n?
si
Fin

Figura 1.4: Ciclo con post-verificacion

Pagina 16

CAPITULO 1. ALGORITMOS

Jose G. Sanchez

INICIO

Leer
num1 , num2

num1 >
num2 ?

si

mayor = num1

no
mayor = num2

Imprimir
mayor

FIN
Figura 1.5: Flujograma del calculo del mayor de 2 n
umeros

Pagina 17

CAPITULO 1. ALGORITMOS

Jose G. Sanchez

INICIO

i=1, j=0, contador=1

Leer n

for

contador
< n?

no

si
F ibonacci= i + j

i=j, j=F ibonacci

Imprimir F ibonacci,

contador=contador+1

FIN
Figura 1.6: Flujograma del calculo serie parcial de Fibonacci

Pagina 18

CAPITULO 1. ALGORITMOS

Jose G. Sanchez

si
inicio

Leer A,B,C

mayor=A

A(B,C)?

no

si
B(A,C)?

mayor=B

Imprimir mayor

Fin

no
mayor=C

Figura 1.7: Diagrama de flujo para el calculo del mayor de 3 n


umeros
variable de control i, y de nuevo se regresa a la verificacion. La u
nica forma de culminar este algoritmo, tal y como esta planteado en el flujograma, es que en alg
un
momento, luego de determinados incrementos de i, esta sea mayor o igual a n.
Una post-verificacion entra directamente a realizar los procesos dentro del ciclo
y luego se eval
ua la condicion para determinar si continuar en este o salir. Observa
la figura 1.4 y veras que el smbolo de decision esta despues de la ejecucion de los
dos procesos del ciclo, es decir, que los mismos se ejecutan al menos la primera vez.
Ejemplo de un ciclo de pre-verificacion es el mientras (condicion = Verdadera)
hacer del algoritmo 6 de la pagina 11, mientras que uno de post-verificacion lo puedes ver en el ciclo repetir...hasta que(condicion sea verdadera) del algoritmo 5 en
la pagina 10. El uso de uno u otro dependera de las necesidades o los requisitos en
el planteamiento del problema. Si las operaciones del ciclo deben realizarse al menos
una vez, entonces es mejor usar un pre-verificacion, de lo contrario puedes usar un
post.
Otro tipo de ciclo es el para(inicio) to(fin) hacer como el usado en la pagina 11
con el caluclo de una n-serie de Fibonacci (algoritmo 7). Este es de pre-verificacion
pues si la condicion de inicio no se cumple, no se ejecuta proceso alguno del ciclo.

Pagina 19

CAPITULO 1. ALGORITMOS

Jose G. Sanchez

Programa 1.1: Calculo n-serie de Fibonacci en C++


int main ( )
{

// Generador s e r i e de F i b o n a c c i
int n , contador , f i b o n a c c i ;
int i =1;
int j =0;
s t d : : cout << Cua ntos e l e m e n t o s q u i e r e g e n e r a r ? ;
s t d : : c i n >>n ;
for ( c o n t a d o r =0; contador <n ; c o n t a d o r++){
fibonacci = i + j ;
i = j;
j = fibonacci ;
s t d : : cout<< f i b o n a c c i << , ;
}
return 0 ;

}
Para que veas la similitud de un algoritmo en pseudo-lenguaje a uno en codigo
de programacion, varios de los ejemplos usados para algoritmos en Lenguaje natural, pseudo-lenguaje y diagramas de flujo, fueron llevados a diferentes lenguajes
de programacion como C++, Pascal y Fortran. Los programas 1.1 y 1.4 estan en
C++, posiblemente el lenguaje mas universal, mientras que los programas 1.2 y 1.5
estan en Pascal. El 1.3 esta en Fortran, muy usado por la comunidad cientfica, en
especial por fsicos e ingenieros debido a sus fortalezas en calculos aritmeticos. Todos
estos programas estan listos para ser compilados y ejecutados por un computador,
observa que aunque cambian en la forma como escriben los comandos, se mantiene
la estructura general del algoritmo en pseudo-lenguaje.
Es muy facil ver la equivalencia entre el algoritmo en pseudo-lenguaje y el programa final para ejecutarlo en el computador. Esta es la idea del pseudo-lenguaje, una
vez que tienes el algoritmo pensado, desarrollado y escrito, pasarlo a cualquier lenguaje de programacion es muy sencillo porque las estructuras basicas como los ciclos,
bifurcaciones, etc, son universales (dentro de un mismo paradigma de computacion)

Pagina 20

CAPITULO 1. ALGORITMOS

Jose G. Sanchez

Programa 1.2: Calculo n-serie de Fiboncci en Pascal


PROGRAM F i b o n a c c i ;
(
(
(
(
(

C a l c u l o de una s e r i e p a r c i a l de F i b o n a c c i
D e s c r i p c i o n : Se generan l o s np r i m e r o s
n
u meros de l a s e r i e
Lenguaje : P a s c a l
Serie Fibonacci : 1 ,1 ,2 ,3 ,5 ,8 ,13 ,21 ,34 ,55 ,89 ,...

)
)
)
)
)

VAR
n , contador ,
fibonacci ,
i , j : integer ;
BEGIN
writeln ( Cua ntos e l e m e n t o s q u i e r e g e n e r a r ? ) ;
readln ( n ) ;
i := 1 ;
j := 0 ;
for c o n t a d o r := 1 to n do
begin
f i b o n a c c i := i + j ;
i := j ;
j := f i b o n a c c i ;
write ( f i b o n a c c i ) ;
write ( , ) ;
end
END.

Pagina 21

CAPITULO 1. ALGORITMOS

Jose G. Sanchez

Programa 1.3: Los 10 primeros n


umeros en la serie de Fiboncci en Fortran
PROGRAM
Fibonacci
IMPLICIT NONE
INTEGER : : J , I , FIBONACCI, CONTADOR
J = 0
I = 1
WRITE ( , ) J
WRITE ( , ) I
DO CONTADOR = 1 , 1 0 , 1
FIBONACCI = J + I
J = I
I = FIBONACCI
WRITE ( , ) FIBONACCI
END DO
END PROGRAM F i b o n a c c i

Programa 1.4: Calculo del area de un crculo de radio r en C++


int main ( ){
// C a l c u l o d e l a rea de un c r c u l o
// Formula : A = Pi r 2
float radio , area ;
s t d : : cout <<De e l r a d i o d e l c r c u l o : ;
s t d : : c i n >>r a d i o ;
area = 3.14159265 radio radio ;
s t d : : cout << El a r e a d e l c r c u l o e s : << a r e a ;
return 0 ;
}

Pagina 22

CAPITULO 1. ALGORITMOS

Jose G. Sanchez

Programa 1.5: Calculo del area de un crculo de radio r en Pascal


Program C i r c u l o ;
var
r ,A : r e a l ;
begin
writeln ( De e l r a d i o d e l c r c u l o : ) ;
readln ( r ) ;
A := 3 . 1 4 1 5 9 2 6 5 r r ;
writeln ( El a r e a d e l c r c u l o e s : , A ) ;
end ;

y tan solo debes preocuparte de la sintaxis y semantica del lenguaje que quieres usar.
Si deseas ejercitar tu logica computacional puedes tomar papel y lapiz y hacer
una corrida en fro de un programa. Toma por ejemplo el programa 1.1, pagina 20
y coloca en una tabla todas las variables que veas: (n, fibonacci, contador, i, j ) y
escribe debajo de cada una el valor asignado, por ejemplo, a las variables contador
y j se les asigna un valor de 0 as que colocas 0 debajo de ellas. Seguidamente vemos que i se le asigna el valor 1 mientras que n y fibonacci a
un no tienen valor,
as que escribes 1 para la primera y no escribes nada para las otras. Luego sigues
el flujo del algoritmo instruccion a instruccion y vas ejecutando lo que se pide. Por
ejemplo la primera instruccion del ciclo es fibonacci = i + j, as que ahora colocas
bajo fibonacci el valor de 1, luego ves que la siguiente es i = j entonces tachas el
valor de i y le colocas el nuevo valor que es 0. Vas actualizando todos los valores de
las variables seg
un lo digan las instrucciones y escribiendo el valor de cada una. El
comando std::cout imprime por la pantalla del computador el valor actual de la
variable fibonacci, o sea, lo que este escrito debajo de ella en tu hoja. Como u
ltima
instruccion incrementas en 1 el valor de contador y si es menor a n repites el ciclo.
Haces esto paso a paso hasta que n = 10 y a la final deberas tener el resultado
mostrado en la pagina 12.
El cuadro 1.2 es un resumen de los tipos de representaciones de algoritmos que
estudiamos en esta seccion y una idea general de para que se usan. Lo importante
para nuestro curso no es recordar estos detalles, es el desarrollar la logica de progra-

Pagina 23

CAPITULO 1. ALGORITMOS

Jose G. Sanchez

macion que debes tener para poder instruir a los robots con las tareas que quieres
que hagan. Recuerda que para implementar una tarea en el brazo robot debes entender bien la simbologa de los diagramas de flujo, y para esto debes tener ya cierta
destreza en plantear soluciones en forma de algoritmos. Lo mismo ocurre para los
robots moviles; para implementar sus capacidades de navegacion, debes hacerlo a
traves de la programacion de estas tareas en el computador.

Tipo de representacion

Algoritmos en lenguaje natural

Algoritmos en pseudo-codigo

Algoritmos en diagramas de flujo

Descripcion
Son los menos formales debido a la generalidad en las expresiones del lenguaje. Aunque deben poseer la rigurosidad
logica y estructural de cualquier algoritmo, son un poco mas flexibles en
cuanto al uso y redaccion de las instrucciones. Se usan para plantear la idea
general de una tarea sin mucho detalle tecnico, un punto de partida para
resolverla.
Poseen una mayor formalidad que en
lenguaje natural puesto que usan una
sintaxis especfica parecida a las estructuras universales encontradas en cualquier lenguaje de programacion, es por
esto que generalmente se usan como paso previo a la implementacion del algoritmo en un codigo computacional.
Son la expresion grafica de los algoritmos de pseudo-codigo. Se usan para ver
con mayor facilidad el objetivo general
del algoritmo y tener una idea rapida
de la funcionalidad del mismo.

Cuadro 1.2: Representaciones de algoritmos

Pagina 24

CAPITULO 1. ALGORITMOS

1.2.4.

Jose G. Sanchez

Preguntas y ejercicios resumen

Para madurar el pensamiento logico no basta con entender la teora y los problemas planteados, debes practicar! La repeticion de transformar el planteamiento
de un problema a un algoritmo ejecutable por un computador, desarrollara tu destreza para resolver problemas cada vez mas complejos.
A continuacion quedan una serie de preguntas y ejercicios propuestos que puedes hacerlos y traerlos a las consultas si deseas, en los horarios asignados para tal fin.
1. Escribe un algoritmo para hacer una ensalada Cesar
2. Que diferencia hay entre las tres representaciones de algoritmos estudiadas?
3. Que son ciclos de pre y post verificacion? Que diferencia tienen y cual es la
razon para usar uno u otro en un programa?
4. Escribe un algoritmo y su respectivo diagrama de flujo para calcular:
Tu ndice academico
Los n primeros n
umeros impares
Los n n
umeros pares a partir de un n
umero num dado
Los n primeros n
umeros primos
El mayor de una serie de n
umeros dados
Los n
umeros pares e impares de una serie de n
umeros dados
La media aritmetica y varianza de las notas en una asignatura
Una n-serie de Fibonacci invertida a partir del k-esimo elemento
El n
umero de a
nos transcurridos entre dos fechas dadas
El n
umero de das entre dos fechas del mismo a
no
5. Por que en los diagramas de flujo mostrados no se ve diferencia en los smbolos
usados para representar los diferentes ciclos?
6. Puede haber mas de un flujo de operacion en un diagrama?
7. Corre en fro el codigo en C++ del programa 1.1 (pagina 20).

Pagina 25

Вам также может понравиться