Guías de Make it Real
  • Introduction
  • Preparación
    • Conceptos básicos
    • El editor de texto
    • La línea de comandos
    • Git y Github
  • Git
    • Instalación y configuración
    • Conceptos y comandos esenciales
    • Ignorando archivos y carpetas
    • Trabajando con ramas
    • Repositorios remotos
    • Etiquetas
    • Reescribiendo la historia
    • Stashing
    • Github
  • HTML y CSS
    • Introducción a HTML
    • Introducción a CSS
    • Más elementos de HTML
    • Tablas
    • Formularios
    • El modelo de caja en CSS
    • Fondos (backgrounds)
    • Posicionamiento
    • Selectores CSS
    • Bordes, sombras y gradientes
    • Media Queries
    • Unidades en CSS
    • Flexbox
  • Bootstrap 3
    • Primeros pasos
    • Elementos básicos de HTML
    • Componentes
    • La grilla
    • Personalizando Bootstrap
    • Utilizando plantillas
  • Bootstrap 4
    • Primeros pasos
    • Elementos básicos de HTML
    • Componentes
    • La grilla
    • Clases utilitarias
    • Personalizando Bootstrap
  • Ruby
    • Primeros pasos
    • Tipos y operadores
    • Variables y entrada de usuario
    • Condicionales
    • Ciclos
    • Arreglos
    • Más cadenas de texto
    • Hashes
    • Métodos
    • Manipulación de archivos
    • Gemas
  • Programación Orientada a Objetos en Ruby
    • Clases y objetos
    • Métodos y atributos de clase
    • Herencia
    • Módulos
    • Excepciones
  • JavaScript I
    • Primeros pasos
    • Tipos y operadores
    • Variables
    • Condicionales
    • Ciclos
    • Arreglos
    • Más cadenas de texto
    • Funciones
    • Objetos literales
    • Manipulación de archivos
  • JavaScript en el navegador
    • Primeros pasos
    • Manipulando HTML
    • Escuchando eventos
    • Local Storage
    • History API
    • Canvas
    • Notificaciones Web
    • Audio y Video
    • Arrastrar y soltar
    • JSON
    • Realizando peticiones HTTP
  • jQuery
    • Primeros pasos
    • Manipulando HTML
    • Escuchando eventos
    • Plugins
    • Realizando peticiones con AJAX
  • JavaScript II
    • Prototipos
    • Librerías (Node.js)
    • ES6
    • Uso de this (call, apply, bind)
    • Programación funcional
    • Scope, hoisting, closures
    • Programación asincrónica
    • Testing
  • HTTP y Sinatra
    • Primeros pasos con Sinatra
    • El protocolo HTTP
    • Rutas
    • Formularios
    • Cookies y sesión
  • Bases de datos
    • Bases de datos relacionales
    • SQL
    • DDL
    • MongoDB
  • Ruby on Rails I
    • Primeros pasos
    • Arquitectura
    • Rutas
    • Layouts y rendering
    • ActiveRecord - Modelos
    • ActiveRecord - Migraciones
    • ActiveRecord - Validaciones
    • ActiveRecord - Asociaciones
    • ActiveRecord - Scopes
    • ActiveRecord - Callbacks
    • Recursos REST
    • Formularios
    • Autenticación con Devise
    • Sass y Bootstrap
    • Envío de correos
    • Carga de imágenes
    • Seeds
    • Heroku
  • Ruby on Rails II
    • Usando JavaScript (y jQuery) en Rails
    • Testing en Ruby
    • Testing en Rails
    • Creando una Web API
    • Web Sockets
  • Express.js
    • Primeros Pasos
    • El protocolo HTTP
    • Rutas
    • Vistas
    • Middlewares y manejo de errores
    • Formularios
    • Cookies y sesión
  • Express.js II
    • Mongoose
    • Web Sockets
    • Autenticación
    • Envío de correos
    • Cargar imágenes
    • Deployment
    • Testing
    • Creando una Web API
  • React
    • Primeros pasos
    • JSX
    • Componentes
    • Más sobre estado
    • Formularios
    • Peticiones HTTP con Axios
    • React Hooks
    • React Context
    • React Bootstrap
    • React Router
    • Carga de Imágenes
    • Testing
    • Estructura de carpetas
    • Componentes de clase
  • Redux
    • Primeros pasos
    • Action creators
    • Usando la librería react-redux
    • Middlewares
    • Operaciones asincrónicas con redux-thunk
    • Combinando funciones reductoras
    • Testing
    • Redux Tool Kit
  • Algoritmos
    • Describiendo un algoritmo
    • Complejidad (Big-O)
    • Estructuras de datos
    • Recursión
    • Ordenamiento
    • Búsqueda
    • Programación dinámica
  • Python
    • Primeros Pasos
    • Tipos y Variables
    • Funciones
    • Control de Flujo
    • Listas
    • Ciclos
    • Diccionarios, Tuplas y Sets
  • NumPy
    • Primeros Pasos
    • Arreglos
    • Arreglos Multidimensionales
    • Estadística con NumPy
    • Distribución Estadística
  • Pandas
    • Primeros Pasos
    • Inspección y Selección de Datos
    • Modificando Dataframes
    • La Función Lambda
    • Aggregates en Pandas
    • Múltiples Tablas
Powered by GitBook
On this page
  • Prerequisitos
  • Contenido

Algoritmos

Un algoritmo describe una serie de pasos que se utilizan para resolver alguna clase de problemas (p.e. ordenar una lista) o realizar una tarea específica.

Un algoritmo puede ser ejecutado por personas o computadores, pero en esta sección nos vamos a concentrar en algoritmos que van a ser ejecutados por computadores (obviamente).

Para crear y utilizar algoritmos que van a ser ejecutados por computadores debes conocer conceptos como tipos de datos (cadenas de texto, números, booleanos, etc.), variables, condicionales, ciclos y algunas estructuras de datos como arreglos y diccionarios (llamados hashes en Ruby y objetos en JavaScript).

Un algoritmo se puede expresar de diferentes formas: en palabras, en pseudocódigo o en un lenguaje de programación como Ruby, JavaScript, Python, etc.

Un algoritmo está compuesto de unos datos de entrada, las instrucciones que se deben ejecutar y el resultado esperado.

Lo más importante de un algoritmo es que sea correcto, es decir, que genere el resultado que esperamos. Sin embargo, probar que un algoritmo es correcto es difícil, así que lo que recomendamos es crear pruebas automatizadas que cubran la mayoría de los casos.

Por otro lado, el rendimiento de un algoritmo también es importante y para eso vamos a explicar cómo calcular la complejidad de un algoritmo utilizando la notación Big-O.

Además de arreglos y diccionarios, vamos a ver otras estructuras de datos como matrices, listas encadenadas (linked lists), árboles, grafos, colas (queues) y pilas (stacks). Muchos algoritmos dependen de estas estructuras de datos específicas. Por ejemplo, encontrar la ruta más corta es más fácil utilizando un grafo.

Existen varias clases de algoritmos e identificar a cuál clase pertenece un problema es un primer paso. Algunas clases son:

  • Ordenamiento de listas (p.e. ordenar una lista de números en un arreglo)

  • Búsqueda en listas (p.e. encontrar un número dentro de un arreglo)

  • Grafos (p.e. encontrar la ruta más corta entre dos ciudades)

  • Programación dinámica

  • Conjuntos y cadenas (p.e. criptografía)

Para cada una de estas clases existen varios algoritmos que debemos conocer y aprender a utilizar para resolver diversos problemas.

Prerequisitos

Contenido

PreviousRedux Tool KitNextDescribiendo un algoritmo

Last updated 2 years ago

JavaScript I
JavaScript II
Describiendo un algoritmo
Complejidad (Big-O)
Estructuras de datos
Recursión
Ordenamiento
Búsqueda
Programación dinámica