Algoritmica en El Metodo de Restas Sucesivas

December 19, 2017 | Author: drk28 | Category: Division (Mathematics), Algorithms, Arithmetic, Algebra, Areas Of Computer Science
Share Embed Donate


Short Description

Descripción: un trabajo simple sobre el metodo de restas sucesivas en la division aplicando el paradigma de la programac...

Description

Universidad Autónoma del Estado de México Facultad de Ingeniería

Programa en lenguaje C

Cociente y Residuo de una División Gabriel González Palma

Agosto de 2010. 1

Índice Índice

2

Planteamiento del Problema

4

Hipótesis

5

Objetivos

6

Esquema

7

1. Estructuras de Control.

9

1.1. Definición. 1.2. Estructuras secuenciales. 1.3. Estructuras Selectivas. 1.4. Estructuras repetitivas. 1.4.1 la estructura de control “Mientras” 1.4.2 la estructura de control “Para” 1.4.3 la estructura de control “Repite” 2. La División.

11

2.1 Definición. 2.2 Componentes. 2.3 Reglas matemáticas comunes en la división. 2.4 Método de Restas sucesivas. 3. Obtención de un Modelo Matemático de la división.

13

3.1 Algunas demostraciones. 2

4. Obtención de un algoritmo General.

14

5. Adaptación del Algoritmo General a los Algoritmos Específicos 15 5.1 Algoritmo para la estructura de control “Mientras” 5.1.1 Pseudocódigo 5.2 Algoritmo para la estructura de control “Para” 5.2.1 Pseudocódigo 5.3 Algoritmo para la estructura de control “Repite” 5.3.1 Pseudocódigo 6. Implementación de los Algoritmos Obtenidos.

19

7. Obtención de Resultados.

27

8. Conclusiones

28

Fuentes Documentales

29

3

Planteamiento del Problema La programación estructurada ha sido planteada como un conjunto de técnicas de programación, las cuales utiliza un número ilimitado de estructuras de control esto hace que los programas escritos sean más fáciles de escribir, verificar leer y mantener. Un elemento importante dentro de la programación estructurada es este teorema: “Un programa puede ser escrito utilizando tres tipos de estructuras de control, Secuenciales, selectivas y repetitivas o iterativas” De acuerdo a lo anterior existen tres tipos de estructuras de control en el paradigma estructurado de programación la cuales se describen de la forma siguiente: Estructuras Secuenciales, Estructuras Selectivas, Estructuras Repetitivas y dentro de las repetitivas están “Mientras” , “Para” , “Repite” . Por otro lado, la división es un procedimiento algorítmico por el cual se obtiene a partir de dos números llamados divisor (d) y dividendo (D) otra constante llamada cociente (C) y otro llamado residuo (R) los cuales cumplen la siguiente regla.

Considerando los datos anteriormente mencionados entonces se puede plantear la siguiente cuestión: Dados dos números enteros M y N entonces: ¿Existe un algoritmo programable para cada uno de los tres tipos de estructuras de control iterativas (Para, mientras y Repite) del paradigma estructurado por el cual se puede saber el cociente y el residuo en la relación de los números M y N?

4

Hipótesis. Si existe un algoritmo programable para cada una de las estructuras de control iterativas para saber el residuo y el cociente de la relación de dos números enteros M y N.

5

Objetivos Objetivo General Obtener tres programas tal que dados dos números enteros M y N, calcular su cociente y su residuo utilizando las estructuras de control “para”, “mientras” y “repite”.

Objetivos Específicos Definir un modelo matemático para la realización de un algoritmo para la obtención de cociente y su residuo en la división de números enteros Obtención de un algoritmo general para la obtención de cociente y su residuo en la división de números enteros Adaptar el algoritmo general en pseudocódigo, que calcule su cociente y su residuo, empleando la estructura de control mientras. Adaptar el algoritmo general en pseudocódigo, que calcule su cociente y su residuo, empleando la estructura de control repite. Adaptar el algoritmo general pseudocódigo, que calcule su cociente y su residuo, empleando la estructura de control para. Programar en un lenguaje de programación cualquiera el algoritmo obtenido

6

Esquema 1. Estructuras de Control. 1.1. Definición. 1.2. Estructuras secuenciales. 1.3. Estructuras Selectivas. 1.4. Estructuras repetitivas. 1.4.1 la estructura de control “Mientras” 1.4.2 la estructura de control “Para” 1.4.3 la estructura de control “Repite” 2. La División. 2.1 Definición. 2.2 Componentes. 2.3 Reglas matemáticas comunes en la división. 2.4 Método de Restas sucesivas. 3. Obtención de un Modelo Matemático de la división. 3.1 Algunas demostraciones. 4. Obtención de un algoritmo General. 5. Adaptación del Algoritmo General a los Algoritmos Específicos 5.1 Algoritmo para la estructura de control “Mientras” 5.1.1 Pseudocódigo

7

5.2 Algoritmo para la estructura de control “Para” 5.2.1 Pseudocódigo 5.3 Algoritmo para la estructura de control “Repite” 5.3.1 Pseudocódigo 6. Implementación de los Algoritmos Obtenidos. 7. Obtención de Resultados. 8. Conclusiones

8

1. Estructuras de Control. 1.1. Definición Las estructuras de control según Álvarez (2004) son las que “controlan la ejecución de otras instrucciones”. Existen tres tipos elementales de estructuras de control: 1. Secuenciales 2. Selectivas (alternativas) 3. Iterativas (repetitivas). Estas son capaces de encausar el flujo de un programa lo que hace que los errores en un programa en el paradigma estructurado reduzca sus errores y sea comprensible, además de que es fácilmente mantenible. 1.2. Estructuras secuenciales. Son aquellas en las que una instrucción sigue a otra de forma continua. 1.3. Estructuras Selectivas. Se utilizan para tomar decisiones y pueden ser simples, dobles y anidadas, y múltiples. 1.4. Estructuras repetitivas. Repiten la ejecución de un cierto bloque de instrucciones. Existen tres estructuras repetitivas elementales que son: 1.4.1 La Estructura de Control “Mientras” Es aquella que se ejecuta mientras una condición sea verdadera. 1.4.2 La Estructura de Control “Para” Es la estructura que ejecuta un bloque de instrucciones un número definido de veces. 9

1.4.3 La Estructura de Control “Repite” Es aquella estructura de control que se repite mientras una condición sea falsa. Es similar a la estructura mientras solo que esta tiene la peculiaridad de que al menos ejecuta una vez el bloque de instrucciones.

10

2. La División. 2.1 Definición. La división es una operación aritmética de descomposición que consiste en averiguar cuántas veces un número (el divisor) está contenido en otro número (el dividendo). La división es una operación matemática, específicamente, de aritmética elemental, inversa de la multiplicación y puede considerarse también como una resta repetida. Según su resto, las divisiones se clasifican como exactas si su resto es cero ó inexacto cuando no lo es. Al resultado entero de la división se denomina cociente y si la división no es exacta, es decir, el divisor no está contenido un número exacto de veces en el dividendo, la operación tendrá un resto o residuo (wikipedia.org, 2010). 2.2 Componentes. 1. Divisor: Es el numero que divide o descompone al número llamado Dividendo. 2. Dividendo: Es el numero que se descompone según sea el número de veces que contenga al divisor. 3. Cociente: es el número entero de veces que contiene el dividendo al divisor 4. Residuo: es el sobrante de la resta final de la división. 2.3 Reglas matemáticas comunes en la división. 1) El dividendo es igual a la suma del cociente multiplicado por el divisor más el residuo.

2) El residuo de la relación de números iguales es 0 y el cociente es 1. 3) El cociente de la relación de un numero y cero tiende a infinito por tanto es incalculable.

11

4) Cuando el divisor d es menor que el dividendo D el residuo R es mayor o igual a cero.

5) El residuo R es siempre mayor o igual a cero.

6) Cuando el divisor d es mayor que el dividendo D entonces el cociente C es igual a cero y el residuo R es igual al dividendo.

7) El cociente multiplicado por el divisor debe ser siempre menor al Dividendo

8) Cuando

el divisor y el producto entre el cociente y el divisor son iguales

entonces el residuo siempre es 0 y el cociente es 1 (ver 2).

2.4 Método de Restas sucesivas. El método de restas sucesivas sirve para obtener el cociente y el residuo de la relación de números. Este consiste en restar sucesivamente el divisor del dividendo hasta obtener un resultado menor que el divisor, que será el resto de la división; el número de restas efectuadas será el cociente.

12

3. Obtención de un Modelo Matemático de la división. Sea una función que cambia en un tiempo t:

Sujeto a

En donde R(t) es el residuo. D = es el dividendo. d = divisor. t = es el cociente o el tiempo actual de la operación. La restricción debajo de la función delimita a la misma de tal forma que R tiende a cero mientras t tiende a D/d.

13

4. Obtención de un Algoritmo General. Ya hemos obtenido un modelo que nos permite visualizar los alcances de nuestro algoritmo. Así pues podemos definir lo siguiente. Algoritmo Rs (Restas Sucesivas por Evaluación de Función). Dados dos enteros M y N donde M fungirá como dividendo y N como divisor entonces según lo definido anteriormente, el modelo quedaría de la siguiente forma:

Y el algoritmo quedaría de la siguiente forma. 1Rs: Inicializar t y R en Cero ir a 2Rs. 2Rs: Hacer R igual a M – t*N, incrementar en 1 a t si r es mayor o igual a 0. Si

Ir 1Rs o en otro caso ir a 2Rs.

3Rs: Retornar el valor de R o el valor t según sea el caso e ir a 3Rs 4Rs: Terminar.

14

5. Adaptación del Algoritmo General a los Algoritmos Específicos 5.1 Algoritmo para la estructura de control “Mientras” El algoritmo para la estructura “Mientras” es el mismo general obtenido. Vid. Infra Cap. 4 Algoritmo M (Restas Sucesivas por Evaluación de Función). M1: Inicializar t y R en Cero ir a M2. M2: Hacer R igual a M – t*N, si r es menor o igual a 0 incrementar en 1 a t. Si

Ir a M2 o en otro caso ir a M3.

M3: Retornar el valor de R o el valor t según sea el caso e ir a 4M M4: Terminar. Este algoritmo respeta el principio de la estructura Mientras que es la repetición de un proceso mientras una condición sea verdadera. 5.1.1 Pseudocódigo Inicia Enteros t,r, M,N. Asignar 0 a t, 0 a r Escribe “Introduce Divisor y Dividendo” Leer M Leer N Mientras t*N menor o igual a M r=M – t*N 15

si r es mayor o igual a 0 entonces incrementar en 1 a t fin si fin mientras Escribe “El Cociente es ” , t, ”y el residuo es”,r Termina 5.2 Algoritmo para la estructura de control “Repite” Sabemos que existen restricciones fundamentales dentro de la operación aritmética de la división vid. Infra capitulo 2. Una de ellas menciona que si el divisor es menor al dividendo entonces el residuo será mayor o igual a cero, esto implica que al menos una vez podemos calcular el residuo. Por lo tanto el algoritmo para la estructura repite será la siguiente. Algoritmo R (Restas Sucesivas por Evaluación de Función). 1R: Inicializar t y R en Cero e ir a 2R. 2R: Hacer R igual a M – t*N, incrementar en 1 a t. Si

Ir a 3Rs o en otro caso ir a 2R.

3R: Retornar el valor de R o el valor t menos 1 según sea el caso e ir a 4R 4R: Terminar. Este algoritmo respeta el principio de la estructura Repite que es la iteración de un proceso mientras una condición sea falsa. 5.2.1 Pseudocódigo Inicia Enteros t,r, M,N. 16

Asignar 0 a t, 0 a r Escribe “Introduce Divisor y Dividendo” Leer M Leer N Repite Mientras r sea mayor o igual a 0 r=M – t*N incrementar en 1 a t fin repite Escribe “El Cociente es ” , t, ”y el residuo es”,r Termina

5.3 Algoritmo para la estructura de control “Para” El algoritmo para la estructura para es una excepción del algoritmo general obtenido, ya que con las reglas de la división (Vid. Infra Capitulo 2) existe mucha incertidumbre en cuanto al número de veces que se debe repetir la acción sin embargo existe una forma de calcular las cantidades deseadas. Entonces por la regla 6 sabemos que el divisor multiplicado por el cociente no debe ser mayor al dividendo lo que implica que el divisor no es mayor al dividendo, por tanto se sabe que el valor máximo que se tiene en el residuo es el divisor y el valor mínimo de este es mayor o igual a cero. Ahora, al residuo se le restan C veces el dividendo así pues se tiene que, para obtener el cociente se debe contar en número de veces que esta condición es verdadera por lo tanto el algoritmo quedaría de la siguiente forma. Algoritmo P (Restas Sucesivas por Conteo). 1P: Inicializar t y R en Cero e ir a 2P. 2P: Hacer R =D 17

3P: Incrementar en 1 a t. 4P: Decrementar R en N veces e ir a 3P. Si R menor o igual a 0 ir a 5P 5P: Retornar el valor de R o el valor t según sea el caso e ir a 6P 6P: Terminar. Este algoritmo cumple con las características requeridas por la estructura de control “Para”. 5.3.1 Pseudocódigo Inicia Enteros t,r, M,N. Asignar 0 a t y 0 a r Escribe “Introduce Divisor y Dividendo” Leer M Leer N Para r igual a M repite hasta que r sea menor o igual a 0 incrementar en 1 a t decrementar a r en N fin para Escribe “El Cociente es ” , t, ”y el residuo es”,r Termina

18

6. Implementación de los Algoritmos Obtenidos.

/* Universidad Autonoma Del Estado de Mexico Programa que calcula el cociente y el residuo de la relacion de dos numero enteros Gabriel Gonzalez Palma 2010 */ #include #define COCIENTE 1 #define RESIDUO 2 int M(int Divisor, int Dividendo, int opcion);/*declaraciones de funciones*/ int R(int Divisor, int Dividendo, int opcion); int P(int Divisor, int Dividendo, int opcion);

/*Programa principal*/

main(){ char opcion; /*declaraciones de variables*/ int c,r,m,n; c=0; r=0; opcion='\0';

19

printf("Programa qu calcula el Residuo y el cociente de una division dados dos numero enteros\n\n"); printf("Que algortimo desea ejecuatar? oprima \n M(Mientras) \n P(Para) \n R(repite)\n\n"); printf("Oprima S para Salir\n\n");

/*Menu Principal*/ while(opcion!='S'){ c=0; r=0; opcion=getch(); opcion=toupper(opcion); if(opcion=='M'|| opcion=='P'||opcion=='R'||opcion=='S'){ switch(opcion){

case 'M': printf("\n\nAlgoritmo M(Mientras)\n\n "); printf("Quien es el dividendo>> "); scanf("%d",&m); printf("Quien es el divisor>> "); scanf("%d",&n); /*Validaciones de entradas */ if(nm){ r=m; c=0; }else if(n==0){ printf("\n\nError Matematico: No se puede calcular una division entre cero"); c=0; r=0; } printf("\n\n Cociente %d y residuo %d de %d/%d",c,r,m,n); break;

case 'P':

printf("\n\nAlgoritmo P(Para)\n\n "); printf("Quien es el dividendo>> "); scanf("%d",&m); printf("Quien es el divisor>> "); scanf("%d",&n); /*Validaciones de entradas */ if(nm){ 21

r=m; c=0; }else if(n==0){ printf("\n\nError Matematico: No se puede calcular una division entre cero"); c=0; r=0; } printf("\n\n Cociente %d y residuo %d de %d/%d",c,r,m,n); break;

case 'R':

printf("\n\nAlgoritmo R(Repite)\n\n"); printf("Quien es el dividendo>> "); scanf("%d",&m); printf("Quien es el divisor>> "); scanf("%d",&n); /*Validaciones de entradas */ if(nm){ r=m; c=0; 22

}else if(n==0){ printf("\n\nError Matematico: No se puede calcular una division entre cero"); c=0; r=0; } printf("\n\n Cociente %d y residuo %d de %d/%d",c,r,m,n);

break;

case 'S': exit(0); break; } printf("\n\nElija otra opcion");

}else{

printf("\n Error: Opcion incorrecta elija de nuevo\n");

}

}

23

exit(0); }

/*Algortimos codifiacdos*/

int M(int Divisor, int Dividendo, int opcion){

int t, r; t=0;

while(Divisor*t=t*Divisor); switch(opcion){ case 1: return t-1; break; case 2: return r; break; default: printf("Error no se pudo hacer la operacion"); break; } return -1; } int P(int Divisor, int Dividendo, int opcion){ int t, r; t=0; for(r=Dividendo;r>0;r=r-Divisor){ t++; } switch(opcion){ 25

case 1: return t; break; case 2: return r; break; default: printf("Error no se pudo hacer la operacion"); break; } return -1; }

26

7. Obtención de Resultados. El tiempo de los tres algoritmos es proporcional entre sí. Los tres arrojan las mismas salidas dadas las mismas entradas. El tiempo de ejecución se incrementa respecto a la diferencia entre el divisor y el dividendo (a mayor diferencia mayor tiempo).

27

8. Conclusiones Se llego a la conclusión de que si existen los algoritmos para calcular el cociente y el residuo para su implementación en cada una de las estructuras de control repetitivas del paradigma estructurado por lo que se comprobó la hipótesis. Los algoritmos obtenidos son eficientes para casos en que el divisor es proporcional al dividendo, pero cuando hay casos extremos es decir un divisor muy pequeño y un dividendo muy grande los algoritmos son más lentos. Se ha formulado otra pregunta muy interesante sobre el punto anterior. ¿Existe una forma de saber un número cercano al dividendo para que los algoritmos funcionen de forma más eficiente en casos extremos?

28

Fuentes Documentales Alvarez, Lissette (2004). “Estructuras de Control”, Venezuela, Versión 1.0, Disponible en prof.usb.ve/mvillasa/compcient/estructuras.pdf Wikipedia.org (2010). “División (matemática)”, Estados unidos, Versión 1.0, Disponible en http://es.wikipedia.org/wiki/Divisi%C3%B3n_(matem%C3%A1tica).

29

View more...

Comments

Copyright ©2017 KUPDF Inc.
SUPPORT KUPDF