Temario detallado Programación básica en C++ Conceptos generales de lenguajes y compiladores Proceso de compilación de un programa en C++ bajo Code::Blocks Estructura básica de un programa en C++ Análisis del programa Hola mundo Comentarios Salida de mensajes vía cout Ideas básicas de cómo representar datos en formato binario Tipos de datos básicos: unsigned, int, double, char, string Declaración de variables Expresiones y operadores de asignación Inicialización de variables Entrada y salida de variables vía cin y cout Expresiones y operadores aritméticos: cuatro operaciones básicas, módulo División double vs. división entera
Conversión forzada de tipos Ejercicio: Transformación de unidades (cm vs. pulgadas, metros vs. pies, kilogramos vs. libras vs. onzas, grados F vs. grados C, dólares vs. euros, etc) C 5 9 ( F), 1m 3.28pies, 1in 2.54cm, 1lb 16oz 0.453kg. Ejercicio: Ecuación de la recta (sólo fórmula básica) Estructura condicional if/else Bloques de instrucciones Indentación Operadores de comparación Anidación de condicionales Operadores lógicos Ejercicio: Ecuación de la recta, considerando distintos casos: vertical, horizontal, inclinada Ejercicio: Ecuación cuadrática: soluciones reales y complejas, probar a 0 Ejercicio: Determinar el cuadrante de un punto Estructura condicional switch/case Operadores compuestos, auto incremento y decremento Operador de asignación condicional Operadores de flujo de datos 2
Orden de precedencia de los operadores (tabla) Estructura de repetición while Variables de contador Ejercicio: Enumerar múltiplos de k Ejercicio: Calcular x n Estructura de repetición do/while Programa que puede repetirse indefinidamente Instrucciones break y continue Tipo de datos bool Ejercicio: Determinar si un número es primo Lazos anidados Ejercicio: Enumerar números primos entre 1 y n. Lazos infinitos Ejercicio: Determinar n primeros números primeros Estructura de repetición for Ejercicio: Calcularsumas,productos,logaritmos(Ej: log 2 x ),mínimos, máximos, promedios, rangos, etc. Ejercicio: Calcular factoriales, combinaciones y permutaciones 3
Ejercicio: Calcular términos de la sucesión de Fibonacci Ejercicio: Iterar sobre caracteres, generar palabras Ejercicio: Aproximar derivadas e integrales Funciones Declaración, definición y uso de funciones para realizar cálculos sencillos (tipos de retorno double, unsigned, int) Retorno de valores con la instrucción return Sintaxis de la declaración/definición/llamado de una función Ejercicio: Funciones para calcular factoriales, sumas, productos, potencias, exponenciales 10 e x x i i! Funciones sin argumentos i=0 Funciones tipo void Ejercicio: Funciones para desplegar respuestas Ejercicio: Funciones dibujar figuras geométricas(rectángulos, triángulos, etc) Variables locales y globales Ámbito de acción de una variable 4
Ejercicio: Programa para escribir la tabla de valores de la función seno, empleando la aproximación: Parámetros por valor sin(x) 10 i=0 ( 1) i x 2i+1 (2i+1)! Parámetros por referencia Uso de parámetros por referencia para retornar múltiples valores Ejercicio: Función para intercambiar el contenido de dos variables Ejercicio: Funciones que retornan varios valores: aritmética de números complejos, aritmética de quebrados, etc Funciones recursivas Ejercicio: Versiones recursivas para factorial y potencia Ejercicio: Versiones recursivas para el cálculo de términos de sucesiones (p.ej: sucesión de Fibonacci) Ejercicio: Implementar versiones recursivas e iterativas del método de Newton para encontrar ceros de una función real: x n+1 = x n f(x n) f (x n ) Uso de bibliotecas Biblioteca de matemáticas <cmath> Ejercicio: Ecuación cuadrática (soluciones reales y complejas) 5
Biblioteca <cstdlib>: Generación de números aleatorios Función rand(...) y constante RAND MAX Inicialización del generador con srand. Uso del reloj para la inicialización Generación de números enteros aleatorios en un intervalo {0,...,k} Generación de números aleatorios tipo double en el intervalo [0; 1] Generación de números aleatorios tipo double en un intervalo [a; b] Biblioteca <ctime> Uso del cronómetro Función clock(), tipo clock t y constante CLOCKS PER SEC Uso del reloj Funciones time(...), difftime(...) y tipo time t Tipo estructurado tm y decodificación de valores time t por medio de localtime(...) y gmtime(...) Flujos de datos de salida Control del formato de salida de números decimales: campos ios base::scientific, ios base::fixed, ios base::floatfield Control de la cantidad de decimales. Función miembro precision Control del ancho y alineamiento de cantidades numéricas: Funciones miembro width y fill 6
Salida a archivos. Biblioteca <fstream> Funciones miembro open(...) y close() Apertura de archivos en modos de sobreescritura y apendizaje Flujos de datos de entrada Lecturas con y sin formato Funcionamiento de una lectura con formato: reacción ante la presencia de caracteres extraños, o la terminación anticipada de caracteres en el flujo Validación de lecturas fallidas con fail() Revisión de caracteres sobrantes con peek() Lectura desde archivos Validación de errores en la apertura de archivos Determinación del final del archivo con eof() Lectura de una línea completa a un string empleando la función global getline(istream&, string&) de la biblioteca <string> Nociones de programación orientada a objetos Paradigmas de programación Objetos y clases Variables y funciones miembro 7
Ejercicio: Clase para números racionales. Funciones para suma, producto, simplificación, lectura y escritura en pantalla. Control de acceso a datos con public y private Ocultamiento de variables miembro Constructores y destructores Inicialización de variables miembro Constructor de copia Sobrecarga de operadores Ejercicio: Implementar operadores para clase de números racionales. Operadores de entrada/salida Señalización de errores de lectura con cin.setstate(ios::failbit) Vectores y matrices La biblioteca STL de clases del contenedor La clase vector Declaración de vectores Dimensionamiento con resize Consulta de la dimensión con size 8
Operador de indexación [] Lectura, escritura y manipulación de vectores Ejercicios: Operaciones básicas con vectores: lectura, escritura, suma, producto interno Vectores como argumentos de funciones Ejercicios: Funciones para operaciones básicas con vectores Matrices como vectores de vectores Declaración, dimensionamiento y acceso a los elementos Matrices como argumentos en funciones Ejercicios: Lectura y escritura de matrices, operaciones aritméticas básicas Ejercicio: Solución de sistemas lineales triangulares Ejercicio: Cálculo de determinantes por menores Ejercicio: Ordenamiento por la burbuja y quicksort Modelo de memoria del computador Celdas y direcciones Punteros: declaración y asignación de valores Acceso indirecto a la memoria mediante punteros: operadores * y & Aritmética de punteros: operadores [], +, -, +=, -=, ++ y -- 9
Arreglos dinámicos mediante punteros: operadores new y delete Arreglos como parámetros en funciones Relación entre arreglos y vectores 10