Herramientas Informaticas

Categoría: encapsulación

1.6. Glosario

solución de problemas: El proceso de formular un problema, hallar la solución y expresar esa solución.

lenguaje de alto nivel: Un lenguaje como Python diseñado para ser fácil de leer y escribir para la gente.

lenguaje de bajo nivel: Un lenguaje de programación diseñado para ser fácil de ejecutar para un computador; también se lo llama lenguaje de máquina “o lenguaje ensamblador”.

portabilidad: La cualidad de un programa que le permite ser ejecutado en más de un tipo de computador.

interpretar: Ejecutar un programa escrito en un lenguaje de alto nivel traduciéndolo línea por línea

compilar: Traducir un programa escrito en un lenguaje de alto nivel a un lenguaje de bajo nivel todo al mismo tiempo, en preparación para la ejecución
posterior.

código fuente: Un programa escrito en un lenguaje de alto nivel antes de ser compilado.

código de objeto: La salida del compilador una vez que ha traducido el programa.

programa ejecutable: Otro nombre para el código de objeto que está listo para ejecutarse.

guión: Un programa archivado (que va a ser interpretado).

programa: Un conjunto de instrucciones que especifica una computación.

algoritmo: Un proceso general para resolver una clase completa de problemas.

error (bug): Un error en un programa.

depuración: El proceso de hallazgo y eliminación de los tres tipos de errores de programación.

sintaxis: La estructura de un programa.

error sintáctico: Un error en un programa que hace que el programa sea imposible de analizar sintácticamente (e imposible de interpretar).

error en tiempo de ejecución: Un error que no ocurre hasta que el programa ha comenzado a ejecutarse e impide que el programa continúe.

excepción: Otro nombre para un error en tiempo de ejecución.

error semántico: Un error en un programa que hace que ejecute algo que no era lo deseado.

semántica: El significado de un programa.

lenguaje natural: Cualquier lenguaje hablado que evolucionó de forma natural.

lenguaje formal: Cualquier lenguaje diseñado por humanos que tiene un propósito específico, como la representación de ideas matemáticas o programas de computadores; todos los lenguajes de programación son lenguajes formales.

unidad: Uno de los elementos básicos de la estructura sintáctica de un programa, análogo a una palabra en un lenguaje natural.

análisis sintáctico: La examinación de un programa y el análisis de su estructura sintáctica.

sentencia print: Una instrucción que causa que el interprete Python muestre un valor en el monitor.

6.4. Tablas de dos dimensiones

Una tabla de dos dimensiones es una tabla en la que Usted elige una fila y una columna y lee el valor de la intersección. Un buen ejemplo es una tabla de multiplicar. Supongamos que desea imprimir una tabla de multiplicar para los valores del 1 al 6.

Una buena manera de comenzar es escribir un bucle sencillo que imprima los múltiplos de 2, todos en una l³nea.

   1: i = 1

   2: while i <= 6:

   3:     print 2*i, 't',

   4:     i = i + 1

   5: print

La primera línea inicializa una variable lllamada i, que actuara como contador, o variable de bucle. Conforme se ejecuta el bucle, el valor de i se incrementa de 1 a 6. Cuando i vale 7, el bucle termina. Cada vez que se atraviesa el bucle,

imprimimos el valor 2*i seguido por tres espacios. De nuevo, la coma de la sentencia print suprime el salto de línea. Despues de completar el bucle, la segunda sentencia print crea una línea nueva.

La salida de este programa es:

2     4     6     8     10     12

Hasta ahora, bien. El siguiente paso es encapsular y generalizar.

6.5. Encapsulado y generalización

Por “encapsulado” generalmente se entiende tomar una pieza de código y envolverla en una función, permitiéndole obtener las ventajas de todo aquello para lo que valen las funciones. Hemos visto dos ejemplos de encapsulado, cuando escribimos imprimeParidad en la Sección 4.5 y esDivisible en la Sección 5.4.

Por “generalización” entendemos tomar algo específico, como imprimir los múltiplos de 2, y hacerlo mas general, como imprimir los múltiplos de cualquier entero.

He aquí una función que encapsula el bucle de la sección anterior y la generaliza para imprimir múltiplos de n.
def imprimeMultiplos(n):

   1: i = 1

   2: while i <= 6:

   3:     print n*i, 't',

   4:     i = i + 1

   5: print

Para encapsular, todo lo que hubimos de hacer fue añadir la primera línea, que declara el nombre de la función y la lista de parametros. Para generalizar, todo lo que tuvimos que hacer fue sustituir el valor 2 por el parametro n.

Si llamamos a esta funcion con el argumento 2, obtenemos la misma salida que antes. Con el argumento 3, la salida es:

   1: 3     6     9     12     15     18

y con argumento 4, la salida es

   1: 4     8     12     16     20     24

A estas alturas es probable que haya adivinado como vamos a imprimir una tabla de multiplicacion: llamaremos a imprimeMultiplos repetidamente con diferentes argumentos. De hecho, podemos a usar otro bucle:

   1: i = 1

   2: while i <= 6:

   3:     imprimeMultiplos(i)

   4:     i = i + 1

Observe hasta que punto este bucle es similar al que hay en el interior de imprimeMultiplos. Todo lo que hicimos fue sustituir la sentencia print por una llamada a una función.

La salida de este programa es una tabla de multiplicación:

   1: 1 2 3 4 5 6

   2: 2 4 6 8 10 12

   3: 3 6 9 12 15 18

   4: 4 8 12 16 20 24

   5: 5 10 15 20 25 30 

   6: 6 12 18 24 30 36

6.6. Más encapsulación

Para dar mas ejemplos de encapsulación, tomaremos el código del final de la Sección 6.5 y lo envolveremos en una función:

   1: def imprimeTablaMult():

   2:     i = 1

   3:     while i <= 6:

   4:         imprimeMultiplos(i)

   5:         i = i + 1

   6:         

El proceso que mostramos aquí es un plan de desarrollo habitual. Se desarrolla gradualmente el codigo añadiendo líneas fuera de cualquier funcion o en el interprete. Cuando conseguimos que funcionen, se extraen y se envuelven en una funcion.

Este plan de desarrollo es especialmente si, al comenzar a escribir, no sabe como dividir el programa en funciones. Este enfoque le permite diseñarlo sobre la marcha.

Creado con WordPress & Tema de Anders Norén