Page 129

CC 2003, 2008 Andr´ es Marzal e Isabel Gracia

2 Estructuras de datos en C: vectores est´aticos y registros

· 142 Escribe un programa que lea un texto escrito en c´odigo Morse y lo traduzca al c´odigo alfab´etico. Si, por ejemplo, el programa lee por teclado esta cadena: ".... --- .-.. .- -- ..- -. -.. --- ... - --- .--." mostrar´a en pantalla el texto HOLAMUNDOSTOP. .............................................................................................

2.4.

Registros

Los vectores permiten agrupar varios elementos de un mismo tipo. Cada elemento de un vector es accesible a trav´es de un ´ındice. En ocasiones necesitar´ as agrupar datos de diferentes tipos y/o preferir´as acceder a diferentes elementos de un grupo de datos a trav´es de un identificador, no de un ´ındice. Los registros son agrupaciones heterog´eneas de datos cuyos elementos (denominados campos) son accesibles mediante identificadores. Ya hemos estudiado registros en Python, as´ı que el concepto y su utilidad han de resultarte familiares. Veamos ahora un dise˜ no t´ıpico de registro. Supongamos que deseamos mantener los siguientes datos de una persona: su nombre (con un m´ aximo de 40 caracteres), su edad (un entero), su DNI (una cadena de 9 caracteres). Podemos definir un registro ((persona)) antes de la aparici´on de main: #define MAXNOM 40 #define LONDNI 9 struct Persona { char nombre[MAXNOM+1]; int edad ; char dni[LONDNI+1]; }; // <- F´ıjate en el punto y coma: es f´ acil olvidarse de ponerlo.

La definici´ on de un registro introduce un nuevo tipo de datos en nuestro programa. En el ejemplo hemos definido el tipo struct Persona (la palabra struct forma parte del nombre del tipo). Ahora puedes declarar variables de tipo struct Persona as´ı: struct Persona pepe, juan, ana;

En tu programa puedes acceder a cada uno de los campos de una variable de tipo struct separando con un punto el identificador de la variable del correspondiente identificador del campo. Por ejemplo, pepe.edad es la edad de Pepe (un entero que ocupa cuatro bytes), juan.nombre es el nombre de Juan (una cadena), y ana.dni [8] es la letra del DNI de Ana (un car´acter). Cada variable de tipo struct Persona ocupa, en principio, 55 bytes: 41 por el nombre, 4 por la edad y 10 por el DNI. (Si quieres saber por qu´e hemos resaltado lo de ((en principio)), lee el cuadro ((Alineamientos)).) Este programa ilustra c´ omo acceder a los campos de un registro leyendo por teclado sus valores y mostrando por pantalla diferentes informaciones almacenadas en ´el: registro.c 1 2

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

3 4 5

#define MAXNOM 40 #define LONDNI 9

6 7 8 9

struct Persona { char nombre[MAXNOM+1]; int edad ;

Introducci´ on a la Programaci´ on con C

123

Profile for esLibre.com

Introducción a la programación con c  

Introducción a la programación con c  

Advertisement