Sei sulla pagina 1di 33

Estructura básica de un programa en C+

+. Comenzando a programar en C++


Me parece que la mejor forma de no perder el interés de los lectores de esta sección
aburriéndolos con muchos conceptos y teorías, es mediante un ejemplo (a todos nos
gusta la práctica). Veamos entonces nuestro primer programa en C++, que aunque no es
muy extenso ni complicado ni tampoco hace gran cosa, nos ayudará a establecer unas
bases que resultarán muy útiles para los siguientes ejemplos que irán apareciendo
durante el resto del curso. No te preocupes si no comprendes nada al principio, pues me
encargaré de irte enseñando cada cosa y así estaremos mejor, si no entiendes algo o
crees que me faltó explicar alguna cosa, dímelo, para eso está la sección de comentarios
al final de cada contenido, por ahí nos estaremos comunicando.

El programa que vamos a realizar simplemente le dará a una variable el valor del
resultado de sumar 5 + 5, cabe resaltar que en pantalla no se muestra nada por lo que la
ejecución del programa será prácticamente instantánea

Este es nuestro programa:

int main() { int numero; numero = 5 + 5; return 0; }

Nuestro primer código, consta de 7 líneas, las cuales te explicaré una por una a
continuación:

Línea 1:

Nuestra primer línea contiene el llamado a la función main, la función main(), es la más
importante de todas la funciones (es la madre del programa jejeje), pues es esta la que
nuestro compilador buscará para iniciar la ejecución de nuestro código, si esta función
falta, nuestro programa no podrá arrancar, pues no sabrá desde donde hacerlo. La
función main, como cualquier otra debe tener un tipo, es decir debe tener indicado cual
es el valor que esta va a retornar al final, los tipos de las funciones pueden ser, enteros
(int), decimales simples(float), decimales dobles(double), booleanos(bool), vacíos
(void) entre algunos más. La función main, puede ser cualquiera de estos, pero por
acuerdo, se coloca siempre como entera (int) y siempre retornara 0 (luego hablaré de
esto). En ocasiones (dependiendo del compilador), se puede poner como void (vacía) y
por lo tanto no se puede usar un return, aunque no es recomendable, simplemente por
claridad y evitar errores con compiladores más tradicionales.

Línea 2:

La línea 2 contiene una llave abriendo "{", en C++, se usan las llaves tanto para indicar
el comienzo como el final de cada función, sea cual sea, es decir sea la función main o
cualquiera que tu hayas inventado, debe comenzar con una llave abriendo y terminar
con una cerrando (tiene sentido ¿no?). Es por esto, que esta llave se encuentra ahí,
indicando el inicio de nuestra función main.
Línea 3:

Esta línea, contiene la declaración de una variable llamada numero, presta especial
atención a esta línea, pues es muy sensible a errores al momento de codificar, esta línea
contiene primero el tipo de nuestra variable, en este caso es entera (int) pero podría ser
alguna de las que mencione anteriormente o cualquier otra, lógicamente valida. Esta
línea es sensible, porque tanto en C como en C++ los nombres de las variables son
sensibles a las mayúsculas y a las minúsculas, es decir, para C o C++ la variable numero
y la variable Numero, son dos variables totalmente distintas o la variable Numero y la
variable NuMeRo, debes tener cuidado en no mezclar mayúsculas y minúsculas, así que
acostúmbrate a escribir normalmente en minúsculas. Otro detalle de esta tercera línea es
el punto y coma ";" en C y C++ el punto y coma indican el final de una sentencia (no
una sentencia de muerte o algo así, ¡no te distraigas!), una sentencia es una línea de
código, en la cual se realiza algún tipo de operación, asignación, comparación o
declaración (fíjate! todas terminan en "cion") por ejemplo la línea 3, 5 y 6, son líneas de
sentencia. Así que cada que realices cualquier operación en una línea, esta debe termina
con punto y coma, de lo contrario tendrás errores en tu código. Ten en cuenta que la
línea 1, no es una sentencia, pues aunque allí se está aparentemente declarando a la
función main, no es así, pues el int que hay antes del main() nos indica el tipo de valor
que debe retornar nuestra función, mas no exactamente el tipo que es nuestra función,
por esto no se usa el punto y coma en al línea 1 (ojo! no estoy diciendo que cuando se
declare una función no se use punto y coma, no te enredes con esto, en la línea 1
simplemente se está implementando la función main, mas adelante lo comprenderás,
confía en mi).

Línea 4:

La línea 4 no tiene nada especial, es simplemente un campo vacío, no genera ningún


tipo de cambio para el compilador, pero nos permite ordenar un poco nuestro código.
Quizá si eres curioso intenta eliminar todos los saltos de línea dejando todo el código en
una sola línea y veras que pasa (nada malo te lo aseguro), así confirmaras tu mismo lo
que dije acerca de los espacios en blanco.

Intenta algo como lo siguiente y me dices que pasa jeje:

int main(){int numero;numero = 5 + 5;return 0;}

Línea 5:

Esta línea contiene una operación, por lo tanto es una línea de sentencia (mira que
termina con punto y coma), en esta línea, estamos dándole o mejor dicho, asignándole
un valor a la variable numero, que ahora tendrá el valor de la operación matemática 5 +
5 es decir, la variable numero valdrá 10. Ahora que hablo de asignación, quiero
explicarte algo que en ocasiones suele confundir y es que en C++ hay dos operadores
similares pero no idénticos que son el igual "=" y el doble igual "==", en C++ el igual
solo "=" se usa para asignación, es decir para darle a una variable el valor de otra o el
valor de una operación especifica como por ejemplo 5 + 5, mientras que el operador de
doble igual "==" se usa para comparación, es decir para comparar si el valor de una
variable es igual a otro, por ejemplo: escribir numero = 5 + 5; es válido, pero escribir
numero == 5 + 5; nos genera un error de sintaxis, las acciones que realiza cada
operación son distintas, la primera, le asigna el valor que tenga el resultado de 5 + 5
(osea 10 jeje) a la variable "numero" mientras que la segunda verifica si el valor de la
variable "numero" es igual o no a 10. Si no entiendes bien esto último, no te preocupes,
mas adelante lo veremos con más detalle. Recuerda que recién estamos comenzando, así
que no te preocupes si no entiendes mucho, te aseguro que al finalizar este curso sabrás
bien todo esto.

Línea 6:

La línea 6 es otra línea de sentencia, y esta nos indica por medio del return lo que la
función debe retornar, en este caso, nos está diciendo que la función main(), deberá
retornar cero cada vez que termine, en realidad la función main podría retornar
cualquier cosa o incluso nada (void), podría retornar cualquier tipo de variable o incluso
la variable numero misma, pero se ha establecido por acuerdo que siempre debería
retornar 0, pues dado el caso en que retorne otro valor estando la sentencia return 0;
dentro de ella, esto implicaría que hay algún error en la ejecución del programa. Aquí
está la importancia de poner al main retornando un valor de tipo int.

Línea 7:

Finalmente nuestra línea 7 contiene la llave cerrando, esto nos indica que es el fin de la
función main y por tanto el fin de la ejecución de nuestro programa (donde termina el
main, termina todo), cada que nuestro compilador llega a la llave de cierre de la función
main, dará por concluido el proceso de nuestra aplicación, por lo tanto, cualquier línea
que esté por debajo de esta llave de cierre no será ejecutada, a menos que se indique lo
contrario dentro de la función main.

Sistema de tipos de datos en C++.


Números, textos, booleanos, variables y
constantes
La intención principal de esta sección es dar una introducción a lo que se refiere al
sistema de tipos de C++, las variables en C++. Hablaremos específicamente acerca de
los tipos de datos o variables más comunes, sus características generales, su utilidad,
entre otras cosas. En la primera sección hablaremos con detalle acerca de variables y
tipos primitivos en C++ y en la segunda sección hablaremos también con detalle acerca
de constantes y modificador const y #define en C++, pero eso será en cada sección, por
lo que a este artículo corresponde, solo veremos conceptos generales y una introducción
al sistema de tipos de C++, así que comencemos.
Como podrás imaginar C++ posee una buena cantidad de tipos de datos, sin embargo de
una manera más general, algunos de estos son más sencillos simples de usar que otros.
Veamos:

Tipos nativos o primitivos de C++


Los tipos nativos de C++, son los tipos de datos "fáciles de usar" es decir, como
veremos un poco más adelante en la sección de tipos primitivos. Los tipos primitivos
como su nombre lo da a entender, son los tipos de datos más básicos y simples del
sistema de tipos de C++ y por ello es bastante fácil usarlos.

Cabe mencionar que C++ es un lenguaje orientado a objetos y posee una cantidad
enorme de librerías o bibliotecas que podemos usar, estas librerías nos proporcionan una
serie de tipos de datos adicionales que son de enorme utilidad. Sin embargo, estos tipos
ya no son tipos de datos primitivos sino que son tipos complejos y por ende van a
poseer una serie de campos y funcionalidades adicionales que no poseen los tipos
primitivos, pero no te preocupes por esto, en la sección de librerías o bibliotecas de C++
hablo un poco de cómo se usan y los tipos de dato que proporcionan. Luego, en la
sección de objetos y clases, hablaré con más detalle al respecto.

Muy bien, esto ha sido todo en esta sección, ya debes saber que en C++ existen tipos
primitivos y tipos de datos complejos que podemos usar por medio de librerías o
bibliotecas que incluimos en nuestros proyectos.

Variables y constantes en C++.


Asignación de valores, uso de #define y
const en C++
Las variables son altamente imprescindibles al momento de programar, de hecho sería
imposible conseguir una aplicación con una funcionalidad básica sin usar variables; por
esta misma razón es necesario aprender a usarlas bien y lo tenemos muy fácil, pues su
uso es bastante sencillo e intuitivo, tanto para declararlas como para asignarles valores.

Las variables son posiciones en memoria donde estarán guardados los diferentes valores
que le damos o que toman duranet ejecución los datos que usamos y normalmente
estarán disponibles a lo largo de la ejecución de nuestro programa. Para asignar valores
a una variable en una gran variedad de lenguajes que incluye a C++ se usa el operador
"=" seguido del valor que le daremos a la variable (no todos usan el "=" para esto).
Veamos un ejemplo completo con todos los posibles usos que le damos a una variable.

#include <iostream> using namespace std; int main() { char x = 'a'; //


Declaramos y asignamos en la misma línea int num; //Declaramos el
entero en una línea num = 5; //Le asignamos un valor en otra línea int
num2 = 8; //Asignacion y declaracion al tiempo float numero; //Un
numero decimal numero = 3.5; //Le asignamos un valor al decimal float
res = numero + num2; //Sumamos dos variables y las asignamos a res
//3.5 + 8 = 11.5 res = res + num; //Al valor actual de res le sumamos
el valor de num //11.5 + 5 = 16.5 bool valor = false; //Variable
booleana valor = true; // Pueden ser true o false res = res*2;
//Duplicamos el valor de res 16.5*2 = 33 cout << res << endl;
//Mostramos el valor de res por pantalla return 0; }

En el código anterior hemos visto las multiples formas en que se puede declarar una
variable, cómo asignarle un valor, incluso vimos que es posible asignarle el valor de una
variable a otra, o realizar operaciones entre los valores de variables y asignar el
resultado a una variable nueva, vimos que es posible usar el valor de una misma
variable y cambiar su propio valor (res = res*2).

Ahora hablemos de las constantes en C++.

Constantes en C++, const y #define


Las datos constantes, mal llamadas por algunos "variables constantes" (realmente no
son variables) tienen un valor fijo durante toda la ejecución del programa, es decir, este
valor no cambia ni puede ser cambiado a lo largo de la ejecución de nuestro programa.
Las constantes son muy útiles para especificar el tamaño de un vector y para algunas
otras cosas, como facilidad de uso y confiabilidad del código. Para declarar una
constante, se hace despues de declarar las librerías y antes de las funciones, la sintaxis
es la siguiente: #define nombre_constante valor. Veamos algunos detalles y luego unos
ejemplos sencillos del uso de las constantes en C++

En C++ se pueden definir constantes de dos forma, ambas válidas para nosotros. La
primera es por medio del comando #define nombre_constante valor y la segunda es
usando la palabra clave const, veamos ahora cada una de estas formas en detalle.

Uso de #define para declarar constantes en C++


La instrucción #define nos permite declarar constantes (y algunas cosas más) de una
manera rápida y sencilla. Hay que tener en cuenta que al declarar constantes con
#define debemos hacerlo despues de los #include para importar librerías pero antes de
declarar nuestras funciones y demás. Veamos un ejemplo:

Ejemplo de uso de #define en C++ para declarar constantes

#include <iostream> using namespace std; #define PI 3.1416;


//Definimos una constante llamada PI int main() { cout << "Mostrando el
valor de PI: " << PI; return 0; }

Notemos que ha sido bastante fácil, sin embargo no todo es bueno. Realmente al usar la
instrucción #define en C++ no estámos creando una constante realmente, estamos
creando una expresión y por tal motivo hay algunas cosas que se complican, veamos:

#include <iostream> using namespace std; #define PI 3.1416;


//Definimos una constante llamada PI int main() { cout << "Mostrando el
valor de PI: " << PI << endl; return 0; }

Si intentamos ejecutar el código anterior obtendremos un error al haber usado el


operador << justo despues de PI, esto sucede porque PI no es tratado exactamente como
una variable cualquiera sino como una expresión, así que realmente aunque podemos
usar #define para declarar constantes no es la mejor opción.

Veamos ahora cual es realmente la forma más adecuada de declarar constantes en C++,
esto se hace por medio de la instrucción const, veamos:

Uso de const para declarar constantes en C++


La instrucción const nos permite declarar constantes de una manera más adecuada y
acorde. Las constantes declaradas con const poseen un tipo de dato asociado (como
debería ser siempre) y se declaran al interior de nuestro código como un tipo cualquiera.
Veamos un ejemplo:

Ejemplo de uso de const en C++ para declarar constantes

#include <iostream> using namespace std; int main() { const float PI =


3.1416; //Definimos una constante llamada PI cout << "Mostrando el valor
de PI: " << PI << endl; return 0; }

Notemos que de igual forma ha sido bastante fácil y mejor aún ha sido mucho más
intuitivo y sencillo para nosotros. Se puede ver que la declaración es muy similar a la de
una variable cualquiera y que ya no tenemos complicaciones al intentar añadir la
instrucción endl para agregar el salto de línea. Veamos que realmente la variable no
puede cambiar:

#include <iostream> using namespace std; int main() { const float PI =


3.1416; //Definimos una constante llamada PI cout << "Mostrando el valor
de PI: " << PI << endl; PI = 2; //Esto generará un error pues PI es de
solo lectura (constante) return 0; }

Si intentamos ejecutar el código anterior obtendremos un error al intentar cambiarle el


valor a PI, pues lo hemos definido como una constante y el lenguaje no nos permitirá
cambiarle en ningún momento el valor.

¿Cuándo usar una variable o una constante en C++?

En general, la definición de variable y constante nos da una muy buena idea de cuándo
usar una u otra. Básicamente, si un valor puede cambiar en cualquier momento (aunque
la probabilidad de que eso suceda sea baja) entonces deberá ser una variable, en lugar de
una constante.

Un ejemplo para soportar lo anterior sería el nombre del usuario. Podríamos pensar que
un nombre no va a cambiar, y es probable que no lo haga. Sin embargo nada nos
asegura que así sea, pues aunque es improbable es posible. Adicionalmente, nuestro
programa puede cambiar de usuario y por ende su nombre podría variar mientras el
programa se ejecuta. Por lo tanto NO debería ser una constante.

Por otro lado, hay valores que no van a cambiar a lo largo del tiempo. Por ejemplo, la
velocidad de la luz se ha acordado siempre como la misma, así que debería ser una
constante para evitar que sea cambiada de cualquier modo durante la ejecución del
programa. Valores como el número PI, el código de estado de una página no existente
(404), son valores que son convenciones existentes y que NO deberían cambiar, por lo
cual se los declara como constantes.

Finalmente, el uso de constantes en C++ (y en cualquier otro lenguaje de programación)


ayuda mucho a mejorar la comprensión del código que escribimos pues no es lo mismo
que nuestro código ponga: if (velocidad == 299792458)

A que diga

if (velocidad == VELOCIDAD_LUZ)

Pues en el segundo caso, queda muy claro que estamos comparando la variable
velocidad con la de la luz que es una constante. Por supuesto, anteriormente tendríamos
que haber declarado la constante VELOCIDAD_LUZ con su respectivo valor (tal como
se explicó anteriormente).

Entrada y salida de datos en C++. Uso de


cin, cout, scanf y printf
La entrada y salida de datos en C++ es simple (al menos para los casos más comunes).
Con esto hago una comparación entre C++ y Java, pues leer una entrada del usuario por
teclado en C++ es bastante simple mientras que en Java implica una serie de conceptos
adicionales que la hacen un tanto más complicada. Por suerte para nosotros en esta
sección veremos cómo leer por teclado en C++, en otras palabras, asignar a una variable
el valor que el usuario escriba por el teclado. Adicional a esto veremos también cómo
mostrar texto por pantalla en C++, es decir, salida de datos.

Vamos a comenzar primero con aprender a mostrar texto por pantalla en C++. Este
orden se debe a que cuando queremos pedirle algún dato al usuario primero debemos
hacerle saber lo que queremos que ingrese y para hacérselo saber debemos mostrarle un
mensaje con las indicaciones, por tal motivo es importante primero saber mostrar texto
en pantalla en C++ y luego a leer texto por teclado en C++.

Salida de texto por pantalla en C++


Mostrar texto por pantalla en C++ es muy simple. Para imprimir una salida de texto en
C++ se hace uso de la instrucción cout, junto con <<. Es importante tener en cuenta que
la instrucción cout siempre va acompañada de << para controlar el flujo de datos que
sale. No te fijes mucho en ellos, solo ten siempre presente que cout viene acompañado
de << para tener cout << como resultado.

Veamos algunos ejemplos para mostrar texto por pantalla en C++:


Ejemplo 1 de impresión de texto por pantalla en C++, usando cout

#include "iostream" using namespace std; int main() { //Se muestra un


mensaje por pantalla. cout << "Hola Mundo" << " Desde ProgramarYa." <<
"\n"; return 0; }

El ejemplo que acabas de ver es bastante sencillo, excepto por un detalle. Si ejecutar
este código en tu pantalla aparecerá un mensaje diciendo "Hola Mundo Desde
ProgramarYa.". Tal como habrás notado el operador "<<" se usa para concatenar (unir)
dos cadenas de texto por eso el resultado es el obtenido. Luego se usa "\n" lo cual crea
un salto de línea. No es obligatorio pero es recomendable.

Ejemplo 2 de impresión de texto por pantalla en C++, usando cout

#include "iostream" #include "string" using namespace std; int main() {


//El valor de esta variable se mostrará en pantalla string salida1 =
"Ejemplo de salida"; //Este valor también se mostrará en pantalla. int
numero = 2; //Estos valores se concatenarán en una única salida string
salida2 = "Desde ProgramarYa."; //Se concatenan y muestran los valores
por pantalla con cout<< cout << salida1 << " " << numero << ". " <<
salida2 << "\n"; return 0; }

En este ejemplo de salida por pantalla hemos visto que también es posible usar la
instrucción cout para mostrar en pantalla el valor de las variables así sean numéricas o
cadenas de texto. También vimos que podemos concatenar los valores de esas variables
entre sí y también concatenarlas con otros valores directamente (espacios, puntos,
símbolos, etc.).

Ahora, veamos los mismos ejemplos, pero usando la función printf de C++, la cual
también es útil para imprimir valores por pantalla

Ejemplo 1 de impresión de texto por pantalla en C++, usando printf

#include "iostream" using namespace std; int main() { //Se muestra un


mensaje por pantalla. printf("Hola Mundo"); printf(" Desde
ProgramarYa."); printf("\n"); //Alternativamente printf("Hola Mundo Desde
ProgramarYa.\n"); return 0; }

Como puedes ver, al ejecutar el código, el resultado sería el mismo del ejemplo de cout:
"Hola Mundo Desde ProgramarYa", con su respectivo salto de línea al final. Sin
embargo, el código es bastante diferente, pues printf no nos permite concatenar valores
directamente en un solo llamado, así que debemos hacer llamadas sucesivas para
imprimir cada parte del mensaje. Por supuesto, podrías simplemente hacer un solo
llamado a printf con el mensaje completo y sería mucho más sencillo.

Adicionalmente, los llamados a printf requieren que los valores estén al interior de los
paréntesis (), pues printf es más una función que una instrucción propia de C++.

Es cuestión de gustos, pero siempre me ha parecido que cout simplifica bastante las
cosas. Veamos ahora el segundo ejemplo usando printf, porque la cosa se complica:
Ejemplo 2 de impresión de texto por pantalla en C++, usando printf

#include "iostream" #include "string" using namespace std; int main() {


string salida1 = "Ejemplo de salida"; //El valor de esta variable se
mostrará en pantalla int numero = 2; //Este valor también se mostrará
en pantalla. string salida2 = "Desde ProgramarYa."; //Estos valores se
concatenarán en una única salida //Se concatenan y muestran los
valores por pantalla con parámetros de printf printf("%s %d. %s \n",
salida1.c_str(), numero, salida2.c_str()); return 0; }

En este ejemplo usando printf, puedes ver que inicialmente todo es igual, pero al
momento de imprimir, todo cambia. Cuando nec esitas pasar valores a printf, lo haces
con un "%" seguido de una letra. En el caso de un string se usa s (%s) y en el caso de un
número, se usa d (%d). Y luego, se pasa como una serie de argumentos, cada uno de los
valores a usar en ese mismo orden.

Ahora bien, la cosa es aún más compleja en el caso de string, porque printf no soporta el
uso de string, así que debemos pasar es un apuntador a una seria de char. Por suerte, eso
se consigue llamando a la función "c_str()" propia de string.

Ya tenemos claro cómo mostrar texto por pantalla en C++ ahora haremos uso de este
concepto y veremos cómo leer texto por teclado en C++. Veamos:

Entrada o lectura de datos en C++


Tal como mencioné hace un momento, la lectura de datos en C++ es bastante simple.
Leer datos por teclado en C++ se hace usando el comando cin >> es importante notar el
uso de los dos signos >> que son usados para controlar el flujo de datos. No te
preocupes mucho por ellos, solo ten en cuenta que cada vez que vaya a usar la
instrucción cin debes agregarle >> para quedar con un cin>>. Una manera muy sencilla
de recordar esta instrucción es que in significa entrar y como estamos programando en
C++ le añadimos la letra C al comienzo quedando así cin>> (sin olvidar los >>).

Veamos unos ejemplos simples para leer datos en C++. Recuerda como dije más arriba
que lo ideal para leer datos es indicarle al usuario qué es lo que esperamos que ingrese
por lo que en estos ejemplos usaremos también lo recién aprendido (mostrar texto por
pantalla).

Ejemplo 1 de lectura de datos en C++, usando cin

#include "iostream" #include "string" using namespace std; int main() {


cout << "Hola! Este es un ejemplo en C++" << "\n" << "Por favor ingrese
su nombre:" << "\n"; //La instrucción \n es un salto de línea
Mostrando los textos separados string nombre;//En esta variable estará
almacenado el nombre ingresado. cin >> nombre; //Se lee el nombre cout
<< "Bienvenido al sistema " << nombre << ". Gracias por usar nuestra
aplicación" << "\n"; return 0; }

En este ejemplo hemos hecho un pequeño sistema de bienvenida personalizado para el


usuario leyendo el valor por teclado de su nombre. En el comando cin>> se debe poner,
después de >>, el nombre de la variable en la cual se almacenará el valor que el usuario
ingrese. Por tal motivo primero se declaró una variable llamada nombre y luego se usó
cin >> nombre indicando que lo que el usuario ingrese se almacenará en dicha variable.

Ejemplo 2 de lectura de datos en C++, usando cin

#include "iostream" #include "string" using namespace std; int main() {


//Mensaje de bienvenida cout << "Hola! Aqui podras realizar sumas" <<
"\n"; //Se declaran los números que se sumarán (pueden ser decimales)
float numero1, numero2; //Se pide el primer numero cout << "Por favor
ingrese el primer valor: " << "\n"; //Se asigna el primer valor a
numero1 cin >> numero1; //Se pide el segundo numero cout << "Por favor
ingrese el segundo valor: " << "\n"; //Se asigna el segundo valor a
numero2 cin >> numero2; //Se muestra el resultado. cout << numero1 << "
+ " << numero2 << " = " << numero1 + numero2; return 0; }

Acá tienes un caso similar al anterior, pero en esta ocasión se están solicitando números
y luego realizando operaciones matemáticas con ellos.

Vamos ahora a hablar un poco del uso de scanf para leer valores y algunas dificultades
que esto presenta.

Uso de scanf para leer valores y cadenas de texto (string) en C++

El operador scanf al igual que printf fueron ideados para el lenguaje C (no para C++),
por lo cual su uso es más primitivo y, en cierto modo, complejo. Leer datos con scanf
implica comprender un poco el concepto de punteros y particularmente en el caso de
string (que es una librería de C++) se complica aún más, pues debemos convertir ese
string en un array definido de caracteres (char).

Vamos a ver un único ejemplo sobre el uso de scanf y string en C++ para quedar claros
acerca de estas dificultades

#include "string" using namespace std; int main() { char temporal[100];


printf("Tu nombre?\n"); scanf("%100s", temporal); string nombre =
temporal; printf("Te doy la bienvenida %s", nombre.c_str()); return 0; }

Como puedes ver, necesitamos seguir usando la sintaxis tipo "%s" para leer una serie de
caracteres, pero en esta ocasión debimos además especificar el tamaño del mismo (100).
Adicionalmente, en los siguientes argumentos de scanf, pasamos entonces el nombre de
la variable a la cual asignar el valor ingresado por el usuario

Ahora, es un código un tanto curioso. Y siendo sincero, el uso de string es


completamente innecesario en ese código (por desgracia). Tanto scanf como printf nos
obligan a usar tipos muy primitivos, como char, así que si queremos usar string es poco
lo que podemos hacer, pues aunque en nuestro código finalmente hemos usado string,
en realidad se trata de un array de 100 caracteres (char) disfrazado.

El código funciona y te permitirá entonces leer valores por medio de scanf y asignarlos
a una variable. Esto funciona muy bien con números, pero con string o básicamente en
este caso un array de caracteres, debemos lidiar con tamaños constantes (como el 100
que tenemos allí).

Algunas recomendaciones y comentarios al leer y


escribir datos en C++
 Primero que todo, aunque los puedes usar, no recomiendo para nada el uso de scanf y
printf, pues complican demasiado el código y pierdes mucha flexibilidad. En realidad,
tanto scanf como printf son de C y no de C++, así que deberías usar siempre cout y cin
en lugar de printf y scanf (respectivamente), no tienes razones para complicarte la vida
sin necesidad.
 Finalmente, recuerda siempre que cin va acompañado de ">>", mientras que cout usa
"<<" (notar que van en sentido contrario). EN realidad, cin dirige el flujo de dastos
hacia la variable (por ello va a la derecha ">>"), mientras que cout lo dirige hacia la
salida del sistema (por eso va hacia la izquierda "<<".
 Una vez más, el uso de printf y scanf no es recomendable, porque además de ser
bastante más complejos, pueden incluso acarrear a problemas de seguridad en tus
programas. La complejidad de estas librerías es simplemente innecesaria en los
tiempos actuales.

Los condicionales en C++. Uso


declaración y sintaxis en C++
Los condicionales en C++, son una estructura de control esencial al momento de
programar y aprender a programar. Tanto C como C++ y la mayoría de los lenguajes de
programación utilizados actualmente, nos permiten hacer uso de estas estructuras parea
definir ciertas acciones condiciones especificas en nuestro algoritmo. Un condicional,
permite establecer una serie de condiciones al interior de nuestro programa, que nos
ayudan a determinar que acciones llevará cabo dadas ciertas circunstancias, por ejemplo
si queremos decidir cuándo dar acceso a un usuario, dependiendo de si el nombre de
usuario y contraseña son correctos, para algo como esto, es útil un condicional, nos
permite verificar si determinada condición se cumple (en este caso si la contraseña y el
nombre de usuario son correctos) y de acuerdo a que se cumpla o no, llevar a cabo un
conjunto de acciones. Los condicionales aumentan la "expresividad" de un software, es
decir nos permiten considerar diferentes situaciones con antelación, evitando o
permitiendo sortear diferentes tipos de situaciones que son del interés de nuestra
aplicación.

Existen diferentes tipos de condicionales, cada uno tiene una utilidad y funcionalidad
diferente, que consideran diferentes situaciones que se pueden llegar a presentar durante
la ejecución de un algoritmo. Depende entonces del conocimiento que tengamos acerca
de cada uno de los condicionales saber determinar correctamente cuando es necesario
implementar uno u otro. Tenemos a nuestra disposición los siguientes tipos de
condicionales en C++:

 Condicional If en C++
 Condicional if-else en C++
 Condicional Switch en C++
Como mencioné anteriormente, cada uno de estos condicionales tiene ciertas
características que lo hacen útil para algunos casos específicos, a lo largo de los
contenidos de esta sección veremos cada uno de estos al detalle, aprendiendo durante el
proceso los componentes de un condicional, sintaxis de los condicionales y esas
características particulares que permiten decidir cual usar en qué momento, veremos
también el concepto de condicionales anidados, y algunas otras cositas

Te recuerdo, que aunque intentaré profundizar bastante en cada concepto, lo haré


enfocándome hacia el uso de los condicionales en el lenguaje C++ y no tanto hacia la
parte de la lógica de estas estructuras condicionales en particular, si tienes problemas
con la correcta comprensión de la lógica y utilidad de cualquier tipo de condicional o de
los condicionales en general, te invito a que primero leas la sección de Fundamentación
de los Condicionales, en dicha sección podrás comprender correctamente el
funcionamiento de un condicional y de cada tipo de estos y posteriormente podrás
regresar a esta sección para aprender a implementar un condicional en C++ de manera
mucho mas fácil y adecuada.

Nota: Al final de cada contenido de esta sección, incluiré varios videos en los que
mostraré algunos ejemplos de aplicación de los conceptos que se expliquen en cada
componente, recuerda también dejar tus comentarios al finalizar cada contenido para
seguir enriqueciendo cada uno de estos con los aportes particulares de todos.

Condicional if en C++. Declaración, uso y


sintaxis del if en C++
Los condicionales if, son una estructura de control condicional, también llamadas
estructuras selectivas de casos simples (porque solo definen un posible flujo), lad cuales
nos permiten tomar cierta decisión al interior de nuestro algoritmo, es decir, nos
permiten determinar qué acciones ejecutar según cierta condición sea verdadera, por
ejemplo determinar si un número cualquiera es mayor que 10 y de acuerdo a esto
mostrar un mensaje (o cualquier acción que sea necesaria).

Básicamente, un condicional if, es una estructura que nos posibilita definir las acciones
a ejecutar si se cumple cierta condición y de ese modo modificar la ejecución de tareas
en un programa según se necesite.

¿Cómo funciona un Condicional If?


Para comprender mejor cómo funciona el condicional if, una muy buena forma es
partiendo de un ejemplo. Supongamos que queremos verificar si el resultado de una
suma ingresada por el usuario es correcto o no. Para este ejemplo, el condicional if, es el
encargado de verificar si el resultado ingresado corresponde o no a la respuesta correcta
de la suma. El condicional if, funciona verificando la condición ingresada y de acuerdo
a su valor de verdad (falso o verdadero) lleva a cabo o no una serie de instrucciones.

Espero haber sido claro, sino, no te preocupes, pues veremos ya mismo algunos
ejemplos para entender todo mejor.
Sintaxis del Condicional If en C++:
La sintaxis de un condicional if, es bastante simple e incluso creo que intuitiva. Vamos
entonces a ver rápidamente como es la estructura para ir luego a unos ejemplos y quedar
bien claros. Veamos:

if(condición a evaluar) //Por ejemplo X <= 10 { .... .... Bloque de


Instrucciones si se cumple la condición.... .... .... } .... Bloque de
Instrucciones restante DEL ALGORITMO.... ....

Vamos ahora a ver línea por línea el anterior código para comprender todo y quedar
claros. Posteriormente veremos un ejemplo con valores reales.

Línea 1:

En esta línea está prácticamente todo lo esencial del condicional, aquí le hemos dicho al
interior del argumento del condicional if, cual es la condición que se debe cumplir para
que se ejecute el primer bloque de instrucciones, esta línea es en efecto esencial ya que
nos da la pauta para que el algoritmo determine si ejecutará o no el bloque de
instrucciones al interior de las llaves.

Línea 2:

En la línea 2 tenemos una llave abriendo "{" lo cual como seguramente ya sabrás indica
que allí comienza el bloque de instrucciones que se ejecutarán si se cumple la condición
dada. Esta llave no es del todo obligatoria, sin embargo si no la ponemos solo se
ejecutara dentro de nuestro ciclo la primera línea inmediatamente posterior a la
declaración del condicional, de modo que si deseamos que se ejecuten varias líneas
dentro de nuestro condicional, debemos usar las llaves

Línea 3 a 7:

En estas líneas es donde estarán todas las operaciones que queramos llevar a cabo en
caso de cumplirse la condición, este bloque podrá tener la cantidad de líneas necesarias
incluso, como veremos más adelante dentro de estas podría haber uno o más
condicionales en su interior, así que podrías tener lo que se conoce como condicionales
anidados (ya veremos eso más adelante).

Línea 8:

En esta línea hacemos uso de la llave cerrando "}", una vez más como seguramente ya
sabrás esta nos indica que allí termina el bloque del condicional y se dará por terminada
la ejecución de este para continuar ejecutando el resto del programa.

Línea 9 a 11

Estas líneas contienen la estructura restante del algoritmo, quise ponerlas allí, para que
quede claro que sin importar si la condición se cumple o no, el algoritmo siempre va a
ejecutar estas líneas, es decir las líneas que se encuentran después de la llave de cierre
de un condicional, siempre se ejecutarán sin importar si la condición se cumpla o no.
No te preocupes si no comprendiste muy bien lo que acabo de escribir, estoy seguro que
con un par de ejemplos que veremos a continuación, te va a quedar todo claro

Ejemplos de Condicional If-else en C++


A continuación vamos a ver unos cuantos ejemplos para comprender de manera
adecuada el uso de los condicionales if en c++, recuerda que si no comprendes alguno
de estos ejemplos o tienes alguna pregunta o sugerencia sobre estos o cualquier
contenido de la sección, puedes dejarlas en la sección de comentarios

Ejemplo 1: Verificación de valores en C++

Vamos a retomar el ejemplo anterior, deseábamos un sistema, en el cual un usuario nos


ingresaba el resultado de una suma mostrada en pantalla y verificábamos si el resultado
ingresado era el correcto a esta operación. EN caso de ser correcto, el sistema muestra
un mensaje de felicitación.

Solución Ejemplo 1:

Debemos entonces determinar cuál va a ser nuestra condición a evaluar, en este


ejemplo, la condición debe ser que la respuesta ingresada, sea igual al resultado de la
suma, veamos entonces como realizar esto:

Efectivamente, los condicionales son extremadamente útiles pues permiten definirle a


nuestro software múltiples vías de ejecución contemplando así todas las posibilidades
durante la ejecución. Espero que todo te haya quedado claro en esta sección.

Condicional if else en C++. Declaración


uso y sintaxis del if else en C++
Los condicionales if-else, son una estructura de control, que nos permiten tomar cierta
decisión al interior de nuestro algoritmo, es decir, nos permiten determinar que acciones
tomar dada o no cierta condición, por ejemplo determinar si la contraseña ingresada por
el usuario es válida o no y de acuerdo a esto darle acceso al sistema o mostrar un
mensaje de error.

Se les conoce también como estructuras selectivas de casos dobles (porque definen
ambas posibilidades en la ejecución --si se cumple y si no se cumple --).

En resumen, un condicional if-else es una estructura que nos posibilita definir las
acciones que se deben llevar a cabo si se cumple cierta condición y también determinar
las acciones que se deben ejecutar en caso de que no se cumpla; generando así una
separación o bifurcación en la ejecución del programa, ejecutando ciertas acciones u
otras a partir de la evaluación de una condición dada.

¿Cómo funciona un Condicional If-Else?


Para comprender mejor cómo funciona el condicional if-else, una muy buena forma es
partiendo de un ejemplo. Imaginemos que en nuestro programa, deseamos implementar
un sistema de logeo de usuario, comprobando si la información suministrada coincide
con unos los valores correctos y en este caso mostrar un mensaje de bienvenida, y en
caso de que no, se mostrará un mensaje de error. Como podemos imaginar, es entonces
necesario hacer que nuestro algoritmo, tome una decisión, de acuerdo a los valores
ingresados por el usuario, y definir los dos casos posibles en caso de fallo o en caso de
que no. Es para esto que sirve el condicional if-else, nos permite definir una condición
que se debe cumplir y de acuerdo a su cumplimiento o no tomar una acción
correspondiente. Espero haber sido claro, sino, no te preocupes, pues veremos ya mismo
algunos ejemplos para entender todo mejor.

Sintaxis del Condicional If-Else en C++:


La sintaxis de un condicional if-else, es en principio similar a la del condicional if, pero
adicionando una nueva "estructura" que es el else, el cual indica la acción o conjunto de
acciones a llevar a cabo, en caso de que la condición del if no se cumpla. Cabe resaltar
que el else siempre se pone inmediatamente después del if, en caso de ser necesario, el
else es incapaz de funcionar por sí solo, siempre debe ir acompañado por un if. Veamos
entonces como es la sintaxis de este:

if(condición a evaluar) //Por ejemplo 50 <= 10 { .... .... Bloque de


Instrucciones si se cumple la condición.... .... .... } else
{ .... .... Bloque de Instrucciones si NO se cumple la
condición.... .... .... }

Vamos ahora a ver línea por línea el anterior código para comprender todo y quedar
claros. Posteriormente veremos un ejemplo con valores reales.

Línea 1:

En esta línea está prácticamente todo lo esencial del condicional, aquí le hemos dicho al
interior del argumento del condicional if, cual es la condición que se debe cumplir para
que se ejecute el primer bloque de instrucciones, esta línea es en efecto esencial ya que
nos da la pauta para que el algoritmo determine que bloque de instrucciones ejecutar.
Línea 2:

En la línea 2 tenemos una llave abriendo "{" lo cual como seguramente ya sabrás indica
que allí comienza el bloque de instrucciones que se ejecutarán si se cumple la condición
dada. Esta llave no es del todo obligatoria, sin embargo si no la ponemos solo se
ejecutará dentro de nuestro condicional la primera línea inmediatamente posterior a la
declaración del condicional, de modo que si deseamos que se ejecuten varias líneas
dentro de nuestro condicional, debemos usar las llaves

Línea 3 a 7:

En estas líneas es donde estarán todas las operaciones que queramos llevar a cabo en
caso de cumplirse la condición, este bloque podrá tener la cantidad de líneas necesarias
incluso, como veremos más adelante dentro de estas podría haber uno o más
condicionales en su interior, así que podrías tener todo un condicional dentro de un
condicional dentro de otro condiconal... y así sucesivamente jejeje.

Línea 8:

En esta última línea hacemos uso de la llave cerrando "}", una vez más como
seguramente ya sabrás esta nos indica que allí termina el bloque del condicional y se
dará por terminada la ejecución de este para continuar ejecutando el resto del programa,
cabe notar que esta línea dará paso a la ejecución del bloque de instrucciones del else,
en caso de que la condición dada no se haya cumplido.

Línea 9 a 16

Estas líneas contienen la estructura else, que es la que indica que existe un bloque de
instrucciones que se debe ejecutar en caso de que la condición dada no se cumpla. Este
bloque al igual que el del condicional if, se abre y se cierra con llaves, recuerda que
estas pueden ser opcionales, sin embargo siempre recomiendo usarlas como una buena
práctica de programación.

No te preocupes si no comprendiste muy bien lo que acabo de escribir, estoy seguro que
con un par de ejemplos que veremos a continuación, te va a quedar todo claro

Ejemplos de Condicional If-else en C++


A continuación vamos a ver unos cuantos ejemplos para comprender de manera
adecuada el uso de los condicionales if-else en c++, recuerda que si no comprendes
alguno de estos ejemplos o tienes alguna pregunta o sugerencia sobre estos o cualquier
contenido de la sección, puedes dejarlas en la sección de comentarios

PRACTICAS DE LABORATORIO #1

Vamos a retomar el ejemplo anterior, deseamos implementar un sistema de logeo de


usuario, es decir, queremos que el usuario nos ingrese un una contraseña y deseamos
comprobar si coincide con el valor pre establecido. En caso de que los datos sean
correctos se mostrará un mensaje de bienvenida, y en caso de que no, se mostrara un
mensaje de error y finalizará el programa.

Solución Ejemplo 1:

Debemos entonces determinar cuál va a ser nuestra condición a evaluar, en este


ejemplo, la condición debe ser que la contraseña, sea idéntica a la establecida en nuestro
sistema, veamos entonces como realizar esto:

string password = "";


cout << "Ingrese la contrasenia: ";
cin >> password;
if(password == "myClave")
{
cout << "Contrasenia correcta. Bienvenido";
}
else { cout << "Contrasenia incorrecta.";
}

El código funcional completo sería el siguiente:

PRACTICAS DE LABORATORIO #2

Hacer un programa en C++ para una tienda de zapatos que tiene una promoción de
descuento para vender al mayor, esta dependerá del número de zapatos que se compren.
Si son más de diez, se les dará un 10% de descuento sobre el total de la compra; si el
número de zapatos es mayor de veinte pero menor de treinta, se le otorga un 20% de
descuento; y si son más treinta zapatos se otorgará un 40% de descuento. El precio de
cada zapato es de $80.

SOLUCION EDITAR CODIGO EN C++


PRACTICAS DE LABORATORIO #3

Condicional switch en C++. Declaración


uso y sintaxis de switch en C++
¿Qué es Condicional Switch?
Los condicionales Switch, son una estructura de control condicional, que permite definir
múltiples casos que puede llegar a cumplir una variable cualquiera, y qué acción tomar
en cualquiera de estas situaciones, incluso es posible determinar qué acción llevar a
cabo en caso de no cumplir ninguna de las condiciones dadas.

¿Cómo funciona el Switch?


La mejor forma de entender el funcionamiento de algo, es viendo un ejemplo de esto, de
este modo, me parece que para comprender de forma adecuada como funciona un
condicional Switch, es bueno hacerlo poniendo un ejemplo. Imaginemos entonces que
nuestro programa consta de un menú de opciones digamos 3 opciones, cada una
representada con un número correspondiente, es decir la opción uno corresponde al
número 1, la dos al 2 y así sucesivamente, queremos entonces que de acuerdo a un
número ingresado por el usuario ejecutemos una acción correspondiente y en caso de
que no corresponda a ninguna de las posibles opciones, mostrar un mensaje de error
cualquiera. De este modo, podemos identificar 3 casos distintos para nuestro switch o en
otras palabras, hemos identificado tres condiciones posibles que puede llegar a cumplir
nuestra variable: el caso uno corresponde a que el valor ingresado por el usuario sea el
1, es decir ejecutar la opción 1, el caso 2 el número 2, etc. adicionalmente hemos
encontrado la opción que se ejecutará por defecto en caso de no suceder ninguno de
estos casos, es decir si el usuario ingresa por ejemplo 10, mostraremos un mensaje de
error cualquiera.

Espero que haya sido un tanto claro con esto, si no es así, recuerda que puedes preguntar
en la sección de comentarios y con gusto te voy a responder o incluso modificar esta
sección para responder tu cuestión, de igual forma, vamos a ver ya mismo unos
ejemplos para entender mucho mejor de lo que he estado hablando.

Sintaxis del Condicional Switch en C++:


La sintaxis de un condicional Switch es bastante distinta a la de un condicional típico,
sin embargo es bastante intuitiva y fácil de comprender, es solo cuestión de
acostumbrarse. Veamos a continuación la estructura general de un condicional Switch y
luego unos cuantos ejemplos.

switch(opción) //donde opción es la variable a comparar { case valor1:


//Bloque de instrucciones 1; break; case valor2: //Bloque de
instrucciones 2; break; case valor3: //Bloque de instrucciones 3;
break; //Nótese que valor 1 2 y 3 son los valores que puede tomar la
opción //la instrucción break es necesaria, para no ejecutar todos los
casos. default: //Bloque de instrucciones por defecto; //default, es
el bloque que se ejecuta en caso de que no se de ningún caso }

Vamos ahora a ver línea por línea el anterior código para comprender todo y quedar
claros. Posteriormente veremos un ejemplo con valores reales.

Línea 1:

Aquí, tenemos la declaración del condicional switch, estamos diciendo que lo que viene
a continuación es esto, entre los paréntesis, el switch recibe la variable que vamos a usar
para comparar en cada uno de los casos.

Línea 2:

En la línea 2 tenemos una llave abriendo "{" lo cual como hemos visto en secciones
anteriores, indica que allí comienzan los bloques de instrucciones que se ejecutarán para
cada caso.

Línea 3:

En esta línea tenemos una parte vital del condicional switch, aquí tenemos definido un
caso posible que puede cumplir nuestra variable, la sintaxis es simple, usamos la
instrucción "case" para indicar que allí comienza un caso, luego indicamos el valor que
puede tomar la variable, puede ser un numero, una cadena de caracteres o lo que
necesitemos, de esto se siguen dos puntos ":" y después de estos ponemos la o las
instrucciones a ejecutar para este caso, como ejemplo, podríamos tener algo como esto :
case "Hola": cout << "Usted ha escrito Hola";.
Línea 4:

Esta línea contiene la instrucción break, es una instrucción simple, pero fundamental al
interior del condicional Switch, esta instrucción indica que hasta allí va el bloque de
instrucciones del caso inmediatamente anterior a este, de este modo evitamos que el
algoritmo ejecute los demás casos, a modo de ejercicio, podrías intentar ejecutar el
código del ejemplo que veremos más adelante y quitar las instrucciones break, con esto
podrás comprobar que si el usuario ingresa por ejemplo un 1, se ejecutarán todos los
casos, es por esto que el break es fundamental.

Línea 5 a 8

Estas líneas contienen una repetición de las instrucciones de las líneas 3 y 4,


evidentemente cada una contiene un caso distinto, ten en cuenta que se pueden definir
todos los casos que sean necesarios al interior del switch.

Líneas 9, 10 y 12

Estas líneas como deberías saber ya, contienen diferentes comentarios aclarativos sobre
el código, en caso de que no comprendas adecuadamente estas líneas, te recomiendo
visitar la sección de comentarios.

Línea 11

Esta línea cambia un poco con respecto a las anteriores, sin embargo conserva la misma
esencia, en vez de poner el comando "case", usamos el comando "default", y luego los 2
puntos ":", notemos que no se pone ningún valor a evaluar, pues esta es la acción que se
ejecuta en caso de que no lleguemos a entrar en ninguno de los casos.

Línea 13:

En esta línea hacemos uso de la llave cerrando "}", una vez más como seguramente ya
sabrás esta nos indica que allí termina el bloque del condicional y se dará por terminada
la ejecución de este para continuar ejecutando el resto del programa.

No te preocupes si no comprendiste muy bien lo que acabo de escribir, estoy seguro que
con un par de ejemplos que veremos a continuación, te va a quedar todo claro

Ejemplos de Condicional Switch en C++


A continuación vamos a ver unos cuantos ejemplos para comprender de manera
adecuada el uso de los condicionales Switch en C++, recuerda que si no comprendes
alguno de estos ejemplos o tienes alguna pregunta o sugerencia sobre estos o cualquier
contenido de la sección, puedes dejarlas en la sección de comentarios

Ejemplo 1: Menú de opciones en C++

Vamos a retomar el ejemplo mencionado anteriormente al inicio de la sección, en el


cual suponíamos que el usuario nos ingresaba un número correspondiente a una opción
cualquiera y de acuerdo a esto mostramos un mensaje y en caso de ingresar una opción
incorrecta, mostramos un mensaje de error.

Solución Ejemplo 1:

Primero, determinemos los casos a ejecutar, tenemos tres casos posibles (suponiendo
que nuestro menú está compuesto por 3 opciones) el caso 1 para la opción 1, el dos para
la 2 y así sucesivamente. Nuestro caso por defecto (default) sería el caso de error, que
sucede cuando no se ingresa alguna de las 3 opciones. Veamos entonces como hacer
esto:

cout << "Ingrese la Opción a ejecutar: "; int opcion = 0; cin >>
opcion; switch(opcion) { case 1: cout << "Usted ha seleccionado la
opción 1"; break; case 2: cout << "Usted ha seleccionado la opción 2";
break; case 3: cout << "Usted ha seleccionado la opción 3"; break;
default: cout << "Usted ha ingresado una opción incorrecta"; }

El código funcional completo sería el siguiente:

# include "iostream" using namespace std; int main() { cout << "Ingrese
la Opción a ejecutar: "; int opcion = 0; cin >> opcion; switch(opcion)
{ case 1: cout << "Usted ha seleccionado la opción 1"; break; case 2:

cout << "Usted ha seleccionado la opción 2"; break; case 3: cout <<
"Usted ha seleccionado la opción 3"; break; default: cout << "Usted ha
ingresado una opción incorrecta"; } // system("PAUSE"); //Solo ponla
si no te da error return 0; }

Ejemplo 2: Menú de opciones en C++, usando char

Vamos a retomar el ejemplo anterior, pero en esta ocasión vamos a usar caracteres
(char) de C++, para determinar las opciones ingresadas por el usuario.
Solución Ejemplo 2, usando char:

Veamos entonces como hacer esto:

cout << "Ingrese la Opción a ejecutar: "; char opcion; cin >> opcion;
switch(opcion) { case 'a': cout << "Usted ha seleccionado la opción a";
break; case 'b': cout << "Usted ha seleccionado la opción b"; break;
case 'c': cout << "Usted ha seleccionado la opción c"; break; default:
cout << "Usted ha ingresado una opción incorrecta"; }

El código funcional completo sería el siguiente:


# include "iostream"
using namespace std;
int main()
{
cout << "Ingrese la Opción a ejecutar: ";
char opcion; cin >> opcion; switch(opcion)
{
case 'a': cout << "Usted ha seleccionado la opción a";
break;
case 'b': cout << "Usted ha seleccionado la opción b";
break;
case 'c': cout << "Usted ha seleccionado la opción c";
break; default: cout << "Usted ha ingresado una opción incorrecta";
}
// system("PAUSE"); //Solo ponla si no te da error
return 0;
}
Bibliotecas o librerías en C++.
Declaración y uso de librerías. Include en
C++
Junto con los compiladores de C y C++, se incluyen ciertos archivos llamados
bibliotecas mas comúnmente librerías. Las bibliotecas contienen el código objeto de
muchos programas que permiten hacer cosas comunes, como leer el teclado, escribir en
la pantalla, manejar números, realizar funciones matemáticas, etc.

Las bibliotecas están clasificadas por el tipo de trabajos que hacen, hay bibliotecas de
entrada y salida, matemáticas, de manejo de memoria, de manejo de textos y como
imaginarás existen muchísimas librerías disponibles y todas con una función especifica.

Nota: Existe una discusión sobre el nombre de estos archivos. Muchos personas
consideran que el nombre adecuado es archivos de biblioteca, y estan en lo correcto. Sin
embargo, la mayoría llamamos a estos archivos librerías, y también me incluyo entre
estos. El error proviene del nombre en inglés, que es library. Este término se traduce
como biblioteca, y no como librería. De este modo a lo largo de esta sección las llamaré
de cualquiera de las dos formas, para estár mas claros.

Hay un conjunto de bibliotecas (o librerías) muy especiales, que se incluyen con todos
los compiladores de C y de C++. Son las librerías (o bibliotecas) ANSI o estándar.
También hay librerías que no son parte del estándar pero en esta sección sólo usaremos
algunas bibliotecas (o librerías) ANSI.

Nota 2: Sé que esto pinta aburrido, pero es muy útil y las librerías nos facilitan
enormemente el trabajo a la hora de programar. Recuerda que antes de hablar librerías y
demás es necesario dominar algunos conceptos de fundamentación en general y otros
temas importantes (ciclos, condicionales y demás) Ahora veamos algunas librerías y
como es su sintaxis.

¿Qué son exactamente las librerías?


En C++, se conoce como librerías (o bibliotecas) a cierto tipo de archivos que podemos
importar o incluir en nuestro programa. Estos archivos contienen las especificaciones de
diferentes funcionalidades ya construidas y utilizables que podremos agregar a nuestro
programa, como por ejemplo leer del teclado o mostrar algo por pantalla entre muchas
otras más.

Al poder incluir estas librerías con definiciones de diferentes funcionalidades podremos


ahorrarnos gran cantidad de cosas, imaginemos por ejemplo que cada vez que
necesitemos leer por teclado, debamos entonces crear una función que lo haga (algo
realmente complejo), al poder contar con las librerías en C++, podremos hacer uso de
una gran variedad de funciones que nos facilitaran la vida y aumentarán la modularidad
de nuestros códigos.
Las librerías no son únicamente archivos externos creados por otros, también es posible
crear nuestras propias librerías y utilizarlas en nuestros programas. Las librerías pueden
tener varias extensiones diferentes, las más comunes son: .lib, .bpl, .a, .dll, .h y algunas
más ya no tan comunes.

En conclusión: Las librearías son archivos (no siempre externos) que nos permiten
llevar a cabo diferentes tareas sin necesidad de preocuparnos por cómo se hacen sino
simplemente entender cómo usarlas. Las librearías en C++ permiten hacer nuestros
programas más modulares y reutilizables, facilitando además crear programas con
funcionalidades bastante complejas en unas pocas líneas de código.

Sintaxis para declarar Librerías en C++


La declaración de librerías, tanto en C como en C++, se debe hacer al principio de todo
nuestro código, antes de la declaración de cualquier función o línea de código, debemos
indicarle al compilador que librerías usar, para el saber que términos estaran correctos
en la escritura de nuestro código y cuáles no. La sintaxis es la siguiente: #include
<nombre de la librería> o alternativamente #include "nombre de la librería".
Cualquiera de las 2 formas es válida en C++ (no estoy seguro si en C sea válido), ten en
cuenta que siempre el nombre de la librería debe ir entre " y " o entre < y >. En tu
código puedes declarar todas las librerías que quieras aunque en realidad no tienen
sentido declarar una librería que no vas a usar en tu programa, sin embargo no existe
límite para esto.

Librerías Estandar de C++ (Standar Template Library


o STL)
A continuación pondré algunas de las librerías de uso más común de C++ y que forman
parte de las librerías estandar de este lenguaje.

 fstream: Flujos hacia/desde ficheros. Permite la manipulación de archivos desde


el programar, tanto leer como escribir en ellos.

 iosfwd: Contiene declaraciones adelantadas de todas las plantillas de flujos y sus


typedefs estándar. Por ejemplo ostream.

 iostream: Parte del a STL que contiene los algoritmos estándar, es quizá la más
usada e importante (aunque no indispensable).

 La biblioteca list: Parte de la STL relativa a contenedores tipo list; listas


doblemente enlazadas

 math: Contiene los prototipos de las funciones y otras definiciones para el uso y
manipulación de funciones matemáticas.

 memory: Utilidades relativas a la gestión de memoria, incluyendo asignadores y


punteros inteligentes (auto_ptr).
"auto_ptr" es una clase que conforma la librería memory y permite un fácil
manejo de punteros y su destrucción automaticamente.

 Biblioteca new: Manejo de memoria dinámica

 numeric: Parte de la librería numérica de la STL relativa a operaciones


numéricas.

 ostream: Algoritmos estándar para los flujos de salida.

 queue: Parte de la STL relativa a contenedores tipo queue (colas de objetos).

 Librería stdio: Contiene los prototipos de las funciones, macros, y tipos para
manipular datos de entrada y salida.

 Librería stdlib: Contiene los prototipos de las funciones, macros, y tipos para
utilidades de uso general.

 string: Parte de la STL relativa a contenedores tipo string; una generalización de


las cadenas alfanuméricas para albergar cadenas de objetos. Muy útil para el
fácil uso de las cadenas de caracteres, pues elimina muchas d elas dificultades
que generan los char

 typeinfo: Mecanismo de identificación de tipos en tiempo de ejecución

 vector: Parte de la STL relativa a los contenedores tipo vector; una


generalización de las matrices unidimensionales C/C++

 forward_list Esta librería es útil para implementar con gran facilidad listas
enlazadas simples.

 list Permite implementar listas doblemente enlzadas (listas enlazadas dobles)


facilmente.

 iterator Proporciona un conjunto de clases para iterar elementos.

 regex Proporciona fácil acceso al uso de expresiones regulares para la


comparación de patrones.

 thread Útil para trabajar programación multihilos y crear múltiples hilos en


nuestra aplicación.

Nota: Para más información sobre las librerías estandar de C++ y STL puedes ingresar
aquí

¿Cómo declarar una librería en C++?


Veamos a continuación como se haría la declaración de unas cuantas librerías
conocidas, recuerda que ese pueden declarar todas las librerías necesarias y siempre
debe hacerse al comienzo del código fuente

#include "iostream" #include "string" #include <math.h> #include <conio.h>


using namespace std;

Con esto debió quedar claro, como declarar librerías C++ al interior de un código
fuente. Lo único adicional, es la línea que dice using namespace std; esta línea nos
ayuda a declarar un espacio de nombre que evita tener que usarlo cada que accedemos a
alguna función especifica de una librería. Teniendo este namespace declarado podemos
llamar por ejemplo el comando cout >>, que pertenece a la librería iostream, sin
embargo sin este namespace sería std::cout >>, imagina tener que hacer esto cada vez
que uses algún comando o función de las librerías, sería bastante tedioso.

Acerca del namespace std


Todas las librerías estándar de C++ contienen una declaración del espacio de nombre
std, es decir que todas las librerías que hacen parte del estándar de C++ colocan
entidades dentro de este espacio de nombre.

Por esta razón cuando declaramos el uso del espacio de nombre std por medio de "using
namespace std;", podemos evitar estar escribiendo std::cout o std::cin, etc en nuestro
código.

El espacio de nombre std como tal no es una librería sino simplemente un namespace,
por esta razón no reemplaza la declaración de las librerías del código, simplemente
facilita la escritura de éste al momento de usar las entidades de las librerías estándar. Sin
embargo si vamos a hacer uso de una o varias librerías estándar de C++ es
recomendable que declaremos el namespace std, para no tener que estar constantemente
escribiendo cosas similares a las que puse hace unas líneas como std::cin o similares,
dado que únicamente se puede acceder a la entidades de las librerías estándar por medio
del espacio nombre std.

Muy bien, ahora veamos algunos ejemplos simples del uso de librerías o bibliotecas en
C++

Ejemplo 1 de librerías en C++


En el siguiente ejemplo veremos el uso de la librería stdlib.h que posee una gran
variedad de funcionalidades, para este ejemplo usaremos la función rand que nos
permite generar un número aleatorio.

#include <stdlib.h> #include <iostream> using namespace std; int main () {


cout << ("Se va a generar un numero aleatorio ....\n"); cout << ("El
numero generado es : "); cout << rand(); //Se genera el número con rand
y se muestra en pantalla return 0; }
En el anterior código hemos hecho uso de dos librerías: iostream y stdlib. La librería o
biblioteca iostream, nos permitirá hacer uso del cin y el cout para obtener o imprimir
valores por pantalla, respectivamente mientras stdlib nos dará acceso a la función rand
que generará por nosotros un número cualquiera.

Ejemplo 2 de librerías en C++


En el siguiente ejemplo veremos el uso de la librería string.h que nos permite
básicamente crear y manipular muy fácilmente cadenas de caracteres

#include <string.h> #include <iostream> using namespace std; int main () {


cout << ("Hola! Por favor ingrese su nombre ....\n"); string cadena =
"Hola "; //Se le da un valor inicial al string string nombre; //Esta
cadena contendrá el nombre cin >> nombre; //Se lee el nombre cadena =
cadena + nombre; //Se juntan el saludo con el nombre usando "+" cout <<
(cadena); //Se muestra el resultado final. return 0; }

Aquí hemos mostrado un mensaje solicitando el nombre al usuario y luego usando


string, hemos creado un saludo que incluya el nombre del usuario. "Hola Juan".

Ejemplo 3 para bibliotecas en C++


En este ejemplo usaremos la biblioteca vector, iterator y list, para crear un lista
doblemente enlazada, agregar algunos elementos en ella (incluido un vector) y
recorrerla.

#include <iostream> #include <list> #include <vector> using namespace std;


int main () { list<int> miLista; //Creamos list<int>::iterator it; for
(int i=10; i<=50; i = i+10) { miLista.push_back(i); } //Se agrega un
10 20 30 40 50 a la lista it = miLista.begin(); //Se estabelce el
iterador al comienzo de la lista it++; //Movemos el iterador una
posición (ahora estamos en 20) //Se inserta un 11 en la posición del
10 11 20 30 40 50 miLista.insert (it,11); miLista.insert (it,3,18);
//En la actual posición del 20 insertamos un 18 tres veces //10 11 18
18 18 20 30 40 50 //Creamos un vector que poseerá dos elementos con
valor de 19 vector<int> myvector (2,19); //Insertamos ese vector en la
lista, enviando los iteradores del propio vector miLista.insert
(it,myvector.begin(),myvector.end()); //10 11 18 18 18 19 19 20 30 40
50 cout << "Mi lista contiene lo siguiente:"; for (it=miLista.begin();
it!=miLista.end(); it++) { cout << ' ' << *it; //Se muestra el valor al
cual está aùntando el iterador } return 0; }

El resultado final de la ejecución de este código debería mostrar por pantalla "Mi lista
contiene lo siguiente: 10 11 18 18 18 19 19 20 30 40 50" que es el resultado final de la
inserción.

Muy bien. He añadido este par de ejemplo a petición de algunos visitantes del sitio y
creo que sí eran muy necesarios, espero que con esto hayas clarificado dudas y
afianzado el concepto.
¡¡¡Bueno!!! Es todo lo que necesitas saber sobre librerías, al menos en la lista que te he
puesto, están las que vamos a usar para ejemplos y ejercicios y algunas otras de mas. Si
deseas información sobre alguna otra o que amplíe la información sobre alguna que ya
esta aquí, házmelo saber por medio de la sección de comentarios

Funciones, métodos y procedimientos en


C++. Desde cero y paso a paso
Las funciones son una herramienta indispensable para el programador, tanto las
funciones creadas por él mismo como las que le son proporcionadas por otras librerías,
cualquiera que sea el caso, las funciones permiten automatizar tareas repetitivas,
encapsular el código que utilizamos, e incluso mejorar la seguridad, confiabilidad y
estabilidad de nuestros programas. Dominar el uso de funciones es de gran importancia,
permiten modularizar nuestro código, separarlo según las tareas que requerimos, por
ejemplo una función para abrir, otra para cerrar, otra para actualizar, etc. básicamente
una función en nuestro código debe contener la implementación de una utilidad de
nuestra aplicación, es decir que por cada utilidad básica (abrir, cerrar, cargar, mover,
etc.) sería adecuado tener al menos una función asociada a ésta.

Antes de comenzar a hablar acerca de la creación de funciones y su uso en C++, debo


hablar de tres conceptos relativamente diferentes.

¿Funciones, métodos o procedimientos?


En el mundo de la programación, muchos acostumbramos hablar indistintamente de
estos tres términos sin embargo poseen deferencias fundamentales.

Funciones:

Las funciones son un conjunto de procedimiento encapsulados en un bloque,


usualmente reciben parámetros, cuyos valores utilizan para efectuar operaciones y
adicionalmente retornan un valor. Esta definición proviene de la definición de función
matemática la cual posee un dominio y un rango, es decir un conjunto de valores que
puede tomar y un conjunto de valores que puede retornar luego de cualquier operación.

Métodos:

Los métodos y las funciones son funcionalmente idénticos, pero su diferencia radica en
el contexto en el que existen. Un método también puede recibir valores, efectuar
operaciones con estos y retornar valores, sin embargo en método está asociado a un
objeto, básicamente un método es una función que pertenece a un objeto o clase,
mientras que una función existe por sí sola, sin necesidad de un objeto para ser usada.
Procedimientos:

Los procedimientos son básicamente lo un conjunto de instrucciones que se ejecutan sin


retornar ningún valor, hay quienes dicen que un procedimiento no recibe valores o
argumentos, sin embargo en la definición no hay nada que se lo impida. En el contexto
de C++ un procedimiento es básicamente una función void que no nos obliga a utilizar
una sentencia return.

Durante este artículo hablaremos sobre procedimientos y funciones, los métodos son
parte de un tema diferente.

Declarando funciones en C++


La sintaxis para declarar una función es muy simple, veamos:

tipo nombreFuncion([tipo nombreArgumento,[tipo nombreArgumento]...]) {


/* * Bloque de instrucciones */ return valor; }

Recordemos que una función siempre retorna algo, por lo tanto es obligatorio declararle
un tipo (el primer componente de la sintaxis anterior), luego debemos darle un nombre a
dicha función, para poder identificarla y llamarla durante la ejecución, después al
interior de paréntesis, podemos poner los argumentos o parámetros. Luego de la
definición de la "firma" de la función, se define su funcionamiento entre llaves; todo lo
que esté dentro de las llaves es parte del cuerpo de la función y éste se ejecuta hasta
llegar a la instrucción return.

Acerca de los argumentos o parámetros

Hay algunos detalles respecto a los argumentos de una función, veamos:

1. Una función o procedimiento pueden tener una cantidad cualquier de parámetros, es


decir pueden tener cero, uno, tres, diez, cien o más parámetros. Aunque
habitualmente no suelen tener más de 4 o 5.
2. Si una función tiene más de un parámetro cada uno de ellos debe ir separado por una
coma.
3. Los argumentos de una función también tienen un tipo y un nombre que los identifica.
El tipo del argumento puede ser cualquiera y no tiene relación con el tipo de la
función.

Consejos acerca de return

Debes tener en cuenta dos cosas importantes con la sentencia return:

1. Cualquier instrucción que se encuentre después de la ejecución de return NO será


ejecutada. Es común encontrar funciones con múltiples sentencias return al interior de
condicionales, pero una vez que el código ejecuta una sentencia return lo que haya de
allí hacia abajo no se ejecutará.
2. El tipo del valor que se retorna en una función debe coincidir con el del tipo declarado
a la función, es decir si se declara int, el valor retornado debe ser un número entero.
Veamos algunos ejemplos.

Ejemplos de funciones
Veamos algunos ejemplos prácticos de funciones en C++.

Ejemplo 1:
int funcionEntera()//Función sin parámetros { int suma = 5+5; return suma;
//Acá termina la ejecución de la función return 5+5;//Este return nunca se ejecutará
//Intenta intercambiar la línea 3 con la 5 int x = 10; //Esta línea nunca se ejecutará }

Como puedes ver es un ejemplo sencillo, si ejecutas esto, la función te retornará el valor
de suma que es 10 (5+5). Las líneas posteriores no se ejecutarán nunca, aunque no
generan error alguno, no tienen utilidad. Puedes notar que para este caso es lo mismo
haber escrito return suma que escribir return 5+5. Ambas líneas funcionan
equivalentemente.

Ejemplo 2:
char funcionChar(int n)//Función con un parámetro { if(n == 0)//Usamos el
parámetro en la función { return 'a'; //Si n es cero retorna a //Notar que de aquí para
abajo no se ejecuta nada más } return 'x';//Este return sólo se ejecuta cuando n NO es
cero }

Aquí hicimos uso se múltiples sentencia return y aprovechamos la característica de que


al ser ejecutadas finalizan inmediatamente la ejecución de la parte restante de la
función. De este modo podemos asegurar que la función retornará 'a' únicamente cuando
el valor del parámetro n sea cero y retornará un 'x' cuando dicho valor no sea cero.

Ejemplo 3:
bool funcionBool(int n, string mensaje)//Función con dos parámetros { if(n
== 0)//Usamos el parámetro en la función { cout << mensaje;//Mostramos el mensaje
return 1; //Si n es cero retorna 1 return true;//Equivalente } return 0;//Este
return sólo se ejecuta cuando n NO es cero return false;//Equivalente }

Aquí ya tenemos una función que recibe dos parámetros, uno de ellos es usado en el
condicional y el otro para mostrar su valor por pantalla con cout, esta vez retornamos
valores booleanos 0 y 1, pudo ser true o false también.

Hablemos un poco de los procedimientos


Los procedimientos son similares a las funciones, aunque más resumidos. Debido a que
los procedimientos no retornan valores, no hacen uso de la sentencia return para
devolver valores y no tienen tipo específico, solo void. Veamos un ejemplo:

Ejemplo de procedimientos
void procedimiento(int n, string nombre) { if(n == 0) { cout << "hola"
<< nombre; return; } cout << "adios" << nombre; }
De este ejemplo podemos ver que ya no se usa un tipo sino que se pone void, indicando
que no retorna valores, también podemos ver que un procedimiento también puede
recibir parámetros o argumentos.

Atención: Los procedimientos también pueden usar la sentencia return, pero no con un
valor. En los procedimientos el return sólo se utiliza para finalizar allí la ejecución de la
función.

Invocando funciones y procedimientos en C++


Ya hemos visto cómo se crean y cómo se ejecutan las funciones en C++, ahora veamos
cómo hacemos uso de ellas.

nombreFuncion([valor,[valor]...]);

Como puedes notar es bastante sencillo invocar o llamar funciones en C++ (de hecho en
cualquier lenguaje actual), sólo necesitas el nombre de la función y enviarle el valor de
los parámetros. Hay que hacer algunas salvedades respecto a esto.

Detalles para invocar funciones

 El nombre de la función debe coincidir exactamente al momento de invocarla.


 El orden de los parámetros y el tipo debe coincidir. Hay que ser cuidadosos al
momento de enviar los parámetros, debemos hacerlo en el mismo orden en el que
fueron declarados y deben ser del mismo tipo (número, texto u otros).
 Cada parámetro enviado también va separado por comas.
 Si una función no recibe parámetros, simplemente no ponemos nada al interior de los
paréntesis, pero SIEMPRE debemos poner los paréntesis.
 Invocar una función sigue siendo una sentencia habitual de C++, así que ésta debe
finalizar con ';' como siempre.
 El valor retornado por una función puede ser asignado a una variable del mismo tipo.
 Una función puede llamar a otra dentro de sí misma o incluso puede ser enviada como
parámetro a otra.

Ejemplos de uso de funciones


En el siguiente código vamos a hacer un llamado a algunas de las funciones y al
procedimiento, que declaramos anteriormente.

int main() { funcionEntera(); //Llamando a una función sin argumentos bool


respuesta = funcionBool(1, "hola"); //Asignando el valor retornado a una variable
procedimiento(0, "Juan");//Invocando el procedimiento //Usando una función como
parámetro procedimiento(funcionBool(1, "hola"), "Juan"); return 0; }

En el código anterior podemos ver cómo todas las funciones han sido invocadas al
interior de la función main (la función principal), esto nos demuestra que podemos
hacer uso de funciones al interior de otras. También vemos cómo se asigna el valor
retornado por la función a la variable 'respuesta' y finalmente, antes del return, vemos
cómo hemos usado el valor retornado por 'funcionBool' como parámetro del
procedimiento.

Potrebbero piacerti anche