Benemérita

Universidad Autónoma de Puebla

Facultad de Ciencias de la Computación

 

 

 

ANTOLOGIA

 

 

...Algunas consideraciones para aprender a programar!

 

M.C. Pedro Bello López

 

 

RESUMEN

 

 

El objetivo de este trabajo es mostrar de forma amena los aspectos cualitativos que intervienen en el proceso de aprendizaje de la lógica de programación como el primer paso para aprender a programar. En este trabajo no se presenta ningún leguaje de programación solo se intenta lograr que el alumno reflexione sobre lo importante que es la programación y las consideraciones necesarias para aprender a diseñar y codificar programas de computadoras.

 

 

 

Verano 2010

 

 

1. Introducción

 

La programación es una materia esencial en cualquier licenciatura de computación. Su impacto es muy importante en la mayoría de las asignaturas de la carrera y en el campo profesional del egresado, por ejemplo el impacto de la programación en los diversos cursos donde la aplicará, podrían ser: en Estructura y Representación de Datos, Algoritmos Computacionales, Bases de Datos, Sistemas de Información, Compiladores, Sistemas Operativos, etc.

 

La razón principal para que un alumno aprenda la programación es para resolver problemas. Pero también es muy importante que conozca el tipo de problemas que deberá resolver en su campo profesional, por ejemplo: en la banca, las instituciones gubernamentales, hospitales, el comercio, la industria, servicios turísticos, etc.

 

Siendo la programación una actividad que implica un proceso mental, generalmente complejo y creativo, exige del programador: inteligencia, conocimiento, habilidades y disciplina.

 

La inteligencia es un recurso natural que en la mujer y el hombre normales es suficiente para adquirir los otros tres atributos necesarios para programar y poder resolver problemas utilizando una computadora

 

La adquisición del conocimiento se logra estudiando los conceptos, fundamentos y las técnicas básicas de programación.

 

En cuanto a la adquisición de las habilidades, la voluntad del estudiante es fundamental, ya que sólo con la práctica y la experimentación constante personal podrá lograrse.

 

La disciplina, como observancia de las normas y el buen proceder, la podrá adquirir el estudiante con la guía valiosa del maestro y de buenos programadores, comúnmente los autores de libros de texto especializados.

 

“Algunos libros citan que la base para la solución de problemas a través de la computadora (Programar) es tener muy buena lógica”

 

2. ¿Así que quieres programar?

Pues...!Enhorabuena¡ te has dado cuenta que las cosas no son fáciles y el Copy & Paste  no es tan factible en muchos casos y que en la mayoría de los casos las cosas son mejores cuando entendemos que estamos haciendo, supongo que te estás haciendo la interrogante, ¿y que se necesita para programar?

 

Programar depende mucho de tu capacidad, lo primero debes entender es los fundamentos de la programación, así cuando te encuentres con una situación donde debas aplicar cierto código, tu sentido común (La Lógica) te dirá que debes hacer. Una vez que entiendas los fundamentos de la programación, estas listo para cualquier lenguaje, aunque te recomendaría que empezaras aprendiendo un poco de C, después de eso, veras que cualquier lenguaje se te hará sencillo, pues la mayoría de los lenguajes (no todos) están fuertemente basados en este último.

 

De entrada te digo que debes ser autodidacta, pues hay muchas cosas que deberás entender por ti sólo, y que aunque tomes miles de cursos (exagerando) no las alcanzaras a comprender del todo sino las estudias y analizas con detenimiento. Un punto clave para el estudio es el comprender lo que estás haciendo, más que memorizar.


Si te decides por ser autodidacta, hay miles de cursos en la web sobre fundamentos de programación y Lenguaje C, Google es tu amigo, y también te recomiendo comprar libros de Introducción al lenguaje de programación ya que normalmente son los mas básicos para iniciar.


Así que si después de leer esto sigues teniendo ganas de programar, ya sabes, prueba, experimenta, intenta y cuando sientas que ya no puedes más...Google es tu amigo. Y una cosa mas cuando entiendas un concepto y ya lo manejes bien por favor enséñale (Explicando) a alguno de tus compañeros, eso te servirá para reforzar aun más tus conocimientos y obtendrás mayor habilidad.

 

 

Si eres programador y no logras hacer algo que sirva, llámalo versión 1.0

 

 

 

 

 

 

 

3. La Lógica de programación

 

Cuando era niño, alguna vez me abroché mal la camisa, en un instante en que toda mi familia estaba por salir. Una tía me vio con la camisa mal abrochada y me abordó fuertemente diciéndome que porqué me había abrochado mal la camisa, que si era que yo no tenía lógica.... Luego de acomodarme adecuadamente la camisa, es decir, organizándome de manera que cada botón coincidiera con su CORRESPONDIENTE ojal empecé a pensar que realmente era posible que no tuviera lógica porque me parecía increíble que yo no hubiera detectado que para que la camisa quedara colocada correctamente solo había un camino (y que además era muy sencillo) y era hacer coincidir cada par botón-ojal. Además de esta conclusión (tan obvia) también llegué a otra (no tan obvia) y era el hecho de que es más difícil ponerse mal una camisa que ponérsela bien.

 

En la medida en que los años fueron pasando, me di cuenta que son muchas pero muchas las cosas obvias que por un extraño error no hacemos. Y en una Ingeniería en Ciencias de la Computación la lógica es fundamental. Luego de buscar muchas definiciones de Lógica, esta me parece interesante:

 

La LOGICA es la forma mas OBVIA y mas FACIL de hacer algo”

 

Ésta definición refleja un sentido amplio y sencillo de entender que la lógica esta en nosotros y lo que debemos hacer es explotarla para aplicarla.

 

Un usuario de IBM tenía problemas instalando el software y llamó pidiendo ayuda. Puse el primer disco en la unidad y todo parecía correcto. Pero cuando me pidió que metiera el segundo disco tuve algunos problemas. Pero ya el tercero si no me cupo esa ranura es muy pequeña.

 

4. Metodología para Solucionar un Problema

Siempre que vamos a resolver un problema nos enfrentamos con la dificultad de tener que encontrar precisamente eso: Una Solución. A continuación enumeraremos los pasos a seguir para resolver un problema mediante la computadora.

 

PASO 1: Tener claro el Objetivo: Lo primero que debemos tener muy pero muy claro es Cual es el problema. Es evidente que no podemos avanzar hacia la casa de un amigo nuestro que no sabemos en donde vive porque las posibilidades de que lleguemos son casi nulas. De manera que lo primero a conocer muy bien es el problema como tal que en nuestros términos lo vamos a ver no como un problema sino como un:

OBJETIVO

Sí, el OBJETIVO es lo más importante en el desarrollo de un problema, es por ahí por donde debes comenzar. Tener claro el objetivo nos va a permitir obtener dos beneficios que a la postre serán más grandes de lo que podemos pensar:

 

i. Tener claro el objetivo nos permite saber hacia donde vamos

ii. Tener claro el objetivo nos permite saber hasta donde debemos llegar

 

Estas dos definiciones parecieran ser lo mismo pero en el fondo no lo son. Debes tener muy claro hacia donde vas pero puedes no saber hasta donde debes llegar o, dicho en otras palabras, no saber en donde debe parar ó podrías saber en donde debes parar pero no tener ni idea por cual ruta llegar.

 

El objetivo se ha de convertir en la razón de ser en la solución de un problema. En nuestro caso, y mas que nunca, podemos decir que para llegar a la solución de un problema la clave de ello está en Tener muy claro cuál es el objetivo y No perderlo nunca de Vista.

 

Le comentó al técnico de atención on line que su computadora decía: “no puedo encontrar la impresora”. Incluso he girado el monitor hacia la impresora pero la computadora sigue sin poder 'ver' la impresora.

 

 

PASO 2: Diseñar el ALGORITMO, Tener claro el objetivo nos permite algo adicional. Aquí voy a utilizar una frase que, aunque un poco romántica, nos va a ilustrar a que me refiero: El objetivo es el faro que solo cuando está bien claro nos ilumina el camino para lograrlo. Cuando el objetivo está suficientemente claro podemos vislumbrar un camino lógico para llegar hasta él. Ese camino lógico va a tener un nombre dado  y es:

El Algoritmo

Qué es un Algoritmo...? Es un conjunto de pasos secuenciales y ordenados que permiten lograr un objetivo. Que sean pasos secuenciales significa que deben ser ejecutados uno después de otro y que sean pasos  ordenados quiere decir que deben llevar un orden quasi-obligatorio (u obligatorio en la mayoría de los casos). Como puede notar el algoritmo permite lograr un objetivo. O sea que éste es el camino que necesitamos para lograrlo. De nuevo, cuándo podemos vislumbrar claramente el algoritmo..? Cuando el objetivo está realmente claro. Siempre que usted, en el desarrollo de la solución de un problema, vea que en algún momento no sabe por donde ir, no sabe qué hacer o se siente perdido, no busque mas simplemente quiere decir que realmente usted no tenía tan claro el objetivo como había pensado.

 

Como se estructura un objetivo..? Muy sencillo, esto le va a parecer muy obvio pero aún así se lo voy a decir. Un algoritmo se estructura comenzando en un Inicio y terminando en un Fin.

Veamos entonces ejemplo: Desarrollar un algoritmo que nos permita adquirir el libro El Coronel no tiene quien le escriba de Gabriel García Márquez.

 

Objetivo: Adquirir el libro El Coronel no tiene quien le escriba de Gabriel García Márquez.

Mucha atención al objetivo. Solamente es adquirirlo en ningún momento el objetivo es leerlo o resumirlo ni nada, solamente adquirirlo.

 

Algoritmo (Expresión narrada): Salimos del lugar en donde estemos y nos dirigimos hacia una librería. En caso de que ya estemos en una en una pues sencillamente solicitamos si tienen el libro, si lo tienen lo adquirimos y si no lo tienen vamos a otra librería en donde repetimos el proceso.

 

 

PASO 3: LA PRUEBA, todo algoritmo debe ser probado antes de ser  ejecutado con el propósito de que tengamos una alta certeza de lograr el objetivo. Precisamente éste es el tercer concepto que tendremos claro:

La prueba

Que para efectos técnicos se llamará la Prueba de Escritorio. Qué es pues la Prueba de Escritorio..? Es la simulación de la puesta en marcha de un algoritmo.

 

Con la Prueba de Escritorio podemos determinar si el algoritmo que hemos diseñado logra el objetivo propuesto. De no ser así podremos concluir que se debe corregir el algoritmo hasta lograr que satisfaga el objetivo propuesto.

 

Una vez desarrollado el algoritmo y habiéndosele realizado una correcta “Prueba de Escritorio” se procede a codificar el algoritmo en un Lenguaje de Programación. Pero ¿que es codificar?

 

 

 

 

 

5. Programación y codificación.

Tal como cita Guillermo Levine [[1]], sobre programar y codificar “la diferencia entre ambos conceptos es fundamental, y no está entendida del todo en el medio profesional de la computación ni por completo, por desgracia, en el medio académico”. Más de una vez hemos escuchado decir “ya aprendí a programar en C”, lo correcto sería “ya aprendí a codificar en Lenguaje C”.

 

Hay un consenso creciente entre los profesores de programación en que los estudiantes deben aprender cómo se resuelven los problemas lógicamente (desarrollo de algoritmos) antes de preocuparse por la puntuación y otros detalles de un lenguaje de programación. En el ciclo de la programación, la codificación solamente representa una de las etapas posteriores al diseño de la lógica y permite escribir en los términos de un lenguaje de programación la serie de pasos que realizará la computadora al seguir paso a paso el programa.

 

Consideramos que una técnica apropiada para iniciar a los estudiantes en la programación es explicarles el siguiente diagrama:

 

 

 

 

 

 

 

 

 


El estudiante debe ser capaz de describir la salida como la solución a un problema a partir de los datos de entrada y su transformación a través del proceso.

 

La programación estructurada es una técnica que facilita la construcción del proceso a partir de las estructuras de control primitivas de secuenciación, selección y repetición condicional. Así mismo la definición de un seudo código en español, facilita el manejo de las estructuras de control para la construcción de la lógica necesaria en el proceso.

 

Mi nombre es Jesús y tengo un disco duro Western Digital, tengo un mensaje en la pantalla y me gustaría saber quien es el General Failure y porqué  está leyendo mi disco duro.

 

 

 

 

6. Aprende a programar en diez años

 

Algunos investigadores (Hayes, Bloom) han mostrado que toma aproximadamente diez años desarrollar habilidades en cualquiera de una amplia variedad de áreas, incluyendo la computación y otras como el juego de ajedrez, la composición musical, la pintura, el piano, la natación, el tenis, y la investigación en neuropsicología y topología. Parece no haber atajos: incluso Mozart, prodigio musical a los 4 años, se tomó 13 más antes de empezar a producir música de calidad mundial. En otro género, parece que los Beatles llegan a escena apareciendo en el espectáculo de Ed Sullivan en 1964. Pero ellos habían estado tocando desde 1957, y aunque tenían una masa de seguidores desde antes, su primer gran éxito, Sgt. Peppers, apareció en 1967. Samuel Johnson pensaba que se requieren más de diez años: "La excelencia en cualquier área puede lograrse sólo mediante el trabajo de toda una vida; no es algo que pueda adquirirse a un menor precio." Y Chaucer se quejaba "the lyf so short, the craft so long to lerne."

 

Aquí está una receta para el éxito en programación:

El programador y el infierno

 

Un programador de Microsoft que muere, y lógicamente va al infierno, y allí el diablo le pregunta:

- Como somos colegas te voy a dar a elegir entre el infierno normal o el de Windows Vista. A lo que el programador contesta:

- Pues no se cual elegir, ¿por qué no me los enseñas?

El diablo con un movimiento del tridente le enseña un infierno lleno de calderas con fuego eterno y mucha gente lamentándose y le dice:

- Este es el infierno normal.

Volviendo a mover el tridente aparece una playa preciosa llenas de mujeres fabulosas y con gente divirtiéndose y le dice:

- Este es el infierno de Windows Vista, ¿cuál eliges?

El programador sin pensarlo le dice al diablo:

- El de Windows Vista, por supuesto.

Y el diablo, moviendo el tridente le manda a una caldera con el fuego mas candente del infierno y con un diablo torturando al programador. El programador le dice al diablo:

- Oye, ¡esto no es lo que me has enseñado!

Y el diablo le contesta:

- ¿Qué esperabas si era la Versión DEMO?

 

 

 

 

 

 

 

 

7. Conclusión

 

“Privilegiar la enseñanza de la programación sobre los lenguajes de programación.”

 

Como ya se ha establecido en los párrafos anteriores, lo importante es que el estudiante aprenda a construir la lógica del programa y posterior a esto codifique usando un lenguaje de programación, además a la par se debe verificar el desarrollo de la habilidad necesaria para el diseño y construcción de los algoritmos con un estilo disciplinado que les dé orden y claridad.

 

PERO RECUERDA SI VAS A ESTUDIAR COMPUTACION HAY NIVELES…!

 

Todos los jefes son así

 

En una hermosa mañana, un jefe de proyecto, un analista de sistemas y un programador estaban paseando por una playa para distraerse del proyecto que los había tenido de cabeza. De repente, encontraron una lámpara casi oculta en la arena. Obviamente, uno de ellos la frota sin mucha esperanza y grande fue su sorpresa cuando apareció un genio legítimo.

Al verlos, el genio dijo:

- Bueno, imagino que conocen el procedimiento habitual para estos casos. Ustedes saben, eso de los tres deseos. Normalmente se los concedo a una única persona, pero en este caso como ustedes son tres, le concederé un deseo a cada uno.

El programador quiso ser primero y dijo:

- Me gustaría pasar el resto de mi vida viviendo en una gran casa, sin problemas de dinero y rodeado de hermosas mujeres que me idolatren.

El genio le concedió el deseo y lo envío a una lujosa casa, con mucho dinero y muchas mujeres.

Después siguió el analista de sistemas:

- Me gustaría pasar el resto de mi vida en un gran y lujoso crucero en el Mediterráneo, sin problemas de dinero y rodeado de hermosas mujeres que me idolatren.

El genio le concedió el deseo y lo envío al crucero en el Mediterráneo, con mucho dinero y muchas mujeres.

Al final, le toco el turno al jefe de proyecto.

- Y cuál sería tu deseo?, pregunto el genio.

- Los quiero de vuelta después del almuerzo...

 

 

BIBLIOGRAFIA

 

[1] Levine, G. Guillermo,  Computación y programación moderna. Perspectiva integral de la Informática. Pearson Educación, México, 2001.  ISBN: 968-444-485-0   Páginas:640.

 

[2] Joyanes, A. LUIS,   Fundamentos de Programación.  Algoritmos y Estructura de Datos.   McGraw Hill, España 1998.  ISBN: 84-481-0603-2

 

[3] La Esencia de la Lógica de Programación –

Omar Ivan Trejos Buriticá

http://gpsis.utp.edu.co/omartrejos/index.php?o=libros&id=1  (Recomendado para leer todo el libro)

 

[4] Oviedo G, Mario, Ortiz U, Frida G. La enseñanza de la programación IPN-UPIICSA.

 

[5] Aprende a Programar en diez años

http://www.dgamers.com.ar/showthread.php?t=12489