You are on page 1of 22

INSTRUCCIONES DE REPETICION Las instrucciones de repeticin son necesarias cuando en un algoritmo hay que realizar una o muchas tareas

varias veces, las instrucciones de repeticin bsicas son: el MIENTRAS y el PARA, cada una de las cuales tiene su propia representacin y su propia manera de controlar el nmero de veces que se repetir el ciclo( instrucciones internas ). estas caractersticas hacen que una instruccin de repeticin sea mas adecuado que la otra en una situacin particular. ESTRUCTURA MIENTRAS( while) La estructura repetitiva mientras es aquella en que las instrucciones internas (bucle )se ejecutan mientras se cumple una determinada condicin. La estructura es la siguiente:
y y y y y y y y y y

Inicio Instruccin 1 mientras expresin_lgica haga .......Instruccin 11 .......Instruccin 12 .......Instruccin 13 fin mientras Instruccin n fin del programa

Cuando se ejecuta la instruccin mientras. La primera cosa que sucede es que se evala la condicin (una expresin lgica). Si la expresin es falsa, ninguna accin del bucle( parte interna) se ejecuta y el programa continua en la siguiente instruccin al bucle. Si la expresin es verdadera, entonces se ejecuta el cuerpo del bucle. Despus de lo cual se evala de nuevo la expresin booleana. Este proceso se repite una y otra vez mientras la expresin lgica (condicin) sea verdadera. Dentro del cuerpo del bucle debe existir una instruccin que modifique la expresin de tal manera que en algn momento haga que su valor sea falso. Es decir que garantice la terminacin del ciclo.

Para controlar el nmero de repeticiones del ciclo se puede hacer de dos maneras: 1. 2. utilizando una variable contador. utilizando una variable centinela. problemas propuestos ESTRUCTURA DE REPETICIN PARA (FOR) Permite que un grupo de instrucciones se repita cero o mas veces, dependiendo del valor que resulte al evaluar una expresin de tipo lgico. La estructura es la siguiente: Para expresin_inicio, expresin_lgica, expresion_incremento .......Instruccion1 .......Instruccion2 ......Instruccion3 ......Instruccion4 Fin para Instruccin n la expresin_inicio establece la condicin inicial para la variable de control evaluada en la expresin lgica. La expresion_incremento modifica la variable de control. La expresin_lgica es una expresin formado con la variable de control, y que sirve para controlar el nmero de iteraciones del ciclo el cual termina cuando su valor sea falso. ejemplo 1 ejemplo 2 ejemplo 3 ejemplo 6 ejemplo 7 ejemplo 8

ejemplo 4 ejemplo 5 problemas propuestos SUBALGORITMOS

ejemplo 9 ejemplo 10

cuando un algoritmo crece demasiado, se hace necesario dividirlo en subalgoritmos o mdulos, llamados funciones o procedimientos. Esta divisin nos permite: 1. 2. hacer mas entendible los algoritmos. la deteccin y correccin de problemas se hace mas simple, pues los problemas estn mas localizados, no es necesario analizar todo el algoritmo, slo el mdulo que esta fallando. permite que los subalgoritmos se especialicen en resolver una tarea especfica, sin importarles como funcionan los dems 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 utilizar( llamar) 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. FUNCINES: Una funcin es un subalgoritmo que toma uno o ms valores llamados argumentos y produce un valor llamado resultado (valor de la funcin para los argumentos dados). DECLARACION DE FUNCINES: La declaracin de una funcin requiere una serie de pasos que la definen. Una funcin tiene una construccin similar a los algoritmos.

3.

4.

La descripcin de la funcin ser: tipo de dato: nombre_fincin (lista de parmetros) <acciones> devolver( expresin ) fin funcin
1. tipo de dato: indica de que tipo de dato es la informacin que 2. 3. 4.

5. 6. 7.

devuelve la funcin. dos puntos ' : ' nombre de la funcin : debe ser un identificador vlido 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 puntos(' : ') donde se especifican los datos que requiere la funcin para trabajar. Acciones o cuerpo de la funcin: son las diferentes tareas que realiza la funcin. devolver( expresin ): se indica que dato es el que devolver la funcion al subalgoritmo que lo llam. fin funcion: para indicar donde termina la funcin.

INVOCACION DE LAS FUNCINES: Una funcin puede ser llamada de la siguiente manera:

nombre_fincin ( lista de parmetros actuales)

la lista de parmetros actuales debe corresponder en tipo y cantidad con la lista de parmetros (formal) definidos en la funcin. Una llamada a la funcin implica los siguientes pasos: a cada parmetro formal se le asigna el valor real de su correspondiente parmetro actual. Se ejecuta el cuerpo de acciones de la funcin Se devuelve el valor de la funcin al nombre de la funcin y se retorna al punto de llamada.

ejemplo 1 ejemplo 2 ejemplo 3 ejemplo 4 ejemplo 5 problemas propuestos PROCEDIMIENTOS

ejemplo 6 ejemplo 7 ejemplo 8 ejemplo 9 ejemplo 10

Un procedimiento es un subalgoritmo que toma uno o ms valores llamados argumentos, con los cuales ejecuta tareas especficas. DECLARACION DE PROCEDIMIENTOS: La 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 parntesis una lista de argumentos del procedimiento. A continuacin ir el cuerpo del procedimiento, que ser una serie de acciones o instrucciones que conforman el cuerpo del procedimiento. La descripcin del procedimiento ser: nombre_procedimiento (lista de argumentos) <acciones> fin procedimiento
1. nombre del procedimiento : debe ser un identificador vlido

y unico que se utiliza para identificar al procedimiento. 2. lista de argumentos. Es una lista de declaraciones de variables se paradas por dos puntos(' : ') donde se especifican los datos que requiere el procedimiento para trabajar.

3. Acciones o cuerpo del procedimiento: son las diferentes

tareas que realiza el procedimiento. 4. fin procedimiento: para indicar donde termina el procedimiento. INVOCACION DE LOS PROCEDIMIENTOS: Un procedimiento puede ser llamada de la siguiente manera:

nombre_procedimiento ( lista de parmetros actuales)

la lista de parmetros actuales debe corresponder en tipo y cantidad con la lista de parmetros (formal) definidos en la funcin. Una llamada a un procedimiento implica los siguientes pasos: a cada parmetro formal se le asigna el valor real de su correspondiente parmetro actual. Se ejecuta el cuerpo de acciones del procedimiento. Se regresa a la instruccin siguiente del punto de llamada. ejemplo 1 ejemplo 2 ejemplo 3 ejemplo 4 ejemplo 5 problemas propuestos REGRESAR ejemplo 6 ejemplo 7 ejemplo 8 ejemplo 9 ejemplo 10

LAS TORRES DE HANOI

Hanoi es uno de las aplicaciones clsicas 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 N discos de diferente tamao. el juego consiste en pasar todos los discos que estn inicialmente en una torre (ordenados de mayor a menor de abajo hacia arriba) llamada origen y pasarlos a una torre llamada destino, siguiendo las siguientes reglas: 1. 2. slo se puede trasladar un disco a la vez. nunca puede haber en una torre un disco de mayor tamao, sobre otro disco de menor tamao.

ESTRUCTURAS DE DATOS

ARREGLOS: Un arreglo es una coleccin de datos del mismo tipo, que se almacenan en posiciones consecutivas de memoria y reciben un nombre comn. Para 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. Los arreglos pueden ser: unidimensionales (vectores). Bidimensionales (matrices, tablas). Multidimensionales(tres dimensiones o ms). ARRAY UNIDIMENSIONALES O VECTORES Los pasos para la utilizacin de un vector son; 1 Declarar el vector: consiste en establecer el nombre, el tamao y el tipo de los datos que se van a almacenar en el arreglo ejemplo: hay que diferenciar dos trminos : tamao del vector (T): es el numero mximo de elementos que puede contener el vector. Numero de elementos(N): que indica cuantos elementos hay almacenados en el arreglo en determinado momento. Nota N<=T. T = 10;

Real: notas[T] 2 Llenar el vector con los datos: Se puede hacer en el momento de la declaracin asignando al vector los valores que necesitamos almacenar. Ejemplo. real : notas[10] = {2.3 , 3.5 , 4.2 , 3.3 , 3.0 , 4.9 , 4.2 , 3.0 , 2.0 , 1.5 }; recorriendo el arreglo as: para i = 1 hasta N .......leer( notas[i] ) fin del para 3 manipular la informacin guardada en el vector. Para esto es necesario recorrer dicha estructura y se puede hacer de la siguiente manera. para i = 1 hasta N ......mostrar ( notas[i] ) fin del para las operaciones que se pueden realizar con los arreglos son las siguientes: - lectura (llenar el vector) - escritura (mostrar el vector) - asignacin (dar valor a una posicin especfica) - actualizacin (insercin , eliminacin, modificacin ) - ordenacin . (burbuja, insercin directa, seleccin directa, selle y quicksort). - bsqueda. (secuencial , binaria, hash( por claves) ). ARRAY BIDMENSIONALES (MATRICES) Consiste en un vector de vectores y es por lo tanto un conjunto de elementos del mismo tipo en el que el orden de los componentes es significativo y en el que necesitan especificarse dos subndices para poder identificar cada elemento de la matriz. Los pasos para la utilizacin de una matriz son; 1. declarar la matriz: consiste en establecer el nombre, el tamao y el tipo de los datos que se van a almacenar en la matriz ejemplo: N = 3; M = 4; Real: matriz[N][M] 2. llenar la matriz con los datos: se puede hacer en el momento de la declaracin asignando a la matriz los valores que necesitamos almacenar. Ejemplo. real: notas[][ ] = { {2.3 , 3.5 , 4.2 },{ 3.3 , 3.0 , 4.9} ,{ 4.2 , 3.0 , 2.0 } }

recorriendo el arreglo as: para f = 1 hasta 3 , 1 ........para c = 1 hasta 4 , 1 ..................leer( matriz[f][c] ) ........fin del para fin del para 3. manipular la informacin guardada en la matriz. Para esto es necesario recorrer dicha estructura y se puede hacer de la siguiente manera. para f = 1 hasta 3 ,1 ......para c = 1 hasta 4, 1 ..............mostrar ( matriz[f][c] ) ......fin del para fin del para

REGISTROS
Un registro es un dato estructurado, donde cada uno de sus componentes se denomina campo. Los campos de un registro pueden ser todos de diferentes tipos. Por lo tanto tambin podrn ser registros o arreglos. Cada campo se identifica por un nombre nico (el identificador del campo): DEFINICION DE REGISTRO Para definir un registro se har de la siguiente manera: REGISTRO:id_registro ....tipo1:id_campo1 ....tipo2:id_campo2 ....tipo3:id_campo3 fin de la definicin para acceder a un campo determinado de un registro se har de la siguiente manera:

id_registro.id_capo
ejemplo1, problemas propuestos

VECTORES DE REGISTROS
Tambin se puede manejar un vector de registros. Recuerde que el vector debe contener datos del mismo tipo (en este caso todos los datos son del tipo registro). DEFINICION: para definir un vector de registros proceda de la siguiente manera: Vector[ 5] : id_registro Donde id_registro es el identificador que se le dio al registro.

MATRIZ DE REGISTROS
Tambin se puede manejar una matriz de registros. Recuerde que la matriz debe contener datos del mismo tipo (en este caso todos los datos son del tipo registro). DEFINICION: para definir una matrizr de registros proceda de la siguiente manera: id_registro:MaT[N][M] Donde id_registro es el identificador que se le dio al registro. N es el nmero de filas de la matiriz y M es el nmero de columnas de la matriz. LISTAS ENLAZADAS Una lista enlazada o encadenada es un conjunto de elementos en los que cada elemento contiene la posicin (o direccin ) del siguiente elemento de la lista. Cada elemento de la lista debe tener al menos dos campos: un campo que contiene el valor del elemento y un campo( enlace, link) que contiene la posicin del siguiente elemento, es decir su conexin, enlace o encadenamiento. Los elementos de una lista son enlazados por medio de los campo enlaces. Las listas enlazadas se conforman por nodos, como el que se muestra a continuacin.

Los componentes de los nodos se llaman campos. Un nodo tiene al menos un campo dato o valor y un enlace o liga (direccin o puntero) con el siguiente campo. El ultimo nodo de la lista enlazada tiene como liga un NULL, 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 .

Las listas enlazadas son estructuras dinmicas, 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 por: El tipo de sus elementos o nodos Campo de informacin (datos) Campo enlace o liga (puntero) Un puntero de cabecera que permite acceder al primer elemento de la lista, utilizaremos la variable llamada punta. Un medio para determinar el ultimo elemento de la lista: liga = null. Para acceder al campo dato de un registro p utilizaremos la siguiente notacin k = p.dato asignar a la variable k el valor que hay en p.dato si la punta = null quiere decir que la lista esta vaca. Para pedir un nodo p

pcrea_nodo() para liberar un nodo de la memoria se har de la siguiente manera: libere(p) Para manipular y sacar informacin de la lista es necesario recorrerla y se hace de la siguiente manera:

Las operaciones bsicas para el manejo de listas enlazadas son: Insertar al principio de la lista un dato dado mostrar el promedio de los datos de la lista decir si un dato dado se encuentra o no en la lista. Eliminar un dato dado de la lista LISTAS SIMPLEMENTE LIGADAS CIRCULARES

Las 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 (punta) o principio de la lista.

Las listas circulares presentan las siguientes ventajas respecto a las listas simplemente enlazadas.
y y

Dado un nodo se puede recorrer la lista completa. Las operaciones de concatenacin y divisin de las listas son ms eficaces con listas circulares.

Entre los inconvenientes esta que se pueden presenta ciclos infinitos en los algoritmos. Para manipular y sacar informacin de la lista es necesario recorrerla y se puede hacer de la siguiente manera:

LISTAS SIMPLEMENTE LIGADAS CIRCULAR CON REGISTRO CABEZA La representacin grfica de esta lista es la siguiente:

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 manera:

El registro cabeza se utiliza para facilitar las operaciones de recorrer la lista, insertar un registro, borrar un registro etc. Para manipular y sacar informacin de la lista es necesario recorrerla y se puede hacer de la siguiente manera:

LISTAS SIMPLEMENTE LIGADAS CIRCULAR CON REGISTRO CABEZA La representacin grfica de esta lista es la siguiente:

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 manera:

El registro cabeza se utiliza para facilitar las operaciones de recorrer la lista, insertar un registro, borrar un registro etc. Para manipular y sacar informacin de la lista es necesario recorrerla y se puede hacer de la siguiente manera:

PILAS REPRESENTADAS COMO VECTOR

En la representacin de las pilas en arreglos se manejan las siguientes variables: Pila, TOPE y mximo. Pila : nombre del vector que sirve para representar la estructura. tope: posicin en el vector que indica donde esta el ultimo elemento de la pila. Mximo: tamao del vector o mximo nmero de elementos de la pila. Los Estados de una pila son:
y y y

pila llena pila con algunos elementos pila vacia

la representacin grfica el la siguiente:

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 manera:
y y

apilar : se debe insertar el elemento al inicio de la lista. desapilar : se extrae el elemento que esta al inicio de la lista.

regresar COLAS Una cola es una lista de elementos en la cual las operaciones de insercin se efectan en un extremo llamado ULTIMO y las operaciones de borrado se efectan en el otro extremo llamado PRIMERO ( las colas tambin reciben el nombre de estructuras FIFO primero en entrar primero en salir). las operaciones que se realizan en una cola son las siguientes: encolar : es insertar un elemento en la cola , recuerde que se hace por el extremo llamado ultimo. desencolar: es extraer un elemento de la cola, recuerde que se hace por el extremo llamado primero. Un ejemplo clsico 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.

COLAS REPRESENTADAS COMO VECTOR


En la representacin de las colas en arreglos se manejan las siguientes variables: COLA, ULTIMO, PRIMERO y MAXIMO. COLA : nombre del vector que sirve para representar la estructura. ULTIMO: posicin en el vector que indica donde esta el ultimo elemento de la cola.

PRIMERO: posicin en el vector que indica donde esta el primer elemento de la cola. MAXIMO: tamao del vector o mximo nmero de elementos de la COLA. los diferentes estados de una cola se muestran a continuacin:

ejemplo, regresar

COLAS REPRESENTADAS COMO VECTOR CIRCULAR


Para hacer un uso ms eficiente de la memoria disponible se trata a la cola (el vector que la representa ) como una estructura circular. En la representacin de las colas en arreglos se manejan las siguientes variables: COLA, ULTIMO, PRIMERO y MAXIMO. COLA : nombre del vector que sirve para representar la estructura. ULTIMO: posicin en el vector que indica donde esta el ultimo elemento de la cola. PRIMERO: posicin en el vector que indica donde esta el primer elemento de la cola. MAXIMO: tamao del vector o mximo nmero de elementos de la COLA. los diferentes estados de una cola se muestran a continuacin:

ejemplo, regresar

COLAS REPRESENTADAS COMO LISTAS SIMPLEMENTE LIGADAS


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 ltimo nodo se guardar en una variable de tipo puntero llamada ultimo. Las operaciones de encolar y desencolar se realizarn de la siguiente manera: para encolar un dato se actualiza la liga del ltimo nodo, agregando de esta manera el nuevo dato al final de la lista. para desencolar un dato se extrae el dato al principio de la lista.

BURBUJA1 Es el metodo mas utilizado por los estudiantes principiantes de computacin, por su fcil comprensin y programacin. pero es probablemente el mtodo mas ineficiente. La idea bsica de este algoritmo consiste en comparar pares de elementos adyacentes e intercambiarlos entre s hasta que todos se encuentren ordenados. se realizan ( N-1 ) pasadas, transportando en cada una de las mismas el menor o mayor elemento (segn sea el caso) a su posicin ideal.

al final de las (N-1) pasadas los elementos del arreglo estarn ordenados. BURBUJA2
Es el metodo mas utilizado por los estudiantes principiantes de computacin, por su fcil comprensin y programacin. pero es probablemente el mtodo mas ineficiente. La idea bsica de este algoritmo consiste en comparar pares de elementos adyacentes e intercambiarlos entre s hasta que todos se encuentren ordenados. se realizan ( N-1 ) pasadas, transportando en cada una de las mismas el menor o mayor elemento (segn sea el caso) a su posicin ideal. al final de las (N-1) pasadas los elementos del arreglo estarn ordenados.

BURBUJA CON SEAL


Este mtodo es una modificacin del mtodo de burbuja. La idea central de este algoritmo consiste " en utilizar una marca o seal para indicar que no se ha producido ningn intercambio en una pasada. " Es decir, se comprueba si el arreglo est totalmente ordenado despues de cada pasada. " terminando su ejecucin en caso afirmativo.

SACUDIDA
Es una optimizacin del mtodo de intercambio directo. La idea basica de este algoritmo consiste en mezclar las dos formas en que se puede realizar el mtodo de la burbuja. En este algoritmo cada pasada tiene dos etapas. En la primera etapa (de derecha a izquierda) se trasladan los elementos ms pequeos hacia la parte izquierda del arreglo, almacenando en una variable la posicin del ultimo elemento intercambiado. En la segunda etapa(de izquierda a derecha) se trasladan los elementos ms grandes hacia la parte derecha del arreglo, almacenando en otra variable la posicin del ultimo elemento intercambiado. Las 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 extremo izquierdo del arreglo es mayor que el contenido del la variable que almacena el extremo derecho"

SELECCION
La idea bsica de este algoritmo consiste en buscar el menor elemento del arreglo y colocarlo en la primera posicin. Luego se busca el segundo elemento ms pequeo del arreglo y se coloca en la segunda posisin. El proceso contina hasta que todos los elementos del arreglo hayan sido ordenados.

INSERCION
Es el metodo que generalmente utilizan los jugadores de cartas cuando ordenan estas. La 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 n-esimo elemento. "

INSERCION BINARIA
El mtodo de ordenacin por insercin directa puede mejorarse fcilmente. Para ello se recurre a una bsqueda binaria en lugar de una bsqueda 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 n-esimo elemento. "

QUICKSORT
El metodo de ordenacin quicksort es actualmente el ms eficiente y veloz de los mtodos de ordenacin interna. La idea central de este algoritmo consiste en los siguiente : 1. Se toma un elemento X de una posicin cualquiera del arreglo 2. Se trata de ubicar a X en la posicion correcta del arreglo, de tal forma que todos los elementos que se encuentren a su izquierda sean menores o iguales a X y todos los elementos que se encuentren a su derecha sean mayores o iguales a X. 3. 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 X en el arreglo. 4. El proceso termina cuando todos los elementos se encuentran en su posicin corcecta en el arreglo.

SHELL

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. Si el elemento a insertar es ms pequeo que el grupo de elementos que se encuentran a su izquierda, es necesario efectuar entonces varias comparaciones antes de su ubicacin. SHELL propone que las comparaciones entre elementos se efecten con saltos de mayor tamao pero con incrementos decrecientes, as, los elementos quedarn ordenados en el arreglo ms rapidamente."

You might also like