jueves, 19 de mayo de 2016

Modelo de programación en GNU/Linux (Parámetros función main).



Modelo de programación en GNU/Linux (Parámetros función main).

Algoritmo de Verificacion de Cedula Ecuatoriana

Para proceder a verificar si un numero de cedula es correcto tenemos que tener en cuenta lo siguiente:

-      La cedula ecuatoriana está formada por los dos primeros dígitos que corresponden a la provincia donde fue expedida, por lo cual los dos primeros números no será mayor a 24 ni menor a 1.

-       El tercer digito es un número menor a 6 (0, 1, 2, 3, 4, 5).

-      Los siguientes hasta el noveno digito son un número consecutivo.

-      Y el décimo digito es el digito verificador.

Los coeficientes usados para verificar el décimo dígito de la cédula, mediante el algoritmo “Módulo 10”

COEFICIENTES = 2.1.2.1.2.1.2.1.2 

   

 Una vez que hayamos entendido el algoritmo para validar la cedula proseguimos a realizar el programa:


Implementamos el código respectivo:

Para empezar con la implementación de nuestro código, lo primero que debemos hacer  es abrir un editor de texto, en nuestro caso haremos uso de gedit  que es uno de los editores de texto de Ubuntu y crearemos un archivo con el siguiente nombre “cedula.c”.
 
Para crear este archivo vamos hasta la consola de nuestro sistema operativo y ponemos:

>>gedit cedula.c &

El & nos permite realizar 2 proceso en el terminal.

Una vez realizado esto observamos lo siguiente en nuestra pantalla:




Ahora, dentro de este archivo vamos a implementar el codigo de nuestro programa que es el siguiente:

/*Programa cédula*/

#include <stdio.h>
#include <stdlib.h>
struct cedula{
    int x;
};
int main(int argc, char *argv[]){
    struct cedula  ced[10];
    int i;
    int sumDigitos=0;
    int numRestar=0;
    int elementoFinal=0;
    if(argc!=11){
        printf("Numero de parametros incorrectos. Use: %s x1 x2 x3 x4 x5 x6 x7 x8 x9 x10\n",argv[0]);
        return -1;
        }
        ced[0].x=atoi(argv[1]);
        ced[1].x=atoi(argv[2]);
        ced[2].x=atoi(argv[3]);
        ced[3].x=atoi(argv[4]);
        ced[4].x=atoi(argv[5]);
        ced[5].x=atoi(argv[6]);
        ced[6].x=atoi(argv[7]);
        ced[7].x=atoi(argv[8]);
        ced[8].x=atoi(argv[9]);
        ced[9].x=atoi(argv[10]);

for(i=0;i<9;i++){
if(i==0){
ced[i].x=ced[i].x*2;
if(ced[i].x>=10){ced[i].x=ced[i].x-9;
}
}
if( (i%2==0) && (i != 0) ){
ced[i].x=ced[i].x*2;
if(ced[i].x>=10){
ced[i].x=ced[i].x-9;
}
}
if( (i%2 != 0) && (i!=0) ){
ced[i].x=ced[i].x*1;
if(ced[i].x>=10){
ced[i].x=ced[i].x-9;
}
}

}


for(i=0;i<9;i++){
sumDigitos=sumDigitos+ced[i].x;
}

if(sumDigitos >=20 && sumDigitos<=29){
numRestar=30-sumDigitos;
}
if(sumDigitos >=10 && sumDigitos<=19){
numRestar=20-sumDigitos;
}
if(sumDigitos >=30 && sumDigitos<=39){
numRestar=40-sumDigitos;
}

printf("\n Comprobacion:\n");
elementoFinal=ced[9].x;
if(numRestar == elementoFinal){
printf("Tu cedula es correcta\n");
}
if(numRestar != elementoFinal){
printf("Tu cedula es incorrecta\n");
}

return 0;
}




Analizando un poco el codigo nos damos cuenta que se hace uso de estructuras, sentencias como el if o el for que ya sabemos como utilizarlas.
como una novedad tenemos lo siguiente:

int main(int argc, char *argv[])

Podemos observar dos argumentos dentro del main:
int argc: Cantidad de argumentos que se envian.
char *argv[]:  Es un vector de cadenas de caracteres.
 
Una vez terminado el codigo lo guardamos y procedemos con la compilacion del programa:
Para esto ponemos el siguiente codigo:
  • gcc -o validarcedula cedula.c
Si el programa no presenta ningun error lo que observamos en pantalla es lo siguiente:



Ahora podemos continuar con la ejecución de nuestro programa y para esto ponemos lo siguiente:
  • ./validarcedula 1 7 2 6 2 6 1 5 0 4 
Y asi podemos seguir probando con disitintos números y verificar si son correctos.


Tambien podemos probar con otro ejemplo para ver el mensaje que nos muestra en caso de no ser correcto el numero.


Y listo, hemos comprobado que nuestro programa funciona a la perfección.



Si nosotros queremos ejecutar nuestro programa independientemente del directorio en el que nos encontremos lo que debemos hacer es modificar nuestra variable PATH. Esta variables contiene un conjunto de rutas de directorios en donde el Shell busca los comandos que hemos ingresado.
Para lo cual ponemos lo siguiente:
PATH=$PATH:/home/danny
Export PATH
Claro que si utilizamos esta forma al momento de que volvamos a iniciar el bash la modificación no se mantiene, por lo que debemos buscar otra manera de editar la variable de manera que la modificación hecha se quede guardada permanentemente.
Para esto vamos a modificar el siguiente archivo:
En nuestro directorio home de usuario vamos a buscar el siguiente archivo:
.bashrc


Ahora vamos a modificar este archivo, lo podemos hacer directamente sin abrirlo con un editor de texto de la siguiente manera:
>> echo "export PATH=$PATH:/home/danny" >> ~/.bashrc




Terminamos aplicando el comando source para recargar el archivo ~/.bashrc:



>> source ~/.bashrc
 
Y listo con estos cambios realizados nuestra variable PATH se guardara de manera permanente.



BIBLIOGRAFIA:

T.Jimenez “Algoritmo de Verificacion de Cedula Ecuatoriana”, (2011).[Online]. Available: http://telesjimenez.blogspot.com/2011/05/algoritmo-de-verificacion-de-cedula.html

HS. Francisco "Añadir un directorio a la variable PATH", Junio (2013). [Online]. Disponible en:
http://yoporlinuxmato.blogspot.com/2013/06/anadir-un-directorio-la-variable-path.html



No hay comentarios:

Publicar un comentario