Validación de datos en c++

--Originally published at Aprendiendo a programar en C++

En aplicaciones de consola C++, uno de los puntos más problemáticos es la lectura de datos por parte del usuario.

Las funciones de entrada C y los métodos del stream cin resultan poco potentes a la hora de hacer lecturas discriminadas de número enteros, o en coma flotante, fechas o cadenas que se ajuste a un formato determinado.

Después de hacer algunos programas, todos nos damos cuenta de que es mala idea usar el operador >> de cin para leer un número. Si el usuario introduce una cadena no numérica, el valor leído es cero, pero la cadena permanece en el buffer de entrada del teclado, y se intenta leer en sucesivas lecturas.

El resultado es que no se leen los datos que se pretenden leer, y generalmente el programa termina por entrar en un bucle infinito o, en el mejor de los datos, da un resultado incorrecto.

Cuando leemos cadenas también existe peligro, concretamente, de overbuffering, es decir, de sobrepasar el espacio de memoria correspondiente a la cadena a leer.

Esto es más cierto cuando leemos cadenas C, en forma de array de caracteres terminadas en nulo. Si usamos objetos de tipo string este peligro no existe.

Con esto en mente, parece claro que es mejor leer siempre cadenas. En el caso de querer capturar valores numéricos, se debe validar la cadena leída. Si la validación tiene éxito se convierte el valor leído a número, y si no, se repite el proceso.

Generalizando, para validar cualquier formato de dato, el proceso es el siguiente:

  • Leer una cadena.
  • Verificar si el formato es correcto.
    • Si es correcto: retornar el valor leído.
    • Si no es correcto: volver al principio.

Encontré este video que explica perfectamente como funciona la validación de datos en c++, les pondré el link a continuación:

Validación de

Continue reading "Validación de datos en c++"

Array / vectores

--Originally published at Aprendiendo a programar en C++

Los arrays, arreglos o vectores forman parte de la amplia variedad de estructuras de datos que nos ofrece C++, siendo además una de las principales y más útiles estructuras que podremos tener como herramienta de programación. Los arrays, arreglos o vectores (como los quieras llamar), son utilizados para almacenar múltiples valores en una única variable. En un aspecto más profundo, los arrays, permiten almacenar muchos valores en posiciones de memoria continuas, lo cual permite acceder a un valor u otro de manera rápida y sencilla. Estos valores pueden ser números, letras o cualquier tipo de variable que deseemos incluso tipos de datos propios.

En múltiples ocasiones es necesario almacenar gran cantidad de información en una variable y a menudo sucede que no conocemos con exactitud la cantidad de datos que debemos almacenar, pero sabemos que sí sería más de uno, como por ejemplo almacenar las identificaciones de las personas ingresadas al sistema. Los arrays, arreglos o vectores son una estructura que nos permite solucionar este tipo de problemas.

Para declarar un vector en C++, se deben seguir las mismas normas básicas que se siguen para declarar una variable cualquiera, con un pequeño cambio en la sintaxis. Para declarar un vector, arreglo o como lo quieras llamar, necesitaremos saber el tipo de los datos que irán al interior de este, es decir, serán número enteros, o numero decimales o cadenas de texto, etc. necesitamos también, como siempre, un nombre para el vector y un tamaño máximo.

Para una mejor explicación, dejaré el link hacia un video:

arrays en c++