Beruflich Dokumente
Kultur Dokumente
Jairo Parra
MANUAL DE C++
Estudiantes de la “ETCNRJRGS”
Conceptos Básicos
PROGRAMA
- En sentido informático -, está constituido por un conjunto de instrucciones que se
ejecutan ordinariamente de modo secuencial, es decir, cada una a continuación de la
anterior.
(Ejecute)
Lenguaje de
(Lenguaje maquina o binario 0 – 1).
bajo nivel
Lenguaje de alto
(Lenguaje natural)
nivel
Programa de alto nivel (código fuente)
extensión .cpp
Compilador
Programa ejecutable
Extensión .exe
COMANDOS
Todos los lenguajes, naturales o computacionales, tienen palabras que denotan una
acción. Los comandos no son más que acciones que debe interpretar y ejecutar el
computador.
DATOS
Los datos son símbolos que se convierten en condiciones, hechos, situaciones o
valores. Un dato puede significar un número, una letra, un signo ortográfico o
cualquier símbolo que represente una cantidad, una medida, una palabra o una
descripción. La importancia de los datos está en su capacidad de asociarse dentro de
un contexto para convertirse en información. Es decir, por si mismos los datos no
tienen capacidad de comunicar un significado y por tanto no pueden afectar el
comportamiento de quien los recibe. Para ser útiles, los datos deben convertirse en
información que ofrezca un significado, conocimiento, ideas o conclusiones.
1
PALABRAS CLAVES O PALABRAS RESERVADAS
Son una serie de palabras claves (keywords) que el programador no puede utilizar
como identificadores, ya que le pertenecen específicamente al programa, por lo que
el compilador lo reconocerá inmediatamente.
Ejemplo:
int, cout, cin, float.
INSTRUCCIÓN O SENTENCIA
Define una acción o un mandato que se debe realizar, esa acción o mandato, esa
acción o mandato se representa a través de un comando o lo que es lo mismo
palabras reservadas de un lenguaje de programación en particular. Una instrucción
esta compuesta por uno o más comandos (acción), datos, símbolos, variables o
constantes y expresiones, que en conjunto representan una instrucción o sentencia.
En la construcción de los programas se estila utilizar una instrucción por línea. Así
mismo, se utiliza la IDENTACIÓN, que no es más que la alineación de aquellas
instrucciones dentro de las estructuras que las contienen de manera ordenada que
permita visualizar el inicio y fin de cada bloque de instrucciones.
CONCEPTO DE SINTAXIS
Conjunto de reglas con las que se indica de modo inequívoco las operaciones que se
quieren realizar.
COMENTARIOS
La misión de los comentarios es servir de explicación o aclaración sobre como esta
hecho el programa, de forma que pueda ser entendido por una persona diferente o
por el mismo programador algún tiempo después, el compilador ignora por
completo los comentarios realizados en el programa.
2
OPERADOR DE INSERCCION ( << )
Se utiliza para introducir texto en un flujo de salida
SECUENCIAS DE ESCAPE
FUNCIÓN
Los programas informáticos suelen contener decenas de líneas de códigos. A
medida que los programas se van desarrollando y aumentan de tamaño, se
convertirían rápidamente en poco manejables si no fuera por la modularización, que
es el proceso consistente en dividir un programa muy grande en una serie de
módulos más pequeños y manejables, los cuales se les ha solido denominar de
distintas formas (subprogramas, subrutinas, procedimientos, funciones, etc).
La función MAIN()
Todo programa en C++ tiene un programa principal, que es con el que se
comienza su ejecución. Este programa es una función, pero que esta por
encima de las demás, como también se puede realizar por medio de un
procedimiento.
Ejemplo:
FUNCIÓN PROCEDIMIENTO
int main() void main()
{ {
Sentencia 1; Sentencia 1;
Sentencia 2; Sentencia 2;
Return 0;
} }
ESTRUCTURA BÁSICA DE UN PROGRAMA EN C++
3
1. // Mi primer programa
2. #include <iostream> librería - biblioteca
3. using namespace std;
4. int main ()
5. {
6. cout<< “mi primer programa”<<endl;
7. return 0;
8. }
5
Manipuladores
biblioteca Tipos Propósito
cin>>
<iostream> Entrada y salida
cout<<
Pág. 267 endl; Manda un carácter de nueva línea a la salida y vacía el flujo de datos
ends; Mana un carácter nulo a la salida y vacía el flujo de datos
flush; Vacía la memoria intermedia de flujo de datos
dec Visualiza valores numéricos en notación decimal
hex Visualiza valores numéricos en notación hexadecimal
oct Visualiza valores numéricos en notación octal
Ejemplo
cout<< oct << i << endl; // realizan la misma función las 2 líneas
cout<< oct << i << “\n”<< flush;
<iomanip> setw( ) Fija la anchura del campo
Pág. 269 setfill (‘ ‘) Fija el carácter de relleno
left Los caracteres de relleno se colocan después de la visualización
right Los caracteres de relleno se colocan antes de la visualización
skips Se ignoran los caracteres espacio en blanco durante las
extracciones
setprecision Fija el número de dígitos de precisión, sin formato (SF).
() con formato (CF).
fixed Visualiza los valores en coma flotante con notación decimal,
(CF=6)
scientific Visualiza los valores en coma flotante con notación científica.
boolalpha Visualiza valores lógicos simbólicamente como true y false
noboolalpha Visualiza valores lógicos como 0 y 1
Ejemplo
cout<< setfill(‘#’) <<setw(15) <<”hola”<< endl;
Salida
###########hola
<math.h> acos ( x ) Ángulo cuyo coseno es x
Pág. 283 asin ( ) Ángulo cuyo seno es x
atan ( ) Ángulo cuya tangente es x
ceil ( ) El menor número entero mayor o igual a x
cos ( ) El coseno del ángulo x
cosh ( ) El coseno hiperbólico del ángulo x
exp ( x ) ex
fabs ( ) Valor absoluto de x
floor ( ) El mayor número entero menor o igual a x
log ( ) El logaritmo natural de x
log10 ( ) El logaritmo en base 10 de x
pow(x,y) xy
sin ( ) El seno del ángulo x
sinh ( ) El seno hiperbólico del ángulo x
sqrt ( ) La raíz cuadrada de x
6
tan ( ) La tangente del ángulo x
tanh ( ) La tangente hiperbólica del ángulo x
IDENTIFICADORES
Un identificador es un nombre con el que se hace referencia a una función o al
contenido de una zona de memoria (variable, constante), cada lenguaje tiene sus
propias reglas respecto a las posibilidades de elección de nombre.
VARIABLE
Son los identificadores que cambian su valor durante la ejecución del programa.
Variables locales: Se define solo en bloque en el que vaya a utilizar, de esta manera
evitamos tener variables definidas que luego no se utilizan
Variables globales: No son las mas recomendables, pues su existencia atenta contra
la comprensión del código y su encapsulamiento.
Ejemplo:
int a=2;
void main ()
{
int a=10;
cout<< a << endl; // mustra en pantalla 10
cout<< ::a << endl; // mustra en pantalla 2
7
}
CONSTANTES
Son los identificadores que no cambian su valor durante la ejecución del programa.
#define CONSTANTE 5
8
Ejemplo:
#include<iostream>
using namespace std;
system("pause");
return 0;
}
EXPRESIONES Y OPERADORES
Las expresiones son combinaciones de constantes, variables, operadores
(matemáticos, lógicos y relacionales) y nombre de funciones que se utilizan en el
cuerpo del programa. Las expresiones pueden ser simples o compuestas, las
expresiones simples, son asignaciones directas a una variable o constante de un
valor numérico o carácter. Ejemplo A=20, Una expresión compuesta es la
asignación a una variable o constante que surge de la unión de valores numéricos,
operadores aritméticos, de comparación o lógicos. ejemplo A=10+2.
Por otro lado, los operadores son signos especiales o conjunto de caracteres que
indican determinadas operaciones a realizar con las variable y/o constantes sobre las
que actúa en el programa. Entre los que tenemos:
Prioridad de operadores: explicar.
Aritméticos: ( +, -, *, /, % ).
Asignación: ( =, +=, -=, ++, --, *=, /= ).
Relacionales: ( ==, <, >, <=, >=, != ).
Permiten estudiar si se cumple o no
ciertas condiciones. Se obtienen
resultados de tipo boléanos (true-false).
Lógicos: ( &&, | |, ! ).
Son los que me permiten combinar los
resultados de los operadores
relacionales, comprobando que se
cumplan simultáneamente varias
condiciones. Se obtienen resultados de
tipo boléanos (true-false).
9
Operadores de incremento y decremento
Son operadores unarios que incrementan (++) ó disminuye (--) en una unidad
el valor de la variable a la que afectan. Estos operadores pueden ir antes o
después de la variable.
Ejemplo: (pre-post)
Operador ( , )
Este operador lo que nos permite es separar las expresiones.
Ejemplo:
int a, b, c;
Ejemplo:
Variable = &variable_1.
Ejemplo:
Variable = *variable_1. (Se explicaran mas adelante).
10
TABLA DE CODIGO ASCII
TIPOS DE DATOS
11
CADENA DE CARACTERES
Es una secuencia de caracteres delimitados por comillas ( “ ), como por ejemplo: “esto es
una cadena de caracteres”. Dentro de las cadenas pueden aparecer caracteres (espacios) en
blanco y se pueden emplear las mismas secuencias de escape válidas para las constantes
carácter. Por ejemplo, las comillas ( “ ) deben estar precedidas por ( \ ), para no ser
interpretadas como fin de la cadena; también la propia barra invertida ( \ ). Es muy
importante señalar que el compilador sitúa siempre un byte nulo (\0) adicional al final de
cada cadena de caracteres para señalar el final de esta. Así la cadena “HOLA” no ocupa 4
byte, sino 5 byte, como también el primer carácter de una cadena de caracteres se localiza
en la posición 0. Es importante recalcar que a la hora de asignar un valor de tipo string
debe ir encerrado en doble comillas ( “ ), ya que si lo colocas en comillas simples ( ‘ ), el
compilador enviara un errar, ya que estas ultimas son utilizadas para variables tipo carácter
(char).
Manipuladores
biblioteca Tipos Propósito
<string> + Operador de concatenación – ejemplo: =nombre + ‘ ‘ + apellido
Pág. 134 += Añadido, añade caracteres al final de una cadena
Devuelve el número de caracteres de la cadena– Ejemplo:
.size() nombre.size()
Devuelve una subcadena de una cadena de caracteres, donde x es la
posición de inicio en la cadena, y y es el numero de caracteres que se
.substr (x,y) extraen o longitud de la subcadena solicitada –
Ejemplo:
nombre.substr(9,4)
Busca una subcadena dentro de una cadena de caracteres y devuelve su
posición, donde x es la subcadena a buscar y y es la posición de inicio
donde se pretende comenzar la búsqueda, si la subcadena no se
.finfd (“x”,y) encuentra devuelve un número mayor a la cadena de caracteres -
Ejemplo:
nombre.find(“hola”,0)
Lee una línea completa de la entrada introduciéndola en una cadena de
caracteres, el primer argumento especifica el flujo de caracteres del que
getline se quiere leer, el segundo es la cadena de caracteres que recibirá la
(cin,nomb,’\n’) línea leída y el tercero es el carácter que determina cuando finalizará la
getline (cin,nomb, extracción.
’a’) Esta función permite no utilizar el tercer argumento, ya que si no se
getline (cin,nomb) coloca, ella automáticamente asume que finalizara con la sentencia
ENTER.
12
CONTROL DEL FLUJO DE EJECUCIÓN
SENTENCIA IF
Esta sentencia de control permite ejecutar o no una sentencia según se cumpla o no
una determinada condición.
Sintaxis:
if (expresión)
{
Sentencia 1;
}
SENTENCIA IF…ELSE
Esta sentencia permite hacer una bifurcación, ejecutando una parte u otra del
programa según se cumpla o no una cierta condición.
Sintaxis:
if (expresión)
{
Sentencia 1
}
else
{
Sentencia 2;
13
}
Sintaxis:
if (expresión 1)
{
Sentencia 1
}
else if (expresión 2)
{
Sentencia 2
}
else if (expresión 3)
{
Sentencia 3
}
else if (…)
….
else
sentencia n;
SENTENCIA IF ANIDADAS
Una sentencia if puede incluir otros if dentro de la parte correspondiente a su
sentencia. A estas sentencias se les llama sentencias anidadas (una dentro de la
otra).
Sintaxis
if (a >= b ) if (a >= b )
if (b != 0.0) if (b != 0.0)
c = a / b; c = a / b;
else
c = 0.0;
14
Explicar el uso del else, dependiendo a cual if
corresponde, si al primero o al segundo.
SENTENCIA SWITCH
La sentencia que se va a describir a continuación desarrolla una función similar a la
de la sentencia if … else con multiples ramificaciones, aunque como se puede ver
presenta también importantes diferencias. La forma general de la sentencia switchn
es la siguiente:
Sintaxis:
switch (expresión)
{
Case expresión_cte_1:
sentencia 1;
break; //indica que la sentencia switch ha completado su tarea
Case expresión_cte_2:
sentencia 2;
break;
Case expresión_cte_3:
sentencia 3;
break;
….
Case expresión_cte_n:
sentencia n;
break;
15
BUCLES
SENTENCIA FOR
Es el tipo de bucle más versátil y utilizado del lenguaje C++. Se implementa cuando
se conoce la cantidad de iteraciones dentro del bucle que se desean realizar. Su
forma general es la siguiente:
Sintaxis:
For (iniciaización; expresión de control; incremento)
{
Sentencia 1;
Sentencia 2; for infinito:
…..
for ( ; ; )
Sentencia n;
}
SENTENCIA WHILE
Esta sentencia permite ejecutar un bucle repetidamente, mientras se cumpla una
determinada condición, una sentencia o bloque de sentencias.
Sintaxis:
While (expresión de control)
{
Sentencia 1;
Sentencia 2;
…..
Sentencia n;
}
16
Expresión de control: se evalúa la expresión y si el resultado es
false no se ejecuta el bucle de la sentencia while; si el resultado es
true se ejecutan las sentencias y se vuelve a evaluar la expresión de
control hasta que sea false, en cuyo caso, la ejecución continúa en la
línea siguiente. En otras palabras, la sentencia while se ejecuta
repetidamente mientras la expresión de control se hace false.
SENTENCIA DO…WHILE
Se utiliza para especificar un bucle condicional que se ejecuta al menos una vez.
Esta situación se suele dar en algunas circunstancias en la que se ha de tener la
seguridad de que una determinada acción se ejecutará una o varias veces, pero al
menos una.
Sintaxis:
do
{
Sentencia 1;
Sentencia 2;
…..
Sentencia n;
}
While (expresión de control);
17
ESTRUCTURAS PARA TRABAJAR CON BUCLES
CONTADOR
Es una variable cuyo valor se incrementa o decrementa en una cantidad constante
cada vez que se produce un determinado suceso, acción o iteración. Los contadores
se utilizan con la finalidad de contar sucesos, acciones o iteraciones internas de un
bucle, proceso subrutina o donde se requiera cuantificar; deben ser inicializados
antes del ciclo o proceso, e incrementados o decrementados dentro del ciclo.
Ejemplo:
cont=0;
for (int i=0; i<n; i++ )
{
cont=cont + 1; sentencias // puede utilizarse el contador en
//cualquier sentencia que se necesite
cont=cont+1;
}
// diferencia en suma y multiplicación
ACUMULADOR
Es una variable que como su nombre lo indica, suma sobre si misma un conjunto de
valores, al finalizar con el ciclo contendrá, en una sola variable, la sumatoria de
todos los valores, que cumplen una determinada condición. La diferencia entre un
contador y un acumulador es que mientras el primero va aumentando en una
cantidad fija preestablecida, el acumulador va aumentando en una cantidad o valor
variable.
Ejemplo:
acum=0;
for (int i=0; i<n; i++ )
{
sentencias // puede utilizarse el contador en
acum=acum + variable; //cualquier sentencia que se necesite
acum=acum+variable;
}
18
VECTORES UNIDIMENSIONALES Y BIDIMENCIONALES
VECTORES
Un array (también conocido como arreglo, vector o matriz) es un modo de manejar
una gran cantidad de datos del mismo tipo bajo un mismo nombre o identificador
también se puede decir que es una secuencia de objetos del mismo tipo. Los
elementos de un array se enumeran consecutivamente 0, 1, 2, 3….., estos númeos se
denominan valores índices o subíndices del array, estos números localizan la
posición del elemento dentro del array.
MATRICES
Las matrices se declaran de forma análoga, con corchetes independientes para cada
sudíndice. La forma general de la declaración es:
Tipo nombre[número_filas][número_columnas];
Donde tanto las filas como las columnas se numeran también a partir de 0. La forma
de acceder a los elementos de la matriz es utilizando su nombre, seguido de las
expresiones enteras correspondientes a los dos subíndices, entre corchetes.
En C++ tanto los vectores como las matrices admiten los tipos de variables escalares
(char, int, long, float, doublé, etc), y los modos de almacenamiento auto, extern,
static, con las mismas características que las variables normales (escalares), no se
admite el modo register. Los arrays static y extern se inicializan a cero por defecto.
Los arrays auto no se inicializan, contienen basura informática.
Como se verá más adelante, los arrays presentan una especial relación con los
punteros. Puesto que los elementos de un vector y una matriz están almacenados
consecutivamente en la memoria, la aritmética de punteros descrita previamente
presenta muchas ventajas. Por ejemplo, supóngase el código siguiente:
19
int vect[10], mat [3][4], *p;
p = &vect[0];
cout<< *( p + 2 ) << endl; // se imprimirá vec[2]
p = &mat[0][0];
cout<< *( p + 2 ) << endl; // se imprimirá vec [0][2]
cout<< *( p + 4 ) << endl; // se imprimirá vec [0][4]
cout<< *( p + 5 ) << endl; // se imprimirá vec [1][0]
cout<< *( p + 12 ) << endl; // se imprimirá vec [2][2]
20
PUNTEROS
DIRECCIONES Y REFERENCIA
Cuando una variable se declara, se asocian tres atributos fundamentales con la
misma: su nombre, su tipo y su dirección de memoria.
Ejemplo:
int n; // asocia el nombre n, el tipo int y la dirección de alguna
// posición de memoria donde se almacena el valor de n.
0x4fffd34
n 13
int
REFERENCIA
Una referencia es un alias de otra variable, se declara utilizando el operador
de referencia ( & ) que se añade al tipo de la referencia.
Ejemplo 1:
int n = 13;
int &r = n; // r es una referencia para n
cout<< “n = “ << n << “, r = “ << r << endl;
Ejecución: n = 13, r = 13
21
Ejemplo 2:
int n = 13;
int &r = n; // r es una referencia para n
cout<< “&n = “ << &n << “, &r = “ << &r << endl;
DECLARACIÓN DE PUNTEROS
La declaración de una variable puntero debe indicar al compilador el tipo de dato al
que apunta el puntero; para ello se hace preceder a su nombre con un asterisco ( * ),
mediante el siguiente formato:
22
CONCEPTO DE PUNTERO O APUNTADOR
El valor de cada variable está almacenado en un lugar determinado de la memoria,
caracterizado por una dirección (que suele expresarse en hexadecimal). El
ordenador mantiene una tabla de direcciones que relaciona el nombre de cada
variable con su dirección en la memoria.
Así pues, un puntero es una variable que puede contener la dirección de otra
variable. Por tanto, los punteros están almacenados en algún lugar de la memoria y
tienen su propia dirección.
Como se ha dicho, el lenguaje C++ dispone del operador de dirección (&) que
permite hallar la dirección de la variable a la que se aplica. Un puntero es una
verdadera variable, y por tanto puede cambiar el valor a la variable a la que apunta.
Para acceder al valor depositado en la zona de memoria a la que apunta un puntero
se debe utilizar el operador indirección ( * ).
Ejemplo:
23
Las constantes y las expresiones no tienen dirección, por lo que no se le puede
aplicar el operador ( & ). Tampoco puede cambiarse la dirección de una variable.
Los valores posibles para un puntero son las direcciones posibles de memoria.
Ejemplo:
En conclusión se puede decir que un puntero es una variable que contiene una
dirección de memoria, y utilizando punteros su programa puede realizar muchas
tareas que no sería posible utilizando tipos de datos estándar.
Ejemplo:
int main()
{
int n = 75;
int *p = &n; // p contiene la dirección de n
cout<<”n = “<< n <<”, &n = “ << &n <<”, p “ << p << endl;
cout<<” &p = “ << &p << endl;
}
Ejecución:
n = 75, &n = 0x4fffd34, p = 0xfffd34
&p = 0x4fffd10
24
ARITMETICA DE PUNTEROS
25
OTRAS FUNCIONES IMPORTANTES
1. sizeof (varible): devuelve el tamaño en byte del tipo de variable introducida dentro
del paréntesis.
26