Comienza Contenido

Aprender a Programar (Un lenguaje nuevo)

La metodología de aprendizaje de un lenguaje de programación es siempre la misma. A pesar de la gran variedad de lenguajes de programación que existen en la actualidad, con una base adecuada cualquier persona puede aprender en 30 horas lo básico para comenzar a programar.

Objetivos

  • Comenzar a programar (nociones básicas)
  • En Cualquier Lenguaje (escoger uno)

Clases

  1. Antes de Comenzar: Afilar las herramientas
    • Herramientas pare resolver problemas:
      • ¿Qué es un lenguaje de programación?
      • ¿Para qué sirve el software?: para resolver problemas
    • La plataforma
      • Hardware: Plataforma Hardware disponible
      • Software: Sistema Operativo y Software especializado
    • Documentación Necesaria:
      • Para Aprender: Tutorial y Guías
      • Para Programar: Especificaciones y Soporte
    • Crear un Programa (archivo de texto):
      • Tipos de Herramientas: sueltas (editor de texto + comandos) vs integradas (IDE)
      • Debe ser un Editor de Texto Avanzado
      • Manejo Potente de texto:
        • Gestionar Texto: añadir, quitar, modificar
        • Gestionar Archivos de Texto (abrir, cerrar, insertar, guardar como ...)
        • Hacer búsquedas y reemplazos
      • Manejo del Lenguaje de Programación:
        • Resaltado de palabras reservadas y sintaxis, control sintáctico (paréntesis, indentación) e integración con la documentación del lenguaje.
        • Avanzado: varios archivos a la vez, soporte a control de versiones, conexión a consolas remotas, etc
    • Repasar Conceptos Básicos de Arquitectura del Computador
    • Características de un programador (lo que NO debemos ser pero somos):
      • impaciente. Porque las cosas no salen a la primera
      • indisciplinado. Porque hay que tener hábitos de programación
      • petulante. Porque no se hacen programas para que nos alaben sino para ser útiles
  2. El Lenguaje de Programación
    • Clasificación de los Lenguajes
      • Según Cercanía a la Máquina (Nivel de Abstracción): máquina, ensamblador, alto nivel
      • Según la Evolución del Hardware: 1a (40-60), 2a (60-64), 3a (64-72), 4a (72-81), 5 (81-90), 6a (Internet)
      • Según su Estructura Gramatical: Imperativo (digo cómo hacerlo) y Declarativo (digo qué hacer)
      • Según el procesado: interpretados y compilados
      • Según el paradigma metodológico: estructurada, orientada a objetos, orientada a eventos, etc
      • Según el uso : lenguajes de descripción de datos
      • Según el componente gráfico: los lenguajes Visual
      • Según su grado de utilidad: Esotéricos (para divertirse) / Complicados
    • Niveles del lenguaje:
    • Elementos del Lenguaje (palabras reservadas): Identificadores, Constantes, Operadores, Instrucciones y Comentarios
    • Características Generales de un Lenguaje
      • Qué es un programa
        • Programas Fuente: archivos de texto
        • Control y numeración de versiones
        • Documentación
      • Programación Modular y Estructurada
        • Funciones, Módulos y Librerías
        • Documentación y Conexión
      • Programación Orientada a Objetos
        • Descripción básica de un objeto: coche
        • Lenguajes Orientados a Eventos como un ejemplo simplificado de POO
      • Teorema de Dijkstra o ¿qué sentencias necesito conocer para programar?
        • Secuencia de Instrucciones
        • Sentencia Condicional: IF condicion THEN instruccion1 ELSE instruccion2
        • Sentencias Repetitivas: WHILE condicion DO instruccion (o DO..UNTIL)
      • SeudoCódigo
  3. Aprender el lenguaje (Programa Hola Mundo)
    • ¿Cual escojo? Depende (trabajo, uso)
    • Programa Hello World:
      • Cargar el software
      • Instrucción básica de entrada/salida
    • Ejemplos de Hola Mundo en diferentes lenguajes
  4. Ejemplo con un lenguaje: Descripción y Preparación del entorno
    • Características comunes a los lenguajes
      • Caracteres Básicos y Palabras Reservadas
      • Sentencias de Asignación
      • Operadores Aritméticos y Lógicos
      • Sentencias de Control
      • Sentencias de Repetición
    • Cosas que tengo que ir controlando
      • Asignación de Variables y Valores. Estructuras de datos (escalares, listas, hash, etc)
      • Operaciones Aritméticas y Lógicas. Condiciones
      • Instrucciones de control de flujo y repetición
      • Programación modular: subrutinas, funciones, librerías
    • Palabras Reservadas, Tipos de Datos, Asignación de Variables, Operadores Aritméticos y Lógicos, Herramientas de Control de Flujo, Iteraciones y Recursividad, Módulos (Procedimientos, Funciones), Parámetros y Estructura General
    • Lenguaje y Recursos Extra (librerías). APIs de Programación
  5. Aprender a Programar:
    • Practicar (Hacer tu Hola Mundo)
    • Ver código
    • Practicar (Algunos ejercicios)
    • Ver Código
    • y ... practicar

Actividades de Aprendizaje

  1. Entorno de Desarrollo:
  2. Un lenguaje de programación
    • Buscar algunas Alternativas de lenguajes (tres)
    • Analizar Ventajas e Inconvenientes (4) y contrastar
    • Escoger uno ((P.ej Javascript o Perl)
    • Preparar Entorno de Desarrollo:
      • Hardware
      • Software: Sistema Operativo, versión del lenguaje y librerías necesarias
    • Imprimir un ejemplo de programa, probarlo y Analizarlo
    • Comenzar a trabajar con el lenguaje (Guías / Tutoriales): historia, palabras reservadas, sintaxis más común, etc
  3. Aprender el Lenguaje (lo básico)
    1. Configurar entorno de desarrollo: programas que se necesita
    2. Tener Instalación Local de Documentación y Links (Bookmarks)
    3. Hacer el programa Hola Mundo
  4. Aprender el Lenguaje (y II):
    • Manejo de Variables (escalares, listas, hash, etc)
    • Manejo de Estructuras de Control
    • Manejo de funciones y librerías (Programación Modular)
    • Ejemplos de Ejercicios
      1. Sustitución de Variables: Hola Mundo con sustitución de una variable
      2. Variables: imprimir una lista, un array o una tabla hash.
      3. Estructuras de Control: ejemplo de if/else y operadores de comparación
      4. Estructuras Repetitivas: ejemplo de while y condiciones en el bucle
      5. Entrada/Salida: realizar la suma de dos valores de entrada, o division con control de dividendo cero
      6. Manejo de Texto: intercambiar letras, o palabras, búsqueda de caracteres en palabras, validación de textos, etc
  5. Practicar, Practicar, Practicar
    • Ejercicios Básicos (comunes)
      1. Dado un número N, escribir los números de 1 a N y después de N a 1
      2. En el anterior, cuando el número sea la mitad poner: Este es la mitad
      3. Dada una cadena de entrada, analizarla: Decir longitud total, las vocales que tiene (y contarlas) y escribir las palabras por separado. Sustituir espacios por signo menos - .
    • Ejercicios Avanzados Perl (o lenguaje similar):
      1. Conectarse a una base de datos y mostrar datos de una tabla
      2. Crear una página HTML (archivo) a partir de una tabla de la Base de Datos
      3. Mostrar el texto de los enlaces de una página Web Externa
    • Ejercicios Avanzados JavaScript (o lenguaje similar):
      1. Validar los datos de entrada a un formulario (por ejemplo un teléfono o dirección de correo o el NIF)
      2. Modificar el comportamiento de la página desde un formulario. Por ejemplo mostrar/ocultar texto, o cambiar estilo de la página, etc
      3. En un campo de codigo postal, sugerirle al usuario qué codigo postal poner

Duración del Curso

El esfuerzo estimado del curso es de 1 crédito ECTS. Unas 30 horas de dedicación.

Recursos a Utilizar

Hay muchos lenguajes de programación y algunos típicos son:

pero ... hay muchos más (más de 2.500 documentados y no todos son tan utilizados)

Para los trabajos del curso nos centraremos en perl y javascript aunque vale cualquiera. Hay mucha información sobre los distintos lenguajes de programación, sobre todo en sus páginas principales de referencia. Algunos tutoriales que he ido recopilando (algunos en inglés) son los siguientes:

  1. Teach Yourself C++ in 21 Days
  2. Curso Completo / JavaScrip Tutorial /
  3. PHP Tutorial
  4. TCL for Web Nerds
  5. Python Tutorial

Si lo que buscas es un curso más avanzado pues uno muy bueno es The Structure and Interpretation of Computer Programs (en inglés, 40 Clases, con Lenguaje Scheme)