Validacion En Programacion
Enviado por Adrianavez • 19 de Marzo de 2013 • 5.510 Palabras (23 Páginas) • 764 Visitas
La validación de datos es una parte importante de la programación en cualquier lenguaje. Los programas en C aceptan datos en formatos específicos para realizar acciones específicas en dichos datos. Si un programa está esperando una fecha de inicio y una fecha final para calcular el tiempo total, es importante que el programa reciba información válida. En este ejemplo, la fecha de inicio no debe ser una fecha posterior a la fecha de finalización y ambos valores deben ser fechas válidas.
Nivel de dificultad:Moderadamente difícil
Instrucciones
1
Crea una función para realizar la validación en el programa de C. Declara una variable de tipo "Fecha Hora" para llevar a cabo una fecha válida. Declara otra variable para contener la fecha de entrada(s) como se recibió de un archivo, base de datos o una entrada de usuario.
2
Llama "DateTime.TryParse" al valor de la fecha de entrada y la variable de fecha y hora como un parámetro de salida. Si la función tiene éxito, continua ejecutando la siguiente línea de código. Si la función no tiene éxito, o bien inicia o muestra un error al usuario de que la fecha de entrada no es válida. Este método está disponible en C#. Si utilizas una versión anterior de C, tienes un par de opciones diferentes.
3
Divide el mes de entrada, día y año en números enteros separados e intenta crear una variable "fecha hora" nueva a partir de estos valores. Un fallo indica que el valor de fecha de entrada no es válida. Esta es una de las opciones disponibles en C y en C ++.
4
Define una matriz para contener el número de días de cada mes en orden. Por ejemplo, enero es la posición 1 y tiene 31 días. Por lo tanto, myArray [1] contendría el número 31. La función también se debe determinar si se trata de un año bisiesto. La validación del año puede lograrse haciendo que el valor de entrada de los primeros dos dígitos sean superiores a "19" y los dos últimos dígitos vayan de "00" a "99" y que el valor no sea mayor que el año en curso. Esta es otra opción para garantizar que una fecha no válida no sea aceptada por el programa C.
Hay funciones en la libreria ctype.h que permiten saber que se ingresa por teclado o se lee de algun dato almacenado, isdigit(), isalpha(), islower(), isupper() y otras mas que permiten diferenciar lo que se ingresa como dato
Pero por ahi es mas sencillo ingresar todo como caracteres, y segun su valor ascii determinar que lo que es y si esta dentro de las pautas pedidas, dejarlo pasar, sino informar pidiendo el ingreso de un nuevo dato.
#include <stdlib.h>
#include <iostream.h>
#include <conio.h>
//hecho en Turbo C Borland 1 - 3
int main(void){
system("CLS");
char nume[6];
int i=0;
nume[5]='\0';
cout<<"Ingrese un numero: ";
do{
nume[i] = getche();
if(nume[i] == '\r' ) {nume[i]='\0'; break;}
if(int(nume[i]) <48 || int(nume[i]>57))
{
cout<<"\nSolo se admiten numeros, usted ingreso: "<<nume[i];
getchar();
nume[i]='\0';
system("CLS");
cout<<"Ingrese un numero: "<<nume;
}
else i=i+1;
//del if
}while(i < 5);
cout<<"\n\nEL NUMERO INGRESADO Y VALIDADO ES: "<<nume;
getchar();
return 0;
}
Lo mismo puede aplicarse a las letras, variando las condiciones del filtro, aunque esto no es tan importante, porque no tilda los programas, como en el caso de ingresar letras en vez de numeros
Este ejemplo con otras librerias
#include <stdio.h>
#include <conio.h>
#include <string.h>
#include <stdlib.h>
char letras[10], letra;
int main(){
system("CLS");
printf("Ingrese de 1 a 9 letras\nSi ingresa y letras y numeros se validar… como letras\n");
do{
gets(letras);
if(!(strspn(letras, "1234567890.")==0)) printf("DEBE INGRESAR SOLO LETRAS: ");
else printf("Letras aceptadas: Su ingreso= %12s", letras);
}while(strcspn(letras, "1234567890.")==0);
//opcion 2 para un solo digito o letra por vez
for(int i=0; i<10; i++)letras[i]='\0';//formateo letras
printf("\n\nIngrese 1 a 9 letras: ");
int j=0;
do{
letras[j]=getche();
if(letras[j]=='\r')break;
if(letras[j]>47 && letras[j]<58){
letras[j]='\0';
printf("!!DEBE INGRESAR SOLO LETRAS \nReintente\nIngrese una letra: %s",letras);
}
else j=j+1;
}while(j<9);
printf("\nLetras aceptadas; Su ingreso= %12s", letras);
getch();
return 0;
}
La validacion, se usa para ambos casos, y tambien en la extension del dato, por ejemplo una fecha de nacimiento, no puede ser menor a 1850 ni mayor a la de hoy, el dia no puede ser 0 ni mayor a 31, el mes no puede ser 0 ni mayor a 12, un DNI no puede tener letras, y debe ser de mas de 6 cifras y menos de 9. Los nombres no tienen numeros, etc
El validar no solo se ocupa de que el programa no se tilde, como en el caso especifico de que una variable numerica se ingresen caracteres, sino de que los datos ingresados sean validos,
Si tu cuestionario esta dirigido a que los programas no se tilden, entonces solo el validar que se ingresen numeros sera importante, pero si el programa tiene que dar resultados dignos de confianza, entonces se debe validar todo lo posible
Ejemplo practico:
#include <stdlib.h>
#include <stdio.h>
#include <conio.c>
#include <time.h>
char sexo; //variable alfabetica usada para almacenar el sexo del usuario
int edad=0, apuesta=0, n1=0, n2=0, n3=0;//variables introducidas por el usuario
//variables usadas como contadores y para almacenar resultados de las operaciones matematicas
int cm=0, cf=0, ganancia=0, resp=0, perd=0, g1=0, g2=0, g3=0;
int d1=0, d2=0, d3=0; //variable que almacena los lanzamientos aleatorios del dado
//lee informacion introducida por el ususario
void leerInformacion()
{
while (resp==0)
{ do// verifica
...