Programación: Introducción a la programación [IaP]

noviembre 7, 2016 /

Bienvenidos a este curso de Introducción a la programación.
Introducción a la programación

En mi transcurso en el aprendizaje de la programación, mis motivaciones han sido distintas. Todo empezó buscando tutoriales de como codificar archivos Batch para gastarles bromas a mis amigos. A continuación mi motivación fue la de crear videojuegos con RPG Maker (aunque en este caso no se puede considerar picar código como tal ya que es un lenguaje de programación visual) la cual me fue de gran ayuda para asentar mis bases de Algoritmia. Después de un tiempo alejado de la informática, mi siguiente motivación fue la de crear videojuegos con Unity 3D. Hoy en día mi motivación es profesional, y procuro que nunca se pause mi aprendizaje.

Como habéis podido ver, mis motivaciones han sido distintas a lo largo de mi educación. Con esto no me refiero a que necesitas varias motivaciones para aprender a programar. Me refiero a que necesitas una motivación para aprender una nueva disciplina, un objetivo que puedas visualizar a largo plazo que te motive a continuar en ello, porque entonces, los momentos en los que te sientas superado por la dificultad, esa motivación es la que te empujará a continuar.

¿Estoy pretendiendo asustaros? En absoluto. Pero si que es cierto, que a algunas personas les cuesta más entender los paradigmas de la programación, u otras personas (me incluyo entre ellas) tienen un tiempo de atención corto (empiezan proyectos que dejan inacabados) o simplemente quieren aprender lo más rápido sin esfuerzo a cambio. Os aviso de ya, si no practicáis lo suficiente, solo leyendo los cursos jamás aprenderéis a programar. La programación es una disciplina que necesita de mucha práctica para su correcta interiorización, como las matemáticas (de hecho la programación yo la incluyo en el ámbito de las matemáticas ya que la programación no es más que un conjunto de operaciones, reglas y lógica).

El resumen es que, lejos de querer asustaros, debéis tener claro que vais a tener que practicar bastante para aprender a programar (no sirve solo leer cursos), y que para ello necesitáis una motivación en mente que os empuje a no abandonar la tarea del aprendizaje.

¿Cómo articularemos el curso?

Hoy en día hay cientos y cientos de cursos, tutoriales, manuales, libros, y en definitiva, material para aprender a programar.

¿Con este curso buscamos desbancar al resto? No. Lo que buscamos es aportar nuestro granito de arena. Aportar nuestro granito de arena a nuestra manera, porque, aunque si que hay material de calidad, vemos muchos errores recursivos que fomentan el mal aprendizaje del estudiante. Por ejemplo uno de los mayores errores que veo a la hora de enseñar a programar es enseñar directamente a programar con lenguajes orientados a objetos. Ahora mismo os estaréis preguntando que cojones esta diciendo este hombre, tranquilos, todo a su tiempo.

El caso es que nuestro curso de introducción a la programación estará conformado de dos grandes partes. La primera parte estará dedicada a algunos conceptos básicos de la computación necesarios y a la programación en C, el cual es el lenguaje más popular para software de sistemas (lenguaje usado en UNIX), y considerado como un lenguaje que si lo aprendes, aprender otros lenguajes será cuestión de días. La segunda parte estará dedicada a la programación orientada a objetos, un paradigma de programación distinto al usado por C (el cual es programación estructurada) y que es el más común en los lenguajes y aplicaciones de hoy en día. Para esta segunda parte nos apoyaremos en Java, uno de los lenguajes de programación más popular hoy en día debido a sus características.

El formato del curso será en distintas entradas, cada una de ellas corresponden a un tema del curso. Estas estarán conformadas por una entrada de teoría, y otra entrada de ejercicios. Es muy pero que muy importante que todos los ejercicios se lleven a cabo, siendo esta parte la fundamental del curso para el aprendizaje. Pasados tres días de la publicación de los ejercicios, se subirá una entrada con la corrección de estos. Las publicaciones de las entradas no se harán regularmente, aunque intentaremos no superar una semana entre publicación y publicación. Es posible que al finalizar todo el curso, todo el material sea unificado en un solo PDF. Al final de cada entrada, será recogida la bibliografía usada para la escritura del curso, y también lecturas recomendadas para profundizar en el tema.

Tenéis que tener en cuenta, que se dará por hecho que el estudiante tiene un nivel mínimo de matemáticas, ya que la mayoría de los ejercicios tratarán las matemáticas, en caso contrario no te desanimes, ya que en internet hay mucha información sobre cualquier cosa que no entiendas, y si hay un método matemático que no controles, en google seguro que encuentras como llevarlo a cabo.


 

A continuación os detallamos el planning del curso:

Introducción a la programación

Parte I – Lenguaje estructurado.

I. Conceptos básicos de programación

  1. Organización de un computador
  2. Términos básicos en programación
  3. Etapas en la elaboración de un programa.
  4. Proceso de codificación y prueba de un programa

II. Empezando a programar

  1. Identificador
  2. Variable
  3. Constantes
  4. Expresión
  5. Sentencia
  6. Estructura de un programa

III. Tipos de datos elementales

  1. Caracteres
  2. Enteros
  3. Reales
  4. Conversión de tipos de datos elementales

IV. Sentencias condicionales

  1. Sentencias condicionales
  2. Anidaciones en las sentencias condicionales
  3. Errores comunes al utilizar las sentencias condicionales
  4. Ejemplo de uso de las sentencias condicionales

V. Sentencias iterativas

  1. Sentencias iterativas
  2. Equivalencia entre las sentencias for y while
  3. Errores comunes al utilizar las sentencias iterativas
  4. Anidaciones en sentencias iterativas
  5. Ejemplo de uso de las sentencias iterativas

VI. Estructuras

  1. Estructuras
  2. Declaración de estructuras
  3. Operaciones con estructuras
  4. Ejemplo de uso de estructuras

VII. Vectores

  1. Vectores
  2. Declaración de vectores
  3. Operaciones con vectores
  4. Algoritmos básicos de vectores
  5. Ejemplos de uso de vectores

VIII. Funciones: paso de parámetros por valor

  1. Función
  2. Llamada a una función
  3. Definición de una función
  4. Prototipo de una función
  5. Evaluación de una función paso a paso
  6. Ejemplo de uso de funciones

IX. Funciones: paso de parámetros por referencia

  1. Paso de parámetros por referencia
  2. Punteros
  3. Paso de parámetros por referencia de tipos elementales
  4. Paso de parámetros por referencia de estructuras
  5. Paso de parámetros por referencia de vectores
  6. Ejemplos de uso de funciones con paso por referencia

Parte II – Programación orientada a objetos

I. El paradigma de la orientación a objetos: clases y objetos

  1. Presentación del paradigma de la orientación a objetos
  2. Conceptos de objeto y clase
  3. Atributos y métodos

II. Clases y objetos en Java

  1. Sintaxis de definición de clases en Java
  2. Definición de atributos. Modificadores de acceso
  3. Definición de métodos. Métodos especiales: constructores, métodos de acceso a atributos
  4. Creación de objetos: operador new. Gestión dinámica de memoria
  5. Atributos y métodos estáticos. Su razón de ser y su uso
  6. Modificadores constant y final

III. Tipos primitivos en Java y clases relevantes

  1. Tipos primitivos en Java: enteros, reales, carácter, booleano, byte
  2. Clases correspondientes a los tipos primitivos: integer, double, float, character, boolean, byte
  3. Clase String. Concepto y metodos mas relevantes
  4. De valores numéricos a su representación textual como Strings y viceversa

IV. Contenedores

  1. Concepto de objeto contenedor
  2. Tipos de contenedores: secuencias, diccionarios y conjuntos
  3. Implementación de secuencias en Java. ArrayList y LinkedList. Métodos mas relevantes
  4. Iteradores. Concepto y su papel en el recorrido de secuencias
  5. Implementación de diccionarios en Java. HashMap. Metodos mas relevantes
  6. Obtención de vistas parciales de un diccionario: métodos keySet(), values()
  7. Implementación de conjuntos en Java: HashSet. Métodos mas relevantes
  8. Identificación del tipo de contenedor que es preciso utilizar en cada caso

V. Introducción al UML. Diagrama de clases

  1. El UML como un lenguaje de representación gráfica de un programa
  2. El diagrama de clases
  3. Relaciones entre clases: asociaciones y dependencias
  4. Definición completa de una asociación: nombre, direccionalidad, cardinalidad
  5. Implementación de las asociaciones en el código Java

VI. Herencia y polimorfismo

  1. Concepto de herencia. Superclases y subclases. Herencia de atributos y metodos
  2. Constructores en las subclases
  3. La herencia como relación entre clases. representación de la herencia en diagramas de clases.
  4. La clase Object como clase raíz de la jerarquía de clases en Java. El método toString() de Object
  5. Concepto de polimorfismo. Metodos polimórficos.
  6. El interface en Java. El interface como simulador de herencia múltiple. El interface como mecanismo que permite a un mismo objeto presentar varios tipos de comportamiento.

VII. Excepciones

  1. El concepto de excepción
  2. Generación, lanzamiento y recogida de excepciones en Java
  3. Tratamiento de excepciones

VIII. Entrada/Salida en Java

  1. Concepto de flujo de datos “stream”
  2. Jerarquía de clases Java para Entrada/Salida basada en flujos como ejemplo de patrón. Decorador
  3. Clases para Entrada/Salida de bytes
  4. Clases para Entrada/Salida de caracteres


El curso está basado en dos asignaturas de la escuela ETSETB de la UPC. Tanto la articulación del curso como la mayoría de las imágenes utilizadas, son extraídas de los manuales de dichas asignaturas.

Deja un comentario