Bueno, después de pensar un rato en como empezar me pregunté, ¿Tendrán bien definido los cursantes que significa programar? o simplemente pensarán "Programar es hacer programas". Me pareció interesante definir bien el concepto de "Programar" y de "Programa" para que sepan realmente que es lo que van a aprender a hacer.
Definiciones:
Programar:
Idear y ordenar las acciones necesarias para alcanzar un objetivo.
Programa:
Serie ordenada de operaciones necesarias para lograr un objetivo.
La verdad es que son definiciones bastante simples, pero igualmente vamos a ejemplificarlas en la vida real;
Por ejemplo, programar la video casatera cumple con nuestra definición, quizá esté facilitado para el alcanze del usuario el hecho de programarla, pero veamos los pasos que se llevan a cabo:
Si prestamos anteción a lo que realizamos cumplimos perfectamente la definición de programación ya que ideamos las acciones a realizar y de alguna forma las ordenamos.
Se podría decir que es un proceso bastante simple, pero quizá no tenemos en cuenta todos los subprogramas que activamos en la videocasettera por cada instrucción que le damos ya que esta tiene todo un programa que es el que hace que se cumplan nuestras instrucciónes, el cual fue diseñado e implementado por sus creadores. Si nos fijamos a nuestro alrededor hay muchas cosas que están programadas para cumplir sus tareas y nosotros programamos "de alguna forma" unas cuantas de estas, ya sea seleccionar la hora del despertador, el tiempo del microondas, poner en hora el reloj, la temperatura del aire acondicionado, etc.
Probablemente me diran que hacer un programa para la PC no tiene nada que ver con poner a grabar una pelicula y que si fuera TAN FACIL lo haría cualquiera, en realidad es siempre el mismo mecanismo, solo que en algunos casos aumenta la complejidad, el poder manejar esto depende de cuanto podamos abstraernos para determinar los pasos a seguir.
Algoritmos
Bueno, hablando de pasos a seguir vamos a definir lo que es un algoritmo, tomado de la wikipedia:
Un
algoritmo es un conjunto finito de instrucciones o pasos que sirven para ejecutar una tarea y/o resolver un problema. De un modo más formal, un algoritmo es una secuencia finita de operaciones realizables, no ambiguas, cuya ejecución da una solución de un problema en un tiempo finito.
Nota: Hay que tener en cuenta que para que se cumpla la definición de algoritmo los pasos tienen que estar bien definidos y no puede haber ambigüedades como aclara en la definición.
Teniendo en cuenta esta definición podríamos decir que en un programa esta muy vinculado con un algoritmo, sin embargo la mayoría de las veces en un programa hay que solucionar más de un problema para cumplir nuestro objetivo.
Vamos a ejemplificar un programa para dar tres vueltas a la manzana:
Quiza las estructura no sea la ideal pero nos servirá para ejemplificar.
Analizemos el funcionamiento del programa con el estado de sus contadores (entiendase lo que utilizamos para contar las cuadras camindas y las vueltas dadas.) Vamos a obviar cada uno de los pasos realizados para caminar la cuadra para que sea entendible.
Seguramente pensarán que no se fijan si llegaron a la esquina antes de dar cada paso, de hecho habría formas de no tener que verificar esto en cada paso pero en este momento no buscamos optimizar nuestro programa, sino entenderlo.
En este ejemplo podemos ver que para realizar una vuelta a la manzana es necesario utilizar más de un algoritmo . Podríamos obviamente armar todo en uno, pero lo ideal es siempre "desmenuzar" las cosas lo más posible, esto nos ayuda a "generalizar" y después poder reutilizar nuestros algoritmos.
Ejercicios / Preguntas:
(nota: al realizar un ejercicio o responder una pregunta debe ser comprimido en formato ZIP, RAR, BZ2 o GZ y enviado por mail a esteban.torre at gmail dot com NO DEBEN SER PUBLICADOS DIRECTAMENTE EN UN POST)
El formato de los algoritmos debe ser igual al utilizado en el ejemplo, no se busca código sino más bien la idea.
1) Idear y escribir un algoritmo para buscar el rey de oro en un mazo de cartas teniendo en cuenta que solo podés ver una carta a la vez y el mazo esta desordenado el maso es de 48 cartas españolas (sin comodines).
2) Idear y escribir un algoritmo para buscar la misma carta sabiendo que el mazo esta agrupado por palos pero los numeros continuan desordenados (podemos saltear de a X cartas).
3) Idear y escribir un algoritmo para sacar el ocho y el nueve de oro de un mazo agrupado por palo y luego ordenado por numero. (podemos saltear de a X cartas).
4) Tenemos todos los bastos de un mazo desordenados, podemos: ver solo la carta actual y la siguiente del mazo e intercambiarlas, pasar a la siguiente carta ó volver a empezar. Idear y escribir un algoritmo para ordenar las cartas de menor a mayor.
Bueno y creo que es suficiente para la primera entrega, me gustaría que le hagan propaganda (??). Es obvio que es una entrega para que hasta el que no sabe NADA pueda empezar, si te parece pelotuda simplemente quedate callado y espera.
.
Documento sin revisar, muy probable que se modifique :P.
Definiciones:
Programar:
Idear y ordenar las acciones necesarias para alcanzar un objetivo.
Programa:
Serie ordenada de operaciones necesarias para lograr un objetivo.
La verdad es que son definiciones bastante simples, pero igualmente vamos a ejemplificarlas en la vida real;
Por ejemplo, programar la video casatera cumple con nuestra definición, quizá esté facilitado para el alcanze del usuario el hecho de programarla, pero veamos los pasos que se llevan a cabo:
- Se determina a que hora debe comenzar a grabar y por cuanto tiempo
- Se selecciona el horario de comienzo de la grabación.
- Se calcula el horario de finalización de la grabación.
- Se selecciona el horario de finalización de la grabación.
- Se deja la videocasettera en el estado necesario para que pueda cumplir esta operación (entiendase revisar que halla casette, que este rebobinado y se deja la video en standby).
Si prestamos anteción a lo que realizamos cumplimos perfectamente la definición de programación ya que ideamos las acciones a realizar y de alguna forma las ordenamos.
Se podría decir que es un proceso bastante simple, pero quizá no tenemos en cuenta todos los subprogramas que activamos en la videocasettera por cada instrucción que le damos ya que esta tiene todo un programa que es el que hace que se cumplan nuestras instrucciónes, el cual fue diseñado e implementado por sus creadores. Si nos fijamos a nuestro alrededor hay muchas cosas que están programadas para cumplir sus tareas y nosotros programamos "de alguna forma" unas cuantas de estas, ya sea seleccionar la hora del despertador, el tiempo del microondas, poner en hora el reloj, la temperatura del aire acondicionado, etc.
Probablemente me diran que hacer un programa para la PC no tiene nada que ver con poner a grabar una pelicula y que si fuera TAN FACIL lo haría cualquiera, en realidad es siempre el mismo mecanismo, solo que en algunos casos aumenta la complejidad, el poder manejar esto depende de cuanto podamos abstraernos para determinar los pasos a seguir.
Algoritmos
Bueno, hablando de pasos a seguir vamos a definir lo que es un algoritmo, tomado de la wikipedia:
Un
algoritmo es un conjunto finito de instrucciones o pasos que sirven para ejecutar una tarea y/o resolver un problema. De un modo más formal, un algoritmo es una secuencia finita de operaciones realizables, no ambiguas, cuya ejecución da una solución de un problema en un tiempo finito.Nota: Hay que tener en cuenta que para que se cumpla la definición de algoritmo los pasos tienen que estar bien definidos y no puede haber ambigüedades como aclara en la definición.
Teniendo en cuenta esta definición podríamos decir que en un programa esta muy vinculado con un algoritmo, sin embargo la mayoría de las veces en un programa hay que solucionar más de un problema para cumplir nuestro objetivo.
Vamos a ejemplificar un programa para dar tres vueltas a la manzana:
Código:
Algoritmo caminar al final de la cuadra:
Inicio:
Dar un paso
Ver si estamos en la esquina
Si estamos [U]terminar[/U]; sinó volver a empezar.
Algoritmo para girar:
Inicio:
Ver si a la izquierda hay calle.
Si hay girar 90º a la derecha; sino girar 90º a la izquierda.
Final.
Algoritmo para dar una vuelta:
Inicio:
Mientras que las cuadras contadas sean menores a cuatro:
Caminar al final de la cuadra
Girar
Contar una cuadra.
Repetir
Final.
Programa:
Mientras que las vueltas contadas sean menores a tres:
Dar una vuelta.
Repetir.
Terminar.
Analizemos el funcionamiento del programa con el estado de sus contadores (entiendase lo que utilizamos para contar las cuadras camindas y las vueltas dadas.) Vamos a obviar cada uno de los pasos realizados para caminar la cuadra para que sea entendible.
Vueltas: 0 (verifica que sea menor a 3)
Programa->Dar una vuelta
Cuadras:0 (verifica que sea menor a 4)
Programa->Dar una vuelta->Caminar al final de la cuadra
Cuadras: 1 (verifica que sea menor a 4)
Programa->Dar una vuelta->Caminar al final de la cuadra
Cuadras: 2 (verifica que sea menor a 4)
Programa->Dar una vuelta->Caminar al final de la cuadra
Cuadras: 3 (verifica que sea menor a 4)
Programa->Dar una vuelta->Caminar al final de la cuadra
Cuadras: 4 (verifica que sea menor a 4)
Programa->Dar una vuelta-> Final.
Vueltas: 1 (verifica que sea menor a 3)
Programa->Dar una vuelta (no realizaremos todo nuevamente, sucede lo mismo que en el caso anterior)
Vueltas: 2 (verifica que sea menor a 3)
Programa->Dar una vuelta
Vueltas: 3 (verifica que sea menor a 3)
Termina.
Programa->Dar una vuelta
Cuadras:0 (verifica que sea menor a 4)
Programa->Dar una vuelta->Caminar al final de la cuadra
Cuadras: 1 (verifica que sea menor a 4)
Programa->Dar una vuelta->Caminar al final de la cuadra
Cuadras: 2 (verifica que sea menor a 4)
Programa->Dar una vuelta->Caminar al final de la cuadra
Cuadras: 3 (verifica que sea menor a 4)
Programa->Dar una vuelta->Caminar al final de la cuadra
Cuadras: 4 (verifica que sea menor a 4)
Programa->Dar una vuelta-> Final.
Vueltas: 1 (verifica que sea menor a 3)
Programa->Dar una vuelta (no realizaremos todo nuevamente, sucede lo mismo que en el caso anterior)
Vueltas: 2 (verifica que sea menor a 3)
Programa->Dar una vuelta
Vueltas: 3 (verifica que sea menor a 3)
Termina.
En este ejemplo podemos ver que para realizar una vuelta a la manzana es necesario utilizar más de un algoritmo . Podríamos obviamente armar todo en uno, pero lo ideal es siempre "desmenuzar" las cosas lo más posible, esto nos ayuda a "generalizar" y después poder reutilizar nuestros algoritmos.
Ejercicios / Preguntas:
(nota: al realizar un ejercicio o responder una pregunta debe ser comprimido en formato ZIP, RAR, BZ2 o GZ y enviado por mail a esteban.torre at gmail dot com NO DEBEN SER PUBLICADOS DIRECTAMENTE EN UN POST)
El formato de los algoritmos debe ser igual al utilizado en el ejemplo, no se busca código sino más bien la idea.
1) Idear y escribir un algoritmo para buscar el rey de oro en un mazo de cartas teniendo en cuenta que solo podés ver una carta a la vez y el mazo esta desordenado el maso es de 48 cartas españolas (sin comodines).
2) Idear y escribir un algoritmo para buscar la misma carta sabiendo que el mazo esta agrupado por palos pero los numeros continuan desordenados (podemos saltear de a X cartas).
3) Idear y escribir un algoritmo para sacar el ocho y el nueve de oro de un mazo agrupado por palo y luego ordenado por numero. (podemos saltear de a X cartas).
4) Tenemos todos los bastos de un mazo desordenados, podemos: ver solo la carta actual y la siguiente del mazo e intercambiarlas, pasar a la siguiente carta ó volver a empezar. Idear y escribir un algoritmo para ordenar las cartas de menor a mayor.
Bueno y creo que es suficiente para la primera entrega, me gustaría que le hagan propaganda (??). Es obvio que es una entrega para que hasta el que no sabe NADA pueda empezar, si te parece pelotuda simplemente quedate callado y espera.
.Documento sin revisar, muy probable que se modifique :P.


Comentario