15
INSTITUTO POLITÉCNICO NACIONAL Práctica 2: Demostraciones y Programas Flores Garcia Ruben Irving, Gómez Garduño Jorge Billy, Jiménez Fuentes Jesús Saidh, Juarez Royal Juan Jesus y Martinez Marco Antonio Instituto Politécnico Nacional- ESCUELA SUPERIOR DE COMPUTO. Matematicas Discretas. Grupo 1CM2. México D.F 1 Objetivo General Comprender la analogía entre el razonamiento matemático para hacer una demostración y el razonamiento secuencial para desarrollar un algoritmo com- putacional. 2 Objetivos particulares 1. Reforzar los conocimientos sobre el algoritmo de la división, el máximo común divisor y el cambio de base. 2. Comprobar que la generalidad de una demostración se traduce en un programa libre de errores lógicos. 3. Traducir un algoritmo de lenguaje matemático aun lenguaje computa- cional. 1

Practica2 Algoritmo de cambio de base, de la division

Embed Size (px)

Citation preview

INSTITUTO POLITÉCNICO NACIONAL

Práctica 2:Demostraciones y ProgramasFlores Garcia Ruben Irving, Gómez Garduño Jorge Billy, JiménezFuentes Jesús Saidh, Juarez Royal Juan Jesus y Martinez MarcoAntonioInstituto Politécnico Nacional- ESCUELA SUPERIOR DE COMPUTO.Matematicas Discretas. Grupo 1CM2. México D.F

1 Objetivo GeneralComprender la analogía entre el razonamiento matemático para hacer unademostración y el razonamiento secuencial para desarrollar un algoritmo com-putacional.

2 Objetivos particulares1. Reforzar los conocimientos sobre el algoritmo de la división, el máximocomún divisor y el cambio de base.

2. Comprobar que la generalidad de una demostración se traduce en unprograma libre de errores lógicos.

3. Traducir un algoritmo de lenguaje matemático aun lenguaje computa-cional.

1

INSTITUTO POLITÉCNICO NACIONAL

3 Desarrollo del Algoritmo de la División

3.1 Análisis

Se desarrollara una aplicación que para dos enteros a y b con b 6= 0, se encon-trara q y r tales que a = bq+r con 0 ≤ r < |b|. No se debe utilizar el operador/ ni el operador %. El usuario proporcionará al programa los valores de a y b.Desúés mostrará los enteros encontrados en la forma a = bq + r. Ejemplo.-Si el usuario introduce a = 47, b = −5, entonces el programa mostrará laleyenda "47 = (−5)(−9) + 2"

3.2 Diseño

PseudocodigoDeclara variableInt s;Int g;Int a;Int b;Int f;Int r;Int suma;Int p;Declara procesos = sqrt(a ∗ a);f = sqrt(b ∗ b);g = s− f ;dop = p+ 1;suma = f ∗ p;while(suma <= g);r = s− suma;Muestra el resultadocout << p;cout << f ;cout << g;cout << suma;

2

INSTITUTO POLITÉCNICO NACIONAL

cout << ”dameelvalordea = ” << a;cout << ”dameelvalordeb = ” << b;cout << ”dameelvalordeq = ” << q;cout << ”dameelvalorder = ” << r;return0;

3.3 Desarrollo

Programa hecho en C++.

3

INSTITUTO POLITÉCNICO NACIONAL

3.4 Pruebas

Como se muestra en la imagen, te pide que introduzcas el dato a, el cual eneste caso le dimos un valor de 77.

Después le damos Enter y como se muestra en la imagen, te pide el dato b,el cual le asignamos un valor de 8.

Después le volvemos a dar Enter y como se muestra en la imagen elprograma buscara un múltiplo de b=8 el cual se acerque en números

enteros al valor de a=77, en este caso fue el 9 el cual será q y lo que faltepara que de 77 será r en este caso r=5 y así a = bq + r.

4

INSTITUTO POLITÉCNICO NACIONAL

4 Desarrollo de Ecuaciones Diofánticas

4.1 Análisis

Se desarrollara una aplicación que decida si la ecuación ax + by = c, dondea, b, c ∈ Z, tiene soluciones en los enteros o no. A estas ecuaciones se lesconoce como ecuaciones diofánticas. El usuario proporcionará al programalos valores de los coeficientes a, b y del termino independiente c. Desúés,comunicará al usuario si la ecuación tiene o no soluciones enteras ustificndosu respuesta. Ejemplo.- Si el usuario introduce a = 16, b = −20yc = −6,entonces el programa mostrará la leyenda "La ecuación 16x − 20y = −6 notiene soluciones en los enteros pues (16, -20)=4 y 4 no divide a 6"

4.2 Diseño

Diagrama de Flujo

5

INSTITUTO POLITÉCNICO NACIONAL

Diagrama hecho en Microsoft Visio

4.3 Desarrollo

Codigo#include <stdio.h>int mcd(int a,int b);

int main(){int a,b,c,d;

6

INSTITUTO POLITÉCNICO NACIONAL

printf("Resolucion de ecuaciones diofanticas de la forma \n”);printf(”ax+ by = c\n\n”);printf(”Introduzcaloscoeficientes.”);printf(”a = ”); scanf(”%ld”,&a);printf(”b = ”); scanf(”%ld”,&b);printf(”c = ”); scanf(”%ld”,&c);

d=mcd(a,b);

if (c%d == 0){printf("La ecuacion %ldx+%ldy = %ld tiene soluciones en los enteros pues(%ld,%ld) = %ld y %ld divide a %ld. \n”, a, b, c, a, b, d, d, c);}elseif(c%d! = 0){printf(”Laecuacion%ldx+%ldy=%ldnotienesolucionesenlosenterospues(%ld,%ld)=%ldy%ldnodividea%ld.”, a, b, c, a, b, d, d, c);}

return 0;}

int mcd(int a,int b){int cociente,resto=1;

if (a<b) {cociente=a;a=b;b=cociente;}while (resto!=0) {

7

INSTITUTO POLITÉCNICO NACIONAL

cociente=a/b;resto=a%b;a=b;b=resto; } return a;}

4.4 Pruebas

Fig.5.

8

INSTITUTO POLITÉCNICO NACIONAL

Fig.6

Fig.7

9

INSTITUTO POLITÉCNICO NACIONAL

5 Desarrollo de Cambio de Base

5.1 Análisis

Se desarrollara una aplicación que muestre la representación de un enteroz ≥ 0 en una base b con 2 ≤ b ≤ 16. El usuario proporcionará al programalos valores del entero z y de la base b en la que sera representado. despuésmostrará la secuencia que representa al entero z en la base b. Ejemplo.- Si elusuario introduce z = 984yb = 16, entonces el programa mostrará la leyenda"3D8 representa al entero 984 en base 16".

5.2 Diseño

Diagrama de Flujo

10

INSTITUTO POLITÉCNICO NACIONAL

Diagrama hecho en Microsoft Visio

5.3 Desarrollo

Codigo#include <stdio.h>#include<stdlib.h>int leer(void);void division(int, int);int a[20];

11

INSTITUTO POLITÉCNICO NACIONAL

int main(){int b, z, i;clrscr();printf("\n\nDaelnumeroenteroz = ”);z = leer();printf(”\nDalabasealaquesedeseaconvertirb = ”);b = leer();printf(”\n\n\t”);if(b <= 16){division(z, b);}elseprintf(”\n\nLabaseesincorrecta”);getch();}

int leer(void){int a;scanf("%d", &a);return(a);}

void division(int z, int b){int i, div, j, q;div=1;q=z;for(i=1;div>0;i++){div=z/b;a[i]=z-(div*b);z=div;}

12

INSTITUTO POLITÉCNICO NACIONAL

for(j=i-1;j>0;j–){printf("A");else{if(a[j]==11)printf("B");else{if(a[j]==12)printf("C");else{if(a[j]==13)printf("D");else{if(a[j]==14)printf("E");else{if(a[j]==15)printf("F");elseprintf("%d", a[j]);}}}}}}printf(" representa al entero %d en base %d ",q,b);}

5.4 Pruebas

Fig.8.

13

INSTITUTO POLITÉCNICO NACIONAL

Fig.9

Fig.10

6 ConclusionesRubén Irving Flores García:Hay veces que en el desarrollo de varios programas que generalmente lidi-amos en la escuela, tenemos que ver la manera mas sencilla de terminarlosacon pocas lineas de texto, es por eso que usando un poco de logica, induc-ción podemos generar algoritmos para determinar la solucion al problema.En esta práctica aprendimos a generar tres algoritmos no muy dificiles queseguramente para materias del tercer y cuarto semestre nos pueda ser util elsaber un cambio de base, especialmente trabajaremos con hexadecimal. Tra-bajamos con pseudocodigos y diagramas de flujo para ver detalladamente elcomportamiento de nuestro programa y que no fallara la logica, es por esoque creo que cuando tengamos proyectos no sera muy dificil expresar progra-mas de cualquier forma.

Jesús Saidh Jiménez Fuentes:La importancia de entender, comprender y aplicar un algoritmo es de granimportancia. Un algoritmo nos puede llevar a resolver problemas de man-era general siempre y cuando sea correctamente aplicado, así como proce-sos computacionales. Cuando un algoritmo se va a traducir a un lenguaje

14

INSTITUTO POLITÉCNICO NACIONAL

computacional es importante entenderlo a la perfección, pues al programarlopueden aparecer inconsistencias a la hora de ejecutarlo. Un algoritmo es gen-eral cuando se puede ingresar distintos valores, el algoritmo se aplicará, daráel resultado si es el caso y si los números están dentro del dominio válido delos valores del algoritmo. En este caso se aplicaron 3 algoritmos que fueronnecesarios ser entendidos para poder programarlos y comprobar en qué casosel aplicable y en cuáles no.

Jorge Billy Gómez Garduño:Tras realizar la práctica llevamos 3 ejercicios de razonamiento matemáticosa algoritmos computaciones. No solo se facilita el proceso, además es eficazy rápido que realizar estos de forma escrita. Se aprendió de forma prácticala utilización de dos materias importantes para la carrera cursada.

Juan Jesus Juarez Royal:Puedo concluir que estos 3 temas: Algoritmo de la división, EcuacionesDiofánticas y Cambio de Base nos sirven de mucha ayuda ya que sabiendosobre cada tema puedes pasarlo a programación y así hacer muy fácil re-solver ejercicios sobre estos temas, por ejemplo en el caso del algoritmo dela división podemos dividir 2 números y saber su cociente y su residuo consolo insertándolos en el programa, con las Ecuaciones Diofánticas podemosresolver cualquier ecuación de 2 variables y así saber si la ecuación será connúmeros enteros o con decimal y por ultimo en el caso de Cambio de Basepodemos convertir cualquier a numero que este en decimal a cualquier baseque queramos es muy gratificante esto ya que facilita muchas cosas.

Marco Antonio Martinez:La practica fue buena porque mostró que para programar se debe pensardiferente que a la hora de resolver un problema matemático como matemático,pues así puedes valerte de muchas herramientas matemáticas que en la pro-gramación no puedes por falta de conocimiento de los problemas que se em-plearan. Ayudo también a interpretar algoritmos en forma de lenguaje deprogramación y volvernos mas ágiles en este cambio de lenguajes.

15