Buenos días. Dejo una posible solución de la entrega CU00553F del curso elemental de programación en lenguaje C desde cero.
EJERCICIO
a) Busca información sobre qué es un struct en programación C. Explica el concepto tratando de poner un ejemplo de la vida real de algo que pueda ser similar a un struct en programación.
En la creacion de soluciones para algunos problemas surge la necesidad de agrupar datos de diferente tipo o de manejar datos que serian muy dificil de describir en los tipos de datos primitivos, esta es la situacion en la que debemos aprovecharnos de las caracteristicas que hacen al lenguaje C especial, o sea el uso de estructuras, uniones y punteros.
Una estructura contiene varios datos. La forma de definir una estructura es haciendo uso de la palabra clave struct.
Un ejemplo de declarar una estructura sería el siguiente:
struct mystruct
{
int int_member;
double double_member;
char string_member[25];
} variable;
"variable" es una instancia de "mystruct" y no es necesario ponerla aquí. Se podria omitir de la declaracion de "mystruct" y más tarde declararla usando:
struct mystruct variable;
La estructura misma no tiene nombre (por la ausencia de nombre en la primera linea), pero tiene de alias "Mystruct". Entonces se puede usar así:
Mystruct variable;
Note que es una convencion, y una buena costumbre usar mayúscula en la primera letra de un sinónimo de tipo.
Un comparación de la vida real, para explicar un struct en programación, podría ser con una marca comercial. Por ejemplo, la marca "bosch" fabrica: neveras, batidoras, planchas de pelo, etc. "bosch" sería la estructura (struct) y todo lo que pertenece a esa marca: neveras, batidoras, planchas de pelo, serían las variables dentro de la misma. Para referirnos a todos esos electrodomésticos utilizaríamos la marca, la estructura (struct).
b) Busca información sobre qué es un puntero en programación. Explica el concepto tratando de poner un ejemplo de la vida real de algo que pueda ser similar a un puntero en programación.
Un puntero es una variable que contiene la dirección de memoria de un dato o de otra variable que contiene al dato en un arreglo. Ésto quiere decir, que el puntero apunta al espacio físico donde está el dato o la variable. Un puntero puede apuntar a un objeto de cualquier tipo, como por ejemplo, a una estructura o una función. Los punteros se pueden utilizar para referencia y manipular estructuras de datos, para referenciar bloques de memoria asignados dinamicamente y para proveer el paso de argumentos por referencias en las llamadas a funciones.
Muchas de las funciones estandares de C, trabajan con punteros, como es el caso del scanf o strcpy. Estas reciben o devuelve un valor que es un puntero. Por Ej. A scanf se le pasa la dirección de memoria del dato a leer (esto es un puntero)...
Para explicar lo que es puntero con un ejemplo de la vida real podríamos utilizar el símil de una llave para un apartamento. Para vender un piso no hace falta coger el piso y entregarlo (literalmete) sino con las entregas de las llaves ya basta. Jugando a poquer con unos amigos, si queremos apostar el piso, no hace falta dejar encima de la mesa el piso, sino que puniendo las llaves del piso ya se sabe a que "apuntan" las mismas, apuntan al piso en sí, al espacio físico.
Unos comentarios sobre el curso "lenguaje C desde cero".
Quería expresar mi más sincero agradecimiento a todo el equipo de aprenderaprogramar.com por ofrecernos la gran oportunidad de adquirir una conocimientos sólidos en programación, a Mario R. Rancel por impartir el curso presente y por su tiempo y dedicacion, y a todos los campañeros que han ido corregiéndome y aconsejándome durante el curso.
Después de acabar unos cuantos cursos (de modo gratuito), a parte de sentirme muy agradecido, hacia el equipo de aprenderaprogramar.com, por haberme brindado la oportunidad de estudiar de este modo, me siento seguro programando. Sé que me faltan muchos conceptos y prácticas más por aprender pero sin los conociementos básicos adquiridos aquí sería poco probable haber llegado al nivel que estoy.
Atentamente,
Dimitar (dimiste).