SlideShare una empresa de Scribd logo
1 de 32
¡`Que es c++
C++ es un lenguaje de programación multiparadigma, puesto que permite
programar de manera imperativa, orientada a objetos o genérica.
Es un lenguaje nacido a principios de los años 80, pero que ha ido adquiriendo
popularidad a finales de esa década y a principios de la década de los 90, puesto
que ha sido el lenguaje favorito para la creación de aplicaciones de escritorio,
ofimática y de juegos, tipos de aplicaciones muy populares en esa época.
El estándar C++11 (liberado el año 2011) incorpora muchísimas características al
lenguaje que lo hacen mucho más interesante y sencillo para el desarrollo de
aplicaciones genéricas, con un manejo más fácil de la memoria (a través de
punteros inteligentes) y con una librería estándar más rica.
Aunque sigue siendo el lenguaje predilecto para la creación de juegos de alta gama
y aplicaciones de ofimática; su nicho de mercado está en el desarrollo de sistemas
operativos, máquinas virtuales, compiladores, navegadores de internet y cualquier
aplicación donde el alto rendimiento sea prioritario.
Como funciona
Qué es C++?
C++ es un superconjunto creado a partir del lenguaje C, cuenta con
todas las funcionalidades de C y agrega funcionalidades nuevas como
clases, sobrecarga de funciones, herencia entre clases, etc.
Origen
Su origen data del año 1979 y se le atribuye a Bjarne Stroustrup. El
lenguaje que inspiró a Stroustrup fue el lenguaje Simula (lenguaje
usado para simulaciones), que es considerado el primer lenguaje en
permitir programación orientada a objetos. Stroustrup considero que
esta funcionalidad del lenguaje Simula era muy útil en el desarrollo
de software, pero Simula era muy lento para un uso práctico.
Bjarne Stroustrup
Stroustrup comenzó a trabajar en su lenguaje llamado “C with
classes” (C con clases) , su meta era agregar programación orientada
a objetos al lenguaje C. El primer compilador de este lenguaje fue
Cfront (un compilador escrito en C with classes) derivado del
compilador de lenguaje C llamado CPre, aunque en 1993 se dejaría
de usar por la dificultad para agregar nuevas funciones.
En 1983 el nombre del lenguaje fue cambiado de “C with classes” a
“C++”. Podemos entender con esto la imagen que tenía Stroustrup
de su lenguaje como una mejora del lenguaje “C” (al ser ++ un
incrementador de variable).
Para 1985 Stroustrup publicó su referencia al lenguaje “The C++
Programming Language” (“El lenguaje de programación C++), el cual
fue muy importante debido a la falta de estandarización del lenguaje
recién creado. En 1990 se publicó “The Annotated C++ Reference
Manual” (Manual de referencia anotada de C++) y ese mismo año
salió al mercado el compilador “Turbo C++” (desarrollado por Borland
Software Corporation) que agregaba una gran cantidad de nuevas
librerías al lenguaje, ayudando a su desarrollo. El proyecto de
librerías “Boost” agrego nuevas funcionalidades al lenguaje tales
como aleatorización comprehensiva y una nueva librería de tiempo.
Estandarización
En 1998 el “Comité de estándares de C++” publicó su primera
estandarización internacional ISO/IEC 14882:1998 (conocida
también como C++98) la cual, al tener varios problemas, fue
actualizada en 2003 (C++03). En 2011 se terminó y publicó la nueva
estandarización del lenguaje (C++11).
Estructura de un programa C++
C++ es un lenguaje de programación orientado a objetos híbrido. Esto quiere decir
que permite realizar programas estructurados sin la orientación a objetos y
programas orientados a objetos.
En este punto veremos la estructura de un programa que no utiliza orientación a
objetos. En temas posteriores estudiaremos la estructura de un programa C++
orientado a objetos.
La estructura general de un programa C++ es la siguiente:
Comentarios
Directivas del preprocesador
Declaración de variables globales y funciones
int main( ) // Función principal main
{
Declaraciones locales de la función principal
Instrucciones de la función principal
}
Otras funciones:
funcion1(.....)
{
Declaraciones locales de la función 1
Instrucciones de la función 1
}
funcion2(.....)
{
Declaraciones locales de la función 2
Instrucciones de la función 2
}
.....
Por ejemplo:
// Programa que muestra el mensaje Hola mundo!!! por pantalla
#include <iostream>
using namespace std;
int main(void)
{
cout << "Hola mundo!!!n";
}
Vamos a comentar cada una de las partes del programa anterior:
// Programa que muestra el mensaje Hola mundo!!! por pantalla
Esta línea es un comentario.
Todas las líneas que comienzan con dos barras (//) se consideran comentarios y no
tienen ningún efecto sobre el comportamiento del programa.
Los comentarios también pueden ir entre los símbolos /* y */. En ese caso pueden
ocupar más de una línea.
#include <iostream>
Esta línea es una directiva del preprocesador.
Todas las líneas que comienzan con el símbolo # son directivas para el
preprocesador.
La directiva #include, sirve para insertar ficheros externos dentro de nuestro
programa. Estos ficheros son conocidos como ficheros incluidos, ficheros de cabecera
o headers.
En este caso, la directiva #include <iostream> indica al preprocesador que en este
programa se debe incluir el archivo iostream. El código fuente no cambia, pero el
compilador ve el fichero incluido.
iostream es la librería de entrada/salida de C++. Si no se incluye esta librería no
podemos utilizar la instrucción cout para imprimir un mensaje por pantalla.
La inclusión de ficheros la podemos realizar de dos formas:
#include <nombre de fichero cabecera>
#include "nombre de fichero de cabecera"
En el primer caso el preprocesador buscará en los directorios include definidos en el
compilador.
En el segundo, se buscará primero en el directorio actual, es decir, en el que se
encuentre el fichero fuente, si no existe en ese directorio, se buscará en los
directorios include definidos en el compilador. Si se proporciona el camino como parte
del nombre de fichero, sólo se buscará en el directorio especificado.
using namespace std;
En grandes proyectos formados por varios archivos, es posible que en archivos
diferentes del mismo proyecto se encuentren recursos con el mismo nombre. Para
evitar confusiones y saber a qué recurso estamos haciendo referencia se utilizan los
espacios de nombres (namespace).
Un espacio de nombres es básicamente un conjunto de nombres de recursos
(clases, métodos, funciones, etc) en el cual todos los nombres son únicos.
Todos los elementos de la biblioteca estándar de C++ se declaran dentro de un
espacio de nombres llamado std.
Con la instrucción using namespace std estamos indicando que vamos a usar este
espacio de nombres.
Esta línea se incluirá en la mayoría de programas que escribamos en C++.
Si no la escribimos, la instrucción cout << "Hola mundo!!!n"; tendríamos que
escribirla indicando el espacio de nombres donde se declara cout así:
std::cout<<”Hola mundo!!!n”;
int main (void)
Un programa en C++ no orientado a objetos está formado básicamente por una o
varias funciones.
La función main es la función principal del programa.
La función principal es el punto de inicio del programa. Si el programa contiene varias
funciones, la ejecución del mismo comienza por la función main.
Todo programa escrito en C++ debe contener una función main.
Las llaves { } indican donde empiezan y donde acaban las instrucciones de la función.
cout << "Hola mundo!!!n";
Esta línea muestra por pantalla Hola mundo!!! y un salto de línea.
cout es un objeto que se declara en el archivo iostream en el espacio de
nombres std, por eso tenemos que incluir ese archivo al principio del programa y
declarar que vamos a utilizar ese espacio de nombres.
La instrucción acaba con punto y coma.
El punto y coma se utiliza para indicar el final de una instrucción y sirve para separarla
de instrucciones posteriores.
Switch
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;
}
Nota: Si no comprendes alguna de las líneas de estos códigos,
te recomiendo visitar los contenidos anteriores (Entrada y
Salida de Datos, Librerías ó Comentarios, Estructura de un
Programa) o también puedes dejar un comentario al final de la
sección con tu pregunta.
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;
}
Eso es todo. Como ves, en esencia es el mismo código, pero
debes asegurarte de poner las diferentes opciones entre
comillas simples ('), puesto que la comparación es entre
caracteres.
Detalles sobre el condicional switch en
C++
 En C++, NO puedes usar otra cosa diferente a número en cada
case. Si necesitas comparar cadenas de texto u otros tipos de
datos, seguramente un condicional como el if o if-else sean una
mejor alternativa
 Los caracteres también se pueden usar, pues en esencia se
pueden representar como números enteros (el lenguaje se
encarga de eso por ti). Sin embargo, como indiqué, otros tipos
de datos no son recomendables
 La sentencia default es opcional, así que si no lo deseas no la
debes poner. Sin embargo, es recomendable hacerlo, para así
controlar todas las opciones posibles y que tu programa no
quede a la "suerte" en ciertos casos.
 Dentro de cada case eres libre de poner varias líneas de
código, incluso otras estructuras como condicionales o ciclos.
Sin embargo, es preferible mantener tu código ordenado y no
poner muchas. Recomendaría no poner más de 5 y
preferiblemente solo una. Si deseas hacer tareas complejas al
interior de un case de un switch en C++, posiblemente sea
mejor hacer esas tareas en una función y llamar a esa función
desde el case o simplemente usar un if-else.
Así que, efectivamente, los condicionales switch y de hecho
todos los condicionales en sí, 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. Me gustaría hacer una leve aclaración, el
condicional switch encuentra su utilidad al momento de tener
más de una posibilidad de valores para una variable cualquiera,
evidentemente si nuestra variable solo puede adquirir un valor
útil para nosotros, nuestra alternativa inmediata debería ser un
if o un if-else, no un switch que resulta un poco mas engorroso
de escribir, sin embargo cuando tenemos varias posibilidades
es mejor un switch que tener condicionales anidados o un
condicional después de otro. Espero que todo te haya quedado
claro en esta sección.
Muy bien de momento, es todo en esta sección, podemos
entonces continuar ahora con el siguiente contenido que son
los Ciclos en C++, recuerda también dejar tus comentarios y/o
preguntas en la sección de comentarios.
Comentarios
Comentarios en C++
Los comentarios se utilizan para explicar el código fuente. Un comentario es un texto
que se escribe dentro de un programa con el fin de facilitar la comprensión del
mismo.
En C++ se pueden utilizar dos tipos de comentarios:
Comentario tradicional estilo C:
Empieza con los caracteres /* y acaba con */.
Pueden ocupar más de una línea y pueden aparecer en cualquier lugar donde pueda
aparear un espacio en blanco.
No pueden anidarse.
Ejemplos de comentarios estilo C:
/*
Programa EcuaciónSegundoGrado
Calcula las soluciones de una ecuación de segundo grado
*/
/* Lectura de datos por teclado */
Comentarios de una sola línea:
Comienzan con una doble barra ( // ) y se pueden extender hasta el final de la línea.
Ejemplos de comentarios C++ de línea:
// Programa Ecuación segundo grado
// Calcula las soluciones de una ecuación de segundo grado
int p; // precio del producto
Tipos de datos en C++
Los tipos de datos en C++ se clasifican en primitivos y derivados.
Los tipos de datos primitivos son los que están definidos dentro del lenguaje.
Los tipos de datos derivados se forman a partir de los tipos primitivos.
En este tema veremos los tipos primitivos y en temas siguientes estudiaremos los
tipos derivados.
Los tipos de datos primitivos en C++ son: numéricos enteros, numéricos reales, tipo
lógico y tipo carácter ampliado.
Tipos de datos C++ numéricos enteros
El tipo de dato numérico entero es un subconjunto finito de los números enteros del
mundo real. Pueden ser positivos o negativos.
En C++ los tipos de datos numéricos enteros son los siguientes:
Tipo de
Dato
Descripción
Número de
bytes típico
Rango
short Entero corto 2 -32768 a 32767
int Entero 4 -2147483648 a +2147483647
long Entero largo 4 -2147483648 a +2147483647
char Carácter 1 -128 a 127
Con los tipos enteros pueden utilizarse los calificadores signed y unsigned. Estos
calificadores indican si el número tiene signo o no. Si se usan solos, sin indicar el tipo
de dato se asume int.
Por ejemplo, las siguientes declaraciones son equivalentes:
unsigned int x; equivale a: unsigned x;
Usando estos calificadores podemos tener los siguientes tipos enteros:
Tipo de Dato Descripción
Número
de bytes
típico
Rango
signed short Entero corto 2 -32768 a 32767
unsigned
short
Entero corto sin
signo
2 0 a 65535
signed int Entero 4
-2147483648
a +2147483647
unsigned int Entero sin signo 4 0 a 4294967295
signed long Entero largo 4
-2147483648
a +2147483647
unsigned
long
Entero largo sin
signo
4 0 a 4294967295
signed char Carácter 1 -128 a 127
unsigned
char
Carácter sin
signo
1 0 a 255
Podemos ver que los datos enteros de tipo signed son equivalentes a los enteros sin
utilizar el calificador:
signed int a; es equivalente a escribir int a;
Tipos de datos numéricos reales
El tipo de dato numérico real es un subconjunto finito de los números reales. Pueden
ser positivos o negativos.
En C++ los tipos de datos numéricos reales son los siguientes:
Tipo de
Dato
Descripción
Número de
bytes típico
Rango
float
Real (Número en
coma flotante)
4
Positivos: 3.4E-38 a 3.4E38
Negativos: -3.4E-38 a -3.4E38
double
Real doble(Número
en coma flotante
de doble precisión)
8
Positivos: 1.7E-308 a 1.7E308
Negativos: -1.7E-308 a -
1.7E308
long
double
Real doble largo 10
Positivos: 3.4E-4932 a
1.1E4932
Negativos: -3.4E-4932 a -
1.1E4932
Tipo lógico
Los datos de este tipo sólo pueden contener dos valores: true ó false (verdadero ó
falso).
Si se muestran como enteros, el valor true toma el valor 1 y false el valor 0.
Tipo de
Dato
Descripción
Número de
bytes típico
Rango
bool Dato de tipo lógico 1 0, 1
Tipo carácter extendido
Este tipo se utiliza para representar caracteres UNICODE. Utiliza 2 bytes a diferencia
del tipo char que solo utiliza 1.
Tipo de
Dato
Descripción
Número de
bytes típico
Rango
wchar_t Carácter Unicode 2 0 a 65535
Estructuras de Control en C++
Publicado por tutorioz en marzo 19, 2020
Las estructuras de control determinan la secuencia en la que se
ejecutarán las instrucciones de un programa.
Las estructuras de control se dividen en tres categorías en función del
flujo de ejecución:
 Estructura secuencial
 Estructura alternativa o condicional
 Estructura iterativa o repetitiva.
Estructura Secuencial
La estructura secuencial está formada por una secuencia de
instrucciones que se ejecutan en orden una a continuación de la otra.
Cada una de las instrucciones están separadas por el carácter punto y
coma. No obstante, en algunos casos nos interesará agrupar en un
bloque una serie de instrucciones, como veremos al explicar las
estructuras de selección y de iteración.
El bloque de sentencias se define por el carácter llave de apertura ( { )
para marcar el inicio del mismo, y el carácter llave de cierre ( } ) para
marcar el final.Por ejemplo:
{instrucción 1;
instrucción 2;
...
instrucción N;}
Sin embargo, en caso de que el bloque de sentencias este constituido
por una única sentencia no es obligatorio el uso de las llaves de
apertura y cierre ( { } ).
Estructura alternativa o condicional
Las estructuras condicionales controlan si una sentencia o bloque de
sentencias se ejecutan, en función del cumplimiento o no de una
condición o expresión lógica. En C++ existen dos estructuras de
control para la selección: if y switch.
Instrucción IF
Esta instrucción hace que se ejecuten unas sentencias u otras
dependiendo del valor que toma una condición
Ejemplo if simple
if(condición){
instrucción 1;}
O puede ser:
if(condición){
instrucción 1;
instrucción 2;
instrucción 3;}
Ejemplo de if – else
if(condición){
instrucción 1;
}
else{
instrucción2;}
O puede ser:
if(condición){
Instrucción 1;
instrucción 2;}
else{
instrucción 3;
instrucción 4;}
Vamos a ver un código de ejemplo con estructura condicional que lee
un número entero (tu edad) por teclado y muestra si eres mayor de
edad o no.
#include <iostream>
main(){
int edad;
printf("Introduce tu edad: ");
scanf("%d", &edad);
if(edad>=18){
printf("nEres mayor de edadn");
}else{
printf("nNo eres mayor de edadnn");
}
system("pause");
}
Las instrucciones if-else se pueden anidar obteniéndose
una estructura condicional múltiple:
if(condición 1){
instrucción 1;}
else if(condición 2){
instrucción 2;}
else if(condición 3){
instrucción 3;}
else if(condición 4){
instrucción 4;}
else{
instrucción 5;
instrucción 6;}
En este caso se evalúa la condición 1 si es cierta, se ejecuta
la instrucción 1 y se continúa por la instrucción 6 después del bloque
de else-if anidados. Si la condición 1 es falsa, se evalúa la condición 2,
y así sucesivamente.En caso de no ser cierta ninguna de las
condiciones, la sentencia que se ejecuta es la del último else, es decir,
la instrucción 5.
Vamos a ver esto que acabamos de leer en un ejemplo de un
programa que lee un numero entero y asigna una nota según la
calificación ingresada:
#include <iostream>
main(){
unsigned int calif;
printf("Introduce tu calificacion:");
scanf("%d", &calif);
if (calif == 10){
printf("Excelente");
}
else if (calif == 9){
printf("Sobresaliente");
}
else if (calif == 8){
printf("Notable");
}
else if (calif == 7){
printf("Puede mejorar");
}
else if(calif == 6){
printf("Apenas pasaste");
}
else{
printf("REPROBADO");
}
printf("nn");
system("pause");
}
Instrucción switch
La sentencia switch selecciona una de entre múltiples alternativas.La
forma general de esta expresión es la siguiente:
switch (expresión){
case constante 1:
instrucciones;
break;
case constante 2:
instrucciones;
break;
· · ·
default:
instrucciones;}
La instrucción switch evalúa la expresión entre paréntesis y compara
su valor con las constantes de cada case. Se ejecutarán las
instrucciones de aquel case cuya constante coincida con el valor de la
expresión, y continúa hasta el final del bloque o hasta una instrucción
que transfiera el control fuera del bloque del switch (una instrucción
break, o return). Si no existe una constante igual al valor de la
expresión, entonces se ejecutan las sentencias que están a
continuación de default.
Vamos a hacer un ejemplo con el uso de switch donde nos va a
indicar que opción seleccionamos.
#include <iostream>
int main(){
printf("Ingrese la Opcion a ejecutar: ");
int opcion = 0;
scanf("%d", &opcion);
switch(opcion)
{
case 1: printf("nUsted ha seleccionado la opcion 1n");
break;
case 2: printf("nUsted ha seleccionado la opcion 2n");
break;
case 3: printf("nUsted ha seleccionado la opcion 3n");
break;
default: printf("nUsted ha ingresado una opcion incorrectan");
}
}
Estructuras repetitivas o iterativas
C++ dispone de tres estructuras repetitivas:
 while
 do-while
 for.
Instrucción while
Ejecuta una instrucción o un bloque de instrucciones cero o más
veces, dependiendo del valor de la condición.Se evalúa la condición, y
si es cierta, se ejecuta la instrucción o bloque de instrucciones y se
vuelve a evaluar la condición; pero si la condición es falsa, se pasa a
ejecutar la siguiente instrucción después del while.
Su sintaxis es la siguiente:
while(condición){
instrucción 1;
instrucción 2;
...
instrucción N;}
Vamos a hacer un ejemplo para que se entienda mucho mejor. Es un
programa que se va a ejecutar mientras se ingresen números del 1 al
10, si se ingresa un numero mayor a 10 el programa finaliza ya que la
condición ya no se cumple.
#include <iostream>
main()
{
int numero;
printf("Teclea un numero (0 para salir): ");
scanf("%d", &numero);
while (numero!=0)
{
printf("Ejecutando...n");
printf("Teclea otro numero (0 para salir): ");
scanf("%d", &numero);
}
}
En este ejemplo, si se introduce 0 la primera vez, la condición es falsa
y ni siquiera se entra al bloque del “while”, terminando el programa
inmediatamente.
Instrucción do while.
Ejecuta una instrucción o un bloque de instrucciones, una o más
veces, dependiendo del valor de la condición.Se ejecuta la instrucción
o bloque de instrucciones y a continuación se evalúa la condición. Si la
condición es cierta, se vuelve a ejecutar la instrucción o bloque de
instrucciones, y si es falsa, pasa a ejecutarse la siguiente instrucción
después del do-while.
Cuando se utiliza una instrucción do-while el bloque de instrucciones
se ejecuta al menos una vez, ya que la condición se evalúa al final. En
cambio, con una instrucción while, puede suceder que el bloque de
instrucciones no llegue a ejecutarse nunca si la condición inicialmente
es falsa.
Su sintaxis es la siguiente:
do{instrucción 1;
instrucción 2;
...
instrucción N;}
while (condicion);
A continuación les dejo un ejemplo para que sea mas simple de
comprender. Como ejemplo, vamos a ver cómo sería el típico
programa que nos pide una clave de acceso y nos nos deja entrar
hasta que tecleemos la clave correcta. Eso sí, como todavía no
sabemos manejar cadenas de texto, la clave será un número:
#include <iostream>
main()
{
int valida = 943;
int clave;
do
{
printf("Introduzca su clave numerica: ");
scanf("%d", &clave);
if (clave != valida) printf("Clave no validan");
}
while (clave != valida);
printf("Clave validan");
}
En este caso, se comprueba la condición al final, de modo que se nos
preguntará la clave al menos una vez. Mientras que la respuesta que
ingresemos no sea la correcta, se nos vuelve a preguntar. Finalmente,
cuando tecleamos la clave correcta, el programa escribe “Calve valida”
y termina la ejecución.
Instrucción for
Un bucle for hace que una instrucción o bloque de instrucciones se
repitan un número determinado de veces mientras se cumpla la
condición.
A continuación de la palabra for y entre paréntesis debe haber
siempre tres zonas separadas por punto y coma y son:
 zona de inicialización
 zona de condición
 zona de incremento ó decremento
Su sintaxis es de la siguiente forma:
for(inicialización; condicion;
incremento/decremento){ instrucción 1;
instrucción 2
...
instrucción N;}
En alguna ocasión puede no ser necesario escribir alguna de ellas. En
ese caso se pueden dejar en blanco, pero los punto y coma deben
aparecer.El funcionamiento de un bucle for el siguiente:
1. Se inicializa la variable o variables de control.
2. Se evalúa la condición.
3. Si la condición es cierta se ejecutan las instrucciones. Si es
falsa, finaliza la ejecución del bucle y continúa el programa en la
siguiente instrucción después del for
4. Se actualiza la variable o variables de control
(incremento/decremento)
5. Se pasa al punto 2).
Esta instrucción es especialmente indicada para bucles donde se
conozca el número de repeticiones que se van a hacer. Como regla
práctica podríamos decir que las instrucciones while y do-while se
utilizan generalmente cuando no se conoce a el número de
iteraciones, y la instrucción for se utiliza generalmente cuando sí se
conoce el número de iteraciones.
Para nuestro ejemplo ponemos un codigo en donde se immprime un
mensaje en pantalla 10 veces con este ciclo for:
#include <iostream>
main()
{
for (int i=1;i<=10;i++){
printf("%d Este es un cliclo forn",i);
}
Cadenas de caracteres en C++
Una cadena de caracteres en C/C++ es un array unidimensional de caracteres. En
cada elemento del array se almacena un carácter de la cadena y a continuación del
último carácter se añade un elemento más que contiene el carácter nulo.
El carácter nulo sirve como indicador de fin de cadena.
Las cadenas se declaran como un array unidimensional de tipo char.
Por ejemplo:
char titulo[30]; //titulo es un array de 30 caracteres como máximo.
char nombre[25]; //nombre es un array de 25 caracteres como máximo
Los arrays de caracteres pueden inicializarse cuando se declaran. Lo podemos
hacer de dos formas: asignando valores a cada elemento o directamente mediante
un literal de tipo cadena de caracteres.
Si se inicializa elemento a elemento no es necesario indicar el tamaño del array, el
compilador asumirá que el array tiene tantos elementos como valores iniciales
hemos indicado. Si queremos que el array pueda contener más caracteres entonces
sí será necesario indicar el tamaño total en la declaración.
Ejemplos de inicialización de arrays de caracteres asignando valores a cada
elemento:
char b[]={'L','u','n','e','s','0'};
De forma gráfica el array que se crea es:
char c[10]={'M','a','r','t','e','s','0'};
En este caso hemos indicado que el tamaño es 10 pero solo hemos proporcionado 7
caracteres. Los tres elementos restantes tomarán un valor indeterminado:
Ejemplos de inicialización de arrays de caracteres utilizando un literal:
char a[] = "Hola";
esta declaración crea el array:
Vemo que en este caso el carácter nulo se añade automáticamente.
char d[10] = "ENERO";
En este caso hemos indicado que el tamaño es 10 pero el literal solo tiene 5. El
array que se crea es:
Cuando inicializamos un array de caracteres con un literal normalmente no se
indica el tamaño. El sistema asigna el tamaño de forma automática. Esto incluye la
reserva para el carácter nulo ‘0’, que se añade automáticamente al final de
cada cadena de caracteres. El nulo se debe poner de forma manual si se asigna
carácter a carácter.
Los arrays de caracteres en C/C++ son de tamaño fijo y longitud variable.
Esto significa que cuando declaramos un array de caracteres tendremos que indicar
el tamaño máximo del array o sea el número de caracteres máximo que tendrá la
cadena de caracteres más el carácter nulo. Pero esto no significa que este array no
se pueda utilizar para contener una cadena más corta. El array seguirá teniendo un
tamaño fijo pero su longitud será el de la cadena que contiene en cada momento.
Por ejemplo:
char d[10] = "ENERO";
d es un array de tamaño 10, es decir, podrá contener como máximo 10 caracteres
y su longitud actual es 5.
Leer cadenas de caracteres por teclado.
Como una cadena se implementa en C++ como un array de caractres,
podemos leer por teclado carácter a carácter utilizando el método get y asignar
valores como los demás arrays, elemento a elemento.
Ejemplo de lectura de cadena de caracteres elemento a elemento:
#include <iostream>
using namespace std;
int main(void)
{
char cadena[10];
int i;
for(i=0;i<9;i++) // máximo 9 caracteres
cin.get(cadena[i]); // se lee por teclado un carácter y
// se guarda en el array
cadena[i]='0'; // debemos añadir el nulo al final
cout << "Ha escrito: " << cadena << endl;
system("pause");
}
Debemos asegurarnos de que las cadenas creadas carácter a carácter acaban con
el carácter nulo. En el ejemplo, la cadena se ha declarado con un tamaño máximo
de 10 caracteres por lo que solo se podrán guardar 9 caracteres ya que el último se
debe reservar al carácter nulo.
También podemos asignar una cadena completa a un array de caracteres
utilizando el método getline.
La forma general de uso de getline es:
cin.getline(cadena, num, carácter_final);
cadena es el array donde vamos a almacenar los caracteres.
getline lee una serie de caracteres desde el flujo de entrada y los almacena en la
variable cadena. Se leen caracteres hasta el final del flujo, hasta el primer carácter
que coincide con el carácter_final especificado, el cual se desecha ó hasta que se han
leído num-1 caracteres.
getline añade el carácter nulo (0) al final de la cadena extraída.
Utilizando getline para leer por teclado la cadena del ejemplo anterior escribiremos
la instrucción:
cin.getline(cadena, 10, 'n');
El carácter final se puede omitir, si no aparece se supone que es n :
cin.getline(nombre, 50);
Recorrer cadenas de caracteres
Por ser un array de caracteres puede recorrerse elemento a elemento hasta
encontrar el nulo.
Ejemplo: Programa C++ que lee por teclado una cadena de caracteres y la guarda
en el array cadena. A continuación lo recorre desde el principio y muestra cada
carácter por pantalla hasta que encuentra el carácter nulo.
#include <iostream>
using namespace std;
int main(void)
{
char cadena[30];
cin.getline(cadena,30); //lectura de la cadena por teclado
//se asignarán 29 caracteres como máximo
//el carácter nulo se añade de forma automática
//recorrido de la cadena de caracteres
int i=0; //variable índice para recorrer la cadena
while(cadena[i]!='0') //mientras no lleguemos al nulo
{
cout << cadena[i]; //se muestra el carácter
i++; //se incrementa el índice
}
cout << endl;
system("pause");
}
Si lo que queremos es visualizar toda la cadena, no es necesario recorrerla carácter
a carácter, simplemente podemos escribir:
cout << cadena;
Esta sentencia visualiza todos los caracteres de la cadena desde el primero hasta el
carácter nulo. Si la cadena la hemos creado sin poner el nulo al final, se mostrará el
contenido de la cadena seguido de basura.

Más contenido relacionado

Similar a definiciones de c++ para el trabajo.docx

2154086 curso-c-c-con-clase
2154086 curso-c-c-con-clase2154086 curso-c-c-con-clase
2154086 curso-c-c-con-claseEdgar Rodriguez
 
Cursocpp
CursocppCursocpp
Cursocppzotek
 
Curso de programacion en c++ prev
Curso de programacion en c++ prevCurso de programacion en c++ prev
Curso de programacion en c++ prevjtk1
 
Presentacion de la Estructura basica para_c++
Presentacion de la Estructura basica para_c++Presentacion de la Estructura basica para_c++
Presentacion de la Estructura basica para_c++ValeriaBerrones
 
Estructura basica para_c_
Estructura basica para_c_Estructura basica para_c_
Estructura basica para_c_Jesus22barrera
 
Introducción a Programación I (Clase1).pptx
Introducción a Programación I (Clase1).pptxIntroducción a Programación I (Clase1).pptx
Introducción a Programación I (Clase1).pptxDavidGarca147527
 
Programación c
Programación cProgramación c
Programación cvictdiazm
 
Lenguaje c completo 6 g x revisar x los estudiantes
Lenguaje c completo 6 g x revisar x los estudiantesLenguaje c completo 6 g x revisar x los estudiantes
Lenguaje c completo 6 g x revisar x los estudiantesJhon Jairo C Q
 
Varios tema de c++ por (alvaro tejada)
Varios tema de c++ por (alvaro tejada)Varios tema de c++ por (alvaro tejada)
Varios tema de c++ por (alvaro tejada)javiel162009
 
El arte de programar c++ - versión 3.0
El arte de programar   c++ - versión 3.0El arte de programar   c++ - versión 3.0
El arte de programar c++ - versión 3.0javiel162009
 
C sharp manual[1]
C sharp manual[1]C sharp manual[1]
C sharp manual[1]Kalizbeth
 
Introducción a La Programación En C
Introducción a La Programación En CIntroducción a La Programación En C
Introducción a La Programación En Cpainni
 
Generalidades de la programacion
Generalidades de la programacionGeneralidades de la programacion
Generalidades de la programacionDiego Rojas
 

Similar a definiciones de c++ para el trabajo.docx (20)

2154086 curso-c-c-con-clase
2154086 curso-c-c-con-clase2154086 curso-c-c-con-clase
2154086 curso-c-c-con-clase
 
Cursocpp
CursocppCursocpp
Cursocpp
 
37975756-Guia-de-C
37975756-Guia-de-C37975756-Guia-de-C
37975756-Guia-de-C
 
Curso de programacion en c++ prev
Curso de programacion en c++ prevCurso de programacion en c++ prev
Curso de programacion en c++ prev
 
Presentacion de la Estructura basica para_c++
Presentacion de la Estructura basica para_c++Presentacion de la Estructura basica para_c++
Presentacion de la Estructura basica para_c++
 
Estructura basica para_c_
Estructura basica para_c_Estructura basica para_c_
Estructura basica para_c_
 
Introducción a Programación I (Clase1).pptx
Introducción a Programación I (Clase1).pptxIntroducción a Programación I (Clase1).pptx
Introducción a Programación I (Clase1).pptx
 
Programación c
Programación cProgramación c
Programación c
 
Programación c
Programación cProgramación c
Programación c
 
Lenguaje c completo 6 g x revisar x los estudiantes
Lenguaje c completo 6 g x revisar x los estudiantesLenguaje c completo 6 g x revisar x los estudiantes
Lenguaje c completo 6 g x revisar x los estudiantes
 
Varios tema de c++ por (alvaro tejada)
Varios tema de c++ por (alvaro tejada)Varios tema de c++ por (alvaro tejada)
Varios tema de c++ por (alvaro tejada)
 
El arte de programar c++ - versión 3.0
El arte de programar   c++ - versión 3.0El arte de programar   c++ - versión 3.0
El arte de programar c++ - versión 3.0
 
Prueba
PruebaPrueba
Prueba
 
C sharp manual
C sharp manualC sharp manual
C sharp manual
 
C sharp manual
C sharp manualC sharp manual
C sharp manual
 
C sharp manual[1]
C sharp manual[1]C sharp manual[1]
C sharp manual[1]
 
C sharp manual
C sharp manualC sharp manual
C sharp manual
 
C#
C#C#
C#
 
Introducción a La Programación En C
Introducción a La Programación En CIntroducción a La Programación En C
Introducción a La Programación En C
 
Generalidades de la programacion
Generalidades de la programacionGeneralidades de la programacion
Generalidades de la programacion
 

Último

-PEIC-NUEVO de plantel educativo Venezuela
-PEIC-NUEVO de plantel educativo Venezuela-PEIC-NUEVO de plantel educativo Venezuela
-PEIC-NUEVO de plantel educativo VenezuelaJESUS341998
 
DIARIO EL PERUANO 19-06-202hhhhhhhh3.pdf
DIARIO EL PERUANO 19-06-202hhhhhhhh3.pdfDIARIO EL PERUANO 19-06-202hhhhhhhh3.pdf
DIARIO EL PERUANO 19-06-202hhhhhhhh3.pdfhugorebaza00
 
FASES DE LA CONSULTORÍA- parte 1aa.pptx
FASES DE LA CONSULTORÍA- parte 1aa.pptxFASES DE LA CONSULTORÍA- parte 1aa.pptx
FASES DE LA CONSULTORÍA- parte 1aa.pptx10ColungaFloresJosSa
 
CONTRATO DE TRABAJO, remuneraciones y otros datos
CONTRATO DE TRABAJO, remuneraciones y otros datosCONTRATO DE TRABAJO, remuneraciones y otros datos
CONTRATO DE TRABAJO, remuneraciones y otros datosJENNIFERBERARDI1
 
MODERNISMO VS POSMODERNISMO CUADRO SINOPTICO
MODERNISMO VS POSMODERNISMO CUADRO SINOPTICOMODERNISMO VS POSMODERNISMO CUADRO SINOPTICO
MODERNISMO VS POSMODERNISMO CUADRO SINOPTICOIreneGonzalez603427
 
¡Explora el boletín del 29 abril de 2024!
¡Explora el boletín del 29 abril de 2024!¡Explora el boletín del 29 abril de 2024!
¡Explora el boletín del 29 abril de 2024!Yes Europa
 
EMBARQUE Y DESEMBARQUE VEHICULOS MILITARES .pptx
EMBARQUE Y DESEMBARQUE VEHICULOS MILITARES .pptxEMBARQUE Y DESEMBARQUE VEHICULOS MILITARES .pptx
EMBARQUE Y DESEMBARQUE VEHICULOS MILITARES .pptxdaryel2
 

Último (7)

-PEIC-NUEVO de plantel educativo Venezuela
-PEIC-NUEVO de plantel educativo Venezuela-PEIC-NUEVO de plantel educativo Venezuela
-PEIC-NUEVO de plantel educativo Venezuela
 
DIARIO EL PERUANO 19-06-202hhhhhhhh3.pdf
DIARIO EL PERUANO 19-06-202hhhhhhhh3.pdfDIARIO EL PERUANO 19-06-202hhhhhhhh3.pdf
DIARIO EL PERUANO 19-06-202hhhhhhhh3.pdf
 
FASES DE LA CONSULTORÍA- parte 1aa.pptx
FASES DE LA CONSULTORÍA- parte 1aa.pptxFASES DE LA CONSULTORÍA- parte 1aa.pptx
FASES DE LA CONSULTORÍA- parte 1aa.pptx
 
CONTRATO DE TRABAJO, remuneraciones y otros datos
CONTRATO DE TRABAJO, remuneraciones y otros datosCONTRATO DE TRABAJO, remuneraciones y otros datos
CONTRATO DE TRABAJO, remuneraciones y otros datos
 
MODERNISMO VS POSMODERNISMO CUADRO SINOPTICO
MODERNISMO VS POSMODERNISMO CUADRO SINOPTICOMODERNISMO VS POSMODERNISMO CUADRO SINOPTICO
MODERNISMO VS POSMODERNISMO CUADRO SINOPTICO
 
¡Explora el boletín del 29 abril de 2024!
¡Explora el boletín del 29 abril de 2024!¡Explora el boletín del 29 abril de 2024!
¡Explora el boletín del 29 abril de 2024!
 
EMBARQUE Y DESEMBARQUE VEHICULOS MILITARES .pptx
EMBARQUE Y DESEMBARQUE VEHICULOS MILITARES .pptxEMBARQUE Y DESEMBARQUE VEHICULOS MILITARES .pptx
EMBARQUE Y DESEMBARQUE VEHICULOS MILITARES .pptx
 

definiciones de c++ para el trabajo.docx

  • 1. ¡`Que es c++ C++ es un lenguaje de programación multiparadigma, puesto que permite programar de manera imperativa, orientada a objetos o genérica. Es un lenguaje nacido a principios de los años 80, pero que ha ido adquiriendo popularidad a finales de esa década y a principios de la década de los 90, puesto que ha sido el lenguaje favorito para la creación de aplicaciones de escritorio, ofimática y de juegos, tipos de aplicaciones muy populares en esa época. El estándar C++11 (liberado el año 2011) incorpora muchísimas características al lenguaje que lo hacen mucho más interesante y sencillo para el desarrollo de aplicaciones genéricas, con un manejo más fácil de la memoria (a través de punteros inteligentes) y con una librería estándar más rica. Aunque sigue siendo el lenguaje predilecto para la creación de juegos de alta gama y aplicaciones de ofimática; su nicho de mercado está en el desarrollo de sistemas operativos, máquinas virtuales, compiladores, navegadores de internet y cualquier aplicación donde el alto rendimiento sea prioritario. Como funciona Qué es C++? C++ es un superconjunto creado a partir del lenguaje C, cuenta con todas las funcionalidades de C y agrega funcionalidades nuevas como clases, sobrecarga de funciones, herencia entre clases, etc. Origen Su origen data del año 1979 y se le atribuye a Bjarne Stroustrup. El lenguaje que inspiró a Stroustrup fue el lenguaje Simula (lenguaje usado para simulaciones), que es considerado el primer lenguaje en permitir programación orientada a objetos. Stroustrup considero que esta funcionalidad del lenguaje Simula era muy útil en el desarrollo de software, pero Simula era muy lento para un uso práctico. Bjarne Stroustrup Stroustrup comenzó a trabajar en su lenguaje llamado “C with classes” (C con clases) , su meta era agregar programación orientada a objetos al lenguaje C. El primer compilador de este lenguaje fue
  • 2. Cfront (un compilador escrito en C with classes) derivado del compilador de lenguaje C llamado CPre, aunque en 1993 se dejaría de usar por la dificultad para agregar nuevas funciones. En 1983 el nombre del lenguaje fue cambiado de “C with classes” a “C++”. Podemos entender con esto la imagen que tenía Stroustrup de su lenguaje como una mejora del lenguaje “C” (al ser ++ un incrementador de variable). Para 1985 Stroustrup publicó su referencia al lenguaje “The C++ Programming Language” (“El lenguaje de programación C++), el cual fue muy importante debido a la falta de estandarización del lenguaje recién creado. En 1990 se publicó “The Annotated C++ Reference Manual” (Manual de referencia anotada de C++) y ese mismo año salió al mercado el compilador “Turbo C++” (desarrollado por Borland Software Corporation) que agregaba una gran cantidad de nuevas librerías al lenguaje, ayudando a su desarrollo. El proyecto de librerías “Boost” agrego nuevas funcionalidades al lenguaje tales como aleatorización comprehensiva y una nueva librería de tiempo. Estandarización En 1998 el “Comité de estándares de C++” publicó su primera estandarización internacional ISO/IEC 14882:1998 (conocida también como C++98) la cual, al tener varios problemas, fue actualizada en 2003 (C++03). En 2011 se terminó y publicó la nueva estandarización del lenguaje (C++11). Estructura de un programa C++ C++ es un lenguaje de programación orientado a objetos híbrido. Esto quiere decir que permite realizar programas estructurados sin la orientación a objetos y programas orientados a objetos. En este punto veremos la estructura de un programa que no utiliza orientación a objetos. En temas posteriores estudiaremos la estructura de un programa C++ orientado a objetos. La estructura general de un programa C++ es la siguiente: Comentarios Directivas del preprocesador
  • 3. Declaración de variables globales y funciones int main( ) // Función principal main { Declaraciones locales de la función principal Instrucciones de la función principal } Otras funciones: funcion1(.....) { Declaraciones locales de la función 1 Instrucciones de la función 1 } funcion2(.....) { Declaraciones locales de la función 2 Instrucciones de la función 2 } ..... Por ejemplo: // Programa que muestra el mensaje Hola mundo!!! por pantalla #include <iostream> using namespace std; int main(void) { cout << "Hola mundo!!!n"; } Vamos a comentar cada una de las partes del programa anterior: // Programa que muestra el mensaje Hola mundo!!! por pantalla Esta línea es un comentario. Todas las líneas que comienzan con dos barras (//) se consideran comentarios y no tienen ningún efecto sobre el comportamiento del programa. Los comentarios también pueden ir entre los símbolos /* y */. En ese caso pueden ocupar más de una línea. #include <iostream> Esta línea es una directiva del preprocesador. Todas las líneas que comienzan con el símbolo # son directivas para el preprocesador. La directiva #include, sirve para insertar ficheros externos dentro de nuestro programa. Estos ficheros son conocidos como ficheros incluidos, ficheros de cabecera o headers. En este caso, la directiva #include <iostream> indica al preprocesador que en este programa se debe incluir el archivo iostream. El código fuente no cambia, pero el compilador ve el fichero incluido. iostream es la librería de entrada/salida de C++. Si no se incluye esta librería no podemos utilizar la instrucción cout para imprimir un mensaje por pantalla. La inclusión de ficheros la podemos realizar de dos formas: #include <nombre de fichero cabecera> #include "nombre de fichero de cabecera"
  • 4. En el primer caso el preprocesador buscará en los directorios include definidos en el compilador. En el segundo, se buscará primero en el directorio actual, es decir, en el que se encuentre el fichero fuente, si no existe en ese directorio, se buscará en los directorios include definidos en el compilador. Si se proporciona el camino como parte del nombre de fichero, sólo se buscará en el directorio especificado. using namespace std; En grandes proyectos formados por varios archivos, es posible que en archivos diferentes del mismo proyecto se encuentren recursos con el mismo nombre. Para evitar confusiones y saber a qué recurso estamos haciendo referencia se utilizan los espacios de nombres (namespace). Un espacio de nombres es básicamente un conjunto de nombres de recursos (clases, métodos, funciones, etc) en el cual todos los nombres son únicos. Todos los elementos de la biblioteca estándar de C++ se declaran dentro de un espacio de nombres llamado std. Con la instrucción using namespace std estamos indicando que vamos a usar este espacio de nombres. Esta línea se incluirá en la mayoría de programas que escribamos en C++. Si no la escribimos, la instrucción cout << "Hola mundo!!!n"; tendríamos que escribirla indicando el espacio de nombres donde se declara cout así: std::cout<<”Hola mundo!!!n”; int main (void) Un programa en C++ no orientado a objetos está formado básicamente por una o varias funciones. La función main es la función principal del programa. La función principal es el punto de inicio del programa. Si el programa contiene varias funciones, la ejecución del mismo comienza por la función main. Todo programa escrito en C++ debe contener una función main. Las llaves { } indican donde empiezan y donde acaban las instrucciones de la función. cout << "Hola mundo!!!n"; Esta línea muestra por pantalla Hola mundo!!! y un salto de línea. cout es un objeto que se declara en el archivo iostream en el espacio de nombres std, por eso tenemos que incluir ese archivo al principio del programa y declarar que vamos a utilizar ese espacio de nombres. La instrucción acaba con punto y coma. El punto y coma se utiliza para indicar el final de una instrucción y sirve para separarla de instrucciones posteriores. Switch
  • 5. 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
  • 6. 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;
  • 7. //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
  • 8. 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
  • 9. 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";
  • 10. 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";
  • 11. 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; } Nota: Si no comprendes alguna de las líneas de estos códigos, te recomiendo visitar los contenidos anteriores (Entrada y Salida de Datos, Librerías ó Comentarios, Estructura de un Programa) o también puedes dejar un comentario al final de la sección con tu pregunta. 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: ";
  • 12. 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() {
  • 13. 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; } Eso es todo. Como ves, en esencia es el mismo código, pero debes asegurarte de poner las diferentes opciones entre comillas simples ('), puesto que la comparación es entre caracteres.
  • 14. Detalles sobre el condicional switch en C++  En C++, NO puedes usar otra cosa diferente a número en cada case. Si necesitas comparar cadenas de texto u otros tipos de datos, seguramente un condicional como el if o if-else sean una mejor alternativa  Los caracteres también se pueden usar, pues en esencia se pueden representar como números enteros (el lenguaje se encarga de eso por ti). Sin embargo, como indiqué, otros tipos de datos no son recomendables  La sentencia default es opcional, así que si no lo deseas no la debes poner. Sin embargo, es recomendable hacerlo, para así controlar todas las opciones posibles y que tu programa no quede a la "suerte" en ciertos casos.  Dentro de cada case eres libre de poner varias líneas de código, incluso otras estructuras como condicionales o ciclos. Sin embargo, es preferible mantener tu código ordenado y no poner muchas. Recomendaría no poner más de 5 y preferiblemente solo una. Si deseas hacer tareas complejas al interior de un case de un switch en C++, posiblemente sea mejor hacer esas tareas en una función y llamar a esa función desde el case o simplemente usar un if-else. Así que, efectivamente, los condicionales switch y de hecho todos los condicionales en sí, 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. Me gustaría hacer una leve aclaración, el condicional switch encuentra su utilidad al momento de tener más de una posibilidad de valores para una variable cualquiera, evidentemente si nuestra variable solo puede adquirir un valor útil para nosotros, nuestra alternativa inmediata debería ser un if o un if-else, no un switch que resulta un poco mas engorroso de escribir, sin embargo cuando tenemos varias posibilidades es mejor un switch que tener condicionales anidados o un condicional después de otro. Espero que todo te haya quedado claro en esta sección.
  • 15. Muy bien de momento, es todo en esta sección, podemos entonces continuar ahora con el siguiente contenido que son los Ciclos en C++, recuerda también dejar tus comentarios y/o preguntas en la sección de comentarios. Comentarios Comentarios en C++ Los comentarios se utilizan para explicar el código fuente. Un comentario es un texto que se escribe dentro de un programa con el fin de facilitar la comprensión del mismo. En C++ se pueden utilizar dos tipos de comentarios: Comentario tradicional estilo C: Empieza con los caracteres /* y acaba con */. Pueden ocupar más de una línea y pueden aparecer en cualquier lugar donde pueda aparear un espacio en blanco. No pueden anidarse. Ejemplos de comentarios estilo C: /* Programa EcuaciónSegundoGrado Calcula las soluciones de una ecuación de segundo grado */ /* Lectura de datos por teclado */ Comentarios de una sola línea: Comienzan con una doble barra ( // ) y se pueden extender hasta el final de la línea. Ejemplos de comentarios C++ de línea: // Programa Ecuación segundo grado // Calcula las soluciones de una ecuación de segundo grado int p; // precio del producto Tipos de datos en C++ Los tipos de datos en C++ se clasifican en primitivos y derivados. Los tipos de datos primitivos son los que están definidos dentro del lenguaje.
  • 16. Los tipos de datos derivados se forman a partir de los tipos primitivos. En este tema veremos los tipos primitivos y en temas siguientes estudiaremos los tipos derivados. Los tipos de datos primitivos en C++ son: numéricos enteros, numéricos reales, tipo lógico y tipo carácter ampliado. Tipos de datos C++ numéricos enteros El tipo de dato numérico entero es un subconjunto finito de los números enteros del mundo real. Pueden ser positivos o negativos. En C++ los tipos de datos numéricos enteros son los siguientes: Tipo de Dato Descripción Número de bytes típico Rango short Entero corto 2 -32768 a 32767 int Entero 4 -2147483648 a +2147483647 long Entero largo 4 -2147483648 a +2147483647 char Carácter 1 -128 a 127 Con los tipos enteros pueden utilizarse los calificadores signed y unsigned. Estos calificadores indican si el número tiene signo o no. Si se usan solos, sin indicar el tipo de dato se asume int. Por ejemplo, las siguientes declaraciones son equivalentes: unsigned int x; equivale a: unsigned x; Usando estos calificadores podemos tener los siguientes tipos enteros: Tipo de Dato Descripción Número de bytes típico Rango signed short Entero corto 2 -32768 a 32767 unsigned short Entero corto sin signo 2 0 a 65535 signed int Entero 4 -2147483648 a +2147483647 unsigned int Entero sin signo 4 0 a 4294967295 signed long Entero largo 4 -2147483648 a +2147483647
  • 17. unsigned long Entero largo sin signo 4 0 a 4294967295 signed char Carácter 1 -128 a 127 unsigned char Carácter sin signo 1 0 a 255 Podemos ver que los datos enteros de tipo signed son equivalentes a los enteros sin utilizar el calificador: signed int a; es equivalente a escribir int a; Tipos de datos numéricos reales El tipo de dato numérico real es un subconjunto finito de los números reales. Pueden ser positivos o negativos. En C++ los tipos de datos numéricos reales son los siguientes: Tipo de Dato Descripción Número de bytes típico Rango float Real (Número en coma flotante) 4 Positivos: 3.4E-38 a 3.4E38 Negativos: -3.4E-38 a -3.4E38 double Real doble(Número en coma flotante de doble precisión) 8 Positivos: 1.7E-308 a 1.7E308 Negativos: -1.7E-308 a - 1.7E308 long double Real doble largo 10 Positivos: 3.4E-4932 a 1.1E4932 Negativos: -3.4E-4932 a - 1.1E4932 Tipo lógico Los datos de este tipo sólo pueden contener dos valores: true ó false (verdadero ó falso). Si se muestran como enteros, el valor true toma el valor 1 y false el valor 0. Tipo de Dato Descripción Número de bytes típico Rango bool Dato de tipo lógico 1 0, 1 Tipo carácter extendido
  • 18. Este tipo se utiliza para representar caracteres UNICODE. Utiliza 2 bytes a diferencia del tipo char que solo utiliza 1. Tipo de Dato Descripción Número de bytes típico Rango wchar_t Carácter Unicode 2 0 a 65535 Estructuras de Control en C++ Publicado por tutorioz en marzo 19, 2020 Las estructuras de control determinan la secuencia en la que se ejecutarán las instrucciones de un programa. Las estructuras de control se dividen en tres categorías en función del flujo de ejecución:  Estructura secuencial  Estructura alternativa o condicional  Estructura iterativa o repetitiva. Estructura Secuencial La estructura secuencial está formada por una secuencia de instrucciones que se ejecutan en orden una a continuación de la otra. Cada una de las instrucciones están separadas por el carácter punto y coma. No obstante, en algunos casos nos interesará agrupar en un bloque una serie de instrucciones, como veremos al explicar las estructuras de selección y de iteración. El bloque de sentencias se define por el carácter llave de apertura ( { ) para marcar el inicio del mismo, y el carácter llave de cierre ( } ) para marcar el final.Por ejemplo: {instrucción 1; instrucción 2; ... instrucción N;}
  • 19. Sin embargo, en caso de que el bloque de sentencias este constituido por una única sentencia no es obligatorio el uso de las llaves de apertura y cierre ( { } ). Estructura alternativa o condicional Las estructuras condicionales controlan si una sentencia o bloque de sentencias se ejecutan, en función del cumplimiento o no de una condición o expresión lógica. En C++ existen dos estructuras de control para la selección: if y switch. Instrucción IF Esta instrucción hace que se ejecuten unas sentencias u otras dependiendo del valor que toma una condición Ejemplo if simple if(condición){ instrucción 1;} O puede ser: if(condición){ instrucción 1; instrucción 2; instrucción 3;} Ejemplo de if – else if(condición){ instrucción 1; } else{ instrucción2;} O puede ser: if(condición){ Instrucción 1; instrucción 2;} else{
  • 20. instrucción 3; instrucción 4;} Vamos a ver un código de ejemplo con estructura condicional que lee un número entero (tu edad) por teclado y muestra si eres mayor de edad o no. #include <iostream> main(){ int edad; printf("Introduce tu edad: "); scanf("%d", &edad); if(edad>=18){ printf("nEres mayor de edadn"); }else{ printf("nNo eres mayor de edadnn"); } system("pause"); } Las instrucciones if-else se pueden anidar obteniéndose una estructura condicional múltiple: if(condición 1){ instrucción 1;} else if(condición 2){ instrucción 2;} else if(condición 3){
  • 21. instrucción 3;} else if(condición 4){ instrucción 4;} else{ instrucción 5; instrucción 6;} En este caso se evalúa la condición 1 si es cierta, se ejecuta la instrucción 1 y se continúa por la instrucción 6 después del bloque de else-if anidados. Si la condición 1 es falsa, se evalúa la condición 2, y así sucesivamente.En caso de no ser cierta ninguna de las condiciones, la sentencia que se ejecuta es la del último else, es decir, la instrucción 5. Vamos a ver esto que acabamos de leer en un ejemplo de un programa que lee un numero entero y asigna una nota según la calificación ingresada: #include <iostream> main(){ unsigned int calif; printf("Introduce tu calificacion:"); scanf("%d", &calif); if (calif == 10){ printf("Excelente"); } else if (calif == 9){ printf("Sobresaliente");
  • 22. } else if (calif == 8){ printf("Notable"); } else if (calif == 7){ printf("Puede mejorar"); } else if(calif == 6){ printf("Apenas pasaste"); } else{ printf("REPROBADO"); } printf("nn"); system("pause"); } Instrucción switch La sentencia switch selecciona una de entre múltiples alternativas.La forma general de esta expresión es la siguiente: switch (expresión){ case constante 1:
  • 23. instrucciones; break; case constante 2: instrucciones; break; · · · default: instrucciones;} La instrucción switch evalúa la expresión entre paréntesis y compara su valor con las constantes de cada case. Se ejecutarán las instrucciones de aquel case cuya constante coincida con el valor de la expresión, y continúa hasta el final del bloque o hasta una instrucción que transfiera el control fuera del bloque del switch (una instrucción break, o return). Si no existe una constante igual al valor de la expresión, entonces se ejecutan las sentencias que están a continuación de default. Vamos a hacer un ejemplo con el uso de switch donde nos va a indicar que opción seleccionamos. #include <iostream> int main(){ printf("Ingrese la Opcion a ejecutar: "); int opcion = 0; scanf("%d", &opcion); switch(opcion) {
  • 24. case 1: printf("nUsted ha seleccionado la opcion 1n"); break; case 2: printf("nUsted ha seleccionado la opcion 2n"); break; case 3: printf("nUsted ha seleccionado la opcion 3n"); break; default: printf("nUsted ha ingresado una opcion incorrectan"); } } Estructuras repetitivas o iterativas C++ dispone de tres estructuras repetitivas:  while  do-while  for. Instrucción while Ejecuta una instrucción o un bloque de instrucciones cero o más veces, dependiendo del valor de la condición.Se evalúa la condición, y si es cierta, se ejecuta la instrucción o bloque de instrucciones y se vuelve a evaluar la condición; pero si la condición es falsa, se pasa a ejecutar la siguiente instrucción después del while. Su sintaxis es la siguiente: while(condición){ instrucción 1; instrucción 2; ...
  • 25. instrucción N;} Vamos a hacer un ejemplo para que se entienda mucho mejor. Es un programa que se va a ejecutar mientras se ingresen números del 1 al 10, si se ingresa un numero mayor a 10 el programa finaliza ya que la condición ya no se cumple. #include <iostream> main() { int numero; printf("Teclea un numero (0 para salir): "); scanf("%d", &numero); while (numero!=0) { printf("Ejecutando...n"); printf("Teclea otro numero (0 para salir): "); scanf("%d", &numero); } } En este ejemplo, si se introduce 0 la primera vez, la condición es falsa y ni siquiera se entra al bloque del “while”, terminando el programa inmediatamente.
  • 26. Instrucción do while. Ejecuta una instrucción o un bloque de instrucciones, una o más veces, dependiendo del valor de la condición.Se ejecuta la instrucción o bloque de instrucciones y a continuación se evalúa la condición. Si la condición es cierta, se vuelve a ejecutar la instrucción o bloque de instrucciones, y si es falsa, pasa a ejecutarse la siguiente instrucción después del do-while. Cuando se utiliza una instrucción do-while el bloque de instrucciones se ejecuta al menos una vez, ya que la condición se evalúa al final. En cambio, con una instrucción while, puede suceder que el bloque de instrucciones no llegue a ejecutarse nunca si la condición inicialmente es falsa. Su sintaxis es la siguiente: do{instrucción 1; instrucción 2; ... instrucción N;} while (condicion); A continuación les dejo un ejemplo para que sea mas simple de comprender. Como ejemplo, vamos a ver cómo sería el típico programa que nos pide una clave de acceso y nos nos deja entrar hasta que tecleemos la clave correcta. Eso sí, como todavía no sabemos manejar cadenas de texto, la clave será un número: #include <iostream> main() { int valida = 943; int clave;
  • 27. do { printf("Introduzca su clave numerica: "); scanf("%d", &clave); if (clave != valida) printf("Clave no validan"); } while (clave != valida); printf("Clave validan"); } En este caso, se comprueba la condición al final, de modo que se nos preguntará la clave al menos una vez. Mientras que la respuesta que ingresemos no sea la correcta, se nos vuelve a preguntar. Finalmente, cuando tecleamos la clave correcta, el programa escribe “Calve valida” y termina la ejecución. Instrucción for Un bucle for hace que una instrucción o bloque de instrucciones se repitan un número determinado de veces mientras se cumpla la condición. A continuación de la palabra for y entre paréntesis debe haber siempre tres zonas separadas por punto y coma y son:  zona de inicialización  zona de condición  zona de incremento ó decremento Su sintaxis es de la siguiente forma: for(inicialización; condicion; incremento/decremento){ instrucción 1; instrucción 2
  • 28. ... instrucción N;} En alguna ocasión puede no ser necesario escribir alguna de ellas. En ese caso se pueden dejar en blanco, pero los punto y coma deben aparecer.El funcionamiento de un bucle for el siguiente: 1. Se inicializa la variable o variables de control. 2. Se evalúa la condición. 3. Si la condición es cierta se ejecutan las instrucciones. Si es falsa, finaliza la ejecución del bucle y continúa el programa en la siguiente instrucción después del for 4. Se actualiza la variable o variables de control (incremento/decremento) 5. Se pasa al punto 2). Esta instrucción es especialmente indicada para bucles donde se conozca el número de repeticiones que se van a hacer. Como regla práctica podríamos decir que las instrucciones while y do-while se utilizan generalmente cuando no se conoce a el número de iteraciones, y la instrucción for se utiliza generalmente cuando sí se conoce el número de iteraciones. Para nuestro ejemplo ponemos un codigo en donde se immprime un mensaje en pantalla 10 veces con este ciclo for: #include <iostream> main() { for (int i=1;i<=10;i++){ printf("%d Este es un cliclo forn",i); } Cadenas de caracteres en C++
  • 29. Una cadena de caracteres en C/C++ es un array unidimensional de caracteres. En cada elemento del array se almacena un carácter de la cadena y a continuación del último carácter se añade un elemento más que contiene el carácter nulo. El carácter nulo sirve como indicador de fin de cadena. Las cadenas se declaran como un array unidimensional de tipo char. Por ejemplo: char titulo[30]; //titulo es un array de 30 caracteres como máximo. char nombre[25]; //nombre es un array de 25 caracteres como máximo Los arrays de caracteres pueden inicializarse cuando se declaran. Lo podemos hacer de dos formas: asignando valores a cada elemento o directamente mediante un literal de tipo cadena de caracteres. Si se inicializa elemento a elemento no es necesario indicar el tamaño del array, el compilador asumirá que el array tiene tantos elementos como valores iniciales hemos indicado. Si queremos que el array pueda contener más caracteres entonces sí será necesario indicar el tamaño total en la declaración. Ejemplos de inicialización de arrays de caracteres asignando valores a cada elemento: char b[]={'L','u','n','e','s','0'}; De forma gráfica el array que se crea es: char c[10]={'M','a','r','t','e','s','0'}; En este caso hemos indicado que el tamaño es 10 pero solo hemos proporcionado 7 caracteres. Los tres elementos restantes tomarán un valor indeterminado: Ejemplos de inicialización de arrays de caracteres utilizando un literal: char a[] = "Hola"; esta declaración crea el array: Vemo que en este caso el carácter nulo se añade automáticamente. char d[10] = "ENERO"; En este caso hemos indicado que el tamaño es 10 pero el literal solo tiene 5. El array que se crea es:
  • 30. Cuando inicializamos un array de caracteres con un literal normalmente no se indica el tamaño. El sistema asigna el tamaño de forma automática. Esto incluye la reserva para el carácter nulo ‘0’, que se añade automáticamente al final de cada cadena de caracteres. El nulo se debe poner de forma manual si se asigna carácter a carácter. Los arrays de caracteres en C/C++ son de tamaño fijo y longitud variable. Esto significa que cuando declaramos un array de caracteres tendremos que indicar el tamaño máximo del array o sea el número de caracteres máximo que tendrá la cadena de caracteres más el carácter nulo. Pero esto no significa que este array no se pueda utilizar para contener una cadena más corta. El array seguirá teniendo un tamaño fijo pero su longitud será el de la cadena que contiene en cada momento. Por ejemplo: char d[10] = "ENERO"; d es un array de tamaño 10, es decir, podrá contener como máximo 10 caracteres y su longitud actual es 5. Leer cadenas de caracteres por teclado. Como una cadena se implementa en C++ como un array de caractres, podemos leer por teclado carácter a carácter utilizando el método get y asignar valores como los demás arrays, elemento a elemento. Ejemplo de lectura de cadena de caracteres elemento a elemento: #include <iostream> using namespace std; int main(void) { char cadena[10]; int i; for(i=0;i<9;i++) // máximo 9 caracteres cin.get(cadena[i]); // se lee por teclado un carácter y // se guarda en el array cadena[i]='0'; // debemos añadir el nulo al final cout << "Ha escrito: " << cadena << endl; system("pause"); } Debemos asegurarnos de que las cadenas creadas carácter a carácter acaban con el carácter nulo. En el ejemplo, la cadena se ha declarado con un tamaño máximo
  • 31. de 10 caracteres por lo que solo se podrán guardar 9 caracteres ya que el último se debe reservar al carácter nulo. También podemos asignar una cadena completa a un array de caracteres utilizando el método getline. La forma general de uso de getline es: cin.getline(cadena, num, carácter_final); cadena es el array donde vamos a almacenar los caracteres. getline lee una serie de caracteres desde el flujo de entrada y los almacena en la variable cadena. Se leen caracteres hasta el final del flujo, hasta el primer carácter que coincide con el carácter_final especificado, el cual se desecha ó hasta que se han leído num-1 caracteres. getline añade el carácter nulo (0) al final de la cadena extraída. Utilizando getline para leer por teclado la cadena del ejemplo anterior escribiremos la instrucción: cin.getline(cadena, 10, 'n'); El carácter final se puede omitir, si no aparece se supone que es n : cin.getline(nombre, 50); Recorrer cadenas de caracteres Por ser un array de caracteres puede recorrerse elemento a elemento hasta encontrar el nulo. Ejemplo: Programa C++ que lee por teclado una cadena de caracteres y la guarda en el array cadena. A continuación lo recorre desde el principio y muestra cada carácter por pantalla hasta que encuentra el carácter nulo. #include <iostream> using namespace std; int main(void) { char cadena[30]; cin.getline(cadena,30); //lectura de la cadena por teclado //se asignarán 29 caracteres como máximo //el carácter nulo se añade de forma automática //recorrido de la cadena de caracteres int i=0; //variable índice para recorrer la cadena while(cadena[i]!='0') //mientras no lleguemos al nulo {
  • 32. cout << cadena[i]; //se muestra el carácter i++; //se incrementa el índice } cout << endl; system("pause"); } Si lo que queremos es visualizar toda la cadena, no es necesario recorrerla carácter a carácter, simplemente podemos escribir: cout << cadena; Esta sentencia visualiza todos los caracteres de la cadena desde el primero hasta el carácter nulo. Si la cadena la hemos creado sin poner el nulo al final, se mostrará el contenido de la cadena seguido de basura.