Sei sulla pagina 1di 29

UNIVERSIDAD MILITAR NUEVA GRANADA CENTRO DE SISTEMAS

UNIDAD 5: LENGUAJE DE PROGRAMACIÓN C++

Para resolver un problema primero que todo se debe tener en cuenta los siguientes pasos:
 Conocer el problema, a qué área del conocimiento corresponde, identificar los datos
que proporciona el problema y cuál es el requerimiento para resolverlo.
 Elaborar el algoritmo o el diseño de la solución al problema.
 Comprobar los resultados de salida con los datos de entrada.
 Finalmente codificarlo en un lenguaje de programación.

C++ es la respuesta al programador que necesita hacer programas simples e interactivos o


programas muy elaborados y complejos, para ingeniería o las ciencias en general; o para
elaborar interfaces gráficas para usuarios de Windows, dentro de un contexto de un lenguaje
modular.

Los diferentes fabricantes de software ponen a disposición de los programadores una serie de
compiladores de C++, que permiten utilizar todas las funciones de C, así como todos sus
comandos.

5.1. COMPILADORES DE C++

Visual Studio .NET proporciona las herramientas que necesita el programador para diseñar,
desarrollar, depurar e implementar aplicaciones Web, servicios Web XML y aplicaciones cliente
tradicionales. Esta suite de productos de Visual Studio .NET incluye herramientas de desarrollo
tales como: Visual Basic, Visual C#, Visual C++ y JScript.

A continuación se mencionan algunos de los compiladores más utilizados para programar en


C++:

Microsoft Visual Studio.NET C++:

1
UNIVERSIDAD MILITAR NUEVA GRANADA CENTRO DE SISTEMAS

Visual Studio 2012: C++builder 5:

Obtenga manuales y cursos en Internet en:

http://www.isatid.net/mm/articulos/cpp/001.htm
http://www.programacionfacil.com
http://lawebdelprogramador.com/cursos/cplusplus/
http://www.conclase.net/

5.2. PROCESO DE EJECUCIÓN DE UN PROGRAMA

Se mencionarán a continuación los elementos que nos permiten la creación de un programa en


C++, el proceso de ejecución del programa y la depuración o corrección de errores.

Las fases de compilación y ejecución del programa dependen del compilador C++, que utilice, en
términos generales los programas de C++ pasan a través de cinco fases para su ejecución: editar,
preprocesar, compilar, enlazar y ejecutar.

ARCHIVO QUE ARCHIVOS QUE SE


FASE
PRODUCE INCORPORAN
Código Fuente:
EDITAR .cpp
Archivo cabecera:
PREPROCESAR
.h
Código Objeto:
COMPILAR
.obj
Archivo ejecutable:
ENLAZAR Bibliotecas
.exe

EJECUTAR

2
UNIVERSIDAD MILITAR NUEVA GRANADA CENTRO DE SISTEMAS

Fase editar

Consiste en escribir el código del programa y generar el archivo fuente. Se debe guardar este
archivo con extensión .CPP, para que sea reconocido por el compilador C++.

Los compiladores como Borland C++ y Visual C++, traen incorporado un editor (procesador
de palabra) bajo ambiente Windows sencillo de manejar. De cualquier manera en caso de no
tener el editor de C++, usted puede utilizar un procesador de palabra de Windows como
WorPad o el block de notas, para escribirlo.

Cuando se graba el código y se edita nuevamente, algunos compiladores crean una copia del
archivo fuente con extensión .BAK.

Una vez terminada la edición del programa y generado el código fuente, corra el programa
(algunos programadores dicen ejecutar o poner en marcha el programa), así:

 Con el botón RUN en Visual Studio C++

 Utilizando los botones Iniciar Depuración de Microsoft Visual Studio.


o Ctrl F7, para compilar
o Ctrl F5, para compilar y ejecutar el programa

3
UNIVERSIDAD MILITAR NUEVA GRANADA CENTRO DE SISTEMAS

Fase Preprocesador
Permite procesar el código e incluir los archivos de cabecera necesarios que le proporcionen
al compilador la información necesaria de las funciones de biblioteca. Por ejemplo, integra el
archivo de cabecera iostream.h, cuando el código trae la instrucción de preprocesador
#include<iostream>.

Fase Compilador
Cuando se compila el programa, el programa traduce el código fuente a código objeto,
generando un archivo de extensión .OBJ. El código objeto es también llamado código de
máquina y es la conversión del programa fuente en código binario, es decir en ceros (0) y
unos (1). La compilación es la fase más costosa del proceso y esto es debido a que el
compilador debe analizar el texto de nuestro programa fuente, comprobar que no contiene
errores y producir como salida un archivo con la traducción de nuestro código a un conjunto
de instrucciones para el procesador.

Fase enlace
Un programa extenso en C++ puede estar almacenado en archivos diferentes de programa,
en este caso cada archivo puede compilarse de manera separada, pero finalmente deben
formar un solo programa antes de ejecutarlo. El enlazador (linker) reúne cada uno de los
archivos objeto producidos en la fase anterior con el código de las funciones definidas en
bibliotecas estándar o bibliotecas particulares, para producir el archivo ejecutable de extensión
.EXE.

Fase de ejecución
En esta fase se pone en marcha el programa, utilizando el archivo de extensión .EXE, generado
anteriormente. Este archivo ejecutable contiene todo el código de máquina necesario para
ejecutar el programa, con solo escribir el nombre del archivo en el indicador de órdenes o
haciendo clic en el icono del archivo.

ERRORES EN LOS PROGRAMAS


Cuando un programa se compila puede suceder que contenga errores, estos deben ser
detectados y corregidos, a este proceso se le denomina Depuración.

Las situaciones más comunes en las cuales suelen aparecer errores son: El no cumplimiento
de las reglas gramaticales o errores de sintaxis y los errores en el diseño del algoritmo o
errores lógicos.

Los compiladores emiten mensajes de error o advertencia durante las fases de compilación,
de enlace o de ejecución de un programa, así:

 Errores fatales (fault): La compilación se detiene automáticamente. Por ejemplo


hacer una división por cero entre números reales.

 Errores de sintaxis: Son el incumplimiento a las reglas de sintaxis del lenguaje o


errores al acceso a memoria o a disco. Por ejemplo olvidar un punto y coma al final de
una sentencia.

 Advertencias (Warning): No impiden la compilación, pero indican que deben


verificarse ciertas condiciones o sentencias del programa. Por ejemplo operar un dato
de variables reales en una variable entera.

4
UNIVERSIDAD MILITAR NUEVA GRANADA CENTRO DE SISTEMAS

Errores de sintaxis

Son los producidos cuando se violan las reglas de sintaxis o gramática del lenguaje, entre los
más frecuentes tenemos:

 Omitir los puntos y comas al final de las sentencias.


 Olvido de las llaves que cierran.
 Olvidar las instrucciones de preprocesador que llaman alguna función específica.
 Olvido de las comillas para las cadenas.
 Uso de variables sin definir.
 Olvido de parámetros.
 Utilización de palabras reservadas para identificar variables, funciones, etc.

Para corregir estos errores haga doble clic en el error y el editor lo llevará a la línea de código
que presenta el error.

Las palabras reservadas en un lenguaje de programación son palabras clave que se utilizan
con un propósito específico, intentar utilizarlas para otros propósitos, como nombre de variable
o constante, generaría mensajes de error.

La siguiente tabla muestra algunas palabras claves que utiliza el lenguaje de programación
C++:

ALGUNAS PALABRAS RESERVADAS EN C++


auto default for return
break do if short
case double int switch
char else long unsigned
class enum private void
const float public while

5
UNIVERSIDAD MILITAR NUEVA GRANADA CENTRO DE SISTEMAS

En los manuales de referencia, se acostumbra utilizar la letra cursiva para señalar cuando se
refiere a palabras reservadas.

Errores lógicos
Estos no suelen ser detectados por el compilador, ya que no produce ningún mensaje de error.
Se presentan por lo general en el diseño del algoritmo o el diseño de la solución al problema.
Para solucionarlos se debe corregir el algoritmo y comprobar los resultados de salida con los
datos dados de entrada.

Por ejemplo si al operar una variable que tiene un dato de entrada, se olvida colocar paréntesis
para alterar la jerarquía de los operadores puede generar un resultado erróneo, que no es
detectado por el compilador.

y=5*x+2 es diferente a y=5*(x+2)

5.3. ESTRUCTURA DE UN PROGRAMA EN C++

Un programa en C++ incluye entre otros: Comentarios, la función main(), declaraciones


globales, directivas de preprocesador y las funciones definidas por el usuario.

El siguiente ejemplo ilustra la estructura típica general de un programa en C++:

1. /*programa que calcula el área de un círculo de


COMENTARIO
2. radio 1 al 10, en una función de usuario */
3. #define PI 3.14
4. #include < iostream > DIRECTIVAS DE PREPROCESADOR

5. using namespace std; DECLARACIONES


PROTOTIPO DE LA FUNCIÓN GLOBALES
6. double circulo(double);
7. int main()
8. {
9. double r;
FUNCIÓN
int x; PRINCIPAL
10. for(x=1;x<=10;x++)
11. cout<<x<<" "<<circulo(r)<<endl;
12. return 0;
13. }

14. double circulo(double y)


LLAMADA A LA FUNCIÓN
15. {
16. return PI*y*y;
ESTRUCTURA DE LA FUNCIÓN
17. }

Las líneas 1 y 2 son comentarios.


Las líneas 3, 4 y 5 son directivas de preprocesador.
La línea 6 es el prototipo o declaración de la función de usuario.
La línea 7 es el punto inicial de entrada al programa o función principal del programa.
La línea 8 es la llave del inicio de bloque de sentencias o inicio del programa principal. Las
líneas 9, 10, 11 y 12, son las instrucciones que debe ejecutar el programa principal. En la línea
11 está el llamado de la función.
6
UNIVERSIDAD MILITAR NUEVA GRANADA CENTRO DE SISTEMAS

La línea 13 es la llave de fin del bloque de sentencias o fin del programa principal. Las líneas
de la 14 a la 17, definen la función de usuario o estructura de la función.

Los comentarios

Los comentarios son pequeñas anotaciones de texto que clarifican alguna parte del código y
permiten documentar el programa por la persona que lo escribe, son muy útiles en el momento
en que es leído el programa por otra persona diferente al autor.

En C++ hay dos formas de escribir los comentarios:


Iniciando con /* y terminándolo con */ o utilizando dos “slash” (//) por cada línea de
comentario.

Un ejemplo de un comentario en la parte inicial de un programa seria de la siguiente forma:


/*
Institución: Universidad Militar Nueva Granada
Programado por: Álvaro Méndez
Aplicación: Área de un Circulo
Versión: 2.0
Revisión: 1
Objeto: Calcular el área de un circulo dados los radios comprendidos de 1 a 10
Fecha: 8 de Marzo de 2010
*/

La función main()

La función main() es el punto inicial de entrada al programa principal y es obligatorio que


todos los programas de C++ la tengan.

En programas cortos, la totalidad de las sentencias van en el bloque de sentencias de main(),


sin embargo en programas largos desde el programa principal, se hacen llamadas a funciones
definidas por el usuario.

Su estructura puede ser alguna de las dos que se muestran a continuación:

void main() int main()


{ {
: :
: :
: :
} return 0;
}

Entre las llaves va el bloque de sentencias o programa principal.

Declaraciones globales

Las declaraciones globales van por fuera del programa principal e incluyen directivas de
preprocesador, prototipos de funciones, variables y constantes globales y otras instrucciones
que le indican al compilador que lo aquí declarado es común para todas las funciones del
programa.

Ejemplo de declaraciones globales en un programa:

7
UNIVERSIDAD MILITAR NUEVA GRANADA CENTRO DE SISTEMAS

#define PI 3.14 #define PI 3.14


#include <iostream > #include <iostream>
#include <stdlib.h> DECLARACIONES #include <stdlib.h> DECLARACIONES
#include <conio.h> GLOBALES #include <conio.h> GLOBALES
float circulo(float); float circulo(float);
int y; int y;
using namespace std;
int main() int main()
{ {
: :
: :
: :
} }

Directivas de preprocesador
Inician con el signo de número (#) y son las instrucciones que le indican al compilador que
lea estas sentencias antes de compilar la función principal del programa, se acostumbra
colocarlas al inicio del programa o por lo menos antes de que se mencionen las instrucciones
correspondientes a la directiva.

Estas directivas pueden definir inclusión de archivos de cabecera, macros, nombres de


constantes, archivos fuente adicionales, etc.

Las dos directivas de preprocesador más usuales son: #include y #define. Con la directiva
#include, incorporamos los archivos de cabecera que proporcionan al compilador la
información necesaria de las funciones de biblioteca, para que se puedan ejecutar entre otras,
sentencias de entrada y salida de datos, funciones matemáticas, o funciones de cadena. Con
la directiva #define, podemos definir constantes simbólicas, para insertar su valor
directamente en el código.

Para incluir los archivo de cabecera en un programa, utilizamos la directiva #include y


encerramos entre corchetes puntudos (< >) el nombre del archivo de cabecera. Por ejemplo:

#include <iostream>

Así, el archivo de cabecera iostream, proporciona al compilador C++, la información


necesaria sobre las funciones de biblioteca que realizan operaciones de entrada y salida de
datos, y todas las demás operaciones relacionadas; iostream es un archivo de texto ASCII,
que se encuentra en la carpeta include, generada al instalar C++.

La directiva using namespace std;, le indica al programa que utilizará objetos que tienen
nombre en una región especial denominada std. Esta región especial contiene los nombres de
muchos objetos predefinidos que se utilizan al escribir los programas.

En el presente manual se harán los ejemplos para Visual.Net, por lo cual si tiene otro
compilador instalado, verifique la escritura de las librerías y la utilización de using namespace
std;, ya que puede no necesitar esta línea.

Funciones definidas por el usuario

Un programa en C++ se compone de una o más funciones, una función (llamada también
rutina) agrupa las instrucciones para realizar una o más acciones o tareas.

8
UNIVERSIDAD MILITAR NUEVA GRANADA CENTRO DE SISTEMAS

Las funciones escritas en C++ pueden no estar todas en un mismo archivo (esto es, pueden
escribirse programas en C++ cuyo código esté repartido en varios archivos).

Toda función de usuario está compuesta por los siguientes elementos:

 El prototipo de la función o la cabecera de función: Permite declarar o identificar


la función, el tipo de datos que devuelve y los parámetros que recibe la función.
 Llamada de la función: Es mencionar la función para que sea invocada, normalmente
se hace desde la función principal.
 Estructura de la función: Contiene el código de la función.
Cuando el compilador encuentra una sentencia de llamada de una función, significa que el
programa utilizará el conjunto de sentencias que le permiten al programador la resolución de
un problema o la realización de una tarea específica.

La facilidad de utilizar funciones hace que la programación pueda ser modular, es decir que
un programa se divida en módulos para realizar tareas específicas o subdividir problemas muy
largos.

5.4. ELEMENTOS BÁSICOS DE UN LENGUAJE DE


PROGRAMACIÓN
En el algoritmo se decide las variables, constantes, los tipos de datos de entrada y salida y
los cálculos que se van a realizar en un programa. A continuación se mostrará la sintaxis en
C++, de cada una de las expresiones que se requieran para hacer el programa.

5.4.1. Tipos de datos en C++

Los programas en C++ pueden procesar diferentes tipos de datos. Los tres tipos básicos de
datos en C++ son, los de números enteros, los de números de punto flotante (reales) y los
de carácter:

Tipo de dato entero

Es el cero o cualquier número positivo o negativo sin decimales. En C++ los denominamos de
tipo int.

Algunas variantes de este tipo de dato entero son: short, long y unsigned.

Ejemplos de datos enteros:


0 3 -11 +30 1000 -31500

Ejemplos de datos que NO son enteros:


3.0 +30.0 -31500.

Tipo de dato de punto flotante (reales)

Es cualquier número positivo o negativo con o sin signo que tiene punto decimal. En
C++ los denominamos de tipo float, double o long double.

Ejemplos de datos de punto flotante:


3.0 -11.0 +30. 1000.20 -31500.625

Ejemplos de datos que NO son de punto flotante:

9
UNIVERSIDAD MILITAR NUEVA GRANADA CENTRO DE SISTEMAS

25 +123 -31,500.20 $10.50

Tipo de dato caracter

Incluye las letras del alfabeto mayúsculas o minúsculas, los dígitos del o al 9, los símbolos
especiales como el +, $, @. Los valores caracteres se almacenan en la mayoría de los
computadores utilizando el código ASCII, así por ejemplo, al almacenar la letra A se almacena
el código ASCII que en binario es 01000001 o en decimal el 65. En C++ los datos carácter los
denominamos de tipo char.

Los valores caracteres son reconocidos en C++, como un solo elemento que deben ser
encerrados entre comillas sencillas.

Ejemplos de datos caracter:


‘A’ ‘3’ ‘$’ ‘a’ ‘*’ ‘,’

Ejemplos de datos que NO son caracter:


3 ‘ABC’

Tipo de dato cadena


Un dato de tipo cadena se puede considerar como un conjunto de caracteres de tipo char.
Su representación se diferencia del tipo char porque esta va encerrado entre comillas dobles.
Las variables de tipo string en C++ tienen un tamaño hasta de 28 bytes y para poder utilizarla
se requiere incluir la librería <string>
Ejemplos:

string SALUDO, opcion1 ;


SALUDO = " HOLA COMO ESTAS";
opcion1 = " 1. Area del circulo";

Otros tipos de datos

Otros tipos de datos utilizados en C++ son: el de tipo boleano y el tipo vacío:

 Tipo de dato boleano: Permite declarar variables lógicas que pueden almacenar los
valores de verdadero o falso. En C++ los denominamos de tipo bool.

Ejemplo:

bool respuesta=true;

 Tipo de dato vacío: En C++ los denominamos de tipo void. Ejemplo:

void funcion void;

La siguiente tabla muestra los principales tipos de datos en C++, sus tamaños en bytes y el
rango de valores que puede almacenar:

En el momento de seleccionar el tipo de dato, verifique en la tabla anterior, si es dato entero


o real y a continuación el tamaño del tipo de dato a utilizar.

TIPO DE
TAMAÑO RANGO DE VALORES EJEMPLO
DATO
10
UNIVERSIDAD MILITAR NUEVA GRANADA CENTRO DE SISTEMAS

bool 1 Byte True, false 5<3, false char


char 1 Byte –128 a 127 @, #, A
string 28 Byte “ Buenos días”
int 4 Byte 2.147.483.648 a 2.147.483.647 1255, -1255
short int 2 Bytes -32.768 a 32.767 100
long int 4 Bytes 2.147.483.648 a 2.147.483.647 5000000
unsigned int 2 Bytes 0 a 65.535 1255
–3.4E-38 a 3.4E38
float 4 Bytes 1255.369
Seis dígitos de precisión
double o –1.7E-308 a 1.7E308
8 Bytes 1255.36942173
loung double Quince dígitos de precisión

Por ejemplo, si en el algoritmo se decide trabajar variables, constantes o tipos de datos de


entrada o salida que sean enteros positivos y mayores de cincuenta mil, debemos escoger un
tipo de dato long int. Si nuestros datos contienen dos números decimales escogemos datos
float. Si nuestros datos son números con muchos decimales es mejor optar por tipo de dato
double.

5.4.2. Variables en C++

En C++ una variable es una posición de memoria con nombre, donde se almacena un valor
de un cierto tipo de dato que puede ser modificado, durante la ejecución de un programa.

Toda variable debe ser declarada previamente a su utilización, se recomienda se haga al


principio del bloque de instrucciones, aunque se podría hacer en cualquier parte del programa.

Toda variable tiene cuatro elementos principales: El tipo de dato, el nombre, el contenido de
la variable y la dirección de la variable.

El tipo de dato, tiene que ver con escoger un tipo de dato de los de C++. Por ejemplo int,
float o char.

El nombre identifica la variable, se aconseja utilizar un nombre que describa su propósito. Por
ejemplo: Para almacenar datos personales, sería conveniente utilizar variables con los
siguientes nombres: apellido1, apellido2, nombre, edad, fechaNacimiento, sueldo_básico.

Al valor real almacenado en la variable se le conoce como el contenido de la variable.

La dirección en la variable es la ubicación física en la memoria, por ejemplo 0x8f5afff4.

La declaración de una variable en un programa en C++, es una sentencia simple con la


siguiente sintaxis:

Tipo-de-variable nombre-de-variable;

Por ejemplo:

char respuesta;
int edad;
int x,y,z;

Las variables se pueden inicializar en su declaración

Tipo-de-variable nombre-de-variable = dato;

11
UNIVERSIDAD MILITAR NUEVA GRANADA CENTRO DE SISTEMAS

Por ejemplo:

char opcion; float peso = 50.1; int x = 0,y = 1,z = 23;

En los ejemplos anteriores, se definen variables escribiendo el tipo de dato, a continuación el


identificador o nombre de la variable y opcionalmente el valor inicial que tomará. Cuando se
necesite declarar varias variables de un mismo tipo, se puede hacer una declaración abreviada
en una sola sentencia.

En C++ los identificadores son palabras compuestas de letras y/o números de hasta 32
caracteres significativos, que nos permiten dar nombre a variables, constantes, funciones o
clases. Tenga en cuenta las siguientes reglas para seleccionar un identificador:

 Debe ser una secuencia de letras, números o el carácter subrayado ( _ ), donde el primer
carácter debe ser una letra o el subrayado.

Los identificadores son sensibles a la mayúscula y la minúscula. Por ejemplo es diferente


la variable Neto, a la variable, neto.

No dejar espacios en blanco, ni utilizar símbolos extraños en ellas, como el * o el - . Por


ejemplo no utilice un identificador como Valor-Neto o Valor neto.

Escoja identificadores claros y con referencia directa al problema. Por ejemplo para
almacenar el salario de un empleado utilice el identificador salario, para almacenar los
datos de la abscisa x, utilice el identificador x.

 El nombre de variable puede tener cualquier longitud pero solo es significativo los 32
primeros caracteres.

 Los identificadores de variables no pueden ser palabras reservadas, porque el lenguaje la


asociaría con algún significado en especial. Por ejemplo una variable no se puede llamar
void, int, else, const, switch.

Para determinar la dirección física en la memoria de una variable se utiliza el operador (&).
Por ejemplo:

&precio;

Indica la dirección física del primer byte utilizado por precio, algo así como: 0x8f5afff4.

5.4.3. Constantes en C++

Las constantes a diferencia de las variables son valores fijos, que no se modifican en el
programa. En C++ las constantes se pueden definir de dos formas, las constantes declaradas
que utilizan la palabra const y las constantes simbólicas que se definen en las instrucciones
de preprocesador mediante la palabra #define. Adicionalmente podemos definir constantes
enumeradas que permiten crear listas de elementos afines. Al igual que las variables, las
constantes deben ser declaradas previamente a su utilización.

Constantes simbólicas

Adicionalmente puede hacer uso del preprocesador para definir constantes simbólicas,
mediante la directiva #define que permite insertar el valor de la constante directamente en
el código. Al compilar se sustituye tal cual un valor por otro, tenga o no sentido, y no se
reserva memoria para el valor.

Por ejemplo:
12
UNIVERSIDAD MILITAR NUEVA GRANADA CENTRO DE SISTEMAS

#define LONGITUD 10
#define VALOR 54
#define pi 3.141592
#define NUEVALINEA ‘\n’

Observe que no se especifica en estas constantes el tipo de dato, como si se requiere cuando
se declara la constante en la función principal o en una de usuario, esto si no se maneja con
cuidado, puede algunas veces ocasionar errores al compilar.

Al definir constantes simbólicas, se puede de la misma manera definir macros, así:

#define PI 3.14
#define AREA_CIRCULO(x) PI * (x) * (x)

Ahora podemos usar la macro como si fuera una función normal, así:

int main()
{
double a;
a = AREA_CIRCULO(3);
}

Durante la compilación la macro se expande a:

a = 3.14 * (3) * (3)

donde la variable a almacena el resultado 28.26.

5.4.4. Expresiones y operadores

Los programas en C++, en términos generales realizan numerosas operaciones aritméticas y


matemáticas de diferente complejidad con los datos que le son proporcionados.

Una expresión en C++, es normalmente una ecuación matemática que muestra una secuencia
de operaciones y operandos, que especifican un cálculo.

Por ejemplo: hipotenusa=sqrt(pow(cateto1,2)+pow(cateto2,2))

Los operadores fundamentales en C++ son: los de asignación, los aritméticos, los lógicos y
los relaciónales.

Operadores de asignación

Los operadores de asignación permiten establecer el valor de la expresión derecha a la variable


o constante situada a la izquierda.

Por ejemplo:

long int código =324589;

A la variable entera larga de nombre código, se le asigna mediante el operador “=” el valor
324589. Adicional al operador “=”, C++ cuenta con otros operadores de asignación que
permiten simplificar las expresiones:

Símbolo Uso Equivale


= a=b a=b
13
UNIVERSIDAD MILITAR NUEVA GRANADA CENTRO DE SISTEMAS

+= a+=b a=a+b
-= a-=b a=a-b
*= a*=b a=a*b
/= a/=b a=a/b
%= a%=b a=a%b

Por ejemplo:

float dato;
dato+=0.2;
A la variable real de nombre dato, se le asigna mediante el operador “+=” un incremento
de 0.2. Estas mismas instrucciones podrían escribirse, así:

float dato;
dato=dato+0.2;

Se pueden realizar asignaciones múltiples por la derecha a variables. Por ejemplo:

int x, y, z;
x=y=z=6;

A las variables enteras x, y, z, se les asigna el valor 6.

Operadores aritméticos

Los operadores aritméticos permiten realizar las operaciones matemáticas básicas como:
suma, resta, multiplicación, división y residuo.

Ejemplo:
Operador Nombre
si x=10 y y=2
+ Suma x + y es igual a 12
– Resta x – y es igual a 8
* Multiplicación x * y es igual a 20
/ División x / y es igual a 5
% Residuo x % y es igual a 0

Las expresiones aritméticas que contengan múltiples operadores serán evaluadas de


acuerdo a la prioridad o jerarquía del operador, así:

Nivel 1.- Paréntesis


Nivel 2.- Multiplicaciones, divisiones y residuo
Nivel 3.- Sumas y restas
Dos o más operadores de la misma jerarquía u orden, se resuelven de izquierda a derecha.
Por ejemplo:

3+4*2 es igual a 11
(3+4)*2 es igual a 14
10/2+3*2 es igual a 11
10/(2+3)*2 es igual a 4
10%3 es igual 1
14
UNIVERSIDAD MILITAR NUEVA GRANADA CENTRO DE SISTEMAS

2+7%3*5 es igual a 7

Note que en C++, no hay operadores para exponentes ni radicales, en caso de necesitarse
se debe recurrir a las funciones estándar de biblioteca.

Operadores incrementales y decrementales

C++, también contiene el operador incremental unitario ++ y el operador decremental


unitario --, que pueden ser utilizados en vez de las expresiones: x=x+1 o x+=1 con tan solo
escribir x++. Estos son:

Valor incremento
Operador Nombre Uso o Decremento

++ incremento ++x 1
x++

- decremento -x 1
x-

Las siguientes sentencias parecerían que tienen el mismo efecto:

++n; n++;

--n; n--;

Sin embargo, cuando se utilizan los operadores ++ y -- de prefijos, las operaciones se


efectúan antes de las operaciones de asignación. Si los operadores están de sufijos, la
asignación se efectúa en primer lugar y la operación a continuación.

Por ejemplo:

int i=10;
int j;
j=i++;

Al finalizar la secuencia, la variable j vale 10, ya que el operador ++ está de sufijo en la


variable i, en cambio i toma el valor 11. Los resultados son diferentes si los operadores están
de prefijo:

int i=10;
int j;
j=++i;

La variable j toma el valor 11, al igual que la variable i.

Los operadores incrementales y decrementales tienen mayor jerarquía que los operadores
aritméticos.

Operadores relacionales

Cuando se utilizan los operadores relacionales en una expresión de C++, el operador produce
un cero (0), o un uno (1), dependiendo del resultado de la expresión: falso o verdadero,
respectivamente:

Operador
Significado
Relacional
15
UNIVERSIDAD MILITAR NUEVA GRANADA CENTRO DE SISTEMAS

> Mayor que


>= Mayor o igual que
< Menor que
<= Menor o igual que
== Igual que
!= Diferente
Por ejemplo, si se escribe:

La variable c asume el valor 1.


int c;
c= 3<7;

Si declara variables booleanas, estas almacenarán valores, verdadero (true) o falso (false).
Por ejemplo, si se escribe:

bool d;
d=3<7;

La variable d asume el valor verdadero (1).

Los datos caracteres se comparan utilizando el código ASCII. Por ejemplo:

‘A’ < ‘a’;

Es verdadera, ya que A es el código ASCII 65 y es menor que a, de código 97.

Operadores lógicos

Estos operadores unen dos o más expresiones relacionales sencillas. Es decir, nos permiten
unir varias relaciones.

Operador Nombre Acción


&& Y (and) Conjunción
|| O (or) Disyunción
! NO (not) Negación

El operador ! tiene prioridad sobre &&, que a su vez tiene mayor prioridad que ||.

Los operadores lógicos devuelven un valor verdadero o falso como resultado de operar
varias expresiones.

El operador lógico &&, produce un valor verdadero solo si ambas expresiones son verdaderas.
El operador lógico ||, produce un valor verdadero si cualquiera de las expresiones es
verdadera.
Por ejemplo:
int c;
c = 3 < 7 && 4 !=8

La variable c asume el valor verdadero (1), ya que 3<7 es verdadero y 4!=8 es verdadero,
luego verdadero && verdadero, produce verdadero (1).

A continuación se presenta una tabla que resume la forma como se relacionan dos
expresiones relaciónales:
16
UNIVERSIDAD MILITAR NUEVA GRANADA CENTRO DE SISTEMAS

P Q P && Q P || Q !P
Verdadero Verdadero Verdadero Verdadero Falso
Verdadero Falso Falso Verdadero Falso
Falso Verdadero Falso Verdadero Verdadero
Falso Falso Falso Falso Verdadero

5.5. ENTRADA Y SALIDA DE DATOS


Para manejar entrada o salida de datos en C++, utilizamos el flujo estándar de salida cout y
el operador de inserción <<; y para las entradas, el flujo cin y el operador de extracción
>>.

Para utilizar entradas/salidas de flujo o streams, los programas C++ deben incluir el archivo
de cabecera iostream.

5.5.1. Salida (cout)

Utilice cout, cuando desea visualizar en la pantalla de su equipo datos. El operador de


inserción <<, inserta datos en el flujo cout.

Ejemplo 1:

cout<< “Bienvenido a la programación”;

Visualiza: Bienvenido a la Programación

Los textos que queremos visualizar en pantalla van entre comillas dobles.

Ejemplo 2:

Es posible utilizar una serie de operadores << en cascada.

int x=100, y=200;


cout<< “Valor final ”<<x<<” “<<y;

Visualiza: Valor final 100 200

Para imprimir los datos que guardan las variables, solamente mencione el nombre de la
variable, a continuación del operador de inserción <<; no utilice comillas.

Ejemplo 3:

cout<<”Los resultados son importantes \n pero más importante es la ganancia”;

Los resultados son importantes


Visualiza:
pero más importante es la ganancia

En este ejemplo se utilizó \n, para el salto de línea o retorno de carrito, sin embargo hay
otra forma de hacerlo con la instrucción endl, así:

17
UNIVERSIDAD MILITAR NUEVA GRANADA CENTRO DE SISTEMAS

cout<<”Los resultados son importantes”<<endl<<” pero más importante es la ganancia”;

Los resultados son importantes


Visualiza: pero más importante es la ganancia

Ejemplo 4:

cout<<”El resultado es: ”<<3*5<<endl<<”y la suma es: ”<<3+5;

Visualiza: El resultado es: 15


y la suma es: 8

5.5.2. Entrada (cin)


Utilice cin, cuando desea introducir datos por teclado. El operador de extracción >>, extrae
valores del flujo para almacenarlos en variables.

Por ejemplo:

int n;
double x;
cout
<<”Ingrese los datos: ”<<endl;
cin>>n;
cin>>x;
Ingrese los datos:
Visualiza: 100
5.2546897

En las variable n y x, se almacenarán los datos introducidos por teclado en el respectivo


orden, esto es, en n se almacenará 100 y en x se almacenará 5.2546897.

Podríamos haber utilizado una sola línea de código para el ingreso de los datos, así:

int n;
double x;
cout<<”Ingrese los datos: ”<<endl;
cin>>n>>x;

5.5.3. Caracteres de control

Son llamados también secuencias de escape y nos permiten avanzar líneas, hacer tabuladores,
retroceder, etc. Estos efectos deben ser introducidos en forma de carácter, esto es, entre
comillas dobles. Para que se ejecute la acción hay que usar una barra invertida (\) y una letra
sin espacio en medio, de esta forma serán interpretados en forma distinta al texto normal:

Caracter de control Acción


\n Avance de línea o retorno de carro
\t Tabulación horizontal

18
UNIVERSIDAD MILITAR NUEVA GRANADA CENTRO DE SISTEMAS

\v Tabulación vertical
\’ Identifica una comilla simple
\” Identifica una comilla doble
\f Salta a una nueva hoja
\b Backspace o retroceso (espacio atrás)
\r Retorno al principio de línea
\a Pitido
\000 Número octal
\xhh Número hexadecimal

Por ejemplo:

cout<<"Codigo \t Nombre \t Salario \n Fin de la impresión";

Código Nombre Salario


Código
Fin de Impresión

19
UNIVERSIDAD MILITAR NUEVA GRANADA CENTRO DE SISTEMAS

5.5.4. Formato numérico en C++

En C++ podemos dar formato a los datos numéricos que imprime la salida cout<<,
utilizando manipuladores de ancho de campo setw(n), de número de decimales
setprecision(n), notación exponencial o decimal setiosflags(n) o escoger el sistema
numérico.

Para utilizar formatos numéricos, los programas C++ deben incluir el archivo de
cabecera iomanip.h.

Ejemplos:

CÓDIGO EN C++:

//Impresión sin utilizar formatos numéricos.


#include<iostream> using namespace std; int main()
{
cout<<"impresion sin Formato"<<2523456789.6<<endl;
system("pause");
return 0;
}

CÓDIGO EN C++:

//El mismo ejemplo utilizando formatos numéricos.


#include<iostream>
#include<iomanip.h>
using namespace std;
int main()
{
cout<<"impresion con
formato"<<setw(18)<<setiosflags(ios::fixed)<<
setprecision(3)<<2523456789.6<<endl;
system("pause");
return 0;
}

setw(18): establece el ancho del campo en 18.


setiosflags(ios::fixed): Despliega el número en notación decimal.
setprecision(3): Determina en tres el número de lugares decimales.

20
UNIVERSIDAD MILITAR NUEVA GRANADA CENTRO DE SISTEMAS

5.7. ESTRUCTURAS SECUENCIALES


Las estructuras de control se dividen en tres grandes categorías: secuencia, lógicas o
condicionales y repetición. Lo anterior en función del flujo de ejecución de las
instrucciones.

Los programas mostrados hasta el momento, contienen instrucciones de control


secuenciales, en las que se ejecutan todas las instrucciones de arriba hacia abajo en el
orden que las escribimos, cada una de las cuales se ejecutan una sola vez.

Ejemplo:

ENUNCIADO:
Elaborar un programa que permita hallar el área de un triángulo cuyos vértices en coordenadas
polares son: (0;0), (6;20º) y (9;50º).

ANÁLISIS:
La fórmula del área de un triángulo cuyos vértices en coordenadas polares son (0;0), (r1;θ1) y
(r2;θ2) es: área = ½ r1 r2 sen(θ2-θ1)

CÓDIGO EN C++:
/*programa para hallar el área de un triángulo dados los vértices en el
eje polar
(0;0), (6;20º) y (9;50º) */
#include<iostream>
using namespace std;
int main()
{
double r1=6.0, r2=9.0, a1=20, a2=50, area=0.0,a1c, a2c;
a1c=a1*3.14159/180; /*convierte grados en radianes*/
a2c=a2*3.14159/180;
area=0.5*r1*r2*sin(a2c-a1c);
cout<<"AREA DEL TRIANGULO \n"<<area;
system("pause");
return 0;
}
SALIDA:

INTERPRETACIÓN:
Las instrucciones se ejecutan una a una en orden descendente. En las instrucciones de
preprocesador, se incluye el archivo de cabecera math.h, para que el compilador interprete la
función sin(x) que se incluye en el programa.

5.8. BIBLIOTECA ESTÁNDAR DE FUNCIONES


Los compiladores de C++, proporcionan la biblioteca estándar de funciones, que contiene
una colección de funciones que facilitan el realizar cálculos matemáticos, manipulación

21
UNIVERSIDAD MILITAR NUEVA GRANADA CENTRO DE SISTEMAS

de cadenas, funciones de entrada y salida, manejo de archivos y muchas otras cosas, de


uso corriente.

Existen muchas de estas librerías, algunas tienen sus características definidas según el
estándar, ANSI C o C++; otras son específicas del compilador, otras del sistema
operativo, también las hay para plataformas Windows, LINUX u otras. En el presente
curso nos limitaremos a las librerías ANSI C y C++.

Cada biblioteca estándar tiene su archivo de cabecera que contiene los prototipos de
todas las funciones de dicha biblioteca y las definiciones de varios tipos de datos y de
constantes requeridas para dichas funciones. Este archivo de cabecera obligatoriamente
se debe mencionar antes de utilizar la función correspondiente.

Las funciones de biblioteca, se utilizan normalmente en un programa, escribiendo el


nombre de la función y entre paréntesis el argumento o argumentos de la función.

A continuación mencionaremos algunas de las funciones más útiles de algunas de estas


librerías:

Funciones matemáticas de biblioteca <math.h>

Las funciones matemáticas de biblioteca le permiten al programador ejecutar ciertos


cálculos matemáticos comunes. Para utilizar las funciones de la biblioteca de matemáticas
en los programas C++, debe incluir el archivo de cabecera math.h. (en la versión 2012
no es necesario su utilización)

Función Descripción Ejemplo


Matemática
sqrt(x) Raíz cuadrada de x sqrt(900.0) es 30.0

exp(x) Función exponencial ex exp(1.0) es 2.718282

log(x) logaritmo natural de x log(2.718282) es 1

log10(x) Logaritmo en base 10 de x log10(1.0) es 0.0

ceil(x) Redondea a x al entero más pequeño ceil(9.2)=10


que no se menor que x
floor(x) Redondea a x al entero más grande floor(9.2)=9.0
que no mayor x
pow(x,y) x elevado a la potencia de y (xy) pow(2,7)=128

fmod(x,y) Residuo de x/y, como un número de fmod(13.657,2.333)= 1.99


punto Flotante
sin(x) Seno trigonométrico de x, en radianes sin(0.0)=0.0)

cos(x Coseno trigonométrico de x, en cos(0.0)=1.0


radianes
tan(x) Tangente trigonométrica de x, en tan(0.0)=0.0
radianes

Todas las funciones de la biblioteca de matemáticas devuelven datos en tipo double. Los
argumentos de las funciones pueden ser constantes, variables o expresiones.

22
UNIVERSIDAD MILITAR NUEVA GRANADA CENTRO DE SISTEMAS

Ejemplo 1:

//Ejemplo utilizando una función matemática.


#include<iostream>
#include<math.h>
using namespace std;
int main()
{
cout<<"raiz cuadrada igual a: "<<sqrt(900.0);
system("pause");
return 0;
}

Visualiza: raiz cuadrada igual a: 30

Cuando este enunciado se ejecuta la función matemática sqrt, calcula la raíz cuadrada del número
contenido entre paréntesis, en este caso, la raíz cuadrada de 900.0.

Ejemplo 2:

//Ejemplo utilizando variables y una función matemática.


#include<iostream>
#include<math>
using namespace std;
int main()
{
double c1=13.0, d=3.0, f=4.0;
cout<<"respuesta: "<<sqrt(c1+d*f);
system("pause");
return 0;
}

Visualiza: respuesta: 5

Calcula e imprime la raíz cuadrada de 13.0 + 3.0 * 4.0 = 25.0, es decir 5.0.

Librería de rutinas de conversión estándar

Función system("pause")

La función system ejecuta un comando del sistema o un programa externo almacenado en disco.
Cuando se escribe system("pause") detiene la consola que muestra los resultados luego de ejecutar
un programa.

Esta función nos será muy útil para detener el programa antes de que termine y la consola
desaparezca.

23
UNIVERSIDAD MILITAR NUEVA GRANADA CENTRO DE SISTEMAS

CÓDIGO EN C++:
//Ejemplo utilizando variables y una función matemática.
#include<iostream>
#include <stdlib.h>
using namespace std;
int main()
{
cout << "Hola, mundo." << endl;
system("pause");
return 0;
}

SALIDA:

INTERPRETACIÓN:
De este modo el programa se detiene antes de devolver el control y de que se cierre la
consola, muestra el mensaje “Presione una tecla para continuar”.

Función system("cls")

Cuando la función se escribe system("cls") borra la consola que muestra los resultados.

CÓDIGO EN C++:
//Ejemplo borrando consola.
#include<iostream>
#include <stdlib.h>
using namespace std;
int main()
{
cout << "Hola, mundo." << endl;
system("pause");
system("cls");
cout << "Hola, nuevamente." << endl;
system("pause");
}
SALIDA:

INTERPRETACIÓN:

Luego de mostrar "Hola, mundo." y que el programa se detiene, se borra la consola y


muestra la nueva consola, "Hola, nuevamente.".

24
UNIVERSIDAD MILITAR NUEVA GRANADA CENTRO DE SISTEMAS

Función "rand()"

La función rand genera números aleatorios, entre 0 y RAND_MAX, que es por lo menos
el número 32767 o el valor máximo de un entero de dos bytes (16 bits).

Por ejemplo, si se desea simular un rango de valores del 0 al 5, utilizamos el operador


de módulo (%) en conjunto con rand, así:

rand()%6;

Al 6 se le llama factor de dimensionamiento.

Debido a que la función rand(), genera números seudo aleatorios, esto es, que cada vez
que el programa se ejecute genera la misma secuencia, es mejor utilizar la función
srand(), que genera en el programa números diferentes tomando un argumento entero
como semilla. Si utilizamos la función time() o reloj del computador como semilla,
generaríamos números diferentes cada vez que se corra el programa.

Las funciones rand() y srand(), pertenecen a la biblioteca <iostream> y la función


time() requiere la librería <time.h>

ENUNCIADO:
Elaborar un programa que simule el lanzamiento de un dado.

CÓDIGO EN C++:
//Ejemplo con números aleatorios.
#include<iostream>
#include<time.h>
using namespace std;
int main()
{
srand(time(NULL));
cout<<"Estoy lanzando el dado: "<<endl;
cout<<rand()%6+1<<endl;
system("pause");
return 0;
}
SALIDA:

INTERPRETACIÓN:

Cada vez que se ejecute el programa genera un número aleatorio del 0 al 5; para simular un dado
se le suma uno.
En las instrucciones de preprocesador, se debe incluir el archivo de cabecera iostream.h, stdlib.h y
time.h.

25
UNIVERSIDAD MILITAR NUEVA GRANADA CENTRO DE SISTEMAS

Conversión y clasificación de caracteres

 Función "toupper()"

Convierte un carácter a mayúscula.

ENUNCIADO:

Convertir una letra minúscula en mayúscula

CÓDIGO EN C++:

//programa que convierte letras minúsculas en mayúsculas.


#include<iostream>
using namespace std;
int main()
{
char ch;
cout<<"digite una letra en minuscula: "<<endl;
cin>>ch;
int i=toupper(ch);
char t=i;
cout<<"Esa misma letra en mayuscula es: "<<endl;
cout<<t<<endl;
system("pause");
return 0;
}

SALIDA:

INTERPRETACIÓN:

Con la instrucción int i=toupper(ch);, guardamos en la variable i el entero ASCII,


correspondiente a la letra en mayúscula, para ser asignado a una variable carácter e
imprimirla.

Función "tolower()"

Convierte un carácter a minúscula.

ENUNCIADO:

Convertir una letra minúscula en mayúscula

26
UNIVERSIDAD MILITAR NUEVA GRANADA CENTRO DE SISTEMAS

CÓDIGO EN C++:

//Programa que convierte letras minúsculas en mayúsculas.


//Utiliza otras funciones de entrada y salida de datos
#include<iostream>
using namespace std;
int main()
{
char ch;
cout<<"digite una letra en minuscula: \n”;
int i=toupper(ch);
char t=i;
cout<<"Esa misma letra en mayuscula es: \n "<<t;
system("pause");
return 0;
}

SALIDA:

27
UNIVERSIDAD MILITAR NUEVA GRANADA CENTRO DE SISTEMAS

RESUMEN

 En la presente unidad se establece la importancia del lenguaje de programación C++, la


evolución que ha tenido este lenguaje desde su creación, muestra la estructura general
de un programa en C++ y las fases en la compilación y ejecución de un programa.

 C++ es un lenguaje de Programación Orientado a Objetos basado en C, que permite a


los programadores hacer programas simples e interactivos o programas muy elaborados
y complejos para ingeniería y ciencia, además de interfaces gráficas para usuarios de
Windows, dentro de un contexto de un lenguaje modular.

 En 1998, se aprobó el estándar C++ internacional y empezaron a publicarse los primeros


manuales con el estándar ANSI/ISO C++.

 Los elementos básicos del lenguaje C++ son los que nos permiten la creación de un
programa, el proceso de ejecución del programa y la depuración o corrección de errores.

 Un programa en C++ incluye entre otros: Los comentarios, las declaraciones globales,
las directivas de preprocesador, la función main() y en algunos programas funciones
definidas por el usuario.

 Los comentarios, permiten documentar el código fuente por la persona que lo escribe,
son muy útiles en el momento que es leído por otra persona diferente al autor. En C++,
los comentarios pueden iniciar con /* y se cerrar con */ ó se puede utilizar dos slash (//),
por cada línea de comentario.

 Las declaraciones globales y las funciones definidas por el usuario: Indican al compilador
que las funciones de usuario o variables aquí declaradas son comunes a todas las
funciones del programa. Estas declaraciones se sitúan antes de la función main().

 La función main() es el punto inicial de entrada al programa y todo programa la debe


contener. Las llaves encierran el bloque de sentencias o programa principal.

 Las directivas de preprocesador: Son las instrucciones que le indican al compilador que
lea estas sentencias antes de compilar la función principal del programa. Estas directivas
inician con el signo de número (#).

 El proceso de ejecución de un programa depende del compilador C++, que se utilice. En


términos generales los programas de C++ pasan a través de cinco fases para su
ejecución: editar, preprocesar, compilar, enlazar y ejecutar. En cada una de las fases se
produce o se integra un archivo.

 Los errores que surgen en los programas cuando se ejecutan deben ser detectados y
corregidos, a este proceso se le denomina Depuración. Las situaciones más comunes en
las cuales suelen aparecer errores son: El no cumplimiento de las reglas gramaticales o
errores de sintaxis y los errores en el diseño del algoritmo o errores lógicos.

 Los tipos de datos fundamentales en C++ son: Enteros int, de punto flotante float,
double o long double y los caracteres char.

 Una variable en C++ es una posición de memoria con nombre, en donde se almacena un
valor de un cierto tipo de dato y que puede ser modificado durante la ejecución de un
programa.

28
UNIVERSIDAD MILITAR NUEVA GRANADA CENTRO DE SISTEMAS

 Un identificador en C++ es una palabra compuesta de letras y/o números de hasta 32


caracteres significativos que permite identificar las variables, constantes, funciones o
clases, en C++.

 Las constantes en C++ son valores fijos, que no puede ser modificados por el programa.

 Los operadores fundamentales en C++ son: Operadores de asignación, aritméticos,


lógicos y relaciónales.
Operadores de asignación: =, +=, -=, *=, /=, %=.
Operadores aritméticos= +, -, *, /, %.
Operadores lógicos: <, >, <=, >=, ==, !=.
Operadores relacionales: &&, ||, !.

 Una expresión en C++, es normalmente una ecuación matemática, que muestra una
secuencia de operaciones y operandos que especifican un cálculo.

 Para manejar entrada/salida de datos, C++ utiliza el flujo estándar de salida cout y el
operador de inserción <<; y el flujo estándar de entrada cin y el operador de extracción
>>.

 El Lenguaje C++, proporciona una biblioteca estándar, que contiene una colección de
funciones para llevar a cabo cálculos matemáticos, manipulación de cadenas, funciones
de entrada y salida, generación de números aleatorios, etc. Cada biblioteca estándar tiene
su archivo de cabecera correspondiente.

 Las funciones se utilizan normalmente en un programa, escribiendo el nombre de la


función y entre paréntesis el argumento o argumentos de la función. Las funciones
matemáticas de biblioteca le permiten al programador ejecutar ciertos cálculos
matemáticos comunes.

 Las estructuras de control registran la secuencia o flujo de ejecución de las sentencias.


Las estructuras de control se dividen en tres grandes categorías por el flujo de ejecución:
secuencia, selección y repetición.

29

Potrebbero piacerti anche