Académique Documents
Professionnel Documents
Culture Documents
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).
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
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.
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,
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.
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.
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
10
Autor: Profesor Damin E. Quijano A. damianquijano@gmail.com damianquijanoprofesor@gmail.com
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
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
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.
Anlisis:
o Diagnstico
o Solucin conceptual
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
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