Ejemplos en C

Eliminar la nota más baja

Muestra las fases del proceso de resolución de problemas (análisis, diseño, implementación y prueba).

]]>
Verifica que se haya aplicado la regla de eliminar la nota más baja a los promedios de un curso ponderado. Obtener código fuente.

Fortuna

Muestra generación de números pseudo-aleatorios, switch, assert.

]]>
Ejemplo fortuna. Obtener código fuente.

Permutaciones y combinaciones

Muestra la modularización de un programa en funciones, archivos de encabezado (.h) y archivos fuente (.c):

]]>
main.c
]]>
combinatorics.h
]]>
combinatorics.c
]]>
Makefile

Mediana estadística

Versión 1: arreglo en memoria de pila

]]>
Este programa está limitado al tamaño de la memoria de pila (ej: 8 MiB en Linux). Nótese que se pasa por parámetro la función compare() sin los paréntesis en la línea 20. Si se usaran los paréntesis sería una invocación de función y sería reemplazado por su valor de retorno. Obtener código fuente.

Versión 2: arreglo en memoria dinámica

]]>
Esta versión usa memoria dinámica y por tanto, puede cargar una cantidad mucho mayor de datos a RAM. En clase corrió con éxito con un archivo de 278 MB. Esta versión crea un puntero a función compare llamado function_pointer. Esto no es necesario, sólo es para ilustrar la sintaxis de los punteros a funciones en C. Obtener código fuente.

Variables en el segmento de datos

Las variables globales y variables estáticas son almacenadas en el segmento de datos. Este se crea en tiempo de compilación, y es copiado idéntico del ejecutable al segmento de memoria mientras el programa se carga.

]]>
Variables globales y estáticas en el segmento de datos. Obtener código fuente.

Tipos de arreglos en C

]]>
Muestra como se declaran, acceden, destruyen y pasan por parámetro diferentes tipos de arreglos en C. Obtener código fuente.

Cadenas de caracteres de C

También llamadas cadenas de caracteres terminadas en nulo (null-terminated strings). Son simplemente arreglos (de caracteres) que tienen un elemento más ('\0') para indicar dónde termina la cadena.

Error común: creer que un char* es un objeto string

Un char* str no es un arreglo de caracteres, es sólo un puntero, una variable entera. Para que tenga memoria donde se pueda escribir un texto, debe crearse un arreglo con cualquiera de las formas vistas en la sección anterior. El siguiente programa debería fallar al ejecutarse.

]]>
Escribir en un puntero no inicializado provoca un comportamiento impredecible del programa en tiempo de ejecución. Obtener código fuente.

Leer palabras con scanf

Se puede usar scanf() para leer cadenas de caracteres, siempre y cuando se indique la capacidad del arreglo (menos 1 para guardar el fin de cadena):

]]>
Lee una palabra a la vez (separada por espacios en blanco). Obtener código fuente.

Leer y procesar líneas de la entrada estándar

Puede usarse la función fgets(). El encabezado string.h tiene funciones comunes para el manejo de cadenas de caracteres. Este programa muestra cómo se puede implementar una función strlen() con índices, y una función que cambia el string a mayúsculas usando aritmética de punteros.

]]>
Lee líneas y las cambia a mayusculas. Obtener código fuente.

Argumentos de la línea de comandos

]]>
Imprime en la salida estándar los argumentos con que se invoca el programa en la línea de comandos. Obtener código fuente.

Registros (estructuras)

]]>
Versión incompleta del comando fsplit. Obtener código fuente.

Crear bibliotecas en C

El siguiente ejemplo muestra comandos para compilar bibliotecas estáticas o dinámicas en C

]]>
Makefile con comandos para compilar bibliotecas en C. Obtener código fuente.

Ejemplos en C++

Namespaces

]]>
Diferentes símbolos pueden tener el mismo identificador y no colisionar gracias a los espacios de nombres. Obtener código fuente.

Clases: Fraction

]]>
Primera versión de la clase Fraction, sin sobrecarga de operadores. Obtener código fuente.
]]>
Posible traducción de la clase Fraction a C (incompleto). Para ver una traducción completa, puede verse los ejemplos del semestre anterior. Obtener código fuente.

Calculadora fraccional

]]>
Función main() que instancia el objeto que representa la aplicación. Obtener código fuente.
]]>
Interfaz de la clase que implementa la calculadora fraccional estándar. Obtener código fuente.
]]>
Implementación de la calculadora fraccional estándar. Obtener código fuente.
]]>
Interfaz de la clase Fraction. Obtener código fuente.
]]>
Implementación de la clase Fraction. Obtener código fuente.

Biblioteca ECCI

]]>
Makefile para compilar las demostraciones de cada clase de la biblioteca ECCI. Obtener código fuente.

Clase String

]]>
Encabezado clase String. Obtener código fuente.
]]>
Implementación clase String. Obtener código fuente.
]]>
Programa de prueba de la clase String. Obtener código fuente.

Clase Array

]]>
Encabezado clase Array. Obtener código fuente.
]]>
Implementación clase Array. Obtener código fuente.
]]>
Programa de prueba de la clase Array. Obtener código fuente.

Clase List

]]>
Encabezado clase List. Obtener código fuente.
]]>
Programa de prueba de la clase List. Obtener código fuente.

Clase Map

]]>
Encabezado clase Map. Obtener código fuente.
]]>
Programa de prueba de la clase Map. Obtener código fuente.

Herencia y polimorfismo: Trivia

main.cpp

]]>
main.cpp. Obtener código fuente.

Common.h

]]>
Common.h. Obtener código fuente.

Clase Trivia (view+controller)

]]>
Trivia.h. Obtener código fuente.
]]>
Trivia.cpp. Obtener código fuente.

Clase Player (model)

]]>
Player.h. Obtener código fuente.
]]>
Player.cpp. Obtener código fuente.

Clase Question (model)

]]>
Question.h. Obtener código fuente.
]]>
Question.cpp. Obtener código fuente.

Clase TextQuestion

]]>
TextualQuestion.h. Obtener código fuente.
]]>
TextualQuestion.cpp. Obtener código fuente.

Clase NumericQuestion

]]>
NumericQuestion.h. Obtener código fuente.
]]>
NumericQuestion.cpp. Obtener código fuente.

Clase SingleChoiceQuestion

]]>
SingleChoiceQuestion.h. Obtener código fuente.
]]>
SingleChoiceQuestion.cpp. Obtener código fuente.

Ejemplos en Qt

Evaluador de expresiones aritméticas

Project y main

]]>
ExpressionEvaluator.pro. Obtener código fuente.
]]>
main.cpp. Obtener código fuente.

Controlador ExpressionEvaluatorApp

]]>
ExpressionEvaluatorApp.h. Obtener código fuente.
]]>
ExpressionEvaluatorApp.cpp. Obtener código fuente.

Vista MainWindow

]]>
MainWindow.h. Obtener código fuente.
]]>
MainWindow.cpp. Obtener código fuente.

Modelo ExpressionEvaluator

]]>
ExpressionEvaluator.h. Obtener código fuente.

Juego MonsterCatch

Implementación incompleta, pero permite observar principios básicos de animación, detección de colisiones, eliminación de objetos gráficos...

Ejemplo inicial de un juego en Qt
QtGameMonsterCatch.zip