Documentos de Académico
Documentos de Profesional
Documentos de Cultura
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.
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.
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.
Código Objeto:
COMPILAR .obj
Archivo Bibliotecas
ENLAZAR ejecutable: .exe
EJECUTAR
2
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.
Fase Preprocesador
Fase Compilador
Fase enlace
Fase de ejecució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 de sintaxis
Son los producidos cuando se violan las reglas de sintaxis o gramática del lenguaje, entre
los más frecuentes tenemos:
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++:
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.
DECLARACIONES
GLOBALES
PROTOTIPO DE LA FUNCIÓN
FUNCIÓN
PRINCIPAL
"<<circulo(r)<<endl;
15. {
17. }
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.
/*
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()
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.
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>
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.
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).
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.
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.
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.
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.
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.
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;
La siguiente tabla muestra los principales tipos de datos en C++, sus tamaños en bytes y
el rango de valores que puede almacenar:
TIPO DE
TAMAÑO RANGO DE VALORES EJEMPLO
DATO
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
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.
Por ejemplo:
char
respuesta;
int edad; int
x,y,z;
Por ejemplo:
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:
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.
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:
#define LONGITUD 10
#define VALOR 54
#define pi 3.141592
#define NUEVALINEA ‘\n’
#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()
{ doubl
e a;
a = AREA_CIRCULO(3);
}
Expresiones y operadores
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.
Los operadores fundamentales en C++ son: los de asignación, los aritméticos, los lógicos y
los relaciónales.
Operadores de asignación
Por ejemplo:
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;
int x, y, z;
x=y=z=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: si
Operador Nombre
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
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
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.
Valor incremento
Operador Nombre Uso
o Decremento
++x x++
++ incremento 1
-x x-
- decremento 1
++n; n++;
--n; n--;
Por ejemplo:
int i=10;
int j;
j=i++;
Los operadores incrementales y decrementales tienen mayor jerarquía que los operadores
aritméticos.
Operadores relacionales
Operador
Significado
Relacional
> Mayor que
>= Mayor o igual que
< Menor que
<= Menor o igual que
== Igual que
!= Diferente
Por ejemplo, si se escribe:
Si declara variables booleanas, estas almacenarán valores, verdadero (true) o falso (false).
Por ejemplo, si se escribe:
bool d;
d=3<7;
Operadores lógicos
Estos operadores unen dos o más expresiones relacionales sencillas. Es decir, nos permiten
unir varias relaciones.
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:
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
Para utilizar entradas/salidas de flujo o streams, los programas C++ deben incluir el
archivo de cabecera iostream.
Salida (cout)
Ejemplo 1:
Los textos que queremos visualizar en pantalla van entre comillas dobles.
Ejemplo 2:
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”;
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í:
Ejemplo 4:
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
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;
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:
Por ejemplo:
cout<<"Codigo \t Nombre \t Salario \n Fin de la
impresión";
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++:
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.
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.
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.
Tangente trigonométrica de x, en
tan(x) tan(0.0)=0.0
radianes
Ejemplo 1:
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.
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.
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:
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).
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.
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.
Función "toupper()"
ENUNCIADO:
Convertir una letra minúscula en
mayúscula
CÓDIGO EN C++:
SALIDA:
INTERPRETACIÓN:
Función "tolower()"
ENUNCIADO:
SALIDA:
RESUMEN
• 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 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 (#).
• 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.
• Las constantes en C++ son valores fijos, que no puede ser modificados por el
programa.
• 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.