Sei sulla pagina 1di 208

ALGORITMOS Y

PROGRAMACIN
ESTRUCTURADA EN
C++

Lilian M. Benique - Maria M. Lima

ALGORITMOS Y PROGRAMACIN ESTRUCTURADA EN C++

ALGORITMOS Y PROGRAMACIN ESTRUCTURADA EN C++


Lilian M. Benique R. Maria M. Lima Q.
1ra. Edicin: Marzo 2009
Derechos Reservados
Edicin e Impresin:
RUC:
Puno - Per

:::2:::

Maria M. Lima Quispe

ALGORITMOS Y PROGRAMACIN ESTRUCTURADA EN C++

Dedico esta obra a


a mi familia y a toda la
juventud Juliaquea.
L.M.B.R.

Lilian M. Benique Ruelas

:::3:::

ALGORITMOS Y PROGRAMACIN ESTRUCTURADA EN C++

INTRODUCCIN
Los captulos I y II son temas introductorios necesarios para empezar a
resolver problemas con las computadoras, el captulo III hace referencia a
problemas de tipo secuencial, en el captulo IV estn los problemas de
tipo selectivos (if, if else, switch), y en el captulo V tenemos problemas
repetitivos (for, while, do-while).
Los arreglos unidimensionales y bidimensionales se encuentran en el
captulo VI, los mtodos de ordenacin y bsqueda se encuentran en los
captulos VII y VIII, finalmente el tema de funciones se encuentra en el
captulo IX.
La mayora de los ejercicios desarrollados en este libro contienen la parte
de anlisis, diseo y programacin, los programas fueron escritos en el
lenguaje de programacin C++, para la parte de los diagramas de flujo se
utiliz el programa DFD.

:::4:::

Maria M. Lima Quispe

ALGORITMOS Y PROGRAMACIN ESTRUCTURADA EN C++

CONTENIDO
CAPTULO 1: ALGORITMOS Y PROGRAMAS
1.1. LOS SISTEMAS DE PROCESAMIENTO DE LA INFORMACIN .....................
1.2. ALGORITMOS ...........................................................................................................
1.2.1. Nocin de Algoritmo ..............................................................................................
1.2.2. Caractersticas de los Algoritmos ..........................................................................
1.2.3. Partes de la definicin de un Algoritmo ...............................................................
1.3. APLICACIONES ........................................................................................................
1.3.1. Programas y Aplicaciones ......................................................................................
1.3.2. El ciclo de vida de una aplicacin .........................................................................
1.4. LENGUAJES DE PROGRAMACIN ......................................................................
1.4.1. Tipos de Lenguajes ..................................................................................................
1.4.2. Traductores de Lenguajes ......................................................................................
1.4.2.1. Intrpretes .............................................................................................................
1.4.2.2. Compiladores .......................................................................................................
1.5. PROGRAMACIN ....................................................................................................
1.5.1. Programacin Desordenada ..................................................................................
1.5.2. Programacin Estructurada ...................................................................................
1.5.3. Programacin Modular ..........................................................................................
1.5.4. Programacin Orientada a Objetos .......................................................................
1.6. DATOS Y TIPOS DE DATOS ...................................................................................
1.6.1. Datos Numricos .....................................................................................................
1.6.1.1. Enteros ...................................................................................................................
1.6.1.2. Reales .....................................................................................................................
1.6.2. Datos Lgicos ...........................................................................................................
1.6.3. Datos tipo carcter y tipo cadena ..........................................................................
1.7. CONSTANES Y VARIABLES ...................................................................................
1.7.1. Constantes ................................................................................................................
1.7.2. Variables ...................................................................................................................
1.8. EXPRESIONES ...........................................................................................................
1.8.1. Expresiones Numricas ..........................................................................................
1.8.2. Expresiones Alfanumricas ....................................................................................
1.8.3. Expresiones Booleanas ...........................................................................................
1.9. OPERADORES ...........................................................................................................
1.9.1. Aritmticos ...............................................................................................................
1.9.2. Alfanumricos .........................................................................................................
1.9.3. Relacionales .............................................................................................................
1.9.4. Lgicos ......................................................................................................................
1.9.5. Parntesis .................................................................................................................
1.9.6. Orden de prioridad de los operadores .................................................................
1.10. FUNCIONES INTERNAS .......................................................................................
1.11. LA OPERACIN DE ASIGNACIN ....................................................................
Preguntas de Repaso ........................................................................................................
Ejercicios Propuestos ........................................................................................................

Lilian M. Benique Ruelas

:::5:::

7
8
8
8
9
9
9
10
11
11
12
12
13
14
15
15
15
15
16
17
17
18
18
18
19
19
20
21
21
22
22
22
22
24
24
26
27
27
28
29
30
32

ALGORITMOS Y PROGRAMACIN ESTRUCTURADA EN C++

CAPTULO 2: METODOLOGA PARA LA RESOLUCIN DE PROBLEMAS CON


COMPUTADORAS
2.1. ANLISIS DEL PROBLEMA .................................................................................... 34
2.2. DISEO DEL ALGORITMO .................................................................................... 37
2.2.1. Representacin de los algoritmos .......................................................................... 38
2.2.1.1. Pseudocdigo ....................................................................................................... 38
2.2.1.2. Diagramas de Flujo .............................................................................................. 40
2.2.1.3. Diagramas de Flujo con DFD .............................................................................. 42
2.2.1.4. Diagrama N S ..................................................................................................... 45
2.3. RESOLUCIN DEL PROBLEMA CON LA COMPUTADORA .......................... 46
2.3.1. Codificacin del Programa ..................................................................................... 46
2.3.2. Ejecucin del Programa .......................................................................................... 47
2.3.3. Comprobacin del Programa ................................................................................. 47
2.3.4. Documentacin y Mantenimiento ......................................................................... 47
Preguntas de Repaso ........................................................................................................ 49
Ejercicios Propuestos ........................................................................................................ 50
CAPTULO 3: ESTRUCTURAS SECUENCIALES ........................................................ 52
Problemas Secuenciales .................................................................................................... 53
Ejercicios Propuestos ........................................................................................................ 73
CAPTULO 4: ESTRUCTURAS SELECTIVAS .............................................................. 75
4.1. ESTRUCTURAS SELECTIVAS SIMPLES ............................................................... 75
Problemas Selectivos Simples .......................................................................................... 77
4.2. ESTRUCTURAS SELECTIVAS DOBLES ............................................................... 84
Problemas Selectivos Dobles ........................................................................................... 86
4.3. ESTRUCTURAS SELECTIVAS MLTIPLES ......................................................... 97
Problemas Selectivos Mltiples ....................................................................................... 100
Ejercicios ............................................................................................................................ 110
CAPTULO 5: ESTRUCTURAS REPETITIVAS ............................................................. 113
5.1. ESTRUCTURAS REPETITIVA mientras ................................................................. 113
Problemas Repetitivos mientras ...................................................................................... 116
5.2. ESTRUCTURAS REPETITIVA hacer - mientras .................................................... 123
Problemas Repetitivos hacer - mientras ......................................................................... 125
5.3. ESTRUCTURAS REPETITIVA desde o para .......................................................... 128
Problemas Repetitivos para o desde ............................................................................... 130
Ejercicios ............................................................................................................................ 138
CAPTULO 6: ARRAYS ...................................................................................................
6.1. ARREGLOS UNIDIMENSIONALES: Los Vectores ...............................................
6.1.1. Declaracin de Vectores .........................................................................................
6.1.2. Operaciones con Vectores ......................................................................................
Ejercicios ............................................................................................................................
6.2. ARREGLOS BIDIMENSIONALES: Las Matrices ...................................................
6.2.1. Declaracin de Matrices .........................................................................................
6.2.2. Operaciones con Matrices ......................................................................................
Ejercicios ............................................................................................................................
CAPTULO 7: ORDENACIN ........................................................................................
CAPTULO 8: BSQUEDA .............................................................................................
CAPTULO 9: FUNCIONES ............................................................................................

:::6:::

Maria M. Lima Quispe

ALGORITMOS Y PROGRAMACIN ESTRUCTURADA EN C++

ALGORITMOS
Y
PROGRAMAS

Lilian M. Benique Ruelas

:::7:::

ALGORITMOS Y PROGRAMACIN ESTRUCTURADA EN C++

:::8:::

Maria M. Lima Quispe

ALGORITMOS Y PROGRAMACIN ESTRUCTURADA EN C++

CAPITULO 1: Algoritmos y Programas


1.1

LOS SISTEMAS DE PROCESAMIENTO DE LA


INFORMACIN
El sistema de procesamiento de la informacin es un sistema que
transforma datos brutos en informacin organizada, significativa y
til.

- Figura 1.1: Sistema de procesamiento de la informacin -

La figura 1.1, nos muestra los tres componentes del sistema de


procesamiento de la informacin: El PROCESADOR, que puede ser
bastante complicado, se representa por una simple caja y puede
aceptar datos llamados ENTRADA, y esta entrada se transforma
entonces para producir una informacin denominada SALIDA o
resultados.
El conjunto de instrucciones que especifican la secuencia de
operaciones a realizar, en orden, para resolver un sistema especfico
o clase de problemas, se denomina algoritmo.
Un algoritmo es una frmula para la resolucin de un problema.
Para realizar un proceso se le debe suministrar al procesador un
algoritmo adecuado. Cuando el procesador es una computadora, el
algoritmo ha de expresarse de una forma que recibe el nombre de
programa.
Un programa se escribe en un lenguaje de programacin y a la
actividad de expresar un algoritmo en forma de programa se le
denomina programacin. Cada paso en el algoritmo est expresado
por medio de una instruccin en el programa.
Por consiguiente, un programa consta de una secuencia de
instrucciones, cada una de las cuales, especifica las operaciones que
debe realizar la computadora.

Lilian M. Benique Ruelas

:::9:::

ALGORITMOS Y PROGRAMACIN ESTRUCTURADA EN C++

1.2

ALGORITMOS
1.2.1 Nocin de Algoritmo
-

Conjunto ordenado y finito de operaciones que permite


hallar la solucin de un problema.

Un algoritmo es un mtodo para resolver un problema


mediante una serie de pasos precisos, definidos y finitos.

Los algoritmos son la base de la programacin de


ordenadores, ya que los programas de ordenador se puede
entender que son algoritmos escritos en un cdigo especial
entendible por un ordenador.

Los algoritmos son independientes tanto del lenguaje de


programacin en que se expresan como de la computadora
que los ejecuta.

En la ciencia de la computacin y en la programacin, los


algoritmos son ms importantes que los lenguajes de
programacin o las computadoras. Un lenguaje de
programacin es tan slo un medio para expresar un
algoritmo y una computadora es slo un procesador para
ejecutarlo.

Dada la importancia del algoritmo en la ciencia de la computacin,


un aspecto muy importante ser el diseo de algoritmos.

1.2.2 Caractersticas de los Algoritmos

- Figura 1.2: Caractersticas de un algoritmo -

:::10:::

Maria M. Lima Quispe

ALGORITMOS Y PROGRAMACIN ESTRUCTURADA EN C++

1.2.3 Partes de la definicin de un Algoritmo


-

Entrada: Los datos iniciales que posee el algoritmo antes de


ejecutarse.
Proceso: Acciones (operaciones) que lleva a cabo el
algoritmo.
Salida: Datos (informacin) que obtiene finalmente el
algoritmo.

Ejemplo 1: Para sumar dos nmeros


Entrada : Los nmeros n1 y n2
Proceso : La suma de los nmeros n1 y n2
Salida : El resultado de la suma

Ejemplo 2: Para hallar el rea de un cuadrado


Entrada : El lado del cuadrado
Proceso : Calcular el rea del cuadrado
Salida : El resultado del rea (area)

Ejemplo 3: Para hallar el promedio de tres notas


Entrada : Las tres notas
Proceso : Calcular el promedio
Salida : El promedio

1.3

APLICACIONES
1.3.1 Programas y Aplicaciones
-

Programa: Conjunto unitario de instrucciones que permite a


un ordenador realizar funciones diversas, como el
tratamiento de textos, el diseo de grficos, la resolucin de
problemas matemticos, el manejo de bancos de datos, etc.
Pero normalmente se entiende por programa un conjunto
de instrucciones ejecutables por un ordenador.
Aplicacin: Software formado por uno o ms programas, la
documentacin de los mismos y los archivos necesarios para
su funcionamiento, de modo que el conjunto completo de
archivos forman una herramienta de trabajo en un
ordenador.

Lilian M. Benique Ruelas

:::11:::

ALGORITMOS Y PROGRAMACIN ESTRUCTURADA EN C++

Normalmente en el lenguaje cotidiano no se distingue entre


aplicacin y programa; en nuestro caso entenderemos que la
aplicacin es un software completo que cumple la funcin completa
para la que fue diseado, mientras que un programa es el
resultado de ejecutar un cierto cdigo entendible por el ordenador.

1.3.2 El ciclo de vida de una aplicacin


Una de las cosas que se han definido tras el nacimiento de la
ingeniera del software ha sido el ciclo de vida de una aplicacin. El
ciclo de vida define los pasos que sigue el proceso de creacin de una
aplicacin desde que se propone hasta que finaliza su construccin.
Los pasos son:
-

Anlisis. En esta fase se determinan los requisitos que tiene


que cumplir la aplicacin. Se anota todo aquello que afecta al
futuro funcionamiento de la aplicacin. Este paso le realiza
un analista.

Diseo. Se especifican los esquemas de diseo de la


aplicacin. Estos esquemas forman los planos del
programador, los realiza el analista y representan todos los
aspectos que requiere la creacin de la aplicacin.

Codificacin. En esta fase se pasa el diseo a cdigo escrito


en algn lenguaje de programacin. Esta es la primera labor
que realiza el programador.

Pruebas. Se trata de comprobar que el funcionamiento de la


aplicacin es la adecuada. Se realiza en varias fases:
a.

b.
c.

:::12:::

Prueba del cdigo. Las realizan programadores. Normalmente


programadores distintos a los que crearon el cdigo, de ese
modo la prueba es ms independiente y generar resultados
ms ptimos.
Versin alfa. Es una primera versin terminada que se revisa
a fin de encontrar errores. Estas pruebas convienen que sean
hechas por personal no informtico.
Versin beta. Versin casi definitiva del software en la que no
se estiman fallos, pero que se distribuye a los clientes para
que encuentren posibles problemas. A veces est versin acaba
siendo la definitiva (como ocurre con muchos de los
programas distribuidos libremente por Internet).

Maria M. Lima Quispe

ALGORITMOS Y PROGRAMACIN ESTRUCTURADA EN C++

Mantenimiento. Tiene lugar una vez que la aplicacin ha


sido ya distribuida, en esta fase se asegura que el sistema
siga funcionando aunque cambien los requisitos o el sistema
para el que fue diseado el software. Antes esos cambios se
hacen los arreglos pertinentes, por lo que habr que
retroceder a fases anteriores del ciclo de vida.

- Figura 1.3: Ciclo de vida de una aplicacin -

1.4

LENGUAJES DE PROGRAMACIN
Es un conjunto de smbolos, caracteres y reglas (programas) que
permiten a las personas comunicarse con la computadora. Los
lenguajes de programacin tienen un conjunto de instrucciones que
nos permiten realizar operaciones de entrada/salida, calculo,
manipulacin
de
textos,
lgica/comparacin
y
almacenamiento/recuperacin.

1.4.1 Tipos de Lenguajes


Segn el estilo de programacin se puede hacer esta divisin:
-

Lenguajes imperativos. Son lenguajes donde las instrucciones


se ejecutan secuencialmente y van modificando la memoria
del ordenador para producir las salidas requeridas. La
mayora de lenguajes (C, Pascal, Basic, Cobol, ...) son de este
tipo. Dentro de estos lenguajes estn tambin los lenguajes
orientados a objetos (C++, Java, C#,...).

Lenguajes declarativos. Son lenguajes que se concentran ms


en el qu, que en el cmo (cmo resolver el problema es la
pregunta a realizarse cuando se usan lenguajes imperativos).
Los lenguajes que se programan usando la pregunta qu
queremos? son los declarativos.

Lilian M. Benique Ruelas

:::13:::

ALGORITMOS Y PROGRAMACIN ESTRUCTURADA EN C++

El ms conocido de ellos es el lenguaje de consulta de Bases de


datos, SQL.
-

Lenguajes funcionales. Definen funciones, expresiones que


nos responden a travs de una serie de argumentos. Son
lenguajes que usan expresiones matemticas, absolutamente
diferentes del lenguaje usado por las mquinas. El ms
conocido de ellos es el LISP.

Lenguajes lgicos. Lenguajes utilizados para resolver


expresiones lgicas. Utilizan la lgica para producir
resultados. El ms conocido es el PROLOG.

1.4.2 Traductores de Lenguajes


Los traductores de lenguaje son programas que traducen a su vez
los programas fuente escritos en lenguajes de alto nivel a cdigo
mquina. Los traductores se dividen en:
-

Intrpretes
Compiladores

1.4.2.1

Intrpretes

En el caso de los intrpretes se convierte cada lnea a cdigo


mquina y se ejecuta ese cdigo mquina antes de convertir la
siguiente lnea. De esa forma si las dos primeras lneas son
correctas y la tercera tiene un fallo de sintaxis, veramos el
resultado de las dos primeras lneas y al llegar a la tercera se
nos notificara el fallo y finalizara la ejecucin.
El intrprete hace una simulacin de modo que parece que la
mquina entiende directamente las instrucciones del lenguaje,
pareciendo que ejecuta cada instruccin (como si fuese cdigo
mquina directo).
El BASIC era un lenguaje interpretado, se traduca lnea a
lnea. Hoy en da la mayora de los lenguajes integrados en
pginas web son interpretados, la razn es que como la
descarga de Internet es lenta, es mejor que las instrucciones se
vayan traduciendo segn van llegando en lugar de cargar
todas en el ordenador.

:::14:::

Maria M. Lima Quispe

ALGORITMOS Y PROGRAMACIN ESTRUCTURADA EN C++

Por eso lenguajes como JavaScript (o incluso, en parte, Java)


son interpretados.
- Proceso
Un programa que se convierte a cdigo mquina mediante un
intrprete sigue estos pasos:
1)
2)
3)
4)
5)

Lee la primera instruccin


Comprueba si es correcta
Convierte esa instruccin al cdigo mquina equivalente
Lee la siguiente instruccin
Vuelve al paso 2 hasta terminar con todas las instrucciones

- Ventajas
o
o

Se tarda menos en crear el primer cdigo mquina. El


programa se ejecuta antes.
No hace falta cargar todas las lneas para empezar a ver
resultados (lo que hace que sea una tcnica idnea para
programas que se cargan desde Internet).

- Desventajas
o

o
o

El cdigo mquina producido es peor ya que no se optimiza al


valorar una sola lnea cada vez. El cdigo optimizado permite
estudiar varias lneas a la vez para producir el mejor cdigo
mquina posible, por ello no es posible mediante el uso de
intrpretes.
Todos los errores son errores en tiempo de ejecucin, no se
pueden detectar antes de lanzar el programa. Esto hace que la
depuracin de los errores sea ms compleja.
El cdigo mquina resultante gasta ms espacio.
Hay errores difcilmente detectables, ya que para que los
errores se produzcan, las lneas de errores hay que ejecutarlas. Si
la lnea es condicional hasta que no probemos todas las
posibilidades del programa, no sabremos todos los errores de
sintaxis cometidos.

1.4.2.2

Compiladores

Se trata de software que traduce las instrucciones de un


lenguaje de programacin de alto nivel a cdigo mquina. La
diferencia con los intrpretes reside en que se analizan todas
las lneas antes de empezar la traduccin.

Lilian M. Benique Ruelas

:::15:::

ALGORITMOS Y PROGRAMACIN ESTRUCTURADA EN C++

Durante muchos aos, los lenguajes potentes han sido


compilados. El uso masivo de Internet ha propiciado que esta
tcnica a veces no sea adecuada y haya lenguajes modernos
interpretados o semi-interpretados, mitad se compila hacia un
cdigo intermedio y luego se interpreta lnea a lnea (esta
tcnica la siguen Java y los lenguajes de la plataforma .NET de
Microsoft).
- Ventajas
o
o
o

Se detectan errores antes de ejecutar el programa (errores de


compilacin).
El cdigo mquina generado es ms rpido (ya que se optimiza).
Es ms fcil hacer procesos de depuracin de cdigo.

- Desventajas
o
o

El proceso de compilacin del cdigo es lento.


No es til para ejecutar programas desde Internet ya que hay
que descargar todo el programa antes de traducirle, lo que
ralentiza mucho su uso.

La compilacin es el proceso de traducir programas


fuente escritos en lenguajes de alto nivel a lenguaje
maquina.
Para conseguir el programa mquina real se debe utilizar un
programa llamado montador o enlazador (linker). El proceso
de montaje conduce a un programa en lenguaje mquina
directamente ejecutable.

1.5

PROGRAMACIN
La programacin consiste en pasar algoritmos a algn lenguaje de
ordenador a fin de que pueda ser entendido por el ordenador.
La programacin de ordenadores comienza en los aos 50 y su
evolucin a pasado por diversos pasos. La programacin se puede
realizar empleando diversas tcnicas o mtodos. Esas tcnicas definen
los distintos tipos de programaciones.

:::16:::

Maria M. Lima Quispe

ALGORITMOS Y PROGRAMACIN ESTRUCTURADA EN C++

1.5.1 Programacin Desordenada


Se llama as a la programacin que se realizaba en los albores de la
informtica (aunque desgraciadamente en la actualidad muchos
programadores
siguen emplendola).
En este estilo de
programacin, predomina el instinto del programador por encima del
uso de cualquier mtodo lo que provoca que la correccin y
entendimiento de este tipo de programas sea casi ininteligible.

1.5.2 Programacin Estructurada


En esta programacin se utiliza una tcnica que genera programas
que slo permiten utilizar tres estructuras de control:
-

Secuencias (instrucciones que se generan secuencialmente)


Alternativas (sentencias if)
Iterativas (bucles condicionales)

La ventaja de esta programacin est en que es ms legible (aunque


en este caso el cdigo es casi ms sencillo en su versin
desordenada).
Todo programador debera escribir cdigo de forma estructurada.

1.5.3 Programacin Modular


Completa la programacin anterior permitiendo la definicin de
mdulos independientes cada uno de los cuales se encargar de una
tarea del programa. De esta forma el programador se concentra en la
codificacin de cada mdulo haciendo ms sencilla esta tarea. Al final
se deben integrar los mdulos para dar lugar a la aplicacin final.
El cdigo de los mdulos puede ser invocado en cualquier parte del
cdigo. Realmente cada mdulo se comporta como un subprograma
que, a partir de unas determinadas entradas obtienen unas salidas
concretas. Su funcionamiento no depende del resto del programa por
lo que es ms fcil encontrar los errores y realizar el mantenimiento.

1.5.4 Programacin Orientada a Objetos


Es la ms novedosa, se basa en intentar que el cdigo de los
programas se parezca lo ms posible a la forma de pensar de las
personas. Las aplicaciones se representan en esta programacin como
una serie de objetos independientes que se comunican entre s.

Lilian M. Benique Ruelas

:::17:::

ALGORITMOS Y PROGRAMACIN ESTRUCTURADA EN C++

Cada objeto posee datos y mtodos propios, por lo que los


programadores se concentran en programar independientemente
cada objeto y luego generar el cdigo que inicia la comunicacin entre
ellos.
Es la programacin que ha revolucionado las tcnicas ltimas de
programacin ya que han resultado un importante xito gracias a la
facilidad que poseen de encontrar fallos, de reutilizar el cdigo y de
documentar fcilmente el cdigo.

1.6

DATOS Y TIPOS DE DATOS


Se denomina datos a las caractersticas propias de cualquier
entidad. Por ejemplo, la edad y el domicilio de una persona forman
parte de sus datos. Los programas procesan datos a fin de obtener
resultados o informaciones tiles.
El manejo de los datos o informacin es el primer objetivo de toda
computadora. La mayora de las computadoras pueden trabajar con
varios tipos de datos, los algoritmos y los programas
correspondientes operan sobre datos.
Los tipos de datos pueden ser simples y estructurados. Ver Figura 4.

- Figura 1.4: Tipos de Datos -

:::18:::

Maria M. Lima Quispe

ALGORITMOS Y PROGRAMACIN ESTRUCTURADA EN C++

Los tipos de datos en C++


Los tipos de datos en C++ se dividen en dos grandes grupos:
integrales (datos enteros) y de coma flotante (datos reales).
char
short
unsigned short
float

signed char
int
unsigned
double

unsigned char
long
unsigned long
long double

Los tipos derivados en C++ pueden ser:


- enumeraciones (enum)
- estructuras (struct)
- uniones (union)
- arrays
- clases (class y struct)
- uniones y enumeraciones annimas
- punteros

1.6.1 Datos Numricos


El tipo numrico es el conjunto de los valores numricos. Pueden
representarse de dos formas:
-

Tipo numrico entero (integer)


Tipo numrico real (real)

1.6.1.1

Enteros

El tipo entero es un subconjunto finito de los nmeros


enteros. Los enteros son nmeros completos, no tienen
componentes fraccionarios o decimales y pueden ser
negativos o positivos.
Ejm:
-206
-150

10
30

-1000
2000

En C++ se pueden almacenar nmeros enteros


declarando las variables como int, long, unsigned int y
unsigned long.

Lilian M. Benique Ruelas

:::19:::

ALGORITMOS Y PROGRAMACIN ESTRUCTURADA EN C++

1.6.1.2

Reales

El tipo real consiste en un subconjunto de los nmeros


reales. Los nmeros reales siempre tienen un punto decimal
y pueden ser positivos negativos. Un nmero real consta
de un entero y una parte decimal.
Ejm:
-8.12
-0.00098
0.08
0.09520000
En C++ se pueden almacenar nmeros reales declarando
las variables como float y double.

1.6.2 Datos Lgicos (booleanos)


El tipo lgico o booleano es aquel dato que slo puede tomar uno de
dos valores:
-

Cierto o verdadero ( True )


Falso ( False )

1
0

1.6.3 Datos tipo carcter y tipo cadena


El tipo carcter es el conjunto finito y ordenado de caracteres que la
computadora reconoce. Un dato tipo carcter contiene un solo
carcter.
Los caracteres que reconocen las diferentes computadoras no son
estndar; sin embargo, la mayora reconoce los siguientes caracteres
alfabticos y numricos:
-

Caracteres alfabticos (a,b,c, ... , z, A, B, C, ... , Z)


Caracteres numricos (0,1, 2, 3, ..., 9)
Caracteres especiales ( +, -, *, /, , ., ;, <, >, $, . . . ).

Una cadena (string) de caracteres es una sucesin de caracteres que


se encuentran delimitados por una comilla (apstrofo) o dobles
comillas, segn el tipo de lenguaje de programacin. La longitud de
una cadena de caracteres es el nmero de ellos comprendidos entre
los separadores o limitadores. Algunos lenguajes tienen datos tipo
cadena.

:::20:::

Maria M. Lima Quispe

ALGORITMOS Y PROGRAMACIN ESTRUCTURADA EN C++

Ejm:
Hola Mundo
17 de diciembre de 1979
lmbenique@hotmail.com
Lenguajes de Programacin
En C++ se pueden almacenar caracteres o cadenas de
caracteres declarando variables con char.

1.7

CONSTANTES Y VARIABLES
1.7.1 Constantes
Son objetos cuyo valor permanece invariable a lo largo de la
ejecucin de un programa. Una constante es la denominacin de un
valor concreto, de tal forma que se utiliza su nombre cada vez que
se necesita referenciarlo.
Ejemplos:
Constantes reales.
PI = 3.141592
E
= 2.718281
Constante tipo carcter o constante de caracteres.
B
+
4
;
Constante tipo cadena.
Crisber Sahid Benique Almanza
Haydee Humpiri Cucho
Constantes lgicas.
Verdad
Falso
La mayora de los lenguajes de programacin permiten diferentes
tipos de constantes: enteras, reales, caracteres y boolean o lgicas, y
representan datos de esos tipos.

Lilian M. Benique Ruelas

:::21:::

ALGORITMOS Y PROGRAMACIN ESTRUCTURADA EN C++

Definicin de Constantes
En C++ las constantes se crean antes de la funcin main utilizando
la siguiente sintaxis:
#define Nombre Valor
Ejm:
#define PI 3.1416
#define VERDAD 1
#define TRES 3

1.7.2 Variables :
Son objetos cuyo valor puede ser modificado a lo largo de la
ejecucin de un programa. Dependiendo del lenguaje, hay
diferentes tipos de variables, tales como enteras, reales, carcter,
lgicas y de cadena. Una variable que es de un cierto tipo puede
tomar nicamente valores de ese tipo. Una variable tipo carcter,
por ejemplo, puede tomar como valor slo caracteres, al igual que
una variable entera puede tomar slo valores enteros.
Los nombres de las variables, a veces conocidos como
identificadores, suelen constar de varios caracteres alfanumricos,
de los cuales el primero normalmente es una letra. No se deben
utilizar como nombres de identificadores palabras reservadas del
lenguaje de programacin.

Definicin de Variables en C++


Antes de utilizar una variable en C++ dentro de un programa
primero se debe de definir (declarar).
La sintaxis bsica para declarar una variable es:

Tipo Variable;

:::22:::

Maria M. Lima Quispe

ALGORITMOS Y PROGRAMACIN ESTRUCTURADA EN C++

Para declarar varias variables del mismo tipo, la sintaxis es:


Tipo Variable1, Variable2, Variable3, ;
Ejm:
char sexo;
int n1, n2, n3;
double prom;

1.8

EXPRESIONES
Una expresin es la representacin de un clculo necesario para la
obtencin de un resultado. Se define una expresin de la siguiente
forma:
-

Un valor es una expresin.


Ejemplos
:
1.25, EDDIE

Una constante o variable es una expresin.


Ejemplos
:
PI, E, X.

Una funcin es una expresin.


Ejemplos
:
COS(X), SQR(25)

Una combinacin de valores, constantes, variables, funciones,


parntesis y operadores que cumplen determinadas reglas de
construccin es una expresin.
Ejemplos
:
COS ( PI * X ) + 1.25
2 * PI * X
N = EDDIE

Las expresiones, segn el resultado que producen, se clasifican en:

1.8.1 Expresiones Numricas


Son las que producen resultados de tipo numrico. Se construyen
mediante los operadores aritmticos.
Ejemplo

Lilian M. Benique Ruelas

PI * SQR ( 25 )
E + PI

:::23:::

ALGORITMOS Y PROGRAMACIN ESTRUCTURADA EN C++

1.8.2 Expresiones Alfanumricas


Son las que producen resultados de tipo alfanumrico. Se
construyen mediante los operadores alfanumricos.
Ejemplo

DON + N

1.8.3 Expresiones Booleanas


Son las que producen resultados CIERTO o FALSO. Se construyen
mediante los operadores relacionales y lgicos.
Ejemplo

1.9

A>0yB<=5

OPERADORES
Para la construccin de expresiones se pueden utilizar, de forma
general, los siguientes operadores:

1.9.1 Aritmticos
Los operadores se utilizan de igual forma que en matemticas. Por
consiguiente:
A . B se escribe en un algoritmo como A * B
6 x 4 se escribe como 6 * 4
35 se escribe como 3^5
Todos los operadores aritmticos no existen en todos los lenguajes
de programacin. El operador exponenciacin es diferente segn el
tipo de lenguaje de programacin.

Operador
,,**
+
*
/
div
mod

Significado
Exponenciacin
Suma
Resta
Multiplicacin
Divisin
Divisin entera
Mdulo (resto)

Tipos de
operandos
Entero real
Entero real
Entero real
Entero real
Real
Entero
Entero

Tipo de
resultado
Entero real
Entero real
Entero real
Entero real
Real
Entero
Entero

- Tabla 1.1: Operadores Aritmticos -

:::24:::

Maria M. Lima Quispe

ALGORITMOS Y PROGRAMACIN ESTRUCTURADA EN C++

Operadores DIV y MOD


Para la divisin real se utiliza / y div para la divisin entera. El
operador mod representa el resto de la divisin entera, aunque hay
lenguajes que utilizan otros smbolos como %.

7
1

Ejm:
a) 7 / 2
b) 7 div 2
c) 7 mod 2

= 3.5
= 3
= 1

2
3

cociente

6
3

cociente

resto

19
1

d) 19 / 6
= 3.17
e) 19 div 6 = 3
f) 19 mod 6 = 1

resto
Operador
+
+
*
/
%
++
--

Nombre
Ms unitario
Negacin
Suma
Resta
Multiplicacin
Divisin
Mdulo
Incremento
Decremento

- Tabla 1.2: Operadores Aritmticos en C++ -

Operadores Aritmticos de Asignacin


El operador de asignacin (=) hace que el valor situado a la derecha
del operador se adjudica a la variable situada a su izquierda.
Operador

Formato largo

Formato reducido

+=
-=
*=
/=
%=

a = a + b;
a = a b;
a = a * b;
a = a / b;
a = a % b;

a += b
a -= b
a *= b
a /= b
a %= b

- Tabla 1.3: Operadores Aritmticos de Asignacin en C++ -

Lilian M. Benique Ruelas

:::25:::

ALGORITMOS Y PROGRAMACIN ESTRUCTURADA EN C++

Ejm:
Si a=10 y b = 4
a) a += b
a=a+b
a = 10 + 4
a = 14
b)

a %= b
a=a%b
a = 10 % 4
a=2

1.9.2 Alfanumricos
Aqu tenemos el operador de concatenacin (+)
Ejm:
JUAN + A = JUANA
LOS + + PROGRAMAS = LOS PROGRAMAS
EL + CIELO + AZL = ELCIELOAZL

1.9.3 Relacionales
Los operadores relacionales o de relacin sirven para expresar las
condiciones en los algoritmos. Se pueden aplicar a cualquiera de los
cuatro tipos de datos estndar (enteros, real, lgico y carcter).
Operador

Significado

<
>
=
<=
>=
<>

Menor que
Mayor que
Igual que
Menor o igual que
Mayor o igual que
Distinto de

- Tabla 1.4: Operadores Relacionales -

Ejm:
6>5
10 <> 5 + 2
4=2

:::26:::

es verdad
es verdad
es falso

Maria M. Lima Quispe

ALGORITMOS Y PROGRAMACIN ESTRUCTURADA EN C++

Operador
<
<=
>
>=
==
!=
?:

Nombre
Menor que
Menor o igual que
Mayor que
Mayor o igual que
Igual a
No igual a
Asignacin condicional

- Tabla 1.5: Operadores Relacionales en C++ -

Ejm:
6 >= 5
10 != 10
4 == 2

es verdad
es falso
es falso

Operador ?:
El operador ?: se conoce como expresin condicional. La expresin
condicional es una abreviatura de la sentencia condicional if-else.
variable = (condicin) ? expresin1 : expresin2;
La expresin condicional comprueba la condicin. Si esa condicin
es verdadera, se asigna expresin1 a variable; en caso contrario se
asigna expresin2 a variable.
Ejm:
Si a=10 y b = 4, el mayor es:
a) mayor = (a>b) ? a : b;
mayor = (10>4) ? 10 : 4;
si (10>4) entonces mayor = 10 sino mayor = 4
como 10>4 entonces mayor = 10
b) Z = (2>6) ? a : b;
Z = (2>6) ? 10 : 4;
si (2>6) entonces Z = 10 sino Z = 4
como 2>6 es falso entonces Z = 4

Lilian M. Benique Ruelas

:::27:::

ALGORITMOS Y PROGRAMACIN ESTRUCTURADA EN C++

1.9.4 Lgicos
Los operadores lgicos o booleanos bsicos son:
Operador

Significado

Operador en C++

not (no)
and (y)
or (o)

Negacin
Conjuncin
Disyuncin

!
&&
||

- Tabla 1.6: Operadores Lgicos -

Tabla de verdad de los operadores lgicos


a

no a

ayb

aob

V
V
F
F

V
F
V
F

F
F
V
V

V
F
F
F

V
V
V
F

- Tabla 1.7: Tabla de verdad de los operadores lgicos -

Ejm:
a) no ( 6 > 10 )
no ( F )
V
b) ( 6 > 10 ) y ( 4 < 30 )
FyV
F
c) ( 10 > 6 ) o ( 5 > 8 )
VoF
V
d) no (( 10 > 6 ) o ( 5 > 8 ))
no ( V o F )
no ( V )
F

:::28:::

Maria M. Lima Quispe

ALGORITMOS Y PROGRAMACIN ESTRUCTURADA EN C++

1.9.5 Parntesis
Se utilizan para anidar expresiones y se evalan desde los ms
internos.
Ejm:
a)

b)

(6*(5+4)(6+3))+2
(6*99)+2
(549)+2
45+2
47
(4(10+(60%4)))
(4(10+0))
(410)
6

1.9.6 Orden de prioridad de los operadores


Los operadores de una expresin se evalan, en general, segn el
siguiente orden:
1 Parntesis (comenzando por los ms internos)
2 Signo
3 Potencias
4 Productos, divisiones, divisin entera y resto de la divisin
5 Sumas y restas
6 Concatenacin
7 Relacionales
8 Negacin
9 Conjuncin
10 Disyuncin
La evaluacin de operadores de igual orden se realiza siempre de
izquierda a derecha.
Ejm:
a)

((3+2)^215)/2*5
(5^215)/2*5
(2515)/2*5
10/2*5
5*5
25

Lilian M. Benique Ruelas

:::29:::

ALGORITMOS Y PROGRAMACIN ESTRUCTURADA EN C++

b) 5 2 > 4
52>4

3 >4

y
y
y
y
y
y
F

no
no
no
no
no
F

0.5 = 1/2
0.5 = 0.5
0.5 = 0.5
0.5 = 0.5
V

1.10 FUNCIONES INTERNAS


Las operaciones que se requieren en los programas exigen muchas
veces de un determinado nmero de operaciones especiales que se
denominan funciones internas.

Funcin

Descripcin

abs(x)
arctan(x)
sen(x) [sin(x)]
cos(x)
ln(x)
log10(x)
cuadrado(x) [sqr(x)]
raiz2(x) [sqrt(x)]
redondeo(x)
trunc(x)

Valor absoluto de x
Arco tangente de x
Seno de x
Coseno de x
Logaritmo neperiano de x
Logaritmo decimal de x
Cuadrado de x
Raz cuadrada de x
Redondeo de x
Truncamiento de x

Tipo de
argumento
Entero o real
Entero o real
Entero o real
Entero o real
Entero o real
Entero o real
Entero o real
Entero o real
Real
Real

Resultado
Igual que argumento
Real
Real
Real
Real
Real
Igual que argumento
Real
Entero
Entero

- Tabla 1.8: Algunas Funciones Internas -

Ejm:
a)
b)
c)
d)
e)
f)
g)
h)
i)
j)

:::30:::

cuadrado(6) = sqr(6) = 36
sqr(-10) = 100
raiz2(81) = sqrt(81) = 9
trunc(9.8) = 9
trunc(-6.9) = -6
redondeo(9.8) = 10
redondeo(-6.9) = -7
abs(-3.3) = 3.3
abs(-8) = 8
sen(30) = 0.5

Maria M. Lima Quispe

ALGORITMOS Y PROGRAMACIN ESTRUCTURADA EN C++

1.11 LA OPERACIN DE ASIGNACIN


Se representa con el smbolo u operador . Se conoce como
instruccin o sentencia de asignacin cuando hablamos de lenguajes
de programacin
Con esta operacin podemos asignarle valores a una
determinada variable.
La forma de asignar valores a una variable es:
variable expresin
La computadora ejecuta la sentencia de asignacin en dos pasos.
1 Se calcula el valor de la expresin
2 El valor hallado se asigna a la variable
Ejm:
a) Cul es el valor de la variable suma?
var_a 5
var_b 10
suma var_a + var_b

Asignamos 5 a la variable a
Asignamos 10 a la variable b
Sumamos las variables a, b y lo
asignamos a la variable suma

La variable suma toma el valor 15.


b) Cul es el valor de la variable x despus de las siguientes
operaciones?
x2
x cuadrado (x+x)

x raiz2(x+raiz2(x)+5)

Lilian M. Benique Ruelas

x almacena el valor 2
x cuadrado (2+2)
x cuadrado (4)
x toma el valor del cuadrado de 4; 16
x raiz2(16+raiz2(16)+5)
x raiz2(16+ 4
+5)
x raiz2(25)
x es la raz cuadrada de 25; x es 5

:::31:::

ALGORITMOS Y PROGRAMACIN ESTRUCTURADA EN C++

Preguntas de Repaso
1. Un algoritmo es:
a) Un conjunto ordenado y finito de operaciones que permite hallar
la solucin de un problema.
b) Un programa que resuelve diagramas de flujo.
c) Son pasos no estructurados que ejecuta una mquina.
2. No corresponde a una caracterstica de los Algoritmos
a) Los algoritmos deben de ser infinitos.
b) Los algoritmos deben de ser precisos.
c) Los algoritmos deben de poder repetirse.
3. Elementos que conforman un algoritmo
a) Entrada, Proceso, Salida.
b) Salida, Datos procesados, Proceso.
c) Datos, Salida, Proceso.
4. Fases en la creacin de Algoritmos en orden
a) Anlisis, Diseo, Prueba.
b) Prueba, Diseo, Anlisis.
c) Diseo, Anlisis, Prueba.
5. Software formado por uno o ms programas
a) Aplicacin.
b) Programa.
c) Algoritmo.
6. Corresponde a los pasos del ciclo de vida de una aplicacin
a) Anlisis, Codificacin, Mantenimiento
b) Programacin, Diseo del algoritmo, Ejecucin.
c) Anlisis, Datos Procesados, Diseo del algoritmo.
7. Segn el estilo de programacin, los tipos de lenguajes son:
a) Imperativos, Declarativos, Funcionales, Lgicos
b) Funcionales, Lgicos, Declarativos, Orientado a objetos.
c) Estructurados, Declarativos, Orientado a objetos, Lgicos.
8. Se convierte cada lnea a cdigo mquina y se ejecuta ese cdigo
mquina antes de convertir la siguiente lnea.
a) Intrpretes.
b) Programas.
c) Compiladores.

:::32:::

Maria M. Lima Quispe

ALGORITMOS Y PROGRAMACIN ESTRUCTURADA EN C++

9. La programacin consiste en:


a) Pasar algoritmos a algn lenguaje de ordenador a fin de que pueda
ser entendido por el ordenador.
b) Elegir un buen lenguaje de programacin.
c) Resolver problemas computacionales usando mdulos.
10. Es la ms novedosa, se basa en intentar que el cdigo de los
programas se parezca lo ms posible a la forma de pensar de las
personas.
a) Programacin Orientada a Objetos.
b) Programacin Estructurada
c) Programacin Desordenada
11. Coloque V o F segn corresponda :
a)
b)
c)
d)
e)
f)
g)
h)
i)
j)

Los tipos de datos pueden ser simples y estructurados


Los datos numricos son enteros y reales
Los datos booleanos almacenan 1s y 0s
@ es un carcter alfabtico
Una constante permanece invariable al ejecutarse
No es necesario declarar una variable en C++
Una funcin no puede ser una expresin
El operador de concatenacin se representa por +
Los operadores div y mod son operadores especiales
Con operadores relacionales expresamos condiciones

Lilian M. Benique Ruelas

(
(
(
(
(
(
(
(
(
(

)
)
)
)
)
)
)
)
)
)

:::33:::

ALGORITMOS Y PROGRAMACIN ESTRUCTURADA EN C++

Ejercicios Propuestos
I.1. Hallar el valor de las siguientes:
13 / 3
13 div 3
13 mod 3
15 div 4
15 mod 4

=
=
=
=
=

I.2. Si p = 16, q = 4 y r = 6, hallar:


p += 14
q /= q
r %= 2
q *= p
I.3. Encontrar el valor de la variable Z

Z 60 mod 7
Z (Z + 3)^2

Z (6>5) o (3=5)
Z no Z

Z (5 != 5) ? 6 : 4

I.4. Si X =1, Y = 4, Z = 10, hallar:

X > 3 y Y = 4 o X + Y <= Z
2 * Y ^ 2 6 * Y + 12
(trunc(6.3) + Y + sqr (Y*Z)) ( Z )
redondeo (3.6) + X * Z

I.5. Evaluar la expresin:


4/2*3/6+6/2-5^2/5*2

:::34:::

Maria M. Lima Quispe

ALGORITMOS Y PROGRAMACIN ESTRUCTURADA EN C++

METODOLOGA
PARA LA
RESOLUCIN DE
PROBLEMAS CON
COMPUTADORAS

Lilian M. Benique Ruelas

:::35:::

ALGORITMOS Y PROGRAMACIN ESTRUCTURADA EN C++

:::36:::

Maria M. Lima Quispe

ALGORITMOS Y PROGRAMACIN ESTRUCTURADA EN C++

CAPITULO 2: Metodologa para la resolucin de


problemas con computadoras
La resolucin de un problema con la computadora se hace escribiendo un
programa, que exige al menos los siguientes pasos:
RESOLUCIN DE UN
PROBLEMA

ANLISIS

DISEO DEL

RESOLUCIN DEL

DEL PROBLEMA

ALGORITMO

PROBLEMA CON
COMPUTADORA

- Figura 2.1: Pasos para la resolucin de problemas con la computadora -

2.1

ANLISIS DEL PROBLEMA


El propsito del anlisis de un problema es: ayudar al
programador para llegar a una cierta comprensin de la naturaleza
del problema.
Requisitos para llegar a una solucin eficaz
-

Buena definicin del problema.


Descripcin detallada de las especificaciones de E/S.

El anlisis del problema exige:


Una lectura previa del problema a fin de obtener una idea general
de lo que se solicita. La segunda lectura debe servir para responder
a las siguientes preguntas:
-

Qu entradas se requieren?
Cul es la salida deseada?
Qu mtodo (operacin) produce la salida deseada?
ANLISIS DEL
PROBLEMA

DEFINICIN DEL

ESPECIFICACIONES

OPERACIONES

PROBLEMA

DE ENTRADA Y

NECESARIAS

SALIDA

- Figura 2.2: Anlisis del Problema -

Lilian M. Benique Ruelas

:::37:::

ALGORITMOS Y PROGRAMACIN ESTRUCTURADA EN C++

Leer el radio de un crculo y calcular e


imprimir su superficie y la longitud de la
circunferencia.

Ejemplo 2.a

Anlisis:
Entrada :
Salida :
Proceso :

Radio del crculo (radio)


Superficie del crculo (area)
Longitud de circunferencia (circunferencia)
Clculo de superficie
Clculo de longitud de circunferencia

Entrada

Salida
Proceso

radio

area, circunferencia

Clculo de superficie y
circunferencia
- Figura 2.3: Ejemplo 2.a -

Leer la longitud del lado de un cuadrado y


calcular e imprimir el rea y el permetro.

Ejemplo 2.b

Anlisis:
Entrada :
Salida :
Proceso :

Longitud del lado del cuadrado (lado)


rea del cuadrado (area)
Permetro del cuadrado (perimetro)
Clculo del rea del cuadrado
Clculo del permetro

Entrada
lado

Salida
Proceso

area, perimetro

Clculo del area y del


perimetro
- Figura 2.4: Ejemplo 2.b -

:::38:::

Maria M. Lima Quispe

ALGORITMOS Y PROGRAMACIN ESTRUCTURADA EN C++

Leer la longitud de la base y la altura de un


tringulo rectngulo y calcular e imprimir el
rea.

Ejemplo 2.c

Anlisis:
Entrada :
Salida :
Proceso :

Longitud de la base del tringulo rectngulo (base)


Longitud de la altura del tringulo rectngulo (altura)
rea del tringulo rectngulo
Clculo del rea del tringulo rectngulo
Entrada

Salida
Proceso

base, altura

area

Clculo del area


- Figura 2.5: Ejemplo 2.c -

Ejercicio
Anlisis:
Entrada :

Salida :
Proceso :

Ejercicio
Anlisis:
Entrada :
Salida :
Proceso :

Ejercicio
Anlisis:
Entrada :
Salida :
Proceso :
Lilian M. Benique Ruelas

Calcular el promedio de tres notas


_____________________________________________
_____________________________________________
_____________________________________________
_____________________________________________
_____________________________________________
Determinar
rectngulo.

la

hipotenusa

de

un

tringulo

_____________________________________________
_____________________________________________
_____________________________________________
_____________________________________________

Leer un nmero y calcular la raz cuadrada


_____________________________________________
_____________________________________________
_____________________________________________
:::39:::

ALGORITMOS Y PROGRAMACIN ESTRUCTURADA EN C++

2.2

DISEO DEL ALGORITMO


En la etapa de diseo se determina Cmo hace el programa la tarea
solicitada?.
Los mtodos ms eficaces para el proceso de diseo se basan en el
conocido por divide y vencers (diseo descendente top-down). Es
decir, la resolucin de un problema complejo se realiza dividiendo
el problema en subproblemas y a continuacin dividir estos
subproblemas en otros de nivel ms bajo, hasta que pueda ser
implementada una solucin en la computadora.
As, el problema del ejemplo 2.a se puede dividir en tres problemas
ms simples o subproblemas.
Superficie y longitud
de circunferencia

Clculo de
area

radio

area=PI*radio^2

Clculo de
circunferencia

circunferencia=2*PI*radio

Entrada
de datos

Salida
resultados

area

circunferencia

- Figura 2.6: Refinamiento de un algoritmo -

El proceso de romper el problema en cada etapa y expresar cada


paso en forma ms detallada se denomina refinamiento sucesivo.
Para problemas complejos se necesitan con frecuencia diferentes
niveles de refinamiento antes de que se pueda obtener un algoritmo
claro, preciso y completo.

:::40:::

Maria M. Lima Quispe

ALGORITMOS Y PROGRAMACIN ESTRUCTURADA EN C++

Subproblemas

Refinamiento

Entrada de datos

Leer radio

Calculo de rea y
circunferencia

area = 3.141592*radio^2
circunferencia = 2*3.141592*radio

Salida de resultados

Escribir area, circunferencia

- Tabla 2.1: Refinamiento del ejemplo 2.a -

Luego de los pasos anteriores (diseo descendente y refinamiento


por pasos) es preciso representar el algoritmo mediante una
determinada herramienta de programacin.

2.2.1 Representacin de los algoritmos


Los mtodos usuales para representar un algoritmo son:
-

Pseudocdigo.
Diagramas de Flujo.
Diagramas N-S (Nassi - Schneiderman).

2.2.1.1

Pseudocdigo

Es un lenguaje de especificacin (descripcin) de algoritmos.


El pseudocdigo o pseudolenguaje, son una serie de
instrucciones en nuestro lenguaje natural (espaol, ingles,
etc.) y expresiones que representan cada uno de los pasos
que resuelven un problema especifico (algoritmo).
Es la representacin narrativa de los pasos que debe seguir
un algoritmo para dar solucin a un problema determinado.
El pseudocdigo utiliza palabras que indican el proceso a
realizar, por todo lo anterior es una tcnica NO GRFICA.
Se considera un primer borrador, dado que el pseudocdigo
tiene que traducirse posteriormente a un lenguaje de
programacin. Cabe sealar que el pseudocdigo no puede
ser ejecutado por una computadora.
As, de los ejercicios 2.a, 2.b y 2.c sus pseudocdigos seran:

Lilian M. Benique Ruelas

:::41:::

ALGORITMOS Y PROGRAMACIN ESTRUCTURADA EN C++

Ejemplo 2.d

Leer el radio de un crculo y calcular e


imprimir su superficie y la longitud de la
circunferencia. (Ejercicio 2.a)

Diseo:
inicio
leer radio
area 3.141592 * radio ^ 2
circunferencia 2 * 3.141592 * radio
escribir area, circunferencia
fin

Ejemplo 2.e

Leer la longitud del lado de un cuadrado y


calcular e imprimir el rea y el permetro.
(Ejercicio 2.b)

Diseo:
inicio
leer lado
area lado * lado
perimetro lado + lado + lado + lado
escribir area, perimetro
fin

Ejemplo 2.f

Leer la longitud de la base y la altura de un


tringulo rectngulo y calcular e imprimir
el rea. (Ejercicio 2.c)

Diseo:
inicio
leer base, altura
area base * altura / 2
escribir area
fin

:::42:::

Maria M. Lima Quispe

ALGORITMOS Y PROGRAMACIN ESTRUCTURADA EN C++

Ejercicio

Calcular el promedio de tres notas

Diseo:
inicio
__________________________
__________________________
__________________________
fin
Ejercicio

Determinar
rectngulo.

la

hipotenusa

de

un

tringulo

Diseo:
inicio
__________________________
__________________________
__________________________
fin
Ejercicio

Leer un nmero y calcular la raz cuadrada

Diseo:
inicio
__________________________
__________________________
__________________________
fin

2.2.1.2

Diagramas de Flujo

Un diagrama de flujo es la representacin grfica de un


algoritmo. Tambin se puede decir que es la representacin
detallada en forma grfica de como deben realizarse los
pasos en la computadora para producir resultados.
Esta representacin grfica se da cuando varios smbolos
(que indican diferentes procesos en la computadora), se
relacionan entre si mediante lneas que indican el orden en
que se deben ejecutar los procesos.

Lilian M. Benique Ruelas

:::43:::

ALGORITMOS Y PROGRAMACIN ESTRUCTURADA EN C++

Los smbolos utilizados han sido normalizados por el


instituto norteamericano de normalizacin (ANSI).
SMBOLO

NOMBRE

Terminal

Proceso

Entrada/Salida

Entrada manual

Pantalla

Llamada a funcin
o mdulo
(subprograma)

Conector en la
misma pgina

Conector con otra


pgina

:::44:::

DESCRIPCIN
Indica el comienzo inicio
o final fin de nuestro
algoritmo.
Representa
tambin una parada o
interrupcin
programada
que sea necesario realizar.
Dentro de el se coloca una
expresin para que se
ejecute.
Permite la introduccin de
datos desde los perifricos,
entrada, o registro de
informacin procesada en
un perifrico, salida.
Indica que se recibe un dato
desde el teclado y dentro de
este se coloca la variable en
donde se almacenar.
Dentro de el se coloca el
mensaje y/o datos que
queremos aparezcan en el
monitor.
Indica que se debe de
ejecutar la funcin o
mdulo que esta escrita
dentro de l.
Se utiliza para continuar la
secuencia del algoritmo en
otra parte de la hoja. El
conector debe de estar en
ambos lados y con el mismo
nmero.
Se utiliza para continuar la
secuencia del algoritmo en
otra pgina. El conector
debe de estar en ambos
lados y con el mismo
nmero.

Maria M. Lima Quispe

ALGORITMOS Y PROGRAMACIN ESTRUCTURADA EN C++

Decisin

Se utiliza para plantear una


pregunta y con la respuesta
se optar por avanzar por
solo uno de los caminos
posibles.

Pantalla

Se utiliza en ocasiones en
lugar del smbolo de E/S.

Comentarios

Se utiliza para aadir


comentarios
a
otros
smbolos del diagrama de
flujo.

Indicador de
direccin o lnea
de flujo.

Se usan para indicar el flujo


o camino a seguir para la
ejecucin de operaciones.

- Tabla 2.2: Smbolos DFD -

2.2.1.3

Diagramas De Flujo con DFD


2.2.1.3.1

DFD

DFD es un programa de libre disposicin para


ayuda al diseo e implementacin de algoritmos
expresados en diagramas de flujo (DF). Adems
incorpora opciones para el depurado de los
algoritmos, lo que facilita enormemente la
localizacin de los errores de ejecucin y lgicos
ms habituales. Su utilizacin es muy sencilla, al
tratarse de una herramienta grfica, y adems
incluye un men de ayuda muy completo.

Figura 2.7: Pantalla de inicio

Lilian M. Benique Ruelas

:::45:::

ALGORITMOS Y PROGRAMACIN ESTRUCTURADA EN C++

2.2.1.3.2 Barra de Herramientas


La barra de herramientas consta de los bloques de
Botones de objetos, Subprogramas, Ejecucin,
Depuracin y Zoom.

- Figura 2.8: Barra de Herramientas -

Los botones de objetos de izquierda a derecha son:


Cursor, Asignacin, Ciclo mientras, Ciclo para,
Decisin, Lectura, Salida, Llamada.

- Figura 2.9: Botones de objetos -

2.2.1.3.3 Smbolos DFD ms usados


Botn

Descripcin
Asignacin - Proceso
Ciclo mientras
Ciclo para
Decisin Condicin
Lectura - Entrada
Salida

- Tabla 2.3: Smbolos DFD ms usados -

As, del ejercicio 2.a, 2.b y 2.c los diagramas de flujo son:

:::46:::

Maria M. Lima Quispe

ALGORITMOS Y PROGRAMACIN ESTRUCTURADA EN C++

Ejemplo 2.g

Leer el radio de un crculo y calcular e


imprimir su superficie y la longitud de la
circunferencia. (Ejercicio 2.a)

Diseo:
inicio

leer radio

area 3.141592 * radio ^ 2


circunferencia 2 * 3.141592 * radio
escribir area,circunferencia

fin

Ejemplo 2.h

Leer la longitud del lado de un cuadrado y


calcular e imprimir el rea y el permetro.
(Ejercicio 2.b)

Diseo:
inicio

leer lado

area lado * lado


perimetro lado + lado + lado + lado

escribir area, perimetro

fin

Lilian M. Benique Ruelas

:::47:::

ALGORITMOS Y PROGRAMACIN ESTRUCTURADA EN C++

Ejemplo 2.i

Diseo:

Leer la longitud de la base y la altura de un


tringulo rectngulo y calcular e imprimir
el rea. (Ejercicio 2.c)
inicio

leer base, altura

area base * altura / 2

escribir area, perimetro

fin

2.2.1.4

Diagrama N-S (Nassi - Schneiderman).

El diagrama N-S de Nassi-Schneiderman (diagrama de


Chapin) es como un diagrama de flujo en el que se omiten
las flechas de unin y las cajas son contiguas, se pueden
escribir diferentes acciones en una caja.
nombre del algoritmo
accin1
accin2
accin3

fin
Ejm: Diagrama N-S del ejercicio 2.i
leer
base, altura
calcular
area base * altura / 2
escribir
area, perimetro

:::48:::

Maria M. Lima Quispe

ALGORITMOS Y PROGRAMACIN ESTRUCTURADA EN C++

2.3

RESOLUCIN
DEL
COMPUTADORA

PROBLEMA

CON

LA

Una vez que el algoritmo est diseado y representado


grficamente mediante una herramienta de programacin
(diagrama de flujo, pseudocdigo o diagrama N-S) se debe pasar a
la fase de resolucin practica del problema con la computadora.
Esta fase se descompone a su vez en las siguientes subfases:
RESOLUCIN DEL
PROBLEMA CON
COMPUTADORA

CODIFICACIN DEL

EJECUCIN DEL

COMPROBACIN

PROGRAMA

PROGRAMA

DEL PROGRAMA

- Figura 2.10: Resolucin del Problema mediante la computadora -

El programa que implementa el algoritmo debe ser escrito en un


lenguaje de programacin y siguiendo las reglas gramaticales o
sintaxis del mismo. La fase de conversin del algoritmo en un
lenguaje de programacin se denomina codificacin, ya que el
algoritmo escrito en un lenguaje especfico de programacin se
denomina cdigo.
Tras la codificacin del programa, deber ejecutarse en una
computadora y a continuacin de comprobar los resultados pasar a
la fase final de documentacin

2.3.1 Codificacin del Programa


La codificacin es la operacin de escribir la solucin del problema
(de acuerdo a la lgica del diagrama de flujo o pseudocdigo), en
una serie de instrucciones detalladas, en un cdigo reconocible por
la computadora, la serie de instrucciones detalladas se le conoce
como cdigo fuente, el cual se escribe en un lenguaje de
programacin o lenguaje de alto nivel.

Lilian M. Benique Ruelas

:::49:::

ALGORITMOS Y PROGRAMACIN ESTRUCTURADA EN C++

2.3.2 Ejecucin del Programa


El cdigo o programa fuente debe ser traducido a lenguaje
mquina, este proceso se realiza con el compilador y el sistema
operativo que se encarga prcticamente de la compilacin.
Si tras la compilacin se presentan errores en el programa fuente, es
preciso volver a editar el programa, corregir los errores y
compilarlo de nuevo.
Este proceso se repite hasta que no existan errores y se obtiene el
programa objeto que todava no es ejecutable directamente.
Se debe instruir al sistema operativo para que realice la fase de
montaje o enlace (link), carga, del programa objeto con las libreras
del programa del compilador. El proceso de montaje produce un
programa ejecutable.
Una vez creado el programa ejecutable, se puede ya ejecutar desde
el sistema operativo.

2.3.3 Comprobacin del Programa


Aqu encontramos las fases de verificacin y depuracin. La
verificacin de un programa es el proceso de ejecucin del
programa con una amplia variedad de datos de entrada, que
determinarn si el programa tiene errores.
La depuracin es el proceso de encontrar los errores del programa y
corregir o eliminar dichos errores. Al ejecutar un programa se
pueden producir tres tipos de errores: Errores de compilacin, de
ejecucin y lgicos.

2.3.4 Documentacin y Mantenimiento


La documentacin es la gua o comunicacin escrita es sus variadas
formas, ya sea en enunciados, procedimientos, dibujos o diagramas.
A menudo un programa escrito por una persona, es usado por otra.
Por ello la documentacin sirve para ayudar a comprender o usar
un programa o para facilitar futuras modificaciones
(mantenimiento).

:::50:::

Maria M. Lima Quispe

ALGORITMOS Y PROGRAMACIN ESTRUCTURADA EN C++

La documentacin se divide en tres partes:


-

Documentacin Interna
Documentacin Externa
Manual del Usuario

El mantenimiento se lleva acabo despus de terminado el programa,


cuando se detecta que es necesario hacer algn cambio, ajuste o
complementacin al programa para que siga trabajando de manera
correcta. Para poder realizar este trabajo se requiere que el
programa este correctamente documentado.

Preguntas de Repaso
1. Se trata de entender cules sern los datos de entrada y salida:
a) Anlisis del problema.
b) Diseo del algoritmo.
c) Codificacin.
2. El diseo del algoritmo es :
a) Independiente del lenguaje de programacin.
b) Un proceso complicado.
c) La parte inicial de todo problema.
3. Son herramientas para disear algoritmos.
a) Diagramas de Flujo, Pseudocdigos.
b) Pseudocdigos, Pseudos-lenguajes.
c) Diagramas N-S, DFDs
4. Es la operacin de escribir la solucin del problema en una serie de
instrucciones detalladas, en un cdigo reconocible por la
computadora.
a) Codificacin.
b) Pseudo-codificacin.
c) Mantenimiento.
5. Es la gua o comunicacin escrita es sus variadas formas, ya sea en
enunciados, procedimientos, dibujos o diagramas.
a) Documentacin.
b) Depuracin.
c) Programacin.

Lilian M. Benique Ruelas

:::51:::

ALGORITMOS Y PROGRAMACIN ESTRUCTURADA EN C++

Ejercicios Propuestos
II.1. Realizar el anlisis de los siguientes:

Hallar la suma, resta, producto y divisin de dos nmeros


Algoritmo que lee una temperatura en la escala centgrada y nos
calcula y escribe su valor en las escalas Reamur, Fahrenheit y
Kelvin.
Dada una cantidad en kilmetros convertirlo a metros.
El dueo de una tienda compr un artculo a un precio
determinado. Obtener el precio en que lo vendi, si perdi el
15%.

II.2. Realizar el pseudocdigo de los siguientes:

:::52:::

Hallar la suma, resta, producto y divisin de dos nmeros


Dada una cantidad en kilmetros convertirlo a metros.
Algoritmo que lee una temperatura en la escala centgrada y nos
calcula y escribe su valor en las escalas Reamur, Fahrenheit y
Kelvin.

Maria M. Lima Quispe

ALGORITMOS Y PROGRAMACIN ESTRUCTURADA EN C++

ESTRUCTURAS
SECUENCIALES

Lilian M. Benique Ruelas

:::53:::

ALGORITMOS Y PROGRAMACIN ESTRUCTURADA EN C++

:::54:::

Maria M. Lima Quispe

ALGORITMOS Y PROGRAMACIN ESTRUCTURADA EN C++

CAPITULO 3: Estructuras Secuenciales

- Figura 3.1: Estructuras Secuenciales -

Las tareas se suceden de tal modo que la salida de una es la


entrada de la siguiente y as sucesivamente hasta el final del
proceso.
inicio

inicio
accin1
accin2
accin3
fin

accin1
accin2
accin1

- Pseudocdigo -

fin

Lilian M. Benique Ruelas

Diagrama de Flujo

:::55:::

ALGORITMOS Y PROGRAMACIN ESTRUCTURADA EN C++

1. Calcular la suma y el producto de dos nmeros enteros.


Si los nmeros enteros son 10 y 9

Diagrama de flujo:
inicio

V.E.

leer a,b

Nmeros (a,b)
V.S.

s a + b
p a * b

Suma (s)
Producto (p)

escribir s,p

fin

Prueba de Escritorio:
A

Pantalla

10

19

90

19,90

Programa:
#include<iostream.h>
void main()
{
int a,b,s,p;
cout<<"ingrese a: ";cin>>a;
cout<<"ingrese b: ";cin>>b;
s=a+b;
p=a*b;
cout<<"Suma es
: "<<s<<endl;
cout<<"Producto es: "<<p;
}

:::56:::

Maria M. Lima Quispe

ALGORITMOS Y PROGRAMACIN ESTRUCTURADA EN C++

2. Leer un nmero e imprimir su cuadrado.


Por ejemplo, el cuadrado del nmero 8:

82 8 * 8 64
V.E.
Nmero (n)
V.S.
Cuadrado (c)
Diagrama de flujo:

Pseudocdigo:
inicio

inicio

leer n
c n * n

leer n

escribir c
fin

c n * n

Prueba de Escritorio:
n

Pantalla

64

64

escribir c

fin

Programa:
#include<iostream.h>
void main()
{
float n,c;
cout<<"Ingrese el nmero:

";cin>>n;

c = n*n;
cout<<"El cuadrado es:

"<<c;

Lilian M. Benique Ruelas

:::57:::

ALGORITMOS Y PROGRAMACIN ESTRUCTURADA EN C++

3. Calcular la edad de una persona.


Si una persona naci el ao 1987 y el ao actual es 2008, Cuntos
aos tendr?
V.E.

Diagrama de flujo:

Ao de nacimiento (an)
Ao actual (aa)

inicio

V.S.
leer an,aa

Edad (e)
Pseudocodigo:

aa-an

inicio
leer an,aa

escribir e

e aa - an
escribir e
fin

Fin

Prueba de Escritorio:
an

aa

Pantalla

1987

2008

21

21

Programa:
#include<iostream.h>
void main()
{
int an,aa,e;
cout<<"Ao de nacimiento: ";cin>>an;
cout<<"Ao actual
: ";cin>>aa;
e=aa-an;
cout<<"Edad : "<<e;
}

:::58:::

Maria M. Lima Quispe

ALGORITMOS Y PROGRAMACIN ESTRUCTURADA EN C++

4. Se desea leer la longitud del lado de un cuadrado y calcular e


imprimir el rea y el permetro.
L
L

rea = L2
Permetro = L+L+L+L

L
L

Si el lado del cuadrado es 10, Cunto es el rea y el permetro del


cuadrado?
Diagrama de flujo:

V.E.

inicio

Lado (L)
leer L

V.S.
rea (A)
Permetro (P)

A L * L
P L+L+L+L

Prueba de Escritorio:
escribir A,P
L

Pantalla

10

100

40

100,40
fin

Programa:
#include<iostream.h>
void main()
{
float L,A,P;
cout<<"Ingrese lado:

";cin>>L;

A = L*L;
P = L+L+L+L;
cout<<"El rea es
:
cout<<"El permetro es:

"<<A;
"<<P;

}
Lilian M. Benique Ruelas

:::59:::

ALGORITMOS Y PROGRAMACIN ESTRUCTURADA EN C++

5. Se desea leer la longitud de la base y la altura de un


tringulo y calcular e imprimir el rea.

rea

bh
2

Si la base es 12, la altura es 5, Cunto es el rea?


Diagrama de flujo:

V.E.

inicio

Base (b)
Altura (h)

leer b,h

V.S.
rea (A)

A (b*h)/2

escribir A

Prueba de Escritorio:
b

Pantalla

12

30

30

fin

Programa:
#include<iostream.h>
void main()
{
float b,h,A;
cout<<"Ingrese base : ";cin>>b;
cout<<"Ingrese altura: ";cin>>h;
A=(b*h)/2;
cout<<"El rea es:

"<<A;

:::60:::

Maria M. Lima Quispe

ALGORITMOS Y PROGRAMACIN ESTRUCTURADA EN C++

6. Determinar la hipotenusa de un tringulo rectngulo.

co

h2 co 2 ca 2

ca

Si cateto opuesto es 4, cateto adyacente 3, Cunto es la hipotenusa?


Diagrama de flujo:

V.E.

inicio

Catetos ( co, ca )
V.S.

leer co,ca

Hipotenusa ( h )
Prueba de Escritorio:

h sqrt(co*co+ca*ca)

Co

ca

Pantalla

escribir h

fin

Programa:

Se incluye la librera math.h para que trabaje la funcin raz cuadrada


(sqrt).
#include<iostream.h>
#include<math.h>
void main()
{
float co,ca,h;
cout<<"Ingrese cateto opuesto : ";cin>>co;
cout<<"Ingrese cateto adyacente: ";cin>>ca;
h=sqrt(co*co+ca*ca);
cout<<"Hipotenusa es:

"<<h;

Lilian M. Benique Ruelas

:::61:::

ALGORITMOS Y PROGRAMACIN ESTRUCTURADA EN C++

7. Realice la siguiente conversin: De una temperatura dada en


grados Celsius a grados Fahrenheit.

9
F C 32
5
Si Celsius es 45, A cuntos grados Fahrenheit equivale?
Diagrama de flujo:

V.E.

inicio

Celsius ( C )
V.S.

leer C

Fahrenheit ( F )

F (9*C)/5+32
escribir F

Prueba de Escritorio:
C

Pantalla

45

113

113

fin

Programa:
#include<iostream.h>
void main()
{
float C,F;
cout<<"Ingrese grados Celsius:";cin>>C;
F = (9*C)/5+32;
cout<<"Grados Fahrenheit: "<<F;
}

:::62:::

Maria M. Lima Quispe

ALGORITMOS Y PROGRAMACIN ESTRUCTURADA EN C++

8. La presin, el volumen y la temperatura de una masa de aire


se relacionan por la formula:
Masa = ( presin * volumen )/( 0.37 * ( temperatura + 460 ))
Cunto es la masa?
En la frmula se desconoce la presin, volumen y temperatura
(variables de entrada), estos datos deben ser ingresados por el
usuario.
Diagrama de flujo:

V.E.

inicio

Presin (p)
Volumen (v)
Temperatura (t)

leer p,v,t

V.S.
m (p*v)/(0.37*(t+460))

Masa (m)

escribir m

Prueba de Escritorio:
p

Pantalla

10

18

0.282709

0.282709

fin

Programa:
#include<iostream.h>
void main()
{
float p,v,t,m;
cout<<"Ingrese presin
:
cout<<"Ingrese volumen
:
cout<<"Ingrese temperatura:

";cin>>p;
";cin>>v;
";cin>>t;

m = (p*v)/(0.37*(t+460));

cout<<"Masa : "<<m;
}

Lilian M. Benique Ruelas

:::63:::

ALGORITMOS Y PROGRAMACIN ESTRUCTURADA EN C++

9. Calcular el nmero de pulsaciones que una persona debe


tener por cada 10 segundos de ejercicio, si la frmula es:
Num. de pulsaciones = ( 220 edad ) / 10
Diagrama de flujo:
inicio

V.E.
Edad (e)

leer e

V.S.
N de pulsaciones (np)

np (220-e)/10
escribir np

Prueba de Escritorio:
e

np

Pantalla

28

19.2

19.2

fin

Programa:
#include<iostream.h>
void main()
{
int e,np;
cout<<"ingrese edad:

";cin>>e;

np=(220-e)/10;
cout<<"Nmero de Pulsaciones es:

"<<np;

:::64:::

Maria M. Lima Quispe

ALGORITMOS Y PROGRAMACIN ESTRUCTURADA EN C++

10. Leer un nmero y escribir el valor absoluto del mismo.


El valor absoluto de -3, es:

3 3
El valor absoluto de 10, es:

10 10
Diagrama de flujo:

V.E.
Nmero (n)

inicio

V.S.
Valor absoluto (va)

leer n

va abs(n)

Prueba de Escritorio:
n

va

Pantalla

-3

escribir va

fin

Programa:
Se incluye la librera math.h para que trabaje la funcin valor absoluto
(abs).
#include<iostream.h>
#include<math.h>
void main()
{
int n,va;
cout<<"Ingrese Nmero: ";cin>>n;
va = abs(n);
cout<<"Su valor absoluto es: "<<va;
}

Lilian M. Benique Ruelas

:::65:::

ALGORITMOS Y PROGRAMACIN ESTRUCTURADA EN C++

11. Dada una cantidad en soles obtener la equivalencia en


dlares, asumiendo que el tipo de cambio es un dato
desconocido.
Si usted tiene 21 soles y el tipo de cambio es 3, Cuntos dlares
tiene?
Diagrama de flujo:

V.E.

inicio

Soles (s)
Tipo de cambio (tc)

leer s,tc

V.S.
Dlares (d)

d s / tc
escribir d

Prueba de Escritorio:
s

tc

Pantalla

21

fin

Programa:
#include<iostream.h>
void main()
{
float s,tc,d;
cout<<"Ingrese Soles : ";cin>>s;
cout<<"Tipo de cambio: ";cin>>tc;
d = s / tc;
cout<<"Dlares:

"<<d;

:::66:::

Maria M. Lima Quispe

ALGORITMOS Y PROGRAMACIN ESTRUCTURADA EN C++

12. Calcular el nuevo salario de un obrero si obtuvo un


incremento de del 25% sobre su salario anterior.
Si el Salario anterior es 1000 soles, Cunto es el Nuevo salario?
Nuevo salario = ( 25%* 1000 ) + 1000
= ( 0.25 *1000 ) + 1000 = 250 + 1000 = 1250
Diagrama de flujo:

V.E.
inicio

Salario anterior (sa)


V.S.

leer sa

Nuevo salario (ns)

ns sa * 0.25 + sa

Pseudocodigo:
inicio

escribir ns

leer sa
ns sa * 0.25 + sa
fin

escribir ns
fin

Prueba de Escritorio:
sa

ns

Pantalla

1000

1250

1250

Programa:
#include<iostream.h>
void main()
{
float sa,ns;
cout<<"Salario anterior:

";cin>>sa;

ns = sa * 0.25 + sa;
cout<<"Nuevo salario:

"<<ns;

Lilian M. Benique Ruelas

:::67:::

ALGORITMOS Y PROGRAMACIN ESTRUCTURADA EN C++

13. Suponga que un individuo desea invertir su capital en un


banco y desea saber cunto dinero ganar despus de un
mes si el banco paga a razn del 2% mensual.
Si el Capital es 2000 soles, Cunto es el dinero que ganar despus
de un mes?
Ganancia = 0.02 * 2000 = 40
Diagrama de flujo:

V.E.
Capital (C)

inicio

V.S.
leer C

Ganancia (G)

G C * 0.02
escribir G

Prueba de Escritorio:
C

Pantalla

2000

40

40

fin

Programa:
#include<iostream.h>
void main()
{
float C,G;
cout<<"Ingrese capital:

";cin>>C;

G = C * 0.02;
cout<<"Ganacia es: "<<G;
}

:::68:::

Maria M. Lima Quispe

ALGORITMOS Y PROGRAMACIN ESTRUCTURADA EN C++

14. Una tienda ofrece un descuento del 15% sobre el total de la


compra, un cliente desea saber cuanto deber pagar
finalmente por su compra.
Si el Total de la compra es 500 soles, Cunto pagar finalmente el
cliente?
Descuento = 0.15 * 500 = 75
Total a pagar = 500 75 = 425
Diagrama de flujo:

V.E.

inicio

Total de compra (tc)


V.S.

leer tc

Total a pagar (tp)


O.V.
Descuento (d)

d 0.15 * tc
tp tc -d
escribir tp

Programa:

fin

#include<iostream.h>
void main()
{
float tc,tp,d;
cout<<"Total de Compra: ";cin>>tc;
d = 0.15 * tc;
tp = tc - d;
cout<<"Total a Pagar: "<<tp;
}

Lilian M. Benique Ruelas

:::69:::

ALGORITMOS Y PROGRAMACIN ESTRUCTURADA EN C++

15. Se desea obtener el salario bruto, total de impuestos y salario


neto de un trabajador conociendo el nmero de horas
trabajadas, el salario hora, y la tasa de impuestos que se le
debe deducir.
Si el Nmero de horas trabajadas es 80, el Salario hora 8 soles y la tasa
de impuestos 10%.
Salario bruto = 80 * 8
= 640
Total de impuestos = 640 * 0.10 = 64
Salario neto = 640 64 = 576

Diagrama de flujo:
inicio

leer HT,SH,T

V.E.
Horas trabajadas (HT)
Salario hora (SH)
Tasa de impuestos (T)
V.S.
Salario bruto (SB)
Total de impuestos (TI)
Salario neto (SN)
Programa:

SB HT * SH
TI SB * T
SN SB - TI

escribir SB,TI,SN

fin

#include<iostream.h>
void main()
{
float HT,SH,T,TI,SB,SN;
cout<<"Ingrese horas trabajadas : ";cin>>HT;
cout<<"Ingrese salario hora
: ";cin>>SH;
cout<<"Ingrese tasa de impuestos: ";cin>>T;
SB=HT*SH;
TI=SB*T;
SN=SB-TI;
cout<<"Salario bruto es :
cout<<"Total de impuestos:
cout<<"Salario neto es
:

"<<SB<<endl;
"<<TI<<endl;
"<<SN;

:::70:::

Maria M. Lima Quispe

ALGORITMOS Y PROGRAMACIN ESTRUCTURADA EN C++

16. Un vendedor recibe un sueldo base mas un 10% extra por


comisin de sus ventas, el vendedor desea saber cuanto
dinero obtendr por concepto de comisiones por las tres
ventas que realiza en el mes y el total que recibir en el mes
tomando en cuenta su sueldo base y comisiones.
Si el Sueldo base es 600 soles, los montos de las tres ventas son: 140,
80 y 250.
Total de Ventas = 140 + 80 + 230 = 450
Comisin = 0.10 * 450 = 45
Total = 450 + 45 = 495
V.E.
Sueldo base (sb)
Ventas (v1,v2,v3)

inicio

Diagrama de flujo:

leer sb,v1,v2,v3

V.S.
Comisin de ventas (c)
Total a recibir (t)
O.V.
Total ventas (tv)

tv v1+v2+v3
c 0.10 * tv
t sb + c
escribir c,t

Programa:

fin

#include<iostream.h>
void main()
{
float sb,v1,v2,v3,tv,c,t;
cout<<"Sueldo base:
";cin>>sb;
cout<<"Venta 1: ";cin>>v1;
cout<<"Venta 2: ";cin>>v2;
cout<<"Venta 3: ";cin>>v3;
tv = v1+v2+v3;
c = 0.10*tv;
t = sb+c;
cout<<"Comisin es: "<<c<<endl;
cout<<"Total
: "<<t;
}
Lilian M. Benique Ruelas

:::71:::

ALGORITMOS Y PROGRAMACIN ESTRUCTURADA EN C++

17. Un maestro desea saber que porcentaje de varones y que


porcentaje de mujeres hay en un grupo de alumnos.
Si el total de alumnos es 38, el nmero de mujeres es 20.
Varones = 38 20 = 18
Porcentaje de mujeres:
Cantidad
38
20

Porcentaje
100
%m

%m

20 *100
52.63%
38

Porcentaje de varones:
Cantidad
38
18

Porcentaje
100
%v

%v

18 *100
47.37%
38

V.E.
Total de alumnos (ta)
Nmero de mujeres (nm)
V.S.

Diagrama de flujo:
inicio
leer ta,nm

nv ta - nm
pm ( nm*100 )/ta
pv ( nv*100 )/ta

Porcentaje de varones (pv)


Porcentaje de mujeres (pm)
O.V.

escribir pv,pm

Nmero de varones (nv)

Programa:

fin

#include<iostream.h>
void main()
{
float ta,nm,nv,pm,pv;
cout<<"Total de alumnos : ";cin>>ta;
cout<<"Nmero de mujeres: ";cin>>nm;
nv = ta-nm;
pm = (nm*100)/ta;
pv = (nv*100)/ta;
cout<<"% de Varones: "<<pv<<endl;
cout<<"% de Mujeres: "<<pm;
}
:::72:::

Maria M. Lima Quispe

ALGORITMOS Y PROGRAMACIN ESTRUCTURADA EN C++

18. El dueo de una tienda compra un artculo a un precio


determinado. Obtener el precio en que lo debe vender, para
obtener una ganancia del 30%.
Si el Precio de compra es 120 soles.
Precio venta = 120 * 0.30 + 120 = 36 + 120 = 156
V.E.
Precio de compra (pc)

Diagrama de flujo:

V.S.

inicio

Precio de venta (pv)


leer pc

Pseudocodigo:
inicio

pv pc * 0.30 + pc

leer pc
pv pc * 0.30 + pc

escribir pv

escribir pv
fin
fin

Programa:
#include<iostream.h>
void main()
{
float pc,pv;
cout<<"Ingrese precio de compra:

";cin>>pc;

pv = pc * 0.30 + pc;
cout<<"Precio de venta:

"<<pv;

Lilian M. Benique Ruelas

:::73:::

ALGORITMOS Y PROGRAMACIN ESTRUCTURADA EN C++

19. En un hospital existen tres reas: Ginecologa, Pediatra,


Traumatologa. El presupuesto anual del hospital se reparte
conforme a la siguiente tabla:
rea

Porcentaje del presupuesto

Ginecologa
Traumatologa
Pediatra

45%
25%
30%

Obtener la cantidad de dinero que recibir cada rea, para


cualquier monto presupuestal.
Diagrama de flujo:

V.E.

inicio

leer pa

Presupuesto anual (pa)


V.S.
Monto para Ginecologa (G)
Monto para Traumatologa (T)
Monto para Pediatra (P)

G 0.45 * pa
T 0.25 * pa
P 0.30 * pa

escribir G,T,P

Programa:

fin

#include<iostream.h>
void main()
{
float pa,G,T,P;
cout<<"Ingrese Presupuesto Anual:

";cin>>pa;

G = 0.45 * pa;
T = 0.25 * pa;
P = 0.30 * pa;
cout<<"Ginecologa : "<<G<<endl;
cout<<"Traumatologa: "<<T<<endl;
cout<<"Pediatra
: "<<P;
}

:::74:::

Maria M. Lima Quispe

ALGORITMOS Y PROGRAMACIN ESTRUCTURADA EN C++

20. Tres personas deciden invertir su dinero para fundar una


empresa. Cada una de ellas invierte una cantidad distinta.
Obtener el porcentaje que cada quien invierte con respecto a
la cantidad total invertida.
Sean x,y,z las personas e invierten 200, 500 y 300 respectivamente.
Total invertido = 200 + 500 + 300 = 1000
Porcentaje de x:
Dinero invertido
1000
200

%x

Porcentaje
100
%x

200 *100
20%
1000

Para las personas y,z cambia el dinero invertido, las formulas seran:

%y

500 *100
50%
1000

V.E.

Dinero de x (dx)
Dinero de y (dy)
Dinero de z (dz)

%z

300 *100
30%
1000

Diagrama de flujo:
inicio

V.S.

Porcentaje de x (px)
Porcentaje de y (py)
Porcentaje de z (pz)
O.V.

Total invertido (T)


Programa:
#include<iostream.h>
void main()
{
float dx,dy,dz,px,py,pz,T;
cout<<"Dinero de X: ";cin>>dx;
cout<<"Dinero de Y: ";cin>>dy;
cout<<"Dinero de Z: ";cin>>dz;
T = dx + dy + dz;
px = dx * 100/T;
py = dy * 100/T;
pz = dz * 100/T;
cout<<"% de X: "<<px<<endl;
cout<<"% de Y: "<<py<endl;
cout<<"% de Z: "<<pz;
}

Lilian M. Benique Ruelas

dx,dy,dz

T dx + dy + dz
px dx * 100 / T
py dy * 100 / T
pz dz * 100 / T

px,py,pz

fin

:::75:::

ALGORITMOS Y PROGRAMACIN ESTRUCTURADA EN C++

21. Hallar el rea de un tringulo en funcin de las longitudes


de sus lados:

Area

p( p a)( p b)( p c)

Donde p = (a+b+c)/2 (semipermetro)

a
c

V.E.
Lados (a,b,c)

Diagrama de flujo:

V.S.

inicio

Area (A)
O.V.

leer a,b,c

Semipermetro (p)

p (a+b+c)/2

Pseudocodigo:

A sqrt(p*(p-a)*(p-b)*(p-c))

inicio
escribir A

leer a,b,c
p (a+b+c)/2
A sqrt(p*(p-a)*(p-b)*(p-c))

fin

escribir A
fin

#include<iostream.h>
#include<math.h>
void main( )
{
double a,b,c,p,A;
Programa:

cout<<"Ingrese a: ";cin>>a;
cout<<"Ingrese b: ";cin>>b;
cout<<"Ingrese c: ";cin>>c;
p = (a+b+c)/2;
A = sqrt(p*(p-a)*(p-b)*(p-c));
cout<<"El area es : "<<A<<endl;
}

:::76:::

Maria M. Lima Quispe

ALGORITMOS Y PROGRAMACIN ESTRUCTURADA EN C++

Ejercicios Propuestos
Realizar el anlisis, diseo (pseudocdigo, diagrama de flujo) y
programa de los siguientes:
3.1.

Calcular la suma, resta, producto y divisin de dos nmeros, e imprimir el


resultado.

3.2.

Leer un nmero e imprimir el cubo.

3.3.

Calcular el rea de un cuadrado, de acuerdo a la siguiente formula:

3.4.

d2
2

Calcular el rea de un rombo, de acuerdo a la siguiente formula:


B

Area
A

AC * BD
2

Donde:
AC es diagonal menor
BD es diagonal mayor

D
3.5.

Dada una cantidad en kilmetros convertirlo a metros.

3.6.

Un almacn ofrece descuentos del 25% sobre el monto total de la compra,


un cliente desea saber cunto es el descuento y cunto es lo que debe
pagar finalmente.

3.7.

Cunto es el salario mensual de una persona que trabaja 8 horas diarias, y


por hora recibe 7 soles, tomando en cuenta que al mes solo trabaja algunos
das.

3.8.

Un vendedor recibe un sueldo base de 450 soles ms un 20% extra por


comisin de sus ventas, el vendedor desea saber cuanto dinero obtendr
por concepto de comisiones por las cuatro ventas que realiza en el mes y
el total que recibir en el mes tomando en cuenta su sueldo base y
comisiones.

Lilian M. Benique Ruelas

:::77:::

ALGORITMOS Y PROGRAMACIN ESTRUCTURADA EN C++

3.9.

El dueo de una tienda compr un artculo a un precio determinado.


Obtener el precio en que lo vendi, si perdi el 15%.

3.10. Lilian, Cristian y Joel deben repartirse un dinero que dej su padre. El
monto se reparte de acuerdo a la siguiente tabla:
Hijos

Porcentaje

Lilian
Cristian
Joel

25%
35%
40%

Cunto dinero recibe cada hijo?

:::78:::

Maria M. Lima Quispe

ALGORITMOS Y PROGRAMACIN ESTRUCTURADA EN C++

ESTRUCTURAS
SELECTIVAS

Lilian M. Benique Ruelas

:::79:::

ALGORITMOS Y PROGRAMACIN ESTRUCTURADA EN C++

:::80:::

Maria M. Lima Quispe

ALGORITMOS Y PROGRAMACIN ESTRUCTURADA EN C++

CAPITULO 4: Estructuras Selectivas

- Figura 4.1: Estructuras Selectivas -

En las estructuras selectivas se evala una condicin y en funcin del


resultado de la misma se realiza una opcin u otra. Las condiciones se
especifican usando expresiones lgicas.

4.1

ESTRUCTURAS SELECTIVAS SIMPLES


En esta estructura se ejecuta una determinada accin o acciones
cuando se cumple una determinada condicin.

si condicin entonces
AccinV

fin_si
- Pseudocdigo -

condicin

falsa

verdadera
AccinV

- Diagrama de Flujo -

Lilian M. Benique Ruelas

:::81:::

ALGORITMOS Y PROGRAMACIN ESTRUCTURADA EN C++

if(condicin)
{
AccinV;
}
- Sintaxis en C++ La condicin, puede estar compuesta por variables, expresiones o
funciones; sin embargo el valor que representa solo podr tomar
uno de dos valores Verdadero (si) Falso (no).
AccinV, puede estar conformados por una varias sentencias. Si
estuviera conformada por una sentencia no es necesario utilizar
llaves ({ }) pero si estuviera conformada por varias sentencias
obligatoriamente debern utilizar llaves. Esta AccinV se ejecuta
cuando la condicin es verdadera.
Ejm:
Si la edad de una persona es mayor o igual a 18 se imprimir
Mayor de edad.
if( edad >= 18 )
{
cout<<Mayor de edad;
}
Puede escribirse tambin de la siguiente manera.
if( edad >= 18 )cout<<Mayor de edad;
La condicin en este ejemplo es:
edad >= 18
La AccinV es:
cout<<Mayor de edad;

:::82:::

Maria M. Lima Quispe

ALGORITMOS Y PROGRAMACIN ESTRUCTURADA EN C++

SIMPLES
1. Leer un nmero y determinar si es Positivo.
Un nmero es positivo si es mayor a cero.
Diagrama de flujo:
inicio

V.E.
Nmero (N)

leer N

SALIDA
Positivo

Si

Pseudocodigo:

N >0

No

Positivo

inicio
leer N

fin

si N>0 entonces
escribir Positivo
fin_si
fin

Programa:
#include<iostream.h>
void main()
{
int N;
cout<<"Ingrese nmero: ";cin>>N;
if(N>0)
{
cout<<"Positivo";
}
}

Lilian M. Benique Ruelas

:::83:::

ALGORITMOS Y PROGRAMACIN ESTRUCTURADA EN C++

2. Determinar si un nmero entero es Neutro.


Un nmero es neutro si es igual a cero.
Diagrama de flujo:
inicio

V.E.
Nmero (N)

leer N

SALIDA
Neutro

Si

Pseudocodigo:

N==0

No

Neutro

inicio
leer N

fin

si N==0 entonces
escribir Neutro
fin_si
fin

Programa:
#include<iostream.h>
void main()
{
int N;
cout<<"Ingrese Nmero: ";cin>>N;
if(N==0)
{
cout<<"Neutro";
}
}

:::84:::

Maria M. Lima Quispe

ALGORITMOS Y PROGRAMACIN ESTRUCTURADA EN C++

3. Determinar si una persona es Mayor de Edad.


Una persona es mayor de edad a partir de los 18 aos para adelante.
Diagrama de flujo:
inicio

V.E.

leer E

Edad (E)
SALIDA

Si

E>=18

No

Mayor de Edad
Mayor de
Edad

Pseudocodigo:

fin

inicio
leer E
si E>=18 entonces
escribir Mayor de Edad
fin_si
fin

Programa:
#include<iostream.h>
void main()
{
int E;
cout<<"Ingrese edad: ";cin>>E;
if(E >= 18)
{
cout<<"Mayor de Edad";
}
}

Lilian M. Benique Ruelas

:::85:::

ALGORITMOS Y PROGRAMACIN ESTRUCTURADA EN C++

4. Determinar si dos nmeros A y B son Iguales.


Diagrama de flujo:

V.E.

inicio

Nmeros (A,B)
leer A,B

SALIDA
Iguales

Si

A==B

No

Iguales

Pseudocodigo:
inicio

fin

leer A,B
si A==B entonces
escribir Iguales
fin_si
fin

Programa:
#include<iostream.h>
void main()
{
int A,B;
cout<<"Ingrese A: ";cin>>A;
cout<<"Ingrese B: ";cin>>B;
if(A==B)
{
cout<<"Iguales";
}
}

:::86:::

Maria M. Lima Quispe

ALGORITMOS Y PROGRAMACIN ESTRUCTURADA EN C++

5. Determinar si una persona es Menor de Edad.


Una persona es menor de edad hasta los 17 aos.
Diagrama de flujo:
inicio

V.E.
leer E

Edad (E)
SALIDA
Si

Menor de Edad

E<=17

No

Menor de
Edad

Pseudocodigo:
fin
inicio
leer E
si E<=17 entonces
escribir Menor de Edad
fin_si
fin

Programa:
#include<iostream.h>
void main()
{
int E;
cout<<"Ingrese edad: ";cin>>E;
if(E <= 17)
{
cout<<"Menor de Edad";
}
}

Lilian M. Benique Ruelas

:::87:::

ALGORITMOS Y PROGRAMACIN ESTRUCTURADA EN C++

6. Determinar si dos nmeros A y B son Diferentes.


Diagrama de flujo:

V.E.

inicio

Nmeros (A,B)
leer A,B

SALIDA
Diferentes

Si

A!=B

No

Diferentes

Pseudocodigo:
inicio

fin

leer A,B
si A!=B entonces
escribir Diferentes
fin_si
fin

Programa:
#include<iostream.h>
void main()
{
int A,B;
cout<<"Ingrese A: ";cin>>A;
cout<<"Ingrese B: ";cin>>B;
if(A!=B)
{
cout<<"Diferentes";
}
}

:::88:::

Maria M. Lima Quispe

ALGORITMOS Y PROGRAMACIN ESTRUCTURADA EN C++

7. Leer un nmero y determinar si es Negativo.


Un nmero es negativo cuando es menor que 0.
Diagrama de flujo:

V.E.

inicio

Nmero (N)
SALIDA

leer N

Negativo
Si

N < 0

No

Pseudocodigo:
inicio

Negativo

leer N
si N<0 entonces

fin

escribir Negativo
fin_si
fin

Programa:
#include<iostream.h>
void main()
{
int N;
cout<<"Ingrese nmero: ";cin>>N;
if(N<0)
{
cout<<"Negativo";
}
}

Lilian M. Benique Ruelas

:::89:::

ALGORITMOS Y PROGRAMACIN ESTRUCTURADA EN C++

8. Determinar si un Nmero es Par.


Un nmero como 18 al dividirlo entre 2 da como resto 0:
Si 18 MOD 2 es igual a 0 el nmero 18 es PAR.
V.E.

Resto

18

Diagrama de flujo:

Nmero (N)

inicio

SALIDA

leer N

Par
Si

Pseudocodigo:

N%2==0

No

Par

inicio
leer N

fin

si N%2==0 entonces
escribir Par
fin_si
fin

Programa:
#include<iostream.h>
void main()
{
int N;
cout<<"Ingrese N: ";cin>>N;
if( N%2 ==0 )
{
cout<<"Par";
}
}

:::90:::

Maria M. Lima Quispe

ALGORITMOS Y PROGRAMACIN ESTRUCTURADA EN C++

9. Determinar si un nmero es mltiplo de tres.


Un nmero como 18 al dividirlo entre 3 da como resto 0:

Resto

18

Un nmero como 21 al dividirlo entre 3 da como resto 0:

Resto

21

Un nmero como 17 al dividirlo entre 3 da como resto 2:

Resto

17

Si 18 MOD 3 es igual a 0 el nmero 18 es mltiplo de 3.


Si 21 MOD 3 es igual a 0 el nmero 21 es mltiplo de 3.

La frmula sera:
N mod 3 == 0

V.E.
Nmero (N)
SALIDA
Mltiplo de tres

Lilian M. Benique Ruelas

:::91:::

ALGORITMOS Y PROGRAMACIN ESTRUCTURADA EN C++

Diagrama de flujo:
inicio
leer N

Si

N%3==0

No

Mltiplo de tres

fin

Pseudocodigo:
inicio
leer N
si N%3==0 entonces
escribir Mltiplo de tres
fin_si
fin

Programa:
#include<iostream.h>
void main()
{
int N;
cout<<"Ingrese N: ";cin>>N;
if( N%3 ==0 )
{
cout<<"Mltiplo de tres";
}
}

:::92:::

Maria M. Lima Quispe

ALGORITMOS Y PROGRAMACIN ESTRUCTURADA EN C++

10. Determinar si un Nmero es Impar.


Un nmero como 17 al dividirlo entre 2 da como resto 1:

17

Si 17 MOD 2 es igual a 1 el nmero 17 es IMPAR.

Resto

Diagrama de flujo:

V.E.
Nmero (N)

inicio

SALIDA

leer N

Impar
Si

Pseudocodigo:

N%2==1

No

Impar

inicio
leer N

fin

si N%2==1 entonces
escribir Nmero Impar
fin_si
fin

Programa:
#include<iostream.h>
void main()
{
int N;
cout<<"Ingrese N: ";cin>>N;
if( N%2 ==1 )
{
cout<<"Nmero Impar";
}
}

Lilian M. Benique Ruelas

:::93:::

ALGORITMOS Y PROGRAMACIN ESTRUCTURADA EN C++

11. Determinar si un nmero es mltiplo de cinco.


Un nmero como 15 al dividirlo entre 5 da como resto 0:

Resto

15

Un nmero como 20 al dividirlo entre 5 da como resto 0:

Resto

20

Y un nmero como 17 al dividirlo entre 5 da como resto 2:

Resto

17

Si 15 MOD 5 es igual a 0 el nmero 15 es mltiplo de 5.


Si 20 MOD 5 es igual a 0 el nmero 20 es mltiplo de 5.

La frmula sera:
N mod 5 == 0

V.E.
Nmero (N)
SALIDA
Mltiplo de cinco

:::94:::

Maria M. Lima Quispe

ALGORITMOS Y PROGRAMACIN ESTRUCTURADA EN C++

Diagrama de flujo:
inicio
leer N

Si

N%5==0

No

Mltiplo de cinco

fin

Pseudocodigo:
inicio
leer N
si N%5==0 entonces
escribir Mltiplo de cinco
fin_si
fin

Programa:
#include<iostream.h>
void main()
{
int N;
cout<<"Ingrese N: ";cin>>N;
if( N%5==0 )
{
cout<<"Mltiplo de cinco";
}
}

Lilian M. Benique Ruelas

:::95:::

ALGORITMOS Y PROGRAMACIN ESTRUCTURADA EN C++

4.2

ESTRUCTURAS SELECTIVAS DOBLES


Esta estructura permite elegir entre dos opciones o alternativas
posibles. Si la condicin es verdadera se ejecuta la AccinV
AccionesV, si es falsa se ejecuta AccinF AccionesF.

si condicin entonces
AccinV
si_no
AccinF
fin_si

falsa

Condicin
verdadera

AccinF

AccinV

- Pseudocdigo - Diagrama de Flujo if(condicin)


{
AccinV;
}
else
{
AccinF;
}
- Sintaxis en C++ -

La condicin, puede estar compuesta por variables, expresiones o


funciones; sin embargo el valor que representa solo podr tomar
uno de dos valores (Verdadero o Falso). En C++ el valor 0 significa
Falso y un valor diferente de 0 significa Verdadero.
AccinV, AccinF pueden estar conformados por una por varias
sentencias. Si estuviera conformada por una sentencia no es
necesario utilizar llaves ({ }) pero si estuviera conformada por varias
sentencias obligatoriamente debern utilizar llaves.
Ejm:
Para determinar si una persona es mayor de edad o menor de edad.

:::96:::

Cuando la condicin es
verdadera imprime Mayor
de edad, enMaria
caso contrario
M. Lima Quispe
imprime Menor de edad.

ALGORITMOS Y PROGRAMACIN ESTRUCTURADA EN C++

if( edad>=18 )
{
cout<<Mayor de edad;
}
else
{
cout<<Menor de edad;
}
La condicin es: edad >= 18
La AccinV es: cout<<Mayor de edad;
La AccinF es: cout<<Menor de edad;

La AccinV depende de la condicin, como se observa en lo


siguiente, la condicin varia de >= a <= al igual que de Mayor de
edad a Menor de edad.
if( edad<=18 )
{
cout<< Menor de edad;
}
else
{
cout<<Mayor de edad;
}

Cuando la condicin es
verdadera imprime Menor
de edad, en caso contrario
imprime Mayor de edad.

La condicin es: edad <= 18


La AccinV es: cout<<Menor de edad;
La AccinF es: cout<<Mayor de edad;

Nota: Los dos segmentos de cdigo solucionan el mismo problema.

Lilian M. Benique Ruelas

:::97:::

ALGORITMOS Y PROGRAMACIN ESTRUCTURADA EN C++

DOBLES
12. Determinar si una persona es Mayor de edad o es Menor
de edad.
Diagrama de flujo:
V.E.

inicio

Edad (E)
leer E

SALIDA
Mayor de edad o
Menor de edad

Si

E>=18

Mayor de
edad

Pseudocodigo:

No

Menor de
edad

inicio
leer E

fin

si E>=18 entonces
escribir Mayor de edad
si_no
escribir Menor de edad
fin_si
fin

#include<iostream.h>
void main()
{
int E;
cout<<"Ingrese edad: ";cin>>E;
Programa:

if(E >= 18)


{
cout<<"Mayor de edad";
}
else
{
cout<<"Menor de edad";
}
}

:::98:::

Maria M. Lima Quispe

ALGORITMOS Y PROGRAMACIN ESTRUCTURADA EN C++

13. Determinar si un nmero es Neutro o No es neutro.


Diagrama de flujo:
V.E.

inicio

Nmero (N)
leer N

SALIDA
Neutro o
No es Neutro

Si

N==0

Neutro

No

No es
Neutro

Pseudocodigo:
inicio
fin

leer N
si N==0 entonces
escribir Neutro
si_no
escribir No es Neutro
fin_si
fin

#include<iostream.h>
void main()
{
int N;
cout<<"Ingrese nmero: ";cin>>N;
Programa:

if(N==0)
{
cout<<"Neutro";
}
else
{
cout<<"No es Neutro";
}
}

Lilian M. Benique Ruelas

:::99:::

ALGORITMOS Y PROGRAMACIN ESTRUCTURADA EN C++

14. Determinar si un nmero es Negativo o Positivo.


Diagrama de flujo:
inicio

V.E.
leer N

Nmero (N)
SALIDA
Si

Negativo o
Positivo

N<0

Positivo

Negativo

Pseudocodigo:

No

fin

inicio
leer N
si N<0 entonces
escribir Negativo
si_no
escribir Positivo
fin_si
fin

#include<iostream.h>
void main()
{
int N;
cout<<"Ingrese nmero: ";cin>>N;

Programa:

if(N<0)
{
cout<<"Negativo";
}
else
{
cout<<"Positivo";
}
}

:::100:::

Maria M. Lima Quispe

ALGORITMOS Y PROGRAMACIN ESTRUCTURADA EN C++

15. Determinar si dos nmeros A y B son Iguales o son


Diferentes.
Diagrama de flujo:

V.E.

inicio

Nmeros (A, B)
SALIDA

leer A,B

Iguales o
Diferentes

Si

A==B

No

Iguales

Diferentes

Pseudocodigo:
fin

inicio
leer A,B
si A==B entonces
escribir Iguales
si_no
escribir Diferentes
fin_si
fin

#include<iostream.h>
void main()
{
int A,B;
cout<<"Ingrese A: ";cin>>A;
cout<<"Ingrese B: ";cin>>B;
Programa:

if(A==B)
{
cout<<"Iguales";
}
else
{
cout<<"Diferentes";
}
}

Lilian M. Benique Ruelas

:::101:::

ALGORITMOS Y PROGRAMACIN ESTRUCTURADA EN C++

16. Determinar si un nmero es Par o Impar.


Diagrama de flujo:
inicio

V.E.
Nmero (N)

leer N

SALIDA
Si

Par o
Impar

N%2==0

Par

Pseudocodigo:

No

Impar

fin

inicio
leer N
si N%2==0 entonces
escribir Par
si_no
escribir Impar
fin_si
fin

#include<iostream.h>
void main()
{
int N;
cout<<"Ingrese Nmero: ";cin>>N;
Programa:

if(N%2==0)
{
cout<<"Par";
}
else
{
cout<<"Impar";
}
}

:::102:::

Maria M. Lima Quispe

ALGORITMOS Y PROGRAMACIN ESTRUCTURADA EN C++

17. Determinar el mayor de dos nmeros.


Diagrama de flujo:

V.E.

inicio

Nmeros (A,B)
leer A,B

SALIDA
Ao
B

Si

A > B

No

Pseudocodigo:
fin

inicio
leer A,B
si A > B entonces
escribir A
si_no
escribir B
fin_si
fin

#include<iostream.h>
void main()
{
int A,B;
cout<<"Ingrese A: ";cin>>A;
cout<<"Ingrese B: ";cin>>B;
if(A > B)
{
cout<<A;
}
else
{
cout<<B;
}

Programa:

Lilian M. Benique Ruelas

:::103:::

ALGORITMOS Y PROGRAMACIN ESTRUCTURADA EN C++

18. Determinar el menor de dos nmeros.


Diagrama de flujo:

V.E.

inicio

Nmeros (A,B)
leer A,B

SALIDA
Ao
B

Si

Pseudocodigo:

A < B

No

inicio
leer A,B

fin

si A < B entonces
escribir A
si_no
escribir B
fin_si
fin

Programa:
#include<iostream.h>
void main()
{
int A,B;
cout<<"Ingrese A: ";cin>>A;
cout<<"Ingrese B: ";cin>>B;
if(A < B)
{
cout<<A;
}
else
{
cout<<B;
}
}

:::104:::

Maria M. Lima Quispe

ALGORITMOS Y PROGRAMACIN ESTRUCTURADA EN C++

19. Hacer un algoritmo que calcule el total a pagar por la compra


de camisas. Si se compran tres camisas o mas se aplica un
descuento del 20% sobre el total de la compra y si son menos
de tres camisas un descuento del 10%.
Pseudocdigo:
inicio

V.E.

leer NC,PU

Nmero de Camisas (NC)


Precio Unitario (PU)

TC = NC * PU
si NC>=3 entonces

V.S

D = 0.20 * TC

Total a pagar (TP)

si_no

O.V.

D = 0.10 * TC

Total de Compra (TC)


Descuento (D)

fin_si
TP = TC D
escribir TP
fin

Diagrama de flujo:
inicio

leer NC,PU
TC NC * PU

Si

NC >= 3

D 0.20*TC

No

D 0.10*TC

TP TC - D
escribir TP

fin

Lilian M. Benique Ruelas

:::105:::

ALGORITMOS Y PROGRAMACIN ESTRUCTURADA EN C++

Programa:
#include<iostream.h>
void main()
{
float NC,PU,TC,D,TP;
cout<<"Nmero de camisas: ";cin>>NC;
cout<<"Precio unitario : ";cin>>PU;
TC = NC * PU;
if(NC>=3)
{
D = 0.20 * TC;
}
else
{
D = 0.10 * TC;
}
TP = TC - D;
cout<<"Total a pagar: "<<TP;
}

Prueba de Escritorio:
Con 5 camisas y precio unitario 10 soles
NC

PU

TC

TP

Pantalla

10

50

10

40

40

Con 2 camisas y precio unitario 10 soles.


NC

PU

TC

TP

Pantalla

10

20

18

18

Con 8 camisas y precio unitario 25 soles.


NC

PU

TC

25

200

:::106:::

TP

Pantalla

Maria M. Lima Quispe

ALGORITMOS Y PROGRAMACIN ESTRUCTURADA EN C++

20. Determinar si un alumno aprueba o reprueba un curso,


sabiendo que aprobara si su promedio de tres calificaciones
es mayor o igual a 70; reprueba en caso contrario.

V.E.
Calificaciones (C1, C2, C3)
O.V.
Promedio (P)
SALIDA
Aprueba o
Reprueba

Diagrama de flujo:

inicio

leer C1,C2,C3

P (C1+C2+C3)/3

Si

P >= 70

Aprueba

No

Reprueba

fin

Pseudocdigo:
inicio
leer C1,C2,C3
P = (C1+C2+C3)/3
si P >= 70 entonces
escribir Aprueba
si_no
escribir Reprueba
fin_si
Fin

Lilian M. Benique Ruelas

:::107:::

ALGORITMOS Y PROGRAMACIN ESTRUCTURADA EN C++

Programa:
#include<iostream.h>
void main()
{
float C1,C2,C3,P;
cout<<"Calificacion 1: ";cin>>C1;
cout<<"Calificacion 2: ";cin>>C2;
cout<<"Calificacion 3: ";cin>>C3;
P = ( C1 + C2 + C3 )/3;
if(P >= 70)
{
cout<<"Aprueba";
}
else
{
cout<<"Reprueba";
}
}

Prueba de Escritorio:
Con 50, 10 y 90
C1

C2

C3

Pantalla

50

10

90

50

Reprueba

Con 80, 80 y 90
C1

C2

C3

Pantalla

80

80

90

83.33

Aprueba

Pantalla

Con 70, 60 y 50
C1

C2

C3

70

60

50

:::108:::

Maria M. Lima Quispe

ALGORITMOS Y PROGRAMACIN ESTRUCTURADA EN C++

21. Calcular el total que una persona debe pagar en una tienda
de llantas, el precio de cada llanta es de 800 si se compran
menos de 5 llantas y de 700 si se compran de 5 a ms.

Pseudocdigo:
V.E.

inicio

Nmero de llantas (N)

leer N

V.S

si N < 5 entonces
TP = N * 800

Total a pagar (TP)

si_no
TP = N * 700
fin_si
escribir TP
fin

Diagrama de flujo:

inicio

leer N

Si

N < 5

TPN*800

No

TPN*700

escribir TP

fin

Lilian M. Benique Ruelas

:::109:::

ALGORITMOS Y PROGRAMACIN ESTRUCTURADA EN C++

Programa:
#include<iostream.h>
void main()
{
float N,TP;
cout<<"Nmero de llantas: ";cin>>N;
if(N<5)
{
TP = N * 800;
}
else
{
TP = N * 700;
}
cout<<"Total a pagar: "<<TP;
}

Prueba de Escritorio:
Con 3 llantas.
N

TP

Pantalla

3*800=2400

2400

Con 5 llantas.
N
5

TP
5*700=3500

Pantalla
3500

Con 8 llantas.
N

TP

Pantalla

8*700=5600

5600

:::110:::

Maria M. Lima Quispe

ALGORITMOS Y PROGRAMACIN ESTRUCTURADA EN C++

4.3

ESTRUCTURAS SELECTIVAS MLTIPLES


A veces en la prctica es necesario que existan ms de dos
elecciones posibles. La estructura de decisin mltiple evaluar una
expresin que podr tomar n valores distintos, segn se elija uno de
estos valores se ejecutar una determinada accin acciones.

expresin
2

accin s1

accin s2

accin s3

accin s4

accin sn

- Diagrama de Flujo segn_sea expresin hacer


e1: accin s11
accin s12
.
.
accin s1n
e2: accin s21
accin s22
.
.
accin s2n
.
.
en: accin sn1
accin sn2
.
.
accin snn
si_no
accin X
fin _ segn
- Pseudocdigo -

Lilian M. Benique Ruelas

:::111:::

ALGORITMOS Y PROGRAMACIN ESTRUCTURADA EN C++

switch (selector)
{
case alternativa_1: Accin1;break;
case alternativa_2: Accin2;break;
case alternativa_3: Accin3;break;
case alternativa_4: Accin4;break;
.
.
.
case alternativa_N: AccinN;break;
default:
AccinX;
}
- Sintaxis en C++ El selector puede ser una variable, una expresin o una funcin; sin
embargo, el valor que representa debe ser escalar. Es decir:
numrico entero, o carcter individual. De ninguna manera puede
ser una cadena o un float. Este selector ser evaluado en cada
alternativa hasta que encuentre su lugar.
Cada alternativa est conformada por un nico valor.
Cada accin, puede estar conformada por una varias sentencias.
El uso del default es opcional, sin embargo sirve para ejecutar algo
cuando el selector no encuentra su lugar; es decir que su valor no se
encuentra contenido en ninguna alternativa.
Ejm: El siguiente segmento de cdigo imprime los das de la semana
de acuerdo a la variable DIA que toma valores de 1 a 7.
switch (DIA)
{
case 1: cout<<Lunes;break;
case 2: cout<<Martes;break;
case 3: cout<<Mircoles;break;
case 4: cout<<Jueves;break;
case 5: cout<<Viernes;break;
case 6: cout<<Sbado;break;
case 7: cout<<Domingo;break;
default:
cout<<Da no vlido;
}

:::112:::

Maria M. Lima Quispe

ALGORITMOS Y PROGRAMACIN ESTRUCTURADA EN C++

Del ejemplo, el selector es: DIA


Las alternativas van de 1 a 7
Las acciones son imprimir Lunes o Martes, ..., o Domingo.
El default es, imprimir Da no vlido

En vez de utilizar la estructura selectiva mltiple (switch), se puede


utilizar varios ifs.
if (DIA == 1)
{
cout<<Lunes;
}
if (DIA == 2)
{
cout<<Martes;
}
if (DIA == 3)
{
cout<<Miercoles;
}
if (DIA == 4)
{
cout<<Jueves;
}
if (DIA == 5)
{
cout<<Viernes;
}
if (DIA == 6)
{
cout<<Sabado;
}
if (DIA == 7)
{
cout<<Domingo;
}

Lilian M. Benique Ruelas

:::113:::

ALGORITMOS Y PROGRAMACIN ESTRUCTURADA EN C++

MLTIPLES
22. Construir un algoritmo que escriba los nombres de los meses
del ao, en funcin de la entrada correspondiente a la
variable MES. Si el valor de la variable MES no esta en el
rango de 1 a 12 imprimir el mensaje Mes no vlido.
V.E.
Mes (MES)
SALIDA
Enero o
Febrero o
Marzo
o
Mes no vlido
Diagrama de flujo:

inicio

leer MES

MES>=1 AND

Mes no
vlido

MES<=12

V
1
Enero

12

Marzo

Febrero
1

Diciembre

fin

:::114:::

Maria M. Lima Quispe

ALGORITMOS Y PROGRAMACIN ESTRUCTURADA EN C++

Pseudocdigo:
inicio
leer MES
segn_sea MES hacer
1: imprimir Enero
2: imprimir Febrero
3: imprimir Marzo
4: imprimir Abril
5: imprimir Mayo
6: imprimir Junio
7: imprimir Julio
8: imprimir Agosto
9: imprimir Setiembre
10: imprimir Octubre
11: imprimir Noviembre
12: imprimir Diciembre
si_no
imprimir Mes no vlido
fin _ segn
fin
Programa:
#include<iostream.h>
void main( )
{
int MES;
cout<<"Ingrese mes: ";cin>>MES;
switch(MES)
{
case 1:cout<<"Enero";break;
case 2:cout<<"Febrero";break;
case 3:cout<<"Marzo";break;
case 4:cout<<"Abril";break;
case 5:cout<<"Mayo";break;
case 6:cout<<"Junio";break;
case 7:cout<<"Julio";break;
case 8:cout<<"Agosto";break;
case 9:cout<<"Setiembre";break;
case 10:cout<<"Octubre";break;
case 11:cout<<"Noviembre";break;
case 12:cout<<"Diciembre";break;
default:
cout<<"Mes no vlido";
}
}

Lilian M. Benique Ruelas

:::115:::

ALGORITMOS Y PROGRAMACIN ESTRUCTURADA EN C++

23. Se desea convertir las calificaciones alfabticas A, B, C, D y E


a calificaciones numricas 4, 5, 6, 7 y 8 respectivamente.

V.E.
Calificacin alfabtica (Cal)
Mensaje de Salida
4, 5, 6, 7 u 8
Pseudocdigo:
inicio
leer Cal
segn_sea Cal hacer
A : imprimir 4
B : imprimir 5
C : imprimir 6
D : imprimir 7
E : imprimir 8
fin _ segn
fin
Diagrama de flujo:
inicio

leer Cal

Cal
A

B
4

C
5

D
6

E
7

fin

:::116:::

Maria M. Lima Quispe

ALGORITMOS Y PROGRAMACIN ESTRUCTURADA EN C++

Programa:
#include<iostream.h>
void main()
{
char Cal;
cout<<"Ingrese calificacin: ";cin>>Cal;
switch(Cal)
{
case
case
case
case
case
}

'A':cout<<4;break;
'B':cout<<5;break;
'C':cout<<6;break;
'D':cout<<7;break;
'E':cout<<8;break;

Prueba de Escritorio:
Con A
Cal

Pantalla

Con B
Cal

Pantalla

Con E
Cal

Pantalla

Lilian M. Benique Ruelas

:::117:::

ALGORITMOS Y PROGRAMACIN ESTRUCTURADA EN C++

24. Algoritmo que lee una calificacin alfabtica en una variable


tipo carcter y nos escribe su valor numrico que ser
establecido por la tabla de conversin de medidas
ponderadas.
Nota alfabtica
Muy deficiente
Insuficiente
Suficiente
Bien
Notable
Sobresaliente

Media Ponderada
Numrica
1.5
4.0
5.5
6.5
8.0
9.5

M
I
F
B
N
S

V.E.
Nota alfabtica (Nota)
SALIDA
1.5
4.0
5.5
6.5
8.0
9.5
Diagrama de flujo:
inicio

leer Nota

Nota
M

I
1.5

4.0

5.5

6.5

N
8.0

S
9.5

fin

:::118:::

Maria M. Lima Quispe

ALGORITMOS Y PROGRAMACIN ESTRUCTURADA EN C++

Pseudocdigo:
inicio
leer Nota
segn_sea Nota hacer
M : imprimir 1.5
I : imprimir 4.0
F : imprimir 5.5
B : imprimir 6.5
N : imprimir 8.0
S : imprimir 9.5
fin _ segn
fin
Programa:
#include<iostream.h>
void main()
{
char Nota;
cout<<"Ingrese calificacin: ";cin>>Nota;
switch(Nota)
{
case 'M':cout<<1.5;break;
case 'I':cout<<4.0;break;
case 'F':cout<<5.5;break;
case 'B':cout<<6.5;break;
case 'N':cout<<8.0;break;
case 'S':cout<<9.5;break;
}
}

Prueba de Escritorio:
Con S
Nota

Pantalla

9.5

Lilian M. Benique Ruelas

:::119:::

ALGORITMOS Y PROGRAMACIN ESTRUCTURADA EN C++

25. Determinar el nombre correspondiente de una estacin de


acuerdo al nmero del mes, considerando 3 meses completos
por estacin, en caso de ser un nmero de mes fuera del
rango de 1 a 12 imprimir estacin desconocida.
Mes

Estacin

Enero, Febrero y Marzo


Abril, Mayo y Junio
Julio, Agosto, Setiembre
Octubre, Noviembre, Diciembre

Verano
Otoo
Invierno
Primavera

V.E.
Nmero de mes (mes)
SALIDA
Verano o
Otoo o
Invierno o
Primavera o
Estacin desconocida
Diagrama de flujo:
inicio

leer mes

mes>=1
AND
mes<=12

Estacin
desconocida

V
1,2,3

Verano

4,5,6

7,8,9

Otoo

Invierno

10,11,12

Primavera

fin

:::120:::

Maria M. Lima Quispe

ALGORITMOS Y PROGRAMACIN ESTRUCTURADA EN C++

Pseudocdigo:
inicio
leer mes
segn_sea mes hacer
1, 2, 3 : imprimir Verano
4, 5, 6 : imprimir Otoo
7, 8, 9 : imprimir Invierno
10,11,12 : imprimir Primavera
si_no
imprimir Estacin desconocida
fin _ segn
fin
Programa:
#include<iostream.h>
void main()
{
int mes;
cout<<"Ingrese nmero del mes: ";cin>>mes;
switch(mes)
{
case 1:case 2:case 3:cout<<"Verano";break;
case 4:case 5:case 6:cout<<"Otoo";break;
case 7:case 8:case 9:cout<<"Invierno";break;
case 10:case 11:case 12:cout<<"Primavera";break;
}
}

Prueba de Escritorio:
Con mes 12
mes

Pantalla

12

Primavera

Con mes 5
mes

Pantalla

Otoo

Lilian M. Benique Ruelas

:::121:::

ALGORITMOS Y PROGRAMACIN ESTRUCTURADA EN C++

COMPUESTOS
26. Leer 2 nmeros; si son iguales que los multiplique, si el
primero es mayor que el segundo que los reste y si no que
los sume.
Los dos nmeros son iguales:
Si A = 5 y B = 5, la respuesta es 25 (5 * 5)
Si A = 12 y B = 12, la respuesta es 144 (12 * 12)
El primer nmero es mayor que el segundo:
Si A = 17 y B = 12, la respuesta es 5 (17 - 12)
Si A = 25 y B = 5, la respuesta es 20 (25 5)
El primer nmero es menor que el segundo:
Si A = 1 y B = 10, la respuesta es 11 (1 + 10)
Si A = 8 y B = 17, la respuesta es 25 (8 + 17)
V.E.
Nmeros (A, B)
SALIDA
Respuesta (R)
inicio

Diagrama de flujo:
Leer A,B

Si

No

A==B

R A * B

Si

R A - B

A > B

No

R A + B

escribir R

fin
:::122:::

Maria M. Lima Quispe

ALGORITMOS Y PROGRAMACIN ESTRUCTURADA EN C++

Pseudocodigo:
inicio
leer A,B
si A == B entonces
R = A * B
si_no
si A > B entonces
R = A B
Si_no
R = A + B
fin_si
fin_si
escribir R
fin

Programa:
#include<iostream.h>
void main()
{
int A,B,R;
cout<<"A: ";cin>>A;
cout<<"B: ";cin>>B;
if(A == B)
{
R = A * B;
}
else
{
if(A > B)
R = A - B;
else
R = A + B;
}
cout<<"R: "<<R;
}

Lilian M. Benique Ruelas

:::123:::

ALGORITMOS Y PROGRAMACIN ESTRUCTURADA EN C++

27. Una frutera ofrece las manzanas con descuento de acuerdo a


la tabla:
N kilos comprados
0
2.01
5.01
10.01 en

%Descuento

2
5
10
adelante

0%
10%
15%
20%

Determinar cunto pagar una persona que compre manzanas en


esa frutera, si el costo del kilo es 2 soles.
V.E.
Diagrama de flujo:

Nmero de Kilos (NK)


V.S.

Inicio

Total a Pagar (TP)


O.V.

Leer NK

Sub Total (ST)


Descuento (D)

ST NK * 2

Si

No

NK<=2

D 0

Si

D0.10*ST

No

NK<=5

Si

D0.15*ST

NK<=10

No

D0.20*ST

TP ST - D

Escribir TP

Fin

:::124:::

Maria M. Lima Quispe

ALGORITMOS Y PROGRAMACIN ESTRUCTURADA EN C++

Programa:
#include<iostream.h>
void main()
{
float NK,TP,ST,D;
cout<<"Nmero de kilos: ";cin>>NK;
ST = NK * 2.0;
if(NK <= 2)
{
D = 0;
}
else
{
if(NK <= 5)
{
D = 0.10 * ST;
}
else
{
if(NK <= 10)
{
D = 0.15 * ST;
}
else
{
D = 0.20 * ST;
}
}
}
cout<<"Total a pagar: "<<TP;
}

Prueba de Escritorio:
Con mes 12
mes

Pantalla

12

Primavera

Lilian M. Benique Ruelas

:::125:::

ALGORITMOS Y PROGRAMACIN ESTRUCTURADA EN C++

28. Determinar el mayor de 3 nmeros enteros distintos.


V.E.
Nmeros (a,b,c)
V.S.

Diagrama de flujo:
Inicio

El mayor (may)
leer a,b,c

may a

Si

may < b

may b

No

Si

may < c

may c

No

Pseudocodigo:
inicio

escribir may

leer a,b,c
may = a

Fin

si may < b entonces


may = b
fin_si
si may < c entonces
may = c
fin_si
escribir may
fin

:::126:::

Maria M. Lima Quispe

ALGORITMOS Y PROGRAMACIN ESTRUCTURADA EN C++

Programa:
#include<iostream.h>
void main()
{
int a,b,c,may;
cout<<"Ingrese a: "; cin>>a;
cout<<"Ingrese b: "; cin>>b;
cout<<"Ingrese c: "; cin>>c;
may = a;
if(may < b)
{
may = b;
}
if(may < c)
{
may = c;
}
cout<<"El mayor es: "<<may<<endl;
}

Con tres nmeros como 17, 12 y 79 podemos hacer las siguientes


combinaciones de ingreso de datos para las variables a, b y c; as como las
condiciones que nos ayudarn a determinar el mayor, menor y medio de
tres nmeros distintos, podemos imprimirlos tambin en orden
ascendente y/o descendente.
EL MAYOR
a

La condicin

El mayor

17

12

79

c > a AND a > b

17

79

12

b > a AND a > c

12

79

17

b > c AND c > a

12

17

79

c > b AND b > a

79

17

12

a > b AND b > c

79

12

17

a > c AND c > b

Significado

79 es mayor
que 17 y 17
es mayor
que 12

- Tabla 4.1: Condiciones para el mayor de tres nmeros -

Lilian M. Benique Ruelas

:::127:::

ALGORITMOS Y PROGRAMACIN ESTRUCTURADA EN C++

EL MENOR
a

La condicin

El menor

17

12

79

c > a AND a > b

17

79

12

b > a AND a > c

12

79

17

b > c AND c > a

12

17

79

c > b AND b > a

79

17

12

a > b AND b > c

79

12

17

a > c AND c > b

Significado

12 es menor
que 17 y 17
es menor
que 79

- Tabla 4.2: Condiciones para el menor de tres nmeros -

EL MEDIO
a

La condicin

El medio

17

12

79

c > a AND a > b

17

79

12

b > a AND a > c

12

79

17

b > c AND c > a

12

17

79

c > b AND b > a

79

17

12

a > b AND b > c

79

12

17

a > c AND c > b

Significado

17 es mayor
que 12 y 17
es menor
que 79

- Tabla 4.3: Condiciones para el medio de tres nmeros -

ASCENDENTE Y DESCENDENTE
a

La condicin

Ascendente

Descendente

17

12

79

c > a AND a > b

b,a,c

c,a,b

17

79

12

b > a AND a > c

c,a,b

b,a,c

12

79

17

b > c AND c > a

a,c,b

b,c,a

12

17

79

c > b AND b > a

a,b,c

c,b,a

79

17

12

a > b AND b > c

c,b,a

a,b,c

79

12

17

a > c AND c > b

b,c,a

a,c,b

- Tabla 4.4: Condiciones para imprimir en orden ascendente y/o descendente -

:::128:::

Maria M. Lima Quispe

ALGORITMOS Y PROGRAMACIN ESTRUCTURADA EN C++

29. Determinar el menor de 3 nmeros enteros distintos.


Para hallar el menor de tres nmeros enteros distintos, utilizamos las
condiciones de la tabla 4.2.
V.E.
Nmeros (a,b,c)
V.S.
El menor (a o b o c)
Diagrama de Flujo:
inicio
leer a,b,c

c >a &&
a > b
Si

No

b >a &&
a > c
Si

No

b >c &&
c > a

No

c >b &&
b > a

Si
a

Si

No

a >b &&
b > c
Si

No

fin

Lilian M. Benique Ruelas

:::129:::

ALGORITMOS Y PROGRAMACIN ESTRUCTURADA EN C++

Pseudocdigo:
inicio
leer a,b,c
si c > a && a > b entonces
escribir b
si_no
si b > a && a > c entonces
escribir c
si_no
si b > c && c > a entonces
escribir a
si_no
si c > b && b > a entonces
escribir a
si_no
si a > b && b > c entonces
escribir c
si_no
escribir b
fin_si
fin_si
fin_si
fin_si
fin_si
fin

:::130:::

Maria M. Lima Quispe

ALGORITMOS Y PROGRAMACIN ESTRUCTURADA EN C++

Programa:
#include<iostream.h>
void main()
{
int a,b,c;
cout<<"Ingrese a: ";cin>>a;
cout<<"Ingrese b: ";cin>>b;
cout<<"Ingrese c: ";cin>>c;
if(c>a && a>b)
{
cout<<"El menor es "<<b<<endl;
}
else
{
if(b>a && a>c)
{
cout<<"El menor es "<<c<<endl;
}
else
{
if(b>c && c>a)
{
cout<<"El menor es "<<a<<endl;
}
else
{
if(c>b && b>a)
{
cout<<"El menor es "<<a<<endl;
}
else
{
if(a>b && b>c)
{
cout<<"El menor es "<<c<<endl;
}
else
{
cout<<"El menor es "<<b<<endl;
}
}
}
}
}
}

Lilian M. Benique Ruelas

:::131:::

ALGORITMOS Y PROGRAMACIN ESTRUCTURADA EN C++

Ejercicios
Realizar el anlisis, diseo (Pseudocdigo o diagrama de flujo) y
programa de los siguientes:
4.1.

Determinar si un nmero No es Neutro.

4.2.

Leer una nota y determinar si un alumno Aprueba o Desaprueba un


curso, si la nota mnima aprobatoria es 14.

4.3.

Si un ngulo es igual a 90 grados, imprimir el mensaje El ngulo es un


ngulo recto sino imprimir el mensaje El ngulo no es un ngulo recto.

4.4.

Leer dos nmeros e imprimirlos en orden ascendente.

4.5.

En un almacn se hace un 20% de descuento a los clientes cuya compra


supere los 1000 soles. Cul ser la cantidad que pagara una persona por
su compra?.
Un obrero necesita calcular su salario semanal, el cual se obtiene de la
siguiente manera:
Si trabaja 40 horas o menos se le paga 16 soles por hora
Si trabaja ms de 40 horas se le paga 16 soles por cada una de las primeras
40 horas y 20 soles por cada hora extra.

4.6.

4.7.

En un supermercado se hace una promocin, mediante la cual el cliente


obtiene un descuento dependiendo de un nmero que se escoge al azar. Si
el nmero escogido es menor que 74 el descuento es del 15% sobre el total
de la compra, si es mayor o igual a 74 el descuento es del 20%. Obtener
cunto dinero se le descuenta.

4.8.

En una tienda de accesorios para computadoras, el precio de venta de los


diskettes es el mismo para cualquier marca, sin embargo el descuento
vara de acuerdo a la marca y se establece en la siguiente tabla. Determinar
el importe a pagar por la cantidad de diskettes comprados de una sola
marca, considerando que no se paga impuestos. Mostrar importe bruto,
descuento e importe a pagar.

Marca
3M
NCR
Sentinel
Burroughs
Imation

:::132:::

Descuento
%
10
15
20
25
30

Maria M. Lima Quispe

ALGORITMOS Y PROGRAMACIN ESTRUCTURADA EN C++

4.9.

Disear un algoritmo, programa para resolver una ecuacin de segundo


grado.

Ax2 + Bx + C = 0
4.10. Leer tres nmeros diferentes y determine el nmero medio del conjunto de
los tres nmeros (el nmero medio es aquel nmero que no es ni mayor, ni
menor).
4.11. Leer tres nmeros distintos y ordenarlos en forma descendente.
4.12. En una tienda se efecta una promocin en la cual se hace un descuento
sobre el valor de la compra total segn el color de la bolita que el cliente
saque al pagar en caja.
Si la bolita es de color blanco no se le har descuento alguno, si es verde se
le har un 10% de descuento, si es amarilla un 25%, si es azl un 50% y si
es roja un 100%. Determinar la cantidad final que el cliente deber pagar
por su compra. Se sabe que solo hay bolitas de los colores mencionados.
4.13. Utilizando el operador ? determinar el mayor de dos nmeros.
4.14. Escribir un programa que permita seleccionar la operacin aritmtica a
ejecutarse entre dos nmeros, dependiendo del valor de una variable ope.
Ope
1
2
3
4

Operacin
Sumar
Restar
Multiplicar
Dividir

4.15. Un ngulo se considera agudo si es menor de 90 grados, obtuso si es


mayor de 90 grados y recto si es igual a 90 grados. Utilizando esta
informacin, escriba un programa que acepte un ngulo en grados y
muestre el tipo de ngulo que es.
4.16. Leer tres notas y calcular el promedio. Si la nota1 es aprobatoria aumentar
2 puntos sobre el promedio, si la nota2 est entre 8 y 10 aumentar 1 punto
al promedio. Imprimir promedio final.
4.17. Leer tres notas, si la nota1 est entre 8 y 12 aumentar 3 puntos a la nota1, si
la nota2 est entre 15 y 17 aumentarle 2 puntos a la nota2 y si la nota3 est
entre 14 y 18 aumentar 1 punto sobre el promedio final. Imprimir
promedio final.
4.18. Hallar el menor de 5 nmeros.

Lilian M. Benique Ruelas

:::133:::

ALGORITMOS Y PROGRAMACIN ESTRUCTURADA EN C++

4.19. Leer el ao de nacimiento de una persona y determine si hasta este ao esa


persona es o no Mayor de edad.
4.20. Un trabajador desea saber cunto ser su salario final, si es poltica de la
empresa dar una bonificacin de 50 soles por cada hijo menor de edad,
una bonificacin de 100 si es casado y una bonificacin de 80 soles si el
trabajador est estudiando.

:::134:::

Maria M. Lima Quispe

ALGORITMOS Y PROGRAMACIN ESTRUCTURADA EN C++

ESTRUCTURAS
REPETITIVAS

Lilian M. Benique Ruelas

:::135:::

ALGORITMOS Y PROGRAMACIN ESTRUCTURADA EN C++

:::136:::

Maria M. Lima Quispe

ALGORITMOS Y PROGRAMACIN ESTRUCTURADA EN C++

CAPITULO 5: Estructuras Repetitivas

- Figura 5.1: Estructuras Repetitivas -

Las computadoras estn especialmente diseadas para todas aquellas


aplicaciones en las cuales una operacin o conjunto de ellas deben
repetirse muchas veces.
Las estructuras que repiten una secuencia de instrucciones un nmero
determinado de veces se denominan bucles y se denomina iteracin al
hecho de repetir la ejecucin de una secuencia de acciones.

5.1

ESTRUCTURA REPETITIVA mientras


La estructura repetitiva mientras es aquella en la que el cuerpo del
bucle (Accin o Acciones) se ejecutan mientras se cumple una
determinada condicin. Generalmente se utiliza cuando no se sabe
el nmero de veces que se ejecutaran determinadas acciones.

mientras condicin hacer


Accin

fin_mientras
- Pseudocdigo -

condicin

V
Accin

Lilian M. Benique Ruelas

- Diagrama de Flujo :::137:::

ALGORITMOS Y PROGRAMACIN ESTRUCTURADA EN C++

while(condicin)
{
Accin;

}
- Sintaxis en C++ La condicin puede ser una variable, una expresin o el valor de
una funcin; sin embargo el valor que representa slo puede ser
verdadero o falso. En C++ el valor 0 significa falso y un valor
diferente de 0 significa verdadero.
La accin, puede estar conformada por una o varias sentencias. Si
estuviera conformada por dos o mas sentencias deben estar entre
llaves.
El programa se ejecuta siguiendo estos pasos:
[1] Se evala la condicin.
[2] Si la condicin es verdadera ejecuta la Accin o Acciones, sino el
programa abandona la sentencia while
[3] Tras ejecutar las Acciones, volvemos al paso 1.
Ejm:
i = 1;
while(i<=5)
{
cout<<i<<endl;
i = i + 1;
}
La inicializacin del contador es: i=1;
La condicin es: i <= 5
Las acciones son:
cout<<i<<endl;
i = i + 1;
El incremento del contador es i = i + 1;
La prueba de escritorio del programa:

:::138:::

Maria M. Lima Quispe

ALGORITMOS Y PROGRAMACIN ESTRUCTURADA EN C++

Prueba de Escritorio:
i

Pantalla

1
2
3
4
5
6

1
2
3
4
5

Otra forma de representar esta estructura repetitiva es con el


programa DFD como:

Inicializacin del contador


Condicin

Incremento del
contador

Lilian M. Benique Ruelas

Cuerpo del bucle

:::139:::

ALGORITMOS Y PROGRAMACIN ESTRUCTURADA EN C++

MIENTRAS ( while )
1. Imprimir la secuencia:
2
4
6
8
.
.
.
98
100

2<=100

El contador i va a
recorrer de 2 a 100
aumentando de 2 en 2

Pseudocodigo:
inicio
i 2
mientras i <= 100 hacer
escribir i
i i + 2
fin_mientras
fin
Diagrama de flujo:

Programa:

#include<iostream.h>
void main()
{
int i;
i=2;
while(i<=100)
{
cout<<i<<endl;
i=i+2;
}
}

:::140:::

Maria M. Lima Quispe

ALGORITMOS Y PROGRAMACIN ESTRUCTURADA EN C++

2. Imprimir la secuencia:
100
98
96
94
.
.
.
4
2

El contador i va a
recorrer de 100 a 2
disminuyendo de 2 en 2
100 >= 2

Pseudocodigo:
inicio
i 100
mientras i >= 2 hacer
escribir i
i i - 2
fin_mientras
fin
Diagrama de flujo:

Programa:

#include<iostream.h>
void main()
{
int i;
i=100;
while(i>=2)
{
cout<<i<<endl;
i=i-2;
}
}

Lilian M. Benique Ruelas

:::141:::

ALGORITMOS Y PROGRAMACIN ESTRUCTURADA EN C++

3. Imprimir la secuencia y calcular la suma de sus elementos:


Pseudocodigo:

100
98
96
94
.
.
.
4
2

Trabajamos con s que


es el acumulador y
guarda resultados de
las sumas

inicio
i 100
s 0
mientras i >= 2 hacer
escribir i
s s + i
i i - 2
fin_mientras
escribir s
fin

El acumulador s se inicializa con 0, por ser acumulador de sumas.


Diagrama de flujo:

Programa:

#include<iostream.h>
void main()
{
int i;
long s;
i = 100;
s = 0;
while(i>=2)
{
cout<<i<<endl;
s = s + i;
i = i - 2;
}
cout<<"Suma: "<<s;
}

:::142:::

Maria M. Lima Quispe

ALGORITMOS Y PROGRAMACIN ESTRUCTURADA EN C++

4. Calcular K:
K = 103 + 83 + 63 + 43 + 23
Programa:

O.V.

Acumulador ( K )
Contador (i)
V.S.

#include<iostream.h>
void main()
{
int i;
long K;

Suma de la secuencia (K) (acumulador)

i = 10;
K = 0;
while(i>=2)
{
K = K + i * i * i;
i = i - 2;
}
cout<<"K = "<<K;

Pseudocodigo:
inicio
i 10
K 0
mientras i >= 2 hacer
K K + i * i * i;
i i - 2
fin_mientras
escribir K
fin

DFD 1.0:

Lilian M. Benique Ruelas

:::143:::

ALGORITMOS Y PROGRAMACIN ESTRUCTURADA EN C++

5. Leer por teclado un nmero que represente una cantidad de


nmeros que a su vez se ingresaran tambin por teclado.
Calcular la suma de todos esos nmeros.
Si la cantidad de nmeros es 3, debemos ingresar tres nmeros
como por ejemplo: 10, 30 y 6, la suma de estos (10+30+6) es 46.
Nuestro acumulador s debe inicializar con 0.

i
num
s=0

1
10
s=s+10
s=10

2
30
s=s+30
s=40

La frmula del
acumulador es:
s = s + num

3
6
s=s+6
s=46

Si la cantidad de nmeros es 5, debemos ingresar cinco


nmeros como por ejemplo: 7, 3, 2, 6 y 1; la suma de estos
(7+3+2+6+1) es 19.
i
num
s=0

1
7
s=s+7
s=7

2
3
s=s+3
s=10

E.V.
Cantidad de nmeros (cn)
Nmero (num)
O.V.
Contador (i)
V.S.
Suma ( s )

:::144:::

3
2
s=s+2
s=12

4
6
s=s+6
s=18

5
1
s=s+1
s=19

Pseudocodigo:
inicio
i 1
s 0
mientras i<=cn hacer
leer num
s s + num;
i i + 1
fin_mientras
escribir s
fin

Maria M. Lima Quispe

ALGORITMOS Y PROGRAMACIN ESTRUCTURADA EN C++

Programa:

6. Leer por teclado un nmero que represente una cantidad de


nmeros que a su vez se ingresaran tambin por teclado.
Calcular el producto de esos nmeros. Complete el siguiente
Pseudocdigo.
El acumulador de productos debe inicializarse con 1
Pseudocdigo:
inicio
i 1
__ __
mientras i <= cn hacer
leer num
_ _____ num;
i i + 1
fin_mientras
escribir __
fin

Lilian M. Benique Ruelas

:::145:::

ALGORITMOS Y PROGRAMACIN ESTRUCTURADA EN C++

7. Leer una lista de nmeros desde el teclado y sumarlos; la


lista de nmeros termina cuando se ingresa un nmero
negativo.
E.V.

Diagrama de Flujo:

Nmero (num)
V.S.
Suma ( s )

Pseudocodigo:
inicio
s 0
leer num
mientras num > 0 hacer
s s + num;
leer num
fin_mientras
escribir s
fin

8. Realizar el programa del ejercicio anterior.

:::146:::

Maria M. Lima Quispe

ALGORITMOS Y PROGRAMACIN ESTRUCTURADA EN C++

5.2

ESTRUCTURA REPETITIVA hacer - mientras


El bucle hacer-mientras es parecido al bucle mientras, la diferencia
entre ambos es que, en la estructura repetitiva hacer-mientras el
cuerpo del bucle se ejecuta al menos una vez antes de que se evale
la condicin.
La eleccin entre un bucle mientras y un bucle hacer-mientras
depende del problema a resolver.

hacer
Accin

fin_mientras condicin

Accin

condicin

- Pseudocdigo -

F
do{

- Diagrama de Flujo -

Accin;

}
while(condicin);
- Sintaxis en C++ La condicin puede ser una variable, una expresin o el valor de
una funcin; sin embargo el valor que representa slo puede ser
verdadero o falso.
En C++ el valor 0 significa falso y un valor diferente de 0 significa
verdadero.
Lo que va entre llaves es la Accin o Acciones a ejecutar
repetitivamente mientras la condicin sea verdad. Cuando la
condicin sea falsa termina el bucle o ciclo.

Lilian M. Benique Ruelas

:::147:::

ALGORITMOS Y PROGRAMACIN ESTRUCTURADA EN C++

Es decir los pasos son:


[1] Ejecutar la Accin o Acciones
[2] Evaluar la condicin
[3] Si la condicin es verdadera volver al paso 1, sino continuar
fuera del while
Ejm:
i = 1;
do{
cout<<i<<endl;
i = i + 1;
}
while(i<=5);
La inicializacin del contador es: i=1;
Las acciones son:
cout<<i<<endl;
i = i + 1;
El incremento del contador es i = i + 1;
La condicin es: i <= 5
La prueba de escritorio del programa:
Prueba de Escritorio:
i

Pantalla

1
2
3
4
5
6

1
2
3
4
5

La sentencia do-while, se utiliza tambin cuando no se sabe el


nmero de veces que se ejecutaran determinadas acciones o
sentencias.

:::148:::

Maria M. Lima Quispe

ALGORITMOS Y PROGRAMACIN ESTRUCTURADA EN C++

HACER - MIENTRAS ( do while )


9. Imprimir la secuencia:
2
4
6
8
.
.
.
98
100

El contador i va a
recorrer de 2 a 100
aumentando de 2 en 2
2<=100

Pseudocodigo:
inicio
i 2
hacer
escribir i
i i + 2
mientras i <= 100
fin
Turbo C++ 4.5:

Lilian M. Benique Ruelas

:::149:::

ALGORITMOS Y PROGRAMACIN ESTRUCTURADA EN C++

10. Imprimir la secuencia:

50

40

Pseudocodigo:
inicio
i 50
hacer
escribir i
i i - 10
mientras i >= 0
fin

30

20

10

El contador i va a recorrer
de 50 a 0 disminuyendo de
10 en 10

Turbo C++ 4.5:

:::150:::

Maria M. Lima Quispe

ALGORITMOS Y PROGRAMACIN ESTRUCTURADA EN C++

11. Imprimir la suma de los nmeros:


50

40

30

20

10

O.V.

Acumulador (s)
Contador (i)
V.S.

Suma de los elementos ( s ) [Acumulador]


Pseudocodigo:
inicio
i 50
s 0
hacer
s s + i
i i - 10
mientras i >= 0
escribir s
fin
Turbo C++ 4.5:

Lilian M. Benique Ruelas

:::151:::

ALGORITMOS Y PROGRAMACIN ESTRUCTURADA EN C++

5.3

ESTRUCTURA REPETITIVA para o desde


Esta estructura repetitiva se utiliza generalmente cuando se sabe el
nmero de veces que se repetir una accin o conjunto de acciones.
La estructura para o desde ejecuta las acciones del cuerpo del bucle
un nmero especificado de veces y de modo automtico controla el
nmero de iteraciones o pasos a travs del cuerpo del bucle.

Para con vini,vfin,inc|dec

Accin

cierre

desde con vini hasta vfin [inc|dec] hacer


Acciones

fin_desde
para con vini hasta vfin [inc|dec] hacer
Acciones

fin_para
- Pseudocdigo -

vini es el valor inicial para el contador (con)


vfin es el valor final del contador. (condicin)
inc|dec puede ser el incremento o decremento.

:::152:::

Maria M. Lima Quispe

ALGORITMOS Y PROGRAMACIN ESTRUCTURADA EN C++

for(inicializacin; condicin; incremento/decremento)

{
Accin;

}
- Sintxis en C++ En la parte de inicializacin se debe dar un valor inicial a la
variable que va a controlar el proceso repetitivo (contador).
La condicin establece la continuidad o el trmino del proceso
repetitivo. Mientras la condicin sea verdad el proceso contina.
Cuando la condicin sea falsa el proceso termina. Normalmente en
esta condicin interviene la variable inicializada (el contador).
El incremento o decremento se realiza a la variable inicializada
(contador).
La Accin, puede estar conformada por una o varias acciones. Si
estuviera conformada por una accin no necesita llaves.
El funcionamiento es:
[1] Se ejecuta la instruccin de inicializacin
[2] Se evala la condicin
[3] Si la condicin es cierta, entonces se ejecuta la Accin o
Acciones. Si la condicin es falsa, abandonamos el bloque for
[4] Tras ejecutar la Accin o Acciones, se ejecuta la instruccin de
incremento o decremento y se vuelve al paso 2.
Ejm:
Para imprimir la secuencia:
50

40

30

20

10

for(i=50; i>=0; i=i-10)

{
cout<<i<<\t;
}
La inicializacin del contador i es 50, la condicin es que i>=0 y el
decremento es de 10 en 10.

Lilian M. Benique Ruelas

:::153:::

ALGORITMOS Y PROGRAMACIN ESTRUCTURADA EN C++

PARA O DESDE ( for )


12. Imprimir la secuencia:
2
4
6
8
.
.
.
98
100
Pseudocodigo:
inicio
desde i2 hasta 100 incremento 2 hacer
escribir i
fin_desde
fin
Diagrama de flujo:

Programa:

#include<iostream.h>
void main()
{
int i;
for(i=2;i<=100;i=i+2)
{
cout<<i<<endl;
}
}

:::154:::

Maria M. Lima Quispe

ALGORITMOS Y PROGRAMACIN ESTRUCTURADA EN C++

13. Imprimir la secuencia:


100
98
96
94
.
.
.
4
2

Pseudocodigo:
inicio
desde i100 hasta 2 decremento 2 hacer
escribir i
fin_desde
fin

Diagrama de flujo:

Programa:

#include<iostream.h>
void main()
{
int i;
for(i=100;i>=2;i=i-2)
{
cout<<i<<endl;
}
}

Lilian M. Benique Ruelas

:::155:::

ALGORITMOS Y PROGRAMACIN ESTRUCTURADA EN C++

14. Imprimir la secuencia:


5
10
15
20
.
.
.
95
100
Pseudocodigo:
inicio
desde i5 hasta 100 incremento 5 hacer
escribir i
fin_desde
fin

Diagrama de flujo:

Programa:

#include<iostream.h>
void main()
{
int i;
for(i=5;i<=100;i=i+5)
{
cout<<i<<endl;
}
}

:::156:::

Maria M. Lima Quispe

ALGORITMOS Y PROGRAMACIN ESTRUCTURADA EN C++

15. Imprimir la secuencia:


100
95
90
85
.
.
.
10

Pseudocodigo:
inicio
desde i100 hasta 10 decremento 5 hacer
escribir i
fin_desde
fin

Diagrama de flujo:

Programa:

#include<iostream.h>
void main()
{
int i;
for(i=100;i>=10;i=i-5)
{
cout<<i<<endl;
}
}

Lilian M. Benique Ruelas

:::157:::

ALGORITMOS Y PROGRAMACIN ESTRUCTURADA EN C++

16. Mostrar en pantalla la tabla de multiplicar del 1 al 18 para


cualquier nmero, de la siguiente manera:
7x 1= 7
7 x 2 = 14
7 x 3 = 21
.
.
.
7 x 18 = 126

Ejemplo:
Ingrese un nmero: 7

Programa:
V.E.
Nmero (n)
SALIDA

#include<iostream.h>
void main()
{
int i,n;
cout<<"Ingrese n: ";cin>>n;
for(i=1;i<=18;i=i+1)
{
cout<<n<<" x "<<i<<" = "<<n*i<<endl;
}

Tabla de multiplicar

Turbo C++ 4.5:

:::158:::

Maria M. Lima Quispe

ALGORITMOS Y PROGRAMACIN ESTRUCTURADA EN C++

17. Calcular la suma de la secuencia: 100,95,90,85,...,10


El acumulador de sumas se inicializa con 0.
O.V.
Acumulador de sumas (suma)
Contador (i)
V.S.
Suma de la secuencia (suma)

Pseudocdigo:

Programa:
#include<iostream.h>
void main()
{
int i,suma;
suma = 0;
for(i=100;i>=10;i=i-5)
{
suma = suma + i;
}
cout<<"suma: "<<suma;
}

inicio
suma 0
desde i100 hasta 10 decremento 5 hacer
suma suma + i
fin_desde
escribir suma
fin

DFD 1.0:

Lilian M. Benique Ruelas

:::159:::

ALGORITMOS Y PROGRAMACIN ESTRUCTURADA EN C++

18. Calcular el producto de la secuencia: 1,2,3, ...,10


El acumulador de productos se inicializa con 1.
Programa:

O.V.

Acumulador de productos (p)


Contador (i)
V.S.

Producto de la secuencia (p)

Pseudocodigo:

#include<iostream.h>
void main()
{
int i;
long p;
p = 1;
for(i=1;i<=10;i=i+1)
{
p = p * i;
}
cout<<"Producto: "<<p;
}

inicio
p 1
desde i1 hasta 10 incremento 1 hacer
p p * i
fin_desde
escribir p
fin
DFD 1.0:

:::160:::

Maria M. Lima Quispe

ALGORITMOS Y PROGRAMACIN ESTRUCTURADA EN C++

19. Calcular J:
J = 12 + 22 + 32 + 42 + + 102

Programa:

O.V.

Acumulador ( J )
Contador (i)
V.S.

Suma de la secuencia ( J )

Pseudocodigo:

#include<iostream.h>
void main()
{
int i;
long J;
J = 0;
for(i=1;i<=10;i=i+1)
{
J = J + i * i;
}
cout<<"J = "<<J;
}

inicio
J 0
desde i1 hasta 10 incremento 1 hacer
J J + i * i
fin_desde
escribir J
fin

DFD 1.0:

Lilian M. Benique Ruelas

:::161:::

ALGORITMOS Y PROGRAMACIN ESTRUCTURADA EN C++

Ejercicios
Realizar el anlisis, diseo (pseudocdigo, diagrama de flujo) y
programa de los siguientes:
5.1.

Determinar simultneamente los valores mximo y mnimo de una lista de


100 nmeros ingresados por teclado.

5.2.

Imprimir la suma de los nmeros impares menores o iguales que n.

5.3.

Imprimir la suma de los nmeros pares de los nmeros que van del 1 al
200.

5.4.

Calcular la suma de los n primeros nmeros enteros utilizando la


estructura desde.

5.5.

Imprimir las treinta primeras potencias de 3, es decir, 3 elevado a 1, 3


elevado a 2, etc.

5.6.

Obtener la suma de los nmeros pares hasta 1000 inclusive.

5.7.

Dados dos nmeros enteros, realizar el algoritmo que calcule su cociente y


su resto.

5.8.

De una lista de 20 nmeros ingresados por teclado. Se desea calcular el


valor del nmero mayor.

5.9.

Leer 10 nmeros. Determinar la media de los nmeros positivos y la


media de los nmeros negativos.

5.10. Dado un entero positivo n ( >1 ), comprobar si es primo o compuesto.


5.11. Utilizando las estructuras repetitivas mientras, hacer_mientras y para o
desde, imprimir la secuencia 2, 4, 6, 8, , 100 en forma vertical.
5.12. Utilizando las estructuras repetitivas mientras, hacer_mientras y para o
desde, imprimir la secuencia 1000, 900, 800, , 0 en forma horizontal.
5.13. De un saln de 30 estudiantes calcular el promedio de las edades.
5.14. De un saln de 25 estudiantes calcular el promedio de notas del curso de
programacin.

:::162:::

Maria M. Lima Quispe

ALGORITMOS Y PROGRAMACIN ESTRUCTURADA EN C++

ARRAYS

Lilian M. Benique Ruelas

:::163:::

ALGORITMOS Y PROGRAMACIN ESTRUCTURADA EN C++

:::164:::

Maria M. Lima Quispe

ALGORITMOS Y PROGRAMACIN ESTRUCTURADA EN C++

CAPITULO 6: Arrays

- Figura 6.1: Arrays (Arreglos) -

Los arrays (arreglos) pueden ser unidimensionales, bidimensionales y


multidimensionales.

6.1

ARREGLOS UNIDIMENSIONALES: Los Vectores


Es un arreglo de n elementos organizados en una dimensin
donde n recibe el nombre de longitud o tamao del vector.
Un vector NOTAS que consta de 10 elementos se puede representar
por la siguiente figura:
Nombre del vector

NOTAS:

Elementos

12.5

16

20

14

14.5

ndices
- Figura 6.2: Vectores -

Lilian M. Benique Ruelas

:::165:::

ALGORITMOS Y PROGRAMACIN ESTRUCTURADA EN C++

El primer ndice (posicin) de un vector es 0.


Los vectores se almacenan en memoria central de la computadora
en orden adyacente.
Memoria
NOTAS[0]

12.5

Direccin X

NOTAS[1]

16

Direccin X+1

NOTAS[2]

20

Direccin X+2

NOTAS[3]

14

Direccin X+3

NOTAS[9]

14.5

Direccin X+9

- Figura 6.3: Almacenamiento del vector NOTAS en memoria -

Cada elemento del vector NOTAS puede ser referenciado dndole


el nombre del arreglo, seguido por el nmero de posicin (ndice)
de dicho elemento encerrados por corchetes ([ ]).
NOTAS[0] = 12.5
NOTAS[1] = 16
NOTAS[2] = 20

6.1.1 Declaracin de Vectores


Para declarar un vector se utiliza la siguiente sintaxis:
nombreTipo nombreVariable[Tamao];

Ejemplo:
float NOTAS[10]; // vector de 10 nmeros decimales
int edad[50]; //vector de 50 nmeros enteros
char nombre[20]; // vector de 20 caracteres

:::166:::

Maria M. Lima Quispe

ALGORITMOS Y PROGRAMACIN ESTRUCTURADA EN C++

6.1.2 Operaciones con Vectores


Recorrido o Acceso Secuencial al Vector
A la operacin de efectuar una accin general sobre todos los
elementos de un vector se denomina recorrido del vector. Estas
operaciones se realizan utilizando estructuras repetitivas.
Ejemplo: Para recorrer un vector de 10 elementos
for(i=0;i<10;i++)
{
//acciones
}
Ejemplo: Para recorrer un vector de n elementos
for(i=0;i<n;i++)
{
//acciones
}

Asignacin o Inicializacin de un Vector


Si desea asignar valores a todos los elementos de un vector, se debe
recurrir a las estructuras repetitivas.
Ejemplo: Inicializar el vector A

A:

Podemos inicializar el vector A haciendo uso de estructuras


secuenciales como:
A[0]=1
A[1]=1
A[2]=1
A[3]=1
A[4]=1
A[5]=1
A[6]=1
A[7]=1
Lilian M. Benique Ruelas

La
sentencia
resume todas
sera:

que
estas

A[ i ]=1
La variable i recorre de 0 a 7.

:::167:::

ALGORITMOS Y PROGRAMACIN ESTRUCTURADA EN C++

for(i=0;i<8;i++)
{
A[i]=1;
}

Lectura/Escritura de datos en un Vector


Las operaciones de Entrada/Salida normalmente se realizan con las
estructuras repetitivas (generalmente con for).
Ejemplo: Leer 15 nmeros y almacenarlos en el vector Z
for(i=0;i<15;i++)
{
cout<<Ingrese nmero: ;
cin>>Z[i];
}
Otra forma de solicitar los 15 nmeros es:
for(i=0;i<15;i++)
{
cout<<Z[<<i<<]: ;
cin>>Z[i];
}
Ejemplo: Imprimir el vector Z en forma horizontal
for(i=0;i<15;i++)
{
cout<<Z[i]<<\t;
}
Ejemplo: Imprimir el vector Z en forma vertical
for(i=0;i<15;i++)
{
cout<<Z[i]<<\n;
}

:::168:::

Maria M. Lima Quispe

ALGORITMOS Y PROGRAMACIN ESTRUCTURADA EN C++

VECTORES
1. Inicializar el vector A e imprimir sus elementos en forma
horizontal.
A:

Diagrama de flujo:

inicio
i 0
No

i < 7
Si
A[i] 1
i i + 1

i 0

i < 7

No

Fin

Si
A[i]
i i + 1

Lilian M. Benique Ruelas

:::169:::

ALGORITMOS Y PROGRAMACIN ESTRUCTURADA EN C++

Primero debemos declarar el vector A para almacenar siete elementos


de tipo entero.
int A[7];
Para la inicializacin del vector A, utilizamos la estructura repetitiva
for, dentro del bucle for colocamos A[i] = 1. El ndice i recorrer desde
la posicin 0 hasta la 6.
for(i=0;i<7;i++)
{
A[i] = 1;
}

Para imprimir el vector tambin utilizamos la estructura repetitiva


for.
for(i=0;i<7;i++)
{
cout<<A[i]<<"\t";
}

Para imprimir una tabulacin entre los elementos del vector A.


cout<<\t;

Para imprimir un salto de lnea.


cout<<endl;
#include<iostream.h>
void main( )
{
int A[7],i;
for(i=0;i<7;i++)
{
A[i] = 1;
}

Programa:

for(i=0;i<7;i++)
{
cout<<A[i]<<"\t";
}
cout<<endl;
}

:::170:::

Maria M. Lima Quispe

ALGORITMOS Y PROGRAMACIN ESTRUCTURADA EN C++

2. Inicializar el vector M e imprimir sus elementos en forma


horizontal.
M:

Diagrama de flujo:

inicio
i 0
No

i < 9
Si
Si

No

i%2== 1

M[i] 0

M[i] 1

i i + 1
i 0
No
i < 9

Fin

Si
M[i]
i i + 1

Lilian M. Benique Ruelas

:::171:::

ALGORITMOS Y PROGRAMACIN ESTRUCTURADA EN C++

Primero debemos declarar el vector M para almacenar nueve


elementos.
int M[9];
Para la inicializacin del vector M, utilizamos la estructura repetitiva
for.
for(i=0;i<9;i++)
{
//
}

Dentro del bucle for, debemos colocar el cdigo necesario para


colocar en las posiciones impares 0 y en los dems 1
Pares
M[0]=1
M[2]=1
M[4]=1
M[6]=1
M[8]=1

Impares
M[1]=0
M[3]=0
M[5]=0
M[7]=0

Utilizamos la estructura selectiva doble, para separar las posiciones


pares de impares.
if(i%2==1)
{
M[i] = 0;
}
else
{
M[i] = 1;
}

Para imprimir el vector tambin utilizamos la estructura repetitiva


for.
for(i=0;i<9;i++)
{
cout<<M[i]<<"\t";
}

:::172:::

Maria M. Lima Quispe

ALGORITMOS Y PROGRAMACIN ESTRUCTURADA EN C++

Imprime una tabulacin entre los elementos del vector M.


cout<<\t;

Imprime un salto de lnea.


cout<<endl;

Programa:

#include<iostream.h>
void main( )
{
int M[9],i;
for(i=0;i<9;i++)
{
if(i%2==1)
{
M[i] = 0;
}
else
{
M[i] = 1;
}
}
for(i=0;i<9;i++)
{
cout<<M[i]<<"\t";
}
cout<<endl;
}

Lilian M. Benique Ruelas

:::173:::

ALGORITMOS Y PROGRAMACIN ESTRUCTURADA EN C++

3. Inicializar el vector L e imprimir sus elementos en forma


vertical.
L:

Diagrama de flujo:

inicio
i 0
No

i < 9
Si
Si

No

i < 4

L[i] 2

L[i] 5

i i + 1
i 0
No
i < 9

Fin

Si
L[i]
i i + 1

:::174:::

Maria M. Lima Quispe

ALGORITMOS Y PROGRAMACIN ESTRUCTURADA EN C++

Utilizamos la estructura selectiva doble, para separar las posiciones


menores de 4 de las dems.
if(i < 4)
{
L[i] = 2;
}
else
{
L[i] = 5;
}

Programa:
#include<iostream.h>
void main( )
{
int L[9],i;
for(i=0;i<9;i++)
{
if(i<4)
{
L[i] = 2;
}
else
{
L[i] = 5;
}
}
for(i=0;i<9;i++)
{
cout<<L[i]<<"\t";
}
cout<<endl;
}

Lilian M. Benique Ruelas

:::175:::

ALGORITMOS Y PROGRAMACIN ESTRUCTURADA EN C++

4. Leer 10 nmeros enteros, almacenarlos en un vector V e


imprimirlos en forma vertical.
Programa:
#include<iostream.h>
void main()
{
//Declaramos el vector V de 10 elementos
int V[10], i;
// Leer vector V de 10 elementos
for(i=0;i<10;i++)
{
cout<<"V["<<i<<"]= ";cin>>V[i];
}
// Imprimir vector V
for(i=0;i<10;i++)
{
cout<<V[i]<<endl;
}
}

5. Leer
n
nmeros

:::176:::

Maria M. Lima Quispe

ALGORITMOS Y PROGRAMACIN ESTRUCTURADA EN C++

enteros, almacenarlos en un vector A e imprimirlos en forma


horizontal.
Programa:

#include<iostream.h>
void main()
{
//Declaramos el vector A de 100 elementos mximo
int A[100];
int i,n;
cout<<"Ingrese longitud del vector: ";cin>>n;
// Leer vector A de n elementos
for(i=0;i<n;i++)
{
cout<<"A["<<i<<"]= ";cin>>A[i];
}
// Imprimir vector A
for(i=0;i<n;i++)
{
cout<<A[i]<<"\t";
}
cout<<endl;
}

Lilian M. Benique Ruelas

:::177:::

ALGORITMOS Y PROGRAMACIN ESTRUCTURADA EN C++

6. Leer e imprimir los elementos de un vector A de n elementos


y calcular la suma de los mismos.
Programa:

#include<iostream.h>
void main()
{
int A[100];
int i,n,suma;
//El acumulador suma inicializamos con 0
suma = 0;
cout<<"Ingrese longitud del vector: ";cin>>n;
// Leer vector A de n elementos e ir sumando
for(i=0;i<n;i++)
{
cout<<"A["<<i<<"]=";cin>>A[i];
suma = suma + A[i];
}
// Imprimir vector A
for(i=0;i<n;i++)
{
cout<<A[i]<<"\t";
}
cout<<endl;
cout<<"La suma es: "<<suma<<endl;
}

:::178:::

Maria M. Lima Quispe

ALGORITMOS Y PROGRAMACIN ESTRUCTURADA EN C++

7. Leer un vector A de n elementos, calcule e imprima la suma y


el promedio de sus elementos.
Programa:
#include<iostream.h>
void main()
{
int A[100],i,n;
float suma,promedio;
suma = 0;
cout<<"Ingrese longitud del vector: ";cin>>n;
// Leer vector A de n elementos
for(i=0;i<n;i++)
{
cout<<"A["<<i<<"]=";cin>>A[i];
suma = suma + A[i];
}
// Imprimir vector A
for(i=0;i<n;i++)
{
cout<<A[i]<<"\t";
}
cout<<endl;
cout<<"La suma es: "<<suma<<endl;
promedio = suma/n;
cout<<"El promedio es: "<<promedio<<endl;
}

Lilian M. Benique Ruelas

:::179:::

ALGORITMOS Y PROGRAMACIN ESTRUCTURADA EN C++

8. Leer 2 vectores A y B de 5 elementos, calcule e imprima el


vector suma S.
Programa:
#include<iostream.h>
void main()
{
int A[5],B[5],S[5],i;
cout<<"Ingrese elementos del vector A"<<endl;
for(i=0;i<5;i++)
{
cout<<"A["<<i<<"]=";cin>>A[i];
}
cout<<"Ingrese elementos del vector B"<<endl;
for(i=0;i<5;i++)
{
cout<<"B["<<i<<"]=";cin>>B[i];
}
// Sumar vector A y B
for(i=0;i<5;i++)
{
S[i] = A[i] + B[i];
}
// Imprimir vector S
cout<<"Elementos del vector S"<<endl;
for(i=0;i<5;i++)
{
cout<<S[i]<<"\t";
}
cout<<endl;
}

:::180:::

Maria M. Lima Quispe

ALGORITMOS Y PROGRAMACIN ESTRUCTURADA EN C++

9. Lea un vector Z de 10 elementos e imprima el mayor


elemento.
Programa:
#include<iostream.h>
void main()
{
int Z[10],i,mayor;
cout<<"Ingrese elementos del vector Z"<<endl;
for(i=0;i<10;i++)
{
cout<<"Z["<<i<<"]=";cin>>Z[i];
}
// Buscar el mayor
mayor = Z[0];
for(i=1;i<10;i++)
{
if(mayor < Z[i])
{
mayor = Z[i];
}
}
cout<<"El mayor elemento es: "<<mayor<<endl;
}

Lilian M. Benique Ruelas

:::181:::

ALGORITMOS Y PROGRAMACIN ESTRUCTURADA EN C++

10. Lea un vector U de 12 elementos e imprima el menor


elemento.
Programa:
#include<iostream.h>
void main()
{
int U[12],i,menor;
cout<<"Ingrese elementos del vector U"<<endl;
for(i=0;i<12;i++)
{
cout<<"U["<<i<<"]=";cin>>U[i];
}
// Buscar el mayor
menor = U[0];
for(i=1;i<12;i++)
{
if(menor > U[i])
{
menor = U[i];
}
}
cout<<"El menor elemento es: "<<menor<<endl;
}

:::182:::

Maria M. Lima Quispe

ALGORITMOS Y PROGRAMACIN ESTRUCTURADA EN C++

6.2

ARREGLOS BIDIMENSIONALES: Las Matrices


Una matriz CURSOS que consta de 5 filas y 4 columnas se
representa por la siguiente figura:

Fila 2--->

11

Fila 3--->

17

Fila 4--->

18

10

Columna 3--->

20 12 13 19

Columna 2--->

Fila 1--->

Columna 1--->

12 15 14

Columna 0--->

Fila 0--->

16

12 18

5x4

La matriz CURSOS es de orden 5x4.


Cada elemento de la matriz CURSOS puede ser referenciado al
igual que los vectores, solo que en el caso de las matrices utilizamos
dos ndices uno para filas y el otro para las columnas.
CURSOS[0][2] = 14 //se encuentra en la fila 0 columna 2
CURSOS[3][0] = 17 //se encuentra en la fila 3 columna 0
CURSOS[4][3] = 10 //se encuentra en la fila 4 columna 3
CURSOS[0][0] = 12 //se encuentra en la fila 0 columna 0

6.2.1 Declaracin de Matrices


Para declarar una matriz se utiliza la siguiente sintaxis:
nombreTipo nombreVariable[TamF][TamC];
Ejemplo:
int CURSOS[5][4]; //almacena 20 enteros en 5 filas y 4 columnas
int Lista[3][5]; // almacena 15 enteros en 3 filas y 5 columnas

Lilian M. Benique Ruelas

:::183:::

ALGORITMOS Y PROGRAMACIN ESTRUCTURADA EN C++

6.2.2 Operaciones con Matrices


Recorrido o Acceso Secuencial a la Matriz
A diferencia de los vectores, para el recorrido de una matriz
utilizamos dos estructuras repetitivas (for).
Ejemplo: Para recorrer la matriz CURSOS de 5 filas y 4 columnas
for(i=0;i<5;i++)
{
for(j=0;j<4;j++)
{
//acciones
}
}
Ejemplo: Para recorrer una matriz de n filas y m columnas
for(f=0;f<n;f++)
{
for(c=0;c<m;c++)
{
//acciones
}
}

Asignacin o Inicializacin de una Matriz


Si se desea asignar valores a todos los elementos de una matriz, se
utiliza tambin las estructuras repetitivas.
Ejemplo: Inicializar la matriz Q.

Q:

:::184:::

5x4

Maria M. Lima Quispe

ALGORITMOS Y PROGRAMACIN ESTRUCTURADA EN C++

for(f=0;f<5;f++)
{
for(c=0;c<4;c++)
{
Q[f][c]=1;
}
}

Lectura/Escritura de datos en una Matriz


Las operaciones de Entrada/Salida de una matriz tambin se
realizan con estructuras repetitivas.
Ejemplo: Leer 15 nmeros y almacenarlos en una matriz Z de 3 filas
y 5 columnas.
for(f=0;f<3;f++)
{
for(c=0;c<5;c++)
{
cin>>Z[f][c];
}
}
Ejemplo: Imprimir la matriz Z
for(f=0;f<3;f++)
{
for(c=0;c<5;c++)
{
cout<<Z[f][c]<<\t;
}
cout<<endl;
}

Lilian M. Benique Ruelas

:::185:::

ALGORITMOS Y PROGRAMACIN ESTRUCTURADA EN C++

MATRICES
11. Inicializar e imprimir la matriz P.
1 1 1

Programa:

#include<iostream.h>

P:

1 1 1
1 1 1
1 1 1

4x3

void main()
{
int P[4][3],f,c;
//Inicializar la matriz P
for(f=0;f<4;f++)
{
for(c=0;c<3;c++)
{
P[f][c] = 1;
}
}
//Imprimir matriz P
for(f=0;f<4;f++)
{
for(c=0;c<3;c++)
{
cout<<P[f][c]<<"\t";
}
cout<<endl;
}
}

:::186:::

Maria M. Lima Quispe

ALGORITMOS Y PROGRAMACIN ESTRUCTURADA EN C++

12. Inicializar e imprimir la matriz S.


1 1 1 1 1 1

S: 2
Programa:

2 2 2 2 2

3 3 3 3 3 3

3x6

#include<iostream.h>
void main()
{
int S[3][6],f,c;
//Inicializar la matriz S
for(f=0;f<3;f++)
{
for(c=0;c<6;c++)
{
S[f][c] = f+1;
}
}
//Imprimir matriz S
for(f=0;f<3;f++)
{
for(c=0;c<6;c++)
{
cout<<S[f][c]<<"\t";
}
cout<<endl;
}
}

Lilian M. Benique Ruelas

:::187:::

ALGORITMOS Y PROGRAMACIN ESTRUCTURADA EN C++

13. Inicializar e imprimir la matriz T.


1 0 0

Programa:

T:

0 1 0
0 0 1

#include<iostream.h>

3x3

void main()
{
int T[3][3],f,c;
//Inicializar la matriz T
for(f=0;f<3;f++)
{
for(c=0;c<3;c++)
{
if(f==c)
{
T[f][c] = 1;
}
else
{
T[f][c] = 0;
}
}
}
//Imprimir matriz T
for(f=0;f<3;f++)
{
for(c=0;c<3;c++)
{
cout<<T[f][c]<<"\t";
}
cout<<endl;
}
}

:::188:::

Maria M. Lima Quispe

ALGORITMOS Y PROGRAMACIN ESTRUCTURADA EN C++

14. Leer la matriz A de 3 filas y 5 columnas, calcular e imprimir


la suma de sus elementos.
Programa:
#include<iostream.h>
void main()
{
int A[3][5],f,c,suma = 0;
//Leer matriz A
for(f=0;f<3;f++)
{
for(c=0;c<5;c++)
{
cout<<"A["<<f<<"]["<<c<<"]= ";cin>>A[f][c];
}
}
//Sumar los elementos de matriz A
for(f=0;f<3;f++)
{
for(c=0;c<5;c++)
{
suma = suma + A[f][c];
}
}
cout<<"La suma de los elementos es: "<<suma<<endl;
}

Lilian M. Benique Ruelas

:::189:::

ALGORITMOS Y PROGRAMACIN ESTRUCTURADA EN C++

15. Leer la matriz B de 2 filas y 6 columnas, calcular e imprimir


la suma y el promedio de sus elementos.
Programa:
#include<iostream.h>
void main()
{
int B[2][6],f,c;
float promedio, suma = 0;
//Leer matriz B
for(f=0;f<2;f++)
{
for(c=0;c<6;c++)
{
cout<<"B["<<f<<"]["<<c<<"]= ";cin>>B[f][c];
}
}
//Sumar los elementos de matriz B
for(f=0;f<2;f++)
{
for(c=0;c<6;c++)
{
suma = suma + B[f][c];
}
}
cout<<"La suma de los elementos es: "<<suma<<endl;
promedio = suma/12;
cout<<"El promedio es: "<<promedio<<endl;
}

:::190:::

Maria M. Lima Quispe

ALGORITMOS Y PROGRAMACIN ESTRUCTURADA EN C++

16. Hallar el mayor elemento de una matriz C de n filas y m


columnas.
Programa:
#include<iostream.h>
void main()
{
int C[100][100],f,c,mayor,nf,nc;
cout<<"Ingrese numero de filas: ";cin>>nf;
cout<<"Ingrese numero de columnas: ";cin>>nc;
for(f=0;f<nf;f++)
{
for(c=0;c<nc;c++)
{
cout<<"C["<<f<<"]["<<c<<"]= ";cin>>C[f][c];
}
}
mayor = C[0][0];
for(f=0;f<nf;f++)
{
for(c=0;c<nc;c++)
{
if(mayor < C[f][c])
{
mayor = C[f][c];
}
}
}
cout<<"El mayor elemento es: "<<mayor<<endl;
}

Lilian M. Benique Ruelas

:::191:::

ALGORITMOS Y PROGRAMACIN ESTRUCTURADA EN C++

17. Hallar el menor elemento de una matriz D de 6 filas y 4


columnas.
Programa:
#include<iostream.h>
void main()
{
int D[6][4],f,c,menor,nf,nc;
for(f=0;f<6;f++)
{
for(c=0;c<4;c++)
{
cout<<"D["<<f<<"]["<<c<<"]= ";cin>>D[f][c];
}
}
menor = D[0][0];
for(f=0;f<6;f++)
{
for(c=0;c<4;c++)
{
if(menor > D[f][c])
{
menor = D[f][c];
}
}
}
cout<<"El menor elemento es: "<<menor<<endl;
}

:::192:::

Maria M. Lima Quispe

ALGORITMOS Y PROGRAMACIN ESTRUCTURADA EN C++

18. Leer dos matrices A y B de 3 filas y 5 columnas, calcule e


imprima la matriz suma S.
Programa:
#include<iostream.h>
void main()
{
int A[3][5],B[3][5],S[3][5],f,c;
cout<<"Ingrese elementos de matriz A"<<endl;
for(f=0;f<3;f++)
{
for(c=0;c<5;c++)
{
cout<<"A["<<f<<"]["<<c<<"]= ";cin>>A[f][c];
}
}
cout<<"Ingrese elementos de matriz B"<<endl;
for(f=0;f<3;f++)
{
for(c=0;c<5;c++)
{
cout<<"B["<<f<<"]["<<c<<"]= ";cin>>B[f][c];
}
}
//Suma de matrices A y B
for(f=0;f<3;f++)
{
for(c=0;c<5;c++)
{
S[f][c]=A[f][c]+B[f][c];
}
}
//Imprimir matriz S
for(f=0;f<3;f++)
{
for(c=0;c<5;c++)
{
cout<<S[f][c]<<"\t";
}
cout<<endl;
}
}

Lilian M. Benique Ruelas

:::193:::

ALGORITMOS Y PROGRAMACIN ESTRUCTURADA EN C++

Ejercicios
Resolver los siguientes:
6.1.

Calcular el nmero de elementos positivos de un vector de n elementos.

6.2.

Almacenar las edades de un saln de 25 estudiantes, calcular el promedio


de sus edades.

6.3.

Imprimir una matriz identidad de 6 x 6.

6.4.

Se dispone de un vector V de 50 nmeros reales distintos de cero. Crear un


nuevo vector en la que sus elementos resulten de dividir los elementos del
vector V por el elemento V[k], siendo k un valor dado.

6.5.

Leer una matriz de 3 x 3, calcular la suma de cada una de sus filas y


columnas, dejando dichos resultados en 2 vectores, uno de la suma de filas
y otro de las columnas.

6.6.

Se dispone de N temperaturas almacenadas en un vector, calcular la media


y obtener el nmero de temperaturas mayores o iguales a la media.

6.7.

De un vector de N elementos, determinar el mayor elemento.

6.8.

De una matriz Z de n filas y m columnas, determine el menor elemento.

6.9.

Se dispone de las notas de cuarenta alumnos. Cada uno de ellos puede


tener una o varias notas. Escribir un programa que permita obtener la
media de cada alumno y la media de la clase.

6.10. Se introducen una serie de valores numricos desde teclado, siendo el


valor final de entrada de datos o centinela -100. Imprimir los valores
ledos, la suma y el promedio de dichos nmeros.

:::194:::

Maria M. Lima Quispe

ALGORITMOS Y PROGRAMACIN ESTRUCTURADA EN C++

ORDENACIN

Lilian M. Benique Ruelas

:::195:::

ALGORITMOS Y PROGRAMACIN ESTRUCTURADA EN C++

:::196:::

Maria M. Lima Quispe

ALGORITMOS Y PROGRAMACIN ESTRUCTURADA EN C++

CAPITULO 7: Ordenacin
Ordenacin es la operacin de organizar un conjunto de datos en algn orden
dado, puede ser en forma ascendente o descendente en datos numricos, o bien en
orden alfabtico directo o inverso.
Se trata de una de las operaciones ms tpicas de la programacin. Existen varios
mtodos de Ordenacin.

7.1

MTODO DE ORDENACIN BURBUJA


#include<iostream.h>
void main()
{
int A[100],i,j,n,AUX;
cout<<"Ingrese longitud del vector: ";cin>>n;
// Leer vector A de n elementos
for(i=1;i<=n;i++)
{
cout<<"A["<<i<<"]=";cin>>A[i];
}
//Ordenar el vector
for(i=1;i<=n-1;i++)
{
for(j=1;j<=n-i;j++)
{
if(A[j]>A[j+1])
{
AUX
= A[j];
A[j] = A[j+1];
A[j+1]= AUX;
}
}
}
// Imprimir vector A ordenado
for(i=1;i<=n;i++)
{
cout<<A[i]<<"\t";
}
cout<<endl;
}

Lilian M. Benique Ruelas

:::197:::

ALGORITMOS Y PROGRAMACIN ESTRUCTURADA EN C++

BSQUEDA

:::198:::

Maria M. Lima Quispe

ALGORITMOS Y PROGRAMACIN ESTRUCTURADA EN C++

Lilian M. Benique Ruelas

:::199:::

ALGORITMOS Y PROGRAMACIN ESTRUCTURADA EN C++

CAPITULO 8: Bsqueda
Bsqueda es la operacin de ubicar un dato dentro de un conjunto de datos,
podemos determinar si se encuentra o no, podemos contar el nmero de veces que
se repite un dato.

8.1

MTODO DE BSQUEDA LINEAL O SECUENCIAL


El programa siguiente busca un dato en un vector de n elementos y muestra
la posicin en la que se encuentra.
#include<iostream.h>
void main()
{
int A[100],i,n,dato,pos = -1;
cout<<"Ingrese longitud del vector: ";cin>>n;
// Leer vector A de n elementos
for(i=1;i<=n;i++)
{
cout<<"A["<<i<<"]=";cin>>A[i];
}
cout<<"Ingrese elemento a buscar ...";cin>>dato;
//Buscar el dato
for(i=1;i<=n-1;i++)
{
if(dato == A[i])
{
pos = i;
break;
}
}
if(pos != -1)
{
cout<<"El "<<dato<<" esta en la posicion "<<pos<<endl;
}
else
{
cout<<"El "<<dato<<" no se encuentra."<<endl;
}
}

:::200:::

Maria M. Lima Quispe

ALGORITMOS Y PROGRAMACIN ESTRUCTURADA EN C++

FUNCIONES

Lilian M. Benique Ruelas

:::201:::

ALGORITMOS Y PROGRAMACIN ESTRUCTURADA EN C++

:::202:::

Maria M. Lima Quispe

ALGORITMOS Y PROGRAMACIN ESTRUCTURADA EN C++

CAPITULO 9: Funciones
Una funcin es un conjunto de instrucciones con un nombre determinado
y que realizan una tarea especfica dentro de un programa.
Adems de la funcin main, podemos crear nuestras propias funciones
dentro de un programa.
La forma de implementar una funcin es:

tipo NombreFuncin(Lista de argumentos)

{
acciones;
return(variable);

tipo: Sirve para elegir el tipo de datos que devuelve la funcin. Toda
funcin puede obtener un resultado. Eso se realiza mediante la
instruccin return. El tipo puede ser: int, char, long, float, double,.... y
tambin void. ste ltimo se utiliza si la funcin no devuelve ningn
valor (y suelen llamarse procedimientos).
NombreFuncin: El identificador de la funcin debe cumplir reglas
correspondientes al nombre de los identificadores.

Debe comenzar por una letra


Slo puede contener letras, nmeros y el carcter _
No puede estar repetido en el mismo algoritmo o
programa.
Que sea aclarativo, es decir, que represente lo que
realmente hace.

Lista de argumentos: Llamados tambin parmetros, su uso es


opcional, hay funciones sin parmetros. Los parmetros son una serie
de valores que la funcin puede requerir para poder ejecutar su trabajo.
En realidad es una lista de variables y los tipos de las mismas.

Lilian M. Benique Ruelas

:::203:::

ALGORITMOS Y PROGRAMACIN ESTRUCTURADA EN C++

En la estructura general de
puntos importantes:

un programa con funciones, tenemos 3

Inclusin de libreras

Declaracin de prototipos o funciones propias 1


Declaracin de variables globales
Funcin principal
void main( )
{

Llamar a la funcin propia

Implementacin de funciones propias


f1( )
{

La sentencia return se puede utilizar para devolver un valor.

8.2

RECURSIVIDAD
La recursividad es una tcnica de creacin de funciones en la que
una funcin se llama a s misma. Ciertos problemas como el de las
torres de Hanoi, por ejemplo, seran casi imposibles de resolver sin
esta tcnica.
La idea es que la funcin resuelva parte del problema y se llame a s
misma para resolver la parte que queda, y as sucesivamente.
En cada llamada el problema debe ser cada vez ms sencillo hasta
llegar a una llamada en la que la funcin devuelve un nico valor.
Ejm: La funcin factorial con recursividad
int factorial(int n)
{
if (n ==0)
return 1;
else
return (n * factorial(n-1));
}

:::204:::

Maria M. Lima Quispe

ALGORITMOS Y PROGRAMACIN ESTRUCTURADA EN C++

FUNCIONES
1. Funcin para sumar dos nmeros enteros
#include<iostream.h>
//declaracin del prototipo
int suma(int,int);
void main()
{
//llamar a la funcin suma
cout<<suma(3,4)<<endl;
}
//Implementacin de la funcin
int suma(int a,int b)
{
return a+b;
}

2. Suma de dos nmeros n1 y n2 con funciones


#include<iostream.h>
//declaracin del prototipo
int suma(int,int);
void main()
{
int n1,n2;
cout<<"Ingrese n1: ";cin>>n1;
cout<<"Ingrese n2: ";cin>>n2;
//llamar a la funcin suma
cout<<suma(n1,n2)<<endl;
}
//Implementacin de la funcin
int suma(int a,int b)
{
return a+b;
}

Lilian M. Benique Ruelas

:::205:::

ALGORITMOS Y PROGRAMACIN ESTRUCTURADA EN C++

3. Operaciones bsicas de dos nmeros con funciones


#include<iostream.h>
//declaracin de prototipos
float suma(float,float);
float resta(float,float);
float multiplica(float,float);
float division(float,float);
void main()
{
float n1,n2;
cout<<"Ingrese n1: ";cin>>n1;
cout<<"Ingrese n2: ";cin>>n2;
//Llamada a las funciones
cout<<"Suma= "<<suma(n1,n2)<<endl;
cout<<"Resta= "<<resta(n1,n2)<<endl;
cout<<"Producto= "<<multiplica(n1,n2)<<endl;
cout<<"Division= "<<division(n1,n2)<<endl;
}
//Implementacin de funciones
float suma(float a,float b)
{
return a+b;
}
float resta(float a, float b)
{
return a-b;
}
float multiplica(float a, float b)
{
return a*b;
}
float division(float m, float n)
{
return m/n;
}

:::206:::

Maria M. Lima Quispe

ALGORITMOS Y PROGRAMACIN ESTRUCTURADA EN C++

4. Operaciones bsicas de dos nmeros con men y funciones


#include<iostream.h>
//declaracin de prototipos
float suma(float,float);
float resta(float,float);
float multiplica(float,float);
float division(float,float);
void imprimemenu();
void calcula();
void main()
{
imprimemenu();
calcula();
}
//Implementacin de funciones
float suma(float a,float b)
{
return a+b;
}
float resta(float a, float b)
{
return a-b;
}
float multiplica(float a, float b)
{
return a*b;
}
float division(float m, float n)
{
return m/n;
}
void imprimemenu()
{
cout<<"********************"<<endl;
cout<<"[S] Suma
"<<endl;
cout<<"[R] Resta
"<<endl;
cout<<"[M] Multiplicacion "<<endl;
cout<<"[D] Division
"<<endl;
cout<<"[X] Salir
"<<endl;
cout<<"********************"<<endl;
}

Lilian M. Benique Ruelas

:::207:::

ALGORITMOS Y PROGRAMACIN ESTRUCTURADA EN C++

void calcula()
{
float n1,n2;
char opc;
do{
cout<<"Ingrese opcion: ";cin>>opc;
if(opc == 'X')
{
break;
}
else
{
cout<<"Ingrese n1: ";cin>>n1;
cout<<"Ingrese n2: ";cin>>n2;
switch(opc)
{
case 'S':cout<<suma(n1,n2)<<endl;break;
case 'R':cout<<resta(n1,n2)<<endl;break;
case 'M':cout<<multiplica(n1,n2)<<endl;break;
case 'D':cout<<division(n1,n2)<<endl;break;
case 'X':break;
}
}
imprimemenu();
}while(opc!='X');
}

:::208:::

Maria M. Lima Quispe