programacion en c unidad 03 capitulos 2 y 3

Upload: erick-francisco-merino-menares

Post on 06-Apr-2018

219 views

Category:

Documents


0 download

TRANSCRIPT

  • 8/3/2019 Programacion en C unidad 03 capitulos 2 y 3

    1/66

    INC-112 Programacion IUnidad 3

    Profesores: Eliana Providel - Roberto Munoz S.Escuela de Ing. Civil Informatica,

    Universidad de Valparaso

    {eliana.providel,roberto.munoz.s}@uv.cl

    Segundo Semestre 2011

    Unidad 3

    http://goforward/http://find/http://goback/
  • 8/3/2019 Programacion en C unidad 03 capitulos 2 y 3

    2/66

    Contenidos Unidad 3

    Parte I: Funciones.

    Parte II: Arreglos.

    Parte III: Entrada y Salida de datos, parte II de II.

    Parte IV: Archivos.

    Unidad 3

    http://find/http://goback/
  • 8/3/2019 Programacion en C unidad 03 capitulos 2 y 3

    3/66

    Parte II: Arreglos

    Unidad 3

    http://find/http://goback/
  • 8/3/2019 Programacion en C unidad 03 capitulos 2 y 3

    4/66

    Contenidos

    Que son?.

    Arreglos Unidimensionales.Arreglos Bidimensionales y Multidimensionales.

    Caractersticas generales.

    Arreglos de caracteres.

    Arreglos y funciones.Ordenamiento.

    Busqueda.

    Unidad 3

    Q ?

    http://find/http://goback/
  • 8/3/2019 Programacion en C unidad 03 capitulos 2 y 3

    5/66

    Que son?Arreglos Unidimensionales

    Arreglos Bidimensionales y MultidimensionalesCaractersticas Generales

    Arreglos de caracteresArreglos y funciones

    OrdenamientoBusqueda

    Que son?

    Son un conjunto finito de datos del mismo tipo.

    Se agrupan bajo un mismo nombre.

    Su almacenamiento en memoria es contigua.

    Unidad 3

    Q ?

    http://find/http://goback/
  • 8/3/2019 Programacion en C unidad 03 capitulos 2 y 3

    6/66

    Que son?Arreglos Unidimensionales

    Arreglos Bidimensionales y MultidimensionalesCaractersticas Generales

    Arreglos de caracteresArreglos y funciones

    OrdenamientoBusqueda

    DeclaracionInicializacionUtilizacion

    Declaracion de un arreglo

    Declaracion

    tipo dato nombre arreglo[tamano

    ];

    tipo dato: puede ser char, int,...

    nombre arreglo: nombre que se le dara al arreglo.

    tamano: constante que especifica el numero de elementos delarray.

    Ej: int arreglo[10];

    Unidad 3

    Que son?

    http://find/http://goback/
  • 8/3/2019 Programacion en C unidad 03 capitulos 2 y 3

    7/66

    Que son?Arreglos Unidimensionales

    Arreglos Bidimensionales y MultidimensionalesCaractersticas Generales

    Arreglos de caracteresArreglos y funciones

    OrdenamientoBusqueda

    DeclaracionInicializacionUtilizacion

    Inicializacion de un arreglos

    Dar valores iniciales al arreglo.Ej.

    A todo el arreglo:

    int arreglo[] = {0,1,2,3,4,5};int arreglo1[4] = {4, 2, 3, 6};

    A una posicion del arreglo:arreglo1[3]=7;

    Unidad 3

    Que son?

    http://find/http://goback/
  • 8/3/2019 Programacion en C unidad 03 capitulos 2 y 3

    8/66

    Que son?Arreglos Unidimensionales

    Arreglos Bidimensionales y MultidimensionalesCaractersticas Generales

    Arreglos de caracteresArreglos y funciones

    OrdenamientoBusqueda

    DeclaracionInicializacionUtilizacion

    Utilizacion de los valores del arreglo

    Para acceder a los datos del arreglo, se utiliza un ndice, el

    nombre del arreglo, y los [ ].El ndice para la primera posicion es 0.

    Ej.

    1 int arreglo[4] = {4, 2, 3, 6};2 Al acceder a arreglo[4]; error!!!

    El primer elemento del arreglo esta en la posicion 0.El ultimo elemento esta en la posicion 3.

    Unidad 3

    Que son?

    http://find/http://goback/
  • 8/3/2019 Programacion en C unidad 03 capitulos 2 y 3

    9/66

    Que son?Arreglos Unidimensionales

    Arreglos Bidimensionales y MultidimensionalesCaractersticas Generales

    Arreglos de caracteresArreglos y funciones

    OrdenamientoBusqueda

    DeclaracionInicializacionUtilizacion

    Declaracion

    Declaracion

    tipo dato nombre[tamano][tamano]...;

    tipo dato: tipo de dato a almacenar.

    nombre: Nombre del arreglo.

    tamano: tamano de la dimension del arreglo.

    Para cada nueva dimension se debe agregar un nuevo [ ]

    Ejemplos:1 int arreglo[2][4];2 int arreglo[2][4][3][1];

    Unidad 3

    Que son?

    http://find/http://goback/
  • 8/3/2019 Programacion en C unidad 03 capitulos 2 y 3

    10/66

    Que son?Arreglos Unidimensionales

    Arreglos Bidimensionales y MultidimensionalesCaractersticas Generales

    Arreglos de caracteresArreglos y funciones

    OrdenamientoBusqueda

    DeclaracionInicializacionUtilizacion

    Inicializacion del arreglo

    int arreglo1[2][3]= {{1,2},{3,4,5}};

    int arreglo1[][3]= {{1,2,3},{3,4,5}};

    Unidad 3

    Que son?

    http://find/http://goback/
  • 8/3/2019 Programacion en C unidad 03 capitulos 2 y 3

    11/66

    QArreglos Unidimensionales

    Arreglos Bidimensionales y MultidimensionalesCaractersticas Generales

    Arreglos de caracteresArreglos y funciones

    OrdenamientoBusqueda

    DeclaracionInicializacionUtilizacion

    Utilizacion de los datos del arregloPara acceder al arreglo se utiliza el nombre del arreglo, el ndice(para indicar la posicion en el arreglo) y los [ ].No olvidar colocar ; al final.

    Ej. int arreglo[2][3][4][5][3];La primera posicion del arreglo sera

    1 arreglo[0][0][0][0][0];La ultima posicion del arreglo sera

    1 arreglo[1][2][3][4][2];

    arreglo[2][3][4][5][3]; Error!!Uso correcto para acceder a un dato:arreglo[1][1];Uso incorrecto:arreglo[1,1]

    Unidad 3

    Que son?

    http://find/http://goback/
  • 8/3/2019 Programacion en C unidad 03 capitulos 2 y 3

    12/66

    QArreglos Unidimensionales

    Arreglos Bidimensionales y MultidimensionalesCaractersticas Generales

    Arreglos de caracteresArreglos y funciones

    OrdenamientoBusqueda

    Manejo de Indices

    Caractersticas Generales

    C no chequea lmites de un arreglo, por lo que es muy facil

    acceder a un espacio de memoria que no esta reservado.Es tarea del programador!!

    Para definir el tamano de un arreglo se pueden utilizarconstantes o expresiones de constantes, pero siempre deben

    ser un entero.Un ndice para acceder a un elemento de un arreglo, puedo seruna constante, una variable o una expresion.

    Unidad 3

    Que son?

    http://find/http://goback/
  • 8/3/2019 Programacion en C unidad 03 capitulos 2 y 3

    13/66

    Arreglos Unidimensionales

    Arreglos Bidimensionales y MultidimensionalesCaractersticas Generales

    Arreglos de caracteresArreglos y funciones

    OrdenamientoBusqueda

    Manejo de Indices

    Manejo de Indices

    Utilizando define para los lmites del arreglo.

    Ejemplo

    #define MAX 100

    ...

    int arreglo[4][MAX];

    int arreglo[4][MAX-1];

    Unidad 3

    Que son?

    http://find/http://goback/
  • 8/3/2019 Programacion en C unidad 03 capitulos 2 y 3

    14/66

    Arreglos UnidimensionalesArreglos Bidimensionales y Multidimensionales

    Caractersticas GeneralesArreglos de caracteres

    Arreglos y funcionesOrdenamiento

    Busqueda

    Manejo de Indices

    Manejo de Indices

    Ejemplo:

    ...int arreglo[2][3]={{3,4},{5,1,2}};

    for(i=0;i

  • 8/3/2019 Programacion en C unidad 03 capitulos 2 y 3

    15/66

    Arreglos UnidimensionalesArreglos Bidimensionales y Multidimensionales

    Caractersticas GeneralesArreglos de caracteres

    Arreglos y funcionesOrdenamiento

    Busqueda

    Manejo de Indices

    Manejo de Indices

    Unidad 3

    Que son?A l s U idi si l s

    http://find/http://goback/
  • 8/3/2019 Programacion en C unidad 03 capitulos 2 y 3

    16/66

    Arreglos UnidimensionalesArreglos Bidimensionales y Multidimensionales

    Caractersticas GeneralesArreglos de caracteres

    Arreglos y funcionesOrdenamiento

    Busqueda

    Declaracion e inicializacionprintf(...) y scanf(...)

    Arreglo de caracteres

    Permiten manejar un conjunto de caracteres o smbolos bajoun mismo nombre.

    La terminacion de la cadena se identifica con nulo, que esespecificado por \0.

    Unidad 3

    Que son?Arreglos Unidimensionales

    http://find/http://goback/
  • 8/3/2019 Programacion en C unidad 03 capitulos 2 y 3

    17/66

    Arreglos UnidimensionalesArreglos Bidimensionales y Multidimensionales

    Caractersticas GeneralesArreglos de caracteres

    Arreglos y funcionesOrdenamiento

    Busqueda

    Declaracion e inicializacionprintf(...) y scanf(...)

    Declaracion e inicializacion del arreglo

    Es analogo a los arreglos numericos, solo que ahora se utilizan y .

    Ejemplo:

    ...

    char arreglo[4];

    char arreglo[4]= "hola";

    char arreglo[]= "hola";char arreglo[4]={h,o,l,a};

    ...

    Unidad 3

    Que son?Arreglos Unidimensionales

    http://find/http://goback/
  • 8/3/2019 Programacion en C unidad 03 capitulos 2 y 3

    18/66

    Arreglos UnidimensionalesArreglos Bidimensionales y Multidimensionales

    Caractersticas GeneralesArreglos de caracteres

    Arreglos y funcionesOrdenamiento

    Busqueda

    Declaracion e inicializacionprintf(...) y scanf(...)

    printf(...) y scanf(...) en arreglo de caracteres

    Se puede recibir la entrada estandar utilizando la funcionscanf con el formato %s.

    De igual forma para printf.

    De esta forma se recibe y muestra todo el arreglo.

    Unidad 3

    Que son?Arreglos Unidimensionales

    http://find/http://goback/
  • 8/3/2019 Programacion en C unidad 03 capitulos 2 y 3

    19/66

    Arreglos UnidimensionalesArreglos Bidimensionales y Multidimensionales

    Caractersticas GeneralesArreglos de caracteres

    Arreglos y funcionesOrdenamiento

    Busqueda

    Declaracion e inicializacionprintf(...) y scanf(...)

    Ejemplo

    ...

    char nombre[15], apellidos[30];

    printf("Introduce tu nombre: ");

    scanf("%s",nombre);

    printf("Introduce tus apellidos: ");

    scanf("%s",apellidos);printf("Usted es %s %s\n",nombre,apellidos);

    ...

    Unidad 3

    Que son?Arreglos Unidimensionales

    http://find/http://goback/
  • 8/3/2019 Programacion en C unidad 03 capitulos 2 y 3

    20/66

    Arreglos UnidimensionalesArreglos Bidimensionales y Multidimensionales

    Caractersticas GeneralesArreglos de caracteres

    Arreglos y funcionesOrdenamiento

    Busqueda

    Arreglos UnidimensionalesArreglos Multidimensionales

    Arreglos y funciones

    Al pasar un arreglo como argumento a una funcion se pasasolo el nombre del arreglo.

    Unidad 3

    Que son?Arreglos Unidimensionales

    http://find/http://goback/
  • 8/3/2019 Programacion en C unidad 03 capitulos 2 y 3

    21/66

    gArreglos Bidimensionales y Multidimensionales

    Caractersticas GeneralesArreglos de caracteres

    Arreglos y funcionesOrdenamiento

    Busqueda

    Arreglos UnidimensionalesArreglos Multidimensionales

    Ejemplo

    void inv(char s[]){

    int t;

    for( t=strlen(s)-1; t>=0; t --)

    printf("%c",s[t]);

    }

    int main(){

    char inf[]="Programacion I";inv(inf );

    return 0;

    }

    Unidad 3

    Que son?Arreglos Unidimensionales

    http://find/http://goback/
  • 8/3/2019 Programacion en C unidad 03 capitulos 2 y 3

    22/66

    Arreglos Bidimensionales y MultidimensionalesCaractersticas Generales

    Arreglos de caracteresArreglos y funciones

    OrdenamientoBusqueda

    Arreglos UnidimensionalesArreglos Multidimensionales

    Que hace el programa?

    1 Cuando se declara la funcion, se indica que recibira unarreglos:

    void inv(char s[]){

    ...

    }

    2 Cuando se llama a la funcion, se le pasa el nombre del arreglo.

    char inf[]="Programacion I";

    inv(inf );

    3 Luego la funcion inv(...) recorre el arreglo desde la ultimaposicion y va mostrando el contenido.

    Unidad 3

    Que son?Arreglos Unidimensionales

    http://find/http://goback/
  • 8/3/2019 Programacion en C unidad 03 capitulos 2 y 3

    23/66

    Arreglos Bidimensionales y MultidimensionalesCaractersticas Generales

    Arreglos de caracteresArreglos y funciones

    OrdenamientoBusqueda

    Arreglos UnidimensionalesArreglos Multidimensionales

    Utilizacion de arreglos multidimensionales

    Para arreglos multidimensionales, en los argumentos de lafuncion, no se indica la primera dimension pero s todas lasdemas.

    Al llamar a la funcion se pasa como parametro o argumento elnombre del arreglo.

    Para retornar el arreglos se retorna solo el nombre del arreglo.

    Unidad 3

    Que son?Arreglos Unidimensionales

    A l Bidi i l M l idi i l

    http://find/http://goback/
  • 8/3/2019 Programacion en C unidad 03 capitulos 2 y 3

    24/66

    Arreglos Bidimensionales y MultidimensionalesCaractersticas Generales

    Arreglos de caracteresArreglos y funciones

    OrdenamientoBusqueda

    Arreglos UnidimensionalesArreglos Multidimensionales

    Ejemplo:#DEFINE MAX 2

    int arreglo[MAX][MAX]={{1,2},{6,7}} ;

    int funcion(int arr[][MAX])

    {

    inti,j;

    for(i=0;i

  • 8/3/2019 Programacion en C unidad 03 capitulos 2 y 3

    25/66

    Arreglos Bidimensionales y MultidimensionalesCaractersticas Generales

    Arreglos de caracteresArreglos y funciones

    OrdenamientoBusqueda

    Ordenamiento BurbujaInsertion SortSelection SortQuick Sort

    Ordenamiento Burbuja

    Para empezar, veremos uno de los algoritmos mas simples ypopulares... Ordenamiento Burbuja o Bubble Sort.

    Ordenamiento Burbuja, su nombre proviene del hecho deque los elementos mas livianos (chicos), salgan a flote,

    mientras que los mas pesados (grandes) se hundan.

    Unidad 3

    Que son?Arreglos Unidimensionales

    Arreglos Bidimensionales y Multidimensionales Ordenamiento Burbuja

    http://find/http://goback/
  • 8/3/2019 Programacion en C unidad 03 capitulos 2 y 3

    26/66

    Arreglos Bidimensionales y MultidimensionalesCaractersticas Generales

    Arreglos de caracteresArreglos y funciones

    OrdenamientoBusqueda

    Ordenamiento BurbujaInsertion SortSelection SortQuick Sort

    Ordenamiento Burbuja

    Ejemplo:

    15 8 4 50 3

    Si el elemento de abajo es mas pequeno se cambian los valores deposicion y se continua con el siguiente numero. Luego que termina

    de dar el primer recorrido al arreglo, comienza de nuevo desde elprincipio, pero el elemento mas pesado ya quedo al fondo, por lotanto, ahora se comparan solo los primeros N-1 elementos.

    Unidad 3

    Que son?Arreglos Unidimensionales

    Arreglos Bidimensionales y Multidimensionales Ordenamiento Burbuja

    http://find/http://goback/
  • 8/3/2019 Programacion en C unidad 03 capitulos 2 y 3

    27/66

    Arreglos Bidimensionales y MultidimensionalesCaractersticas Generales

    Arreglos de caracteresArreglos y funciones

    OrdenamientoBusqueda

    Ordenamiento BurbujaInsertion SortSelection SortQuick Sort

    Ordenamiento Burbuja

    15 8 8 8 8 8 4 4 4 4 4 4 38 15 4 4 4 4 8 8 8 8 8 3 44 4 15 15 15 15 15 15 3 3 3 8 8

    50 50 50 50 3 3 3 3 15 15 15 15 153 3 3 3 50 50 50 50 50 50 50 50 50

    Unidad 3

    Que son?Arreglos Unidimensionales

    Arreglos Bidimensionales y Multidimensionales Ordenamiento Burbuja

    http://find/http://goback/
  • 8/3/2019 Programacion en C unidad 03 capitulos 2 y 3

    28/66

    Arreglos Bidimensionales y MultidimensionalesCaractersticas Generales

    Arreglos de caracteresArreglos y funciones

    OrdenamientoBusqueda

    Ordenamiento BurbujaInsertion SortSelection SortQuick Sort

    Ordenamiento Burbuja

    void bubble(int a[], int n)

    {

    int i,j;

    for (i=n-1;i>0;i--)

    for (j=0;j a[j+1])

    {

    temp = a[j];a[j] = a[j+1];

    a[j+1] = temp;

    }

    }

    Unidad 3

    Que son?Arreglos Unidimensionales

    Arreglos Bidimensionales y Multidimensionales Ordenamiento Burbuja

    http://find/http://goback/
  • 8/3/2019 Programacion en C unidad 03 capitulos 2 y 3

    29/66

    Arreglos Bidimensionales y MultidimensionalesCaractersticas Generales

    Arreglos de caracteresArreglos y funciones

    OrdenamientoBusqueda

    Ordenamiento BurbujaInsertion SortSelection SortQuick Sort

    Ordenamiento BurbujaOtra forma:

    void bubble(int a[], int n)

    {

    int i,j;

    for (i=0;ii;j--)

    if (a[j] < a[j-1])

    { temp = a[j];

    a[j] = a[j-1];

    a[j-1] = temp;

    }

    } Unidad 3

    Que son?Arreglos Unidimensionales

    Arreglos Bidimensionales y Multidimensionales Ordenamiento Burbuja

    http://find/http://goback/
  • 8/3/2019 Programacion en C unidad 03 capitulos 2 y 3

    30/66

    g yCaractersticas Generales

    Arreglos de caracteresArreglos y funciones

    OrdenamientoBusqueda

    jInsertion SortSelection SortQuick Sort

    Insertion Sort I

    Parecido a cuando se ordena un mazo de cartas numeradas en

    forma arbitraria.Inicialmente se tiene un solo elemento, que obviamente es unconjunto ordenado. Despues, cuando hay k elementosordenados de menor a mayor, se toma el elemento k + 1 y secompara con todos los elementos ya ordenados, deteniendose

    cuando se encuentra un elemento mayor. En este punto seinserta el elemento k + 1 debiendo desplazar los demaselementos.

    Unidad 3

    Que son?Arreglos Unidimensionales

    Arreglos Bidimensionales y Multidimensionales Ordenamiento Burbuja

    http://find/http://goback/
  • 8/3/2019 Programacion en C unidad 03 capitulos 2 y 3

    31/66

    g yCaractersticas Generales

    Arreglos de caracteresArreglos y funciones

    OrdenamientoBusqueda

    jInsertion SortSelection SortQuick Sort

    Insertion Sort II

    Ejemplo:El elemento k + 1 se va comparando de atras para adelante,

    deteniandose con el primer elemento menor. Simultaneamentese van haciendo los desplazamientos.

    11 26 47 59 96 3211 26 47 59 9611 26 47 59 9611 26 47 59 9611 26 32 47 59 96

    Unidad 3

    Que son?Arreglos Unidimensionales

    Arreglos Bidimensionales y Multidimensionales Ordenamiento Burbuja

    http://find/http://goback/
  • 8/3/2019 Programacion en C unidad 03 capitulos 2 y 3

    32/66

    Caractersticas GeneralesArreglos de caracteres

    Arreglos y funcionesOrdenamiento

    Busqueda

    Insertion SortSelection SortQuick Sort

    Insertion Sort IIIAlgoritmo On-line

    printf("Ingrese tamano del arreglo: ");

    scanf("%d",n);

    for(k = 0;k < n;k++)

    {

    printf("Ingreseelementonumero %d", k);

    scanf("%d",&x[k]);

    if (k > 0){tmp = x[k];

    j = k ;

    while ((j > 0) && (tmp < x[j-1])){

    x[j] = x[j - 1];

    Unidad 3

    Que son?Arreglos UnidimensionalesArreglos Bidimensionales y Multidimensionales

    C i G lOrdenamiento BurbujaI i S

    http://find/http://goback/
  • 8/3/2019 Programacion en C unidad 03 capitulos 2 y 3

    33/66

    Caractersticas GeneralesArreglos de caracteres

    Arreglos y funcionesOrdenamiento

    Busqueda

    Insertion SortSelection SortQuick Sort

    Insertion Sort IV

    j = j - 1;

    }

    x[j] = tmp;

    }

    }

    Unidad 3

    Que son?Arreglos UnidimensionalesArreglos Bidimensionales y Multidimensionales

    C t ti G lOrdenamiento BurbujaI ti S t

    http://find/http://goback/
  • 8/3/2019 Programacion en C unidad 03 capitulos 2 y 3

    34/66

    Caractersticas GeneralesArreglos de caracteres

    Arreglos y funcionesOrdenamiento

    Busqueda

    Insertion SortSelection SortQuick Sort

    Insertion Sort VInsertion Sort con arreglo ya generado

    v o i d i n s e r t i o n ( i n t x , i n t n ){

    i n t k , j ;f o r ( k = 0 ; k < n ; k++){

    i f ( k > 0 ){tmp = x [ k ] ;j = k ;

    w h i l e ( ( j > 0) && (tmp < x [ j 1 ] ) ){x [ j ] = x [ j 1 ] ; j = j 1 ;

    }x [ j ] = tmp ;

    Unidad 3

    Que son?Arreglos UnidimensionalesArreglos Bidimensionales y Multidimensionales

    Caracter sticas GeneralesOrdenamiento BurbujaInsertion Sort

    http://find/http://goback/
  • 8/3/2019 Programacion en C unidad 03 capitulos 2 y 3

    35/66

    Caractersticas GeneralesArreglos de caracteres

    Arreglos y funcionesOrdenamiento

    Busqueda

    Insertion SortSelection SortQuick Sort

    Insertion Sort VI

    }}

    }

    Unidad 3

    Que son?Arreglos UnidimensionalesArreglos Bidimensionales y Multidimensionales

    Caractersticas GeneralesOrdenamiento BurbujaInsertion Sort

    http://find/http://goback/
  • 8/3/2019 Programacion en C unidad 03 capitulos 2 y 3

    36/66

    Caractersticas GeneralesArreglos de caracteres

    Arreglos y funcionesOrdenamiento

    Busqueda

    Insertion SortSelection SortQuick Sort

    Selection Sort I

    El Ordenamiento por Seleccion (Selection Sort) es unalgoritmo de ordenamiento, funciona de la siguiente forma:

    Buscar el mnimo elemento de la lista.Intercambiarlo con el primero.Buscar el mnimo en el resto de la lista.Intercambiarlo con el segundo.y as sucesivamente...

    Es decir:

    Buscar el mnimo elemento entre una posicion i y el final de lalista.Intercambia el mnimo con el elemento de la posicion i.

    Unidad 3

    Que son?Arreglos UnidimensionalesArreglos Bidimensionales y Multidimensionales

    Caractersticas GeneralesOrdenamiento BurbujaInsertion Sort

    http://find/http://goback/
  • 8/3/2019 Programacion en C unidad 03 capitulos 2 y 3

    37/66

    Caractersticas GeneralesArreglos de caracteres

    Arreglos y funcionesOrdenamiento

    Busqueda

    Insertion SortSelection SortQuick Sort

    Selection Sort II

    Ejemplo:

    31 25 12 22 1111 25 12 22 3111 12 25 22 3111 12 22 25 31

    11 12 22 25 31

    Unidad 3

    Que son?Arreglos UnidimensionalesArreglos Bidimensionales y Multidimensionales

    Caractersticas GeneralesOrdenamiento BurbujaInsertion Sort

    http://find/http://goback/
  • 8/3/2019 Programacion en C unidad 03 capitulos 2 y 3

    38/66

    Caractersticas GeneralesArreglos de caracteres

    Arreglos y funcionesOrdenamiento

    Busqueda

    Insertion SortSelection SortQuick Sort

    Selection Sort IIIv o i d s e l e c t i o n ( i n t a , i n t n ){

    i n t i , j , min , tmp ;f o r ( i = 0 ; i < n1; i ++){

    min=i ;f o r ( j = i +1; j < n ; j++)

    i f ( a [ j ] < a [ min ] )min = j ;

    tmp = a [ i ] ;a [ i ] = a [ min ] ;a [ min ] = tmp ;

    }}

    Unidad 3

    Que son?Arreglos UnidimensionalesArreglos Bidimensionales y Multidimensionales

    Caractersticas GeneralesOrdenamiento BurbujaInsertion Sort

    http://find/http://goback/
  • 8/3/2019 Programacion en C unidad 03 capitulos 2 y 3

    39/66

    Ca acte st cas Ge e a esArreglos de caracteres

    Arreglos y funcionesOrdenamiento

    Busqueda

    se t o So tSelection SortQuick Sort

    Quick Sort I

    Primero que todo se debe mencionar que Quick Sort ocupa laestrategia de Divide y Venceras, la cual consiste en:

    Separa el problema en instancias mas pequenas: Fase departicion, divide el trabajop por la mitadCombina las pequenas soluciones en una solucion del problemamayor: Fase de Ordenamiento, conquista las mitades!

    Como opera?:

    Se elige uno de los elementos del arreglo como pivote.Luego se particionar el arreglo en dos arreglos AL y AR, endonde AL contiene todos los elementos menores que el pivote,y AR todos los mayores al pivote.

    Unidad 3

    Que son?Arreglos UnidimensionalesArreglos Bidimensionales y Multidimensionales

    Caractersticas GeneralesOrdenamiento BurbujaInsertion Sort

    http://find/http://goback/
  • 8/3/2019 Programacion en C unidad 03 capitulos 2 y 3

    40/66

    Arreglos de caracteresArreglos y funciones

    OrdenamientoBusqueda

    Selection SortQuick Sort

    Quick Sort II

    Y as recursivamente, por lo tanto lo que devuelve el algoritmoes Quicksort(AL) + pivote + Quicksort(AR).

    Ejemplo:

    Unidad 3

    Que son?Arreglos UnidimensionalesArreglos Bidimensionales y Multidimensionales

    Caractersticas GeneralesOrdenamiento BurbujaInsertion Sort

    http://find/http://goback/
  • 8/3/2019 Programacion en C unidad 03 capitulos 2 y 3

    41/66

    Arreglos de caracteresArreglos y funciones

    OrdenamientoBusqueda

    Selection SortQuick Sort

    Quick Sort III

    Unidad 3

    Que son?Arreglos UnidimensionalesArreglos Bidimensionales y Multidimensionales

    Caractersticas GeneralesOrdenamiento BurbujaInsertion Sort

    http://find/http://goback/
  • 8/3/2019 Programacion en C unidad 03 capitulos 2 y 3

    42/66

    Arreglos de caracteresArreglos y funciones

    OrdenamientoBusqueda

    Selection SortQuick Sort

    Quick Sort IVv o i d q u i c k s o r t ( i n t a , i n t L , i n t R){

    i n t p i v o t e , n u e vo P i vo t e ;

    i f ( L>

    =R )r e t u r n ;

    p i v o t e = e l e g i r P i v o t e ( a , L , R ) ;n ue vo Pi v o te = p a r t i c i o n a r ( a , L , R , p i v o t e ) ;q u i c k s o r t ( a , L , n u ev o Pi v ot e 1 ) ;

    q u i c k s o r t ( a , n u ev o Pi v ot e + 1 , R ) ;}

    Unidad 3

    Que son?Arreglos UnidimensionalesArreglos Bidimensionales y Multidimensionales

    Caractersticas GeneralesA l d

    Ordenamiento BurbujaInsertion SortS l i S

    http://find/http://goback/
  • 8/3/2019 Programacion en C unidad 03 capitulos 2 y 3

    43/66

    Arreglos de caracteresArreglos y funciones

    OrdenamientoBusqueda

    Selection SortQuick Sort

    Quick Sort V

    Ejemplo del algoritmo de particionamiento

    Unidad 3

    Que son?Arreglos UnidimensionalesArreglos Bidimensionales y Multidimensionales

    Caractersticas GeneralesA l d t

    Ordenamiento BurbujaInsertion SortS l ti S t

    http://find/http://goback/
  • 8/3/2019 Programacion en C unidad 03 capitulos 2 y 3

    44/66

    Arreglos de caracteresArreglos y funciones

    OrdenamientoBusqueda

    Selection SortQuick Sort

    Quick Sort VI

    Unidad 3

    Que son?Arreglos UnidimensionalesArreglos Bidimensionales y Multidimensionales

    Caractersticas GeneralesArreglos de caracteres

    Ordenamiento BurbujaInsertion SortSelection Sort

    http://find/http://goback/
  • 8/3/2019 Programacion en C unidad 03 capitulos 2 y 3

    45/66

    Arreglos de caracteresArreglos y funciones

    OrdenamientoBusqueda

    Selection SortQuick Sort

    Quick Sort VIIv o i d p a r t i c i o n a r ( i n t a , i n t L , i n t R , i n t p i v o t e ){

    i n t i , j ;i n t v a l o r P i v o t e=a [ p i v o t e ] ;

    INTERCAMBIAR( a [ p i v o t e ] , a [ R ] ) ;i = L ; j = R ;w h i l e ( i v a l o r P i v o t e ) j ;i f ( i

  • 8/3/2019 Programacion en C unidad 03 capitulos 2 y 3

    46/66

    Arreglos de caracteresArreglos y funciones

    OrdenamientoBusqueda

    Selection SortQuick Sort

    Quick Sort VIII

    El caso de la eleccion del Pivote:

    Una eleccion simple de un pivote sera algo as como:

    i n t e l e g i r P i v o t e ( i n t a , i n t L , i n t R){

    r e t u r n L ;}

    Si bien es un algoritmo sencillsimo, es el que mas se ocupa en

    terminos generales, elegir el primer elemento, o el ultimo comopivote.Una buena idea es elegir el pivote al azar

    Unidad 3

    Que son?Arreglos UnidimensionalesArreglos Bidimensionales y Multidimensionales

    Caractersticas GeneralesArreglos de caracteres

    Ordenamiento BurbujaInsertion SortSelection Sort

    http://find/http://goback/
  • 8/3/2019 Programacion en C unidad 03 capitulos 2 y 3

    47/66

    Arreglos de caracteresArreglos y funciones

    OrdenamientoBusqueda

    Selection SortQuick Sort

    Quick Sort IXi n t e l e g i r P i v o t e ( i n t a , i n t L , i n t R){

    i n t b=RAND()%(RL +1) ;r e t u r n L+b ;

    }

    Sin embargo, el costo de generar numeros aleatorios es caro, locual no conviene mucho.Lo ideal sera que el pivote fuese la mediana de los valores (de

    modo queAL y

    AR sean del mismo tamano).Una forma de aproximar es tomar la mediana de tres valores.

    Por ejemplo, mirar el que esta en L, el que esta en R, y el queesta en la mitad, y escoger el que sea intermedio entre esostres.

    Unidad 3

    Que son?Arreglos UnidimensionalesArreglos Bidimensionales y Multidimensionales

    Caractersticas GeneralesArreglos de caracteres

    Ordenamiento BurbujaInsertion SortSelection Sort

    http://find/http://goback/
  • 8/3/2019 Programacion en C unidad 03 capitulos 2 y 3

    48/66

    Arreglos de caracteresArreglos y funciones

    OrdenamientoBusqueda

    Selection SortQuick Sort

    Quick Sort Xi n t e l e g i r P i v o t e ( i n t a , i n t L , i n t R){

    i n t M = (R + L ) / 2 ;i f ( a [M] < a [ L ] )

    INTERCAMBIA ( a [M] , a [ L ] ) ;i f ( a [ R ] < a [ L ] )INTERCAMBIA( a [ R ] , a [ L ] ) ;

    i f ( a [ R]

  • 8/3/2019 Programacion en C unidad 03 capitulos 2 y 3

    49/66

    gArreglos y funciones

    OrdenamientoBusqueda

    Busqueda Binaria

    Generalidades

    Existen diferentes alternativas para buscar un elemento dentrode un arreglo.

    Algunos entregan un resultado con mayor eficiencia.

    Algoritmos:

    Busqueda secuencial

    Busqueda binaria

    Unidad 3

    Que son?Arreglos Unidimensionales

    Arreglos Bidimensionales y MultidimensionalesCaractersticas Generales

    Arreglos de caracteres

    GeneralidadesBusqueda SecuencialBusqueda Binaria

    http://find/http://goback/
  • 8/3/2019 Programacion en C unidad 03 capitulos 2 y 3

    50/66

    gArreglos y funciones

    OrdenamientoBusqueda

    Busqueda Binaria

    Busqueda Secuencial

    Recorre el arreglo comparando cada posicion con el dato quese desea buscar.

    Su eficiencia dependera de la posicion en la que encuentre eldato a buscar, ya que el peor caso es que este al final o no loencuentre.

    Unidad 3

    Que son?Arreglos Unidimensionales

    Arreglos Bidimensionales y MultidimensionalesCaractersticas Generales

    Arreglos de caracteres

    GeneralidadesBusqueda SecuencialBusqueda Binaria

    http://find/http://goback/
  • 8/3/2019 Programacion en C unidad 03 capitulos 2 y 3

    51/66

    Arreglos y funcionesOrdenamiento

    Busqueda

    Busqueda Binaria

    Codigo

    int search(int vector[], int N, int dato)

    {int i;

    int pos = -1;

    for (i=0; i

  • 8/3/2019 Programacion en C unidad 03 capitulos 2 y 3

    52/66

    Arreglos y funcionesOrdenamiento

    Busqueda

    Busqueda Binaria

    Busqueda Secuencial

    Retorna la posicion en la que encontro el dato.

    Si no lo encuentra retorna -1.

    Unidad 3

    Que son?Arreglos Unidimensionales

    Arreglos Bidimensionales y MultidimensionalesCaractersticas Generales

    Arreglos de caracteresA l f i

    GeneralidadesBusqueda SecuencialBusqueda Binaria

    http://find/http://goback/
  • 8/3/2019 Programacion en C unidad 03 capitulos 2 y 3

    53/66

    Arreglos y funcionesOrdenamiento

    Busqueda

    Busqueda Binaria

    Busqueda Binaria, Generalidades

    Para el correcto funcionamiento del algoritmo el arreglo debe estarordenado.

    Idea del argortimo:

    Se compara el dato con el elemento del centro del arreglo.

    Si son iguales se encontro.

    Si es mayor el dato se busca hacia el lado derecho.

    Sino se busca hacia el lado izquierda.

    Ejemplo: Buscar una palabra en un diccionario.

    Unidad 3

    Que son?Arreglos Unidimensionales

    Arreglos Bidimensionales y MultidimensionalesCaractersticas Generales

    Arreglos de caracteresArreglos y funciones

    GeneralidadesBusqueda SecuencialBusqueda Binaria

    http://find/http://goback/
  • 8/3/2019 Programacion en C unidad 03 capitulos 2 y 3

    54/66

    Arreglos y funcionesOrdenamiento

    Busqueda

    q

    Ejemplo

    Unidad 3

    Que son?Arreglos Unidimensionales

    Arreglos Bidimensionales y MultidimensionalesCaractersticas Generales

    Arreglos de caracteresArreglos y funciones

    GeneralidadesBusqueda SecuencialBusqueda Binaria

    http://find/http://goback/
  • 8/3/2019 Programacion en C unidad 03 capitulos 2 y 3

    55/66

    Arreglos y funcionesOrdenamiento

    Busqueda

    Ejemplo

    Unidad 3

    Que son?Arreglos Unidimensionales

    Arreglos Bidimensionales y MultidimensionalesCaractersticas Generales

    Arreglos de caracteresArreglos y funciones

    GeneralidadesBusqueda SecuencialBusqueda Binaria

    http://find/http://goback/
  • 8/3/2019 Programacion en C unidad 03 capitulos 2 y 3

    56/66

    Arreglos y funcionesOrdenamiento

    Busqueda

    int binSearch (double vector[], int N, double buscado){

    int izq = 0;

    int der = N-1;

    int centro = (izq+der)/2;

    while ((izq

  • 8/3/2019 Programacion en C unidad 03 capitulos 2 y 3

    57/66

    Arreglos y funcionesOrdenamiento

    Busqueda

    Ejercicio

    Como seria una implementacion del algoritmo utilizandorecursividad?

    Unidad 3

    http://find/http://goback/
  • 8/3/2019 Programacion en C unidad 03 capitulos 2 y 3

    58/66

    Contenidos Unidad 3

    Parte I: Funciones.Parte II: Arreglos.

    Parte III: Entrada y Salida de datos, parte II de II.

    Parte IV: Archivos.

    Unidad 3

    RecordatorioOtras funciones

    http://find/http://goback/
  • 8/3/2019 Programacion en C unidad 03 capitulos 2 y 3

    59/66

    Parte III: Entrada y Salida de datos, parte IIde II.

    Unidad 3

    RecordatorioOtras funciones

    http://find/http://goback/
  • 8/3/2019 Programacion en C unidad 03 capitulos 2 y 3

    60/66

    Recordatorio

    En en Unidad 2, estudiamos como ingresar datos por teclado y

    mostrar datos a pantalla, utilizando:

    int printf(char *cadena, const char *formato, ...);int scanf(const char *formato, ...);

    En este unidad veremos otras funciones utiles para entrada y salidade datos.

    Unidad 3

    RecordatorioOtras funciones

    Generacion de numeros aleatoriosFuncion system(...)Otras funciones

    http://find/http://goback/
  • 8/3/2019 Programacion en C unidad 03 capitulos 2 y 3

    61/66

    Otras funciones

    int getchar(void);

    lee un caracter del tecladoUtil para la eleccion de algun tem de un menu

    int putchar(int c);

    imprime un caracter en pantalla.

    char *gets(char *cadena);

    lee una cadena de caracteres ingresadas por pantalla.

    int puts(const char *cadena);imprime en pantalla el argumento, finalizando con un salto delnea.

    Unidad 3

    RecordatorioOtras funciones

    Generacion de numeros aleatoriosFuncion system(...)Otras funciones

    http://find/http://goback/
  • 8/3/2019 Programacion en C unidad 03 capitulos 2 y 3

    62/66

    Generacion de numeros aleatorios

    Es posible obtener numero aleatorios mediante la funcionrand().

    Esta funcion esta definida en el archivo cabecera Calcula una secuencia de numero enteros pseudo aleatorios enel rango de 0 y RAND MAX (constante definida en la libreriastdlib.h).

    Semilla para rand() es posible mediante la funcionsrand(unsigned int semilla)

    Ej.: srand( (unsigned int)time( NULL ) );

    Unidad 3

    RecordatorioOtras funciones

    Generacion de numeros aleatoriosFuncion system(...)Otras funciones

    http://find/http://goback/
  • 8/3/2019 Programacion en C unidad 03 capitulos 2 y 3

    63/66

    # i f n d e f u l o n g# d e f i n e u l o n g u ns i gn e d l o ng# e n d i f

    . . .u lo ng i n i t A r r a y ( u lo ng a r r a y [ ] , u lo ng s i z e , u lo ng p )

    { i n t i ;f o r ( i = 0 ; i < s i z e ; i ++){

    u l o n g uNum = ( u l o n g ) ( ( d o u b l e ) r a n d ( ) / ( ( d o u b l e )RAND MAX+( u l o n g ) 1 ) p ) ;

    a r r a y [ i ] = uNum;p r i n t f ( %u\n , uNum ) ;

    }}

    Unidad 3

    RecordatorioOtras funciones

    Generacion de numeros aleatoriosFuncion system(...)Otras funciones

    http://find/http://goback/
  • 8/3/2019 Programacion en C unidad 03 capitulos 2 y 3

    64/66

    Funcion system(...)

    Permite ejecutar ordenes sobre el S.O.

    Depende del sistema operativo sobre el cual se trabaje (para

    indicar la orden).Ej.:

    Conocer la cantidad de archivos que se encuentran en undeterminado directorio, conocer la fecha del sistema, realizarun ping (para trabajo con sockets). . . etc

    La funcion que permite esto es:system(orden);Ej.; system(dir);

    Unidad 3

    RecordatorioOtras funciones

    Generacion de numeros aleatoriosFuncion system(...)Otras funciones

    http://find/http://goback/
  • 8/3/2019 Programacion en C unidad 03 capitulos 2 y 3

    65/66

    Otras funciones

    int atoi(const char *numPtr);

    Convierte una cadena a int.

    void exit(int estado);

    Permite finalizar un programa.

    void abort(void);

    Genera una salida anormal del programa

    Unidad 3

    Preguntas

    http://find/http://goback/
  • 8/3/2019 Programacion en C unidad 03 capitulos 2 y 3

    66/66

    Preguntas

    Unidad 3

    http://find/http://goback/