|
|
|
||
|
|
|||
|
|
|||
|
Lenguaje c |
|||
|
6) Arreglos |
|||
|
|
Los
arreglos ó conjuntos de datos ordenados (arrays) recolectan variables del
mismo tipo , guardandolas en forma secuencial en la memoria . La cantidad
máxima de variables que pueden guardar está sólo limitada por la cantidad de
memoria disponible. El tipo de las variables involucradas puede ser
cualquiera , con la única restricción de que todos los componentes de un
array deben ser del mismo tipo . tipo de las variables nombre[ numero de elementos] ;
|
||
|
ejemplo :
int var1[10] ; char nombre[50] ; float numeros[200] ; long double cantidades[25] ;
Si tomamos el primer caso , estamos declarando un array de 10 variables enteras , cada una de ellas quedará individualizada por el subíndice que sigue al nombre del mismo es decir : var1[0] , var1[1] , etc , hasta var1[9] .
Nótese
que la cantidad de elementos es 10 , pero su numeración vá de 0 a 9 , y nó
de 1 a 10 . En resumen un array de N elementos tiene subíndices válidos
entre 0 y N - 1 . Cualquier otro número usado como subíndice , traerá datos
de otras zonas de memoria , cuyo contenido es impredictible .
var1[5] = 40; Tambien es posible utilizar como subíndice expresiones aritméticas ,valores enteros retornados por funciones , etc . Así podríamos escribir :
printf(" %d " , var1[ ++i] );
Por
supuesto los subíndices resultantes de las operaciones tienen que estar
acotados a aquellos para los que el array fué declarado y ser enteros . int numero[8] = { 4 , 7 , 0 , 0 , 0 , 9 , 8 , 7 } ; Obsérvese que la lista está delimitada por llaves . Otra posibilidad , sólo válida cuando se inicializan todos los elementos del array , es escribir : int numero[] = { 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 } ;
donde se
obvia la declaración de la cantidad de elementos , ya que está implícita en
la lista de valores constantes. int numero[10] = { 1 , 1 , 1 } ; en éste caso los tres primeros elementos del mismo valdran 1 , y los restantes cero en el caso que la declaración sea global , ó cualquier valor impredecible en el caso de que sea local Conjuto ordenado de caracteres (STRINGS)
Los
strings son simplementes arrays de caracteres , el caracter NULL ( ASCII ==
0 , simbolizado por la secuencia de escape \0 ) . Este agregado permite a
las funciones que procesan a los mismos , determinar facilmente la
finalización de los datos . char car_str[] = { 'A' , 'B' , 'C' , 'D' , 0 } ; char car_str[] = { 'A' , 'B' , 'C' , 'D' , '\0' } ; Ambas maneras son equivalentes. Sin embargo hay , en el lenguaje C , una forma más compacta de declararlos :
char
car_str[] = "ABCD";
Simplemente en la declaración del mismo se encierran los caracteres que lo
componen entre comillas . Obsérvese que en la segunda declaración , se ha
explicitado ( no es necesario ) , la cantidad de elementos que tiene el
string , y és uno más que la cantidad de caracteres con que se lo inicializa
, para dejar lugar al NULL . Todas éstas declaraciones agregan
automáticamente el NULL como último elemento del array . Arrays y Strings como argumentos de Funciones
tipo de las variables nombre[ numero de elementos]; ejemplo:
int
var1[10];
Es necesario analizar con mucho detenimiento , este último ejemplo . En la primer línea declaramos el prototipo de funcion_1() que recibe como argumentos dos arrays , uno de 10 elementos del tipo float , y otro de caracteres de longitud indeterminada . En el primer caso la función necesitará saber de alguna manera cual es la longitud del array numérico recibido, mientras que en el segundo , no hace falta , ya que la función puede ser construída para que or sí misma , detecte la finalización del string por la presencia del caracter NULL . Se podría generalizar más el programa declarando : double funcion_1( double numeros[] , int longitud_array , char palabra[] ) ;
en donde
, en la variable longitud_array se enviaría la cantidad de elementos de
numero[] . numero == dirección de numero[0] palabra == direccion de palabra[0]
char titulo[] = "Primer titulo" ; titulo = "subtitulo"; La primer sentencia es correcta , ya que estamos incializando al string , pero la segunda produciría un error del tipo " LVALUE REQUERIDO " , es decir que el compilador espera ver , del lado izquierdo de una expresión , a una variable y en cambio se ha encontrado con una constante titulo (ó sea la dirección de memoria donde está almacenada la P de "Primer título") . Esto al compilador le suena similar a una expresión de la clase : 124 = j y se niega rotundamente a compilarla .
Arrays
Multidimencionales int matriz[ número total de filas ] [ número total de columnas ]; Si declaramos: int matriz[3][4]; esquematicamente la disposicion "espacial" de los elementos seria:
columnas: 0 1 2 3 filas 0 [0][0] [0][1] [0][2] [0][3]
Por
supuesto , aunque menos usados , se pueden generar arrays de cualquier
número de dimensiones . char dia_de_la_semana[7][8] = { "lunes" , "martes" , " miercoles" , "jueves" , "viernes" , "sábado" , "domingo" }; Acá el elemento [0][0] será la "l" de lunes , el [2][3] la "r" de miercoles , el [5][2] la "b" de sabado, etc. Nótese que los elementos [0][5] , [1][6] ,etc estan inicializados con el caracter NULL y demas [0][6] y [0][7], etc no han sido inicializados. Si le parece que en este párrafo se nos escapó un error , está equivocado , lo que ocurre es que se olvidó de contar los índices desde 0.
|
|||
|
Descargar gratis los programas y compiladores necesarios para aprender a programar |
|||
|
¿Buscas algo? |
|||
|
|
|||
|
|
|||
|
|
|||