Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Programacin I
Definicin
Un arreglo es un conjunto finito e indexado de elementos homogneos, que se referencian por un identificador comn (nombre). La propiedad indexado significa que el elemento primero, segundo, hasta el n-simo de un arreglo pueden ser identificados por su posicin ordinal. Un arreglo es una coleccin finita, homognea y ordenada de elementos del mismo tipo.
MC Beatriz Beltrn Martnez FCC - BUAP Primavera 2012 32
Definicin
De manera formal se define un arreglo de tamao n de los elementos de tipo A, es un elemento del espacio n-dimensional del conjunto A, es decir, X es arreglo de tamao n del tipo A si y solo si XAn.
FCC - BUAP
Primavera 2012
33
Representacin
n-1
n elementos
Los arreglos pueden contener un mnimo de cero elementos hasta un mximo de n elementos.
MC Beatriz Beltrn Martnez FCC - BUAP Primavera 2012 34
Clasificacin
Los arreglos se clasifican en:
Unidimensionales (Vectores): un slo ndice Bidimensionales (Tablas o Matrices): dos ndices Multidimensionales: ms de dos ndices
FCC - BUAP
Primavera 2012
35
Arreglos Unidimensionales
Programacin I
Caractersticas
Los arreglos unidimensionales deben cumplir lo siguiente:
Compuesto por un nmero de elementos finito. Tamao fijo: el tamao del arreglo debe ser conocido en tiempo de compilacin. Homogneo: todos los elementos son del mismo tipo. Son almacenados en posiciones contiguas de memoria, cada uno de los cuales se les puede acceder directamente. Cada elemento se puede procesar como si fuese una variable simple ocupando una posicin de memoria.
MC Beatriz Beltrn Martnez FCC - BUAP Primavera 2012 37
Definicin
Para definir en lenguaje C un arreglo. Se tiene: Tipo nom_var[TAM]; El arreglo que se define inicia en 0, y termina en TAM-1, con un total de TAM elementos del tipo definido Ejemplo: int A[100]; float X[N];
MC Beatriz Beltrn Martnez FCC - BUAP Primavera 2012 38
Operaciones
Asignacin
La manera de asignar (insertar) un valor en cada elemento del arreglo unidimensional es mediante el subndice que indica la posicin, se puede utilizar la siguiente forma: <NombreVector>[subndice] = <Valor>;
Ejemplo:
A[1] =10; pais[2] = 2.56; precio[3] = precio[2]+10.5;
MC Beatriz Beltrn Martnez FCC - BUAP Primavera 2012 39
Operaciones
Lectura
La lectura se realiza de la siguiente manera: for (i=0; i<n; i++) scanf(%d , &A[i]);
Escritura
Consiste en asignarle un valor a cada elemento del arreglo: for (i=0; i<n; i++) printf (\n %d , A[i]);
MC Beatriz Beltrn Martnez FCC - BUAP Primavera 2012 40
Cadenas
Programacin I
Conceptos Bsicos
Una cadena es un conjunto de caracteres incluido el espacio en blanco. Por ejemplo: Hola 123vb v bg%. Generalmente una cadena va encerrada entre comillas.
MC Beatriz Beltrn Martnez FCC - BUAP Primavera 2012 42
Conceptos Bsicos
La longitud de una cadena es el nmero de caracteres que contiene. La cadena vaca es la que no tiene ningn carcter y se representa como . El ltimo carcter de la cadena marca el fin de la cadena, que corresponde al carcter \0. Este carcter ocupa un espacio en el arreglo.
FCC - BUAP
Primavera 2012
43
Instrucciones
Se hace uso de la biblioteca <string.h>. strcpy (cadena1, cadena2): Copia el contenido de la cadena2 en la cadena1, si las dos cadenas se superponen, el resultado es impredecible. La copia se realiza an cuando las cadenas no sean de la misma longitud. strcat (cadena1, cadena2): Anexa la cadena2 al final de la cadena1. El terminador nulo de cadena1 se reemplaza por el primer carcter de cadena2.
MC Beatriz Beltrn Martnez FCC - BUAP Primavera 2012 44
Instrucciones
compara strcmp (cadena1, cadena2): Compara la cadena1 con la cadena2, y devuelve:
0 si cadena1=cadena2 entero mayor a cero si cadena1>cadena2 entero menor a cero si cadena1<cadena2
tamao strlen (cadena): Devuelve la longitud de la cadena sin contar el terminador nulo.
MC Beatriz Beltrn Martnez FCC - BUAP Primavera 2012 45
Ordenamiento
Programacin I
FCC - BUAP
Primavera 2012
49
Para j l a r hacer Si A[j-1] > A[j] entonces temp A[j] A[j] A[j-1] A[j-1] temp kj Fin_si Fin_para r k-1 Hasta l > r Fin
Primavera 2012
50
FCC - BUAP
Primavera 2012
57
Bsqueda
Programacin I
Bsqueda Lineal
La tarea de bsqueda es una de las ms frecuentes en programacin. Para los siguientes algoritmos vamos a suponer que la coleccin de los datos en donde vamos a buscar, es fija, y que es de tamao n. La tarea consiste en hallar un elemento cuya clave sea igual al argumento de bsqueda.
FCC - BUAP
Primavera 2012
60
Bsqueda Lineal
Cuando los elementos no llevan un orden y no existe informacin sobre ellos se utiliza la bsqueda lineal, es decir, comparar uno a uno los elementos hasta encontrar el deseado. Existen dos condiciones que ponen fin a la bsqueda. Se encuentra el elemento. Se ha rastreado toda la coleccin y no se encuentra el elemento.
MC Beatriz Beltrn Martnez FCC - BUAP Primavera 2012 61
Bsqueda Lineal
Procedimiento busquedaLineal (elemento) Inicio i0 Mientras (i < N) y (A[i] <> elemento) hacer ii+1 Fin_mientras Fin
Si i al final es N entonces el elemento no fue encontrado, pero sino entonces quiere decir que el elemento esta en la posicin i-sima del arreglo.
MC Beatriz Beltrn Martnez FCC - BUAP Primavera 2012 62
Bsqueda Binaria
Para utilizar este algoritmo es necesario que la coleccin este ordenada. La idea clave consiste en inspeccionar el elemento medio y compararlo con el elemento de bsqueda x.
Si es igual a x, la bsqueda termina; si es menor que x, inferimos que todos los elementos con ndices menores que o iguales a m pueden ser eliminados, y nuestra bsqueda ahora se centra en los dems elementos. Esto se repite mientras el ndice inicial sea menor o igual que el final y el elemento no sea encontrado.
MC Beatriz Beltrn Martnez FCC - BUAP Primavera 2012 63
Bsqueda Binaria
Procedimiento busquedaBinaria(x) Inicio L 0 RN found false Mientras L< R y not (found) hacer m(L+R) div 2 Si A[m]=x entonces foundtrue Sino Si A[m] < x entonces L m+1 Sino R m fin_si fin_si fin_mientras Fin
MC Beatriz Beltrn Martnez FCC - BUAP Primavera 2012 64