miércoles, 11 de agosto de 2010

ESTRUCTURAS BASICAS


CONDICIONAL
    * IF - THEN:  Es una sentencia de control que  se realiza de forma condicional, el cual  indica al programa que ejecute sierta parte del codigo solamente dependiendo si la condición evaluada es TRUE (verdadero).
                     ESTRUCTURA:            
                       IF (expresion) then               
                       sentencia;

    INTERACTIVOS
    * FOR: La sentencia FOR repite una serie de ordenes a la vez que una variable de control, va tomando los sucesivos valores indicado por una lista de cadenas de texto.       
                    ESTRUCTURA:          
              for ( expresion 1; expresion2; expresion3 )         
                       sentencia;
    * WHILE : Evalúa una condición y, si ésta da como resultado true, ejecuta una sentencia o serie de sentencias antes de volver a ejecutar el bucle para evaluar la condición nuevamente. Después de que la condición dé como resultado false, se omite la sentencia o serie de sentencias y finaliza el bucle.     
            ESTRUCTURA:
                 while (condición)

                      {

                 bloque de instrucciones

                       };



  •  DO - WHILE :  Estos bucles se utilizan cuando queremos repetir la ejecución de unas sentencias un número  indefinido de veces, siempre que se cumpla una condición.
                      ESTRUCTURA:
                    do {  
                      sentencias del bucle 
                          } while (condición)


BIFURCACIONES



  • SWITCH  : La sentencia switch se implementa cuando es necesario la utilización de un menu de opciones ya que el usuario debera escojer una de las opciones.
              ESTRUCTURA

            Switch (expersión) {

            case valor1:

            Sentencias a ejecutar si la expresión
            tiene como valor a valor1
            break
            case valor2:

            Sentencias a ejecutar si la expresión
            tiene valor a valor2
            break

            case valor3:

            Sentencias a ejecutar si la expresión
            tiene como valor a valor3 
            break;

            default;
           sentencias a ejecutar si el valor
           no es ninguno de los anteriores
           }

EJEMPLOS

           SENTENCIA FOR



             Ej:
           1.int contador;



                for (contador = 1; contador<=10; contador++)
                    {
            printf(“Repetición numero %d\n”, contador);
              };



            2.int i;
            printf ("Numeros del 15 al 1\n\n\n");
             for (i=15;i>=1;i--)
            printf ("%d\n",i);
           system(“pause”); 
             return 0;
           }
         SENTENCIA WHILE 



               Ej:

             1.var suma = 0 
           while (suma < 1000){ 
             suma += parseInt(Math.random() * 100) 
             document.write (suma + "
             ") 
             } 




            2.var color = "" 
           while (color != "rojo") 
             color = dame un color 
             } 
        SENTENCIA DO WHILE



           Ej:




           1.var color 
          do { 
           color = dame un color 
            } while (color != "rojo") 



          2. num = 1;
          do {
            printf(“%d\n”, num);
            num = num + 1;



            } while (num<=10);



           printf(“La variable num vale: %d\n”, num);


* ..* LOS ARREGLOS *..*


 
¿ QUE SON ARREGLOS ?

Los arreglos son una colección de variables del mismo tipo que se referencia utilizando un nombre común. Un arreglo consta de posiciones de memoria contigua. La dirección más baja corresponde al primer elemento y la más alta al último. Un arreglo puede tener una o varias dimensiones.

¿ ARREGLOS  UNIDIMENCIONALES ?

Un arreglo unidimensional es un tipo de datos estructurado que está formado de una colección finita y ordenada de datos del mismo tipo. Es la estructura natural para modelar listas de elementos iguales.
El tipo de acceso a los arreglos unidimensionales es el acceso directo, es decir, podemos acceder a cualquier elemento del arreglo sin tener que consultar a elementos anteriores o posteriores, esto mediante el uso de un índice para cada elemento del arreglo que nos da su posición relativa. 

-VECTORES: Es un conjunto de elementos ordenados en filas, los cuales son llamado unidimensional, Todo vector se compone de un determinado número de elementos. Cada elemento es referenciado por la posición que ocupa dentro del vector. Dichas posiciones son llamadas índice.

¿ ARREGLOS  BIDIMENCIONALES ?
Este tipo de arreglos al igual que los anteriores es un tipo de dato estructurado, finito ordenado y homogéneo. El acceso a ellos también es en forma directa por medio de un par de índices.
Los arreglos bidimensionales se usan para representar datos que pueden verse como una tabla con filas y columnas. La primera dimensión del arreglo representa las columnas, cada elemento contiene un valor y cada dimensión representa una relación
La representación en memoria se realiza de dos formas : almacenamiento por columnas o por renglones.

Matriz. : Una matriz es un arreglo rectangular de dos dimensiones, donde el acomodo de los elementos está dispuesto en renglones y columnas. una matriz es una tabla BIDIMENCIONAL de numeros en el que  consistente en cantidades.


Tabla : Esta se refiere al tipo de modelado de datos, donde se guardan los datos recogidos por un programa. Su estructura general se asemeja a la vista general de un programa de una hoja de calculo.
Las tablas se componen de dos estructuras:
En la definición de cada campo, debe existir un nombre único, con su tipo de dato correspondiente. Esto es útil a la hora de manejar varios campos en la tabla, ya que cada nombre de campo debe ser distinto entre sí.
A los campos se les puede asignar, además, propiedades especiales que afectan a los registros insertados. El campo puede ser definido como índice o autoincrementable, lo cual permite que los datos de ese campo cambien solos o sean el principal indicar a la hora de ordenar los datos contenidos.
Cada tabla creada debe tener un nombre único en la cada Base de Datos, haciéndola accesible mediante su nombre o su seudónimo (Alias) (dependiendo del tipo de base de datos elegida).

¿ ARREGLOS  MULTIDIMENCIONALES ?

Este también es un tipo de dato estructurado, que está compuesto por n dimensiones. Para hacer referencia a cada componente del arreglo es necesario utilizar n índices, uno para cada dimensión
Para determinar el número de elementos en este tipo de arreglos se usan las siguientes fórmulas:
  RANGO (Ri) = lsi - (lii + 1)
  No. TOTAL DE ELEMENTOS = R1 * R2* R3 * ...* Rn
donde:
i = 1 ... n
n = No. total de dimensiones
Para determinar la dirección de memoria se usa la siguiente formula:
 
LOC A[i1,i2,i3,...,in] = base(A) + [(i1-li1)*R3*R4*Rn + (i2-li2)*R3*R2*... 
(in - lin)*Rn

EJEMPLOS

ARREGLOS:
  /* Ejemplo de como declarar un arreglo y
  * como utilizar un ciclo para inicializar sus elementos
  * ej-arreglo1.c
  */

  #include
  int main()
  {

  /* Declaración de un arreglo entero de 10 elementos */   int a[10];
    int k,j;

   /* ciclo para inicializar el arreglo */
     for (k=0; k<10;k++)
    {
    a[k]=0;
    }

    printf("%s%13s\n", "Elemento","Valor");
  /* ciclo para mostrar el contenido del arreglo */
    for (j=0;j<10;j++)
    {
    printf("%7d%13d\n",j,a[j]);
    }
    return 0;
    }

ARREGOS UNIDIMENCIONALES:

   VECTOR-- 

    int v[5];
    int i;
     for (i=0 ; i<5 ; i++)
     {
     v[i] = 2*i;
     }
imagen 
deun arreglo unidimencional 
01234

ARREGLOS BIDIMENCIONAL:

Ejemplo MATRIZ:

Se debe controlar la ubicación de los asistentes a una sala de conferencias por medio de un gafete que tiene escrito el nombre del asistente, la fila y la columna donde se ubica su asiento.
El siguiente segmento de código muestra la solución con arreglos bidimensionales.
string [ , ] asistente = new string[10,12] ;
// Inicializa los valores de los nombres con cadenas vacías.
for(int i=0 ; i < 10 ; i++ ) // Controla la fila.
for(int j=0 ; j < 12 ; j++ ) // Controla la columna.
asistente[ i , j ] = " " ;
// Captura los nombres de todos los asistentes y les asigna sus asientos,
// en el orden en que van llegando.
for(int i=0 ; i < 10 ; i++ ) // Controla la fila.
for(int j=0 ; j < 12 ; j++ ) // Controla la columna.
asistente[ i , j ] = System.Console.ReadLine( );
// Despliega los nombres de todos los asistentes.
for(int i=0 ; i < 10 ; i++ ) // Controla la fila.
for(int j=0 ; j < 12 ; j++ ) // Controla la columna.
System.Console.WriteLine( asistente[ i , j ] );


ARREGLOS MULTIDIMENCIONALES:
 imagen deun arreglo  multidimencional

..... PROGRAMAS EN NETBEANS .......

NUMEROS PARES E IMPARES

         SENTENCIA - FOR:

SENTENCIA - WHILE:

SENTENCIA - DO WHILE:


TABLAS  DE  MULTIPLICAR

   SENTENCIA - FOR:

      SENTENCIA - WHILE:


    


.....MATRIZ Y VECTORES.....

BUSQUEDA DE UN VECTOR:

MATRIZ IDENTIDAD:

SUMA DE VECTOR Y MATRIZ:


BURBUJA:



.... EJERCICIOS DE LISTAS....

*   EJERCICIO 1: Crear una lista q contenga  elementos ... elimine un elemento y añada un elemento a  una posicion...

* EJERCICIO 2:  Crear Un Lista Ingresando tamaño y datos por teclado ....



*EJERCICIO 3:


-- ** BUSQUEDA Y ORDENAMIENTO DE ARREGLOS **--

BÚSQUEDA SIMPLE :
la busqueda simple consiste en buscar un dato en el arreglo recorriéndolo desde de principio a fin es decir desde si primera posición hasta la ultima que este posee o viceversa. Para esto se usa el ciclo for.



BÚSQUEDA BINARIA :
La busqueda binara se utiliza cuando el vector en el que queremos determinar la existencia de un elemento está previamente ordenado. Este algoritmo reduce el tiempo de búsqueda considerablemente, ya que disminuye exponencialmente el número de iteraciones necesarias.

Para implementar este algoritmo se compara el elemento a buscar con un elemento cualquiera del array (normalmente el elemento central): si el valor de éste es mayor que el del elemento buscado se repite el procedimiento en la parte del array que va desde el inicio de éste hasta el elemento tomado, en caso contrario se toma la parte del array que va desde el elemento tomado hasta el final. De esta manera obtenemos intervalos cada vez más pequeños, hasta que se obtenga un intervalo indivisible. Si el elemento no se encuentra dentro de este último entonces se deduce que el elemento buscado no se encuentra en todo el array.


ORDENAMIENTO

MÉTODO DE SELECCIÓN :

El metodo de seleccion consiste en recorrer el arreglo desde su primera posición hasta la posición n-1, con el fin de que cada vez que lo recorra busque encontrar el elemento mas pequeño, de tal forma que en la posición 0 se encuentre el elemento mas pequeño y así sucesivamente ordenando de menor a mayor por cada vez que lo recorra. Este método no es el mas eficiente, pero es uno de los mas fáciles de implementar.   
MÉTODO DE INSERCION :
El metodo de insecion es un  tipo de algoritmo los elementos que van a ser ordenados son considerados uno a la vez. Cada elemento es INSERTADO en la posición apropiada con respecto al resto de los elementos ya ordenados.
Entre estos algoritmos se encuentran el de INSERCION DIRECTA, SHELL SORT, INSERCION BINARIA y HASHING.






... ORDENAMIENTO..

BURBUJA:

tambien conocido como “método del intercambio directo” es un algoritmo que obtiene su nombre de la forma con la que suben los elemento de una lista, como si fueran “burbujas”. Funciona comparando elementos de dos en dos en un ciclo, intecambiandolos según sea el caso. Es necesario revisar varias veces toda la lista has que no se necesiten más intercambios.




Algoritmo (Ordenamiento de Burbuja)

EJEMPLO:

i=0,j=0,N=4


ListaNoOrdenada[5] {5,10,1,3,2}


Para i desde 0 hasta N


Para j desde 0 hasta N


    Si No_Ordenados(ListaNoOrdenada[j] > ListaNoOrdenada[j + 1]   entonces


   variable_temp = ListaNoOrdenada[j]


   ListaNoOrdenada[j] = ListaNoOrdenada[j + 1]


   ListaNoOrdenada[j + 1] = variable_temp


    FinSi


Siguiente i


Fin


Quicksort:


es un algoritmo basado en la técnica de divide y vencerás, que permite, en promedio, ordenar n elementos en un tiempo proporcional a n log n.

Descripción del algoritmo


El algoritmo fundamental es el siguiente:
Elegir un elemento de la lista de elementos a ordenar, al que llamaremos pivote.

Resituar los demás elementos de la lista a cada lado del pivote, de manera que a un lado queden todos los menores que él, y al otro los mayores. Los elementos iguales al pivote pueden ser colocados tanto a su derecha como a su izquierda, dependiendo de la implementación deseada. En este momento, el pivote ocupa exactamente el lugar que le corresponderá en la lista ordenada.

La lista queda separada en dos sublistas, una formada por los elementos a la izquierda del pivote, y otra por los elementos a su derecha.

Repetir este proceso de forma recursiva para cada sublista mientras éstas contengan más de un elemento. Una vez terminado este proceso todos los elementos estarán ordenados.

Como se puede suponer, la eficiencia del algoritmo depende de la posición en la que termine el pivote elegido.
En el mejor caso, el pivote termina en el centro de la lista, dividiéndola en dos sublistas de igual tamaño. En este caso, el orden de complejidad del algoritmo es O(n·log n).

En el peor caso, el pivote termina en un extremo de la lista. El orden de complejidad del algoritmo es entonces de O(n²). El peor caso dependerá de la implementación del algoritmo, aunque habitualmente ocurre en listas que se encuentran ordenadas, o casi ordenadas. Pero principalmente depende del pivote, si por ejemplo el algoritmo implementado toma como pivote siempre el primer elemento del array, y el array que le pasamos está ordenado, siempre va a generar a su izquierda un array vacío, lo que es ineficiente.


. . ** .. EJEMPLOS DE PILAS . . ** ..

EJEMPLO DE PILA  EN JAVA: 




     ejercicio 2: hacer una pila sin tamaño definido que tenga un menú con las opciones push, pop y salir .







... *** EJERCICIOS DE COLAS *** ...

EJEMPLO DE COLAS:




EJERCICIO:





..........EXPOSICION ARBOLES.....

1. DIAPOSITIVAS




2. EJEMPLO DE ARBOLES