Curso de Programación I

Programación Basada en Objetos

 

 

 

 

 

Plan del curso

 

 

 

 

 

Financiado por:

Prosoftware

Elaborado por:

Diseño de contenido: MSc. Edgar Casasola Murillo

Diseño curricular: MSc. Melvin Chaves Duarte

Diseño gráfico: Bach. Jorge Villalobos Sancho


Tabla de Contenidos

Tabla de Contenidos.. 2

Introducción.. 3

Objetivos del curso.. 4

Destinatarios.. 5

Estructura y contenidos.. 6

Estructura del curso.. 6

Módulo 1: Bases para la programación por objetos. 6

Módulo 2: Vectores-Matrices e Hileras. 9

Distribución semanal. 10

Metodología.. 15

Recursos.. 18

Informáticos. 18

Documentales. 18

Digitales. 18

Forma de trabajo.. 19

Evaluación del estudiante. 20

Requisitos de aprobación.. 20

Evaluación.. 20


 

Introducción

        En la actualidad existen múltiples perfiles profesionales y académicos en el área de computación.  Sin embargo,  las habilidades y conocimientos adquiridos en cuanto a programación de computadoras son medulares en la formación de cualquier profesional en esta disciplina. 

        El primer curso de programación pretende que el estudiante vaya desarrollando su habilidad para resolver problemas de forma metódica.  En este caso el ciclo de desarrollo de un programa inicia con la identificación del problema a resolver y culmina con la implementación de un programa en algún lenguaje específico.  Aunque existen una serie de contenidos fundamentales que todo programador debe conocer, lo esencial en un programador no es el conocimiento que adquiera de las características específicas de un lenguaje de programación sino su habilidad para resolver problemas.

        Se pretende en este curso que desde un inicio el estudiante vaya experimentado el proceso de resolución de problemas mientras va aprendiendo los conceptos básicos de programación.  El estudiante iniciará identificando un problema, llevando a cabo un análisis y descomposición del mismo, creará un modelo y diseñará una especificación de un algoritmo apropiado para finalmente codificar en un lenguaje su solución. La calidad del código y el proceso de verificación de los productos obtenidos en cada fase son importantes también.

        En la actualidad el desarrollo de software se ha inclinado hacia el desarrollo de aplicaciones modulares implementadas bajo técnicas de análisis orientado a objetos. Además, la mayoría de los programas de estudio en Computación han optado por iniciar la formación en computación mediante la enseñanza de la programación, y específicamente mediante el Paradigma de Programación Orientado a Objetos.  Es por esto que la herramienta mediante la cual el estudiante concretará sus soluciones será un lenguaje de programación orientado a objetos.  Como todos sabemos el conocimiento de la herramienta aunque no sea un elemento central, sigue siendo primordial, ya que en algunos momentos puede facilitar o condicionar las opciones de implementación, debido a los mecanismos y abstracciones presentes en el lenguaje.  El proceso de análisis y diseño, el lenguaje de programación y la herramienta deben pertenecer al mismo paradigma.

        El análisis, diseño e implementación basada en objetos será utilizado como hilo conductor del proceso de enseñanza.   Se pretende que el estudiante pueda ver el panorama general al iniciar el proceso de aprendizaje de manera que pueda tener un contexto de trabajo.  El estudiante irá construyendo y aprendiendo los conceptos mediante su integración al marco conceptual que se va formando.  Cada nuevo concepto será integrado y se explorará la ortogonalidad del mismo con respecto a los conceptos previamente adquiridos.


Objetivos del curso

        En este curso el estudiante creará soluciones para resolver problemas simples mediante el diseño de algoritmos y desarrollo de programas, aplicando técnicas actuales de desarrollo de software orientado a objetos y considerando criterios de calidad apropiados.

        Al finalizar el curso el estudiante deberá ser capaz de:

·         Identificar problemas específicos.

·         Representar problemas mediante la utilización de modelos abstractos.

·         Comprender los elementos y estructuras básicas presentes en un lenguaje de programación orientado a objetos para implementar programas modulares, claros, simples y generales como sea posible.

·         Aplicar a nivel básico buenas prácticas de construcción de software tales como uso de estándares de documentación, codificación, verificación y validación para el aseguramiento de la calidad.

·         Analizar problemas mediante un proceso de descomposición y refinamiento en pasos sucesivos.

·         Sintetizar los resultados del proceso de análisis para diseñar algoritmos para la resolución de problemas.

·         Aplicar una metodología de resolución de problemas que le permita trabajar con orden y disciplina.

·         Descubrir la importancia del desarrollo de buenas prácticas de trabajo en equipo y de comunicación oral para la resolución de problemas.

·         Aplicar técnicas apropiadas de comunicación escrita para la documentación de la solución de cada problema.


Destinatarios

        El curso está dirigido fundamentalmente a los Estudiantes de informática  en general, con un énfasis especial para los estudiantes de los siguientes centros:

*      CENFOTEC

*      Colegio Universitario de Alajuela

*      Colegio Universitario de Cartago

*      Colegio Universitario de Puntarenas

*      Instituto Tecnológico de Costa Rica

*      Universidad de Costa Rica

*      Universidad Estatal a Distancia

*      Universidad Latina

*      Universidad Nacional.

        Es aconsejable pero no imprescindible, tener algunos conocimientos del desarrollo de la computación y del campo de la programación, al igual que familiaridad en cuanto al uso del computador.


Estructura y contenidos

        El curso de Programación I se extenderá preferiblemente a lo largo de 4 meses de trabajo, o una equivalencia aproximada de 180 horas bi-modales.

*        60 Horas presenciales

*        120 Horas extra clase

* Bajo un esquema semestral la recomendación para el estudiante es que le dedique al menos 2 horas diarias al curso de programación.

Estructura del curso

        En cada módulo podremos ver:

Contenidos del curso: Documentos a estudiar. Colgados del Web o CDROM con formato PDF, de fácil impresión.

Material Complementario: lecturas complementarias necesarias para la realización de las actividades programadas.

*  Actividades: Se podrán visualizar y consultar en el manual del estudiante Serán tareas planificadas semanalmente (o después de cada 4 horas de clase).

Seguidamente se muestra una tabla donde se puede ver claramente la estructura detallada del curso:

 

Contenidos

Fechas previstas

Módulo 1: Bases para la programación por objetos

Objetivo general:

El estudiante reconocerá la utilización de los elementos necesarios para construir programas desde una perspectiva de objetos en función de la resolución de problemas.

Objetivos específicos:

·         Describir el ciclo de desarrollo de un programa.

·         Utilizar la estructura básica de un programa orientado a objetos.

·         Utilizar los tipos de valores, constantes, variables y referencias a instancias de objetos, para representar los atributos de una clase.

·         Identificar la importancia de los estándares de codificación y del control de calidad y utilizarlos a un nivel básico.

·         Aplicar apropiadamente las estructuras de control de flujo de programas para la resolución de problemas.

·         Utilizar los operadores lógicos y relacionales para escribir condiciones de control.

·         Construir métodos apropiados para estructurar y desarrollar clases para la resolución de problemas.

·         Crear instancias de clases mediante el uso de métodos.

·         Utilizar la asignación de valores, la entrada-salida básica de datos, los operadores aritméticos y la evaluación de expresiones para resolver problemas simples.

·         Aplicar técnicas de recursividad para la resolución de problemas.

·         Evaluar problemas para determinar el uso de recursividad para la resolución de casos.

Temas:

1. Bases para la programación por objetos.

·         Introducción al ciclo de desarrollo de un programa: Identificación del problema,  Análisis y descomposición del problema, Diseño, Implementación, Ejecución del programa, y Pruebas.

·         Conceptos de: Ambiente de desarrollo, lenguaje, código fuente, código objeto, compiladores e intérpretes.

·         Estructura básica de un programa orientado a objetos.

·         Escritura, compilación y ejecución de un programa.

2. Primitivas de codificación.

·         Valores (literales) tipos, constantes, variables, referencias a instancias de objetos y su uso para la representación de atributos de una clase.

·         Declaración e inicialización de variables para el almacenamiento de valores.

·         Uso de variables como atributos de un objeto

·         Entrada y salida básica de datos.

·         Acceso a los atributos de un objeto (guardar y devolver los valores de cada atributo de un objeto).

·         Operadores aritméticos y evaluación de expresiones para la solución de problemas.

3. Estructuras de Control.

·         Tipos de estructuras de control del flujo de programas. (Secuencial, condicional y de repetición) 

·         Eje transversal: Importancia de los estándares de codificación.

·         Eje transversal: Importancia del control de calidad, listas de revisión y casos de prueba.

·         Operadores relacionales, operadores lógicos y prioridad entre los mismos. 

·         Conceptos de estructuras de: condición, selección de casos, ciclos con contador, ciclos con condición de entrada y ciclos con condición de salida, y su uso para el diseño y desarrollo de soluciones a los problemas.  Ejemplo: if, if-else, switch, for, while, do-while.

4. Métodos.

·         Funciones matemáticas de biblioteca. Por ejemplo: Generación de números aleatorios.

·         Métodos. Pase de parámetros por valor y por referencia. Uso de los métodos para representar las acciones que lleva a cabo un objeto.

·         Sobrecarga de métodos.

·         Constructores y destructores.

·         Principio de localidad de las variables.

·         Recursividad y su uso para resolución de problemas.

·         Creación de objetos mediante métodos “fábrica”.

·         Encadenamiento de métodos.

32 horas  presenciales

8 semanas

del día

____________

 al día

____________

del mes

____________

del año

____________

 

 

Contenidos

Fechas previstas

Módulo 2: Vectores-Matrices e Hileras

Objetivo general:

El estudiante resolverá problemas mediante estructuras de datos de tipo: vector, matriz e hileras de caracteres.

Objetivos específicos:

·         Utilizar vectores y matrices para resolver problemas computacionales.

·         Crear y utilizar las operaciones y manipulación de hileras y caracteres para problemas de texto.

·         Utilizar el conocimiento de matrices para diferenciar la representación interna de una estructura de datos y su interfaz. 

·         Utilizar la graficación para estimular la creatividad y la originalidad en el diseño de la interfaz.

Temas:

1. Fundamentos de Vectores y Matrices.

·         Vectores y su uso para la representación y desarrollo de estructuras de datos.

·         Matrices y su uso para la representación y desarrollo de estructuras de datos.

·         Algoritmos clásicos de ordenamiento (burbuja y selección) y búsqueda en vectores (búsqueda binaria y secuencial).

2. Manipulación de Caracteres e Hileras de Texto.

·         Manipulación de caracteres.

·         Hileras de caracteres (Ejemplo: String).

·         Operaciones básicas con hileras de caracteres. Ejemplo: convertir a mayúscula, minúscula, eliminar blancos, buscar sub-hileras, comparar hileras.

3. Fundamentos de graficación

·         Contextos gráficos.  La pantalla gráfica vista como una matriz de píxeles.

·         Diferenciación entre la representación interna de una estructura de datos y la interfaz visualizada por el usuario.

·         Manejo básico de tipos de letra y color.

·         Formas simples: líneas, círculos, rectángulos y polígonos.

·         Desarrollo de interfaces gráficas.

32 horas  presenciales

8 semanas

del día

____________

 al día

____________

del mes

____________

del año

____________

 

 

Distribución semanal

Del  _______________  al  _______________

 

1ª Semana:  

 TEMA Bases para la programación por objetos

 

Del  _______________  al  _______________

 

2ª Semana:  

 TEMA Primitivas de codificación (variables)

·         Tipos, literales, constantes, variables, referencias a instancias de objetos y su uso para la representación de atributos de una clase.

·         Declaración e inicialización de variables para el almacenamiento de valores.

·         Uso de variables como atributos de un objeto.

 

Del  _______________  al  _______________

 

3ª Semana:  

 TEMA Primitivas de codificación (Entrada-almacenamiento-salida)

 

Del  _______________  al  _______________

 

4ª Semana:  

 TEMA Primitivas de codificación (Operadores Aritméticos)

 

Del  _______________  al  _______________

 

5ª Semana:  

 TEMA Estructuras de Control (condición, selección de casos, ciclos con contador)

Del  _______________  al  _______________

 

6ª Semana:  

 TEMA  Estructuras de Control (Ciclos con condición)

 

Del  _______________  al  _______________

 

7ª Semana:  

 TEMA Métodos

 

Del  _______________  al  _______________

 

8ª Semana:  

 TEMA Métodos (y objetos)

 

Del  _______________  al  _______________

 

9ª Semana:  

 TEMA Recursividad

 

Del  _______________  al  _______________

 

10ª Semana:  

 

 TEMA Fundamentos de Vectores

·         Vectores y su uso para la representación y desarrollo de estructuras de datos.

 

Del  _______________  al  _______________

 

11ª Semana:  

 TEMA Vectores

·         Algoritmos de ordenamiento en vectores (burbuja y selección).

·         Algoritmos de búsqueda en vectores (búsqueda binaria y secuencial).

·         Algoritmos recursivos y vectores (ordenamiento, búsqueda).

 

Del  _______________  al  _______________

 

12ª Semana:  

 TEMA Matrices

·         Matrices y su uso para la representación y desarrollo de estructuras de datos.

 

Del  _______________  al  _______________

 

13ª Semana:

 TEMA Manipulación de Caracteres e Hileras de Texto.

·         Manipulación de caracteres.

·         Hileras de caracteres (Ejemplo: String).

·         Operaciones básicas con hileras de caracteres. Ejemplo: convertir a mayúscula, minúscula, eliminar blancos, buscar subhileras, comparar hileras, etc).

 

  

Del  _______________  al  _______________

 

14ª Semana:  

 TEMA  Fundamentos de graficación y desarrollo de interfaces

 

Del  _______________  al  _______________

 

15ª Semana:  

 TEMA  Repaso de actividades del curso

 


Metodología

        Para la instrucción de este curso se ha elegido una metodología denominada Bimodal, mediante la cual los objetivos formativos se alcanzan a través de la interacción entre estudiantes y profesor utilizando una combinación de medios digitales basados en Internet, CDROM y “cara a cara”.  Dejando prevista la posibilidad de implementar el curso vía Videconferencia.

        Los participantes del curso comienzan y finalizan a la vez el proceso formativo, y gracias a este aspecto, todos ellos tienen la posibilidad de experimentar el ambiente que más se adapte a su realidad. Así los estudiantes y facilitadores de la UNED pueden utilizar sus sistemas de Videoconferencia, los de la UNA la plataforma en Internet, o una combinación de ellos.  Con esta metodología y el trabajo en grupo se produce un continuo flujo de comunicación y estímulos que surgen en el transcurso del proceso formativo.

        Por un lado el desarrollo de los contenidos y estudio de casos y algunas tutorías se llevarán a cabo en una fase presencial.  Por otra parte los proyectos o casos de programación para ser resueltos por  grupos de estudiantes corresponden a la fase a distancia.  Por supuesto todo esto acompañado del material y tutoría apropiados.     

        Para lograr los objetivos se pretende seguir la siguiente metodología a lo largo del curso:

1.     Para cada tema se da una presentación de conceptos con el fin de que el estudiante tenga un primer contacto con los mismos.

2.     Se proveerá al estudiante de un ejemplo meramente operacional (“ruido mínimo”) con respecto a la mecánica de implementación de cada concepto aprendido.

3.     Se presentará un ejemplo básico donde se contextualizará lo aprendido dentro del paradigma de la  Programación por Objetos.

4.     Posteriormente se presentará un caso de aplicación contextualizado dentro de todo lo aprendido hasta el momento.

5.     El hilo conductor del curso será la noción de objeto, aunque al inicio del curso se debe trabajar solamente con la mínima cantidad de instancias y clases para evitar ruido en las soluciones.  Sin embargo el estudiante podrá, en etapas tempranas de su aprendizaje, concentrar su trabajo en la implementación de métodos para resolver problemas específicos, y mediante programas de prueba para proveer un contexto estático implementando la solución general dentro del método principal de la clase o “main”.

6.     Para aplicar los conceptos aprendidos en cada módulo se le presentará al estudiante un problema básico en forma de caso que deberá resolver en grupo y que implica:

·       Modelado del problema a resolver identificando “responsabilidades” y “responsables” de las funciones a llevar a cabo.

·       Posteriormente se propondrá un refinamiento mediante pasos sucesivos para la descomposición del problema identificando cada vez de una manera más específica “quien”  y  “qué” se desea hacer,  hasta llegar a unidades atómicas que describan más el “como” llevar a cabo cada paso.

·       Al desarrollar una solución programada se pondrá énfasis en los estándares de codificación y calidad de los productos de cada fase.

7.     La depuración del modelo y de los programas se llevará a cabo mediante casos de prueba y listas de chequeo.

8.     Posteriormente se presentarán problemas de mayor complejidad para que sean resueltos mediante supervisión del profesor-tutor por parte de los estudiantes bajo la modalidad de proyecto programado en equipo.

9.     Se deberán presentar avances escritos y reportes orales de los proyectos.

        En resumen todos los contenidos serán implementados aplicando una lógica basada en procesos didácticos o ciclos pedagógicos multifactoriales. Esto quiere decir que los contenidos serán abordados desde un dominio básico con pocas variables hasta alcanzar un nivel superior por el estudiante. El siguiente gráfico ejemplifica la metodología expuesta.


Recursos

        Para el desarrollo del curso se emplearán recursos informáticos, que facilitarán las comunicaciones entre los participantes, y recursos documentales. Éstos últimos serán de carácter didáctico e informático.

Informáticos

        Para el presente curso es necesario que las computadoras cumplan los siguientes requisitos (Hardware): Procesador Pentium II, 64Mb RAM o superior, 10Gb DD o superior.

        Además se emplearán los siguientes programas, previamente instalados en las computadoras (Software): Sistemas operativos Linux  o bien alguna versión de Windows igual o superior a 98, navegador para Internet,  compilador de Java y Máquina Virtual jdk1.3 o superior,  IDE de desarrollo apropiado a las capacidades del equipo con que se cuenta (Dr. Java es recomendable).

Documentales

        Para la realización de este curso se cuenta con los siguientes documentos en formato PDF:

*        Manual o Guía del Estudiante.

*        Manual o Guía del Tutor.

Digitales

        Para la realización de este curso se cuenta con un CD con lo siguiente:

*        Manual o Guía del Estudiante.

*        Manual o Guía del Tutor.

*        Contenidos completos del curso.

*        Ejemplos y ejercicios.


Forma de trabajo

*        Habrá actividades que deberán ser resueltas individualmente.

*        La resolución de casos en forma de tareas programadas o proyectos deberán ser llevadas a cabo en subgrupos de 2 estudiantes o más si así lo dispone el tutor.

*        En otras ocasiones los estudiantes tendrán que participar en discusiones y resolución de problemas con todo el grupo, ya sea electrónicamente o presencialmente.


 

Evaluación del estudiante

Requisitos de aprobación

        Para aprobar el curso usted debe completar los siguientes requisitos:

1.     Reporte de ejercicios individuales y en grupo.

2.     Tareas programadas (proyectos de programación en grupo).

3.     Exámenes parciales.

Evaluación

        A continuación el desglose de los criterios de evaluación:

1.     Ejercicios................................................... 10 %

2.     Tareas Programadas.................................. 30 %

3.     Exámenes parciales.................................... 60 %

4.     Total.......................................................... 100 %