Ariel Mora
Por medio del operador Cast se puede convertir los tipos de datos en tiempo de ejecución
Útil cuando en ciertas operaciones se ocupa un tipo diferente al de la variable
No modifica el tipo original
tipoFinal nuevaVariable = (tipoNuevo) (datoOriginal);Solo ciertos tipos de datos se pueden convertir por medio de Cast
Nota: la conversión de Char se hace por Código ASCII
int valor1 = 9;
int valor2 = 15;
double valorFlotante = 0.0;
double resultado = 0.0;
// se puede convertir de una variable a otra
valorFlotante = (double) (valor1);
// o se puede convertir el resultado de una operacion
resultado = (double) (valor1) / (double) (valor2);Las variables permiten guardar solo un dato de un tipo
En algunos casos, se necesita guardar varios datos de un mismo tipo, que tiene relación entre sí
double nota1;
double nota2;
double nota3;
double nota4;
...Los arreglos permiten guardar en una variable múltiples datos de un mismo tipo
Estos pueden ser de múltiples dimensiones
tipo nombre[][][]; // los [] indican las dimensionesSon arreglos de una dimensión
Permiten guardar elementos como una fila contigua
Los elementos son identificados por una posición
tipo nombre[]; // los [] indican las dimensionesSe tiene que saber de antemano la cantidad de elementos que contendrá el vector
// se crea un arreglo de enteros de tamaño cinco
int arreglo[5];
// se crea un arreglo de enteros indicando cuales
// son los elementos que contiene
int arreglo[5] = { 10, 2, 53, 8, 97};
// si se le indica los elementos que contiene
// no es necesario indicar el tamaño
int arreglo[] = { 10, 2, 53, 8, 97};
Cada elemento del vector tiene una posición asociada
Las posiciones inician a partir de cero y llegan hasta tamaño - 1
// un vector de cinco posiciones
int arreglo[] = { 10, 2, 53, 8, 97};
printf("%d\n", arreglo[0]); // por medio de los [] indico cual elemento
printf("%d\n", arreglo[1]); // quiero acceder
printf("%d\n", arreglo[2]);
printf("%d\n", arreglo[3]);
printf("%d\n", arreglo[4]);
Para imprimir los elementos de un vector se usa el for
El tamaño del for puede estar dado por una variable
// un vector de cinco posiciones
int arreglo[] = { 10, 2, 53, 8, 97};
int posicion;
for (posicion = 0; posicion < tamanno; posicion++){
printf("%d ", arreglo[posicion]);
}
Son arreglos de dos dimensiones
Permiten guardar elementos como un tablero, con filas y columnas
Los elementos son identificados por dos posiciones
tipo nombre[][]; // los [] indican las dimensionesSe tiene que saber de antemano la cantidad de elementos que contendrá la matriz
Estos son dados por filas y columnas
// se crea una matriz de enteros de tamaño 2 por 3
int matriz[2][3];
// se crea una matriz de enteros indicando cuales
// son los elementos que contiene
int matriz[2][3] = { {10, 2, 53},
{11, 3, 54} };
// si se le indica los elementos que contiene
// no es necesario indicar el tamaño
int matriz[][] = { {10, 2, 53},
{11, 3, 54} };
Cada elemento de la matriz tiene una posición asociada
Las posiciones están dadas por fila y columna
Las posiciones inician a partir de cero y llegan hasta tamaño - 1
int matriz[][] = { {10, 2, 53},
{11, 3, 54} };
printf("%d", matriz[0][0]); // primer elemento de la matriz
printf("%d", matriz[1][3]); // ultimo elemento de la matrizPara imprimir los elementos de la matriz se usa dos for anidados
El tamaño de las filas y columnas pueden estar dados por variables
int matriz[][] = { {10, 2, 53},
{11, 3, 54} };
int posFilas;
int posCols;
for(posFilas = 0; posFilas < filas; posFilas++){
for(posCols = 0; posCols < columnas; posCols++){
printf("%d ", matriz[posFilas][posCols]);
}
printf("\n");
}Los arreglos permiten tener conjuntos de datos del mismo tipo en una misma variable
En caso de ocupar datos de distinto tipo se usan Structs
También permiten crear tipos de datos compuestos
struct nombre{
tipo dato;
tipo dato;
tipo dato;
};Por ejemplo, un tipo de dato para coordenadas X, Y llamado coordenada
Esto permite crear variables de tipo struct coordenada
// definicion del struct coordenada
struct coordenada{
double x = 0.0;
double y = 0.0;
};
// en este caso, struct coordenada indica el tipo
struct coordenada punto; Para acceder a cada elemento del Struct se hacer por medio del operador . seguido del nombre del elemento
struct coordenada{
double x = 0.0;
double y = 0.0;
};
// en este caso, struct coordenada indica el tipo
struct coordenada punto;
punto.x = 1.0;
punto.y = 1.0; Los structs puede ser utilizados como valores de retorno o de entrada en funciones
// definicion del struct coordenada
struct coordenada{
double x = 0.0;
double y = 0.0;
};
void imprimirCuadrante(struct coordenada punto){
//codigo
}
struct coordenada crearPunto(double x, double y){
struct coordenada nuevoPunto;
//codigo
return nuevoPunto;
}Permiten definir un conjunto de datos
Estos datos son constantes numéricas
Pueden ser usados como códigos internos
enum nombre{dato1, dato2, dato3, ..., datoN};Por defecto, cada dato tiene un valor entero, iniciando a partir de cero
También es posible definir el valor de cada dato
// exitoso = 0; fallo = 1; falloLectura = 2; falloConexion = 3;
enum codigoSalida{exitoso, fallo, falloLectura, falloConexion};
enum codigoSalida{exitoso = 0, fallo = 1, falloLectura = 1, falloConexion = 2};
// variable codigo de tipo enum codigoSalida
enum codigoSalida codigo;Los enums solo pueden contener los datos que fueron definidos
// exitoso = 0; fallo = 1; falloLectura = 2; falloConexion = 3;
enum codigoSalida{exitoso, fallo, falloLectura, falloConexion};
// variable codigo de tipo enum codigoSalida
enum codigoSalida codigo;
codigo = exitoso;
codigo = fallo;Por ser constantes, pueden ser usadas con switch
// variable codigo de tipo enum codigoSalida
enum codigoSalida codigo = exitoso;
switch(codigo){
case exitoso:
//codigo
break;
case fallo:
//codigo
break;
case falloLectura:
//codigo
break;
}