Upload
camyi-escobar
View
160
Download
4
Embed Size (px)
DESCRIPTION
El presente proyecto académico, muestra algunos ejemplos de programas relacionados con la teoría vista en clases. Además mostramos un poco de conceptos básicos relacionados también con los ciclos, contadores, acumuladores y vectores, que nos ayudan como una herramienta extra para comprender mejor la programación, por lo cual en nuestro trabajo se presentará un algoritmo que nos ayude a realizar procesos matemáticos los mismos que indicarán si una cédula que ingresamos es verdadera o no mediante la verificación del último dígito.
Citation preview
UNIVERSIDAD CENTRAL DEL ECUADOR
INGENIERA MATEMTICA
PROGRAMACIN I
PROYECTO:
VERIFICAR CDULA DE IDENTIDAD
INTEGRANTES:
ROY TORRES
ANDRS IPIALES
JESSY CANCN
BRYAN FERNNDEZ
QUITO, 22 DE JULIO DEL 2015
VERIFICADOR DE CDULA
NDICE
NDICE ........................................................................................................................................................ 2
RESUMEN .................................................................................................................................................. 3
CAPTULO I ............................................................................................................................................... 4
EL PROBLEMA ..................................................................................................................................... 4
PLANTEAMIENTO DEL PROBLEMA .......................................................................................... 4
OBJETIVOS ........................................................................................................................................ 5
JUSTIFICACIN ............................................................................................................................... 6
CAPTULO II ............................................................................................................................................. 7
MARCO TERICO ............................................................................................................................... 7
RECOMENDACIONES ........................................................................................................................... 26
2
VERIFICADOR DE CDULA
RESUMEN
El presente proyecto acadmico, muestra algunos ejemplos de programas relacionados con la teora vista en clases. Adems mostramos un poco de conceptos bsicos relacionados tambin con los ciclos, contadores, acumuladores y vectores, que nos ayudan como una herramienta extra para comprender mejor la programacin, por lo cual en nuestro trabajo se presentar un algoritmo que nos ayude a realizar procesos matemticos los mismos que indicarn si una cdula que ingresamos es verdadera o no mediante la verificacin del ltimo dgito.
3
VERIFICADOR DE CDULA
CAPTULO I EL PROBLEMA
PLANTEAMIENTO DEL PROBLEMA
El proyecto acadmico est dirigido a estudiar y comprender la forma en cmo se trabaja en programacin con ciclos repetitivos, acumuladores y contadores.
La verificacin de cdulas usando mtodos matemticos es de mucha importancia, la cual
se origina al querer verificar cdulas para que la presentacin de la informacin sea ms clara, entendible y esttica, este es un abrebocas para las personas que estn inicindose en este mbito de la programacin.
La utilizacin de vectores, cadenas y ciclos repetitivos constituye actualmente una parte esencial en los lenguajes de programacin, ya que la mayora de los datos se introducen en los recursos ya mencionados.
El concepto de vectores ha ayudado a ordenar y resolver diversos problemas de la vida real por lo que su estudio es de gran importancia siendo esta la que ayudar en el presente proyecto a resolver el objetivo propuesto.
Se realizarn tres diferentes lenguajes de programacin los cuales son Visual Basic, C++ y Java, estos lenguajes presentarn un mismo algoritmo pero con caractersticas diferentes en sus lenguajes de cdigos e interpretacin de los mismos.
4
VERIFICADOR DE CDULA
OBJETIVOS
Objetivo General:
Estudiar y comprender los ciclos repetitivos, contadores, acumuladores y vectores, su uso para poder tener mayores facilidades a la hora de resolver ciertos algoritmos que requieren de estas estructuras.
Objetivos Especficos:
Conocer que es un vector. Crear un programa que facilite el registro de nmeros de cedula y verificar si estos son o
no reales. Codificar una tarea sencilla convenientemente especificada utilizando lo estudiado.
5
VERIFICADOR DE CDULA
JUSTIFICACIN
El presente trabajo es de gran importancia ya que con este se pretende dar una facilidad en lo que es el registro y validacin de cdulas de identidad.
Los aspectos novedosos a investigarse en el presente trabajo son: como ingresar cadenas tipo char para que los datos ingresados sean ledos como una cadena y no por partes.
Al ser este una investigacin interesante y distractora tendr gran acogida puesto que es fcil de utilizarla, solo se necesita el nmero de cdula de la persona a la cual se desea verificar.
6
VERIFICADOR DE CDULA
CAPTULO II MARCO TERICO
CICLOS REPETITIVOS
Los ciclos repetitivos tambin llamados lazos o bucles permiten repetir una operacin o secuencia de operaciones en funcin de ciertas condiciones. Es un segmento de un algoritmo o programa cuyas instrucciones se repiten un nmero determinado de veces mientras se cumpla una determinada condicin. Dentro de los ciclos se utilizan contadores y acumuladores, que regulan que el ciclo llegue a su fin.
Contador: Es un tipo de variable que incrementa o decrementa su valor en un valor constante
Cuando decimos incrementa estamos sumando. Ejemplo: Veces = Veces + 1
Como se puede observar a la variable veces se le est incrementando un valor constante (1); es decir a su contenido le sumas el valor y se vuelve a guardar en la misma variable.
Acumulador: Es una variable que incrementa o decrementa su contenido en cantidades variables.
Ejemplo: Nomina = Nomina + sueldo
Las estructuras de control iterativas se clasifican en tres tipos:
Mientras: (While-do) - el ciclo mientras es la estructura bsica que permite repetir varias veces una secuencia de operaciones, mientras se cumpla una determina condicin.
Repetir: (repeat-until) - las operaciones de lazo repetir son ejecutadas hasta que la condicin sea cierta.
Para: (for) se utiliza cuando se puede determinar el nmero de veces que hay que ejecutar las instrucciones.
7
VERIFICADOR DE CDULA
Ilustracin 1: CICLO PARA
Ilustracin 2: CICLO MIENTRAS Y REPEAT
ACUMULADORES
El concepto de acumulador guarda relacin estrecha con el de contador. Podramos decir que el contador es un tipo especfico de acumulador. Definiremos acumulador como un elemento cuyo contenido actual se genera a partir de su contenido precedente.
En general, los valores del acumulador se van generando a travs de sumas (o restas) sucesivas. Casos particulares seran los de generacin de valores a partir de multiplicaciones (o divisiones) u otras operaciones matemticas.
La expresin genrica de la evolucin de un acumulador A sera:
8
VERIFICADOR DE CDULA
Sumas sucesivas Restas sucesivas Multiplicaciones sucesivas Divisiones sucesivas
A = A + B
A = A + C
A = A + D
.
A = A + X
A = A B
A = A C
A = A D
.
A = A X
A = A * B
A = A * C
A = A * D
.
A = A * X
A = A / B
A = A / C
A = A / D
.
A = A / X
Ilustracin 3: ACUMULADORES
HERRAMIENTAS PARA LA PROGRAMACIN
Llamaremos herramienta a una parte del cdigo cuyo fin es apoyar una construccin ms amplia y que resulta efectiva en distintos programas. Un martillo es una herramienta que nos ser til para construir una casa de madera, resultando adems efectivo para otro tipo de construcciones como una casa de bloques, un garaje, un edificio, un centro comercial, etc. As herramientas podran ser: una variable, un bucle, una serie de instrucciones... que podemos usar en distintos programas para cumplir un fin.
[Pseudocdigo Mientras ... Hacer aprenderaprogramar.com]
Mientras i < lmite Hacer
Instruccin 1
Instruccin 2
i = i + 1
Repetir
Ilustracin 4: HERRAMIENTAS
9
VERIFICADOR DE CDULA
Por supuesto se pueden introducir variantes en la condicin (i lmite, i >= lmite...) o en el contador (i = i + 2, i = i + 3, i = i + 15, i = i 1, i = i 2, i = i 15, etc.). Es decir, el contador puede funcionar sumando o restando, contando hacia adelante o hacia atrs, y de uno en uno, de dos en dos o lo que se desee.
Se ha de tener en cuenta que una mala definicin del contador, lmite y progresin puede dar lugar a un bucle infinito. Por ejemplo si lmite > i, progresin es i = i 1 y condicin es i < lmite, el bucle no se acabar nunca ya que la progresin da lugar a que la variable i siempre siga siendo menor que el lmite.
VECTORES, ARRAYS O ARREGLOS
En C a los vectores tambin se les llama arrays o arreglos.
Los arrays son:
o Conjuntos de variables del mismo tipo.
o Que tienen el mismo nombre.
o Y se diferencian en el ndice.
Es un modo de manejar una gran cantidad de datos del mismo tipo bajo un mismo nombre o identificador.
DECLARACIN DE UN ARRAY
tipo nombre[tamao];
Tipo: Tipo que tienen el conjunto de variables int, float, double,
Nombre: Identificador con el nombre del array
Tamao: Cantidad de espacios de memoria que queremos reservar para este array
o Importante: Debe ser un entero constante, conocido en tiempo de compilacin. 10
VERIFICADOR DE CDULA
INICIALIZACIN DE UN ARRAY
tipo nombre[tamao] = {a, b, c,};
El nmero de valores entre llaves tiene que ser menor o igual al tamao.
o Si es menor el resto de los valores se quedan sin inicializar.
Existe una forma alternativa:
tipo nombre[] = {a, b, c,};
Si no se especifica el tamao se reservarn tantos espacios como elementos haya entre llaves.
ACCESO A LOS ELEMENTOS DE UN ARRAY
Para un array de tamao N y nombre V accederemos al elemento i como V[i].
Ese valor puede ser ledo (imprimido, asignado a otra variable,) o modificado (dndole un valor) como cualquier otra variable.
V[i] = valor;
Importante: Los ndices en los arrays de C van desde 0 hasta (N-1)
Ilustracin 5: ACCESO A LOS ELEMENTOS DE UN ARRAY
11
VERIFICADOR DE CDULA
ARRAYS MULTIDIMENSIONALES
Declaracin
tipo nombre[N1][N2][];
Utilizacin
Nombre[i1][i2]
0 < i1 < N1
0 < i2 < N2
USO DEL SWITCH
Una instruccin switch (alternativa mltiple) permite seleccionar, por medio de una expresin, el siguiente bloque de instrucciones a ejecutar de entre varios posibles. En lenguaje C, para escribir una instruccin alternativa mltiple (switch) se utiliza la sintaxis:
switch ( ) { case : [ ] [ break; ] case : [ ] [ break; ] ... case : [ ] [ break; ] [ default : ] }
12
VERIFICADOR DE CDULA
El resultado de evaluar la debe ser un valor perteneciente a un tipo de dato finito y ordenado, es decir, entero, lgico, carcter, enumerado o subrango.
Dependiendo del valor obtenido al evaluar la , se ejecutar un bloque de instrucciones u otro.
Opcionalmente, se puede escribir un despus de default:. Este bloque de instrucciones se ejecutar en el caso de que el valor obtenido al evaluar la , no se encuentre en ninguna de las expresiones despus de cada case.
El algoritmo completo se presenta enseguida.
CDIGO EN VISUAL BASIC: 1.- Definiremos las variables q vamos a necesitar Sub Macro1() Dim str As String, dest As String Dim digito(20) As Integer Dim asci As Integer Dim i As Integer Dim coeficientes(10) As Integer Dim acumulador As Integer Dim a As Integer Dim b As Integer Dim c As Integer Dim verificador As Integer Dim opciones(24) As Integer 2.-Declaramos la cadena coeficientes 1*1 coeficientes(1) = 2 coeficientes(2) = 1 coeficientes(3) = 2 coeficientes(4) = 1 coeficientes(5) = 2 coeficientes(6) = 1 coeficientes(7) = 2 coeficientes(8) = 1 coeficientes(9) = 2 coeficientes(10) = 0
13
VERIFICADOR DE CDULA
3.-Mensaje de inicializacin del programa MsgBox ("************PROGRAMA VERIFICADOR DE LA CEDULA DE IDENTIDAD***********") Worksheets("Hoja1").Cells(1, 5).Value = ("PROGRAMA VERIFICADOR DE LA CEDULA DE IDENTIDAD") 4.-Desplazamos el siguiente mensaje dest = "" str = InputBox("Ingrese el numero de cedula") 5.-Ciclo para generar la verificacin de la cedula de identidad For i = 1 To Len(str)
digito(i) = Mid(str, i, 1) multiplicacion = digito(i) * coeficientes(i)
If (multiplicacion > 9) Then
multiplicacion = multiplicacion - 9 End If
acumulador = acumulador + multiplicacion Worksheets("Hoja1").Cells(2, 2).Value = ("PROYECTO DE LA VERIFICACION DE LA CEDULA ") Worksheets("Hoja1").Cells(3, 2).Value = ("NUMERO DE CEDULA VERIFICADO")
5.1.-Impresin del nmero de cedula en las celdas de Excel
Worksheets("Hoja1").Cells(4, i).Value = digito(i) Next i 5.3.-Ciclos de acumulacin y verificacin de la cedula de identidad a = (acumulador / 10) b = a + 1 c = b * 10 verificador = c acumulador 5.2.- Desplazamos el siguiente mensaje con sus respectivas impresiones en las celdas de Excel MsgBox ("LA SUMA DE LOS DIGITOS DE SU CEDULA ES:" & acumulador)
14
VERIFICADOR DE CDULA
Worksheets("Hoja1").Cells(5, 1).Value = ("LA SUMA DE LA CEDULA VERIFICADA") Worksheets("Hoja1").Cells(5, 4).Value = " " & acumulador MsgBox ("EL DIJITO VERIFICADOR ES:" & verificador) Worksheets("Hoja1").Cells(6, 1).Value = ("DIGITO VERIFICADOR") Worksheets("Hoja1").Cells(6, 4).Value = verificador 6.-If de condiciones para ver si la cedula de identidad es falsa o verdadera If (digito(10) = verificador) Then MsgBox ("La cedula es verdadera")
Worksheets("Hoja1").Cells(7, 1).Value = ("LA CEDULA DE IDENTIDAD INGRESA ES VERDADERA")
Else MsgBox ("La cedula es falsa")
Worksheets("Hoja1").Cells(7, 1).Value = ("LA CEDULA DE IDENTIDAD INGRESA ES FALSA")
Worksheets("Hoja1").Cells(8, 1).Value = ("USTED IRA A LA CARCEL") 7.-Fin Del algoritmo End Sub AHORA PROCEDEREMOS A REALIZAR LAS DIFERENTES PRUEBAS Y AS VERIFICAR LA VALIDEZ DEL ALGORITMO: *Verificador de la cedula en Visual Basic *
a) Cuando la cedula de identidad es verdadera 1.-Ejecutacion del programa
15
VERIFICADOR DE CDULA
2.-Inicializacion del programa
3.-Ingreso de la cedula de identidad 4.-Ventanas de resultado *Suma de los dgitos de la cedula
*Digito verificador
*Validez de la cedula de identidad (VERDADERA)
16
VERIFICADOR DE CDULA
5.-Impresin en las celdas de Excel
b) Cuando la cedula de identidad es falsa 1.-Ejecutacion del programa
2.-Inicializacion del programa
3.-Ingreso de la cedula
17
VERIFICADOR DE CDULA
4.- Ventanas de resultados *La suma de los dgitos de la cedula son igual a 0
*El digito verificar es 10 (ERROR)
*Validez de la cedula de identidad(FALSA)
5.-Impresin en las celdas de Excel
18
VERIFICADOR DE CDULA
CDIGO EN C: #include "stdafx.h" #include "stdafx.h" #include "string.h" #include #include int _tmain(int argc, _TCHAR* argv[]) { int coeficientes[10] = { 2, 1, 2, 1, 2, 1, 2, 1, 2, 0 }; char cedula[20]; int i, temporal[20], multiplicacion, acumulador, verificador, a, b, c, j, dimension; printf("***********PROGRAMA VERIFICADOR DE CEDULAS***********"); printf("\n");
printf("INGRESE CON CUANTAS CEDULAS DESEA TRABAJAR"); scanf_s("%d", &dimension); fflush(stdin); system("cls"); for (j = 0; j < dimension; j++) {
printf("POR FAVOR INGRESE EL NUMERO DE CEDULA QUE DESEE COMPROBAR");
gets_s(cedula); acumulador = 0; i = 0; while (i9) { multiplicacion = multiplicacion - 9; } acumulador = acumulador + multiplicacion; i = i + 1; } a = (acumulador / 10); b = a + 1; c = b * 10; verificador = c - acumulador; printf("\n");
19
VERIFICADOR DE CDULA
printf("LA SUMA DE LOS DIGITOS DE SU CEDULA ES:\t%d\n", acumulador); printf("\n"); printf("EL DIGITO VERIFICADOR ES:\t%d\n", verificador); printf("\n"); if (int(cedula[9] - 48) == verificador) { printf("LA CEDULA ES VALIDA \n"); printf("\n"); if (int(cedula[0] - 48) == 1) { switch (cedula[1] - 48) { case 0:
printf("USTED PERTENECE A LA PROVINCIA DE IMBABURA");
break; case 1:
printf("USTED PERTENECE A LA PROVINCIA DE LOJA");
break; case 2:
printf("USTED PERTENECE A LA PROVINCIA DE LOS RIOS");
break; case 3:
printf("USTED PERTENECE A LA PROVINCIA DE MANABI");
break; case 4:
printf("USTED PERTENECE A LA PROVINCIA DE MORONA SANTIAGO");
break; case 5:
printf("USTED PERTENECE A LA PROVINCIA DE NAPO");
break; case 6:
printf("USTED PERTENECE A LA PROVINCIA DE PASTAZA");
break; case 7:
printf("USTED PERTENECE A LA PROVINCIA DE PICHINCHA");
20
VERIFICADOR DE CDULA
break; case 8:
printf("USTED PERTENECE A LA PROVINCIA DE TUNGURAHUA");
break; case 9:
printf("USTED PERTENECE A LA PROVINCIA DE ZAMORA CHINCHIPE");
break; } } else { if (int(cedula[0] - 48) == 2) { switch (cedula[1] - 48) { case 0:
printf("USTED PERTENECE A LA PROVINCIA DE GALAPAGOS");
break; case 1:
printf("USTED PERTENECE A LA PROVINCIA DE SUCUMBIOS");
break; case 2:
printf("USTED PERTENECE A LA PROVINCIA DE ORELLANA");
break; case 3:
printf("USTED PERTENECE A LA PROVINCIA DE SANTO DOMINGO");
break; case 4:
printf("USTED PERTENECE A LA PROVINCIA DE SANTA ELENA");
break; } } else { if (int(cedula[0] - 48) == 0) { switch (cedula[1] - 48) {
21
VERIFICADOR DE CDULA
case 1:
printf("USTED PERTENECE A LA PROVINCIA DE AZUAY");
break;
case 2: printf("USTED PERTENECE A LA PROVINCIA DE BOLIVAR");
break; case 3:
printf("USTED PERTENECE A LA PROVINCIA DE CAAR");
break; case 4:
printf("USTED PERTENECE A LA PROVINCIA DE CARCHI");
break; case 5:
printf("USTED PERTENECE A LA PROVINCIA DE COTOPAXI");
break; case 6:
printf("USTED PERTENECE A LA PROVINCIA DE CHIMBORAZO");
break; case 7:
printf("USTED PERTENECE A LA PROVINCIA DEL ORO");
break; case 8:
printf("USTED PERTENECE A LA PROVINCIA DE ESMERALDAS");
break; case 9:
printf("USTED PERTENECE A LA PROVINCIA DE GUAYAS");
break; } } } } printf("\n"); printf("-----------------------------------------------------------------------------"); } else {
22
VERIFICADOR DE CDULA
printf("LA CEDULA QUE INGRESO ES ES FALSA"); printf("\n"); } } printf("\n"); getchar(); getchar(); return 0; } CDIGO JAVA: package javaapplication21; import java.util.*; public class JavaApplication21 { public static void main(String[] args) { int i,k,divi,cedula,s,A,d,resta,suma,t,p,v; int[] vector=new int[100]; int [] coe=new int[100]; int [] multi=new int [100]; Scanner dato = new Scanner(System.in); System.out.print("cuantas cedulas va a ingresar"); k = dato.nextInt(); for(i=1;i
VERIFICADOR DE CDULA
case 6: System.out.print("la cedula " + i + " pertenece a Cotopaxi"); break; case 7: System.out.print("la cedula " + i + " pertenece a Chimborazo "); break; case 8: System.out.print("la cedula " + i + " pertenece a El Oro"); break; case 9: System.out.print("la cedula " + i + " pertenece a Esmeraldas"); break; case 10: System.out.print("la cedula " + i + " pertenece a Imbabura"); break; case 11: System.out.print("la cedula " + i + " pertenece a Loja"); break; case 12: System.out.print("la cedula " + i + " pertenece a Los Ros"); break; case 13: System.out.print("la cedula " + i + " pertenece a Manabi"); break; case 14: System.out.print("la cedula " + i + " pertenece a Morona Santiago"); break; case 15: System.out.print("la cedula " + i + " pertenece a Napo"); break; case 16: System.out.print("la cedula " + i + " pertenece a Pastaza"); break; case 17: System.out.print("la cedula " + i + " pertenece a Picincha"); break; case 18: System.out.print("la cedula " + i + " pertenece a Tunguragua"); break; case 19: System.out.print("la cedula " + i + " pertenece a Zamora Chinchipe"); break; case 20: System.out.print("la cedula " + i + " pertenece a Galpagos"); break; case 21: System.out.print("la cedula " + i + " pertenece a Sucumbios"); break; case 22: System.out.print("la cedula " + i + " pertenece a Orellana"); break;
case 23: System.out.print("la cedula " + i + " pertenece a Santo Domingo de los Tschilas");
break; case 24: System.out.print("la cedula " + i + " pertenece a Santa Elena"); break; } if (divi > 24) { System.out.print("lacedula no es valida"); } System.out.print("\n"); A=1000000000;
24
VERIFICADOR DE CDULA
coe[1]=2; coe[2]=1; coe[3]=2; coe[4]=1; coe[5]=2; coe[6]=1; coe[7]=2; coe[8]=1; coe[9]=2; t=0; for(i=1;i10) { multi[i]=multi[i]-9; } System.out.print(multi[i]); }
suma=multi[1]+multi[2]+multi[3]+multi[4]+multi[5]+multi[6]+multi[7]+multi[8]+multi[9];
System.out.print("\n"); System.out.print("la suma es:"); System.out.print(suma); d=(suma/10); p=(d+1); resta=(p*10); v=(resta - suma); System.out.print("\n"); System.out.print("el ltimo dgito verificador es:"); System.out.print(v); } } }
25
VERIFICADOR DE CDULA
CONCLUSIONES
En nuestra poca la tecnologa ocupa un papel muy importante en la sociedad ya que se ha convertido en una de las herramientas ms utilizadas por la sociedad.
La programacin es inevitable en la vida diaria de las personas para cada cosa que hacemos hay un orden o una sucesin de pasos para llegar a un objetivo.
RECOMENDACIONES
Se deber usar la tecnologa como medio de informacin para la investigacin sin embargo se recomienda utilizar correctamente
Es necesario tener claro el concepto de matriz, para poder utilizarlo en cualquier mbito de la programacin, en este caso como algoritmo.
Se recomienda tener cuidado a la hora de realizar programas de este tipo, ya que estos cuentan con muchos ciclos de for, if y else, entonces al estructurar el programa se deben inicializar y finalizar correctamente estos ciclos repetitivos.
En el momento que se necesite cambiar el programa a otro lenguaje ser algo difcil, ya que la mayora de programas estn hechos en lenguaje Java, entonces para poder realizar el cambio se necesita de un amplio conocimiento sobre este lenguaje.
BIBLIOGRAFA
Objetivo aprender a programar, recuperado el 22 de julio el 2015 http://www.aprenderaprogramar.com/index.php?option=com_attachments&task=download&i
https://www.emaze.com/@ALRWOFQR/informatica
Estudios y Trayectoria Profesional de Carlos Pes
Ingeniero Tcnico en Informtica de Gestin por la Universidad Politcnica de Valencia (UPV), termin sus estudios universitarios en el ao 2000. Recuperado el 22 de julio del 2015
http://www.carlospes.com/curso_de_lenguaje_c/02_03_alternativa_multiple.php
26
VERIFICADOR DE CDULA
27
NDICERESUMENCAPTULO IEL PROBLEMAPLANTEAMIENTO DEL PROBLEMAOBJETIVOSObjetivo General:Objetivos Especficos:
JUSTIFICACIN
CAPTULO IIMARCO TERICOCICLOS REPETITIVOS
RECOMENDACIONESEstudios y Trayectoria Profesional de Carlos Pes