ASIGNATURA CREDITOS CODIGO PRE-REQUISITO (S) Para ISI0 Para ISI7 Para TAS7 : Aplicaciones Técnicas :3 : INF-216 : INF003 : INF161 : INF160 OBJETIVOS GENERALES: El objetivo en esta asignatura es introducir al estudiante en los fundamentos de diseño de algoritmos, desarrollo de diagramas y la implementación de éstos en un lenguaje de programación de tercera generación y de propósito general. Al finalizar el curso, el estudiante debe ser capaz de proponer una solución algorítmica a un problema presentado y crear, a partir de dicha solución, un programa de computadoras que determine la solución a casos diferentes del problema propuesto. CONTENIDO TEMA 1.- Algoritmos y Diagramas de flujo: definición y desarrollo Objetivos: Definir claramente el término y objetivo de un algoritmo como solución genérica a un problema. 1. 2. 3. Definición de problema Definición de algoritmo Pasos para resolver un problema de forma algorítmica a. Análisis del problema i. Datos de entrada ii. Datos de salida b. Diseño del algoritmo i. Qué hacer con los datos de entrada para obtener los datos de salida c. Verificación manual del algoritmo 4. Algoritmos simples lineales (solución de problemas simples lineales) a. Hallar el área de un triángulo b. Hallar el área y la longitud de la circunferencia de un círculo dado el radio c. Hallar el volumen de una esfera d. Hallar la distancia entre dos puntos dadas sus coordenadas e. Calcular la velocidad de un vehículo dadas la distancia y el tiempo f. Calcular la intensidad de una corriente dados el voltaje y la resistencia 5. Estructura de un algoritmo a. Entradas b. Proceso c. Salida 6. Características de un buen algoritmo a. Preciso b. Definido c. Finito 7. Variables y constantes 8. Expresiones lógicas y operadores relacionales (condiciones) 9. Estructuras de decisión o selección 10. Algoritmos con decisiones (si ... entonces ... de lo contrario ...) a. Hallar las raíces de una ecuación de 2do. Grado b. Determinar si tres valores dados corresponden a los lados de un triángulo rectángulo c. Determinar si un número dado es par o impar d. Determinar si un número dado es múltiplo de otro número dado INF-216 Aplicaciones Técnicas Pág. # 1 11. 12. 13. 14. 15. 16. 17. 18. e. Determinar si tres valores dados son iguales, o distintos f. Determinar el mayor de tres valores dados Estructuras de repetición en algoritmos (mientras ... hacer ..., repetir ... hasta ..., hacer ... mientras ...) Algoritmos con estructuras de repetición a. Escribir los primeros 20 números enteros positivos b. Escribir los números pares positivos menores que 40 c. Escribir los números de la serie 3,6,9,12, ..., 99 d. Escribir los primeros 100 números de la serie de Fibonacci (0,1,1,2,3,5,8,...) e. Leer letras y escribir si es consonante o vocal. Terminar cuando se escriba un dígito Diagramas de flujo a. Simbología y reglas de uso Traducción de un algoritmo simple a un diagrama de flujo Diagramas de flujo con decisiones Estructuras de repetición en diagramas de flujo Reescribir los algoritmos hechos en diagramas de flujo Decisiones múltiples en algoritmos y en diagramas de flujo (en caso de que ... sea ... hacer) TEMA 2.- Introducción Programación C Objetivos: Conocer la historia del lenguaje C y las estructuras básicas que componen un programa C. 1. 2. 3. 4. 5. 6. 7. 8. 9. Historia del lenguaje C a. Creadores, lugar, propósito (portable, flexible, eficiente), UNIX Estructura de programas en C a. Archivos de encabezado, declaración de constantes, declaración de funciones, función main Necesidad de uso de la función main, porqué el uso del nombre main Tipos de datos y su representación en C a. Enteros, flotantes, enteros largos, flotantes largos, caracter, booleanos b. int, long, float, double, char, unsigned, void, short Funciones de entrada/salida a. printf, scanf, placeholders (parámetros de sustitución) Expresiones, operadores y expresiones a. Aritméticas, lógicas, relacionales, asignación, manipulación de bits b. Precedencia de operadores Traducción de algoritmos a programas C a. Algoritmos simples lineales hechos anteriormente a C b. Otros programas simples en C Instrucciones de selección en C a. if (<condición>) [{] <verdad>; [}] [else] [{] <falso>; [}] b. switch(<expresión>) { case x: ; case y: default: } c. Traducción de algoritmos con decisiones a C d. Otros programas con decisiones en C Instrucciones de repetición en C a. while (<condición>) [{] <instrucciones>; [}] b. do [{] ... [}] while (<condición>); c. for(<inicialización>;<condición>;<cambio a variables>) [{] … [}] d. Traducción de algoritmos con ciclos a C e. Otros programas con ciclos en C TEMA 3.- Preprocesador de C Objetivos: Mostrar al estudiante las capacidades del preprocesador de C en el desarrollo de programas. 1. Preprocesador de C a. Inclusión de archivos INF-216 Aplicaciones Técnicas Pág. # 2 b. Declaración de constantes c. Declaración de macros TEMA 4.- Funciones en C Objetivos: Introducir al estudiante en la programación modular como una forma de implementar el principio de divide y vencerás en el diseño de software. 1. 2. Funciones a. Caja negra b. Estructura de funciones en C c. Parámetros o argumentos, paso por valor y referencia, retorno de valores d. Ejemplos de funciones i. Factorial de un número ii. Buscar el mayor entre dos números iii. Hallar el área de un triángulo iv. Dado el radio hallar el volumen (combinar con ciclos para hallar varios) v. Conversión de grados Celsius a Fahrenheit (combinar con ciclos) Recursividad a. Ejemplos de funciones recursivas i. Hallar el factorial ii. Hallar el máximo común divisor iii. Hallar el n-ésimo número de Fibonacci TEMA 5.- Arreglos Objetivos: Introducir al estudiante en el manejo de múltiples valores de un mismo tipo de datos y la disposición que estos siguen en la memoria del computador. 1. 2. Arreglos: Definición Declaración de arreglos a. Arreglos unidimensionales (vectores) b. Arreglos bidimensionales (matrices) c. Arreglos tridimensionales (cubos) 3. Acceso a elementos de arreglos 4. Recorrido de un arreglo 5. Ejemplos de programas con arreglos a. Llenar un arreglo con 10 valores consecutivos y escribirlos b. Llenar un arreglo con valores aleatorios y escribirlo c. Hallar el mayor y el menor número en un arreglo d. Hallar la transpuesta de una matriz e. Hallar la suma y el promedio de los valores de un arreglo f. Otros ejemplos de arreglos 6. Nombre del arreglo: qué contiene? 7. Asignación de memoria a elementos de arreglos TEMA 6.- Punteros y estructuras Objetivos: Lograr que el estudiante se familiarice con los conceptos de dirección de memoria, valor almacenado en la dirección y la agrupación de diferentes elementos de datos de tipos de datos diferentes. 1. 2. 3. Características o propiedades de una variable a. rvalue (valor) b. lvalue (dirección) Valor almacenado por cada tipo de dato Punteros a. Definición INF-216 Aplicaciones Técnicas Pág. # 3 4. 5. 6. 7. 8. b. Punteros simples c. Punteros dobles d. Punteros triples e. Ejemplos de uso de punteros Estructuras a. Definición b. Declaración de estructuras c. Acceso a elementos de estructuras d. Estructuras anidadas Definición de nuevos tipos de datos: typedef Paso de estructuras como parámetros a funciones Punteros a estructuras a. Declaración b. Acceso a elementos de un puntero a estructura Ejemplos de uso de estructuras TEMA 7.- Manipulación de archivos Objetivos: Mostrar al estudiante las herramientas necesarias para hacer persistente los datos manipulados en memoria mediante el uso de almacenamiento en memoria secundaria, manejar estos datos almacenados y poder recuperarlos. 1. 2. 3. 4. 5. 6. 7. Archivos Definición Tipos de archivos a. Texto b. Binarios Archivos de bajo nivel a. Características: b. Funciones Archivos de alto nivel a. Características b. Funciones Creación de archivos de texto Almacenamiento y recuperación de estructuras TEMA 8.- Desarrollo de aplicaciones en C Objetivos: Lograr que el estudiante desarrolle una aplicación completa, de una complejidad aceptable, usando los conocimientos adquiridos en el curso. 1. 2. 3. Especificación de la aplicación a desarrollar Determinar y diseñar las estructuras necesarias Desarrollo y evaluación de la aplicación INF-216 Aplicaciones Técnicas Pág. # 4 METODOLOGIA DE TRABAJO: Explicaciones verbales en el curso. Asignación de prácticas individuales y en grupo Creación de módulos, tipos y librerías de funciones EVALUACIÓN: Primer Parcial : Práctica : Examen 15 puntos 20 puntos Segundo Parcial : Práctica : Examen 15 puntos 20 puntos Final 30 puntos : Examen BIBLIOGRAFIA Programación en C: Introducción y conceptos avanzados Mitchell Waite, Stephen Prata y Donald martin ANAYA C How to Program Deitel & Deitel Prentice Hall Problemas de Metodología de la Programación Luis Joyanes Aguilar Mc Graw Hill El Lenguaje de Programación C Brian Kernighan y Dennis Ritchie Prentice Hall Tutoriales, páginas y libros disponibles en la red www.cplus.about.com www.gustavo.net.programming/c.shtml www.cprogramming.com www.eskimo.com/~scs/cclass/notes/top.html Actualizado: septiembre 2003 INF-216 Aplicaciones Técnicas Pág. # 5