Vous êtes sur la page 1sur 128

COMPUTACION III

Introduccin a la programacin estructurada


con C++.

Ral Oramas Bustillos.


Universidad de Occidente, Campus Culiacn.

Culiacn, Sinaloa Mxico; Marzo del 2000.

INDICE
Unidad 1. Introduccin al Lenguaje C++.
1.1. Historia del lenguaje C/C++.
1.2. Estructura de un programa en C++.
1.2.1. Los primeros pasos en la programacin.
1.2.2. Primer programa: Hola Mundo.
1.2.3. Definicin de variables.
1.2.3.1 Variables.
1.2.3.2 Nombres de variables.
1.2.3.3 Tipos de Datos.
1.2.3.4 Valores en nmero entero.
1.2.3.5 Nmeros en punto flotante.
1.2.3.6 Valores de caracteres.
1.2.3.7 Cadenas y booleanos.
1.2.4 Declaracin de variables.
1.3. Dialogo con el usuario: entrada y salida de datos.
1.3.1 Elementos de salida cout.
1.3.2 Elementos de entrada cin.
1.3.3 El estilo de programacin.

Unidad 2. Operadores aritmticos, de asignacin y relacionales.


2.1. Expresiones y operadores.
2.2. Expresiones de asignacin.
2.3.Operadores aritmticos.
2.4. Tipos de expresiones.
2.4.1. Prioridades de operadores y asociacin.
2.4.2. Uso de parntesis.
2.4.3. Operaciones booleanas.
2.4.3.1. Operadores relacionales.
2.5.3.2. Operadores lgicos.

Unidad 3. Estructuras de Control Selectivas.


3.1. Enunciado if.
3.2. Enunciado if/else.
3.3. Enunciados if anidados.

Unidad 4. Estructuras de Control Repetitivas.


4.1.
4.2.
4.3.
4.4.

Ciclo while.
Ciclo do/while.
Ciclo for.
Las opciones break y continue.
4.4.1. El enunciado break.
4.4.2. El enunciado continue.

Bibliografa consultada.

UNIDAD 1. Introduccin al Lenguaje C++.


Objetivos: Presentar la evolucin histrica del lenguaje C++ y mostrar al
alumno el proceso de compilacin de los programas C++.

1.1 Historia del lenguaje C++.


Primero, era el lenguaje B, despus C y ahora C++. Todos se desarrollaron en Bell Telephone Laboratories y,
como todos los lenguajes estructurados de alto nivel, tienen sus races en ALGOL (Ver Figura 1). El lenguaje B
fue desarrollado por Ken Thompson para Bells Labs en un esfuerzo para desarrollar un sistema operativo
usando un lenguaje de alto nivel.

Figura

1.
Evolucin de los lenguajes de programacin.

Antes del lenguaje B, los sistemas operativos fueron desarrollados usando el lenguaje ensamblador de la CPU en
particular sobre la cual se ejecutaba el sistema operativo. Usando el lenguaje B como una base, Dennis Ritchie
desarroll el lenguaje C para Bell Labs. El primer propsito del lenguaje C fue desarrollar un sistema operativo
para la minicomputadora DEC PDP-11 (Ver la Figura 2). El sistema operativo resultante se conoce como
UNIX.

Figura 2. Computadora PDP-1150.


De hecho, muchas de las versiones de UNIX en la actualidad se escriben en C casi por completo. El lenguaje C
fue originalmente definido en la obra clsica de The C Programming Language, escrito por Brian Kernigham y
2

Dennis Ritchie (1977). El lenguaje C se convirti en un lenguaje popular que el ANSI (American National
Standars Institute) liber en 1989 las normas para un estndar del lenguaje C. Un estndar de un lenguaje de
programacin es un documento que describe los detalles del lenguaje para que los programas se escriban con las
especificaciones estndar y sean porttiles entre diversos sistemas.
El lenguaje C++ es una extensin del lenguaje C. Bjarne Stroustrup de Bell Labs mejor el lenguaje C al
principio de los aos ochenta adicionando la capacidad de la programacin orientada a objetos (POO). El
objetivo del doctor Stroustrup fue mantener la eficiencia de C proporcionado la fuerza de la POO al lenguaje.

1.2. Estructura de un programa en C++.


Un programa de cmputo es un conjunto de instrucciones ejecutados por la computadora, para realizar una tarea
especifica. Los programadores desarrollan programas utilizando lenguajes de programacin de alto, bajo o
nivel intermedio. Inicialmente, los programadores escriban programas que consistan en largas relaciones de
nmeros (instrucciones) formados nicamente por ceros y unos (Figura 3).

Figura 3. Programacin de bajo nivel, secuencias de ceros y unos.


Los lenguajes a partir de entonces han evolucionado pasando por los lenguajes simblicos tal como los
Ensambladores hasta los modernos de alto nivel donde el programador ya no se encarga de los detalles relativos
a la forma como la computadora seguir fsicamente cada instruccin.
El lenguaje C++ se considera de alto nivel porque nos permite desarrollar programas utilizando un paradigma
orientado a objetos pero nos proporciona la flexibilidad de acceder a los recursos internos de una computadora
tal como lo hara un lenguaje de bajo nivel.

1.2.1. Los primeros pasos en la programacin.


El programador es el encargado de teclear las instrucciones o declaraciones (lneas de texto que representan
comandos) en un editor de textos. Cuando se termina de teclear las declaraciones del programa en el editor, se
guarda el conjunto de instrucciones al que se le denomina cdigo fuente. Para convertir el archivo fuente en un

programa ejecutable se lleva a cabo un proceso de compilacin, al final el archivo ejecutable (*.exe) es una
secuencia de bits que son interpretados o ejecutados por la computadora.
Para realizar un programa en C++ hay que seguir los siguientes pasos (Figura 4):

Realizar un anlisis profundo del problema que estamos


tratando de solucionar y entonces disear el algoritmo
adecuado.

Escribir
el
cdigo
fuente
del
programa
(nombre_programa.cpp ): donde escribir significa
traducir el algoritmo escrito en pseudocdigo o
diagramas de flujo al lenguaje de programacin en un
de textos.

Generar
el
cdigo
objeto
del
programa
(nombre_programa.obj ): Se ejecuta un programa
llamado compilador indicndole cual es nuestro cdigo
fuente (nombre_programa.cpp ).
El compilador
traduce el programa fuente al lenguaje interno de la
computadora .

El compilador comprueba si hemos cometido algn error


sintaxis al escribir el cdigo fuente.

Generar
el
archivo
ejecutable
(nombre_programa.exe ). Se ejecuta un programa
enlazador (llamado linker) indicndole cual es nuestro
cdigo objeto (nombre_programa.obj ). El linker
genera un archivo ejecutable *.exe que ya se puede
ejecutar.

Figura 4. Ciclo de desarrollo de un programa en C++.

editor

de

1.2.2. Primer programa: Hola Mundo.


La Figura 5 muestra la estructura bsica de un programa C++.
Directivas del
preprocesador

Nombre de la
funcin

Bloque

#include <iostream.h.>
void main()
{
...
... Aqu va el cdigo del programa
...
}

Figura 5.

Estructura
bsica de un programa C++.

De la Figura 5 observe la palabra:


main()

en donde la instruccin main() se define como una funcin porque delante de la palabra contiene parntesis.
En todos los programas C++ debe de haber una funcin titulada main() , que ser la primera que se ejecute al
correr el programa.
Observe que el cuerpo de la funcin aparece englobado entre unas llaves: { y }. Las llaves sirven para marcar
el inicio y final de un bloque de cdigo, en este caso en particular para decirle a la computadora en donde inicia
la primera instruccin del programa y cuando se ha llegado al final del mismo.
En la primera lnea del programa:
#include <iostream.h>

el signo # indica que esta sentencia es en realidad una instruccin para el precompilador. El compilador realiza
en realidad varias pasadas a travs del programa que est compilando. En la primera pasada, antes de intentar
efectuar la conversin del cdigo, se limita a buscar los signos #, y a hacer las sustituciones en el programa que
sean necesarias como consecuencia de las sentencias que siguen a esos signos (#).
La razn de ser para las directivas del preprocesador es la siguiente: los diseadores del lenguaje C prefirieron
la simplicidad y elegancia del lenguaje a sus funciones. Hay que tener en cuenta que estaban diseando un
lenguaje para la programacin de sistemas (de hecho se utilizaba para el desarrollo del sistema operativo
UNIX), de forma que para ellos era extremadamente importante la velocidad, eficiencia y potencia del lenguaje,
e ignoraban otras caractersticas ms mundanas, incluyendo en estas algunas tan bsicas como las funciones de
entrada/salida. Se podra decir que desarrollaron un lenguaje con una gramtica completa pero prcticamente
sin vocabulario.

Figura 6. Dennis Ritchie y

Ken Thompson,
creadores del Sistema Operativo UNIX.

Ejemplo 1. Programa: hola.cpp


1.Introduce las siguientes lneas de cdigo en el editor de textos del compilador C++.
#include <iostream.h>
void main()
{
/*impresin de resultados*/
cout<<"Hola mundo";
}

2.Guarda el cdigo fuente con el nombre hola.cpp


3.Compile el archivo.
4.Si no existen errores de sintaxis, entonces se debe generar el archivo ejecutable hola.exe.
5.Cul es la salida desplegada por el programa?

Anlisis del ejemplo 1. (programa: hola.cpp)

La directiva del preprocesador #include indica al compilador la inclusin del cdigo para manipular los
objetos de entrada y salida de la librera iostream.h.
La funcin main() , indica que el programa se inicia aqu. En la lnea despus del corchete indicador del
inicio del bloque de cdigo {, se utiliza el objeto cout, cuyo nombre deriva de Console Output y muestra en el
monitor el mensaje de salida : Hola mundo. El dato Hola mundo es enviado al objeto cout al colocar de manera
sencilla el smbolo (enviar a) de insercin, <<, antes del mensaje y despus del nombre del objeto.

cout<<"Hola mundo";

Observe que la sentencia termina con un punto y coma ;. El programa termina su ejecucin cuando encuentra
el ultimo corchete, }, de la funcin main()

La salida desplegada por el programa ser:


Hola mundo

Ejemplo 2. Programa: mensajes.cpp


1. Introduce las siguientes lneas de cdigo en el editor de textos del compilador C++.
#include <iostream.h>
void main()
{
/*impresin de resultados*/
cout<<"Curso de C++";
cout<<\nIntroduccin a la programacin C++;
}

2.Guarda el archivo con el nombre mensajes.cpp


3.Compila el programa.
4.Si no existen errores de sintaxis, entonces se debe generar el archivo ejecutable mensajes.exe.
5.Cul es la salida desplegada por el programa?

Anlisis del ejemplo 2. (programa: mensajes.cpp)

El objeto cout esta diseado para desplegar una cadena en el monitor. Quizs se pregunte por qu no apareci
\n en la salida. Los caracteres \ y n, utilizados juntos, forman una secuencia de escape para una lnea nueva.
Le indican a cout que enve instrucciones al elemento de salida para iniciar una lnea nueva. En C++, el
carcter de la diagonal invertida (\) permite un escape de la interpretacin normal que lo sigue, alterando el
significado del siguiente carcter.
Observe en los archivos fuente de sus dos programas que todos los comandos del lenguaje C++ (palabras
reservadas) estn escritas en minsculas a excepcin de las cadenas de caracteres que forman parte de las
sentencias cout y que estas instrucciones terminan con un punto y coma. Estas sentencias estn contenidas en
el bloque de la funcin principal {,}. En el lenguaje C++ los caracteres en minsculas son diferentes a las
maysculas.

La salida desplegada por el programa ser:


Curso de C++
Introduccin a la programacin C++

Actividad 1.
Objetivo: el alumno identificar los errores de sintaxis de un programa C++.
Qu es la sintaxis?
La sintaxis de un lenguaje de programacin es el conjunto de reglas para formular instrucciones
gramaticalmente correctas en un lenguaje. En la prctica, esto significa que una instruccin C++ con la sintaxis
correcta tiene una forma apropiada especifica para el compilador. En esa forma, el compilador aceptar la
instruccin y no generar un mensaje de error.
1.Cul es el error de sintaxis en los siguientes programas?
a)
#include <iostream.h>
void main()
{
cout<<"hola mundo";

b)
include <iostream.h>
void main()
{
cout<<"hola mundo"
}

Ejercicios propuestos: primer programa.


1.Escribe un programa que despliegue el siguiente mensaje en pantalla.
Bits.- Conjunto de ceros y unos.
Bytes.- Contiene ocho bits.
Kilobyte.- 1000 bytes aproximadamente.

2.Escribe un programa que imprima en pantalla el siguiente mensaje:


1
12
123
1234
12345

c)
include <iostream.h>
void main(
{
cout<<"hola mundo";
}

3.Escribe un programa que imprima en pantalla el siguiente mensaje:


12345
1234
123
12
1

1.2.3. Definicin de variables.


La computadora es bsicamente un dispositivo para aceptar datos (en forma de nmeros, caracteres o smbolos)
y cuenta con una serie de instrucciones (programas) para manipularlos, y proporcionar con ello una serie de
respuestas.
La existencia de la computadora, como un mecanismo u herramienta til, depende exclusivamente de la manera
en como se alimenta la informacin y las posibilidades que se tienen para procesarla. Para ejecutar el conjunto
de instrucciones estas deben ser almacenadas en forma de lenguaje que la computadora pueda entender (por
ejemplo el Lenguaje C++).
El lenguaje de programacin (por ejemplo el C++) nos permite un flujo de control de programa, para poder
especificar el orden de ejecucin de las instrucciones, adems de permitir la utilizacin de almacenadores para
la informacin que est siendo procesada ( estamos hablando de las variables).

1.2.3.1 Variables.
Las variables son una funcin bsica de cualquier lenguaje de programacin. Las variables son lugares en la
memoria en donde pueden guardarse valores; tienen asociado un nombre, un tipo y un valor (Figura 7).

Monedas

100
Contenido (valor)
de la variable

Nombre de la
variable

Figura 7. Almacenamiento de una variable.


El nombre se utiliza para identificar a la variable en la aplicacin; el tipo determina la clase de valores que se
puede almacenar as como las operaciones que se pueden realizar con la variable.

Ejemplo 3. Programa: variable.cpp


1. Introduce las siguientes lneas de cdigo en el editor de textos del compilador C++.
#include <iostream.h>
void main()
{
/*declaracin de variables*/
int numero;
/*inicializacin de variables*/
numero=10;
/*impresin de resultados*/
cout<<"El valor de la variable nmero es igual a ";
cout<<numero;
}

2.Guarda el archivo con el nombre variable.cpp


3.Compila el programa.
4.Si no existen errores de sintaxis, entonces se debe generar el archivo ejecutable variable.exe.
5.Cul es la salida desplegada por el programa?

Anlisis del ejemplo 3. (programa: variable.cpp)

La siguiente sentencia,
numero=10;

asigna el valor 10 a la variable numero utilizando el signo igual (=). Esta instruccin hace que la computadora
almacene el valor de 10 (si equivalente en binario) en una posicin de memoria que se ha reservado para
contener a la variable numero .
Antes de asignar un valor a una variable, dentro de un programa, debe definirse el tipo de dato que contendr
esa variable. En este ejemplo la declaracin,
int numero;

reserva espacio para contener un numero entero que se encuentre en un rango de 1 a 32767, es decir el nmero
puede almacenar un valor 1, 10, 1234, inclusive el 32767. Cuando la computadora lee el valor almacenado en
la memoria para imprimirlo
cout<<numero;

debe decidir de que forma ha de interpretar los ceros y unos almacenados en esa parte de la memoria para
desplegarlo en la pantalla, utilizando como informacin el tipo de dato asignado a la variable.

La salida desplegada por el programa ser:


El valor de la variable nmero es igual a 10

10

Ejemplo 4. Programa: asignaci.cpp


1. Introduce las siguientes lneas de cdigo en el editor de textos del compilador C++.
#include <iostream.h>
void main()
{
/*declaracin de variables*/
int num;
/*inicializacin de variables*/
num=10;
/*impresin de resultados*/
cout<<"El valor de la variable num es igual a ";
cout<<num*num;
}

2.Guarda el archivo con el nombre asignaci.cpp


3.Compila el programa.
4.Si no existen errores de sintaxis, entonces se debe generar el archivo ejecutable asignaci.exe.
5.Cul es la salida desplegada por el programa?

Anlisis del ejemplo 4. (programa: asignaci.cpp)

La primera lnea: #include<iostream.h> comunica al preprocesador que incluya dentro del programa el
contenido del archivo iostream.h. Este archivo contiene informacin relacionada con la entrada/salida de datos
(mostrar por pantalla un resultado, leer de teclado los datos que escribe el usuario, etc.) .
Un programa C++ est formado por una o ms funciones. main() es una funcin que debe aparecer en
cualquier programa C++ porque de all se inicia la ejecucin del mismo.
Las llaves ({,}) en este programa indican bloque de cdigo, en este caso particular el inicio y final de la funcin
main.
La lnea: int num; es una declaracin de una variable donde num es el nombre de la variable e int indica que
la variable es de tipo entero, es decir, que podrn almacenarse valores que sean nmeros enteros.
En la lnea num=10; le asignamos el nmero 10 a la variable. La sentencia
cout<<num*num;

le indica a la computadora desplegar el resultado de la multiplicacin de num*num;

La salida desplegada por el programa ser:


El valor de la variable nm es igual a 100

11

Actividad 2.
Objetivo: el alumno identificar los errores de un programa C++.
Un error de sintaxis es una violacin de las reglas de programacin. Durante el proceso de compilacin de un
programa C++, se generarn mensajes de advertencia y error. El programa no compilar ms all del punto del
error hasta que sea corregido. Una vez que se corrige el error se debe intentar compilar otra vez el programa.
Si se detectan otros errores, deber corregirlos, volver a compilar el programa y as sucesivamente, hasta que
todo el programa est bien compilado.
Una vez que se ha compilado el programa y generado un archivo ejecutable, deber correrlo. Sin embargo, slo
porque se ha compilado el programa exitosamente no significa que se ejecutar correctamente dentro de todas
las posibles condiciones. Algunas fallas comunes que ocurren en esta etapa incluyen errores lgicos y de tiempo
de ejecucin. Un error de lgica ocurre cuando el compilador hace lo que le dice que haga, pero no hace lo que
usted quiere que haga. Un error de tiempo de ejecucin ocurre cuando el programa intenta realizar una
operacin ilegal como las definidas por las leyes de matemticas.
1.Cul es el error de sintaxis del siguiente programa?
#include <iostream.h>
void main()
{
int num
num=10;
cout<<El valor de la variable num es ;
cout<<num;
}

2.Encuentra el error de lgica del siguiente programa; Cul es el valor de la variable z?:
#include <iostream.h>
void main() {
int x,y,z;
z=x+y;
cout<<z;
}

12

3.Encuentra los errores de lgica y sintaxis del siguiente programa.


#include <iostream.h>
void main()
{
int x,y;
x=y=0;
z=x/y
cout< z;
}

4.Cul es el resultado impreso por el siguiente programa?, por que?


#include <iostream.h>
void main()
{
int x,y,z;
x=10;
y=15;
x+y=z;
cout<<x+y;
}

1.2.3.2 Nombres de variables.


Los identificadores son los nombres elegidos para variables, constantes, funciones, clases y similares. El primer
carcter debe ser una letra o un subrayado. El resto del nombre puede contener dgitos. Las letras pueden ser
maysculas o minsculas. La longitud permitida para nombre de identificador varia con las versiones del
compilador C++, pero la mayora permiten hasta 32 caracteres significativos.
Las reglas par construir identificadores son las siguientes:

Un identificador es una secuencia arbitraria de letras y dgitos.

El primer carcter del identificador debe ser una letra.

El carcter subrayado (_) se trata como una letra.

Los identificadores que comienzan con dos subrayados, estn reservados para uso interno del compilador
C++.
C++ es sensible al tamao de las letras. As pues, las letras maysculas y minsculas se tratan como
caracteres diferentes.

nombre_apellidos
Nombre_Apellidos
NOMBRE_APELLIDOS

Son identificadores distintos.


Algunos identificadores se designan como palabras reservadas y no se pueden utilizar como nombres de
entidades de usuario. Una palabra reservada es una palabra elegida por el lenguaje para un propsito especial y
slo se puede utilizar de una manera especfica.

13

Algunos ejemplos de identificadores vlidos:


x
temp
max_ventas
TasaDeInteres
_interes

Y otros ejemplos de identificadores no vlidos:


12
1 mes
Ventas de Mayo
float

//comienza con un dgito en lugar de una letra


//comienza con un dgito y no una letra
//contiene un carcter blanco
//es una palabra reservada

Actividad 3.
Objetivo: Identificar los nombres de variables correctos e incorrectos.
1.Indique con una cruz en la casilla correspondiente si los siguientes son nombres vlidos para las variables. Si
son nombre invlidos, explique por qu.
Variable
poder
densidad
m1234$
ampNuevo
1234
abcd
total
tangente
b34a
!examen
$peso
aux numero

Correcta

Incorrecta

Por qu?

2. Encuentra los errores de sintaxis para el siguiente programa:


#iclude <iostream.hh>
void main()
{
int valor1,valor_2;
int suma!;
int resta;
valor1=valor_2=10;
suma!=valor1+valor_2;
resta=valor1-valor_2;

14

cout<<La suma es <<suma!;


cout<<La resta es <<resta;
}

3. Cul es la salida desplegada por el siguiente programa?, Por que?


void main()
{
int numero;
numero*20;
cout<<num ero;
}

15

1.2.3.3 Tipos de datos.


Uno de los usos principales de una computadora es la realizacin de clculos sobre datos numricos y presentar
informacin en un formato alfanumrico (letras, nmeros formando palabras).
Los programas en C++ pueden procesar diferentes tipos de datos de distintas maneras. Los tres valores bsicos
de datos empleados en C++ son los nmeros enteros, nmeros en punto flotante y valores de caracteres.
Cada tipo de dato define un conjunto de valores que pueden ser almacenados en una variable y las operaciones
que se pueden realizar con los elementos de ese conjunto de valores. (Figura 8).
Se despliega la
informacin procesada

Se permite la entrada de tipos de


datos enteros, punto flotante y de
caracteres
PROCESO
SE EJECUTA EL
PROGRAMA C++

Teclado
Pantalla
Figura 8. Los programas C++ procesan diferentes tipos de datos.

1.2.3.4 Valores en nmero entero.


Un valor en nmero entero es cero o cualquier nmero positivo o negativo sin punto decimal. Algunos valores
vlidos en nmero entero son
0

-10

+25

1000

253

-26351 +36

Como se observa, un nmero entero puede tener signo de mas (+) o menos (-) al principio o no tenerlo. No se
permiten comas, puntos decimales o smbolos especiales, como el signo de pesos ($). Algunos ejemplos de
valores invlidos en nmeros enteros son
$255.52

2,553 3.

6,243,892

1,49284

+6.0

Las asignaciones de espacio de almacenamiento ms comunes para el tipo de dato entero se muestran en la
Tabla 1.
Tabla 1. Tipo de dato Entero.
Palabra reservada
int
long

Tamao
2 Bytes
4 Bytes

Mximo valor
32,767
2,147,483,647

Mnimo valor
-32,768
-2,147,483,648

Actividad 4.
Objetivo: Distinguir el rango de valores para un nmero entero.
1.Indique con una cruz en la casilla correspondiente si los siguientes valores de tipo entero no son legales de
acuerdo a la Tabla 1.

16

Nmero entero
+35
35
-247
0
3.14
32,767
32768

Correcto

Incorrecto

Por qu?

2. El overflow o desbordamiento de pila se define como la condicin en que el programa intenta colocar ms
datos en un rea de memoria de los que sta puede contener, lo que provoca la emisin de un mensaje de error.
Por ejemplo, multiplicando dos nmero enteros puede fcilmente producir un resultado entero ms all de este
rango, dando un resultado incorrecto. En cul de las siguientes lneas del programa se produce un overflow?
#include <iostream.h>
void main()
{
int valor1,valor2,valor3;
valor1=32*1000;
valor2=100*1000;
valor3=(100*1000)/5;
cout<<Valor 1 =<<valor1;
cout<<Valor 2 =<<valor2;
cout<<Valor 3 =<<valor3;
}

1.2.3.5 Nmeros en punto flotante.


Un nmero en punto flotante, tambin llamado nmero real, es cualquier nmero con o sin signo que tiene un
punto decimal. Estos son algunos ejemplos de nmeros en punto flotante
+10.625

5.

-6.2

3251.92

0.0

0.33

-6.67 +2.

Observe que los nmeros 5., 0.0 y +2. estn clasificados como nmeros en punto flotante, mientras que los
mismos nmeros escritos sin punto decimal (5,0,+2) seran valores en nmero entero. Como ocurre con los
valores en nmero entero, en los nmeros en punto flotante no se permiten smbolos especiales, como el signo
de pesos o la coma. Son ejemplos de nmeros invlidos en punto flotante.
5,326.25

24

123

6,459 $10.29

C++ tiene tres categoras de nmeros en punto flotante: flotante (float), doble (double) y largo doble (long
double). La diferencia entre estos nmeros es la cantidad de espacio para almancenaje que una computadora
utiliza en cada tipo.

17

Las asignaciones de espacio de almacenamiento ms comunes para el tipo de dato flotante se muestran en la
Tabla 2.
Tabla 2. Tipo de dato flotante.
Palabra reservada
float
double
long double

Tamao
2 Bytes
8 Bytes
10 Bytes

Mximo valor
3.4x1038
1.7x10308
1.1x104932

Mnimo valor
3.4x10-38
1.7x10-308
1.1x10-4932

Actividad 5.
Objetivo: Distinguir el rango de valores para un nmero flotante.
1.Indique con una cruz en la casilla correspondiente si los siguientes valores de tipo flotante no son legales de
acuerdo a la Tabla 2.
Nmero flotante
35.7
-35.7
0.456
25
3,240
32,767.70
$32,768.43

Correcto

Incorrecto

Por qu?

2. Encuentra los errores de sintaxis en el siguiente programa:


#include <iostream.h>
vod main()
{
float valor1,valor2 valor3;
valor1=32.0*1000.0;
valor2=($1,100)*1000;
valor3=(100*1000)/5.0;
cout>>Valor 1 =<<valor1;
cout<<Valor 2 =<<valor2;
cout<<Valor 3 =<<valor3;
}

18

1.2.3.6 Valores de caracteres.


El tercer tipo bsico de datos reconocido por C++ son los caracteres. Los caracteres incluyen letras del alfabeto
(tanto maysculas y minsculas), los diez dgitos del alfabeto de 0 al 9, y los smbolos especiales. Un solo valor
de carcter es cualquier letra nica, dgito o smbolo especial encerrado por comillas individuales. Algunos
ejemplos de valores vlidos de caracteres:
A

Los valores de caracteres normalmente se almacenan en una computadora utilizando cdigos ASCII (American
Standard Code For Information Interchange). Hay dos tipos de caracteres definidos en C++: el char y el
unsigned char, ambos se muestran en la Tabla 3.
Tabla 3. Tipo de dato char.
Palabra reservada
char
unsigned char

Tamao
1 Byte
1 Byte

Mximo valor
127
0

Mnimo valor
-128
255

1.2.3.7 Cadenas y booleanos.


Una cadena (string) es simplemente una coleccin de caracteres que se encierran en dobles comillas como
C++

Recuerde que los caracteres individuales se encierran en comillas sencillas. As a dentro denota un carcter
individual, mientras a significa una cadena de caracteres.
Los datos booleanos estn restringidos a uno de dos valores: true (verdadero) y false (falso), es la forma ms
simple de datos que puede usar un programa. Tradicionalmente, C y C++ no admitan los datos bolanos ms
que una representacin de nmeros enteros 1 y 0 para representar verdadero y falso.
En la practica, los datos booleanos son tiles para examinar una condicin especifica, y como la condicin
puede resultar cierta o falsa, permiten realizar una accin determinada.

1.2.4 Declaracin de variables.


Antes de poder utilizar una variable en un programa C++, esta deber definirse. Cuando se define una variable
(vase Figura 9), el compilador reserva un lugar dentro de la memoria de la computadora para el valor de la
variable.
Indica a la computadora
que

Reserve suficiente espacio


para un nmero entero

int total;

Indica a la computadora
que
19

Marque el primer byte


del espacio de almacenaje
reservado con el nombre de
total

Figura 9. Definicin de una variable de tipo entero.


En la Figura 9 se define una variable de tipo entero con la palabra reservada int seguido de un nombre de
variable denominado total donde se aparta el espacio suficiente para almacenar los valores para esta variable; El
nombre de la variable lo utiliza la computadora para localizar el punto de inicio del rea reservada de memoria
de cada variable.
La sintaxis bsica para declarar una variable es la siguiente:
tipo identificador[,identificador...]

Donde el tipo de dato determina los valores que puede tomar la variable as como las operaciones que con ella se
pueden realizarse; el identificador indica el nombre de la variable.
De tal manera, la instruccin para declarar
int total;

declara total como el nombre de la variable capaz de almacenar un valor en nmero entero.

Las variables utilizadas para guardar los valores en punto flotante se declaran utilizando la palabra clave float.
Por ejemplo, la instruccin
float suma;

declara suma como una variable que ser utilizada para guardar un nmero en punto flotante. Otros ejemplos
de declaracin de variables se muestran a continuacin:
int k;
int j,k,m;
double temperatura;
long saldo;

Ejemplo 5. Programa: promedio.cpp


1. Introduce las siguientes lneas de cdigo en el editor de textos del compilador C++.

20

#include <iostream.h>
void main() {
/*declaracion de variables*/
float calif1;
float calif2;
float total;
float promedio;
/*inicializacion de variables*/
calif1=85.5;
calif2=97.0;
/*procesa los datos de entrada*/
total=calif1+calif2;
promedio=total/2.0;
/*imprime los resultados*/
cout<<"La calificacin promedio es "<<promedio;
}

2.Guarda el archivo con el nombre promedio.cpp


3.Compila el programa.
4.Si no existen errores de sintaxis, entonces se debe generar el archivo ejecutable promedio.exe.
5.Cul es la salida desplegada por el programa?

21

Anlisis del ejemplo 5. (programa: promedio.cpp)

El programa asigna valores de tipo flotante a las variables calif1, calif2 y procesa esos valores para obtener el
total y promedio de las calificaciones
total=calif1+calif2;
promedio=total/2.0;

Note que cuando un nombre de variable se enva a cout el valor almacenado se colocar en el flujo de salida y se
desplegar.
cout<<"La calificacin promedio es "<<promedio;

Cuando ejecute el programa, aparecer el siguiente resultado:


La calificacin promedio es 91.25

Las variables en nmero entero, real y carcter se deben declarar antes de utilizarlos.

Ejemplo 6. Programa: car.cpp


1. Introduce las siguientes lneas de cdigo en el editor de textos del compilador C++.
#include <iostream.h>
void main() {
/*declaracin de variables */
char ch;
/*inicializacin de variables*/
ch='a';
/*procesa e imprime los datos de entrada*/
cout<<"El carcter guardado en ch es "<<ch;
ch='m';
cout<<"\nEl carcter ahora guardado en ch es "<<ch;
}

2.Guarda el archivo con el nombre car.cpp


3.Compila el programa.
4.Si no existen errores de sintaxis, entonces se debe generar el archivo ejecutable car.exe.
5.Cul es la salida desplegada por el programa?

Anlisis del ejemplo 6. (programa: car.cpp)

22

Las variables de caracteres se declaran utilizando la palabra reservada char; la declaracin


char ch;

indica que ch ser una variable de tipo carcter.

Cuando ejecute el programa, la salida producida ser:


El carcter guardado en ch es a
El carcter ahora guardado en ch es m

Observe que la primera letra guardada en la variable ch es a y la segunda letra guardada es m. Como una
variable slo se puede utilizar para guardar un valor a la vez, la asignacin de m a la variable hace que a quede
sobrescrita automticamente.

Actividad 6.
Objetivo: Distinguir los diferentes tipos de datos C++.
1.Indique con una cruz en la casilla correspondiente el tipo de dato al que corresponde cada nmero.
Nmero

Caracter
(char)

Cadena Entero
(String) (int)

Flotante
(float)

0
-120
2.0
X
X
65.4
-708
0'
250
-250.0
x
12456
175.

2.Determina los tipos de datos apropiados para almacenar los valores de los siguientes datos
a) El promedio de cuatro calificaciones.
b) Los nombres de las capitales del mundo.
c) Los nmeros de asientos de un tren de pasajeros.
d) Los nombres de los elementos de la tabla peridica de elementos de qumica.
3.Determina el tipo de dato adecuado para almacenar los siguientes valores
a)
b)
c)
d)
e)

3.0 + 4.0 + 6.0


3+4+6
A
10-5/2;
A + B

23

1.3. Dialogo con el usuario: entrada y salida de datos.


Para disear y crear un programa de computadora el programador debe saber cmo se resuelve un problema
porque la computadora no hace ms de lo que se le dice. As para escribir un programa que resuelva un
problema determinado, el programador deber saber o encontrar el algoritmo adecuado de solucin.
Un algoritmo es definido como una secuencia lgica de pasos que puede usarse para resolver una clase
particular de problemas. Al escribir un programa el programador se enfrenta a dos tipos de tareas: disear un
algoritmo adecuado y codificar luego el algoritmo en un lenguaje de computadora.
Para resolver un problema que se convertir luego en un programa de computadora primero el programador
deber identificar cuales sern los datos de entrada, el formato de la salida y posteriormente la pregunta ms
difcil, qu algoritmo existe para convertir la entrada en la salida deseada?. Este proceso de solucin se
muestra en la Figura 10.

Figura 10. Etapas para la construccin de

un programa de computo con flujo


secuencial.

En C++ la librera de funciones iostream se encarga de proporcionar al programador las operaciones bsicas de
Entrada/Salida (E/S) para que pueda enfrentarse con xito a la resolucin de problemas con computadora. Para
acceder a la biblioteca iostream se debe incluir en cada programa el archivo de cabecera iostream.h, mediante la
directiva del preprocesador #include. Es decir, casi todos los programas C++ contienen la directiva:
#include <iostream.h>

La biblioteca iostream se basa en el concepto de flujos. Un flujo o stream es un medio para describir el flujo o
secuencia de datos de una fuente (productor) a un destino (consumidor). C++ realiza todas las entradas y
salidas como flujos de caracteres. Si su programa recibe entrada del teclado, de un archivo de disco, de un
modem o de un ratn, C++ ve slo flujo de caracteres. C++ no tiene que conocer cual es el tipo de dispositivo
que proporciona la entrada; el sistema operativo maneja los dispositivos especficos y los programas manejan
caracteres de datos sin preocuparse del dispositivo.

24

Esta E/S por flujos significa que se pueden utilizar tanto las mismas funciones para recibir entrada desde el
teclado como desde un modem. Se pueden utilizar las mismas funciones para escribir en un archivo en disco,
impresora o en la pantalla. La Figura 11 ilustra los medios para encauzar o dirigir la salida o entrada del flujo
al dispositivo adecuado.

<<

cou
t

variable

>>

cin

variable

Figura 11. Las operaciones de E/S son flujos de cadenas.


La Tabla 4 muestra los objetos de E/S, sus dispositivos por defecto u omisin, y sus descripciones.
Tabla 4. Objetos C++ de E/S.
Nombre del objeto
cin
cout
cerr
clog

Dispositivo por defecto


Teclado
Pantalla
Pantalla
Pantalla

Descripcin
Dispositivo estndar de entrada
Dispositivo estndar de salida
Dispositivo estndar de error
Dispositivo estndar de error

El flujo cout se utiliza para visualizar resultados en la pantalla y el flujo cin para permitir al usuario leer o
capturar informaciones.

25

1.3.1 Elementos de salida cout.


La generacin de datos desde el sistema se denomina escritura. Para escribir informacin en una pantalla
utilizando se utiliza el enunciado cout . El formato general para el enunciado cout es como sigue:
cout<<elemento#1<<elemento#2<<...<<elemento#n;

Donde elemento#1, elemento#2...elemento#n es una lista de elementos para escribirse en pantalla los
cuales estn separados por el operador de insercin de flujo ( <<). El objeto cout es un flujo de salida que se
liga o conecta al sistema de pantalla de su monitor. Los elementos se insertan dentro de un flujo de salida a
travs del operador de insercin de flujo (<<).

Ejemplo 7. Programa: cout1.cpp


1. Introduce las siguientes lneas de cdigo en el editor de textos del compilador C++.
#include <iostream.h>
void main()
{
/*imprime resultados de salida*/
cout<<"Evaluacin de expresiones aritmticas";
cout<<"\nLa * y / tiene precedencia sobre + y -";
cout<<"\n5 + 3 + 4 / 2 = "<<5+3+4/2;
//10
cout<<"\n5 + 3 * 4 / 2 = "<<5+3*4/2;
//11
cout<<"\n5 + 3 / 4 + 2 = "<<5+3/4+2;
//7
}

2.Guarda el archivo con el nombre cout1.cpp


3.Compila el programa.
4.Si no existen errores de sintaxis, entonces se debe generar el archivo ejecutable cout1.exe.
5.Cul es la salida desplegada por el programa?

Anlisis del ejemplo 6. (programa: cout1.cpp)

Para escribir informacin de caracteres, deber encerrar la informacin de la salida entre comillas tal y como se
muestra en la sentencia cout del programa
cout<<"Evaluacin de expresiones aritmticas";

Cuando quiera escribir informacin numrica fija, simplemente inserte los valores numricos dentro del flujo de
salida cout con el uso del operador de insercin (<<), por ejemplo
cout<<"\n5 + 3 + 4 / 2 = "<<5+3+4/2;
cout<<"\n5 + 3 * 4 / 2 = "<<5+3*4/2;
cout<<"\n5 + 3 / 4 + 2 = "<<5+3/4+2;

//10
//11
//7

26

La salida desplegada por el programa cuando se ejecute ser:


Evaluacin de expresiones aritmticas
La * y / tiene precedencia sobre + y 5 + 3 + 4 / 2 = 10
5 + 3 * 4 / 2 = 11
5 + 3 / 4 + 2 = 7

Ejemplo 8. Programa: cout2.cpp


1. Introduce las siguientes lneas de cdigo en el editor de textos del compilador C++.
#include <iostream.h>
void main()
{
/*declaracin de variables*/
int num;
/*inicializacion de valores*/
num=1;
/*imprime resultados de salida*/
cout<<"La variable num tiene un valor de -->";
cout<<num;
}

2.Guarda el archivo con el nombre cout2.cpp


3.Compila el programa.
4.Si no existen errores de sintaxis, entonces se debe generar el archivo ejecutable cout2.exe.
5.Cul es la salida desplegada por el programa?

Anlisis del ejemplo 8. (programa: cout2.cpp)

La declaracin de la variable
int num;

indica que num es una variable de tipo entero, es decir, que se podrn almacenar valores que sean enteros. El
compilador reserva en la memoria principal de la computadora espacio suficiente para almacenar los valores
asignados para num.
La sentencia de asignacin
num=1;

guarda el valor de 1 en la variable num. y con la siguientes sentencias se imprime un mensaje en pantalla y se
recupera el contenido de la variable num .
cout<<"La variable num tiene un valor de -->";
cout<<num;

27

La salida desplegada por el programa cuando se ejecute ser:


La variable num tiene un valor de -->1

Ejercicios propuestos: salidas con cout.


4.Escriba un programa que convierta yardas a pulgadas. Para 2 yardas el programa deber imprimir el
siguiente mensaje en pantalla:
2 yardas son 72 pulgadas.

Cmo se determina la frmula para convertir de yardas a pulgadas?


5.Escriba un programa para convertir de yardas a pies, de tal forma que para 7 yardas la salida impresa en
pantalla del programa sea:
7 yardas son 21 pies.

6.Escribe un programa para convertir de grados Fahrenheit a Celsius. Para 59 Fahrenheit el programa deber
desplegar el siguiente mensaje:
59 Fahrenheit son 15 celsius.

La frmula para convertir Fahrenheit a Celsius es C=(F-32)*5/9 donde la C representa a los grados Celsius y la
F a los Fahrenheit.
7.Escriba un programa que convierta horas y minutos a minutos. Por ejemplo para 2 horas y 15 minutos la
salida por pantalla deber mostrarse:
2 Horas y 15 Minutos son 125 Minutos.

8.Escriba un programa que despliegue los resultados de las expresiones 3.0*5.0, 7.1*8.3-2.2, 3.3/
(6.1*5) . Calcule manualmente el valor de estas expresiones para verificar que los valores desplegados son
correctos.
9.Escriba

un

programa

que

despliegue

el

resultado

de

la

expresin

15/2*7(7+(68-

15*33+45*45/16)/3)15+9 . Calcule manualmente el valor de estas expresiones para verificar que los valores

desplegados son correctos.

1.3.2 Elementos de entrada cin.


La obtencin de informacin dentro de un programa para procesamiento se llama lectura. El flujo cin se utiliza
para procesar flujos de entrada, y esta asociado de manera predeterminada, al teclado de su sistema. De esta
manera, cuando se escribe informacin por medio del teclado, sta fluir dentro de cin. El formato general para
el enunciado cin es como sigue:
cin>>variable para lectura;

28

La instruccin de lectura se forma por la palabra cin y el operador de extraccin de flujo ( >>), que es seguido
por la variable que ser leda. El operador (>>) extrae los datos que se van a leer de los datos de entrada en la
memoria temporal de flujo (Figura 12).

#include <iostream.h>
void main()
{
cin>>
cout<<
}

Teclado

Pantalla

Figura 12. cin se utiliza para introducir datos y cout para desplegarlos.

Ejemplo 9. Programa: cin1.cpp


1. Introduce las siguientes lneas de cdigo en el editor de textos del compilador C++.
#include <iostream.h>
void main()
{
/*declaracin de variables*/
int numero;
/*valores de entrada*/
cout<<"Dame un nmero -->";
cin>>numero;
/*procesa e imprime los datos de entrada*/
cout<<numero<<" al cuadrado es -->"<<numero*numero;
}

2.Guarda el archivo con el nombre cin1.cpp


3.Compila el programa.
4.Si no existen errores de sintaxis, entonces se debe generar el archivo ejecutable cin1.exe.
5.Cul es la salida desplegada por el programa?

Anlisis del ejemplo 9. (programa: cin1.cpp)

La declaracin de la variable
int numero;

indica que numero es una variable de tipo entero y el compilador reserva en la memoria principal de la
computadora espacio suficiente para esa variable. Cuando la computadora ejecuta las sentencias:
cout<<"Dame un nmero -->";
cin>>numero;

29

Despliega un mensaje en la pantalla (se detiene la ejecucin del programa) esperando a que el usuario ingrese
un nmero entero. Este valor se asignar a la variable nmero y la computadora continuar con la ejecucin del
programa.

Si el nmero teclado despus del mensaje impreso fue 5 y se oprimi la tecla <Enter> en la pantalla aparecer:
Dame un nmero -->5
5 al cuadrado es -->25

Ejemplo 10. Programa: cin2.cpp


1. Introduce las siguientes lneas de cdigo en el editor de textos del compilador C++.
#include <iostream.h>
void main()
{
/*declaracin de variables*/
float pies;
/*valores de entrada*/
cout<<"Dame un nmero de pies -->";
cin>>pies;
/*procesa e imprime los datos de entrada*/
cout<<pies<<" pies son "<<pies*12<<" pulgadas";
}

2.Guarda el archivo con el nombre cin2.cpp


3.Compila el programa.
4.Si no existen errores de sintaxis, entonces se debe generar el archivo ejecutable cin2.exe.
5.Cul es la salida desplegada por el programa?

Anlisis del ejemplo 10. (programa: cin2.cpp)

La declaracin de la variable
float pies;

reserva en la memoria principal de la computadora espacio suficiente para contener a una variable de tipo
flotante. Cuando la computadora ejecuta las sentencias:
cout<<"Dame un nmero de pies -->";
cin>>pies;

Despliega un mensaje, esperando que el usuario ingrese un nmero y esperar la respuesta. Este valor se
asignar a la variable pies y la computadora continuar con la ejecucin del programa.

30

Si el nmero teclado despus del mensaje impreso fue 6 y se oprimi la tecla <Enter> en la pantalla aparecer:
Dame un nmero de pies -->6
6 pies son 72 pulgadas

Actividad 6.
Objetivo: Distinguir los diferentes tipos de datos C++.
La asignacin de tipos de datos para las variables tiene dos objetivos principales: detectar errores de operaciones
en los programas y determinar como ejecutar las operaciones.
1.El rea es una medida de una superficie determinada. As el rea de un rectngulo se calcula multiplicando el
largo por el ancho. Detecta y corrige los errores en los siguientes programas:
a)
#include <iostream.h>
void main() {
ancho=15
area=largo*ancho;
cout<<El area es <<area;
}

b)
#include <istocream.h>
void main() {
int largo,ancho,area;
area=largo*ancho;
largo=20;
ancho=15
cout<<El area es <<area;
}

31

c)
#include <istocream.h
void main {
int largo;ancho,area;
cout<<largo =;cin>>largo;
cout<<ancho =;cin>>ancho;
largo*ancho=area;
cout<<El area es <<area;

2.Cual es el error en los siguientes programas?, por qu?


a)
#include <iostream.h>
void main()
{
float a,b,c;
int x;

b)
#include <iostream.h>
void main()
{
int a,b,c;int x;
cin>>a;cin>>b;cin>>c;

cin>>a;cin>>b;cin>>c;
x=a*b/c%2;

x=x-(a+b/2.0)+c*a;

cout<<x;
}

cout<<x;
}

Ejercicios propuestos: salidas con cin.


10.Escriba un programa que pida al usuario dos nmeros enteros. Realizar la suma, resta, multiplicacin y
divisin de los nmeros e imprimir los resultados.
11.Escriba un programa en el que la entrada es un cierto nmero de yardas y la computadora d como salida su
equivalencia en pulgadas. Una salida tpica sera:
Nmero de yardas ? 2
2 yardas son 72 pulgadas.

Pruebe su programa para 5 y 7 yardas.

1.3.3 El Estilo de programacin.


El buen estilo de programacin es, sin lugar a duda, una de las caractersticas ms notables que debe tener un
programador. Un programa con buen estilo es ms fcil de leer, de corregir si contiene un error y de
mantener. Aunque la experiencia proporciona el estilo, existen una serie de reglas que se recomiendan seguir
desde el principio del aprendizaje en programacin.
Aunque los programas escritos en C++ no exigen reglas estrictas para su escritura, es prctica habitual realizar
el sangrado en los bloques del programa.
Por otro lado, la legibilidad de los programas aumenta considerablemente utilizando comentarios. Un
comentario es un texto explicativo ms o menos largo, situado en el programa e ignorado por el compilador.
Los comentarios no se consideran (son invisibles) en la fase de compilacin y ejecucin, pero de importancia
primordial en las fases de anlisis, puesta a punto y mantenimiento de un programa.
Los comentarios son una parte importante de la documentacin de un programa, ya que ayudan al programador
y a otras personas a la comprensin del programa.
El lenguaje C++ acepta dos tipos de comentarios: de lnea y de bloque. Un comentario de lnea empieza con dos
diagonales (//) y contina hasta el final de la lnea. Por ejemplo, los siguientes renglones son comentarios de
lnea

32

//este es un comentario
//este programa imprime un mensaje
//este programa calcula la raz cuadrada

Los comentarios mltiples de lnea empiezan con el smbolo /* y terminan con el smbolo */.

33

Unidad 2. Operadores aritmticos, de asignacin y relacionales.


Objetivo:
Utilizar las sentencias de asignacin, expresiones aritmticas y relacionales
para describir las acciones algortmicas que pueden ser ejecutadas en un
programa.

2.1. Expresiones y operadores.


Para que las variables sean tiles, el programador necesita manipularlas y evaluarlas en diferentes contextos.
Esta capacidad la proporcionan las expresiones. En su definicin ms elemental una expresin es slo una
coleccin de variables, operadores y otras expresiones, los cuales regresan un valor. Los operadores son
smbolos especiales que, por lo comn, se utilizan en expresiones, e indican cmo son manipulados los datos.

2.2. Expresiones de asignacin.


La estructura comn de una expresin de asignacin para asignar algn valor a una variable es:
variable = expresin

La cual indica que el valor que resulte de evaluar la expresin tiene que ser almacenado en la variable
especificada. Una expresin es cualquier combinacin de constantes, variables y llamadas a funciones que se
pueden evaluar para producir un resultado. De tal manera, la expresin en una instruccin de asignacin se
puede utilizar para efectuar clculos con los operadores aritmticos. Por ejemplo:
suma = 3+7
dif = 15-6
producto = 0.05*14.6
contador = contador+1
totalNuevo = 18.3+total
impuestos = 0.06*cantidad
pesoTotal = factor*peso
promedio = suma/elementos

En una instruccin de asignacin, la computadora calcula el valor de la expresin a la derecha del signo de
igual y luego guarda este valor en la variable ubicada a la izquierda del signo igual.
Por ejemplo en la
expresin
pesoTotal=factor*peso

la expresin aritmtica factor*peso se evaluar antes de producir el resultado, que es un nmero, y lo


guardar en la variable pesoTotal . Todas las variables utilizadas en la expresin deben tener desde antes
valores vlidos para que los resultados tengan sentido. (Figura 13).
La operacin de asignacin es una operacin destructiva debido a que el valor almacenado en una variable se
pierde o destruye y se sustituye por el nuevo valor en la sentencia de asignacin. Al ejecutar las sentencias:
A = 16
A =-25
A = 10
Los valores 16 y 25 de la variable A se han destruido
y ha tomado finalmente el valor 10.
Nombresucesivamente
de la
Contenido (valor)
variable
de la variable
factor=1.06;
peso=155.0;
pesoTotal=factor*peso;

factor

1.06

peso

155.0

pesoTotal

164.30
Variables en Memoria

Figura 13. Expresiones de asignacin.


Las expresiones de asignacin indican una o ms operaciones a realizar, es decir describen las acciones
algortmicas que pueden ser ejecutadas y dan valor a una variable.

Ejemplo 11. Programa: asigna.cpp


1.Introduce las siguientes lneas de cdigo en el editor de textos del compilador C++.
#include <iostream.h>
void main()
{
/*declaracin de variables */
int suma;
/*asignacin de valores */
suma=25;
/*procesa los datos de entrada */
cout<<"El valor de la variable suma es -->"<<suma;
suma=suma+10;
cout<<"\nEl valor de suma + 10 es -->"<<suma;
}

2.Guarda el cdigo fuente con el nombre asigna.cpp


3.Compila el programa.
4.Si no existen errores de sintaxis, entonces se debe generar el archivo ejecutable asigna.exe.

Anlisis del ejemplo 11. (programa: asigna.cpp)

Se declara una variable de tipo entero identificada con el nombre suma


int suma;

A la variable se le asigna un valor inicial de 25. El operador de asignacin le indica a la computadora que
guarde el valor de la constante en la variable a la izquierda del signo.
suma=25;

El procesamiento del programa se inicia cuando se despliega en pantalla el valor inicial de la variable suma en
pantalla utilizando la sentencia
cout<<"El valor de la variable suma es -->"<<suma;

La segunda instruccin de asignacin en el programa


suma=suma+10;

hace que la computadora recupere el valor 25 guardado en suma y aumente 10 al nmero


suma=25+10

produciendo un valor de 35, que ser guardado nuevamente en la variable suma al lado izquierdo del signo
igual. La ultima instruccin del programa imprime el valor almacenado en la variable suma.
cout<<"\nEl valor de suma + 10 es -->"<<suma;

La salida desplegada por el programa ser:


El valor de la variable suma es -->25
El valor de suma + 10 es -->35

Ejemplo 12. Programa: asigna2.cpp


1.Introduce las siguientes lneas de cdigo en el editor de textos del compilador C++.
#include <iostream.h>
void main()
{
/*declaracin de variables*/
int num;
/*valores de entrada */
cout<<"Introduce un nmero -->";
cin>>num;
/*procesa los datos de entrada*/
num=num*2;
/*imprime los resultados*/
cout<<"El doble del nmero es -->"<<num;
}

2.Guarda el cdigo fuente con el nombre asigna2.cpp


3.Compila el programa.
4.Si no existen errores de sintaxis, entonces se debe generar el archivo ejecutable asigna2.exe.

Anlisis del ejemplo 12. (programa: asigna2.cpp)


El programa pide un nmero al usuario e imprime el doble de l. Veamos:

Se declara una variable de tipo entero identificada con el nombre num


int num;

En la siguiente sentencia se despliega un mensaje pidiendo al usuario ingrese un valor de entrada desde el
teclado para la variable num y se utiliza la instruccin cin para almacenar el valor tecleado por el usuario.
cout<<"Introduce un nmero -->";
cin>>num;

El procesamiento del programa se inicia cuando la computadora recupera el valor proporcionado por el usuario
y lo multiplica por dos, produciendo un nuevo valor, que ser guardado nuevamente en la variable num
(sobrescribiendo entonces el valor anterior de la variable).
num=num*2;

El programa termina cuando imprime el nuevo valor de la variable num.


cout<<"El doble del nmero es -->"<<num;

La salida desplegada por el programa ser, para un valor proporcionado por el usuario de 2 es:
Introduce un nmero -->2
El doble del nmero es -->4

Ejemplo 13. Programa: asigna3.cpp


1.Introduce las siguientes lneas de cdigo en el editor de textos del compilador C++.
#include <iostream.h>
void main()
{
/*declaracin de variables*/
int a,b;
/*asignacin de valores */
a=2;
b=6;
/*procesa e imprime los datos de entrada*/
cout<<"El valor de a es -->"<<a;
cout<<"\nEl valor de b es -->"<<b;
a=b;
cout<<"\nAsigna el valor a=b";
cout<<"\nEl valor de a es -->"<<a;
cout<<"\nEl valor de b es -->"<<b;
}

2.Guarda el cdigo fuente con el nombre asigna3.cpp


3.Compila el programa.
4.Si no existen errores de sintaxis, entonces se debe generar el archivo ejecutable asigna3.exe.

Anlisis del ejemplo 13. (programa: asigna3.cpp)

Se declaran dos variable de tipo entero


int a,b;

Observe que se declaran dos variables con una sola instruccin declaratoria; esto es posible porque las variables
son del mismo tipo de datos. En las siguientes sentencias se asignan valores iniciales a las variables
a=2;
b=6;

Las instrucciones cout hacen que el valor almacenado en las variables a,b se desplieguen en pantalla
cout<<"El valor de a es -->"<<a;

cout<<"\nEl valor de b es -->"<<b;

En la siguiente sentencia se asigna el valor de la variable b al de la variable a; entonces el valor anterior de a


(a=2 ) se pierde por completo y toma el valor de b (a=6 ).
a=b;

Finalmente las instrucciones cout despliegan los valores almacenado en a,b y el programa termina.
cout<<"\nEl valor de a es -->"<<a;
cout<<"\nEl valor de b es -->"<<b;

La salida desplegada por el programa ser


El valor de a es -->2
El valor de b es -->6
Asigna el valor a=b
El valor de a es -->6
El valor de b es -->6

Ejemplo 14. Programa: asigna4.cpp


1.Introduce las siguientes lneas de cdigo en el editor de textos del compilador C++.
#include <iostream.h>
void main()
{
/*declaracin de variables*/
int a,b;
/*valores de entrada*/
cout<<"Introduce el valor de a -->";
cin>>a;
cout<<"Introduce el valor de b -->";
cin>>b;
/*procesa los datos de entrada*/
a=a+b;
/*imprime los resultados*/
cout<<"El valor de a es -->"<<a;
cout<<"\nEl valor de b es -->"<<b;
}

2.Guarda el cdigo fuente con el nombre asigna4.cpp


3.Compila el programa.
4.Si no existen errores de sintaxis, entonces se debe generar el archivo ejecutable asigna4.exe.

Anlisis del ejemplo 14. (programa: asigna4.cpp)

Se declaran dos variables de tipo entero


int a,b;

En las siguientes sentencias se despliegan mensajes mediante la instruccin cout pidiendo al usuario ingrese
un valor de entrada desde el teclado para la variable a y b respectivamente; se utiliza la instruccin cin para
almacenar el valor tecleado por el usuario.
cout<<"Introduce el valor de a -->";
cin>>a;
cout<<"Introduce el valor de b -->";
cin>>b;

Con la instruccin de asignacin


a=a+b;

La computadora recupera el valor contenido en la variable a y lo suma al valor almacenado en la variable b; el


nuevo valor se asigna nuevamente a la variable a (entonces el valor original ingresado por el usuario para la
variable a se pierde).

El programa termina cuando procesa las instrucciones cout , desplegando los contenidos de las variables a y b.
cout<<"El valor de a es -->"<<a;
cout<<"\nEl valor de b es -->"<<b;

La salida desplegada por el programa ser, para un valor proporcionado por el usuario para la variable a=2 y
b=6:
Introduce el valor de a -->2
Introduce el valor de b -->6
El valor de a es -->8
El valor de b es -->6

Actividad 7.
Objetivo: el alumno determinar los valores de las variables y la salida impresa de los programas C+
+.
La operacin de asignacin es una operacin destructiva debido a que el valor almacenado en una
variable se pierde o destruye y se sustituye por el nuevo valor en la sentencia de asignacin.
1.Cul es el valor de las variables enteras a,b?
#include <iostream.h>
void main()
{
/*declaracin de variables*/
int a,b;
/*asignacin de valores*/
a=5;
b=7;
/*procesa los datos de entrada*/
a=a+1;
b=a+b;
/*imprime los resultados*/
cout<<"El valor de a es -->"<<a;
cout<<"\nEl valor de b es -->"<<b;
}

2.Cul es el valor de las variables enteras b,c?


#include <iostream.h>
void main()
{
/*declaracin de variables*/
int c,b;

/*asignacin de valores*/
c=3;
b=8;
/*procesa e imprime los datos de entrada*/
cout<<"El valor de c es -->"<<c;
c=b+1;
cout<<"\nEl valor de b es -->"<<b;
cout<<"\nEl valor de c es -->"<<c;
}

3.Cul es el valor de las variables enteras a,x?


#include <iostream.h>
void main()
{
/*declaracin de variables*/
int x,a;
/*asignacin de valores*/
x=3;
a=9;
/*procesa los datos de entrada*/
x=x+2;
a=a*x;
cout<<"El valor de a es -->"<<a;
cout<<"\nEl valor de x es -->"<<x;
}

4.Cul es el valor de las variables a,b,c?


#include <iostream.h>
void main()
{
/*declaracin de variables*/
int a,b,c;
/*asignacin de valores*/
a=4;
b=7;
/*procesa los datos de entrada*/
a=a+1;
c=a*b;
/*imprime los resultados*/
cout<<"El valor de a es -->"<<a;
cout<<"\nEl valor de b es -->"<<b;
cout<<"\nEl valor de c es -->"<<c;
}

5.Cul es el valor de las variables a,b,c?


#include <iostream.h>
void main()
{
/*declaracin de variables*/
int a,b,c;
/*asignacin de valores*/
a=5;
c=3;
/*procesa los datos de entrada*/
a=a+c;
a=a+1;
c=c+a;
cout<<"El valor de a es -->"<<a;
cout<<"\nEl valor de b es -->"<<b;
cout<<"\nEl valor de c es -->"<<c;
}

Ejercicios propuestos para las sentencias de asignacin.


12.Dados dos nmeros enteros cualesquiera proporcionados por el usuario desde el teclado calcular e imprimir
el producto de esos nmeros.
13.Escriba un programa que lea un nmero de entrada desde el teclado y calcule el doble, triple y cudruplo del
nmero e imprima los resultados en la pantalla de la computadora.
14.Escriba un programa, que dados como datos dos nmeros flotantes, calcule la suma, resta y multiplicacin de
dichos nmeros e imprima los resultados en la pantalla de la computadora.

15.Escribir un programa que solicite al usuario un nmero dado de horas y lo convierta en el equivalente de
minutos y segundos. Por ejemplo, para el nmero ledo desde el teclado
Dame el nmero de horas: 1

La salida debe ser impresa:


1 hora son : 60 minutos.
1 hora son: 3600 segundos.

Verifique su programa para 3,6,10 horas.


16.Escribir un programa que convierta horas y minutos a minutos. Por ejemplo, para un valor de 2 horas y 15
minutos proporcionados por el usuario, la salida impresa debe ser:
2 horas y 15 minutos son 135 minutos.

17.Escriba un programa que calcule e imprima el nmero de segundos que hay en un determinado nmero de
das.
18.Desarrolle un programa para leer datos expresados en pies y transformarlos a centmetros, metros, pies y
yardas. Los factores de conversin son:
1 pie = 12 pulgadas.
1 yarda = 3 pies.
1 pulgada = 2.54 centmetros.
1 metro = 100 centmetros.
La salida impresa en su pantalla sera la siguiente (por ejemplo para 3 pies)
Nmero de pies: 3
3
3
3
3

pies
pies
pies
pies

son
son
son
son

.9144 metros
91.4 centmetros
36 pulgadas
1 yardas

Verifique el programa para 1.7,3.0 y 12.0 pies.

19.Escriba un programa que lea desde el teclado dos variables enteras y que permita intercambiar los contenidos
(valores) de las variables. Una salida tpica del programa sera
El valor de a: 3
El valor de b: 5
El intercambio de variables
a=5
b=3

2.3.Operadores aritmticos.
Los operadores utilizados para las operaciones aritmticas se llaman operadores aritmticos y se muestran a
continuacin:
Tabla 5. Tabla de operadores aritmticos.
Operador
*
/
%
+
-

Significado
Multiplicacin
Divisin
Mdulo aritmtico
Suma
Resta

Ejemplo
5*5
14/7
20 % 7
3+4
5-7

Una expresin simple de aritmtica consiste en un operador aritmtico que conecta a dos operandos en la forma
de:
Operando operador Operando

Algunos ejemplos de expresiones aritmticas:


3+7
18-3
12.62+9.8
0.08*12.2
12.6/2

2.4. Tipos de expresiones.


Una expresin que contiene slo operando en nmeros enteros se llama expresin en nmero entero, y el
resultado de la expresin es un valor en nmero entero. Igualmente, una expresin que contiene slo operando
en punto flotante (en precisin sencilla y doble) se llama expresin en punto flotante, y el resultado de esta
expresin es un valor en punto flotante. Una expresin que contiene tanto operandos en nmero entero como en
punto flotante es una expresin en modo mezclado. Considere el siguiente ejemplo:
10/3

Dividir un nmero entero entre el nmero entero 2 produce un resultado de nmero entero. Como los nmeros
enteros no pueden contener una fraccin, no se obtiene el resultado esperado 3.3
Pero si realizamos la expresin aritmtica:
10.0/3

es una divisin de punto flotante y genera un resultado de punto flotante.


10/3=3
10.0/3=3.3

2.4.1. Prioridades de operadores y asociacin.


Cuando una expresin aritmtica se evala, el resultado es siempre un nmero. Ahora bien, cuando en una
expresin aparecen dos o ms operadores, qu operacin se realiza primero?. Por ejemplo: cul es el
resultado de evaluar?
6+4/2+3

Para obtener un resultado confiable, es necesario establecer el orden de prioridad (jerarqua) de las operaciones
aritmticas como se listan a continuacin
1.
2.
3.
4.

Primero se realizan todos los operadores dentro de parntesis.


Si hay parntesis anidados (parntesis dentro de parntesis) primero se realizan los operadores ms
internos desde adentro hacia fuera.
Los operadores *,/ y modulo (%) se realizan despus, de izquierda a derecha dentro de la expresin.
Al ltimo se realizan los operadores + y -, de izquierda a derecha de la expresin.

Tabla 6. Jerarqua de los operadores aritmticos.


Operador
*,/,%
+,-

2.4.2. Uso de parntesis.

Jerarqua
(mayor)
(menor)

Los parntesis deben utilizarse para especificar grupos lgicos de operandos y para indicar con claridad, tanto a
la computadora como a los programadores, el orden deseado de las operaciones aritmticas. En ausencia de
parntesis, las expresiones que contienen operaciones mltiples sern evaluadas de acuerdo con la prioridad, o
precedencia de los operadores.
Cuando utilice los parntesis recuerde que el nmero de parntesis que abren, ( , siempre debe igualar al
nmero de parntesis que cierran, ) , para que no existan conjuntos dispares.

Ejemplo 15. Expresiones matemticas.


Cunto vale 4+2*5?
1.
2.
3.

4+2*5
4+10
14

//primero se realiza la multiplicacin.


//luego la suma.
//resultado.

Cunto vale 23*2/5?


1.
2.
3.

23*2/5 //primero se realiza la multiplicacin (regla de izquierda a derecha)


46/5
//se divide
9.2
//resultado.

Cunto vale 7+5-6?


1.
2.
3.

7+5-6
11-6
5

//jerarqua de izquierda a derecha.

Cunto vale 9+7*8-36/5?


1.
2.
3.
4.
5.

9+7*8-36/5
9+56-36/5
9+56-7.2
65-7.2
57.8

//primero la multiplicacin 7*8


//la divisin es de mayor jerarqua
//de izquierda a derecha, la suma

Cunto vale 3+5*(10-(2+4))?


1.
2.
3.
4.
5.

3+5*(10-(2+4)) //parntesis ms interno (2+4)


3+5*(10-6)
//segundo parntesis
3+5*4
3+20
23

Cunto vale 3.5 + 5.09-14.0/4.0?


1.
2.
3.
4.

3.5 + 5.09-14.0/4.0
3.5+5.09-3.5
8.59-3.9
5.09

Cunto vale 2.1*(1.5+30*4.1)?

//la divisin es de mayor jerarqua (14.0/4.0)

1.
2.
3.
4.

2.1*(1.5+30*4.1)
2.1*(1.5+12.3)
2.1*13.8
28.98

//la multiplicacin que se encuentra entre parntesis


//la suma para quitar el parntesis.

Actividad 8.
Objetivo: el alumno determinar los valores de las expresiones siguientes.
1. Determina el valor de las siguientes expresiones.
a)
b)
c)
d)
e)
f)
g)
h)
i)
j)
k)
l)
m)

4+2*6
3+5*(10-(2*4))
(9+3)*5 / 4 % 7+1
3.5+5.09-14.0/4.0
2*3/12*8/4
10*(1+7*3)
(10+3) / 4
20.0-2.0/(6.0+3.0)
(24+2*6) / 4
3+4*(8*(4-(9+3)/6))
4-40 / 5
5 % 2
16/2*(7+(68-15*33+(4*2/16)/2)+4)+19

2.Cul es el orden de evaluacin de las siguientes expresiones?


1.
2.
3.

X-(A+B / 2)+Y*Z
A+B*(Y-(Z % 2))
(X+Y/Z)/(X-Y/Z)

3.Suponga que la distancia tiene un valor en nmero entero de 1, v tiene un valor en nmero entero de 50, n
tiene un valor en nmero entero de 10, y t tiene un valor en nmero entero de 5. Evale las siguientes
expresiones:
a)
b)
c)
d)
e)
f)
g)
h)
i)

n/t+3.
v/t+n-10*distancia.
v-3*n+4*distancia.
distancia/5.
18/t.
t*n.
v/20.
(v+n)/(t+distancia).
v+n/t+distancia.

Ejemplo 16. Programa: opmat.cpp


1.Introduce las siguientes lneas de cdigo en el editor de textos del compilador C++.
#include <iostream.h>
#pragma argsused
void main()
{
/*declaracin de variables*/
float base,altura;
float area;

/*valores de entrada*/
cout<<"Introduce el valor de la base -->";
cin>>base;
cout<<"Introduce el valor de la altura -->";
cin>>altura;
/*procesa los datos de entrada*/
area=(base*altura)/2;
/*imprime los resultados*/
cout<<"La superficie del tringulo es -->"<<area;
}

2.Guarda el cdigo fuente con el nombre opmat.cpp


3.Compila el programa.
4.Si no existen errores de sintaxis, entonces se debe generar el archivo ejecutable opmat.exe.

Anlisis del ejemplo 16. (programa: opmat.cpp)


El programa dadas la base y la altura de un tringulo por el teclado, calcula e imprime su superficie.

La base es una variable de tipo flotante, que expresa la base del tringulo; altura es una variable de tipo
flotante. La variable area almacena la superficie del tringulo.
int base,altura;
float area;

En las siguientes sentencias se despliegan mensajes mediante la instruccin cout pidiendo al usuario ingrese el
valor de la base y la altura respectivamente; se utiliza la instruccin cin para almacenar el valor tecleado
por el usuario.
cout<<"Introduce el valor de la base -->";
cin>>base;
cout<<"Introduce el valor de la altura -->";
cin>>altura;

La superficie de un tringulo se calcula aplicando la siguiente formula


area=(base*altura)/2;

El resultado de una divisin depende de que los nmeros que se dividen sean enteros o de punto flotante. El uso
de los parntesis ayudar a clarificar el criterio de orden de procedencia de las operaciones, as los parntesis
de la subexpresin (base*altura ) indica que es la primera en evaluarse y despus de obtener el resultado se
divide entre dos.

El programa termina cuando procesa la instruccin cout , desplegando el resultado del calculo
cout<<"\nLa superficie del tringulo es -->"<<area;

Una salida tpica del programa sera: (base=6.5, altura=7.3 )


Introduce el valor de la base -->6.5
Introduce el valor de la altura -->7.3
La superficie del triangulo es -->23.725

Ejemplo 17. Programa: opmat2.cpp


1.Introduce las siguientes lneas de cdigo en el editor de textos del compilador C++.
#include <iostream.h>
void main()
{
/*declaracin de variables*/
int num1,num2,num3;
float prom;
/*valores de entrada*/
cout<<"Introduce el primer valor -->";
cin>>num1;
cout<<"Introduce el segundo valor -->";
cin>>num2;
cout<<"Introduce el tercer valor -->";
cin>>num3;
/*procesa los datos de entrada*/
prom=(num1+num2+num3)/3.0;

/*imprime los resultados*/


cout<<"El promedio de tres nmeros es -->"<<prom;
}

2.Guarda el cdigo fuente con el nombre opmat2.cpp


3.Compila el programa.
4.Si no existen errores de sintaxis, entonces se debe generar el archivo ejecutable opmat2.exe.

Anlisis del ejemplo 17. (programa: opmat2.cpp)


El programa calcula el promedio de tres nmeros ingresados por el teclado.

Antes de poder utilizar las variables en cualquier lugar del programa, ya sea para asignarles un valor o que
puedan intervenir como parte de una expresin, se deben declarar. La variable prom es de tipo flotante, que
expresa el promedio de los tres valores enteros num1,num2,num3
int num1,num2,num3;
float prom;

En las siguientes sentencias se despliegan mensajes mediante la instruccin cout pidiendo al usuario ingrese
los valores para las variables num1,num2,num3
cout<<"Introduce el primer valor -->";
cin>>num1;
cout<<"Introduce el segundo valor -->";
cin>>num2;
cout<<"Introduce el tercer valor -->";
cin>>num3;

Como el promedio de tres nmeros enteros puede ser un nmero en punto flotante, la variable prom , que se
emplea para guardar el promedio fue declarada como una variable de punto flotante. Observe que los parntesis
son necesarios para la instruccin de asignacin
prom=(num1+num2+num3)/3.0;

Sin los parntesis, el nico valor que se dividira entre tres sera el nmero entero num3 (esto se debe a que la
divisin tiene una jerarqua superior a la suma).

El programa termina cuando procesa la instruccin cout , desplegando el resultado del calculo
cout<<"El promedio de tres nmeros es -->"<<prom;

Cuando ejecute el programa, por ejemplo para valores de 10,6,5 aparecer el siguiente resultado:

Introduce el primer valor -->10


Introduce el segundo valor -->6
Introduce el tercer valor -->5
El promedio de tres nmeros es -->7

Ejemplo 18. Programa: opmat3.cpp


1.Introduce las siguientes lneas de cdigo en el editor de textos del compilador C++.
#include <iostream.h>
void main()
{
/*declaracin de variables*/
int a,b,c;
float raiz1,raiz2,raiz;
/*valores de entrada*/
cout<<"Raices de una ecuacin cuadrtica ax2+bx+c";
cout<<"\nIntroduce el coeficiente a -->";
cin>>a;
cout<<"Introduce el coeficiente b -->";
cin>>b;
cout<<"Introduce el coeficiente c -->";
cin>>c;
/*procesa los datos de entrada*/
raiz=sqrt(b*b-4*a*c);
raiz1=(-b+raiz)/(2*a);
raiz2=(-b-raiz)/(2*a);
/*imprime los resultados*/
cout<<"\nRaices de la ecuacin "<<a<<"x2+"<<b<<"x+"<<c<<"=0";
cout<<"\nRaiz 1 -->"<<raiz1;
cout<<"\nRaiz 2 -->"<<raiz2;
}

2.Guarda el cdigo fuente con el nombre opmat3.cpp


3.Compila el programa.
4.Si no existen errores de sintaxis, entonces se debe generar el archivo ejecutable opmat3.exe.

Anlisis del ejemplo 18. (programa: opmat3.cpp)


El programa calcula las races de una ecuacin cuadrtica de la forma ax2+bx+c=0 .

En programa declara tres variables enteras para los coeficientes de la ecuacin


int a,b,c;

y tres variables de tipo flotante para almacenar clculos intermedios y los resultados finales
float raiz1,raiz2,raiz;

El programa pide al usuario los tres valores de tipo entero con las instrucciones cout y almacena los valores
utilizando cin .

cout<<"Races de una ecuacin cuadrtica ax2+bx+c";


cout<<"\nIntroduce el coeficiente a -->";
cin>>a;
cout<<"Introduce el coeficiente b -->";
cin>>b;
cout<<"Introduce el coeficiente c -->";
cin>>c;

Con las variables almacenadas en la memoria de la computadora, entonces el programa calcula las raices de la
ecuacin, aplicando las siguientes sentencias previamente diseadas para resolver el problema
raiz=sqrt(b*b-4*a*c);
raiz1=(-b+raiz)/(2*a);
raiz2=(-b-raiz)/(2*a);

Observe la importancia de los parntesis para definir el orden de evaluacin de la expresin. Observe que la
funcin sqrt calcula la raz cuadrada del argumento (b*b-4*a*c) y que para algunos valores de a,b y c se
obtiene un error. Esto es debido a que la variable raiz toma un valor negativo, lo que indica que no hay races
reales sino complejas.

El programa termina cuando procesa la instruccin cout , desplegando el resultado del calculo
cout<<"\nRaices de la ecuacin "<<a<<"x2+"<<b<<"x+"<<c<<"=0";
cout<<"\nRaiz 1 -->"<<raiz1;
cout<<"\nRaiz 2 -->"<<raiz2;

Cuando ejecute el programa, por ejemplo para valores de 1,3,2 aparecer el siguiente resultado:
Raices de
Introduce
Introduce
Introduce

una ecuacin cuadrtica ax2+bx+c


el coeficiente a -->1
el coeficiente b -->3
el coeficiente c -->2

Races de la ecuacin 1x2+3x+2=0


Raiz 1 -->-1
Raiz 2 -->-2

Ejemplo 19. Programa: opmat4.cpp


1.Introduce las siguientes lneas de cdigo en el editor de textos del compilador C++.
#include <iostream.h>
void main()
{
/*declaracin de variables*/
int numero;
int digito;
/*valores de entrada*/
cout<<"Introduce un nmero de cinco dgitos -->";
cin>>numero;
/*procesa e imprime los datos de entrada*/
cout<<"El inverso de "<<numero<<" es -->";
digito=numero%10;
cout<<digito;
numero=numero/10;
digito=numero%10;
cout<<digito;
numero=numero/10;
digito=numero%10;
cout<<digito;
numero=numero/10;
digito=numero%10;
cout<<digito;
numero=numero/10;
digito=numero%10;
cout<<digito;
}

2.Guarda el cdigo fuente con el nombre opmat4.cpp


3.Compila el programa.
4.Si no existen errores de sintaxis, entonces se debe generar el archivo ejecutable opmat4.exe.

Anlisis del ejemplo 19. (programa: opmat4.cpp)


El programa lee un nmero de cinco dgitos y lo imprime en orden inverso. Por ejemplo, si el usuario escribe
42329 el programa debe escribir el resultado 92324.

El programa hace uso de dos variables de tipo entero:


int numero;
int digito;

donde nmero almacena el valor proporcionado por el usuario y digito se utiliza para los clculos realizados por
el programa
El programa pide al usuario el nmero de cinco dgitos utilizando la instruccin cout y guarda el valor en
nmero utilizando cin .
cout<<"Introduce un nmero de cinco dgitos -->";
cin>>numero;

Para obtener el inverso de un nmero, la clave esta en obtener el valor que representa cada cifra dentro de un
nmero (valor relativo). Por ejemplo, en la cantidad 543, el 5 tiene un valor relativo de 500, 4 tiene un valor
relativo de 40 y 3 tiene un valor relativo de 3. Para obtener el valor relativo de las unidades utilizamos entonces
la frmula:
digito=numero%10;
cout<<digito;

e inmediatamente se manda imprimir el valor en pantalla. El siguiente paso obtener de nuevo el valor de las
unidades pero no del nmero original, por lo que efectuamos:
numero=numero/10;
digito=numero%10;
cout<<digito;

y as repetimos el mismo proceso en otras tres ocasiones.

Cuando ejecute el programa, por ejemplo para el valor 12345 aparecer el siguiente resultado:
Introduce un nmero de cinco dgitos -->12345
El inverso de 12345 es -->54321

Ejercicios propuestos para las sentencias de asignacin (2).


20.Disee un programa que permita encontrar la suma y el promedio de tres nmeros.
21.Disee un programa que determine el cociente y el residuo de una divisin entera e imprima el resultado en
la pantalla. El cociente de un nmero es el resultado de la divisin de dos nmeros. El residuo es lo que sobra
de una divisin.
22.Escriba un programa que solicite al usuario que introduzca dos nmeros, tome los dos nmeros del usuario, e
imprima la suma, el producto, la diferencia, el cociente y el mdulo de los dos nmeros.
23.Cuando compramos un producto en una tienda comercial, es comn que solicitemos al vendedor un
descuento en relacin al precio el cual ofrece un descuento del X % sobre el precio del producto que se va a
comprar. Para conocer el precio que vamos a pagar debemos calcular el descuento del tanto por ciento sobre el
precio que originalmente cuesta, una vez rebajado el X % se debe restar al precio original y de esta forma se
determina el importe a pagar; por ejemplo, un carro cuesta $30000 y nos ofrecen el 10% de descuento en su
compra, cunto nos costar?; 30000x0.10 = $3000 de descuento, 30000-3000=$27000 es el costo a pagar.
Realizar un programa para calcular el precio de compra de un producto teniendo en cuenta el porcentaje de
descuento sobre el valor original de compra.
24.El valor relativo de un nmero es el valor que representa una cifra dentro de un nmero. Por ejemplo en la
cantidad 543, el 5 tiene un valor relativo de 500, 4 tiene un valor relativo de 40, 3 tiene un valor relativo de 3.
Escribe un programa que acepte un nmero entero de tres cifras obtenga e imprima en pantalla los valores
relativos de cada digito individual de la siguiente manera:
De 543 la notacin desarrollada es :
500 + 40 + 3 = 543.

25.Elabore un programa para calcular las monedas que deben darse como cambio en los siguientes casos:
Si todas las compras fueran menores de un peso.
Si el comprador pagara siempre con un billete de a peso.
Si debiramos dar en cambio el nmero mnimo de monedas.
Si solamente podemos dar en cambio monedas de un centavo, de cinco, de diez, de veinte, y de cincuenta.
El programa obtiene el total de la compra y hace el clculo correspondiente. Una salida tpica para el programa
sera:
Monto de la compra: 45
Cambio: 55
Nmero de monedas de 1 centavo: 0
Nmero de monedas de 5 centavos: 1
Nmero de monedas de diez centavos: 1
Nmero de monedas de 20 centavos: 2

Se quiere correr el programa para las siguientes compras: 97 Centavos, 78 centavos, 54 centavos, 21 centavos y
1 centavo.

2.5. Operaciones booleanas.


El objetivo de estos operadores es proporcionar respuestas a cuestiones de Verdadero/Falso. Hay dos categoras
de operadores booleanos: los operadores relacionales y lgicos. Las expresiones booleanas estn constituidas
por nmeros, constantes o variables y operadores lgicos o relacionales.

2.5.1. Operadores relacionales.


Los operadores relacionales permiten la comparacin de dos cantidades. Los seis operadores relacionales
bsicos son los siguientes:
Tabla 7. Operadores relacionales.
Operador
==
!=
<
>
<=
>=

Significado
Igualdad
Desigualdad
Menor que
Mayor que
Menor o igual que
Mayor o igual que

Ejemplo
x==3
x!=3
x<3
x>3
x<=3
x>=3

Los operadores relacionales en la tabla se pueden usar para comparar dos variables o expresiones. En general,
slo se debe comparar datos de la misma clase de datos. Esto significa que los enteros deben compararse con
enteros, punto flotante con punto flotante y caracteres con caracteres. La nica excepcin a la regla es que los
valores de punto flotante se pueden comparar con enteros, porque los enteros son reales. En todos los casos, la
operacin genera un resultado booleano de verdadero o falso.

Ejemplo 20. Expresiones relacionales.


Cul es el resultado de evaluar las siguientes expresiones?
a. 5=5
Verdadero, cinco es igual a 5
b. 0.025>=0.333
Falso porque 0.025 no es mayor que 0.333
c. 3 <> 3
Falso porque 3 es igual a 3
d. 45.2 <-3
Verdadero, porque 45.2 es menor que 3
e. A < Z
Verdadero, porque se compara el valor ASCII de A con el valor ASCII de Z

Los operadores relacionales tambin se pueden combinar con operadores aritmticos; por ejemplo:
5+3<4

Ahora la pregunta es: Cmo evala la computadora esta expresin?, Primero realiza la operacin de adicin o
la operacin relacional?; si primero realiza la operacin de adicin, el resultado es falso. Sin embargo, si realiza
la operacin relacional, 3 es menor que 4 y all el resultado es verdadero.

Como debe sospechar, la operacin de adicin se realiza primero y despus la operacin relacional. En
consecuencia, el resultado es falso, porque 8 no es menor que 4. Recuerde, cuando los operadores relacionales
se combinan con operadores aritmticos dentro de una expresin, los operadores relacionales siempre se
realizan al final.
Tabla 8. Prioridad de los operadores.
Prioridad
1.
2.
3.
4.
5.

Operador
Contenido del parntesis ().
^
*, /, %
+, =, <, >, <=, >=, !=

Ejemplo 21. Expresiones relacionales.


1.Evale la siguiente expresin relacional: (5*2)>7*2
1.
2.
3.
4.

(5*2)>7*2
10>7*2
10>14
FALSO

//mayor prioridad la tiene el parntesis, se realiza la multiplicacin.


//la multiplicacin tiene mayor prioridad
//realiza la evaluacin
//el 10 no es mayor que 32.

2.Evale la siguiente expresin relacional: (6*5+7*3/4)<=(6*3/7)


1.
2.
3.
4.
5.
6.
7.
8.

(6*5+7*3/4)<=(6*3/7)
(30+7*3/4)<=(6*3/7)
(30+21/4)<=(6*3/7)
(30+5)<=(6*3/7)
35<=(6*3/7)
35<=18/7
35<=2
FALSO

//se realiza la multiplicacin del parntesis izquierdo.


//se realiza la multiplicacin del parntesis izquierdo.
//se realiza la divisin del parntesis izquierdo.
//se realiza la suma del parntesis izquierdo.
//se realiza la multiplicacin del parntesis.
//la divisin tiene mayor prioridad.
//realiza la evaluacin.
//El 35 no es mayor o igual que 2.

3. Evale la siguiente expresin: (1560%6*2+7)<(7+8*3*4)


1.
2.
3.
4.
5.
6.
7.
8.
9.

(1560%6*2+7)<(7+8*3*4)
(0*6*2+7)<(7+8*3*4)
(0*2+7)<(7+8*3*4)
(0+7)<(7+8*3*4)
7<(7+8*3*4)
7<(7+24*4)
7<(7+96)
7<103
VERDADERO

//se realiza la divisin del parntesis izquierdo.


//multiplicacin en el parntesis izquierdo.
//multiplicacin en el parntesis izquierdo.
//suma en el parntesis izquierdo.
//se realiza multiplicacin en el parntesis.
//se realiza la multiplicacin
//se realiza la suma
//se evala la expresin
//7 es menor que 103.

Actividad 9.
Objetivo: el alumno determinar los valores de las variables y la salida impresa de los programas C+
+.
1. Si A y B son variables enteras que tienen asignados los valores 3 y 6, respectivamente, entonces determine el
valor lgico de las siguientes expresiones.
1. (2+3*A)<>6+(B-1)
2. (1+(2/2)%B)<=4*A

3. 2-7/(2*B-A)==0
4. B>=A+3

2.Determine el valor de las siguientes expresiones. Suponga que a=5, b=2, c=4, d= 6 y e=3.
a)
b)
c)
d)
e)

a>b
a<>b
d%b==c%b
a*c!=d*b
(a+b*c/e+4)=((a*5%6)%(c+b/a))

2.5.2. Operadores lgicos.


Las operaciones lgicas tambin generan resultados booleanos. Las tres operaciones bsicas son:
Tabla 9. Operadores lgicos.
Operador

&&
||

Significado
Negacin
Conector y
Conector o

El operador NOT () se usa para negar, o invertir un valor booleano. Debido a que solo hay dos valores posibles
bolanos (verdadero y falso), la negacin de uno da como resultado el otro.

Una tabla de verdad muestra el resultado de una operacin lgica sobre un valor booleano.
Tabla 10. Operador de negacin.
A
Verdadero
Falso

!A
Falso
Verdadero

La operacin OR (||) se aplica a la suma de valores booleanos.


Tabla 11. Operador Or (||).
A
Verdadero
Verdadero
Falso
Falso

B
Verdadero
Falso
Verdadero
Falso

A || B
Verdadero
Verdadero
Verdadero
Falso

Observe en la tabla que A || B es verdadero si A es verdadero o B es verdadero. Por supuesto si ambos A y B son
verdaderos, el resultado es verdadero.

El operador AND (&&) tambin opera sobre valores de multiplicacin de bolanos. Aqu, si A y B son variables
booleanas, entonces la expresin A && B es verdadero slo cuando A y B ambos son verdaderos. Otra forma de
decir esto es que cualquier falso da como resultado falso. En trminos de tabla de verdad.
Tabla 12. Operador And (&&).
A
Verdadero
Verdadero
Falso
Falso

B
Verdadero
Falso
Verdadero
Falso

A && B
Verdadero
Falso
Falso
Falso

Los operadores lgicos son operadores que permiten formular condiciones complejas a partir de condiciones
simples. Por ejemplo, considere lo siguiente:
(-6<0) && (12>=0)
Es esta expresin verdadera o falsa?. Bien 6<0 es verdadero y 12>=0 es verdadero. En consecuencia la
expresin debe ser verdadera. Al evaluar una expresin lgica recuerde que los operadores relacionales tienen
una jerarqua superior que los operadores lgicos. Los operadores relacionales y lgicos tienen una jerarqua de
ejecucin similar a los operadores aritmticos.

Tabla 13. Jerarqua de los operadores.


Operadores

Jerarqua
(mayor)

( )
*, /, %
==, !=, <, >, <=, >=
!
&&
||

(menor)

El operador ( ) es un operador asociativo que tiene la prioridad ms alta en cualquier lenguaje de


programacin.

Ejemplo 22. Expresiones lgicas.


Evaluar las siguientes expresiones lgicas:
a) ! (15>=7*7) || (43-8*2/4!=3*2/2)
1.! (15>=49) || (43-8*2/4!=3*2/2)
//primero se evala la multiplicacin
izquierdo.
2.!FALSO || (43-8*2/4!=3*2/2) //multiplicacin del parntesis derecho.
3.!FALSO || (43-16/4!=3*2/2) //divisin
4.!FALSO || (43-4!=3*2/2)
//multiplicacin
5.!FALSO || (43-4!=6/2)
//divisin
6. !FALSO || (43-4!=3)
//resta
7. !FALSO || (39!=3)
//comparacin
8. !FALSO || VERDADERO
9. VERDADERO || VERDADERO
10. VERDADERO.

del

parntesis

b) (15>=7*3*2 &&8>3 &&15>6) || !(7*3<5+2*2/3*2)


1. (15>=21*2 &&8>3 &&15>6) || !(7*3<5+2*2/3*2)
2. (15>=42 &&8>3 &&15>6) || !(7*3<5+2*2/3*2)
3.(FALSO &&8>3 &&15>6) || !(7*3<5+2*2/3*2)
4.(FALSO &&VERDEDERO &&15>6) || !(7*3<5+2*2/3*2)
5. (FALSO &&VERDEDERO &&VERDADERO) || !(7*3<5+2*2/3*2)
6. (FALSO &&VERDADERO) || !(7*3<5+2*2/3*2)
7. FALSO || !(7*3<5+2*2/3*2)
8. FALSO || !(21<5+2*2/3*2)
9. FALSO || !(21<5+4/3*2)
10. FALSO || !(21<5+1*2)
11.FALSO || !(21<5+2)
12.FALSO || !(21<7)
13.FALSO || !FALSO
14.FALSO || VERDADERO
15. VERDADERO.

Actividad 10.
Objetivo: el alumno determinar los valores de las variables y la salida impresa de los programas C+
+.
1. Determina el valor de las siguientes expresiones lgicas:

1. (6*3==32/2) || (13<3*3+4) && !(6-2<5)


2. !((7*3/3*4)>(16/2*6>=15*2/5==15))

2.Determine la salida generada por lo siguiente. Considere la variable entera X=-7 y la variable entera Y=3.
(!(3*X<4*Y) && (5*X>=Y))

UNIDAD 3. Estructuras de control selectivas.


Objetivo:
Representar decisiones en algoritmos cuando existen acciones de dos o ms
alternativas utilizando expresiones lgicas y las sentencias if y switch.

3.1. Enunciado if.


Las estructuras de control selectivas permiten tomar rutas alternativas de accin dependiendo del resultado de la
evaluacin de una expresin. La operacin del enunciado if se ilustra en el diagrama de la figura 14:

Figura 14. Flujo

de la operacin if.

Observe que el flujo del programa se modifica, dependiendo del resultado de una expresin de verificacin. La
verificacin if puede ser verdadera (diferente de cero) o falsa (cero). Recuerde que, durante una operacin de
verificacin C++ iguala un valor distinto de cero con verdadero y un valor cero con falso. Si la expresin de
verificacin es verdadera (diferente de cero), se ejecutan los enunciados if. Sin embargo, si el resultado de la
verificacin es falso (cero) se ignoran los enunciados if y el programa continua el flujo. Esto se conoce como
una operacin de seleccin o toma de decisiones, porque el programa selecciona o decide entre una o dos
posibles alternativas, dependiendo de las condiciones que se verifican.
La sintaxis C++ para el enunciado if es como sigue:
if (expresin) {
enunciado 1;
enunciado 2;

//enunciado compuesto

enunciado n;
//fin del if

La palabra reservada if y su expresin de verificacin asociada se escriben en la primera lnea del enunciado;
La expresin debe estar entre parntesis. Despus de la primera lnea estn los enunciados que se ejecutarn si
la verificacin es verdadera. Este bloque de enunciados se encierra entre llaves. Una llave izquierda, {,
seala el inicio del bloque del enunciado, y una llave derecha, }, denota el final del bloque. Si hay ms de un
enunciado por ejecutarse dentro de este bloque, el grupo completo de enunciados se conoce como enunciado
compuesto. Cuando un enunciado compuesto se encuentra dentro de un programa C++, todo el grupo de
enunciados se trata como un enunciado sencillo. Los enunciados compuestos siempre debern estar encerrados
entre llaves. Sin embargo es opcional cuando hay solamente un enunciado dentro del bloque.

Ejemplo 23. Programa: if1.cpp


1.Introduce las siguientes lneas de cdigo en el editor de textos del compilador C++.
#include <iostream.h>
void main()
{
/*declaracin de variables*/
float calif;
/*valores de entrada*/
cout<<"Introduce una calificacin -->";
cin>>calif;
/*procesa los datos de entrada*/
if(calif>6) {
//es mayor que 6?
cout<<"Calificacin aprobatoria";
}
cout<<"\n***Fin del programa.";
}

2.Guarda el cdigo fuente con el nombre if1.cpp


3.Compila el programa.
4.Si no existen errores de sintaxis, entonces se debe generar el archivo ejecutable if1.exe.

Anlisis del ejemplo 23. (programa: if1.cpp)

Calif es una variable de tipo real, que expresa la calificacin de un alumno.

La expresin de evaluacin ( calif>6 ) en la estructura selectiva if, permite que el flujo del programa siga por
un camino especifico.

Figura 15. Evaluacin de una expresin if simple.


Si se cumple la condicin de evaluacin se imprime la sentencia del cout y continua el flujo normal del
programa
cout<<"Calificacin aprobatoria";

Si la condicin es falsa, no se ejecutan las sentencias contenidas en el bloque if y continua el flujo normal del
programa con la siguiente sentencia
cout<<"\n***Fin del programa.";

La salida impresa por el programa cuando el usuario proporciona un valor para la variable calif de 8 es
Introduce una calificacin -->8
Calificacin aprobatoria
***Fin del programa.

La salida para un valor de 6 es


Introduce una calificacin -->6
***Fin del programa.

Ejemplo 24. Programa: if2.cpp


1.Introduce las siguientes lneas de cdigo en el editor de textos del compilador C++.
#include <iostream.h>
void main()
{
/*declaracin de variables*/
int x,y;
/*valores de entrada*/
cout<<"Introduce un valor x -->";
cin>>x;
cout<<"Introduce un valor y -->";
cin>>y;
/*procesa los datos de entrada*/
if(x>y) {
//x es mayor?
cout<<"El valor "<<x<<" es mayor";
cout<<"\nEl valor "<<y<<" es menor";
}
if(x<y) {
//x es menor?
cout<<"El valor "<<y<<" es mayor";
cout<<"\nEl valor "<<x<<" es menor";
}
if(x==y) {
//son iguales?
cout<<x<<" y "<<y<<" son iguales";
cout<<"\nOtro valor para y-->";
cin>>y;
if(x>y)
cout<<"El valor "<<x<<" es mayor";
if(y>x)
cout<<"El valor "<<y<<" es mayor";
if(x==y)
cout<<"Indudablemente "<<x<<" y "<<y<<" son iguales";
}
cout<<"\n***Fin del programa.";
}

2.Guarda el cdigo fuente con el nombre if2.cpp


3.Compila el programa.
4.Si no existen errores de sintaxis, entonces se debe generar el archivo ejecutable if2.exe.

Anlisis del ejemplo 24. (programa: if2.cpp)

Este programa pide al usuario dos valores que se almacenan en las variables enteras x, y. Las variables se
comparan con la sentencias if:
if(x>y), if(x<y), if(x==y)

Si un valor es mayor que otro se imprime un mensaje indicativo. Si los valores son iguales, el bloque de cdigo
que contiene a la sentencia if(x==y) se procesa. El valor de y se pide de nuevo y los valores se comparan
nuevamente.

Una salida tpica del programa es la siguiente:


Introduce un valor x -->4
Introduce un valor y -->4
4 y 4 son iguales
Otro valor para y-->3
El valor 4 es mayor
***Fin del programa.

Actividad 11.
Objetivo: el alumno determinar la salida impresa de los programas C++.
1. Cul es el valor de x?
#include <iostream.h>
void main() {
int x = 10000;
if(x > 5000)
x = 1000;
}

2. Qu imprime el programa?
#include <iostream.h>
void main() {
int x=2;
int y=3;
if(x<y) {
cout<<x<<" es menor que "<<y;
}
}

3. Qu imprime el programa?
#include <iostream.h>

void main()
{
int x=3;
if(x) {
cout<<"El valor de x es diferente de cero";
}
}

4.Cul es la salida del programa?


#include <iostream.h>
void main()
{
int x=0;
if(x)
cout<<"El valor de x es cero";
cout<<"Sigue el flujo del programa";
}

5. Cul es el valor de a?, y de b?


#include <iostream.h>
void main()
{
int a=20;
int b=4;
if(a==b*5) {
a=b;
b=a+b;
cout<<"a = "<<a;
cout<<"b = "<<b;
}
}

6. Cul es el valor de x,y y suma?


#include <iostream.h>
void main()
{
int x=2;
int y=3;
int suma;
if((x<y) && (y!=10)) {
suma=x+y;
cout<<"x = "<<x;
cout<<" y = "<<y;
cout<<" Suma = "<<suma;
}
}

7. Cul es el valor de la variable c?, Por qu?


#include <iostream.h>
void main()
{
int a=1,b=1,c;
if(c=(a-b))
cout<<"El valor de c es = "<<c;
}

8. Cul es el valor de g, f?, Por qu?


#include <iostream.h>
void main()
{
int f,g;
g=5;
f=8;
if((g=25)||(f=35))
cout<<"El valor de g es "<<g<<" y el nuevo valor de f es "<<f;
}

Ejercicios propuestos sentencias if simples.


26.Escriba un programa que lea un nmero de entrada; si el nmero es mayor que 100 imprima el siguiente
mensaje:
El nmero es mayor que 100.

27. Cada unidad de disco de un cargamento est marcada con un cdigo del 1 al 4, el cual indica un fabricante,
como sigue:
Cdigo
1
2
3
4

Fabricante de la unidad de disco


3M Corporation
Maxwell Corporation
Sony Corporation
Verbatim Corporation

Escriba un programa que acepte el nmero de cdigo dado como dato de entrada y despliegue el nombre
correcto con base en el valor introducido. Una salida tpica para el programa sera:
Valor del Cdigo ? 2
El fabricante es Maxwell Corporation

3.2. Enunciado if/else.


La operacin del enunciado if/else se muestra por medio del diagrama de la figura 16.

Figura 16.

Flujo de la
operacin if/else.

Observe que hay dos series de enunciados que se pueden ejecutar, dependiendo de si la expresin de verificacin
es verdadera o falsa. Si el resultado es verdadero, se ejecutarn los enunciados if. Por el contrario, si el
resultado de la verificacin es falso, se ejecutarn los enunciados else . En otras palabras, si la expresin de
verificacin es verdadera, entonces se ejecutan los enunciados if; de otra manera, se ejecutan los enunciados
else .

La sintaxis C++ para el enunciado if/else es como sigue:


if (expresin) {

enunciado 1;
enunciado 2;

//enunciado compuesto

enunciado n;
}
//fin del if
else {
enunciado 1;
enunciado 2;

enunciado n;
//fin del else

Como puede observar, la opcin else se incluye despus de la opcin if. Si la expresin de verificacin es
verdadera, se ejecutan los enunciados if, y se ignoran los enunciados else . Sin embargo, si la expresin de
verificacin es falsa se ignoran los enunciados if, y se ejecutan los enunciados else .
Los enunciados if y else se encierran entre llaves. Sin embargo, es posible eliminar las llaves en cualquier
seccin cuando slo se requiera de un enunciado.

Ejemplo 25. Programa: ifelse1.cpp


1.Introduce las siguientes lneas de cdigo en el editor de textos del compilador C++.
#include <iostream.h>
void main()
{
/*declaracin de las variables*/
int calif;
/*valores de entrada*/
cout<<"Introduce una calificacin -->";
cin>>calif;
/*procesa los datos de entrada*/
if(calif>6) {
//es mayor que 6?
cout<<"Aprobado";
}
else {
cout<<"Reprobado";
}
cout<<"\n***Fin del programa";
}

2.Guarda el cdigo fuente con el nombre ifelse1.cpp


3.Compila el programa.
4.Si no existen errores de sintaxis, entonces se debe generar el archivo ejecutable ifelse1.exe.

Anlisis del ejemplo 25. (programa: ifelse1.cpp)

El programa, dado como dato la calificacin de un alumno en un examen, escribe aprobado si su calificacin
es mayor que 8 y reprobado en caso contrario.
Para producir el resultado, el programa evala la condicin calif>6

Figura 17. Flujo if/else.


Si el resultado es verdadero, entonces escribe en pantalla
cout<<"Aprobado";

Por otra parte, si el resultado es falso entonces se imprime en pantalla


cout<<"Reprobado";

Luego de ejecutarse las operaciones indicadas, se continua con la secuencia normal del programa y se imprime
cout<<"\n***Fin del programa";

Una salida tpica del programa es la siguiente:


Introduce una calificacin -->8
Aprobado
***Fin del programa

Ejemplo 26. Programa: ifelse2.cpp


1.Introduce las siguientes lneas de cdigo en el editor de textos del compilador C++.
#include <iostream.h>
void main()
{
/*declaracin de variables*/
int a,b,c;
float raiz1,raiz2,raiz;
/*valores de entrada*/
cout<<"Raices de una ecuacin cuadrtica
ax2+bx+c";
cout<<"\nIntroduce el coeficiente a -->";
cin>>a;
cout<<"Introduce el coeficiente b -->";
cin>>b;
cout<<"Introduce el coeficiente c -->";
cin>>c;
/*procesa los datos de entrada*/
raiz=b*b-4*a*c;
if(raiz>0) {
//raiz mayor que cero?
/*raices reales*/
raiz=sqrt(raiz);
raiz1=(-b+raiz)/(2*a);
raiz2=(-b-raiz)/(2*a);
/*imprime los resultados*/
cout<<"\nRaces de la ecuacin.";
cout<<"\nRaiz 1 -->"<<raiz1;
cout<<"\nRaiz 2 -->"<<raiz2;
}
else {
/*raices imaginarias*/
raiz=sqrt(-raiz);
raiz1=-b/(2*a);
raiz2=raiz/(2*a);
/*imprime los resultados*/
cout<<"\nRaces de la ecuacin;
cout<<"\nParte real -->"<<raiz1;
cout<<"\nParte imaginaria -->"<<raiz2;
}
cout<<"\n***Fin del programa";
}

2.Guarda el cdigo fuente con el nombre ifelse2.cpp


3.Compila el programa.
4.Si no existen errores de sintaxis, entonces se debe generar el archivo ejecutable ifelse2.exe.

Anlisis del ejemplo 26. (programa: ifelse2.cpp)

El programa calcula las races reales o imaginarias de una ecuacin cuadrtica. El signo de la expresin
raiz=b*b-4*a*c;

se utiliza para determinar si las races son reales o complejas. A partir de ese punto hay dos trayectorias
posibles que convergen. Para decidir cul de esas dos direcciones va a seguirse se utiliza la expresin de
verificacin dentro del if
if(raiz>0)

La condicin puede ser verdadera, en este caso, el control del programa se transfiere al siguiente bloque de
sentencias y el programa sigue su curso despus de las instrucciones del else.
/*raices reales*/
raiz=sqrt(raiz);
raiz1=(-b+raiz)/(2*a);
raiz2=(-b-raiz)/(2*a);
/*imprime los resultados*/
cout<<"\nRaces de la ecuacin.";
cout<<"\nRaiz 1 -->"<<raiz1;
cout<<"\nRaiz 2 -->"<<raiz2;

Si la condicin de evaluacin es falsa, entonces el control fluye a la parte else y se ejecutan las siguientes
sentencias
/*raices imaginarias*/
raiz=sqrt(-raiz);
raiz1=-b/(2*a);
raiz2=raiz/(2*a);
/*imprime los resultados*/
cout<<"\nRaces de la ecuacin;
cout<<"\nParte real -->"<<raiz1;
cout<<"\nParte imaginaria -->"<<raiz2;

Luego de ejecutarse las operaciones indicadas, se continua con la secuencia normal del programa y se imprime
cout<<"\n***Fin del programa";

Una salida tpica del programa para los valores 1,2,3:


Raices de
Introduce
Introduce
Introduce

una ecuacin cuadrtica ax2+bx+c


el coeficiente a -->1
el coeficiente b -->2
el coeficiente c -->3

Races de la ecuacin 1x2+2x+3=0


Parte real -->-1
Parte imaginaria -->1.41421
***Fin del programa

Una salida tpica del programa para los valores 1,3,2:


Raices de
Introduce
Introduce
Introduce
Raices
Raiz 1
Raiz 2
***Fin

una ecuacin cuadrtica ax2+bx+c


el coeficiente a -->1
el coeficiente b -->3
el coeficiente c -->2

de la ecuacin 1x2+3x+2=0
-->-1
-->-2
del programa

Actividad 12.
Objetivo: el alumno determinar la salida impresa de los programas C++.
1.Cul es la salida del programa para los siguientes valores de la variable entera c a) 83 b) 70 c) 58?
#include <iostream.h>
void main()
{
int c;
cout<<"Calificacion=?";
cin>>c;
if(c>70)
cout<<"Aprobado";
else
cout<<"Reprobado";
}

2. Cul es el valor de la variable resultado?


#include <iostream.h>
void main()
{
int x=3;
int z=7;
int resultado;
if(x<z)
resultado=x+z;
else
resultado=x-z;
cout<<"Resultado="<<resultado;
}

3. Cundo se ejecutar la sentencia if?, Cundo se ejecutar la sentencia else?


#include <iostream.h>
void main()
{
int x;
int z;
int resultado;
cout<<"x=?";
cin>>x;
cout<<"z=?";
cin>>z;
if(x)
resultado=x+z;
else
resultado=x-z;
cout<<"Resultado="<<resultado;
}

4.Cul es la salida del programa?


#include <iostream.h>
void main()
{
int x=3;
int z=7;
int resultado;
if(!x)
resultado=x+z;
else
resultado=x-z;
cout<<"Resultado="<<resultado;
}

5. Cul es la salida impresa por el programa?


#include <iostream.h>
void main()
{

int x=3;
if(1)
cout<<"Primero";
else
cout<<"Segundo";
}

6. Cul es el resultado impreso por el programa?


#include <iostream.h>
void main()
{
int x=3;
if(2>x)
cout<<"Primero";
else
cout<<"Segundo";
if(4>x)
cout<<"Tercero";
cout<<"Cuarto";
}

7. Cul ser la salida del programa para los siguientes valores


a)
b)
c)
d)

x=25, y=5 ?
x=25, y=2 ?
x=15, y=2 ?
x=15, y=5 ?

#include <iostream.h>
void main()
{
int x;
int z;
cout<<"x=?";
cin>>x;
cout<<"z=?";
cin>>z;
if((x>18) || (z==2))
cout<<"Condicin verdadera";
else
cout<<"Condicin falsa";
}

8. Cul es la salida que imprime el programa?


#include <iostream.h>
void main()
{
int x=3;
int z=7;
int c;
int resultado;
c=((x<z) && (2*x-z));
if(!c)
resultado=x+z;
else
resultado=x-z;
cout<<"Resultado = "<<resultado;
}

9. Cul es la salida del programa para valores de a=20, b=10, c=50?, En que condiciones se ejecuta el bloque
de sentencias if?, y cuando se ejecuta el bloque de sentencias else?
#include <iostream.h>
void main()
{
int a;
int b;
int c;
cout<<"Introduce tres valores\n";
cout<<"a=?";
cin>>a;
cout<<"b=?";
cin>>b;
cout<<"c=?";
cin>>c;
if(c=(a-b)) {
cout<<"\na: "<<a;
cout<<" menos b: "<<b;
cout<<" es igual a c: "<<c;
}
else
cout<<"\na-b no es igual a c";
}

Ejercicios propuestos sentencias if/else.


28.Escribir un programa que despliegue el mensaje CONTINUAR CON DESPEGUE o CANCELAR
DESPEGUE dependiendo de los datos de entrada. Si el carcter g se introduce desde el teclado, deber
desplegar el primer mensaje; de otra manera, deber desplegar el segundo.
29.Escriba un programa que solicite al usuario que escriba dos enteros, tome los nmeros del usuario y a
continuacin imprima el nmero mayor seguido por las palabras es mayor. Si los nmeros son iguales, que
imprima el mensaje Los nmeros son iguales.
30.Una pequea fbrica produce su propia energa con un generador de 20 kilovatios y otro de 50 kilovatios. Al
escribir un cdigo de carcter, el gerente de la planta indica cul generador se requiere. Escriba un programa
que acepte este cdigo como dato de entrada. Si escribe el cdigo s deber desplegar un mensaje que indique
al encargado de la planta que debe usar el generador pequeo; de otra manera, deber desplegar un mensaje que
le instruya utilizar el generador ms grande.
31.Las pelotas de bisbol se venden a $150 pesos cada una si se compran menos de diez y $140 cada una si se
compran diez o ms. Escribe un programa que lea desde el teclado el nmero de pelotas compradas, y calcule e
imprima el costo total.
32.Construya un programa, que dado como dato el sueldo de un trabajador, le aplique un aumento del 15% si su
sueldo es inferior a $1,000.00 y 12% en caso contrario. Imprima el nuevo sueldo del trabajador.
33.Un obrero recibe $4 dolares por hora si trabaja 40 horas o menos a la semana; pero si trabaja ms de 40
horas semanarias, el obrero recibe $4 por hora por las primeras 40 horas, y $6 por cada hora adicional. Por
ejemplo, el obrero recibir $160 por trabajar 40 horas; 166 por 41 horas, ya que deber recibir 160+(41-4)*6.

Escriba un programa que proporcione el sueldo para el nmero de horas trabajadas dado como entrada y calcule
e imprima el sueldo del trabajador.
34.Escriba un programa que lea dos enteros y que determine e imprima si el primero es un mltiplo del
segundo. Por ejemplo 40 es el mltiplo de 8 porque 8x5=40, contiene 5 veces exactas al cuarenta. 40 no es
mltiplo de 3 porque no existe nmero natural o entero que multiplicado por 3 su producto sea 40, solo se
aproxima 3x13=39, as como 3x14=42, 40 no tiene un nmero de veces exacto de tres. (Sugerencia: utilice el
operador de mdulo).
35.Un palndromo es un nmero o una frase de texto, que se lee igual hacia delante y hacia atrs. Por ejemplo,
cada uno de los siguientes enteros de cinco dgitos son palndromos: 12321, 55555, 45554 y 11611. Escriba un
programa que lea un entero de cinco dgitos y que determine si es o no palndromo. (Sugerencia: utilice los
operadores de divisin y de mdulo para separar los nmeros en sus dgitos individuales).

3.3. Enunciados if anidados.


Una instruccin if/else puede contener instrucciones sencillas o compuestas. Se puede utilizar cualquier
instruccin vlida de C++ incluyendo otra instruccin if/else. De tal manera, una o ms instrucciones if/else
pueden estar incluidas en cualquier parte de una instruccin if/else. Al incluir una o ms instrucciones de if en
una instruccin if existente se crean las instrucciones anidadas if. La figura 18 ilustra la forma general de una
instruccin anidada if/else.

Figura 18. If anidados.


Una instruccin if/else anidada puede tener los siguientes formatos:
Formato a)
if (expresin1) {
bloque de sentencias 1;
}
//fin del if
else {
if (expresion2) {
//if anidado
bloque de sentencias 2;
}
//end-if
else {
//else anido
bloque de sentencias 3;
}
//end-else
}

//fin del else

Formato b)
if (expresin1) {
if (expresin2) {

//if anidado

bloque de sentencias 1;
}
//fin del if
else {
bloque de sentencias 2;
}
//fin del else
}
//fin del if
else {
bloque de sentencias 3;
}
//fin del else

Ejemplo 27. Programa: ifs1.cpp


1.Introduce las siguientes lneas de cdigo en el editor de textos del compilador C++.
#include <iostream.h>
void main()
{
/*declaracin de variables*/
float temp;
/*variables de entrada*/
cout<<"Dame una temperatura -->";
cin>>temp;
/*procesa los datos de entrada*/
if(temp>0) {
//es mayor que cero?
if(temp>=100) {
cout<<"La temperatura nos da VAPOR";
}
else {
cout<<"La temperatura nos da AGUA";
}
}
else
cout<<"La temperatura nos da HIELO";
cout<<"\n***Fin del programa";
}

2.Guarda el cdigo fuente con el nombre ifs1.cpp


3.Compila el programa.
4.Si no existen errores de sintaxis, entonces se debe generar el archivo ejecutable ifs1.exe.

Anlisis del ejemplo 27. (programa: ifs1.cpp)

La primera operacin de expresin de verificacin revisa si la temperatura es mayor que 0 grados.


if(temp>0)

Si el resultado de la verificacin es falso, la temperatura deber ser menor menor o igual a 0 grados, lo que da
como resultado se ejecute la siguiente sentencia
cout<<"La temperatura nos da HIELO";

Sin embargo, si el resultado, si el resultado de verificacin es verdadero, se hace una segunda verificacin para
ver si la temperatura es mayor o igual que 100 grados.
if(temp>=100)

Si este resultado de verificacin es verdadero se ejecuta la siguiente sentencia


cout<<"La temperatura nos da VAPOR";

Sin embargo, si este segundo resultado de verificacin es falso, se sabe que la temperatura debe estar entre 0 y
100 grados, lo que provoca que se ejecute la siguiente sentencia
cout<<"La temperatura nos da AGUA";

Una salida tpica del programa sera:


Dame una temperatura -->57
La temperatura nos da AGUA
***Fin del programa

Actividad 13.
Objetivo: el alumno determinar la salida impresa de los programas C++.
1. Cul es la salida que imprime el programa?
#include <iostream.h>
void main()
{
int x=3;
int y=0;
if(x>0) {
if(y>0)
cout<<"el valor de y es mayor que cero";
cout<<"\nel valor de x es mayor que cero";
}
else
cout<<"el valor de x es menor que cero";
}

2. Cul es la salida que imprime el programa?


#include <iostream.h>
void main()
{
int x,y,z;
x=-1;
y=5;
z=4;
if(x+4!=0) {
if(x<=10) {
if(y<10)
cout<<"La suma de x+y = "<<x+y;
else
cout<<"La suma de x+z = "<<x+z;
}
//end-if
}
//end-if
}

3. Qu mostrar el programa para cada uno de los siguientes valores iniciales de x?


a) x=0.
b) x=4.
c) x=-5
d) x=10
#include <iostream.h>
void main()
{
int x;
int y;
cout<<"x=?";
cin>>x;
if(x>=0) {
if(x<=10) {
y=x*x;
if(x<=5)
x=y/x;
}
else
y=10*x;
}
else
y=x*x*x;
cout<<"x="<<x;
cout<<"\ny="<<y;
}

Ejercicios propuestos sentencias if anidados.


36. Se introducen en la computadora los datos de tres temperaturas, T1, T2, T3. Dichas temperaturas no estas
ordenadas, y se quiere que el programa les asigne un orden ascendente para imprimirlas: primero la menor, y al
final la mayor. Hgalo funcionar para 190,160 y 147 asignados a T1,T2 y T3 respectivamente.
37. Escriba un programa que pida tres enteros diferentes del teclado, y a continuacin imprima la suma, el
promedio, el producto, el ms pequeo y el ms grande de estos nmeros.
38.El promedio de prcticas de un curso se calcula en base a cuatro prcticas calificadas de las cuales se elimina
la nota menor y se promedian las tres notas ms altas. Disee un programa que determine la nota eliminada y el
promedio de prcticas de un estudiante.
39.Una cierta compaa fabricante de repuestos de automviles ha descubierto defectos en algunos de sus
productos, especficamente aquellos cuyos nmeros de serie se encuentran dentro de los rangos: 14681 a 15681,
70001 a 79999 y 88888 a 111111. La compaa se ha comunicado a la divisin de relaciones con los
consumidores y desea un programa que permita leer el nmero de serie y deducir si es o no defectuoso.
40.Un archivo de datos contiene los cuatro dgitos, A,B,C,D de un entero positivo N. Se desea redondear a N la
centena ms prxima y visualizar la salida. Por ejemplo, si A es 2, B es 3, C es 6 y D es 2, entonces N ser
2362 y el resultado redondeado ser 2400. Si N es 2342, el resultado ser 2300, y si N=2962, entonces el
nmero ser 3000. Disear el programa correspondiente.

41. Una compaa de alquiler de automviles sin conductor desea un programa para emitir las facturas de sus
clientes, teniendo presente los siguientes puntos:
Cantidad fija de 5,000 pesos si no rebasan los 300 km.
Distancia recorrida mayor de 300 km.
-Si Distancia > 300 km y 1000 km.
5000 pesos + kilometraje. a razn de 30 pesos/km.
-Si Distancia > 1000 km. 5000 pesos + kilometraje.
a razn de 30 pesos/km para las distancias comprendidas entre 300 y
1000 km
y 20 pesos para las distancias mayores de 1000 km.

42. Elabore un programa para calcular el tiempo de vuelo de una sucesin de vuelos. El dato de cada vuelo esta
constituido por: el nmero de vuelo, la hora de llegada, la hora de salida y la hora de llegada. Para introducir
datos de llegadas y salidas, utilizaremos el sistema de las 24 horas, es decir, 8:10 p.m., se indica con 2010.
Ntese que los ltimos dgitos en este sistema nunca excedern el nmero 60. Sabemos, adems, que no hay
vuelo que dure ms de 24 horas; de tal manera que si un avin sale a las 2300 y llega a las 0115, el tiempo de
vuelo fue de dos horas y 15 minutos. Una salida tpica para el programa sera la siguiente:
Nmero de vuelo? 809
Tiempo de salida? 0945
Tiempo de llegada?1348
La Duracin del Vuelo 809 es de 4 hrs 3 min.

Utilcense los datos siguientes:


Vuelo No.
817
122
415
101

Tiempo de salida
0915
0945
2140
1710

Tiempo de llegada
1245
1215
0020
1850

43. Disee un programa que lea un nmero entero positivo de 3 cifras, y forme el mayor nmero posible con las
cifras del nmero ingresado.
44.Realizar un programa que lea un nmero entero positivo de 3 cifras, e imprima todas las posibles
combinaciones que se pueden formar con las cifras del nmero ingresado siempre y cuando :
Los nmeros obtenidos
proporcionado.
Los nmeros obtenidos
cifra.

sean menores o iguales al valor

3.4.

switch.

Enunciado

Esta
categora
de
programa seleccionar una
(cases). La operacin del
la figura 19 por medio del

sean mayores o iguales a la

seleccin
le
permite
al
de muchas opciones o casos
enunciado switch se muestra en
diagrama.

Figura 19. Sentencia switch.


La seleccin de un caso en particular se controla mediante un proceso de comparacin. Primero, se evala la
variable tipo seleccionador para producir un valor. Despus, el valor del seleccionador se compara con una
serie de cases. Si el valor del seleccionador iguala uno de los valores case, se ejecuta el enunciado
correspondiente case. Si no, no se hace ninguna comparacin, el programa simplemente contina en modo de
lnea recta, con el primer enunciado ms cercano al switch. La sintaxis C++ para el enunciado switch es como
sigue:
switch(variable seleccionador) {
case valor del caso 1:
enunciados del caso 1;
break;
case valor del caso 2:
enunciados del caso 2;
break;

case valor del caso n:


default:
}

enunciados del caso n;


break;
enunciados default;
break;

//fin del switch

La instruccin switch utiliza cuatro palabras clave: switch, case, break, default .
La palabra clave switch identifica el inicio de la instruccin de switch . La expresin en parntesis en
seguida de esta palabra ser evaluada y el resultado de la expresin ser comparado con varios valores
alternativos contenidos en las instrucciones compuestas. La expresin en la instruccin de switch deber
producir un resultado en nmero entero o de lo contrario aparecer un error de compilacin.
En la instruccin switch , la palabra clave case se utiliza para identificar o etiquetar los valores individuales
que sern comparados con el valor de la expresin en switch . El valor de la expresin en switch ser
comparado con cada uno de los valores de case en el orden en que stos aparecen hasta que se encuentra una

correspondencia. Una vez que los valores coinciden, la ejecucin empieza con la instruccin que est
inmediatamente despus de los valores que se igualaron.
Una instruccin de switch puede contener cualquier cantidad de etiquetas de case en cualquier orden. Sin
embargo, si el valor de la expresin no coincide con cualquier otro valor de case, ninguna instruccin se
ejecutar a menos que encuentre la palabra clave default . Esta palabra es opcional. Si el valor de la expresin
no iguala cualquiera de los valores de case, la ejecucin del programa empieza con la instruccin que est
enseguida de la palabra default .
Una vez que la instruccin de switch localiza un punto de entrada, todas las dems evaluaciones de case sern
ignoradas y la ejecucin continuar hasta el final de la instruccin compuesta, a menos que se encuentre la
instruccin de break . La instruccin de break identifica el fin de un case en particular y ocasiona la salida
inmediata de la instruccin de switch . As como la palabra case identifica los posibles puntos de inicio en una
instruccin compuesta, la instruccin break determina los puntos de terminacin. Si se omiten las instrucciones
break , se ejecutarn todas las instrucciones que estn en seguida del valor igualado de case, incluido el case de
default .

Ejemplo 28. Programa: switch1.cpp


1.Introduce las siguientes lneas de cdigo en el editor de textos del compilador C++.
#include <iostream.h>
void main()
{
/*declaracin de variables*/
char calificacion;
/*variables de entrada*/
cout<<"Introduce una letra (A-F) -->";
cin>>calificacion;
switch(calificacion) {
case 'A':
cout<<"A) Excelente.";
break;
case 'B':
cout<<"B) Muy bueno";
break;
case 'C':
cout<<"C) Promedio";
break;
case 'D':
cout<<"D) Malo";
break;
}
//fin-switch
cout<<"\n***Fin del programa";
}

2.Guarda el cdigo fuente con el nombre switch1.cpp


3.Compila el programa.
4.Si no existen errores de sintaxis, entonces se debe generar el archivo ejecutable switch1.exe.

Anlisis del ejemplo 28. (programa: switch1.cpp)

Aqu la variable seleccionador es calificacin. Los valores case son A,B,C,D. El valor de la variable
calificacin se compara con la lista de valores case. Si se encuentra una correspondencia, se ejecutan los
enunciados case correspondientes.

Una salida tpica del programa sera para un valor de calificacin de B:


Introduce una letra (A-F) -->B
B) Muy bueno
***Fin del programa

Ejemplo 29. Programa: switch2.cpp


1.Introduce las siguientes lneas de cdigo en el editor de textos del compilador C++.
#include <iostream.h>
void main()

{
/*declaracin de variables*/
char calificacion;
/*variables de entrada*/
cout<<"Introduce una letra (A-F) -->";
cin>>calificacion;
switch(calificacion) {
case 'A':
cout<<"A) Excelente.\n";
case 'B':
cout<<"B) Muy bueno\n";
case 'C':
cout<<"C) Promedio\n";
case 'D':
cout<<"D) Malo\n";
}
//fin-switch
cout<<"\n***Fin del programa";
}

2.Guarda el cdigo fuente con el nombre switch2.cpp


3.Compila el programa.
4.Si no existen errores de sintaxis, entonces se debe generar el archivo ejecutable switch2.exe.

Anlisis del ejemplo 29. (programa: switch2.cpp)

Aqu la variable seleccionador es calificacin. Los valores case son A,B,C,D. El valor de la variable
calificacin se compara con la lista de valores case. Si se encuentra una correspondencia, se ejecutan los
enunciados case correspondientes. En este ejemplo no se ha utilizado la palabra clave break.

Una salida tpica del programa sera para un valor de calificacin de B:


Introduce una letra (A-F) -->B
B) Muy bueno
C) Promedio
D) Malo
***Fin del programa

Con base en la salida, se observa que se igual case B y se ejecutaron sus enunciados case. Sin embargo, todos
los enunciados case posteriores para case B tambin se ejecutaron.

Ejemplo 30. Programa: switch3.cpp


1.Introduce las siguientes lneas de cdigo en el editor de textos del compilador C++.
#include <iostream.h>
void main()
{
/*declaracin de variables*/
char calificacion;

/*variables de entrada*/
cout<<"Introduce una letra (A-F) -->";
cin>>calificacion;
switch(calificacion) {
case 'a':
case 'A':
cout<<"A) Excelente.";
break;
case 'b':
case 'B':
cout<<"B) Muy bueno";
break;
case 'c':
case 'C':
cout<<"C) Promedio";
break;
case 'd':
case 'D':
cout<<"D) Malo\n";
break;
}
//fin-switch
cout<<"\n***Fin del programa";
}

2.Guarda el cdigo fuente con el nombre switch3.cpp


3.Compila el programa.
4.Si no existen errores de sintaxis, entonces se debe generar el archivo ejecutable switch3.exe.

Anlisis del ejemplo 30. (programa: switch3.cpp)

En este caso, los mltiples valores case necesitan apuntar hacia el mismo enunciado case. As que, si
calificacin tiene el valor b, entonces se hace una correspondencia con case b. Ningn break es parte de este
case, as que se ejecuta el siguiente case de la secuencia, el cual escribir la palabra Muy bueno. Debido a que
case B contiene un break, el enunciado switch se termina despus de que se genera la salida.

Una salida tpica del programa sera para un valor de calificacin de b:


Introduce una letra (A-F) -->b
B) Muy bueno
***Fin del programa

Ejemplo 31. Programa: default1.cpp


1.Introduce las siguientes lneas de cdigo en el editor de textos del compilador C++.
#include <iostream.h>
void main()
{
/*declaracin de variables*/
char calificacion;

/*variables de entrada*/
cout<<"Introduce una letra (A-F) -->";
cin>>calificacion;
switch(calificacion) {
case 'a':
case 'A':
cout<<"A) Excelente.";
break;
case 'b':
case 'B':
cout<<"B) Muy bueno";
break;
case 'c':
case 'C':
cout<<"C) Promedio";
break;
case 'd':
case 'D':
cout<<"D) Malo\n";
break;
default:
cout<<"No corresponde a ninguna entrada;
cout<<calificacion;
break;
}
//fin-switch
cout<<"\n***Fin del programa";
}

2.Guarda el cdigo fuente con el nombre default1.cpp


3.Compila el programa.
4.Si no existen errores de sintaxis, entonces se debe generar el archivo ejecutable default1.exe.

Anlisis del ejemplo 31. (programa: default1.cpp)

Aqu el enunciado default se ejecuta si calificacin es cualquier otro carcter diferente de los listados en case.

Una salida tpica del programa sera para un valor de calificacin de x:


Introduce una letra (A-F) -->x
No corresponde a ninguna entrada x
***Fin del programa

Actividad 14 .
Objetivo: el alumno determinar la salida impresa de los programas C++.
1. Qu mostrar el cdigo para cada uno de los siguientes valores de potencia?
a) potencia=0;
b) potencia=1;
c) potencia=2;
d) potencia=5;

#include <iostream.h>
void main() {
int x=2;
int potencia;
cout<<"Potencia=?";
cin>>potencia;
switch(potencia) {
case 0:
cout<<"1";
break;
case 1:
cout<<x;
break;
case 2:
cout<<x*x;
break;
case 3:
cout<<x*x*x;
break;
case 4:
cout<<"x*x*x*x";
break;
default: cout<<"No existe correspondencia para esta potencia";
}
//fin del switch
}

2. Qu mostrar el cdigo para cada uno de los siguientes valores x y y?


a) x=4; y=-2;
b) x=3; y=6;
c) x=1; y=-4;
d) x=7; y=-2;
e) x=2; y=5;
#include <iostream.h>
void main()
{
int x;
int y;
cout<<"x=?";
cin>>x;
cout<<"y=?";
cin>>y;
switch(x) {
case 2:
case 4:
case 6: switch(y) {
case 1:
case 2:
case 3: x=x+y;
break;
case -1:
case -2:
case -3: x=x-y;
break;
}
//fin-switch
break;
case 1:
case 3:
case 5: switch(y) {

case 2:
case 4:
case 6: x=x*y;
break;
case -1:
case -4:
case -6: x=y*y;
break;
}
//fin-switch
break;
}
//fin del switch
cout<<"x="<<x;
cout<<"\ny="<<y;
}

Ejercicios propuestos sentencias switch.


45. Escriba un programa que acepte dos nmeros reales de usuario y un cdigo de seleccin. Si el cdigo
introducido es 1, haga que el programa sume los dos nmeros introducidos anteriormente y despliegue el
resultado; si el cdigo de seleccin es 2, los nmeros debern ser multiplicados, y si el cdigo de seleccin es 3,
el primer nmero deber dividirse entre el segundo.
46. Realizar un programa que dado un nmero del 1 al 7, pueda establecer el da de la semana. Por ejemplo si
el nmero proporcionado por el usuario es 1 el programa deber imprimir Lunes. Si el valor proporcionado es
7, el programa deber imprimir Domingo.
47. Disear un programa que dado el nmero del mes del uno al doce, determine el nombre del mes y el nmero
de das que tiene asociado.
48. El cuadrante en el cual se ubica una lnea dibujada desde el origen est determinado por el ngulo que la
lnea forma con el eje positivo de x en la siguiente forma:
Angulo del eje positivo de x
Entre 0 y 90 grados
Entre 90 y 180 grados
Entre 180 y 270 grados
Entre 270 y 360 grados

Cuadrante
I
II
III
IV

Utilizando esta informacin, escriba un programa que acepte el ngulo de la lnea como dato de entrada por el
usuario y que despliegue el cuadrante apropiado conforme los datos. (Nota: Si el ngulo es exactamente
0,90,180 o 270 grados, la lnea correspondiente no se ubica en ningn cuadrante, sino en un eje.)
49. Escribir un programa que acepte un ao escrito en cifras arbigas y visualice el ao escrito en nmeros
romanos, dentro del rango 1000 a 2000.
Nota: Recuerde que V = 5, X = 10, L = 50, C = 100, D = 500, M = 1000
IV = 4 XL = 40 CM = 900
MCM = 1900
MCML = 1950 MCMLX = 1960
MCMXL = 1940 MCMLXXXIX = 1989

UNIDAD 4. Estructuras de control repetitivas.


Objetivo:
Utilizar las estructuras de control while, do-while, for, break, continue para la
repeticin de una serie determinada de sentencias en bucle, lazo o ciclo.

4.1. Ciclo while.


Como se ve en la figura 20, el ciclo while es una estructura de preverificacin porque se hace una prueba antes
de que los enunciados del ciclo se puedan ejecutar. Si la expresin de verificacin es verdadera (diferente de
cero) se ejecutarn los enunciados del ciclo. Si la expresin de verificacin es falsa (cero) se ignorarn los
enunciados del ciclo y se ejecutar el siguiente enunciado en la secuencia del ciclo. Siempre que la expresin de
verificacin sea verdadera, el programa continuar dentro del ciclo. En otras palabras, el ciclo se repetir
mientras la expresin de verificacin sea verdadera. Para salir del ciclo, algo deber cambiar dentro del ciclo
que haga que la expresin de verificacin sea falsa. Si no se hace este cambio, se tendr un ciclo infinito.
Adems, el diagrama muestra que si la expresin de verificacin es falsa la primera vez que se encuentra,
nunca se ejecutarn los enunciados del ciclo. Esta es una caracterstica importante de la estructura de control
while.

Figura 20. Funcionamiento del ciclo while.


La sintaxis C++ para el enunciado while es como sigue:
while (expresin de verificacin) {
enunciado 1;
enunciado 2;

//enunciados del ciclo

enunciado n;
//fin del while

La primera lnea del enunciado contiene la palabra clave while seguida de la expresin de verificacin seguida
de la expresin de verificacin dentro del parntesis. Los enunciados del ciclo se encuentran entre llaves. Esto
forma una enunciacin compuesta, que contiene enunciados individuales de ciclo.

Ejemplo 32. Programa: while1.cpp


1.Introduce las siguientes lneas de cdigo en el editor de textos del compilador C++.
#include <iostream.h>
void main()
{
/*declaracin de variables*/
int contador=0;
/*procesa los datos*/
while(contador<10) {
contador=contador+1;
cout<<contador<<" ";
}
cout<<"\n***Fin del programa";
}

2.Guarda el cdigo fuente con el nombre while1.cpp


3.Compila el programa.
4.Si no existen errores de sintaxis, entonces se debe generar el archivo ejecutable while1.exe.

Anlisis del ejemplo 32. (programa: while1.cpp)

Lo primero que hace la computadora es examinar la condicin, la que puede dar como resultado dos
posibilidades.
a) La condicin se cumple. Es decir si la variable contador tiene un valor menor que 10 cuando se evala la
condicin (contador<10) se incrementa el valor de contador y se efecta una llamada a la instruccin cout .
Entonces la instruccin while regresa automticamente sobre s misma y vuelve a probar la expresin; las
instrucciones se estarn repitiendo hasta que la condicin no se cumpla, entonces se sale del ciclo y se siguen
ejecutando las instrucciones que vienen a continuacin y estn fuera del bucle.
b) La condicin no se cumple. No entrar al ciclo, y se ejecutarn las instrucciones que vienen despus del
ciclo.

La salida tpica del programa:


1 2 3 4 5 6 7 8 9 10
***Fin del programa

Actividad 15.
Objetivo: el alumno determinar la salida impresa de los programas C++.
1.Cules son los valores de las variables numero, suma, y el valor de la expresin (numero>0) durante el ciclo?
#include <iostream.h>
void main()
{
int numero=5;
int suma=0;
while(numero>0) {
suma=suma+numero;
numero=numero-1;
}
//fin-while
cout<<"La suma es ="<<suma;
}

2. Cules son los valores de las variables numero, suma, y el valor de la expresin (numero>0) durante el
ciclo?
#include <iostream.h>
void main()
{
int numero=5;
int suma=0;
while(numero>0) {
if(numero%2)
suma=suma+numero;
numero=numero-1;
}
//fin-while
cout<<"La suma es ="<<suma;
}

3.Cul es el valor de la variable x durante el ciclo?


#include <iostream.h>
void main()
{
int x=10;
while(x>0)
x=x-3;
cout<<"El valor de x ="<<x;
}

4.Determina los valores que asume la variable x durante el ciclo y la salida impresa por el programa.
#include <iostream.h>
void main()
{
int x=1;
while(17%x!=5) {
cout<<x<<" "<<17%x<<"\n";
x=x+1;
}
}

Ejercicios propuestos ciclo while.


50.Escriba un programa que convierta galones a litros. El programa debe mostrar los galones desde 10 hasta 20
en incrementos de un galn y los equivalentes correspondientes en litros. Un galn equivales a 3.875 litros.
51.Una mquina que cost $28,000.00 se deprecia a razn de $4,000.00 por ao durante siete aos. Escriba y
ejecute un programa que calcule y despliegue una tabla de depreciacin para siete aos. La tabla debe tener el
siguiente formato.
Ao
1
2
3
4
5
6
7

Depreciacin
4000
4000
4000
4000
4000
4000
4000

Valor a fin de ao
24000
20000
16000
12000
8000
4000
0

Depreciacin acumulada
4000
8000
12000
16000
20000
24000
28000

52.Realizar un programa para leer un nmero entero positivo y calcular la siguiente secuencia: Si el nmero es
par divdalo entre dos; si es impar, multiplquelo por 3 y agrguele 1. Repita este proceso hasta que el valor
generado sea un 1, imprimiendo cada valor. Finalmente imprima cuantas operaciones se necesitaron para
terminar la secuencia. A este algoritmo se le conoce como: conjetura de ULAM. Una posible salida es la
siguiente:
Valor inicial: 9
Siguiente valor : 28
Siguiente valor : 14

Siguiente valor : 7
Siguiente valor : 22
Siguiente valor : 11
Siguiente valor : 34
Siguiente valor : 17
Siguiente valor : 52
Siguiente valor : 26
Siguiente valor : 13
Siguiente valor : 40
Siguiente valor : 20
Siguiente valor : 10
Siguiente valor : 5
Siguiente valor : 16
Siguiente valor : 8
Siguiente valor : 4
Siguiente valor : 2
Valor final 1, nmero de pasos 19.
Si el valor de entrada es menor que 1, imprimir un mensaje de error.
53.Un nmero perfecto es un entero positivo, que es igual a la suma de todos los enteros positivos (excluido el
mismo) que son divisores del nmero. El primer nmero perfecto es 6, ya que los divisores de 6 son 1,2,3 y
1+2+3=6. Escribir un programa que encuentre los tres primeros nmeros perfectos.
54.El mtodo para convertir un nmero decimal entero a un nmero binario slo implica una sencilla divisin
entre dos , tener presente los cocientes que resultan y una lista de residuos. Por ejemplo:
Divisin
37/2
18/2
9/2
4/2
2/2

Cociente
8
9
4
2
1
0

Residuo
1
0
1
0
0
1

Cuando la lista del residuo se invierte, se obtiene el equivalente binario. As 37=100101 en binario. Realice un
programa que convierta un nmero decimal dado en binario. Pruebe su programa para: 4, 128, 1024, 12345.

4.2.El Ciclo do/while.


El flujo del ciclo do/while se puede observar en la figura 21.

Figura 21. Funcionamiento del ciclo do/while.


Si se compara con el funcionamiento del ciclo while , encontrar que la verificacin se hace al final del ciclo,
en lugar de al principio del ciclo. Esta es la diferencia principal entre while y do/while . Porque do/while
es un ciclo posverificador, los enunciados del ciclo siempre se ejecutarn por lo menos una vez. Para romper el
ciclo la expresin de verificacin debe convertirse en falso (cero). De este modo, si el estado de la verificacin
es inicialmente verdadero, algo debe suceder dentro del ciclo para cambiar el estado a falso; de lo contrario,
tendr un ciclo infinito.
La sintaxis C++ para el enunciado do/while es como sigue:
do {
enunciado 1;
enunciado 2;

//enunciados del ciclo

enunciado n;
}
while (expresin de verificacin);

Este formato muestra que la operacin comienza con la palabra clave do, seguida por los enunciados reales del
ciclo, los cuales estn seguidos por la palabra clave while y la expresin de verificacin va entre parntesis.
Siempre deber enmarcar los enunciados mltiples del ciclo entre llaves; sin embargo, no se requiere
enmarcarlos cuando slo hay un enunciado de ciclo. Adems, note que no hay un punto y coma despus de la
palabra clave do en la primera lnea, pero se requiere un punto y coma despus de la expresin de verificacin
en la ultima lnea.

Ejemplo 33. Programa: dowhile1.cpp


1.Introduce las siguientes lneas de cdigo en el editor de textos del compilador C++.
#include <iostream.h>
void main()
{
/*declaracin de variables*/
int numero;
int digito;
/*datos de entrada*/
cout<<"Introduce un nmero : ";
cin>>numero;
do {
digito=numero%10;
cout<<digito;
numero=numero/10;
} while(numero!=0);
cout<<"\n***Fin del programa";
}

2.Guarda el cdigo fuente con el nombre dowhile1.cpp


3.Compila el programa.
4.Si no existen errores de sintaxis, entonces se debe generar el archivo ejecutable dowhile1.exe.

Anlisis del ejemplo 33. (programa: dowhile1.cpp)

El programa obtiene el inverso de un nmero que es proporcionado por el usuario. Lo hace utilizando el
operador del mdulo (%) para extraer el digito ms a la derecha. El nmero original se divide entre 10, y la
operacin se repite hasta que el nmero no sea igual a cero, que es cuando termina la iteracin.

La salida tpica del programa:


Introduce un nmero : 1230
0321
***Fin del programa

Actividad 16.
Objetivo: el alumno determinar la salida impresa de los programas C++.
1. Cules son los valores de las variables numero, suma, y el valor de la expresin (numero>0) durante el
ciclo?
#include <iostream.h>
void main()
{
int numero=5;
int suma=0;
do {
suma=suma+numero;
numero=numero-1;
}
while(numero>0);
cout<<"La suma es ="<<suma;
}

2.
#include <iostream.h>
void main()
{
int numero=0;
int suma=0;
do {
suma=suma+numero;
numero=numero+1;
}
while(numero!=5);
cout<<"La suma es ="<<suma;
}

3.
#include <iostream.h>
void main()
{
int maxNumero=5;
int numero=0;
int suma=0;
do {
numero=numero+1;
suma=suma+numero;
}
while(numero!=maxNumero);
cout<<"El prom. de los primeros "<<maxNumero
<<" enteros positivos es : "<<suma/maxNumero;
}

4.
#include <iostream.h>
void main()
{
int b=2;
do {
cout<<b<<" "<<b/5;
b=b*2;
}
while(b!=32);
}

Ejercicios propuestos para la instruccin do/while.


55. 4! Se lee 4 factorial y es igual al producto 4*3*2*1, que es 24. De manera semejante, 6 factorial es igual
a 6*5*4*3*2*1 que es 720. Escriba un programa que calcule el factorial de un nmero utilizando la sentencia
do/while, de manera que la salida sea:
4 Factorial es 24.
Pruebe su programa para distintos valores, por ejemplo, 7,8,12.
56. Formule un programa con do/while que d la siguiente salida:
5 4 3 2 1 FUERA
57.Una pelota de golf se lanza desde un aeroplano. La distancia, d, que la pelota cae en t segundos est dada
por la ecuacin d=(1/2)gt 2, donde g es la aceleracin producida por la gravedad y es igual a 32 pies/seg 2 (9.81
m/seg2). Utilizando esta informacin, escriba y ejecute un programa que muestre la distancia que la pelota cae
en cada intervalo de un segundo durante 10 segundos y la distancia total que la pelota ha recorrido al final de
cada intervalo. La salida debe completar la siguiente tabla:
TIEMP
O
0

DISTANCIA EN EL INTERVALO DISTANCIA


ACTUAL
TOTAL
0.0
0.0

1
...
...
...
10

16.0
...
...
...
...

16.0
...
...
...
...

58. Escribir un programa que calcule la suma 1+2+3+...+100.

4.3. Ciclo for.


El flujo de esta estructura de control de iteracin final se ilustra en la Figura 22. Al ciclo for se le llama ciclo
de repeticin fija porque el ciclo se repite un nmero determinado de veces. Como ver, lo primero que se lleva
a cabo antes de ejecutar los enunciados del ciclo es la inicializacin de un contador del ciclo. Inicializacin
significa establecer una variable contador a algn valor inicial. Entonces se ejecuta la expresin de verificacin
para verificar el valor del contador. Si el resultado de esta prueba es verdadero (diferente de cero), se ejecutan
los enunciados del ciclo. Cada vez que se ejecuten los enunciados del ciclo, el valor contador se debe
incrementar o decrementar. La expresin de verificacin se evala nuevamente antes de que se ejecuten otra
vez los enunciados del ciclo. El ciclo se repite siempre y cuando el resultado de la expresin de verificacin sea
verdadero. En otras palabras, el contador se incrementa o decrementa, se verifica y el ciclo se repite hasta que
la expresin de verificacin sea falsa. Cuando esto ocurre, ya no se ejecutan los enunciados del ciclo y ste se
rompe. Entonces el control del programa para al siguiente enunciado del ciclo.

Figura 22. Funcionamiento del ciclo for.

La sintaxis C++ para el enunciado for es como sigue:


for (contador=valor inicial; expresin de verificacin;
incremento o decrementa contador)
{
enunciado 1;
enunciado 2;

//enunciados del ciclo

enunciado n;
}

El enunciado comienza con la palabra clave for. Esta es seguida por tres enunciados separados: un enunciado
inicializacin, una expresin de verificacin y un enunciado incremento o decremento, todos encerrados dentro
de parntesis. El ciclo contador se inicializa asignando un valor inicial a la variable contador. La variable
contador puede ser cualquier clase de datos sencilla, excepto float. La variable contador se puede definir antes
del enunciado for o dentro del enunciado for como parte del paso de inicializacin, como sigue:
for(int contador=1;contador<=10;contador++)

Si se define dentro del enunciado for , slo es vlida para la funcin en la cual se defini. As, en lo que a C++
respecta, la variable contador no existe fuera de la funcin en la cual aparece el ciclo for .
La expresin de verificacin se usa para verificar el valor de contador del ciclo en contra de algn valor
predeterminado. Los enunciados del ciclo se ejecutarn hasta que el resultado de la expresin de verificacin se
convierta a falso (0).
El enunciado incremento o decremento se usa para cambiar el valor del contador del ciclo, as que la expresin
de verificacin se convierte a falso despus de un nmero determinado de iteraciones. Si el valor del contador
del ciclo nunca cambia, habr un ciclo infinito. Es importante que note que el enunciado incremento o
decremento no se ejecuta hasta despus de que se ejecuten los enunciados del ciclo en una iteracin dada.
As, si la expresin de verificacin inicial es verdadera, los enunciados del ciclo se ejecutarn por lo menos
una vez. Sin embargo, si la expresin de verificacin es falsa, los enunciados del ciclo nunca se ejecutarn.

Ejemplo 34. Programa: for1.cpp


1.Introduce las siguientes lneas de cdigo en el editor de textos del compilador C++.
#include <iostream.h>
void main()
{
/*declaracin de variables*/
int contador;
/*procesa los datos*/
for(contador=1;contador<=10;contador=contador+1) {
cout<<contador<<" ";
}
}

2.Guarda el cdigo fuente con el nombre for1.cpp


3.Compila el programa.
4.Si no existen errores de sintaxis, entonces se debe generar el archivo ejecutable for1.exe.

Anlisis del ejemplo 34. (programa: for1.cpp)

El programa declara una variable entera denominada contador. La primera parte de la sentencia
for(contador=1;

e inicializa el valor de contador a uno. El ciclo for se ejecutar hasta que se cumpla la condicin de evaluacin
contador<=10;

Como la variable contador se ha inicializado con el valor de uno (1<=10) la condicin es evaluada como
verdadera y entonces se ejecutar la sentencia del bloque for:
cout<<contador<<"\n";

donde se imprime en pantalla el valor de contador en pantalla. El proceso siguiente, es ejecutar la sentencia
faltante del for
contador=contador+1)

donde el contador se incrementa en uno. Ahora el control se turna a la condicin de evaluacin


contador<=10;

que se evala como verdadera, as la sentencia del programa


cout<<contador<<"\n";

se imprime de nuevo en la pantalla. El contador se incrementa de nuevo, y la condicin se evala hasta que el
valor de contador toma un valor de 11. Cuando esto ocurre, la condicin
contador<=10;

es evaluada falsa (11<=10), y entonces el ciclo for termina, y el control de programa pasa a la siguiente
sentencia
cout<<"sigue el programa";

y el programa termina al no existir mas sentencias por ejecutar.

Figura 23.

Funcionamiento del
ciclo for.

La figura 23 muestra el orden de procesamiento de cada parte del ciclo for. Primero se asigna el valor a la
variable de control, luego se comprueba la condicin de repeticin del bloque de sentencias, si se cumple se
incrementa el valor de la variable de control, y se vuelve a preguntar la condicin de evaluacin hasta que esta
es falsa y se termina el ciclo.

La salida tpica del programa:


1 2 3 4 5 6 7 8 9 10
***Fin del programa

Actividad 17.
Objetivo: el alumno determinar la salida impresa de los programas C++.
Qu se mostrarn en los siguientes programas?
a)
#include <iostream.h>
void main()
{
for(int contador=1;contador!=11;contador++)
cout<<contador<<"\n";
}

b)
#include <iostream.h>
void main()
{
for(int contador=-5;contador<6;contador++)
cout<<contador<<"\n";
}

c)
#include <iostream.h>
void main()
{
for(int contador=1;contador<11;contador++)

d)
#include <iostream.h>
void main()
{
for(int linea=1;linea<6;linea++) {
for(int col=1;col<11;col++)
cout<<linea<<";"<<col<<"\t";
cout<<"\n";
}
}

cout<<contador<<"\t"<<contador*contador<<"\n";
}

e)
#include <iostream.h>
void main()
{
int contador=0;
int max=6;

f)
#include <iostream.h>
void main()
{
int max=5;
int veces=3;

while(contador<max) {
for(int i=1;i<max+1;i++)
cout<<i;
cout<<"\n";
contador++;
}
//fin-while

do {
int contador=0;
while(contador<max) {
for(int i=1;i<contador+1;i++)
cout<<i;
cout<<"\n";
contador++;
}
//fin-while
cout<<"\n";
veces=veces-1;
} while (veces!=0);

Ejercicios propuestos ciclo for.


59.Escriba un programa que utilice un ciclo for para imprimir en pantalla lo siguiente:
11 al cuadrado es 121
12 al cuadrado es 144
13 al cuadrado es 169
14 al cuadrado es 196
15 al cuadrado es 225.
60.Haz un programa que imprima en pantalla los nmeros del 1 al 10, sus cuadrados y sus cubos
respectivamente.
1
2
...
...
10

1
4
...
...
100

1
8
...
...
1000

61.Haz un programa que imprima la tabla de multiplicar del cinco empezando del nmero uno y terminando en
el diez en la forma:
5*1=5
5*2=10
5*3=15
5*4=20
...
5*10=50
62.Haz un programa que imprima la tabla de multiplicar de cualquier numero.
63.Escriba un programa que utilice un ciclo para producir la siguiente tabla de valores:
A
3
6
9
12
15

A+2
5
8
11
14
17

A+4
7
10
13
16
19

A+6
9
12
15
18
21

64.Imprimir los enteros desde 1 hasta N con su respectivo cuadrado. La restriccin para este problema es que
suponemos que la computadora no puede multiplicar, por lo tanto debe de utilizar solamente sumas. Por
ejemplo, analice la situacin:
Nmer Cuadrad Obtenido
o
o
como
1
1
1
2
4
1+3
3
9
1+3+5
4
16
1+3+5+7
...y as sucesivamente.
65.Imprima todos los nmeros del 1 al 100 que no sean mltiplos de 5.
66.Escriba un programa para obtener la suma:
1x2 + 2x3 + 3x4 + ... + 49x50.
67.Escribir un programa que desarrolle las siguientes operaciones: 1 2 + 22 + 32 + ... + 252
68.Escriba un programa que convierta de pies a metros. El programa debe mostrar los pies desde 3 hasta 30 en
incrementos de 3 pies y los equivalentes correspondientes en metros. Un metro tiene 3.28 pies
69.Elabore un programa que escriba la lista siguiente de grados Celsius y sus equivalentes en grados Fahrenheit,
con incrementos de diez grados Celsius. Utilice la frmula: Fahrenheit=(9.0/5.0)*Celsius+32.0
0 Celsius son 32 Fahrenheit
10 Celsius son 50 Fahrenheit
20 Celsius son 68 Fahrenheit
...
...
...
100 Celsius son 212 Fahrenheit
70.Escribir un programa para convertir grados Celsius a Fahrenheit. El programa debe solicitar el valor inicial
en grados Celsius, la cantidad de conversiones que se efectuarn y el incremento entre los valores en grados
Celsius. El programa debe imprimir los encabezados e informacin apropiados. Utilice la frmula:
Fahrenheit=(9.0/5.0)*Celsius+32.0

71.Hacer un programa que imprima la pareja de valores


1
1
2
2
3
3

1
2
1
2
1
2

72.Implemente un programa que imprima todas las tablas de multiplicar del 1 al 10.
73.Implemente un programa que genere todas las tablas del 1 al 10 dependiendo de la opcin seleccionada por
el usuario. Si el usuario elige de un men de opciones el nmero 1, se generan todas las tablas de suma, el 2 las
tablas de resta, el tres las de multiplicacin, el 4 las de divisin.
74.Imprimir los nmeros pares desde el 2 hasta el 2000. Al finalizar el programa imprima un mensaje con la
sumatoria de los nmeros impresos.
75.Disea un programa que calcule la suma de los nmeros pares comprendidos entre 10 y 50.
76.Una oficina de turismo calcula que si vende sus boletos a un precio individual de X dlares, vender 84-6X
boletos. Escriba un programa para elaborar la siguiente tabla para precios en cifras redondeadas desde $1 dlar
hasta $14 dlares.
Precio Boleto
1
2
...
...
...
14

Se Venden
78
72
...
...
...
0

Ingresos
78
144
...
...
...
0

77.Escriba un programa que imprima una tabla de todos los equivalentes de nmeros romanos con nmeros
decimales (es decir de base 10) en el rango del 1 al 100.
78.Un nmero es primo si dividido sucesivamente por 2,3,4,Nmero-1, no produce ninguna divisin entera
(resto cero). Es decir, un nmero primo es un entero que no tiene ms divisores que el mismo y la unidad. Por
ejemplo, 5 es primo, ya que slo tiene como divisores 5 y 1; 24 no es primo, ya que tiene divisiones distintas de
24 y 1 (2 y 3). Escribir un programa para determinar si un entero proporcionado por el usuario es primo.

79.Elabore un programa que imprima todos los nmeros primos en el rango del 4 al 100 con el siguiente
formato
Nmer
o
4
5
6
7
...

Leyenda
No
primo
Primo
No
primo
Primo
...

80.Escribe un programa para imprimir los siguientes patrones de nmeros:


a)

11111
22222
33333
44444

b) 121212
232323
343434
565656

c)

123456
234567
345678
456789

d) 12321
34543
56765
78989

81.La secuencia de nmeros de la serie FIBONACCI esta dada por : 0,1,1,2,3,5,8,13,21,34,55,..., donde los dos
primeros nmeros de la serie son 0 y 1. El resto se calculan como la suma de los don inmediatos nmeros que
le preceden. Realizar un programa que realice lo siguiente:
a) Calcule e imprima el trmino nmero 680 de la secuencia FIBONACCI.
b) Imprima la secuencia de un nmero n dado por el usuario de entrada.
c) Imprima la serie de fibonacci de varias longitudes (por ejemplo de 1 a 12). Su salida
ser como sigue:
Longitud de la serie
1
2
3
...
12

Nmeros de fibonacci
1
11
112
1123
1 1 2 3 5 8 13 21 34 55 89 144

82.Escriba un programa que obtenga e imprima todos los nmeros Primos Gemelos comprendidos entre A y B
(enteros positivos). Los primos gemelos son parejas de nmeros primos con una diferencia entre s de
exactamente dos. Ejemplo: 3 y 5 son nmeros gemelos.

4.4. Las opciones break y continue.


Los enunciados break y continue se pueden usar para modificar la ejecucin de estructuras de control
predefinidas, como los ciclos, cuando se presentan ciertas condiciones. En general, el enunciado break se usa
para terminar un ciclo inmediatamente y el enunciado continue se usa para pasar por alto una iteracin de ciclo.

4.4.1. El enunciado break.


Cuando C++ ejecuta el enunciado break dentro de un ciclo, el ciclo se termina inmediatamente y el control
pasa al siguiente enunciado en el ciclo. El enunciado break generalmente se utiliza como parte del enunciado
if dentro de un ciclo para terminar la estructura de un ciclo si ocurren ciertas condiciones. La accin del
enunciado break dentro de un ciclo while puede ilustrarse como sigue:
while(expresin de verificacin) {
enunciado 1;
enunciado 2;

if(expresin de verificacin)
break;

enunciado n;
//final de while

La instruccin break viola los principios de la programacin estructurada porque permite una salida no
estndar de un ciclo. Sin embargo, la instruccin break es sumamente til para salir de un ciclo cuando se
detecta una condicin fuera de lo normal.

Ejemplo 35. Programa: break1.cpp


1. Introduce las siguientes lneas de cdigo en el editor de textos del compilador C++.
void main()
{
/*declaracin de variables*/
int valor;
/*proceso*/
while(1==1) {
cout<<"Introduce un nmero (Un cero (0) para salir)-->";
cin>>valor;
//lectura de la entrada
if(valor==0) {
break;
//sale del ciclo
}
cout<<"El cuadrado de "<<valor<<" es "<<valor*valor<<"\n";
}
//fin-while
cout<<"***Fin del programa";
}

2.Guarda el archivo con el nombre break1.cpp


3.Compila el programa.
4.Si no existen errores de sintaxis, entonces se debe generar el archivo ejecutable break1.exe.
5.Cul es la salida desplegada por el programa?

Anlisis del ejemplo 35. (programa: break1.cpp)

El programa declara una variable entera identificada con el nombre de valor . Pregunta por el dato de entrada
dentro de un ciclo while , si el dato introducido es cero el programa termina; si es dato es diferente de cero
entonces se imprime el cuadrado del nmero; de nuevo se vuelve a repetir el ciclo hasta que el usuario introduce
un dato igual a cero.
Observe cuidadosamente el algoritmo que implementa el programa y debe de llegar a la conclusin de que
puede escribirse sin utilizar un ciclo infinito; no es recomendable utilizar ciclos de este tipo.

La salida tpica desplegada por el programa cuando se ejecute ser:


Introduce un nmero
El cuadrado de 2 es
Introduce un nmero
El cuadrado de 4 es
Introduce un nmero
El cuadrado de 6 es
Introduce un nmero
***Fin del programa

(Un
4
(Un
16
(Un
36
(Un

cero (0) para salir)-->2


cero (0) para salir)-->4
cero (0) para salir)-->6
cero (0) para salir)-->0

Ejemplo 36. Programa: break2.cpp


1. Introduce las siguientes lneas de cdigo en el editor de textos del compilador C++.

void main()
{
/*declaracin de variables*/
int numero=1; //variable para el control del ciclo
/*proceso*/
while(numero<11) {
if(numero==5) {
break;
}
cout<<"Nmero -->"<<numero<<"\n";
numero=numero+1;
}
//fin-while
cout<<"Ultimo valor de nmero -->"<<numero;
cout<<"\n***Fin del programa";
}

2.Guarda el archivo con el nombre break2.cpp


3.Compila el programa.
4.Si no existen errores de sintaxis, entonces se debe generar el archivo ejecutable break2.exe.
5.Cul es la salida desplegada por el programa?

Anlisis del ejemplo 36. (programa: break2.cpp)

Este programa utiliza un ciclo while y su bloque interior utiliza un enunciado break para terminar el ciclo
cuando la variable entera numero alcanza el valor de 5. Una vez que la variable alcanza el valor 5 obliga al
ciclo a terminar y la sentencia de salida
cout<<"Nmero -->"<<numero<<"\n";

ya no se vuelve a ejecutar.

La salida tpica desplegada por el programa cuando se ejecute ser:


Nmero
Nmero
Nmero
Nmero
Ultimo
***Fin

-->1
-->2
-->3
-->4
valor de nmero -->5
del programa

Ejemplo 37. Programa: break3.cpp


1. Introduce las siguientes lneas de cdigo en el editor de textos del compilador C++.

void main()
{
/*declaracion de variables*/
char siNo;
/*proceso*/
cout<<"Imprime los nmeros del 1 al 5\n";
for(int i=1;i<=5;i++) {
cout<<"i -->"<<i;
cout<<"\nDeseas terminar el ciclo (S/N)? ";
cin>>siNo;
if((siNo=='S') || (siNo=='s')) {
break;
//aborta el ciclo
}
}
cout<<"\n***Fin del programa";
}

2.Guarda el archivo con el nombre break3.cpp


3.Compila el programa.
4.Si no existen errores de sintaxis, entonces se debe generar el archivo ejecutable break3.exe.
5.Cul es la salida desplegada por el programa?

Anlisis del ejemplo 37. (programa: break3.cpp)

La salida tpica desplegada por el programa cuando se ejecute ser:


Imprime los nmeros del 1 al 5
i -->1
Deseas terminar el ciclo (S/N)?
i -->2
Deseas terminar el ciclo (S/N)?
i -->3
Deseas terminar el ciclo (S/N)?
i -->4
Deseas terminar el ciclo (S/N)?
i -->5
Deseas terminar el ciclo (S/N)?
***Fin del programa

4.4.2. El enunciado continue.

n
n
n
n
n

Se utiliza principalmente para pasar por alto una iteracin dentro de un ciclo si ocurre cierta condicin. As
como el enunciado break , el enunciado continue normalmente se emplea dentro de un ciclo como parte del
enunciado if. Podemos ilustrar la operacin de continue dentro del ciclo for como sigue:
for(cont=valor_inicial;expresin de verificacin;cont incrementa o decrementa) {
enunciado 1;
enunciado 2;

if(expresin de verificacin)
continue;

enunciado n;
//final de for

La sentencia continue es prcticamente la sentencia opuesta al break ; En lugar de abandonar el ciclo,


continuando la ejecucin del programa por la sentencia que sigue a la llave de cierre del ciclo, esta sentencia
har que la ejecucin vuelva de nuevo al comienzo del ciclo, evalundose de nuevo la condicin inicial ( Ver
Figura 24).
for(int i=0;i<=10;i++) {
break;
cout<<No se imprime esta lnea;
}
/*Resto del programa*/
for(int j=0;j<=10;j++) {
continue;
cout<<No se imprime esta lnea;
}
/**Resto del programa*/

break termina el ciclo


inmediatamente

continue hace que se


ejecute otra iteracin

Figura 24. Diferencia entre break y continue.

Ejemplo 38. Programa: continu1.cpp


1. Introduce las siguientes lneas de cdigo en el editor de textos del compilador C++.
void main()
{
/*variables de entrada*/
float calif;
float total;
int cont;
/*inicializacin de variables*/
cont=0;
total=0;
/*procesa los datos de entrada*/
while(cont<5) {
cout<<"Calificacin -->";
cin>>calif;
if((calif<0)||(calif>100)) { //rango?
cout<<"***Error: Calificacin fuera de rango\n";
continue;
}
total=total+calif;
cont++;
}
cout<<"\nPromedio -->"<<total/cont;
cout<<"\n***Fin del programa";
}

2.Guarda el archivo con el nombre continu2.cpp


3.Compila el programa.
4.Si no existen errores de sintaxis, entonces se debe generar el archivo ejecutable continu2.exe.
5.Cul es la salida desplegada por el programa?

Anlisis del ejemplo 38. (programa: continu2.cpp)

La salida tpica desplegada por el programa cuando se ejecute ser:


Calificacin
Calificacin
Calificacin
Calificacin
Calificacin

-->89
-->65
-->78
-->65
-->67

Promedio -->72.8
***Fin del programa

Actividad 18.
Objetivo: el alumno identificar la salida de los programas C++.
1Cul es la salida impresa por los siguientes programas?
a)
#include <iostream.h>
void main() {
for(int i=1;i<=10;i++) {
cout<<i;
break;
}
}

c)
#include <iostream.h>
void main() {
int contador=-3;
while(contador<3) {
contador=contador+1;
if(contador) {
continue;
}
cout<<contador<<\t;
}
}

b)
#include <iostream.h>
void main() {
int contador=-3;
while(contador<3) {
contador=contador+1;
if(contador) {
break;
}
cout<<contador<<\t;
}
}
d)
#include <iostream.h>
void main() {
while(contador<3) {
contador=contador+1;
if(contador)
continue;
cout<<contador<<\t;
}
}

Bibliografa consultada.

C++ Para Ingeniera y Ciencias.


Gary J. Bronson.
International Thomson Editores.
1999.
Tcnicas Estructuradas y Orientadas a Objetos.
Andrew C. Staugaard Jr.
Prentice Hall.
1998
Aprenda C.
Charles Siegel.
Editorial Salvat.
1991.
C++ A su alcance. Un enfoque orientado a objetos.
Luis Joyanes Aguilar.
McGrawHill.
1994.
Curso de Programacin C++. Programacin Orientada a Objetos.
Francisco Javier Cevallos.
Addison-Wesley Iberoamericana.
1993.
Teach Yourself C++ in 21 Days, Second Edition.
Greg Wiegand.
Sams Publishing.
C++ by Example
Que Corporation.
1996
C Programming
Brian Brown.
Direccin internet: http://homepages.msn.com/LibraryLawn/brownbr/cprogram/default.htm
1984-1999
Metodologa de la programacin. Algoritmos, Diagramas de Flujo y Programas. Tomo I.
Osvaldo Cair.
Alfaomega.
1995.
Diagramacin y programacin. Estructurada y Libre.
Letvin Lozano R.
McGraw-Hill.
1986.

Vous aimerez peut-être aussi