Programación de Software desde CERO

Si quieres desarrollar tu CREATIVIDAD, INTELIGENCIA, IQ y capacidad COGNITIVA, este curso será un entrenamiento extremadamente arduo, intenso y profundo. Lo que aprenderás te permitirá desarrollar y mejorar tus capacidades mentales y a la vez aprenderás una herramienta con alto valor en el mercado laboral.

Este curso es un curso de Programación desde cero, y resaltamos la palabra programación porque no es un curso de un lenguaje concreto, sino que es un entrenamiento diseñado para forjar a un programador profesional desde la nada absoluta hasta la maestría, entrenando sus capacidades mentales.

Pasarás de forma progresiva por los distintos paradigmas de programación, aprendiendo:

  • Programación estructurada
  • Programación modular
  • Memoria dinámica
  • Programación Orientada a Objetos
  • Programación de Interfaces Gráficas de Usuario
  • Bases de Datos SQL

A través de este curso el estudiante desarrollará varios proyectos, diseñará sus propios programas, resolverá problemas complejos con pocas herramientas, aprenderá a pensar y a dividir grandes retos en pequeñas partes. Aprenderá también la teoría profunda que todo programador necesita hoy día y la pondrá en práctica inmediatamente a través de los ejercicios y proyectos planteados.

El curso se divide en 5 módulos extremadamente poderosos, cada uno de los cuales extiende y amplifica al módulo anterior. En concreto:

=== Módulo 1: Programación estructurada ===

Un curso de programación en sí mismo, ya que en él el estudiante conocerá todas las herramientas esenciales para crear programas en cualquier lenguaje. Los conceptos son dados de tal forma que el estudiante podrá aplicarlos en cualquier lenguaje moderno a su elección. Los temas que se darán son:

  1. Salida estándar de datos
  2. Entrada estándar
  3. Definición de variables
  4. Tipos primitivos de datos
  5. Tipos estructurados de datos
  6. Diagramas de flujo
  7. Secuencia y selección (IF)
  8. Repetición iterativa (FOR)
  9. Repetición condicional (WHLE y REPEAT – DO…WHILE)
  10. Subrangos
  11. Arreglos lineales estáticos
  12. Arreglos lineales dinámicos
  13. Arreglos bidimensionales
  14. Depurador y ejecución paso a paso
  15. Enumerados y registros
  16. Procedimientos y funciones
  17. Alcance de identificadores (locales y globales)
  18. Pasaje de parámetros por valor (copia) y por referencia (alias)
  19. Archivos de texto y archivos tipados
  20. Proyectos finales

=== Módulo 2: Memoria dinámica y Tipos Abstractos de datos===

Aquí el curso comienza a profundizar en conceptos que muchos programadores desconocen o no dominan (como quienes aprenden Java como primer lenguaje): los punteros. A través de esta herramienta el programador podrá comenzar a crear programas que gestionen la memoria RAM, enfrentándose a los problemas y complejidades que ésto conlleva.

Los Tipos Abstractos de Datos (TADs) introducen todo un concepto nuevo de programación: dividir el programa en módulos individuales y trabajar por separado con cada uno. De este modo el estudiante aprenderá a abstraer datos y a modularizar sus programas, todo lo cual es la base fundamental de la Programación Orientada a Objetos que posteriormente será tratada en profundidad.

  1. El tipo puntero
  2. Solicitud de memoria
  3. Liberación de memoria
  4. Alias
  5. Reprogramación de proyectos a memoria dinámica
  6. Modularización de programas
  7. Creación de unidades
  8. Definición de tipos abstractos
  9. Implementación de operaciones
  10. Uso de TADs en diferentes sistemas
  11. Linkedición
  12. Listas encadenadas simples
  13. Listas doblemente encadenadas
  14. Listas circulares
  15. Colas
  16. Pilas
  17. TADs personalizados
  18. Reprogramación de proyectos usando TADs

=== Módulo 3: Recursividad y el TAD Árbol binario===

Una herramienta muy poderosa y a la vez delicada. El estudiante aprenderá a utilizarla, conocerá sus ventajas y desventajas, entenderá su diferencia con la repetición iterativa, y comprenderá cómo resolver problemas complejos con ella.

El estudiante además conocerá cómo crear una estructura arborescente a través del uso de punteros, y cómo esta estructura resulta útil para ciertos casos. Es una herramienta muy poderosa que no todo programador domina. Siendo una estructura recursiva, se une perfectamente con la recursividad.

  1. Qué es la recursividad
  2. Diferencia entre recursividad e iteración
  3. Recursividad en listas lineales
  4. Recursividad en matrices
  5. Reprogramación de proyectos usando recursividad
  6. Árbol binario de búsqueda
  7. Árbol general
  8. Estructuras arborescentes
  9. Caso de estudio
  10. Proyecto

=== Módulo 4: Programación Orientada a Objetos ===

El estudiante aplicará ahora todos sus conocimientos para aprender este nuevo paradigma y comenzar a ver las estructuras de los programas como objetos. De este modo logrará modularizar aún más su código y comenzar a diseñar programas de forma más rápida y eficiente.

  1. Teoría de objetos
  2. Clases
  3. Creación y destrucción de objetos
  4. Herencia
  5. Polimorfismo
  6. Casteo
  7. Clases abstractas e interfaces
  8. Bloques try y lanzamiento de excepciones
  9. Beans
  10. Diseño básico de software
  11. Bases de UML
  12. Proyectos finales

=== Módulo 5: Interfaces gráficas de usuario ===

Todo lo aprendido en el curso le permitirá al estudiante comprender cómo crear interfaces gráficas de usuario y utilizarlas de forma inteligente, ya que éstas, en cualquier lenguaje moderno, están diseñadas con Objetos (POO). De esta manera el estudiante aprenderá a utilizar la librería LCL de Lazarus, que le permitirá aprender las bases de la creación de interfaces gráficas, manejo de eventos y control de errores.

  1. Creación manual de interfaces y componentes
  2. Creación gráfica mediante el entorno de desarrollo
  3. Ejemplos y aplicaciones
  4. Reprogramación de proyectos para crear interfaces gráficas
  5. Proyecto final

=== Módulo 6: Bases de datos MySQL y SQLite ===

Pasaremos a un punto bien distinto de la programación, ya que el estudiante ahora aprenderá a usar dos herramientas concretas de bases de datos, que es algo que va más allá de la programación en sí pero que a la vez es super necesario.

  1. Conexión de bases de datos a un programa
  2. Análisis y diseño de persistencia
  3. Comandos SQL por consola
  4. Herramientas gráficas MySQL Workbench y SQLite Studio
  5. De tablas a objetos: mapeo de datos
  6. Mantenimiento de bases de datos

Presentación y preparación

1
Presentación
09:44

Este video presenta la modalidad del curso y los temas que serán dados en él a fin de que puedas determinar si es lo que buscas o no.

2
Introducción
12:39

Conoce detalladamente qué vas a ver en este curso y qué habilidades desarrollarás.

3
Descarga e instalación de Lazarus
07:29

En esta lección verás cómo descargar la herramienta gratuita para llevar adelante el curso: Lazarus IDE, así como los pasos de instalación.

4
Creando el primer programa
23:31

Poniendo a prueba Lazarus, el IDE que utilizarás a lo largo del curso, creando tu primer programa y escribiendo tu primer código fuente.

Entrada y salida estándar

1
Salida básica de un programa
12:01

Imprimiendo las primeras líneas de texto en la consola irás codificando tus primeros programas, comenzando a ver la esencia que hay detrás de la programación.

2
Write y WriteLn
10:16

Las instrucciones de salida: los primeros pasos de todo programador.

3
La primera variable
28:13

Las variables, tema esencial para cualquier programa: aprende ahora a declarar una primera variable que sirva para guardar el nombre del usuario.

4
Ejemplo práctico de uso de variables
06:50

En la clase anterior se propone un ejercicio: pues veamos la solución paso por paso.

5
Variables numéricas: calculando área y perímetro
10:43

En esta clase aprenderás a leer datos numéricos para hacer cálculos muy simples en tu programa y mostrar el resultado al usuario.

6
Trabajando a fondo con variables
07:49

En esta clase seguiremos aplicando lo visto hasta el momento para afianzar conceptos y aprender algunos detalles nuevos que son muy importantes. El concepto de variables es crucial, y por tanto, comprender a fondo se hace sumamente prioritario.

7
El tipo primitivo Real
23:25

Un nuevo tipo de datos: el tipo Real, que permite tener números con punto flotante (con coma), como por ejemplo:

  1. 3,14
  2. 1,5
  3. 9,1546
8
Constantes
15:50

La cara opuesta de las variables: las constates son una herramienta muy útil para tener datos cuyo valor no cambiará a lo largo de la ejecución del programa.

9
Realizando cálculos sencillos
10:46

En esta clase aplicaremos todo lo visto hasta el momento para realizar cálculos simples y explicar detalles a tener en cuenta a la hora de realizar tus propios proyectos.

10
Lectura simultánea de variables
15:16

Ya aprendiste a leer valores desde la entrada y asignarlos a una variable. Ahora aprenderás a leer datos y asignarlos a varias variables a la vez.

11
Utilizando Read
10:37

Es momento de comprender cómo funciona realmente la instrucción Read y su diferenciación con ReadLn.

12
Documentación de código: comentarios
07:47

Ahora que has trabajado con varios pequeños programas, es importante que aprendas a comentar tu código, escribiendo en lenguaje coloquial qué es lo que hacen las instrucciones de tu programa. Esta práctica es sumamente importante en el mundo de la programación, e incluso te será de utilidad a tí mismo/a cuando tengas que trabajar con proyectos grandes.

13
División entera: cociente y resto
15:05

En esta clase aprenderás a utilizar la división entera (esa que enseñan en la escuela) para resolver problemas complicados. El objetivo de esta clase es esencialmente que conozcas las herramientas que Pascal (como todo lenguaje) pone a tu disposición.

14
Lectura de caracteres uno a uno
07:34

Para finalizar este tema del curso, aprende algunas cuestiones sobre la lectura de caracteres.

Selección

1
Sentencia IF
13:30

La instrucción o sentencia IF te permitirá utilizar condiciones para elegir qué código debe ejecutarse en función de dichas condiciones. En esta clase aprenderás la forma más básica de esta instrucción.

2
Concatenación de IF
14:39

Siguiendo con la condición IF, aprenderás cómo utilizar varias condiciones consecutivas para discriminar qué hacer ante varias situaciones.

3
Caso práctico de aplicación
19:04

Veremos un ejemplo de menú de opciones para que el usuario pueda elegir qué desea hacer con nuestro programa.

4
Sentencia de selección múltiple: CASE
15:54

La sentencia CASE (SWITCH en otros lenguajes) permite escribir código más rápidamente cuando se requieren varios IF que distingan entre muchos caminos posibles.

5
El tipo primitivo BOOLEAN y sus operadores
17:50

A partir de ahora las cosas que pueden comenzar a hacer los programas se multiplican. Es momento de aprender a tener condiciones complejas que dependan de varios factores, y no solo de uno. El tipo BOOLEAN es esencial en cualquier lenguaje de programación, y entender su uso (entrenándote con los ejercicios) resulta clave para poder avanzar en este curso (y en cualquier otro que sea para programar).

6
Anidación de IF
04:43

Una extensión del uso normal que se le da a IF. Simple pero muy importante.

Repetición iterativa

1
Secuencia FOR
22:12

Aprende cómo funciona FOR y también cómo salir de un bucle repetitivo cuando quieras mediante el uso de BREAK.

2
Programa ‘Adivinador’ con FOR
15:04

Trabajando con la sentencia FOR crearemos un pequeño juego en el que el usuario ha de adivinar un número en tres intentos, mejorando el ejemplo visto anteriormente.

3
Anidación de FOR
13:48

Es posible colocar una sentencia FOR (o más) dentro de otra. Esto, si bien es simple, tiene ciertas cuestiones a tener en cuenta. Aprendámoslo con ejemplos prácticos.

4
Generación de números al azar con Random
07:09

Mejoraremos el programa del adivinador que hemos estado implementando para que funcione de la siguiente manera:

  • El usuario tendrá que adivinar un número entre 1 y 100.
  • El número a adivinar será generado al azar por lo que será diferente en cada ejecución.
  • Se dispondrá de un máximo de 10 intentos.

Es el mismo ejemplo que vimos en el video anterior añadiendo la generación aleatoria de números con Random y Randomize.

5
Proyecto: Adivinador 2.0
03:43

Aplicando lo visto hasta el momento te proponemos un pequeño proyecto para mejorar el programa del Adivinador con el que hemos venido trabajando.

6
Repetición condicional con WHILE
13:07

Sabiendo como funciona FOR estás preparado/a para conocer una nueva estructura de repetición de código: WHILE. A diferencia de FOR, WIHLE puede repetir código una cantidad indefinida de veces, dependiendo de una condición para detenerse.

7
Repetición condicional con REPEAT
07:07

La última estructura de repetición, similar a WHILE pero con pequeñas diferencias: REPEAT.

8
Aplicación práctica: Adivinador 3.0
28:27

Finalizando con el tema de repetición, veremos un ejemplo práctico en el que invertiremos los roles en el juego del Adivinador: ahora será nuestro programa quién intente adivinar los números, y lo hará sorprendentemente bien.

Arreglos

1
Tipos primitivos y subrangos
12:09

Es momento de conocer todos los tipos primitivos de datos que Pascal brinda. He aquí el enlace a la Web oficial:

http://wiki.freepascal.org/Variables_and_Data_Types/es

También es momento de conocer la Tabla ASCII de caracteres para poder consultarla cuando sea necesario:

http://wiki.freepascal.org/ASCII

2
Arreglos lineales
17:47

Incursionaremos hoy en un nuevo tipo de datos, siendo el primer tipo estructurado que conocerás: los arreglos.

3
Buscando en arreglos
09:59

Ahora que sabes crear arreglos es momento de comenzar a recorrerlos. En este ejemplo crearemos un arreglo con números al azar y luego buscaremos un número ingresado por el usuario comprobando en qué posiciones del arreglo está.

4
Ejemplo práctico con caracteres
08:02

En esta lección practicaremos el uso de arreglos utilizando caracteres (char).

5
Arreglos dinámicos
07:17

Hasta ahora has visto como declarar arreglos estableciendo su dimensión en dicha declaración, sin embargo es posible establecer la dimensión de un arreglo en tiempo de ejecución, es decir, cuando el programa ya está en funcionamiento, tomando datos del usuario o de cualquier otro tipo de condiciones.

6
Arreglos bidimensionales
09:52

Ahora que sabes trabajar con arreglos lineales, es momento de trabajar con tablas o matrices.

7
Caso práctico: números sin repetir en un arreglo
21:08

En esta clase veremos un caso práctico en el que crearemos un arreglo de 10 celdas con números del 0 al 9 sin que ninguno se repita. Este problema, que en principio parece simple, resulta mucho más complejo de lo que se puede percibir.

8
Depurador de Lazarus
10:40

En esta clase aprenderás a utilizar el depurador de Lazarus, una herramienta que te permitirá rastrear y corregir errores en tus programas, pudiendo ejecutarlos paso por paso mientras miras qué sucede con cada variable.

9
Caso práctico: pasaje de caracteres a números
39:10

Esta clase es un caso de estudio práctico en el que aprenderás algunos conceptos importantes sobre la lectura de números desde la entrada estándar, la conversión de caracteres (char) a números (byte, integer, etc.), la lectura caracter a caracter mediante Read hasta encontrar el fin de línea con la función eoln, la concatenación de strings y la conversión de éstos a enteros. Es muy importante que prestes atención a todos los detalles vistos en este video ya que te serán de mucha utilidad en el futuro.

10
Proyecto: Truco de 21 cartas
06:34

Es hora de trabajar en serio, más allá de que los ejercicios son todos potentes y exigentes, enfrentarte a un programa completo marcará la diferencia y te hará afianzar todos los conceptos vistos. En este proyecto programarás el Truco de las 21 cartas para que el programa adivine la carta que estás mirando.

11
Proyecto: MasterMind 1.0
11:26

Habiendo finalizado el proyecto anterior ya estás en posición de hacer frente a este reto, un proyecto que te hará aplicar en profundidad todo lo que hemos visto hasta el momento. El MasterMind es un juego de ingenio que te permitirá entrenar tu mente en niveles muy elevados.

12
Proyecto: MasterMind 2.0
05:34

Mejorando la versión del proyecto anterior, en esta oportunidad el programa admitirá códigos con letras repetidas. Este pequeño detalle, aunque no lo parezca, aumenta la dificultad a la hora de calcular las notas de un código (buenos y regulares), por lo cual plantea un reto interesante.

13
Iteración FOR-IN
09:17

Ahora que ya sabes trabajar con arreglos, es momento de conocer una forma sencilla de recorrerlos a través de una variante de la instrucción FOR. En Pascal se conoce como FOR-IN, y en otros lenguajes como FOR-EACH.

Subprogramas o rutinas: procedimientos y funciones

1
Procedimientos
17:11

El siguiente salto en tu capacidad como programador o programadora: los procedimientos, y posteriormente las funciones. A partir de ahora tu capacidad de creación será potenciada, y los problemas que podrás resolver con tus programas serán mucho mayores. Los subprogramas te permiten dividir un problema grande en problemas más pequeños que puedan resolverse de manera más sencilla. Al unir luego todas las soluciones pequeñas, el problema original se resuelve también.

2
Parámetros o argumentos
11:08

Sabiendo crear procedimientos para realizar tareas independientes del programa principal, es momento de poder pasar información a dichos subprogramas para hacer lo que necesitas.

3
Funciones
12:39

Las funciones son esencialmente iguales que los procedimientos, salvo que ellas devuelven un resultado al finalizar su ejecución (como lo hace por ejemplo la función RANDOM) y los procedimientos no.

4
Alcance de identificadores
11:12

La definición de identificadores para variables, constantes, tipos y hasta subprogramas toma ahora un nuevo significado, ya que lo que existe en un subprograma no se ve hacia fuera de éste, pero lo que está fuera sí es visible dentro.

5
Función booleana
19:08

En este ejemplo práctico mostramos cómo crear y utilizar una función booleana que sirva en las condiciones de un IF, WHILE o REPEAT.

6
Pasaje de parámetros por referencia
12:50

Este concepto marca un siguiente quiebre en el dominio de la programación y en el suso de subprogramas. El pasaje de parámetros por referencia es de vital importancia y suele ser tema de dificultad. Esta clase requiere atención, ya que el concepto en sí es simple.

7
Declaración adelantada FORWARD
10:05

Un subprograma puede llamar (invocar) a cualquier otro subprograma que esté disponible (incluso a sí mismo). Esto es muy útil, sin embargo tiene algunos detalles a tener en cuenta.

8
Ejemplos prácticos de subprogramas
12:45

En esta clase veremos algunos ejemplos prácticos para que los conceptos dados hasta ahora se comprendan bien.

9
Sobrecarga de identificadores
11:32

La sobrecarga es la capacidad de un lenguaje de permitir que un mismo identificador se utilice para varias operaciones (o subprogramas), entre otras cosas. Aprende aquí cómo utilizar esta capacidad a tu favor.

10
Proyecto: MasterMind 2.5
02:47

Esta actualización del proyecto tendrá menor dificultad que las anteriores pero aún así será retadora. El programa será reescrito utilizando procedimientos y funciones (nosotros te daremos ya sus cabeceras) y además controlará errores en el ingreso de códigos por parte del usuario.

Enumerados y registros

1
Enumerados
21:57

Entrando en el nuevo tema comenzaremos aprendiendo acerca del tipo enumerado.

2
Caso práctico: enumerados en ‘Adivinador’
11:22

En esta clase veremos un ejemplo práctico de aplicación de los enumerados en el programa del Adivinador, utilizando dicha herramienta para programar la dificultad del juego.

3
Registros
23:25

Es momento de aprender uno de los tipos más poderosos de Pascal, precuela a la Programación Orientada a Objetos (aunque estamos lejos de ella). Los Registros permiten definir tipos de datos complejos y con mucha funcionalidad. Son la base para el próximo salto en tu capacidad como programador o programadora.

4
Caso práctico: registros en ‘Adivinador’
24:47

Aplicando lo visto hasta ahora, en este ejemplo práctico modificaremos el programa del Adivinador para utilizar Enumerados, Registros y subprogramas, mejorando el diseño.

5
Arreglos con tope
13:22

Utilizando arreglos (array) y registros (record), es posible implementar un arreglo que guarde diferentes cantidades de elementos, pudiendo incluso agregar o quitar elementos.

6
Proyecto: MasterMind 3.0
05:41

En este video te presentamos la nueva versión del MasterMind en donde los roles se invierten: Ahora tu programa intentará adivinar un código que tú pienses, recibiendo él las notas e intentando acertar a lo que tú has pensado.

Unidades y proyectos

1
Unidades
32:41

En esta clase aprenderás cómo utilizar unidades (units) para separar el código de tu programa en diferentes archivos.

2
Proyecto: MasterMind 4.0
04:29

Finalizando con el Proyecto MasterMind, en esta oportunidad simplemente unirás las dos versiones que ya programaste en una sola, contando además con una sencilla interfaz gráfica ya programada por nosotros, para que el juego se vea un poco mejor que el simple texto de la consola.

3
Caso de estudio: El juego de la vida 1/4
13:23

El Juego de la Vida, de John Conway, es uno de los modelos de simulación celular más básicos y a la vez interesantes que existen. A lo largo de 4 clases trabajaremos con este proyecto para programar su funcionamiento, mostrando conceptos muy importantes y básicos de la programación. Aplicaremos todo lo visto hasta el momento en el curso y mostraremos la forma en que deberás llevar a cabo tus proyectos finales.

4
Caso de estudio: El juego de la vida 2/4
14:51

Continuando con la segunda parte de este caso de estudio, veremos en este video la estructura que tiene el programa y cuáles son las partes que tú como estudiante de este curso tendrás que implementar para darle funcionalidad.

5
Caso de estudio: El juego de la vida 3/4
43:48

Continuando con el video anterior, en esta clase programaremos dos de las operaciones del juego: init, para inicializar el tablero y los demás atributos, y getCelulasVivas, para contar la cantidad de celdas activas alrededor de una posición dada.

6
Caso de estudio: El juego de la vida 4/4
17:31

En esta clase finalizaremos el proyecto del Juego de la Vida implementando las operaciones que faltan.

7
Proyecto: Buscaminas
16:17

En esta clase te presentamos el proyecto final de este módulo, el clásico juego Buscaminas, que te presentará varios retos como programador/a y que además te hará aplicar todo lo que hemos visto en el curso hasta el momento.

Archivos

1
Introducción a los archivos
20:02

En esta clase conocerás los aspectos básicos sobre archivos de texto plano y crearás tu primer fichero en el disco duro.

2
Crear, leer y modificar archivos
26:40

En esta clase aprenderás a CREAR, LEER, MODIFICAR y COPIAR archivos.

3
Manipulando archivos de texto
49:01

Crearemos en esta clase un programa con varias opciones, cada una de las cuales nos permitirá aplicar un concepto distinto, para abarcar todo lo necesario sobre archivos de texto, que luego extenderemos a archivos con tipo, profundizando al máximo.

4
Creando procesador de textos básico
58:44

Crearemos juntos un procesador de textos básicos estilo "Bloc de notas" que permita:

  • Crear archivos nuevos
  • Abrir y modificar archivos existentes
  • Usar Guardar como...

Haremos uso de una interfaz gráfica ya programada y nos encargaremos de darle funcionalidad.

5
Archivos con tipo básico
21:04

Es momento de conocer los archivos con tipo y aprender a escribir y leer datos de ellos.

6
Archivos con tipo avanzado
19:41

Archivos con tipos de datos primitivos pueden ser útiles, pero no explotan ni por asomo el potencial de los archivos. En esta clase aprenderás a declarar archivos con tipos de datos definidos por ti usando el tipo RECORD y PACKED RECORD.

7
Creando una base de datos simple
25:07

Usando todo lo aprendido sobre archivos, crearemos un programa que nos permita gestionar una "base de datos" bien simple, donde podamos leer, modificar, crear y eliminar registros.

8
Borrar registros en archivos con tipo
26:38

Ahora que sabes crear y modificar registros en un archivo, es momento de aprender a eliminarlos, cuestión que no es tan simple como puede parecer en un principio. En esta clase veremos dos formas de lograr este cometido:

  1. Crear una copia del archivo original omitiendo los registros a eliminar y luego renombrar el archivo temporal eliminando el original, tal como hicimos con el sistema NotepadPas.
  2. Dejar el registro en el archivo, pero marcarlo como ELIMINADO para que el resto de nuestro sistema lo omita cada vez que pase por él.

Existe una tercera forma que permite liberar el espacio de un registro dentro de un archivo tipado, pero solo cuando dicho registro está al final, mediante TRUNCATE, pero no la veremos en este curso porque no resulta muy útil en la vida real.

9
Proyecto: Base de datos simple
31:18

Este proyecto es relativamente sencillo respecto a proyectos anteriores, aunque no dejará de ser un reto. Programarás un sistema de base de datos simple que funcionará mediante un sistema de comandos, agilizando el ingreso de datos. Aplicarás todo lo visto con archivos hasta ahora.

Memoria dinámica con punteros

1
Introducción a los punteros
22:31

Comenzaremos por fin a trabajar con la memoria dinámica utilizando el tipo puntero de Pascal para poder solicitar y liberar memoria cada vez que queramos. En esta clase aprenderás a declarar un puntero a cualquier tipo de datos, pedir memoria, acceder a ella, y liberarla cuando ya no la necesites. También entenderás cómo Pascal gestiona este recurso y cómo es que tu como programador haces uso de él.

2
Punteros a registros: alias y complicaciones
18:48

Pudiendo crear tus propios tipos de datos, como registros, puedes crear punteros a esos datos y pedir memoria para ocuparla cuando quieras. En esta clase aprenderás a tener punteros de tipo RECORD y verás el concepto de ALIAS (dos punteros apuntando al mismo lugar), y todo lo que esto conlleva:

  • Modificar el dato desde un puntero afecta al otro
  • Crear nueva memoria deja de aplicar alias
  • Liberar a un puntero también libera a su alias y lo deja indefinido
3
Tipo de datos: Listas enlazadas o encadenadas
20:34

Las Listas Enlazadas o Listas Simples Encadenadas (Linked List en inglés), son una estructura lineal (como lo son los arreglos unidimensionales) que pueden crecer y decrecer dinámicamente; dicho de otro modo, en tiempo de ejecución (mientras tu programa está operando), la estructura puede pedir memoria y crecer, o bien, liberarla y decrecer.

En esta clase aprenderás cómo crear listas encadenadas simples utilizando punteros como herramienta para solicitar memoria.

4
Inserción de nodos en una lista encadenada
20:24

Ahora que conoces las listas encadenadas (enlazadas), es momento de ver las posibles situaciones a la hora de agregar nuevos nodos:

  • Al inicio de la lista
  • En un punto entre dos nodos
  • Al final de la lista

Cada caso tiene sus cuestiones particulares, pero no es algo demasiado complicado. Sin embargo es importante que lo veamos detenidamente para que comprendas a fondo qué se está haciendo.

5
Eliminación de nodos en una lista encadenada
29:36

Ahora que sabes recorrer una lista y agregar nodo en ella, es momento de aprender a eliminarlos.

6
Memoria dinámica en programa ‘Notepad Pas’
20:29

Tomaremos el programa Notepad Pas que realizamos anteriormente y modificaremos su uso de memoria estática con arreglos con tope por memoria dinámica con listas encadenadas.

7
Stress testing
14:16

Trabajar con memoria dinámica es propenso a muchos errores en tiempo de ejecución, los cuales aparecen muchas veces en caso concretos, que no son detectados hasta que es muy tarde. En esta clase conocerás el concepto de test de estrés (stress testing), con el cual llevaremos a nuestro programa al límite, e incluso más, buscando que éste caiga. Si el test pasa, entonces consideramos que la robustez del programa es correcta.

Tipos Abstractos de Datos

1
Modularización en Pascal
24:09

Si bien ya echamos un vistazo a las unidades en pascal (unit) y a cómo éstas permiten dividir un programa en varios módulos independientes, lo hicimos de una forma muy superficial. Ahora es momento de que aprendas realmente a trabajar con módulos, definir los tuyos propios y aplicar el concepto de Tipos Abstractos de Datos.

2
Tipos Abstractos de Datos
01:04:21

Es momento de formalizar este concepto con el cual has venido trabajando desde hace tiempo. Entender qué es un TAD te permitirá comenzar a diseñar tus propios programas. En esta clase crearemos desde cero dos Tipos Abstractos de Datos y además implementaremos todas sus operaciones paso por paso.

3
Expresiones regulares
29:31

Comprenderás el concepto de Expresiones Regulares y cómo esta herramienta te permitirá trabajar con cadenas de caracteres (Strings) de forma mucho más simple, robusta y fluida.

4
Caso de estudio: Presentación de proyecto ‘Gestión de Cursos’
22:26

Inicia aquí una serie de clases que dedicaremos a diseñar e implementar desde cero, en Pascal, un sistema de gestión de un centro educativo, siendo un programa bastante básico en su ejecución pero complejo en su creación. En esta clase presentaremos el proyecto en funcionamiento y además podrás (y deberás) descargarte el documento que lo describe a fondo ya que será necesario para el desarrollo de las clases posteriores. A través de este proyecto profundizaremos en varios temas del curso e introduciremos conceptos nuevos de vital importancia para pasar al paradigma de Programación Orientada a Objetos.

5
Caso de estudio: Definición de la persistencia
54:13

Introduciremos en esta clase un concepto totalmente nuevo: DISEÑO de Software. Si bien lo haremos de manera simple y sin ir demasiado a fondo, esta será una clase con mucho contenido, y que te irá preparando como programador/a a un nivel mucho mayor que el simple hecho de conocer un lenguaje concreto.

Definiremos así las entidades que deberán existir en nuestros sistema, su base de datos o estructura de persistencia, y cómo dichos datos se relacionarán entre sí.

6
Caso de estudio: Implementación de operaciones
24:13

Habiendo diseñado el sistema y comenzado con la estructura de módulos independientes, en esta clase le daremos código a esos módulos a fin de queden funcionales y listos para pasar a la siguiente etapa.

7
Caso de estudio: Diseño de colecciones
11:02

El concepto de colecciones ha sido tocado ya en el curso en diversas oportunidades pero de forma implícita, ahora es momento de verlo explícitamente y comprender a fondo cómo funciona el asunto de tener grupos o estructuras de ciertos tipos de datos.

8
Caso de estudio: Implementación de colecciones
52:15

Teniendo el diseño listo y la estructura de las colecciones que implementaremos en nuestro sistema, es momento de darles funcionalidad, para poder avanzar en la siguiente etapa del desarrollo de este software.

9
Caso de estudio: Gestión de mensajes y formato de salida
36:29

Habiendo cumplido con las dependencias previas, es momento de diseñar y programar los gestores de mensajes (salida del sistema) y formato. Si bien esto no es complejo, es de suma importancia comprender cómo se diseña de manera tal que sea simple y a la vez potente.

10
Caso de estudio: Sistema de gestión de base de datos
34:26

Desde el diseño conocemos hace tiempo las estructuras que existirán en la base de datos y cómo se relacionarán a través, justamente, de un diseño relacional. Es momento de escribir el código fuente que le dará funcionalidad a esta estructura y permitirá que el programa guarde los datos y los lea, manteniendo las relaciones en todo momento.

11
Caso de estudio: Controlador del sistema
59:14

El módulo que se encarga de gestionar todo, de unir a los módulos anteriores en un trabajo que permita ejecutar todo lo que el programa debe hacer y además interactuar con el usuario. Sin duda, todo un reto por programar. Finalmente, para que el sistema funcione, es necesario implementar el programa principal, es decir, el archivo con el bloque BEGIN|END que es donde la ejecución inicia, la puerta de entrada.

12
TAD Docente y TAD ListaEnteros
23:42

Retomamos el concepto de TAD propiamente dicho, volviendo a analizar lo que es una lista encadenada simple, pero ya desde una propuesta más teórica y, a la vez, práctica. Tendrás que hacer un ejercicio muy interesante en esta clase, el cual deberás entregar. El archivo ZIP de recurso tiene la letra del ejercicio y el código fuente que necesitas.

13
TAD LinkedList y sus variantes
15:44

En esta clase finalizaremos con el Tipo Abstracto de Datos Lista Encadenada, conociendo además sus variantes: lista circular, lista doble encadenada, lista doble encadenada circular, lista con indexado implícito y lista con indexado explícito. Además conocerás el concepto de celda falsa o dummy. Luego, por supuesto, tendrás que cumplir con algunos ejercicios obligatorios para entrenarte en estos conceptos y avanzar al siguiente tema.

14
TADs Pila y Cola
10:45

Es momento de conocer dos estructuras muy simples pero poderosas, basadas en Listas Encadenadas: las Pilas y las Colas. Conociendo estas estructuras, tu nivel como programador/a aumentará muchísimo. Es habitual encontrar cursos on-line donde no se habla absolutamente nada de esto. Por supuesto, tendrás que implementar tú estas estructuras como ejercicios.

15
TAD Árbol Binario de Búsqueda (ABB)
17:19

Ya casi finalizando esta sección del curso, es momento de dejar las estructuras lineales y pasar a las arborescentes a través del Árbol Binario, concretamente utilizando el Árbol de Búsqueda. Esto es un cambio radical en el uso de estructuras dinámicas ya que posee una complejidad bastante alta, siendo la precuela a la necesidad de utilizar recursividad para solucionar ciertos problemas.

16
Eliminación de un nodo en un ABB
34:48

En esta clase veremos puntualmente cómo se elimina un nodo de un árbol binario de búsqueda, teniendo en cuenta los posibles casos a la hora de hacerlo. Es una clase muy importante por lo cual es sumamente necesario que profundices en ella y logres entender a fondo lo que se hace.

17
Proyecto: Reimplementación de Gestión de Cursos

En esta clase simplemente debes descargar el próximo proyecto que debes realizar, constando éste de una actualización del Caso de Estudio Gestión de Cursos realizado en clases anteriores. De este modo aplicarás todo lo visto en los nuevos módulos y además te entrenarás en el trabajo con un software ya existente y en cómo las mejoras implican un minucioso trabajo.

Recursión computacional

1
Recursión directa
27:25

El primer paso es ver algunos ejemplos de recursividad directa para que entiendas de qué se trata esto, qué cosas hay que tener en cuenta, y los posibles problemas a los que te puedes enfrentar.

2
Stack de llamadas
29:25

Si entiendes el concepto que explicaré aquí, entenderás la recursión a fondo y no resultará algo tan difícil para ti.

Programación Orientada a Objetos

1
Introducción: Creando la primera clase (class)
26:28

En esta clase aprenderás a definir clases de objetos (class) en Pascal Moderno, dando un salto cuántico en tu forma de programar, convirtiéndote en un/a programador/a robusto/a, con un abanico amplio de herramientas de las qué disponer. A partir de ahora, nada podrá hacerte frente ni interponerse en tu camino.

2
Clases en Pascal Moderno
18:01

En esta oportunidad profundizaremos un poco más en el concepto de clases en Pascal y la nueva sintaxis así como el nuevo paradigma de trabajo que comenzaremos a adoptar de ahora en más.

3
Modificadores de acceso
08:45

Los componentes de tus clases pueden determinar cómo se accede a ellos. Conoce los modificadores PUBLIC, PRIVATE, y algo superficialmente por ahora PROTECTED (al ver herencia lo entenderemos a fondo). Es momento de comenzar a estructurar tus clases de manera sabia y correcta. Esto nos permite ir entrando en el concepto de encapsulamiento.

4
Listas encadenadas como objetos
29:27

El uso de clases tiene sus particularidades, siendo importante comenzar a comprenderlas desde ahora. En este video comenzaremos a implementar el TAD Lista Encadenada Simple utilizando clases de Pascal. Introduciremos así el concepto de Clases Internas y analizaremos las cuestiones inherentes al nuevo paradigma de programación.

5
Implementación de recorrido de listas como objetos
19:36

Los clientes de una clase (o un tipo) son quienes hacen uso de ella (o él). Debemos implementar operaciones que permitan recorrer la lista desde fuera de la clase en que es definida, y eso haremos aquí con algunas primitivas esenciales. Es importante que entiendas esto ya que te entrenará correctamente en el uso de POO y te preparará para todo lo que está por venir.

6
Generando contenedor de desplazamiento automático
09:00

Las estructuras que almacenan datos, tales como arreglos, listas encadenadas y árboles, entre otras, se conocen como colecciones, ya que "coleccionan" varios datos de un mismo tipo. Veremos en esta clase como generar un contenedor de desplazamiento para automatizar el proceso de recorrido de una estructura, en este caso una lista encadenada, y lograr que Pascal detecte esto para usarlo en un bucle FOR-IN.

NOTA: Habrá un error en la implementación vista en este video, el cual será explicado y pedido como proyecto en el recurso que podrás descargar.

7
Propiedades en Pascal
20:50

Las propiedades (property) son una herramienta muy útil en Pascal, que agiliza el tiempo de desarrollo y codificación, generando además un código mucho más elegante y legible. Es una alternativa a los típicos GETTER y SETTER de todos los lenguajes, que no he visto en ninguna otra tecnología. Su uso es sumamente simple y fácil de aprender, por lo cual lo presento en esta clase.

8
Caso de estudio: Adivinador con objetos 1/2
49:13

Aplicando lo aprendido hasta ahora en POO, reprogramaremos el pequeño juego del Adivinador unificando ambos modos (adivinador y pensador) en uno, utilizando ahora clases y objetos.

9
Caso de estudio: Adivinador con objetos 2/2
28:14

En la clase anterior definimos el programa Adivinador 5.0 utilizando POO, pero no implementamos el controlador del mismo para que funcionara. Eso haremos en esta clase, teniendo en cuenta algunas cuestiones interesantes, como directivas del compilador y el uso de parámetros opcionales en operaciones.

10
Campos estáticos en una clase
29:52

En esta clase primero repasaremos las diferencias entre el modelo antiguo de objetos utilizando punteros y el modelo de clases, para luego introducir un nuevo concepto: los campos estáticos. Es un tema que debes comprender a la perfección si quieres programar orientado a objetos.

11
Patrón de diseño SINGLETON
11:19

Utilizando lo aprendido en la clase anterior sobre componentes estáticos de una clase, aprenderás aquí a utilizar un patrón de diseño de objetos llamado SINGLETON, que entre otras cosas, garantiza que solo se pueda crear una única instancia de una clase (objeto) y no más.

12
Proyecto: Batalla Naval
10:30

En esta clase te presento un proyecto muy interesante que te hará trabajar arduamente aplicando absolutamente todo lo que has aprendido a lo largo del curso, y por supuesto haciendo énfasis en la POO. Se trata de llevar adelante toda la lógica del juego de la Batalla Naval o BattleShip.

Herencia y Polimorfismo

1
Encapsulamiento y herencia
17:39

En esta clase iniciarás a ver lo que es la Herencia en Programación Orientada a Objetos y cómo esta te abre un abanico nuevo de posibilidades.

2
Casteo y conversión de tipos
21:36

La herencia no sirve solo para reutilizar código, sino que su poder se comienza a manifestar con la conversión de tipos y el casteo de objetos.

3
Uso básico de interfaces
21:56

Las interfaces son una herramienta avanzada y crucial de la Programación Orientada a Objetos ya que, entre muchas otras cosas, permiten la herencia múltiple y la definición de tipos de datos a ser utilizados por cualquier clase que utilice la plantilla que una interfaz define.

4
Uso avanzado de interfaces
32:13

Ahora que conociste lo que es una interfaz, es momento de ver un uso más avanzado de esta herramienta para luego implementar una colección de objetos basándonos en ella.

5
Generalizando objetos en una colección
23:09

Definimos una interfaz para guardar en un árbol binario de búsqueda elementos de ella. De este modo, podrás guardar en dicho árbol cualquier objeto de cualquier clase que implemente dicha interfaz.

6
Polimorfismo
14:27

En esta clase aprenderás qué es el polimorfismo de operaciones y con ello el uso de las palabras reservadas virtual, override y overload.

7
Clases abstractas
17:42

Otra útil herramienta que la POO provee para ampliar las opciones de desarrollo de software. Es importante que comprendas este concepto a fondo para consagrarte como programador/a profesional.

8
Proyecto: Gestión Veterinaria simple
42:58

En esta clase te presentaré el proyecto obligatorio que debes hacer para aplicar al máximo todo lo visto en el curso, incluyendo Herencia, Polimorfismo, Interfaces y Clases abstractas. Te lo presentaré con un diseño UML para que aprendas dicha herramienta y resulte en un reto traducir un diagrama de diseño a lenguaje Pascal.

9
Genéricos
25:57

Los genéricos son una herramienta avanzada de la POO que facilita muchísimo el uso de colecciones y tipos de datos inespecíficos, pensando estructuras que luego podrán ser usadas por casi cualquier objeto. Todo lenguaje moderno hoy día soporta esta herramienta, y Pascal no es la excepción.

10
Colecciones genéricas
16:39

Pascal provee de varias colecciones genéricas ya implementadas y optimizadas, como Listas, Pilas, Colas, Árboles y Tablas, entre otras, listas para facilitarte la vida.

11
Captura de excepciones con try
30:17

Capturar excepciones en tiempo de ejecución es algo crucial en todo lenguaje moderno. Así como Java tiene, por ejemplo, los bloques try...catch, pascal provee de un mecanismo similar que te permitirá entrenar en el uso de este tipo de herramientas, siendo éste el uso de bloques TRY..FINALLY y TRY..EXCEPT.

12
Creación y lanzamiento de excepciones
24:39

Sabiendo capturar excepciones es momento de que sepas lanzar tus propias excepciones, sean predefinidas o personalizadas. En lenguajes como Java o C++ se hace mediante la sentencia trhow, en Pascal lo harás usando raise.

Interfaces gráficas de usuario

1
Hola mundo: El regreso
15:37

Comenzarás a utilizar la librería de Lazarus conocida como LCL (Lazarus Component Library) para crear aplicaciones con interfaces gráficas de usuario. En esta oportunidad construirás nuevamente el programa "HolaMundo" pero usando una ventana con un botón y un evento de click.

2
Uso básico de campos de texto
24:26

En esta clase aprenderás cómo hacer que tu ventana no pueda cambiar de tamaño ni maximizarse, así como trabajar con un campo de texto para obtener información del usuario y detectar las teclas presionadas.

3
Creación de formulario simple
26:28

Siguiendo con el uso de botones, etiquetas y campos de texto, en esta clase crearemos un formulario muy básico para pedir algunos datos al usuario y hacer algo con ellos. También aprenderás cómo crear un botón para salir así como a limpiar los campos automáticamente.

4
Formulario con uso de foco
12:59

En esta clase mejoraremos el formulario creando eventos de foco para validar los datos ingresados en tiempo real.

5
Formularios con áreas de texto e imágenes
18:35

Seguiremos trabajando con el formulario pero esta vez agregaremos íconos para mostrar cuando hay o no hay errores así como un área de texto para visualizar los resultados. También utilizaremos el evento de inicialización de una ventana para poder hacer cosas previas a la ejecución de la misma.

6
Contraseñas, radio botones y checks
51:09

En esta clase haremos desde cero un formulario completo para que repases todo lo visto y añadiremos el uso de campos de contraseña, botones de radio para brindar opciones de una sola elección y cajas de check para múltiple opción. Además verás algunos aspectos del uso de eventos que resultará importante dominar.

7
Listas desplegables
14:49

Conocerás cómo utilizar una lista desplegable (ComboBox) tanto para saber qué elemento de ella se ha seleccionado así como para poder agregar elementos dinámicamente en tiempo de ejecución. También te mostraré cómo usar un botón con ícono para tus programas.

8
Listas múltiples
16:32

A diferencia de un ComboBox, un ListBox es una lista no desplegable que además admite selección múltiple de elementos. Aprenderás cómo utilizarla para determinar los elementos seleccionados en ella así como para agregar elementos de forma dinámica.

9
Cuadros de diálogo predefinidos
29:13

Hasta ahora hemos utilizado ShowDialog para mostrar cuados de diálogo muy básicos ya que solo sirven para mostrar un mensaje al usuario. Es momento de poder hacer preguntas y detectar qué opción se eligió para hacer algo al respecto, para lo cual usaremos diálogos un poquito más personalizados.

10
Diálogos de selección y guardado
18:35

En esta clase te mostraré cómo usar diálogos para seleccionar archivos y también para guardarlos.

11
Adición de ventanas a la aplicación
17:04

Una aplicación compleja contiene muchas VISTAS, es decir, varias ventanas y/o cuadros donde mostrar y solicitar información al usuario. En esta clase te mostraré cómo agregar ventanas nuevas y cómo configurarlas como cuadros de diálogo si fuese necesario.

12
Paneles, divisores y pestañas
12:56

En esta clase aprenderás algunas cuestiones de contenido, agregar varios paneles a una ventana, gestionarlos y dividirlos de forma ajustable, así como a crear pestañas de contenido.

13
Uso de menús
19:07

Es hora de añadir elementos de menú a tus aplicaciones. En esta clase verás cómo añadir una barra de menú y cómo crear menús contextuales para asociarlos a tus componentes y hacer que aparezcan al presionar el botón derecho del mouse.

14
Tablas
26:18

En esta clase aprenderás a manipular tablas de datos, tanto para agregar y borrar filas, como para detectar la selección que el usuario hace dentro de una tabla.

15
Uso de multihilos (multithreading)
Si y no. En lo relativo a programación de software todo lo necesario es brindado en el curso, incluyendo archivos descargables. En lo relativo al uso de computadoras (ordenadores) debes tener un dominio básico: saber crear achivos y carpetas, descargar archivos de internet, enviar correos electrónicos y adjuntar archivos.
No. Todo software de terceros necesario para hacer este curso es de índole gratuito bajo licencias de Software Libre. En concreto solo necesitas utilizar Lazarus y FreePascal para hacer el curso. Su descarga e instalación es explicada en las clases.
Muy simple. Al hacer este curso entrenarás a la vez tu pensamiento lógico-matemático y tu pensamiento creativo, llevando la exigencia mental al máximo. Es un curso que hará sudar las neuronas, y en consecuencia, su desarrollo será increíble.
Sí. Con este curso podrás ingresar a cualquier trabajo como programador. En cada caso solamente necesitarás aprender a usar las herramientas específicas que cada trabajo solicite, lo cual será extremadamente simple para ti una vez finalizado este curso.

Sea el primero en añadir una reseña

Por favor, accede para dejar una valoración
Añadir a la lista de deseos
Duración: 80
Conferencias: 142
Video: 55
Nivel: Principiante

Archive

Este sitio usa cookies para mejorar tu experiencia de usuario. Al continuar navegando asumimos que aceptas esta política; de lo contrario puedes cerrar este sitio ahora mismo o desactivar las cookies en tu navegador.
Abrir chat
1
¿Quieres ayuda? Te asistiremos con gusto
Hola. Dinos ¿qué estás necesitando? Con todo gusto te asistiremos en lo que necesites.