Objetivos Objetivos
  • Aprender a tener en cuenta aspectos de eficiencia en el desarrollo de programas 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
 

Algoritmo1. Introducción

En esta unidad vamos a seguir trabajando con el proyecto “12PrgQuit”.

  • Abre el proyecto “12PrgQuit”.
  • Abre el módulo “SumaCuadrado”.

El programa que hemos implementado funciona eficazmente, pero no es eficiente. Podemos ver el algoritmo que hemos empleado a la derecha. Recordemos que EFICACIA ≠ EFICIENCIA:

  • EFICACIA → Hacer las cosas correctas
  • EFICIENCIA → Hacer las cosas correctamente

¿Por qué? Si nos fijamos, el cuadrado de la suma se calcula siempre, incluso si los números son cero. Es lógico deducir que esto no es eficiente, puesto que cada vez que realizamos una operación aritmética el ordenador requiere de tiempo de procesador y de memoria RAM para operar con las variables. Es por ello que este programa podría ser más rápido si calculamos el cuadrado de la suma sólo cuando sea necesario.

De esta forma, nuestro programa es correcto (puesto que calcula bien la solución) pero no es eficiente, ya que desperdicia los recursos del ordenador. Al principio, es muy frecuente cometer este tipo de “fallos”, puesto que la lógica del cerebro humano es distinta a la lógica del computador.

 

Ojo

EFICACIA ≠ EFICIENCIA

 

En esta práctica vamos a implementar el mismo programa que antes, pero para que actúe de una forma eficiente.

Ejercicios
Ejercicio
 

Deberás modificar el programa que calcula la fórmula de la suma de 2 números POSITIVOS al cuadrado: (a+b)2 = a2 + 2*a*b + b2, para optimizar el cálculo del cuadrado de la suma.

Sugerencias:

  • Sigue con el proyecto “12PrgQuit”.
  • Crea un nuevo módulo. Llámalo “SumaCuadrado2” y márcalo como Clase de inicio.
  • Copia el contenido del módulo “SumaCuadrado” a “SumaCuadrado2”.
  • Cierra “SumaCuadrado” para no equivocarte cuando modifiques el código.
  • Modificarás el contenido de "SumaCuadrado2".
  • Comprueba si alguno de los números es cero y en ese caso devuelve directamente el cuadrado del otro número.
  • Si ambos números son cero deberás devolver cero.
  • Modifica el código para implementar los cambios. Deberás:
    • Añadir una instrucción condicional con varias condiciones para comprobar si algún número o los 2 son cero.
    • Efectuar los cálculos necesarios cuando corresponda
  • Ejecuta el programa y comprueba que los cálculos se realizan de forma eficiente.
  • Introduce 0 en el primer o segundo número.
  • Prueba con ambos a cero.
  • Depura el programa.
  • Crea un punto de interrupción.
  • Examina el valor de las variables y comprueba que todo va como se espera.
  • Elimina el punto de interrupción.

Ejecución

  • Guarda los cambios en tu proyecto.
  • Sube a la plataforma la captura de la pantalla donde se vea la ejecución del programa que acabas de hacer y la mayor parte del código fuente que has escrito.
  • Sube también el fichero llamado SumaCuadrado2.module que podrás encontrar dentro de la carpeta del proyecto 12PrgQuit.