Datos Identificativos 2018/19
Asignatura (*) Programación I Código 614G01001
Titulación
Grao en Enxeñaría Informática
Descriptores Ciclo Periodo Curso Tipo Créditos
Grado 1º cuatrimestre
Primero Formación básica 6
Idioma
Castellano
Inglés
Modalidad docente Presencial
Prerrequisitos
Departamento Computación
Coordinador/a
Rabuñal Dopico, Juan Ramon
Correo electrónico
juan.rabunal@udc.es
Profesorado
Arcay Varela, Bernardino
Boveda alvarez, Maria del Carmen
Castro Martinez, Alfonso
Dafonte Vazquez, Jose Carlos
Martinez Perez, Maria
Rabuñal Dopico, Juan Ramon
Correo electrónico
bernardino.arcay@udc.es
carmen.boveda@udc.es
alfonso.castro@udc.es
carlos.dafonte@udc.es
maria.martinez@udc.es
juan.rabunal@udc.es
Web http://moodle.udc.es/
Descripción general Esta materia é unha introdución á programación, na que se ve como resolver problemas nunha linguaxe estructurada.
Nela axúdase ao alumno a comprender os tipos e estruturas de datos básicos, ao mesmo tempo que se sentan as bases para deseñar correctamente un algoritmo. E para asentar os coñecementos fundamentáis da programación de forma máis rápida e óptima é necesario empregar unha linguaxe que sexa lexible, flexible,clara, na que se poida escribir o código de forma sinxela e limpa;por eso se traballa co Linguaxe Pascal ISO-10206, familiarizando o alumno co emprego dunha linguaxe que cumple cunha normativa estandar.

Competencias del título
Código Competencias del título
A4 Conocimientos básicos sobre el uso y programación de los ordenadores, sistemas operativos, bases de datos y programas informáticos con aplicación en ingeniería.
A5 Conocimiento de la estructura, organización, funcionamiento e interconexión de los sistemas informáticos, los fundamentos de su programación, y su aplicación para la resolución de problemas propios de la ingeniería.
B1 Capacidad de resolución de problemas
B3 Capacidad de análisis y síntesis
B4 Capacidad para organizar y planificar
C3 Utilizar las herramientas básicas de las tecnologías de la información y las comunicaciones (TIC) necesarias para el ejercicio de su profesión y para el aprendizaje a lo largo de su vida.
C6 Valorar críticamente el conocimiento, la tecnología y la información disponible para resolver los problemas con los que deben enfrentarse.
C7 Asumir como profesional y ciudadano la importancia del aprendizaje a lo largo de la vida.

Resultados de aprendizaje
Resultados de aprendizaje Competencias del título
Conocer y comprender la importancia de los objetivos de la programación. Conocer los aspectos generales sobre los lenguajes y paradigmas de la programación. Conocer pseudocódigo y la sintaxis del lenguaje Pascal ISO10206 utilizado para describir algoritmos y programas. Conocer los pasos para la realización de un programa y sus principales componentes. Conocer los tipos de datos básicos usando Pascal ISO_10206. Conocer las estructuras de control de la programación estructurada y las diferencias entre ellas. Conocer todos los aspectos relacionados con la realización de funciones y procedimientos. A4
A5
B1
B3
B4
Conocer y comprender la importancia de los objetivos de la programación. Conocer los aspectos generales sobre los lenguajes y paradigmas de la programación. Conocer pseudocódigo y la sintaxis del lenguaje Pascal ISO10206 utilizado para describir algoritmos y programas. Conocer los pasos para la realización de un programa y sus principales componentes. Conocer los tipos de datos básicos usando Pascal ISO_10206. Conocer las estructuras de control de la programación estructurada y las diferencias entre ellas. Conocer todos los aspectos relacionados con la realización de funciones y procedimientos. A4
A5
B1
B3
B4
Ser capaz de realizar el seguimiento de un algoritmo (en pseudocódigo) o programa (en Pascal ISO-10206), explicar qué realiza, y encontrar posibles errores. Ser capaz de resolver pequeños algoritmos y programas. A partir del planteamiento de un problema de pequeña-mediana envergadura saber realizar el programa para resolverlo: teniendo en cuenta los objetivos de la programación. Realizar la descomposición adecuada implementando las funciones y procedimientos necesarios correctamente. Emplear un estilo de programación apropiado: saber hacer buen uso de identificadores, comentarios justos, saber establecer precondiciones y postcondiciones, saber realizar un buen diseño de las interfaces de procedimientos y funciones, saber elegir y utilizar los tipos y estructuras de datos adecuados, saber elegir y utilizar las estructuras de control convenientes. Saber hacer buen conocimiento de la parte del lenguaje que se explique. A4
A5
B1
B3
B4
C3
C6
C7
Ser capaz de realizar el seguimiento de un algoritmo (en pseudocódigo) o programa (en Pascal ISO-10206), explicar qué realiza, y encontrar posibles errores. Ser capaz de resolver pequeños algoritmos y programas. A partir del planteamiento de un problema de pequeña-mediana envergadura saber realizar el programa para resolverlo: teniendo en cuenta los objetivos de la programación. Realizar la descomposición adecuada implementando las funciones y procedimientos necesarios correctamente. Emplear un estilo de programación apropiado: saber hacer buen uso de identificadores, comentarios justos, saber establecer precondiciones y postcondiciones, saber realizar un buen diseño de las interfaces de procedimientos y funciones, saber elegir y utilizar los tipos y estructuras de datos adecuados, saber elegir y utilizar las estructuras de control convenientes. Saber hacer buen conocimiento de la parte del lenguaje que se explique. B1
B3
B4
C3
C6
C7
Aprendizaje autónomo. Planificación de las actividades a desarrollar. Capacidad de abstracción. Toma de decisiónes. Capacidad de iniciativa y participación. B3
B4
C3
C6
C7
Aprendizaje autónomo. Planificación de las actividades a desarrollar. Capacidad de abstracción. Toma de decisiónes. Capacidad de iniciativa y participación. B3
B4
C3
C6
C7

Contenidos
Tema Subtema
1 CONCEPTOS BÁSICOS 1.1 Algoritmos
1.1.1 Representación de algoritmos

1.2 Programas
1.2.1 Tipos de programas

1.3 Lenguajes de programación
1.3.1 Una visión histórica
1.3.2 Clasificación de los lenguajes
1.3.3 Instrucciones más importantes
1.3.4 Propiedades de los lenguajes

1.4 Traductores

1.5 Descripción de los lenguajes
1.5.1 Notación BNF
1.5.2 Diagramas de Conway

1.6 Estructura de un programa

1.7 Elementos de un programa
1.7.1 Símbolos predefinidos
1.7.2 Símbolos especiales
1.7.3 Identificadores
1.7.4 Etiquetas
1.7.5 Comentarios
1.7.6 Directivas
1.7.7 Constantes
1.7.8 Números
1.7.9 Cadenas de caracteres
1.7.10 Variables: Declaración e iniciación

1.8 Salida y Entrada
1.8.1 Sentencias de salida
1.8.2 Sentencias de entrada

1.9 Tipos de datos y operadores
1.9.1 Tipos de datos
1.9.2 Operadores
1.9.3 Expresiones
2 SENTENCIAS DE CONTROL 2.1 Secuencial

2.2 Alternativa
2.2.1 La sentencia IF
2.2.2 La sentencia CASE

2.3 Repetitiva
2.3.1 Introducción
2.3.2 Variables asociadas a los bucles
2.3.3 Bucle WHILE
2.3.5 Bucle FOR
2.3.6 Bucle REPEAT
2.3.7 Equivalencia entre bucles
2.3.8 Errores en los bucles
2.3.9 Diseño de bucles
3 ARQUITECTURA DE UN PROGRAMA 3.1 Procedimientos
3.1.1 Concepto
3.1.2 Tipos de procedimientos
3.1.3 Parámetros por valor y referencia
3.1.4 Parámetros protegidos
3.1.5 La pila de activación de procedimientos
3.1.6 Variables globales y locales: Alcance
3.1.7 Efectos laterales

3.2 Funciones
3.2.1 Concepto
3.2.2 Funciones predefinidas
3.2.3 Funciones de usuario

3.3 Recursividad
3.3.1 Naturaleza de la recursividad
3.3.2 Recursividad directa e indirecta. Directiva FORWARD.
3.3.3 Recursión infinita
4 ESTRUCTURAS SIMPLES DE DATOS 4.1 Arrays
4.1.1 Tipo de dato ARRAY
4.1.2 Declaración de un Array
4.1.3 Arrays de más de una dimensión
4.1.4 Operaciones con Arrays
4.1.5 Arrays como parámetros
4.1.6 Funciones de tipo Array
4.1.7 Constantes de tipo Array

4.2 Registros
4.2.1 Tipo de dato registro
4.2.2 La sentencia with
4.2.3 Operaciones con registros
4.2.4 Registros variantes
4.2.5 Registros como parámetros
4.2.6 Funciones de tipo registro
4.2.7 Constantes de tipo registro

4.3 Cadenas
4.3.1 Cadenas de longitud fija
4.3.2 Cadenas de longitud variable

4.4 Conjuntos
4.4.1 Operaciones y relaciones entre conjuntos
4.4.2 Procesamiento de conjuntos

4.5 Operaciones básicas sobre Arrays
5 ENTRADA / SALIDA 5.1 Ficheros
5.2 Tipos
5.3 Operaciones y modos de acceso
5.4 Funciones y procedimientos predefinidos específicos

Planificación
Metodologías / pruebas Competéncias Horas presenciales Horas no presenciales / trabajo autónomo Horas totales
Sesión magistral A4 A5 B1 B3 C6 C7 30 30 60
Seminario B4 C3 C6 8 10 18
Prácticas de laboratorio A5 A4 B1 B3 B4 C3 C6 C7 20 50 70
 
Atención personalizada 2 0 2
 
(*)Los datos que aparecen en la tabla de planificación són de carácter orientativo, considerando la heterogeneidad de los alumnos

Metodologías
Metodologías Descripción
Sesión magistral En las sesiones de teoría, el profesor describe los objetivos y los contenidos de la materia, para dar una visión particular del tema a tratar y relacionarlo con otros dentro de la asignatura

Después se desarrolla el tema correspondiente en la forma de sesión magistral, ayudándose de las herramientas técnicas disponibles, haciendo hincapié en ciertas cuestiones en las que el alumno debe profundizar en su autoaprendizaje.

El objetivo es que el alumno aprenda a algoritmizar, utilizar las estructuras básicas de datos y resolver sencillos problemas de programación. Se utilizará como lenguaje de codificación Pascal Estandar Extendido ISO-10206
Seminario En las sesiones de seminario se realizarán ejercicios y prácticas con la finalidad de detectar en los alumnos lagunas de conocimiento en la materia impartida hasta ese momento, y dar las explicaciones y/o referencias necesarias para subsanarlas.
Prácticas de laboratorio En las sesiones de prácticas el alumno realizará programas en papel para después codificarlo en Pascal Estandar Extendido ISO-10206, compilarlo, ejecutarlo y comprobar su nivel de corrección.

Los enunciados de los programas se proporcionará con la suficiente antelación para que los alumnos puedan aprovechar mejor su tiempo.

Es misión del profesor supervisar el código generado por el alumno para resolver dudas, corregir malos estilos de programación y corregir errores, contando con que el profesor no es un compilador que busca errores.

Atención personalizada
Metodologías
Prácticas de laboratorio
Seminario
Sesión magistral
Descripción
Tanto en las sesiones magistrales como en los laboratorios de prácticas y en las sesiones de seminario se llevará una atención personalizada del alumno, en distintos niveles según sea el tipo de clase, detectando el nivel de asimilación y comprensión de los temas explicados y las prácticas requeridas a implantar.

En las sesiones de seminario es donde se puede llegar más al alumno para conocer las lagunas que tiene, e indicarle el camino para cubrirlas.

Los alumnos que tengan matrícula a tiempo parcial deben, al inicio del curso, hablar con el/los profesores encargados de su grupo.

Evaluación
Metodologías Competéncias Descripción Calificación
Prácticas de laboratorio A5 A4 B1 B3 B4 C3 C6 C7 Como se indicó anteriormente, durante las últimas semanas con prácticas del curso se realizará una prueba en el laboratorio usando ordenadores que tendrá un valor máximo de 3 puntos sobre la nota total del curso. Será necesario que el programa a realizar por el alumno en el laboratorio compile y ejecute de forma correcta y completa. 30
Sesión magistral A4 A5 B1 B3 C6 C7 La nota de la asignatura será la suma de lo obtenido en la Evaluación Continua (durante las 15 semanas del periodo lectivo correspondiente a la asignatura) y lo obtenido en el Examen Final.

La nota de EVALUACIÓN CONTINUA, valorada en 5 puntos, se divide en dos partes:
1.- A la mitad del curso se realizará una prueba escrita que valdrá 2 puntos.
2.- En las últimas semanas con prácticas del curso se realiza una prueba en el laboratorio utilizando ordenadores que valdrá un máximo de 3 puntos.



El EXAMEN FINAL constará de tres ejercicios que el alumno tendrá que desarrollar en código ISO-10206, y tendrá un valor de 5 puntos.


El examen oficial, tanto en la primera(enero) como en la segunda(julio) oportunidad constará de tres problemas a desarrollar en código ISO-10206. Dicho Examen Final tiene un valor máximo de 5 puntos, que se sumarán a lo obtenido en la Evaluación Continua.


Para la evaluación en la convocatoria de diciembre se realizará un único examen de tres problemas a resolver en papel y puntuando sobre 10.
70
 
Observaciones evaluación
<p>The final marks will be given by the continuous assessment marks and the one obtained in the final exam. The final exam will consist in programming three exercices from the practical sessions.</p>

Fuentes de información
Básica ISO (1990). Extended Pascal ISO 10206. ISO
Carmen Bóveda, Esteban García, Alejandra Martínez (2016). Problemas en Pascal Estándar ISO-10206. La Coruña , Reprografia del Noroeste
Carmen Bóveda, Esteban García, Alejandra Martínez (2014). Programación estructurada en un lenguaje didáctico y estándar. La Coruña , Reprografia del Noroeste

Complementária Leestma, S e Nyhoff, L.. (1993). Pascal Programming and Problem Solving. Prentice Hall
Grogono, P (). Programación en Pascal. Addison-Wesley I
Leestma, S e Nyhoff, L.. (1999). Programación en Pascal. Madrid Prentice Hall
Valls, J. e Camacho, D. (2004). Programación estructurado y algoritmos en Pascal. Madrid Prentice Hall


Recomendaciones
Asignaturas que se recomienda haber cursado previamente

Asignaturas que se recomienda cursar simultáneamente
Informática Básica/614G01002

Asignaturas que continúan el temario
Programación II/614G01006

Otros comentarios
&lt;p&gt; El alumno debe tener en cuenta que debe realizar una labor autodidacta muy importante, siguiendo el siguiente esquema: Leer, atender, comprender, preguntar, estudiar y practicar. &lt;/p&gt;&lt;ul&gt;
  • Leer: Lea el tema a tratar antes de asistir a las sesiones teóricas. ¡ES MUY IMPORTANTE!
  • Atender: Atienda en clase, no sólo esté de cuerpo presente.
  • Comprender: Comprenda lo que se le dice en las sesiones de teoría, y si no pregunte.
  • Preguntar: Pregunte todo lo que no comprenda, no quede con dudas.
  • Estudiar: Estudie después de las sesiones, para retener lo comprendido.
  • Practicar: Haga muchos programas, los que se le pidan, sugieran, y otros por su cuenta, tanto en papel como en el ordenador.
  • &lt;/ul&gt;&lt;p&gt;Programación es una asignatura que no se puede aprender estudiando en dos días. El alumno debe ir madurando los conceptos, hacer sobre el papel y en la máquina muchos programas, aprendiendo también de los errores al realizarlos. &lt;/p&gt;&lt;p&gt;Es una asignatura que, por medio del sistema de evaluación continua, se puede aprobar sin más que seguir, de forma activa, el ritmo de las distintas sesiones teóricas y prácticas. Debe hacer caso a las indicaciones particulares de refuerzo de estudio que le señale el profesor. &lt;/p&gt;


    (*) La Guía Docente es el documento donde se visualiza la propuesta académica de la UDC. Este documento es público y no se puede modificar, salvo cosas excepcionales bajo la revisión del órgano competente de acuerdo a la normativa vigente que establece el proceso de elaboración de guías