Moway

Programar.

 

Introducción a los lenguajes de programación.


¿Qué es programación?


Es un término común que se puede describir según la Real Academia de la Lengua. Acción o efecto de programar. ¿Y programar? Idear y ordenar las acciones necesarias para realizar un proyecto. Todo esto en términos generales, no se refiere específicamente a la programación de lenguajes informáticos, pero nos da una idea de lo que es.


Programar puedes programar cualquier cosa, por ejemplo, las vacaciones. Luis nos ofreció un ejemplo explicando qué tipo de cosas pensamos cuando tenemos que programar algo. Vimos que consta de una serie de decisiones y una serie de pasos para conseguir hacer todas aquellas pendencias antes de, en este ejemplo, salir de vacaciones.


Luego nos hizo pensar en la posibilidad de programar las vacaciones con un mayordomo, o programar cualquier tipo de cosas en las que tenemos un asistente. El mayordomo está a tu servicio y no decide absolutamente nada. Entonces tendrás que darle las instrucciones precisas que quieres que realice y se lo tienes que dar en un lenguaje que ambos conozcáis.


Programar para un ordenador, un programa informático, es muy parecido a eso. Entonces, ya entrando en el mundo de los ordenadores nos explicó qué es la informática y cómo el ordenador/computadora da unos servicios para el tratamiento de la información (infor-mática): consultar, calcular, añadir, modificar o borrar información. En analogía al servicio del mayordomo, que nos prepara las vacaciones, organiza la limpieza, etc. A un ordenador debes darle las órdenes precisas en un lenguaje de programación, de manera similar al mayordomo.


¿Por qué programar?


A continuación entramos en un bloque que nos explica por qué realizar programas informáticos, básicamente por automatizar diversos tipos de procesos y nos dio una serie de ejemplos fantásticos entra las maneras de actuar de las personas y de las máquinas que nos acercan al pensamiento que debe de tener un programador para desempeñar su trabajo y el pensamiento que debe tener un estudiante cuando comienza a pensar en términos de "líneas de código".

 

 

Algoritmo.

Concepto de Algoritmo.


El algoritmo es algo que forma parte de nuestro día a día, en realidad es un concepto tan común que resulta hasta raro que, muchos de nosotros, solo lo conozcamos cuando nos ponemos a estudiar programación.


Comencemos leyendo la definición formal a ver si lo entendemos bien:


Algoritmo es un conjunto ordenado y finito de operaciones que permite hallar la solución a un problema.


Como detalle fíjate que no necesitas acudir a un libro de programación para conocer la palabra algoritmo, pues como decía es algo que cualquiera de nosotros hace en la vida normal. Ésta que está aquí es la definición de la Real Academia de la Lengua.


En otras palabras un algoritmo es la descripción de un proceso o una serie de pasos que tenemos que dar para conseguir alguna cosa.


Existen algoritmos en nuestro día a día a montones, de hecho nos pasamos el día ejecutando algoritmos. 


Preparar café 

Tomar un baño 

Hacer la cama 

...


Son operaciones tan habituales y tan simples que casi siempre obviamos que exista un algoritmo definido para ello. Aunque no todos los algoritmos son tan sencillos.


Un algoritmo se define mediante la especificación de una serie de pasos, como en este ejemplo


Beber un vaso de agua: 


Saco un vaso del armario 

Saco la botella de agua de la nevera 

Lleno el vaso 

Aproximo el vaso a mi boca 

Trago el líquido


Como podéis ver, no hace falta saber programación para diseñar un algoritmo. Entonces ¿Por qué es importante?


Lo veremos claro enseguida, pero antes os formularé con otra pregunta ¿Habéis oído la frase "Los ordenadores son tontos"? ¿Estáis de acuerdo?


Yo no estoy totalmente de acuerdo con esa frase. Pensar en todo lo que se puede hacer con un ordenador, trabajos digitales con programas como Photoshop, Películas increíbles y de un realismo acojonante hechas con computador, juegos, en 2D y 3D increíbles, o incluso la inteligencia artificial desarrollada en ellos. ¿Alguien ha intentado jugar contra la máquina en uno de esos juegos de fútbol actuales?


Cuando veo las cosas que se pueden hacer con ordenador me hace pensar que es muy difícil que algo "tonto" consiga resultados tan impresionantes. Pero eso de que los ordenadores son tontos se dice porque a ellos todo les debe ser explicado. El ordenador es un conjunto de cables y circuitos que, en principio, no sabe hacer nada a no ser que creemos un programa para ello. En los programas necesitamos decirle a la máquina todos y cada uno de los pasos que debe realizar para completar nuestro objetivo. ¿Y qué es eso? no es más que la definición de algoritmo.


Qué es un programa.


Ahora, para ahondar en el concepto de algoritmo, debe quedar claro que éste es un paso previo a escribir código. Para escribir un programa antes debo pensar en el algoritmo que resuelve mi necesidad. El programa viene después del algoritmo: es la expresión de un algoritmo en un lenguaje de programación.


Cómo se expresan algoritmos


Existen muchos modos de expresar algoritmos. Por ejemplo con palabras. Ya hemos expresado un algoritmo con palabras antes cuando pensamos en las acciones de beber un vaso de agua.


Pero también se pueden expresar con:


Gráficos o diagramas de flujo 

Pseudocódigo


Aunque los diagramas de flujo o el pseudocódigo son útiles porque nos permiten un paso intermedio entre los algoritmos expresados por palabras y el código fuente de los programas, no los vamos a ver de momento. Dado que todos sabemos escribir, por ahora vamos a limitarnos a escribir los algoritmos con palabras.


Ejemplos de algoritmos y programas


En este punto en el vídeo se vieron un par de ejemplos de algoritmos expresados con palabras y sus correspondientes programas en el lenguaje Javascript.


Perímetro de un rectángulo 

Media


En resumen "Programar es escribir algoritmos en un lenguaje que entienda la máquina" ¿Qué os parece esa frase? ¿Opináis que es correcta?


Estos programas que hemos visto sin duda ilustran bien esa frase, pero pensar que cuando hacéis un programa grande (un juego, un programa de gestión), entran en juego cientos o miles de algoritmos distintos y como programadores debemos no solo escribirlos, sino hacer que se comporten bien los unos con los otros, se coordinen, comuniquen, compartan información, respondan a las acciones del usuario, etc, etc.


Por tanto, podríamos decir que programar es mucho más que escribir algoritmos en un lenguaje de programación.


Fases para resolver un problema


Ya las hemos visto de manera implícita en el bloque anterior de esta clase, pero en resumen: Partimos de un problema, diseñamos un algoritmo y escribimos un programa. Pero en esas fases se encuentran implícitas muchas acciones que deben ser realizadas. Por ejemplo:


1. Identificación del problema 

2. Análisis 

3. Diseño del algoritmo 

4. Programación del algoritmo 

5. Ejecución y validación del funcionamiento


Muchos de nosotros pensamos que programar es simplemente escribir el código en un lenguaje de programación (paso marcado con 4 en el listado anterior), pero existen diversos pasos antes y después de codificar. Programar abarcan todos esos pasos.


Partes de un algoritmo


En esta parte de la clase se explicaron las partes de un algoritmo, junto con diversos ejemplos para tratar de identificarlas ya en el código Javascript.


Entrada de datos 

Procesamiento de los datos 

Salida de los resultados


Características de un algoritmo


Estas son las características que debe tener un algoritmo. Algunas de ellas ya las hemos mencionado. Te darás cuenta que la mayoría son de sentido común.


Estar bien detallado: 

No nos olvidemos que a los ordenadores hay que darles todos los pasos, uno a uno, sin olvidar u obviar ninguno de ellos, porque por si solos no son capaces de entender nada.


Estar bien ordenado: 

Lógicamente, un algoritmo tiene unos pasos a ser realizados en una secuencia. Pensemos en el algoritmo de beber agua. ¿Qué os parece si después de sacar el vaso del armario de la cocina me lo llevo directamente a la boca para beber?


Tener un principio y un fin: 

Tenemos que empezar por algún lugar y terminar en un número finito de pasos, si no, no es un algoritmo. Si nunca acaba nuestro proceso soy incapaz de llegar al final y por tanto no obtengo el resultado deseado, con lo que no se cumple la definición de algoritmo.


Ser fiable: 

Este punto incluye muchas cosas, como que el algoritmo resuelva los problemas sin errores y también que una misma entrada de datos produzca una misma salida. Si estamos haciendo el algoritmo del área de un cuadrado y para un cuadrado de 2 metros una vez calculamos el área como 2 metros cuadrados y otras veces como 4 metros cuadrados, habrá algo que hemos hecho mal.

Diagramas de Flujo.

Se denomina algoritmo a un grupo finito de operaciones organizadas de manera lógica y ordenada que permite solucionar un determinado problema.


Se trata de una serie de instrucciones o reglas establecidas que, por medio de una sucesión de pasos, permiten arribar a un resultado o solución.


Los diagramas de flujo sirven para representar algoritmos de manera gráfica.

¿Como representar diagramas de flujo?

Símbolos a utilizar al representar diagramas de flujo.

Ejemplos de diagramas de flujo.

Prácticas Moway.