Sie sind auf Seite 1von 28

Programacin Avanzada y Mtodos Numricos

Previo 1: Arreglos, estructuras, uniones y enumeraciones


Arreglos multidimensionales
Estructuras, uniones y enumeraciones
Programacin modular

2012-2 Eric Ulises Garca Cano Castillo - gcc@unica.unam.mx 1


Arreglos multidimensionales
EN ESTA SECCIN
1
Caractersticas de un arreglo
Definicin de un arreglo
Dimensin de un arreglo
Para qu sirven?
Arreglos
Un arreglo es una coleccin de elementos con las siguientes
caractersticas:

Mismo tipo de dato (integer, float, char, double, etc.)

Almacenados en memoria de manera consecutiva

Comparten el mismo nombre

Todos los elementos del arreglo son accedidos a travs de un ndice


de tipo entero positivo que siempre empieza en 0 y termina en n-1
donde n es el nmero de elementos del arreglo

Una vez que se declara el arreglo no se pude cambiar su tamao

2012-2 Eric Ulises Garca Cano Castillo - gcc@unica.unam.mx 3


Declaracin de un En el enunciado siguiente se declara un
arreglo en C arreglo de enteros llamado lista de 5
elementos.
1. Tipo de dato

2. Nombre del arreglo

3. Tamao del arreglo

2012-2 Eric Ulises Garca Cano Castillo - gcc@unica.unam.mx 4


Objetos en C Un objeto en C es relativamente similar a
un objeto en la Programacin Orientada a
Objetos.
Un objeto en C es una entidad
que cuenta con:

1. Un nombre
2. Un ndice
3. Una direccin de memoria
4. Un contenido

2012-2 Eric Ulises Garca Cano Castillo - gcc@unica.unam.mx 5


Dimensin de un arreglo
Los elementos de un arreglo son accedidos a travs de un
nmero entero llamado ndice, el nmero de ndices
determina la dimensin del arreglo.

X[i] elemento i del arreglo X de una dimensin

Y[i][j] elemento ubicado en el rengln i y columna j del arreglo Y de


dos dimensiones

Nota: Un arreglo puede ser pasado a una funcin como parmetro, pero
una funcin no puede devolver un arreglo, slo un apuntador a dicho
arreglo.

2012-2 Eric Ulises Garca Cano Castillo - gcc@unica.unam.mx 6


Arreglos Los arreglos multidimensionales tambin
multidimensionales se guardan de manera consecutiva en
memoria.
Resulta ms sencillo ver un
arreglo de varias dimensiones
como un conjunto m de
arreglos unidimensionales de
n elementos.

1. Varios arreglos
unidimensionales de n
elementos.

2. Un arreglo bidimensional,
es decir, se requieren dos
ndices para acceder a los
elementos.

2012-2 Eric Ulises Garca Cano Castillo - gcc@unica.unam.mx 7


Para qu sirven?
Un arreglo es una estructura de datos de acceso directo.
Para trabajar con arreglos muchas veces es preciso recorrerlos. Esto
se realiza por medio de ciclos. No se puede trabajar con todos los
elementos del arreglo al mismo tiempo

Por su naturaleza, los arreglos pueden ser usados para la


organizacin y bsquedas sencillas de datos (informacin).

En C se usan arreglos para representar cadenas de


caracteres, que son un conjunto de caracteres consecutivos.

2012-2 Eric Ulises Garca Cano Castillo - gcc@unica.unam.mx 8


Estructuras
EN ESTA SECCIN
2
Caractersticas de una estructura
Definicin de una estructura
Procesamiento de una estructura
Paso de estructuras como
parmetros
Devolucin de estructuras
Estructuras
De manera similar a los arreglos, las estructuras son una
coleccin de elementos agrupadas bajo un mismo nombre.

Las variables de la estructura pueden ser de diferentes tipos


de datos, pudiendo contener cualquier tipo de dato del
lenguaje, incluyendo arreglos y a otras estructuras.

Es correcto decir que una estructura es un nuevo tipo de dato


definido por el usuario a partir de datos primitivos (integer,
char, float, etc.).

Cada variable dentro de la estructura recibe el nombre de


miembro. Dos miembros no pueden tener el mismo nombre.
2012-2 Eric Ulises Garca Cano Castillo - gcc@unica.unam.mx 10
Declaracin de una Existen diferentes formas de declarar una
estructura estructura, investguelas.
La declaracin de una
estructura es ms complicada
que la de un arreglo ya que la
primera debe ser definida en
trminos de sus miembros
individuales. De manera muy
general:

1. Palabra reservada struct


2. Nombre de la estructura
3. Apertura de bloque
4. Tipo de dato del miembro
5. Nombre del miembro
6. Cierre del bloque

2012-2 Eric Ulises Garca Cano Castillo - gcc@unica.unam.mx 11


Declaracin y definicin de una estructura
Al momento de declarar una estructura no se pueden
inicializar sus miembros, ya que an no existe en memoria.

Una estructura se crea en memoria al momento de declarar


una variable de dicho tipo de la estructura. Una vez que la
variable de tipo estructura ha sido declarada, sus miembros
pueden ser inicializados.

2012-2 Eric Ulises Garca Cano Castillo - gcc@unica.unam.mx 12


Procesamiento de una estructura
Para acceder a los miembros de una estructura debemos
primero crear una variable y posteriormente tratar dichos
miembros de manera independiente:

struct punto2D{
int x;
int y;
}puntoA; /*una manera de declarar una variable de este
tipo*/

puntoA.x = 5; /*as se accede a los miembros de
una estructura*/
puntoA.y = 6;
2012-2 Eric Ulises Garca Cano Castillo - gcc@unica.unam.mx 13
Consideraciones extras
Una variable de tipo estructura, como cualquier otra
variable, puede ser pasada a una funcin como parmetro o
devuelta por una funcin.

Como buena prctica de programacin, las estructuras se


declaran antes de cualquier funcin.

Las variables de tipo estructura deben ser definidas despus


de declarar la estructura.

2012-2 Eric Ulises Garca Cano Castillo - gcc@unica.unam.mx 14


Funciones y No hay mayor diferencia entre una variable
estructuras normal y una de tipo estructura.
Pasar una estructura a una
funcin

1. Declare una estructura.

2. Defina una variable de tipo la


estructura que cre.

3. Declare la funcin, y en su lista


de parmetros indique uno del
tipo de dato la estructura que
cre.

4. Invoque a la funcin pasando


como parmetro la variable
que cre.

2012-2 Eric Ulises Garca Cano Castillo - gcc@unica.unam.mx 15


Funciones y Una funcin puede al mismo tiempo aceptar como
estructuras parmetro y regresar como resultado una
estructura.
Regresar una estructura de
una funcin

1. Declare una estructura.

2. Defina una variable de tipo la


estructura que cre.

3. Declare la funcin, y en su tipo


de retorno indique el tipo de
dato la estructura que cre.

4. Invoque a la funcin
igualndola a la variable que
cre.

2012-2 Eric Ulises Garca Cano Castillo - gcc@unica.unam.mx 16


Uniones y enumeraciones 3
EN ESTA SECCIN

Qu es una unin?
Diferencia entre una unin y una
estructura
Qu es una enumeracin?
Uniones
Es un tipo de dato derivado, como las estructuras. Son
declaradas y definidas de manera parecida, slo que stas
utilizan la palabra reservada union.

Los miembros de una unin comparten el mismo espacio de


almacenamiento y pueden ser de cualquier tipo.

nicamente un miembro, y por consiguiente, slo un tipo de


dato puede ser referenciado en un momento dado, a travs
del operador punto.

2012-2 Eric Ulises Garca Cano Castillo - gcc@unica.unam.mx 18


Uniones
union simbolo{
char c;
int i;
};

Esta unin puede ser usada para crear instancias de una


unin que puede guardar un valor de un carcter c o un valor
entero i.
Esta es una condicin OR, a diferencia de la estructura que
poda contener varios valores, la unin slo puede contener
un valor a la vez.

2012-2 Eric Ulises Garca Cano Castillo - gcc@unica.unam.mx 19


Uniones
Una unin no puede ser inicializada en su declaracin.

Debido a que slo puede ser usado un miembro a la vez, slo


se puede inicializar uno, el primero que aparezca en la
definicin de la unin;

union simbolo variable = {@};

2012-2 Eric Ulises Garca Cano Castillo - gcc@unica.unam.mx 20


Enumeraciones
Es un tipo de datos similar a las estructuras y las uniones.

Sus miembros son constantes que estn escritas como


identificadores, pero que toman valores enteros con signo,
comenzando, generalmente en 0. De manera general:

enum nombre{miembro_1, miembro_2 miembro_j};

Una variable de tipo enumeracin se puede declarar de


maneras diferentes, investguelas.

2012-2 Eric Ulises Garca Cano Castillo - gcc@unica.unam.mx 21


Enumeraciones
enum colores{negro, azul, verde, rojo, blanco};

Las constantes de colores tienen automticamente asignados


valores enteros, empezando por 0, por tanto:

enum colores fondo;


fondo = negro;

Implica que fondo = 0


Se pueden asignar valores diferentes a las constantes de
una numeracin?
2012-2 Eric Ulises Garca Cano Castillo - gcc@unica.unam.mx 22
Programacin modular 4
EN ESTA SECCIN
Programacin modular
La independencia modular se refiere a que cada mdulo o
funcin en un programa contiene todo el cdigo y los datos
que necesita para hacer su trabajo.

La programacin estructurada depende del uso de funciones.


Un buen programador debe generar funciones con fines
generales, que se puedan usar no slo en el programa para el
cual fueron escritas, sino tambin en otros programas.

Si se crea en un archivo independiente una coleccin de


funciones para el despliegue de informacin en pantalla,
dicho archivo puede ser usado en ms de un programa.
2012-2 Eric Ulises Garca Cano Castillo - gcc@unica.unam.mx 24
Programacin modular
Cuando un programa consiste de varios archivos fuente, cada
archivo fuente es llamado mdulo.

Un programa escrito en C puede tener solamente una


funcin main(). El mdulo que contiene dicha funcin es
llamado mdulo principal.

Los dems mdulos son secundarios y se integran al mdulo


principal a travs de directivas #include.

2012-2 Eric Ulises Garca Cano Castillo - gcc@unica.unam.mx 25


Creacin de una librera en 3 pasos
1. Crear el archivo .h (mdulo secundario) que contenga
nicamente prototipos de funciones y declaraciones de
variables y constantes necesarias para la librera.

2. Crear el archivo .c (mdulo secundario) que incluya al


archivo .h y que implemente las funciones en dicho archivo
de encabezado.

3. Crear el archivo .c (mdulo principal) que contenga la


funcin main() y que incluya al archivo .h

2012-2 Eric Ulises Garca Cano Castillo - gcc@unica.unam.mx 26


Compilar un programa de varios mdulos
Para compilar y enlazar ms de dos mdulos, correr el
compilador listando todos los archivos fuente en lnea de
comandos.

Para enlazar una librera ya compilada (.OBJ) con un archivo


fuente, correr el compilador listando el archivo fuente y el
.obj desde lnea de comandos.

2012-2 Eric Ulises Garca Cano Castillo - gcc@unica.unam.mx 27


Prxima sesin
Apuntadores y memoria dinmica
Apuntadores a tipos de datos primitivos, compuestos y funciones
Memoria dinmica
Parmetros de la lnea de comandos

2012-2 Eric Ulises Garca Cano Castillo - gcc@unica.unam.mx 28

Das könnte Ihnen auch gefallen