We may earn an affiliate commission when you visit our partners.
Course image
Vladimir Rodríguez

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.

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

Read more

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.

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

Enroll now

What's inside

Learning objectives

  • Programación de proyectos complejos: a lo largo del curso tendrás que implementar y desarrollar diferentes proyectos, que te permitirán entrenar lo aprendido.
  • Entorno de desarrollo integrado: cómo utilizar un ide moderno para comenzar a desempeñarte en cualquier tecnología de desarrollo de software.
  • Entrada y salida de datos: aprenderás a mostrar información en pantalla, primero en consola y luego en ventanas, así como a capturarla y procesarla.
  • Variables y tipos de datos: conocerás qué son las variables y cómo se vinculan con los tipos de datos, tanto los primitivos como los definidos manualmente..
  • Constantes: aprenderás a definir valores que no cambiarán a lo largo de la ejecución de tu programa, siendo éstas muy útiles para sistematizar tareas.
  • Toma de decisiones: el uso de sentencias if te permitirá lograr que tus programas tomen distintos caminos según lo que va ocurriendo.
  • Condiciones booleanas: definir las formas en que tu programa evalúa cada situación es una tarea compleja e importante. aprenderás a hacerlo de forma correcta.
  • Iteración for: conocerás la sentencia for y su uso para repetir tareas dentro de un bloque de código, un número de veces específico.
  • Iteración condicional: sabrás definir bloques de código que deben repetirse un número de veces indefinido, dependiendo esto de lo que va ocurriendo.
  • Funciones y procedimientos: aprenderás a dividir tus programas en bloques de código que luego podrás invocar, dividiendo problemas en tareas más pequeñas.
  • Alcance de identificadores: comprenderás cómo los nombres que usas tienen diferentes alcances según donde los defines, y cómo esto afecta a tu código.
  • Estructuras de datos lineales: aprenderás a usar diferentes estructuras para solucionar tus problemas y crear proyectos.
  • Modularización: aprenderás a dividir grandes programas en módulos independientes que luego encajarán en el lienzo final creando algo único.
  • Creación de librerías: comprenderás cómo reutilizar código ya creado para no tener que reescribir cada cosa, creando tus propias librerías.
  • Archivos: podrás hacer que tus programas creen archivos de texto plano (txt), así como también definir tu propio tipo de archivos.
  • Punteros: aprenderás a dominar el uso de la memoria, crear nuevos datos dinámicamente y liberarlos cuando ya no los necesitas.
  • Tipos abstractos de datos: comprenderás que son los tads, aprenderás a definir y crear los tuyos y te diferenciarás del resto de programadores.
  • Listas enlazadas: trabajarás con la estructura dinámica linkedlist, extremadamente habitual en todo lenguaje.
  • Colas y pilas: aprenderás a crear estructuras dinámicas utilizando el modelo de cola (queue) y pila (stack).
  • Árboles binarios de búsqueda y generales: conocerás como crear estructuras arborescentes dinámicamente y usarlas para hacer que tus programas sean eficientes.
  • Definición y creación de objetos: aprenderás a definir clases (class) de objetos e instanciarlos, dando un salto cuántico en tu forma de programar.
  • Herencia y polimorfismo: conocerás cómo utilizar estas cualidades de la poo a tu favor para agilizar tu desarrollo y reutilizar mucho mejor tu código.
  • Casteo: sabrás cambiar el tipo de datos de tus objetos de forma dinámica durante la ejecución de tu software.
  • Interfaces gráficas de usuario: será en este punto en el que aprenderás a crear las tuyas propias y hacerlas funcionar.
  • Diseño de software: conocerás las bases para diseñar un software de porte pequeño o mediano (más de 10000 líneas), incluso grande, desde cero.
  • Bases de datos sql: aprenderás a usar, crear y gestionar bases de datos relacionales basadas en el lenguaje sql. nos basaremos en mysql y sqlite.
  • Patrones de diseño: aprenderás, por ejemplo el patrón singleton, mvc, capas, entre otros.
  • Codificarás como si no hubiera un mañana: tendrás que hacer funcionar muchos proyectos completos y entregar tu trabajo.
  • El doble de horas: la práctica del curso será intensiva, implicando horas y horas de trabajo y desarrollo de software, como debe ser.
  • Show more
  • Show less

Syllabus

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.

Read more

Conoce qué te aportará este curso y qué alcanzarás una vez que lo termines.

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

Descarga e instala Lazarus, la herramienta que utilizaremos para trabajar a lo largo de todo el curso.

Si usas Linux o Max debes ver estos enlaces, ya que la instalación en estos sistemas es más compleja que lo mostrado en el video.

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.

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

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

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

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.

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.

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

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.

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.

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.

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

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.

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

Es hora de poner un poco a prueba todo lo visto hasta el momento y comprobar qué tanto has entendido estos temas.

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.

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

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

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.

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).

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

Es momento de poner a prueba todo lo que has aprendido sobre este tema, ya que a partir de ahora lo utilizarás siempre.

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

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.

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.

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.

Es momento de poner un poco a prueba tus conocimientos de FOR.

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

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.

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

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.

Ahora es momento de poner a prueba lo aprendido sobre estos temas.

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

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

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á.

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

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.

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

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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

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.

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.

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

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.

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.

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.

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

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.

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

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.

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.

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.

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.

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

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.

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

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

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.

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.

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

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.

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.

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.

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.

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.

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

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.

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.

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

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.

Es necesario que apliques todo lo aprendido hasta el momento. Esta sencilla pero retadora propuesta te hará interiorizar y aprehender absolutamente todo lo relacionado a punteros, memoria dinámica, listas encadenadas e incluso funciones y procedimientos.

ES DE CARÁCTER OBLIGATORIO y se esperará que entregues tu trabajo.

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.

Traffic lights

Read about what's good
what should give you pause
and possible dealbreakers
Begins with structured programming, which allows learners to grasp fundamental concepts applicable across various modern languages
Progresses through different programming paradigms, including structured, modular, object-oriented, and GUI programming, offering a comprehensive learning experience
Covers dynamic memory management and abstract data types, which are essential for creating efficient and well-structured programs
Includes a module on GUI programming using the LCL library of Lazarus, which provides a practical introduction to creating user interfaces
Features a module on MySQL and SQLite databases, which extends beyond programming itself but is crucial for modern application development
Requires learners to install Lazarus, which may require additional steps for Linux or Mac users, potentially posing a minor inconvenience

Save this course

Create your own learning path. Save this course to your list so you can find it easily later.
Save

Reviews summary

Fundamentos de programación desde cero

Según estudiantes, este curso ofrece una inmersión profunda en los fundamentos de la programación partiendo completamente desde cero. Cubre una amplia gama de paradigmas y estructuras de datos, desde la programación estructurada hasta la orientada a objetos y bases de datos. Los proyectos prácticos son extensos y desafiantes, diseñados para aplicar intensivamente lo aprendido. Aunque el enfoque en punteros y memoria dinámica llega temprano y es muy detallado, es parte clave de la formación rigurosa. La cobertura es muy completa, abordando incluso interfaces gráficas.
Se basa en un lenguaje y entorno específicos.
"Se enseña con Lazarus y Pascal, lo que es una base, pero quizás menos común hoy."
"Una vez que entiendes la lógica, puedes aplicarla a otros lenguajes fácilmente."
"Preferiría un lenguaje más moderno, pero la metodología es lo importante."
Introduce punteros y memoria al principio.
"El módulo de punteros en el segundo bloque es intenso, prepárate."
"Ver memoria dinámica tan pronto fue un poco abrumador al principio, pero útil."
"Entender los punteros es clave y el curso no le tiene miedo a mostrarlo."
Cubre múltiples paradigmas y áreas de la programación.
"Va desde estructurada hasta POO, bases de datos e interfaces, muy completo."
"Me gusta que toque tantos palos, te da una visión general."
"El temario es ambicioso y cumple con abarcar todo lo prometido."
Los proyectos finales ponen a prueba todo lo aprendido.
"Los proyectos son desafiantes pero te obligan a aplicar todos los temas."
"El proyecto del Buscaminas o el MasterMind fueron muy educativos."
"Se valora mucho la cantidad y complejidad de los ejercicios propuestos."
Profundiza en conceptos esenciales de programación.
"La base teórica que da el curso es muy sólida y necesaria."
"Entendí conceptos como punteros y memoria que en otros lados pasan por alto."
"Me dio una comprensión profunda de cómo funcionan las cosas a bajo nivel."
Ideal para quienes no tienen conocimientos previos.
"El curso realmente empieza desde lo más básico, perfecto para principiantes."
"No sabía nada de programar y seguí el curso sin problemas, explica todo paso a paso."
"Es un excelente punto de partida si nunca tocaste código antes."

Activities

Be better prepared before your course. Deepen your understanding during and after it. Supplement your coursework and achieve mastery of the topics covered in Programación profesional desde cero with these activities:
Revisar 'Pascal Programming for Dummies'
Proporciona una introducción amigable a la programación en Pascal, ideal para principiantes.
View Melania on Amazon
Show steps
  • Lee los capítulos sobre variables, tipos de datos y estructuras de control.
  • Realiza los ejercicios propuestos en el libro.
  • Compara los conceptos del libro con los del curso.
Repasar los tipos de datos primitivos
Refresca tu conocimiento sobre los tipos de datos primitivos en Pascal para comprender mejor cómo se utilizan en el curso.
Browse courses on Variables
Show steps
  • Revisa la documentación de Pascal sobre tipos de datos.
  • Escribe pequeños programas para practicar el uso de cada tipo.
  • Identifica las diferencias entre los tipos de datos.
Crear una guía de referencia rápida de sintaxis de Pascal
Consolida tu conocimiento de la sintaxis de Pascal y ten una referencia útil para consultar durante el curso.
Show steps
  • Recopila ejemplos de código de diferentes partes del curso.
  • Organiza los ejemplos por tema (variables, estructuras de control, etc.).
  • Añade una breve explicación de cada ejemplo.
  • Crea un índice para facilitar la búsqueda de información.
Four other activities
Expand to see all activities and additional details
Show all seven activities
Revisar 'Estructuras de datos y algoritmos'
Proporciona una base sólida en estructuras de datos y algoritmos, crucial para la programación profesional.
Show steps
  • Lee los capítulos relevantes sobre listas enlazadas y árboles.
  • Implementa ejemplos de código en Pascal.
  • Resuelve ejercicios del libro relacionados con el curso.
Ejercicios de recursividad
Practica la recursividad resolviendo problemas clásicos como el factorial, la serie de Fibonacci y el recorrido de árboles binarios.
Show steps
  • Escribe una función recursiva para calcular el factorial de un número.
  • Implementa una función recursiva para generar la serie de Fibonacci.
  • Crea una función recursiva para recorrer un árbol binario en preorden, inorden y postorden.
Desarrollar un programa de gestión de contactos
Aplica los conceptos aprendidos en el curso, como tipos de datos, estructuras de datos y archivos, para crear un programa funcional.
Show steps
  • Define la estructura de datos para almacenar la información de los contactos.
  • Implementa funciones para agregar, eliminar y buscar contactos.
  • Guarda los datos en un archivo y cárgalos al iniciar el programa.
  • Crea una interfaz de usuario básica para interactuar con el programa.
Crear un tutorial sobre punteros en Pascal
Explica el concepto de punteros, su uso y las precauciones necesarias al trabajar con memoria dinámica.
Show steps
  • Investiga a fondo el concepto de punteros en Pascal.
  • Escribe una explicación clara y concisa sobre qué son los punteros.
  • Incluye ejemplos de código para ilustrar su uso.
  • Describe los riesgos asociados con el uso de punteros y cómo evitarlos.

Career center

Learners who complete Programación profesional desde cero will develop knowledge and skills that may be useful to these careers:
Programador
Un programador escribe, prueba y mantiene el código que permite que las aplicaciones informáticas funcionen. Este curso está diseñado para enseñar programación desde cero, independientemente de cualquier lenguaje específico. Los módulos de programación estructurada, modular y orientada a objetos son esenciales para cualquier programador. Además, la práctica del desarrollo de proyectos y la resolución de problemas complejos prepara al estudiante para los desafíos reales de la programación. Para una persona que quiere ser un programador, este curso puede ser perfecto. Los fundamentos teóricos y la práctica intensiva proporcionados en el curso preparan a los aspirantes a programadores para el éxito.
Desarrollador de software
Un desarrollador de software participa en el diseño, desarrollo y mantenimiento de aplicaciones. Este curso ayuda a construir una base sólida en los paradigmas de programación estructurada, modular y orientada a objetos, todos esenciales para el desarrollo de software profesional. El desarrollo de proyectos y la resolución de problemas complejos en este curso preparan al estudiante para los desafíos del mundo real, haciendo de este curso un excelente punto de partida para convertirse en un desarrollador de software exitoso. Desarrollar proyectos y resolver problemas complejos es una preparación para el desarrollo de software. Los módulos sobre programación orientada a objetos y bases de datos SQL profundizan aún más en los principios del desarrollo moderno de aplicaciones.
Ingeniero de Software
Un ingeniero de software aplica principios de la ingeniería al diseño, desarrollo, prueba y evaluación del software y los sistemas que hacen funcionar a las computadoras. Este curso es fundamental, ya que proporciona una formación integral en programación desde cero, abarcando desde la programación estructurada hasta la programación orientada a objetos. La capacidad de dividir grandes retos en pequeñas partes, que se fomenta en este curso, es crucial para la ingeniería de software. Además, el módulo sobre bases de datos SQL es fundamental para el desarrollo de aplicaciones empresariales. Tomar este curso es una inversión en una base sólida para una carrera exitosa como ingeniero de software.
Desarrollador de Bases de Datos
Un desarrollador de bases de datos diseña, implementa y mantiene bases de datos. Este curso prepara para esta profesión. Un desarrollador de bases de datos necesita comprender los principios de la programación y el diseño de sistemas, que se cubren en este curso. El módulo sobre bases de datos SQL es directamente relevante para esta función, ya que cubre la conexión de bases de datos a un programa y el análisis y diseño de persistencia. Asimismo, comprender sobre tipos de datos complejos y cómo gestionar los mismos. Este curso ayuda a construir bases sólidas.
Desarrollador web
Un desarrollador web crea y mantiene sitios web. La formación en programación desde cero que ofrece este curso, que abarca la programación estructurada, modular y orientada a objetos, es fundamental para el desarrollo web. El módulo sobre bases de datos SQL es especialmente relevante para el desarrollo de aplicaciones web dinámicas. Como desarrollador web debes tener conocimientos sobre estructuras de datos. Este curso es un gran paso para convertirte en un desarrollador web capaz y exitoso. Desarrollar proyectos y aprender a resolver problemas complejos es una buena manera de preparase.
Desarrollador de Aplicaciones Móviles
Un desarrollador de aplicaciones móviles crea aplicaciones para dispositivos móviles como teléfonos inteligentes y tabletas. Este curso sienta las bases para el desarrollo de aplicaciones móviles proporcionando una formación integral en programación desde cero. El conocimiento de la programación orientada a objetos es crucial para el desarrollo de aplicaciones móviles. Los módulos sobre programación orientada a objetos y bases de datos SQL son esenciales para el desarrollo de aplicaciones móviles modernas. Los conocimientos adquiridos en este curso sobre interfaces gráficas de usuarios son algo a tener en cuenta.
Arquitecto de software
Un arquitecto de software es responsable del diseño de alto nivel de los sistemas de software. Este curso proporciona una base sólida en los paradigmas de programación estructurada y orientada a objetos, así como en el diseño de bases de datos. La arquitectura de software requiere la capacidad de dividir sistemas complejos en componentes más pequeños y manejables, una habilidad que se desarrolla a través de los proyectos y ejercicios de resolución de problemas en este curso. Este curso puede ser muy útil. Comprender sobre patrones de diseño, o lenguajes de programación puede ser algo a tener en cuenta.
Ingeniero de datos
Un ingeniero de datos construye y mantiene la infraestructura que permite a las organizaciones recopilar, almacenar y analizar datos. Si bien esta función puede no ser puramente de programación, las habilidades de programación son esenciales para la ingeniería de datos. Este curso ayuda a construir una base sólida en lógica de programación, estructuras de datos y manipulación de datos. El conocimiento de bases de datos SQL que se imparte en este curso es valioso para construir y mantener almacenes de datos. Tomar este curso te ayuda a convertirte en un ingeniero de datos sofisticado.
Analista de Sistemas
Un analista de sistemas investiga los problemas de los sistemas informáticos y elabora soluciones. Este curso puede ayudar a comprender los principios de la programación y el diseño de sistemas, un conocimiento esencial para un analista de sistemas. La capacidad de dividir grandes retos en pequeñas partes, que se fomenta en este curso, es crucial para la funcionalidad de los sistemas. Este curso te puede ser útil para tener una base sólida en el análisis de sistemas. El conocimiento de tipos de datos, y manejo de la información son importantes.
Analista de Datos
Un analista de datos examina grandes cantidades de datos para identificar tendencias, desarrollar gráficos y crear presentaciones. Si bien este rol puede no ser directamente de programación, este curso puede ser útil para construir una base en lógica de programación, estructuras de datos y manipulación de datos. El conocimiento de bases de datos SQL que se imparte en este curso es valioso para extraer, limpiar y transformar datos. Un curso donde se desarrolla proyectos y se aprende a resolver problemas complejos es un ventaja para el análisis de datos. Tomar este curso ayudaría a convertirse en un analista de datos bien preparado.
Consultor de Tecnología
Un consultor de tecnología asesora a las organizaciones sobre cómo utilizar la tecnología de la información para alcanzar sus objetivos empresariales. Este curso ayuda a desarrollar una comprensión de los principios de la programación y el diseño de sistemas. El conocimiento de bases de datos SQL y el diseño de interfaces gráficas de usuario son útiles para recomendar soluciones técnicas. Construir y desarrollar proyectos complejos ayuda a prepararse mejor a las situaciones reales. Para un consultor en tecnología, este curso puede ser una de las mejores inversiones.
Científico de datos
Un científico de datos utiliza métodos científicos, procesos, algoritmos y sistemas para extraer conocimientos y perspectivas de datos en diversas formas, tanto estructurados como no estructurados. Si bien para esta función se requiere un profundo conocimiento de las estadísticas y el aprendizaje automático, las habilidades de programación también son esenciales. Este curso ayuda a construir una base sólida en lógica de programación, estructuras de datos y manipulación de datos. El conocimiento de bases de datos SQL que se imparte en este curso es valioso para extraer y limpiar datos. Tomar este curso puede ser un buen paso para entrar en la ciencia de datos.
Administrador de Sistemas
Un administrador de sistemas es responsable de la configuración, el mantenimiento y la fiabilidad de los sistemas informáticos. Si bien esta función no es directamente de programación, las habilidades de programación pueden ser útiles para automatizar tareas y solucionar problemas. Este curso puede ayudar a construir una base sólida en lógica de programación y diseño de sistemas. Comprender cómo interactúan los diferentes componentes de un sistema de software puede ser útil para un administrador de sistemas. Aprender a gestionar tipos complejos de datos, es algo a tener en cuenta.
Probador de software
Un probador de software es responsable de probar el software para identificar y corregir errores. Este curso ayuda a comprender los principios de la programación y el diseño de sistemas, lo que permite al probador de software crear casos de prueba eficaces. La capacidad de dividir grandes retos en pequeñas partes, que se fomenta en este curso, es útil para diseñar estrategias de prueba integrales. Este curso puede ser una primera aproximación útil. Comprender lenguajes de programación puede ayudar a crear un software de pruebas, que es a su vez sometido a pruebas.
Gestor de Proyectos Técnicos
Un gestor de proyectos técnicos planifica, ejecuta y cierra proyectos relacionados con el desarrollo de software. Aunque esta función no implica necesariamente la escritura de código, la comprensión del proceso de desarrollo de software es crucial. Este curso ayuda a adquirir una comprensión general de los paradigmas de programación, las estructuras de datos y el diseño de bases de datos. La formación en el desarrollo de proyectos y la resolución de problemas puede ser valiosa para la gestión de proyectos técnicos. Tener un conocimiento de bases de datos SQL, ayuda al gestor a dirigir la hoja de ruta.

Reading list

We've selected two books that we think will supplement your learning. Use these to develop background knowledge, enrich your coursework, and gain a deeper understanding of the topics covered in Programación profesional desde cero.
Este libro proporciona una base sólida en estructuras de datos y algoritmos, crucial para la programación profesional. Cubre temas como listas enlazadas, árboles y recursividad, que son fundamentales en este curso. Si bien no es específico de Pascal, los conceptos son aplicables y profundizan la comprensión. Es más valioso como lectura complementaria para ampliar el conocimiento.

Share

Help others find this course page by sharing it with your friends and followers:

Similar courses

Similar courses are unavailable at this time. Please try again later.
Our mission

OpenCourser helps millions of learners each year. People visit us to learn workspace skills, ace their exams, and nurture their curiosity.

Our extensive catalog contains over 50,000 courses and twice as many books. Browse by search, by topic, or even by career interests. We'll match you to the right resources quickly.

Find this site helpful? Tell a friend about us.

Affiliate disclosure

We're supported by our community of learners. When you purchase or subscribe to courses and programs or purchase books, we may earn a commission from our partners.

Your purchases help us maintain our catalog and keep our servers humming without ads.

Thank you for supporting OpenCourser.

© 2016 - 2025 OpenCourser