Sei sulla pagina 1di 0

Facultad de Ingeniera de Sistemas, Cmputo y

Telecomunicaciones
Sistema a Distancia




LENGUAJE DE
PROGRAMACIN I


YULIANA JUREGUI ROSAS
FRANKLIN ARRIOLA RAMREZ
CARLOS AUGUSTO RUIZ DE LA CRUZ MELO








2009
Introduccin

El presente libro cubre los temas desarrollados en el curso de Lenguaje de
Programacin I correspondiente al tercer ciclo de la carrera de Ingenieria de
Sistemas y Cmputo, por lo que se distribuye en cuatro unidades correspondientes
al slabo.
La herramienta usada es el lenguaje C++, el cual es un lenguaje practico que
permite plasmar con claridad los algortimos desarrollados por el alumno en el curso
anterior, logrando desarrollar de forma fcil programas computacionales.
Todos los ejemplos de programacin resueltos presentados en este texto pueden
ser ejecutados en cualquier compilador de C++, de manera que el alumno
interacte con el programa y comprenda mejor el proceso de resolucin.









Lenguaje de Programacin I - Unidad I Yuliana Juregui y otros

2
Orientacin metodolgica


Este libro est compuesto por cuatro unidades correspondientes al slabo, las cuales
a su vez se dividen en lecciones, en cada una de las lecciones se desarrollan bases
tericas necesarias para entender el tema, ejercicios resueltos y ejercicios
propuestos, cada unidad adems presenta un resumen, una lectura, un glosario de
trminos, una autoevaluacin as como la bibliografa y los enlaces web
correspondiente a la unidad.
La primera unidad contiene los conceptos previos del Lenguaje C++ y el desarrollo
de la tcnica de programacin estructurada y modular; la segunda unidad introduce
al uso de arreglos unidimensionales y bidimensionales; en la tercera unidad se
aborda el manejo de cadenas de caracteres, estructuras y arreglos de estructuras,
finalmente, en la cuarta unidad, se trabaja el manejo de archivos.
El objetivo de este libro es que el alumno sea capaz de dar solucin a problemas a
travs de programas computacionales escritos en C++, empleando la programacin
estructura, modular y arreglos con diferentes tipos de datos.
El libro puede ser usado muy fcilmente por aquellos lectores que se estan
iniciando en programacin pues en cada leccin se explica detalladamente los
conceptos necesarios para entender el tema y a continuacin se desarrollan una
variedad de programas completos en el que el alumno podr contrastar lo ledo, al
final de cada leccin se presenta una lista de ejercicios propuesto que el alumno
podr ser capaz de resolverlos.



Lenguaje de Programacin I - Unidad I Yuliana Juregui y otros

3





Unidad I

Programacin estructurada y modular


Sumario
La unidad tiene como propsito que el estudiante identifique y comprenda los
trminos necesarios para programar con el lenguaje C++, valorando la relevancia
que tiene la programacin estructurada y modular. Contiene:
El lenguaje C++
Programacin estructurada
Programacin modular



Lenguaje de Programacin I - Unidad I Yuliana Juregui y otros

4
Leccin 1

El lenguaje C++

1.1. El Lenguaje C++
El lenguaje C fue diseado e implementado en el ao 1972 por Dennis Ritchie. El
C++ es una extensin de C, diseado a mediados de los aos 80 por Bjarme
Stroustrup con mecanismos que permitan la manipulacin de objetos.
El lenguaje C++ es un lenguaje de propsito general. Puede programarse desde un
sistema operativo y un compilador hasta aplicaciones de base de datos,
procesadores de texto, hoja de clculo, juego, aplicaciones a medida, etc.

1.1.1. Caractersticas
De propsito general.
Un lenguaje de alto nivel como Fortran, Cobol, etc.
Es un lenguaje estructurado, pues permite ejecutar las tres estructuras de
control: Secuencial, selectiva y repetitiva.
Es un lenguaje muy potente. Dependiendo del hardware, permite programar a
alto nivel como a bajo nivel (maneja datos a nivel de bits, bytes y direcciones).
Permite realizar programacin modular. Es posible escribir el programa en
mdulos independientes.
Permite realizar programacin orientada a objetos (Tipo de programacin que
intenta simular el mundo real en funcin a clases y objetos).
Ofrece una enorme librera en tiempo de compilacin.

1.1.2. Estructura bsica de un programa en C++. La funcin main()
Todo programa en C++, desde el ms pequeo hasta el ms complejo, tiene una
funcin principal que es la funcin main(), la cual se encarga de llevar el control de
la ejecucin del programa. Esta funcin tiene la siguiente forma:


// Directivas, que incluye otros archivos, constantes y macros
void main()
{
// Variables del programa
// Cuerpo del programa
}

Algunos ejemplo de instrucciones en C++:
int i = 1;
cout<<"Mi primer programa en C++";
suma = nro1 + nro2;
El smbolo punto y coma (;) se utiliza para indicar el final de una instruccin, o
separar dos o ms instrucciones que se encuentran en una misma lnea. Ejemplo:
int ;
int n1, n2; double suma;

Lenguaje de Programacin I - Unidad I Yuliana Juregui y otros

5
1.1.3. Directivas
Las directivas son instrucciones que le damos al compilador para indicarle la
utilizacin de funciones estndar de la biblioteca de lenguaje C++. Las directivas
comienzan con el smbolo # y no llevan punto y coma al final.
Por ejemplo:
#include
#define

1.1.4. Comentarios
Un comentario es una instruccin no ejecutable, es decir, es un texto que se usa
como ayuda para documentar un programa que tiene por finalidad hacer ms
comprensible el programa.
Puede darse un comentario de mltiples lneas. Para esto, se define al comentario
entre /* y */ . Por ejemplo:

/* Mi primer programa . Visualizar en la pantalla.
El texto: Mi Primer Programa en C++
y el resultado de sumar dos nmeros enteros */

Si el comentario es de una sola lnea, es suficiente comenzar con un //. Por
ejemplo:
// Este es un comentario

1.1.5. Palabras Reservadas
Es un conjunto de palabras claves que son de uso exclusivo del lenguaje C++.
Muchas de ellas forman parte de las instrucciones de C++, por lo cual no deben ser
utilizados como identificadores.

abstract
boolean
break
byte
byvalue
case
catch
char
class
const
continue
default
do
double
else
extends
enum
false
final
finally
float
for
goto
if
implements
import
instanceof
int
interface
long
native
new
null
package
private
protected
public
return
short
static
union
super
unsigned
switch
synchronized
typedef
this
threadsafe
throw
transient
true
try
void
volatile
while
Tabla 1.1. Palabras reservadas

1.1.6. Tipos de Datos
Son palabras reservadas que se utilizan para indicar el valor que almacena un
identificador (una variable).
Lenguaje de Programacin I - Unidad I Yuliana Juregui y otros

6
El C++, como cualquier otro lenguaje de programacin, tiene la posibilidad de
trabajar con datos de distinta naturaleza: nmeros enteros, nmeros reales,
caracter y lgico. El tipo de dato define el rango de posibles valores que el dato
pueda tomar, posibilidad de ser solo positivo (sin signo, unsignied), o ser positivo o
negativo (con signo, signed).
Los tipos numricos se clasifican en:
Tipos enteros: byte, short, int, long
Tipos Reales: float, double
1.1.6.1. Caracter - char
Se usa para representar un solo caracter especificado entre apstrofes. Su tamao
es de 8 bits. Con 8 bits se puede almacenar 2
8
= 256 valores diferentes, de 0 a 255
para variables positivas (sin signo, unsigned) y de -128 a 127 para variables que
pueden ser positivas o negativas (con signo, signed).

Tipo de dato Longitud en bits Rango
char 8 -128 a 127
unsigned char 8 0 a 255
signed char 8 -128 a 127
Tabla 1.2. Tipo de dato caracter
1.1.6.2. Enteros - int
Se usan para representar nmeros enteros con signo o sin signo. Sus tamaos
varan entre 8 y 32 bits. Con 32 bits se puede almacenar 2
32
= 4294967296,
nmeros enteros diferentes de 0 al 4294967295 para variables sin signo (unsigned)
y de -2147483648 a 2147483647 para variables que pueden ser positivas y
negativas (signed). Se tiene 4 tipos de datos enteros: byte, short, int, long.

Tipo de dato Longitud en bits Rango
byte 8 -128 a 127
short 16 -32768 a 32767
unsigned short 16 0 a 65535
int 32 -2147483648 a 2147483647
unsigned int 32 0 a 4294967295
signed int 32 -2147483648 a 2147483647
long 32 -2147483648 a 2147483647
Tabla 1.3. Tipos de datos enteros

1.1.6.3. Reales - float/double
Los nmeros reales son tambin conocidos como nmeros de punto flotante, se
usan para representar nmeros con partes fraccionarias. Se tiene dos tipos de
coma flotante: float y double. El primero reserva almacenamiento para un nmero
de precisin simple de 4 bytes y el segundo lo hace para un nmero de precisin
doble de 8 bytes.

Tipo de dato Longitud en bits Rango
float 32 -3.4x10
-38
a 1.7x10
38

double 64 - 1.7x10
-308
a 1.7x10
308

Tabla 1.4. Tipos de datos reales
Lenguaje de Programacin I - Unidad I Yuliana Juregui y otros

7
1.1.6.4. Lgico - bool
El tipo de dato bool, es decir booleanas, es de tipo lgico. Sus expresiones se
llaman booleanas por George Boole, que formul las reglas de la lgica matemtica,
una variable pueda tomar uno de dos valores true (verdadero) o false (falso).

Tipo de dato Longitud en bits Posibles valores
bool 8 true o false
Tabla 1.5. Tipo de dato lgico

El dato de tipo bool se almacena un byte de memoria. Este valor puede ser 0 o 1. El
0 indica false y el 1 indica true.
Las expresiones booleanas se emplean en las estructuras selectivas y estructuras
repetitivas que ms adelante se vern.

1.1.7. Caracteres de Escape
En C++ hay cierto tipo de caracteres que no tienen una representacin grfica y
por consecuencia no pueden visualizarse o imprimirse, pero que s pueden
representarse mediante una barra(\) y una secuencia de caracteres que vienen a
continuacin. A estos caracteres se les denomina caracteres de control y son en
total 33.
Existen otro tipo de caracteres que se conocen como secuencias de escape, que se
representan de la misma forma que los caracteres de control y que ms bien son
una extensin de los caracteres de control y que al igual que stos son capaces de
representar a todos los cdigos ASCII. Observe la tabla siguiente con las secuencias
de escape de uso comn.

Secuencia de escape Descripcin
\
\
\\
\r
\n
\f
\t
\b
Comilla simple
Comilla doble
Barra invertida
Retorno del carro
Nueva lnea(o salto de lnea)
Almacenador de pagina
Tabulador
Retroceso
Tabla 1.6. Caracteres de secuencia de escape

1.1.8. Identificadores
Un identificador es un nombre que puede darse a una variable, a una constante, a
una funcin y en general a cualquier elemento de un programa que necesite
nombrarse. Las reglas para nombrar un identificador son las siguientes:
El primer caracter debe ser una letra, el smbolo de subrayado _ o un smbolo
de dlar $, los siguientes caracteres del identificador pueden ser letras o
dgitos.
No se debe utilizar las palabras reservadas del C++ como identificador, as la
palabra reservada if no podr ser un identificador.
Puede incluir, pero no debe de comenzar con un nmero.
Lenguaje de Programacin I - Unidad I Yuliana Juregui y otros

8
Se diferencia las letras maysculas de las minsculas. Por lo tanto Mayor es
un identificador distinto a mayor, pues la letra M es diferente a la letra m.
No deben contener espacios en blanco. Hacer lo contrario, indicara la posible
existencia de dos o ms identificadores. Por ejemplo ahorroTotal es un
identificador vlido, sin embargo ahorro Total no lo es, ya que el espacio en
blanco incluido entre ahorro y Total indicara a C++ la presencia de dos
identificadores: ahorro y Total respectivamente.
Se aconseja elegir nombres significativos que describan la informacin que
ellos representan. Esto facilita la lectura, comprensin y escritura del
programa. Por ello no es conveniente utilizar nombres cortos como
identificadores, as como tampoco que su longitud sea excesivamente larga a
pesar que C++ permite que los identificadores tengan cualquier longitud. Por
ejemplo nombrar sueldo a un identificador para referirse al sueldo de un
trabajador, es ms apropiado que nombrarlo x o nombrarlo como
elsueldodeltrabajador, en este caso x no sugiere que est representando al
sueldo de un trabajador y la longitud excesiva de elsueldodeltrabajador no
facilita su escritura en el programa.

Identificador Vlido Explicacin
peso Empieza con una letra
break x Es una palabra reservada
2edad x Comienza con un nmero
salario Bruto x Tiene un espacio en blanco intermedio
sueldo_trabajador Puede incluir el smbolo de subrayado.
Tabla 1.7. Identificadores vlidos () y no vlidos(x)

1.1.8.1. Variables
Una variable se define como un identificador que se utiliza para almacenar valores
que estn en un determinado dominio. Puede adems cambiar de valor a lo largo
de la ejecucin del programa y su uso en un programa es solo posible si se ha
declarado antes, de lo contrario el compilador emitir un mensaje de error. Es
posible inicializar (dar un valor inicial) una o ms variables en el momento de la
declaracin. En estos casos la sintaxis es:

Sintaxis Se declara
Tipo identificador; una variable
Tipo identificador1, identificador2,., etc. ms de una variable
Tipo identificador = valor; y inicializa una variable
Tipo identificador1=valor1, identificador2=valor2, ,etc. y inicializa varias variables
Tabla 1.8. Declaracin de variables
Ejemplos:

int edad;
double precio, impuesto, total;
char sw = x;
int a=7, b=9, c=4;



Lenguaje de Programacin I - Unidad I Yuliana Juregui y otros

9
1.1.8.2. Constantes
Una constante es aquel identificador que no cambia de valor durante la ejecucin
de un programa. Para indicar al compilador, que se trata de una constante,
usaremos la directiva #define:

#define <identificador> <valor>
Ejemplos:
#define pi 3.1416
#define max 580
Observe que no se indica el punto y coma al final de la sentencia, ni tampoco el
tipo de dato.
Las constantes pueden ser de tipo: caracter, cadena, entero, real y lgico, las
constantes de tipo cadena se encuentran encerradas entre comillas dobles, como
por ejemplo Aprendiendo C++

1.1.9. Conversin de tipos de datos
Para transformar el tipo de dato de una variable en otra diferente, es necesario
colocar entre parntesis el nuevo tipo que se desea convertir, de la siguiente
forma:
(tipo de dato) expresin;
Por ejemplo:
float hora=15.25;
int conv;
conv=(int)hora;
El valor obtenido ser:
conv=15

Para hacer conversiones es importante tener en cuenta el tamao de los tipos de
datos. As por ejemplo al convertir un long en un int, el compilador cortar los 32
bits superiores del long (de 64 bits), de manera que encajen en los 32 bits del int,
en este proceso puede perderse informacin til.
Por ello hay que tener presente en las conversiones que el tipo destino siempre
debe ser igual o mayor al tipo a convertir.

1.1.10. Expresin
Es una combinacin de operadores, operandos, funciones especiales, parntesis,
entre otros, que se forman para representar las operaciones aritmticas,
relacionales y lgicas que se utilizar en un programa. Por ejemplo:

x + 5 - ( y * 9)

1.1.11. Operandos y Operadores
Los operandos se refieren a las variables, constantes, llamadas a mtodos sobre los
cuales actan los operadores.
Lenguaje de Programacin I - Unidad I Yuliana Juregui y otros

10
Los operadores son los smbolos que se utilizan para representar una operacin
determinada que se va a realizar en un programa.
Los operadores se clasifican:
Aritmticos
Relacinales
Lgicos
A nivel de bits
De asignacin
Condicional
Obviamos el operador de bits, ya que se utiliza con muy poca frecuencia.

1.1.11.1. Operadores Aritmticos y expresin aritmtica
Operadores aritmticos
Permite la realizacin de operaciones matemticas con los valores de las
variables y constantes. Se representa por los smbolos de: +, -, *, /, %, los
cuales se usan para efectuar operaciones de suma, resta, multiplicacin,
divisin y residuo de una divisin respectivamente (Kernighan y Ritchie, 1991).
Expresin aritmtica
Es una combinacin de operadores aritmticos y operandos numricos que
producen un resultado numrico.

Operador
Aritmtico
Significado Expresin Aritmtica
(a = 8, b = 3)
Resultado
+ Suma a + b 11
- Resta a b 5
* Multiplicacin a * b 24
/ Divisin a / b 2
% Resto de una divisin a % b 2
Tabla 1.9. Operadores Aritmticos
Cuando en una operacin aritmtica los operandos son de tipos diferentes, ambos
son convertidos al tipo de operando de precisin ms alta. Por ejemplo:
int x = 2;
double y = 3.0, suma;
suma = x + y;

El valor obtenido ser:
suma = 5.0
En una asignacin, el resultado obtenido en una operacin aritmtica es convertido
al tipo de variable que almacena dicho resultado. Por ejemplo:
int x = 10, y = 4, z;
z=x/y;

El valor obtenido ser:
z = 2
Lenguaje de Programacin I - Unidad I Yuliana Juregui y otros

11
Los operadores +, -, *, / son obvios como operan, pero el operador % necesita una
explicacin adicional. El operador % devuelve el resto de una operacin de divisin,
los dos operandos deben de ser enteros.
Donde:
Dividendo = (divisor * cociente) + residuo

Asi tenemos:
13 % 3 = 1, y 13 / 3 = 4, donde 13 = 3 * 4 + 1.

Por ejemplo:
int x = 12, y = 14, p, q;
p = x % 13;
q = y % 13;

Los valores obtenidos sern:
p = 12
q = 1

1.1.11.2. Operadores relacionales y expresin relacional
Operadores relacionales
Se representa por los smbolos de >, >=, <, >=, = =, != los cuales se utilizan
para comparar valores que determinan su igualdad o ordenacin entre dos
operandos (Kernighan y Ritchie, 1991).

Expresin relacional
Es una combinacin de operadores y operandos relacionales que producen un
resultado booleano.
Los operadores de ordenamiento (>, >=, <, <=) pueden ser aplicados a los
tipos numricos y al tipo char. No se puede aplicar al tipo de dato boolean, ya
que true > false no tiene sentido.
En cambio, los operadores de igualdad (==) o desigualdad (!=) pueden actuar
sobre cualquier tipo de dato.

Operador
Relacional
Significado
Expresin Relacional
(a = 3,b = 2)
Resultado de la
expresin relacional
> Mayor que a > b true
> = Mayor o igual que a >= b true
< Menor que a < b false
< = Menor o igual que a <= b false
= = Igual a a + b == 5 true
!= Distinto de a ! = b true
Tabla 1.10. Operadores Relacionales

Por ejemplo:

int a = 3, b = 2;
bool p, q;
p = a>b;
q = (a == b);
Lenguaje de Programacin I - Unidad I Yuliana Juregui y otros

12

Los valores obtenidos sern:
p = 1
q = 0

Donde 1 significa true y 0 false

1.1.11.3. Operadores lgicos o booleanos y expresin lgica
Operadores lgicos
Se representa por los smbolos &&, || y !, los cuales representan a los
operadores and, or y not respectivamente. Se utiliza para hacer operaciones de
tipo lgico.

Variables Operador
x y x && y x || y ! x
true true true true false
true false false true false
false true false true true
false false false false true
Tabla 1.11. Operadores Lgicos
As se observa en la tabla que el resultado de una operacin lgica and (&&)
ser cierto solo si los dos operandos son ciertos, mientras que el resultado de
una operacin lgica or (||) ser cierto si alguno de los dos operandos es
cierto o ambos a la vez, el operador lgica not (!) niega el operando,
obtenindose true si el operando es falso.

Expresin lgica
Una expresin lgica es una combinacin de variables o constantes unidas
mediante operadores lgicos y operadores relacionales, que producen un
resultado booleano. Las expresiones lgicas son ampliamente utilizadas en las
estructuras selectivas y las estructuras repetitivas.
Por ejemplo, si tenemos: a = 1, b = 2, c = 3, d = 3 se obtendr los siguientes
valores

Expresin lgica Interpretacin Valor
(a<b) && (b<c)
(a<b) && (c= =d)
(a>b) || (b= =c)
cierto
cierto
falso
true
true
false
Tabla 1.12. Expresin lgica
Por ejemplo:

int a = 1, b = 2, c = 3, d =3;
bool p, q;
p = (a<b) && (b<c);
q = (a>b) || (b==c);

Los valores obtenidos sern:
p = 1
Lenguaje de Programacin I - Unidad I Yuliana Juregui y otros

13
q = 0

1.1.11.4. Operadores unarios
Se aplican a un solo operando y son los siguientes: +, - , ++, --

a) Los operadores + y
Estos operadores seleccionan el signo del operando, siendo el ms utilizado el
menos (-) unario, empleado para cambiar el signo del operando.
Por ejemplo:
4 - 123 - 0.2 -(a + b) -2*(a+b)

b) Operador de incremento (++) y disminucin (- -)
El operador ++ y - aumenta y disminuye a una variable en una unidad. Se utiliza
para realizar asignaciones de manera ms corta (W. Kernighan, Brian y M. Ritchie,
Dennis, 1991).
Estos operadores se usan en forma de prefijo (++variable) o sufijo (variable++). Si
se usa en forma de prefijo se suma (o se resta) 1 a la variable y luego se usa el
nuevo valor en la expresin. Si se usa en forma de sufijo, primero se utiliza la
variable en la expresin y luego se suma (o se resta) 1 a la variable.

Operador sintaxis equivalente Significado
Prefijo ++x x = x + 1 incrementa antes de la asignacin
Sufijo x++ x = x + 1 incrementa despus de la asignacin
Prefijo --x x = x - 1 disminuye antes de la asignacin
Sufijo x-- x = x - 1 disminuye despus de la asignacin
Tabla 1.13. Operadores de Incremento y Disminucin

Por ejemplo:
int a = 5, b, c=8, d;
b = a++; // primero b = 5 y luego a = a + 1 = 6
d = ++c; // primero d = 9 y luego c = c + 1 = 9

Los valores obtenidos sern:
b = 5
a = 6
d = 9
c = 9

1.1.11.5. Operador de asignacin
Se representa por el smbolo =. Se utiliza para:
Asignar un valor
Asignar el resultado de una expresin
Asignar una variable a otra variable
Efectuar asignaciones mltiples.
Lenguaje de Programacin I - Unidad I Yuliana Juregui y otros

14
Ejemplos:
i = 4; // asigna el valor constante 4 a la variable i.
k = a + b; // asigna la suma de a+b a la variable k .
b = c; // asigna el valor de la variable c a la variable b.
x = y = z = 10; // asigna 10 a las variables x, y, z.
Se tiene que tener en cuenta que debe existir compatibilidad con el tipo de datos
entre ambos operandos ya que en caso contrario ocurrir un error de compilacin.
La expresin aritmtica x = x + 3, se puede reescribir de la siguiente manera
x+=3. Esta expresin tiene la ventaja de generar menos instruccin de mquina.
En la siguiente tabla se muestra las equivalencias de las asignaciones de
expresiones aritmticas.

Operador
Expresin
aritmtica
Equivalencia Efecto
+ i = i + 3 i += 3 Suma y asigna
- f = f 1 f - = 1 Resta y asigna
* x = x * 9 x * = 9 Multiplica y asigna
/ x = x / 4 x / = 4 Divide y asigna
% x = x % 2 x % = 2 Toma el resto y asigna
Tabla 1.14. Equivalencias de las asignaciones de expresiones aritmticas

1.1.11.6. Operador condicional (?:)
Tambin conocido como operador ternario (requiere de tres operandos) y sirve para
tomar decisiones, devolviendo uno de dos valores segn el resultado de una
expresin lgica.
El operador condicional se escribe de la siguiente forma:

identificador = (Expresin_lgica) ? sentencia1 : sentencia2;
Funcionamiento:
Cuando el operador condicional inicia su ejecucin, suceden los siguientes pasos:
1. Se evala expresin_lgica, obtenindose un resultado booleano.
2. Si este resultado es true (verdadero), se ejecuta la sentencia1.
3. Si este resultado es false (falso), se ejecuta la sentencia2

Por ejemplo:

int mayor, a = 2, b = 3;
mayor = (a>b) ? a : b;

El valor obtenido ser:
mayor = 3

1.1.12. Precedencia de operadores
Precedencia de operadores es la prioridad que tiene un operador de ser usado antes
que otro cuando es evaluada una sentencia en un programa por el compilador.
Por ejemplo: 2 + 3 * 10
Lenguaje de Programacin I - Unidad I Yuliana Juregui y otros

15
El operador de multiplicacin tiene mayor prioridad que la suma, por lo cual el
compilador evaluar primero la multiplicacin 3 * 10 y a continuacin la suma
obteniendo como resultado 32.
Los operadores con la misma prioridad se evalan de izquierda a derecha.
Por ejemplo: 2 * 3 8 / 4
El operador de multiplicacin tiene igual prioridad que la divisin, por lo cual el
compilador evaluar primero la multiplicacin 2 * 3, y a continuacin la divisin
obtenindose 6 2 dando como resultado 4. El orden de prioridad de los
operadores se muestra en la siguiente tabla de la ms alta hasta la ms baja.

Operadores Descripcin Prioridad
Sufijo ( ) [ ] Mxima
Unarios ++ -- + -
Multiplicadores * / %
Suma / resta + -
Desplazamiento << >> >>>
Relacionales > >= < <= =
Igualdad == !=
Bitwise and &
Bitwise inclusive or ^
Bitwise inclusive or |
And logico &&
Or logico ||
Condicional ?:
Asignacin = += -= *= /= %= ^= Mnima
Tabla 1.15. Precedencia de Operadores

1.1.12.1. El uso de parntesis
Los parntesis se utilizan para cambiar el orden de precedencia, ya que las
operaciones encerradas entre parntesis se evalan primero.
Por ejemplo:
x = a + b / 2
x = (a + b) / 2
En la primera expresin, debido a la prioridad en primer lugar se divide b entre 2, y
despus se suma el valor de a, esta expresin es distinta cuando se utilizan
parntesis, primero se suma a + b y luego se divide entre dos.
Cuando en una expresin contiene subexpresiones que se encuentran anidadas por
parntesis, primero se evalan las subexpresiones anidadas en el nivel ms interno
luego el siguiente nivel ms interno y as sucesivamente.
Por ejemplo:
8 + ( 6 ( 8 3 ) + 2)
Primero efectuamos el parntesis ms interno (8 3) obteniendo 5 como resultado,
reemplazamos obtenemos 8 + ( 6 5 + 2)
Efectuamos el parntesis ya que tiene mayor prioridad que la suma obteniendo 3,
reemplazando tenemos 8 + (3), luego efectuamos la suma obteniendo como
resultado 11.
Lenguaje de Programacin I - Unidad I Yuliana Juregui y otros

16
1.1.13. Entrada y Salida estndar en C++
Un programa en C++ puede realizar operaciones de entrada y salida de varias
formas. Un flujo nos permite realizar operaciones de entrada y salida del programa
hacia o desde distintos tipos de dispositivos.

1.1.13.1. Salidas con cout
El cout es un flujo de salida conectado a la pantalla, por lo que permite enviar a
este dispositivo los valores de una variable o de un mensaje.

Ejemplo Comentario
cout<<suma;

visualiza en la pantalla el valor de la
variable suma
cout<<a<<b<<c;

Si se imprime ms de una variable es
necesario separarlas por el operador <<
cout << El factorial << fact;

Para visualizar mensajes es necesario
usar comillas ( );
Tabla 1.16. Ejemplos del uso del cout
El doble smbolo << (colocar en) se conoce como operador de insercin.
1.1.13.2. Entrada con cin
El cin es un flujo de entrada conectado al teclado, por lo que permite introducir
datos a un programa.

Ejemplo Comentario
cin>>nro;

Lee un dato introducido por el teclado y lo
almacena en la variable nro.
cin>>a>>b>>c;

Si se lee ms de una variable es necesario
separarlas por el operador >>
Tabla 1.17. Ejemplos del uso del cin
El doble smbolo << (obtener de) se conoce como operador de extraccin.

1.1.14. Mi primer programa
Sumar dos nmeros enteros










// Mi primer programa. Sumar dos nmeros enteros
#include <iostream.h>
void main()
{
int nro1, nro2, suma;
cout<< Ingrese 2 nmeros: ;
cin>>nro1>>nro2;
suma = nro1 + nro2;
cout<<La suma de ambos numeros es: << suma;
cout<<endl;
}
Lenguaje de Programacin I - Unidad I Yuliana Juregui y otros

17
Descripcin del programa
La lnea:
// Mi primer programa. Sumar dos nmeros enteros
Es un comentario de una lnea.
La lnea:
#include <iostream.h>
Es una directiva que incluye el archivo iostream.h, que contiene las
definiciones para entrada/salida de datos.
La lnea:
void main( )
Todos los programas en C++ comienzan su ejecucin llamando a la funcin
main(). Todas las variables y cuerpo del programa deben estar incluidos entre
llaves { y }.
La lnea:
int nro1, nro2, suma;
Declara las variables nro1, nro2 y suma de tipo entero (int).
La lnea:
cout<< Ingrese 2 nmeros: ;
Visualiza en la pantalla el texto Ingrese 2 nmeros: .
La lnea:
cin>>nro1>>nro2;
Almacena en las variable nro1 y nro2, los valores introducidos por el teclado.
La lnea:
suma = nro1 + nro2;
Se suman los nmeros nro1 y nro2 utilizando el operador +. Luego este
resultado es asignado a la variable suma utilizando el operador =..
La lnea:
cout<<La suma de ambos nmeros es: << suma;
Visualiza en la pantalla el texto: La suma de ambos nmeros es: y el valor de
la variable suma.
La lnea:
cout<<endl;
Es equivalente a \n, es decir indica salto de lnea.

1.1.15. Funciones matemticas ms importantes en C/C++:
Las funciones matemticas se encuentran definidas en la directiva math.h. El uso
de estas funciones hace necesario que se incluya esta directiva al principio del
programa: #include <math.h>.
Algunas de estas funciones son:

Funcin Descripcin
acos(x) devuelve el arco del coseno de x
asin(x) devuelve el arco del seno de x
atan(x) devuelve el arco tangente de x
cos(x) devuelve el coseno de x en radianes
sin(x) devuelve el seno de x en radianes
tan(x) devuelve la tangente de x en radianes
cosh(x) devuelve el coseno hiperblico de x
sinh(x) devuelve el seno hiperblico de x
tanh(x) devuelve la tangente hiperblica de x
hypot(x,y)
devuelve la longitud de la hipotenusa de un tringulo donde x e y son
los catetos
exp(n) devuelve e (2,7182818) elevado a la n.
Lenguaje de Programacin I - Unidad I Yuliana Juregui y otros

18
pow(b,n) devuelve b elevado a la n
log(n) devuelve el logaritmo natural de x
logio(x) devuelve el algoritmo decimal de x
sqrt(x) devuelve la raz cuadrada de x
ceil(x) devuelve el menor entero de los enteros mayores a x
floor(x) devuelve el mayor entero de los enteros menores a x
abs(x) devuelve el valor absoluto de x
labs(x) igual al anterior pero x est dado en entero longint
fabs(x) igual al anterior pero x est dado en double
modf(n, &x) devuelve la parte fraccionaria de n y la parte entera la guarda en x.
rand( ) devuelve un entero en el rango comprendido entre 0 y 32767 (stdio.h)
srand(exp) produce la generacin aleatoria del nmero.
randomize( )
utiliza el reloj del computador para generar el nmero aleatorio (time.h,
stdlib.h)
random(n)
devuelve un nmero entero aleatorio dentro del rango de 0 a n-1.
(stdlib.h)
Tabla 1.18. Funciones matemticas

1.1.16. Ejecucin de un programa C++
Los programas en C++ pueden ser desarrollados en modo consola y a travs de
una interfaz grfica. Los ejemplos de este libro se desarrollan en el modo consola,
los cuales pueden ejercutarse sin ningn problema en la mayora de los
compiladores, como: Dev C++, Visual Studio C++, C++ Builder, etc.
La diferencia existente entre la estructura de un programa para un compilador u
otro es mnima. As, por ejemplo, en el Dev C++ un programa tendr la siguiente
forma:

#include <iostream.h>
#include <stdlib.h>
int main()
{

system("PAUSE");
return 0;
}

Y en un compilador Visual Studio C++ ser :


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

}

Existen compiladores de C++ de distribucin gratuita y otros bajo licencia. Por
ejemplo, para ejecutar un programa en Dev C++ hacemos los siguiente:
1. Escribimos el programa en la zona de programacin.


Lenguaje de Programacin I - Unidad I Yuliana Juregui y otros

19













Figura 1.1. Entorno Dev-C++
2. Grabamos el programa
3. Compilamos , mostrndose la siguiente ventana, donde se indica la
cantidad de errores que pudiera tener el programa. Si no existe ningn error
(Total errors), se presiona el botn Execute.






Figura 1.2. Ventana de informacin del Dev-C++

Y a continuacin se muestra la siguiente ventana.

Figura 1.3. Consola del Dev-C++
Si existieran errores, se presiona el botn Continue y se revisan los errores
que se muestran en la zona de mensajes de error.
Opcionalmente, usted puede ejecutar sin haber antes compilado y el Dev
C++ compilar de forma automtica el programa.
Zona de
programacin
Compilador
Ejecutar
Zona de
mensajes de
error
Lenguaje de Programacin I - Unidad I Yuliana Juregui y otros

20
Leccin 2

Programacin estructurada
La programacin estructurada es una tcnica utilizada para escribir programas de
forma clara, para esto, utiliza nicamente tres estructuras: secuencial, selectiva y
repetitiva. Estas estructuras se encuentran disponibles en los diferentes lenguajes
de programacin.
Estas tcnicas aumentan considerablemente la productividad de un programa
reduciendo el tiempo de escritura, verificacin, depuracin y mantenimiento de los
mismos. Es ms sencillo entender la codificacin de un programa que se ha
desarrollado utilizando la programacin estructurada.
La programacin estructurada se basa en el diseo descendente, esto es, se
plantea una operacin como un todo y se divide en segmentos ms sencillos o de
menor complejidad, facilitando as el desarrollo de un programa. Una vez terminado
todos los segmentos del programa se procede a unirlos (Joyanes et al., 2003).
La programacin estructurada logra minimizar la complejidad y errores de los
programas.
La principal desventaja de la programacin estructurada es que en el momento de
hacerse demasiado grande el programa puede resultar bastante problemtico su
manejo, ya que todo se constituye en un solo bloque (Lpez, 2003).

2.1. Estructura secuencial
Se representa por una sentencia o un conjunto de sentencias (a la que en adelante
llamaremos accin) que se ejecutan una a continuacin de otra a modo de
secuencia. Las sentencias se suceden de tal modo que la salida de una es la
entrada de la siguiente y as sucesivamente hasta finalizar el programa (Juregui y
Arriola, 2007).

2.1.1. Ejercicios resueltos
Ejemplo 01
Elaborar un programa para calcular el rea de un rectngulo, donde la base y la
altura sern ingresadas. La frmula es:

area = base * altura

Variables a utilizar en el programa:
base base del rectngulo
altura altura del rectngulo
area area del rectngulo

Pseudocdigo:
Inicio
// Definir variables
entero: base, altura, area
// Lectura de datos
Escribir (Ingrese la base y la altura)
Leer (base, altura)
// Calculo del area
Lenguaje de Programacin I - Unidad I Yuliana Juregui y otros

21
area base * altura
// Salida de resultados
Escribir (El rea del rectngulo es ,area)
Fin

Cdigo fuente:
#include <iostream.h>
void main()
{
// Definir variables
int base, altura, area;
// Lectura de datos
cout<<Ingresar la base y la altura: ;
cin>>base>>altura;
// Calculo del area
area = base * altura;
// Salida de resultados
cout<<El area del rectangulo es: <<area;
cout<<endl;
}

Explicacin
En nuestro ejemplo se ha utilizado los siguientes comentarios:
// Definir variables
// Lectura de datos
// Calculo del rea
// Salida de resultados
La lnea:
#include <iostream.h>
# es una directiva, indica que se incluya el archivo iostream.h, que contiene
las definiciones para entrada/salida de datos.
La lnea:
void main( )
Todos los programas en C++ comienzan su ejecucin llamando a la funcin
main(). Todas las variables y cuerpo del programa deben estar incluidos entre
llaves { y }.
La lnea:
int base, altura, area;
Declara las variables base, altura y area de tipo entero (int).
La lnea:
cout<<Ingresar la base y la altura: ;
Visualiza en la pantalla el texto Ingresar la base y la altura: .
La lnea:
cin>>base>>altura;
Almacena en las variables base y altura, los valores introducidos por el teclado.
La lnea:
area = base * altura;
Se multiplica la base y la altura utilizando el operador * y se asigna este
resultado a la variable area a travs del smbolo igual (=).
La lnea:
cout<<El area del rectangulo es: <<area;
Lenguaje de Programacin I - Unidad I Yuliana Juregui y otros

22
Visualiza en la pantalla el texto: El area del rectangulo es: y el valor de la
variable area.
La lnea:
cout<<endl;
Es equivalente a \n, es decir indica salto de lnea.

Ejemplo 02
Elaborar un programa que calcule el rea de un tringulo conociendo sus lados. La
frmula es:
c) - b)(p - a)(p - p(p area=

Donde p es el semipermetro del tringulo.
Variables a utilizar en el programa:
a primer lado
b segundo lado
c tercer lado
p semiperimetro
area area del triangulo

Cdigo fuente:
#include <iostream.h>
#include <math.h>
int main()
{
double a, b, c, p, area;
cout<<Ingresar lados: ;
cin>>a>>b>>c;
p = (a+b+c)/2;
area = sqrt(p*(p-a)*(p-b)*(p-c));
cout<<El area es <<area<<endl;
}

Ejemplo 03
Teniendo como datos de entrada el radio y la altura de un cilindro, elaborar un
programa que calcule el rea lateral y el volumen del mismo.

Area lateral = 2 radio * altura
Volumen = radio
2
* altura

Variables a utilizar en el programa:
radio radio del cilindro
altura altura del cilindro
area area lateral del cilindro
vol volumen del cilindro

Cdigo fuente:
#include <iostream.h>
#include <math.h>
#define pi 3.1416
void main()
{
double radio, altura, area, vol;
cout<<Ingresar radio: ;
cin>>radio;
cout<<Ingresar altura: ;
Lenguaje de Programacin I - Unidad I Yuliana Juregui y otros

23
cin>>altura;
area = pi * radio * altura;
vol = pi * pow(radio, 2) * altura;
cout<<El area lateral es <<area<<endl
<<El volumen es <<vol<<endl;
}

Ejemplo 04
Escriba un programa para determinar el producto de las cifras de un nmero entero
positivo de 3 cifras.
Por ejemplo, para sumar las cifras del nmero 257 se tiene:

2 * 5 * 7 = 70
Para obtener cada cifra del nmero, ser necesario realizar divisiones sucesivas
entre 10.

Variables a utilizar en el programa:
nro nmero ingresado de tres dgitos
prod producto de los dgitos del nmero
centenas centenas del nmero
decenas decenas del nmero
unidades unidades del nmero

Cdigo fuente:
#include <iostream.h>
void main()
{
// Declaracin de variables
int nro, unidades, decenas, centenas, prod;
// Lectura de datos
cout<<Ingrese numero: ;
cin>>nro;
// Proceso de clculo
unidades = nro % 10;
nro = nro /10;
decenas = nro % 10 ;
nro = nro /10;
centenas = nro % 10;
prod = unidades * decenas * centenas;
// Salida de resultados
cout<<El producto de los digitos es: <<suma<<endl;
}

Ejemplo 05
En una tienda se ha puesto en oferta la venta de cierto tipo de producto ofreciendo
un descuento fijo del 15% del monto de la compra. Elabore un programa que
determine el monto del descuento y el monto a pagar por la compra de cierta
cantidad de unidades del producto.

Variables a utilizar en el programa:
cantidad cantidad de productos a comprar
precio precio del producto
desc monto descontado
compra monto de la compra
montoAPagar monto a pagar

Lenguaje de Programacin I - Unidad I Yuliana Juregui y otros

24
Cdigo fuente:
#include <iostream.h>
void main()
{
// Definir variables
int cantidad;
double precio, desc, compra, montoAPagar;
// Lectura de datos
cout<<Ingresar precio del producto:;
cin>>precio;
cout<<Ingresar cantidad: ;
cin>>cantidad;
// Proceso de calculo
compra = precio * cantidad;
desc = 0.15 * compra;
montoAPagar = compra - desc;
// Salida de resultados
cout<<El monto del descuento es <<desc<<endl
<<El monto a pagar es <<montoAPagar<<endl;
}

Factor de conversin: es la relacion equivalente entre el numerador y
denominador de una fraccin expresada en unidades distintas, dando como
resultado la unidad, este mtodo reemplaza el uso de la regla de tres. Por ejemplo,
el factor de conversin entre horas y minutos es:

1 a igual es que
kilmetro 1
metros 1000
decir a equivale cual lo
metros 1000
kilmetro 1


Para realizar una conversin, se multiplica el valor a convertir por el factor de
conversin adecuado, de manera que simplifique las unidades de partida y se
obtenga el valor en las unidades de que se desea convertir. Por ejemplo, veamos
dos casos:

Calcular el equivalente de 3560 metros en kilmetros, donde 1 kilometro = 1000
metros se tendr:
kilmetros 3.56
metros 1000
kilmetro 1
metros 3560 =
Calcular el equivalente de 18 metros por segundo a kilmetros por hora (1
kilmetro = 1000 metros, 1 hora = 3600 segundos).


/hora kilometros 64.8
hora 1
segundos 3600
metros 1000
kilmetro 1

segundos
metros
18 =

Ejemplo 06
Escriba un programa para convertir una longitud dada en metros a sus equivalentes
en milmetros, centmetros, pulgadas, pies, yarda y kilmetros. Se sabe que:

1 metro = 1000 milmetros
1 metro = 100 centmetros
1 pulgada = 2.54 centmetros
1 pie = 12 pulgadas
1 yarda = 3 pies
1 Kilmetro = 1000 metros
Lenguaje de Programacin I - Unidad I Yuliana Juregui y otros

25

El siguiente cuadro muestra resultados con datos de prueba, para diferentes
valores:

Metros Milmetros Centmetros Pulgadas pies Yardas Kilmetros
5 5000 500 196.85 16.4042 5.46807 0.005
10 10000 1000 393.701 32.8084 10.9361 0.01
20 20000 2000 787.402 65.6168 21.8723 0.02
50 50000 5000 1968.50 164.042 54.6807 0.05
70 70000 7000 2755.91 229.659 76.5529 0.07

Variables a utilizar en el programa:
metros medida ingresada en metros
mili medida en milmetros
cent medida en centmetros
pies medida en pies
pulg medida en pulgadas
yarda medida en yardas
km medida en km

Cdigo fuente:
#include <iostream.h>
void main()
{
// Declaracin de variables
double metros, mili, cent, pies, km, pulg, yarda ;
// Lectura de datos
cout<<Ingresar medida en metros:;
cin>>metros;
// Proceso de clculo: conversiones mtricas
mili = metros*1000;
cent = metros*100 ;
pulg = cent/2.54;
pies = pulg/12;
yarda = pies/3;
km = metros/1000;
// Salida de resultados
cout<<metros<< metros equivale a: <<endl
<<mili<< milimetros<<endl
<<cent<< Centimetros<<endl
<< pulg<< pulgadas<<endl
<<pies<< pies<<endl
<<yarda<< yardas<<endl
<<km<< Kilometros<<endl;
}

Ejemplo 07
Escriba un programa para sumar dos tiempos dados en horas, minutos y segundos.

Por ejemplo:
Tiempo 1 = 8:15:56
Tiempo 2 = 10:58:43




Lenguaje de Programacin I - Unidad I Yuliana Juregui y otros

26

1 1
8 : 15 : 56
10 : 58 : 43
19 74 60 99 60
60 1 60 1
19 : 14 : 39

Para el desarrollo del programa se suman los segundos de los dos tiempos, el
resultado de esta suma se divide entre 60, siendo el residuo de esta divisin el total
de segundos y el cociente se suma a los minutos, de igual forma se realiza la suma
de los minutos, el resultado de esta suma se divide entre 60, siendo el residuo de
la divisin el total de minutos y el cociente se suma a las horas.

Variables a utilizar en el programa:
hor1 horas del primer tiempo
min1 minutos del primer tiempo
seg1 segundos del primer tiempo
hor2 horas del segundo tiempo
min2 minutos del segundo tiempo
seg2 segundos del segundo tiempo
llevaMin minutos que se lleva
llevaHora hora que se lleva
hor horas resultante
min minutos resultante
seg segundos resultante

Cdigo fuente:
#include <iostream.h>
void main()
{
// Declaracin de variables
int hor1, min1, seg1, llevaMin, hor2, min2, seg2, llevaHora, hor, min, seg;
// Lectura de datos
cout<<Ingrese primer tiempo: ;
cin>>hor1>>min1>>seg1;
cout<<Ingrese segundo tiempo: ;
cin>>hor2>>min2>>seg2;
// Determina la cantidad total de segundos entre los dos tiempos
seg =seg1+ seg2;
llevaMin =seg / 60;
seg =seg % 60;
min=llevaMin + min1 + min2;
llevaHora=min / 60;
min=min % 60;
hor=llevaHora + hor1 +hor2;
// Salida de resultados
cout<<La suma de los 2 tiempos es:<<hor<<:<<min<<:<<seg<<endl;
}

2.1.2. Ejercicios Propuestos
1. Escriba un programa para calcular el tiempo, en horas y minutos que emplea un
profesor para calificar un grupo de exmenes. Se tienen tres tipos de examen A,
Lenguaje de Programacin I - Unidad I Yuliana Juregui y otros

27
B, C y el tiempo en minutos requerido para cada tipo son: A = 5 min, B = 7 min
y C = 8 min.
2. Calcular la fuerza de atraccin entre 2 masas, separadas por una distancia
mediante la siguiente formula:
2
distancia
masa2 masa1 G
Fuerza

=
Donde G es la constante de gravitacin universal: G=6.673 * 10
-8
cm
3
/g seg
2
.
3. Una persona tiene 2 recipientes llenos de gasolina cuyas capacidades estn
dadas en galones y pies cbicos, respectivamente. Disee un programa que
determine la cantidad total de gasolina en metros cbicos, pies cbicos y yardas
cbicas. Considere los siguientes factores de conversin:
1 pie cbico = 0.0283 metros cbicos
1 galn = 3.79 litros
1 metro cbico = 1000 litros
1 yarda cbica = 27 pies cbicos
4. Una empresa exportadora de trigo trabaja con 2 proveedores; el primer
proveedor le brinda una cierta cantidad de trigo en gramos y el segundo
proveedor otra cierta cantidad de trigo en libras. Se pide elaborar un programa
que calcule la cantidad total de trigo que obtiene la empresa.
1 libras = 16 onzas
1 onza = 28.35 gramos
1 kilogramo = 1000 gramos
1 tonelada = 1000 kilogramos
5. Escriba un programa que calcule las HH:MM:SS transcurridos entre dos
tiempos. Ambos tiempos vienen dados en el formato HH:MM:SS.
6. Escriba un programa que lea la hora actual del da HH:MM:SS y determine
cuantas horas, minutos y segundos restan para culminar el da.
7. El sueldo neto de un vendedor se calcula como la suma de un sueldo bsico ms
el 12% del monto total que ha vendido. Escribir un programa que determine el
sueldo neto de un vendedor sabiendo que hizo tres ventas en el mes.
8. Calcular el permetro de una circunferencia dado su radio. Luego calcule el
permetro de la misma si se reduce al 50%, y el permetro de la misma si se
reduce al 25% con respecto al resultado anterior.
9. Escriba un programa que lea un nmero de 4 dgitos luego intercambie el
primer digito con el ltimo dgito.
10. Tres personas deciden invertir su dinero para fundar una empresa. Cada una de
ellas invierte una cantidad distinta. Obtener el porcentaje que cada persona
invierte con respecto a la cantidad total invertida.

2.2. Estructura selectiva
Para poder desarrollar aplicaciones, no basta con ejecutar sentencias secuenciales,
tambin resulta esencial tomar decisiones en base a evaluaciones de expresiones
lgicas que nos sealaran el camino alternativo a seguir basado en el resultado de
esas decisiones. El tipo de resultado de una estructura selectiva es lgico
(booleano), es decir true (verdadero) o false (falso). Las estructuras selectivas que
se utilizan para tomar decisiones podemos clasificarlas en: simple, doble y mltiple
(Juregui y Arriola, 2007).
Lenguaje de Programacin I - Unidad I Yuliana Juregui y otros

28
2.2.1. Sentencia if simple: if
Evala una expresin lgica y si su resultado es verdadero, se ejecuta una
sentencia o un grupo de sentencias. Este grupo de sentencias debe de estar dentro
de llaves de apertura y cierre. Su sintaxis es la siguiente:

if(expresin_lgica)
sentencia(s);

Funcionamiento de la sentencia if simple
Cuando la sentencia if inicia su ejecucin, se suceden los siguientes pasos:
a) Se evala expresin_lgica, obtenindose un resultado booleano (true, false).
b) Si este resultado es verdadero, se ejecuta la sentencia o sentencias.
c) Si este resultado es falso termina la sentencia if y la ejecucin del programa
proseguir con la sentencia que sigue a esta estructura.

Por ejemplo si tenemos:

if (promedio>=10.5)
aprobado++;
total++;

Si el resultado de la expresin lgica (promedio>=10.5) es verdadera, se
ejecuta aprobado++ finalizando la estructura if, luego se ejecuta total++;
Si el resultado de la expresin lgica (promedio>=10.5) es falsa, no se ejecuta
la estructura if y solo se ejecuta total++;.
Por ejemplo si tenemos:
if (tipo == b)
{
pago = 60.00;
max = 8;
padic = 8.50,
}
pago = pago + padic;
Si el resultado de la expresin lgica (tipo == b) es verdadera, se ejecuta el
bloque de sentencias entre llaves ({ }) finalizando la estructura if,
{
pago = 60.00;
max = 8;
padic = 8.50,
}
luego se ejecuta la sentencia pago = pago + padic;.
Si el resultado de la expresin lgica (tipo == b) es falsa, no se ejecuta la
estructura if y solo se ejecuta pago = pago + padic;

Ejemplo 01
Escriba un programa que calcula el monto final que se paga por un consumo en un
restaurante, sabiendo que por consumos mayores a S/.100.00 se aplica un
descuento del 20%.


Lenguaje de Programacin I - Unidad I Yuliana Juregui y otros

29
Variables a utilizar en el programa:
consumo monto del consumo
desc descuento
montoFinal monto final a pagar

Pseudocdigo
Inicio
// Definir variables
real: consumo, desc0, montoFinal
// Lectura de datos
Escribir (Ingresar consumo:)
Leer (consumo)
// Calcula el descuento
Si (consumo > 100) entonces
desc 0.20 * consumo
Fin_si
montoFinal consumo desc
Escribir(El total a pagar es , montoFinal)
Fin

Cdigo fuente:
#include <iostream.h>
void main()
{
// Definir e inicializar variables
double consumo, desc =0, montoFinal;
// Lectura de datos
cout<<Ingresar consumo: ;
cin>>consumo;
// Calcula el descuento
if (consumo > 100)
desc = 0.20 * consumo;
montoFinal = consumo - desc;
cout<<El total a pagar es <<montoFinal<<endl;
}


Ejemplo 02
Escriba un programa para hallar el mayor de tres nmeros enteros positivos.

Para la solucin de este ejemplo se utiliza el mtodo del supuesto falso, que
consiste en comparar cada nmero con el valor de la variable mayor la que debe
estar inicializada en cero.

Variables a utilizar en el programa:
nro1 primer nmero
nro2 segundo nmero
nro3 tercer nmero
mayor mayor de tres nmeros

Cdigo fuente:
#include <iostream.h>
void main()
{
// Definir variables
int nro1, nro2, nro3, mayor=0;
Lenguaje de Programacin I - Unidad I Yuliana Juregui y otros

30
// Lectura de datos
cout<<Ingresar tres numeros:";
cin>>nro1>>nro2>>nro3;
// Calcula el mayor de tres nmeros
if (nro1 > mayor)
mayor = nro1;
if (nro2 > mayor)
mayor = nro2;
if (nro3 > mayor)
mayor = nro3;
cout<<El mayor de tres numeros es: <<mayor<<endl;
}


2.2.2. Sentencia if doble: if-else
Se evala la expresin lgica, si este resultado es verdadero se ejecuta la
sentencia1, si el resultado es falso se ejecuta la sentencia2. Nunca se ejecutan
ambas sentencias, si se ejecuta la sentencia1 ya no se ejecuta la sentencia2 y
viceversa. Si sentencia1 o sentencia2 constituye un grupo de sentencias, debe de
estar entre llaves ({ }). Su sintaxis es la siguiente:

if (expresin_lgica)
sentencia1;
else
sentencia2;

Funcionamiento de la sentencia if-else
Cuando la sentencia if-else inicia su ejecucin, se suceden los siguientes pasos:
a) Se evala expresin_lgica, obteniendo un resultado booleano (true, false).
b) Si este resultado es verdadero se ejecuta la sentencia1 y la ejecucin del
programa proseguir con la siguiente sentencia que sigue a esta estructura.
c) Si este resultado es falso, se ejecuta la sentencia2 y la ejecucin del programa
proseguir con la sentencia que sigue a esta estructura.

Por ejemplo si tenemos:

if (a>b)
m = a;
else
m = b;
cout<<m;

Si el resultado de la expresin lgica (a>b) es verdadera, se ejecuta m = a;
finalizando la estructura if-else, luego se ejecuta cout<<m;.
Si el resultado de la expresin lgica (a>b) es falsa, se ejecuta m = b;
finalizando la estructura if-else, luego se ejecuta cout<<m;.

Por ejemplo si tenemos:

if (a>0)
{
p = a*b*c;
cout<<p;
Lenguaje de Programacin I - Unidad I Yuliana Juregui y otros

31
}
else
{
s = a+b+c;
cout<<s;
}
x=s+p;

Si el resultado de la expresin lgica (a>0) es verdadera, se ejecuta el bloque
de sentencias entre llaves ({ }) que se encuentra debajo de la condicin if,
finalizando la estructura if-else,

{
p = a*b*c;
cout<< p;
}
luego se ejecuta la sentencia x=s+p;.

Si el resultado de la expresin lgica (a>0) es falsa, se ejecuta el bloque de
sentencias entre llaves ({ }) que se encuentra debajo de la condicin else,
finalizando la estructura if-else,

{
p = a*b*c;
cout<< p;
}
luego se ejecuta la sentencia x=s+p;.

Ejemplo 03
Escriba un programa para hallar el mayor de dos nmeros.

El siguiente cuadro muestra resultados con datos de prueba:

nro1 nro2 mayor
14 16 16
12 10 12

Variables a utilizar en el programa:
nro1 primer nmero
nro2 segundo nmero
m mayor de dos nmeros

Pseudocdigo:
Inicio
// Definir variables
entero: nro1, nro2, mayor
// Lectura de datos
Escribir (Ingresar dos nmeros: )
Leer (nro1, nro2)
// Calcula el mayor de dos nmeros
Si (nro1 > nro2) entonces
mayor nro1
Sino
mayor nro2
Fin_si
Escribir ("El mayor de dos nmeros es:", mayor)
Lenguaje de Programacin I - Unidad I Yuliana Juregui y otros

32
Fin

Cdigo fuente:
#include <iostream.h>
void main()
{
// Declarar e inicializar variables
int nro1, nro2, mayor;
// Lectura de datos
cout<<Ingresar dos numeros: ;
cin>>nro1>> nro2;
// Calcula el mayor de dos nmeros
if (nro1 > nro2)
mayor = nro1;
else
mayor = nro2;
cout<<El mayor de dos numeros es: <<mayor<<endl;
}

Ejemplo 04
Escriba un programa que calcule el total a pagar por la compra de camisas. Si se
compran tres camisas o ms se aplica un descuento del 20% sobre el total de la
compra, si no se aplica un descuento del 10%.

Variables a utilizar en el programa:
precio precio de cada camisa
cant cantidad a comprar
compra monto de la compra
desc descuento
total total a pagar

Cdigo fuente:
#include <iostream.h>
void main()
{
// Definir variables
int cant;
double precio, compra, desc, total;
// Lectura de datos
cout<<Ingresar precio unitario:;
cin>>precio;
cout<<Ingresar cantidad de camisas:;
cin>>cant;
compra = cant * precio;
if (cant >=3)
desc = 0.20 * compra;
else
desc = 0.10 * compra;
total = compra - desc;
cout<<El total a pagar es <<total<<endl;
}

Ejemplo 05
Escriba un programa que lea tres notas de un alumno: examen parcial, examen
final y promedio de prcticas. Imprima el promedio y el mensaje aprobado en caso
Lenguaje de Programacin I - Unidad I Yuliana Juregui y otros

33
de que el promedio es mayor o igual que 10.5, si su promedio es menor de 10.5
imprimir el promedio y el mensaje desaprobado.

Variables a utilizar en el programa:
exPar examen parcial
exFin examen final
promP promedio de prcticas
promedio promedio final

Cdigo fuente:
#include <iostream.h>
void main()
{
// Definir variables
double exPar, exFin, promP, promedio;
// Lectura de datos
cout<<Ingrese tres notas: ";
cin>>exPar>>exFin>>promP;
// Calcula promedio
promedio = (exPar + exFin + promP) / 3;
if (promedio >= 10.5)
cout<<promedio<< aprobado;
else
cout<<promedio<< desaprobado;
cout<<endl;
}

Ejemplo 06
Escriba un programa que determine si un nmero es mltiplo de otro. Un nmero a
es mltiplo de otro nmero b, cuando el residuo de la divisin de a entre b es cero.

En la siguiente tabla se muestra resultados para diferentes valores de las variables:

nro1 nro2 r = nro1 Mod nro2 Mensaje a mostrar
20 5 0 20 es mltiplo de 5
18 6 0 18 es mltiplo de 6
9 2 1 9 no es mltiplo de 2

Variables a utilizar en el programa:
nro1 primer nmero
nro2 segundo nmero
r residuo de dos nmeros

Cdigo fuente:
#include <iostream.h>
void main()
{
// Definir variables
int nro1, nro2, r;
// Lectura de datos
cout<<Ingresar dos numeros:";
cin>>nro1>>nro2;
// Calcular mltiplo
r = nro1 % nro2;
if (r == 0)
cout<<nro1<< es multiplo de <<nro2;
Lenguaje de Programacin I - Unidad I Yuliana Juregui y otros

34
else
cout<<nro1<< no es multiplo de <<nro2
cout<<endl;
}

Ejemplo 07
Escriba un programa que determine si un ao es bisiesto. Un ao es bisiesto si es
mltiplo de 4 y no de 100 o cuando es mltiplo de 400.

Variables a utilizar en el programa:
a ao

Cdigo fuente:
#include <iostream.h>
void main()
{
// Definir variable
int a;
// Lectura de datos
cout<<Ingresar ao:";
cin>>a;
if ((a % 4 == 0) && (a % 100 != 0) || (a % 400 == 0))
cout<<El ao es bisiesto";
else
cout<<El ao no es bisiesto";
cout<<endl;
}

Explicacin:

Un ao es bisiesto si es mltiplo de 4. Para esto tendremos que verificar si el
residuo de la divisin del ao entre 4 es igual a cero.
a % 4 == 0
Adems, se sabe que no debe ser mltiplo de 100 para lo cual escribimos
a % 100 != 0
Sea mltiplo de 400.
a % 400 == 0
Entonces un ao es bisiesto si mltiplo de 4, que no debe ser multiplo de 100 o
cuando es mltiplo de 400

((a % 4 == 0 ) && (a % 100 != 0) || (a % 400 == 0))

2.2.3. Sentencias mltiple
2.2.3.1. Sentencia if anidado: if- else -if
Un if anidado es una sentencia if que esta contenido dentro de otro if o else.
Cuando se anidan if, cada sentencia else siempre se corresponde a la sentencia if
ms prxima dentro del mismo bloque. Su sintaxis es la siguiente:

if (expresin_lgica1)
sentencia1;
else if(expresin_lgica2)
sentencia2;
else if(expresin_lgica3)
Lenguaje de Programacin I - Unidad I Yuliana Juregui y otros

35
sentencia3;
.
.
.
else
sentenciaN;

Funcionamiento Sentencia if- else -if
Cuando la sentencia if mltiple inicia su ejecucin, se suceden los siguientes pasos:
a) Se evala la expresin_lgica1 obteniendo un resultado booleano (true, false),
si el resultado es verdadero, se ejecuta la sentencia1, finalizando la ejecucin
del if_anidado, luego se proseguir con la sentencia que sigue a esta estructura.
b) Si el resultado de la expresin_lgica1 es falso, se evala la expresin_lgica2,
si el resultado es verdadero, se ejecuta la sentencia2, finalizando la ejecucin
del if_anidado, luego se proseguir con la sentencia que sigue a esta estructura.
c) Si el resultado de la expresin_lgica2 es falso, se evala la expresin_lgica3,
si el resultado es verdadero, se ejecuta la sentencia3, finalizando la ejecucin
del if_anidado, luego se proseguir con la sentencia que sigue a esta estructura.
d) Y asi sucesivamente se evaluar las expresiones lgicas mientras se obtenga un
resultado falso.
e) Si ninguna de las expresiones lgicas resulta ser verdadera se ejecuta la
sentenciaN, luego se proseguir con la sentencia que sigue a esta estructura.

Por ejemplo si tenemos:

if (cat == a)
aum = 0.25*sueldo;
else if (cat == b)
aum = 0.20*sueldo;
else if (cat == c)
aum = 0.15*sueldo;
else
aum=0;
pago = pago+ aum;

Se compara el contenido de la variable cat con el caracter a, si el resultado es
verdadero se ejecuta aum=0.25*sueldo;, luego se ejecuta la sentencia pago =
pago+ aum;
Si el resultado de esta comparacin es falso se compara el contenido de la
variable cat con el caracter b, si el resultado es verdadero se ejecuta
aum=0.20*sueldo;, luego se ejecuta la sentencia pago = pago+ aum;
Si el resultado de esta comparacin es falso se compara el contenido de la
variable cat con el caracter c, si el resultado es verdadero se ejecuta
aum=0.15*sueldo;, luego se ejecuta la sentencia pago = pago+ aum;
Si el resultado de esta comparacin es falso se ejecuta aum=0;, luego se
ejecuta la sentencia pago = pago+ aum;

Ejemplo 08
Elaborar un programa que imprima el mensaje Precio Econmico cuando un
producto cuesta menos de 500 soles, Precio Moderado si cuesta entre 501 a 1500
soles y Precio Elevado cuando el producto cuesta ms de 1500 soles,

Variables a utilizar en el programa:
precio precio del producto

Pseudocdigo:
Lenguaje de Programacin I - Unidad I Yuliana Juregui y otros

36
Inicio
// Definir variables
entero: precio
cadena: mensa
// Lectura de datos
Escribir (Ingresar precio:)
Leer (precio)
//Proceso
Si (precio < 500) entonces
Escribir(Precio econmico)
Sino Si (precio<=1500) entonces
Escribir(Precio moderado)
Sino
Escribir(Precio elevado)
Fin_si
Fin_si
Fin

Cdigo fuente:
#include <iostream.h>
void main()
{
// Definir variables
int precio;
// Lectura de datos
cout<<Ingrese precio: ;
cin>>precio;
//Proceso
if (precio < 500)
cout<<Precio econmico;
else if (precio>=501 && precio<=1500)
cout<<Precio moderado";
else
cout<<Precio elevado;
cout<<endl;
}

Ejemplo 09
Escriba un programa que calcula la calificacin de un alumno en base a 3 notas,
validar el ingreso de notas entre 0 y 100, considerar la siguiente tabla:

Promedio Calificacin
90 100
80 89
70 79
50 69
0 49
A
B
C
D
E

Variables a utilizar en el programa:
nt1 nota 1
nt2 nota 2
nt3 nota 3
caft carcter de calificacin
prom promedio


Lenguaje de Programacin I - Unidad I Yuliana Juregui y otros

37
Cdigo fuente:
#include <iostream.h>
void main()
{
// Definir variables
int nt1, nt2, nt3, prom;
char calf;
// Lectura de datos
cout<<Ingresar tres notas:";
cin>>nt1>>nt2>>nt3;
if ((nt1 >= 0 && nt1 <= 100) && (nt2 >= 0 && nt2 <= 100) &&
(nt3 >= 0 && nt3 <= 100))
{
prom= (nt1 + nt2 + nt3) /3;
if (prom > 89)
calf = A;
else if (prom > 79)
calf = B;
else if (prom > 69)
calf = C;
else if (prom > 49)
calf = D;
else
calf = E;
cout<<La calificacion es: <<calf<<endl;
}
else
cout<<Ingreso incorrecto<<endl;
}

Ejemplo 10
Una clnica ofrece tres tipos de seguro:

Tipo Mximo De consultas Pago mensual (S/.)
A
B
C
8
6
4
80.00
60.00
40.00

Si el cliente realiza ms consultas de las indicadas en el cuadro anterior tendr que
pagar S/.8.50 por cada consulta adicional si el seguro es de tipo A, S/.6.50 por
cada consulta adicional si el seguro es de tipo B, y S/.5.00 mensuales por cada
consulta adicional si el seguro es de tipo C. Calcular el monto que paga un cliente
durante un mes.

Variables a utilizar en el programa:
tipo tipo de seguro
cant cantidad de consultas realizadas en el mes
max maximo nmero de consultas
padic pago adicional
pago pago mensual

Cdigo fuente:
#include <iostream.h>
#include <ctype.h>
void main()
{
Lenguaje de Programacin I - Unidad I Yuliana Juregui y otros

38
// Definir variables
int cant, max;
double pago = 0, padic;
char tipo;
// Lectura de datos
cout<<Ingresar tipo de seguro: ;
cin>>tipo;
cout<<Ingresar cantidad de consultas: ;
cin>>cant;
tipo=toupper(tipo);
if (tipo == 'A')
{
pago = 80.00;
max = 8;
padic = 8.50;
}
else if (tipo == 'B')
{
pago = 60.00;
max = 6;
padic = 6.50 ;
}
else if (tipo == 'C')
{
pago = 40.00;
max = 4;
padic = 5.00 ;
}
if (cant >= max)
padic = padic * (cant - max);
else
padic = 0;
pago = pago + padic;
cout<<El total a pagar es: <<pago<<endl;
}

Nota: La funciones toupper() y tolower() convierten un caracter a mayscula y
minscula respectivamente, para esto es necesario incluir la directiva <ctype.h>.

Ejemplo 11
Un centro comercial bonifica a sus clientes con puntos los cuales son reemplazados
por obsequios. Por compras menores a S/.10.00 el cliente recibe 1 punto, por
compras de S/.10.00 a ms el cliente recibe 2 puntos por cada S/.10.00 y un punto
por el monto adicional. Elaborar un programa que calcule la cantidad de puntos que
obtiene un cliente en una compra.

Por ejemplo:
Si la compra es de S/.7.00 el cliente recibe 1 punto
Si la compra es de S/.23.00 el cliente recibe 5 puntos (2 puntos por cada
S/.10.00 y 1 punto por los S/.3.00).
Si la compra es de S/.40.00 el cliente recibe 8 puntos (2 puntos por cada
S/.10.00)

Variables a utilizar en el programa:
punto puntos obtenidos
monto monto de la compra
Lenguaje de Programacin I - Unidad I Yuliana Juregui y otros

39
parEnt valor entero de la compra
resto1 residuo del valor entero de la compra
resto2 valor real de la compra
c10 cantidad de montos de S/.10.00

Cdigo fuente:
#include <iostream.h>
#include <math.h>
void main()
{
// Definir variables
int punto = 0, parEnt, resto2, c10;
double monto, resto1 = 0;
// Lectura de datos
cout<<Ingresar monto de la compra: ";
cin>>monto;
if (monto < 10)
punto = 1;
else
{
parEnt = (int) monto;
resto1 = monto - parEnt;
resto2 = parEnt % 10;
c10 = parEnt / 10;
if (resto1 > 0 || resto2 >0)
punto = (2 * c10) + 1;
else
punto = 2 * c10;
}
cout<<Los puntos obtenidos son: <<punto<<endl;
}

Ejemplo 12
Un grupo de alumnos de un centro educativo desea saber cuanto se va a gastar en
pasajes para realizar el viaje de promocin, el precio de cada pasaje vara de
acuerdo con el da en que viajan y con el nmero de alumnos que viajan:

Precio x pasaje ($) Cantidad de
alumnos Hasta el da 15 del mes Despus del da 15 del mes
1 10
11 20
21 mas
60
55
50
50
45
40

Elaborar un programa que muestre el costo total de los pasajes.

Variables a utilizar en el programa:
dia dia del mes en el que se desea viajar
cant cantidad de alumnos
total monto total a pagar por los pasajes

Cdigo fuente:
#include <iostream.h>
void main()
{
// Definir variables
int dia, cant;
Lenguaje de Programacin I - Unidad I Yuliana Juregui y otros

40
double total;
// Lectura de datos
cout<<Ingresar dia del mes: ;
cin>>dia;
cout<<Ingresar cantidad de alumnos: ;
cin>>cant;
if (dia <= 15)
{
if (cant < 11)
total = 60 * cant;
else if (cant < 21)
total = 55 * cant;
else
total = 50 * cant;
}
else
{
if (cant < 11)
total = 50 * cant;
else if (cant < 21)
total = 45 * cant;
else
total = 40 * cant;
}
cout<<El costo total de los pasajes es: <<total<<endl;
}

2.2.3.2. Sentencia switch
Se presenta como una alternativa a las sentencias if mltiples, ya que en ocasiones
resulta ser ms comprensibles y ordenados. Nos permite seleccionar una opcion
entre un conjunto de opciones de acuerdo al valor de una variable llamada selector.
Las sentencias if anidadas pueden aplicarse a cualquier tipo de dato, en contrast
con la sentencia switch en donde el selector solo puede aplicarse a variables:
enteras o caracteres. Su sintaxis es la siguiente:

switch (selector)
{
case c1: sentencia1;
break;
case c2: sentencia2;
break;
.
.
.
default : sentenciaN;
}

Funcionamiento del switch
Cuando la sentencia switch inicia su ejecucin, se suceden los siguientes pasos:
a) Se compara el valor del selector con las constantes c1, c2, c3 etc
b) Si alguna de las constantes es igual al selector, se ejecuta la sentencia
correspondiente a ese case. El break termina la sentencia switch y la ejecucin
del programa proseguir con la sentencia que sigue a esta estructura.
Lenguaje de Programacin I - Unidad I Yuliana Juregui y otros

41
c) Si no existe coincidencia se ejecuta la sentenciaN y la ejecucin del programa
proseguir con la sentencia que sigue a esta estructura.

Cuando no se incluye un break en un case, el control del programa continua hacia
abajo ejecutndose el resto de sentecias a pesar de que el selector no coincide con
el valor de los case, hasta que termine la sentencia switch o hasta que encuentre
un break.

Por ejemplo si tenemos:

switch (vocal)
{
case a: x=1; break;
case e: x=2; break;
case i: x=3; break;
case o: x=4; break;
case u: x=5; break;
default: x=0;
}
cout<<x;

Se compara el valor de la variable vocal con los valores de cada case, segn
esta comparacin, la variable x toma un valor especfico.
As pues, si la variable vocal es igual al carcter u, se ejecuta x=5; y break;
dando por finalizada la estructura switch, luego el programa ejecuta la
sentencia cout<<x;
Si el valor de la variable vocal no coincide con ningunos de los valores de los
case, se ejecuta la sentencia x=0; correspondiente al default, luego el
programa ejecuta la sentencia cout<<x;

Ejemplo 13
Escriba un programa que lea una variable entera, que representa un da de la
semana y que muestre el texto correspondiente al da. Por ejemplo: Lunes si es 1,
Martes si es 2, , Domingo si es 7.

El siguiente cuadro muestra resultados con datos de prueba:

Da Texto a mostrar
1 Lunes
4 Jueves
6 Sbado

Variables a utilizar en el programa:
dia da de la semana

Pseudocdigo:
Inicio
// Definir variable
entero: dia
// Lectura de datos
Escribir (Ingresar dia:)
Leer (dia)
En caso sea (dia) hacer
1 : Escribir (lunes)
2 : Escribir (martes)
3 : Escribir (mircoles)
Lenguaje de Programacin I - Unidad I Yuliana Juregui y otros

42
4 : Escribir (jueves)
5 : Escribir (viernes)
6 : Escribir (sbado)
7 : Escribir (domingo)
Sino
Escribir (Fuera de rango)
Fin_Caso
Fin

Cdigo fuente:
#include <iostream.h>
void main()
{
// Definir variable
int dia;
// Lectura de datos
cout<<Ingresar dia: ;
cin>>dia;
switch (dia)
{
case 1 : cout<<lunes; break;
case 2 : cout<<martes; break;
case 3 : cout<<miercoles; break;
case 4 : cout<<jueves; break;
case 5 : cout<<viernes; break;
case 6 : cout<<sbado; break;
case 7 : cout<<domingo; break;
default : cout<<Fuera de rango;
}
cout<<endl;
}

Ejemplo 14
Una compaa incrementa el sueldo actual de sus empleados de acuerdo con su
categora, como se muestra en el siguiente cuadro:

Categora Incremento (%)
A
B
C
D
25
20
15
10

Adems recibe un aumento especial de 2.5% de su sueldo actual por cada hijo que
tuviese. As mismo, si el nuevo sueldo excede a S/.2000 se descuenta el 3% por
impuesto de solidaridad. Construir un programa que permita calcular el sueldo neto
que recibe un empleado de dicha compaa.

Variables a utilizar en el programa:
cat categora del empleado
sueldo sueldo del empleado
cant cantidad de hijos del empleado
aum aumento
adic pago adicional por cada hijo
desc descuento de solidaridad
sueldoNeto sueldo neto
Lenguaje de Programacin I - Unidad I Yuliana Juregui y otros

43
sw bandera que cambia de valor cuando se ingresa una
categora no existente

Cdigo fuente:
#include <iostream.h>
#include <ctype.h>
void main()
{
// Definir e inicializar variables
int cant;
double sueldo, aum, adic, desc, sueldoNeto, sw=0 ;
char cat;
// Lectura de datos
cout<<Ingresar categoria: ;
cin>>cat;
cout<<Ingresar sueldo:;
cin>>sueldo;
cout<<Ingresar cantidad de hijos:;
cin>>cant;
cat=toupper(cat);
switch (cat)
{
case A: aum = 0.25 * sueldo; break;
case B: aum = 0.20 * sueldo; break;
case C: aum = 0.15 * sueldo; break;
case D: aum = 0.10 * sueldo; break;
default: cout<<Categora no existe";
sw = 1;
}
if (sw == 0)
{
sueldo = sueldo + aum;
if (cant > 0)
adic = 0.025 * sueldo * cant;
sueldo = sueldo + adic;
if (sueldo > 2000)
desc = 0.03 * sueldo;
sueldoNeto = sueldo - desc;
cout<<El sueldo neto del empleado es <<sueldoNeto;
}
cout<<endl;
}

Nota: En ocasiones es necesario el uso de una variable que altere el
funcionamiento del programa, cambiando su valor entre 0 y 1 entre verdadero y
falso, a esta variable tambin se le conoce como switch o bandera. Para nuestro
ejemplo se ha utilizado la variable sw inicializado en cero; este valor cambia a 1 al
entrar al default, luego de identificar que se ha ingresado una categora diferente a
las existentes. Esto permite que una vez impreso el mensaje de error ya no se
realice los siguientes clculos.


Ejemplo 15
Escriba un programa que acte como una calculadora, permitiendo realizar las
operaciones de suma, resta, multiplicacin y divisin entre dos nmeros cualquiera.

Lenguaje de Programacin I - Unidad I Yuliana Juregui y otros

44
Variables a utilizar en el programa:
n1 primer nmero
n2 segundo nmero
res resultado de la operacin
oper operador
sw bandera que cambia de valor cuando en la divisin se ingresa
un divisor igual a 0

Cdigo fuente:
#include <iostream.h>
void main()
{
// Definir e inicializar variables
double n1, n2, res;
char oper;
int sw = 0;
// Lectura de datos
cout<<Ingresar primer numero: ;
cin>>n1;
cout<<Ingresar operador: ;
cin>>oper;
cout<<Ingresar segundo numero: ;
cin>>n2;
switch (oper)
{
case + : res = n1 + n2; break;
case - : res = n1 - n2 ; break;
case * : res = n1 * n2; break;
case / : if (n2 !=0)
res = n1 / n2;
else {
cout<< Error;
sw =1;
}
break;
default: cout<<Operador no valido;
sw = 1;
}
if (sw == 0)
cout<<El resultado es "<< res;
cout<<endl;
}

Ejemplo 16
Una compaa de seguros ofrece a sus clientes tres tipos de seguro mdico:

Tipo Max. Personas Pago mensual (S/.)
A
B
C
D
8
6
4
2
40
30
20
10

Si el cliente asegura a ms personas de la indicadas en el cuadro anterior tendr
que pagar S/.8.00 mensuales por cada persona adicional si es que el seguro es de
tipo A o B, y S/.5.00 mensuales por cada persona adicional si es que el seguro es
de tipo C o D. Calcular el monto anual que tiene que pagar un determinado cliente.
Lenguaje de Programacin I - Unidad I Yuliana Juregui y otros

45

Variables a utilizar en el programa:
tipo tipo de seguro
cant cantidad de personas aseguradas
max maximo numero de personas
pago pago mensual
padic pago adicional
sw bandera

Cdigo fuente:
#include <iostream.h>
#include <ctype.h>
void main()
{
// Definir variables
int cant, max, sw=0;
double pago = 0, padic;
char tipo;
// Lectura de datos
cout<<Ingresar tipo de seguro: ;
cin>>tipo;
cout<<Ingresar cantidad de personas: ;
cin>>cant;
tipo=tolower(tipo);
switch(tipo)
{
case 'a': pago = 40.00;
max = 8;
padic = 8.00;
break;
case 'b': pago = 30.00;
max = 6;
padic = 8.00;
break;
case 'c': pago = 20.00;
max = 4;
padic = 5.00;
break;
case 'd': pago = 10.00;
max = 2;
padic = 5.00;
break;
default: cout<<"error ";
sw=1;
}
if (sw==0)
if (cant >= max)
padic = padic * (cant - max);
else
padic=0;


pago = pago + padic;
cout<<El total a pagar es: <<pago<<endl;
}

Lenguaje de Programacin I - Unidad I Yuliana Juregui y otros

46
2.2.3.3. Sentencia switch mltiple
La sentencia switch mltiple se presenta de dos formas:
a) Cuando en ms de una alternativa debe ejecutar la misma accin. Para estos
casos se agrupan todas las alternativas que tienen la misma accin.
Por ejemplo:
switch (x)
{
case 1:
case 2:
case 3: factor=5;
break;
case 4:
case 5: factor=10;
break;
defalut: factor=0;
}
puntaje = puntaje + factor;

Si el valor de la variable x es 1 2 3 se ejecuta factor=5; y break; dando
por finalizada la estructura switch, luego el programa ejecuta la sentencia
puntaje = puntaje + factor;
Si el valor de la variable x es 4 5 se ejecuta factor=10; y break; dando por
finalizada la estructura switch, luego el programa ejecuta la sentencia
puntaje = puntaje + factor;
Si el valor de la variable x no coincide con ningunos de los valores de los
case, se ejecuta la sentencia factor=0; correspondiente al default, luego el
programa ejecuta la sentencia puntaje = puntaje + factor;
b) Cuando se presentan selecciones basadas en dos o ms niveles; en estos casos
se utiliza la sentencia switch anidado.
Por ejemplo:
switch (cond)
{
case 's': switch (cat)
{
case 'a' : pago = 1000;
break;
case 'b' : pago = 1200;
break;
case 'c' : pago = 1500;
break;
default : pago=0;
}
break;
case 'c': switch (cat)
{
case 'a' : pago = 1100;
break;
case 'b' : pago = 1300;
break;
case 'c' : pago = 1600;
break;
default : pago=0;
Lenguaje de Programacin I - Unidad I Yuliana Juregui y otros

47
}
break;
default: cout<<"Condicin no existe";
}
total = total + pago;

Si el valor de la variable cond es s se ejecuta el segundo switch, si el valor
de la variable cat es a se ejecuta pago=1000; y break; finalizando la
segunda estructura switch, luego se ejecuta el break; de la primera
estructura switch, finalizando la primera estructura switch, luego el
programa ejecuta la sentencia total = total + pago;
De esta manera se va comparando tanto el valor de cond como de cat con
cada case hasta ejecutar una de las sentencias.
Si los valores de la variables cond y cat no coinciden con ningunos de los
valores de los case, se ejecuta la sentencia correspondiente al default de
cada estructura, luego el programa ejecuta la sentencia puntaje = puntaje +
factor;

Ejemplo 17
En un campeonato de tiro al blanco se ha llegado a un acuerdo entre los
participantes para que el puntaje obtenido sea calculado en base al puntaje original
(el que esta entre 0 y 10) alcanzado en el tiro multiplicado por un factor el cual se
muestra en el siguiente cuadro. Hacer un programa que muestre el nuevo puntaje
obtenido por cualquier participante.

Puntaje original Factor
0 0
Entre 1 y 5 6
Entre 6 y 8 9
Entre 9 y 10 10

Variables a utilizar en el programa:
puntaje puntaje original
factor factor multiplicativo
nuevoPuntaje nuevo puntaje del participante
sw bandera que condiciona el clculo del nuevo puntaje

Pseudocdigo:
Inicio
// Definir e inicializar variables
entero: factor, puntaje, nuevoPuntaje, sw 0
// Lectura de datos
Escribir (Ingresar puntaje:)
Leer (puntaje)
// Calcula puntaje
En caso sea (puntaje) hacer
0: factor 0
1: 2: 3: 4: 5: factor 6
6: 7: 8: factor 9
9: 10: factor 10
Sino
Escribir (Fuera de rango)
sw 1
Fin_Caso
Si (sw = 0) entonces
nuevoPuntaje puntaje + factor
Lenguaje de Programacin I - Unidad I Yuliana Juregui y otros

48
Escribir (El nuevo puntaje es , nuevoPuntaje)
Fin_si
Fin

Cdigo fuente:
#include <iostream.h>
void main()
{
// Definir e inicializar variables
int factor, puntaje, nuevoPuntaje, sw = 0;
// Lectura de datos
cout<<Ingresar puntaje:";
cin>>puntaje;
// Calcula puntaje
switch (puntaje)
{
case 0: factor = 0;
break;
case 1:
case 2:
case 3:
case 4:
case 5: factor = 6;
break;
case 6:
case 7:
case 8: factor = 9;
break;
case 9:
case 10: factor = 10;
break;
default: cout<<Fuera de rango";
sw = 1;
}
if (sw == 0)
{
nuevoPuntaje = puntaje + factor;
cout<<El nuevo puntaje es <<nuevoPuntaje;
}
cout<<endl;
}

Ejemplo 18
Escriba un programa que permita calcular cuntos das tiene un mes, teniendo en
cuenta lo siguiente:
a) El orden del calendario indica que enero es 1, febrero es 2, etc.
b) Enero, marzo, mayo, julio, agosto, octubre y diciembre tienen 31 das.
c) Abril, junio, setiembre y noviembre tienen 30 das.
d) Febrero tiene 28 das o 29 das si el ao bisiesto. Un ao es bisiesto si es
mltiplo de 4 y no de 100 o cuando es mltiplo de 400.

Variables a utilizar en el programa:
dia da que tiene un mes
mes mes del ao
anio ao a determinar si es bisiesto

Lenguaje de Programacin I - Unidad I Yuliana Juregui y otros

49
Cdigo fuente:
#include <iostream.h>
#include <iomanip.h>
void main()
{
// Definir variables
int mes, anio, dias ;
// Lectura de datos
cout<<Ingresar mes y ao: ;
cin>>mes>> anio;
switch(mes)
{
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:dias = 31;
break;
case 4:
case 6:
case 9: dias = 30;
break;
case 2: if ((anio % 4 == 0) && (anio % 100 != 0) ||( anio % 400 == 0))
dias = 29;
else
dias = 28;
break;
}
cout<<mes<<setw(5)<<anio<<setw(5)<<dias<<endl;
}

Nota: La funcin setw(n) que se encuentra en la directiva #include <iomanip.h>,
establece el nmero de caracteres que se utilizar como ancho de campo para la
prxima operacin de insercin, siendo n el nmero de caracteres que se utilizar
como ancho.

Ejemplo 19
Escriba un programa para calcular la pensin que tiene que pagar un alumno de un
instituto cuya cuota de matrcula tiene un porcentaje de descuento que se establece
en la siguiente tabla y esta en funcin del colegio de procedencia del alumno y de
las tres categoras que existe en el instituto. Considere que la pensin est
exonerada de impuesto.

Categora Colegio de
procedencia A B C
Nacional 50 40 30
Particular 15 20 25

Variables a utilizar en el programa:
colegio colegio de procedencia
categoria categora dentro del instituto
dscto descuento a realizar
cuota pago mensual
importe importe a pagar
Lenguaje de Programacin I - Unidad I Yuliana Juregui y otros

50

Cdigo fuente:
#include <iostream.h>
#include <ctype.h>
void main()
{
// Definir e inicializar variables
double cuota, dscto, importe = 0;
char colegio, categoria;
int sw = 0;
// Lectura de datos
cout<<Ingresar colegio de procedencia (N)acional, (P)articular:;
cin>>colegio;
cout<<Ingresar categoria (A, B, C):;
cin>>categoria;
cout<<Ingresar cuota:;
cin>>cuota;
// Conversion
colegio=tolower(colegio);
categoria=tolower(categoria);
//Calculos
switch (colegio)
{
case 'n': switch (categoria)
{
case 'a': dscto = 0.50 * cuota;break;
case 'b': dscto = 0.40 * cuota;break;
case 'c': dscto = 0.30 * cuota;break;
default: cout<<Opcin no contemplada;
sw = 1;
}
break;
case 'p': switch(categoria)
{
case 'a': dscto = 0.25 * cuota ;break;
case 'b': dscto = 0.20 * cuota;break;
case 'c': dscto = 0.15 * cuota;break;
default: cout<<Opcin no contemplada;
sw = 1;
}
break;
default: cout<<Opcin no contemplada;
sw = 1;
}
if (sw == 0)
{
importe = cuota - dscto;
cout<<El importe a pagar es: <<importe;
}
cout<<endl;
}

Ejemplo 20
Calcular el pago de un obrero que trabaja al destajo. El pago que recibe el obrero
por cada unidad producida depende de su categora y del tipo de producto que
produce, como se muestra en el siguiente cuadro:
Lenguaje de Programacin I - Unidad I Yuliana Juregui y otros

51




Tarifa (S/. x unidad)
Categora
Tejas Losetas
A
B
C
2.50
2.00
1.50
2.00
1.50
1.00

As mismo, el obrero recibe una bonificacin especial de acuerdo con la cantidad
que produce:

Unidades Producidas Bonificacin (%)
1 250
251 500
501 1000
1001 mas
0.00
50.00
100.00
150.00

Adems del total de ingresos se descuenta S/.25.00 por seguro.

Variables a utilizar en el programa:
cat categora del obrero
prod producto que se produce
cant cantidad producida
pago pago del obrero
bonf bonificacin
desc descuento
sw bandera

Cdigo fuente:
#include <iostream.h>
#include <ctype.h>
void main()
{
// Definir e inicializar variables
int cant, sw = 0;
double pago, bonf, desc = 25.00;
char cat, prod;
// Lectura de datos
cout<<Ingresar categora: ;
cin>>cat;
cout<<Ingresar producto que produce (T)ejas, (L)osetas: ;
cin>>prod;
cout<<Ingresar cantidad producida: ;
cin>>cant;
//Conversin
prod=tolower(prod);
cat=tolower(cat);
// Clculos
switch(prod)
{
case 't': switch (cat)
{
case 'a' : pago = 2.50 * cant ;break;
case 'b' : pago = 2.00 * cant;break;
Lenguaje de Programacin I - Unidad I Yuliana Juregui y otros

52
case 'c' : pago = 1.50 * cant;break;
default: cout<<"Categora no existe";
sw= 1;
}
break;
case 'l': switch( cat)
{
case 'a' : pago = 2.00 * cant ;break;
case 'b' : pago = 1.50 * cant;break;
case 'c' : pago = 1.00 * cant;break;
default: cout<<"Categora no existe";
sw = 1;
}
break;
default: cout<<"Producto no existe";
sw = 1;
}
if (sw == 0)
{
if (cant <= 250)
bonf = 0;
else if (cant <= 500)
bonf = 50.00;
else if (cant <= 1000)
bonf = 100.00;
else
bonf = 150.00;
}
pago = pago + bonf - desc;
// Salida de resultados
cout<<El pago del obrero es: <<pago;
cout<<endl;
}

2.2.4. Ejercicios propuestos
1. Una compaa de gaseosas est realizando una promocin por la compra de sus
productos. Dentro de cada chapa viene un nmero que determina el premio que
obtiene un comprador.
Si la chapa tiene un nmero entre 1 y 5 el comprador obtiene como premio el
doble del precio pagado por la gaseosa.
Si la chapa tiene un nmero entre 6 y 8 el comprador obtiene como premio la
devolucin del precio pagado por la gaseosa
Si chapa tiene un nmero entre 9 y 10 el comprador no gana ningn premio
Se pide elaborar un programa empleando la sentencia switch que permita
mostrar los diferentes resultados que podra obtener una persona al comprar
una gaseosa.
2. Elaborar un programa que determine si el nmero ingresado es mltiplo de 7 y
mltiplo de 4 tambin. Por ejemplo: el nmero 28 es mltiplo de 7 y de 4 a la
vez.
3. Mostrar el nombre correspondiente a un nmero de mes y adems mostrar la
estacin al cual pertenece. Considerar 3 meses por estacin.
Verano = enero, febrero, marzo
Otoo = abril, mayo, junio
Lenguaje de Programacin I - Unidad I Yuliana Juregui y otros

53
Invierno = julio, agosto, setiembre
Primavera = octubre, noviembre, diciembre.
4. Escribir un programa que permite ingresar una calificacin expresada con un
caracter (a, b, c o d) y averiguar su equivalencia correspondiente de acuerdo
con la siguiente tabla:

Nota Descripcin
A Sobresaliente
B Notable
C Aprobado
D Insuficiente
Otra letra Nota no est en el rango
5. En una escuela la colegiatura de los alumnos se determina segn el nmero de
materias que cursan. El costo de todas las materias es el mismo. Se ha
establecido un programa para estimular a los alumnos, el cual consiste en lo
siguiente: si el promedio obtenido por un alumno en el ultimo periodo es mayor
o igual que 15, se le har un descuento del 30% sobre la colegiatura y no se le
cobrara impuesto; si el promedio obtenido es menor que 15 deber pagar la
colegiatura completa, la cual incluye el 10% de impuesto. Obtener cunto debe
pagar un alumno.
6. Elaborar un programa que tenga como entrada los valores de dos ngulos,
expresados en grados, minutos y segundos, obtenga el valor de su suma de la
misma forma. Se supone que las entradas son correctas, en el sentido de que
cada ngulo est expresado como tres nmeros enteros, en los rangos
respectivos (0 - 360), (0 - 60) y (0 - 60). La salida debe estar expresada de la
misma manera.
7. Calcular el costo del servicio de mudanza, de acuerdo con la distancia entre el
punto de partida y de llegada, el tipo de carga y con el nmero de viajes ida y
vuelta. Para calcular el costo se debe tener en cuenta:
a) Si la distancia por cada viaje es mayor o igual a 5 Km., se cobrar S/.5.00
por kilmetro, de lo contrario se cobrar el monto bsico que ser igual a
S/.25.00.
b) La carga puede ser frgil o no frgil. Solo si la carga es frgil al monto
calculado anteriormente se le aumentar 20%.
c) El monto resultante de acuerdo con la distancia y al tipo de carga se
multiplicar por el nmero de viajes.
8. Escribir un programa para calcular las bonificaciones de sus empleados teniendo
en cuenta lo siguiente: si el sueldo del empleado es menor a S/.750, recibe una
bonificacin del 15% del sueldo, si el sueldo esta entre S/.750 y S/.1200, recibe
una bonificacin del 10% y si el sueldo es superior a los S/.1200, recibe una
bonificacin del 7%.
9. Un centro comercial ofrece ventas financiadas por medio de 3 tipos de tarjetas
de crdito, como indica a continuacin:

Tipo de Tarjeta Mximo de Letras Inters (%)
A
B
C
36
24
12
7
6
5
El cliente solo puede financiar una compra hasta el mximo de letras que se
indica en el cuadro anterior, en caso contrario la venta no debe proceder.
Calcular el monto de cada letra por pagar, as como el monto total.
Lenguaje de Programacin I - Unidad I Yuliana Juregui y otros

54
10. Una empresa de bienes y races ofrece casas de inters social bajo las
siguientes condiciones: si el ingreso mensual del comprador es menos de
S/2250 la cuota inicial ser igual al 15% del costo de la casa y el resto se
distribuir en 120 cuotas mensuales. Si el ingreso mensual del comprador es
mayor o igual a S/.2250 la cuota inicial ser igual al 30% del costo de la casa y
el resto se distribuir en 75 cuotas mensuales. Disee un programa permita
determinar cuanto debe pagar un comprador por concepto de cuota inicial y
cuanto por cada cuota mensual.

2.3. Estructura repetitiva
Las estructuras repetitivas se utilizan cuando es necesaria la repeticin de una o
mas sentencias un nmero determinado de veces, tantas veces como lo permita
el resultado de una expresin lgica. Los controles de esta estructura son: while,
do-while, for.
Asimismo dentro de las estructuras repetitivas intervienen los contadores y
acumuladores, que son variables que toman valores iniciales antes de que empiece
el proceso repetitivo, para que luego, dentro del proceso repetitivo incrementen sus
valores segn la lgica de solucin del problema (Juregui y Arriola, 2007).

2.3.1. Conceptos bsicos
Contador: Es una variable numrica entera, que toma un valor inicial
(normalmente cero o uno) y que, posteriormente se incrementa a si misma en
N unidades constantes en cada iteracin. Asi por ejemplo tenemos al contador i:
i = i + N

valor actual valor anterior cantidad a incrementar

Acumulador o totalizador: Es una variable numrica que toma un valor inicial
(normalmente cero) y posteriormente se incrementa a si misma en una
cantidad variable en cada iteracin. Asi por ejemplo se tienes a la variable total
que representa a un acumulador y la variable parcial es la cantidad que se
incrementar en cada iteracin.
total = total + parcial

valor actual valor anterior cantidad a incrementar

Bucle: Es un mecanismo de programacin que repite un segmento de un
programa (una o mas sentencias) un cierto nmero de veces. Los bucles se
implementan utilizando las sentencias repetitivas: while, do_while y for.
Cuerpo del bucle: Son las sentencias que se ejecutarn repetidamente un
cierto nmero de veces.
Iteracin: Representa cada repeticin del cuerpo de bucle.

2.3.2. Sentencia while
Lenguaje de Programacin I - Unidad I Yuliana Juregui y otros

55
La sentencia while repite una o un grupo de sentencias, mientras el resultado de la
expresin lgica es verdadero, si el resultado de la expresin lgica es falso, la
sentencia while termina. Si la setencia while ejecute un grupo de sentencias, deben
estar dentro de llaves de apertura y cierre ({ }).
Su sintaxis es la siguiente:

while(expresin_lgica)
sentencia;

Funcionamiento de la sentencia while
Cuando la sentencia while inicia su ejecucin, se suceden los siguientes pasos:
a) Se evala expresin_lgica, obtenindose un resultado booleano.
b) Si este resultado es verdadero (true), se ejecuta sentencia y se retorna al paso
a).
c) Si este resultado de expresin_lgica es falso (false), se termina la sentencia
while y la ejecucin del programa proseguir con la sentencia que sigue a esta
estructura.

Por ejemplo si tenemos:

i=1;
while(i<=5)
{
fact = fact * i;
i++;
}
cout<<fact;

Se inicializa i=1, luego se evala la expresin lgica (i<=5), mientras el
contenido de la variable i es menor o igual a 5 se ejecutan las sentencias que se
encuentran entre llaves
Cuando la variable i toma el valor de 6, la expresin lgica (i<=5) se hace falsa
terminando la sentencia while y ha continuacin se ejecuta la sentencia
cout<<fact;.

Ejemplo 01
Escriba un programa que muestre y cacule la suma de los n trminos de la
siguiente serie:

2 + 5 + 8 + 11 +

Variables a utilizar en el programa:
n nmero ingresado
ter cada trmino de La serie
suma suma de trminos
con contador

Pseudocdigo:
Inicio
// Definir e inicializar variables
entero: n, ter 2, suma 0, con
// Leer Datos
Escribir (Ingresar cantidad de trminos:)
Leer (n)
// Calcula serie y suma
Lenguaje de Programacin I - Unidad I Yuliana Juregui y otros

56
con 1
Mientras (con <= n) Hacer
Escribir (ter)
suma suma + ter
ter ter + 3
con con + 1
Fin_mientras
Escribir (La suma es: , suma)
Fin

Cdigo fuente:
#include <iostream.h>
#include <iomanip.h>
void main()
{
// Definir e inicializar variables
int n, ter = 2, suma = 0, con;
// Leer Datos
cout<<Ingresar nmero: ;
cin>>n;
// Muestra y calcula serie y suma
con = 1;
while (con <= n)
{
cout<<ter<<setw(4);
suma = suma + ter;
ter = ter + 3;
con++;
}
cout<<endl<<La suma de los <<n<< trminos es: <<suma<<endl;
}

Ejemplo 02
Escriba un programa en el que se ingresa un nmero entero y se calcula:
a) La suma de sus dgitos
b) El nmero total (cantidad) de dgitos.
c) La cantidad de dgitos pares e impares

Por ejemplo si se tiene el nmero 3897, diremos que la suma de sus dgitos es 27,
el nmero total de dgitos es 4, la cantidad de dgitos pares es 1 y la cantidad de
dgitos impares es 3.
Para resolver este ejemplo es necesario reducir el nmero a cero empleando la
operacin nro = nro / 10, que en valores es:

3897 / 10 = 389
389 / 10 = 38
38 / 10 = 3
3 / 10 = 0

Para obtener cada dgito emplearemos la operacin digito = digito % 10, que en
valores es:

3897 % 10 = 7
389 % 10 = 9
38 %10 = 8
3 % 10 = 3
Se
detiene
cuando
es cero
Lenguaje de Programacin I - Unidad I Yuliana Juregui y otros

57

Para calcular la suma de los dgitos de un nmero emplearemos la operacin
suma = suma + digito
Para calcular la cantidad total de dgitos de un nmero emplearemos un
contador tal como c = c + 1
Para calcular la cantidad de dgitos pares e impares evaluamos cada dgito, un
dgito es par si el residuo de la divisin del dgito entre 2 es cero, en caso
contrario ser impar. De manera se irn acumulando en dos contadores
diferentes la cantidad total de dgitos pares y de dgitos impares.

Variables a utilizar en el programa:
nro nmero ingresado
digito cada dgito del nmero
suma la suma total de dgitos
c contador que guarda la cantidad de dgitos
cpar contador que guarda la cantidad de dgitos pares
cimpar contador que guarda la cantidad de dgitos impares

Cdigo fuente:
#include <iostream.h>
void main()
{
// Definir e inicializar variables
int nro, digito, suma = 0, c = 0, cpar = 0, cimpar = 0;
// Leer Datos
cout<<Ingresar numero: ;
cin>>nro;
while (nro>0)
{
digito = nro % 10;
suma = suma + digito ;
c = c + 1;
if (digito % 2 == 0)
cpar++;
else
cimpar++;
nro = nro / 10;
}
cout<<La suma es: <<suma<<endl
<<El total de dgitos es: <<c<<endl
<<La cantidad de dgitos pares es: <<cpar<<endl
<<La cantidad de dgitos impares es: <<cimpar<<endl;
}

Ejemplo 03
Escriba un programa que calcule la suma total y determine cuantos nmeros
mltiplos de M hay en los N primeros nmeros naturales, tal que M <= N.

Por ejemplo:
Si se desea saber cuantos mltiplos de 7 hay en los primeros 80 nmeros
naturales.
Diremos que existen 11 nmeros y son:

7, 14, 21, 28, 35, 42, 49, 56, 63, 70, 77

Variables a utilizar en el programa:
Lenguaje de Programacin I - Unidad I Yuliana Juregui y otros

58
n cantidad de nmeros naturales
m mltiplo a validar
x contador de mltiplos
suma suma de los mltiplos de m
con contador

Cdigo fuente:
#include <iostream.h>
#include <iomanip.h>
void main()
{
// Definir e inicializar variables
int n, m, x, con, suma = 0 ;
// Leer Datos
cout<<Ingresar cantidad de numeros: ;
cin>>n;
cout<<Ingresar mltiplo a validar: ;
cin>>m;
// Calcula serie y suma
con = 0;
x = m;
while (x <= n)
{
cout<<x<<setw(3);
con++;
suma = suma + x;
x = x + m;
}
cout<<La suma es: "<<suma<<endl
<<La cantidad de multiplos de <<m<< encontrados en los <<n
<< primeros nmeros naturales es << con<<endl;
}

Ejemplo 04
Escriba un programa que imprima la serie y calcule el producto de los n trminos
de:

1/1
2
* 3/2
2
* 5/3
2
* 7/4
2
*

Variables a utilizar en el programa:
n cantidad de trminos de la serie
num numerador
den denominador
prod producto de los trminos de la serie
con contador

Cdigo fuente:
#include <iostream.h>
#include <math.h>
#include <iomanip.h>
void main()
{
// Definir e inicializar variables
int n, con;
double num = 1, den = 1, prod = 1;
// Leer Datos
Lenguaje de Programacin I - Unidad I Yuliana Juregui y otros

59
cout<<"Ingresar cantidad de trminos:";
cin>>n;
// Calcula serie y multiplica
con = 1;
while (con <= n)
{
cout<<num<< "/"<<den<<"^2"<<setw(3);
prod = prod * (num/pow(den, 2));
num = num + 2;
den++;
con++;
}
cout<< El producto es: <<prod<<endl;
}

Ejemplo 05
Durante un censo se registra los datos de n personas como: sexo (masculino,
femenino), edad y estado civil (soltero, casado, viudo, divorciado). Elaborar un
programa que muestre el nmero de jvenes solteras que tienen entre 18 y 30
aos.
Variables a utilizar en el programa:
n cantidad de personas
sexo sexo de la persona
edad edad de la persona
estCiv estado civil
conM cantidad de mujeres solteras entre 18 y 30 aos
con contador

Cdigo fuente:
#include <iostream.h>
void main()
{
// Definir e inicializar variables
int n, edad, con =1 , conM = 0;
char sexo, estCiv;
// Leer Datos
cout<<Ingresar cantidad de personas: ;
cin>>n;
// Calculo
con = 1;
while (con <= n)
{
cout<<Ingresar sexo (M)asculino, (F)emenino: ;
cin>>sexo;
cout<<Ingresar edad:";
cin>>edad;
cout<<Ingresar estado civil (S)oltero, (C)asado, (V)iudo, (D)ivorciado: ;
cin>>estCiv;
if (sexo == 'f' && estCiv == 's' && edad>=18 && edad <=30)
conM++;
con++;
}
cout<<La cantidad de mujeres solteras entre 18 y 30 aos son:
<<conM<<endl;
}

Lenguaje de Programacin I - Unidad I Yuliana Juregui y otros

60
2.3.3. Estructura repetitiva do-while
La sentencia do-while, repite una sentencia o un grupo de sentencias hasta que el
resultado de una expresin lgica sea verdadero (true) momento en que termina la
sentencia do-while y se contina con el resto del programa. Si el do-while ejecuta
un grupo de sentencias, deben de estar dentro de llaves de apertura y cierre ({}).
Su sintaxis es la siguiente:

do
sentencia;
while(expresin_lgica);

Funcionamiento de la sentencia do-while
Cuando la sentencia do - while inicia su ejecucin, se suceden los siguientes pasos:
a) Se ejecuta la sentencia que se encuentran dentro del do-while.
b) Se evala expresin_lgica, obtenindose un resultado booleano.
c) Si este resultado es verdadero (true), se retorna al paso a).
d) Si este resultado es falso (false), termina la sentencia do-while y la ejecucin
del programa proseguir con la sentencia que sigue a esta estructura.

Por ejemplo si tenemos:
i=1;
do
{
fact = fact * i;
i++;
}
while(i<=5);
cout<<fact;

Se inicializa i=1, luego se ejecuta las sentencias que estan entre llaves,
mientras la variable i sea menor o igual a 5.
Cuando la variable i toma el valor de 6, la expresin logica (i<=5) es falsa
terminando la sentencia do-while y ha continuacin se ejecuta la sentencia
cout<<fact;.

Ejemplo 06
Escriba un programa que encuentre el menor nmero de un conjunto de nmeros
positivos ingresados. El programa termina cuando se ingresa el cero o un nmero
negativo.

En este tipo de problema es recomendable el uso del do-while, ya que la condicin
que finaliza el bucle depende del valor de los nmeros que se van ingresando.

Para calcular el menor nmero empleamos el mtodo del supuesto falso, mediante
el cual se inicializa al menor nmero es un nmero grande: menor = 99999, de
esta manera se podr comparar con todos los nmeros ingresados.

Variables a utilizar en el programa:
nro cada nmero ingresado
menor menor nmero

Pseudocdigo:
Inicio
// Definir e inicializar variables
entero: nro, menor 99999
Lenguaje de Programacin I - Unidad I Yuliana Juregui y otros

61
// Calcula e imprime trmino
Hacer
Escribir (Ingresar nmero)
Leer (nro)
Si (nro < menor and nro > 0) entonces
menor nro
Fin_si
Mientras (nro > 0)
Escribir (El menor nmero ingresado es , menor)
Fin

Cdigo fuente:
#include <iostream.h>
void main()
{
// Definir e inicializar variables
int nro, menor = 99999;
// Calcula e imprime trmino
do
{
cout<<Ingresar numero: ;
cin>>nro;
if (nro < menor && nro > 0)
menor = nro;
}
while(nro > 0);
cout<<El menor nmero ingresado es <<menor<<endl;
}

Ejemplo 07
Escriba un programa que calcule el promedio de nmeros positivos y el promedio
de nmeros negativos de un conjunto de nmeros ingresados. El programa termina
cuando se ingresa el cero.

Variables a utilizar en el programa:
nro cada nmero ingresado
sumap suma de nmeros positivos
suman suma de nmeros negativos
cp contador de nmeros positivos
cn contador de nmeros negativos
promp promedios de los nmeros positivos
promn promedios de los nmeros negativos

Cdigo fuente:
#include <iostream.h>
void main()
{
// Definir e inicializar variables
int nro, sumap = 0, suman = 0, cp = 0, cn = 0;
double promp, promn;
// Ingreso y clculo
do
{
cout<< "Ingresar numero:";
cin>>nro;
if (nro > 0)
Lenguaje de Programacin I - Unidad I Yuliana Juregui y otros

62
{
sumap = sumap + nro;
cp++;
}
else if (nro<0)
{
suman = suman + nro;
cn++;
}
}
while (nro != 0);
promp = sumap / cp;
promn = suman / cn;
cout<<El promedio de los numeros positivos es <<promp<<endl
<<El promedio de los numeros negativos es <<promn<<endl;
}

Ejemplo 08
Escriba un programa que lee N consumos de un restaurante. Si el consumo
ingresado excede los S/.70.00, se le descontar el 15%. Mostrar el monto de cada
consumo realizado y el total que recauda el restaurante por todos los consumos.

Variables a utilizar en el programa
n cantidad de consumos
consumo monto consumido
desc descuento
total total que recauda el restaurante
con contador

Cdigo fuente
#include <iostream.h>
void main()
{
// Definir e inicializar variables
int n, con = 0;
double consumo, desc = 0, total = 0;
cout<<Ingresar cantidad de consumos: ;
cin>>n;
// Clculo
do
{
cout<<Ingresar consumo: ;
cin>>consumo;
if (consumo > 70.00)
desc = 0.15 * consumo;
consumo = consumo - desc;
desc = 0;
cout<<El monto final del consumo es <<consumo<<endl;
total = total + consumo;
con++;
}
while (con < n);
cout<<El total que recauda el restaurante es <<total<<endl;
}


Lenguaje de Programacin I - Unidad I Yuliana Juregui y otros

63
Ejemplo 09
Escriba un programa que calcula la compra de N productos de diferentes precios,
dicha compra se realiza hasta que el cliente ya no desea seguir comprando. Mostrar
el monto total que paga el cliente.

Variables a utilizar en el programa:
cant cantidad de productos
precio precio del producto
subTot monto del subtotal
total monto total
resp respuesta

Cdigo fuente:
#include <iostream.h>
void main()
{
// Definir e inicializar variables
int cant;
double precio, subTot, total=0;
char resp;
// Clculo
do
{
cout<<Ingresar precio del producto: ;
cin>>precio;
cout<<Ingresar cantidad de productos: ;
cin>>cant;
subTot = precio * cant;
total = total + subTot;
cout<<Desea seguir comprando (S/N)?;
cin>>resp;
}
while (resp != 'n');
cout<<El total a pagar es <<total<<endl;
}

Ejemplo 10
Escriba un programa que calcule el monto total que paga cada persona por una
entrada a un evento cultural, los precios varan de acuerdo al tipo de entrada:

Tipo Precio (S/.)
Vip
Platea
Popular
70.00
50.00
30.00

Adems el precio tiene un incremento del 12% por impuesto. Validar el ingreso de
datos. El programa finaliza cuando se ingresa un tipo diferente al cuadro anterior.

Variables a utilizar en el programa:
tipo tipo de entrada
precio precio del producto
inc incremento

Cdigo fuente:
#include <iostream.h>
void main()
Lenguaje de Programacin I - Unidad I Yuliana Juregui y otros

64
{
// Definir variables
double precio, inc, sw=0;
char tipo;
// Clculo
do
{
cout<<Ingresar tipo de entrada (v)ip, (p)latea, Popu(l)ar: ;
cin>>tipo;
if (tipo !='v' && tipo !='p' && tipo !='l')
{
cout<<"Tipo no existe";
sw=1;
}
switch (tipo)
{
case 'v': precio = 70.00; break;
case 'p': precio = 50.00; break;
case 'l': precio = 30.00; break;
default: sw=1;
}
if (sw==0)
{
inc = precio * 0.12;
precio = precio + inc;
}
}
while (tipo == 'v' || tipo == 'p' || tipo == 'l');
cout<<El precio final a pagar es <<total<<endl;
}

Ejemplo 11
Escriba un programa que muestre mediante un men las operaciones aritmticas
(suma, resta, multiplicacin y divisin) que se desea hacer con dos nmeros
ingresados.

Variables a utilizar en el programa:
op opcin
n1 primer nmero
n2 segundo nmero
res resultado de la operacin

Cdigo fuente:
#include <iostream.h>
#include <stdlib.h>
void main()
{
int op, n1, n2, res;
do{
cout<<endl<<" *********** M E N U ***********"<<endl
<<1) Suma<<endl
<<2) Resta<<endl
<<3) Multiplicacion<<endl
<<4) Division<<endl
<<5) Salir<<endl
<<Ingresar opcion: ;
Lenguaje de Programacin I - Unidad I Yuliana Juregui y otros

65
cin>>op;
if(op>=1 && op<=4){
cout<<Ingresar 1er numero: ;
cin>>n1;
cout<<Ingresar 2do numero: ;
cin>>n2;
}
switch(op){
case 1: res = n1 + n2; break;
case 2: res = n1 - n2; break;
case 3: res = n1 * n2; break;
case 4: res = n1 / n2; break;
case 5: cout<<Finalizo el programa; break;
default: cout<<Opcin no vlida;
}
if(op>=1 && op<=4)
cout<<El resultado es <<res;
cout<<endl;
}

while(op!=5);
}

2.3.4. Estructura repetitiva for
La sentencia for repite una sentencia o un grupo de sentencias un nmero
determinado de veces. Se utiliza cuando se conoce por anticipado el nmero de
veces que se van a repetir las sentencias. Si el for ejecuta un grupo de sentencias,
deben de estar dentro de llaves de apertura y cierre ({}). Su sintaxis es la
siguiente:

for (inicializacion; expresin_lgica; incremento)
sentencia;

Funcionamiento de la sentencia for
Cuando la sentencia for inicia su ejecucin, se suceden los siguientes pasos:
a) Se inicializa la variable de control; aqu tambin se puede declarar e inicializar
la variable de control.
b) Se evala la expresin_lgica, obtenindose un resultado booleano.
c) Si este resultado es verdadero (true), se ejecuta la sentencia, luego se
ejecutar el incremento y se retorna al paso b).
d) Si este resultado es falso (false), finaliza la sentencia for, y el programa
proseguir con la sentencia que sigue a esta estructura.

Por ejemplo si tenemos:

for(i=1; i<=5; i++)
fact = fact * i;
cout<<fact;

Al ejecutar el for se inicializa i=1, luego se evala la expresin logica (i<=5),
como es verdadero se ejecuta la sentencia fact = fact * i;, luego la ejecucin
retorna al for incrementandose el valor de la variable i (i=2), y se evala
nuevamente la expresin lgica (i<=5).
Lenguaje de Programacin I - Unidad I Yuliana Juregui y otros

66
Cuando la variable i toma el valor de 6, la expresin logica(i<=5) se hace
falsa terminando la sentencia for y a continuacin se ejecuta la sentencia
cout<<fact;.

Ejemplo 12
Escriba un programa que calcule la suma de los cuadrados y los cubos de los N
primeros nmeros naturales.

Variables a utilizar en el programa:
n cantidad de nmeros naturales
nro cada nmero natural
cuad cuadrado del nmero
cubo cubo del nmero
sumaCuad suma de los cuadrados del nmero
sumaCubo suma de los cubos del nmero

Pseudocdigo:
Inicio
// Definir e inicializar variables
entero: n, nro, cuad, cubo, sumaCuad 0, sumaCubo 0
// Leer dato
Escribir (Ingresar cantidad de nmeros naturales)
Leer (n)
Desde (nro 1) hasta (nro <= n) con incremento 1 Hacer
cuad nro * nro
sumaCuad sumaCuad + cuad
cubo nro * nro * nro
sumaCubo sumaCubo + cubo
Fin_desde
Escribir(La suma de los cuadrados es , sumaCuad)
Escribir(La suma de los cubos es , sumaCubo)
Fin

Cdigo fuente:
#include <iostream.h>
#include <math.h>
void main()
{
// Definir e inicializar variables
int n, nro, cuad, cubo, sumaCuad = 0, sumaCubo = 0;
// Leer dato
cout<<"Ingresar cantidad de numeros naturales:";
cin>>n;
for (nro = 1; nro <= n; nro++)
{
cuad = pow(nro, 2);
sumaCuad = sumaCuad + cuad;
cubo = pow(nro, 3);
sumaCubo = sumaCubo + cubo;
}
cout<<La suma de los cuadrados es <<sumaCuad<<endl
<<La suma de los cubos es << sumaCubo<<endl;
}

Ejemplo 13
Lenguaje de Programacin I - Unidad I Yuliana Juregui y otros

67
Escriba un programa para encontrar todos los divisores de un nmero ingresado.
Un nmero a es divisor de otro nmero b, cuando el residuo de la divisin de b
entre a es cero, en otras palabras cuando el residuo es exacto.

Por ejemplo, los divisores de 24 son: 1, 2, 3, 4, 6, 8, 12, 24, para hallar estos
valores es necesario dividir al nmero 24 con valores comprendidos entre 1 y 24,
los cuales se trabajarn mediante la variable i, si el residuo de la divisin del
nmero 24 entre i es cero entonces i es uno de los divisores de 24.

Variables a utilizar en el programa:
nro nmero al cual calculamos sus divisores
i divisor del nmero

Cdigo fuente:
#include <iostream.h>
#include <iomanip.h>
void main()
{
// Definir e inicializar variables
int nro, i =1;
// Leer datos
cout<<Ingresar numero: ;
cin>>nro;
for (i = 1; i<=nro; i++)
if (nro % i == 0)
cout<<i<<setw(3);
cout<<endl;
}

Ejemplo 14
Escriba un programa que muestra y calcula el promedio de todos los nmeros pares
comprendidos entre a y b. Indistintamente a puede ser menor que b b menor que
a.

Variables a utilizar en el programa:
a, b lmites
n1, n2 auxiliares
nro nmero evaluado como par entre los lmites a y b
suma suma de nmeros pares
con contador de nmeros pares
prom promedio

Cdigo fuente:
#include <iostream.h>
#include <iomanip.h>
void main()
{
// Definir e inicializar variables
int a, b, nro, n1, n2, suma= 0, con = 0;
double prom;
// Leer Datos
cout<<Ingresar lmites: ;
cin>>a>>b;
if (a > b)
{
n1 = b;
Lenguaje de Programacin I - Unidad I Yuliana Juregui y otros

68
n2 = a;
}
else
{
n1 = a;
n2 = b;
}
for (nro = n1; nro<=n2; nro++)
if (nro % 2 == 0)
{
cout<<nro<<setw(3);
suma = suma + nro;
con++;
}
prom = suma / con;
cout<<El promedio es <<prom<<endl;
}

Ejemplo 15
Escriba un programa que determine la potencia de m
n
siendo m un nmero real
y n un nmero entero. Considere que n puede ser positivo, negativo o cero. No use
ninguna funcion de la directiva Math.

Variables a utilizar en el programa:
m base
n potencia
aux guarda el valor original de n
res resultado

Cdigo fuente:
#include <iostream.h>
#include <stdlib.h>
void main()
{
double res=1, m;
int n, con, aux;
cout<<"Ingresar base: ";
cin>>m;
cout<<"Ingresar potencia: ";
cin>>n;
aux = n;
if(n<0)
n = n * -1;
for(con=0; con<n; con++)
res = res * m;
if(aux<0)
cout<<m<<^<<n<< = 1/<<res<<endl;
else
cout<<m<<^<<n<< = <<res<<endl;
}

Ejemplo 16
Escriba un programa para averiguar si un nmero ingresado es primo. Un nmero
es primo, si solo tiene como divisores al mismo nmero y a la unidad.

Variables a utilizar en el programa:
Lenguaje de Programacin I - Unidad I Yuliana Juregui y otros

69
d posibles divisores del nmero ingresado
con contador de divisores del nmero
nro nmero ingresado

Cdigo fuente:
#include <iostream.h>
void main()
{
// Declarar e inicializar variables
int nro, d, con = 0;
// Leer Datos
cout<<Ingresar numero: ;
cin>>nro;
for (d = 1; d <= nro; d++)
if (nro % d == 0)
con++;
if (con == 2)
cout<<El nmero es primo;
else
cout<<El nmero no es primo;
cout<<endl;
}

Ejemplo 17
Una empresa almacena los datos de N empleados, para esto, en un proceso
repetitivo se ingresa el sexo (masculino, femenino) y el salario de cada empleado.
Se pide calcular:
a) El mayor y el menor salario
b) El promedio de salarios.
c) La cantidad de mujeres y varones que trabajan en esa empresa

Variables a utilizar en el programa:
n cantidad de empleados
sexo sexo del empleado
sal salario
mayor mayor salario
menor menor salario
suma suma de salarios
conVar contador de empleados varones
conMuj contador de empleadas mujeres
prom promedio de salarios
con contador de empleados

Cdigo fuente:
#include <iostream.h>
void main()
{
// Definir e inicializar variables
int n, con, conVar=0, conMuj=0;
double sal, mayor = 0, menor = 99999, suma = 0, prom;
char sexo;
// Leer dato
cout<<Ingresar cantidad de empleados: ;
cin>>n;
for (con = 1; con <= n; con++)
{
Lenguaje de Programacin I - Unidad I Yuliana Juregui y otros

70
cout<<Ingresar sexo: ;
cin>>sexo;
cout<<Ingresar salario: ;
cin>>sal;
if (sal > mayor)
mayor = sal;
if (sal < menor)
menor = sal;
suma = suma + sal;
switch (sexo)
{
case 'm' : conVar++; break;
case 'f' : conMuj++; break;
}
}
prom = suma / n;
cout<<El mayor salario es <<mayor<<endl
<<El menor salario es <<menor<<endl
<<El promedio de salarios es <<prom<<endl
<<La cantidad de varones que trabajan en la empresa es <<conVar<<endl
<<La cantidad de mujeres que trabajan en la empresa es <<conMuj<<endl;
}

2.3.5. Variantes de las estructuras repetitivas
Una de las variantes de las estructuras repetitivas son los bucles anidados, los
cuales son bucles incluidos dentro de otro bucle. Se pueden tener los siguientes
tipos de anidamiento:
a) Un bucle while dentro de un bucle while, do-while o for.
b) Un bucle dowhile dentro de un bucle dowhile, while o for.
c) Un bucle for dentro de un bucle for, while o dowhile.

Consideraciones a tener en cuenta al trabajar con bucles
Un bucle interno debe de estar completamente dentro del bucle externo que lo
contiene de lo contrario si los bucles se cruzan se obtendran resultados no
previstos.
Cuando se construyan los bucles anidados considere cada bucle como una
sentencia y siga la sintaxis ya definida para ellas.

Ejemplo 18
Hallar la tabla de multiplicar del 1 y del 2, que tenga la siguiente salida:

Tabla de multiplicar del 1
1 * 1 = 1
1 * 2 = 2
.
1 * 12 = 12

Tabla de multiplicar del 2
2 * 1 = 2
2 * 2 = 4

Lenguaje de Programacin I - Unidad I Yuliana Juregui y otros

71
2 * 12 = 24

Para este ejemplo, es prctico emplear una estrcutura for dentro de otro for.
Observamos que en la tabla del 1, el primer nmero aparece fijo mientras que el
segundo nmero varia de 1 a 12, incrementndose cada nmero en 1, lo mismo
sucede en la tabla del 2.
Para calcular el producto emplearemos la operacin:
m = i * j
Tenemos bucles anidados donde el bucle externo vara de 1 a 2, y el bucle interno
de 1 a 12

Variables a utilizar en el programa:
i controla el bucle externo
j controla el bucle interno
m producto de los nmeros i, j

Cdigo fuente:
#include <iostream.h>
void main()
{
//Definir variables
int i, j, m;
for (i = 1; i <= 2; i++)
{
cout<<Tabla de multiplicar del <<i<<endl;
for (j = 1; j <= 12; j++)
{
m = i * j;
cout<<i << * <<j<< = << m<<endl;
}
}
cout<<endl;
}

Ejemplo 19
Un centro de estudios desea saber cul ha sido el promedio ms alto, de un
conjunto de 10 alumnos, sabiendo que cada alumno ha llevado 5 asignaturas.

Variables a utilizar en el programa:
nota nota de cada una de las 5 asignaturas
suma suma de las 5 notas
prom promedio de cada alumno
mayor mayor promedio
con1 contador, que cuenta cada alumno
con2 contador, que cuenta cada nota

Cdigo fuente:
#include <iostream.h>
void main()
{
// Definir e inicializar variables
int nota, suma = 0, prom, mayor = 0, con1 , con2;
// Calculo
con1=1;
while (con1 <= 10)
{
Lenguaje de Programacin I - Unidad I Yuliana Juregui y otros

72
con2=1;
while (con2 <= 5)
{
cout<<Ingresar nota de asignatura <<con2<<: ;
cin>>nota;
suma = suma + nota;
con2++;
}
prom = suma / 5;
if (prom > mayor)
mayor = prom;
suma = 0;
con1++;
}
cout<<El mayor promedio es: <<mayor<<endl;
}

Ejemplo 20
Escriba un programa que permita ingresar nmeros enteros, y calcule el factorial de
cada nmero ingresado. El programa termina cuando se ingresa un nmero
negativo.

Variables a utilizar en el programa:
nro nmero ingresado
fact factorial
con contador

Cdigo fuente:
#include <iostream.h>
void main()
{
// Definir variables
int nro, fact, con;
// Leer Datos
do
{
cout<<Ingresar numero: ;
cin>>nro;
fact = 1;
if (nro >= 0)
{
for (con = 1;con <= nro;con++)
fact = fact * con;
cout<<El factorial de <<nro<< es <<fact;
}
}
while (nro >=0);
cout<<endl;
}


Ejemplo 21
Escriba un programa para encontrar todos los nmeros que sean capicas en un
rango dado. Un nmero es capica o poliandro, si al invertir el nmero nos da el
mismo nmero.

Lenguaje de Programacin I - Unidad I Yuliana Juregui y otros

73
Por ejemplo, los siguientes nmeros son capicas.
44 44
373 373
18481 18481

Variables a utilizar en el programa:
digito cada dgito del nmero
vi nmero inicial
vf nmero final
nro variable auxiliar donde guardamos cada nmero a invertir
inver nmero invertido

Cdigo fuente:
#include <iostream.h>
#include <iomanip.h>
void main()
{
// Definir e inicializar variables
int vi, vf, nro, digito, inver = 0, i;
// Leer datos
cout<<Ingresar el valor inicial y final de un rango de nmeros: ;
cin>>vi>>vf;
// Calcula nmero capica
for (i = vi; i<= vf; i++)
{
nro = i;
inver = 0;
while (nro >0)
{
digito = nro % 10;
inver = 10 * inver + digito;
nro = nro /10;
}
if (inver == i)
cout<<inver<<setw(3);
}
cout<<endl;
}

Ejemplo 22
Escriba un programa para hallar los nmeros primos en un rango dado, un nmero
es primo si es divisible por s mismo y por la unidad. Algunos nmeros primos son:

1 2 3 5 7 11 13

Variables a utilizar en el programa:
digito cada digito del nmero
vi nmero inicial
vf nmero final
nro variable auxiliar donde guardamos el nro
p contador de nmeros primos
k contador que representa los posibles divisores
i controla el bucle for

Cdigo fuente:
#include <iostream.h>
Lenguaje de Programacin I - Unidad I Yuliana Juregui y otros

74
#include <iomanip.h>
void main()
{
// Definir variables
int vi, vf, nro, k, p ;
// Leer datos
cout<<Ingresar valor inicial y final de un rango: ;
cin>>vi>>vf;
// Calcula los nmeros primos
for (nro = vi; nro <= vf; nro++)
{
p = 0;
for (k = 1; k <= nro; k++)
{
if (nro % k == 0)
p++;
}
if (p <= 2 )
cout<<nro;
}
cout<<endl;
}

2.3.6. Ejercicios propuestos
1. Determinar el factorial de los N primero nmeros pares

Nmero Factorial
2
4
6
8
2
24
720
40320
2. El un proceso repetitivo se ingresa nmeros enteros, se pide elaborar un
programa que calcule el promedio de nmeros negativos. El programa termina
cuando se ingresa el nmero cero.
3. Escriba un programa que lea un nmero y lo despliegue como sumas sucesivas
de nmeros. Por ejemplo:
nmero = 15245
10000 + 5000 + 200 + 40 + 5
4. Escriba un programa para buscar un nmero cuyo cuadrado sea igual o ms
cercano a un nmero ingresado.
Por ejemplo:
Si se ingresa 14 el cuadrado ms cercano es 3.
Si se ingresa 16 el cuadrado ms cercano es 4.
5. Construir un programa que permita ingresar nmeros enteros, calcular la suma
de los dgitos pares y la suma de sus dgitos impares de cada nmero positivo
ingresado. El programa termina cuando se ingresa el cero.
6. Se registran las N aulas de la seccin secundaria de un centro educativo, y por
cada seccin se registran los promedios finales de sus M alumnos. Elaborar un
programa que muestre el nombre del mejor alumno de cada aula y el mejor
Lenguaje de Programacin I - Unidad I Yuliana Juregui y otros

75
alumno de toda la seccin secundaria, as mismo calcular el promedio general
del aula.
7. Un nmero perfecto es aquel cuya suma de sus divisores excluyendo el mismo
nmero da como resultado el nmero. Por ejemplo, 6 es un nmero perfecto,
porque 1 + 2 + 3 = 6. Se pide elaborar un programa que muestre los 5
primeros nmeros perfectos.
8. Un centro comercial ofrece tres tipos de productos, como se muestra en el
siguiente cuadro.

Producto Precio Descuento (%)
A
B
C
15.20
12.47
10.50
10
8
5
El centro comercial vende dichos productos a N nmero de clientes. Un cliente
cualquiera puede comprar M productos de cada tipo. Se pide elaborar un
programa que calcule el total que paga cada cliente y el total que recauda el
centro comercial.
9. Un almacn se encuentra de aniversario y ha programado una serie de ofertas
con la finalidad de brindar facilidades a sus clientes y al a vez de incrementar
sus ventas. Estas ofertas se basan especficamente en un porcentaje de
descuento sobre el total de compra el cual vara de acuerdo al monto:
Por un monto mayor o igual a $500 se har un descuento del 30%
Por un monto menor de $500 pero mayor o igual a 200 se har un
descuento del 20%
Por un monto menor de $200 pero mayor o igual a 100 se har un
descuento del 10%
Se pide elaborar un programa que calcule el monto total que recauda el
almacn, as como, el monto final que paga un cliente. El programa termina
cuando se ingresa una compra negativa.
10. Determinar la suma de los trminos que ocupan las posiciones pares y la suma
de los trminos que ocupan las posiciones impares, de la siguiente serie,
considerando los n primeros trminos:
1/3 + 2/5 + 3/7 + 4/9 + 5/11 + ...
11. Una compaa de seguros est preparando un estudio concerniente de todos
sus asegurados. Por cada asegurado se registra los siguientes datos: ao de
nacimiento y sexo (M o F), se pide calcular:
El porcentaje de asegurados menores de 30 aos
El porcentaje de asegurados de sexo femenino y masculino
La mayor y la menor edad de los asegurados
El registro de asegurados finaliza cuando se ingresa un ao negativo.
12. Construir un programa que calcule y muestre el sueldo de los N empleados de
un empresa que trabajan por horas, la tarifa por cada hora trabajada es nica
(igual) para todos los empleados, asimismo, calcular la cantidad de empleados
que reciben un sueldo menor a S/.500.00, la cantidad de empleados que
reciben un sueldo entre S/.500.00 y S/.1200.00 y la cantidad de empleados que
reciben un sueldo mayor a S/.1200.00.
Lenguaje de Programacin I - Unidad I Yuliana Juregui y otros

76
Leccin 3

Programacin Modular

La programacin modular es un mtodo de diseo que permite resolver un
problema complejo mediante una descomposicin en problemas ms pequeos. Se
basa en la descomposicin descendente o jerarqua de mdulos, que se enlazan
mediante un mdulo principal.
Un mdulo o subprograma es equivalente a una subrutina. Los subprogramas son
programas independientes que resuelven determinadas tareas, adems pueden
representar tareas simples que se ejecutan una vez o cuantas veces se precise, son
llamados desde el programa principal u otro mdulo o subprograma.
Este es un estilo de programacin al que se le conoce como programacin
descendente o divide y venceras.
Cuando trabajamos con mdulos siempre encontraremos un mdulo que comanda
a los dems mdulos y que funciona como programa o mdulo principal y es el que
llama a los dems mdulos para poder ejecutar un programa.








Figura 3.1. Representacin de mdulos
3.1. Mdulo
Es un subprograma que representa una tarea determinada, en C/C++ se le conoce
como funcin y se identifica por medio de un nombre y es llamado o invocado
desde otras partes del programa. Durante la llamada del mdulo se pueden
intercambiar datos, logrando as, que el mdulo reciba datos y devuelva resultados
utilizando para ello variables llamadas parmetros.

3.1.1. Partes de un Mdulo
Un mdulo est formado por dos partes: La declaracin del mdulo y el cuerpo del
mdulo, tal como se ilustra a continuacin.

tipo nombreDelMdulo (Lista de parmetros)
{

// Sentencias

}

Cuerpo del mdulo
Declaracin de mdulo
Raz
Mdulo 1 Mdulo 2 Mdulo 3
Mdulo 4 Mdulo 5 Mdulo 6 Mdulo 7
Mdulo 10 Mdulo 11 Mdulo 8 Mdulo 9
Mdulo 12
Lenguaje de Programacin I - Unidad I Yuliana Juregui y otros

77
3.1.2. Elementos de la declaracin de un mdulo
tipo: Especfica el tipo de dato que devuelve el mdulo. El tipo es un int, char,
double, etc.
nombreDelMdulo: puede ser cualquier identificador vlido del C++.
Lista de parmetros: es el rea o zona entre parntesis en el que se ubican
cero, una o ms variables denominadas parmetros los cuales van a estar
separados por comas.

3.1.3. Cuerpo del mdulo
Conformado por las instrucciones o sentencias que estn entre las llaves de inicio o
abertura y fin o cierre de mdulo y representan la tarea que va a realizar el
mdulo.

3.2. Parmetros
Son datos de entrada o salida mediante los cuales el mdulo se comunica
explcitamente con un sub-modulo o el mdulo principal que lo ha invocado. Los
parmetros pueden ser de 2 tipos:
Parmetros actuales, son los datos que se mandan a un mdulo y que son
ingresados al mdulo por la lista de parmetros.
Parmetros formales, son los datos en la lista de parmetros que actan como
intermediario de los parmetros actuales y que son manipulados dentro del
mdulo.
En una llamada a un mdulo tiene que verificarse que:
El nmero de parmetros actuales debe de ser igual al nmero de parmetros
formales.
Los parmetros que ocupan el mismo orden en cada una de las listas deben de
ser compatibles en tipo.

3.3. Estructura de un programa que contiene mdulos
A continuacin se define la estructura de un programa con mdulos. En ste se
identifica al mdulo principal y a los otros mdulos creados por el desarrollador, as
como las listas de parmetros actuales y formales.

//Declaracin de la funcin prototipo
tipoDeMdulo nombreDelMdulo1 (Lista de parmetros);
tipoDeMdulo nombreDelMdulo2 (Lista de parmetros);
tipoDeMdulo nombreDelMdulo3 (Lista de parmetros);

void main ( )
{
//Cuerpo del mdulo principal
nombreDelMdulo1 (Lista de parmetros)
nombreDelMdulo2 (Lista de parmetros)
nombreDelMdulo3 (Lista de parmetros)
}
Parmetros
actuales
Lenguaje de Programacin I - Unidad I Yuliana Juregui y otros

78
tipoDeMdulo nombreDelMdulo1 (Lista de parmetros)
{
// Cuerpo del mdulo
}
tipoDeMdulo nombreDelMdulo2 (Lista de parmetros)
{
// Cuerpo del mdulo
}
tipoDeMdulo nombreDelMdulo3 (Lista de parmetros)
{
// Cuerpo del mdulo
}

3.3.1. Declaracin de una funcin prototipo
El compilador utiliza la funcin prototipo para asegurar que los tipos de argumentos
pasados a una funcin son del mismo tipo que los correspondientes parmetros
formales. Esta propiedad se conoce como verificacin estricta de tipos.
Sin verificacin estricta de tipos, es ms fcil pasar valores ilegales a funciones.
Una funcin no puede ser llamada si previamente no est definida o declarada.

3.4. Tipos de Mdulos
Los mdulos se pueden clasificar segn el tipo de retorno o valor que devuelve. As
existe dos tipos de mdulos: funciones y procedimientos (Joyanes et al., 2003).

3.4.1. Funciones (tipo no void)
Es un subprograma que realiza ciertos clculos con una o ms variables de entrada
y produce un nico valor o resultado que puede ser un valor numrico, un carcter,
una cadena.
Se caracteriza porque devuelve un valor al lugar desde donde se efectu la llamada
y es por ello es que se especifica en tipo, el tipo de dato que devuelve la funcin.
Adems se debe incluir la palabra reservada return seguido del valor devuelto. As
tenemos:

Tipo nombreDeLaFuncin (Lista de parmetros)
sentencias;
return valor;
Fin_funcin

Tipo: Especfica el tipo de dato que devuelve la funcin. El tipo es un int, char,
double, etc.

3.4.1.1. La sentencia return
Se utiliza dentro de una funcin con el nico propsito de retornar al programa
principal el dato calculado por el conjunto de sentencias de la funcin. Tiene los
siguientes formatos:
a) return
Parmetros
formales
Lenguaje de Programacin I - Unidad I Yuliana Juregui y otros

79
b) return( expresin )
a) Finaliza la ejecucin de una funcin pero b) adems devuelve el valor o dato
representado por la expresin

3.4.1.2. Llamada a una funcin
Se llama a una funcin desde algn punto del programa, para que realice la tarea
para la cual se dise. La llamada a una funcin se realiza mediante un nombre y
una lista de parmetros (si es que los hubiera) entre parntesis.

x = nombreDeLaFuncin (lista de parmetros)




La variable x sirve para guardar el valor devuelto de la funcin, debe ser del mismo
tipo del valor que se devuelve.
Por ejemplo:
x = suma (n1, n2);
cout<<La suma es: <<x;
La funcin puede ser llamada desde el programa principal o desde cualquier otra
funcin.
Si la funcin no tiene parmetros, los parntesis estarn vacos. Al utilizar
parmetros se debe tener en cuenta, que estos deben coincidir en nmero, tipo y
orden, tanto en la declaracin del mdulo como en la llamada a ste.

3.4.1.3. Proceso de llamada a una funcin
Una vez que se encuentra una llamada a una funcin, se transfiere el control del
programa a la funcin invocada, se ejecuta las instrucciones del cuerpo de la
funcin y finalmente, el control del programa regresa a la instruccin siguiente a la
llamada a la funcin. En el siguiente ejemplo se tiene un programa que utiliza la
funcin suma en el cual se ilustra el proceso de llamada a una funcin.

#include <iostream.h>
int suma(int pnro1,int pnro2); // funcin prototipo
void man()
{
int x, nro1=3, nro2=5;
x = suma (nro1, nro2); // llamada a la funcin
cout<<la suma es = << x;
cout<<endl;
}
int suma (int pnro1, int pnro2)
{
int r;
r = pnro1 + pnro2;
return r;
x almacena el
valor devuelto
por la funcin

Nombre de
la funcin
Nombres de los parmetros,
tambin conocidos como
parmetros actuales
El control retorna a
la instruccin que
sigue a la llamada
Transfiere
el control a
la funcin
Lenguaje de Programacin I - Unidad I Yuliana Juregui y otros

80
}

Pasos del proceso de llamada:
a) Se ejecuta el mdulo principal (void main()), y se asignan valores para las
variables nro1 = 3 y nro2 =5.
b) Se llama al mdulo suma() y los valores de nro1 y nro2, son asignados a los
parmetros pnro1 y pnro2 respectivamente, as entonces pnro1 recibe el valor 3
y pnro2 recibe el valor de 5.
Se ejecutan las sentencias que estn dentro del cuerpo del mdulo suma,
esto es, se suman los dos nmeros: 3 + 5, obtenindose el valor de r = 8.
Se ejecuta la sentencia retornar, para el valor de r = 8, devolviendo este
valor al lugar donde se hizo la llamada, y asignando a x el valor de 8.
c) Finalmente, se obtiene la suma de dos nmeros que en este caso es 8.

3.4.2. Procedimientos (tipo void)
Es un subprograma que proporciona cero, uno o varios valores en funcin de sus
parmetros definidos en su formato.
Se caracteriza porque no se devuelve ningn valor al lugar desde donde se efectu
la llamada, y es por ello que no se especifica ningn tipo de resultado. Como no se
devuelve ningn valor, la palabra reservada return no es necesaria. As tenemos:

Procedimiento nombreDelProcedimiento (Lista de parmetros)
Sentencias;
Fin_procedimiento

Donde:
La palabra Procedimiento especifica la palabra reservada void.
Para llamar a un procedimiento basta con escribir su nombre y los correspondientes
parmetros si los hubiera. El tratamiento de los parmetros es idntico al ya
mencionado para la funcin.

3.4.3. Mtodos para el paso de parmetros
El paso de parmetros pueden realizarse de dos maneras: Por valor y por
referencia

3.4.3.1. Por valor
Cuando se genera una copia de los parmetros actuales en los parmetros formales
se dice que estamos haciendo un paso de parmetros por valor y que se da de
modo automtico al invocarse a un mdulo, sin producir modificaciones en los
parmetros actuales (Gottfried, 1991).
Se puede modificar el valor de un parmetro formal dentro del mdulo, pero el
valor del parmetro actual en el punto de llamada no cambiar. Los parmetros por
valor no pueden ser modificados por el subprograma.

Para pasar una variable por valor, se debe tener en cuenta lo siguiente:
a) Parmetro actual:
Lenguaje de Programacin I - Unidad I Yuliana Juregui y otros

81
Pasar el nombre de la variable.

nFuncion(v)

Nombre de la funcin Nombre de la variable

b) Parmetro formal:
Declarar las variables con el mismo tipo de dato correspondiente a parmetro
actual.

void nFuncion (tipo nv)

Nombre de la Funcin nv es el puntero

Ejemplo:
Pasar por valor a = 3

#include <iostream.h>
void porValor(int x); //funcin prototipo
void main()
{
// Definir e inicializar variable
int a = 3;
cout<<\nAntes de la llamada a = << a;
porValor (a); // llamada al mdulo
cout<<\nDespues de la llamada a = << a;
cout<<endl;
}
void porValor(int x)
{
x = x + 1;
}

La salida del programa:
Antes de la llamada a = 3
Despus de la llamada a = 3 (no cambia el parmetro actual)

3.4.3.2. Por referencia
Es aquel en el que se pasa una referencia (direccin) a una variable y no el valor, lo
que permite que pueda ser modificada por el mdulo que ha sido invocado.
Cualquier cambio de valor que sufra un parmetro dentro del mdulo, tambin se
produce en el parmetro actual que se le envi al mdulo.
Pasar una referencia significa darle la direccin de memoria de la variable, la cual
es representada por el ampersand (&). Por ejemplo,

Direccin 205
18

x
Si llamamos a la variable x nos devuelve el valor de 18, pero si referenciamos &x
nos devuelve la direccin 205.
Lenguaje de Programacin I - Unidad I Yuliana Juregui y otros

82

Para pasar una variable por referencia, se debe tener en cuenta lo siguiente:

a) Parmetro actual:
Pasar el nombre de la variable.

nFuncion(v)

Nombre de la funcin Nombre de la variable

b) Parmetro formal:
Declarar las variables con el mismo tipo de dato correspondiente a parmetro
actual anteponiendo el ampersand (&).

void nFuncion (tipo &nv)

Nombre de la Funcin nv es el puntero

Ejemplo:
Pasar por referencia a = 3

#include <iostream.h>
void porReferencia (int &x); //funcin prototipo
void main()
{
//Definir e inicializar variable
int a = 3;
cout<<\nAntes de la llamada a = <<a;
porReferencia (a); // llamada al mdulo
cout<<\nDespues de la llamada a = <<a;
cout<<endl;
}
void porReferencia (int &x)
{
x = x + 1;
}

La salida del algoritmo:
Antes de la llamada a = 3
Despus de la llamada a = 4 (cambia el parmetro actual)

3.4.4. Variables Globales y Locales
Las Variables Globales, son aquellas variables que pueden ser usadas en todos
los mdulos del programa, estas variables son declaradas fuera de todos los
mdulos.
Las Variables Locales, son aquellas variables que solo son usadas dentro del
mdulo donde es declarada.

Ejemplo:
// Declaracin de variables globales
Tipo nombreDeVariableGlobal1, nombreDeVariableGlobal2
void main()
{
Lenguaje de Programacin I - Unidad I Yuliana Juregui y otros

83
// Declaracin de variables locales
tipo: nombreDeVariableLocal1, nombreDeVariableLocal2
nombreDelMdulo1 (Lista de parmetros)
nombreDelMdulo2 (Lista de parmetros)
nombreDelMdulo3 (Lista de parmetros)
}
tipoDeMdulo nombreDelMdulo1 (Lista de parmetros)
{
// Declaracin de variables locales
tipo: nombreDeVariableLocal1, nombreDeVariableLocal2
Cuerpo del mdulo1
}
tipoDeMdulo nombreDelMdulo2 (Lista de parmetros)
{
// Declaracin de variables locales
tipo: nombreDeVariableLocal1, nombreDeVariableLocal2
Cuerpo del mdulo2
}
tipoDeMdulo nombreDelMdulo3 (Lista de parmetros)
{
// Declaracin de variables locales
tipo: nombreDeVariableLocal1, nombreDeVariableLocal2
Cuerpo del mdulo3
}

Para el desarrollo de los ejercicios emplearemos los trminos:

a) Precondicin, postcondicin

Precondicin Poscondicin
Son los datos de entrada Es el resultado(s), que obtenemos
al resolver el programa
Tabla 4.1. Precondicin y postcondicin

Ejemplo:
Para calcular el rea de un rectngulo, area = base * altura
Precondicin: base, altura
Postcondicin: area


b) Paso de parmetros, al pasar parmetros puede pasar con el mismo nombre de
la variable o nombres diferentes, si pasa con nombre diferente se recomienda
utilizar anteponer una p al nombre de la variable para indicar que es un
parmetro.

Elemento Parmetro
actual
Parmetro
formal
Comentario
int nro nro nro Pasa con el mismo
nombre Para un
dato simple int nro nro pnro Pasa con nombre
diferente
int a[10]; a[10] a[10] Pasa con el mismo
nombre Para un
arreglo int a[10]; a[10] pa[10] Pasa con nombre
diferente
Lenguaje de Programacin I - Unidad I Yuliana Juregui y otros

84
int &x; x x Pasa con el mismo
nombre Para un
puntero int &x; x px Pasa con nombre
diferente
char mensa[80]; hola mensaje[80] Pasa con el mismo
nombre Para una
cadena char mensa[80]; hola pmensaje[80] Pasa con nombre
diferente
Tabla 4.2. Ejemplos de paso de parmetros

Ejemplo:
Para el rea de un rectngulo, rea = base * altura
Parmetro actual: (base, altura)
Parmetro formal: (int pbase, int paltura)

3.4.5. Ejercicios resueltos
Ejemplo 01
Escriba un programa que calcule el rea de un cuadrado.
rea del cuadrado = lado * lado

Mdulos que se utilizan:
int areaCuadrado(int plado), tiene como precondicin el lado (plado) de un
cuadrado, y como poscondicin el rea de un cuadrado.

Parmetros a utilizar en el programa:
lado parmetro actual del mdulo areaCuadrado()
r guarda el valor de retorno del mdulo areaCuadrado()
plado parmetro formal del mdulo areaCuadrado( )

Cdigo fuente:
#include <iostream.h>
int areaCuadrado (int plado);
void main()
{
// Definir variables
int lado, r;
cout<<Ingrese lado del cuadrado:";
cin>>lado;
r = areaCuadrado (lado);
cout<<El area del cuadrado es: << r<<endl;
}
int areaCuadrado (int plado)
{
// Definir variables
int a;
a = plado * plado;
return a;
}

Pasos del proceso de llamada:
1. Se ejecuta el mdulo principal (void main()) en donde se lee el lado. Por
ejemplo lado = 4
Lenguaje de Programacin I - Unidad I Yuliana Juregui y otros

85
2. Se llama al mdulo areaCuadrado( ), se pasa el valor de lado que es asignado a
plado, entonces plado = 4 .
a) Se ejecutan las sentencias que estn dentro del mdulo obtenindose el
valores de a = 16.
b) Se ejecuta la sentencia retornar para un valor de a = 16, devolviendo
este valor al lugar donde fue la llamada y asignando a la variable r un
valor de 16.
3. Finalmente se obtiene el rea de un cuadrado que en este caso es : r = 16

Ejemplo 02
Escriba un programa que identifique si un nmero entero es par o impar.

Mdulos que se utilizan:
void ingresar(int &pnro), permite ingresar un nmero cualquiera a travs del
parmetro por referencia &pnro.
bool esparImpar(int pnro), tiene como precondicin un nmero pnro, y como
postcondicin un valor booleano, verdadero si pnro es par y falso en caso
contrario.
void mostrar(int pnro, bool pm), muestra un mensaje en el que se indica si el
nmero ingresado es par o impar.

Cdigo fuente:
#include <iostream.h>
void ingresar(int &pnro);
bool esparImpar(int pnro);
void mostrar(int pnro, bool pm);
void main()
{
// Definir variables
int nro;
bool m;
ingresar (nro);
m = esparImpar (nro);
mostrar (nro, m);
}
void ingresar(int &pnro)
{
cout<<"Ingresar numero:";
cin>>pnro;
}
bool esparImpar(int pnro)
{
// Definir variable
bool r;
r = pnro % 2;
return r;
}
void mostrar(int pnro, bool pm)
{
if (pm)
cout<<pnro<<" es nmero impar"<<endl;
else
cout<<pnro<< " es nmero par"<<endl;
}

Pasos del proceso de llamada:
Lenguaje de Programacin I - Unidad I Yuliana Juregui y otros

86
1. Se ejecuta el mdulo principal (void main()) y se llama al mdulo ingresar(),
en el que se lee un valor para nro, por ejemplo 8.
2. Se llama al mdulo esparImpar(), devolvindose un valor falso, dado que el
nmero es igual a 8 ( el residuo es cero (falso))
3. Finalmente se llama la mdulo mostrar() donde se obtiene el resultado: 8 Es
nmero par

Ejemplo 03
Escriba un programa para intercambiar los valores de dos nmeros enteros.

Mdulos que se utilizan:
void ingresar(int &pa, int &pb), permite ingresar dos nmeros enteros a travs
de los parmetros por referencia &pa y &pb.
void intercambio (int &pa, int &pb), tiene como precondicin a las variables pa y
pb, y como postcondicin el intercambio de las variables.
void mostrar (int pa, int pb), muestra los valores intercambiados de pa y pb.

Cdigo fuente:
#include <iostream.h>
void ingresar(int &pa, int &pb);
void intercambio(int &pa, int &pb);
void mostrar(int pa, int pb);
void main()
{
// Definir variables
int a,b;
ingresar (a, b);
intercambio (a, b);
mostrar (a, b);
}
void ingresar(int &pa, int &pb)
{
cout<<"Ingrese primer numero:";
cin>>pa;
cout<<"Ingrese segundo numero: ";
cin>>pb;
}
void intercambio(int &pa, int &pb)
{
// Definir variable
int temp;
temp = pa;
pa = pb;
pb = temp;
}
void mostrar(int pa, int pb)
{
cout<<"a= "<<pa<<" b = "<< pb<<endl;
}

Ejemplo 04
Escriba un programa para calcular la suma de los N trminos de la serie:

1/2 + 2/2
2
+ 3/2
3
+ 4/2
4
+ 5/2
5
+

Mdulos que se utilizan:
Lenguaje de Programacin I - Unidad I Yuliana Juregui y otros

87
void ingresar(int &pn), permite ingresar un valor a travs del parmetro por
referencia &pn.
int potencia(int pnro, int pexpo), tiene como precondicin a las variables pnro y
pexpo, y como postcondicin un nmero entero que representa la potencia de
pnro elevado a pexpo.
void mostrar(double ps), muestra el valor del calculo de la sumatoria de la
serie.

Cdigo fuente:
#include <iostream.h>
#include <math.h>
void ingresar(int &pn);
int potencia (int pnro, int pexpo);
void mostrar(double ps);
void main()
{
// Definir e inicializar variables
int n, i, r;
double s = 0;
ingresar (n);
for (i =1;i <= n;i++)
{
r = potencia (2, i);
s = s + (double)i / r;
}
mostrar (s);
}
void ingresar(int &pn)
{
cout<<"Ingrese el numero:";
cin>>pn;
}
int potencia (int pnro, int pexpo)
{
// Definir variable
int result;
result = (int) pow(pnro,pexpo);
return result;
}
void mostrar(double ps)
{
cout<<"La suma es "<< ps<<endl;
}

Ejemplo 05
Escriba un programa para calcular la suma de los dgitos de un nmero.

Mdulos que se utilizan:
void ingresar(int &pnro), permite ingresar un valor a travs del parmetro por
referencia &pnro.
int sumaDigitos(int pnro), tiene como precondicin a un nmero entero pnro, y
como postcondicin la suma de los dgitos de pnro.
void mostrar (int pr), muestra la sumas de dgitos del nmero.

Cdigo fuente:
#include <iostream.h>
Lenguaje de Programacin I - Unidad I Yuliana Juregui y otros

88
void ingresar(int &pnro);
int sumaDigitos(int pnro);
void mostrar(int pr);
void main()
{
// Definir variables
int nro, r;
ingresar (nro);
r = sumaDigitos (nro);
mostrar (r);
}
void ingresar(int &pnro)
{
cout<<"Ingrese numero:";
cin>>pnro;
}
int sumaDigitos(int pnro)
{
// Definir e inicializar variables
int digito, suma = 0;
while (pnro > 0)
{
digito = pnro % 10;
suma = suma + digito;
pnro = pnro / 10;
}
return suma;
}
void mostrar(int pr)
{
cout<<"La suma de digitos es "<< pr<<endl;
}

Ejemplo 06
Escriba un programa para leer dos nmeros y calcular si son parientes. Se dice a es
pariente de b si la suma de los dgitos de a
2
es igual a b y recprocamente la
suma de los dgitos de b
2
es igual a a.

Por ejemplo: 13 y 16 son parientes:
13
2
= 169 1 + 6 + 9 = 16
16
2
= 256 2 + 5 + 6 = 13

Mdulos que se utilizan:
void ingresar(int &pa, int &pb), permite ingresar dos valores a travs de los
parmetros por referencia &pa y &pb.
int parientes(int pa), tiene como precondicin a un nmero entero pa, y como
postcondicin a un nmero entero que representa la suma de los dgitos de pa.
void mostrar (int pa, int pb, int pr, int ps), muestra un mensaje en el que se
indica si pa es o no pariente de pb.

Cdigo fuente:
#include <iostream.h>
void ingresar(int &pa, int &pb);
int parientes(int pa);
void mostrar(int pa, int pb, int pr, int ps);
void main()
Lenguaje de Programacin I - Unidad I Yuliana Juregui y otros

89
{
// Definir variables
int a, b, r, s;
ingresar (a, b);
r= parientes (a * a);
s =parientes (b * b);
mostrar (a, b, r, s);
}
void ingresar(int &pa, int &pb)
{
cout<<"Ingrese primer numero:";
cin>>pa;
cout<<"Ingrese segundo numero:";
cin>>pb;
}
int parientes(int pa)
{
// Definir e inicializar variables
int digito , s = 0;
while (pa > 0)
{
digito = pa % 10;
s = s + digito,
pa = pa /10;
}
return s;
}
void mostrar(int pa, int pb, int pr, int ps)
{
if ((pr == pb) && (ps == pa))
cout<<pa<< " Es pariente de "<< pb<<endl;
else
cout<<pa<<" No es pariente de "<<pb<<endl;
}

Pasos del proceso de llamada:
1. Se ejecuta el mdulo principal (void main()) y se llama al mdulo ingresar() en
el que se lee dos valores para a y b. Por ejemplo a = 13, b = 16
2. Se llama al mdulo parientes() dos veces:
a. La primera vez con el valor de a = 13. Por ejemplo parientes (13*13), se
ejecutan las sentencias del mdulo obtenindose la suma de los dgitos del
cuadrado de 13 que es 169, entonces: s = 16 (1+6+9).
Se ejecuta la sentencia retornar para un valor de s = 16, devolviendo este
valor al lugar donde fue la llamada y asignando a la variable r un valor de 16
b. En la segunda vez con el valor de b = 16. Por ejemplo parientes (16*16), se
ejecutan las sentencias dentro del mdulo obtenindose la suma de los
dgitos del cuadrado de 16 que es 256, entonces: s =13 (2+5+6).
Se ejecuta la sentencia retornar para un valor de s = 13, devolvindose este
valor al lugar donde fue la llamada y asignando a la variable s un valor de
13.
3. Finalmente obtiene se llama al mdulo mostrar () en el que se muestra el
resultado: 13 es pariente con 16.

Ejemplo 07
Escriba un programa para averiguar si una fecha ingresada es correcta y de ser as
calcular el da anterior.
Lenguaje de Programacin I - Unidad I Yuliana Juregui y otros

90

Por ejemplo:
Si se ingresa 23/15/2007 se mostrar La fecha no es correcta
Si se ingresa 19/11/2007 se mostrar El da anterior es 18/11/2007

Mdulos que se utilizan:
void ingresar(int &pd, int &pm, int &pa), permite ingresar una fecha a travs de
los parmetros por referencia &pd, &pm, &pa.
int cantidadDias(int pm, int pa), tiene como precondicin el mes y el ao y
como postcondicin el nmero de das que trae el mes
void diaAnterior(int pd, int pm, int pa), tiene como precondicin el da, el mes y
el ao, y como postcondicin el da anterior.

Cdigo fuente:
#include <iostream.h>
#include <iomanip.h>
void ingresar(int &pd, int &pm, int &pa);
int cantidadDias(int pm, int pa);
void diaAnterior(int pd, int pm, int pa);
void main()
{
// Definir e inicializar variables
int d, m, a, maxDia;
//Lectura de datos
ingresar (d,m,a);
maxDia = cantidadDias (m, a);
if (d>0 && d<maxDia && m>0 && m<13 && a>0)
diaAnterior(d, m, a);
else
cout<<"La fecha no es correcta";
cout<<endl;
}

void ingresar(int &pd, int &pm, int &pa)
{
cout<<"Ingrese fecha:";
cin>>pd>>pm>>pa;
}

int cantidadDias(int pm, int pa)
{
int md;
switch (pm)
{
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12: md = 31; break;
case 4:
case 6:
case 9:
case 11: md = 30; break;
case 2 : if (((pa % 4 == 0) && (pa % 100 != 0)) || (pa % 400 == 0))
Lenguaje de Programacin I - Unidad I Yuliana Juregui y otros

91
md = 29;
else
md = 28;
}
return md;
}
void diaAnterior(int pd, int pm, int pa)
{
pd = pd - 1;
if (pd == 0)
{
pm = pm - 1;
pd = cantidadDias (pm, pa);
if (pm == 0)
{
pa = pa - 1;
pm = 12;
pd = 31;
}

}
cout<<"el dia anterior es "<<pd<<setw(5)<<pm<<setw(5)<<pa;
}

Ejemplo 08
Escriba un programa que realiza la conversin de un nmero que est en una base
x a base decimal. Por ejemplo, el nmero 325
(7
que esta en base 7 (x = 7) se
convierte en base decimal en 166.

En la siguiente tabla, se muestra los datos de prueba y los resultados obtenidos al
ejecutar el programa.


Nmero a
convertir y su
correspondiente
base
Proceso de Conversin
(descomposicin polinmica)
Resultado
de la
conversin
1304
(5
1*5
3
+ 3*5
2
+ 0*5
1
+ 4*5
0
= 125 + 75 + 0 + 4 204
325
(7
3*7
2
+ 2*7
1
+ 5*7
0
= 147 + 14 + 5 166

Mdulos que se utilizan:
void ingresar(int &pnro, int &pbase), permite ingresar un nmero y su base a
travs de los parmetros por referencia &pnro, &pbase.
int convertirBaseXBase10(int pnro, int pbase), tiene como precondicin un
nmero y su base, y postcondicin un valor entero que representa el nmero
convertido a base decimal.
void mostrar(int pr), muestra el resultado del nmero convertido a base
decimal.

Cdigo fuente:
#include <iostream.h>
#include <math.h>
void ingresar(int &pnro, int &pbase);
int convertirBaseXBase10 (int pnro, int pbase);
void mostrar(int pr);
void main()
Lenguaje de Programacin I - Unidad I Yuliana Juregui y otros

92
{
// Definir variables
int nro, base, r;
ingresar (nro , base);
r = convertirBaseXBase10 (nro, base);
mostrar (r);
}
void ingresar(int &pnro, int &pbase)
{
// Leer variables
cout<<"Ingresar un numero y su base:";
cin>>pnro>> pbase;
}
int convertirBaseXBase10 (int pnro, int pbase)
{
// Definir e inicializar variables
int digito, suma=0, expo=0;
while (pnro >0)
{
digito = pnro % 10;
suma = suma+ digito *(int) pow(pbase,expo);
expo = expo + 1;
pnro = pnro / 10;
}
return suma;
}
void mostrar(int pr)
{
cout<<"El numero es "<<pr<<endl;
}

Pasos del proceso de llamada
1. Se ejecuta el mdulo principal (void main()) y se llama al mdulo ingresar(),
donde se lee los valores de nro y base. Por ejemplo nro = 325 que es nmero a
convertir y base = 7 la nueva base de este numero.
2. Se llama al mdulo convertirBaseXBase10(), se pasa los valores de nro y base,
que son asignados a los parmetros pnro, pbase respectivamente, as entonces
pnro = 325 y pbase = 7.
a. Se ejecutan las sentencias dentro del mdulo, para estos valores
obtenindose un valor de suma = 166.
b. Se ejecuta la sentencia retornar para un valor suma = 166, devolviendo
este valor al lugar donde fue llamada, y asignando a la variable r un
valor de 166.
3. Finalmente se llama al mdulo mostrar(), donde se muestra el nmero en base
decimal, que en este caso es 166.

3.5. Ejercicios propuestos
1. Escriba un programa para calcular el rea y el permetro de un rectngulo.
rea = base * altura
Permetro = 2 *(base + altura)
2. Escriba un programa que lea dos nmeros tal como a y b, y diga si a es o no
mltiplo de b.
3. Escriba un programa para calcular la cantidad de dgitos de un nmero entero.
Lenguaje de Programacin I - Unidad I Yuliana Juregui y otros

93
4. Escriba un programa que calcule la suma de los N trminos de la siguiente
serie:
1 - 2 + 3 - 4 + 5 6 +
Por ejemplo:
Si n = 3 la suma es igual a 2
Si n = 5 la suma es igual a 3
5. Escriba un programa que calcule el producto de los N trminos de la siguiente
serie:
1 * 1/2 * 1/3 * 1/4 * 1/5 *
Por ejemplo:
Si n = 3 el producto es igual a 0.16666
Si n = 5 el producto es igual a 0.00833
6. La oficina central de climatologa de nuestro pas desea averiguar la
temperatura promedio de un determinado mes. Escribir un programa que
registre la temperatura diaria teniendo presente la cantidad de das que trae el
mes en evaluacin, adems mostrar la temperatura ms alta y ms baja del
mes.
7. Escriba un programa que averige si una fecha ingresada es correcta o no, en
caso sea correcta calcular el da siguiente.
8. Ingresar la edad y el sexo de N personas y calcular la cantidad de mujeres
mayores de edad, la cantidad de varones menores de edad y el porcentaje que
representa las personas mayores y menores de edad.
9. En una universidad los alumnos estn categorizados en 4 categoras como se
muestra el siguiente cuadro:

Categora Pensin(S/.)
A 750
B 650
C 550
D 450
Semestralmente la universidad efecta rebajas en las pensiones de sus
estudiantes a partir del segundo ciclo en base al promedio ponderado del ciclo
anterior, segn el siguiente cuadro:

Promedio Descuento(%)
0-13 0
14-16 10
17-18 12
19-20 15
Escriba un programa que determine cunto de rebaja recibir un estudiante
sobre su pensin actual y cul es el monto de su nueva pensin.
10. Una empresa almacena los datos de N empleados, para esto, en un proceso
repetitivo se ingresa el sexo y el salario de cada empleado. Se pide calcular:
El mayor y el menor salario
El promedio de salarios.
La cantidad de mujeres y varones que trabajan en esa empresa
11. Escriba un programa que lea un nmero positivo y lo parta en dos sumandos de
tal manera que su producto tenga un valor mximo.
Lenguaje de Programacin I - Unidad I Yuliana Juregui y otros

94
12. Una empresa de bienes races ofrece departamentos en una zona cerca al mar,
bajo las siguientes condiciones: Si los ingresos del comprador son de $ 9500 o
ms, la cuota inicial ser del 15% del coste del departamento y el resto se
distribuir en pagos mensuales, a pagar en diez aos. Si los ingresos del
comprador son menos de $ 9500, la cuota inicial ser del 25% del coste del
departamento y el resto se distribuir en pagos mensuales a pagar en 15 aos.
La empresa quiere obtener cuanto debe pagar un comprador por concepto de
cuota inicial y cuanto por cada pago parcial.


Lenguaje de Programacin I - Unidad I Yuliana Juregui y otros

95
Resumen

En esta primera unidad se presenta todos los conceptos bsicos necesarios que el
estudiante debe conocer antes de codificar programas basados en el lenguaje C++.
Por la variedad de compiladores y entornos para ejecutar un programa en C++,
sera extenso exponer cada uno de estos compiladores por lo que queda a liberdad
del usuario elegir el compilador o entorno que ms le convenga.
A manera de orientacin, se presenta la ejecucin de un programa bajo el entorno
Dev-C++.
Asimismo, se explica de forma clara y detallada las tcnicas de programacin
estructurada y modular desarrollndose en cada una stas, ejercicios tipos que
servirn de gua para el estudiante.
Lenguaje de Programacin I - Unidad I Yuliana Juregui y otros

96
Lectura

Historia del C
C fue desarrollado originalmente en los aos setenta por Dennis Ritchie en Bell
Telephone Laboratories, Inc. (ahora At&T Bell Laboratories). Es e resultado de dos
lenguajes anteriores, el BCPL y el B, que se desarrollaron tambin en los
laboratorios Bell. C setuvo confinado al uso en los laboratorios Bell hasta 1978,
cuando Brian Kernighan y Ritchie publicaron una descripcin definitiva del lenguaje.
La definicin de Kernighan y ritchie se denomina frecuentemente K&R C.
Tras la publicacin de la defincin de K&R, los profesionales de las computadoras,
impresionados por las muchas caractersticas deseables del C, comenzaron a
promover el uso del lenguaje. Por la mitad de los ochenta, la popularidad del C se
haba extendido por todas partes. Se haban escrito nmeros compiladores e
intrpretes de C para computadoras de todos los tamaos y se haban desarrollado
muchas aplicaciones comerciales. Es ms, muchas aplicaciones que se haban
escrito originalmente en otros lenguajes se reescribieron en C para tomar partido
de su eficiencia y portabilidad.
La mayora de las implementaciones comerciales de C difieren en algo de la
definicin original de Kernighan y Ritchie. Esto ha creado algunas pequeas
incompatibilidades entre las diferentes implementaciones del lenguaje;
disminuyendo la portabilidad que este intentaba proporcionar. Consecuentemente,
el Instituto Nacional Americano de estndares (ANSI) comenz a trabajar en una
definicin normalizada del lenguaje C (comit ANSI X3J11). Es de esperar que la
mayora de los compiladores e intrpretes comerciales adopten el estndar ANSI
una vez que se haya completado. Algunos compiladores tambin pueden
proporcionar caractersticas suyas propias.

Gottfried, Byron S. (1991) Programacin en C. Mxico DF. McGraw-Hill. Cap. 1.
Conceptos bsicos. pp 11.
Lenguaje de Programacin I - Unidad I Yuliana Juregui y otros

97
Glosario

Programa: Secuencia de instrucciones dadas a la computadora
Instruccin: Orden que se da a la computadora para que realice una accin
determinada
Palabras reservadas: Conjunto de palabras claves, que son de uso exclusivo del
lenguaje C++. Muchas de ellas forman parte de las instrucciones de C++, por lo
cual no deben ser utilizados como identificadores
Comentarios: Un comentario es una instruccin no ejecutable, es decir es un texto
que se usa como ayuda para documentar un programa, que tiene por finalidad
hacer ms comprensible el programa
Tipos de Datos: Son palabras reservadas, que se utilizan para indicar el valor que
almacena un identificador (una variable).
Identificadores: Es un nombre que puede darse a una variable, a una constante,
a una funcin y en general a cualquier elemento de un programa que necesite
nombrarse.
Variables: Es un identificador que se utiliza para almacenar valores que estn en
un determinado dominio.
Constantes: Es un identificador que no cambia de valor, durante la ejecucin de
un programa
Expresin: Es una combinacin de operadores, operandos, funciones especiales,
parntesis, entre otros, que se forman para representar las operaciones
aritmticas, relacionales y lgicas.
Contador: Es una variable numrica entera, que toma un valor inicial
(normalmente cero o uno) y que, posteriormente se incrementa a si misma en N
unidades constantes en cada iteracin.
Acumulador: Es una variable numrica que toma un valor inicial (normalmente
cero) y posteriormente se incrementa a si misma en una cantidad variable en cada
iteracin.
Bucle: Es un mecanismo de programacin que repite un segmento de un
programa (una o ms sentencias) un cierto nmero de veces.

Mdulo: Es un subprograma que representa una tarea determinada.

Lenguaje de Programacin I - Unidad I Yuliana Juregui y otros

98
Autoevaluacin

1. Cul de los siguientes es un nombre de variable vlido?
a) B
b) Nombre
c) A + Notas
d) Salto-mortal
e) Sueldo
f) 5tazas
g) radio2
h) fecha_actual
2. Convertir en expresiones numricas los siguientes enunciados
a) Seis veces la diferencia entre 25 y 3
b) La suma de 320 y 8, divididos por 8, todo ello dividido por 8
c) La diferencia entre el producto de 9 y 15, y el cociente entero de 24 y 4
d) 12 menos 5 dividido por el producto de 2 y 3
e) El residuo del producto de 4 y 10 dividido entre 5, todo esto dividido por 3.
3. Escribir las siguientes expresiones matemticas en forma de sentencias para el
lenguaje C++:
a)
n
m 4 +

b)
q p
m

+ 4

c)
a
ac b b
2
4
2
+

d)
5 /
/
r q
p n m

+

4. Un programa en C++ contien las siguientes sentencias:
#include <iostream>
void main(){
int a, b;
char c;
}

a) Escriba las sentencias oportunas que permitan introducir datos a las
variables a, b, c.
b) Escriba las sentencias oportunas que permitan visualizar los valores de las
variables a, b, c

5. Describe la salida que generar cada uno de los siguientes programas
#include <iostream>
void main()
{
int i=0, x=0;
while (i<15){
if(i%3==0){
x=x+i;
cout<<x<<endl;
}
i++;
}
cout<<x<<endl;
}
#include <iostream>
void main()
{
int i, x=0;
for(i=1; i<10; i++){
if(i%2!=0)
x=x+i;
else
x--;
cout<<x<<endl;
}
cout<<x<<endl;
}
Lenguaje de Programacin I - Unidad I Yuliana Juregui y otros

99

#include <iostream>
void main()
{
int i, j, k, x=0;
for(i=0; i<5; i++){
for(j=0; j<i; j++){
switch(i+j){
case -1:
case 0:
x=x+1;
break;
case 1:
case 2:
case 3:
x=x+2;
default:
x=x+3;
}
cout<<x<<endl;
}
cout<<x<<endl;
}
#include <iostream>
void main()
{
int i=0, x=0;
do{
if(i%5==0){
x++;
cout<<x<<endl;
}
i++;
}
while(i<20);
cout<<x<<endl;
}



6. Elabore los siguientes programas:
a) Escriba un programa para calcular el monto final que se paga por la compra
de un auto al crdito, al precio de venta se le aumenta el 4% de impuestos
estatales, de tal forma que el cliente tendr que pagar como cuota inicial el
20% de este nuevo precio, el monto financiado tendr un inters del 7%
anual.
b) Elaborar un programa que dada una fecha en formato DD:MM:AA determine
el dia siguiente.
c) Construir un programa que muestre el mayor y el menor dgito de un
nmero ingresado.
d) Escriba un programa para determinar si un ao es bisiesto en un rango
dado. Un ao es bisiesto si es mltiplo de 4 pero no mltiplo de 100 o
cuando es mltiplo de 400.

Lenguaje de Programacin I - Unidad I Yuliana Juregui y otros

100
Bibliografa

Kernighan, Brian W. y Ritchie, Dennis M. (1991) El Lenguaje de Programacin
C. 2da Edicin. Mxico DF. McGraw-Hill. Cap. 2. Tipos, Operadores y
Expresiones. pp 39 -57.
Joyanes Aguilar, Luis, Rodrguez Baena, Luis y Fernndez Azuela, Matilde
(2003) Fundamentos de programacin. Libro de problemas algoritmos,
estructuras de datos y objetos. 2da Edicin. Madrid. McGraw-Hill.
Interamericana de Espaa. Cap. 4. Introduccin a la Programacin
Estructurada. pp. 57 62.
Juregui Rosas, Yuliana y Arriola Ramirez, Franklin. (2007) Algoritmos. Un
enfoque prctico. Lima. Fondo Editorial de la UIGV. Cap. 2. Programacin
estructurada. pp 29 223.
Gottfried, Byron S. (1991) Programacin en C. Mxico DF. McGraw-Hill. Cap. 7.
Funciones. pp 187 218.
Lpez Romn, Leobardo. (2003) Programacin estructurada: un enfoque
algortmico. 2da Edicin. Editorial Alfaomega Mxico DF. Cap 3. La
Secuenciacin. pp 23 177.



Enlaces

http://sistemas.itlp.edu.mx/tutoriales/tutorc/index.htm
http://ing.utalca.cl/~fmeza/cursos/2005/cyp/algoritmos2.pdf
http://slent.iespana.es/docs/manualC++Public.pdf
http://www.scribd.com/doc/22283/Manual-De-Programacion-Lenguaje-C
http://es.tldp.org/Manuales-LuCAS/doc-tutorial-c++/doc-tutorial-c++.pdf
http://www.itq.edu.mx/vidatec/maestros/sis/mlopez/Tutorial/index2.htm