You are on page 1of 8

RESUMEN TEORA ALGORITMOS

RECURSIN
Definicin de recursin
Soluciones elegantes y simples para problemas de gran complejidad, muy bien
estructuradas y modulares. Semejante al diseo top-down (un problema P se
descompone en problemas Pi), con la diferencia que las descomposiciones de problemas
de recursin son del mismo tipo.
Diferencia entre recursividad e iteracin con respecto al uso de
eoria!
l espacio de memoria necesario para ejecutar un algoritmo recursi!o es muc"o mayor
que el iterati!o. n un algoritmo recursi!o se genera un registro de acti!acin por cada
llamada al mismo subprograma, representando en memoria los datos necesarios para su
ejecucin cada !e# que sea in!ocado. n el iterati!o slo se genera un registro de
acti!acin.
"#u$ de%e cuplirse en el dise&o de un procediiento recursivo'
Para el diseo de una solucin recursi!a "ay que "acerse cuatro preguntas$
- %&mo representar el problema en t'rminos de !arios problemas, mas c"icos y
del mismo tipo(
- %&mo reducir el tamao del problema en cada llamada recursi!a(
- %)u' instancia ser*a el caso base(
- %)u' manera de reducir el problema nos asegura llegar al caso base(
(eneficios ) per*uicios de iteracin ) recursin
- n tiempos de ejecucin y espacio ocupado en memoria la iteracin es m+s
eficiente.
- ,a recursin sir!e cuando el lenguaje elegido no tiene estructura de control
repetiti!a.
- ,a recursin sir!e para problemas de gran en!ergadura.
ERRORES
Descri%a un par de errores durante la pro+raacin en, por lo
enos, cuatro clasificaciones de tipos de errores!
Descri%a errores de tres tipos diferentes, indicando el tipo de error
al -ue pertenece!
-odas las clasificaciones$
.- Por referencia de datos$
- /ariables sin iniciali#ar (el uso)
- Punteros con direcciones in!+lidas.
- 0ndices fuera de rango
- 0ndices de tipo no entero.
- ,ectura interna de arc"i!os de distinto tipo.
- Par+metro de tipo diferente al in!ocado
1- Por declaracin de datos$
- /ariables no declaradas
- /ariables con el mismo nombre
- 2rreglos no iniciados
- -ipos de !ariables no apropiadas para resol!er el problema
- ,ongitudes no apropiadas
3- 4e computacin
- &+lculos con !ariables no num'ricas
- &+lculos entre !ariables de distinto tipo
- 5peraciones entre !ariables de diferente longitud
- /ariables con longitud no apropiada para una e6presin
- 7esultados que produ#can o!erflow
- 4i!isiones por cero
- 0ndice fuera de rango
8- 4e comparacin$
- &omparacin entre !ariables no consistentes
- /ariables de distinto tipo
- 6presiones lgicas incorrectas
9- 4e control de proceso$
- :o termina repeticin
- :o termina el programa
- ;or#ar una estructura de control
- 4ecisiones incompletas en su e6presin lgica
<- n interfases$
- 4iferente cantidad de argumentos en in!ocacin
- 2rgumentos de diferente tipo en in!ocacin y encabe#ado
- 4iferente orden en in!ocacin y encabe#ado
=- ntrada>Salida$
- ?nstrucciones incorrectas en apertura
- :o se considera condicin de 5; (se lee registro de arc"i!o sin preguntar)
- 4iferentes formatos en la lectura y grabacin
- :o coincide el tipo de apertura con las instrucciones
- /ariables de diferente tamao respecto a !alores del arc"i!o
@- 5tros$
- 5misin de una funcin en la codificacin
SegAn /isual Studio 1BB9$
.- rrores de compilacin$ impiden la ejecucin del programa por errores en la
sinta6is, puntuacin, palabra del cdigo o en una sentencia.
1- rrores en tiempos de ejecucin$ Se completa la compilacin pero no el
funcionamiento correcto del programa. Cna instruccin no se puede lle!ar a
cabo.
3- rrores lgicos$ no se producen errores pero no se llega al fin deseado. &omo
longitudes de !ariables no deseadas.
SegAn &DD$
.- rrores irrele!antes$ afectan nada m+s que la est'tica.
1- rrores no gra!es$ deseables e corregir pero no afectan.
3- rrores cr*ticos$ con punteros, bucles, e6ceso de llamadas recursi!as, l*mites de
!ectores, mal uso de objetos, etc.
Mencionar por lo enos tres posi%les errores de coeter al utili.ar
arc/ivos!
?nstrucciones que no coinciden con el tipo de aperturaE registro del programa y del
arc"i!o de distinto tipoE no se considera condicin de 5;E no se cerr al finali#ar.
"#u$ error se puede producir si se utili.an varia%les +lo%ales en
lu+ar de par0etros, en el cdi+o de diferentes
procediientos'
Pueden aparecer errores debidos a algAn cambio no pre!isto en una de estas !ariables.
FUNCIONES Y PROCEDIMIENTOS
Diferencia en los resultados de transferir un par0etro por valor )
por referencia!
Efecto -ue provocan operaciones entre par0etros!
l resultado de los par+metros por !alor no tiene cambio fuera del subprograma. ,os
par+metros pasados por referencia alteran el resultado de la !ariable pasada.
1onsideraciones para el uso correcto de par0etros! 1o, cu0ndo
) por -u$!
,a transferencia de datos puede ser unidireccional o bidireccional. 4e
unidireccionalidad si el programa en!*a datos (de entrada) al subprograma sin esperar
resultados. s bidireccional si en!*a datos (de >S) con el objeti!o de que el
subprograma los modifique. Si en!*a !ariables sin !alor para que el subprograma le d'
resultados el dato es de salida y la transferencia es unidireccional.
Diferencia de ane*o interno entre referencia ) valor!
Mane*o interno de par0etros forales!
Tipos de pasa*e de par0etros!
Por !alor los subprogramas reciben como !alor inicial en los par+metros formales, los
!alores del par+metro actual. n este caso, los par+metros son de entrada, ya que se
trabaja slo con una copia del !alor del par+metro actual. n cambio, en los par+metros
formales pasados por referencia, no se en!*a el !alor en s*, sino la direccin del
par+metro actual (que deben ser !ariables), entonces cualquier modificacin en el
par+metro formal afecta al actual. ,os par+metros pueden ser de salida o de >S.
Diferencia entre funcin ) procediiento! "1u0ndo aplico cada
uno'
,os procedimientos admiten par+metros por !alor o referencia. :o pueden ser usados en
e6presiones. Pueden tener !arias salidas. Su in!ocacin se reali#a como si fueran m+s
instrucciones.
,as funciones slo admiten par+metros por !alor. st+n pensados para usar en
e6presiones. -ienen un resultado de tipo simple.
&uando queremos obtener m+s de un !alor o ninguno, utili#amos procedimientos, y
cuando queremos obtener slo uno, utili#amos funciones.
1ondiciones a respetar en el pasa*e de par0etros reales )
forales!
2 los procedimientos se les asocia un nombre con el que se los in!oca. Pueden tener
entradas y salidas dadas por los par+metros que reciben argumentos, cuya
correspondencia se dan por cantidad y posicin. 4eben ser del mismo tipo los
par+metros reales o actuales que los formales.
1oncepto de particin en %lo-ue ) refinaientos sucesivos!
n el an+lisis de un problema, se debe anali#ar desde lo general "asta lo particular. n
ese diseo es cuando se definen los mdulos que corresponden a tareas que se
identifican dentro del proceso general a controlar. Se puede definir una !ersin de la
solucin y "asta sin llegar a desarrollar el cdigo. ,uego se profundi#a en los mdulos o
subproblemas y puede detectarse la necesidad de reali#ar cambios o aplicar otra lgica
para alcan#ar una mejor solucin al problema planteado. Sin cambiar el objeti!o, se
reali#an ajustes sobre el cmo se lo construye y no sobre qu' se debe obtener.
ARREGLOS Y REGISTROS
structuras compuestas. -ipos de datos definidos por el usuario.
Definicin de2 re+istro ) arre+lo!
2rreglos$ conjunto finito y ordenado de elementos del mismo tipo en posiciones
consecuti!as de la 72F cuyos elementos se acceden mediante un *ndice. Su cantidad
de elementos es limitada y no puede ser modificada en ejecucin.
7egistros$ permiten almacenar un conjunto de datos de distinto tipo bajo un nombre
gen'rico, en posiciones sucesi!as de la 72F. ,os elementos de un registro se llaman
campos, y se referencia a ellos mediante un nombre. Pueden tener uno o m+s campos,
cuya cantidad no puede ser alterada en ejecucin.
Diferencias en el ane*o de los datos +uardados en estructuras de
datos tipo arre+lo ) re+istro!
,os arreglos sir!en para almacenar grandes cantidades de datos y tener acceso a ellos de
forma ordenada y sencilla. Su referencia con el *ndice debe ser con enteros (Pascal
permite con enteros).
,os registros son Atiles cuando queremos manejar !arios datos como un todo. Se puede
copiar un registro en su totalidad.
Iportancia de tipos de datos definidos por el usuario
,os tipos de datos definidos por el usuario son importantes ya que se utili#an para
representar la realidad. &omo un !ector de dimensin = que representa una semanaE o
un registro con nombre, apellido y legajo que representa un alumno.
ARCHIVOS
Definicin de arc/ivo ) su estructura
Son estructuras de datos que almacenan informacin que se asocian con un dispositi!o
au6iliar permanente. Se usan porque la 72F no tiene espacio, para transferir a otros
programas, o simplemente para conser!ar informacin.
Son colecciones de datos del mismo tipo relacionados entre s*, almacenados en un
dispositi!o au6iliar. l diseo de los arc"i!os est+ dado por registros, que son la unidad
m*nima de informacin transferible entre un arc"i!o y un programa.
structura u organiacin$
- Secuencial$ conjunto de registros almacenados consecuti!amente, con lo cual si
se quiere acceder al registro :, se debe acceder a todos los (:-.) anteriores.
- 4irecta$ los registros no est+n almacenados consecuti!amente. Se accede a ellos
por un *ndice o cla!e.
- Particionado$ es una combinacin de los anteriores. Se agrupan !arios registros,
cuyos grupos son accedidos mediante una posicin o cla!eE y dentro del grupo,
se recorre secuencialmente.
&aracter*sticas$
- -amao$ dado por la cantidad de registros que tiene el arc"i!o. l espacio en
memoria es &antGregistrosH&antGcamposGregistro.
- 2cti!idad$ frecuencia con la cual se utili#a el arc"i!o.
- &recimiento$ es el tamao que se pre!' tendr+ el arc"i!o.
- ,ugar de residencia$ disIette, cinta, &4, etc.
- 5rgani#acin$ directa, secuencial o particionada.
- -'cnicas de acceso$ secuencial o directa.
Especificaciones en el uso %0sico de un arc/ivo f3sico para llevar a
ca%o un proceso de suinistro de datos con ese soporte e
interaccin con $l!
2signacin$ el arc"i!o es guardado en memoria con un nombre f*sico. n el programa
es declarado con un nombre lgico. 2signando un arc"i!o, establecemos una relacin
entre 'stos dos.
2brir$ pone en acti!idad al arc"i!o posicionando el puntero de direccionamiento en el
primer registro del mismo. Jay dos modos de apertura$ de entrada se consulta el
contenido del arc"i!o. 4e salida es para crear o generar el contenido del arc"i!o. ,os
arc"i!os de organi#acin secuencial no permiten agregar, eliminar ni modificar registros
de un arc"i!o original.
&errar$ saca de acti!idad al arc"i!o.
"#u$ es eliinacin l+ica de un arc/ivo de or+ani.acin directa'
s un marca de estado que tiene el registro. ?ndica si el registro se borr o no.
Diferencias entre +ra%ar odificaciones en un arc/ivo de
or+ani.acin secuencial ) or+ani.acin directa!
Si el arc"i!o no e6iste, la forma de grabar es la misma. n cambio, si e6iste, la
diferencia en modificar el arc"i!o es que los de organi#acin secuencial tienen que crear
un arc"i!o nue!o (con las respecti!as modificaciones), en cambio los de organi#acin
directa modifican el arc"i!o e6istente ya que cuentan con las funciones ?r y Posicion.
PUNTEROS
,a cantidad de espacio en memoria ocupada por una estructura est+tica debe ser
conocida a priori y no puede ser modificada durante la ejecucin. Por otro lado, la Anica
manera de ordenar datos es "aci'ndolo f*sicamente$ intercambiar datos de un lugar
f*sico a otro de la estructura. ,a eliminacin e insercin de datos tambi'n implica
corrimientos.
,os punteros permiten crear estructuras de datos din+micas, que tienen la capacidad de
!ariar su tamao y ocupar la memoria necesaria durante la ejecucin. Cn puntero es una
!ariable cuyo !alor o contenido es una direccin de memoria. Se utili#a para almacenar
esa direccin de otra !ariable, que es la que !a a contener el dato.
,a declaracin de un puntero reser!a espacio de memoria dejando sus contenidos
indefinidos "asta que se creen las !ariables apuntadas.
- &rear(p) asigna memoria. ,a !ariable apuntada se crea en una #ona de memoria
llamada pila o K"eapL (#ona de !ariables din+micas).
- ,iberar(p) libera la posicin de memoria "eap y deja indefinido el contenido del
puntero.
Listas
Sucesin de nodos. &ada nodo tiene un dato y un puntero al siguiente nodo. Slo se
conoce de las listas la direccin del primer nodo. l Altimo nodo tiene un puntero cuyo
!alor es especial y se denomina KnilL. ,os elementos de la lista no est+n en posiciones
consecuti!as de la memoria, por lo cual se necesita conocer su direccin. l uso m+s
eficiente de la memoria lo brinda 'sta estructura. M adem+s, permiten una f+cil
intercalacin y eliminacin de elementos sin necesidad de "acer mo!imientos masi!os
de datos en la memoria (no se necesitan corrimientos).
Pila$ estructura de datos din+mica cuyos se manipulan siguiendo la pol*tica ,?;5 (last-
in, first-out), en la que el Altimo dato almacenado es el primero en ser procesado. Sus
operaciones b+sicas son &rear, s/ac*a, 2pilar y 4esapilar (y retornarlo).
&ola$ estructura de datos din+mica cuyos elementos son manipulados siguiendo la
pol*tica ;?;5 (first-in, first-out), en la que el primer dato almacenado es el primero en
ser procesado. ,a cola es un registro que contiene la direccin de inicio de la lista y la
direccin del Altimo elemento. Sus operaciones b+sicas son$ &rear, s/ac*a, ncolar (al
final) y 4esencolar (el Altimo, y retornarlo).
ALGORITMOS
4ases de resolucin de un pro%lea
- 2n+lisis del problema$ se deben saber cu+les son los datos conocidos del
problema, cu+les son los que faltan, los de salida y los objeti!os. Se deben
determinar las relaciones entre las entradas y las salidas. l an+lisis es un
mdulo simplificado del problema, que nos dice cmo "ay que resol!er.
- 4iseo del algoritmo$ se disea el algoritmo en el que se especifican todas las
acciones necesarias para resol!er el problema.
- &odificacin$ es el algoritmo e6presado en un lenguaje de programacin que
resuel!e el problema.
- jecucin$ puesta en marc"a del programa. s necesario cargar el programa en
memoria pre!iamente y luego compilarlo. ,a compilacin reali#a un an+lisis de
la sinta6is del cdigo, y da errores para corregir. &uando el programa es correcto
lo guarda como un objeto.
- 4epuracin$ etapa de !erificacin y correccin de errores.
- 4ocumentacin$ es para el entendimiento del programador y el usuario. ,a
informacin interna aparece en el cdigo para el entendimiento del que
programa.
- Fantenimiento$ ya con el programa ejecut+ndose en el tiempo, 'sta etapa es en
la que se perfecciona el sistema (ampliamiento, correccin, etc.).
Al+orito
&onjunto finito de pasos definidos, estructurados en el tiempo y formulados en base a
un conjunto finito de reglas no ambiguas que pro!een un procedimiento para dar
solucin a un problema.
&aracter*sticas$ correcto, eficiente, claro (documentado), confiable y fle6ible.
5ro+raa
&on!ersin de un algoritmo utili#ando los constructores formales de un lenguaje de
programacin para poder ser ejecutado.
5aradi+a
Patrones conceptuales que "acen a la forma de pensar un problema, disear un
algoritmo y crear un programa. nsamblador, imperati!o, objetos (estructuras f*sicas),
lgico, funcional (matem+ticos), etc.
6aria%le
spacio en memoria que permite almacenar temporalmente un dato en ejecucin. 4ebe
tener un nombre para identificarla en memoria.
Asi+nacin
5peracin en la que se le da !alor a una !ariable. Siempre es destructi!a. Se clasifica$
- Simple$ asigna un !alor constante.
- &ontador$ consiste en incrementar su mismo !alor tantas !eces se cumpla una
condicin.
- 2cumulador$ consiste en sumarse a s* mismo una cantidad tantas !eces se
cumpla una condicin.
- 4e trabajo$ su resultado depende de operaciones de m+s de una !ariable.
Tipos de datos
- scalares$ b+sicos (entero, caracter, real, etc.), definidos por el usuario.
- &ompuestos$ arreglos, registros, arc"i!os.
- st+ticos.
- 4in+micos$ listas (pila, cola, etc.), grafos, +rboles.
4unciones priitivas
Para nAmeros$
2NS(b)$ calcula !alor absoluto. b es real.
:-(n)$ funcin parte entera en matem+tica. n es real.
P5-:&?2(b,n)$ b a la n. b es real y n natural.
72?O(b,i)$ la ra*# i de b. b es real e i es natural.
-7C:&27(n)$ elimina la parte decimal de n. n es real.
745:427(n,d).
Para cadenas$
:C/2,?:2()$ el cursar salta de l*nea.
&:-727(cad,num)$ centra la cadena cad en una nue!a cadena de num caracteres.
&5:&2-:27(c.,c1..cI)$ pega todas las cadenas en una sola.
SCN&24(s,i,n)$ e6trae de la cadena s, la subcadena que comien#a en i y termina en los
n caracteres siguientes.
P5S(s.,s1)$ de!uel!e en qu' posicin de s. se encuentra por primera !e# s1.
CORRECCIN Y COMPLEJIDAD DE UN ALGORITMO
Especificacin foral de un al+orito
6presin del efecto que !a a tener el algoritmo sobre los datos de entrada y en lo que
consisten los mismos. Por ejemplo, la Suma(:) que es la sumatoria de los : nAmeros
naturales que toma una !ariable ? desde . "asta :.
Definicin foral de un al+orito correcto
l algoritmo correcto es el que satisface la especificacin formal. s parcial si cumple
con la especificacin formal, y es total si cumple con cualesquiera datos !+lidos.
6erificacin
Fecanismo que re!isa si el algoritmo es correcto totalmente. Se reali#a una prueba de
escritorio para una !erificacin parcial, y una !erificacin formal para total.
1ople*idad
Se busca medir la eficiencia de los algoritmos comparando los recursos utili#ados. Para
un an+lisis de complejidad o eficiencia "ay dos enfoques$ el emp*rico (se ejecutan en
m+quina y se comparan resultados) y el terico (se determinan matem+ticamente los
recursos utili#ados). Para una e!aluacin de eficiencia se estudia$ eficiencia en memoria
o complejidad espacial (cantidad de almacenamiento necesario) y eficiencia en tiempo.

You might also like