Muestra las diferencias entre dos versiones de la página.
| Ambos lados, revisión anterior Revisión previa Próxima revisión | Revisión previa | ||
|
highlevel:c [2008/07/01 09:53] alfred |
highlevel:c [2020/05/09 09:25] (actual) |
||
|---|---|---|---|
| Línea 416: | Línea 416: | ||
| Podemos concatenar strings mediante el operador '+'. | Podemos concatenar strings mediante el operador '+'. | ||
| + | |||
| Línea 434: | Línea 435: | ||
| <code cpp>vector<int> Sumar (vector<double>) {...}</code> | <code cpp>vector<int> Sumar (vector<double>) {...}</code> | ||
| * También podemos pasarlos por referencia: ''vector<double>& v'' | * También podemos pasarlos por referencia: ''vector<double>& v'' | ||
| + | * Podemos recorrer un vector con un iterador: | ||
| + | <code cpp> | ||
| + | for (vector<point>::iterator it = points.begin(); it!=points.end(); ++it) { | ||
| + | cout << it->x << endl; | ||
| + | } | ||
| + | </code> | ||
| ===== ANSI C ===== | ===== ANSI C ===== | ||
| Línea 445: | Línea 452: | ||
| * ''fmod'' calcula el resto de coma flotante de dos doubles. | * ''fmod'' calcula el resto de coma flotante de dos doubles. | ||
| * ''exp'' calcula la función exponencial. | * ''exp'' calcula la función exponencial. | ||
| + | |||
| + | |||
| ==== time ==== | ==== time ==== | ||
| Línea 450: | Línea 459: | ||
| * ''time'', esta función devuelve el tiempo de la máquina; el tipo devuelto es un ''time_t'' y el que se le pasa como parámetro una referencia a una variable de este tipo, si esta que se le pasa por parámetro no es NULL colocará en ella tambiénen el resultado. | * ''time'', esta función devuelve el tiempo de la máquina; el tipo devuelto es un ''time_t'' y el que se le pasa como parámetro una referencia a una variable de este tipo, si esta que se le pasa por parámetro no es NULL colocará en ella tambiénen el resultado. | ||
| * ''localtime'' convierte un ''time_t'' en un ''tm'', otra estructura de tiempo más legible en la que se especifican los segundos, minutos... | * ''localtime'' convierte un ''time_t'' en un ''tm'', otra estructura de tiempo más legible en la que se especifican los segundos, minutos... | ||
| + | <code c> | ||
| + | time_t t; | ||
| + | time(&t); | ||
| + | tm hora = *localtime(&t); | ||
| + | int hour = hora.tm_hour; | ||
| + | int min = hora.tm_min; | ||
| + | int sec = hora.tm_sec; | ||
| + | </code> | ||
| * ''mktime'' hace lo contrario a localtime, convierte un ''tm'' en ''time_t''. | * ''mktime'' hace lo contrario a localtime, convierte un ''tm'' en ''time_t''. | ||
| * ''difftime'' calcula la diferencia entre dos ''time_t'' en segundos expresada en double. | * ''difftime'' calcula la diferencia entre dos ''time_t'' en segundos expresada en double. | ||
| Línea 617: | Línea 634: | ||
| } | } | ||
| </code> | </code> | ||
| + | |||
| ==== Asserts ==== | ==== Asserts ==== | ||
| - | * Para usarlas deberás hacer ''#include<cassert>'' en unos compiladores, en otros ''#include <assert.h>'' | + | * Para usarlas deberás hacer ''#include<cassert>'' en compiladores de C++, en los de C ''#include <assert.h>'' |
| * La idea se basa en una línea de código que ha de cumplirse para que el programa pueda seguirse ejecutando, si no se cumpliese debería dar error. | * La idea se basa en una línea de código que ha de cumplirse para que el programa pueda seguirse ejecutando, si no se cumpliese debería dar error. | ||
| - | * Ej. ''assert (i > 3);'' <- si i no es mayor que 3 el compilador actúa. \\ | + | * Ej. ''assert (i > 3);'' <- si i es menor que 3 el compilador actúa. (Comprueba si la expresión pasada por parámetro no es cero, si lo es envia lanza un error) \\ |
| //Por qué frases tan abstractas como "el compilador actúa" o "debería dar error"?// Porque esto va según la config del compilador. Algunos, en código release no hacen caso de los asserts, otros ni en debug. Aún así son muy útiles, ya que generalmente hacen que el programa se pare indicando un error de aserción, donde se encuentra y el por qué. \\ | //Por qué frases tan abstractas como "el compilador actúa" o "debería dar error"?// Porque esto va según la config del compilador. Algunos, en código release no hacen caso de los asserts, otros ni en debug. Aún así son muy útiles, ya que generalmente hacen que el programa se pare indicando un error de aserción, donde se encuentra y el por qué. \\ | ||
| Si quieres desactivar los assert añade ''#define NDEBUG''. | Si quieres desactivar los assert añade ''#define NDEBUG''. | ||