[0:00]Programar sin entender bien los conceptos es como hacer una paella sin agua. Imposible. Creedme, lo he intentado y sale mal. Así que te voy a ahorrar horas y horas de conceptos. Allá voy. Un dato es la unidad más general de información. Puede ser un número entero, un decimal, un carácter, un texto, una lista, un objeto, o cualquier elemento abstracto que pueda existir en la programación. Estos datos, entre otros, pueden ser almacenados en variables y funcionan como una especie de caja con un nombre donde puedes guardar, consultar o modificar un dato. Los datos tienen asociado un tipo. En Python, por ejemplo, el texto se llama String. Los enteros, Integer, los decimales, Float y los lógicos, Boolean. Cuando hablamos de valores, hablamos de los datos pertenecientes a un determinado tipo. Como el número 42, que es un valor de tipo Integer. Se pueden usar operadores, símbolos que sirven para ejecutar funciones sobre datos o variables. Como puede ser una suma, una división o una comparación. Estas operaciones forman lo que se conoce como una expresión. Y una vez se resuelva, se obtiene un valor. Por supuesto, cada lenguaje de programación tiene su propia sintaxis, la forma en la que se escribe el código. Esto incluye cómo se deben dar las instrucciones y cómo se estructura el código. Ya sea mediante indentaciones o llaves. Otra sintaxis muy útil es cómo escribir un comentario, un texto que no afecta a la ejecución de tu código. En Python se usan almohadillas antes del texto, mientras que en Java se usan barras dobles. Otro ejemplo sería la forma en la que se escribe una función, un bloque de código que queremos usar de forma repetida, que puede tener entradas, conocidas como argumentos. Y su salida, lo que se conoce como devolver un valor. Cuando has creado tu propia función, puedes usarla llamando a la función, escribes el nombre de la función, le das los argumentos si los necesita y se ejecutará el código que habías programado. Y si habías programado que la función devuelva un valor, toda la llamada se convertirá en ese valor. Una función se puede llamar a sí misma.
[2:56]Las conocidas funciones recursivas. Se pueden usar para dividir un problema en sus problemas más pequeños. Imagina que quieres encontrar este fichero entre tus directorios. Puedes hacer una función que busque si ese fichero está dentro de un directorio y si se encuentra otro directorio, que aplique esa misma función a ese directorio. Así, recursivamente. También puedes hacer que tu código haga cosas diferentes utilizando las estructuras de control de flujo. Entre ellas, las condicionales, para que tu código tome diferentes caminos según una expresión. Como imprimir "Suspenso" si tu nota es menor que 5 o imprimir "Mesirve" sino. Otra estructura importante son los bucles. Un código que se repite una y otra vez hasta que una expresión deja de cumplirse. Por ejemplo, imprimir "Suscríbete perro" 100 veces. Para ello, realizaremos 100 iteraciones del código. Una iteración es cada ejecución del código del bucle. Cada uno de estos "Suscríbete perro". Dentro de los tipos integrados, los tipos que te ofrece un lenguaje de programación determinado, existen tipos de datos más complejos. Como las estructuras de datos. Unos de los más importantes son las colecciones, para agrupar datos, y pueden tener diferentes características según el tipo. En Python, por ejemplo, tenemos las listas, que tienen un orden y pueden modificarse. Las tuplas, también tienen un orden, pero no se pueden modificar una vez creadas. Los conjuntos, que no tienen orden. O los diccionarios, que permiten relacionar unos datos con otros. Cada lenguaje suele tener sus propias versiones de colecciones, algunas bastante diferentes y otras bastante similares. Por ejemplo, en Java, tenemos los arrays, que son similares a las listas en Python, pero con la diferencia de que no se puede modificar el tamaño una vez creados. Otros tipos, como los mapas en Java, son más parecidos a los diccionarios en Python, ya que ambos relacionan datos entre sí. Existen otras estructuras de datos como son los grafos, vértices conectados por aristas que se usan para una infinidad de cosas. Como por ejemplo, suscribirte al canal o darle like a este vídeo. Llegas tarde, ya te has comido la autopublicidad. Sigamos subiendo el nivel hablando sobre la temida Programación Orientada a Objetos. Antes que nada, la POO es un paradigma, un estilo de programación que organiza el código en objetos que interactúan entre sí. En esta forma de programar, tú tienes que definir una clase, una plantilla en la que indicas qué variables va a tener un objeto, a las que llamaremos atributos, y qué funciones va a contener, a las que llamaremos métodos. Por ejemplo, podemos crear la clase taza con los atributos volumen, líquido y cantidad, y métodos como llenar, beber y vaciar. Esta plantilla nos permitirá crear una taza. Para ello, hay que asignar valores a los atributos utilizando un método llamado constructor, que inicializa estos atributos y crea el objeto. Lo que en programación se conoce como instanciar una clase. En la programación orientada a objetos, hay cuatro pilares fundamentales. La abstracción, en la que nos planteamos cómo será la clase para nuestro objetivo, qué atributos y métodos necesitamos para una clase canción, que sirva para una biblioteca de música. O una página de ventas. En la encapsulación, definimos la privacidad de los atributos y métodos internos. Por ejemplo, para que esta clase personaje evite que atributos como vida pueda ser negativo con métodos para su control. Herencia, que nos permite reusar clases para crear otras. Por ejemplo, a partir de una clase personaje con la información más básica de un juego de rol, hacer dos clases nuevas como guerrero y mago, agregando todos los atributos y métodos de la clase personaje y añadiendo nuevos. La clase de la que hereda se conoce como clase padre, y la heredada como clase hija. También podemos hacer que un método de una clase hija haga una acción diferente gracias al polimorfismo. Por ejemplo, que personaje tenga un método llamado atacar y que la clase guerrero ataque con la espada y el mago con su libro de mucho texto. Si eres un verdadero fan del canal, ya sabes a qué vídeos te haciendo referencia, guiño, guiño. Hasta ahora te he hablado sobre lenguajes de programación imperativos, donde el código se ejecuta de arriba hacia abajo, siguiendo una secuencia de instrucciones. Pero también existen los declarativos, donde tú declaras ciertas reglas o funciones y dejas que el sistema determine cómo lograr el resultado deseado. Por ejemplo, Prolog permite declarar una serie de hechos y reglas para luego hacer consultas. Así, puedes definir quién es abuelo de quién y luego preguntar, por ejemplo, quién es nieto de Joseph. Además, los lenguajes de programación pueden ser interpretados. Se ejecuta línea a línea el código. O compilado. Tu código se transforma en otro optimizado para su ejecución. Para usar estos lenguajes, necesitas un IDE, un entorno para desarrollar código. Puedes usar alguno como Visual Studio Code, que es un poco para todo. Eclipse si estás programando en Java, o incluso usar un editor de texto, como lo es el Bloc de notas o Notepad, y ejecutarlo tú mismo desde la consola de tu sistema operativo. Los IDE te facilitan el desarrollo del código, ofreciéndote recomendaciones, señalándote warnings, vamos, avisos importantes a tener en cuenta. O errores antes de la ejecución. Algunos errores serán imposibles de detectar antes de la ejecución, los llamados bugs, bichos en español. No se detectan hasta que ejecutas tu código. Para encontrarlos, puedes revisar manualmente tu código o usar herramientas de debugging y acabar con los errores que tú mismo generaste por pensar poquito. Un momento, si después de estos últimos 10 conceptos echas en falta alguno, escríbelo en comentarios e intenta explicarlo. Seguro que serás el héroe sin capa de alguien más. Algunos IDE te ofrecen la opción de trabajar con un framework determinado, cierto material o herramientas para algún objetivo específico. Estos frameworks suelen usar algunas bibliotecas, colección de funciones creadas para un propósito. O API, para conectar tu código con otras aplicaciones ya existentes. Entre las cosas que puedes desarrollar con estas herramientas están los scripts, un conjunto de instrucciones que se ejecutan para hacer una tarea, normalmente trivial o repetitiva, como puede ser procesar datos. También puedes trabajar con bases de datos, un conjunto organizado de datos para su fácil ordenación, consulta y modificación. Generalmente, según en lo que estés interesado en programar, podemos distinguir entre la parte front-end de una aplicación, vamos, la interfaz de usuario. O la parte back-end, la lógica del servidor y gestión de las bases de datos. Alguien que se dedica a ambas áreas se conoce como programador full-stack. Un consejo, si estás empezando a programar, te recomiendo que escribas tu pseudocódigo, es decir, los pasos que va a seguir tu código. Puede ser con tu propio idioma o mezclándolo con código. Por último, todo conjunto de instrucciones para resolver una tarea, ya sea calcular el dinero que necesitas para salir de tu país, hacerte una tremenda paella o pensar cuál es el mejor vídeo que te vas a ver a continuación del canal al que ya te has suscrito, se conoce como algoritmo. Dale a la campanita si quieres más y nos vemos.



