Вы находитесь на странице: 1из 78

Programacin I Ing.

Melvin Caras Ciclo 02-2014


1
QU ES UN ALGORITMO?
Es el conjunto ordenado y finito de operaciones que permite hallar la solucin de un problema.
La palabra algoritmo procede del matemtico rabe Mohamed Ibn Al Kow Rizmi, el cual escribi
sobre los aos 800 y 825 su obra Quitad Al Mugabala, donde se recoga el sistema de
numeracin hind y el concepto del cero. Fibonacci, tradujo la obra al latn y la llam: Algoritmi
Dicit.
2014. Un algoritmo es un mtodo para resolver un problema mediante una serie de pasos
precisos, definidos y finitos.

Caractersticas del Algoritmo
Un algoritmo debe resolver el problema para el que fue formulado. Lgicamente no sirve un
algoritmo que no resuelve ese problema. En el caso de los programadores, a veces crean
algoritmos que resuelven problemas diferentes al planteado.
Los algoritmos son independientes del ordenador. Los algoritmos se escriben para poder ser
utilizados en cualquier mquina.
Los algoritmos deben de ser precisos. Los resultados de los clculos deben de ser exactos, de
manera rigurosa. No es vlido un algoritmo que slo aproxime la solucin.
Los algoritmos deben de ser finitos. Deben de finalizar en algn momento. No es un algoritmo
vlido aquel que produce situaciones en las que el algoritmo no termina.
Los algoritmos deben de poder repetirse. Deben de permitir su ejecucin las veces que haga
falta. No son vlidos los que tras ejecutarse una vez ya no pueden volver a hacerlo por la
razn que sea.

Algunos ejemplos de algoritmos:
Ver una pelcula.
1. Buscar el video de la pelcula.
2. Si el televisor y la video-casetera se
encuentran apagados, encenderlos.
3. Sacar el video del estuche.
4. Introducirlo en la video-casetera.
5. Tomar el control del televisor y del video.
6. Dirigirme al sof.
7. Ponerme cmodo
8. Ajustar el volumen.
9. Disfrutar la pelcula

Cocinar arroz.
1. Lavar bien el arroz.
2. Buscar un recipiente de tamao adecuado.
3. Agregar el agua necesaria de acuerdo a la
cantidad de arroz.
4. Agregar aceite, sal, cebolla, ajo.
5. Colocar el recipiente en la cocina.
6. Encender la hornilla.
7. Esperar a que hierva el agua.
8. Agregar el arroz al agua hirviendo.
9. Dejar el recipiente en el fuego hasta que el
arroz este blando.
10. Apagar la hornilla.
11. Servir.
12. Comer. Buen provecho!!

Los algoritmos se pueden expresar por frmulas, diagramas de flujo, y pseudocdigos conocidos
como herramientas de programacin. Est ltima representacin es la ms utilizada por su
sencillez y parecido a el lenguaje humano.

Programacin I Ing. Melvin Caras Ciclo 02-2014
2
Elementos que conforman un algoritmo
Entrada. Los datos inciales que posee el algoritmo antes de ejecutarse.
Informacion dada al algoritmo
Proceso.Acciones que lleva a cabo el algoritmo.(Frmulas)
Operaciones o clculos necesarios para encontrar la solucin del problema.
Salida. Datos que obtiene finalmente el algoritmo.
Respuestas dadas por el algoritmo o resultados finales de los clculos.

Como por ejemplo imagine que desea desarrollar un algoritmo que calcule la superficie de un
rectngulo proporcionndole su base y altura. Lo primero que deber hacer es plantearse y
contestar a la siguientes preguntas:
Especificaciones de entrada
Qu datos son de entrada?
Cuntos datos se introduciran?
Cuntos son datos de entrada validos?
Especificaciones de salida
Cules son los datos de salida?
Cuntos datos de salida se produciran?
Qu precisin tensdran los resultados?

Otros ejemplos de algoritmos:
a) Para calcular la nomina de unos empleados se utilizan las horas trabajadas y el salario por
hora. Ambos datos se multiplican y se obtiene el salario bruto. A ese salario bruto se le restan
las deducciones y se obtiene el salario neto.
Algoritmo
1. Entrar horas trabajadas
2. Entrar salario por hora
3. Multiplicar las horas trabajadas por el salario por hora
4. Obtenga el salario bruto
5. Le restamos al salario bruto las deducciones y obtengo el salario neto
6. Presentar el salario neto
b) En una empresa de ventas, cada vendedor tiene su salario particular. Adicional se le otorga
un 10% de las ventas que realice en la quincena (una comisin). Cada quincena su cheque
incluye su salario ms la comisin que se gano por sus ventas.
Algoritmo
1. Se entra el salario del vendedor
2. Se entran sus ventas para la quincena
3. Se calcula la comisin , multiplicando ventas * 0.10
4. Se suma su salario a la comisin calculada para obtener su salario final

El lenguaje algortmico debe ser independiente de cualquier lenguaje de programacin
particular, pero fcilmente traducible a cada uno de ellos. Para alcanzar objetivos de

Programacin I Ing. Melvin Caras Ciclo 02-2014
3
aprendizaje es necesario conocer por lo menos uno de los mtodos para la representacin de
algoritmos, tales como los diagramas de flujo diagramas Nassi-Schneiderman .

Representacin grfica de algoritmos.
Diagramas de Flujo.
on la representacin grfica de la solucin algortmica de un problema. Para disearlos se
utilizan determinados smbolos o figuras que representan una accin dentro del
procedimiento. Utilizan unos smbolos normalizados, con los pasos del algoritmo escritos
en el smbolo adecuado y los smbolos unidos con flechas, denominadas lneas de flujo, que
indican el orden en que los pasos deben ser ejecutados.
Para su elaboracin se siguen ciertas reglas:
Se escribe de arriba hacia abajo y de izquierda a derecha
Siempre se usan flechas verticales u horizontales, jams curvas
Evitar cruce de flujos
En cada paso expresar una accin concreta
Secuencia de flujo normal en una solucin de problema
Tiene un inicio
Una lectura o entrada de datos
El proceso de datos
Una salida de informacin
Un final
Simbologa para disear flujogramas.


S

Programacin I Ing. Melvin Caras Ciclo 02-2014
4
D
Ejercicios de la clase:
1. Calcular la temperatura promedio del da de hoy, teniendo
la temperatura mnima y la mxima.
2. Calcular el promedio de las 4 notas de Programacin I para
el primer periodo.
3. Conversin de pies a pulgadas, sabiendo 1 pulgada es
igual a 12 pies.
4. Calcular la suma y la multiplicacin de tres nmeros enteros.
5. Calcular el pago total de una prenda de un almacn
sabiendo de antemano que posee un 15% de descuento.
(Almacenes Simn)





Tipos de Datos
Los diferentes objetos de informacin con los que un programa trabaja se denominan datos.
Todos los datos tienen un tipo asociados con ellos que nos servir para poder conocer con que
informacin trabajaremos. Es decir, cuando ingresemos el sueldo de un trabajador necesitamos
que este contenga decimales, o al solicitar la edad de una persona est tiene que estar con
nmeros enteros, etc.. Adems la suma entre caracteres no tiene sentido.
La asignacin de tipos a los datos tiene dos objetivos principales:
Detectar errores de operaciones aritmticas en los programas
Determinar cmo ejecutar las operaciones
Tipos de Datos Comunes. Estos son los tipos de datos ms utilizados en los lenguajes de
programacin:
Numricos, Caracteres y Lgicos

Tipos Numricos
Dentro de estos tipos se
puede hacer mencin de los
tipos enteros, reales o de
coma flotante y de los
exponenciales.

Tipos Carcter
Los tipos carcter se dividen
tambin en caracteres ASCII,
como por ejemplo: a A & * ,
etc..
El otro grupo de caracteres
son los strings o cadenas de
caracteres, como por
ejemplo: "Hola Mundo".
Tipos Lgicos
Los tipos lgicos solamente
pueden tomar los valores
verdadero o falso.





Programacin I Ing. Melvin Caras Ciclo 02-2014
5
Identificadores
Representan los nombres de los objetos de un programa (constantes, variables, tipos de datos,
procedimientos, funciones, etc.).
Es una secuencia de caracteres que puede ser de cualquier longitud, aunque tiene ciertas reglas
que hay que seguir, las cuales son:
1. Debe comenzar con una letra o "_" y no puede contener espacios en blanco.
2. Letras, dgitos y caracteres subrayados ("_") estn permitidos despus del primer carcter.
En sntesis un identificador es un mtodo para nombrar a las celdas de memoria en la
computadora, en lugar de memorizarnos una direccin de memoria. Se utilizan para nombrar
variables, constantes, procedimientos y funciones.

Constantes
Las constantes son valores que no pueden
cambiar en la ejecucin del programa. Recibe
un valor en el momento de la compilacin del
programa y este no puede ser modificado.

Variables
Las variables son valores que se pueden
modificar durante la ejecucin de un
programa. Al contrario de las constantes stos
reciben un valor, pero este valor puede ser
modificado durante la ejecucin o la
compilacin del programa.

Sentencia de Asignacin
Se utiliza para asignar o almacenar valores a variables o constantes. Es una operacin que sita
un valor determinado en una posicin de memoria. Se demuestra en pseudocdigo con el
smbolo <- (Una flecha apuntando hacia el identificador, donde se desea guardar el valor.).
variable <- expresin
El tipo de expresin debe ser del mismo tipo que el de la variable, en caso contrario en la fase
de compilacin se producira un error de tipos. Aunque a la fecha existen lenguajes de
programacin con una potente herramienta para la conversin de datos (tal es el caso de Visual
Basic), no es recomendable asignar valores de un tipo diferente a variables de otro tipo.
Reglas de Asignacin
1. Una variable en el lado derecho de una sentencia de asignacin debe tener un valor antes
de que la sentencia de asignacin se ejecute. Hasta que un programa le da un valor a una
variable, esa variable no tiene valor. Por ejemplo:
Si x no tiene un valor antes de ejecutar y <- x+1, se producir un error lgico.
2. En la izquierda de una sentencia de asignacin solo pueden existir variables. Por
consiguiente no es vlido lo siguiente:
Valor_Neto - Tasas <- 34015.

Adems hay que recordar que la operacin de asignacin es una operacin destructiva debido
a que el valor almacenado en una variable se pierde o se destruye y se sustituye por el nuevo
valor en la sentencia de asignacin.




Programacin I Ing. Melvin Caras Ciclo 02-2014
6
Operadores utilizados en Programacin
En todos los lenguajes de programacin se utilizan operadores para efectuar operaciones
aritmticas. Combinando las variables y constantes en expresiones aritmticas por medio de
funciones adecuadas.

Una expresin es un conjunto de datos o funciones unidos por operadores aritmticos, los cuales
se muestran en la siguiente tabla:
Operador Significado
+ Suma
- Resta
* Multiplicacin
/ Divisin
^ Exponenciacin
Mod Mdulo

Operadores Lgicos
En ocasiones en los programas se necesitan realizar comparaciones entre distintos valores,
esto se realiza utilizando los operadores relaciones, los cuales se listan a continuacin:
Operador Significado
< Menor que
> Mayor que
<= Menor o igual que
>= Mayor o igual que
= Igual a
<> Distinto a, diferente de

Variables y Constantes
Un programa necesita una manera de grabar los datos que usa. Las variables y constantes
ofrecen varias maneras para representar y manipular los datos.
Qu es una variable?
En C++ una variable es un espacio para guardar informacin. Una variable es una ubicacin
en la memoria de la computadora en la cual se puede grabar un valor y por la cual se puede
recuperar ese valor ms tarde. La memoria de la computadora puede ser vista como una serie
de pequeas casillas. Cada casilla es una de muchas que se encuentran alineadas es una
ubicacin de memoria, que esta numerada secuencialmente. Estos nmeros son conocidos como
direcciones de memoria. Una variable reserva uno o ms casillas en las cuales es posible grabar
datos. Los nombres de las variables (por ejemplo, myVariable) es una etiqueta en una sola
casilla, para que se pueda encontrarla fcilmente sin saber su actual direccin de memoria.



Programacin I Ing. Melvin Caras Ciclo 02-2014
7


RAM es la memoria de acceso aleatorio. Una programa cuando es ejecutado
o esta corriendo, es grabado temporalmente en la memorira RAM. Todas las
variables, son tambin, creadas en la memoria RAM. Cuando los
programadores hablan de memoria, generalmente se estn refiriendo a la
memoria RAM.

Reservando Memoria
Cuando se define una variable en C++, se debe de especificar al compilador que clase de
variable es: un entero (int), un caracter (char), etc. Esta informacin le dice al compilador cuanto
de espacio debe separar o reservar, y que tipo de valor se va a guardar en la variable. Cada
casilla de memoria tiene un byte de capacidad. Si el tipo de variable que se crea es de dos
bytes te tamao, este necesita de dos bytes de memoria, o de dos casillas. El tipo de variable
(por ejemplo, entero) le dice al compilador cuanta memoria (o cuantas casillas) tiene que reservar
para la variable. Porque las computadores usan los bits y los bytes para representar los valores,
y porque la memoria es medida en bytes, es importante entender y sentirse cmodo con este
concepto.

Definir una Variable
Se crea o se define una variable manifestando su tipo, seguida de uno o ms espacios, y seguida
del nombre de la variable y luego punto y coma. El nombre de la variable puede ser virtualmente
cualquier combinacin de letras, pero que no pueden contener espacios. Variables aceptadas
son: x, jap007, miedad. Los nombre buenos de variables nos dice para que la variable es
utilizada, usando buenos nombres se nos hace ms fcil la compresin del programa. La
siguiente sentencia define una variable entera llamada miedad. int miedad;
Como practica general de programacin, evitar los nombres horrorificos como j23qrs, y
restringir los nombres de variables de una sola letra como x y, para valores que sean de uso
rpido y no perduren en todo el programa. Se debe tratar de usar nombres extensos como
miedad o contador. Algunos nombres con fciles de entender tres semanas despus en lugar de
romperse la cabeza imaginndose que significan nombres cortos.

Palabras reservadas:
Tienen un significado predeterminado para el compilador y slo pueden ser usadas con dicho
sentido. En C++ se escriben siempre con minsculas.



Programacin I Ing. Melvin Caras Ciclo 02-2014
8
Tipos de datos
En la siguiente tabla se muestran los tipos bsicos con los que se cuenta C y C++:
Tipo Palabra reservada
Disponible
C C++
Lgico Bool No Si
Carcter Char Si Si
Entero Int Si Si
Coma flotante Float Si Si
Coma flotante doble double Si Si
Sin valor Void Si Si

ESTRUCTURA GENERAL DE UN PROGRAMA EN C++

// Declaracin de libreras
#include <iostream>
using namespace std;

main()
{
// Inicio de funcin main

// Declaracin de variables
int x;
int y;
float r;
double f;

// Desarrollo de operaciones de
entrada, proceso y salida de datos

system(pause);
return (0);
}
// Cierre de la funcin main





C++ distingue entre letras maysculas y minsculas, por lo que a
efectos del programa sern identificadores distintos hola, Hola y
hola.




Cabecera de programa


Declaracin de variables

Programa Principal

Cuerpo del Programa

Programacin I Ing. Melvin Caras Ciclo 02-2014
9
Las cabeceras del programa:
Son indispensables para programar en C++ ya que en ellas se encuentran todas las funciones
de E/S, procedimiento de datos, como cadenas, etc. Sin dichos includes nuestro programa ni
siquiera compilara.
Por ejemplo:
#include<iostream>
#include<iomanip.h>
#include<math.h>
#include<string.h>

Programa Principal:
El compilador de C++ reconoce el procedimiento principal del programa con la palabra
reservada main(), dentro de este procedimiento se declaran las variables locales, constantes
locales, etc.

Declaracin de variables.
En C++ una variable es una posicin con nombre en memoria, donde se almacena un valor de
un cierto tipo de datos y puede ser modificado. Las variables pueden almacenar todo tipo de
datos: cadenas, nmeros, etc. Una constante, por el contrario, es un variable cuyo valor no
puede ser modificado.
Por ejemplo:
int edad;
float precio;
float nota4;
char nombre[25]; para escribir corchetes su cdigo ascii es ALT+91 y ALT+93
char direcc[50];
double total;
double sumatoria;

Comentarios en C++.
Un programador coloca comentario en determinada ubicacin del programa para hacer
referencia a la accin que realiza dicho cdigo, para as poder manipular mejor los errores que
puedan producirse.

Los comentarios de C siguen siendo vlidos en C++.
Por ejemplo: /* Esto es un comentario */
C++ define adems otra forma de comentar una lnea. Un comentario comienza con //, y
contina hasta el final de esa lnea, donde termina automticamente:
// Esto es un comentario



Programacin I Ing. Melvin Caras Ciclo 02-2014
10
EJEMPLO DE UN PROGRAMA SECUENCIAL EN C++

EJEMPLO1: Programa en C++ que nos permite sumar 2 numeros enteros.

1 #include<iostream> // librera de declaraciones como E/S
2
using namespace std;
3
// Las lneas "#include <iostream>" y "using namespace std;" son necesarias porque las
4
// declaraciones que permiten el acceso a "cout" y "cin" estn en una librera externa
5
main()
6
{
7
int num1;
8
int num2;
9
int x;
10
cout<<"\nDigitar un primer nmero entero positivo: ";
11
cin>>num1;
12
cout<<"\nDigitar un segundo numero entero positivo: ";
13
cin>>num2;
14
x=(num1 + num2);
15
cout<<"\nEl resultado de la suma es:" <<x;
16
cout<<"\n";
17
system("pause");
18
// Nos sirve para detener la pantalla y poder ver los resultados.
19 return(0); // "return" es una palabra reservada, propia de C y C++.
20 } //fin del main

Ventana de la ejecucin del programa:




Programacin I Ing. Melvin Caras Ciclo 02-2014
11
EJEMPLO2: Programa que nos permite encontrar el valor de la hipotenusa de un triangulo.

1 #include<iostream>
2 #include<math.h>
3 using namespace std;
4 main()
5 {
6 int lado1;
7 int lado2;
8 double x;
9 double y;
10 double z;
11 double h;
12 cout<<"\nDigitar el valor del lado izquierdo:";
13 cin>>lado1;
14 cout<<"\nDigitar el valor del lado derecho:";
15 cin>>lado2;
16 x = pow(lado1,2); // formula de exponenciacin
17 y = pow(lado2,2);
18 z = x + y;
19 h = pow(z,0.5); // frmula para tener una raiz cuadrada
20 cout<<"\nLa hipotenusa tiene el valor de:"<<h;
21 cout<<"\n";
22 system("pause");
23 return(0);
24 }

Ventana de la ejecucin del programa:





Programacin I Ing. Melvin Caras Ciclo 02-2014
12
EJEMPLO3: Programa que nos permite encontrar el promedio de notas de un estudiante de un
colegio.

1 #include<iostream>
2 using namespace std;
3 main()
4 {
5 char nomb[15];
6 char ap[15];
7 float nota1,nota2,nota3,prom;
8 cout<<"\nDigitar el nombre del estudiante:";
9 cin>>nomb;
10 cout<<"\nDigitar el apellido del estudiante:";
11 cin>>ap;
12 cout<<"\nDigitar la nota de laboratorio:";
13 cin>>nota1;
14 cout<<"\nDigitar la nota de la tarea:";
15 cin>>nota2;
16 cout<<"\nDigitar la nota del examen:";
17 cin>>nota3;
18 prom = (nota1 + nota2 + nota3)/3;
19 cout<<"\nEl estudiante es:"<<nomb<<" "<<ap;
20 cout<<"\n";
21 cout<<"\n---------------------------------";
22 cout<<"\nSu promedio final es:"<<prom;
23 cout<<"\n\n";
24 system("pause");
25 return(0);
26 }











Programacin I Ing. Melvin Caras Ciclo 02-2014
13
EJEMPLO4: Programa que nos permite encontrar el valor del rea de un triangulo.

1 #include<iostream>
2 using namespace std;
3 main()
4 {
5 int base,altura,area;
6 cout<<"\nDigitar el valor de la base:";
7 cin>>base;
8 cout<<"\nDigitar el valor de la altura:";
9 cin>>altura;
10 area = base * altura;
11 cout<<"\n---------------------------------------------------";
12 cout<<"\nEl valor del rea del triangulo es:"<<area;
13 cout<<"\n";
14 system("pause");
15 return(0);
16 }





Aqu se me olvido digitar un numero entero y digite un numero con decimal, asi que necesito
cambiar de INT a FLOAT. Al cambiar el tipo de dato en las variables tenemos:



Programacin I Ing. Melvin Caras Ciclo 02-2014
14
Manejo de constantes en un programa.

Programa que permite encontrar el area y la longuitud de un circulo

1 #include<iostream>
2 #include<math.h>
3 using namespace std;
4 main()
5 {
6 #define pi 3.14156
7 int radio;
8 double area,longuitud,h;
9 cout<<"\nDigitar el valor del radio del circulo: ";
10 cin>>radio;
11 h = pow(radio,2);
12 area = pi*h;
13 longuitud = (2*pi*radio);
14 cout<<"\n---------------------------------------------";
15 cout<<"\nEl valor del area del circulo es:" <<area;
16 cout<<"\n";
17 cout<<"\nEl valor de la longuitud del circulo es:" <<longuitud;
18 cout<<"\n";
19 system("pause");
20 return (0);
21 }






Programacin I Ing. Melvin Caras Ciclo 02-2014
15
EJERCICIOS PARA ERRORES



1 #include<iostream>
2 using namespace std;
3 int main()
4 {
5 int n1, n2;
6 double a,b,c,d;
7 cout<<"\nDigitar el valor del primer nmero:"
8 cin>>n1;
9 cout<<"\nDigitar el valor del segundo numero:";
10 cin>>n3;
11 a = pow(n1,2);
12 b = pow(n2,);
13 c = pow(n1,0.5);
14 d = pow(n2,0.5);
15 cout<<"\n---------------------------------------------------";
16 cout>>"\nEl valor del primer nmero al cuadrado es:"<<a<<" y su raiz es:"<<c;
17 cout<<"\n";
18 cout<<"\nEl valor del segundo numero al cuadrado es:"<<b<<" y su raiz es:"<<d;
19 cout<<"\n";
20 system("pause");
21 return(0);
22 }

ERRORES:
1. en la linea 8
2. en la linea 10
3. en la linea 11
4. en la linea 12
5. en la linea 16



Programacin I Ing. Melvin Caras Ciclo 02-2014
16
CORREGIENDO NOS QUEDA ASI:

1 #include<iostream>
2 #include<math.h>
3 using namespace std;
4 main()
5 {
6 int n1,n2;
7 double a,b,c,d;
8 cout<<"\nDigitar el valor del primer nmero:";
9 cin>>n1;
10 cout<<"\nDigitar el valor del segundo numero:";
11 cin>>n2;
12 a = pow(n1,2);
13 b = pow(n2,2);
14 c = pow(n1,0.5);
15 d = pow(n2,0.5);
16 cout<<"\n---------------------------------------------------";
17 cout<<"\nEl valor del primer nmero al cuadrado es:"<<a<<" y su raiz es:"<<c;
18 cout<<"\n";
19 cout<<"\nEl valor del segundo numero al cuadrado es:"<<b<<" y su raiz es:"<<d;
20 cout<<"\n";
21 system("pause");
22 return(0);
23 }














Programacin I Ing. Melvin Caras Ciclo 02-2014
17
ESTRUCTURAS DE DECISION CONDICIONALES
Las estructuras condicionales comparan una variable contra otro(s)valor (es), para que en base
al resultado de esta comparacin, se siga un curso de accin dentro del programa. Cabe
mencionar que la comparacin se puede hacer contra otra variable o contra una constante,
segn se necesite. Existen tres tipos bsicos, las simples, las dobles y las mltiples.

Simples: Las estructuras condicionales simples se les conocen como Tomas de decisin. Estas
tomas de decisin tienen la siguiente forma:
Pseudocdigo: Diagrama de flujo:


Dobles: Las estructuras condicionales dobles permiten elegir entre dos opciones o alternativas
posibles en funcin del cumplimiento o no de una determinada condicin. Se representa de la
siguiente forma:
Pseudocdigo: Diagrama de flujo:


Donde:
Si: Indica el comando de comparacin
Condicin: Indica la condicin a evaluar
Entonces: Precede a las acciones a realizar cuando se cumple la condicin
Instruccin(es): Son las acciones a realizar cuando se cumple o no la condicin
si no: Precede a las acciones a realizar cuando no se cumple la condicin.
Dependiendo de si la comparacin es cierta o falsa, se pueden
realizar una o ms acciones.

Programacin I Ing. Melvin Caras Ciclo 02-2014
18
Mltiples:
Las estructuras de comparacin mltiples, son tomas de decisin especializadas que permiten
comparar una variable contra distintos posibles resultados, ejecutando para cada caso una serie
de instrucciones especficas. La forma comn es la siguiente:
Pseudocdigo: Diagrama de flujo:



Operadores Aritmticos.
C++ reconoce los siguientes operadores aritmticos:
Operador Operacin
+ SUMA
- RESTA
* MULTIPLICACION
/ DIVISION
% MODULO O RESIDUO



Programacin I Ing. Melvin Caras Ciclo 02-2014
19
Operadores Relacinales.
Se utilizan para establecer una relacin entre dos valores.
Compara estos valores entre si y esta comparacin produce un resultado de certeza o
falsedad (verdadero o falso).
Los operadores relacinales comparan valores del mismo tipo (numricos o cadenas)
Tienen el mismo nivel de prioridad en su evaluacin.
Los operadores relacinales tiene menor prioridad que los aritmticos.

Operador Significado Ejemplo
== ( Ojo , no =) Igual a a == b
> Mayor que a > b
< Menor que a < b
!= No igual a a != b
>= Mayor o igual a >= b
<= Menor o igual a <= b


Operadores Lgicos.
Los operadores lgicos se utilizan con expresiones para devolver un valor verdadero o falso
(true o false). Se denominan tambin operadores booleanos.
Los operadores lgicos de C++ son: not (!), and (&&) y or (||).
El operador not produce falso si su operando es verdadero, y viceversa.
El operador and produce verdadero slo si ambos operandos son verdaderos; si
cualquiera de los operando es falso, produce falso.
El operador or produce verdadero si cualquiera de los operandos es verdadero, y falso
en caso de que los dos operandos sean falsos. Ejemplos:



Programacin I Ing. Melvin Caras Ciclo 02-2014
20
EJEMPLO1:
Realizar un programa que permita dar el resultado si una pesona es menor de edad,
preguntando su ao de nacimiento y el ao actual.

1 #include<iostream>
2 using namespace std;
3 main()
4 {
5 int nac, hoy, edad;
6 cout<< "\nDigitar el ao de nacimiento:";
7 cin>> nac;
8 cout<< "\nDigitar el ao actual:";
9 cin>> hoy;
10 edad = hoy - nac;
11 if (edad < 18) {
12 cout<< "\nEs menor de edad"; }
13 cout<< "\n\n\n";
14 cout<<"\n----->Fin del programa";
15 system("pause");
16 return(0);
17 }











Programacin I Ing. Melvin Caras Ciclo 02-2014
21
EJEMPLO2:
Realizar un programa que permita digitar un numero entero y me de como resultado si es PAR.

1 #include<iostream>
2 using namespace std;
3 main()
4 {
5 int num, x;
6 cout<< "\nDigitar un numero entero positivo:";
7 cin>> num;
8 x = (num%2); // utilizando de la funcin modulo
9 if (x==0)
10 {
11 cout<<"\n---------------------------------------";
12 cout<< "\nEl numero "<<num<<" es par";
13 }
14 cout<< "\n\n\n\n";
15 cout<<"\n----->Fin del programa";
16 system("pause");
17 return(0);
18 }
Nombre de archivo: Ejemplo10_clase2.cpp










Programacin I Ing. Melvin Caras Ciclo 02-2014
22
EJEMPLO3:
Realizar un programa que permita digitar un numero entero y me de como resultado si es
PAR IMPAR.

1 #include<iostream>
2 using namespace std;
3 main()
4 {
5 int num, x;
6 cout<< "\nDigitar un numero entero positivo:";
7 cin>> num;
8 x = (num%2); // utilizando de la funcin modulo
9 if (x==0)
10 {
11 cout<<"\n---------------------------------------";
12 cout<< "\nEl numero "<<num<<" es par";
13 }
14 else {
15 cout<<"\n---------------------------------------";
16 cout<< "\nEl numero "<<num<<" es impar";
17 }
18 cout<< "\n\n\n\n";
19 cout<<"\n----->Fin del programa";
20 system("pause");
21 return(0);
22 }












verdadero
falso

Programacin I Ing. Melvin Caras Ciclo 02-2014
23
EJEMPLO4:
Realizar un programa que permita saber cuales el numero mayor entre 2 numeros enteros.

1 #include<iostream>
2 using namespace std;
3 main()
4 {
5 int X, Y;
6 cout<< "\nDigitar el primer nmero:";
7 cin>> X;
8 cout<< "\nDigitar el segundo numero:";
9 cin>> Y;
10 if (X>Y)
11 {
12 cout<<"\n---------------------------------------";
13 cout<< "\nEl numero " <<X <<" es mayor que " <<Y;
14 }
15 else
16 {
17 cout<<"\n---------------------------------------";
18 cout<< "\nEl numero " <<Y <<" es mayor que " <<X;
19 }
20 cout<< "\n\n\n";
21 cout<<"\n----->Fin del programa";
22 system("pause");
23 return(0);
24 }
Nombre de archivo: Ejemplo12_clase2.cpp







Programacin I Ing. Melvin Caras Ciclo 02-2014
24
EJEMPLO5:
Realice un programa que solicite el nombre de una persona, su edad y su sexo si el sexo es
masculino que muestre en pantalla el mensaje de El Sr. (nombre) ha sido registrado" y si el
sexo es femenino que muestre el mensaje "La Sra. (nombre) ha sido registrada".
1 #include<iostream>
2 using namespace std;
3 main()
4 {
5 char nombre[15];
6 int edad;
7 char sexo;
8 cout<< "\nDigitar su nombre:";
9 cin>> nombre;
10 cout<< "\nDigitar su edad:";
11 cin>> edad;
12 cout<< "\nDigitar su sexo ( Hombre=M y Mujer=F):";
13 cin>> sexo;
14 if (sexo=='M' || sexo=='m')
15 { cout<< "\nEl Sr. " <<nombre <<" ha sido registrado";
16 }
17 else {
18 cout<< "\nLa Sra. " <<nombre <<" ha sido registrada";
19 }
20 cout<< "\n\n\n";
21 cout<<"\n----->Fin del programa";
22 system("pause");
23 return(0);
24 }





Programacin I Ing. Melvin Caras Ciclo 02-2014
25
EJEMPLO6: Dados 2 nmeros cualesquiera dentro de un programa, que se calcule y se
despliegue su suma, resta, producto y divisin del primero entre el segundo, utilizando un men

1 #include<iostream>
2 using namespace std;
3 main()
4 {
5 int X, Y, resp, opcion;
6 cout<< "\nDigitar el primer nmero::";
7 cin>> X;
8 cout<< "\nDigitar el segundo numero::";
9 cin>> Y;
10 cout<< "\nMenu Principal:";
11 cout<< "\n1. Sumar:";
12 cout<< "\n2. Restar:";
13 cout<< "\n3. Multiplicar:";
14 cout<< "\n4. Division:";
15 cout<< "\nEscoga su opcion(1-4): --> ";
16 cin>> opcion;
17 if (opcion==1)
18 {resp=X+Y;
19 cout<< "\nEl resultado es " <<resp;}
20 else if (opcion==2)
21 {resp=X-Y;
22 cout<< "\nEl resultado es " <<resp; }
23 else if (opcion==3)
24 {resp=X*Y;
25 cout<< "\nEl resultado es " <<resp;}
26 else if (opcion==4)
27 {resp=X/Y;
28 cout<< "\nEl resultado es " <<resp;}
29 else {
30 cout<< "\nOpcion invalida";}
31 cout<< "\n\n\n";
32 cout<<"\n----->Fin del programa";
33 system("pause");
34 return(0);
35 }

Programacin I Ing. Melvin Caras Ciclo 02-2014
26









Programacin I Ing. Melvin Caras Ciclo 02-2014
27
ESTRUCTURAS DE SELECCIN MULTIPLE
( SWITCH CASE )

Para desarrollar estructuras de seleccin mltiple en C++, se
utiliza la sente ncia SWITCH. Esta selecciona elementos de un
conjunto de valores de tipo entero, cada CASE puede
delimitarse con un BREAK, si no se delimita se continua en el
siguiente case.


Una de las aplicaciones ms tiles de la sentencia
SWITCH es el uso de un men.


En esta aplicacin, dependiendo de la seleccin del usuario, es posible escoger entre diversas
funciones a ser ejecutadas, como se mostrara posteriormente a travs de un ejercicio.

DEFINICION.
La instruccin SWITCH consiste en una serie de etiquetas CASE y un caso opcional
DEFAULT.
La palabra reservada SWITCH es seguida por el nombre de la variable OPCION, la
cual se encuentra entre parntesis. A esta se le llama EXPRESION DE CONTROL. El
valor de esta expresin se compara con cada una de las etiquetas CASE. Adems existe
una instruccin BREAK, al final de cada CASE, ocasiona que el control salga
inmediatamente de la instruccin SWITCH.
Si no se encuentran constantes iguales a la variable, se ejecutaran las instrucciones del
DEFAULT, aunque el default es opcional.

RECORDAR.
En programas que exigen evaluar muchas condiciones a la vez
como puede ser un programa de men, utilizar IF es muy largo y
complicado
El cdigo puede ser muy difcil de seguir y adems confuso, por
esta razn C++ incorpora una instruccin de decisin mltiple, la
instruccin SWITCH
En esta instruccin el computador prueba una variable sucesivamente contra una lista de
constantes INT (entera) o CHAR (carcter), despus que encuentra el valor de igualdad
con la variable, el computador ejecuta las instrucciones que est asociada a la constante.
Las instrucciones pueden ser simples, es decir una sola o compuesta, es decir todo un
grupo o un programa completo, no olvidar terminar cada CASE con un BREAK.


Programacin I Ing. Melvin Caras Ciclo 02-2014
28
REPRESENTACION GRAFICA DE LA INSTRUCCIN SWITCH CASE
Leer
Opcion
Opcion
Procesos 1 Procesos 2 Procesos 3 Procesos 4 Default


EJEMPLO 1:
Dadas como dato la categora y el sueldo de un trabajador, calcule el aumento correspondiente
teniendo en cuenta la siguiente tabla. Imprimir su nuevo sueldo.

CATEGORIA AUMENTO
A 16%
B 13%
C 9%
D 7%




Programacin I Ing. Melvin Caras Ciclo 02-2014
29
1 #include<iostream>
2 using namespace std;
3 main()
4 {
5 int opcion;
6 float sueldo, desc, total;
7 cout<<"\nDigitar el sueldo base del trabajador: $";
8 cin>>sueldo;
9 cout<<"\nMENU PRINCIPAL DE DESCUENTOS POR CATEGORIA:";
10 cout<< "\n";
11 cout <<"\n 1) Categoria I";
12 cout <<"\n 2) Categoria II";
13 cout <<"\n 3) Categoria III";
14 cout <<"\n 4) Categoria IV";
15 cout<< "\n";
16 cout<<"\nDigitar la opcion deseada (1..4):";
17 cin>>opcion;
18 switch (opcion)
19 {
20 case 1:
21 desc=sueldo*0.16;
22 total=sueldo-desc;
23 cout<<"\nEl nuevo sueldo del trabajador es: $"<<total;
24 break;
25 case 2:
26 desc=sueldo*0.13;
27 total=sueldo-desc;
28 cout<<"\nEl nuevo sueldo del trabajador es: $"<<total;
29 break;
30 case 3:
31 desc=sueldo*0.09;
32 total=sueldo-desc;
33 cout<<"\nEl nuevo sueldo del trabajador es: $"<<total;
34 break;
35 case 4:
36 desc=sueldo*0.07;
37 total=sueldo-desc;

Programacin I Ing. Melvin Caras Ciclo 02-2014
30
38 cout<<"\nEl nuevo sueldo del trabajador es: $"<<total;
39 break;
40 default:
41 cout<<"\nSe ha equivocado de opcion, solo acepta[1..4]";
42 }
43 cout<<"\n-->Fin del programa";
44 system("pause");
45 return(0);
46 }












Programacin I Ing. Melvin Caras Ciclo 02-2014
31
EJEMPLO2: Dados como datos 2 variables de tipo entero, obtenga el resultado de la siguiente
funcin:

Val = 100*v, si num = 1
Val = 100**v, si num = 2
F(x)= Val = 100 / v, si num = 3
Val = 0, para cualquier otro valor de num

1 #include<iostream>
2 #include<math.h>
3 using namespace std;
4 main()
5 {
6 int opcion;
7 int v;
8 double VAL;
9 cout<<"\nDigitar el valor de la variable v:";
10 cin>>v;
11 cout<<"\nMENU PRINCIPAL DE LA FUNCION F(X)";
12 cout<< "\n";
13 cout <<"\n 1) val=100*v";
14 cout <<"\n 2) val=100**v";
15 cout <<"\n 3) val=100/v";
16 cout<< "\n";
17 cout<<"\nDigitar la opcion deseada (1..3):";
18 cin>>opcion;
19 switch (opcion)
20 {
21 case 1:
22 VAL=100*v;
23 cout<<"\nEl resultado de la funcion es:"<<VAL;
24 break;
25 case 2:
26 VAL=pow(100,v);
27 cout<<"\nEl resultado de la funcion es:"<<VAL;
28 break;

Programacin I Ing. Melvin Caras Ciclo 02-2014
32
29 case 3:
30 VAL=100/v;
31 cout<<"\nEl resultado de la funcion es:"<<VAL;
32 break;
33 default:
34 VAL=0;
35 cout<<"\nEl resultado de la funcion es:"<<VAL;
36 }
37 cout<< "\n";
38 cout<<"\n-->Fin del programa";
39 system("pause");
40 return(0);
41 }















Programacin I Ing. Melvin Caras Ciclo 02-2014
33
EJEMPLO3: Realizar un cdigo en C++ que dados como datos el modelo de un vehculo, su
precio, determine el valor final que debe de pagar el cliente. El dueo de la empresa que vende
los vehculos est haciendo descuentos teniendo en cuenta el modelo, con base a la siguiente
tabla:
CASE MODELO DESCUENTO
N NISSAN 8%
T TOYOTA 9%
C CORDOVA 10%
S SUZUKI 11%
B BMW 12%
H HONDA 13%
Emitir la respuesta del pago en dlares y en colones. ( 1 dlar = 8.75 colones )
1 #include<iostream>
2 using namespace std;
3 main()
4 {
5 char opcion;
6 float precio, descuento, nuevo, colones;
7 cout<<"\nDigitar el precio inicial del automovil: $";
8 cin>>precio;
9 cout<< "\n\n";
10 cout<<"\n <<MENU PRINCIPAL DE MODELOS DE AUTOMOVILES>>";
11 cout<< "\n";
12 cout <<"\nN. Modelo del tipo Nissan con descuento del 8%:";
13 cout <<"\nT. Modelo del tipo Toyota con descuento del 9%:";
14 cout <<"\nC. Modelo del tipo Crdova con descuento del 10:";
15 cout <<"\nS. Modelo del tipo Suzuki con descuento del 11%:";
16 cout <<"\nB. Modelo del tipo BMW con descuento del 12%:";
17 cout <<"\nH. Modelo del tipo Honda con descuento del 13%:";
18 cout<< "\n";
19 cout<< "\n";
20 cout<<"\n Digitar la letra del modelo del automovil:";
21 opcion=getchar();
22 switch (opcion)
23 {
24 case 'n':case 'N':
25 descuento=precio*0.08;
26 nuevo=precio-descuento;
27 cout<<"\n Su precio a pagar por su auto en dlares: $"<<nuevo;
28 colones=nuevo*8.75;
29 cout<<"\n y su precio a pagar en colones es: c"<<colones;

Programacin I Ing. Melvin Caras Ciclo 02-2014
34
30 break;
31 case 't':case 'T':
32 descuento=precio*0.09;
33 nuevo=precio-descuento;
34 cout<<"\n Su precio a pagar por su auto en dlares: $"<<nuevo;
35 colones=nuevo*8.75;
36 cout<<"\n y su precio a pagar en colones es: c"<<colones;
37 break;
38 case 'c':case 'C':
39 descuento=precio*0.10;
40 nuevo=precio-descuento;
41 cout<<"\n Su precio a pagar por su auto en dlares: $"<<nuevo;
42 colones=nuevo*8.75;
43 cout<<"\n y su precio a pagar en colones es: c"<<colones;
44 break;
45 case 's':case 'S':
46 descuento=precio*0.11;
47 nuevo=precio-descuento;
48 cout<<"\n Su precio a pagar por su auto en dlares: $"<<nuevo;
49 colones=nuevo*8.75;
50 cout<<"\n y su precio a pagar en colones es: c"<<colones;
51 break;
52 case 'b':case 'B':
53 descuento=precio*0.12;
54 nuevo=precio-descuento;
55 cout<<"\n Su precio a pagar por su auto en dlares: $"<<nuevo;
56 colones=nuevo*8.75;
57 cout<<"\n y su precio a pagar en colones es: c"<<colones;
58 break;
59 case 'h':case 'H':
60 descuento=precio*0.13;
61 nuevo=precio-descuento;
62 cout<<"\n Su precio a pagar por su auto en dlares: $"<<nuevo;
63 colones=nuevo*8.75;
64 cout<<"\n y su precio a pagar en colones es: c"<<colones;
65 break;
66 default:
67 cout <<"\n <<Su opcin ha sido incorrecta>>";
68 break;
69 }
70 cout<<"\n-->Fin del programa";

Programacin I Ing. Melvin Caras Ciclo 02-2014
35
71 system("pause");
72 return(0);
73 }


















Programacin I Ing. Melvin Caras Ciclo 02-2014
36
ESTRUCTURAS REPETITIVAS
Las estructuras repetitivas son tambin conocidas como BUCLES, ciclos o lazos. Una estructura
repetitiva permite la ejecucin de un conjunto de sentencias:
Un nmero determinado de veces ( controladas por contador )
Hasta que se satisface una determinada condicin ( controladas por condicin )

1. BUCLES CONTROLADOS POR CONTADOR: FOR
Si conocemos exactamente la cantidad de veces que necesitamos repetir un conjunto de sentencias,
entonces podemos usar un bucle FOR.
En general, los bucles controlados por contador requieren:
a) Una variable de control o contador
b) Un valor inicial para el contador
c) Un valor final para el contador
d) Una condicin para verificar si la variable de control alcanzo su valor final
e) Un valor de incremento ( o decremento ) con el cual se modifica la variable de control en cada bucle
La forma general del bucle FOR es:







Representacin grafica de un
CICLO FOR




Programacin I Ing. Melvin Caras Ciclo 02-2014
37
#include<iostream>
using namespace std;
main()
{
int x;
for (x=1;x<=5;x=x+1)
{
cout<<x<<"."<<"Ke ondas\n";
}
cout<< "\n";
cout<<"\n-->Fin del programa";
system(pause);
return(0);
}




FOR-Ejemplo0.cpp

NOTAS:
1. La inicializacin puede ser diferente de uno
2. El incremento puede ser mayor que uno
3. No necesariamente debe haber incremento puede haber decremento solo que en este caso el valor
inicial debe ser mayor que el valor final de la variable y el sentido de la condicin cambia
4. solo para el caso de incremento o decremento de una en una unidad se puede sustituir el codigo:
x=x+1 por x++
x=x-1 por x - -


Programacin I Ing. Melvin Caras Ciclo 02-2014
38
EJERCICIO 1: Calcular el promedio de un alumno que tiene 5 calificaciones en la materia de
programacin I.
INICIO
Leer
Nombre
x<=5
x=1, sum=0
Leer Nota
sum = sum + nota
x = x + 1
prom=sum/5
Imprimir
Nombre, prom
FIN
SI
NO



Programacin I Ing. Melvin Caras Ciclo 02-2014
39
1 #include<iostream>
2 using namespace std;
3 main()
4 {
5 char nombre[40];
6 int x;// variable que se utilizara en el ciclo for
7 float sum;// variable que servir como acumulador
8 float nota, prom;
9 sum=0;
10 cout<<"\nDigitar el nombre del alumno:";
11 cin.get(nombre,40,'\n');// instruccin que acepta espacios en blanco
12 for (x=1;x<=5;x=x+1)
13 {
14 cout<<"\nDigitar la nota"<<x<<": ";
15 cin>>nota;
16 sum=sum+nota;// aki se van sumando las notas digitadas
17 }
18 // procesos afuera del ciclo for
19 prom=sum/5;
20 cout<<"\nEl promedio final del alumno:"<<nombre<<" es de: "<<prom;
21 cout<<"\n";
22 cout<<"\n-->Fin del programa";
23 system(pause);
24 return(0);
25 }
FOR-Ejemplo1.cpp


Programacin I Ing. Melvin Caras Ciclo 02-2014
40
EJERCICIO 2: Leer 10 nmeros enteros cualesquiera e imprimir solamente los nmeros positivos.
INICIO
y<=10
Leer num
num > 0
Imprimir num
y = y + 1
FIN
si
no
si
no



Programacin I Ing. Melvin Caras Ciclo 02-2014
41
1 #include<iostream>
2 using namespace std;
3 main()
4 {
5 int y;// variable que se utilizara en el ciclo for
6 int num;
7 for (y=1;y<=5;y++)
8 {
9 cout<<"\nDigitar el numero:";
10 cin>>num;
11 if(num>0)
12 {
13 cout<<"\n El numero:"<<num<<" es positivo";
14 cout<<"\n";
15 }
16 }
17 cout<<"\n\n";
18 cout<<"\n-->Fin del programa";
19 system(pause);
20 return(0);
21 }
FOR-Ejemplo2.cpp





Programacin I Ing. Melvin Caras Ciclo 02-2014
42
EJERCICIO 3:
Crear un programa en C++
que permita leer una lista de
W nacionalidades de
diferentes pases y que
imprima lo siguiente:
Contabilizar e imprimir el
total de guatemaltecos
Contabilizar e imprimir el
total de musulmanes
Cuantos hombres hay en
la lista
Cuantas personas son
menores de 45 aos


INICIO
Leer w
y<=w
Leer nac,
sexo, edad
nac=g
g = g + 1 nac=m
m = m + 1
sexo=m
h = h + 1
edad<45
e = e + 1
y = y + 1
Imprimir
g, h, e, m
FIN
si
no
si
no
si
no
si
no
si
no
g=0, h=0, e=0, m=0



Programacin I Ing. Melvin Caras Ciclo 02-2014
43
1 #include<iostream>
2 using namespace std;
3 main()
4 {
5 int y;// variable que se utilizara en el ciclo for
6 int g, h, e, m; // variables para los contadores
7 int w,edad;
8 char nac,sexo;
9 g=0,h=0,e=0,m=0;
10 cout<<"\nDigitar la cantidad de personas:";
11 cin>>w;
12 for (y=1;y<=w;y=y+1)
13 {
14 cout<<"\nPersona No."<<y;
15 cout<<"\n Digitar la nacionalidad de la persona(g=guate, m=musulman, etc: ";
16 cin>>nac;
17 cout<<"\n Digitar el sexo de la persona (m=hombre y f=mujer): ";
18 cin>>sexo;
19 cout<<"\n Digitar la edad: ";
20 cin>>edad;
21 if (nac=='g' || nac=='G')
22 {
23 g++;
24 }
25 else if (nac=='m' || nac=='M')
26 {
27 m++;
28 }
29 if (sexo=='m' || sexo=='M')
30 {
31 h++;
32 }
33 if (edad<45)
34 {
35 e++;
36 }
37 }
38 // procesos afuera del ciclo for

Programacin I Ing. Melvin Caras Ciclo 02-2014
44
39 cout<<"\n\n----------------------------------------------------";
40 cout<<"\nLa cantidad de guatemaltecos es de: "<<g;
41 cout<<"\nLa cantidad de musulmanes es de: "<<m;
42 cout<<"\nLa cantidad de hombres es de: "<<h;
43 cout<<"\nLa cantidad de personas menores de 45 aos es de: "<<e;
44 cout<<"\n\n-->Fin del programa";
45 system(pause);
46 return(0);
47 }
FOR-Ejemplo3.cpp



Programacin I Ing. Melvin Caras Ciclo 02-2014
45


EJERCICIO 4: Se necesita un cdigo C++ que imprima la siguiente serie de nmeros:
2,4,6,8,10,20
1 #include<iostream>





2 using namespace std;
3 main()
4 {
5 int x;
6 for (x=2;x<=20;x=x+2)
7 {
8 cout<<" "<<x<<",";
9 }
10 cout<<"\n\n-->Fin del programa";
11 system(pause);
12 return(0);
13 }
FOR-Ejemplo4.cpp


Programacin I Ing. Melvin Caras Ciclo 02-2014
46
EJERCICIO 5: Calcular e imprimir la tabla de multiplicar de un nmero entero que se encuentre
en el rango (1 a 10). Imprime el multiplicando, el multiplicador y el producto.

1 #include<iostream>
2 using namespace std;
3 main()
4 {
5 int x;// variable que se utilizara en el ciclo for
6 int w;
7 cout<<"\nDigitar el numero de (1 a 10):";
8 cin>>w;
9 cout<<"\nMultiplicando Multiplicador Producto";
10 cout<<"\n";
11 for (x=1;x<=10;x=x+1)
12 {
13 cout<<" "<<w<<" x "<<x<<" "<<w*x<<endl;
14 }
15 cout<<"\n";
16 cout<<"\n-->Fin del programa";
17 system(pause);
18 return(0);
19 }
FOR-Ejemplo5.cpp






Programacin I Ing. Melvin Caras Ciclo 02-2014
47
EJERCICIO6: Dada una lista de 10 numeros enteros ingresados desde el teclado. Informar el
mayor, el menor y la sumatoria de los que se encuentran entre 100 y 500 inclusive.

1 #include<iostream>
2 using namespace std;
3 main()
4 {
5 int n,i,max,min,sum=0;
6 cout<<"\nIngrese 10 enteros:";
7 for(i=1;i<=10;i++)
8 {
9 cin>>n;
10 if(i==1)
11 {
12 max=n;
13 min=n;
14 }
15 if(n>max)
16 {
17 max=n;
18 }
19 if(n<min)
20 {
21 min=n;
22 }
23 if((n>=100)&&(n<=500)) // se detectan los que se encuentran en el rango
24 {
25 sum=sum+n;
26 }
27 }
28 cout<<"\nEl numero mayor es: "<<max;
29 cout<<"\nEl numero menor es: "<<min;
30 cout<<"\nLa suma de los que se encuentran entre 100 y 500 es: "<<sum;
31 cout<<"\n-->Fin del programa";
32 cout<<"\n\n";
33 system("pause");
34 return(0);
35 }

Programacin I Ing. Melvin Caras Ciclo 02-2014
48





Programacin I Ing. Melvin Caras Ciclo 02-2014
49
ESTRUCTURA REPETITIVA WHILE

CARACTERSTICAS:
Condicin es una expresin que se evala al principio del bucle y antes de cada iteracin
de las sentencias
Si la condicin es VERDADERA, se ejecuta el bloque de sentencias y se vuelve al principio
del bucle.
Si la condicin es FALSA desde un principio, entonces el bucle nunca se ejecuta. ( Por eso
se dice que el bucle while se ejecuta cero o ms veces )
Si la condicin nunca llega a ser falsa, tenemos un bucle infinito

SINTAXIS:
While ( condicion )
{
Sentencia 1;
Sentencia 2;
Sentencia 3;
. ;
}

Ejemplo1:
1 #include<iostream>

2 using namespace std;
3 main()
4 {
5 int x;
6 x=0;
7
while (x<6)
8 {
9 cout<< "\nEl valor de X es:" <<x;
10 x=x+1;
11 }
12 cout<<"\n";
13 cout<<"\n-->Fin del programa";
14 system("pause");
15 return(0);
16 }
WHILE-Ejemplo1.cpp


Programacin I Ing. Melvin Caras Ciclo 02-2014
50
Ejemplo2:
1 #include<iostream>
2 using namespace std;
3 main()
4 {
5 double num,sum,pro;
6 sum=0;
7 pro=1;
8 cout<< "\nEscribe un numero diferente de 0:" ;
9 cin>> num;
10 while (num!=0)
11 {
12 sum=sum + num;
13 pro=pro*num;
14 cout<< "\nEl numero es " <<num <<" La Suma es " <<sum <<" y El Producto es " <<pro;
15 cout<< "\nEscribe un nuevo nmero ( para acabar escribe 0 ):";
16 cin>> num;
17 }
18 cout<< "\nSuma Total es " <<sum <<" y El Producto Final es " <<pro;
19 cout<<"\n\n-->Fin del programa";
20 system("pause");
21 return(0);
22 }
WHILE-Ejemplo2.cpp




Programacin I Ing. Melvin Caras Ciclo 02-2014
51
Ejemplo3: Elaborar un programa que permita sumar 10 nmeros enteros usndola estructura
WHILE

1 #include<iostream>
2 using namespace std;
3 main()
4 {
5 int i, y, num;
6 i = 1;
7 y = 0;
8 while (i<=10)
9 {
10 cout<< "\nDigitar el numero:";
11 cin>> num;
12 y = y + num;
13 i = i + 1;
14 }
15 cout<< "\nLa suma de los numeros es:" <<y;
16 cout<<"\n\n-->Fin del programa";
17 system("pause");
18 return(0);
19 }
WHILE-Ejemplo3.cpp




Programacin I Ing. Melvin Caras Ciclo 02-2014
52
ESTRUCTURA REPETITIVA DO WHILE

La sentencia do-while permite repetir una sentencia una o ms veces mientras la expresin sea
cierta.
CARACTERISTICAS:
Se garantiza que el cuerpo del bucle se ejecuta al menos una vez
El trmino del bucle se produce cuando la expresin o condicin de salida es falsa
Do-while es un bucle con condicin de salida. Esto significa que la sentencia se realiza al
menos una vez

SINTAXIS: Do
{
Sentencia 1;
Sentencia 2;
Sentencia 3;
. ;
} While ( condicin );

EJEMPLO1: Realice un programa que sume 2 nmeros y que termine cuando escriba un cero
en el primer numero

1 #include<iostream>
2 using namespace std;
3 main()
4 {
5 int x, y, resp, suma;
6 cout<< "\nDigitar el primer nmero:";
7 cin>> x;
8 do{
9 cout<< "\nDigitar el segundo numero:";
10 cin>> y;
11 suma = x + y;
12 cout<< "\nLa suma es:" <<suma;
13 cout<< "\n\n";
14 cout<< "\nDigitar el primer nmero (un cero para terminar):";
15 cin>> x;
16 }
17 while( x!=0);
18 cout<<"\n\n-->Fin del programa";

Programacin I Ing. Melvin Caras Ciclo 02-2014
53
19 system("pause");
20 return(0);
21 }
DOWHILE-Ejemplo1.cpp












Programacin I Ing. Melvin Caras Ciclo 02-2014
54
EJEMPLO2: Realice un programa que sume 2 nmeros y que termine cuando escriba un s de
respuesta

1 #include<iostream>



2 using namespace std;
3 main()
4 {
5 int x, y, suma;
6 char resp;
7 do{
8 cout<< "\nDigitar el primer nmero:";
9 cin>> x;
10 cout<< "\nDigitar el segundo numero:";
11 cin>> y;
12 suma = x + y;
13 cout<< "\nLa suma es:" <<suma;
14 cout<< "\nDesea continuar (s/n):";
15 cin>> resp;
16 } while(resp!='n' && resp!='N');
17 cout<<"\n";
18 cout<<"\n-->Fin del programa";
19 system("pause");
20 return(0);
21 }
DOWHILE-Ejemplo2.cpp




EJEMPLO3:Realice un programa que solicite el nombre de una persona, su edad y su sexo,
si el sexo es masculino que muestre en pantalla el mensaje de "El Sr. (nombre) ha sido
registrado" y si el sexo es femenino que muestre el mensaje "La Sra. (nombre) ha sido
registrada".

1 #include<iostream>
2 using namespace std;
3 main()
4 {
5 char resp,sexo;
6 char nombre[15];

Programacin I Ing. Melvin Caras Ciclo 02-2014
55
7 int edad;
8 do{
9 cout<< "\nDigitar su nombre:";
10 cin>> nombre;
11 cout<< "\nDigitar su edad:";
12 cin>> edad;
13 cout<< "\nDigitar su sexo ( Hombre=M y Mujer=F):";
14 cin>> sexo;
15 if (sexo=='M' || sexo=='m')
16 cout<< "\nEl Sr. " <<nombre <<" ha sido registrado";
17 else {
18 if (sexo=='F' || sexo=='f')
19 cout<< "\nLa Sra. " <<nombre <<" ha sido registrada";
20 else
21 cout<< "\nDato invalido";
22 }
23 cout<< "\nDesea continuar (s/n):";
24 cin>> resp;
25 }
26 while(resp!='n' && resp!='N');// se sale cuando la condicion es FALSA
27 cout<<"\n\n-->Fin del programa";
28 system("pause");
29 return(0);
30 }
DOWHILE-Ejemplo3.cpp



Programacin I Ing. Melvin Caras Ciclo 02-2014
56
FUNCIONES

Qu es una funcin?
Una funcin es una coleccin de instrucciones que ejecutan una tarea especfica.
En un programa de C++ se distinguen dos clases de funciones: las funciones definidas por el
usuario y las funciones incluidas en alguna librera.
En C++ la declaracin de una funcin nunca puede contener a la declaracin de otra funcin.
Mediante el uso de funciones se consigue formar un programa estructurado ms comprensible y
reducido.
Pensar por ejemplo que durante la ejecucin de un programa se necesita visualizar una matriz
varias veces, por ejemplo 6 veces, pues bien si no tuviera funciones debera escribir el cdigo
que visualiza la funcin 6 veces, mientras que con una funcin solo tendr que escribirla una vez
y luego hacer una llamada a sta cada vez que quiera visualizar la matriz.

EJEMPLO1:
1 #include<iostream>
2 void suma(float a,float b); // declaracin de un procedimiento
3 float resta(float a, float b); // declaracin de una funcin
4 void concatenar(char n[], int b); // declaracin de un procedimiento
5 main()
6 {
7 float x,y;
8 int edad;
9 char nombre[40];
10 cout<<"\nIngrese el primer nmero:";
11 cin>>x;
12 cout<<"\nIngrese el segundo numero:";
13 cin>>y;
14 cout<<"\n--->primero el procedimiento suma";
15 suma(x,y);
16 cout<<"\n\n";
17 cout<<"\n--->segundo la funcin resta";
18 cout<<"\n El residuo de la resta es "<<resta(x,y);
19 cout<<"\n\n";
20 cout<<"\nAhora con letritas";
21 cout<<"\nIngrese su nombre:";
22 cin>>nombre;

Programacin I Ing. Melvin Caras Ciclo 02-2014
57
23 cout<<"Ingrese su edad:";
24 cin>>edad;
25 cout<<"\n";
26 concatenar(nombre,edad);
27 system("pause");
28 return(0);
29 }
30 //procesos de las funciones
31 void suma(float a,float b)
32 {
33
cout<<"\n La suma de los nmeros es "<<a+b;
34 }
35 float resta(float a,float b)
36 {
37 float r;
38 r=a-b;
39
return r;
40 }
41 void concatenar(char n[], int b)
42 {
43
cout<<"\nel nombre es: "<<n;
44
cout<<"\nla edad es: "<<b;
45 }
FUNCIONES-Ejemplo1.cpp



Programacin I Ing. Melvin Caras Ciclo 02-2014
58
EJEMPLO2:
1 #include<iostream>
2 using namespace std;
3 void par(int a); // declaracin de un procedimiento
4 main()
5 {
6 int num;
7 cout<< "\nDigitar un numero entero positivo:";
8 cin>> num;
9 par(num);
10 cout<<"\n\n";
11 system("pause");
12 return(0);
13 }
14 void par(int a)
15 {
16 int x;
17 x = (a%2);
18 if (x==0)
19 {
20 cout<< "\nEs par";
21 }
22 else
23 {
24 cout<< "\nEs impar";
25 }
26
} FUNCIONES-Ejemplo2.cpp




Programacin I Ing. Melvin Caras Ciclo 02-2014
59
EJEMPLO3:
1 #include<iostream>
2 using namespace std;
3 void colon(float a); // declaracin de un procedimiento
4 void quet(float a); // declaracin de un procedimiento
5 float euros(float a); // declaracin de una funcin
6 float libras(float a); // declaracin de una funcin
7 main()
8 {
9 float x;
10 cout<<"\nDigitar la cantidad en dlares:";
11 cin>>x;
12 // llamadas a las funciones
13 colon(x);
14 quet(x);
15 cout<<"\n Los "<<x<<" dlares son: "<<euros(x)<<" euros";
16 cout<<"\n Los "<<x<<" dlares son: "<<libras(x)<<" libras esterlinas";
17 cout<<"\n";
18 system("pause");
19 return(0);
20 }
21 // aqui se encuentran las funciones
22 void colon(float a)
23 {
24 cout<<"\n Los "<<a<<" dlares son: "<<a*8.75<<" colones";}
25 void quet(float a)
26 {
27 cout<<"\n Los "<<a<<" dlares son: "<<a*5<<" quetzales";}
28 float euros(float a)
29 {
30 float r;
31 r=a*1.15;
32 return r;}
33 float libras(float a)
34 {
35 float r;
36 r=a*3.15;
37 return r;

Programacin I Ing. Melvin Caras Ciclo 02-2014
60
38 }
FUNCIONES-Ejemplo3.cpp




EJEMPLO4:
1 #include<iostream>
2 using namespace std;
3 void suma(int a, int b);
4 void resta(int a, int b);
5 void multi(int a, int b);
6 void divi(int a, int b);
7 main()
8 {
9 // declaracion de variables
10 int num1, num2, opcion;
11 cout<<"\nDigitar el primer nmero: ";
12 cin>>num1;
13 cout<<"\nDigitar el segundo numero: ";
14 cin>>num2;
15 cout<<"\nMENU PRINCIPAL DE OPERACIONES MATEMATICAS:";
16 cout<< "\n";
17 cout <<"\n 1) Sumar los nmeros";
18 cout <<"\n 2) Restar los nmeros";
19 cout <<"\n 3) Multiplicar los nmeros";
20 cout <<"\n 4) Dividir los nmeros";
21 cout<< "\n";
22 cout<<"\nDigitar la opcin deseada (1..4):";
23 cin>>opcion;
24 switch (opcion)
25 {
26 case 1:
27 suma(num1,num2);
28 break;
29 case 2:

Programacin I Ing. Melvin Caras Ciclo 02-2014
61
30 resta(num1,num2);
31 break;
32 case 3:
33 multi(num1,num2);
34 break;
35 case 4:
36 divi(num1,num2);
37 break;
38 default:
39 cout <<"\nMil disculpas pero se ha equivoca de opcion, solo acepta[1..4]";
40 }
41 cout<<"\n-->Fin del programa";
42 system("pause");
43 return(0);
44 }
45 void suma(int a, int b)
46 {
47 cout<<"\n La suma de los numeros es: "<<a+b; }
48 void resta(int a, int b)
49 {
50 cout<<"\n La resta de los numeros es: "<<a-b; }
51 void multi(int a, int b)
52 {
53 cout<<"\n La multiplicacion de los numeros es: "<<a*b; }
54 void divi(int a, int b)
55 {
56 cout<<"\n La division de los numeros es: "<<a/b; }



Programacin I Ing. Melvin Caras Ciclo 02-2014
62
VECTORES
Qu es un ARRAY?
Es una coleccin o conjunto de posiciones de memoria que tiene el mismo nombre de
variables, es decir, un conjunto de datos numricos o de cadena que tienen el mismo
nombre. Un array puedes ser de una dimensin (vector) o de varias dimensiones (matrices).
Los vectores (array unidimensional o lineal) es una lista de un finito de elementos (datos)
del mismo tipo que se llaman por un mismo nombre a todos los elementos y se diferencian
unos a otros por un numero de orden, los cuales son consecutivos como 1,2,3,4,. Hasta
un N total de elementos.-
Cada elemento puede tener asignado un valor y se puede manipular de igual forma que
cualquier otra variable individual.-
No olvidar cada arreglo posee un nombre y un ndice que referencia a cada elemento del
arreglo
Hablaremos de la palabra dimensionar cuando necesitamos saber la cantidad de
elementos que contiene por cada dimensin ( tamao del arreglo )

Para hacer referencia a un elemento de un vector se usa el nombre del mismo, seguido del
ndice (entre corchetes), el cual indica una posicin en particular del vector. Por ejemplo:
Vec[x]
Donde:
Vec.. Nombre del vector
x Numero de datos que constituyen el arreglo

Representacin grafica de un vector

Vec[0] 8
Vec[1] 5
Vec[2] 4
Vec[3] 12

Ejemplos de declaracin de vectores tenemos:
int ventas[15];
float precios[45];
char nombre[25];

Programacin I Ing. Melvin Caras Ciclo 02-2014
63
Funcion: Strlen
La funcin strlen(); pertenece a la librera string.h
Esta funcin se encarga de calcular el nmero de caracteres que tiene la cadena hasta el
carcter nulo que no se incluye.
Sintaxis:
cantidadletras=strlen(nombre);
ejemplo: x=strlen(nombre);

EJEMPLO1:
1 //Programa que permite digitar una cantidad de notas de un estudiante
2 #include <iostream>
3 using namespace std;
4 main()
5 {
6 int notas[50];
7 int i, j, n, resp, encontrado, buscar, mayor, menor, suma, aux;
8 float promedio;
9 cout<<"Digitar la Cantidad de Nmeros a Ingresar: ";
10 cin>>n;
Comentario: chequear que apartamos 50 espacios en la memoria RAM para colocar
nmeros enteros
11 //LLENADO DE NOTAS
12 for (i=1;i<=n;i++)
13 {
14 cout<< "Posicin nmero "<<i<<" del vector = ";
15 cin>> notas[i]; }
16 cout<< "\n";
Comentario: chequear que por mdio de um ciclo FOR de 1 hasta El valor de N vamos
grabando cada uno de ls nmeros enteros que contendra el vector llamado Notas
17 //IMPRIME LOS DATOS ORDENADOS
18 for(i=1;i<=n;i++)
19 {
20 cout<<"\t"<<notas[i];
21 }
22 cout<< "\n";
Comentario: Chequear que utilizamos un ciclo FOR para presenter en pantalla los datos
almacenados en el vector Notas ocupando el tabulador

Programacin I Ing. Melvin Caras Ciclo 02-2014
64

23 //BUSCAR UNA NOTA
24 encontrado = 1;
25 cout<< "\nDigitar la nota a buscar:";
26 cin>> buscar;
27 for(i=1;i<=n;i++)
28 {
29 if (buscar == notas[i])
30 resp = 1;
31 }
32 if (encontrado == resp)
33 cout<< "\n El numero fue encontrado";
34 else
35 cout<< "\n El nmero no fue encontrado";
Comentario: la metodologa de buscar un dato es utilizando una variable bandera que en
este caso se llama encontrado, despus se diguta el dato a buscar y por medio de un ciclo
FOR se recorre todo el vector comparando cada posicin con el dato a buscar, si lo llegase
a encontrar entonces a otra variable llamada resp le asigna el valor de 1 y por ultimo
utilizando la estrcutura if podemos comparar ambas variables ( encontrado == resp) y asi
saber si el dato lo encontramo o no

36 //MOSTRAR EL MAYOR Y EL MENOR
37 cout<< "\n";
38 mayor=0;
39 menor=1000;
40 for(i=1;i<=n;i++){
41 if (mayor < notas[i])
42 mayor = notas[i];
43 if (menor > notas[i])
44 menor = notas[i];
45 }
46 //IMPRIME LOS RESULTADOS
47 cout<< "\n El mayor es:" <<mayor;
48 cout<< "\n El menor es;" <<menor;
Comentario: la metodologa utilizada es valerse de 2 variables banderas llamadas mayor y
menor y por medio de un ciclo FOR ir comparando e intercamabiando los valores de ellas
comparando cada dato almacenado en el vector.


Programacin I Ing. Melvin Caras Ciclo 02-2014
65
49 //LA SUMATORIA DE LAS NOTAS
50 suma = 0;
51 for(i=1;i<=n;i++){
52 suma = suma + notas[i];
53 }
54 cout<< "\n La suma de las notas es:" <<suma;
55 promedio=suma/n;
56 cout<< "\n El promedio es:" <<promedio;
57 cout<< "\n";
Comentario: utilizando la metodologa de un sumador o acumulador y la estructura FOR
vamos a sumar cada uno de los datos contenidos en el vector para al finalizar el FOR
podamos obtener un promedio de los nmeros

58 //REALIZA LA ORDENACION
59 for(i=1;i<=n-1;i++)
60 {//inicio de primer for
61 for(j=1;j<=n-1;j++)
62 { //inicio del segundo for
63 if(notas[j]>notas[j+1])
64 { // inicio del if
65 aux=notas[j];
66 notas[j]=notas[j+1];
67 notas[j+1]=aux;
68 }// fin del if
69 }//fin del segundo for, el ms interno, el de la j
70 }//fin del primer for

La Ordenacin de burbuja (Bubble Sort en ingls) es un sencillo algoritmo de ordenamiento.
Funciona revisando cada elemento de la lista que va a ser ordenada con el siguiente,
intercambindolos de posicin si estn en el orden equivocado. Es necesario revisar varias
veces toda la lista hasta que no se necesiten ms intercambios, lo cual significa que la lista
est ordenada. Este algoritmo obtiene su nombre de la forma con la que suben por la lista los
elementos durante los intercambios, como si fueran pequeas "burbujas". Tambin es
conocido como el mtodo del intercambio directo. Dado que solo usa comparaciones para
operar elementos, se lo considera un algoritmo de comparacin, siendo el ms sencillo de
implementar.

Programacin I Ing. Melvin Caras Ciclo 02-2014
66
Ver aqu: http://es.wikipedia.org/wiki/Ordenamiento_de_burbuja

71 //IMPRIME LOS DATOS ORDENADOS
72 for(i=1;i<=n;i++)
73 {
74 cout<<"\t"<<notas[i];
75 }
76 cout<< "\n";
77 system("pause");
78 return(0);
79 }
VECTOR-Ejemplo1.cpp









Programacin I Ing. Melvin Caras Ciclo 02-2014
67
EJEMPLO2:

1 /*Escriba un programa que lea una cadena de texto y como resultado que
2 //muestre el total de vocales y espacios en blanco que tiene la frase.*/
3 #include <iostream>
4 #include <string.h>
5 using namespace std;
6 main()
7 {
8 char nombre[25];
9 int I, cantidadletras, vocales, espacios;
10 vocales=0;
11 espacios=0;
12 cout<<"introduzca una frase"<<endl;
13 cin.getline(nombre,25,\n);
14 cantidadletras=strlen(nombre);
15 cout<<"Caracteres de la frase "<<cantidadletras;
16 for(i=0;i<cantidadletras;i++)
17 {
18 //bsqueda de espacios en blanco
19 if(nombre[i]==' ')
20 // al poner un espacio en blanco entre comillas simples indicamos que
21 // son espacios en blanco
22 espacios++;
23 //busqueda de vocales
24 if((nombre[i]=='A') || (nombre[i]=='a'))
25 vocales++;
26 if((nombre[i]=='E') || (nombre[i]=='e'))
27 vocales++;
28 if((nombre[i]=='I') || (nombre[i]=='i'))
29 vocales++;
30 if((nombre[i]=='O') || (nombre[i]=='o'))
31 vocales++;
32 if((nombre[i]=='U') || (nombre[i]=='u'))
33 vocales++;
34 }//fin del for
35 cout<<"\nEl total de espacios en blanco son "<<espacios<<endl;

Programacin I Ing. Melvin Caras Ciclo 02-2014
68
36 cout<<"\nEl total de vocales son "<<vocales<<endl;
37 system("pause");
38 return(0);
39 }
VECTOR-Ejemplo2.cpp






NOTA:
Curiosidad como le podra hacer para contabilizar cuantas consonantes podran haber al digitar
tambin en una oracin:
Escribe tu solucin aqu:






Programacin I Ing. Melvin Caras Ciclo 02-2014
69
EJEMPLO3
1 //Programa que suma los elementos de 2 vectores
2 #include <iostream>
3 using namespace std;
4 main()
5 {
6 int i,n;
7 int vector1[5];
8 int vector2[5];
9 int suma[5];
10 //LLENADO DE LOS VECTORES
11 for(i=0;i<5;i++)
12 {
13 cout<< "Posicin nmero "<<i<<" del vector 1= ";
14 cin>>vector1[i];
15 cout<< "Posicin nmero "<<i<<" del vector 2= ";
16 cin>>vector2[i];
17 cout<< "\n";
18 }
19 //REALIZA LA SUMA DE LOS VECTORES E IMPRIME EL RESULTADO
20 for(i=0;i<5;i++)
21 {
22 suma[i]=vector1[i]+vector2[i];
23 cout<<"\nEl valor de la suma de los elementos en la posicin "<<i<<" es: ";
24 cout<<suma[i];
25 cout<<"\n";
26 }
27 system("pause");
28 return(0);
29 }
VECTOR-Ejemplo3.cpp

Programacin I Ing. Melvin Caras Ciclo 02-2014
70


Curiosidad:
Que tipo de operaciones se pueden realizar con 2 vectores o con un solo vector.
Escribe aqu tu solucin:












Programacin I Ing. Melvin Caras Ciclo 02-2014
71
EJEMPLO4:
1 // Envo de un array a una funcin.

2 #include<iostream>
3 using namespace std;
4 void visualizar(int []);
5 main()
6 {
7 int array[5];
8 int i;
9 for(i=0;i<5;i++)
10 {
11 cout<<"Elemento No "<<i+1<<": ";
12 cin>>array[i];
13 }
14 //Llamada a la funcin y envi de array
15 visualizar(array);
16 system("pause");
17 return (0);
18 }
19 void visualizar(int array[])
20 {
21 int i;
22 for(i=0;i<5;i++)
23 cout<<array[i];
24 }
VECTOR-Ejemplo4.cpp



Programacin I Ing. Melvin Caras Ciclo 02-2014
72
MATRICES
ARREGLOS DE N-DIMENSIONES

Los arreglos en C++ pueden tener mltiples subndices. Un uso comn de los arreglos con
mltiples subndices es representar tablas de valores que consisten en informacin organizada
en filas y columnas. Para identificar un elemento en especial de una tabla, debemos especificar
dos subndices: el primero identifica la fila del elemento, y el segundo identifica la columna
del elemento.
Las tablas o arreglos que requieren dos ndices para identificar un elemento en particular se
llaman arreglos con doble subndice. Observe que los arreglos con mltiples subndices
pueden tener ms de dos subndices.
En la siguiente figura se muestra el arreglo a con doble subndice.








Este arreglo contiene tres filas y cuatro columnas, de manera que se dice que es un arreglo de
3 por 4. En general un arreglo con m filas y n columnas se llama arreglo de m por n as: mxn
Cada elemento del arreglo a se identifica en la figura con el nombre del elemento de la forma
a[i][j] tal como se haca con los vectores a[i].
a es el nombre del arreglo.
i , j son los subndices que identifican de manera nica a cada elemento de a.
Observe que los elementos en la primera fila tienen un primer subndice 0; los nombres de los
elementos en la cuarta columna tienen un segundo subndice 3.
Manipulacin de los elementos de un arreglo de dos dimensiones
Para trabajar con estos vectores de dos dimensiones se hace uso de las estructuras repetitivas
for, estas estructuras se disponen de manera anidada. Si recuerda en las estructuras anidadas
for, se ejecuta primero la ms interna y hasta que esta termine su ciclo la estructura repetitiva
externa cambia su valor. Esto significa que la estructura for externa determina el nmero de
veces que se repetir la estructura repetitiva interna. Si nos concentramos en la figura 1 veremos
que el for trabajara de la siguiente manera:
Columna
0
Columna
1
Columna
2
Columna
3
Fila 0 a[0][0] a[0][1] a[0][2] a[0][3]
Fila 1 a[1][0] a[1][1] a[1][2] a[1][3]
Fila 2 a[2][0] a[2][1] a[2][2] a[2][3]
Subndice de columna
Subndice de fila
Nombre del arreglo
Figura 1

Programacin I Ing. Melvin Caras Ciclo 02-2014
73

for (i=0;i<3;i++){
for (j=0;j<4;j++){

1. Entramos al for externo en donde i=0, a continuacin entra al for interno en donde j=0, esto
quiere decir que estamos justo en el elemento a[0][0]. Ahora j incrementa en 1 su valor y
compara si su nuevo valor es < que 4.
2. En el for externo se sigue cumpliendo que i=0, y en el for interno j=1, esto quiere decir que
estamos justo en el elemento a[0][1]. Ahora j incrementa en 1 su valor y compara si su nuevo
valor es < que 4.
3. En el for externo se sigue cumpliendo que i=0, y el for interno j=2, esto quiere decir que
estamos justo en el elemento a[0][2]. Ahora j incrementa en 1 su valor y compara si su nuevo
valor es < que 4.
4. En el for externo se sigue cumpliendo que i=0, y el for interno j=3, esto quiere decir que
estamos justo en el elemento a[0][3]. Ahora j incrementa en 1 su valor y compara si su nuevo
valor es < que 4 como no se cumple, el ciclo del for interno se da por terminado y en este
momento el for externo incrementa en 1 el valor de i, es decir que ahora i=1. y se repite el
proceso desde el literal 1.
Ahora veamos un ejemplo del tratamiento de los elementos de una matriz numrica:

0 1 2
0 3 7 0
1 2 3 2

EJEMPLO 1:
Digitar e imprimir los datos numricos contenidos en una matriz 2x3
1 #include<iostream>
2 using namespace std;
3 #define a 2
4 #define b 3
5 main()
6 {
7 int numeros[a][b];
8 int i,j;
9 //PARA INGRESAR DATOS A LA MATRIZ
10 for(i=0;i<a;i++)
11 { //FOR EXTERNO PARA UBICARSE EN LAS FILAS
12 for(j=0;j<b;j++) //FOR INTERNO PARA UBICARSE EN LAS COLUMNAS
13 {
14 cout<<"Digite el elemento de la posicin ( "<<i<<","<<j<<" )";
15 cin>>numeros[i][j];

Programacin I Ing. Melvin Caras Ciclo 02-2014
74
16 }
17 }
18 //PARA IMPRIMIR EN PANTALLA LOS DATOS DE LA MATRIZ
19 cout<<"\n\n\tSu matriz es la siguiente: \n";
20 for(i=0;i<a;i++)
21 {
22 cout<<"\t\t";
23 for(j=0;j<b;j++)
24 {
25 cout<<numeros[i][j]<<" ";
26 }
27 cout<<endl;
28 }
29 system("pause");
30 return (0);
31 }
Matriz-Ejemplo1.cpp





Programacin I Ing. Melvin Caras Ciclo 02-2014
75
EJEMPLO 2:
El siguiente programa permite identificar y contar los datos positivos y negativos de una matriz.
Para ello se declaran dos variables contador, positivos y negativos, as cada vez que
encuentre un dato positivo se suma 1 al variable contador positivo y por el contrario si es un
dato negativo suma un 1 a la variable contador negativo. Para poder saber si es positivo o
negativo simplemente se usa un if.

1 #include<iostream>
2 using namespace std;
3 main()
4 {
5 int numeros[2][3];
6 int i,j,positivos,negativos;
7 positivos=0;
8 negativos=0;
9 //PARA INGRESAR DATOS A LA MATRIZ
10 for(i=0;i<2;i++)
11 {
12 for(j=0;j<3;j++)
13 {
14 cout<<"Digite el elemento de la posicin ( "<<i<<","<<j<<" )";
15 cin>>numeros[i][j];
16 }
17 }
18 //PARA IMPRIMIR EN PANTALLA LOS DATOS DE LA MATRIZ
19 for(i=0;i<2;i++)
20 {
21 for(j=0;j<3;j++)
22 {
23 if(numeros[i][j]>0)
24 { //si el dato en esta posicin es positivo
25 positivos++; //hace un contador que incrementa en 1
26 }
27 else if(numeros[i][j]<0)
28 { //si el dato en esta posicin es negativo
29 negativos++; //se incrementa en 1
30 }
31 }

Programacin I Ing. Melvin Caras Ciclo 02-2014
76
32 }
33 cout<<"El nmero de elementos positivos en matriz es: "<<positivos<<endl;
34 cout<<"El nmero de elementos negativos en matriz es: "<<negativos<<endl;
35 system("pause");
36 return(0);
37 }
Matriz-Ejemplo2.cpp




EJEMPLO3: El siguiente programa permite crear una matriz de 2x3 (2 filas y 3 columnas), en
esta matriz se ingresaran solo letras. Luego de insertar los datos se recorre la matriz para
determinar la cantidad de vocales a, e, i, o y u que se han introducido.
1 #include<iostream>
2 using namespace std;
3 main()
4 {
5 char letras[2][3];
6 char l;
7 int i,j;
8 int vocala=0,vocale=0,vocali=0,vocalo=0,vocalu=0,otros=0;
9 for(i=0;i<2;i++)
10 {
11 for(j=0;j<3;j++)
12 {
13 cout<<"Digite la letra de la posicion("<<i<<","<<j<<")";
14 cin>>letras[i][j];
15 }

Programacin I Ing. Melvin Caras Ciclo 02-2014
77
16 }
17 //IMPRIMIR EN PANTALLA LOS DATOS DE LA MATRIZ
18 for(i=0;i<2;i++)
19 {
20 for(j=0;j<3;j++)
21 {
22 l=letras[i][j];
23 switch(l)
24 {
25 case 'a':case 'A':
26 vocala++;
27 break;
28 case 'e':
29 vocale++;
30 break;
31 case 'i':
32 vocali++;
33 break;
34 case 'o':
35 vocalo++;
36 break;
37 case 'u':
38 vocalu++;
39 break;
40 default:
41 otros++; //si el dato es consonante, entonces incrementa en 1
42 break;
43 }
44 }
45 cout<<endl;
46 }
47 cout<<"Las vocales a en la matriz son: "<<vocala<<endl;
48 cout<<"Las vocales e en la matriz son: "<<vocale<<endl;
49 cout<<"Las vocales i en la matriz son: "<<vocali<<endl;
50 cout<<"Las vocales o en la matriz son: "<<vocalo<<endl;
51 cout<<"Las vocales u en la matriz son: "<<vocalu<<endl;
52 cout<<"Letras que no son vocales son: "<<otros<<endl;
53 system("pause");

Programacin I Ing. Melvin Caras Ciclo 02-2014
78
54 return(0);
55 }
Matriz-Ejemplo3.cpp

Вам также может понравиться