Foro con Clase C/C++

Retomando el curso de C++

shorosky

Nº de hilos:1

Nº de mensajes:4

domingo, 3 de enero de 2021


Hola de nuevo:
Hace años que estuve aprendiendo c/c++ con este curso, y ha sido la página de referencia por excelencia para todas las dudas de base que he ido teniendo desde entonces. Muchísimas gracias a todos los que tuvísteis esta iniciativa, y por dedicar vuestro tiempo a la enseñanza. Especialmente a Steven, que me estuvo ayudando de manera personal.

En su día, abandoné el curso cuando empezó el tema de clases por falta de tiempo, y un poco también por falta de ejemplos y ejercicios.

Veo que se ha renovado la página con notables mejoras, y nuevas propuestas para la parte de clases con c/c++, y me he propuesto terminar lo que empecé entonces.
Me gustaría arrancar con dos preguntas:
 - 1 No soy capaz de recuperar mi antigua cuenta de correo. Está guardada en el sistema, pero no me permite recuperar la contraseña.
 - 2 Como no podría ser de otra forma, me asaltan dudas a la hora de ir implementando los nuevos ejercicios que se plantean. Recuerdo, en su día, que todas las dudas podían plantearse a continuación del tema. Me pregunto si sigue en pie esta posibilidad de realizar preguntas, y en caso afirmativo, cual es el lugar correcto para hacerlo.

De nuevo, muchísimas gracias a todos vosotros por vuestro tiempo y dedicación.
Un saludo.

Shorosky

Tema cerrado

Salvador Pozo

Nº de hilos:0

Nº de mensajes:15

domingo, 3 de enero de 2021


Hola:

Me alegra que por fin alguien estrene el foro, he tenido ciertas dudas de que funcionase. :) Gracias a ti por 
demostrar que funciona.

En cuanto a tus preguntas, la primera no sé a qué cuenta de correo te refieres.

Para la segunda pregunta, cuando decidí actualizar la página me planteé si conservar los comentarios, 
pero decidí no hacerlo por varios motivos. Primero porque en muchos casos se repetían consultas que
ya se habían resuelto en la lista de correo, y porque considero que es preferible que todas las consultas
estén almacenadas en el mismo lugar. Esto hace más fácil hacer búsquedas y redirigir preguntas repetidas. 

Segundo porque muchos comentarios eran más apropiados para el libro de visitas, y no aportaban 
mucho al tema de la página dónde aparecían. 

Tercero porque en algunas páginas llegaba a haber muchos comentarios, que recargaban demasiado el 
contenido.

Finalmente, por el spam, que fue el motivo por el que finalmente también retiramos el libro de visitas.

El lugar adecuado para plantear dudas es este foro. Dependiendo de cómo evolucione en el futuro
se añadirán nuevas categorías, o se estructurará de otro modo, pero la idea es que todas las comunicaciones
entre usuarios se hagan aquí.

Tienes razón en que a partir de que el curso empieza a tratar de clases ya no hay ejemplos y ejercicios.
Probablemente es culpa mía, pero no se me ocurren ejemplos sencillos, ni mucho menos ejercicios
simples, que ilustren conceptos como herencia o polimorfismo. Todo tiende a complicarse a partir de
ahí. Por otra parte es lógico, ya que la POO está pensada para resolver problemas complejos.

Intentaré pensar en ejemplos sencillos, aunque no prometo nada. ;-)

Tema cerrado

shorosky

Nº de hilos:1

Nº de mensajes:4

domingo, 3 de enero de 2021


Hola Salvador:
La cuenta era shorosky@gmail.com.
No me permite recuperar la contraseña, ya que aparece un error en la página. Pero la cuenta sí que está en el sistema, porque al intentar utilizarla para darme de alta, me dice que ya está en uso.

En cuanto a las dudas, entiendo que hayas querido reorganizar la página, así que iré formulando las dudas por aquí.
Estoy empezando con el ejemplo del sudoku del capítulo 29 (me parece un ejemplo magnífico para poner en práctica la P.O.O.), y me he quedado bloqueado en el siguiente punto.

Tenemos dos clases, una clase que denominamos casilla y otra que denominamos tablero.
La clase tablero contiene un atributo que es una matriz de 9x9 casillas, y la cual debemos ir rellenando con la posición de la siguiente fila, siguiente columna y siguiente casilla del mismo bloque.

La clase casilla tiene métodos que permiten actualizar la posición de la siguiente fila, columna o casilla del bloque, pero no se indica que tenga un método para actualizar el valor de la casilla, sino que éste se guarda en el objeto al declararlo.

Cuando declaro un objeto de la clase tablero, se crea el array de 9x9 casillas, pero todas inicializadas a 0.
¿Cómo puedo actualizar el valor de cada casilla, si ya previamente he declarado la casilla con valor a 0? ¿He sido demasiado estricto leyendo el ejercicio y se sobreentiende que hay que incluir un método que permita actualizar el valor de la casilla?

Muchas gracias.
Un saludo.

Tema cerrado

Salvador Pozo

Nº de hilos:0

Nº de mensajes:15

lunes, 4 de enero de 2021


Hola:

En lo que se refiere a recuperar contraseñas de cuentas gmail o Google, ¿has intentado seguir los
consejos de este enlace? 
https://support.google.com/accounts/answer/7682439?hl=es

En principio, la contraseña de gmail es la misma que la de tu cuenta Google, que probablemente uses
en tu teléfono móvil, si es un Android. No debería ser complicado recuperarla.

En cuanto al ejercicio del Sudoku, tal vez no sea un buen problema por el que empezar. Este verano
estuve intentando programarlo yo, y es mucho más complicado de lo que esperaba. :-)

Sin embargo, es relativamente simple programar los métodos de resolución más sencillos, aunque
sólo resolverán los puzzles más fáciles. Mi programa actual tiene 2000 líneas de código, pero no
resuelve los sudokus catalogados como "muy difíciles". Posiblemente incluya algún artículo
explicando el proceso para crear ese programa.

Por supuesto, hay algoritmos para resolverlos muy rápidamente, pero no usando los métodos "humanos".

En cualquier caso, por supuesto que las funciones para modificar el contenido de una casilla deben
pertenecer a la clase "casilla". Esa es una de las ideas del encapsulamiento, los datos de un objeto sólo
son modificables mediante métodos de su propia clase, o de clases amigas o heredadas.

Cuando declaro un objeto de la clase tablero, se crea el array de 9x9 casillas, pero todas inicializadas a 0. 

Esto es algo que ha cambiado en versiones posteriores de C++ a la que se documenta en la página. Cuando
escribí este curso el último estándar era el C++98, desde entonces se han hecho varias versiones: C++11, C++14,
C++17 y C++20. La idea es ir actualizando el curso añadiendo las novedades de estas versiones.

Una de esas novedades es que es posible inicializar objetos desde una lista de valores, análogamente
a cómo se inicializan los arrays. Pero esto es otro tema...

Hasta pronto.

Tema cerrado

shorosky

Nº de hilos:1

Nº de mensajes:4

lunes, 4 de enero de 2021


Hola Salvador:
Con la cuenta de gmail, me refiero a que en esta página (conclase.net) entraba con esa cuenta de correo, pero si intento recuperar la contraseña, me lanza un error. Ahora mismo estoy escribiendo con otra cuenta de correo temporal.

Con respecto a lo del sudoku, estaba tratando de ir realizando los ejemplos del capítulo 29, donde se plantea este programa.

En cualquier caso, por supuesto que las funciones para modificar el contenido de una casilla deben
pertenecer a la clase "casilla". Esa es una de las ideas del encapsulamiento, los datos de un objeto sólo son modificables mediante métodos de su propia clase, o de clases amigas o heredadas.

Todas las modificaciones del objeto casilla las hago desde la clase casilla, no desde tablero. (Desde tablero llamo a los métodos que ofrece la clase casilla para hacer esa modificación). Pero el problema se me plantea a la hora de modificar el atributo "valor" de un objeto de la clase casilla, pues en el ejercicio no se indica que desarrollemos un método para modificarlo. Sólo métodos para modificar los atributos "sig_fila", "sig_columna", "sig_bloque".
El atributo valor sólo se puede iniciar en la declaración del objeto casilla, y no hay método para modificarlo.
¿Se sobreentiende que debo añadir el método?

Lo de los algoritmos para su resolución, entiendo que será complejo, no tengo prisa por llegar a ello.
Me preocupa más cómo estructurar correctamente un programa mediante clases y objetos, que aplicar un método de resolución. Por eso considero que ejemplos como el de sudoku son buenos ejemplos, ya que nos va guiando a cómo debemos pensar cuando trabajamos con objetos.

Un saludo.
Shorosky

Tema cerrado

Salvador Pozo

Nº de hilos:0

Nº de mensajes:15

lunes, 4 de enero de 2021


Hola:

La cuenta que mencionas está sin confirmar. Para evitar que se den de alta bots, o que alguien se
de de alta con una dirección falsa o de otra persona, se hace una verificación en dos pasos. Primero
te das de alta en el formulario y se envía un código de verificación a la dirección indicada. Con ese
código verificas que la cuenta de correo es tuya y se completa el proceso. Esto lo has tenido que hacer
con esta cuenta temporal. Te envío un código de verificación, revisa la carpeta de spam, por si acaso.

No te ciñas a lo que dice el enunciado, si necesitas un método para modificar el valor de una casilla,
puedes crearlo.

En el programa que hice, aún partiendo de este problema, al final tuve que crear más clases para
aplicar los algoritmos de resolución. Toma este problema como un ejercicio teórico, y añade lo que
consideres necesario.

Hasta pronto.
 

Tema cerrado

shorosky

Nº de hilos:1

Nº de mensajes:4

lunes, 4 de enero de 2021


Hola:

La cuenta que mencionas está sin confirmar. Para evitar que se den de alta bots, o que alguien se
de de alta con una dirección falsa o de otra persona, se hace una verificación en dos pasos. Primero
te das de alta en el formulario y se envía un código de verificación a la dirección indicada. Con ese
código verificas que la cuenta de correo es tuya y se completa el proceso. Esto lo has tenido que hacer
con esta cuenta temporal. Te envío un código de verificación, revisa la carpeta de spam, por si acaso.

-----------------

Así lo hice con esta cuenta temporal, efectivamente. A la dirección de shorosky@gmail.com no me ha llegado el correo de verificación. Ni en papelera, spam, incluso en todo el correo. Lo he revisado y no aparece nada.
No puedo adjuntar una imagen del error que me aparece al tratar de renovar la contraseña desde la página web, pero es básicamente el siguiente mensaje:

Whoops!
We seem to have hit a snag. Please try again later...

--------------------

No te ciñas a lo que dice el enunciado, si necesitas un método para modificar el valor de una casilla,
puedes crearlo.

En el programa que hice, aún partiendo de este problema, al final tuve que crear más clases para
aplicar los algoritmos de resolución. Toma este problema como un ejercicio teórico, y añade lo que
consideres necesario.

--------------------------------------

Perfecto, así lo haré.
Muchas gracias.
Un saludo.


 

Tema cerrado

Salvador Pozo

Nº de hilos:0

Nº de mensajes:15

martes, 5 de enero de 2021


Hola:

Efectivamente, había un error en el código de la página para recuperar contraseñas.
Creo que ya está resuelto. 
He enviado un recordatorio, a ver si ahora funciona.
Aún quedarán cosas por depurar en la página, poco a poco iré corrigiéndolas.

Hasta pronto.

Tema cerrado

shorosky

Nº de hilos:1

Nº de mensajes:2

martes, 5 de enero de 2021


Hola:
Solucionado, ahora ya puedo entrar desde mi cuenta de correo.

Seguimos avanzando.
Un saludo.

Tema cerrado