Académique Documents
Professionnel Documents
Culture Documents
Las directivas son instrucciones al compilador. Son generalmente sentencias que darn instrucciones al compilador antes de que el programa se compile. Aunque las directivas pueden definir macros, nombres de constantes, archivos fuentes adicionales, etc., su uso mas frecuente en C++ es la de incluir archivos cabecera en el programa.
La directiva #include
Esta le indica al compilador que lea el archivo fuente que viene a continuacin de ella y su contenido lo inserte en la posicin donde se encuentra dicha directiva. Estos archivos se denominan archivos de cabecera o archivos de inclusin. Los archivos de cabecera, con extensin .h o .hpp, contienen cdigo fuente C/C++ y se sitan en un programa C/C++ mediante la directiva del preprocesador #include, y sigue el siguiente formato: #include <nombrearchivo.h> #include nombrearchivo.h
6
La directiva #include tambin es usada para incluir archivos de sistemas especiales, tambin denominados archivos de cabecera, que residen en su compilador C++. Cuando se instala el compilador, estos archivos de cabecera se almacenan automticamente en su disco en el directorio de inclusin, include, del sistema. Sus nombres de archivos siempre tienen la extensin .h
La directiva #define
Indica al preprocesador que defina un tem de datos u operacin para el programa C++. Eje. #define TAM_LINEA 65
Declaraciones globales.
Estas le indican al compilador que las funciones definidas por el usuario o variables as declaradas son comunes y accesibles a todas las funciones del programa. Las declaraciones globales se sitan antes de la funcin main().
Funcin main()
Sintaxis o estructura es: main() { cuerpo del programa.; }
10
11
12
Tokens
tokens son los elementos en que el preprocesador desmenuza el cdigo fuente. En un lenguaje de programacin, los tokens son el equivalente a las palabras y signos de puntuacin en el lenguaje natural escrito. Los tokens estn separados por elementos de separacin que reciben el nombre genrico de separadores
13
considerar que el lenguaje computacional C++ tiene las siguientes clases de "palabras"): Palabras clave ("keywords"). C++ dispone de un conjunto relativamente extenso de palabras clave, sealadas en (3.2.1). Identificadores. Su nmero puede ser virtualmente infinito; dentro de ciertas normas el programador es libre de elegir los que mejor se ajusten a sus necesidades.(3.2.2). Constantes. Existen varias clases, cuyos detalles se exponen mas adelante( 3.2.3) operadores ( 4.9) signos de puntuacin, tambin llamados puntuadores ( 3.2.6).
14
Tipos de datos
Los tipos de datos en C++ se enmarcan dentro de las
siguientes tres categoras principales: 1. Tipos de datos simples 2. Tipos de datos estructurados 3. Tipo de dato puntero.
15
2.
3.
Enteros: Este tipo de datos trabaja con enteros o nmeros que no tienen parte decimal. Punto flotante: Este trabaja con nmeros decimales. Tipos enumerados: Estos son datos definidos por el usuario.
16
long
bool unsigned char unsigned short unsigned int unsigned long
17
Tipo de dato int: Estos nmeros se mueven en el rango entre -2147483648 y 2147483647 y ocupa 4 bytes de memoria. Eje. -6747, 34567, 567473, 22, -3, 89 Nota:
1.
2.
Los nmeros enteros positivos no necesitan el signo de + en el frente. Los nmeros enteros no necesitan coma para separar las unidades de mil, por tal razn: 35,789 se interpretara como dos enteros diferentes: 35 y 789
18
Tipo de datos bool: Es usado para almacenar valores lgicos, true(verdadero) y false(falso). El propsito general de este tipo de datos es manejar o evaluar expresiones lgicas, booleanas. Nota: bool, false y true son palabras reservadas en C++.
19
Tipo de datos char: Es el menor de todas las variantes de datos enteros. Adems de permitirnos trabajar con numero pequeos (-128 hasta 127), permite representar caracteres, esto es, letras, dgitos y smbolos o caracteres especiales. Eje. A, a, b, ), 0, &, , +
20
21
double: este tipo se usa para representar valores reales entre -1.7E+308 y 1.7E+308. Se usan 8 bytes para almacenarlo en memoria. Nota:
1. 2.
3.
Los valores mximo y mnimo de los tipos de datos float y double dependen del sistema. El numero mximo de dgitos significativos, es decir el numero de espacios decimales en un float es de 6 o 7, mientras que en un double es de 15. El numero mximo de dgitos significativos es llamado precisin. Algunas veces los float son llamados de precisin simple y los double son llamados de doble precisin.
22
char
short int unsigned int long float double long double
C
-15 1024 43566 256789 10.5 0.000004 1e-8
1
2 2 2 4 4 8 8
0..255
-128..127 -32768..32767 0..65535 -2147483648..2147483637 3.4x10^-38 .. 3.4x10^38 1.7x10^-308 .. 1.7x10^308 Igual que double
23
24
sutilmente diferentes aunque relacionadas, que conviene distinguir: La primera es el sentido normal de la palabra constante en lenguaje natural; es decir, datos (de cualquiera de los tipos posible) cuyos valores se han definido en el momento de escribir el cdigo del programa, y no pueden ser modificados ms tarde en tiempo de ejecucin (lo que significa que sus valores deben ser resueltos en tiempo de compilacin). Dicho en otras palabras: el compilador sabe cual es el valor de los objetos declarados como constantes y en base a este conocimiento puede hacer cuantas suposiciones sean vlidas para conseguir la mayor eficiencia en tiempo de ejecucin.
25
La segunda connotacin es la de tipo de objeto-dato. En este sentido podemos afirmar que en C++ los enteros (variables) forman un tipo distinto de los enteros constantes (constantes enteras), y que los caracteres (variables) forman un tipo distinto de las constantes carcter. As pues, distinguimos entre un tipo char y un tipo const char. Como prcticamente todos los tipos de objeto-dato posibles en C++ puede declararse constantes, existe un universo de tipos C++, simtrico al de los tipos de objetos variables, pero de objetos constantes.
26
Constantes
En C++ existen cuatro tipos de constantes:
Literales Definidas Enumeradas Declaradas
27
Constantes literales
Son las constantes mas usuales que se escriben directamente en el texto del programa. Generalmente se clasifican en:
Enteras : Representa un numero entero o valor int Caracteres : Representa un carcter de cdigo ASCII Coma flotante : Representa un numero real De cadena: Es una secuencia de caracteres encerrados entre comillas .
28
Las constantes definidas son identificadores que se asocian con valores literales contantes y que toman determinados nombres. Son conocidas como constantes simblicas y pueden ser definidas mediante la directiva #define. Ej. #define NUEVALINEA \n #define PI 3.141592 #define VALOR 54 Estas lneas no deben terminar en punto y coma, pues cuando C++ encuentra una de estas la sustituye por sus valores respectivos.
29
Constantes Enumeradas: Estas permiten crear listas de elementos afines, es decir, asociar un identificador tal como un color, por ejemplo, con una secuencia de otros nombres, tales como Azul, Verde, Rojo y Amarillo. Ej. enum Colores { Azul, Verde, Rojo, Amarillo}; Cuando esta secuencia es procesada, el compilador asigna un valor que comienza en 0 a cada elemento enumerado. El compilador enumera los identificadores por usted, despus de declarar un tipo enumerado, se pueden crear variables de ese tipo como con cualquier otro tipo de datos: Colores ColorFavorito = Verde;
30
Constantes Declaradas const y volatile: El cualificador const permite dar nombres simblicos a constantes a modo de otros lenguajes, como Pascal. El formato general es: const tipo nombre = valor; const int OCTAL = 0233; const char CADENA []= Curso de C++; Nota: Si se omite el tipo, entonces C++ utiliza int por defecto.
31
especifican los tipos de datos terminan con punto y coma se inicializan como las variables no especifica tipos de datos no utiliza el operador de asignacin = no termina con punto y coma
La directiva #define
32
eficientes con constantes definidas con const como las definiciones especifican el tipo de datos, el compilador puede comprobar inmediatamente si las constantes literales en las definiciones estn en forma correcta. Con #define el compilador no puede realizar esta prueba.
33
34
Sintaxis de const
const tipoDato nombreConstante = valorConstante; Eje. const unsigned DIAS_DE_SEMANA= 7; const int HORAS_DEL_DIA = 24;
35
36
Identificadores
Secuencia de caracteres, letras, dgitos, subrayados(_) que podemos utilizar para nombrar un elemento de datos en un programa en C++.
ALFABETICOS DIGITOS SUBRAYADO
Variables en C++.
En C++ una variable es una posicin con nombre en memoria donde se almacena un valor de un cierto tipo de datos y puede ser modificado. Las variables pueden almacenar todo tipo de datos: cadenas, nmeros, estructuras, etc. Una constante por el contrario, es una espacio de memoria, cuyo valor no puede ser modificado. Una variable tpicamente tendr un nombre(un identificador) que describe su propsito.
38
39
Declaracin o definicin
40
41
42
43
Variables locales
Son aquellas definidas en el interior de una funcin y son visibles solo en esa funcin especifica. Las reglas que las rigen son las siguientes:
En una funcin una variable no puede ser modificada
por ninguna sentencia externa a la funcin. Los nombres de las variables locales han de ser nicos. Las variables locales en las funciones no existen en memoria hasta que se ejecuta la funcin.
44
Variables globales
Son variables que se declaran fuera de la funcin y por defecto son visibles a cualquier funcin incluyendo la funcin main().
45
46
Al igual que las globales, se pueden crear variables dinmicas que son accesibles desde mltiples funciones. Los objetos son tipos de datos agregados que pueden contener mltiples funciones y variables juntas en el mismo tipo de dato.
47
48
Resultado
Comentario
7 31 20 2 4 -4 4 En este caso el cociente es 2, y el resto es 1, esto porque los operandos son enteros En esta divisin, el cociente es 6 y el resto es 4. En este caso el cociente es 6 y el resto es -4 En este caso el cociente es 0 y el resto es 4, que es el valor que estamos buscando.
Note que cuando hacemos las divisiones 34%5 y -34%-5 el cociente en ambos casos es el mismo, 6, pero los restos son diferentes, en 34%5 es 4 y en la divisin -34%-4 el resto es -4.
49
Operadores y expresiones
Una expresin es normalmente una ecuacin matemtica.
50
Orden de precedencia.
Cuando usamos mas de un operador aritmtico en una expresin, C++ usa las reglas de precedencia para evaluar la expresin, de la manera siguiente:
*, /, % : Mismo nivel de precedencia 2. +, : Mismo nivel de precedencia Nota: Cuando se evalan expresiones con operadores con el mismo nivel de precedencia, estas se evalan de izquierda a derecha.
1.
51
Ej. a. 3 * 7 6 + 2 * 5 / 4 + 6 b. 21 6 + 10 / 4 + 6 se evala la * c. 21 6 + 2 + 6 se evala / d. 15 + 2 + 6 se evala e. 17 + 6 se evala + f. 23 se evala + Se puede usar parntesis para modificar el orden de precedencia de los operadores, por ejemplo: 3 + 4 * 5 = 23 se evala primero la * y luego + (3 + 4) * 5 = 35 se evala primero la + y luego *
52
Es importante tener en cuenta que el tipo de datos char puede almacenar valores enteros y caracteres, por lo tanto se debe tener cuidado cuando se realizan operaciones con este tipo de datos. Existe una diferencia entre el numero entero 8 y el carcter 8. El valor del numero 8 es 8, pero el valor numrico de 8 es 56, que es el cdigo ASCII correspondiente a dicho carcter. En otras palabras: 8 + 7 = 15 8 + 7 = 56 + 55 = 111
53
Expresiones
Una expresin entera es una expresin en la cual todos sus miembros son enteros. Ej. 2 + 3 * 5 3 + x y/7 Una expresin de punto flotante, es una expresin en la cual todos sus miembros son nmeros de punto flotante. 12.8 * 17.5 34.50 x * 10.5 + y 16.2
54
Expresiones mixtas son aquellas que mezclan o contienen tanto operandos enteros como de punto flotante. Ej. 2 + 3.5 6 / 4 + 3.9
55
Dos reglas aplican cuando se evalan expresiones mixtas: 1. Cuando se evala un operador en una expresin mixta:
Si el operador tiene el mismo tipo de operandos, el operador es evaluado de acuerdo con el tipo del los operandos. Operadores enteros darn como resultado un entero, operadores reales, darn como resultado reales. b) Si tiene ambos tipos, entonces durante el calculo los enteros son cambiados a reales con la parte decimal igual a 0 y entonces el operador es evaluado.
a)
56
57
Conversin de tipos(Casting)
Cuando un valor de un tipo es cambiado de manera automtica a otro tipo de datos decimos que una coercin de tipo implcito ha ocurrido. Si no se es cuidadoso con esto, resultados inesperados pueden ocurrir. Para evitar coercin de tipo implcito, C++ provee para conversin de tipo explicito el uso del operador cast.
58
El operador cast, es algunas veces llamado type conversin o type casting y toma la siguiente sintaxis: static_cast<tipo_Dato> (expresin). En esta expresin ocurre lo siguiente:
1. 2. 3.
La expresin es evaluada. El valor de la expresin luego de ser evaluada, es convertida al valor del tipo especificada por tipo_Dato. En C++ static_cast es una palabra reservada.
59
60
Cada carcter en una cadena tiene una posicin relativa en la cadena. Los string son base 0 es decir que el primer carcter es el 0, el segundo carcter ocupa el 1 y as sucesivamente. Ej. Programacin
Posicin 0 1 Caracter P r 2 o 3 g 4 r 5 a 6 m 7 a 8 c 9 i 10 o 11 n
61
62
Instruyendo a la computadora para que guarde la informacin en la memoria. Incluyendo sentencias en el programa para poner informacin en la memoria.
63
64
La expresin de la derecha es evaluada Su valor es asignado a la variable (y por consiguiente a la posicin de memoria que esta representa) que se encuentra a la izquierda.
65
Nota:
1. 2.
Se dice que una variable esta inicializada, cuando se asigna o coloca un valor por primera vez en ella. En C++, el caracter = es llamado el operador de asignacin.
66
Declarar la variable con el tipo apropiado de datos. Asignar el valor de la expresin a la variable que declaramos en el paso anterior. Donde quiera que necesitemos el valor de dicha expresin, guardado en la variable en el paso 2, lo hacemos usando la variable declarada en el paso 1.
67
68
Inicializacin de variables:
Recuerde que como a las variables no se les asigna valores cuando estas son declaradas, estas pueden ser inicializadas cuando son declaradas, tambin pueden ser inicializadas usando sentencias de asignacin o de lectura.
70
71
En C++ esto es llamado una sentencia de salida. En C++, el operador << es llamado stream insercin operator u operador de insercin de flujo. La generacin de la salida con cout sigue dos reglas:
1.
2.
La expresin es evaluada y su valor es impreso en el punto de insercin actual en el dispositivo de salida. Un manipulador es usado para formatear la salida. El manipulador mas simple es el endl, el cual causa que el punto de insercin se mueva al inicio de la prxima lnea.
72
73
Directivas de Preprocesador
Solo pocas funciones, tales como las aritmticas y de asignacin, estn definidas explcitamente en C++. La mayora de las funciones y smbolos necesarios para ejecutar un programa C++ son provistas como una coleccin de libreras. Cada librera tiene un nombre y son referenciadas por un archivo de cabecera, header file. Se debe usar directivas de preprocesador y el nombre del archivo para comunicarle al computador la localizacin del cdigo provisto en las libreras.
74
Operadores de asignacin
Adems de los operadores de asignacin ya visto (=), existen operadores que actan sobre variables de tipos simples como una notacin abreviada para expresiones utilizadas con frecuencia. Entre estos operadores tenemos:
1. 2.
++ --
Autoincremento Autodecremento
Autoincremento
Este operador es equivalente a sumarle uno a la variable : x = x+1; x++. En este caso el operador ++ puede tomar dos formas: prefija: En este caso el operador ira antes de la variable: ++x postfija: En este caso el operador ira despus de la variable: x++
Decremento
En este caso este operador equivale a restarle uno a la variable, o lo que es lo mismo: x=x-1; --x; o x--; En este caso el operador -- puede tomar dos formas: prefija: En este caso el operador ira antes de la variable: --x postfija: En este caso el operador ira despus de la variable: x--
&=, |= y ^=
Estos operadores cuando actan sobre valores lgicos, son operadores lgicos, si actan sobre enteros, son operadores de manipulacin de bits.
Operador condicional
El operador condicional ?:, es un operador ternario, es decir, que opera o requiere de tres operandos, y se utiliza en expresiones condicionales, devolviendo un resultado cuyo valor depende de si la condicin ha sido o no aprobada. El formato de dicho operador es: condicin ? Operando1 : operando2; Ej: comisin = (ventas > 10000) ? 0.10 : 0.05; Si las ventas son superiores a 10,000 se dar el 10%, de lo contrario el 5%.