Sei sulla pagina 1di 25

Tutorial bsico de programacin en lenguaje c

Estructura de un programa.
Posiblemente la mejor forma para aprender a programar es programando, as que iniciamos con
un programa bsico en el que se describir la estructura que todo programa en c debe tener:
Programa
// Mi primer programa en C++
#include <iostream>
using namespace std;
int main ()
{
cout << Hola Mundo!;
return 0;
}

Salida en pantalla
Hola Mundo!

El programa anterior es generalmente el primer programa que todo programador aprende, y su


resultado es imprimir en la pantalla la frase Hola Mundo!.
Este es uno de los programas mas simples que se pueden escribir en c++, pero por otro lado,
contiene los componentes fundamentales de todo programa en c++, vamos a describir cada parte:
// Mi primer programa en C++
Esta es una lnea de comentario. Todas las lneas que empiecen con dos diagonales derechas
(//) son consideradas comentarios y no tienen efecto en el entorno del programa. Los comentarios
generalmente se utilizan para hacer anotaciones acerca del autor, versin o documentacin o
explicacin del cdigo del programa. En este caso es una breve descripcin del programa.
#include <iostream>
Las lneas que empiecen con el carcter numeral o tambin conocido como gato (#) son
directivas del preprocesador. Estas no son lneas de cdigo regular, pero son instrucciones para el
preprocesador del compilador, es decir las actividades anteriores a ejecutar el programa. En este
caso, la lnea #include <iostream> le indica al preprocesador que antes de compilar el programa,
incluya el archivo iostream.h. Este archivo en particular , contiene las declaraciones de las
funciones bsicas de entrada/salida de datos en c++ y se incluye por que mas adelante se utilizaran
funciones de esta, particularmente la instruccin cout.
using namespace std;
Todos los elementos de la librera estndar de c++ son declarados dentro de lo que
llamamos namespace, con el nombre std. Esta instruccin permite no sobrecargar de elementos a
nuestros programas y se hacen mas ligeros, ya que solo se encontraran disponibles los elementos de
la librera estndar de c++.

int main ()
Esta lnea corresponde al inicio de la declaracin de la funcin principal. Esta funcin es el
punto de inicio donde todos los programas de c++ inician su ejecucin, independientemente de su
posicin dentro del programa. Es por esto que se hace escencial que todos los programas de c++
tenga una funcin principal (main).
Despues de la palabra main, siguen unos parntesis (), toda vez que la definicin de main
es la de una funcin. Los parntesis son los que diferencian la declaracin de una funcin de
cualquier otra instruccin de c++. Dentro de los parntesis pueden existir parmetros o puede
quedar vaco, como es nuestro caso.
Justo despus de los parntesis se encuentra el cuerpo o contenido de la funcin principal
encerrado dentro de llaves ( { } ). Lo contenido entre las llaves ser lo que haga el programa cuando
se ejecute la funcin principal.
cout << Hola Mundo!;
Esta lnea es una instruccin en c++, por si sola produce un efecto en el programa. De
hecho, esta instruccin produce un efecto de impresin en pantalla del mensaje entre comillas.
Cout es el nombre de una funcin de la librera de streaming y su funcin es mostrar en
pantalla el texto que se encuentre entre comillas. Esta funcin se encuentra en el archivo iostream
declarado con el #include.
Notese que cada instruccin simple termina con un carcter ;, lo que indica que es el final
de la instruccin. Este carcter es el que marca el fin de toda instruccin simple y uno de los errores
mas comunes es al olvidar colocarlo.
return 0;
Esta instruccin hace que la funcion principal termine. Despus de return debe ir un cdigo
de retorno, en nuestro caso es 0, lo que indica que la funcin termino sin ningn error y es la forma
mas usual de cerrar un programa en c++.

Puedes notar que no todas las lneas escritas en un programa producen algn resultado,
estn los comentarios //, las lneas del preprocesador #, el inicio de la funcin principal main
y finalmente las lneas que son ejecutadas que son las incluidas en las llaves { } de la funcin
principal.
A pesar de haber escrito el programa de esta forma
int main ()
{
cout << Hola Mundo!;
return 0;
}

Se pudo haber escrito en una sola lnea:


int main (){cout << Hola Mundo!; return 0;}
y tener exactamente el mismo significado que el anterior, provocado por que en c++ el carcter ;
indica el fin de cada una de las instrucciones y las llaves { } encierran el cdigo de la funcin
principal.
Si agregamos una instruccin ms, el cdigo seria:
Programa
int main ()
{
cout << Hola Mundo! ;
cout << Soy un programa en c++;
return 0;
}

Salida en pantalla
Hola Mundo! Soy un programa en c++

En este programa agregamos una instruccin mas para imprimir otra parte del mensaje,
aunque pudo haberse agregado al texto encerrado entre parntesis. Podemos ver como cada
instruccin simple lleva su carcter de fin de lnea ; y vemos que en el resultado en pantalla
obtenemos la frase junta, solamente separada por el espacio en blanco dejado despus del primer
mensaje. Mas adelante se definirn los caracteres especiales que nos permitirn dejar espacios entre
mensajes impresos en la pantalla.
Al igual que en el programa anterior, es posible escribir el programa en una sola lnea:
int main (){cout << Hola Mundo! ;cout << Soy un programa en c++;return 0;}
obteniendo el mismo resultado o si lo consideraramos convenientes es posible dividirlo en mas de
una lnea.
int main ()
{
cout <<
Hola Mundo! ;
cout <<
Soy un programa en c++;
return 0;
}
Recordando que los caracteres ; son los que le indican al procesador donde termina cada una de
las lneas del programa.

Comentarios.

Los comentarios dentro de un programa en c++ son parte de cdigo que hace nada y
usualmente se utilizan para hacer anotaciones, como puede ser el autor, la versin, la explicacin de
alguna funcin o para recordad algn cambio realizado en el programa.
C++ soporta dos tipos de comentarios.
Como ya vimos al inicio del tutorial, los que van precedidos de //Linea de comentario para una
sola lnea y /*Bloque comentado*/ para mas de una lnea y deja como comentario todo lo que se
encuentre encerrado entre el carcter de apertura /* y el de cierre */.
Veamos un ejemplo en el segundo programa.
Programa
/*Mi segundo programa en c++
Con mas lneas de comentario.
Lineas que no son ejecutadas*/
int main ()
{
cout << Hola Mundo! ; //Imprime el mensaje Hola
Mundo!
cout << Soy un programa en c++; //Imprime el
mensaje Soy un programa en c++
return 0;
}

Salida en pantalla
Hola Mundo! Soy un programa en c++

Por cuestiones de espacio pareciera que los comentarios precedidos por // ocupan mas de
una lnea, pero no es as, es una sola lnea y solo por cuestiones del texto aparecen divididas en dos.
Ejercicios:
1.

Realiza un programa que imprima Tu nombre, fecha de nacimiento y carrera que


estas estudiando.

2.

Realiza un programa que imprima el nombre de tus 3 mejores amigos.

Variables y tipos de datos.


Las variables son utilizadas dentro de cualquier programa para guardar temporalmente
valores que sern utilizados en alguna otra parte del programa. Para entender su funcionamiento,
hagamos la siguiente analoga: Te pedimos que retengas mentalmente el numero 5, despus reten el
numero 2, estos dos datos son retenidos en el cerebro con algn nombre o identificador asociado,
por ejemplo, si decimos smale 1 al primer nmero, naturalmente sabrs que tienes que sumarle 1 al
numero 5, que fue el primero y el resultado es 6. La siguiente operacin es realizar la resta del
nmero obtenido menos el segundo nmero almacenado. El resultado ser 4.

A esta analoga, diremos que las variables son los nombres o identificadores a los que les
asociamos los diferentes valores y nos permiten realizar operaciones mas complejas que solo
imprimir un mensaje en la pantalla.
Veamos como serian las operaciones de la analoga con el uso de variables.
A=5;
B=2;
A=A+1;
D=A-B;
Obteniendo D=4, como en el ejemplo.

En este ejemplo solo se usan 3 variables que almacenan nmeros enteros, pero
consideremos que la computadora puede almacenar millones de nmeros y hacer operaciones
mucho mas complejas que sumas y restas.
Formalmente se puede decir que una variable es una porcin de memoria que es utilizada
para almacenar un valor determinado.
Cada variable necesita un identificador (tambin conocido como nombre) que la distinga de
las dems. Por ejemplo, en el caso anterior los identificadores de las variables son A, B y C, pero es
posible llamar a las variables con cualquier nombre y del largo que se quiera, siempre y cuando sea
un nombre valido.
Identificadores: Un identificador valido es una secuencia de una o mas letras, dgitos o
guiones bajo (_). No estn permitidos los espacios en blanco, smbolos de puntuacin o cualquier
otro smbolo. Adicionalmente diremos que un identificador debe iniciar siempre con una letra,
aunque hay ocasiones que es posible iniciarla con un guion bajo (_), pero estas variables
generalmente estn reservadas para etapas del procesador. Despus de la letra de inicio, es posible
escribir cualquier secuencia de letras, nmeros y guiones bajo (_).
Otra restriccin que debes tener es que no puedes usar como nombre de una variable las
palabras reservadas del lenguaje c, por ejemplo: bool, break, int, float, true, false, for, friend, goto,
if, inline, long, mutable, etc., etc.
Es importante decir tambin que c++ es un lenguaje case sensitivo, lo que quiere decir que
las letras maysculas y minsculas son diferentes, es decir, una variable llamada suma es diferente
de Suma, SUma, SUMa o SUMA, o cualquier combinacin de maysculas y minsculas se tengan
del mismo nombre. Por lo tanto de ese ejemplo tendramos mas de una variable.

Tipos de datos fundamentales.

Como vimos en la seccin anterior, para almacenar algun dato en c++ y en cualwuier
lenguaje de programacin, es necesario utilizar variables, sin embargo, adems de definir el nombre
que tendr la variable, se debe definir el tipo de valores que almacenar. Una variable solo puede
almacenar valores de un solo tipo, como pueden ser nmeros enteros, nmeros decimales,
caracteres, etc., y no podr almacenar valores de ningn otro tipo.
Adems de definir el tipo de valores a almacenar, el tipo de datos tambin define la cantidad
de memoria que utilizar la variable para almacenar estos valores. Y c puede manejar tipos de datos
muy simplec como un entero que va desde 0 hasta 255 o tipos de datos mucho mas complejos.
A continuacin se definen los tipos de datos utilizados en c++.
Nombre
char

Descripcin
Caracteres o pequeos enteros

Tamao
1 byte

short int
(short)
Int

Entero corto

2 bytes

Entero

4 bytes

long int
(long)

Entero largo

4 bytes

bool

Valor boleano. Solo toma uno de dos


valores: verdadero o falso
Nmero de punto flotante.

1 byte

Nmero de punto flotante de doble


precisin
Nmero grande de punto flotante de
doble precisin
Caracter amplio

8 bytes

float
double
long double
wchar_t

Rango
Con signo: -128-127
Sin signo: 0-255
Con signo: -32768 - 32767
Sin signo: 0 - 65535
Con signo: -2147483648 2147483647
Sin signo: 0- 4294967295
Con signo: -2147483648 2147483647
Sin signo: 0 - 4294967295
true o false

4 bytes

8 bytes
2 o
bytes

+/- 3.4e +/- 38 (aprox. 7


digitos)
+/- 1.7e +/- 308 (aprox. 15
digitos)
+/- 1.7e +/- 308 (aprox. 15
digitos)
1 carcter amplio

Los valores de tamao y rango dependen del sistema operativo usado. Los valores de la
tabla son para sistemas operativos de 32 bits

Declaracin de variables
Para poder utilizar una variable, es necesario primero definir su nombre y el tipo de datos
asociado. La sintaxis para declarar una variable es definir primero su tipo (int, float, doubl, char,
etc) seguido de un nombre o identificador valido. Por ejemplo:
int a;
float mi_numero;

Es posible declarar mas de una variable a la vez, siendo que todas sern definidas del
mismo tipo de datos, por ejemplo:
char, letra3, cadenade1letra;
Los tipos de datos char, short, long e int pueden ser marcados con signo (signed) o sin
signo (unsigned), dependiendo de los valores que se deseen almacenar. Si no se define esta
caracterstica, los tipos de datos sern manejados como con signo (signed).
unsigned short int numero_hermanos;
signed int saldoMiCuenta;
double c4d3n174;
Programa
// Trabajando con variables
#include <iostream>
using namespace std;
int main ()
{
// declaracin de variables:
int a, b;
int result;
// Operaciones:
a = 5;
b = 2;
a = a + 1;
result = a - b;
// Imprimir el resultado, notese que va sin
comillas:
cout << result;
// terminar el programa:
return 0;
}

Salida a pantalla
4

Inicializacin de las variables.


Cuando una variable es declarada, el proceso que sigue es reservar un espacio en la
memoria fsica de la computadora, por lo cual no sabemos si esa parte de la memoria ya haba sido
utilizada y si hay algo en ella, por lo que la variable tomara el valor que en ese momento este
almacenado en la memoria y que desconocemos, es por eso que es muy recomendable que al
declarar una variable se le asigne un valor, para asi saber en todo momento que valor estar
almacenado en cada una de las variables.
Para inicializar una variable, se define como: tipo nombre_variable=valor_inicial;
Por ejemplo, si definimos una variable de tipo entero quiz sea buena idea inicializarla en 0:

int numero=0;
Otra forma de inicializar una variable es colocando su valor inicial entre parntesis: tipo
nombre_variable(valor_inicial);
int numero(0);
Programa
// inicializacin de variables
#include <iostream>
using namespace std;
int main ()
{
int a=5; // valor inicial = 5
int b(2); // valor inicial = 2
int resultado; // valor inicial indeterminado
a = a + 3;
result = a - b;
cout << resultado;
return 0;
}

Salida a pantalla
6

Cabe recordad que para almacenar caracteres est el tip ode datos char, sin embargo este
tipo de datos solo permita almacenar un solo carcter, por lo que el manejo de cadenas queda
supeditado al tema arreglos que se ver mas adelante o revisar el uso de la librera string.h.

Constantes
Las constantes son literales de nmeros enteros, de nmeros de punto flotante, de caracteres
y cadenas de literales y de valores boleanos . Son constantes tambin aquellos definidos con la
instrucciones #define o declare.
Las constantes entonces sern valores que nunca cambiaran dentro de un programa y que se
definen al inicio de este.
Ejemplos:
Literales: Son valores particulares usados en el cdigo de un programa. Son valores asociados a
caracteres o secuencias de caracteres.
Variables a las que les son asignados literales enteros:
A=5;
B=8923;
C=7333;

Variables a las que le son asignados literales de punto flotante, en algunos casos utilizando notacin
cientfica representada por la letra e:
3.14159 // 3.14159
6.02e23 // 6.02 x 10^23
1.6e-19 // 1.6 x 10^-19
3.0 // 3.0
Literales de carcter, encerrados en comillas simples o apostrofes, o secuencia de caracteres,
encerrados en comillas dobles:
'z'
'p'
"Hola mundo"
"soy un programa en c++"
Este tipo de literales definen tambin caracteres especiales, que no son visibles pero tienen asociada
alguna accin:
Carcter
\n
\r
\t
\v
\b
\f
\a
\
\
\?
\\

Accin asociada
Salto de lnea o nueva lnea
Retorno de carro al inicio de la lnea
Tabulacin
Tabulacin vertical
Retroceso o borrar el carcter anterior
Salto de forma o de pagina
Alerta (beep)
Imprimir o asignar una comilla simple
Imprimir o asignar una comilla doble
Imprimir o asignar el signo de interrogacin
Imprimir o asignar la diagonal inversa

Por ejemplo:
\n
\t
Izquierda \t Derecha
Uno\nDos\nTres
Finalmente, las literales boleanas solamente sern los valores true y false, que sern
asignados a variables de tipo bool.
Las constantes definidas mediante la instruccin #define, son literales o nombres a las que
se les asocia un valor en tiempo de preprocesador y ese valor nunca cambia en toda la ejecucin del
programa:

#define PI 3.14159
#define salto '\n'
Esto define dos constantes: PI que se le asocial el valor 3.141516, lo que indica que cuando
necesitemos ocupar ese valor solamente tendremos que escribir PI y no el valor. El segundo es salto
y tiene asociado el carcter de SALTO de lnea \n.
Programa
// Definicin de constants y calculo de la
circunferencia
#include <iostream>
using namespace std;
#define PI 3.14159
#define SALTO '\n'
int main ()
{
double r=5.0; // radio usando literal decimal 5.0
double circle;
circle = 2 * PI * r;
cout << circle;
cout << SALTO;
return 0;
}

Salida a pantalla
31.4159

Las constantes definidas con la instruccin const, son constantes con un tipo de datos asociado, es
decir, podemos definir constantes de tipo int, char, float, double, short, etc. Y al igual que con
#define, su valor no cambiar.
const int pathwidth = 100;
const char tabulator = '\t';
Ejercicios:
1. Realiza un programa que almacene, en las variables adecuadas, los siguientes valores: 23,
56.78, a, 23e10, 314.00e-2 e imprima los mensajes: Este es un dato del tipo, seguido del
tipo de cada variable y su valor. Ejemplo: Este es un dato del tipo entero 23.
2. Realiza un programa que almacene 1 valor entero, 2 flotantes, 2 dobles, 2 carcter y 2
enteros cortos.

Operadores.
Despus de definir la existencia de variables y constantes, vamos a definir los operadores
que permitirn realizar clculos utilizando estas variables y constantes, tanto para almacenar valores
como para calcularlos.

Asignacin (=)

Asigna valores a una variable. La variable siempre ir del lado izquierdo y del lado derecho
el valor, ya sea una constante, una variable u obtenido de alguna operacin.
Por ejemplo:
A=5;
A=B
A=A+1;
Una caracterstica de los operadores es que pueden aparecer del lado derecho y el = al ser
un operador tambin lo puede hacer, por ejemplo:
A=5+(b=3);
Esta instruccin le asignara primero el valor de 3 a b y despus sumaria 5+b, asignandole el
resultado a A.

Operadores aritmticos
C++ soporta 5 operadores aritmticos: suma (+), resta (-), Multiplicacin (*), divisin (/) y
mdulo (%). Los primeros 4 operadores son los correspondientes a los operadores matemticos. El
ltimo operador se utiliza para obtener el residuo de una divisin entre dos nmeros. Por ejemplo, si
obtenemos
a=11%3;
a contendr el valor 2, que es el residuo de dividir 11 entre 3.

Operadores de asignacin compuestos.


El operador de asignacin puede ser compuesto con los operadores aritmticos, pudiendo
realizar las mismas operaciones, pero con menor cantidad de cdigo.
Los operadores combinados son: +=, -=, *=, /=, %=, >>=, <<=, &=, ^=, |=. El sentido de
cada uno de estos operadores es utilizar la misma variable donde se asignaran los datos como
operando de la operacin de la derecha. Ejemplo
A=A+5; es equivalente a A+=5;, donde se toma a A y es como si se colocara del lado derecho.
Precio*=unidad+1; es equivalente a decir precio=precio*(unidad+1);
Para cada uno de los operadores combinados aplica la misma situacin.

Incremento y decremento.
Existen dos operadores que ayudan a realizar tareas de incremento (++) y decremento (--),
es decir, sumar o restar un uno a una variable para modificar su valor, generalmente se utilizan
cuando se realiza alguna operacin con contadores, para realizar cuentas con incrementos o
decrementos fijos de 1. Ejemplo:

A=5;
A++; //Incrementa a A en 1 y A=6
B=3;
A=B++; /*A toma el valor de B, pero como el operador ++ se encuentra del lado derecho de
B, primero se asigna el valor de B a A y despus se incrementa, por lo que despus de esta
operacin el resultado es A=3 y b=4*/
A=++B; //Al contrario que en el caso anterior, primero se incrementa a B y despus se hace
la asignacin, por lo que A=4 y B=4.

Operadores relacionales y de comparacin.


Para poder realizar comparaciones entre dos expresiones, se utilizan los operadores
relacionales y de igualdad. El resultado obtenido al utilizar estos operadores es un valor booleano,
que solo puede ser true (verdadero) o false (falso).
Estos operadores se utilizan cuando queremos comparara dos expresiones, por ejemplo
cuando queremos saber si un valor es igual a otro, o si una expresin es mayor que otra.
Los operadores relacionales son: == de igualdad, < menor que, > mayor que, <= menor o
igual que, >= mayor o igual que y el de diferente o desigualdad !=. Para entender el uso se muestran
los siguientes ejemplos.
(7 == 5) // se obtiene como resultado false.
(5 > 4) // se obtiene como resultado true.
(3 != 2) // se obtiene como resultado true.
(6 >= 6) // se obtiene como resultado true.
(5 < 5) // se obtiene como resultado false.
Como se puede apreciar, estos ejemplos son empleando literales numricas enteras, sin
embargo, tambin es posible utilizar expresiones matemticas simples o compuestas, entendiendo
que estas generar resultados numricos. A continuacin se muestran unos ejemplos, tomando las
variables a=2, b=3 y c=6:
(a == 5) // resultado false, dado que a vale 2 y 2 no es igual a 5.
(a*b >= c) // resultado true ya que (2*3 >= 6) es true.
(b+4 > a*c) // resultado false ya que (3+4 > 2*6) es false.
((b=2) == a) // resultado true.
Habra que tener cuidado en el manejo de los operadores de asignacin (=) y de igualdad
(==) ya que no son los mismos. Mientras que el primero le asigna un valor a una variable, el
segundo compara si el valor asociado del lado derecho es igual al del lado izquierdo. Esto se puede
visualizar en el ultimo caso del ejemplo anterior, donde del lado izquierdo se le asigna a la variable
b el valor de 2 y despus se compara ese valor con el de a para saber si son iguales, dando como
resultado el valor true.

Operadores lgicos.
Los operadores relacionales se utilizan para combinar mas de una comparacin y realizar
evaluaciones boleanas ms complejas. Los operadores lgicos son: negacin (!), and (&&) y or(||).

El operador de negacin (!) cambia el valor boleano obtenido de la expresin de


comparacin. Si el resultado es true lo cambia a false y si es false lo cambia a true.
!(5 == 5) // resultado falso por que la expression (5 == 5) es true.
!(6 <= 4) // resultado true por que (6 <= 4) es false.
!true // resultado false
!false // resultado true.
Los operadores and (&&) y or (||), son utilizados para evaluar dos expresiones y obtener un
resultado boleano simple, combinando los resultados boleanos individuales de las expresiones de
acuerdo a las siguientes tablas:
a
true
true
false
false

b
true
false
true
false

&&
true
false
false
false

a
true
true
false
false

b
true
false
true
false

||
true
true
true
false

Ejercicios:
1. Realiza un programa que sume, reste, multiplique y divide dos nmeros que le asignes.
2. Realiza un programa que calcule el rea de un tringulo. T asignas los datos
necesarios.
3. Realiza un programa que divida dos nmeros definidos e imprima el resultado
(incluidos los decimales si hay) y su residuo.
4. Realiza un programa que obtenga el rea de un tringulo.
5. Realice un programa que compare a=45 y b=78 e imprima el resultado obtenido de
hacer a<b, a>b, a==b a!=b, a<=b y a>=b;
6. Realice un programa que compare a=45, b=56 y c=30 e imprima el resultado de hacer
a>b&&a>c, a>b||a>c, a>b&&b>c, a>b||b>c, (a>b||a>c)&&( b>a||b>c)
7. Realiza un programa que implemente 4 formas de incrementar un 1 a una variable y
otras 4 formas de decrementar un 1 a otra variable.

Entrada y salida de datos.


Para permitirle al usuario introducir datos o presentarle resultados en pantalla, es necesario
utilizar instrucciones de salida estndar (cout) y de entrada estndar (cin).

Operador cout.

El operador cout se utiliza combinado con el operador de insercin <<. Con esta
instruccin, es posible imprimir en pantalla cadenas de texto encerradas entre comilla dobles,
literales vistas enteriormente y variables. Algunos ejemplos simples serian:
cout << "Cadena de texto"; // Imprime Cadena de Texto en la pantalla.
cout << 120; // Imprime el literal 120 en pantalla.
cout << x; // Imprime el valor contenido en x en la pantalla.
Para recalcar, hay que tomar en cuenta los diferentes tipos de datos y como se representan.
Si queremos imprimir una palabra o frase deber ir entre comillas dobles, por ejemplo
cout<<hola; imprime la palabra hola, ya que sin comillas dobles se interpreta como variable, por
ejemplo cout<<hola imprimira el valor almacenado en la variable hola.
El operador de insercin puede ser usado mas de una vez en una misma instruccin, lo que
permitira crear mensajes mas completos, combinando cadenas con literales y/o variables. Por
ejemplo:
cout << "Hola, tengo " << edad << " aos de edad por que nac en el ao " << fec_nac;
Si suponemos que edad=33; y que fec_nac=1978;, el mensaje impreso sera: Hola, tengo 33
aos de edad por que nac en el ao 1978.
Hay que recordar que si queremos incluir en nuestras cadenas caracteres especiales,
tendremos que utilizar los caracteres especiales mencionados anteriormente, como puede ser un
salto de lnea \n, una tabulacin \t, etc.
cout << "Primer rengln.\n ";
cout << "Segundo rengln.\nTercer rengln.";
Con estas instrucciones se obtiene la impression en pantalla de:
Primer rengln
Segundo rengln
Tercer rengln

Operador cin.
El operador cin se utiliza para permitirle al usuario introducir datos desde el teclado y
almacenarlos en variables. Junto con el operador cin se utiliza el operador de extraccin >> y
enseguida de este operador deber ir la variable en donde se guardarn los datos.
Para que los datos sean almacenados, es necesario que el usuario presione la tecla Enter y es
necesario cuidar el tipo de datos, ya que es muy probable que a una variable numrica se le intente
asignar letras o algn otro smbolo, lo que podra causar un error grave.
int edad;
cin >> edad;

En este ejemplo, se esperara que el usuario tecleara solo nmeros enteros.


Para poder capturar mas de un dato, es posible hacerlo en una misma lnea, sin importar el
tipo de datos.
Veamos un ejemplo completo
Programa
// Ejemplo de entrada/salida
#include <iostream>
using namespace std;
int main ()
{
int i;
cout << "Por favor introduce un valor entero: ";
cin >> i;
cout << "El numero que introdujiste es " << i;
cout << " y el doble del numero es " << i*2 <<
".\n";
return 0;
}

Salida a pantalla
Por favor introduce un valor entero: 35
El numero que introdujiste es 35 y el doble del
numero es 70.

Ejercicios:
1.

Realiza un programa que calcule el rea de un tringulo, un cuadrado, un circulo


y un ovalo, pidiendo los datos necesarios al usuario y utilizando constantes para
los datos conocidos, como PI=3.1416.

2.

Realiza un programa que te permita implementar una regla de 3, para poder


obtener la calificacin de un examen, donde todas las preguntas valen lo mismo.
Ejemplo: un examen de 20 preguntas, donde se obtuvieron 15 aciertos la
calificacin seria 75.

3.

Realiza un programa que calcule los pagos mensuales que una persona debe
hacer si le otorgan un prstamo al 15% anual a un plazo de 3 aos. Debers
preguntar la cantidad prestada e imprimir el pago mensual con todo e intereses.

Estructuras de control.
Un programa no solamente se ejecuta en forma secuencial, como lo hemos visto hasta
ahora, sino que muchas veces puede cambiar su ejecucin dependiendo de algunas condiciones, por
ejemplo al tomar decisiones o al repetir una o mas lneas de cdigo. Para este propsito, c++ emplea
estructuras de control que sirven para especificar que tiene que hacer el programa bajo ciertas
condiciones.

Un trmino adicional a estructuras de control es el de bloque de cdigo. Un bloque de


cdigo es un conjunto de instrucciones separadas por (;), como normalmente se hace en c++, pero
agrupado en un bloque encerrado por llaves { }, por ejemplo: {instruccin1; instruccin2;
instruccin3;}
Las estructuras de control tendrn una sintaxis particular y muchas de las veces tendrn
asociadas comparaciones de expresiones, por lo que obtendremos valores de verdad o falsedad
asociados y eso indicar que bloque de cdigo ejecutar.
Si solamente se necesita ejecutar una sola instruccin las llaves son opcionales, pudiendo no
escribirse y el bloque ser simplemente la instruccin.

La estructura de control if y else.


La palabra reservada if es utilizada para ejecutar un conjunto de instrucciones o bloque si
una condicin se cumple (cuando es true). Su sintaxis es:
If(condicin) {bloque_de_instrucciones}.
Donde condicin es la expresin que se evaluar. Si esta condicin es verdadera, el bloque
de instrucciones se ejecuta. Si es falsa no se ejecuta el bloque y el siguiente cdigo a ejecutar es el
que este despus del bloque de instrucciones.
El siguiente ejemplo solamente imprimir x es igual a 100, solo si el valor almacenado en x
es 100.
if (x == 100)
cout << "x es igual a 100";
Como es una sola instruccin las llaves son omitidas. Sin embargo, si se hubiera dividido la
impresin del mensaje en 2, se hace necesario encerrar el bloque entre {} y quedara como:
if (x == 100)
{
cout << "x es ";
cout << x;
}
Adems de definir que hacer cuando el resultado obtenido sea cierto, tambin se puede
especificar que hacer cuando es falso. Para esto existe la palabra reservada else combinada con if y
su sintaxis es:
If (condicin) bloque_de_instrucciones else otro_bloque_de_instrucciones
Por ejemplo:
if (x == 100)
cout << "x es igual a 100";
else
cout << "x no es igual a 100";

Para obtener un rango mas amplio de opciones, es posible combinar varios if y else como
sigue:
if (x > 0)
cout << "x is positive";
else if (x < 0)
cout << "x is negative";
else
cout << "x is 0";

El ejercicio anterior se hace necesario por que con true y false no es posible obtener todos
los resultados. El ejercicio se pretende imprimir x es positivo cuando x sea mayor que 0, x es
negativo cuando x sea menor que o y x es 0 cuando x sea igual a 0.
De igual manera, cuando existan situaciones en donde hay mas de solo verdadero o falso,
habr que combinar todos los if y else necesarios.

Estructuras iterativas o ciclos.


Este tipo de estructuras repiten un conjunto de instrucciones un determinado nmero de
veces o mientras una condicin se cumpla como verdadera.
El ciclo while
Su funcionamiento es muy simple, ejecutan un conjunto de instrucciones mientras la
condicin evaluada sea verdadera. Si sintaxis es:
while (condicin) bloque_de_instrucciones
Por ejemplo, si queremos contar de un numero dado por el usuario a 1 utilizando un ciclo
while ser de la siguiente forma:
Programa
// Implementacin de una cuenta hacia atrs
usando while
#include <iostream>
using namespace std;
int main ()
{
int n; //Declaramos la variable donde
tendremos el numero inicial
cout << "Introduce el nmero inicial: ";
cin >> n; //preguntamos el num inicial al
usuario
while (n>0) { //Implementamos un while
mientras el numero dado por el usuario sea
mayor a 0
cout << n << ", "; //Imprimimos el valor de n
--n; //decrementamos n en uno (vea que usamos
--)
}
cout << "Fuego!\n";

Salida a pantalla
Introduce el nmero inicial: 8
8, 7, 6, 5, 4, 3, 2, 1, Fuego!

return 0;
}
Cuando el programa inicial, se le pide al usuario que introduzca un nmero, desde donde se
iniciar la cuenta regresiva. Cuando el ciclo while inicia se evalua el valor del numero ingresado
por el usuario. Si el numero es > 0, se ejecuta una vez el bloque de instrucciones. Vemos que dentro
de este bloque hay una instruccin de decremento sobre la variable n y despus de ejecutar el
bloque se vuelve a evaluar la condicin del while y si es true se vuelve a ejecutar el bloque. De
igual forma y sucesivamente se continua con el while hasta que la condicin evaluada sea false.
El ciclo do-while
Su funcionalidad es la misma que el ciclo while, la nica diferencia es q ue en el while la
condicin se evala al inicio y en el do-while la condicin se evala despus de ejecutar el bloque
de instrucciones, lo que garantiza que el bloque de instrucciones se ejecutar por lo menos una vez,
aunque la condicin nunca sea evaluada como true. Su sintaxis es:
do bloque_de_instrucciones while(condicin);
Ntese que despus del while se agrega el carcter (;). Este ciclo y en general de las
instrucciones que ejecutan bloques de instrucciones dentro de un programa, es la nica que lleva
este carcter.
En el siguiente ejemplo, se implementa un ciclo do-while para pedirle al usuario que
introduzca un nmero, imprimirlo en pantalla, evaluarlo y si es diferente de 0 volver a repetir este
conjunto de instrucciones.
Programa
// nmero reimpreso.
#include <iostream>
using namespace std;
int main ()
{
unsigned long n;
do {
cout << "Teclea un nmero (0 para terminar): ";
cin >> n;
cout << "Ingresaste el numero: " << n << "\n";
} while (n != 0);
return 0;
}

Salida a Pantalla
Teclea un nmero (0 para terminar): 67
Ingresaste el numero: 67
Teclea un nmero (0 para terminar): 50
Ingresaste el numero: 50
Teclea un nmero (0 para terminar): 101
Ingresaste el numero: 101
Teclea un nmero (0 para terminar): 0
Ingresaste el numero: 0

El ciclo for
Este ciclo es similar al ciclo while, lo que le permite repetir un bloque de instrucciones
mientras se cumpla una condicin, la diferencia radica en que este ciclo, adems de contar con la
evaluacin de la condicin, implementa una seccin de inicializar un contador, y otra para
incrementarlo. Este ciclo ha sido pensado para repetir el bloque de instrucciones un numero

determinado de veces, utilizando una variable contador que se incrementa en cada iteracin. Su
sintaxis es.
for(inicializacin, condicin, incremento) bloque de instrucciones;
Este ciclo trabaja de la siguiente forma:
1. Se ejecuta la inicializacin. Generalmente es iniciar la variable que ser usada como
contador, por ejemplo i=1. Esto se ejecuta solo una vez.
2. Se verifica si se cumple la condicin. Si la condicin es true el ciclo continua, en otro
caso el ciclo termina y el bloque no se ejecuta mas.
3. Se ejecuta el bloque de instrucciones.
4. Finalmente y como se especifica en la seccin de incremento, la variable contador se
incrementa o decrementa y el ciclo regresa al paso 2.
Ejemplo: Se implementa un programa para realizar una cuenta regresiva, desde el nmero
10 y hasta llegar a 0
Programa
// countdown using a for loop
#include <iostream>
using namespace std;
int main ()
{
for (int n=10; n>0; n--) {
cout << n << ", ";
}
cout << "Fuego!\n";
return 0;
}

Salida a Pantalla
10, 9, 8, 7, 6, 5, 4, 3, 2, 1, Fuego

Las secciones de inicializacin e incremento son opcionales, por lo que si no se utilizan, el


ciclo for funcionar exactamente como el ciclo while. Por ejemplo, si escribimos for(;x>10;),
estamos omitiendo las dos secciones: inicializacin e incremento. Si escribimos for(;x<10;x++),
solo se esta omitiendo la seccin de inicializacin. Para ambos casos, queda bajo la responsabilidad
del usuario la implementacin de las instrucciones necesarias para que en algn momento dado la
condicin sea evaluada como false y as salir del ciclo.
Una opcin ms con el ciclo for es el poder realizar mas de una inicializacin y/ mas de un
incremento. Para hacer esto se utiliza el carcter (,) y que nos permite especificar mas de una
expresin en cualquiera de estas dos secciones. Para ilustrar esto, se implementa un ciclo que
inicialice dos variables, una que inicie en 100 y la otra en 0 y que permita ejecutar el bloque de
instrucciones cuando las dos variables sean iguales. La primera variable se ir decrementando en 1
y la segunda se ir incrementando tambin en 1:
for ( n=0, i=100 ; n!=i ; n++, i-- )
{
// bloque de instrucciones...

}
En algunas ocasiones es necesario ejecutar mas de una vez un ciclo, por lo que ser
necesario contar con una estructura iterativa un poco mas compleja.
Los ciclos pueden contener otros ciclos, entendiendo que cada uno de ellos perseguir un
objetivo y estar diseado particularmente.
//El siguiente ejemplo imprime las primeras 3 tablas de
multiplicar.
#include <iostream>
using namespace std;
int main () {
for (int n=1; n<=3; n++) { //Ciclo para contar hasta 3
e imprimir los mensajes Tabla del 1, Tabla del 2, etc.
cout<<Tabla del <<n;
for(int m=1; m<=10; m++) {
cout << \n<<n<<*<<m << =<<n*m<<\n;
}
}
return 0;
}
//El mismo ejemplo, pero con otros ciclos.
#include <iostream>
using namespace std;
int main () {
int n=1,m=1;
while (n<=3) {
cout<<Tabla del <<n;
while(m<=10) {
cout << n<<*<<m << =<<n*m<<\n;
M++;
}
n++;
}
return 0;
}

Tabla del 1
1*1=1
1*2=2
1*3=3
1*4=4
1*5=5
1*6=6
1*7=7
1*8=8
1*9=9
1*10=10
Tabla del 2
2*1=2
2*2=4
2*3=6
2*4=8
2*5=10
2*6=12
2*7=14
2*8=16
2*9=18
2*10=20
Tabla del 3
3*1=3
3*2=6
3*3=9
3*4=12
3*5=15
3*6=18
3*7=21
3*8=24
3*9=27
3*10=30

Ejercicios:
1. Realiza un programa que sume los nmeros impares de 1 al 99.
2. Imprime los nmeros del 1 al 20 con los ciclos for, while y do-while utilizando la variable x
como contador.
3. Realiza un programa que sume una serie de nmeros introducidos por el usuario. El primer
nmero indica la cantidad de nmeros que ingresar el usuario.

4. Realiza un programa que obtenga el promedio de una serie de nmeros, hasta que el usuario
ingrese un 9999 (a este valor se le conoce como centinela). El promedio ser solo de los
nmeros anteriores a 9999.
5. Realice un programa que obtenga el nmero menor de una serie de nmeros, hasta que se
introduzca el centinela 9999.
6. Realiza un programa que pida una serie de nmeros, entre 1 y 50, al usuario, hasta que
ingrese el centinela 0 y que imprima esa cantidad de *.
7. Realiza un programa que ayude a una maestra a calcular los promedios de cada uno de sus
alumnos, el promedio grupal, el nmero de aprobados, el numero de reprobados y el
porcentaje de aprobados y reprobados. Se le preguntar a la maestra el nmero de unidades
para el promedio de los alumnos y el nmero de alumnos.
8. Escribe un programa con instrucciones for que impriman las siguientes series:
a. 1, 2, 3, 4, 5, 6, 7, 8.
b. 3, 8, 13, 18, 23.
c. 20, 14, 8, 2, -4, -10.
d. 19, 27, 35, 43, 51.
9. Escribe un programa que calcule la suma de los enteros pares del 20-50.
10. Escribe un programa que calcule el producto (multiplicacin) de los nmeros impares del 130.
11. Escribe un programa que imprima los nmeros romanos del 1-100.
12. Una tienda vende 5 productos solamente. Se te pide realizar un programa que le pida al
usuario la cantidad de productos que va a comprar y que vaya ingresando pares de nmeros,
que representan el producto y su cantidad vendida y que muestre su costo por producto y al
final que muestre la suma total de la compra. Los productos son: 1-$200.00, 2 100.00, 3
80.00, 4 150.00, 5 50.00.
13. Realiza un programa que muestre un men con las opciones para evaluar pares de nmeros
(1 y 0) con los operadores and (&&) y or (||). Ejemplo: si el usuario selecciona la opcin
and (&&) e ingresa los valores 1, 1, el resultado ser 1, si selecciona or (||) e ingresa los
valores 1, 0, el resultado ser 1. El programa debe preguntar opciones hasta introducir un
9999.

Arreglos o arrays

Un arreglo o array, es un conjunto de elementos del mismo tipo que pueden ser
referenciados individualmente a travs de la suma de un ndice a un identificador nico.
Esto significa que podemos almacenar, por ejemplo, 5 datos enteros en una sola variable,
sin tener que declarar 5 variables distintas, con nombres distintos.
Por ejemplo, un arreglo que almacena 5 valores de tipo int, llamado calif, puede ser
representado como:
Calif:
0

Donde cada numero (del 0 al 9), indica la posicin y el valor de referencia a un valor nico.
Cada espacio en blanco representa un elemento del arreglo. Al igual que cualquier variable, para
usar un arreglo, primero debe ser declarado. La declaracin estandar en c es:
tipo nombre [elementos];
Ejemplo:
int calif [5];
Para inicializar un arreglo se hace de la siguiente manera:
int calif [5] = {80, 70, 90, 100, 90};
int calif [] = {80, 70, 90, 100, 90};
Para acceder a los arreglos se utiliza el nombre de la variable y el valor de su ndice, por
ejemplo, si quiero almacenar el valor de 75 en la casilla 3 de mi arreglo calif seria:
calif[2] = 75;
Si quiero pasar el valor de la casilla 3 del arreglo calif a la variable num, seria:
num=calif[2];
Para recorrer un arreglo se pueden implementar estructuras repetitivas y hacer uso del
contenido del arreglo.
Por ejemplo, para imprimir las 5 calificaciones almacenadas en el arreglo calif, se puede
utilizar un ciclo for:
for(int i=0;i<5;i++)
{
cout<<Calificacin <<i+1<< =<<calif[i];

}
Los arreglos tambin pueden servir como parmetros de una funcin. Para pasar un arreglo
como parmetro se hace de la siguiente manera:
void promedio(int calif[])
Esta declaracin acepta parmetros del tipo arreglo de enteros, sin importar la cantidad de
elementos.
int calif[10];
promedio(calif);
Secuencias de carcter
Para el manejo de cadenas de caracteres, si bien existe la librera string.h, es posible realizar
el manejo de arreglos de caracteres para almacenar y manipular cadenas de caracteres.
Conociendo el concepto de arreglo, si declaramos:
char nombre[30];
Es un arreglo que puede almacenar hasta 30 caracteres. Pero tambin es posible almacenar
cadenas cortas, por ejemplo hola, buenos das o Feliz navidad a todos, ya que las 3 cadenas
tienen una longitud menor a 30. Cuando existen arreglos de caracteres que almacenan cadenas mas
cortas que su longitud existe un carcter especial, llamado carcter nulo \0, que indica el fin de
una secuencia.
Para almacenar un carcter nulo, se realiza de manera explicita o si se usan las comillas
para introducir una cadena, este carcter se incluir automticamente:
char nombre[]={C,a,d,e,n,a,\0};
char nombre[]=Cadena;
En ambos casos, se crea un arreglo de 5 caracteres para poder almacenar el nombre y el
carcter nulo.
Programa
// Secuencias de caracteres terminadas con el
caracter nulo.
#include <iostream>
using namespace std;
int main (){
char mensaje[] = Por favor, ingresa tu
nombre: ";
char saludo[] = "Hola, ";
char nombre[80];
cout << mensaje;

Salida a pantalla
Por favor, ingresa tu nombre: Juan
Hola, Juan!
Presiona cualquier tecla para continuar

cin >> nombre;


cout << saludo << nombre << "!";
system(pause);
return 0;
}
Para poder generar cadenas de mas de una palabra, es necesario crear estructuras iterativas
que permitan ir formando esta cadena. Para cin y scanf, un delimitador de cadena resulta el espacio
en blanco , por lo que se hace necesario crear estructuras iterativas para ir colocando cada uno de
los caracteres que formarn la cadena. Para realizar esto, se cuentan con instrucciones que permiten
ir almacenando carcter por carcter y dependiendo del carcter obtenido ser la accin a realizar.
getch, getche o getchar.
Por ejemplo, si se tratara de una letra o un espacio en blanco, se asignara al arreglo,
incrementando el ndice. Si se tratara de un carcter de retroceso (\b), no asignarlo a la cadena, si se
tratara de un enter o retorno de carro (\r), seria el fin de la cadena, si fuera una tabulacin (\t), seria
cambiarlo por un espacio en blanco, etc, etc.
Programa
// Secuencias de caracteres terminadas con el caracter
nulo.
#include <iostream>
using namespace std;
int main (){
char mensaje[] = Por favor, ingresa tu nombre: ";
char saludo[] = "Hola, ";
char nombre[80];
char cad;
int i=0;
cout << mensaje;
do{
cad=getche();
if(cad!=\r&& cad!=\b&& cad!=\t)
{
nombre[i]=cad;
i++;
}
}while(cad!=r)
nombre[i]=\0;
cin >> nombre;
cout << \n<<saludo << nombre << "!";
system(pause);
return 0;
}
Ejercicios:

Salida a pantalla
Por favor, ingresa tu nombre: Juan
Hola, Juan!
Presiona cualquier tecla para continuar

1. Escribe un programa que cree un arreglo de 10 numeros enteros inicializados con 0 y


muestre el siguiente menu:
a. Ingresar numero en una posicion determinada.
b. Mostrar el valor del numero almacenado en una posicion determinada.
c. Mostrar todos los elementos del arreglo.
d. Salir.
2. Realiza un programa que genere un arreglo de 10 numeros inicializados en 0 y que le pida
al usuario ingresar 10 numeros entre 10 y 100. Si el valor no se encuentra en el arreglo lo
deberas ingresar, si el valor ya esta en el arreglo deberas mostrarle un mensaje de
advertencia y volver a pedir ese numero. El programa termina cuando el usuario haya
ingresado 10 numeros diferentes.
3. Una linea de autobuses quiere implementar un programa para reserva de sus asientos. La
emprese ha dividido sus asientos en 3 categorias, del 1 al 12 son de primera clase y cuestan
200.00, del 13 al 24 son de clase media y cuestan 150.00 y los del 25 al 40 son economicos
y cuestan 130.00. Se te pide hacer un programa que mediante un arreglo, controle estas
reservaciones. Debera preguntar al usuario cuantos asientos desea, de que clase y mostrar
los disponibles. El programa terminara cuando se hayan reservado todos los asientos.
4. Realiza un programa que capture del usuario una cadena y revise si es un palidromo o no.
Un palindromo es una frase que se lee igual de izquierda a derecha que de derecha a
izquierda. Ejemplo: anita lava la tina.
5. Realiza un programa que le pida al usuario ingresar su nombre y apellidos y que muestre
los datos por separado. Ejemplo: Juan Perez Cruz, Nombre: Juan, Apellido Paterno: Perez,
Apellido Materno: Cruz.

Potrebbero piacerti anche