Sei sulla pagina 1di 18

Materia: Programacin I

Apuntes Unidad V

CONTENIDO
UNIDAD V ARREGLOS DE DATOS......................................................................2
V.1
V.2
V.3
V.4

OBJETIVOS:.............................................................................................. 2
INTRODUCCIN......................................................................................... 2
DECLARANDO Y ASIGNANDO VALORES A LOS ARREGLOS.............................2
REGLAS PARA ASIGNAR NOMBRES A LOS ARREGLOS...................................4
Arreglos de una dimensin o vectores............................................................5
Problemas propuestos.................................................................................5
Arreglos o tablas bidimensionales, o tipo matriz............................................6
Problemas propuestos.................................................................................9
Arreglos multidimensionales...........................................................................9
Problemas propuestos...............................................................................10
Arreglos de caracteres (listas).......................................................................11
Problemas propuestos...............................................................................13
V.5
ORDENAMIENTOS DE ARREGLOS..............................................................15
V.6
LLAMADAS A FUNCIONES CON ARREGLOS.................................................16

Materia: Programacin I

Apuntes Unidad V

Unidad V Arreglos de datos


V.1 Objetivos:
El alumno ser capaz de desarrollar tareas de programacin donde se puedan
almacenar, ordenar y buscar grupos de datos del mismo tipo, bajo un mismo
nombre.
El alumno aprender como declarar e inicializar arreglo de datos de uno, dos o
mas subndices y podr de pasar arreglos a funciones
V.2

Introduccin

Un arreglo es un identificador que hace referencia a un conjunto de datos del


mismo tipo, mediante un nombre comn. Los arreglos de datos estn formados
por posiciones contiguas de memoria..La direccin mas baja corresponde al
primer elemento, y la posicin mas alta al ultimo elemento se accede a
cualquiera de ellos con slo cambiar el ndice que lo referencia. El ndice ser un
valor entero y positivo. En C los arreglos comienzan por la posicin 0.. Tambin
se le define como un conjunto de variables que son del mismo tipo de datos.
V.3 Declarando y asignando valores a los arreglos
La Declaracin de un Arreglo es igual a como se hara con una variable, a
excepcin de que tambin se especifica la cantidad de elementos en el arreglo
encerrado entre corchetes de la siguiente manera:
Tipo nombre[ tamao];

El tipo identificara el tipo de datos que contendr el arreglo


El nombre es el nombre o identificador del arreglo
El tamao define cuantos elementos puede contener el arreglo.
Ej.
Int sueldo[8];
Asignando valores a los elementos de un arreglo
Al declarar un arreglo, los valores almacenados en cada uno de los elementos
son desconocidos (se dice que el arreglo "tiene basura"), lo cual causa que el
programa correspondiente arroje resultados inesperados. Para evitar los valores
desconocidos, se recomienda asignar valores iniciales a cada uno de los
elementos de los arreglos, como se muestra a continuacin:

int vector[5];

Materia: Programacin I

Apuntes Unidad V

En este caso, se declara un arreglo de 5 variables de tipo entero agrupadas con


el nombre vector, las cuales pueden representarse con la figura:

Como puede observarse en la figura el primer subndice tiene valor cero y el


ltimo tiene valor cuatro.
Lo anterior se debe a que, en C, el primer subndice siempre vale cero y el
ltimo tiene un valor menor en uno que el valor de la dimensin del arreglo.
Una vez declarado el arreglo, se pueden asignar valores a cada uno de sus
elementos, como se muestra enseguida:
vector[0] = 100 ;
vector[1] = 101 ;
vector[2] = 102 ;
vector[3] = 103 ;
vector[4] = 104 ;
internamente se puede representar como una pila de datos

Materia: Programacin I

Apuntes Unidad V

Ejemplo de un programa con un arreglo que nos permite desplegar en pantalla


los caracteres del cdigo ASCII
char caracter[256];
for( int x=0 ; x < 256 ; x++ )
printf("%c", caracter[x]) ;

V.4 Reglas para asignar nombres a los arreglos


Las reglas para asignar nombres a los arreglos son las mismas que para los
nombres de las variables, un nombre de arreglo debe ser nico
Cuando se declara un arreglo, se puede declarar inicializandolo junto con sus
valores de la siguiente manera:
Por ejemplo, para declarar un arreglo de 10 enteros y al mismo tiempo asignarle
a cada uno de sus elementos los valores 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, puede
escribirse :
int digitos[] = { 0,1,2,3,4,5,6,7,8,9 };

En este caso, aunque no se escribe el tamao de la dimensin del arreglo


digitos, tiene el mismo efecto que escribir:
int digitos[10];
digitos[0] = 0 ;
digitos[1] = 1 ;
digitos[2] = 2 ;
digitos[3] = 3 ;
digitos[4] = 4 ;
digitos[5] = 5 ;
digitos[6] = 6 ;
digitos[7] = 7 ;
digitos[8] = 8 ;
digitos[9] = 9 ;

No trate de engaar al Compilador inicializando mas valores en el arreglo de los


que puede, ya que este no lo obedecer, sin embargo, si inicializa solo una parte
del arreglo, las restantes posiciones se inicializan con 0s.
Si desea imprimir un valor de un arreglo, la lnea luce as: printf ("%d", lista[1]);
Una Caracterstica importante de los arreglos en C es que no se pueden
modificar los limites superior e inferior (y por tanto el rango) durante el programa.
El limite inferior se fija siempre en 0 y el superior lo fija el programador, es decir:

Materia: Programacin I

Apuntes Unidad V

Arreglos de una dimensin o vectores


Son arreglos que tienen una sola direccin y se identifican por medio de su
nombre y un subndice ( tienen un solo parmetro en el subndice), El subndice
es un numero encerrado entre corchetes el numero identifica la cantidad de
elementos individuales que contiene le arreglo.
float a[30];
El arreglo llamado a que contiene 30 elementos cada un de los elementos es
equivalente a una variable del tipo flotante, se pueden declarar arreglos de
cualquier tipo de datos ( int, char, float etc)

Por ejemplo El subndice que identifica al arreglo calif[30] siempre iniciara en 0


por el primer elemento del arreglo sera : calif[0], calif[1]..... calif[29]
Cuando se declara un arreglo el compilador reserva un bloque de memoria para
guardar el arreglo completo y cada elemento es guardado en posiciones
consecutivas de memoria
Despus de declarar un arreglo puede acceder por separado a cada uno de sus
elementos

Problemas propuestos
Disear un programa donde se pueda capturar una lista de calificaciones y se
calcule el promedio
Disear un programa donde se presente un men de opciones de Inventario y
reporte de ventas de un comercio

Materia: Programacin I

Apuntes Unidad V

Arreglos o tablas bidimensionales, o tipo matriz


Un arreglo tipo tabla se define como un conjunto de datos del mismo tipo
organizados en dos o mas columnas y uno o mas renglones.
El arreglo matriz puede representarse con la figura .

Obsrvese que el primer subndice vara de 0 a 2 y el segundo vara de 0 a 3.


Cuando se manejan arreglos de varias dimensiones, debe recordarse que el
subndice de cada una de ellas inicia con un valor 0, como se observa en el
listado

#include <iostream.h>
#include <conio.h>
void main(void)
6

Materia: Programacin I

Apuntes Unidad V

{
int matriz[3][4],y;
clrscr();
for(int x=0 ; x < 3 x++)
{
for(y=0 y< 4 ; y++)
{
matriz[x][y]=x+y+1 ;
gotoxy(y+1,x+1);
print(%d matriz[x][y]);
}
}
}
Para procesar ( recordar solo operaciones y comparaciones) internamente todos
los elementos de la tabla se ocupan dos ciclos for() uno externo para controlar
rengln y uno interno para controlar columna.
Se declaran semejante a los de una dimensin solo que ahora se tomaran dos
subndices: tipo nombre_arreglo_bi[tamao][tamao];
El tamao en la declaracin de la matriz Renglon-Columna y se representaran
as:

Estos tambin se pueden inicializar:


Int lista_nueva[2][2]={{14, 34},{23, 67}}; y se acceden de la misma manera que
un unidimensional. Ejemplo printf ("%d", lista_nueva[1][0]);
Los elementos de la tabla se debern simbolizar con el nombre de la tabla y 2
subndices, el primer subndice referencia al rengln y el siguiente subndice
referencia la columna.
La declaracin de una tabla sera de acuerdo al siguiente formato.
tipo nomtabla[cant ren][cant col];
Ejemplo:

Materia: Programacin I

Apuntes Unidad V

int calif[3][4];
long int ingresos [3][4];
#include <stdio.h>
#include <conio.h>
#include <string.h>
void main()
{
clrscr();
// declaracion tabla
int calif[3][4];
int r,c,nc=5;
// capturando
printf("CALIFICACIONES \n");
for (r=0; r<=2; r++)
{
for(c=0;c<=3;c++)
{ gotoxy(nc,r+2); printf("%d %d: ",r,c);
scanf("%d",&calif[r][c]);getchar();
nc=nc+10;
};
nc=5;
};
//operando
for ( r=0; r<=2; r++)
for(c=0;c<=3;c++)calif[r][c]=calif[r][c]+10;
//desplegando
for (r=0; r<=2; r++)
{
for(c=0;c<=3;c++)
{ gotoxy(nc,r+6); printf("%d ",calif[r][c]);
nc=nc+10;
};
nc=5;
};
getchar();
}

Materia: Programacin I

Apuntes Unidad V

Problemas propuestos
1.- construir un cuadro que contenga los costos fijos de cuatro productos
cualesquiera, que se producen en tres plantas diferentes de una empresa
maquiladora.
2.- construir un cuadro que contenga los ingresos mensuales por ventas durante
los tres primeros meses del ao de cuatro sucursales de una cadena de auto
refacciones, agregar al final una lista que muestre los ingresos mensuales
totales por meses y una segunda lista que muestre los ingresos mensuales
totales por sucursal.
3.-construir un cuadro que contenga las comisiones ganadas por tres
vendedores, de los 5 tipos de linea blanca de conocida muebleria, ademas listas
de comisiones totales y promedios ganadas por los vendedores, asi como listas
de comisiones totales y promedios por tipo de linea blanca.
analizar este segmento de codigo:
for r = 0 to 3
for c = 0 to 2
totreng(r) = totreng(r) + tabla(r,c)
next c
promreng(r) = totreng(r)/3
next r
'para totales y promedios por columna
for c = 0 to 2
for r = 0 to 3
totcol(c)=totcol(c) + tabla(r,c)
next r
promcol(c) = totcol(c) / 4
next c
Arreglos multidimensionales
Se pueden construir arreglos Multidimensionales Ej.:
int grande[3][4][7];
Int CURP [5][7][8][2][3][2];
Se debe de tener cuidado al manejar estos arreglos por que son complejos de
manipular a la larga. A pesar de ser Bidimensionales, en la memoria siguen
siendo representados como espacios secuenciales lineales.
Se recomienda usar siempre un ciclo for con una variable de control llamada
rengln, misma que tambin se usa como ndice del arreglo.
Recordar que el primer rengln o ndice en CPP es el rengln 0.

Materia: Programacin I

Apuntes Unidad V

Siempre que se use un elemento de una lista en Cpp con cualquier proceso
(captura, despliegue, operaciones)deber acompaarse de su ndice respectivo.
Para procesar (hacer operaciones con ellos, o comparaciones, etc) los
elementos de la lista, se deber usar un ciclo for con una variable de control
llamada rengln, misma que se usara tambin como ndice de la lista.
Para desplegar los elementos de la lista, tambin se usa un ciclo for con su
variable de control rengln, tal como se muestra en el siguiente ejemplo.
El mismo ciclo de proceso o despliegue se puede utilizar para procesar o
desplegar los elementos de mas de una lista, siempre y cuando las listas sean
del mismo tamao.
Ejemplo:
#include <stdio.h>
#include <conio.h>
#include <string.h>
void main()
{
clrscr();
// declaracion listas
char nombre[3][20]; int edad[3];
// capturando
for (int r=0; r<=2; r++)
{ gotoxy(5, r*2+2); printf("%d NOMBRE: ",r);gets(nombre[r]);
gotoxy(5, r*2+3); printf("%d EDAD: ",r);
scanf("%d",&edad[r]);getchar();
};
//procesando
for ( r=0; r<=2; r++) edad[r]=edad[r] *12;
//desplegando
for ( r=0; r<=2; r++)
{ gotoxy(5, r*2+9); printf("NOMBRE:= %s", nombre[r]);
gotoxy(5, r*2+10); printf("EDAD:=%d",edad[r]);
};
getchar();
}
Problemas propuestos
1.- Capturar y desplegar 5 precios de productos cualesquiera.
2.- Capturar 4 sueldos y desplegarlos aumentados en un 25%

10

Materia: Programacin I

Apuntes Unidad V

Arreglos de caracteres (listas)


Se presenta la necesidad de utilizar vectores para la manipulacin de cadenas
de caracteres, como nombres de personas, de calles, etc. En estos casos,
tendremos que declarar la variable con una longitud capaz de alojar el nombre
ms largo de entre los valores posibles. As, para almacenar nombres de
personas, podemos declarar el vector
char nombre[15]
si se sabe que 15 caracteres es una el tamao de los nombres que aparecern
durante la ejecucin.
Para facilitar el tratamiento de estos vectores de caracteres con longitud
variable, C tiene un tipo predefinido : el tipo string (cadena de caracteres). Su
declaracin es la normal de un vector de caracteres. Lo que cambia es su
lectura y escritura.
En el momento de leer una cadena de caracteres, el computador los leer uno a
uno hasta encontrar un cambio de lnea. Cuando esto suceda, aadir al final de
la secuencia leda un carcter nulo (el carcter con cdigo ASCII igual a 0).
Esta marca le permitira saber posteriormente donde se encuentra el fin de la
cadena. Huelga decir que si sabemos que la longitud mxima de las cadenas a
tratar es k, hace falta declarar el vector de dimensin k+1 para poder alojar
tambin esta marca. As, en el ejemplo anterior se debera declarar
char nombre[16]
La lectura de una cadena de caracteres se realiza poniendo en el control el
formato %s y quitando del nombre de la variable el prefijo & en la instruccin
scanf. Existe otra manera de leer una cadena desde el teclado, usando la
instruccin gets con el formato
gets (nombre_cadena);
Existe una librera que contiene todas las funciones para manejar cadenas cuyas
declaraciones estn en string.h. Todas estas funciones consideran a una string
como una secuencia de caracteres acabada en nulo ('\0').

11

Materia: Programacin I

Apuntes Unidad V

Algunas libreras y funciones importantes para cadenas en ANSI C


int strcmp(char *s1, char *s2);
Compara s1 y s2, devolviendo <0, 0 >0 segn sea s1<s2, s1==s2 s1>s2.
int strncmp(char *s1, char *s2, size_t maxlen);
Igual que strcmp, pero con los maxlen primeros caracteres.
int stricmp(char *s1, char *s2);
Igual que strcmp pero sin diferencial maysculas de minsculas.
int strnicmp(char *s1, char *s2, size_t maxlen);
Mescla de stricmp y strncmp.
size_t strlen(char *s);
Devuelve el nmero de caracteres en s, sin contar /0.
char *strchr(char *str, int c);
Busca el primer caracter c en str y retorna un puntero a dicha c o NULL si no
hay.
char *strrchr(char *str, int c);
Busca el ltimo caracter c en str y retorna un puntero a dicha c o NULL si no hay.
char *strpbrk(char *s1, char *s2);
Busca dentro de s1 el primer caracter de los de s2, devolviendo un puntero a
dicha posicin o NULL si no hay.
char *strcat(char *dest, char *src);
Aade src al final de dest.
char *strncat(char *dest, char *src, size_t maxlen);
Aade a lo sumo maxlen caracteres de src a dest.
char *strcpy(char *dest, char *src);
Copia la cadena src en dest, devolviendo dest.
char *strlwr(char *s);
Convierte s a minsculas.
char *strupr(char *s);
Convierte la cadena a maysculas.
Para manejar listas de un arreglos de caracteres o llamadas strings o cadenas,
primero que nada se deber usar un arreglo bidimensional tipo carcter, donde
el primer subndice referenciar la cantidad de cadenas (strings) que tendr el
arreglo y el segundo subndice indicara el tamao mximo de cada cadena
(string)
para leer los siguientes datos en un programa en lenguaje C:
rosa
juan
jose
maria

12

Materia: Programacin I

Apuntes Unidad V

se debera declarar un arreglo del tipo


char nombres[4][6];
Para efectuar cualquier proceso (captura, comparacin, despliegue), se deber
usar el nombre de la lista y nada mas el primer subndice.
ejemplo:
char nombres[4][30];
int ren;
// capturar o inicializar los elementos
scanf(%s,nombres........
// despliegue
for(ren=0;ren<=3;ren++)
printf("%s",nombres[reng]);
Problemas propuestos
1.- Capturar los datos de 5 productos comprados en una tienda, incluyendo
nombre, precio y cantidad en sus 3 listas respectivas, despus calcular una
cuarta lista con el gasto total por cada producto desplegarlo todo incluyendo
tambin el gran total.
2.- Capturar en sus listas respectivas los datos de 6 alumnos, pero solo
desplegar los que sean de la carrera de sistemas.

Las cademas o strings no son mas que un caso especial de arreglo de


caracteres y como tales presentan ciertas peculiaridades que no son posible
resolver con mtodos tradicionales.
Por ejemplo no es valido usar simples sentencias de asignacin o comparacin.
1.- char nombre [30], copia[30];
copia = nombre; esto no es valido en CPP
2.- if(opcion==`si`) Tampoco es valido en CPP
Para casos como estos se debern usar ciertas funciones de manipulacin de
strings que provee el lenguaje C, estas funciones son :

13

Materia: Programacin I

Apuntes Unidad V

#include <string.h>
a) STRCPY(string destino,string original);
Se utiliza para copiar el contenido de un string original en un string de destino.
ejemplo:
char nombre[30],copia[30];
nombre= getstring("nombre");
strcpy(copia,nombre);
strcpy(nombre,"pato");
b) STRCAT(string1,string2);
Encadena o agrega al final de la string1 la string2.
ejemplo: char nombre[30],copia[30];
strcpy(nombre,"pepe");
strcat(nombre,"lopez");
c) STRCMP(string1,string2);
Se utiliza para comparar 2 strings, esta funcin regresa cero si ambas strings
son iguales, regresa un numero mayor que cero si string 1 es mayor que string 2
y regresa un numero menor que cero si string 1 es menor alfabeticamente que
string 2.
ejemplo:
char opcion[3];
strcmp(opcion,"si");
if(strcmp(opcion,"si")==0)
c) STRLEN(string);
Esta funcin regresa la cantidad de caracteres que tiene la string.
ejemplo:
char nombre[30];
strcpy(nombre,"juan");
printf("%d",sizeof(nombre));---->REGRESA 30
printf"%d",strlen(nombre));---->REGRESA 4

14

Materia: Programacin I

V.5

Apuntes Unidad V

Ordenamientos de arreglos

Este proceso consiste en reacomodar los elementos de la lista en un nuevo


orden, de acuerdo a algn criterio.
Lista
original

Ord crec

Ord
decr

15

15

10

10

10

15

Existen muchos mtodos u algoritmos de sorteos, el mas comn de ellos, es el


denominado sorteo de burbuja que se basa en el siguiente algoritmo:
/*area de ordenamiento*/
n=cantidad de elementos de la lista;
for(k=1;k<=n-1;k++)
{ renglon=0;
while(renglon< n-k)
{ if(lista[renglon]>lista[renglon+1])
{ temp=lista[renglon];
lista[renglon]=lista[renglon+1];
lista[renglon+1]=temp; };
renglon=renglon+1;
}; };
Las notas a considerar con respecto al algoritmo son:
- Las variables n, k, rengln, son variables de control y debern ser declaradas
de tipo int.
- La variable temp, deber ser declarada de acuerdo al tipo de dato de los
elementos de la lista.
- Todas las referencias a LISTA, debern ser cambiadas por el nombre
verdadero de la lista real.
- Es el smbolo del if, quien determina el tipo de sorteo, es decir, (>)ascendente,
(<) descendente.
- Para el caso de listas de strings, la comparacin en el if y el intercambio en la
parte cierta de abajo se debera hacer usando las instrucciones o metodos que
se analizarn en el tema de strings.
problemas sugeridos:
1.- ordenar ascendentemente 5 matriculas
2.- ordenar descendentemente 6 ciudades
15

Materia: Programacin I

Apuntes Unidad V

3.- ordenar a criterio del usuario 7 eventos de su vida

V.6

Llamadas a funciones con arreglos

Cuando se usan un arreglo como un argumento a la funcin, se pasa slo la


direccin del arreglo y no los datos del arreglo
El siguiente ejemplo en donde se pasa un arreglo a la funcin imp_rev, observar
que no es necesario especificar la dimensin del arreglo cuando es un
parmetro de la funcin.
main()
{
char nombre[]="Universidad";
imp_rev(nombre);
}
void imp_rev(char s[])
{
int t;
for( t=strlen(s)-1; t>=0; t--)
printf("%c",s[t]);
}
Observar que en la funcin imp_rev se usa la funcin strlen para calcular la
longitud de la cadena sin incluir el terminador nulo. Por otra parte, la funcin
imp_rev no usa la sentencia return ni para terminar de usar la funcin, ni para
regresar algn valor.
Se muestra otro ejemplo,
float enconprom(int tam, float lista[])
{
int i;
float suma = 0.0;
for ( i=0; i<tam; i++)
suma += lista[i];
return(suma/tam);
}

16

Materia: Programacin I

Apuntes Unidad V

main()
{
float numeros[]={2.3, 8.0, 15.0, 20.2, 44.01, -3.0, -2.9};
printf("El promedio de la lista es %f\n", enconprom(7,numeros) );
}
Para el caso de que se tenga que pasar un arreglo con ms de una dimensin,
no se indica la primera dimensin pero, el resto de las dimensiones deben
sealarse. Se muestra a continuacin un ejemplo:
void imprtabla(int tamx,int tamy, float tabla[][5])
{
int x,y;
for ( x=0; x<tamx; x++ )
{
for ( y=0; y<tamy; y++ )
printf("t[%d][%d]=%f",x,y,tabla[x][y]);
printf("\n");
}
}
RESUMEN
Un arreglo es una coleccin de variables que son del mismo tipo de datos
En c el ndice para un arreglo comienza en 0
Puede inicializar cada elemento de un arreglo despus de declararlo, o puede
poner todos los valores iniciales, separados por comas, dentro de bloque de
datos encerrados entre llaves al mismo tiempo de declararlo
El espacio de memoria que ocupa un arreglo esta determinado por la
multiplicacin del tamao del tipo de datos por las dimensiones del arreglo
Se dice que un apuntador hace referencia a un arreglo cuando la direccin del
primer elemento del arreglo se asigna al apuntador. La direccin del primer
elemento de un arreglo tambin se conoce como direccin de inicio del arreglo.
Para asignar la direccin de inicio de un arreglo a un apuntador puede poner la
combinacin del operador de direccin (&) y el nombre del primer elemento del
arreglo o simplemente usar el nombre del arreglo a la derecha del operador de
asignacin ( = )
El carcter nulo (\0) marca el final de una cadena. Las funciones de c, como
printf() detendrn el procesamiento de la cadena al encontrar el carcter nulo
C tambin maneja arreglos multidimensionales. Un par de corchetes vaco( el
operador de subndices de arreglo [y] indica una dimensin

17

Materia: Programacin I

Apuntes Unidad V

El compilador puede calcular en forma automtica el espacio de memoria


necesario para un arreglo sin especificacin de tamao
PREGUNTAS FRECUENTES
Porque surge la necesidad de utilizar arreglos?
Se presentan casos donde se necesita declarar un conjunto de variables que
son del mismo tipo de datos, en lugar de declarar cada variable por separado,
puede declararlas todas en formato de arreglo, se puede acceder a cada
variable como un elemento del arreglo, ya sea a travs de una referencia al
elemento del arreglo o por medio de un apuntador que haga referencia al arreglo
Cul es el ndice mnimo en un arreglo? En C el ndice mnimo de un arreglo
de una sola dimensin es 0, el cual marca el primer elemento del arreglo
Cmo se hace referencia a un arreglo usando un apuntador? Puede emplear
un apuntador para hacer referencia a un arreglo asignndole al apuntador la
direccin de inicio del arreglo. Por ejemplo dada una variable de puntador aptr y
un arreglo de caracteres arreglo puede usar una de las siguientes instruccin
para hacer referencia al arreglo mediante el apuntador
Aptr = arreglo;
O bien
Aptr = &arreglo[0]
Que hace el carcter nulo? En C el carcter nulo (`\0 se puede utilizar para
marcar el final de una cadena
Por ejemplo la funcin printf() continua poniendo en la pantalla el siguiente
carcter hasta que encuentra el carcter nulo. Adems, el carcter nulo siempre
se evala como un valor cero.

18

Potrebbero piacerti anche