Aprendiendo a Programar

El objetivo de este curso es iniciarse en el arte de la programación desde cero. No se requieren conceptos previos de programación y se hace una introducción gradual en esta ciencia.
Se utilizan en un principio el planteo de «Diagramas de Flujo» para la resolución de problemas y su posterior codificación con en varios lenguajes.

Se busca ir conociendo los rudimentos básicos de la programación presentando los conceptos con ejercicios resueltos e invitando a la resolución de otros problemas propuestos.

El curso está ideado para ser desarrollado por una persona que no conoce nada de programación y tomando como objetivo fundamental, el permitir que el estudiante pueda resolver problemas de distinta índole (matemáticos, administrativos, gráficos, contables etc.) empleando como herramienta la computadora.

Hay que tener en cuenta que para llegar a ser programador se debe recorrer un largo camino donde cada tema es fundamental para conceptos futuros. Es importante no dejar temas sin entender y relacionar. La programación a diferencia de otras materias como podría ser la historia requiere un estudio metódico y ordenado.

Es bueno tenerse paciencia cuando los problemas no se resuelven por completo, pero es de fundamental importancia dedicar tiempo al análisis individual de los problemas.

Indice de temas del curso

Nociones básicas de programación
– Conociendo los Lenguajes
Algoritmos, Pseudo Código, Diagramas y Lenguajes.
– Paradigmas de programación
– Creación de un proyectos en varios lenguajes
– Diagramas de flujo
– Codificación del diagrama de flujo
– Errores sintácticos y lógicos
– Estructura de programación secuencial
– Estructuras condicionales simples y compuestas
– Estructuras condicionales anidadas
– Condiciones compuestas con operadores lógicos
– Estructura repetitiva while
– Estructura repetitiva for
– Estructura repetitiva do while
– Cadenas de caracteres
– Declaración de una clase y definición de objetos.
– Declaración de métodos
– Estructura de datos tipo vector
– Vector (Tamaño de un vector)
– Vectores paralelos
– Vectores (mayor y menor elemento)
– Vectores (ordenamiento)
– Vectores (ordenamiento con vectores paralelos)
– Estructura de datos tipo matriz
– Matrices (cantidad de filas y columnas)
– Matrices y vectores paralelos
– Matrices irregulares o dentadas

– Constructor de la clase
– Colaboración de clases
– Concepto de propiedad
– Herencia
– Orden de ejecución de los constructores con herencia
– Clase parcial (partial class)
– Interfaces visuales (Windows Forms)
– Cuadro de herramientas (Windows Forms)
– Ventana de propiedades (Windows Forms)
– Ventana de eventos (Windows Forms)
– Controles comunes – Label
– Controles comunes – Button
– Controles comunes – TextBox
– Controles comunes – CheckBox
– Controles comunes – RadioButton
– Controles comunes – ComboBox

– Estructuras dinámicas
– Estructuras dinámicas: Listas
– Estructuras dinámicas: Listas tipo Pila
– Estructuras dinámicas: Listas tipo Pila – Problema de aplicación
– Estructuras dinámicas: Listas tipo Cola
– Estructuras dinámicas: Listas tipo Cola – Problemas de aplicación
– Estructuras dinámicas: Listas genéricas
– Estructuras dinámicas: Listas genéricas ordenadas
– Estructuras dinámicas: Listas genéricas doblemente encadenadas
– Estructuras dinámicas: Listas genéricas circulares
– Recursividad: Conceptos básicos
– Recursividad: Problemas donde conviene aplicar la recursividad
– Estructuras dinámicas: Conceptos de árboles
– Estructuras dinámicas: Inserción de nodos y recorrido de un árbol binario
– Estructuras dinámicas: Implementación en C# de un árbol binario ordenado

– Tipos de datos primitivos en C#
– Definición de variables con tipos implícitos
– Palabra clave this
– Estructura repetitiva foreach
– Estructura condicional switch
– Parámetros por valor
– Parámetros por referencia (ref)
– Parámetros por referencia (out)
– Número variable de parámetros
– Parámetros opcionales
– Llamadas con nombres de parámetros.
– Sobrecarga de métodos
– Sobrecarga del constructor
– Métodos estáticos
– Atributos y propiedades estáticas
– Clases estáticas
– Enumeraciones
– Sobrecarga de operadores
– Indizadores