Programación estructurada

Registros

Registros

Un registro es una estructura de datos que nos permite agrupar un conjunto de datos relacionados sin que tengan que ser, necesariamente, del mismo tipo

Registros

Un registro es una estructura de datos que nos permite agrupar un conjunto de datos relacionados sin que tengan que ser, necesariamente, del mismo tipo

struct estudiante {
    char matricula[12];
    char nombre[100];
    char apellido[100];
    int edad;
    bool regular;
};

La especificación del registro determina la estructura de tipo estudiante a partir de otros tipos de datos (primitivos o derivados, como los arreglos)

Registros

Un registro es una estructura de datos que nos permite agrupar un conjunto de datos relacionados sin que tengan que ser, necesariamente, del mismo tipo

struct estudiante {
    char matricula[12];
    char nombre[100];
    char apellido[100];
    int edad;
    bool regular;
};

La especificación del registro determina la estructura de tipo estudiante a partir de otros tipos de datos (primitivos o derivados, como los arreglos)

El tipo estudiante se conforma de 5 campos: matrícula, nombre y apellido (que son cadenas), edad (entero) y regular (booleano)

Registros

Un registro es una estructura de datos que nos permite agrupar un conjunto de datos relacionados sin que tengan que ser, necesariamente, del mismo tipo

#include <stdio.h>
#include <stdbool.h>


struct estudiante {
    char matricula[12];
    char nombre[100];
    char apellido[100];
    int edad;
    bool regular;
};


int main()
{
    struct estudiante e1, e2;
    e1.edad = 23;
    printf("La edad de e1 es: %d\n", e1.edad);
    printf("La edad de e2 es: %d\n", e2.edad);
    return 0;
}

Los campos de un registro se manejan de la misma manera que se maneja cualquier otra variable

Registros

Un registro es una estructura de datos que nos permite agrupar un conjunto de datos relacionados sin que tengan que ser, necesariamente, del mismo tipo

#include <stdio.h>
#include <stdbool.h>


typedef struct {
    char matricula[12];
    char nombre[100];
    char apellido[100];
    int edad;
    bool regular;
} estudiante;


int main()
{
    estudiante e1, e2;
    e1.edad = 23;
    printf("La edad de e1 es: %d\n", e1.edad);
    printf("La edad de e2 es: %d\n", e2.edad);
    return 0;
}

Podemos utilizar la palabra typedef para facilitarnos un poco la escritura del código

Registros

Un registro es una estructura de datos que nos permite agrupar un conjunto de datos relacionados sin que tengan que ser, necesariamente, del mismo tipo

#include <stdio.h>
#include <stdbool.h>


typedef struct {
    char matricula[12];
    char nombre[100];
    char apellido[100];
    int edad;
    bool regular;
} estudiante;


int main()
{
    estudiante e1 = {"200329776", "Fulano", "De Tal", 19, true};
    estudiante e2 = {"200428469", "Mengano", "De Tal", 20, false};
    e1.edad = 23;
    printf("La edad de e1 es: %d\n", e1.edad);
    printf("La edad de e2 es: %d\n", e2.edad);
    return 0;
}

Podemos utilizar la palabra typedef para facilitarnos un poco la escritura del código

Podemos asignarle valor a cada campo uno por uno, o de manera simultánea

Registros

Un registro es una estructura de datos que nos permite agrupar un conjunto de datos relacionados sin que tengan que ser, necesariamente, del mismo tipo

#include <stdio.h>
#include <stdbool.h>
#include <string.h>

typedef struct {
	char clave[8];
	char nombre[50];
	int intentos;
	bool aprobada;
	char calificacion[2];
} materia;


typedef struct {
	char matricula[12];
	char nombre[100];
	char apellido[100];
	int edad;
	bool regular;
	int nMaterias;
	materia materias[60];
} estudiante;


int main()
{
	materia m;
	estudiante e1 = {"200329776", "Fulano", "De Tal", 19, true, 0};

	strcpy(m.clave, "4500001");
	strcpy(m.nombre, "Programacion estructurada");
	m.intentos=2;
	m.aprobada=false;
	strcpy(m.calificacion, "");
	e1.materias[e1.nMaterias]=m;
	e1.nMaterias++;


	strcpy(m.clave, "4500010");
	strcpy(m.nombre, "Introduccion al pensamiento matematico");
	m.intentos=1;
	m.aprobada=true;
	strcpy(m.calificacion, "B");
	e1.materias[e1.nMaterias]=m;
	e1.nMaterias++;


	strcpy(m.clave, "4500012");
	strcpy(m.nombre, "Estructuras de datos");
	m.intentos=4;
	m.aprobada=true;
	strcpy(m.calificacion, "S");
	e1.materias[e1.nMaterias]=m;
	e1.nMaterias++;

	printf("El estudiante con matricula %s tiene %d materias registradas\n", e1.matricula, e1.nMaterias);
	printf("La materia %s tiene %s de calificacion\n", e1.materias[0].nombre, e1.materias[0].calificacion);
	printf("La materia %s tiene %s de calificacion\n", e1.materias[1].nombre, e1.materias[1].calificacion);
	printf("La materia %s tiene %s de calificacion\n", e1.materias[2].nombre, e1.materias[2].calificacion);
	return 0;
}

Y por supuesto que un registro puede tener otras estructuras definidas en términos de registros