TEMA 1 FUNDAMENTOS DE PROGRAMACIÓN



Documentos relacionados
Prefacio 25 Organización de la Unidad Didáctica Cómo utilizar el libro Objetivos docentes... 27

18-19 GUÍA DE ESTUDIO PÚBLICA LENGUAJES DE PROGRAMACIÓN GRADO EN MATEMÁTICAS SEGUNDO CURSO CÓDIGO

PRESENTACIÓN Y CONTEXTUALIZACIÓN

CURSO DE LENGUAJE C. 4.1 Conceptos básicos de funciones 4.2 Funciones que regresan valores no enteros 4.3 Variables externas 4.4 Reglas de alcance

Prefacio 25. Organización de la Unidad Didáctica Cómo utilizar el libro Objetivos docentes Fundamentos de programación 29

17-18 GUÍA DE ESTUDIO PÚBLICA LENGUAJES DE PROGRAMACIÓN GRADO EN MATEMÁTICAS SEGUNDO CURSO CÓDIGO

LENGUAJES DE PROGRAMACION I. Propósito del curso :

1.2. Es Java un lenguaje ideal para aprender a programar? 1.4. Cuáles son las versiones y distribuciones Java y cuál usar?

CLAVE ASIGNATURA REQUISITOS HORA/SEMANA CREDITOS TI-8 PROGRAMACION II 80% DE ASISTENCIA 4 6

DISEÑO CURRICULAR ALGORITMOS, ESTRUCTURAS Y PROGRAMACIÓN I

Agradecimientos. Nota de los autores. 1 Problemas, algoritmos y programas 1

Unidad Académica de Ingeniería Eléctrica. Programa del curso: Lenguaje de Programación I y Lab.

UNIVERSIDAD AUTÓNOMA DE BAJA CALIFORNIA SUR INGENIERÍA EN TECNOLOGÍA COMPUTACIONAL. ASIGNATURA Programación I. Básica ETAPA DE FORMACIÓN.

LENGUAJES DE PROGRAMACIÓN. Solución al Ejercicio de Autocomprobación 1

PROGRAMACIÓN EN JAVA

INDICE Capitulo 1. El Turbo C++ y el Lenguaje C Capitulo 2. Declaración e inicialización de variables Capitulo 3. Funciones de entrada y salida

Modulo 11. Clases y Objetos en Java

Objetivos y Temario CURSO SQL SERVER 2012

Oracle Database: Conceptos Básicos de SQL y PL/SQL

Introducción a las sentencias de control

CAPÍTULO 1 INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS

Introducción a la programación orientada a objetos

Guía del Curso IFCD052PO PROGRAMACIÓN EN JAVA

UNIDAD I. ALGORITMOS

Oracle Database 11g: Conceptos Fundamentales de SQL y PL/SQL Nuevo

Aspectos de los LP. Diseño de compiladores. Estático vs. Dinámico. Estático vs. Dinámico. Scope. Scope 24/03/2015

Declaración de variables. Sentencias de entrada/salida

INTRODUCCIÓN...9 CAPÍTULO 1. ELEMENTOS DE UN PROGRAMA INFORMÁTICO...11

Oracle Database 11g: Programación con PL/SQL Nuevo

Expresión, Operador, Operando, Asignación, Prioridad

UNIVERSIDAD INTERAMERICANA DE PUERTO RICO RECINTO METROPOLITANO

Indice del curso básico programación desde cero Visual Basic Nivel I (CU00302A)

La sintaxis básica para definir una clase es la que a continuación se muestra:

Oracle Database 10g: Conceptos Básicos de SQL y PL/SQL

Algoritmos y Diagramas de flujo

1 Introducción a los algoritmos y a la programación de computadoras... 1

INICIACIÓN TEÓRICO-PRÁCTICA A TÉCNICAS Y TECNOLOGÍAS ESPECÍFICAS PROGRAMACIÓN CON C++

Índice general 7. Presentación 15

Apuntes de Programación y estructuras de datos. Tipos de datos

Java para no Programadores

LENGUAJES DE PROGRAMACIÓN. Solución al examen de Junio 2017, Primera Semana

4. Operadores Operador asignación

ESCUELA ACADÉMICO PROFESIONAL DE INGENIERÍA DE INFORMÁTICA SÍLABO PLAN DE ESTUDIOS 2008

Java para no Programadores

Análisis de problemas

Oracle Certified Associate, Java SE 8 Programmer

Base de Datos Oracle 10g: Programación con PL/SQL NUEVO

Sistema electrónico digital (binario) que procesa datos siguiendo unas instrucciones almacenadas en su memoria.

Tema 1 INTRODUCCIÓN A LOS LENGUAJES DE PROGRAMACIÓN

ORACLE 10g. Descripción A QUIEN VA DIRIGIDO?

Tablas Hash y árboles binarios

Programa Oficial de Asignatura. Ficha Técnica. Presentación. Competencias y/o resultados del aprendizaje. Contenidos Didácticos

2. ENTIDADES PRIMITIVAS PARA EL DESARROLLO DE ALGORITMOS

Oracle Database: Programación con PL/SQL

Libro 1: Fundamentos de Programación

Fundamentos de Programación y Bases de Datos

Tema 3 Constantes, Variables y Tipos

descripción del argumento identificador tipo longitud condición restricción

LENGUAJES DE PROGRAMACIÓN Ejercicio de autocomprobación 2. Pregunta 1 (1 punto) Pregunta 2 (1 punto)

Indique la veracidad o falsedad de cada una de las afirmaciones siguientes, explicando detalladamente en cada caso el motivo de su respuesta.

Programación 2. Grado en Estadística Aplicada. Curso Generación de números pseudoaleatorios. Manejo de ficheros de texto.

Tema 3. Programación orientada a objetos en Java (Parte 1)

LENGUAJES DE PROGRAMACIÓN. Solución al Ejercicio de Autocomprobación 2

Algoritmos y Estructuras de Datos Ingeniería en Informática, Curso 2º SEMINARIO DE C++ Sesión 1

Comprender las diferencias entre tipos de datos primitivos similares, y aprender a elegir el tipo más conveniente en cada caso.

Programación Orientada a Objetos Sentencias Java Parte I Ing. Julio Ernesto Carreño Vargas MsC.

FUNDAMENTOS DE PROGRAMACIÓN C#

Fundamentos PHP. El término puntuación nos referimos a la sintaxis usada en PHP para la terminación de una línea de código (;)

CARTA DESCRIPTIVA (FORMATO MODELO EDUCATIVO UACJ VISIÓN 2020)

Evaluación de los aprendizajes Elabora un cuadro comparativo con las principales características del lenguaje de programación Java.

Torruco, Rubén Jerónimo Yedra Fecha de elaboración: Mayo de 2010 Fecha de última actualización: Programación. F1101 Algoritmos 1/9

Programación n Orientada a Objetos Sentencias Java Parte I. Ing. Julio Ernesto Carreño o Vargas MsC.

INDICE Parte I Algoritmos y herramientas de programación Capitulo 1. Computadoras y lenguajes de programación Actividades de Programación Resueltas

Todo programa en 'C' consta de una o más funciones, una de las cuales se llama main.

Presentación: Jessica Rivero Espinosa ( ) Inteligencia en Redes de Comunicaciones. Ingeniería de Telecomunicación.

Complejidad de Algoritmos


Capítulo 5 IDENTIFICADORES, VARIABLES Y CONSTANTES. Presentación resumen del libro: "EMPEZAR DE CERO A PROGRAMAR EN lenguaje C"

Clase adicional 2. Estructuras básicas de control. Temas

INTRODUCCIÓN A LA PROGRAMACIÓN

UNIVERSIDAD AUTONOMA DE QUERETARO Facultad de Informática

Programación Digital I

Diseño de algoritmos paralelos

El lenguaje C. if (a>3) { printf("hola"); // bloque printf("%d",a); // de getch(); //código } Partes de un programa en C.

Capítulo 1. Algoritmos, diagramas de flujo y programas.

Java. Introducción a la Programación Orientada a Objetos

Contenedores asociativos en la STL de C++

Tema 4 Genericidad en Java. Programación Orientada a Objetos Curso 2013/2014

Manual avanzado Excel 2007

PROGRAMACIÓN ORIENTADA A OBJETOS CON JAVA

INDICE Prologo Capitulo 1. Algoritmos y programas Capitulo 2. La resolución de los problemas con computadoras y las herramientas de programación

Una Clase: define un grupo de objetos que tienen propiedades similares y se comportan de manera similar.

Unidad Didáctica 2. Elementos básicos del lenguaje Java Tipos, declaraciones, expresiones y asignaciones

2.4. Unidades de aprendizaje. Modelo Académico de Calidad para la Competitividad PSGB-02 15/22

Tema: Clases y Objetos en C++. Parte II.

Sus socios en ISO Manual de Calidad

INDICE. Prólogo de la Segunda Edición

programaciónenjava modalidadteleformación 210horas completamentegratuito

Transcripción:

TEMA 1 FUNDAMENTOS DE PROGRAMACIÓN 1.1 Introducción 1.2 Evolución de los lenguajes de programación 1.3 Paradigmas de programación 1.4 Métodos de implementación 1.5 Lecturas recomendadas 1.6 Ejercicios de autocomprobación 1.7 Soluciones de los ejercicios

FUNDAMENTOS DE PROGRAMACIÓN OBJETIVOS DOCENTES Una vez estudiado el contenido del tema y realizados los ejercicios prácticos, debería saber: Discutir las ideas generales que han guiado la evolución de los lenguajes de programación. Discutir qué influencia ha tenido la arquitectura de la máquina de von Neumann en los primeros lenguajes de programación imperativos. Discutir cómo se produce la ejecución de un programa en la máquina de von Neumann. Discutir qué características tienen los lenguajes de bajo nivel (lenguaje máquina y ensamblador). Discutir las diferencias con los lenguajes de alto nivel y las ventajas de éstos frente a aquéllos. Discutir qué necesidades motivaron el desarrollo de los lenguajes de programación siguientes: FORTRAN, ALGOL, LISP,COBOL, Prolog, SIMULA 67, Pascal, C, Modula-2, Ada, Smalltalk, C++ y Java. Discutir las principales características de estos lenguajes y qué nuevas capacidades aportó cada uno de ellos. Discutir en qué consiste la metodología de la programación estructurada. Discutir las características básicas de los cuatro paradigmas de programación fundamentales: programación imperativa, funcional, lógica y orientada a objetos. Discutir las características, y las ventajas y desventajas, de cada uno de los tres métodos siguientes de implementación de lenguajes de alto nivel: interpretación pura, compilación, y sistema híbrido de interpretación y compilación. Discutir en qué consiste el preprocesado del programa. 31

TEMA 2 COMENZANDO A PROGRAMAR EN C++ 2.1 Introducción 2.2 El programa Hola mundo! 2.3 Literales de tipo string 2.4 Salida por consola 2.5 Manipuladores del flujo de salida 2.6 Flujos predefinidos de entrada y salida 2.7 Lecturas recomendadas 2.8 Ejercicios de autocomprobación 2.9 Soluciones de los ejercicios

COMENZANDO A PROGRAMAR EN C++ OBJETIVOS DOCENTES Una vez estudiado el contenido del tema y realizados los ejercicios prácticos, debería saber: Discutir el significado de cada una de las líneas de código de un programa sencillo, como es el caso del programa Hola mundo!, que escribe en la consola una frase. Discutir cómo se construyen literales de tipo string. Discutir el uso de caracteres especiales en la construcción de literales de tipo string. Discutir cómo se ponen datos en el flujo estándar de salida, empleando manipuladores. Discutir por qué los flujos de entrada y salida funcionan como buffers. Discutir la finalidad de los flujos de salida, entrada y error estándar. 81

TEMA 3 VARIABLES Y TIPOS DE DATOS: PRINCIPIOS BÁSICOS 3.1 Introducción 3.2 Variables 3.3 Tipos de datos 3.4 Arrays 3.5 Cadenas de caracteres 3.6 Punteros 3.7 Variables en memoria dinámica 3.8 Lecturas recomendadas 3.9 Ejercicios de autocomprobación 3.10 Soluciones de los ejercicios

VARIABLES Y TIPOS DE DATOS: PRINCIPIOS BÁSICOS OBJETIVOS DOCENTES Una vez estudiado el contenido del tema y realizados los ejercicios prácticos, debería saber: Discutir qué es una variable y qué atributos tiene. En particular, discutir el significado de los atributos nombre, dirección en memoria, valor y tipo de dato. Discutir qué es la declaración e inicialización de una variable. Discutir qué son las variables constantes. Discutir qué significa que el lenguaje permita establecer ligaduras estáticas y dinámicas sobre el valor de las constantes. Discutir qué es un bloque de código, y los conceptos de ámbito y visibilidad de una variable. Discutir la diferencia entre variables locales y globales. Discutir qué motivaciones tiene la declaración de los tipos de datos de las variables. Discutir qué son los tipos de datos primitivos. En particular, qué son los tipos número entero, número real, Booleano y carácter. Discutir las facilidades que los diferentes lenguajes proporcionan al programador para que éste defina sus propios tipos de datos. Discutir qué es un array, qué significa declarar e inicializar un array, cómo se accede en el programa a los componentes de un array y qué maneras tienen las implementaciones de almacenar los arrays bidimensionales en memoria. Discutir la manera en que diferentes lenguajes soportan las cadenas de caracteres, bien almacenándolas en arrays, cuyos componentes son de tipo carácter, o bien mediante objetos del tipo de dato string. Discutir qué son los punteros y cuáles son algunos de sus principales usos. Discutir qué son las variables en memoria dinámica, y cuál es su diferencia con las variables locales y globales. Discutir algunos de los errores típicos de programación que se cometen al trabajar con arrays, punteros y variables en memoria dinámica. Explicar las facilidades que proporcionan diferentes lenguajes para la prevención y diagnosis de este tipo de errores, que en ocasiones son cometidos por el programador. 109

TEMA 4 VARIABLES Y TIPOS DE DATOS: PROGRAMACIÓN EN C++ 4.1 Introducción 4.2 Declaración de variables 4.3 Tipos de datos básicos 4.4 Límites numéricos 4.5 Inicialización de variables de tipos básicos 4.6 Tipos enumerados 4.7 Estructuras 4.8 Arrays 4.9 Tipos definidos en la librería estándar 4.10 Punteros 4.11 Variables en memoria dinámica 4.12 Ámbito y visibilidad de las variables 4.13 Lecturas recomendadas 4.14 Ejercicios de autocomprobación 4.15 Soluciones de los ejercicios

VARIABLES Y TIPOS DE DATOS: PROGRAMACIÓN EN C++ OBJETIVOS DOCENTES Una vez estudiado el contenido del tema y realizados los ejercicios prácticos, debería saber: Discutir cómo y en qué partes del programa se realiza la declaración e inicialización de variables en C++. Discutir qué restricciones impone C++ a los nombres de los identificadores. Discutir cómo se realiza la declaración a las variables constantes y cómo se les asigna valor. Discutir qué tipos de datos básicos (también llamados primitivos) proporciona C++. Realizar programas sencillos, en los cuales se declaren e inicialicen variables de los tipos de datos básicos, y se vuelque el valor de dichas variables a la consola. Discutir qué son los límites numéricos de los tipos de datos básicos y realizar programas para obtenerlos. Discutir cómo la implementación de C++ realiza la inicialización por defecto de las variables locales y globales de los tipos de datos básicos. Discutir cómo se declaran tipos enumerados y declarar variables de este tipo en programas. Discutir qué son las estructuras, y realizar la declaración e inicialización de estructuras en programas. Declarar e inicializar arrays en programas. Acceder a los componentes de un array. Declarar e inicializar variables y constantes de los tipos de datos std::string y std::vector, que están declarados en la librería estándar de C++. Discutir las diferencias entre arrays y vectores. Discutir de qué tipo son los flujos predefinidos de entrada y salida. Discutir cómo se declaran los punteros y cómo se emplean para referenciar variables, incluyendo las variables en memoria dinámica. 133

LENGUAJES DE PROGRAMACIÓN Discutir cómo se declaran variables y arrays en memoria dinámica, usando el operador new, y cómo se libera el espacio ocupado por esas variables usando el operador delete. Reservar y liberar espacio para este tipo de variables en los programas. Discutir cómo se define en C++ el ámbito y la visibilidad de las variables. Discutir el acceso a variables globales mediante el operador ámbito. Aplicar estos conceptos en el desarrollo de programas. 134

TEMA 5 ASIGNACIONES Y EXPRESIONES: PRINCIPIOS BÁSICOS 5.1 Introducción 5.2 Sentencia de asignación 5.3 Operadores 5.4 Asociatividad y precedencia 5.5 Sistema de tipos 5.6 Lecturas recomendadas 5.7 Ejercicios de autocomprobación 5.8 Soluciones de los ejercicios

ASIGNACIONES Y EXPRESIONES: PRINCIPIOS BÁSICOS OBJETIVOS DOCENTES Una vez estudiado el contenido del tema y realizados los ejercicios prácticos, debería saber: Discutir qué es una sentencia de asignación. Discutir qué es una expresión. Clasificar las expresiones en aritméticas, relacionales, Booleanas y condicionales. Discutir qué son los operadores relacionales y los Booleanos. Indicar cuáles son. Discutir la diferencia de significado entre el operador de asignación y el operador de comparación de igualdad. Clasificar los operadores, en función del número de sus operandos, en unarios, binarios y ternarios. Clasificar la notación de las expresiones, en función de la posición relativa de los operadores respecto a los operandos, en notación prefija, sufija e infija. Emplear en asignaciones los operadores que combinan una operación aritmética con la asignación (+=, -=, *=, /=, %=). Emplear en expresiones los operadores incremento ++ y decremento --, usados tanto como prefijo como postfijo. Discutir qué finalidad tienen las reglas de asociatividad y precedencia. Discutir las reglas de precedencia que comúnmente se aplican en los lenguajes de programación. Discutir qué es el sistema de tipos de un lenguaje de programación. Discutir qué es la sobrecarga de los operadores. Discutir la diferencia entre las conversiones de tipo explícitas e implícitas. Discutir las reglas que aplica el compilador de C para realizar las coerciones (conversiones implícitas). Discutir en qué consiste la verificación de tipos, y la diferencia entre verificación estática y dinámica. Discutir qué se entiende por lenguaje fuertemente tipado. 167

TEMA 6 ASIGNACIONES Y EXPRESIONES: PROGRAMACIÓN EN C++ 6.1 Introducción 6.2 El operador asignación 6.3 Operadores aritméticos 6.4 Operadores relacionales y lógicos 6.5 Operadores << y >> 6.6 Operando con valores numéricos 6.7 Entrada por teclado 6.8 Operando con strings 6.9 Operando con punteros 6.10 Relación entre punteros y arrays 6.11 Operando con vectores 6.12 Operando con estructuras 6.13 Lecturas recomendadas 6.14 Ejercicios de autocomprobación 6.15 Soluciones de los ejercicios

ASIGNACIONES Y EXPRESIONES: PROGRAMACIÓN EN C++ OBJETIVOS DOCENTES Una vez estudiado el contenido del tema y realizados los ejercicios prácticos, debería saber: Discutir cómo son las sentencias de asignación en C++ y las conversiones de tipo que se producen automáticamente al ejecutar dichas sentencias. Construir expresiones empleando los operadores aritméticos de C++. Decidir, aplicando las reglas de precedencia, el orden de evaluación de los operadores en las expresiones aritméticas. Construir expresiones lógicas empleando los operadores aritméticos, relacionales y lógicos de C++. Decidir, aplicando las reglas de precedencia, el orden de evaluación de los operadores que intervienen en las expresiones lógicas. Discutir en qué consiste la evaluación en cortocircuito de los operadores lógicos. Discutir el significado de los operadores >> y << cuando se aplican a palabras de bits y a flujos. Emplear las funciones matemáticas declaradas en la cabecera estándar cmath. Emplear punteros para el direccionamiento de variables. Emplear los operadores dirección-de e indirección. Discutir la relación existente entre punteros y arrays. Emplear punteros para direccionar los componentes de un array. Declarar variables del tipo std::complex, std::string y std::vector, inicializarlas y usar dichas variables en la construcción de expresiones, empleando las funciones miembro y los operadores definidos en la librería estándar para este tipo de datos. Discutir qué son los iteradores. Declarar iteradores a vectores y emplearlos para direccionar los componentes de un vector. Emplear variables de tipo estructura en expresiones y sentencias de asignación. Emplear punteros para referenciar las estructuras y sus miembros. Emplear arrays cuyos componentes sean de tipo estructura. Discutir qué es una estructura autorreferenciada y cuál es su utilidad. Realizar programas sencillos en los que se realicen operaciones de entrada por teclado y salida por consola, se declaren e inicialicen variables, se manipulen los datos almacenados en variables empleando expresiones y se guarden en variables los resultados, usando para ello sentencias de asignación. 189

TEMA 7 CONTROL DEL FLUJO DEL PROGRAMA: PRINCIPIOS BÁSICOS 7.1 Introducción 7.2 Sentencias de selección 7.3 Sentencias iterativas 7.4 Excepciones 7.5 Lecturas recomendadas 7.6 Ejercicios de autocomprobación 7.7 Soluciones de los ejercicios

CONTROL DEL FLUJO DEL PROGRAMA: PRINCIPIOS BÁSICOS OBJETIVOS DOCENTES Una vez estudiado el contenido del tema y realizados los ejercicios prácticos, debería saber: Discutir qué finalidad tienen las sentencias de selección y las sentencias iterativas, y cuál es la diferencia entre ambas. Discutir cómo se controla el flujo del programa en las sentencias de selección if, case y switch. Discutir las diferencias entre ellas. Discutir en qué consiste el problema del else ambiguo y de qué maneras evitan los lenguajes que surja este problema. Discutir el significado y qué usos tienen las sentencias break y continue. Discutir cómo se controla el flujo del programa en las diferentes formas de la sentencia iterativa for, y en las sentencias controladas mediante expresión Booleana. Respecto a este último tipo de sentencias, discutir la diferencia entre las sentencias con precondición (por ejemplo, sentencia while) y con postcondición (por ejemplo, sentencia do-while). Discutir qué son las excepciones y en qué consiste, a grandes rasgos, la captura y tratamiento de las excepciones. 259

TEMA 8 CONTROL DEL FLUJO DEL PROGRAMA: PROGRAMACIÓN EN C++ 8.1 Introducción 8.2 Sentencias de selección 8.3 Sentencias iterativas 8.4 Excepciones 8.5 Entrada por teclado 8.6 Entrada y salida por fichero 8.7 Lecturas recomendadas 8.8 Ejercicios de autocomprobación 8.9 Soluciones de los ejercicios

CONTROL DEL FLUJO DEL PROGRAMA: PROGRAMACIÓN EN C++ OBJETIVOS DOCENTES Una vez estudiado el contenido del tema y realizados los ejercicios prácticos, debería saber: Emplear las sentencias de selección (if y switch) e iterativas (for, while y do-while), así como las sentencias break y continue, en la escritura de programas en C++. Realizar programas en los que se capturen y traten excepciones dentro del código de la función main. Las excepciones capturadas podrán ser tanto las lanzadas por el programador, como las lanzadas por las funciones y operadores de la librería estándar de C++. Declarar variables en memoria dinámica, capturando y tratando la excepción std::bad_alloc. Programar la entrada de datos a través del flujo std::cin, empleando un bucle while, analizando el tipo de error producido y descartando el contenido del flujo de entrada cuando proceda. Discutir cómo cambia el estado del flujo de entrada, dependiendo de si la operación sobre el flujo se ha realizado o no con éxito. Emplear en los programas las funciones que proporcionan información acerca del estado del flujo de entrada y que cambian dicho estado. Escribir programas en C++ en los cuales se realice entrada y salida a fichero de texto. 291

TEMA 9 SUBPROGRAMAS: PRINCIPIOS BÁSICOS 9.1 Introducción 9.2 Funciones 9.3 Funciones recursivas 9.4 Procedimientos 9.5 Lecturas recomendadas 9.6 Ejercicios de autocomprobación 9.7 Soluciones de los ejercicios

SUBPROGRAMAS: PRINCIPIOS BÁSICOS OBJETIVOS DOCENTES Una vez estudiado el contenido del tema y realizados los ejercicios prácticos, debería saber: Discutir qué es un subprograma y qué ventajas proporciona el uso de subprogramas. Discutir de qué partes consta la definición de una función. Discutir cómo se realiza la invocación de una función. Definir qué son los parámetros formales de la función y qué son los parámetros actuales usados en la invocación. Discutir cómo se realiza la evaluación de una función. Discutir en qué consiste el paso de parámetros por valor y por referencia, y la diferencia entre ambas formas de invocación de funciones. Discutir cómo se realiza el paso de parámetros a funciones en los lenguajes C y C++. Reconocer el ámbito y la visibilidad de las variables locales y de los parámetros declarados en funciones. Reconocer si una función es recursiva, si tiene recursividad lineal y si tiene recursividad de cola. Discutir la diferencia entre una función y un procedimiento. Discutir de qué partes consta la definición de un procedimiento y cómo se realiza su invocación. 343

TEMA 10 SUBPROGRAMAS: PROGRAMACIÓN EN C++ 10.1 Introducción 10.2 Definición de las funciones 10.3 Llamada a las funciones 10.4 Paso de parámetros a las funciones 10.5 Ámbito y visibilidad 10.6 Sentencia return 10.7 Punteros a funciones 10.8 Excepciones 10.9 Prototipos 10.10 Organización del programa en varios ficheros 10.11 Espacios de nombres 10.12 Lecturas recomendadas 10.13 Ejercicios de autocomprobación 10.14 Soluciones de los ejercicios

SUBPROGRAMAS: PROGRAMACIÓN EN C++ OBJETIVOS DOCENTES Una vez estudiado el contenido del tema y realizados los ejercicios prácticos, debería saber: Discutir cómo se definen e invocan funciones en lenguaje C++. Discutir cómo se realiza el paso de parámetros a las funciones en lenguaje C++. Realizar programas en los cuales se definan e invoquen funciones. Dada una función, reconocer el ámbito y la visibilidad de los parámetros formales y las variables locales. Discutir cómo son tratadas, a efectos de su almacenamiento en memoria, las variables estáticas declaradas en el cuerpo de una función. Discutir cuál es el ámbito de dichas variables. Emplear este tipo de variables en la programación de funciones. Discutir el significado de la sentencia return y emplear dicha sentencia en la programación de funciones. Realizar programas en los cuales se definan funciones que lancen excepciones y en los cuales estas excepciones sean capturadas y tratadas. Discutir qué es la declaración y la definición de una función, y cuál es la diferencia entre ambas. Realizar programas en los cuales las funciones sean declaradas y definidas. Escribir programas organizados en varios ficheros. Discutir cuál es el propósito de los espacios de nombres, y realizar programas en los cuales se definan espacios de nombres y se usen las entidades declaradas en ellos. 367

TEMA 11 ESTRUCTURAS DE DATOS: PRINCIPIOS BÁSICOS 11.1 Introducción 11.2 Listas 11.3 Mapas 11.4 Árboles 11.5 Lecturas recomendadas 11.6 Ejercicios de autocomprobación 11.7 Soluciones de los ejercicios

ESTRUCTURAS DE DATOS: PRINCIPIOS BÁSICOS OBJETIVOS DOCENTES Una vez estudiado el contenido del tema y realizados los ejercicios prácticos, debería saber: Discutir qué son los tipos abstractos de datos y qué utilidad tienen. Para las estructuras de datos lista, pila, cola, mapa y árbol, discutir: Qué características tiene cada estructura. Los conceptos y la terminología básicos relacionados con cada estructura de datos. Qué utilidad puede tener cada una de estas estructuras de datos en la realización de programas. Qué operaciones se realizan comúnmente sobre cada una de estas estructuras de datos. Cómo puede implementarse cada una de estas estructuras de datos mediante un array y mediante estructuras autorreferenciadas. Pros y contras en cada caso de estas dos opciones de implementación. Programar en C++ listas, incluyendo pilas y colas, mediante estructuras autorreferenciadas, así como programar funciones que realicen operaciones básicas sobre listas. 423

TEMA 12 ESTRUCTURAS DE DATOS: PROGRAMACIÓN EN C++ 12.1 Introducción 12.2 Standard Template Library 12.3 Listas 12.4 Pilas 12.5 Colas 12.6 Mapas 12.7 Lecturas recomendadas 12.8 Ejercicios de autocomprobación 12.9 Soluciones de los ejercicios

ESTRUCTURAS DE DATOS: PROGRAMACIÓN EN C++ OBJETIVOS DOCENTES Una vez estudiado el contenido del tema y realizados los ejercicios prácticos, debería saber: Planteado un problema de programación, discutir qué estructuras de datos sería más adecuado usar de entre las siguientes: listas, pilas, colas y mapas. Discutir conceptos básicos de los componentes fundamentales de la Standard Template Library (STL) de C++. Esto es, de los contenedores, algoritmos e iteradores. Emplear en la realización de programas en C++ los tipos lista, cola, pila y mapa declarados en la STL, sabiendo declarar e inicializar variables de esos tipos, insertar, eliminar, modificar y buscar elementos, y manipular el contenido de las variables de dichas estructuras de datos empleando funciones miembro. Emplear iteradores para acceder a los elementos de listas, colas, pilas y mapas. 451

TEMA 13 ALGORITMOS: PRINCIPIOS BÁSICOS 13.1 Introducción 13.2 Paradigmas de diseño 13.3 Descripción del algoritmo 13.4 Complejidad 13.5 Algoritmos de ordenación 13.6 Lecturas recomendadas 13.7 Ejercicios de autocomprobación 13.8 Soluciones de los ejercicios

ALGORITMOS: PRINCIPIOS BÁSICOS OBJETIVOS DOCENTES Una vez estudiado el contenido del tema y realizados los ejercicios prácticos, debería saber: Discutir qué es un algoritmo. Discutir las características básicas de los siguientes paradigmas para el diseño de algoritmos: fuerza bruta o búsqueda exhaustiva, divide y vencerás, programación dinámica, programación lineal, programación entera, y búsqueda y enumeración. Discutir las principales características de las dos formas siguientes de describir los algoritmos: mediante pseudocódigo y mediante diagrama de flujo. Discutir cómo se estima la complejidad de un algoritmo y qué es la notación O. Discutir cuál es la finalidad de los algoritmos de ordenación. Programar en C++ los tres algoritmos de ordenación siguientes: método de la burbuja, ordenación por inserción y ordenación por mezcla. 503

TEMA 14 ALGORITMOS: PROGRAMACIÓN EN C++ 14.1 Introducción 14.2 Contar elementos 14.3 Eliminar y reemplazar elementos 14.4 Invertir el orden de los elementos 14.5 Transformar los elementos 14.6 Lecturas recomendadas 14.7 Ejercicios de autocomprobación 14.8 Soluciones de los ejercicios

ALGORITMOS: PROGRAMACIÓN EN C++ OBJETIVOS DOCENTES Una vez estudiado el contenido del tema y realizados los ejercicios prácticos, debería saber: Realizar programas en C++ empleando los algoritmos siguientes, que se encuentran declarados en la STL de C++: count count_if remove_copy replace_copy reverse transform 525