Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Profesores: Eliana Providel - Roberto Muoz S. n Escuela de Ing. Civil Informtica, a Universidad de Valpara so
{eliana.providel,roberto.munoz.s}@uv.cl
Unidad 3
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
Unidad 3
Contenidos
Qu son?. e Arreglos Unidimensionales. Arreglos Bidimensionales y Multidimensionales. Caracter sticas generales. Arreglos de caracteres. Arreglos y funciones. Ordenamiento. Bsqueda. u
Unidad 3
Qu son? e Arreglos Unidimensionales Arreglos Bidimensionales y Multidimensionales Caracter sticas Generales Arreglos de caracteres Arreglos y funciones Ordenamiento Busqueda
Qu son? e
Son un conjunto nito de datos del mismo tipo. Se agrupan bajo un mismo nombre. Su almacenamiento en memoria es contigua.
Unidad 3
Qu son? e Arreglos Unidimensionales Arreglos Bidimensionales y Multidimensionales Caracter sticas Generales Arreglos de caracteres Arreglos y funciones Ordenamiento Busqueda
Declaracin de un arreglo o
Declaracin o tipo dato nombre arreglo [tamao]; n tipo dato: puede ser char, int,... nombre arreglo: nombre que se le dar al arreglo. a tamao: constante que especica el numero de elementos del n array. Ej: int arreglo[10];
Unidad 3
Qu son? e Arreglos Unidimensionales Arreglos Bidimensionales y Multidimensionales Caracter sticas Generales Arreglos de caracteres Arreglos y funciones Ordenamiento Busqueda
Inicializacin de un arreglos o
Unidad 3
Qu son? e Arreglos Unidimensionales Arreglos Bidimensionales y Multidimensionales Caracter sticas Generales Arreglos de caracteres Arreglos y funciones Ordenamiento Busqueda
Para acceder a los datos del arreglo, se utiliza un ndice, el nombre del arreglo, y los [ ]. El ndice para la primera posicin es 0. o Ej.
1 2
Unidad 3
Qu son? e Arreglos Unidimensionales Arreglos Bidimensionales y Multidimensionales Caracter sticas Generales Arreglos de caracteres Arreglos y funciones Ordenamiento Busqueda
Declaracin o
Declaracin o tipo dato nombre[tamao][tamao]...; n n tipo dato: tipo de dato a almacenar. nombre: Nombre del arreglo. tamao: tamao de la dimensin del arreglo. n n o Para cada nueva dimensin se debe agregar un nuevo [ ] o Ejemplos:
1 2
Qu son? e Arreglos Unidimensionales Arreglos Bidimensionales y Multidimensionales Caracter sticas Generales Arreglos de caracteres Arreglos y funciones Ordenamiento Busqueda
Unidad 3
Qu son? e Arreglos Unidimensionales Arreglos Bidimensionales y Multidimensionales Caracter sticas Generales Arreglos de caracteres Arreglos y funciones Ordenamiento Busqueda
arreglo[0][0][0][0][0]; 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
Qu son? e Arreglos Unidimensionales Arreglos Bidimensionales y Multidimensionales Caracter sticas Generales Arreglos de caracteres Arreglos y funciones Ordenamiento Busqueda
Manejo de Indices
Unidad 3
Qu son? e Arreglos Unidimensionales Arreglos Bidimensionales y Multidimensionales Caracter sticas Generales Arreglos de caracteres Arreglos y funciones Ordenamiento Busqueda
Manejo de Indices
Manejo de Indices
Utilizando dene para los l mites del arreglo. Ejemplo #define MAX 100 ... int arreglo[4][MAX]; int arreglo[4][MAX-1];
Unidad 3
Qu son? e Arreglos Unidimensionales Arreglos Bidimensionales y Multidimensionales Caracter sticas Generales Arreglos de caracteres Arreglos y funciones Ordenamiento Busqueda
Manejo de Indices
Manejo de Indices
Ejemplo: ... int arreglo[2][3]={{3,4},{5,1,2}}; for(i=0;i<2;i++) { for(j=0;j<3;j++) printf("arreglo %d \n", arreglo[i][j]); } ...
Unidad 3
Qu son? e Arreglos Unidimensionales Arreglos Bidimensionales y Multidimensionales Caracter sticas Generales Arreglos de caracteres Arreglos y funciones Ordenamiento Busqueda
Manejo de Indices
Manejo de Indices
Unidad 3
Qu son? e Arreglos Unidimensionales Arreglos Bidimensionales y Multidimensionales Caracter sticas Generales Arreglos de caracteres Arreglos y funciones Ordenamiento Busqueda
Arreglo de caracteres
Permiten manejar un conjunto de caracteres o s mbolos bajo un mismo nombre. La terminacin de la cadena se identica con nulo, que es o especicado por \0.
Unidad 3
Qu son? e Arreglos Unidimensionales Arreglos Bidimensionales y Multidimensionales Caracter sticas Generales Arreglos de caracteres Arreglos y funciones Ordenamiento Busqueda
Unidad 3
Qu son? e Arreglos Unidimensionales Arreglos Bidimensionales y Multidimensionales Caracter sticas Generales Arreglos de caracteres Arreglos y funciones Ordenamiento Busqueda
Se puede recibir la entrada estndar utilizando la funcin a o scanf con el formato %s. De igual forma para printf. De esta forma se recibe y muestra todo el arreglo.
Unidad 3
Qu son? e Arreglos Unidimensionales Arreglos Bidimensionales y Multidimensionales Caracter sticas Generales Arreglos de caracteres Arreglos y funciones Ordenamiento Busqueda
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
Qu son? e Arreglos Unidimensionales Arreglos Bidimensionales y Multidimensionales Caracter sticas Generales Arreglos de caracteres Arreglos y funciones Ordenamiento Busqueda
Arreglos y funciones
Al pasar un arreglo como argumento a una funcin se pasa o solo el nombre del arreglo.
Unidad 3
Qu son? e Arreglos Unidimensionales Arreglos Bidimensionales y Multidimensionales Caracter sticas Generales Arreglos de caracteres Arreglos y funciones Ordenamiento Busqueda
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
Qu son? e Arreglos Unidimensionales Arreglos Bidimensionales y Multidimensionales Caracter sticas Generales Arreglos de caracteres Arreglos y funciones Ordenamiento Busqueda
Qu hace el programa? e
1
Cuando se declara la funcin, se indica que recibir un o a arreglos: void inv(char s[]) { ... }
Cuando se llama a la funcin, se le pasa el nombre del arreglo. o char inf[]="Programacin I"; o inv(inf );
Luego la funcin inv(...) recorre el arreglo desde la ultima o posicin y va mostrando el contenido. o
Unidad 3
Qu son? e Arreglos Unidimensionales Arreglos Bidimensionales y Multidimensionales Caracter sticas Generales Arreglos de caracteres Arreglos y funciones Ordenamiento Busqueda
Para arreglos multidimensionales, en los argumentos de la funcin, no se indica la primera dimensin pero s todas las o o dems. a Al llamar a la funcin se pasa como parametro o argumento el o nombre del arreglo. Para retornar el arreglos se retorna slo el nombre del arreglo. o
Unidad 3
Qu son? e Arreglos Unidimensionales Arreglos Bidimensionales y Multidimensionales Caracter sticas Generales Arreglos de caracteres Arreglos y funciones Ordenamiento Busqueda
Ejemplo: #DEFINE MAX 2 int arreglo[MAX][MAX]={{1,2},{6,7}} ; int funcion(int arr[][MAX]) { inti,j; for(i=0;i<MAX;i++) for(j=0;j<MAX;j++) printf("\narreglo i:%d j :%d %d ",i,j,arr[i ][j]); return arr; } int main(){ arreglo[MAX][MAX]=funcion(arreglo); return 0; } Unidad 3
Qu son? e Arreglos Unidimensionales Arreglos Bidimensionales y Multidimensionales Caracter sticas Generales Arreglos de caracteres Arreglos y funciones Ordenamiento Busqueda
Ordenamiento Burbuja
Para empezar, veremos uno de los algoritmos ms simples y a populares... Ordenamiento Burbuja o Bubble Sort. Ordenamiento Burbuja, su nombre proviene del hecho de que los elementos ms livianos (chicos), salgan a ote, a mientras que los ms pesados (grandes) se hundan. a
Unidad 3
Qu son? e Arreglos Unidimensionales Arreglos Bidimensionales y Multidimensionales Caracter sticas Generales Arreglos de caracteres Arreglos y funciones Ordenamiento Busqueda
Ordenamiento Burbuja
Ejemplo: 15 8 4 50 3
Si el elemento de abajo es ms pequeo se cambian los valores de a n posicin y se contina con el siguiente nmero. Luego que termina o u u de dar el primer recorrido al arreglo, comienza de nuevo desde el principio, pero el elemento ms pesado ya qued al fondo, por lo a o tanto, ahora se comparan slo los primeros N-1 elementos. o
Unidad 3
Qu son? e Arreglos Unidimensionales Arreglos Bidimensionales y Multidimensionales Caracter sticas Generales Arreglos de caracteres Arreglos y funciones Ordenamiento Busqueda
Ordenamiento Burbuja
15 8 4 50 3
8 15 4 50 3
8 4 15 50 3
8 4 15 50 3
8 4 15 3 50
8 4 15 3 50
4 8 15 3 50
4 8 15 3 50
4 8 3 15 50
4 8 3 15 50
4 8 3 15 50
4 3 8 15 50
3 4 8 15 50
Unidad 3
Qu son? e Arreglos Unidimensionales Arreglos Bidimensionales y Multidimensionales Caracter sticas Generales Arreglos de caracteres Arreglos y funciones Ordenamiento Busqueda
Ordenamiento Burbuja
void bubble(int a[], int n) { int i,j; for (i=n-1;i>0;i--) for (j=0;j<=i-1;j++) if (a[j] > a[j+1]) { temp = a[j]; a[j] = a[j+1]; a[j+1] = temp; } }
Unidad 3
Qu son? e Arreglos Unidimensionales Arreglos Bidimensionales y Multidimensionales Caracter sticas Generales Arreglos de caracteres Arreglos y funciones Ordenamiento Busqueda
Ordenamiento Burbuja
Otra forma: void bubble(int a[], int n) { int i,j; for (i=0;i<n-1;i++) for (j=n-1;j>i;j--) if (a[j] < a[j-1]) { temp = a[j]; a[j] = a[j-1]; a[j-1] = temp; } }
Unidad 3
Qu son? e Arreglos Unidimensionales Arreglos Bidimensionales y Multidimensionales Caracter sticas Generales Arreglos de caracteres Arreglos y funciones Ordenamiento Busqueda
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 un conjunto ordenado. Despus, cuando hay k elementos e ordenados de menor a mayor, se toma el elemento k + 1 y se compara con todos los elementos ya ordenados, detenindose e cuando se encuentra un elemento mayor. En este punto se inserta el elemento k + 1 debiendo desplazar los dems a elementos.
Unidad 3
Qu son? e Arreglos Unidimensionales Arreglos Bidimensionales y Multidimensionales Caracter sticas Generales Arreglos de caracteres Arreglos y funciones Ordenamiento Busqueda
Insertion Sort II
Ejemplo: El elemento k + 1 se va comparndo de atrs para adelante, a a detenindose con el primer elemento menor. Simultneamente a a se van haciendo los desplazamientos. 11 26 47 59 96 32 11 26 47 59 96 11 26 47 59 96 11 26 47 59 96 11 26 32 47 59 96
Unidad 3
Qu son? e Arreglos Unidimensionales Arreglos Bidimensionales y Multidimensionales Caracter sticas Generales Arreglos de caracteres Arreglos y funciones Ordenamiento Busqueda
Qu son? e Arreglos Unidimensionales Arreglos Bidimensionales y Multidimensionales Caracter sticas Generales Arreglos de caracteres Arreglos y funciones Ordenamiento Busqueda
Insertion Sort IV
j = j - 1; } x[j] = tmp; } }
Unidad 3
Qu son? e Arreglos Unidimensionales Arreglos Bidimensionales y Multidimensionales Caracter sticas Generales Arreglos de caracteres Arreglos y funciones Ordenamiento Busqueda
Insertion Sort V
Insertion 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 ) { int 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
Qu son? e Arreglos Unidimensionales Arreglos Bidimensionales y Multidimensionales Caracter sticas Generales Arreglos de caracteres Arreglos y funciones Ordenamiento Busqueda
Insertion Sort VI
} } }
Unidad 3
Qu son? e Arreglos Unidimensionales Arreglos Bidimensionales y Multidimensionales Caracter sticas Generales Arreglos de caracteres Arreglos y funciones Ordenamiento Busqueda
Selection Sort I
El Ordenamiento por Seleccin (Selection Sort) es un o algoritmo de ordenamiento, funciona de la siguiente forma:
Buscar el m nimo elemento de la lista. Intercambiarlo con el primero. Buscar el m nimo en el resto de la lista. Intercambiarlo con el segundo. y as sucesivamente...
Es decir:
Buscar el m nimo elemento entre una posicin i y el nal de la o lista. Intercambia el m nimo con el elemento de la posicin i. o
Unidad 3
Qu son? e Arreglos Unidimensionales Arreglos Bidimensionales y Multidimensionales Caracter sticas Generales Arreglos de caracteres Arreglos y funciones Ordenamiento Busqueda
Selection Sort II
Ejemplo: 31 11 11 11 11 25 25 12 12 12 12 12 25 22 22 22 22 22 25 25 11 31 31 31 31
Unidad 3
Qu son? e Arreglos Unidimensionales Arreglos Bidimensionales y Multidimensionales Caracter sticas Generales Arreglos de caracteres Arreglos y funciones Ordenamiento Busqueda
Unidad 3
Qu son? e Arreglos Unidimensionales Arreglos Bidimensionales y Multidimensionales Caracter sticas Generales Arreglos de caracteres Arreglos y funciones Ordenamiento Busqueda
Quick Sort I
Primero que todo se debe mencionar que Quick Sort ocupa la estrategia de Divide y Vencers, la cual consiste en: a
Separa el problema en instancias ms pequeas: Fase de a n particin, divide el trabajop por la mitad o Combina las pequeas soluciones en una solucin del problema n o mayor: Fase de Ordenamiento, conquista las mitades!
Cmo opera?: o
Se elige uno de los elementos del arreglo como pivote. Luego se particionar el arreglo en dos arreglos AL y AR , en donde AL contiene todos los elementos menores que el pivote, y AR todos los mayores al pivote.
Unidad 3
Qu son? e Arreglos Unidimensionales Arreglos Bidimensionales y Multidimensionales Caracter sticas Generales Arreglos de caracteres Arreglos y funciones Ordenamiento Busqueda
Quick Sort II
Ejemplo:
Unidad 3
Qu son? e Arreglos Unidimensionales Arreglos Bidimensionales y Multidimensionales Caracter sticas Generales Arreglos de caracteres Arreglos y funciones Ordenamiento Busqueda
Unidad 3
Qu son? e Arreglos Unidimensionales Arreglos Bidimensionales y Multidimensionales Caracter sticas Generales Arreglos de caracteres Arreglos y funciones Ordenamiento Busqueda
Quick Sort IV
v o i d q u i c k s o r t ( i n t a , i n t L , i n t R) { int pivote , nuevoPivote ; i f ( L>=R ) return ; pivote = e l e g i r P i v o t e (a , L ,R); nuevoPivote = p a r t i c i o n a r (a , L , R, pivote ) ; quicksort (a , L , nuevoPivote 1); quicksort (a , nuevoPivote + 1 , R) ; }
Unidad 3
Qu son? e Arreglos Unidimensionales Arreglos Bidimensionales y Multidimensionales Caracter sticas Generales Arreglos de caracteres Arreglos y funciones Ordenamiento Busqueda
Quick Sort V
Unidad 3
Qu son? e Arreglos Unidimensionales Arreglos Bidimensionales y Multidimensionales Caracter sticas Generales Arreglos de caracteres Arreglos y funciones Ordenamiento Busqueda
Quick Sort VI
Unidad 3
Qu son? e Arreglos Unidimensionales Arreglos Bidimensionales y Multidimensionales Caracter sticas Generales Arreglos de caracteres Arreglos y funciones Ordenamiento Busqueda
Unidad 3
Qu son? e Arreglos Unidimensionales Arreglos Bidimensionales y Multidimensionales Caracter sticas Generales Arreglos de caracteres Arreglos y funciones Ordenamiento Busqueda
Si bien es un algoritmo sencill simo, es el que ms se ocupa en a trminos generales, elegir el primer elemento, o el ultimo como e pivote. Una buena idea es elegir el pivote al azar
Unidad 3
Qu son? e Arreglos Unidimensionales Arreglos Bidimensionales y Multidimensionales Caracter sticas Generales Arreglos de caracteres Arreglos y funciones Ordenamiento Busqueda
Quick Sort IX
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) { i n t b=RAND()%(RL +1); r e t u r n L+b ; }
Sin embargo, el costo de generar nmeros aleatorios es caro, lo u cual no conviene mucho. Lo ideal ser que el pivote fuese la mediana de los valores (de a modo que AL y AR sean del mismo tamao). n Una forma de aproximar es tomar la mediana de tres valores. Por ejemplo, mirar el que est en L, el que est en R, y el que a a est en la mitad, y escoger el que sea intermedio entre esos a tres.
Unidad 3
Qu son? e Arreglos Unidimensionales Arreglos Bidimensionales y Multidimensionales Caracter sticas Generales Arreglos de caracteres Arreglos y funciones Ordenamiento Busqueda
Quick Sort X
i n t e l e g i r P i v o t e ( i n t a , { i n t M = (R + L ) / 2 ; i f ( a [M] < a [ L ] ) INTERCAMBIA( a [M] i f (a [R] < a [ L ] ) INTERCAMBIA( a [ R ] i f ( a [ R]<a [M] ) INTERCAMBIA( a [ R ] r e t u r n M; } i n t L , i n t R)
Cuando los arreglos son pequeos (largo < 10), conviene n pasar a un algoritmo simple como Insertion Sort.
Unidad 3
Qu son? e Arreglos Unidimensionales Arreglos Bidimensionales y Multidimensionales Caracter sticas Generales Arreglos de caracteres Arreglos y funciones Ordenamiento Busqueda
Generalidades
Existen diferentes alternativas para buscar un elemento dentro de un arreglo. Algunos entregan un resultado con mayor eciencia. Algoritmos:
Bsqueda secuencial u Bsqueda binaria u
Unidad 3
Qu son? e Arreglos Unidimensionales Arreglos Bidimensionales y Multidimensionales Caracter sticas Generales Arreglos de caracteres Arreglos y funciones Ordenamiento Busqueda
Bsqueda Secuencial u
Recorre el arreglo comparando cada posicin con el dato que o se desea buscar. Su eciencia depender de la posicin en la que encuentre el a o dato a buscar, ya que el peor caso es que est al nal o no lo e encuentre.
Unidad 3
Qu son? e Arreglos Unidimensionales Arreglos Bidimensionales y Multidimensionales Caracter sticas Generales Arreglos de caracteres Arreglos y funciones Ordenamiento Busqueda
Cdigo o
int search(int vector[], int N, int dato) { int i; int pos = -1; for (i=0; i<N; i++) if (vector[i]==dato)pos = i; return pos; }
Unidad 3
Qu son? e Arreglos Unidimensionales Arreglos Bidimensionales y Multidimensionales Caracter sticas Generales Arreglos de caracteres Arreglos y funciones Ordenamiento Busqueda
Bsqueda Secuencial u
Unidad 3
Qu son? e Arreglos Unidimensionales Arreglos Bidimensionales y Multidimensionales Caracter sticas Generales Arreglos de caracteres Arreglos y funciones Ordenamiento Busqueda
Unidad 3
Qu son? e Arreglos Unidimensionales Arreglos Bidimensionales y Multidimensionales Caracter sticas Generales Arreglos de caracteres Arreglos y funciones Ordenamiento Busqueda
Ejemplo
Unidad 3
Qu son? e Arreglos Unidimensionales Arreglos Bidimensionales y Multidimensionales Caracter sticas Generales Arreglos de caracteres Arreglos y funciones Ordenamiento Busqueda
Ejemplo
Unidad 3
Qu son? e Arreglos Unidimensionales Arreglos Bidimensionales y Multidimensionales Caracter sticas Generales Arreglos de caracteres Arreglos y funciones Ordenamiento Busqueda
int binSearch (double vector[], int N, double buscado){ int izq = 0; int der = N-1; int centro = (izq+der)/2; while ((izq<=der) && (vector[centro]!=buscado)) { if(buscado<vector[centro]) der = centro - 1; else izq = centro + 1; centro = (izq+der)/2;} if (izq>der)return -1; else return centro; }
Unidad 3
Qu son? e Arreglos Unidimensionales Arreglos Bidimensionales y Multidimensionales Caracter sticas Generales Arreglos de caracteres Arreglos y funciones Ordenamiento Busqueda
Ejercicio
Unidad 3
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
Unidad 3
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 salida de datos.
Unidad 3
Otras funciones
int getchar(void);
lee un carcter del teclado a Util para la eleccin de algn o u tem de un men u
Unidad 3
Unidad 3
#i f n d e f u l o n g #d e f i n e u l o n g u n s i g n e d l o n g #e n d i f ... ulong i n i t A r r a y ( ulong array [ ] , ulong size , ulong p ) { int i ; f o r ( i = 0 ; i < s i z e ; i ++) { u l o n g uNum = ( u l o n g ) ( ( double ) r a n d ( ) / ( ( d ouble )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
Funcin system(...) o
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 un determinado directorio, conocer la fecha del sistema, realizar un ping (para trabajo con sockets). . . etc La funcin que permite esto es: o system(orden); Ej.; system(dir);
Unidad 3
Otras funciones
void abort(void);
Genera una salida anormal del programa
Unidad 3
Preguntas
Preguntas
Unidad 3