Beruflich Dokumente
Kultur Dokumente
#include <iostream>
Incluye la librería básica de entrada (teclado) y salida de datos (pantalla) de
C++. En esta sección se incluirán todas las librerías necesarias para la ejecución de
un programa utilizando siempre la sintaxis:
#include <nombre_libreria>
int main(void){ }
Es la función principal de nuestro programa, lo ingresado dentro de las llaves de
main, será lo que el programa haga.
cout<<"Hola Mundo"<<endl;
Muestra un mensaje en pantalla. El comando para mostrar mensajes en pantalla es
"cout" seguido de dos signos de menor que. Posteriormente se agrega el mensaje a
mostrar entre comillas. Si queremos mostrar alguna otra cosa se vuelven a agregar
los signos de menor, tal y como se muestra en el ejemplo para agregar "endl" que
indica fin de renglón en nuestro programa.
return 0;
Indica que nuestro programa ha terminado de la forma correcta, no retorna nada
(eso se explicará más delante con profundidad).
Para ver que el programa ha funcionado, es necesario buscar la opción del editor
para compilar, generalmente con el nombre compilar o construir (build en inglés).
Si el programa no tiene errores se generará el ejecutable del programa.
3. Variables
Una vez que las variables han sido declaradas, pueden usarse en el resto del programa.
Cuando se desea declarar varias variables de un mismo tipo, se lo puede hacer en una
sola instrucción separando los diferentes identificadores con comas. Por ejemplo:
1. int a, b, c;
Cuando una variable es declarada no tiene un valor determinado hasta que se le asigne
uno por primera vez. Sin embargo, es posible asignarle un valor el mismo momento en
el que es declarada. Esto se conoce como inicializar la variable.
Ejemplo:
int x (0);
Ejemplo:
int x {0};
// inicialización de variables
#include <iostream>
using namespace std;
int main ()
{
int a=5; // valor inicial: 5
int b(3); // valor inicial: 3
int c{2}; // valor inicial: 2
int result; // valor inicial: indeterminado
a = a + b;
result = a - c;
cout << result;
return 0;
}
4. Introducción a strings
Los tipos fundamentales representan la mayoría de tipos básicos que manejan las
máquinas donde el código de un programa corre. Una de las fortalezas de C++ es su
gran conjunto de composición de tipos. Un ejemplo de un tipo compuesto es la clase
string.
Una variable de tipo string permite almacenar secuencias de caracteres como palabras
y oraciones. Esto es muy útil en programación.
La primera diferencia de un tipo compuesto con un tipo fundamental es que para poder
declarar y usar estos nuevos objetos, variables de un tipo compuesto, el programa
necesita incluir el “encabezado” o “header” en donde el nuevo tipo está definido dentro
de una librería estándar. En este caso, (header <string>):
// my first string
#include <iostream>
#include <string>
int main ()
{
string mistring;
mystring = "Esto es un string";
cout << mystring;
return 0;
}
Al igual que con los tipos fundamentales, los métodos de inicialización vistos
anteriormente son válidos también para strings.
Los strings también pueden llevar a cabo todas las operaciones básicas que realizan
los tipos fundamentales, como ser declarados sin valor inicial y cambiar su valor
durante la ejecución.
1 // mi primer string
2 #include <iostream>
3 #include <string>
4
5 using namespace std;
Este es el contenido
6 int main ()
inicial
7 {
8 string mistring;
Este es un contenido
9 mistring = "Este es el contenido inicial";
diferente
10 cout << mistring << endl;
11 mistring = "Este es un contenido diferente";
12 cout << mistring << endl;
13 return 0;
14 }
5. Constantes
5.1 Literales
Es la clase de constante más obvia. Se utilizan para expresar valores particulares dentro
del código de un programa. Por ejemplo:
a = 5;
5.1.1 Enteros:
1 1776
2 707
3 -273
Las constantes literales tienen un tipo, igual que las variables. Por defecto, literales
enteros son del tipo entero, tipo int. Sin embargo, ciertos sufijos se pueden anexar
ciertos sufijos para especificar el tipo específico de entero. Así:
l or L Long
ll or LL long long
Además, unsigned puede combinarse con cualquiera de los otros dos tipos para
formar unsigned long o unsigned long long. Por ejemplo:
1 75 // int
2 75u // unsigned int
3 75l // long
4 75ul // unsigned long
5 75lu // unsigned long
5.1.2 Flotantes
Expresan valores reales con decimales y/o exponentes. Pueden incluir punto
decimal, un carácter e, o ambos.
El tipo por defecto para un literal flotante es double. Literales flotantes de tipo
float o long double pueden especificarse añadiendo uno de los siguientes sufijos:
Sufijo Tipo
f or F Float
l or L long double
Ejemplo:
Las letras que pueden ser parte de una constante flotante (e, f, l) pueden ser escritas
en mayúsculas o minúsculas, sin cambiar su significado.
1 'z'
2 'p'
3 "Hola mundo"
4 "Cuál es tu nombre?"
Las dos primeras líneas representan literales de un carácter y, las dos siguientes,
literales compuestos de varios caracteres. Se observa que un caracter simple se
encierra entre comillas simples y los otros en doble comillas. Las comillas son
necesarias para distinguir de variables que pudieran tener el mismo nombre o de
palabras clave reservadas.
Código Descripción
\n Newline
\r carriage return
\t Tab
\v vertical tab
\b Backspace
\f form feed (page feed)
\a alert (beep)
\' single quote (')
\" double quote (")
\? question mark (?)
\\ backslash (\)
Por ejemplo:
'\n'
'\t'
"Left \t Right"
"one\ntwo\nthree"
Varios literales tipo string pueden concatenarse para formar un solo string
simplemente separándolos por uno o más espacios en blanco, incluyendo tabs,
nuevas líneas, y otros caracteres válidos. Por ejemplo:
Equivale a:
Todos los literales tipo caracter y tipo string descritos anteriormente están formados
por caracteres de tipo char.
Esto permite usar los nombres de las constantes en lugar de sus valores, así:
1 #include <iostream>
2
3 using namespace std;
4
5 const double pi = 3.14159; 31.4159
6 const char newline = '\n';
7
8 int main ()
9 {
10 double r=5; // radio
11 double circle;
12 circle = 2 * pi * r;
13 cout << circle;
14 cout << newline;
15 }
Ejemplo:
1
2 #include <iostream>
3
4 using namespace std;
5
6 #define PI 3.14159
7 #define NEWLINE '\n'
8
9 int main ()
10 {
11 double r=5.0; // radio
12 double circle;
13 circle = 2 * PI * r;
14 cout << circle;
15 cout << NEWLINE;
16 }
Note que las líneas de la forma #define son instrucciones al preprocesador y por lo
tanto no terminan con punto y coma.
6. Operadores
Los operadores permiten hacer operaciones entre variables y constantes. La lista completa
de operadores se muestra a continuación.
x = y;
Asigna a la variable x el valor almacenado en la variable y.
Ejemplo:
1 // assignment operator
2 #include <iostream>
3
4 using namespace std;
5
6 int main ()
7 {
8 int a, b; // a:?, b:?
9 a = 10; // a:10, b:?
10 b = 4; // a:10, b:4
11 a = b; // a:4, b:4
12 b = 7; // a:4, b:7
13 cout << "a: "<< a;
14 cout << " b: "<< b;
15 }
Las operaciones de asignación son expresiones que pueden ser evaluadas. Ejemplo:
y = 2 + (x = 5);
1 x = 5;
2 y = 2 + x;
x = y = z = 5;
por ejemplo:
Una propiedad importante de estos operadores es que pueden usarse como prefijo tanto
como sufijo. Es decir, se pueden escribir antes del nombre de la variable (++x) o después de
éste (x++).
Sin embargo, cuando se usa los operadores en expresiones que van a ser evaluadas, el uso
de los operadores como sufijo o como prefijos puede cambiar de forma importante su
significado y el resultado final.
Ejemplo 1 Ejemplo 2
x = 3; x = 3;
y = ++x; y = x++;
// x vale 4, y vale 4 // x vale 4, y vale 3
Dos expresiones pueden ser comparadas usando operadores relacionales o de igualdad, con
ellos se puede evaluar si dos valores son iguales, o si uno es mayor que otro, por ejemplo.
El resultado de estas operaciones es verdadero true o falso false ,es decir, es un valor
booleano. La lista de operadores se muestra a continuación:
operador descripción
== Igual a
!= No es igual a
< Menor que
> Mayor que
<= Menor o igual que
>= Mayor o igual que
Los operadores lógicos && y || se usan para evaluar dos expresiones y obtener un solo
resultado relacional. El operador && corresponde a la operación lógica booleana Y, cuyo
resultado es verdadero true si los dos operandos son verdaderos, y falso false en caso
contrario. Así:
|| OPERADOR (o/or)
a b a || b
true true True
true false true
false true True
false false False
Por ejemplo:
1 ( (5 == 5) && (3 > 6) ) // evalúa como false ( true && false )
2 ( (5 == 5) || (3 > 6) ) // evalúa como true ( true || false )
Cuando se usan operadores lógicos, C++ evalúa solamente las expresiones que sean
necesarias de izquierda a derecha para obtener el resultado, ignorando el resto. Esto se
conoce como evaluación de circuito corto (short-circuit evaluation), y funciona de la
siguiente forma:
||
Si el lado izquierdo de la expresión es true, el resultado combinado es true
(el lado derecho de la expresión nunca es evaluado).
Esto se debe tener muy en cuenta cuando la expresión de la derecha tenga algún efecto
importante en el programa, como por ejemplo alteración de valores de variables. Por
ejemplo:
Ejemplo:
1 //operador condicional
2 #include <iostream>
3
4 using namespace std;
5
6 int main ()
7 {
8 int a,b,c;
9 a=2;
10 b=7;
11 c = (a>b) ? a : b;
12 cout << c << endl;
13 }
14
Este operador permite convertir el valor de un determinado tipo en otro tipo. Existen
varias formas de realizar esta operación en C++, una de ellas es la siguiente: preceder
a la expresión a ser convertida por el nuevo tipo encerrado entre paréntesis. Por
ejemplo:
1 int i;
2 float f = 3.14;
3 i = (int) f;
convierte el número flotante 3.14 en un valor entero 3. Otra forma es usar notación
funcional , se debe escribir antes de la expresión a ser convertida el nuevo tipo y
encerrar la expresión entre paréntesis. Así:
3 i = int (f);
6.9 sizeof
Este operador acepta un parámetro que puede ser un tipo o una variable, y devuelve
el tamaño de ese objeto en bytes.
x = sizeof (char);
El valor que retorna sizeof se determina siempre antes de la ejecución del programa.
x = 5 + 7 % 2;
En C++, esta expresión asigna 6 a la variable x, porque el operador % tiene mayor
precedencia que el operador + , y siempre es evaluado antes. Es conveniente usar
paréntesis para anular esta propiedad de precedencia e indicar claramente el orden
de las operaciones que se desean realizar. Por ejemplo:
1 x = 5 + (7 % 2); // x = 6
2 x = (5 + 7) % 2; // x = 0
Desde la mayor prioridad hacia la menor, los operadores en C++ se evalúan en el
siguiente orden:
Cuando una expresión tiene dos operadores con el mismo nivel de precedencia, la
propiedad grouping determina cuál de ellos se evalúa primero, ya sea de derecha a
izquierda o de izquierda a derecha.
7. Entrada/salida Básico
C++ usa streams para llevar a cabo operaciones de entrada y salida en medios como
teclado, pantalla o archivo. Un stream es una entidad donde un programa puede
insertar o extraer caracteres. Sin ahondar en detalles sobre su funcionamiento, lo que
se debe saber es que son fuente/destino de caracteres quienes a su vez son
entregados/recibidos secuencialmente, es decir, uno después de otro.
stream descripción
cin stream de entrada estándar
cout stream de salida estándar
7.1 Salida estándar
cout se usa junto al operador de inserción que se escribe << , por ejemplo:
El operador << inserta el dato que le sigue en el stream que le precede. En el ejemplo
anterior note el uso de comillas dobles para imprimir texto literalmente, si no está
entre comillas el texto será interpretado como el identificador de una variable, y se
imprimirá el valor de tal variable.
cout << "Esto " << " es una " << "sola instrucción de C++";
cout << "Tengo " << edad << " años y mi código postal es" << codigo;
da como resultado:
Esta es una oración.Esta es otra oración.
imprime:
Primera oración.
Segunda oración.
cin se usa con el operador de extracción que se escribe >>. Al operador le sigue la
variable en donde el dato extraído será almacenado. Ejemplo:
1 int edad;
2 cin >> edad;
La primera instrucción declara una variable de tipo entero llamada edad y la segunda
extrae desde cin el valor que se almacenará en esa variable. Esta operación hace que
el programa espere a que el usuario ingrese alguna secuencia mediante el teclado.
Esta secuencia se transmite al programa únicamente cuando se ha presionado la tecla
ENTER (o RETURN).
1 // i/o example
2 #include <iostream>
3
4 using namespace std;
5
6 int main ()
7 {
8 int i;
9 cout << "Ingrese un número entero: ";
10 cin >> i;
11 cout << "El valor ingresado es " << i;
12 cout << " y su doble es " << i*2 << endl;
13 return 0;
14 }
Cuando el usuario ingresa algo diferente a lo que se esperaba (int, string, etc) la
operación de extracción falla y el programa continua sin haber fijado el valor de la
variable, lo que producirá resultados no válidos si se usa esa variable en el programa.
Múltiples extracciones con cin también pueden ser encadenadas en una sola
instrucción para obtener más de un dato:
Es equivalente a:
1 cin >> a;
2 cin >> b;
En ambos casos se espera que el usuario ingrese dos valores, cualquier tipo de espacio
se usa para separar dos ingresos consecutivos, pueden ser espacio, tab, nueva línea,
etc.