Temario y Políticas Generales

I. Objetivos Generales

Al finalizar el curso, el alumno:
  • Desarrollará su capacidad de abstracción, análisis y síntesis para la resolución de problemas de programación.
  • Utilizará lenguajes de programación para la soluciÛn de problemas desarrollando algoritmos
  • Manejará las herramientas de desarrollo, depuración y automatización durante las etapas de programación
  • Desarrollará técnicas para la solución a problemas de programación propuestos, además, sabrá utilizar dichas técnicas a través de programación estructurada utilizando ANSI C.
  • Será capaz de aplicar este lenguaje en el desarrollo de aplicaciones de software.
  • Conocerá y aplicará las bases del sistema operativo Unix.
  • Obtendrá mayor capacidad para trabajar en equipo.
  • Utilizará la metodología fundamental de la administración de proyectos en la implementación de programas.

II. Temario

  1. Introducción
  2. Uso del Algoritmo del Programador
  3. El Lenguaje C
  4. Estructuras de Datos en C
  5. Argumentos en un Programa en C

III. Metodología del Curso

La metodología del curso consistirá en la exposición por parte del profesor del tema a tratar, contando con la participación de los alumnos, la cual podrá ser por medio de discusiones globales y/o discusión en equipo, fundamentalmente. Así mismo el alumno realizará programas correspondientes al trabajo en el laboratorio de la materia, así como una serie de ejercicios, prácticas, problemas, tareas y lecturas referentes al material cubierto en clase.

IV. Bibliografía

  • Kernighan, Brian, Ritchie Dennis; The C Programming Language; 2nd Edition; 1988. Prentice Hall
  • Oualline Steve, Practical C Programming, O¥Reilly & Associates, Inc. 1997
  • Harbison III, Samuel P. & Steele Jr. , Guy L.; C A Reference Manual. Prentice Hall; 5th Edition. 2002
  • Kochan, Stephen G.; Programming in C; Developer's Library - Sam's Publishing, 3rd Edition. 2005
  • Deitel, H.M, Deitel, P.J.; Como Programar en C/C++; Prentice Hall; Segunda Edición.
  • Bataller, Jordi, y Rafael Magdalena. Programación en C. EspaÒa. Alfaomega-Universidad PolÌtica de Valencia España. 2001.
  • David Curry; Unix System Programming; 1st Edition; 1996; O'Reilly & Associates, Inc.
  • Jerry Peek, Grace Todino & John Strang; Learning The Unix Operating System; 4∞ Edition; 1997; O'Reilly & Associates, Inc.
  • Loukides Mike, Oram Andy; Programming with GNU Software; 1997; O'Reilly & Associates, Inc.
  • Staugaard Jr. Andrew C.: Structured and Object-Oriented Techniques, And Introduction Using C++; 2∞ Edition; 1997; Prentice Hall.
  • Ammeraal Leendert; C For Programmers, A Complete Tutorial based on the ANSI Standard; 2∞ Edition; 1991; John Wiley & Sons.

V. Evaluación del Curso

La evaluación del presente curso está dividida en dos puntos: la parte teórica y la parte práctica. La parte teórica corresponde a todo lo visto en clase, esto es, tareas, exámenes y la documentación del proyecto final. La parte práctica corresponde a los programas y prácticas realizadas en el laboratorio así como la elaboración del proyecto final en el cual se aplican todos los conceptos y conocimientos aprendidos a lo largo del curso. La parte teórica equivale a un 60% de la calificación final y la parte práctica al otro 40% restante.

La parte teórica se divide en las siguientes partes:
  • Primera Evaluación Parcial: .................. 20 %
  • Segunda Evaluación Parcial: ................ 20 %
  • Tercera Evaluación Parcial: .................. 25 %
  • Tareas: .................................................. 5 %
  • Exámenes Sorpresa: ............................. 5 %
  • Documentación del Proyecto Final: ...... 25 %

La parte práctica está dividida de la siguiente manera:
  • Prácticas: .............................................. 40 %
  • Proyecto Final: ...................................... 60 %

VI. Notas Aclaratorias

  • Se debe entregar un reporte por cada práctica realizada en el laboratorio. Si no se entrega dicho reporte, no se calificará el código de la práctica.
  • Si no se entregan las tareas y las prácticas de laboratorio antes de cada examen parcial, no se tendrá derecho al mismo.
  • Para poder aprobar el curso, se deberá aprobar tanto la parte teórica como la parte práctica por separado; además, será necesario haber cumplido con un 80% de asistencia (7 faltas).
  • No se realizarán exámenes ni se aceparán tareas ni prácticas fuera de las fechas establecidas.
  • El proyecto final deberá ser desarrollado en el lenguaje y entorno de desarrollo vistos en clase. No se aceptará un proyecto desarrollado en algún otro lenguaje o entorno de desarrollo.
  • Para que el proyecto final pueda ser calificado, éste deberá estar funcionando, además de cumplir completamente con las especificaciones del mismo.

Promedio final: Cualquier calificación menor a 6 es no aprobatoria. La calificación final se regirá según la siguiente tabla:
  • de 6.0 a 6.49 => 6
  • de 6.5 a 7.49 => 7
  • de 7.5 a 8.49 => 8
  • de 8.5 a 9.29 => 9
  • de 9.3 en adelante 10

VII. Calendarización de Exámenes

VIII. Temario Desglozado

0.  Introducción

   0.1.  Conceptos Generales. Historia del Cómputo

   0.2.  Definición de Computadora

   0.3.  Arquitectura Básica de una Computadora

   0.4.  Tipos principales de Computadoras

   0.5.  Sistemas Operativos

   0.6.  Ensambladores, Compiladores y Encadenadores

   0.7.  Introducción al Sistema Operativo Unix

      0.7.1.  Comandos Básicos de Unix

   0.8.  Introducción a ANSI C

1.  Uso del Algoritmo del Programador

   1.1.  Definición de Algoritmo

   1.2.  Definición de Problema

   1.3.  Planeación de la Solución

   1.4.  Codificación del programa

   1.5.  Pruebas y Depuración del programa

      1.5.1.  La corrida de Escritorio

   1.6.  Compilación y Encadenado del Programa

   1.7.  Documentación

   1.8.  Solución de problemas usando algoritmos.

   1.9.  Abstracción y Refinamiento

2.  El lenguaje C

   2.1.  Organización de la Memoria y Números Binarios

   2.2.  Visión General del Lenguaje C

      2.2.1.  Conceptos Generales

      2.2.2.  Estructura de un programa en C

   2.3.  Tipos de Datos

   2.4.  Declaración de Constantes, Tipos y Variables

   2.5.  Enunciados, Expresiones y Operadores

      2.5.1.  Precedencia y Asociatividad de los operadores

   2.6.  Entrada y salida de datos

   2.7.  Control Básico de un programa

      2.7.1.  El Enunciado if

      2.7.2.  El Enunciado while.

      2.7.3.  El Enunciado for

      2.7.4.  El Ciclo do - while

      2.7.5.  El Enunciado switch

      2.7.6.  El Enunciado break y El Enunciado continue

   2.8.  Expresiones Condicionales

   2.9.  Funciones y Estructura de un programa

      2.9.1.  Sintaxis Básica de una función

      2.9.2.  Funciones No Enteras

      2.9.3.  Declaración de Funciones No Enteras

   2.10.  Arreglos

   2.11.  Declaración de Variables Globales

   2.12.  Compilación de Programas

            2.12.1.  Compilación por Separado

            2.12.2.  Fases de Compilación

            2.12.3.  El preprocesador en C

            2.12.4.  Definición de Macros

            2.12.5.  Compilación Condicional

            2.12.6.  Compilación usando gcc

            2.12.7.  Creación del makefile

            2.12.8.  Dependencias

            2.12.9.  Abreviaciones y Macros

   2.13.  Recursión

3.  Estructuras de Datos en C

   3.1.  Apuntadores, Arreglos y Cadenas

      3.1.1.  Aritmética de Apuntadores

      3.1.2.  Cadenas

         3.1.2.1.  Operaciones de Cadenas

   3.2.  Arreglos Multidimensionales

   3.3.  Estructuras (Registros)

      3.3.1.  Declaración de las Estructuras

      3.3.2.  Declaración Alternativa de una Estructura. (Typedef)

      3.3.3.  Acceso a los Elementos de una Estructura

      3.3.4.  Elementos de las Estructuras y Anidación

   3.4.  Uniones

   3.5.  Archivos

      3.5.1.  Declaración de un Archivo de Texto

      3.5.2.  Copia de Archivos

      3.5.3.  Lectura y Escritura de una Línea Completa

      3.5.4.  Archivos Binarios de Acceso Aleatorio

         3.5.4.1.  Fread y Fwrite

         3.5.4.2.  Fseek

4.  Argumentos en un programa en C

   4.1.  Argc y Argv

   4.2.  Funciones SSCANF y SSPRINTF