Informática
Programación.

Tu Instituto Online
   


 
Nivel Básico Gambas: Algoritmos. Combinaciones
Duración aproximada: 1 1/2 sesión
   
Objetivos Objetivos
  • Obtener soltura a la hora de trabajar con algoritmos que hay que transformar en código fuente en Gambas.
   
Fuentes de información Fuentes de información
  • http://www.gambas-es.org
  • Libro “GAMBAS, programación visual con Software Libre”, de la editorial EDIT LIN EDITORIAL S.L., cuyos autores son Daniel Campos Fernández y José Luis Redrejo.
  • Libro “Fundamentos de programación”, de la editorial Univ. Politécnica de Valencia, cuyos autores son Mª Alpuente Fresnedo y otros.
   
Contenidos
Contenidos
 

1. Concepto de algoritmo

El término de algoritmo proviene del nombre de un matemático persa, Abu Jafar Mohamed Ibn Musa al Khowarizmi (S. IX) y, de modo informal, podemos definirlo como un método general para la resolución de problemas.

No obstante, en informática esta palabra tiene un significado más especial y se refiere a “un conjunto bien definido de reglas que llevan a la resolución de un problema en un número finito de pasos”.

En esta última definición hacemos referencia a una característica básica y esencial de un algoritmo y es que siempre termina.

Debido a que el ordenador es una máquina “no inteligente”, no basta con proponerle un problema para que nos lo resuelva, sino que hay que indicarle la forma en que hay que resolverlo. Esta resolución deberá especificarse en una serie de pasos sucesivos, puesto que la máquina no puede realizar más de un paso a la vez, ya que se trata de una máquina secuencial.

2. Estadística. Combinaciones.

DiagramaVamos a desarrollar un programa para obtener el número de combinaciones posibles de m objetos seleccionados a partir de un colectivo de n.

El número de combinaciones viene dado por la expresión:

Expresión para el cálculo del número de combinaciones

La función ! denota el Factorial de un número. La función factorial para enteros positivos se calcula de la siguiente forma:

  • 0! = 1
  • n > 0, n! = n*(n-1)!

El algoritmo que resuelve el problema podría estructurarse de la forma siguiente:

  1. Lectura de los datos: n y m
  2. Cálculo del factorial de n → n!
  3. Cálculo del factorial de m → m!
  4. Cálculo del factorial de (n-m) → (n-m)!
  5. Cálculo del número de combinaciones
  6. Escritura del resultado

Podemos ver el diagrama a la derecha.

 

  
Ejercicios
Ejercicio
 

Vamos a implementar el cálculo de la expresión anterior.

  • Abrimos Gambas.
  • Hacemos clic en la opción Nuevo proyecto.
  • Marcamos la opción Aplicación de consola y hacemos clic en el botón Siguiente.

Aplicación de consola

  • Seleccionamos en nuestro directorio personal el directorio BASIC/3MEDIO creado anteriormente Documentos/BASIC/3MEDIO.

Ruta

  • Hacemos clic en el botón Siguiente.
  • Le damos un nombre y título al proyecto. En el primer campo escribimos “03Combinaciones”. En el segundo campo escribimos “Proyecto cálculo de combinaciones”. El asistente creará un nuevo directorio con el nombre del proyecto (campo 1) y ahí irá introduciendo todos los archivos necesarios para el desarrollo de la aplicación.
  • Hacemos clic en OK.

Vamos a crear un núevo módulo para nuestro programa.

  • Hacemos clic con el botón derecho del ratón sobre el árbol de carpetas. Aparecerá un menú contextual. Elegimos la opción Nuevo→Módulo.
  • Surgirá una ventana en la que escribimos el nombre del Módulo: “Combinar”. Pulsamos el botón OK.
  • Hacemos clic con el botón derecho del ratón sobre el nuevo módulo y marcamos la opción Clase de inicio.
  • Escribimos el siguiente código:

Código fuente
Código fuente

 

  • Para asegurarte que ves la ejecución correctamente recordemos que debe estar visible la consola. Es una ventana en la parte inferior de nuestro entorno de trabajo, justo debajo del área de código. Si no está visible apreta la tecla F11 para mostrar la consola.
  • Ejecuta el programa con los valores 10 y 4. El resultado debe ser el siguiente:

Resultado

  • Ahora prueba con otros valores, pero que no sean muy elevados, pues el tipo de dato Integer tiene ciertas limitaciones y los factoriales se disparan para números relativamente pequeños. Comprueba que el resultado es correcto.

Hasta el momento todo funciona bien, pero no hemos tenido en cuenta el control de excepciones.

  • ¿Qué ocurre si m = 0? Se intenta dividir por 0 y el programa da error.
  • De igual modo, ¿qué ocurre si n = 0 y m > 0? Se intenta calcular el factorial de un número negativo, que no existe.

 

  • Teniendo en cuenta las excepciones anteriores, modifica el código para comprobar que m y n sean mayores que cero. Si el usuario introduce algún valor menor o igual que cero, el programa debe parar (instrucción QUIT) y mostrar un mensaje de alerta al usuario.
  • Guarda los cambios.

 

  • Sube el fichero llamado Combinar.module que podrás encontrar dentro de la carpeta del proyecto Documentos/BASIC/3MEDIO/03Combinaciones.

 

  
  
Ejercicios
Ejercicio
 

A continuación vamos a pasar a entorno gráfico nuestro programa de cálculo de combinaciones.

  • Hacemos clic en la opción Nuevo proyecto.
  • Marcamos la opción Aplicación gráfica QT.
  • Seleccionamos el directorio donde se guardarán todos los ficheros necesarios para el proyecto. El sitio ideal sería dentro de nuestra carpeta Documentos/BASIC/3MEDIO. Tras esto hacemos clic en el botón Siguiente.
  • Le damos el nombre "03CombinarGraf" y el título "Proyecto gráfico cálculo de combinaciones" al proyecto. Después hacemos clic en OK.
  • En última instancia, se muestra la pantalla que confirma la creación del proyecto. Una vez confirmados estos datos, ya no podremos efectuar cambios en nuestro proyecto, como es el nombre, directorio, etc. Hacemos clic en el botón OK.
  • Hacemos clic con el botón derecho del ratón sobre el árbol de carpetas y creamos un nuevo formulario. Dejamos el nombre sin cambiar.
  • Hacemos clic con el botón derecho del ratón sobre el nuevo formulario y marcamos la opción Clase de inicio.

Debes pasar el programa anterior a entorno gráfico. Crea los controles correspondientes y aprovechar el código anterior.

Sugerencias:

  • Dibuja 1 caja de texto de nombre “tbNumeroN”.
  • Dibuja 1 etiqueta para la caja de texto “Número N”.
  • Dibuja 1 caja de texto de nombre “tbNumeroM”.
  • Dibuja 1 etiqueta para la caja de texto “Número M”.
  • Dibuja un botón de tipo Button con texto “Combinaciones”.
  • Dibuja una etiqueta de tipo Label para mostrar el resultado de nombre “lblResultado”.
  • Bloquea los cuadros de texto para que el usuario sólo pueda introducir números.
  • Elimina la instrucción PRINT para los mensajes al usuario. En su lugar, muestra un mensaje de información (Message).
  • Dibuja un botón de tipo Button con texto “Salir”.
  • Dibuja una imagen. Pon la imagen que quieras (puedes descargártela de Internet).
  • Personaliza los colores y letras. Elige los que más te gustes.
  • Convierte el contenido de las cajas de texto a entero y calcula el factorial según la fórmula.
  • Crea una etiqueta con tu nombre y sitúala en la parte superior del formulario.
  • Sube a la plataforma una captura de la pantalla donde se vea la ejecución del programa que acabas de hacer con los números 10 y 3 (te debe dar 120 combinaciones).
  • Sube a la plataforma el archivo Form1.class en el que debe aparecer todo el código que has escrito para los distintos botones. Este archivo lo encontrarás en Documentos/BASIC/3MEDIO/03CombinarGraf/

 

  
Fuentes de información Sugerencias

Sería interesante que te guardaras en una memoria USB todo el contenido de la carpeta BASIC de tus documentos, para evitar que cualquier problema con el ordenador te haga perder tus ejercicios.

 
   
Creditos Créditos
Licencia de Creative Commons

Este documento es de dominio público bajo licencia de Creative Commons Reconocimiento-NoComercial-CompartirIgual 3.0 España.
TuInstitutoOnline.com M.Donoso, G.García, P.Gargallo, A.Martínez. v. 2.0.2.1.0

No se permite un uso comercial de la obra original ni de las posibles obras derivadas, la distribución de las cuales se debe hacer con una licencia igual a la que regula la obra original.

Los reconocimientos se realizan en el apartado Fuentes de información.

Los iconos empleados están protegidos por la licencia LGPL y se han obtenido de:
https://commons.wikimedia.org/wiki/Crystal_Clear
https://www.openclipart.org


Licencia de Creative Commons

Todas las capturas de pantalla tienen copyright y pertenecen a TuInsitutoOnline.com.

TuInstitutoOnline.com permite su uso siempre y cuando se muestren desde el dominio www.tuinstituoonline.com y NO PERMITE enlazar a ellas desde otros lugares.

Además, la estructura diseñada para mostrar el contenido de las unidades es propiedad de TuInstitutoOnline.com.

TuInstitutoOnline.com M.Donoso, G.García, P.Gargallo, A.Martínez. Versión 2021.