Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Lección 4: Tipos Avanzados de Datos
Lección 4: Tipos Avanzados de Datos
1 INTRODUCCIÓN
VECTOR
Conjunto de variables numéricas (usaremos int o float)
Lección 4
CADENA DE CARACTERES
Tipos avanzados de datos Conjunto de caracteres (variables de tipo char)
ESTRUCTURAS
Conjunto de datos de cualquier tipo.
4-1 4-2
- Un vector es un conjunto de variables numéricas del mismo tipo. - Se referencian con el nombre del vector seguido de un subíndice entero escrito
entre corchetes (el subíndice representa la posición del elemento dentro del
- Ejemplo: vector de números enteros de 6 elementos (dimensión=6) vector).
tipo Tipo de los elementos del vector (int, float, etc.). terna[0] terna[1] terna[2]
identificador Nombre del vector.
dimensión Número de elementos del vector (constante entera).
- Ejemplo: - Las variables del vector tienen un valor indeterminado hasta que no se les
asigna uno.
int terna[3];
4-3 4-4
- Ejemplo:
- Ejemplo:
#include <stdio.h>
#include <stdio.h>
void main()
void main() {
{ int terna[3];
int v[2];
terna[0] = 10;
printf("v[0] vale %d\n", v[0]); terna[1] = 2*terna[0];
printf("v[1] vale %d\n", v[1]); terna[2] = terna[0] + terna[1];
}
printf(“Primera = %d\n", terna[0]);
printf(“Segunda = %d\n", terna[1]);
printf(“Tercera = %d\n", terna[2]);
Salida por pantalla: }
v[0] vale -858993460
Salida por pantalla:
v[1] vale -858993460
Primera = 10
Segunda = 20
4-5 Tercera = 30 4-6
4-7 4-8
Ejemplo: leer un vector desde el teclado e imprimirlo en la pantalla 4.3 CADENAS DE CARACTERES
- Una cadena de caracteres es un conjunto de variables de tipo char.
#include <stdio.h>
- Ejemplo: cadena de caracteres de dimensión 5
void main()
{
H o l a \0
int v[3]; // Crea el vector v con 3 elementos de tipo int
int i; // Subíndice para el vector
4.3.1 DECLARACIÓN
printf("Introduzca los tres elementos del vector\n");
for (i = 0; i < 3; i++) - Sintaxis: char identificador[dimensión];
scanf("%d", &v[i]);
identificador Nombre de la cadena.
dimensión Número de elementos de la cadena (constante
printf(“\nLos elementos del vector son los siguientes: \n");
entera), incluyendo el carácter nulo (‘\0’).
for (i = 0; i < 3; i++) - Ejemplo:
printf(“v[%d] = %d \n", i , v[i] ); char cadena[5];
}
4-9 4-10
4-11 4-12
4.3.4 RECORRIDO POR LOS ELEMENTOS DE UNA CADENA
Ejemplo: imprimir una cadena en la pantalla carácter a carácter.
- Puede utilizarse cualquier bucle, aunque lo habitual es utilizar un while.
- A diferencia de los vectores no se utiliza la dimensión de la cadena, sino que se #include <stdio.h>
recorre hasta encontrar el carácter nulo ‘\0’.
void main()
- Ejemplo: char cadena[dimension]; {
int i; char mensaje[51]="Hola Mundo";
int i;
// Con while
i=0 i=0;
while (cadena[i]!=‘\0’) while (mensaje[i]!='\0')
{ {
… printf("%c", mensaje[i]);
i++; i++;
} }
}
//Con for
for (i=0; cadena[i]!=‘\0’ ; i++)
…
4-13 4-14
4.3.5 IMPRIMIR UNA CADENA DE CARACTERES CON printf() 4.3.6 LEER UNA CADENA DE CARACTERES
- Como ya sabemos, pero utilizando el especificador de formato %s. - Con scanf(), usando el especificador de formato %s.
- Ejemplo: Ejemplo:
#include <stdio.h>
#include <stdio.h>
void main ()
void main() {
{ char asignatura[51];
char mensaje[51]="Hola Mundo";
scanf("%s", asignatura); // Excepción: ¡¡ No se pone & !!
printf("%s\n", mensaje); printf("%s\n", asignatura);
} }
Salida: Salida:
Calculo Fundamentos de informatica
Calculo Fundamentos
4-15 4-16
- Para leer cadenas de caracteres que tienen espacios en blanco con scanf() hay 4.4 ESTRUCTURAS
que utilizar una especificación de formato personalizada (libro, pág 157).
- Permiten almacenar datos de diferentes tipos bajo un mismo nombre.
- O, más fácil, utilizar la función gets() de stdio.h
- Sintaxis:
- Ejemplo: struct identificador
{
#include <stdio.h>
tipo_1 miembro_1;
void main () tipo_2 miembro_2;
{ …
char asignatura[51];
tipo_n miembro_n;
gets(asignatura); };
printf("%s\n", asignatura);
}
identificador Nombre de la estructura.
Salida: miembro_n Componente n-ésimo de la estructura.
Fundamentos de informatica tipo_n Tipo de datos del miembro_n.
Fundamentos de informatica
4-17 4-18
- Ejemplo:
#include <stdio.h>
Nombre struct ficha
Nombre struct ficha
Apellidos {
{
Nombre
Apellidos
Nº de matrícula char nombre[50]; char nombre[50];
Apellidos
Nº de matrícula char apellidos[50]; char apellidos[50];
int matricula;
Nº de matrícula int matricula; };
};
void main ()
{
…
}
4-19 4-20
4.4.1 DECLARACIÓN DE VARIABLES
- Una manera de evitar el uso de la palabra struct es definir un tipo de datos
- Sintaxis: sinónimo de la estructura utilizando typedef (libro: apartado 4.7, pág 86)
- Siempre hay que poner la palabra reservada struct delante. #include <stdio.h>
- Se nombran escribiendo el operador punto (.) después del nombre de la variable. typedef struct
{
char nombre[50];
- Sintaxis: variable_estructura.miembro
char apellidos[50];
int matricula;
- Por ejemplo, si alumno es una variable de tipo ficha, sus miembros son:
}
alumno.nombre Cadena de caracteres ficha;
alumno.apellidos Cadena de caracteres
void main ()
alumno.matricula Variable entera
{
ficha alumno;
4.4.3 OPERACIONES CON VARIABLES DE UNA ESTRUCTURA
printf("Nombre:");
scanf(“%s”, alumno.nombre);
- Inicialización: printf("Apellidos:");
scanf(“%s”,alumno.apellidos);
ficha alumno1= { “Jose”, “Lopez Lopez”, 1150}, alumno2; printf(“Matricula:");
scanf("%d", &alumno.matricula);
- Asignarle el valor de otra variable de tipo estructura:
printf("\n%s %s\n", alumno.nombre, alumno.apellidos);
alumno2=alumno1; printf("Matricula: %d\n", alumno.matricula);
4-23 } 4-24