Curso de Programación – CLASE 15

(Creado por el analista de sistemas y docente Leonel Iván Saafigueroa)


LAS TABLAS DE MULTIPLICAR

Aprender las tablas de multiplicar ayuda en el desenvolvimiento de los alumnos en el área de las matemáticas, en esta clase veremos la forma de crear un programa que ayude a memorizarlas.


Es importante que las tablas de multiplicar se aprendan por repetición, si bien podemos aprender la mitad de memoria y hacer ciertos cálculos mentales para poder calcular el resto, lo cierto es que la mejor forma es practicarlas individualmente y luego todas juntas al azar.

Vamos a crear un programa basado en la función aleatorio y utilizar un condicional para hacer una corrección automática de la respuesta del usuario:

En esta primera versión del programa se utilizará una constante t en donde asignaremos la tabla de multiplicar a practicar; también haremos uso de tres variables: b será utilizada para almacenar un número aleatorio del 1 al 10, la variable resultado guardará el resultado de t por b, por último, el ingreso del usuario se guardará en la variable respuesta.

Analizamos el código

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
Algoritmo tablas
// Para practicar la tabla del 2.
t <- 2
b <- aleatorio(1,10)
resultado <- t*b
Escribir 'Cuánto es ', t, ' X ', b, '?'
Leer respuesta
Si respuesta=resultado Entonces
Escribir 'Muy bien!'
SiNo
Escribir 'Incorrecto... La respuesta es: ', resultado
FinSi
FinAlgoritmo
Algoritmo tablas // Para practicar la tabla del 2. t <- 2 b <- aleatorio(1,10) resultado <- t*b Escribir 'Cuánto es ', t, ' X ', b, '?' Leer respuesta Si respuesta=resultado Entonces Escribir 'Muy bien!' SiNo Escribir 'Incorrecto... La respuesta es: ', resultado FinSi FinAlgoritmo
Algoritmo tablas
	// Para practicar la tabla del 2.
	t <- 2
	b <- aleatorio(1,10)
	resultado <- t*b
	Escribir 'Cuánto es ', t, ' X ', b, '?'
	Leer respuesta
	Si respuesta=resultado Entonces
		Escribir 'Muy bien!'
	SiNo
		Escribir 'Incorrecto... La respuesta es: ', resultado
	FinSi
FinAlgoritmo

Ejecutamos el programa


Veamos el código en C++:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
// LAS TABLAS DE MULTIPLICAR. PRACTICANDO LA DEL 2.
#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;
int t=2;
int b;
int resultado;
int respuesta;
int main()
{
srand(time(NULL)); // Iniciamos la semilla random con la hora.
b = (rand() % 10)+1; // Genera un valor entre 1 y 10.
resultado = b * t;
cout << "Cuanto es " << t << " X " << b << " ? ";
cin >> respuesta;
if(respuesta==resultado)
{
cout << "Muy bien!" << endl;
}
else
{
cout << "Incorrecto... La respuesta correcta es: " << resultado << endl;
}
return 0;
}
// LAS TABLAS DE MULTIPLICAR. PRACTICANDO LA DEL 2. #include <iostream> #include <cstdlib> #include <ctime> using namespace std; int t=2; int b; int resultado; int respuesta; int main() { srand(time(NULL)); // Iniciamos la semilla random con la hora. b = (rand() % 10)+1; // Genera un valor entre 1 y 10. resultado = b * t; cout << "Cuanto es " << t << " X " << b << " ? "; cin >> respuesta; if(respuesta==resultado) { cout << "Muy bien!" << endl; } else { cout << "Incorrecto... La respuesta correcta es: " << resultado << endl; } return 0; }
// LAS TABLAS DE MULTIPLICAR. PRACTICANDO LA DEL 2.
#include <iostream>
#include <cstdlib>
#include <ctime>

using namespace std;

int t=2;
int b;
int resultado;
int respuesta;

int main()
{
    srand(time(NULL)); // Iniciamos la semilla random con la hora.
    b = (rand() % 10)+1; // Genera un valor entre 1 y 10.
    resultado = b * t;
    cout << "Cuanto es " << t << " X " << b << " ? ";
    cin >> respuesta;
    if(respuesta==resultado)
    {
        cout << "Muy bien!" << endl;
    }
    else
    {
        cout << "Incorrecto... La respuesta correcta es: " << resultado << endl;
    }
    return 0;
}

Vamos a analizar línea por línea este código en C++:

Línea 1: // LAS TABLAS DE MULTIPLICAR. PRACTICANDO LA DEL 2.

  • Este es un comentario de una sola línea, indicando que el programa está diseñado para practicar la tabla de multiplicar del 2.

Línea 2-3: #include <iostream> #include <cstdlib>

  • Estas son las declaraciones de inclusión de dos bibliotecas estandares de C++: iostream proporciona funciones para leer y escribir datos desde la entrada y salida estándar (consola). Y cstdlib proporciona funciones para generar números aleatorios con la función rand().

Línea 4: #include <ctime>

  • Esta es la declaración de inclusión de la biblioteca estandar de C++ que proporciona funciones relacionadas con el tiempo y la fecha.

Línea 6: using namespace std;

  • Esta línea utiliza un nombre espacioso para acceder a las clases y funciones de la biblioteca estandar de C++. En otras palabras, no es necesario escribir std:: antes de cada clase o función que se utilice en el programa.

Línea 8-11: int t=2; int b; int resultado; int respuesta;

  • Estas son las declaraciones de cuatro variables enteras: t es una variable que almacena el valor 2, despues tenemos a b que es una variable que almacena un valor aleatorio entre 1 y 10 (no tiene inicialización explícita), resultado es una variable que almacena el resultado de la multiplicación de 2 por en valor aleatorio almacenado en b. La variable respuesta almacena la respuesta ingresada por el usuario.

Línea 13: int main() {

  • Esta es la función principal del programa, donde se ejecutan las instrucciones principales del programa.

Línea 15: srand(time(NULL));

  • Esta línea inicia la semilla aleatoria con la hora actual. La función time() devuelve el número de segundos.

Línea 16: b = (rand() % 10)+1;

  • Esta línea genera un valor aleatorio entre 1 y 10, que se asigna a la variable b.

Línea 17-18: resultado = b * t; cout << "Cuanto es " << t << " X " << b << " ? ";

  • Estas son las instrucciones para calcular el resultado de la multiplicación de 2 por un valor aleatorio y muestra una pregunta a la pantalla.

Línea 19: cin >> respuesta;

  • Esta línea lee la respuesta ingresada por el usuario y la asigna a la variable respuesta.

Líneas 20-27: if(respuesta==resultado) { ... } else { ... }

  • Estas son las instrucciones para verificar si la respuesta del usuario es correcta o no. Si la respuesta es igual al resultado calculado, se muestra un mensaje de “Muy bien!“. De lo contrario, se muestra un mensaje con la respuesta correcta.

Línea 28: return 0;

Esta línea indica el fin de la función principal y devuelve el valor 0 a indicar que el programa se ejecutó correctamente.


Ahora el código en PYTHON:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
import random
t = 2
b = random.randint(1,10)
resultado = b * t
respuesta = int(input(f"Cuanto es {t} X {b} ? "))
if respuesta == resultado:
print("Muy bien!")
else:
print(f"Incorrecto... La respuesta correcta es: {resultado}")
import random t = 2 b = random.randint(1,10) resultado = b * t respuesta = int(input(f"Cuanto es {t} X {b} ? ")) if respuesta == resultado: print("Muy bien!") else: print(f"Incorrecto... La respuesta correcta es: {resultado}")
import random
t = 2
b = random.randint(1,10)
resultado = b * t
respuesta = int(input(f"Cuanto es {t} X {b} ? "))
if respuesta  == resultado:
	print("Muy bien!")
else:
	print(f"Incorrecto... La respuesta correcta es: {resultado}")

Vamos a analizar línea por línea este código en PYTHON:

Línea 1: import random

  • Esta línea importa la biblioteca de números aleatorios (random) para generar un valor aleatorio.

Línea 2: t = 2

  • Esta línea asigna el valor 2 a la variable t, que representará el multiplicando en la tabla de multiplicar.

Línea 3: b = random.randint(1,10)

  • Esta línea utiliza la función randint() para generar un número aleatorio entre 1 y 10 (inclusive), y asigna ese valor a la variable b.

Línea 4: resultado = b * t

  • Esta línea calcula el resultado de multiplicar t por b y lo asigna a la variable resultado.

Línea 5: respuesta = int(input(f"Cuanto es {t} X {b} ? "))

  • Esta línea utiliza la función input() para solicitar al usuario que ingrese su respuesta, y luego convierte esa respuesta a un entero (int()) con el valor asignado a la variable respuesta.
    La expresión f-string (f"Cuanto es {t} X {b} ? ") permite insertar los valores de t y b directamente en la cadena.

Línea 6-9: if respuesta == resultado: print("Muy bien!") else: print(f"Incorrecto... La respuesta correcta es: {resultado}")

  • Estas son las instrucciones para verificar si la respuesta del usuario es correcta o no. Si la respuesta es igual al resultado calculado, se imprime el mensaje “Muy bien!”. De lo contrario, se imprime un mensaje con la respuesta correcta.

Observaciones

  • En Python, no es necesario declarar explícitamente las variables antes de utilizarlas.
  • La función randint() se utiliza para generar números aleatorios dentro de un rango específico.
  • Las f-strings (f"...") son una forma más legible y concisa de insertar valores en cadenas.

En resumen, este programa es similar al anterior en C++, pero con algunas diferencias sutiles en la sintaxis y la estructura.


Vamos a modificar el programa para poder practicar todas las tablas de multiplicar al azar:

Una vez que se aprenden todas las tablas de multiplicar por separado, lo mejor es practicarlas todas juntas, en esta última versión la variable t será igual que la variable b, se les asignará a ambas un número al azar del 1 al 10, el resultado de la multiplicación de ambos números se guarda en la variable resultado.

Analizamos el código

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
Algoritmo tablas2
t <- aleatorio(1,10)
b <- aleatorio(1,10)
resultado <- t*b
Escribir 'Cuánto es ', t, ' X ', b, '?'
Leer respuesta
Si respuesta=resultado Entonces
Escribir 'Muy bien!'
SiNo
Escribir 'Incorrecto... La respuesta es: ', resultado
FinSi
FinAlgoritmo
Algoritmo tablas2 t <- aleatorio(1,10) b <- aleatorio(1,10) resultado <- t*b Escribir 'Cuánto es ', t, ' X ', b, '?' Leer respuesta Si respuesta=resultado Entonces Escribir 'Muy bien!' SiNo Escribir 'Incorrecto... La respuesta es: ', resultado FinSi FinAlgoritmo
Algoritmo tablas2
	t <- aleatorio(1,10)
	b <- aleatorio(1,10)
	resultado <- t*b
	Escribir 'Cuánto es ', t, ' X ', b, '?'
	Leer respuesta
	Si respuesta=resultado Entonces
		Escribir 'Muy bien!'
	SiNo
		Escribir 'Incorrecto... La respuesta es: ', resultado
	FinSi
FinAlgoritmo

Ejecutamos el programa


Veamos el código en C++:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
// LAS TABLAS DE MULTIPLICAR DEL 1 AL 10.
#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;
int t;
int a;
int resultado;
int respuesta;
int main()
{
srand(time(NULL)); // Iniciamos la semilla random con la hora.
t = (rand() % 10)+1; // Genera un valor entre 1 y 10.
a = (rand() % 10)+1; // Genera un valor entre 1 y 10.
resultado = a * t;
cout << "Cuanto es " << t << " X " << a << " ? ";
cin >> respuesta;
if(respuesta==resultado)
{
cout << "Muy bien!" << endl;
}
else
{
cout << "Incorrecto... La respuesta correcta es: " << resultado << endl;
}
return 0;
}
// LAS TABLAS DE MULTIPLICAR DEL 1 AL 10. #include <iostream> #include <cstdlib> #include <ctime> using namespace std; int t; int a; int resultado; int respuesta; int main() { srand(time(NULL)); // Iniciamos la semilla random con la hora. t = (rand() % 10)+1; // Genera un valor entre 1 y 10. a = (rand() % 10)+1; // Genera un valor entre 1 y 10. resultado = a * t; cout << "Cuanto es " << t << " X " << a << " ? "; cin >> respuesta; if(respuesta==resultado) { cout << "Muy bien!" << endl; } else { cout << "Incorrecto... La respuesta correcta es: " << resultado << endl; } return 0; }
// LAS TABLAS DE MULTIPLICAR DEL 1 AL 10.
#include <iostream>
#include <cstdlib>
#include <ctime>

using namespace std;

int t;
int a;
int resultado;
int respuesta;

int main()
{
    srand(time(NULL)); // Iniciamos la semilla random con la hora.
    t = (rand() % 10)+1; // Genera un valor entre 1 y 10.
    a = (rand() % 10)+1; // Genera un valor entre 1 y 10.
    resultado = a * t;
    cout << "Cuanto es " << t << " X " << a << " ? ";
    cin >> respuesta;
    if(respuesta==resultado)
    {
        cout << "Muy bien!" << endl;
    }
    else
    {
        cout << "Incorrecto... La respuesta correcta es: " << resultado << endl;
    }
    return 0;
}

A diferencia del código anterior ahora la variable t toma un valor aleatorio del 1 al 10, al igual que la variable a.


Ahora el código en PYTHON:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
import random
t = random.randint(1,10)
b = random.randint(1,10)
resultado = b * t
respuesta = int(input(f"Cuanto es {t} X {b} ? "))
if respuesta == resultado:
print("Muy bien!")
else:
print(f"Incorrecto... La respuesta correcta es: {resultado}")
import random t = random.randint(1,10) b = random.randint(1,10) resultado = b * t respuesta = int(input(f"Cuanto es {t} X {b} ? ")) if respuesta == resultado: print("Muy bien!") else: print(f"Incorrecto... La respuesta correcta es: {resultado}")
import random
t = random.randint(1,10)
b = random.randint(1,10)
resultado = b * t
respuesta = int(input(f"Cuanto es {t} X {b} ? "))
if respuesta  == resultado:
	print("Muy bien!")
else:
	print(f"Incorrecto... La respuesta correcta es: {resultado}")

A diferencia del código anterior ahora la variable t toma un valor aleatorio del 1 al 10, al igual que la variable a.


TAREA PARA EL HOGAR

  1. Crear un programa que nos pregunte qué tabla de multiplicar queremos practicar.
  2. Crear una nueva versión del programa que nos deje intentar varias veces dar con el resultado correcto.
  3. Modificar el programa anterior para practicar las tablas por rango, por ejemplo, poder ingresar 3 y luego 5, permitiendo practicar las tablas del 3, 4 o 5 aleatoriamente.