Вы находитесь на странице: 1из 18

Curso de programacin I.

Lenguaje de programacin Python.


Versin 2. 24 sep 2014
Lgica de programacin.
Es importante que estemos claros en los dos momentos claves que estaremos trabajando durante el ciclo de
construccin de un pequeo programa, estos son: momento de codificacin y momento de ejecucin. Durante la
codificacin, trabajamos en nuestros mdulos o en la consola del python, escribimos las instrucciones y pensamos la
mejor forma de hacerlo.
Al momento de probar o ver el resultado de nuestro cdigo, pulsamos Run( mandar correr o ejecutar el programa) y
entonces veremos como se est ejecutando nuestro programa, es el momento de ejecucin.
Por tanto tenemos dos palabras que utilizaremos intensamente durante el curso: modo de codificacin y modo de
ejecucin.
Durante la codificacin escribimos las instrucciones python en archivos o documentos cuya extensin es .py, estos
archivos o documentos contienen lo que se denomina nuestra "fuente" o el cdigo, por eso no es extrao or
expresiones como: "abre el archivo fuente", o bien "djame ver el fuente" o " revisa tu fuente", todas se refieren al
archivo o archivos que contienen las instrucciones escritas por ti en el programa. Tambin oirs revisa el cdigo o
abre el cdigo, es lo mismo que el fuente, es el grupo de instrucciones en lenguaje de programacin. Para ser
sinceros, no tiene nada de cdigo, suena como si fuera algo secreto o encriptado, pero es solo apariencia para el que
no conoce, al igual que el idioma chino nos parece un cdigo debido a lo extrao que se ve a nuestros ojos
desconocedores del idioma y me imagino que viceversa.
Tenemos que fijar en nuestras mentes que programar es debido a la intencin de resolver un problema. Por tanto,
tenemos que entender lo que deseamos resolver, debemos entender el problema, diagnosticarlo, y eso permitir la
siguiente accin: resolver o buscar una solucin. Al resolver un problema significa que hemos alcanzado la solucin a
dicho problema.
Un problema no significa necesariamente un dolor de cabeza, por general es una necesidad producto de mejorar un
proceso mediante la automatizacin, pues el proceso manual impide enfrentar un mayor volumen de acciones, como
es el caso de manejar millones de expedientes de pacientes de un hospital, se convierte en un problema que antes no
lo era por la menor cantidad de pacientes, dicho problema se soluciona optimizando el proceso mediante el uso de
bases de datos digitales y software que lo administre. No es lo mismo buscar un expediente en archivadores que
ocupan mucho espacio entre millones de expedientes en papel, que mediante una pantalla en la cual se introduce el
documento de identidad de un paciente y podemos ver sus datos de inmediato.
Otro ejemplo de un problema que podemos resolver mediante automatizacin, es un modelo matemtico, el cual
mediante calculadora, lpiz y libreta, tomara das finalizar los clculos, y si adems son necesarias varias
comprobaciones, la tarea se hace prcticamente inviable. Por tanto se necesita la construccin de un programa que
pueda ejecutar cientos de clculos rpidamente.

1
Autor: Profesor Damin E. Quijano A. damianquijano@gmail.com damianquijanoprofesor@gmail.com

Lo anterior implica diagnosticar (conocer) en profundidad el problema o la necesidad (lo que se quiere resolver), y
luego empezar a pensar cual es la solucin (analizar), y despus convertir esa idea en algo ms detallado (diseo),
con lo cual podemos iniciar a construirla la solucin.
Un ejemplo ms concreto: queremos resolver el problema de viviendas en el desierto (esto es solo una especulacin).
Iniciamos diagnosticando el problema de construir, mantener y vivir dentro de una vivienda ubicada en un desierto,
esto implica observar, preguntar, estudiar, leer. Despus de entender el problema, analizamos y proponemos una
posible solucin, que puede ser una vivienda cuyas paredes absorben humedad por condensacin (es la solucin
conceptual general, una primera aproximacin a una posible solucin sin comprobar ni probar su viabilidad), luego
empezamos a disear (hacemos el plano, por tanto es la solucin conceptual detallada convertida en smbolos o
trazos en papel o pantallas o archivos entendibles para otros especialistas o compaeros), luego empezamos a
construir la casa (construccin de la solucin) y por ltimo entregamos la casa (solucin terminada y usndose,
podemos ver y evaluar su funcionamiento).

Indentacin (tambin denominado espaciado, tabulacin, sangra)


Indentacin es un anglicismo (de la palabra inglesa indentation) de uso comn en informtica,y que significa mover
un bloque de texto hacia la derecha insertando espacios o tabuladores, para as separarlo del margen izquierdo y
mejor distinguirlo del texto adyacente; en el mbito de la imprenta, este concepto siempre se ha denominado
sangrado o sangra.
En los lenguajes de programacin de computadoras, la indentacin es un tipo de notacin secundaria utilizado para
mejorar la legibilidad del cdigo fuente por parte de los programadores, teniendo en cuenta que los compiladores o
intrpretes raramente consideran los espacios en blanco entre las sentencias de un programa. Sin embargo, en ciertos
lenguajes de programacin como Haskell, Occam y Python, la indentacin se utiliza para delimitar la estructura del
programa permitiendo establecer bloques de cdigo.
Ejemplos:
def fib(n):
print 'n =', n
if n > 1:
return n * fib(n - 1)
else:
print 'fin de la lnea'
return 1
Vemos que la funcin fib contiene todas las instrucciones debajo de ella gracias a que dichas instrucciones estn
sangradas o indentadas hacia dentro, por ejemplo con 4 espacios, por tanto todo lo que est indentado debajo de la
instruccin del fib, es el cuerpo de la funcin. Dentro de esta funcin tenemos la instruccin if y else, dentro de cada
una de ellas tenemos instrucciones indentadas , lo cual nos seala el cuerpo de instrucciones que pertenecen a if y a
else. En cambio la instruccin print (Aqu termina) no est indentada, es una instruccin sola y no est dentro de la
funcin def fib(n).

Veamos otros ejemplo sencillo:


a = 11
if ( a == 10) :
2
Autor: Profesor Damin E. Quijano A. damianquijano@gmail.com damianquijanoprofesor@gmail.com

print "La variable es igual a 10!"


print "fin"
el print La variable es igual a 10! solo se ejecutar si la variable a es igual a 10, en cambio la instruccin print
fin siempre lo har independiente del valor de la variable a.
Indentar mal es muchas veces motivo de errores de sistema o de lgica, que veremos a continuacin.
En resumen, el espaciado o indentacin nos sealan el inicio de un bloque de cdigo, dicho bloque tiene un inicio y
final. Por ejemplo:
If a==10:
Print(Hola mundo) espaciado hacia la derecha y debajo de la instruccin principal (if)
Print(Esto es una prueba) espaciado hacia la derecha y debajo de la instruccin principal (if)
For a in vector:
a=a+1 espaciado hacia la derecha y debajo de la instruccin principal (for)
print (a) espaciado hacia la derecha y debajo de la instruccin principal (for)
print (Fin del programa)
Despus del if y dos puntos, vemos las instrucciones en naranja, es un bloque de instrrucciones que solo funcionar si
el if es cierto, por tanto es un bloque de instrucciones que puede funcionar o no. Lo mismo para el bicle for, despus de
los dos puntos sigue un bloque de instrucciones en color naranja que solamente funcionar debajo de for que lo
encabeza.
En cambio las instrucciones en negrita no estn dentro de ningn bloque. El bloque por tanto se define despus de los
dos puntos y adems por el uso del margen o espaciado .
Se usan 4 (cuatro) espacios por indentacin
Pero Tabulaciones o espacios?. Nunca mezcles tabulaciones y espacios.
El mtodo de indentacin ms popular en Python es con espacios. El segundo ms popular es con tabulaciones, sin
mezclar unos con otros. Cualquier cdigo indentado con una mezcla de espacios y tabulaciones debe ser convertido a
espacios exclusivamente.
Acerca del espaciadoPython usa espaciado/sangra para delimitar bloques de cdigo. Un bloque de cdigo comienza
con una lnea que finaliza con dos puntos, y contina para todas las lneas que tengan igual o mayor espaciado que la
prxima lnea
Tipos de errores.
Hasta ahora hemos visto por encima algunos conceptos de tipos de error, los del tipo sintaxis y los del tipo semntica.
En esta ocasin vamos a ser ms precisos. Los dividiremos en tres tipos:
3
Autor: Profesor Damin E. Quijano A. damianquijano@gmail.com damianquijanoprofesor@gmail.com

Error de sintaxis: aquel que es debido a la incorrecta escritura de una instruccin y que provoca el mensaje de
error al momento de intentar ejecutar o correr el programa. El programa de inmediato para. Un ejemplo es
cuando escribimos el nombre de una variable empezando con un nmero, o usamos un parntesis para abrir
una expresin pero no para cerrar.
Error de sistema: del tipo semntico, y se refiere a tipos de error como la divisin por cero, o una mala
indentacin de un if o una def, o una variable que no ha sido definida. El programa producir el mensaje de
error solo al momento que la ejecucin del programa intente utilizar la instruccin, por tanto, no
necesariamente el programa se para inmediatamente al iniciar.
Error de lgica: este es el error ms difcil de corregir, pues el programa no lanza ninguna advertencia o
mensaje ni tampoco el programa para. Un ejemplo es al momento de calcular ( 2 + 3) * 2 , esperamos el
resultado 8, pero veremos que es 10. Para que sea correcto debimos escribir en el programa 2+(3*2) y nos
dar 10, el problema es que para la mquina no es un error. Y siguiendo el mismo ejemplo, tenemos casos
que funcionan correctamente a pesar del error lgico, como al utilizar los valores 0 y 1 para la ecuacin,
(0+1)*0 el resultado es 0 igual que para el caso 0+(1*0) que tambin resulta ser 0, por tanto a pesar de que
algunas pruebas resultan correctas, es engaoso, de ah lo peligroso de un error de lgica o entendimiento,
pues por general explotan mucho despus de terminado el programa y esto obliga a una rpida actualizacin,
es lo que llamamos un bug de programa.

Basados en lo anterior, existen tres etapas o fases bsicas durante el proceso de construccin de un programa y que
se desarrollan en forma secuencial una despus de la otra: anlisis, diseo, y programacin. Veamos cada una.
A. Fase Anlisis: el anlisis es una actividad que consta de dos partes, la primera es el diagnstico de aquello que
deseamos resolver, sin lo cual no podemos entender lo que precisamente queremos resolver. Y la otra parte es la
bsqueda y el anlisis de la solucin, o sea, estar claros cual es la solucin conceptual que tenemos que entender para
resolver el problema. Conceptual se refiere a ideas o escritos o teoras, no es el cdigo o instrucciones del programa
que ms tarde haremos. Por ejemplo , una ecuacin que pronostique la velocidad de un planeta, es una solucin
conceptual porque est escrita en simbologa matemtica, al momento que programamos esa ecuacin mediante
instrucciones de un lenguaje de programacin para que la computadora procese ese ecuacin, entonces es una
solucin programada o codificada.
B. Fase Diseo: en una programacin sencilla por general se refiere al proceso de visualizar en papel tal como veras
el funcionamiento del programa finalizado en la pantalla antes de iniciar la fase de programacin. Esta etapa produce
el diseo de la solucin, y por general se muestra en un diagrama de flujo o mediante una descripcin de paso a paso
de la secuencia de instrucciones de un programa.
El diseo cumple con seis(6) tareas bsicas para un mdulo sencillo:
1. Identificar las variables que se deben utilizar en cada mdulo de funciones y en el mdulos principal: variables
de entrada, de proceso y de salida.
2. El flujo de ejecucin de un mdulo.
3. El anlisis de Qu pasa si? Basado en prueba de escritorio, para un mdulo.
4. Corregir la identificacin de las variables en funcin de la prueba de escritorio, para un mdulo.
5. Corregir el flujograma en funcin de los resultados de la prueba de escritorio, para un mdulo.

4
Autor: Profesor Damin E. Quijano A. damianquijano@gmail.com damianquijanoprofesor@gmail.com

6. Regresar al punto 3 y repetir hasta que la prueba de escritorio nos produzca los resultados esperados para un
mdulo.
La prueba de escritorio consiste en escribir una tabla con los valores de todas las variables que se usarn en el
flujograma y los valores que irn tomando o cambiando despus de cada proceso o accin en el flujograma. Es una
especie de proceso mental paso a paso en el que mides el valor de una variable, hasta alcanzar el final y verificar el
resultado. Por general es una sencilla tabla con las siguientes columnas:
Nmero del paso, proceso o accin, valor de la variable o variables. Si tenemos definidos 10 pasos en el diagrama de
flujo, se irn anotando los valores en cada paso, tendramos al final 10 lneas ,, cada paso es el nmero de una lnea.
Ms adelante en el ejemplo podremos ver el tema del flujograma y la prueba de escritorio. Lo importante es que el
diseo prueba con una variedad de valores para las variables con el fin de comprobar si la solucin conceptual es
correcta. Por ejemplo, si deseamos probar que el rea de un cuadrado es lado x lado, probaremos con distintos
valores y soluciones, por ejemplo para el 5 el rea es 25, para el 6 el rea es 36, pero para el -10 el rea es -100 lo cual
es absurdo pues no existen reas negativas. Desde el diseo ayudamos a detectar el rango de valores que debemos
probar con el fin de advertir los errores de sistema y los errores de lgica de programacin. Los errores de sintaxis solo
se pueden provocar al momento de codificar.
En esencia , una prueba de escritorio consiste en escribir en un documento valores de variables de entrada con
diferentes valores y sus resultados que esperamos deben aparecer despus de cada ejecucin.
Tendremos dos tipos de valores: las valores evidentes que el programa probar sin problemas. Y los valores de error,
aquellos que sabemos el programa tendr que detectar y capturar antes que salte el error de sistema, de tal modo
que el programa pueda mandar un mensaje que advierta al usuario sobre el error que se produce si dicho valor es
procesado por el programa. Es el caso de dividir por cero o intentar calcular la raz cuadrada de un nmero negativo.
Si fuera una ecuacin raz cuadrada, los valores evidentes seran todos aquellos del 0 al infinito. Y los valores de error
seran los nmeros negativos o letras.
C. Fase Programacin:
Tenemos las siguientes acciones durante la programacin:
o
Codificacin: consiste en escribir las instrucciones del lenguaje de programacin, ya sea en un solo
mdulo o en varios. Tendremos mdulos que contienen solo funciones, y un mdulo principal. Si el programa
es simple, solo se escribir en un solo mdulo.
o

Ejecucin: es cuando ejecutamos o ponemos a funcionar el programa.

La programacin es un ciclo repetitivo hasta que logremos que el programa y sus partes funcionen correctamente o al
menos segn lo esperado. El diseo nos dice cuantos mdulos se necesitan y que funciones tenemos que escribir en
cada mdulo.
El ciclo es: codificar un mdulo, escribir que variables vamos a usar para probar, ejecutar el mdulo para medir su
funcionamiento, ver los errores y si los resultados esperados son los que aparecen. Luego hay que codificar de nuevo
para corregir , quitar, agregar o mejorar cdigo, despus revisar nuestra prueba con el fin de considerar el caso de
5
Autor: Profesor Damin E. Quijano A. damianquijano@gmail.com damianquijanoprofesor@gmail.com

agregar nuevos valores para probar, y nuevamente ejecutar el mdulo y repetir lo anterior hasta que funcione el
programa.
Terminado un mdulo, tendremos que hacer lo mismo para el resto de los mdulos. Cuando estamos seguros que
cada mdulo que contiene funciones trabaja correctamente, codificamos el mdulo principal que utiliza el resto de los
mdulos, tambin debemos probarlo ejecutando dicho mdulo, detectar las fallas, y volver a codificar para corregir,
agregar, quitar o mejorar se aplica el mismo ciclo explicado en lneas anteriores. Al final, todo el programa debe
trabajar correctamente.
Las pruebas de codificacin consisten en probar el funcionamiento del mdulo o de todo el programa, basado en la
prueba de escritorio de la fase de diseo, lo cual no impide que se pueda mejorar.
En esencia consiste en escribir en un documento valores de variables de entrada con diferentes valores y sus
resultados que esperamos deben aparecer despus de cada ejecucin. Aplica todo lo sealado en la prueba de
escritorio sobre tipo de valores que debemos probar (evidentes y de error).
Tenemos entonces las siguiente sub etapas. Las pruebas nos ayudan a corregir los errores de sistema y detectar los
errores de lgica de programacin.
Sub etapas de codificacin:
1. Identificar las funciones que utilizaremos.
2. Agrupar las funciones por mdulos. Esto permitir identificar los mdulos que deseamos programar y el mdulo
principal.
3. Codificacin inicial: de un mdulo, iniciamos a escribir las instrucciones segn el diseo.
4. Escribir una prueba: se basa en la prueba de escritorio de la fase de diseo o bien directamente en esta fase (si el
programa es muy simple), escribiremos los valores que se van a probar y los resultados esperados, tanto con
valores evidentes como con valores que puedan causar errores del sistema.
5. Prueba de ejecucin: ejecutamos con el Run el mdulo con los valores de la prueba .Registraremos si los
resultados son los correctos o si se dan errores de sistema o errores de sintaxis al momento de intentar correr el
programa.
6. Codificacin correctora: para corregir, eliminar, agregar o mejorar la programacin del mdulo.
7. Reescribir la prueba : si se requiere. Esto ocurre cuando nos damos cuenta que falta por agregar un nuevo valor o
accin a nuestro documento para probar nuestro programa durante la ejecucin.
8. Repetir: Volver al punto 5 y repetir el ciclo del 5 al 7 hasta estar seguros del buen funcionamiento del mdulo.
9. Repetir este ciclo para el resto de los mdulos y el principal.

Veamos un ejemplo en que usemos todas las etapas:

Fase de Anlisis.
Resulta que tengo muchos vecinos en cuyos patios tienen piscinas circulares, y en cada piscina aparece en el borde un
papel que muestra la dimensin del rea circular de la piscina en metros cuadrados, no aparecen ms detalles. Los
6
Autor: Profesor Damin E. Quijano A. damianquijano@gmail.com damianquijanoprofesor@gmail.com

vecinos quieren conocer la medida del dimetro con exactitud de la piscina, y no quieren perder el tiempo en medir
dado el tiempo y el costo de hacerlo al buscar ser lo ms exactos posibles. Para ello, nosotros , los programadores,
investigamos un poco y encontramos la ecuacin del rea de un crculo,

Y el dimetro sera: 2*r , por tanto la solucin conceptual sera:

D=2*( )
Por tanto, con conocer solo el rea, podemos mediante la ecuacin conocer el dimetro.
Con lo anterior hemos diagnosticado el problema o la necesidad , en este caso lo que quieren los vecinos. Y hemos
analizado la solucin al saber la ecuacin que debemos utilizar para conocer el dimetro.

Ahora entremos a la Fase de Diseo.


1. Primero identificamos las variables que necesitamos en nuestro programa.
Leyendo lo anterior, nos damos cuenta que el final del programa pretende visualizar en una pantalla el dimetro de
la piscina conociendo previamente el valor de su rea circular. A medida que los vecinos nos dicen el rea de su
piscina, nosotros les diremos el tamao del dimetro gracias a nuestro programa y podremos cobrar el derecho de
baarnos en ellas una vez al ao.
Fjense en nuestro modo de pensar, primero se nos vino a la mente lo que queremos ver( el dimetro) y luego nos
damos cuenta que para ello necesitamos introducir una informacin previa ( el rea). El dimetro entonces es una
variable, y es del tipo salida, porque es el final de un proceso (en este caso el proceso de calcular previamente el
radio y luego el dimetro) y es la variable que debemos visualizar en la pantalla. Luego tenemos la variable area, es
de entrada por qu? Porque es necesario conocerla primero para poder calcular el radio, que a su vez nos
permitir conocer el dimetro. Por tanto tenemos dos variables: diametro (sin tildes) que es de salida, y area (sin
tildes) que es de entrada. SIEMPRE DEBEMOS EMPEZAR POR ENTENDER E IDENTIFICAR LAS VARIABLES DE SALIDAS ,
LUEGO LAS ENTRADAS Y POR LTIMO LAS VARIABLES DE PROCESO.
En un programa ms complejo, las salidas incluyen ms cosas, no solo variables, tambin reportes o informes ,
bsquedas de informacin, y todo aquello que es o son el producto o productos esperados que debe ofrecer un
programa. Las salidas son aquellas cosas que el usuario al utilizar el programa espera ver, por tanto las salidas
representan el resultado de la solucin, y es lo primero que debemos identificar.
Las variables de entrada son las que usamos en los parmetros de una funcin o bien se les asigna sus valores desde
un input en pantalla que pregunta al usuario algn dato, Las variables de salida por general son las que se devuelven
mediante un return de una funcin o se visualizan en un print al final del programa o una funcin.
Pero sabemos que el clculo del dimetro se hace en dos pasos: el primero requiere calcular el radio mediante la
frmula anteriormente descrita, y el segundo paso calcula el dimetro mediante la multiplicacin del radio por 2.(r*2).
Por tanto hay la necesidad de definir otra variable, en este caso llamada radio, y es una variable del tipo proceso
dado que la usamos para apoyarnos en los clculos , no es un parmetro o de entrada por el usuario, ni tampoco es de
salida pues no la incluiremos en un print final de resultados ni en un return de una funcin.
7
Autor: Profesor Damin E. Quijano A. damianquijano@gmail.com damianquijanoprofesor@gmail.com

Este paso que identifica las posibles variables que usaremos en el programa, se llama DEFINICIN DE VARIABLES.
En el caso de lenguajes de programacin como python, algunas variables sencillas (como int, string, bool o float) a
medida que se crean y se les asigna un valor no requieren que se definan al principio del programa. En cambio en otro
tipo de lenguajes de programacin, es obligatorio que se definan al inicio de programa. En el curso actual, muy bsico,
no entraremos en la explicacin de diferentes tipos de paradigmas de programacin, a medida que este curso junto
con los siguientes se desarrollen, entraremos ms a fondo sobre este tema. Por el momento es suficiente entender lo
explicado hasta el momento e ir agregando ms formacin a medida que estemos maduros con los conocimientos
introductorios y fundamentales.
No obstante la definicin de cualquier variable debe escribirse antes de su uso, de lo contrario se producir un error.
En resumen tenemos tres tipos de estado de variables:

Tipo salida.
Tipo entrada.
Tipo proceso o auxiliar.

2. El flujo de la ejecucin del programa.


El flujo del programa se puede elaborar con diferentes herramientas, por ejemplo en https://www.gliffy.com , existen
muchas herramientas gratuitas en internet. Encontrar en el internet y en diferentes libros y cursos denominaciones a
smbolos similares, lo cual crea confusin. Para el caso nuestro, nos basaremos en los siguientes smbolos y su
significado.

8
Autor: Profesor Damin E. Quijano A. damianquijano@gmail.com damianquijanoprofesor@gmail.com

En unas de las tareas que debern cumplir es elaborar un video del siguiente tipo:
https://www.youtube.com/watch?v=ausRkWEiUWM
y agregar en la wiki de la plataforma explicacin sobre su uso.
En este curso no se explicarn los flujogramas, pues se deja como una accin de autoaprendizaje por parte de cada
alumno, gracias al gran cantidad de informacin en el internet, concretamente videos en castellano , manuales,
libros, foros y muchos otros recursos ms. Cada generacin de estudiantes, har su aporte a la wiki, y links a sus
videos.
Ya estamos claros lo que queremos hacer, entonces estamos listos para construir nuestro flujograma que representa
los pasos para procesar nuestra solucin:

9
Autor: Profesor Damin E. Quijano A. damianquijano@gmail.com damianquijanoprofesor@gmail.com

Quizs no se observa bien el recuadro de la Definicin de variables. Veamos su contenido:


Variable de entrada area, tipo entero positivo
Variable de proceso radio, tipo entero positivo
Variable de salida diametro, tipo entero positivo

10
Autor: Profesor Damin E. Quijano A. damianquijano@gmail.com damianquijanoprofesor@gmail.com

3. El anlisis qu pasa si?.


Hagamos la siguiente pregunta el dimetro de una piscina puede ser negativo? Evidentemente no qu pasa si por
error introducimos un negativo al programa al preguntarnos este por el valor de la rea?qu pasa si por error
escribimos letras en vez de nmeros? o bien introducimos el valor 0?
El anlisis anterior intenta anticipar errores que provocarn que el sistema mande un mensaje y cierre el programa,
pues no se pueden calcular ecuaciones matemticas con valores que son letras, y por otro lado un valor negativo
implica calcular la raz de un negativo , ambos casos provocarn un error de sistema , y en el caso 0 tendremos un
resultado absurdo (no existen dimensiones de piscinas 0).
Uno de los defectos de algunos programadores principiantes , es creer que los dems piensan igual y por general
responde pero a quin se le ocurre introducir nmero negativo o letras? es absurdo! . Pues ocurre y a menudo, en
ese caso tenemos dos opciones, o pensar que el mundo se ajusta a tu forma de pensar y por tanto el novato sufrir
mucha frustracin y amargura cuando su programa no se use , o escribir un cdigo de programa que anticipa y
atrapa esos posibles errores absurdos y todos estarn felices. Al final no es un asunto de inteligencia o ego, el
programa se hace para otros, no para el programador, y es imposible determinar el nivel de preparacin, cultura,
destreza o formacin de todas las personas de este planeta que en algn momento utilicen un programa.
Un programa despus de ser construido, por general su creador pierde la pista de los usuarios que lo utilizan.
Lo anterior nos obliga a replantear el flujograma de la solucin, e incluir la accin if o condicional que permita
capturar aquellas variables cuyo contenido provocar un error en el sistema, por ejemplo si introducimos el valor de
hola en la variable area, dado que al momento de calcular la ecuacin matemtica, no es un nmero.
El flujograma corregido ser como a continuacin lo vemos.

11
Autor: Profesor Damin E. Quijano A. damianquijano@gmail.com damianquijanoprofesor@gmail.com

En este caso hemos incluido el smbolo rombo de decisin, que verifica el contenido de la variable area, y si dicho
valor es diferente a un nmero entero positivo diferente a cero, el flujo se desva a un mensaje que aparecer en la
pantalla advirtiendo del error y volver al proceso que pide el valor del rea, en cambio si el valor de la variable area
es correcto, el flujo de programa contina normalmente hacia los pasos que realiza los clculos e imprime el
resultado, terminando el programa.

12
Autor: Profesor Damin E. Quijano A. damianquijano@gmail.com damianquijanoprofesor@gmail.com

Ahora pasemos a la prueba de escritorio.

Pruebas

Variable area

1
2
3
4
5
6

100
120
Hola
0
-30
200

Condicin si
cumple
si
si
si
no
no
si

Variable radio
5.64
6.18

Variable
diametro
11.28
12.36

7.98

15.96

Resultado
Imprime 11.28
Imprime 12.36
Imprime mensaje
Imprime mensaje
Imprime mensaje
Imprime 15.96

El mensaje se refiere a Usted debe introducir un nmero, entero y positivo mayor de 0.


Cada vez que probamos un valor, recorremos todo el flujo del programa. De ese modo podemos repasar mentalmente
la solucin mediante una secuencia de pasos representados en el flujograma.

Ahora pasemos a la Fase de Programacin.


1. Identificar las funciones que utilizaremos.
Tenemos una parte del flujograma que calcula el dimetro, por tanto dicha tarea lo har una funcin llamada
calcular_diametro.
2. Agrupar las funciones por mdulos.
En este caso tendremos un solo mdulo de funciones llamado modulo_calculador.py que contendr la nica
funcin llamada calcular_diametro, y otro mdulo que es el principal y se llamar principal3.py que
contendr el cdigo principal, y recibir la variable de entrada e imprimir el resultado, adems de usar la
funcin calcular_diametro del mdulo modulo_calculador.py
3. Codificacin inicial: de un mdulo, iniciamos a escribir las instrucciones segn el diseo.
En este caso el programa es muy sencillo, codificaremos el mdulo modulo_calculador.py y el principal3.py
en un solo acto antes de correrlos y probarlos. Veamos el cdigo.

13
Autor: Profesor Damin E. Quijano A. damianquijano@gmail.com damianquijanoprofesor@gmail.com

Mdulo modulo_calculador.py
import math
def calcular_diametro(area):
'''(entero area de un crculo)--> decimal diametro del rea de crculo
Calcula el dimetro de una rea de circulo redondeado a 2 decimales
Ejemplo: calcular_diametro(200)--> 15.96'''
radio=math.sqrt((area/math.pi))
diametro=round(radio*2,2)
return diametro
*********************************************
Mdulo principal3.py
import modulo_calculador
#Definimos variables
comparador="Esta es una variable del tipo string"
mensaje=""
resultado=0
area=0
valor_area=""
#Cdigo que procesa
valor_area=input("Introducir el rea de la piscina: ")
try:
area=float(valor_area)
if area <=0:
mensaje="No debe introducir nmeros igual o menor a 0"
else:
resultado=modulo_calculador.calcular_diametro(area)
mensaje="El rea de la piscina es: ",resultado
except:
mensaje="No debe introducir valores del tipo letras u otros simbolos no numricos"
print (mensaje)

14
Autor: Profesor Damin E. Quijano A. damianquijano@gmail.com damianquijanoprofesor@gmail.com

4. Escribir una prueba: en este caso la prueba es igual a la prueba de escritorio vista en la fase de Diseo.
5. Prueba de ejecucin:
Veamos algunos resultados en base a diferentes valores:
Introducir el rea de la piscina: 300.45
('El rea de la piscina es: ', 19.56)
>>> ================================ RESTART ================================
>>>
Introducir el rea de la piscina: 200
('El rea de la piscina es: ', 15.96)
>>> ================================ RESTART ================================
>>>
Introducir el rea de la piscina: -100
No debe introducir nmeros igual o menor a 0
>>> ================================ RESTART ================================
>>>
Introducir el rea de la piscina: 0
No debe introducir nmeros igual o menor a 0
>>> ================================ RESTART ================================
>>>
Introducir el rea de la piscina: 0.12
('El rea de la piscina es: ', 0.39)
>>> ================================ RESTART ================================
>>>
Introducir el rea de la piscina: jk
No debe introducir valores del tipo letras u otros simbolos no numricos
>>>
6. Codificacin correctora.
En este caso no aplica, pues el programa ha funcionado correctamente.
7. Reescribir la prueba : si se requiere. No aplica, ha salido exitosa.
8. Repetir: Volver al punto 5 y repetir el ciclo del 5 al 7 hasta estar seguros del buen funcionamiento del
mdulo. No aplica pues ha funcionado en el primer intento.

15
Autor: Profesor Damin E. Quijano A. damianquijano@gmail.com damianquijanoprofesor@gmail.com

9. Repetir este ciclo para el resto de los mdulos y el principal. No aplica pues ha resultado en el primer intento
para ambos.

Exponemos otro ejemplo que resalta principalmente el pensamiento de las dos etapas iniciales, pues al ser ms
abstractas que la etapa de programacin, requiere de ms ejemplos.
Un ejemplo de las dos etapas iniciales, sera el siguiente: se nos acerca un profesor que desea calcular el vuelo
parablico de un objeto de un punto de la escuela a otro, como si fuera una bala, y se basa en las ecuaciones de la
fsica cinemtica. Debe calcular muchos intentos, por eso desea buscar una manera ms rpida de hacerlo. Por
tanto, mediante la explicacin de la necesidad del profesor, sabemos lo que queremos resolver, es posible que
preguntemos al profesor otras cosas para estar ms claros. Al momento de alcanzar el pleno entendimiento de lo que
desea resolver el profesor, hemos superado la etapa del diagnstico del problema, entendemos con precisin lo que el
profesor tiene en su mente y desea lograr.
Lo segundo como programadores, que debemos conocer, es la solucin, ya sea investigando por nuestra cuenta o
preguntando o buscar otras experiencias similares o simplemente lo que nos explique el profesor, pero ojo, siempre
hay que verificar con terceros, es posible que incluso la persona que se favorece con la solucin est parcialmente
equivocada o imagina diferentes posibilidades que una solucin automatiza no puede ofrecer. En este caso
encontraremos en internet la ecuacin matemtica que permite simular el vuelo de un proyectil tipo bala en un
recorrido parablico (parbola: empieza de abajo , sube y vuelve a bajar).La ecuacin que encontremos en internet,
ser la solucin conceptual, no es la solucin convertida en instrucciones de programa para computadora.
Hasta ahora hemos entendido el problema que deseamos resolver (diagnstico) y que consiste en mejorar el proceso
de calcular decenas de veces la ecuacin con cientos de parmetros iniciales diferentes ms rpidamente que
mediante el uso de papel y lpiz, y tambin sabemos que debemos utilizar una ecuacin de la fsica cinemtica que
simula el viaje de un proyectil de bala de can. Ambas acciones (diagnosticar y encontrar una solucin terica)
pertenecen a la etapa de Anlisis.
En la etapa de Diseo empezamos a pensar qu cosas debe introducir un usuario en la pantalla (usuario es la persona
que usa el programa que los programadores construimos), qu cosas el programa le preguntar, qu resultados ver
el usuario en la pantalla. Nos damos cuenta que la ecuacin requiere unos valores iniciales para resolver el problema.
Si por ejemplo necesitamos visualizar un nombre de cualquier persona para luego imprimir dicho nombre al revs, el
programa deber preguntar mediante alguna instruccin en la pantalla al usuario el nombre que queremos imprimir
al revs. Tambin tendremos que saber el modo que el programa desplegar ese resultado. Al final del diseo,
sabremos con claridad lo que el programa debe hacer, esto significa los valores que debemos introducir, cmo debe
procesarlos el programa y al final cmo debe imprimir en pantalla los resultados. Todo esto podemos escribirlo en un
documento mediante un flujo de acciones en un pequeo flujograma que nos permite mediante cuadros y flechas
presentar una serie de pasos que por general son el reflejo de lo que haramos en forma manual a la hora de resolver
un problema escribiendo los clculos en papel.
Si empezamos a codificar sin tener claro lo que queremos lograr, es posible que durante la ejecucin del programa nos
demos cuenta que las soluciones no son las correctas o simplemente lo que intentamos programar poco tiene que ver
con lo que se desea resolver. Tenemos que visualizar en nuestra mente los pasos que debe hacer el programa a la
hora de ejecutar el cdigo, cada parte del programa debe cumplir con los pasos que hemos diseado en papel.
16
Autor: Profesor Damin E. Quijano A. damianquijano@gmail.com damianquijanoprofesor@gmail.com

La computadora debe trabajar muy similar a cuando empezamos a resolver un problema de un examen, separando
cada paso y cada etapa de la solucin en una secuencia lgica y coherente. No podemos empezar a resolver si
previamente no hemos escrito en el examen la ecuacin que usaremos para resolver el problema, luego los valores
que utilizaremos, posteriormente escribiremos cada paso durante la solucin, y al final el resultado de la solucin.
Una solucin no es el resultado final, es todo el proceso que utilizamos para lograr llegar hasta el resultado, el
resultado es el producto final de la solucin.

A continuacin las tres etapas y sub etapas de cada una, resumidas:

Anlisis:
o Diagnstico
o Solucin conceptual

Diseo: solucin detalla conceptual, flujo de pasos de la solucin y prueba de escritorio.


o Identificar las variables que se deben utilizar en cada mdulo de funciones y en el mdulos principal:
variables de entrada, de proceso y de salida.
o El flujograma de ejecucin de un mdulo.
o El anlisis de Qu pasa si? Basado en prueba de escritorio, para un mdulo.
o Corregir la identificacin de las variables en funcin de la prueba de escritorio, para un mdulo.
o Corregir el flujograma en funcin de los resultados de la prueba de escritorio, para un mdulo.
o Regresar al punto 3 y repetir hasta que la prueba de escritorio nos produzca los resultados esperados para
un mdulo.

Programacin:
o Identificar las funciones que utilizaremos.
o Agrupar las funciones por mdulos. Esto permitir identificar los mdulos que deseamos programar y el
mdulo principal.
o Codificacin inicial: de un mdulo, iniciamos a escribir las instrucciones segn el diseo.
o Escribir una prueba: se basa en la prueba de escritorio de la fase de diseo o bien directamente en esta
fase (si el programa es muy simple), escribiremos los valores que se van a probar y los resultados
esperados, tanto con valores evidentes como con valores que puedan causar errores del sistema.
o Prueba de ejecucin: ejecutamos con el Run el mdulo con los valores de la prueba .Registraremos si los
resultados son los correctos o si se dan errores de sistema o errores de sintaxis al momento de intentar
correr el programa.
6. Codificacin correctora: para corregir, eliminar, agregar o mejorar la programacin del mdulo.
7. Reescribir la prueba : si se requiere. Esto ocurre cuando nos damos cuenta que falta por agregar un
nuevo valor o accin a nuestro documento para probar nuestro programa durante la ejecucin.
8. Repetir: Volver al punto 5 y repetir el ciclo del 5 al 7 hasta estar seguros del buen funcionamiento del
mdulo.
9. Repetir este ciclo para el resto de los mdulos y el principal.
17

Autor: Profesor Damin E. Quijano A. damianquijano@gmail.com damianquijanoprofesor@gmail.com

Por supuesto, si lo que deseamos resolver es muy simple, seguramente iniciaremos directamente a programar o
disear, esto es debido a que entendemos perfectamente lo que queremos hacer. Cuanto ms simple es el problema a
resolver o programar, menos se necesitan de las etapas de Anlisis y Diseo. Estas etapas son formas de hacer las
cosas al momento de enfrentar aquello que no entendemos o son muy complejas, es una mtodo paso a paso que nos
sirve de gua a la hora de construir un programa, similar a la construccin de una casa, pues para construir un
rascacielos se necesitan estudios y anlisis previos de la constitucin del suelo que permitan conocer si resiste el
tamao de un edificio grande, el costo, o si aguanta vientos muy rpidos y tormentas, es imposible empezar a
construir sin conocer previamente el terreno y las condiciones ambientales del sitio. Requiere de anlisis y estudios
previos y disear muchos planos antes de construir para calcular costos y anticipar problemas. Pero si deseas construir
una pequea casa para tu mascota en el patio de tu casa, es probable que tengas una idea y empieces a construir
inmediatamente sin pasar por etapas previas de anlisis y diseo.

18
Autor: Profesor Damin E. Quijano A. damianquijano@gmail.com damianquijanoprofesor@gmail.com

Вам также может понравиться