Usted está aquí: Inicio web asignaturas

Fichas de asignaturas 2007-08


  CÓDIGO NOMBRE
Asignatura 1710019 INTRODUCCIÓN A LA PROGRAMACIÓN
Titulación 1710 INGENIERÍA TÉCNICA EN INFORMÁTICA DE GESTIÓN
Departamento C137 LENGUAJES Y SISTEMAS INFORMATICOS
Curso 1  
Duración (A: Anual, 1Q/2Q) 1Q  
Créditos ECTS 6  

Créditos Teóricos 3 Créditos Prácticos 4,5 Tipo Obligatoria

 

Profesorado
Bolívar Pérez, Miguel Ángel
Fernández Fernández, Pedro
Hurtado Rodríguez, Nuria (coordinadora)
Nuñez Moraleda, Bernardo
Periañez Gómez, Francisco
Yráyzoz Díaz de Liaño,Eloísa

Situación
prerrequisitos
Conocimientos básicos de informática a nivel de usuario
Contexto dentro de la titulación
La asignatura se imparte en el primer cuatrimestre del primer curso de la
titulación. En ella se proporcionan al alumno las bases de la programación
estructurada y del lenguaje de programación C y por tanto se considera
fundamental para el resto de las asignaturas de programación de la titulación.
Recomendaciones
Sería recomendable que el alumno dispusiera de un ordenador personal donde
instalar el compilador de C utilizado en las prácticas, así como conexión a
Internet para el uso de las herramientas virtuales, con objeto de
obtener un mejor aprovechamiento de los contenidos impartidos en la asignatura.
Competencias
Competencias transversales/genéricas
- Capacidad de análisis y síntesis.
- Comunicación oral y escrita.
- Resolución de problemas.
- Trabajo en equipo.
- Razonamiento crítico.
- Preparación y presentación de documentación.
Competencias específicas
  • Cognitivas(Saber):

    - Conocer y comprender la importancia de los objetivos de la
    programación
    - Conocer los aspectos generales sobre los lenguajes y paradigmas de
    programación.
    -Conocer la sintaxis del pseudocódigo utilizado para describir
    algoritmos así como la del lenguaje C.
    - Conocer los pasos para la realización de un programa y sus
    principales componentes (en pseudocódigo y en lenguaje C)
    - Conocer las estructuras de control de la programación estructurada
    y las diferencias entre ellas(en pseudocódigo y en lenguaje C)
    - Conocer todos los aspectos relacionados con la realización de
    funciones y procedimientos (en pseudocódigo y en lenguaje C)
    - Conocer el concepto de recursividad y sus tipos.
    - Conocer los tipos de datos estructurados estáticos (en
    pseudocódigo y en lenguaje C)
  • Procedimentales/Instrumentales(Saber hacer):

    - A partir del planteamiento de un problema de pequeña-mediana
    envergadura saber realizar el programa para resolverlo implicando:
    
    1.- Saber aplicar los pasos adecuados para la realización de
    programas.
    2.- Tener en cuenta los objetivos de la programación.
    3.- Saber elegir y utilizar los tipos y estructuras de datos
    adecuadas.
    4.- Saber elegir y utilizar las estructuras de control adecuadas.
    5.- Saber realizar la descomposición adecuada e implementar las
    funciones y procedimientos necesarios correctamente.
    6.- Utilizar un estilo de programación apropiado
    
    - Ser capaz de realizar el seguimiento de un algoritmo (en
    pseudocódigo) o programa (en lenguaje C),  explicar que realiza y
    encontrar posibles errores.
    
    - Ser capaz de resolver pequeños algoritmos y programas tanto
    iterativa como recursivamente.
    
  • Actitudinales:

    Aprendizaje autónomo
    Planificación de las actividades a desarrollar
    Capacidad de abstracción
    Toma de decisión
    Capacidad de iniciativa y participación
Objetivos
OBJETIVOS GENERALES

1.- Proporcionar una importante base teórica y práctica en el aprendizaje de la
Programación de Ordenadores. Fundamentando el diseño de algoritmos en una
adecuada metodología y orientando la realización de programas hacia el
cumplimiento de los objetivos fundamentales de la programación como son
corrección, claridad, y eficiencia.

2.- Introducir al alumno en el diseño,  codificación y documentación de
programas, utilizando una correcta metodología y estilo basados en el uso de
la programación estructurada, la abstracción operacional y la recursividad.

3.- Introducir al alumno en el conocimiento del lenguaje de programación C de
manera que sea capaz de implementar en dicho lenguaje los algoritmos diseñados
previamente y de este modo completar adecuadamente el proceso de desarrollo de
programas.

OBJETIVOS ESPECÍFICOS

- Conocer y comprender la importancia de los objetivos de la
programación
- Conocer los aspectos generales sobre los lenguajes y paradigmas de
programación.
-Conocer la sintaxis del pseudocódigo utilizado para describir
algoritmos así como la del lenguaje C.
- Conocer los pasos para la realización de un programa y sus
principales componentes (en pseudocódigo y en lenguaje C)
- Conocer las estructuras de control de la programación estructurada
y las diferencias entre ellas(en pseudocódigo y en lenguaje C)
- Conocer todos los aspectos relacionados con la realización de
funciones y procedimientos (en pseudocódigo y en lenguaje C)
- Conocer el concepto de recursividad y sus tipos.
- Conocer los tipos de datos estructurados estáticos (en
pseudocódigo y en lenguaje C)

- A partir del planteamiento de un problema de pequeña-mediana
envergadura saber realizar el programa para resolverlo implicando:

1.- Saber aplicar los pasos adecuados para la realización de
programas.
2.- Tener en cuenta los objetivos de la programación.
3.- Saber elegir y utilizar los tipos y estructuras de datos
adecuadas.
4.- Saber elegir y utilizar las estructuras de control adecuadas.
5.- Saber realizar la descomposición adecuada e implementar las
funciones y procedimientos necesarios correctamente.

- Ser capaz de realizar el seguimiento de un algoritmo (en
pseudocódigo) o programa (en lenguaje C),  explicar qué realiza y
encontrar posibles errores.

- Ser capaz de resolver pequeños algoritmos y programas tanto
iterativa como recursivamente.
Programa
TEMARIO DE TEORÍA

Tema 1. Introducción

1.1..- Conceptos básicos y definiciones
1.2.- Programación de Ordenadores y Lenguajes de Programación
1.2.2.- La Programación de Ordenadores
1.2.2.- Objetivos de la Programación
1.2.3.- Clasificación de los Lenguajes de Programación
1.3.- Traductores: compiladores e Intérpretes
1.4.- Paradigmas de Programación

Tema 2. Problemas, Algoritmos y Programas.

2.1.-  Algoritmos.
2.1.1.- Concepto de Algoritmo.
2.1.2.- Ejemplos de diseño de un algoritmo.
2.2.-  Proceso de creación de un programa.
2.2.1.- Planteamiento y análisis del Problema.
2.2.2.- Diseño de un algoritmo. Comprobación y optimización del Algoritmo.
2.2.3.- Implementación del Programa.
2.2.4.- Ejecución y depuración del Programa.
2.3.-  Datos y tipos de datos.
2.3.1.- Datos de tipo numérico.
2.3.2.- Datos de tipo lógico.
2.3.3.- Datos de tipo carácter y cadena.
2.4.-  Variables y expresiones.
2.4.1.- Constantes y variables.
2.4.2.- La operación de asignación.
2.4.3.- Evaluación de expresiones. Precedencia de operadores.
2.4.4.- Entrada y salida básicas.
2.5.-  Descripción de Algoritmos.
2.5.1.- Lenguaje Natural.
2.5.2.- Pseudócodigo.
2.5.3.- Diagrama de flujo.

Tema 3. Programación estructurada.

3.1.-  Características de la Programación Estructurada.
3.2.-  Estructura Secuencial.
3.3.-  Estructura Selectiva.
3.3.1.- Simple.
3.3.2.- Doble.
3.3.3.- Múltiple.
3.4.-  Estructuras Repetitivas.
3.4.1.- Mientras.
3.4.2.- Repetir hasta que.
3.4.3.- Desde.
3.5.-  Estructuras anidadas.

Tema 4. Abstracción Operacional.

4.1.-  Descomposición de problemas y abstracción.
4.1.1.- Diseño descendente y refinamientos sucesivos.
4.1.2.- Concepto de abstracción operacional.
4.2.-  Subalgoritmos.
4.2.1.- Funciones.
4.2.2.- Procedimientos
4.3.-  Ámbito y persistencia de las variables.
4.4.-  Correspondencia entre argumento y parámetro formal.
4.4.1.- Paso por  valor y por referencia.
4.4.2.- Efectos laterales.
4.5.-  Funciones y procedimientos como parámetros.


Tema 5. Recursividad.

5.1.-  Introducción.
5.2.-  Concepto de recursión a través de la inducción matemática
5.3.-  La recursividad.
5.4.-  Tipos de recursividad
5.4.1.- Recursividad lineal
5.4.2.- Recursividad múltiple
5.5.-  Procedimientos y procesos.Iteración y recursión

Tema 6. Tipos de datos.

6.1.-  Tipos de datos estructurados.
6.2.-  Vectores y matrices.
6.2.1.- Vectores. Matrices unidimensionales.
6.2.2.- Matrices multidimensionales.
6.3.-  Cadenas de caracteres.
6.3.1.- Definición de cadenas de caracteres.
6.3.2.- Operaciones con cadenas.
6.4.-  Registros.
6.5.-  Archivos.
6.6.-  Tipos enumerados y subrango.

TEMARIO DE PRÁCTICAS

Tema 1. Fundamentos del Lenguaje C.

1.1.-  Introducción al entorno de programación.
1.2.-  Introducción al lenguaje.
1.3.-  Estructura general de un programa en C.
1.4.-  Datos y tipos de datos.
1.5.-  Operaciones básicas y expresiones.
1.6.-  Entrada y salida básicas.

Tema 2. Estructuras Selectivas y Repetitivas.

2.1.-  Estructuras selectivas.
2.1.1.- Estructura if.
2.1.2.- Estructura if else.
2.1.3.- Estructura switch.
2.2.-  Estructuras repetitivas.
2.2.1.- El bucle while.
2.2.2.- El bucle do while.
2.2.3.- El bucle for.
2.2.4.- Bucles anidados.
2.2.5.- Sentencias break y continue
2.3.- Herramientas de depuración de programas
2.4.- Estilo de programación.

Tema 3. Definición de funciones en C.

3.1.-  Declaración, definición y uso de funciones.
3.2.-  Paso de parámetros.
3.2.1.- Concepto de puntero
3.2.2.- Operadores de dirección e indirección
3.3.-  Ámbito y persistencia de variables
3.4.-  Macros
3.5.-  Punteros a funciones
3.6.-  Argumentos del programa

Tema 4. Recursividad.

4.1.-  Funciones recursivas.
4.2.-  Recursividad lineal y múltiple.

Tema 5. Tipos de datos.

5.1.-  Funciones de manejo de memoria dinámica.
5.2.-  Vectores.
5.2.1.- Definición y acceso a los elementos.
5.2.2.- Paso cómo parámetro a una función.
5.2.3.- Aritmética de punteros.
5.3.-  Matrices.
5.3.1.- Definición y acceso a los elementos.
5.3.2.- Paso cómo parámetro a una función.
5.4.-  Cadenas de caracteres.
5.4.1.- Definición y acceso a los elementos.
5.4.2.- Funciones de manejo de cadenas de caracteres.
5.5.-  Estructuras y uniones.
5.5.1.- Definición y acceso a los elementos.
5.5.2.- Paso cómo parámetro a una función.
5.6.-  Tipos enumerados.
5.7.-  Cláusula typedef.

Actividades
Tras cada tema el profesor realizará un cuestionario teórico con preguntas
cortas sobre los contenidos estudiados. Dicho cuestionario se corregirá en
clase con el objetivo de que los alumnos analicen hasta que punto han cubierto
los objetivos cognitivos del tema.
Se propondrán puntualmente actividades como la resolución de problemas en grupo
utilizando la técnica del puzzle.
Se organizará un ciclo de conferencias comunes para las asignaturas de primer
curso de esta titulación
Metodología
En las clases teóricas  se impartirán conceptos fundamentales de programación
estructurada tratando de resaltar los aspectos globales del desarrollo de
algoritmos. Por este motivo, los ejemplos que se utilizarán para
ilustrar los conceptos teóricos en la pizarra se desarrollarán fundamentalmente
en pseudocódigo, aunque también se podrán utilizar ejemplos en lenguaje C.

En las clases prácticas se enseñará el lenguaje de programación C resaltando
sus aspectos particulares.
Cada tema de prácticas puede abarcar de una a cuatro sesiones.
Para cada tema se proporcionará un listado de problemas que los alumnos deberán
resolver en clase de prácticas contando con el apoyo del profesor.
El material para la asignatura, listados de problemas, transparencias, apuntes,
problemas resueltos, ejemplos de exámenes etc, se proporcionará a través del
campus virtual de la asignatura. Este medio se utilizará también para notificar
cualquier aspecto relacionado con la marcha de la asignatura, entrega de
problemas, noticias, etc.
Distribución de horas de trabajo del alumno/a

Nº de Horas (indicar total): 150

  • Clases Teóricas: 21  
  • Clases Prácticas: 39  
  • Exposiciones y Seminarios: 5  
  • Tutorías Especializadas (presenciales o virtuales):
    • Colectivas: 5  
    • Individules:  
  • Realización de Actividades Académicas Dirigidas:
    • Con presencia del profesorado: 5  
    • Sin presencia del profesorado: 21  
  • Otro Trabajo Personal Autónomo:
    • Horas de estudio: 51  
    • Preparación de Trabajo Personal:  
    • ...
        
  • Realización de Exámenes:
    • Examen escrito: 3  
    • Exámenes orales (control del Trabajo Personal):  
Técnicas Docentes
Sesiones académicas teóricas:Si   Exposición y debate:No   Tutorías especializadas:Si  
Sesiones académicas Prácticas:Si   Visitas y excursiones:No   Controles de lecturas obligatorias:No  
Otros (especificar):
- Realización de cuestionarios de valoración de
adquisición de objetivos cognitivos, corrección y debate
posterior.
- Resolución de problemas en grupo (técnica del puzzle)
 
Criterios y Sistemas de Evaluación
Se realizarán los correspondientes exámenes finales escritos en  las
convocatorias oficiales publicadas por el centro, el examen constará de una
parte teórica y otra práctica. En la parte teórica se podrán realizar preguntas
cortas de los aspectos estudiados en clase de teoría así como la resolución de
problemas en pseudocódigo. La parte práctica constará de preguntas y problemas
en lenguaje C.
La nota final de la asignatura se compone de una parte teórica (35%), una parte
práctica (60%) y la nota de otras actividades académicas que se realizarán
durante el curso (5%). Las notas de teoría y prácticas serán las que se
obtengan en el examen final.
Todos los alumnos deberán estar apuntados a algún grupo de prácticas.

La nota final se obtendrá como suma de todas las notas, siendo necesario
obtener en el examen una puntuación mínima de 1,5 puntos sobre 3,5 en la parte
teórica y 2,5 puntos sobre 6 en la práctica.
Para aprobar la asignatura la suma de todas las notas deberá ser igual o
superior a 5.

Recursos Bibliográficos
[Abur98]  Aburruzaga García, G.; Medina Bulo, I.; Palomo Lozano, F.;
Por fin: C ISO; Servicio de Publicaciones. Universidad de Cádiz, 1998.

[Balc93]  Balcazar, J.; Programación Metódica; McGraw-Hill, 1993.

[Cast93]  Castro, J.; F. Cucker y X. Messeguer, "Curso de
programación", Mc Graw-Hill, 1993.

[Cerr93]  Cerrada, J. A.; Collado, M.; Programación I; UNED 1993.

[Deit94]  Deitel,H.M.; Como programar en C/C++; Prentice-Hall,1994.

[Garc02]  García, F.; Carretero, J.; Fernández, J.; Calderón, A.; El
lenguaje de programación C; Prentice Hall, 2002.

[Hurt02]  Hurtado, N.; Laguía, M.; Silva, E.L.; Introducción a la
Programación; Servicio de Publicaciones. Universidad de Cádiz, 2002.

[Joya96]  Joyanes, L.; Fundamentos de programación; McGraw-Hill, 1996.

[Kell92]  Kelley, A.; Pohl, I.; C by Dissection: The Essentials of
C programming; 2ª Edición, Benjamin/Cummings, 1992.

[Kell98]  Kelley, A.; Pohl, I.; A book on C. Programming in C;
4ª Edición, Addison-Wesley, 1998.
[Kern91]  Kernighan, B.W.; Ritchie, D.M.; El lenguaje de programación C;
2ª Ed., Prentice-Hall, 1991.

[Kern00]  Kernighan, B. W.; Pike, R.; La  práctica de la programación;
Prentice Hall, 2000.

[Peña97]  Peña Marí, R.; Diseño de programas. Formalismo y abstracción;
Prentice Hall 1997.

[Prie01]  Prieto, A.; Lloris, A.; Torres, J.C.; Introducción a la informática;
McGraw-Hill, 2001, 3ª Edición.

[Schi95]  Schield, H.; Turbo C y C++ 3.1 : Manual de Referencia, Ed.
Osborne/McGraw Hill 1995.

[Tond89]  Tondo, C.L.; Gimpel, S.E.; The C Answer Book; Prentice-Hall, 1989,
2ª edición.

Cronograma

Pulse aquí si desea visionar el fichero referente al cronograma sobre el número de horas de los estudiantes.

El presente documento es propiedad de la Universidad de Cádiz y forma parte de su Sistema de Gestión de Calidad Docente.