- Presentación: objetivos, temario, metodología, reglas del juego,
conceptos básicos.
- Introducción a la programación:
- Definiciones previas: computador, programa, lenguaje de programación,
programador, usuario.
- Jalisco.
- Receta para el formato de un programa en Java.
- Explicaciones: qué es un comentario, el nombre del programa (la clase),
print de un literal de tipo string, declaración de una variable entera,
asignación de una variable entera, readInt y print de una variable entera.
- Conceptos básicos:
- Expresiones aritméticas: + - * /
- Tipo de una expresión: entera o real.
- Declaración de variables (con inicialización).
- El operador %.
- Funciones predefinidas: sqrt, abs, pow, exp, log, sin, cos, tan,
asin, acos, atan, round, floor, ceil, max, min, trunc.
- Instrucciones:
- Ejecución condicional de instrucciones: sintaxis y semántica de if con
else.
- Agrupación de instrucciones con { ... }.
- Asignación de variables: sintaxis y semántica.
- Declaración sin inicialización.
- Instrucción if sin else.
- Opcional: diagramas de flujo.
- Instrucción if con condiciones compuestas.
- Selección múltiple usando if.
- Instrucción de repetición: sintaxis y semántica de while.
- Ejecución paso a paso de un programa.
- Patrones de programación: patrón de acumulación, patrón de lectura
de datos, patrón de conteo.
- Strings:
- El tipo String: constantes, declaración de variables, asignación.
- Operaciones: readString, readLine, println, print, length, compare.
- Concatenación: +
- Examinar un string con substring: substring(s, i, n) y substring(s, i)
- Reemplazar usando replace.
- Búsqueda en un string: indexOf(s, subs) y substring(s, subs, i)
- Eliminación de espacios no significativos: trim.
- Objetos:
- Clase de un objeto.
- Construcción de un objeto: new
- Declaración de variables que referencian objetos.
- Operaciones de un objeto: métodos e invocación de métodos.
- Archivos:
- Escribir en un archivo por medio de la clase TextWriter: print, println,
close.
- Leer de un archivo por medio de la clase TextReader: readString, readLine,
readInt, readDouble, eofReached, close.
- Archivos organizados por campos.
- Decodificación de una línea por medio de la clase FieldParser:
readString, readInt, readDouble.
- Varios:
- El tipo boolean: aplicaciones.
- La instrucción break: sintaxis y semántica.
- Opcional: elementos formales de la sintaxis de Java.
- La sintaxis: categorías sintácticas, reglas sintácticas, árbol sintáctico.
- Reglas sintácticas para la categoría expresión: operadores binarios,
operadores unarios, reglas de desambiguación (precedencia y asociación),
asignación, invocación de funciones y métodos, creación de objetos con new.
- Reglas sintácticas para las instrucciones.
- Opcional: Arreglos asociativos.
Arreglos asociativos con llaves enteras.
- La clase Map: creación de arreglos.
- Principales operaciones de la clase Map: put y getTipo.
- Patrones de recorrido de arreglos: hacia adelante y en reversa.
Arreglos asociativos con llaves de tipo string.
- La clase StringMap: creación de arreglos.
- Operaciones de la clase StringMap: put y getTipo.
- Iterador para las llaves de un arreglo asociativo con llaves de tipo
string: la clase StringKeyEnum.
- Operaciones: nextKey y hasMoreKeys.
- Otras operaciones sobre arreglos asociativos: remove y size.
- Arreglos:
- Creación de arreglos y declaración de variables que referencian
arreglos.
- Operaciones sobre arreglos: recuperar el valor de un elemento,
asignar el valor de un elemento, length.
- Patrones de recorrido de arreglos: inicialización, recorrido exhaustivo
hacia adelante y hacia atrás, búsqueda secuencial, búsqueda del mínimo/máximo.
- Métodos como funciones o procedimientos:
- Invocación: argumentos o parámetros reales.
- Declaración de funciones o procedimientos: tipo retornado, nombre,
parámetros formales y cuerpo.
- Semántica de la ejecución de una función o procedimiento.
- Variables locales a un procedimiento vs. variables globales.
- Recursividad.
- Uso de objetos (2da. parte):
- Más ejemplos de objetos: fracciones o nros. complejos o etc.
- La consola como objeto: gráfico de funciones.
- Objetos contenedores: arreglos asociativos (con strings como llaves),
colas, pilas, etc.
Después de este capítulo los alumnos deben saber interpretar
la definición de una clase (sus operaciones) y ser capaces de utilizarla
para resolver un problema.
- Cálculo numérico (1era. parte):
- Representación de enteros y reales en el computador.
- Cálculo de raíces de una función.
- Elementos de análisis de algoritmos:
- Tiempo de ejecución y espacio en memoria.
- Notación O(n), O(n^2), O(log(n))
- Análisis de una búsqueda lineal en un arreglo.
- Búsqueda binaria en un arreglo.
- Ordenamiento:
- un método trivial: selección.
- métodos basados en intercambio de elementos adyacentes: bubble-sort.
- ordenamiento eficiente: quick-sort, merge-sort.
- Definición de clases (1era. parte):
- Definición de clases.
- Variables de instancia.
- Definición de métodos.
El objetivo es que el alumno sea capaz de implementar clases simples
(sin herencia).
- Cálculo numérico (2da. parte): Implementación y evaluación eficiente
de polinomios.
- Procesamiento masivo de datos.
- Declaración de clases para agrupar datos múltiples, i.e. como records.
- Patrones de procesamiento de archivos secuenciales: filtros,
eliminación de elementos repetidos, pareo, ordenamiento.
El objetivo es motrar como se procesan datos cuando estos no caben
en la memoria del computador.
- Definición de clases (2da-parte):
- Subclases.
- Herencia.
- Variables de instancia vs. variables estáticas (o de clase).
- Encapsulación: public, protected, private.
- La referencia nula: null.
- instanceof.
- Cálculo numérico (3era. parte):
- Integración numérica.
- Sistemas de ecuaciones lineales.
- Ecuaciones diferenciales simples aplicadas a problemas físicos.
- Estructuras de datos:
- Listas enlazadas.
- Arboles.