Posteado por: wozgeass | septiembre 12, 2009

Programando en C para linux(Cuarta parte)


ARREGLOS Y CADENAS.

Arreglos unidimensionales y multidimensionales.

Los arreglos son una coleccion de variables del mismo tipo que se referenciasn utilizando un nombre comun. Un arreglo consta de posiciones de memoria contigua. La direccion mas baja corresponde al primer elemento y la mas alta al ultimo. Un arreglo puede tener una o varias dimensiones. Para acceder a un elemento en particular de un arreglo se usa un indice.

El formato para declarar un arreglo unidimensional es:

<tipo_nombre_arr[TAMAÑO]

Por ejemplo, para declarar un arreglo de enteros llamado listanum con 10 elementos se hace de la siguiente forma:

int listanum[10];

En C, todos los arreglos usan cero como indice para el primer elemento. Por lo tanto, el ejemplo anterior declara un arrego de enteros con 10 elementos desde listanum[0] hasta listanum[9].

La forma como puede ser accesados los elementos de un arreglo, es de la siguiente forma:

listanum[2] = 15; // asigna el 15 al 3er elemento del arreglo listanum

num = listanum[2]; //Asigna el contenido del 3er elemento a la variable num

En lenguaje C no realiza comprobacion de contornos en los arreglos. En el caso de que sobrepase el final durante una operacion de asignacion, entonces se asignara valores a otra variable o a un trozo del codigo, esto es, si se dimensiona un arreglo de tamaño N, se puede referenciar el arreglo por encima de N sin provocar ningun mensaje de error en tiempo de compilacion o ejecucion, incluso aunque probablemente se provoque el fallo del programa. Como programador se es responsable de asegurar que todos los arreglos sean lo suficientemente grandes para guardar lo que pondra en ellos el programa.

C permite arreglos con mas de una dimension, el formato es:

<tipo_ nombre_arr>[TAM][TAM1]. . .[TAMn]

Por ejemplo un arreglo de enteros bidimensionales se escribira como:

int tablanums[50][50];

Observa que para declarar cada dimension lleva sus propios parentesis cuadrados.

Para acceder los elementos se produce de forma similar al ejemplo del arreglo unidimensional, esto es,

tabladenums[2][3] = 15;  //Asigna 15 al elemento de la 3ra fila y la 4a columna

num= tabladenums[25][16];

A continuacion se muestra un ejemplo que asigna al primer elemento de un arreglo bidimensional cero, al siguiente 1, y asi sucesivamente.

#include<stdio.h>

main(){

int i, j, numero[5][5];

for(j = 0;  j  <= 5;  j++){

for(i = 0;  i  <= 5;  i++)

printf(“El la tabla[%d][%d]=%d\n”, j, i,numero[j][i]=  j*i);

}

}

En C se permite la inicializacion de arreglos, debiendo el siguiente formato:

<tipo> <nombre_array>[tam1][tam2] . . . [tamN] = {lista-valores};

int i[10] = {1,2,3,4,5,6,7,8,9,0};

int num[4][4]={0,1,2,3,4,5,6,7,8,9,0,11,12};

Cadenas.

A diferencia de otros lenguajes de programacion que emplean un tipo denominado cadena ‘string’ para manipular un conjunto de simbolos, en C, se debe simular mediante un arreglo de caracteres en donde la terminacion de la cadena se debe indicar con nulo. Un nulo se especifica como ”.

Por lo anterior, cuando se declare un arreglo de caracteres se debe considerar un caracter adicional a la cadena mas larga que se vaya a guardar. Por ejemplo, si se quiere declarar un arreglo cadena que guarde una cadena diez caracteres, se hara como:

char cadena[11];

Se puede hacer tambien inicializaciones de arreglos de caracteres en donde automaticamente C se asigna el caracter nulo al final de la cadena, de la siguiente forma:

char arreglo[tam]=”Cadena”;

Por ejemplo, el siguiente fragmento inicializa cadena con “hola”;

char cadena[5]=”hola”;

El codigo anterior es equivalente a:

char cadena[5]={‘h’,’o’,’l’,’a’,”};

Para asignar la entrada estandar a una cadena se puede usar la funcion scanf con la opcion ‘%s’ (Observa que no se requiere usar el operador &), de igual forma para mostrarlo en la salida estandar.

Por ejemplo:

#include<stdio.h>

main(){
char nombre[30], apellidos[30];
printf(“introduce tu primer nombre:\n”);
scanf(“%s”, nombre);
printf(“introduce tu primer apellido\n”);
scanf(“%s”, apellidos);
printf(“Usted es %s %s\n”, nombre, apellidos);
}

En lenguaje C no maneja cadenas de caracteres, como se hace con enteros o flotantes, por lo que lo siguiente no es valido:

char nombre[40], apellidos[40], completos[80];

nombre = “Jose Maria Morelos”; //ilegal

apellidos= “Jose Araujo Dante”; //ilegal

completos=”DR..+”nombre+apellidos””  //ilegal

wozgeass: push eax, 1

int 80h

EOF!!!

hasta el proximo post…

Anuncios

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

Categorías

A %d blogueros les gusta esto: