Documente Academic
Documente Profesional
Documente Cultură
Un programa C++ se compone de una o ms funciones. Una de ellas debe ser obligatoriamente la
funcin "main". Una funcin en C++ es un grupo de instrucciones que realizan una o ms acciones. Adems
el programa contendr una serie directivas
que permitirn agregar al mismo archivos de
Marco Antonio Ayala
@marantaya
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
/*
* Created on October 26, 2013, 9:16 PM
* IDE/Compiler: NetBeans 7.3.1/g++ 4.8.1 x64
* File: Welcome.cpp
*/
#include <iostream>
#include <cstdlib>
#include <windows.h>
int main(int argc, char** argv) {
SetConsoleTitle("Welcome to C++ Programming");
std::cout << "\n\tBienvenido a la programacin en C++";
std::cout << "\n\n\tPresione [Enter] para continuar...";
std::cin.get();
return 0;
}
valores previamente definidos, aplicar reglas especficas de la mquina a las secciones del cdigo, entre
otros.
Las directivas siempre comienzan con el signo de almohadilla # seguido por el nombre la directiva y
algunas de ellas pueden incluir argumentos o valores. Las directivas del preprocesador pueden aparecer
en cualquier parte del cdigo fuente, pero el resultado de su instruccin slo se aplica de donde aparece
hacia el resto del programa. Las directivas ms usuales son:
y
. Otras menos comunes
son:
,
,
, etc.
Solamente se puede escribir una directiva por lnea en el programa fuente. En caso de que la directiva
sea demasiado larga, se puede colocar el carcter \ al final de la lnea y continuar en la siguiente.
Indica al compilador que lea el archivo fuente que viene a continuacin y su contenido lo inserte en la
posicin donde se encuentre la directiva. La sintaxis de la directiva son las siguientes:
Las primeras dos versiones implican que ninguna expansin de macro ser intentada; en otras
palabras, el archivo header_name nunca es revisado en busca de identificadores tipo macro. El archivo
header_name debe ser un nombre de archivo vlido con una extensin y una ruta opcional de ubicacin
del archivo.
La tercera versin asume que el primer carcter no blanco seguido despus de #include no es el
carcter <, ni la comilla doble; es ms, asume la existencia de una definicin de macro que expandir el
identificador de macro en un encabezado en cualquiera de los formatos <header_name> o "header_name".
Los archivos que se incluyen con una directiva #include son llamados "archivos de cabecera" o
"archivos de inclusin". Estos archivos tienen extensin *.h para lenguaje C y/o C++; y extensin *.hpp,
exclusivo para lenguaje C++.
El preprocesador remueve la lnea de la directiva #include y conceptualmente la reemplaza con el
cdigo del archivo de cabecera en el mismo punto en que se encuentra la directiva dentro del programa
fuente. El cdigo en s no cambia, pero el compilador ve o procesa un programa fuente aumentado.
La diferencia entre los formatos <header_name> y "header_name" reside en el algoritmo empleado
para localizar el archivo de cabecera incluido.
La versin <header_name> especifica un archivo de cabecera estndar: la bsqueda es hecha
sucesivamente en cada uno de los directorios include, en el mismo orden en que han sido especificados. Si
el archivo no es localizado en ninguno de los directorios (carpetas) por defecto, entonces un mensaje de
error es emitido.
La versin "header_name" especifica un archivo de cabecera suministrado por el usuario. El archivo es
buscado en el siguiente orden:
En el mismo directorio del archivo que contiene la directiva #include
En los directorios de archivos de cabecera que incluye el archivo fuente
En el directorio de trabajo (directorio actual)
A travs de la ruta especificada por la opcin /I del compilador.
En las rutas especificadas por medio de la variable de entorno INCLUDE
Como una convencin se debe de utilizar los delimitadores < y > para cuando se incluya archivos de
cabecera que vienen definidos junto con la implementacin del compilador y utilizar comillas dobles si se
va a incluir archivos de cabecera creados por el programador. Por ejemplo:
Marco Antonio Ayala
@marantaya
#include <stdio.h>
#include <unistd.h>
#include "usefullib.h"
#include "myprog.h"
Las directivas #include pueden estar en cualquier parte del programa, pero lo ms comn es situarlas
al principio del mismo.
El (Programa I: Estructura general de un programa C++) incluye tres archivos de cabecera desde la
lnea 7 a la lnea 9:
#include <iostream>
#include <cstdlib>
#include <windows.h>
La mayora de programas en C++ necesitarn leer datos del teclado por medio del objeto cin o escribir
datos en pantalla a travs del objeto cout, por lo que siempre llevarn como cabecera del programa la
directiva:
Si en el programa se van a manejar cadenas de caracteres es necesario colocar en la cabecera del
programa, la directiva:
Para conservar compatibilidad con el lenguaje de programacin C respecto a las instrucciones de
entrada/salida (E/S) {input/output (I/O)}, en donde se utilizan las funciones scanf () y printf () se
debe agregar la directiva de preprocesador:
#undef INCLUDE_PATH
#undef AUTHOR
user: El compilador escribe una cadena dentro del archivo objeto (*.obj). El enlazador ignora la
cadena de caracteres especificada.
Las declaraciones globales son todas aquellas instrucciones que introducen al programa objetos que
se encuentran disponibles para todas las funciones del programa. Los objetos pueden ser de tipo
fundamental, definidos por el usuario, pueden ser variables o constantes, pueden ser corresponder a una
funcin, etc.
Las siguientes declaraciones son globales si se encuentran localizadas fuera de cualquier funcin y su
disponibilidad (que pueden usarse) es a partir de su declaracin en adelante.
int avar = 27;
const double SQRT2 = 1.4142135623730950488016887242097;
double ReadNumber(const char*, const double&, const double&);
Una funcin en C++ es un subprograma que realiza una o ms instrucciones y al terminar devuelve un
valor nico, un conjunto de valores o solamente realiza una tarea especfica tal como entrada/salida. La
ejecucin de las instrucciones se realiza de manera independiente de otros bloques o segmentos de
programa (otras funciones).
Una funcin en C++ tiene un tipo que est definido por una palabra a la izquierda del nombre de la
funcin. En el caso anterior la funcin es de tipo int.
El bloque de instrucciones que componen a la funcin se especifica justo despus del encabezado de la
funcin entre llaves { y }.
Una funcin en C++ termina se encuentra la llave de cierre del bloque de instrucciones } o de manera
explcita cuando se ejecuta la sentencia return. Si la funcin devuelve un valor, este debe de incluirse como
parte de la instruccin de retorno, en cualquiera de las siguientes formas de sintaxis:
Cada programa C o C++ tiene obligatoriamente una funcin main() que es el punto de inicia por
donde todo programa comienza a ejecutarse. La declaracin de la funcin principal puede tener
argumentos entre sus parntesis tal como en la siguiente expresin (lnea 11 del Programa I: Estructura
general de un programa C++):
int main(int argc, char** argv)
O si la funcin principal no utilizar argumentos puede tener cualquiera de los formatos:
int main( )
int main(void)
La primera instruccin de la funcin principal del Programa I: Estructura general de un programa C++
es una llamada (invocacin) de otra funcin:
SetConsoleTitle ("Welcome to C++ Programming");
La funcin SetConcoleTitle se encuentra definida en el archivo de cabecera <windows.h> y cambia el
ttulo de la consola donde se muestra la salida del programa. El dato se pasa como una cadena de
caracteres: "Welcome to C++ Programming".
A continuacin ejecuta la sentencia:
std::cout << "\n\tBienvenido a la programacin en C++";
Marco Antonio Ayala
@marantaya
En tal sentencia cout es un objeto definido en <iostream>, y dentro del espacio de nombres std. El
objeto cout muestra o enva mensajes generalmente al dispositivo estndar de salida (el monitor). Utiliza
el operador << que es llamado en este contexto,
. Despus del operador se
encuentra el valor que se enviar como salida: "\n\tBienvenido a la programacin en C++", en este caso
una constante de cadena de caracteres (una secuencia de caracteres encerrados entre comillas dobles).
La instruccin de la lnea 16, std::cin.get(); utiliza la funcin miembro de cin para esperar que se
ingrese un valor (una entrada) desde el teclado por parte del usuario y la procesa hasta que el usuario
presiona [Enter]. El efecto es que se genera una pausa antes de ejecutar la sentencia de retorno y finalizar
la funcin.
Una sentencia (statement) o instruccin es el elemento individual de cdigo ms pequeo que puede
dar una orden a la computadora. La instruccin est compuesta por una secuencia de elementos que por s
solos no pueden dar una orden; la secuencia debe terminar con un carcter separador o finalizador de
sentencias.
En C++ las instrucciones estn separadas por un punto y coma, omitirlo es un error de sintaxis pues el
compilador no entiende la instruccin; en otras palabras se ha cometido una violacin a las reglas
sintcticas del lenguaje.
obtiene? Explique porqu ocurre dicho error (o errores) o porqu la salida es diferente.
1. Elimine los caracteres de la lnea 1, /*
2. Borre la lnea #include <iostream>
3. Quite la lnea #include <cstdlib>
4. Elimine la lnea #include <windows.h>
5. Cambie el nombre del archivo incluido <windows.h> a <windows>
6. Cambie el nombre del archivo incluido <iostream> a <iostream.h>
7. Quite el nombre std:: en la sentencia std::cout << "\n\tBienvenido a la programacin en
C++";
8. Elimine el operador de insercin << en la misma sentencia
9. Cambie las comillas dobles por comillas simples
10. Elimine la letra n de la secuencia de caracteres "\n\t
11. Elimine la letra t de la secuencia de caracteres "\n\t
12. Borre el punto y coma al final de la sentencia
13. Quite los parmetros int argc, char** argv dentro de los parntesis de la funcion main.
14. Borre la palabra int antes del nombre main
15. Cambie la palabra int que est antes de main por la palabra void
16. Quite los parntesis en la sentencia std::cin.get();
17. Elimine la llave de apertura al inicio del cuerpo de main. Haga lo mismo con la llave que
est al final del cuerpo de main.
18. Elimine el carcter de almohadilla # a cualquiera de las directivas del procesador.
El siguiente programa solicita dos cantidades por parte del usuario. Realiza la operacin de suma y
luego muestra el resultado.
Cuando se hace necesario almacenar informacin debe contarse con un mecanismo para guardarla y
poder acceder a ella posteriormente. La manera de hacerlo es por medio de la declaracin de objetos que
permiten asignar un nombre a una zona de memoria.
En el Programa II: Sumar dos cantidades enteras, se declaran tres objetos de tipo entero: dos ellos
para almacenar los valores ledos y el tercero para guardar el resultado de la suma:
int number1, number2, suma;
Como siguiente accin se realiza la lectura de datos por medio del objeto cin que puede extraer datos
del flujo de entrada asociado al dispositivo estndar (teclado)
std::cin >> number1;
std::cin >> number2;
El objeto cin est definido en la librera incluida <iostream>, y dentro del espacio de nombres std.
Utiliza el operador >> que se conoce como
porque toma de manera secuencial
datos del flujo de entrada y lo coloca en el objeto que se encuentra despus del operador.
Justo antes de las sentencias de lectura de datos se ha colocado, utilizando cout, un mensaje que se
mostrar en la consola de salida y que sirve como informacin al usuario para instruirle el tipo de
informacin que debe de ingresar.
Programa II: Sumar dos cantidades enteras
1 /*
Marco Antonio Ayala
@marantaya
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
Se indica a la computadora que debe de realizar la suma de los datos previamente almacenados en los
objetos number1 y number2, y que el resultado debe de asignarlo (guardarlo) en el objeto de la izquierda
(suma).
El carcter + que combina a los objetos number1 y number2 se le conoce como operador y los objetos
combinados como operandos. Los tres elementos forman una expresin que realiza la evaluacin y lo que
resulta se coloca en el objeto de la izquierda por medio del operador de asignacin =.
std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
Usa la funcin miembro de cin para ignorar caracteres del flujo de entrada estndar (asociado a cin), y
se ignorarn tanto caracteres segn el numero obtenido de la expresin que compone el primer
parmetro: std::numeric_limits<std::streamsize>::max() o si se encuentra el carcter de fin de lnea '\n'.
En el primer parmetro la funcin max() que est definida en el archivo de cabecera <limits> devuelve
el valor mximo que puede representar los tipos de datos de C++, en este caso se aplica para un tipo
streamsize (tamao de flujo). La operacin se realiza utilizando la plantilla numeric_limits que tambin
est definida en la librera <limits>.
La sentencia anterior es recomendable colocarla antes de std::cin.get(); para vaciar los posibles datos
que puedan existir en el flujo de entrada (valores que pudieron haber quedado cuando se realizaron
sentencias de entrada). Si no se vaca el flujo de entrada, la funcin miembro std::cin.get(); no esperar a
que el usuario presione la tecla [Enter] debido a que extrae un carcter de los que ya se encuentra en el
flujo de entrada.
Para cada uno de los siguientes casos, diga si los cambios realizados producen algn tipo de
error o dan una salida diferente. Si es as, Cules son los mensajes de error o la salida que se
obtiene? Explique porqu ocurre dicho error (o errores) o porqu la salida es diferente.
1. Elimine la lnea de cdigo #include <limits>
2. Cambie el nombre del archivo de cabecera <limits> a <limits.h>
3. Cambie la sentencia suma = number1 + number2; por suma = number1 - number2; Cmo
clasificara ese error?
4. Ejecute el programa, ingrese una cantidad de punto flotante en vez de una entera cuando se
pida la primera cantidad.
5. Ejecute el programa, ingrese una cantidad de punto flotante en vez de una entera cuando se
pida la segunda cantidad.