You are on page 1of 34

QUE ES UN ALGORITMO

Un algoritmo es una secuencia de pasos lgicos y ordenados con


las cuales le damos solucin a un problema determinado.
En la vida diaria cada uno de nosotros disea y realiza
algoritmos para solucionar los problemas cotidianos, es as que
al levantarnos de la cama ya tenemos en la mente una serie de
pasos que debemos seguir para llegar al sitio de estudio o al sitio
de trabajo. Una vez en el sitio de estudio, tenemos en nuestra
mente una serie de tareas que debemos realizar en unos horarios
ya definidos.
i quisi!ramos realizar una comida especial, en nuestra mente
construimos un algoritmo o serie de pasos que debemos seguir
en un orden especfico para que todo nos salga como queremos.
i quisi!ramos transcribir estos pasos en una hoja de papel, para
que otra persona realizar" las mismas tareas y obtenga el mismo
resultado que nosotros, debemos seguir una serie de normas para
que esta otra persona nos entienda. #or ejemplo debe estar
esctrito en el idioma que ella comprende, se deben enumerar los
pasos etc. $as normas que se deben seguir al momento de
transcribir el algoritmo depende de quien ser" el encargado de
ejecutarlo, por ejemplo si quisieramos escribir la receta para que
la ejecute una persona adulta las normas ser"n diferentes a las
que debemos seguir si quisieramos escribir la receta para que le
ejecute una nia.
$% &%'%&(E')(*&% +E $, %$-,'*(.,
/. Un algoritmo debe ser preciso e indicar el orden de realizacin
de cada paso.
0. Un algoritmo debe estar definido. i se sigue el algoritmo dos
veces, se debe obtener el mismo resultado cada vez.
1. Un algoritmo debe ser finito. i se sigue el algoritmo. e debe
terminar en alg2n momento, o sea debe tener un n2mero finito de
pasos.
clasificacion de los algoritmos, segun quien los ejecute3
algoritmos para ser ejecutados por personas.
algoritmos para ser ejecutados por las computadoras.

#%'(E +E U4 %$-,'*(.,

*4*&*, 5 6*4
Una de las caractersticas de los algoritmos es que deben ser
finitos. e debe indicar claramente donde inicia y donde termina.
para indicar donde comienza nuestro algoritmo vamos a utilizar
la palabra *4*&*, y para indicar donde se termina nuestro
algoritmo vamos a utilizar las palabras 6*4 #',-'%.%.
ejemplo3 el siguiente algoritmo, que no hace nada slo indica
donde inicia y donde termina.
inicio


fin programa
ejemplo
+E&$%'%&*74 +E 8%'*%9$E
los datos son una parte muy importante en un algoritmo, pues
son ellos el punto de partida y son ellos quienes sufren las
transformaciones que dar"n los resultados deseados. Por esta
razn el algoritmo debe guardar los datos en un sitio donde los
pueda leer y modificar cada vez que lo requiera. los sitios
donde el algoritmo guarda los datos los llamaremos E#%&*,
+E .E.,'*% y el tamao de estos dependen del tipo de dato
que se quiera guardar en ellos.
%dem"s si se tienen varios datos se debe tener la posibilidad de
diferenciarlos de una manera que no se presenten confusiones
asign"ndoles un identificador v"lido y 2nico a estos espacios de
memoria.
Un espacio de memoria se denomina 8%'*%9$E cuando su
contenido puede variar en el tiempo y de &,4(%4(E cuando
no se permite que su contenido vari!.
$o primero que se hace en al algoritmo es declarar las variables.
+onde se separan los espacios de memoria del tamao indicado
seg2n el tipo de dato que guardar"n y asign"ndoles un nombre o
identificador v"lido, con el cual nos referiremos a la informacin
que se guarda en dicho espacio de memoria.
para declarar las variables se har" de la siguiente forma3
tipo de dato3 identificador, identificador
primero se coloca el tipo de dato seg2n la informacin
que se guardar" en los espacios de memoria a crear.
dos puntos : 3 :
una lista de indentificadores v"lidos separados por
coma :,:
ejemplo / ejemplo ;
ejemplo 0 ejemplo <
ejemplo 1 ejemplo =
ejemplo > ejemplo ?
ejemplo @ ejemplo /A
#',9$E.% #',#UE(,
E4('%+% +E +%(,
cuando un algoritmo requiera que el usuario ingrese datos, se
utilizar" la instruccin $EE' y entre par!ntesis la lista de
variables donde se guardar"n los datos ingresados por el usuario.
leerBidentificador/, identificador0C
de esta forma se podr" tener la siguiente instruccin3
leerB D, 5, EC
donde se le pide al usuario que entre tres datos el primero de los
cuales se guarda en el espacio de memoria que tiene
identificador D, el segundo se guardar" en el espacio de memoria
que tiene identificador 5 y el tercero se guardar" en el espacio de
memoria que tiene identificador E.

EFE.#$, /
E4U4&*%+,3
hacer un algoritmo que lea el nombre y la edad de una persona.
8%'*%9$E3
los datos de entrada son 3
4,.9'E3 para guardar el nombre de la persona Btipo cadenaC
E+%+3 para guardar la edad de la persona, como en el enunciado no lo
especifican lo tomaremos de tipo entero.
ED#$*&%&*,4 +E$ %$-,'*(.,
#imero se definen las variables requeridas y luego se le pide al usuario que
ingrese los datos.

EFE.#$, 0
E4U4&*%+,3
hacer un algoritmo que lea la cantidad de dias trabajados y el salario ganado
en esos dias.
8%'*%9$E
como la cantidad de das trabajados puede contener parte dicimal, se define la
variable +*% de tipo real.
como salario puede contener parte dicimal, se define la variable %$%'*, de
tipo real.
ED#$*&%&*,4 +E$ %$-,'*(.,
#imero se definen las variables requeridas y luego se le pide al usuario que
ingrese los datos
%$*+% +E +%(,
si el algoritmo requiere mostrar la informacin que tiene
guardada en variables Bespacio de memoriaC hacia el
eGteriorBpara el usuario final C, se utilizar" la instruccin
.,('%' y entre par!ntesis la lista de variables donde se
guardan los datos que se quieren mostrar.
.ostrarB identificador/, identificador0, identificador1C

la instruccin siguiente mostrar" al usuario la informacin que se
tiene guardada en la variables D, 5 y E.
.,('%' B D, 5, EC
tambi!n se puede pasar informacin directamente Bque no esta
guardada en variablesC para construir mensajes de la siguiente
manera3
.,('%' BH hola como estas H, /01, DC
el anterior mensaje mostrar" al usuario un mensaje que contiene
la cadena Hhola como estasH, el numero /01 y la informacin
contenida en la variable D.
ejemplo / ejemplo ;
ejemplo 0 ejemplo <
ejemplo 1 ejemplo =
ejemplo > ejemplo ?
ejemplo @ ejemplo /A
#',9$E.% #',#UE(,
'E-'E%'
$% ,#E'%&*74 +E %*-4%&*74
Es el modo de copiar un valor especfico en una variable o
espacio de memoria. $a operacin de asignacin se representa
con el smbolo igual :I: $a forma general de una operacin de
asignacin es3
variable I valor
hay que tener en cuenta que en una variable determinada slo se
podr"n guardar datos que correspondan al tipo con el que fue
declarada la variable. #or esta razn veamos como realizar la
asignacin en cada uno de los tipos de datos.
/. %*-4%&*,4 E4 8%'*%9$E 4U.J'*&%B de
tipo entero o tipo realC
0. %*-4%&*,4 E4 8%'*%9$E +E (*#, &%+E4%
1. %*-4%&*,4 E4 8%'*%9$E +E (*#, $7-*&,
>. %*-4%&*,4 E4 8%'*%9$E +E (*#,
&%'%&(E'
los siguientes ejemplos son una miscel"nea3
ejemplo / ejemplo ;
ejemplo 0 ejemplo <
ejemplo 1 ejemplo =
ejemplo > ejemplo ?
ejemplo @ ejemplo /A
#roblemas propuestos
'E-'E%'


%*-4%&*,4 +E 8%$,'E % 8%'*%9$E 4K.E'*&%
en una variable num!ricaBdeclarada como entero o real C slo se
podr"n guardar datos num!ricos y eGiste dos formas de hacerlo3
/. asignacin de un n2mero Bconstante num!ricaC a una
variable num!rica. asumamos que la variable % ha sido
declarada de tipo entero, si queremos copiar el valor de @
en ella lo haramos de la siguiente manera.
% I @
se copia el valor de @ en la variable %.
0. asignacin del resultado de una eGpresin aritm!tica a
una variable num!rica. asumamos que las variable % ha
sido declarada de tipo entero y queremos copiar en ella el
resultado de la eGpresin aritm!tica @L0 M/ se hara de la
siguiente manera.
% I @L 0 M/
se eval2a primero la eGpresin aritm!tica y el resultado se
guarda en la variable %. En este caso se copia en % el
valor de //.
es posible que la eGpresin aritm!tica este formada con
variables num!ricas, para ilustrarlo asumamos que %, 9 y
& han sido declaradas de tipo entero y que en 9 ya hemos
copiado un /A B9 I /AC y en & hemos copiado un dos B9 I
0C. si queremos copiar en % lo que tiene 9 mas lo que
tiene &, se hara de la siguiente manera.
% I 9 M &
se eval2a la eGpresin aritm!tica, teniendo en cuenta los
contenidos de las variables 9 y &, en este caso el resultado
es /0 que se asigna a la variable %.
EFE.#$, /
E4U4&*%+,3
hacer un algoritmo que lea un entero 4 y muestre el doble del n2mero.
8%'*%9$E
se declara 4 de tipo entero, para guardar el dato entrado por el usuario.
se declara +,9$E de tipo entero, para guardar el doble del n2mero.
ED#$*&%&*,4 +E$ %$-,'*(.,
se declaran las variables requeridas, se le pide al usuario que entre el dato 4,
se calcula el doble del n2mero y se muestra.
EFE.#$, 0
E4U4&*%+,3
hacer un algoritmo que lea un entero 4 y muestre el /A N del n2mero.
8%'*%9$E
se declara 4 de tipo entero, para guardar el dato entrado por el usuario.
se declara # de tipo real, para guardar /A N del n2mero.
ED#$*&%&*,4 +E$ %$-,'*(.,
se declaran las variables requeridas, se le pide al usuario que entre el dato 4,
se calcula el /A N del n2mero y se muestra.
%*-4%&*,4 +E 8%$,'E % 8%'*%9$E +E (*#, &%+E4%
En una variable de tipo cadena se pueden guardar cadenas directamente o el
resultado de evaluar una eGpresin de cadena.
asumamos que la variable 4,.9'E ha sido declarada de tipo cadena , si
queremos copiar en ella el nombre H.araH lo haramos de la siguiente
manera.
4,.9'E I H.araH
copiara en la variable 4,.9'E el valor de H.ariaH.
EFE.#$, /
E4U4&*%+,3
hacer un algoritmo que lea el nombre de una persona y muestre el nombre y
el mensaje HO,$% 9UE4% 4,&OEH.
8%'*%9$E
se declara 4,.9'E de tipo cadena , para guardar el nombre de la persona.
ED#$*&%&*,4 +E$ %$-,'*(.,
se declara la variable requerida, se le pide al usuario que entre 4,.9'E, se
muestra el nombre y el mensaje indicado.
EFE.#$, 0
E4U4&*%+,3
hacer un algoritmo que lea el nombre y la edad de una persona y muestre el
nombre y la edad.
8%'*%9$E
se declara 4,.9'E de tipo cadena , para guardar el nombre de la persona.
se declara E+%+ de tipo entero , para guardar la edad la persona.
ED#$*&%&*,4 +E$ %$-,'*(.,
se declaran las variables requeridas, se le pide al usuario que entre 4,.9'E
y la E+%+. finalmente se muestra el nombre y la edad de la persona.
%*-4%&*,4 +E 8%$,'E % 8%'*%9$E $7-*&%
En una variable lgica slo se podr"n guardar datos lgicosB HverdaderoH o
HfalsoHC o el resultado de evaluar una eGpresin lgica.
asumamos que la variable 9%4+E'% ha sido declarada de tipo lgico , si
queremos copiar en ella el resultado de la eGpresin lgica 0 P /A , lo
haramos de la siguiente manera.
9%4+E'% I 0 P /A
copiara en la variable 9%4+E'% el valor de HfalsoH, pues 0 no es mayor que
/A.

EFE.#$, /
E4U4&*%+,3
hacer un algoritmo que lea el dato 4 de tipo entero y muestre el resultado de
la siguiente eGpresion lgica3
4 P /A
8%'*%9$E
se declara 4, de tipo entero , para guardar el n2mero que ingresa el usuario.
se declara 'E#UE(%, de tipo lgico , para guardar el resultado de la
eGpresion .
ED#$*&%&*,4 +E$ %$-,'*(.,
se declaran las variables requeridas. en 'E#UE(% se guarda el resultado
de evaluar la eGpresin indicada y final mente se muestra el resultado.
EFE.#$, 0
E4U4&*%+,3
hacer un algoritmo que lea el dato 4, de tipo entero y muestre el resultado de
la siguiente eGpresin lgica3
4 P /A QQ 4 R @A
8%'*%9$E
se declara 4, de tipo entero , para guardar el n2mero que ingresa el usuario.
se declara 'E#UE(%, de tipo lgico , para guardar el resultado de la
eGpresion .
ED#$*&%&*,4 +E$ %$-,'*(.,
se declaran las variables requeridas. en 'E#UE(% se guarda el resultado
de evaluar la eGpresin indicada y final mente se muestra el resultado.
*4('U&&*,4E +E +E&**74
$as instrucciones de decisin son necesarias cuando en un
algoritmo una o muchas tareas se deben hacer o no,
dependiendo de una situacin en particular. esta situacin nos
ayudar" a decidir si hacemos o no las tareas indicadas. las
instrucciones de decisin que estudiaremos son las b"sicas, la
*4('U&&*74 +E +E&**74 * y la *4('U&&*74 +E
+E&**74 * 4,.
*4('U&&*,4E +E +E&**74 BsiC
$a estructura es la siguiente3
*nicio
*nstruccin /
si eGpresin lgica entonces
.......*nstruccin //
.......*nstruccin /0
.......*nstruccin /1
fin si
*nstruccin n
S
fin del programa

se eval2a la eGpresin lgica si es verdadera se realizan las instrucciones
internas, de lo contrario se salta a la siguiente instruccin fuera de la
estructura en este caso a la instruccin n.
*4('U&&*,4E +E +E&**74 Bsi T si no C
$a estructura es la siguiente3
*nicio
*nstruccin /
si eGpresin lgica entonces
.......*nstruccin //
.......*nstruccin /0
.......*nstruccin /1
si no
.......*nstruccin 0/
.......*nstruccin 00
.......*nstruccin 01
fin si
*nstruccin n
S
fin del programa
e eval2a la eGpresin lgica si es verdadera se realizan las instrucciones
internas al si en este caso las instrucciones Bl/,l0,l1,...C y luego se sigue con la
instruccin n. i la eGpresin lgica es falsa se realizan las instrucciones
internas al si no en este caso las instrucciones B0/, 00, 01C y luego se sigue con
la instruccin n. Es de notar que este tipo de instruccin es eGcluyente, o sea
que si entra por el si, no entra por el si no. 5 si entra por el si no, no entra por
el si.
*4('U&&*,4E +E 'E#E(*&*,4
$as instrucciones de repeticin son necesarias cuando en un
algoritmo hay que realizar una o muchas tareas varias veces, las
instrucciones de repeticin b"sicas son3 el .*E4('% y el
#%'%, cada una de las cuales tiene su propia representacin y su
propia manera de controlar el n2mero de veces que se repetir" el
cicloB instrucciones internas C. estas caractersticas hacen que una
instruccin de repeticin sea mas adecuado que la otra en una
situacin particular.
'E-'E%'
E('U&(U'% .*E4('%B UhileC
$a estructura repetitiva mientras es aquella en que las
instrucciones internas Bbucle Cse ejecutan mientras se cumple una
determinada condicin. $a estructura es la siguiente3
*nicio
*nstruccin /
mientras eGpresinVlgica haga
.......*nstruccin //
.......*nstruccin /0
.......*nstruccin /1
fin mientras
*nstruccin n
S
fin del programa
&uando se ejecuta la instruccin mientras. $a primera cosa que
sucede es que se eval2a la condicin Buna eGpresin lgicaC. i la
eGpresin es falsa, ninguna accin del bucleB parte internaC se
ejecuta y el programa continua en la siguiente instruccin al
bucle. i la eGpresin es verdadera, entonces se ejecuta el cuerpo
del bucle. +espu!s de lo cual se eval2a de nuevo la eGpresin
booleana. Este proceso se repite una y otra vez mientras la
eGpresin lgica BcondicinC sea verdadera. +entro del cuerpo
del bucle debe eGistir una instruccin que modifique la eGpresin
de tal manera que en alg2n momento haga que su valor sea falso.
Es decir que garantice la terminacin del ciclo.
#ara controlar el n2mero de repeticiones del ciclo se puede
hacer de dos maneras3
/. utilizando una variable contador.
0. utilizando una variable centinela.
problemas propuestos
'E-'E%'

E('U&(U'% +E 'E#E(*&*74 #%'% B6,'C
#ermite que un grupo de instrucciones se repita cero o mas
veces, dependiendo del valor que resulte al evaluar una
eGpresin de tipo lgico.
$a estructura es la siguiente3
#ara eGpresinVinicio, eGpresinVlgica, eGpresionVincremento
.......*nstruccion/
.......*nstruccion0
......*nstruccion1
......*nstruccion>
S
6in para
*nstruccin n
S
la eGpresinVinicio establece la condicin inicial para la variable
de control evaluada en la eGpresin lgica.
$a eGpresionVincremento modifica la variable de control.
$a eGpresinVlgica es una eGpresin formado con la variable de
control, y que sirve para controlar el n2mero de iteraciones del
ciclo el cual termina cuando su valor sea falso.
EFE.#$, /
E4U4&*%+,3
hacer un algoritmo que lea @ enteros dados por el usuario y muestre su suma.
+%(,3
43 para guardar el dato que entra el usuario B de tipo enteroC
U.% 3 para guardar la suma de los digitosB de tipo enteroC.
* 3 para controlar el cicloB de tipo enteroC.
ED#$*&%&*,4 +E$ %$-,'*(.,
se debe definir las variables a utilizar 4, *, U.%.
se inicia la variable U.%, se debe hacer antes de comenzar a ingresar los
datos.
e construye un ciclo para que se repita @ veces y en cada repeticion se lee un
dato 4 ,el cual se va acumulando en la variable U.%. al terminar de
ingresar todos los datos se muestra el contenido de la variable U.%.
EFE.#$, 0
E4U4&*%+,3
hacer un algoritmo que lea @ datos enteros dados por el usuario y muestre la
suma de los datos impares.
+%(,3
los datos de entrada son 3
+%(,3 para guardar el dato dado por el usuario B de tipo enteroC
otros datos3
* 3 para controlar el ciclo.
U.% 3 para guardar la sumatoria de los datos imparesB de tipo enteroC.
ED#$*&%&*,4 +E$ %$-,'*(.,
se debe definir las variables a utilizar +%(,, *, U.%.
se construye un ciclo para controlado por la variable * para que se repita
@ veces.
se lee cada dato, si el dato es impar se acumula.
al terminar el ciclo se muestra U.%.
U9%$-,'*(.,
cuando un algoritmo crece demasiado, se hace necesario
dividirlo en subalgoritmos o mdulos, llamados funciones o
procedimientos. Esta divisin nos permite3
/. hacer mas entendible los algoritmos.
0. la deteccin y correccin de problemas se hace mas
simple, pues los problemas est"n mas localizados, no es
necesario analizar todo el algoritmo, slo el mdulo que
esta fallando.
1. permite que los subalgoritmos se especialicen en
resolver una tarea especfica, sin importarles como
funcionan los dem"s mdulos. esto facilita que varias
personas puedan realizar un algoritmo, cada uno de ellos
realiza un subalgoritmo especfico.
>. si se han construido subalgoritmos, estos se pueden
utilizarB llamarC las veces que se necesite. esto es la
reutilizacin de los subalgoritmos, para que resolver un
problema que ya haba sido resuelto, slo se llama a la
solucin.
'E-'E%'
6U4&*74E3
Una funcin es un subalgoritmo que toma uno o m"s valores
llamados argumentos y produce un valor llamado resultado
Bvalor de la funcin para los argumentos dadosC.
+E&$%'%&*,4 +E 6U4&*74E3
$a declaracin de una funcin requiere una serie de pasos que la
definen. Una funcin tiene una construccin similar a los
algoritmos.
$a descripcin de la funcin ser"3
tipo de dato3 nombreVfincin Blista de par"metrosC
RaccionesP
devolverB eGpresin C
fin funcin
/. tipo de dato3 indica de que tipo de dato es la informacin
que devuelve la funcin.
0. dos puntos : 3 :
1. nombre de la funcin 3 debe ser un identificador v"lido y
unico que se utiliza para llamar a la funcin.
>. argumentos de dicha funcin. Es una lista de
declaraciones de variables se paradas por dos puntosB: 3 :C
donde se especifican los datos que requiere la funcin
para trabajar.
@. %cciones o cuerpo de la funcin3 son las diferentes tareas
que realiza la funcin.
;. devolverB eGpresin C3 se indica que dato es el que
devolver" la funcion al subalgoritmo que lo llam.
<. fin funcion3 para indicar donde termina la funcin.
*48,&%&*,4 +E $% 6U4&*74E3
Una funcin puede ser llamada de la siguiente manera3
nombreVfincin B lista de par"metros actualesC
la lista de par"metros actuales debe corresponder en tipo y
cantidad con la lista de par"metros BformalC definidos en la
funcin.
Una llamada a la funcin implica los siguientes pasos3
W a cada par"metro formal se le asigna el valor real de su
correspondiente par"metro actual.
W e ejecuta el cuerpo de acciones de la funcin
W e devuelve el valor de la funcin al nombre de la funcin y se
retorna al punto de llamada.
EFE.#$, /
el siguiente algoritmo llama a la funcin sumatoria para calcular y mostrar la
sumatoria de los numeros del / al @.
8%'*%9$E
* 3 para controlar el ciclo.
3 para guardar la sumatoria del dato * enviado como argumentoB de tipo
enteroC.
ED#$*&%&*,4 +E$ %$-,'*(.,
se debe definir las variables a utilizar *, .
se construye un ciclo para que se repita @ veces y en cada vez se llama a
la funcion sumatoria y se le entrega el valor de *, la respuesta se recibe
en la variable . por ultimo se muestra s
EFE.#$, 0
el siguiente algoritmo llama a la funcion U.%(,'*% para calcular y
mostrar la sumatoria de 1 n2meros dados por el usuario.
8%'*%9$E
* 3 para controlar el ciclo.
3 para guardar la sumatoria del dato * enviado como argumentoB de tipo
enteroC.
4 3 para guardar el dato dado por el usuarioB de tipo enteroC.
ED#$*&%&*,4 +E$ %$-,'*(.,
se debe definir las variables a utilizar *, .
se construye un ciclo para que se repita 1 veces y en cada vez se lee
4,se llama a la funcion sumatoria y se le entrega el valor de 4 y la
respuesta se recibe en la variable . por ultimo se muestra s.
#',&E+*.*E4(,
Un procedimiento es un subalgoritmo que toma uno o m"s
valores llamados argumentos, con los cuales ejecuta tareas
especficas.
+E&$%'%&*,4 +E #',&E+*.*E4(,3
$a declaracin de un procedimiento requiere una serie de pasos
que la definen. Un procedimiento tiene una construccin similar
a los algoritmos, por consiguiente constar" de una cabecera que
comenzar" con nombre del procedimiento y entre par!ntesis una
lista de argumentos del procedimiento. % continuacin ir" el
cuerpo del procedimiento, que ser" una serie de acciones o
instrucciones que conforman el cuerpo del procedimiento.
$a descripcin del procedimiento ser"3
nombreVprocedimiento Blista de argumentosC
RaccionesP
fin procedimiento
/. nombre del procedimiento 3 debe ser un identificador
v"lido y unico que se utiliza para identificar al
procedimiento.
0. lista de argumentos. Es una lista de declaraciones de
variables se paradas por dos puntosB: 3 :C donde se
especifican los datos que requiere el procedimiento para
trabajar.
1. %cciones o cuerpo del procedimiento3 son las diferentes
tareas que realiza el procedimiento.
>. fin procedimiento3 para indicar donde termina el
procedimiento.
*48,&%&*,4 +E $, #',&E+*.*E4(,3
Un procedimiento puede ser llamada de la siguiente manera3
nombreVprocedimiento B lista de par"metros actualesC
la lista de par"metros actuales debe corresponder en tipo y
cantidad con la lista de par"metros BformalC definidos en la
funcin.
Una llamada a un procedimiento implica los siguientes pasos3
W a cada par"metro formal se le asigna el valor real de su
correspondiente par"metro actual.
W e ejecuta el cuerpo de acciones del procedimiento.
W e regresa a la instruccin siguiente del punto de llamada.
EFE.#$, /
el siguiente algoritmo llama al procedimiento llamado U.%(,'*% para
calcular y mostrar la sumatoria de los numeros del / al @.
8%'*%9$E
* 3 para controlar el ciclo.
ED#$*&%&*,4 +E$ %$-,'*(.,
se debe definir la variable a utilizar *.
se construye un ciclo para que se repita @ veces y en cada vez se llama
al procedimiento U.%(,'*% y se le entrega el valor de *, el
procedimiento es el encargado de mostrar la sumatoria.
$% (,''E +E O%4,*
Oanoi es uno de las aplicaciones cl"sicas para ensear recursion.
una funcin o procedimiento es recursivo si en su definicin se
llama a si mismo.
las torres de hanoi, consiste en un juego que consta de tres torres
y 4 discos de diferente tamao. el juego consiste en pasar todos
los discos que est"n inicialmente en una torre Bordenados de
mayor a menor de abajo hacia arribaC llamada origen y pasarlos a
una torre llamada destino, siguiendo las siguientes reglas3
/. slo se puede trasladar un disco a la vez.
0. nunca puede haber en una torre un disco de mayor
tamao, sobre otro disco de menor tamao.
demostracin
%''E-$,3
Un arreglo es una coleccin de datos del mismo tipo, que se almacenan en
posiciones consecutivas de memoria y reciben un nombre com2n. #ara
referirse a un determinado elemento de un arreglo se deber" utilizar el nombre
del arreglo acompaado de un ndice el cual especifica la posicin relativa en
que se encuentra el elemento.
$os arreglos pueden ser3
unidimensionales BvectoresC.
9idimensionales Bmatrices, tablasC.
.ultidimensionalesBtres dimensiones o m"sC.
%''%5 U4*+*.E4*,4%$E , 8E&(,'E
$os pasos para la utilizacin de un vector sonX
/ +eclarar el vector3 consiste en establecer el nombre, el tamao y el tipo de
los datos que se van a almacenar en el arreglo ejemplo3
hay que diferenciar dos t!rminos 3
tamao del vector B(C3 es el numero m"Gimo de elementos que puede contener
el vector.
4umero de elementosB4C3 que indica cuantos elementos hay almacenados en
el arreglo en determinado momento. 4ota 4RI(.
( I /AX
'eal3 notasY(Z
0 $lenar el vector con los datos3 e puede hacer en el momento de la
declaracin asignando al vector los valores que necesitamos almacenar.
Ejemplo.
real 3 notasY/AZ I [0.1 , 1.@ , >.0 , 1.1 , 1.A , >.? , >.0 , 1.A , 0.A , /.@ \X
recorriendo el arreglo as3
para i I / hasta 4
.......leerB notasYiZ C
fin del para
1 manipular la informacin guardada en el vector. #ara esto es necesario
recorrer dicha estructura y se puede hacer de la siguiente manera.
para i I / hasta 4
......mostrar B notasYiZ C
fin del para
las operaciones que se pueden realizar con los arreglos son las siguientes3
T lectura Bllenar el vectorC
T escritura Bmostrar el vectorC
T asignacin Bdar valor a una posicin especficaC
T actualizacin Binsercin , eliminacin, modificacin C
T ordenacin . Bburbuja, insercin directa, seleccin directa, selle y quic]sortC.
T b2squeda. Bsecuencial , binaria, hashB por clavesC C.
ejemplo/, ejemplo0, ejemplo1,problemas propuestos

'E-'E%'
'E-*(',
Un registro es un dato estructurado, donde cada uno de sus componentes se
denomina campo. $os campos de un registro pueden ser todos de diferentes
tipos. #or lo tanto tambi!n podr"n ser registros o arreglos. &ada campo se
identifica por un nombre 2nico Bel identificador del campoC3
+E6*4*&*,4 +E 'E-*(',
#ara definir un registro se har" de la siguiente manera3
'E-*(',3idVregistro
....tipo/3idVcampo/
....tipo03idVcampo0
....tipo13idVcampo1
S
fin de la definicin
para acceder a un campo determinado de un registro se har" de la siguiente
manera3
idVregistro.idVcapo
ejemplo/, problemas propuestos

'E-'E%'
8E&(,'E +E 'E-*(',
(ambi!n se puede manejar un vector de registros. 'ecuerde que el vector debe
contener datos del mismo tipo Ben este caso todos los datos son del tipo
registroC.
+E6*4*&*,43 para definir un vector de registros proceda de la siguiente
manera3
8ectorY @Z 3 idVregistro
+onde idVregistro es el identificador que se le dio al registro.
ejemplo/, problemas propuestos

.%('*E +E 'E-*(',
(ambi!n se puede manejar una matriz de registros. 'ecuerde que la matriz
debe contener datos del mismo tipo Ben este caso todos los datos son del tipo
registroC.
+E6*4*&*,43 para definir una matrizr de registros proceda de la siguiente
manera3
idVregistro3.a(Y4ZY.Z
+onde idVregistro es el identificador que se le dio al registro. 4 es el n2mero
de filas de la matiriz y . es el n2mero de columnas de la matriz.
ejemplo/, problemas propuestos
$*(% E4$%E%+%
Una lista enlazada o encadenada es un conjunto de elementos en los que cada
elemento contiene la posicin Bo direccin C del siguiente elemento de la lista.
&ada elemento de la lista debe tener al menos dos campos3 un campo que
contiene el valor del elemento y un campoB enlace, lin]C que contiene la
posicin del siguiente elemento, es decir su coneGin, enlace o
encadenamiento. $os elementos de una lista son enlazados por medio de los
campo enlaces.
$as listas enlazadas se conforman por nodos, como el que se muestra a
continuacin.
$os componentes de los nodos se llaman campos. Un nodo tiene al menos un
campo dato o valor y un enlace o liga Bdireccin o punteroC con el siguiente
campo.
El ultimo nodo de la lista enlazada tiene como liga un 4U$$, indicando que
la lista termina en ese nodo.
El enlace o puntero es una variable cuyo valor es la direccin o posicin de
otra variable. En las listas enlazadas no es necesario que los elementos de la
lista sean almacenados en posiciones fsicas adyacentes, ya que el puntero
indica donde se encuentra el siguiente elemento de la lista .
$as listas enlazadas son estructuras din"micas, queriendo decir esto que
pueden crecer o encogerse durante la ejecucin de un programa, utilizando as
slo la memoria que requiere.
Una lista enlazada se define por3
W El tipo de sus elementos o nodos
W &ampo de informacin BdatosC
W &ampo enlace o liga BpunteroC
W Un puntero de cabecera que permite acceder al primer elemento de la lista,
utilizaremos la variable llamada punta.
W Un medio para determinar el ultimo elemento de la lista3 liga I null.
#ara acceder al campo dato de un registro p utilizaremos la siguiente notacin
] I p.dato
asignar" a la variable ] el valor que hay en p.dato
si la punta I null quiere decir que la lista esta vaca.
#ara pedir un nodo p
pcreaVnodoBC
para liberar un nodo de la memoria se har" de la siguiente manera3
libereBpC
#ara manipular y sacar informacin de la lista es necesario recorrerla y se
hace de la siguiente manera3
$as operaciones b"sicas para el manejo de listas enlazadas son3
W *nsertar al principio de la lista un dato dado
W mostrar el promedio de los datos de la lista
W decir si un dato dado se encuentra o no en la lista.
W Eliminar un dato dado de la lista
ejemplo/, problemas propuestos
'E-'E%'
$*(% *.#$E.E4(E $*-%+% &*'&U$%'E

$as listas simplemente enlazadas no permiten a partir de un elemento dado
acceder directamente a cualquiera de los que le preceden. En lugar de
almacenar un puntero null en el campo liga del ultimo nodo de la lista, se hace
que el ultimo elemento apunte al primero BpuntaC o principio de la lista.
$as listas circulares presentan las siguientes ventajas respecto a las listas
simplemente enlazadas.
+ado un nodo se puede recorrer la lista completa.
$as operaciones de concatenacin y divisin de las listas son m"s
eficaces con listas circulares.
Entre los inconvenientes esta que se pueden presenta ciclos infinitos en los
algoritmos.
#ara manipular y sacar informacin de la lista es necesario recorrerla y se
puede hacer de la siguiente manera3
ejemplo/, problemas propuestos
'E-'E%'
$*(% *.#$E.E4(E $*-%+% &*'&U$%' &,4 'E-*(',
&%9EE%
$a representacin gr"fica de esta lista es la siguiente3

El primer nodo o registro de esta lista se llama registro cabeza. El campo de la
informacin del registro cabeza no se utiliza, lo que se seala con el
sombreado de dicho campo.
Una lista simplemente ligada con registro cabeza vaca se representa de la
siguiente manera3
El registro cabeza se utiliza para facilitar las operaciones de recorrer la lista,
insertar un registro, borrar un registro etc.
#ara manipular y sacar informacin de la lista es necesario recorrerla y se
puede hacer de la siguiente manera3
ejemplo/, problemas propuestos
'E-'E%'
LISTAS DOBLEMENTE LIGADAS.
Estas listas se pueden recorrer de izquierda a derecha y de derecha a izquierda.
El registro utilizado es el siguiente3
+onde 3
$* apunta al registro anterior del registro.
$+ apunta al registro siguiente del registro.
&omo ejemplo se muestra la siguiente lista3
$a propiedad fundamental de las listas doblemente ligadas es3
Bp.$*C.$+ I p I Bp.$+C.$*
para recorrer la lista se utiliza el mismo algoritmo utilizado para recorrer una
lista simplemente ligada, teniendo en cuanta el sentidos en que se va hacer el
recorrido.
ejemplo/, problemas propuestos
'E-'E%'
PILAS

Una pila es una lista de elementos a la cual se puede insertar o eliminar
elementos slo por uno de sus eGtremos. % si el 2ltimo elemento que entra a la
pila es el primero que se saca. Es una estructura B$*6,C.
$as operaciones que se realizan sobre las pilas son3
%pilar, insertar, push Bponer un elemento en la pila C.
+esapilar, quitar, eliminar, pop Bsacar un elemento de la pilaC.
un ejemplo cl"sico de pilas consiste en un arrume de platos, donde los platos
que se van insertando se colocan en el eGtremo superior y cuando se necesita
de un plato se eGtrae el que esta en la parte superior de dicho arrume.
$as pilas se pueden representar utilizando arreglos o listas ligadas.
regresar
PILAS REPRESENTADAS COMO VECTOR

En la representacin de las pilas en arreglos se manejan las siguientes
variables3 #ila, (,#E y m"Gimo.
#ila 3 nombre del vector que sirve para representar la estructura.
tope3 posicin en el vector que indica donde esta el ultimo elemento de la
pila.
."Gimo3 tamao del vector o m"Gimo n2mero de elementos de la pila.
$os Estados de una pila son3
pila llena
pila con algunos elementos
pila vacia
la representacin gr"fica el la siguiente3
demostracion, regresar
PILAS REPRESENTADAS COMO LISTAS LIGADAS
En la representacin de las pilas como listas simplemente ligadas. llamaremos
a la punta de la lista como pila y las operaciones de apilar y desapilar se
realizaran de la siguiente manera3
apilar 3 se debe insertar el elemento al inicio de la lista.
desapilar 3 se eGtrae el elemento que esta al inicio de la lista.

COLAS
Una cola es una lista de elementos en la cual las operaciones de insercin se
efect2an en un eGtremo llamado U$(*., y las operaciones de borrado se
efect2an en el otro eGtremo llamado #'*.E', B las colas tambi!n reciben el
nombre de estructuras 6*6, primero en entrar primero en salirC.
las operaciones que se realizan en una cola son las siguientes3
encolar 3 es insertar un elemento en la cola , recuerde que se hace por el
eGtremo llamado ultimo.
desencolar3 es eGtraer un elemento de la cola, recuerde que se hace por el
eGtremo llamado primero.
Un ejemplo cl"sico de una cola es la que hacen las personas esperando ser
atendidos en una ventanilla.
Una cola se puede representar con un vector, con un vector circular o con una
lista.
regresar
&,$% 'E#'EE4(%+% &,., 8E&(,'
En la representacin de las colas en arreglos se manejan las siguientes
variables3 &,$%, U$(*.,, #'*.E', y .%D*.,.
&,$% 3 nombre del vector que sirve para representar la estructura.
U$(*.,3 posicin en el vector que indica donde esta el ultimo elemento de la
cola.
#'*.E',3 posicin en el vector que indica donde esta el primer elemento de
la cola.
.%D*.,3 tamao del vector o m"Gimo n2mero de elementos de la &,$%.
los diferentes estados de una cola se muestran a continuacin3
&,$% 'E#'EE4(%+% &,., 8E&(,'
&*'&U$%'
#ara hacer un uso m"s eficiente de la memoria disponible se trata a la cola Bel
vector que la representa C como una estructura circular.
En la representacin de las colas en arreglos se manejan las siguientes
variables3 &,$%, U$(*.,, #'*.E', y .%D*.,.
&,$% 3 nombre del vector que sirve para representar la estructura.
U$(*.,3 posicin en el vector que indica donde esta el ultimo elemento de la
cola.
#'*.E',3 posicin en el vector que indica donde esta el primer elemento de
la cola.
.%D*.,3 tamao del vector o m"Gimo n2mero de elementos de la &,$%.
los diferentes estados de una cola se muestran a continuacin3
&,$% 'E#'EE4(%+% &,., $*(%
*.#$E.E4(E $*-%+%
para manejar la estructura cola como una lista simplemente ligada, se define
una lista cuya direccin del primer nodo se guarda en una variable tipo
puntero llamada cola y la direccin del 2ltimo nodo se guardar" en una
variable de tipo puntero llamada ultimo. $as operaciones de encolar y
desencolar se realizar"n de la siguiente manera3
para encolar un dato se actualiza la liga del 2ltimo nodo, agregando de esta
manera el nuevo dato al final de la lista.
para desencolar un dato se eGtrae el dato al principio de la lista.
demostracin, regresar
9U'9UF%/
Es el metodo mas utilizado por los estudiantes
principiantes de computacin, por su f"cil comprensin y
programacin. pero es probablemente el m!todo mas
ineficiente.
$a idea b"sica de este algoritmo consiste en comparar
pares de elementos adyacentes e intercambiarlos entre s
hasta que todos se encuentren ordenados. se realizan B 4T/
C pasadas, transportando en cada una de las mismas el
menor o mayor elemento Bseg2n sea el casoC a su posicin
ideal.
al final de las B4T/C pasadas los elementos del arreglo
estar"n ordenados.
+E.,('%&*,4
'E-'E%'
9U'9UF%0
Es el metodo mas utilizado por los estudiantes principiantes de computacin,
por su f"cil comprensin y programacin. pero es probablemente el m!todo
mas ineficiente.
$a idea b"sica de este algoritmo consiste en comparar pares de elementos
adyacentes e intercambiarlos entre s hasta que todos se encuentren ordenados.
se realizan B 4T/ C pasadas, transportando en cada una de las mismas el menor
o mayor elemento Bseg2n sea el casoC a su posicin ideal.
al final de las B4T/C pasadas los elementos del arreglo estar"n ordenados.
+E.,('%&*,4
9U'9UF% &,4 E^%$
Este m!todo es una modificacin del m!todo de burbuja. $a idea central de
este algoritmo consiste H
en utilizar una marca o seal para indicar que no se ha producido ning2n
intercambio en una pasada. H
Es decir, se comprueba si el arreglo est" totalmente ordenado despues de cada
pasada. H
terminando su ejecucin en caso afirmativo. H
+E.,('%&*,4
'E-'E%'
%&U+*+%
Es una optimizacin del m!todo de intercambio directo. $a idea basica de este
algoritmo consiste en mezclar las dos formas en que se puede realizar el
m!todo de la burbuja.
En este algoritmo cada pasada tiene dos etapas. En la primera etapa Bde
derecha a izquierdaC se trasladan los elementos m"s pequeos hacia la parte
izquierda del arreglo, almacenando en una variable la posicin del ultimo
elemento intercambiado.
En la segunda etapaBde izquierda a derechaC se trasladan los elementos m"s
grandes hacia la parte derecha del arreglo, almacenando en otra variable la
posicin del ultimo elemento intercambiado. $as sucesivas pasadas trabajan
con los componentes del arreglo comprendidos entre las posiciones
almacenadas en las variables.
El algoritmo termina cuando en una etapa no se producen intercambios o bien,
cuando el contenido de la variable que almacena el eGtremo izquierdo del
arreglo es mayor que el contenido del la variable que almacena el eGtremo
derechoH
+E.,('%&*,4
E$E&&*,4
$a idea b"sica de este algoritmo consiste en buscar el menor elemento del
arreglo y colocarlo en la primera posicin.
$uego se busca el segundo elemento m"s pequeo del arreglo y se coloca en
la segunda posisin. El proceso contin2a hasta que todos los elementos del
arreglo hayan sido ordenados.
+E.,('%&*,4
'E-'E%'
*4E'&*,4
Es el metodo que generalmente utilizan los jugadores de cartas cuando
ordenan estas.
$a idea central de este algoritmo consiste en insertar un elemento al arreglo a
la vez y ubicarlo el la posicion indicada.
este proceso se repite desde el segundo hasta el nTesimo elemento. H
+E.,('%&*,4
*4E'&*,4 9*4%'*%
El m!todo de ordenacin por insercin directa puede mejorarse f"cilmente.
#ara ello se recurre a una b2squeda binaria en lugar de una b2squeda
secuencial para isertar un elemento en la parte izquierda del arreglo, que ya se
encuentra ordenado. El proceso se repite desde el segundo hasta el nTesimo
elemento. H
+E.,('%&*,4
'E-'E%'
_U*&`,'(
El metodo de ordenacin quic]sort es actualmente el m"s eficiente y veloz de
los m!todos de ordenacin interna.
$a idea central de este algoritmo consiste en los siguiente 3
/. e toma un elemento D de una posicin cualquiera del arreglo
0. e trata de ubicar a D en la posicion correcta del arreglo, de tal forma que
todos los elementos que se encuentren a su izquierda sean menores o iguales a
D y todos los elementos que se encuentren a su derecha sean mayores o
iguales a D.
1. se repiten los pasos anteriores pero ahora para los conjuntos de datos que se
encuentran a la izquierda y a la derecha de la posicin correcta de D en el
arreglo.
>. El proceso termina cuando todos los elementos se encuentran en su
posicin corcecta en el arreglo.
+E.,('%&*,4
OE$$
En el metodo de ordenacin por insercin directa cada elemento se compara
para us ubicacin correcta en el arreglo con los elementos que se encuentran
en la parte izquierda del mismo.
i el elemento a insertar es m"s pequeo que el grupo de elementos que se
encuentran a su izquierda, es necesario efectuar entonces varias
comparaciones antes de su ubicacin.
OE$$ propone que las comparaciones entre elementos se efect2en con saltos
de mayor tamao pero con incrementos decrecientes, as, los elementos
quedar"n ordenados en el arreglo m"s rapidamente.H
+E.,('%&*,4
'E-'E%'