Fundamentos de Programación Mayo 2013 Carreras Clave de Asignatura Descripción de Asignatura Créditos Pre-requisito Ingenierías INS-204 Fundamentos de programación 5 Créditos CBM-103 (Cálculo Diferencial) Objetivo primarios Proveer al estudiante con una sólida base en la solución de problemas comunes de ingeniería, utilizando el computador como herramienta, a través de un proceso formal de análisis y formulación algorítmica de las soluciones, dejándolas listas para su codificación en un lenguaje orientado a objetos. Otros objetivos Describir algoritmo, su estructura, elementos, propiedades. Dominar uso de las notaciones algorítmicas más utilizadas: Diagramas de flujo y pseudocódigo. Diseñar algoritmos de nivel medio de dificultad. Aplicar buenas prácticas de programación a la solución de problemas. Discriminar la representación en memoria de estructuras de datos elementales. Discriminar recursión e iteración y cuando aplicar una u otra. Habilidades y Contenidos Semana 1 Algoritmo y notaciones algorítmicas Habilidades: Justificar utilización de computadoras digitales en ingeniería. Discriminar algoritmo como conjunto de pasos explícitos para resolver un problema. Discriminar notaciones algorítmicas: Flujogramas y pseudocódigos. Discriminar entrada, salida, proceso, memoria, valores, tipos, rangos. Discriminar secuencia, asignación, escritura, lectura. Discriminar algoritmos numéricos y semi-numéricos. Contenidos: Computadora digital. Lenguaje de programación. Lenguaje procedural. Lenguaje declarativo. Compilador. Interprete. Programa. Programa fuente. Programa objeto. Instrucciones. Secuencia. Asignación. Escritura. Lectura. Flujograma: Inicio, Fin, Asignación, Cálculo, Proceso, Escritura, Variable (escalar), Lectura. Pseudocódigo: Algoritmo, cuerpo, Asignación, Escritura, Variable escalar, Lectura. Semana 2 Estructura, elementos y propiedades de un algoritmo Habilidad: Describir estructura, elementos y propiedades de un algoritmo. Contenido: Estructura: Cabecera, Inicialización, Proceso, Salida, Pie. Instrucciones (macro): Secuenciales (Comentario, Asignación, Escritura, Lectura, Invocación), Selectivas (Si, Case), Reiterativas (Para, Mientras), Modulares (Aceptación, Retorno). Cláusulas. Elementos (micro): Valores (constantes, variables), tipos (enteros, reales, alfanuméricos), Identificadores (reglas), Expresiones (Aritméticas, Relacionales, Booleanas), Operadores (Aritméticos, Relacionales, Booleanos). Propiedades (Criterios): Finitud, Inambigüedad, Generalidad, Especificidad, Encapsulación. Computadora elemental: Entrada, Procesador, Memoria, Salida. Semanas 3-4 Pasos para resolución de problemas computacionales y Selección Habilidades: Describir pasos para resolver un problema computacional. Dominar estructuras de control selectivas para lidiar con múltiples opciones. Contenidos: Pasos: Análisis, Diseño, Codificación, Compilación, Ejecución, Prueba, Depuración, Documentación, Distribución, Mantenimiento. Estructuras de control selectivas: Si (Simple, Compuesto, con Sino, Anidado, Escalonado), Case (Variable de control, Casos, Caso por misión). Semanas 5-7 Implementación de algoritmos y Reiteración Habilidades: Dominar buenas prácticas de programación en la resolución de problemas. Dominar estructuras de control repetitivas para manejar procesos intensivos. Contenidos: Buenas prácticas: Identificadores alusivos (variables, subrutinas). Documentación (Declaración variables, bloques de código). Ciclos. Arreglos. Subrutinas. Registros. Ciclos: for (Contador), while (condición), do-while (condición). Semana 8-9 Subrutinas y encapsulación Habilidad: Dominar funciones para abordar problemas de mayor complejidad. Contenido: Reglas de ámbito de una función, Tipo. Función: Declaración (prototipo, parámetros), Invocación, Detalle. Parámetros: Paso por valor, Paso por referencia (escalares, vectores, tablas). Temas complementarios: Estructuras de datos. Archivos de datos. Gráficos. Recursividad. Soporte: eligio.cabrera@intec.edu.do; intec virtual; ideone.com; projecteuler.net; spoj.pl; ecabrera.wordpress.com. Texto, Luis Joyanes, Fundamentos de Programación, 3ra edición.