{"id":55,"date":"2023-03-29T17:45:58","date_gmt":"2023-03-29T20:45:58","guid":{"rendered":"https:\/\/danielsegovia.com\/plataforma\/?p=55"},"modified":"2023-06-09T16:01:58","modified_gmt":"2023-06-09T19:01:58","slug":"02-pensamiento-logico","status":"publish","type":"post","link":"https:\/\/danielsegovia.com\/plataforma\/02-pensamiento-logico\/","title":{"rendered":"02 &#8211; Pensamiento l\u00f3gico"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">El pensamiento l\u00f3gico aplicado a la programaci\u00f3n se refiere a la capacidad de un programador para pensar de manera estructurada y l\u00f3gica al escribir c\u00f3digo. Se trata de una habilidad cr\u00edtica para cualquier programador, ya que el c\u00f3digo debe ser l\u00f3gico y coherente para funcionar correctamente.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">El pensamiento l\u00f3gico implica la capacidad de pensar de manera sistem\u00e1tica, anal\u00edtica y organizada. Esto significa que el programador debe ser capaz de descomponer problemas complejos en partes m\u00e1s peque\u00f1as y manejar cada parte de manera individual, antes de volver a unirlas para resolver el problema completo.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Adem\u00e1s, el pensamiento l\u00f3gico aplicado a la programaci\u00f3n tambi\u00e9n implica la capacidad de anticipar posibles problemas y errores en el c\u00f3digo, y de planificar soluciones alternativas para abordarlos. Tambi\u00e9n es importante para los programadores saber c\u00f3mo documentar y comentar su c\u00f3digo de manera clara y concisa, para que otros desarrolladores puedan entenderlo f\u00e1cilmente.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">A la hora de escribir c\u00f3digo para nuestra aplicaci\u00f3n en primer lugar, debemos entender que la programaci\u00f3n se basa en la l\u00f3gica. Es decir, para escribir un programa que haga lo que queremos, necesitamos pensar de manera l\u00f3gica. \u00bfQu\u00e9 significa esto? Que necesitamos ser capaces de razonar y pensar de forma estructurada para poder crear programas eficientes y funcionales.<\/p>\n\n\n\n<div style=\"height:100px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">Tabla de la verdad<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Uno de los conceptos m\u00e1s importantes que debes entender es el pensamiento l\u00f3gico, ya que es la base de toda programaci\u00f3n.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Una de las herramientas m\u00e1s \u00fatiles para desarrollar tu pensamiento l\u00f3gico es la tabla de la verdad. La tabla de la verdad es una representaci\u00f3n gr\u00e1fica de todas las combinaciones posibles de valores de verdad para un conjunto de variables. Es una herramienta esencial para la programaci\u00f3n, ya que se utiliza para determinar la l\u00f3gica detr\u00e1s de los condicionales y bucles.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Para entender mejor la tabla de la verdad, vamos a utilizar un ejemplo con dos variables: \u00abes de d\u00eda\u00bb y \u00abhay sol\u00bb. Ambas variables pueden ser verdaderas o falsas, por lo que hay cuatro combinaciones posibles:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Es de d\u00eda y hay sol (verdadero y verdadero)<\/li>\n\n\n\n<li>Es de d\u00eda pero no hay sol (verdadero y falso)<\/li>\n\n\n\n<li>No es de d\u00eda pero hay sol (falso y verdadero)<\/li>\n\n\n\n<li>Ni es de d\u00eda ni hay sol (falso y falso)<\/li>\n<\/ol>\n\n\n\n<p class=\"wp-block-paragraph\">Para cada una de estas combinaciones, podemos asignar un valor l\u00f3gico. Por ejemplo, podr\u00edamos decir que si es de d\u00eda y hay sol, la afirmaci\u00f3n \u00abvoy a la playa\u00bb es verdadera, mientras que <strong>si no es de d\u00eda y\/o no hay sol, la afirmaci\u00f3n \u00abvoy a la playa\u00bb es falsa<\/strong>. Podemos representar estas combinaciones y sus valores l\u00f3gicos en una tabla de la verdad:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">En esta tabla de la verdad, podemos ver que cuando \u00abes de d\u00eda\u00bb y \u00abhay sol\u00bb son verdaderos, la afirmaci\u00f3n \u00abvoy a la playa\u00bb tambi\u00e9n es verdadera. Sin embargo, cuando <strong>no<\/strong> \u00abes de d\u00eda\u00bb <strong>o<\/strong> no \u00abhay sol\u00bb la afirmaci\u00f3n completa es falsa.<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table><thead><tr><th>Es de d\u00eda<\/th><th>Hay sol<\/th><th>Voy a la playa<\/th><\/tr><\/thead><tbody><tr><td>Verdadero<\/td><td>Verdadero<\/td><td><strong>Verdadero<\/strong><\/td><\/tr><tr><td>Verdadero<\/td><td>Falso<\/td><td><strong>Falso<\/strong><\/td><\/tr><tr><td>Falso<\/td><td>Verdadero<\/td><td><strong>Falso<\/strong><\/td><\/tr><tr><td>Falso<\/td><td>Falso<\/td><td><strong>Falso<\/strong><\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">La tabla de la verdad es una herramienta muy \u00fatil para la programaci\u00f3n. Con ella, puedes determinar la l\u00f3gica detr\u00e1s de cualquier conjunto de variables y construir condicionales y bucles basados en esa l\u00f3gica.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Es importante tener en cuenta que el pensamiento l\u00f3gico va m\u00e1s all\u00e1 de la tabla de la verdad. Tambi\u00e9n implica la capacidad de identificar patrones, establecer relaciones y analizar problemas. Al aplicar el pensamiento l\u00f3gico a la programaci\u00f3n, puedes escribir c\u00f3digo m\u00e1s eficiente y efectivo.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Revisa el siguiente video del <a rel=\"noreferrer noopener\" href=\"https:\/\/www.youtube.com\/@ProfesorStevenChavezPonce\" target=\"_blank\">Profesor Steven Chavez Ponce<\/a> para profundizar en el tema.<\/p>\n\n\n\n<figure class=\"wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio\"><div class=\"wp-block-embed__wrapper\">\n<iframe loading=\"lazy\" title=\"TABLAS DE VERDAD | OPERADORES L\u00d3GICOS | l\u00f3gica proposicional | ejercicios resueltos\" width=\"1200\" height=\"675\" src=\"https:\/\/www.youtube.com\/embed\/pttgIlBLm-s?feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" allowfullscreen><\/iframe>\n<\/div><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"> <\/p>\n\n\n\n<h3 class=\"wp-block-heading\">A ponerlo en practica<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Supongamos que eres un guardia de seguridad en una entrada de un edificio. Se te ha dado una lista de reglas que debes seguir para permitir el acceso a las personas. Estas son algunas de las reglas:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Si la persona tiene una tarjeta de acceso v\u00e1lida, se le permite el acceso.<\/li>\n\n\n\n<li>Si la persona no tiene tarjeta de acceso pero est\u00e1 en la lista de visitantes autorizados, se le permite el acceso solo si se identifica adecuadamente.<\/li>\n\n\n\n<li>Si la persona no tiene tarjeta de acceso ni est\u00e1 en la lista de visitantes autorizados, se le niega el acceso.<\/li>\n<\/ol>\n\n\n\n<p class=\"wp-block-paragraph\">\u00bfQu\u00e9 variables puedes identificar? \u00bfComo podr\u00edas representarlo en la tabla de verdad?<\/p>\n\n\n\n<div style=\"height:100px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">Algoritmos<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">En el mundo de la programaci\u00f3n, un algoritmo es un conjunto de instrucciones ordenadas y bien definidas que se utilizan para resolver un problema o realizar una tarea. Los algoritmos son como una receta que sigue un cocinero para preparar un plato: si se siguen correctamente, se obtendr\u00e1 el resultado deseado.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Los algoritmos se utilizan en muchos aspectos de la vida cotidiana, desde el proceso que sigue un m\u00e9dico para diagnosticar una enfermedad hasta la forma en que se organizan las cartas en un juego de solitario. En programaci\u00f3n, los algoritmos son fundamentales para resolver problemas y realizar tareas de manera eficiente.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Ejemplos de algoritmos<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Veamos algunos ejemplos simples de algoritmos que se utilizan en la vida cotidiana:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Para preparar un caf\u00e9, seguimos una serie de pasos: ponemos agua en una cafetera, agregamos el caf\u00e9 molido, encendemos la cafetera y esperamos a que se haga el caf\u00e9.<\/li>\n\n\n\n<li>Para llegar a un lugar desconocido, seguimos un conjunto de direcciones: giramos a la derecha en la calle X, seguimos recto durante dos cuadras, giramos a la izquierda en la calle Y, etc.<\/li>\n\n\n\n<li>Para contar una cantidad de objetos, seguimos una serie de pasos: tomamos un objeto, lo contamos, y repetimos el proceso con cada objeto en la lista hasta haber contado todos.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">En programaci\u00f3n, los algoritmos pueden ser mucho m\u00e1s complejos, pero siguen el mismo principio b\u00e1sico: un conjunto de instrucciones ordenadas que se utilizan para resolver un problema o realizar una tarea.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Problemas que se pueden resolver con algoritmos<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Existen muchos problemas en programaci\u00f3n que se pueden resolver mediante el uso de algoritmos. Aqu\u00ed hay algunos ejemplos comunes:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>B\u00fasqueda: encontrar un elemento espec\u00edfico en una lista o en una base de datos.<\/li>\n\n\n\n<li>Ordenamiento: organizar los elementos de una lista en un orden espec\u00edfico (por ejemplo, de menor a mayor).<\/li>\n\n\n\n<li>An\u00e1lisis de datos: procesar y analizar grandes cantidades de datos para encontrar patrones y tendencias.<\/li>\n\n\n\n<li>Criptograf\u00eda: codificar y decodificar informaci\u00f3n para protegerla de accesos no autorizados.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Dise\u00f1o de algoritmos<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">El dise\u00f1o de un algoritmo eficiente es un proceso importante en programaci\u00f3n. Aqu\u00ed hay algunos conceptos clave a tener en cuenta:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Eficiencia: un buen algoritmo debe ser eficiente, es decir, debe tomar la menor cantidad de recursos (como tiempo y memoria) para realizar la tarea deseada.<\/li>\n\n\n\n<li>Complejidad temporal y espacial: la complejidad temporal se refiere a la cantidad de tiempo que tarda un algoritmo en ejecutarse, mientras que la complejidad espacial se refiere a la cantidad de memoria que utiliza. Ambas son importantes al dise\u00f1ar algoritmos eficientes.<\/li>\n\n\n\n<li>Recursividad: en programaci\u00f3n, la recursividad es la capacidad de una funci\u00f3n o algoritmo para llamarse a s\u00ed mismo. La recursividad se utiliza en muchos algoritmos, como el algoritmo de b\u00fasqueda binaria.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Herramientas y t\u00e9cnicas para analizar y optimizar algoritmos<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Existen varias herramientas y t\u00e9cnicas que se utilizan para analizar y optimizar algoritmos. Aqu\u00ed hay algunas de las m\u00e1s importantes:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Diagramas de flujo: los diagramas de flujo son una herramienta visual que se utiliza para describir un algoritmo en t\u00e9rminos de un conjunto de pasos l\u00f3gicos. Los diagramas de flujo ayudan a los programadores a comprender c\u00f3mo funciona un algoritmo y a identificar posibles problemas de eficiencia.<\/li>\n\n\n\n<li>Notaci\u00f3n Big O: la notaci\u00f3n Big O se utiliza para describir la complejidad temporal y espacial de un algoritmo. Esto permite a los programadores comparar y evaluar la eficiencia de diferentes algoritmos.<\/li>\n\n\n\n<li>Depuraci\u00f3n y pruebas: la depuraci\u00f3n y las pruebas son t\u00e9cnicas importantes para identificar y solucionar problemas en los algoritmos. Los programadores utilizan depuradores para identificar errores en el c\u00f3digo y pruebas para verificar que el algoritmo funciona como se espera.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Por el momento, solo nos vamos a focalizar en trabajar sobre los diagramas de flujo y m\u00e1s adelante veremos los siguientes.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><a rel=\"noreferrer noopener\" href=\"https:\/\/www.youtube.com\/@tecnojuanra777\" target=\"_blank\">Juan Garc\u00eda Montes<\/a> lo explica de una forma espectacular<\/p>\n\n\n\n<figure class=\"wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio\"><div class=\"wp-block-embed__wrapper\">\n<iframe loading=\"lazy\" title=\"Programaci\u00f3n: Diagramas de flujo y pseudoc\u00f3digo\" width=\"1200\" height=\"675\" src=\"https:\/\/www.youtube.com\/embed\/Lub5qOmY4JQ?feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" allowfullscreen><\/iframe>\n<\/div><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">En la siguiente clase presentaremos algunos programas para dise\u00f1ar una soluci\u00f3n en diagramas de flujo.<\/p>\n\n\n\n<div style=\"height:100px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">Conectando los mundos<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">La tabla de verdad y los diagramas de flujo est\u00e1n estrechamente relacionados, ya que ambos se utilizan para describir el comportamiento l\u00f3gico de un algoritmo.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Los diagramas de flujo son una herramienta visual que se utiliza para describir un algoritmo en t\u00e9rminos de un conjunto de pasos l\u00f3gicos. Cada paso en el diagrama de flujo representa una operaci\u00f3n l\u00f3gica que se realiza en los datos de entrada. En este sentido, los diagramas de flujo pueden utilizarse para describir las operaciones l\u00f3gicas descritas en una tabla de verdad.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Por ejemplo, supongamos que se tiene una tabla de verdad que describe la operaci\u00f3n l\u00f3gica AND en dos entradas booleanas. La tabla de verdad tendr\u00eda cuatro posibles combinaciones de entradas (verdadero-verdadero, verdadero-falso, falso-verdadero, falso-falso) y el resultado de cada combinaci\u00f3n.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Se podr\u00eda dise\u00f1ar un diagrama de flujo para implementar esta operaci\u00f3n l\u00f3gica de la siguiente manera: se comienza con dos entradas booleanas, se verifica si ambas son verdaderas, y si lo son, se produce una salida verdadera. Si no, se produce una salida falsa. Este diagrama de flujo representa las operaciones l\u00f3gicas descritas en la tabla de verdad y se puede utilizar para implementar la operaci\u00f3n l\u00f3gica AND en un algoritmo.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">En general, los diagramas de flujo son una herramienta \u00fatil para describir las operaciones l\u00f3gicas en un algoritmo y c\u00f3mo se combinan para producir un resultado. En combinaci\u00f3n con la tabla de verdad, los diagramas de flujo pueden ser utilizados para dise\u00f1ar algoritmos l\u00f3gicos eficientes y comprensibles.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Reviv\u00ed la clase<\/h2>\n\n\n\n<figure class=\"wp-block-embed aligncenter is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio\"><div class=\"wp-block-embed__wrapper\">\n<iframe loading=\"lazy\" title=\"Curso Node.Js - Clase 0\" width=\"1200\" height=\"675\" src=\"https:\/\/www.youtube.com\/embed\/q7SpYGza9MQ?start=1255&#038;feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" allowfullscreen><\/iframe>\n<\/div><\/figure>\n","protected":false},"excerpt":{"rendered":"<p>El pensamiento l\u00f3gico aplicado a la programaci\u00f3n se refiere a la capacidad de un programador para pensar de manera estructurada y l\u00f3gica al escribir c\u00f3digo. Se trata de una habilidad cr\u00edtica para cualquier programador, ya que el c\u00f3digo debe ser l\u00f3gico y coherente para funcionar correctamente. El pensamiento l\u00f3gico implica la capacidad de pensar de &#8230; <a title=\"02 &#8211; Pensamiento l\u00f3gico\" class=\"read-more\" href=\"https:\/\/danielsegovia.com\/plataforma\/02-pensamiento-logico\/\" aria-label=\"Leer m\u00e1s sobre 02 &#8211; Pensamiento l\u00f3gico\">Leer m\u00e1s<\/a><\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[3,4],"tags":[11,8,10,6],"class_list":["post-55","post","type-post","status-publish","format-standard","hentry","category-curso-de-node-js","category-logica-de-programacion-con-javascript","tag-curso","tag-javascript","tag-nodejs","tag-programacion"],"_links":{"self":[{"href":"https:\/\/danielsegovia.com\/plataforma\/wp-json\/wp\/v2\/posts\/55","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/danielsegovia.com\/plataforma\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/danielsegovia.com\/plataforma\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/danielsegovia.com\/plataforma\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/danielsegovia.com\/plataforma\/wp-json\/wp\/v2\/comments?post=55"}],"version-history":[{"count":22,"href":"https:\/\/danielsegovia.com\/plataforma\/wp-json\/wp\/v2\/posts\/55\/revisions"}],"predecessor-version":[{"id":525,"href":"https:\/\/danielsegovia.com\/plataforma\/wp-json\/wp\/v2\/posts\/55\/revisions\/525"}],"wp:attachment":[{"href":"https:\/\/danielsegovia.com\/plataforma\/wp-json\/wp\/v2\/media?parent=55"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/danielsegovia.com\/plataforma\/wp-json\/wp\/v2\/categories?post=55"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/danielsegovia.com\/plataforma\/wp-json\/wp\/v2\/tags?post=55"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}