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
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".
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
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