Sie sind auf Seite 1von 8

TTULO: Arreglos Bidimensionales, asignacin de memoria dinmica.

1. OBJETIVOS
- Comprender los conceptos de arreglos de una y dos dimensiones.
- Comprender los conceptos de asignacin de memoria dinmica.
- Comprender los conceptos bsicos del manejo de cadena de caracteres en lenguaje C.
- Aplicar vectores y matrices en la resolucin de ejercicios y problemas.
- Aplicar los fundamentos de asignacin de memoria dinmica para crear vectores y
matrices.

2. MARCO TERICO

2.1. Arreglo o vector

Los arreglos son estructuras de datos consistentes en un conjunto de datos del mismo tipo. Los
arreglos tienen un tamao que es la cantidad de objetos del mismo tipo que pueden almacenar.
Los arreglos son entidades estticas debido a que se declaran de un cierto tamao y conservan
este todo a lo largo de la ejecucin del programa en el cual fue declarado.

Sintaxis: <tipo><variable>[ M ]

Se declara un arreglo de nombre con M elementos de tipo , (M es una constante).

Ejemplo: int a[5]

Los arreglos se caracterizan por: Almacenan los elementos en posiciones contiguas de memoria
Tienen un mismo nombre de variable que representa a todos los elementos. Para hacer referencia
a esos elementos es necesario utilizar un ndice que especifica el lugar que ocupa cada elemento
dentro del archivo.

Matriz unidimensional con 10 elementos

Estas estructuras de datos son adecuadas para situaciones en las que el acceso a los datos se
realice de forma aleatoria e impredecible. Por el contrario, si los elementos pueden estar
ordenados y se va a utilizar acceso secuencial sera ms adecuado utilizar una lista, ya que esta
estructura puede cambiar de tamao fcilmente durante la ejecucin de un programa.

2.2. Arreglo de dos dimensiones o matriz.

Los arreglos bidimensionales son tablas de valores, cada elemento de un arreglo bidimensional
est simultneamente en una fila y en una columna, a los arreglos bidimensionales se les
llama matrices.
En un arreglo bidimensional, cada elemento tiene una posicin que se identifica mediante dos su
fila y su columna. Al igual que los arreglos de una dimensin, los arreglos bidimensionales tambin
pueden ser creados usando la funcin array, pero pasando como argumentos una lista con las filas
de la matriz, Todas las filas deben ser del mismo largo, o si no ocurre un error de valor:

a = array([[5.1, 7.4, 3.2, 9.9],


[1.9, 6.8, 4.1, 2.3],
[2.9, 6.4, 4.3, 1.4]])

Los arreglos tienen un atributo llamado shape, que es una tupla con los tamaos de cada
dimensin. En el ejemplo, a es un arreglo de dos dimensiones que tiene tres filas y cuatro
columnas:

a.shape: (3, 4)

Los arreglos tambin tienen otro atributo llamado size que indica cuntos elementos tiene el
arreglo:

a.size: 12

El valor de a.size siempre es el producto de los elementos de a.shape.

Las funciones zeros y ones tambin sirven para crear arreglos bidimensionales. En vez de pasarles
como argumento un entero, hay que entregarles una tupla con las cantidades de filas y columnas
que tendr la matriz:

zeros((3,2))

array([[ 0. 0.]
[ 0. 0.]
[ 0. 0.]])

ones((2, 3))

array([[ 1., 1., 1.],

[ 1., 1., 1.]])

Lo mismo se cumple para muchas otras funciones que crean arreglos la funcin random por
ejemplo:
from numpy.random import random

random((5, 2))

array([[ 0.80177393, 0.46951148],

[ 0.37728842, 0.72704627],

[ 0.56237317, 0.3491332 ],

[ 0.35710483, 0.44033758],

[ 0.04107107, 0.47408363]])

2.3. Librera <string.h> y liste las funciones que contiene.

La biblioteca <string.h> es un archivo de la Biblioteca estndar del lenguaje de programacin C que


contiene la definicin de macros, constantes, funciones y tipos y algunas operaciones de
manipulacin de memoria. Las funciones ms elementales son:

1. Strcpy: (c1, c2); Copia c2 en c1.


2. Strcat: (c1, c2); Aade c2 al final de c1.
3. int strlen: (cadena); Devuelve la longitud de la cadena.
4. int strcmp: (c1, c2); Devuelve cero si c1 es igual a c2.
5. no-cero en caso contrario.

Para trabajar con estas funciones, al comienzo del programa hay que escribir:

#include <string.h>

Ejemplo:
#include <stdio.h>

#include <string.h>

char completo [80];

char nombre[32] = "Pedro";

char apellidos [32] = "Medario Arenas";

main()

/* Construye el nombre completo */

strcpy ( completo, nombre ); /* completo <- "Pedro" */

strcat ( completo, " "); /* completo <- "Pedro " */

strcat ( completo, apellidos ); /* completo <- "Pedro Medario Arenas" */

printf ( "El nombre completo es %s\n", completo );

2.4. Librera <ctype.h> y liste las funciones que contiene.

Para eso existe la librera que hoy vamos a ver, ctype.h. sta librera se encarga de todo lo
relacionado a modificar y operar con caracteres, sin duda alguna muy til a la hora de representar
en pantalla y comprobar informacin.

La especificacin de la librera es la siguiente:

1. Isalnum: Comprueba si un carcter es alfanumrico.


2. Isalpha: Comprueba si un carcter es alfabtico.
3. Isascii: Comprueba si un carcter es un carcter Ascii.
4. Isblank: Comprueba si un carcter es vaco.
5. Iscntrl: Comprueba si un carcter es un carcter de control.
6. Isdigit: Comprueba si un carcter es un nmero.
7. Isgraph: Comprueba si un carcter se puede imprimir sin el espacio.
8. Islower: Comprueba si un carcter est en minscula,
9. Isprint: Comprueba si un carcter se puede imprimir.
10. Ispunct: Comprueba si un carcter es de puntuacin.
11. Isspace: Comprueba si un carcter es un espacio.
12. Isupper: Comprueba si un carcter est en mayscula.
13. isxdigit: Comprueba si un carcter es hexadecimal.

2.5. Funcin malloc en lenguaje C.

Los variables y vectores en C ocupan un tamao prefijado, no pueden variarlo durante la ejecucin
del programa. Por medio de punteros se puede reservar o liberar memoria dinmicamente, es
decir, asignacin dinmica de memoria C se refiere a la realizacin de la asignacin de memoria
dinmica en el Lenguaje de programacin C a travs de un grupo de funciones en la Biblioteca
estndar de C , es decir, malloc , realloc , calloc y free .

La funcin malloc sirve para solicitar un bloque de memoria del tamao suministrado como
parmetro. Devuelve un puntero a la zona de memoria concedida:

void* malloc ( unsigned numero_de_bytes );

El tamao se especifica en bytes. Se garantiza que la zona de memoria concedida no est ocupada
por ninguna otra variable ni otra zona devuelta por malloc. Si malloc es incapaz de conceder el
bloque (no hay memoria suficiente), devuelve un puntero nulo.

2.6. Funcin calloc en lenguaje C.

La funcin calloc funciona de modo similar a malloc, pero adems de reservar memoria, inicializa a
0 la memoria reservada. Se usa comnmente para arreglos y matrices. Est definida de esta forma:

void *calloc(size_t nmemb, size_t size);

El parmetro nmemb indica el nmero de elementos a reservar, y size el tamao de cada


elemento. El ejemplo anterior se podra reescribir con calloc de esta forma:
int *vect1, n;

printf("Numero de elementos del vector: ");

scanf("%d", &n);

vect1 = calloc(n, sizeof(int));

/* Verificamos que la asignacin se haya realizado correctamente */

if (vect1 == NULL) {

/* Error al intentar reservar memoria */

2.7. Funcin free en lenguaje C.

Cuando se utiliza la funcin free, una zona de memoria reservada con malloc ya no se necesita,
puede ser liberada mediante la funcin free.

void free (void* ptr);

ptr es un puntero de cualquier tipo que apunta a un rea de memoria reservada previamente con
malloc.

Si ptr apunta a una zona de memoria indebida, los efectos pueden ser desastrosos, igual que si se
libera dos veces la misma zona.

2.8. Funcin realloc en lenguaje C.

La funcin realloc redimensiona el espacio asignado de forma dinmica anteriormente a un


puntero. Tiene la siguiente definicin:

void *realloc(void *ptr, size_t size);

Donde ptr es el puntero a redimensionar, y size el nuevo tamao, en bytes, que tendr. Si el
puntero que se le pasa tiene el valor nulo, esta funcin acta como malloc. Si la reasignacin no se
pudo hacer con xito, devuelve un puntero nulo, dejando intacto el puntero que se pasa por
parmetro. Al usar realloc, se debera usar un puntero temporal. De lo contrario, podramos tener
una fuga de memoria, si es que ocurriera un error en realloc.

Cuando se redimensiona la memoria con realloc, si el nuevo tamao (parmetro size) es mayor
que el anterior, se conservan todos los valores originales, quedando los bytes restantes sin
inicializar. Si el nuevo tamao es menor, se conservan los valores de los primeros size bytes. Los
restantes tambin se dejan intactos, pero no son parte del bloque regresado por la funcin.

Ejemplo de realloc usando puntero temporal:

void *ptr = malloc(5);

/* Redimensionamos el puntero (a 10 bytes) y lo asignamos a un puntero temporal */

void *tmp_ptr = realloc(ptr, 10);

if (tmp_ptr == NULL) {

/* Error: tomar medidas necesarias */

else {

/* Reasignacin exitosa. Asignar memoria a ptr */

ptr = tmp_ptr;

3. DESARROLLO
Codificar cada uno de los ejercicios del archivo EjerciciosLab5.pdf, cuyo nmero se
encuentra encerrado en crculo rojo.
NO INCLUIR EL CDIGO AQU.
Subir al aula Virtual un archivo .zip que incluya:
- Este formato completando las secciones 1, 2, 4 y 5.
- El cdigo fuente que resuelve cada ejercicio. Puede ser un solo proyecto con men de
opciones y con funciones que resuelvan cada planteamiento; , un proyecto para cada
ejercicio con men de opciones (de forma opcional) y con funciones que resuelvan el
planteamiento.

4. CONCLUSIONES
5. RECOMENDACIONES

6. BIBLIOGRAFA

Usar un estilo estndar por ejemplo IEEE

Nota: Usar libros, material acadmico de instituciones de educacin superior.

Evitar Wikipedia, monografas, y sitios similares.

Das könnte Ihnen auch gefallen