Autor Tema: C concepto de struct y puntero referencia dirección memoria CU00553F lenguajeC  (Leído 5940 veces)

Dimitar Stefanov

  • Experto
  • *****
  • Mensajes: 598
    • Ver Perfil
Buenos días. Dejo una posible solución de la entrega CU00553F del curso elemental de programación en lenguaje C desde cero.

Citar
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:

Código: [Seleccionar]
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:

Código: [Seleccionar]
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í:

Código: [Seleccionar]

  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).

Citar
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).
« Última modificación: 12 de Julio 2016, 18:27 por César Krall »

César Krall

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2078
  • No vales por lo que dices, sino por lo que haces
    • Ver Perfil
    • aprenderaprogramar.com
Hola! Enhorabuena por haber completado otro curso más  ;D
Responsable de departamento de producción aprenderaprogramar.com

Dimitar Stefanov

  • Experto
  • *****
  • Mensajes: 598
    • Ver Perfil
Buenos días, César.

Gracias a vosotros por estar allí y por darnos la oportunidad de aprender. Ahora estoy haciendo un curso de C# (CSharp) y estoy trabajando con Visual Studio. Ojalá tuvieráis vosotros un curso así, porque me encanta la manera que tenéis de explicar y hacer los ejercicios. Os voy contando como me va.

Sólo quería decir que muchas de las cosas que nos enseñan allí ya las hemos visto aquí debido a que los lenguajes son muy parecidos.

Saludos y un placer estar con vosotros. Seguiré corregiendo ejercicios de mis compañeros de aquí.


César Krall

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2078
  • No vales por lo que dices, sino por lo que haces
    • Ver Perfil
    • aprenderaprogramar.com
Hola! Si quieres puedes ir pegando ejercicios de C# en los foros para que nos sirvan de referencia a todos como hizo este usuario: https://www.aprenderaprogramar.com/foros/index.php?action=profile;area=showposts;u=4848

Saludos!
Responsable de departamento de producción aprenderaprogramar.com

Dimitar Stefanov

  • Experto
  • *****
  • Mensajes: 598
    • Ver Perfil
Buenas tardes, César.

Me parece una ídea grandísima. Lo voy a hacer.

Saludos.

César Krall

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2078
  • No vales por lo que dices, sino por lo que haces
    • Ver Perfil
    • aprenderaprogramar.com
Hola! Ya veo que has empezado a compartir ejercicios resueltos en C#. Gracias!
Responsable de departamento de producción aprenderaprogramar.com

Dimitar Stefanov

  • Experto
  • *****
  • Mensajes: 598
    • Ver Perfil
Buenas tardes, César.

Sí, cierto es. He empezado a compartir los ejercicio. Y más que voy a subir :) Voy un pelín lento porque he empezado 2 cursos a la vez y tengo bastante faena, pero al ritmo que pueda compartiré los ejercicios resueltos.

Gracias a vostros.

Saludos.

César Krall

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2078
  • No vales por lo que dices, sino por lo que haces
    • Ver Perfil
    • aprenderaprogramar.com
Te pediría un favor, para no "acaparar" los foros, no subas más de 5 ejercicios seguidos, ya que si subes muchos seguidos desplazas todos los mensajes de los demás usuarios hacia abajo. Gracias!
Responsable de departamento de producción aprenderaprogramar.com

Dimitar Stefanov

  • Experto
  • *****
  • Mensajes: 598
    • Ver Perfil
Buenos días, César.

Me parece una solicitud totalmente aceptable y razonable. Pido disculpas por haber provocado semejante molestia. Y se me había ocurrido, ¿si subo varios ejercicios en un hilo? Así no desplazaré las soluciones de mis compañeros.

Saludos.

César Krall

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2078
  • No vales por lo que dices, sino por lo que haces
    • Ver Perfil
    • aprenderaprogramar.com
Es otra opción, pero es algo que ya hemos tratado anteriormente en los foros. Subir varios ejercicios simultáneamente tiene la ventaja de que no desplaza los otros hilos, pero la desventaja de que mezclamos en un mismo hilo cosas distintas, y luego a la hora de hacer consultas o buscar con el buscador resulta más complicado y las cosas quedan más desordenadas. Por ello en principio es preferible subir un solo ejercicio por hilo. La idea puede ser simplemente ir guardando los ejercicios en un archivo txt y luego irlos publicando a razón de por ejemplo 5 ejercicios los lunes y 5 ejercicios los jueves. A medida que se van publicando se van borrando del archivo txt. De esa manera proseguir hasta culminar la publicación de todos los ejercicios.

Otra opción que se ha planteado es crear más foros (lo cual permitiría una mejor subdivisión), pero esto por el momento no se ha concretado...

Saludos!
Responsable de departamento de producción aprenderaprogramar.com

Dimitar Stefanov

  • Experto
  • *****
  • Mensajes: 598
    • Ver Perfil
Buenas tardes, César.

No había pensado en esta opción. Es interesante. Lo voy a hacer así, conforme vaya subiendo ejercicios los voy borrando del archivo. txt.

Saludos.

César Krall

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2078
  • No vales por lo que dices, sino por lo que haces
    • Ver Perfil
    • aprenderaprogramar.com
Ok!
Responsable de departamento de producción aprenderaprogramar.com

 

Sobre la educación, sólo puedo decir que es el tema más importante en el que nosotros, como pueblo, debemos involucrarnos.

Abraham Lincoln (1808-1865) Presidente estadounidense.

aprenderaprogramar.com: Desde 2006 comprometidos con la didáctica y divulgación de la programación

Preguntas y respuestas

¿Cómo establecer o cambiar la imagen asociada (avatar) de usuario?
  1. Inicia sesión con tu nombre de usuario y contraseña.
  2. Pulsa en perfil --> perfil del foro
  3. Elige la imagen personalizada que quieras usar. Puedes escogerla de una galería de imágenes o subirla desde tu ordenador.
  4. En la parte final de la página pulsa el botón "cambiar perfil".