Documente Academic
Documente Profesional
Documente Cultură
ALGORITMOS
ISBN 978-958-44-8987-6
9 789584 489876
El captulo 5 de c++ se descarga de la pgina web, con la clave que se suministra en el momento de la compra del libro. al igual que los cdigos de DFD y de Devc++
ISBN: 978-958-44-8987-6
9 789584 489876
Los crditos de este trabajo indiscutiblemente slo le corresponden a Dios, a quien le agradezco por darme cada da una nueva oportunidad. Los errores y equivocaciones si son de mi autora.
Captulo 4: Arreglos
Nelson Francisco Beltrn Franco
vii
Agradecimientos
En la realizacin de este trabajo, recib el apoyo y respaldo de varias personas que me animaron en todo momento, para no desfallecer cuando por cansancio o dificultades cotidianas, llegu a pensar en abandonar este proyecto. A todos ellos les doy un agradecimiento y reconocimiento por su solidaridad. A mi hermana Clara, quien me colabor con las continuas y repetidas revisiones del material escrito, por su respaldo incondicional y sincero en el desarrollo de este proyecto, y en todas las dems actividades y dificultades de la vida, le estoy afectuosamente agradecido. A mi hermana Bernarda, quien con su silenciosa y sigilosa presencia, me demostr que siempre cuento con su compaa y apoyo, le doy un carioso agradecimiento. De la misma forma a mis otras hermanas y hermanos con quienes siempre he contado. Quiero agradecer especialmente a Ernesto Carrillo Mora, quien ha estado pendiente del desarrollo del proyecto, y en los momentos en que pareca que se complicaban las cosas, estuvo presente, animndome y respaldndome.
vii
Captulo 4: Arreglos
Nelson Francisco Beltrn Franco
ix
Contenido
Introduccin .......................................................................... 1
Captulo 1: Procesos secuenciales ......................................... 5 1 Procesos secuenciales ............................................................ 5 1.1 Introduccin ....................................................................... 5 1.2 Anlisis de la informacin .................................................... 6 1.3 Algoritmo ........................................................................... 9 1.4 Seudocdigo .................................................................... 10 1.5 Diagrama de flujo ............................................................ 11 1.6 Prueba de escritorio ......................................................... 14 1.7 Operadores aritmticos ..................................................... 16 1.8 Expresiones lgicas .......................................................... 20 1.8.1 Operadores relacionales ................................................. 20 1.8.2 Operadores lgicos ........................................................ 22 1.9 Tablas de certeza de los operadores lgicos ......................... 24 1.10 Procesos secuenciales ..................................................... 26 EJERCICIOS DE INICIACIN ............................................... 27 E.1.1 .................................................................................... 27 E.1.2 ................................................................................... 30
ix
Captulo 2: Procesos de decisin ......................................... 51 2 Proceso de toma de decisiones ............................................. 51 2.1 Proceso Si _____; haga _____ .......................................... 51 EJERCICIOS DE INICIACIN ............................................... 52 E.2.1 .................................................................................... 52
Captulo 4: Arreglos
Nelson Francisco Beltrn Franco
E.2.2 .................................................................................... 55 E.2.3 .................................................................................... 59 E.2.4 .................................................................................... 65 E.2.5 .................................................................................... 70 E.2.6 .................................................................................... 75 2.2 Proceso Si _____ ; haga _____ ; sino haga _____ .............. 79 E.2.7 .................................................................................... 79 E.2.8 .................................................................................... 84 E.2.9 .................................................................................... 89 2.3 Proceso de seleccin mltiple ............................................ 93 E.2.10 .................................................................................. 95 E.2.11 .................................................................................. 99 E.2.12 ................................................................................. 103 2.4 Resumen ...................................................................... 113 EJERCICIOS PROPUESTOS ................................................. 115 EP.2.1 ................................................................................. 115 EP.2.2 ................................................................................. 115 EP.2.3 ................................................................................. 115 EP.2.4 ................................................................................. 115 EP.2.5 ................................................................................. 116 EP.2.6 ................................................................................. 116
xi
xi
xii
Captulo 3: Procesos repetitivos ........................................ 119 3 Procesos repetitivos ........................................................... 119 3.1 Proceso Para ________ hasta ________ de a ________ ..... 119 E.3.1 .................................................................................. 120 E.3.2 .................................................................................. 126 E.3.3 .................................................................................. 128 E.3.4 .................................................................................. 133 E.3.5 .................................................................................. 138 3.2 Proceso Mientras Qu __________ haga ........................... 144 E.3.6 .................................................................................. 145 E.3.7 .................................................................................. 150 E.3.8 .................................................................................. 155 E.3.9 .................................................................................. 160 E.3.10 ................................................................................ 164 3.3 Resumen ..................................................................... 168 EJERCICIOS PROPUESTOS ................................................ 169 EP.3.1 ................................................................................ 169
xii
Captulo 4: Arreglos
Nelson Francisco Beltrn Franco
EP.3.2 ................................................................................. 169 EP.3.3 ................................................................................. 170 EP.3.4 ................................................................................. 170 EP.3.5 ................................................................................. 170 EP.3.6 ................................................................................. 171 EP.3.7 ................................................................................. 171 EP.3.8 ................................................................................. 171
xiii
Captulo 4: Arreglos ........................................................... 173 E.4.1 ................................................................................... 175 E.4.2 ................................................................................... 180 E.4.3 ................................................................................... 185 4.2 Resumen ...................................................................... 189 EJERCICIOS PROPUESTOS ................................................. 190 EP.4.1 ................................................................................. 190 EP.4.2 ................................................................................. 190 EP.4.3 ................................................................................. 190 EP.4.4 ................................................................................. 191 EP.4.5 ................................................................................. 192 EP.4.6 ................................................................................. 192 EP.4.7 ................................................................................. 193
xiii
xiv
Captulo 5: C++ ................................................................. 195 5.1 Estudio de un programa en C++ ...................................... 195 E.5.1 .................................................................................. 195 5.2 Comentarios .................................................................. 196 5.3 Caracteres de impresin especiales .................................. 199
xiv
Introduccin
Este libro se escribi para que sea estudiado y consultado, por los estudiantes de educacin tcnica, tecnolgica y universitaria que necesiten cursar materias relacionadas con la computacin o la definicin de algoritmos. La literatura relacionada con los temas previos a la programacin es escasa. Los libros que se encuentran en el mercado, abordan la programacin en diferentes lenguajes, pero no tienen en cuenta que los estudiantes puedan tener dudas o vacos en el desarrollo o planteamiento de un algoritmo, para luego ser traducido a un lenguaje de programacin especfico. Cuando estaba empezando a realizar este trabajo, algunos estudiantes de ingeniera de sistemas y de tecnologas en sistemas, revisaron los borradores y comentaron, si en la universidad hubiera encontrado un libro que explicara como plantear un algoritmo tan fcil, no habra repetido la materia y aprender a programar hubiera sido ms sencillo. Ensear a pensar es complicado, cada persona, realiza esta actividad de acuerdo a sus experiencias vividas, al entorno en el cual fue educado y en el medio en que se ha desenvuelto, sin olvidar su herencia gentica. Con este trabajo slo quiero mostrarle al lector cules son los pasos que puede seguir para definir correctamente un algoritmo, y comprobar su funcionamiento antes de traducirlo a un lenguaje de programacin. Todas las personas aplican inconscientemente algoritmos en las actividades que desarrolla en su vida cotidiana. Para cocinar, para trabajar, estudiar, hacer sus oficios, pero en el momento en que se le pide que escriba un algoritmo, se quedan bloqueadas, no saben por donde empezar. Por esta razn, antes de empezar a codificar un algoritmo en cualquier lenguaje de programacin, se le debe ensear al estudiante cmo escribir sus algoritmos y comprobar su funcionamiento. Y no como acostumbran la mayora de los
1 Procesos secuenciales
1.1 Introduccin En el diseo de programas para computadores hay tres elementos que es necesario tener en cuenta: Entrada de datos. Procesamiento de datos Obtencin de resultados Los datos de entrada corresponden a la informacin inicial que se tiene de una situacin determinada, que se quiere automatizar o modificar la forma como est sistematizada o como funciona manualmente. El procesamiento de datos consiste en el anlisis y manejo que se debe hacer a los datos de entrada, para obtener algunos resultados intermedios, que permiten llegar a la respuesta deseada o producto final. La obtencin de resultados, es el paso final del proceso que se realiza y proporciona la informacin que se espera obtener despus de haber analizado y trabajado con los datos iniciales. Cuando se trabaja solucionando los inconvenientes que se presentan en los programas de computadores, es necesario conocer todas las estructuras lgicas que se pueden utilizar para hacer que el computador ejecute de la manera ms rpida y eficiente los cdigos, sin presentar errores que hagan fallar los programas. Estas fallas o errores son la consecuencia de haberse equivocado en el momento de escribir el algoritmo que va a servir para resolver el problema, o en el momento de escribir el cdigo en el lenguaje que se est trabajando. Estas situaciones errneas se presentan porque el programador desconoce o no sabe aplicar las estructuras bsicas, para hacer los algoritmos que definen los diferentes caminos y pasos que debe seguir el computador para ejecutar el correcto procesamiento de los datos.
10
Si se siguen estos pasos en este orden, es seguro que el empleado podr restablecer nuevamente la iluminacin de la oficina para continuar trabajando. Este es el algoritmo que sirve para cambiar el bombillo. Cambiar el orden de los pasos no va a permitir que se pueda lograr el objetivo que se quiere lograr: restablecer la iluminacin de la oficina. Todas las personas actan de acuerdo a algoritmos que se establecen en la mente. Se tienen algoritmos para baarse, para vestirse, para cocinar, trabajar, estudiar, para todo y se siguen inconscientemente. 1.4 Seudocdigo El paso siguiente es realizar el seudocdigo. El seudocdigo es una forma de expresar las instrucciones que se realizan en el algoritmo, de la manera ms parecida a como se expresaran en un lenguaje de programacin.
11
12
Trapecio
Paralelogramo
14
15
16
17
Jerarqua Mayor
Menor
18
19
20
21
22
Operador No Y O
23
P&Q PyQ
24
PoQ Se puede representar de estas dos formas y tienen el mismo significado. La proposicin entonces queda: Roco est en Bogot o no viaj el fin de semana. 1.9 Tablas de certeza de los operadores lgicos Para poder saber si las proposiciones son ciertas o falsas, se utilizan las tablas de certeza. A continuacin se encuentran las tablas de certeza, para los tres operadores o trminos de enlace vistos. Negacin P P Cierta Falsa Falsa Cierta Tabla 1.6 En el ejemplo 5 > 3 la proposicin es cierta, y al hacer la negacin (5>3) es falsa, porque cinco es mayor que tres. Cuando la proposicin es Falsa, 5 < 3 al hacer la negacin (5<3), pasa a ser Cierta. En conclusin la negacin de una proposicin cierta es falsa y la negacin de una proposicin falsa es cierta.
25
Tabla 1.7 Para que la proposicin sea cierta, se requiere que las dos proposiciones que est uniendo el operador o trmino de enlace sean ciertas. Si alguna de las dos no es Cierta, la proposicin es Falsa. En este ejemplo (3 = 9/3) 4 es divisible por 2; las 2 proposiciones son ciertas, entonces la conjuncin es Cierta. Si (3 = 9/2) 4 es divisible por 2; la primera es Falsa y la segunda es Cierta, entonces la conjuncin es Falsa. La conjuncin es cierta si y solo si las dos proposiciones son ciertas. Para la disyuncin (O) se tiene la Tabla 1.8 Conjuncin P Q Cierta Cierta Cierta Falsa Falsa Cierta Falsa Falsa (O) P Q Cierta Cierta Cierta Falsa
Tabla 1.8 Utilizando las proposiciones del ejemplo anterior, Si (3 = 9/2) v 4 es divisible por 2; la primera es Falsa y la segunda es Cierta, entonces la conjuncin es Cierta. La disyuncin de dos proposiciones es cierta si y solo si al menos una de las dos proposiciones es cierta.
26
27
28
Suma
Terminar Figura 1.2 Inicia se da comienzo al diagrama de flujo y a los Con el smbolo r procesos que se quieren realizar con l. Segundo nmero se utilizan para Los smbolos Primer nmero y indicar que se estn leyendo el primer nmero y el segundo nmero. Con Suma = Primero + Segundo se ejecuta la suma del primer nmero y el segundo nmero y se guarda en una variable llamada suma. Para presentar el resultado de todo el proceso que est almacenado en la variable suma, se utiliza Suma
29
Tabla 1.10 Se han ledo para la variable Primero el valor 1 y para la variable Segundo el valor 2. Hasta ahora se han ejecutado las tres primeras instrucciones del diagrama de flujo. Se sigue con la cuarta instruccin que indica que se realice la suma de los dos valores que se almacenan en las variables y se guarde en la variable Suma y da como resultado 3 Primero 1 Segundo 2 Tabla 1.11 Se contina con la ltima instruccin para presentar el resultado de la variable Suma. Primero 1 Segundo 2 Suma 3 Presentar Suma 3 Suma 3
Tabla 1.12
30
31
3.141592
Tabla 1.13
32
3.141592
Tabla 1.14 Se ha comprobado que el algoritmo est correctamente diseado y arroja los valores esperados. E.1.3 Crear un algoritmo que calcule la suma de dos nmeros, del primero reste el segundo y el producto de ellos. Por ltimo que presente los valores contenidos en las variables Suma, Resta y Producto. Anlisis de la informacin Inicialmente se necesita conocer el valor de los dos nmeros para realizar la suma, luego del primer nmero restar el segundo, y por ltimo multiplicar el primer nmero por el segundo. El valor de la suma se almacena en una variable Suma, la resta en una variable llamada Resta y el producto en una llamada Producto. Algoritmo Paso 1: Conocer primer nmero Paso 2: Conocer segundo nmero Paso 3: Sume el primer nmero al segundo nmero y almacnelo en Suma Paso 4: Del primer nmero reste el segundo nmero y almacnelo en Resta Paso 5: Multiplique el primer nmero por el segundo nmero y almacnelo en Producto. Paso 6: Terminar.
33
34
Tabla 1.15 De acuerdo con el algoritmo, se debe realizar la suma de estas dos variables y guardar este resultado en una variable llamada Suma que es igual a 3. Primero 1 Segundo 2 Tabla 1.16 Se contina con la instruccin siguiente establecida en el algoritmo, que consiste en restar del valor de la variable Primero el valor de la variable Segundo y guardarlo en la variable Resta que es igual a -1. Primero 1 Segundo 2 Suma 3 Resta -1 Suma 3
Tabla 1.17 La siguiente instruccin consiste en realizar el producto de los valores almacenados en las variables Primero y Segundo. Este resultado se almacena en la variable Producto y es igual a 2.
35
Tabla 1.18 Para finalizar, se debe presentar el valor de las variables Suma, Resta y Producto.
Primero Segundo Suma Resta Producto Presentar Suma Presentar Resta Presentar Producto
-1
-1
Tabla 1.19 De esta forma quedan ejecutadas todas las operaciones indicadas en el algoritmo. Los valores obtenidos en cada una de las operaciones, son congruentes con los valores esperados para este algoritmo. E.1.4 Escriba un algoritmo que indique la manera como se prepara una mantecada. Anlisis de la informacin Para preparar una mantecada, primero se deben tener a mano todos los ingredientes que se necesitan y luego, saber cul es la forma exacta de preparacin. Los ingredientes que se deben tener a mano para preparar la mantecada son: de libra de mantequilla o margarina o manteca de marrano. 1 libra de azcar. 2 copas de aguardiente. 10 huevos. tazas rasas de fcula de maz. taza de harina de trigo 1/8 de cucharadita de sal.
36
37
38
39
40
La diferencia es:
El producto es:
El cociente es:
Para poder realizar el cociente, es necesario multiplicar la fraccin por el conjugado, esto es:
41
y B y B y B y A
42
c C=c d D=d H
43
Suma1 = A+C
SI USTED EST INTERESADO EN SEGUIR CONSULTANDO ESTE LIBRO, LO Suma2 = B+D PUEDE COMPRAR EN LA PGINA WWW.NEFRABEL.NET o contactar al autor en la cuenta de correo algoritmos@nefrabel.net
La suma es , Suma1,+, Suma2, ; La resta es , Resta1,-, Resta2, ; El producto es , Producto1,+, Producto2, ; El cociente es , Cociente1/Cociente3, +, Cociente2/Cociente3,
Terminar Figura 1.6 Prueba de escritorio La prueba de escritorio se va a realizar para los siguientes nmeros complejos: 5+3 y 2Entonces se leen los nmeros a, b, c y d, y se guardan en las variables A, B, C, D respectivamente. a 5 b 3 c 2 d -1 A 5 B 3 C 2 D -1
Tabla 1.20
44
Tabla 1.21 Este es un interesante ejercicio, que permite ver la importancia de realizar un buen anlisis de la informacin antes de empezar a ejecutar operaciones, sin tener la informacin completa de qu se debe hacer. En el desarrollo de este algoritmo se realizaron algunas prcticas que son convenientes que adquiera todo programador, por ejemplo, despus de leer un dato, almacenarlo en una variable antes de empezar a realizar las operaciones, porque cuando se est trabajando en un lenguaje de programacin como C++, se debe definir el tipo de variable y luego si almacenar el dato para poder empezar a utilizarlo en las operaciones que se necesite realizar. Otro buen hbito de programacin es ir guardando en variables las operaciones intermedias, para ser utilizadas ms adelante en el mismo algoritmo. Para la presentacin del mensaje final en el diagrama de flujo, se utiliz un nuevo smbolo y en el seudocdigo y diagrama de flujo una nueva manera de presentar el mensaje al usuario del programa.
45
La suma es , Suma1,+, Suma2, ; La resta es , Resta1,-, Resta2, ; El producto es , Producto1,+, Producto2, ; El cociente es , Cociente1/Cociente3, +, Cociente2/Cociente3,
Figura 1.7 Este smbolo se utiliza cuando se quiere indicar que el mensaje se va a presentar por pantalla. La suma es , Suma1,+, Suma2, . Esta manera de presentarlo es un poco particular. Los textos que estn escritos entre comillas dobles, quiere decir que van a aparecer como estn escritos, la coma (,) indica que a continuacin va otro dato. En este caso aparece Suma1, entonces va a aparecer el valor que est almacenado en esta variable, no el nombre de la variable, que es igual a 7. Luego aparece el signo + porque est entre comillas, en seguida el valor de la variable Suma2 que es igual a 2 y por ltimo la letra i que se encuentra entre comillas, entonces el usuario ver este mensaje:
En cada ejercicio va a encontrar elementos que no necesariamente se van a estar nombrando pero su observacin, capacidad analtica, inductiva-deductiva y poder de sntesis, permite que al usted descubrirlos, entren a formar parte ms pronto de su imaginario, y pueda avanzar fcilmente en el aprendizaje del diseo de algoritmos para la programacin de computadores y creacin de algoritmos.
46
Se aplica una metodologa que le permita al programador, seguir una secuencia para resolver los problemas; estos pasos son: el anlisis de la informacin, definir el algoritmo, escribir el seudocdigo, realizar el diagrama de flujo y hacer la prueba de escritorio. Este proceso de analizar la informacin es importante y se toma a la ligera, porque se debe tener bien claro qu es lo que quiere y necesita el usuario, y qu es lo que ha entendido quien va a hacer la programacin. Un algoritmo es una receta que se debe realizar con pasos finitos, ordenados, que permiten obtener un resultado especfico. El seudocdigo es una forma de expresar las instrucciones que se realizan en el algoritmo, de la manera ms parecida a como se expresaran en un lenguaje de programacin. El diagrama de flujo es la representacin grfica del algoritmo. La prueba de escritorio es la prueba final del algoritmo, antes de pasar al lenguaje de programacin. Una variable es un espacio temporal de memoria, donde se va a almacenar la informacin mientras se est ejecutando el algoritmo o el programa. Esta informacin se puede cambiar durante la ejecucin del programa.
47
Las expresiones lgicas tambin conocidas como booleanas, estn compuestas por nmeros, constantes, variables y operadores relacionales o lgicos. Cuando se evalan estas expresiones, el resultado que se obtiene es verdadero o falso. Se utilizan en los procesos de decisin y en una clase de proceso repetitivo.
48
49
50
51
Si
En la Figura 2.1, se puede ver con claridad cul es la forma de representar este proceso en un diagrama de flujo. Para entenderlo mejor, observar atentamente algunos ejemplos.
52
En el Paso 3 se puede ver la validacin del dato almacenado en la variable Nmero. Si este valor es mayor que cero, se contina con el Paso 4, si no lo es, se sigue con el Paso 5 para terminar el algoritmo. Seudocdigo Lea nmero Nmero = nmero Si Nmero > 0 haga Presente El nmero es mayor que cero Fin si Terminar
53
Nmero > 0 No
Terminar Figura 2.2 Nmero Este smbolo indica que se est leyendo correspondiente al nmero que se quiere evaluar. Nmero = nmero el valor
En esta instruccin, se est asignando o guardando el valor que se acaba de leer, en la variable Nmero. Se debe tener en cuenta que las asignaciones de los valores de las variables se realizan de derecha a izquierda. El nombre de la variable debe estar en el lado izquierdo de la asignacin.
54
Este smbolo se utiliza para indicar que se va a presentar un mensaje al usuario del programa. Prueba de escritorio Para comprobar el funcionamiento del algoritmo, se van a utilizar dos nmero, el 1 y -1. Se utiliza una tabla para ir registrando los datos que van apareciendo en el algoritmo. Se inicia la primera prueba para el nmero 1. nmero 1 Tabla 2.1 Ahora se guarda este valor que se acaba de leer en la variable Nmero. nmero 1 Nmero 1
Tabla 2.2 Se hace la comparacin de la variable Nmero con el cero. Como es mayor que cero, entonces se presenta el mensaje al usuario.
55
Tabla 2.5 Se hace la comparacin de la variable Nmero con el cero. Como es menor que cero, entonces no se presenta el mensaje al usuario y se termina el proceso. sta es la mejor manera de comprobar que el trabajo est bien hecho, validando con datos reales y verificando que los resultados obtenidos son los esperados. ste es un ejercicio sencillo, pero a medida que se va avanzando en el captulo, el grado de complejidad va aumentando. E.2.2 Escriba un algoritmo que lea 2 nmeros. El primero se debe guardar en una variable llamada Numerador y el segundo en una variable llamada Denominador. Luego realice la divisin de Numerador entre Denominador. Presentar el valor de la divisin. Si la divisin no es posible realizarla, entonces terminar. Anlisis de la informacin En este ejercicio, se van a leer dos nmeros, se guarda el primero en la variable Numerador y el segundo en la variable Denominador. Antes de realizar la divisin se debe comparar la variable
56
Seudocdigo Leer primer nmero Numerador = primer nmero Leer segundo nmero Denominador = segundo nmero Si Denominador <> 0 haga Divisin = Numerador / Denominador Fin si Presentar Divisin Terminar
57
Denominador = Segundo
Denominador<>0 Si
No
Divisin = Numerador/Denominador
Divisin
Terminar Figura 2.3 Prueba de escritorio Para comprobar que el algoritmo funciona correctamente, se va a probar con dos valores, 1 y 2 luego con 1 y 0. Se empieza a comprobar con 1 y 2. Se lee el primer nmero que es igual a 1. primero 1 Tabla 2.6
58
Tabla 2.7 Ahora se lee el segundo nmero que es igual a 2. primero 1 Numerador 1 Tabla 2.8 Se guarda el segundo nmero ledo en la variable Denominador. primero 1 Numerador 1 segundo 2 Denominador 2 segundo 2
Tabla 2.9 Viene ahora la comprobacin del Denominador. El valor de la variable Denominador es diferente de 0, entonces se realiza la divisin del Numerador entre el Denominador y se almacena este valor en la variable Divisin. El resultado de esta divisin es 0.5. primero 1 Numerador 1 segundo 2 Denominador 2 Divisin 0.5
Tabla 2.10 Qued comprobado que funciona el algoritmo, para dos nmeros diferentes de cero. Ahora se va a hacer la prueba de escritorio para dos nmeros diferentes 1 y 0. Se lee el primer nmero que es igual a 1.
59
Tabla 2.12 Ahora se lee el segundo nmero que es igual a 0. primero 1 Numerador 1 Tabla 2.13 Se guarda el segundo nmero ledo en la variable Denominador. segundo 0
primero 1
Numerador 1
segundo 0
Denominador 0
Tabla 2.14 A continuacin se realiza la comprobacin del Denominador. El valor de la variable Denominador es igual a 0, entonces se termina el algoritmo. De esta forma se evala el comportamiento del algoritmo que cumple con las expectativas planteadas en el enunciado del ejercicio. E.2.3 Haga un algoritmo que lea y compare 3 nmeros, que el primero que lea lo guarde en una variable llamada Mayor, el segundo en una variable llamada Medio y el ltimo en una llamada Menor, luego diga cul es el mayor, cul el intermedio y cul el menor, y a medida que los vaya leyendo que cada uno lo guarde en
60
61
62
63
Tabla 2.15 Ya estn ledos y almacenados en sus respectivas variables los valores iniciales. Se hace la primera comparacin para saber si el valor de la variable Mayor es menor que el contenido de la variable
64
Tabla 2.16 Continuando con la siguiente comparacin, se verifica si el valor de la variable Mayor es menor que el valor de la variable Menor. Si esto no es cierto, se contina con la tercera comparacin del algoritmo, pero si es cierto, entonces se debe hacer el intercambio de las variables. Se guarda inicialmente el valor de la variable Mayor en la variable temporal C, luego el valor de la variable Menor en la variable Mayor y por ltimo, el valor que se guard temporalmente en la variable C, se guarda en la variable Menor, el valor de la variable Medio sigue igual. Mayor 1 2 3 Medio 2 1 1 Menor 3 3 2 C 1 2
Tabla 2.17 La ltima comparacin a realizar es si el valor de la variable Medio es menor que el valor de la variable Menor. Cuando esto no es cierto, se contina con la siguiente instruccin, pero si es cierto se hace el ltimo cambio de variables del algoritmo. El valor de la variable Medio se guarda en la variable temporal C, luego el valor de
65
Tabla 2.18 En la cuarta fila de la Tabla 2.19, se puede ver que los tres valores de las variables, quedaron ordenados de mayor a menor y en cada una de las variables se almacen el valor correspondiente. Como ejercicio, el lector puede utilizar el concepto de ordenacin en burbuja, y basndose en el ejemplo anterior para organizar los nmeros de menor a mayor, para reforzar los conocimientos aprendidos. Mayor 1 2 3 3 Medio 2 1 1 2 Menor 3 3 2 1 C Presente Mayor Presente Medio Presente menor
1 2 1
3 Tabla 2.19
E.2.4 Escriba un algoritmo que lea la magnitud de un vector, sus tres ngulos directores y luego lo exprese en funcin de sus componentes vectoriales en las direcciones de los vectores unitarios
Anlisis de la informacin Este es otro ejercicio muy interesante, porque requiere que se investigue un poco de qu est hablando el enunciado, antes de empezar a escribir el algoritmo.
66
est formado por el vector y el eje de las Y, el ngulo est formado por el vector y el eje Z. Los vectores unitarios estn en la direccin de los ejes X, Y, Z respectivamente. Entonces ya se puede calcular el valor de las componentes vectoriales. Para poder comprobar que los ngulos son correctos se debe cumplir la siguiente igualdad: Cos2( ) Cos2( ) Cos2( ) 1
Si se cumple, se pueden hacer los clculos: Componente en la direccin de Componente en la direccin de = M*Cos( = M*Cos( ) )
67
Teniendo esta informacin, el vector se expresa de la siguiente forma: M = M*Cos( ) Algoritmo Paso 1: Lea la magnitud del vector Paso 2: Guardarla en la variable M Paso 3: Lea el ngulo que el vector forma con el eje x Paso 4: Guardarlo en la variable A Paso 5: Lea el ngulo que el vector forma con el eje y Paso 6: Guardarlo en la variable B Paso 7: Lea el ngulo que el vector forma con el eje z SI USTED EST INTERESADOla variable CONSULTANDO ESTE LIBRO, LO Paso 8: Guardarlo en EN SEGUIR C vaya Paso Paso Paso Paso Paso el Paso 14 10: Guarde en la variable Mx la operacin M*Cos(A) 11: Guarde en la variable My la operacin M*Cos(B) 12: Guarde en la variable Mz la operacin M*Cos(C) 13: Presente M = , Mx, + ", My, +", Mz, 14: Termine. + M*Cos( ) + M*Cos( ) .
PUEDE COMPRAR EN2LA PGINA 2 WWW.NEFRABEL.NET o contactar al autor en la 2 Paso 9: Si Cos (A) Cos (B) cuenta de correo algoritmos@nefrabel.net Cos (C) 1 contine, de lo contrario
Seudocdigo Lea magnitud M = magnitud Lea X A=X Lea Y B=Y Lea Z C=Z Si Cos2(A) Cos2(B) Cos2(C) 1 haga Mx = M*Cos(A) My = M*Cos(B) Mz = M*Cos(C)
68
SI USTED EST INTERESADO EN SEGUIR CONSULTANDO ESTE LIBRO, LO PUEDE COMPRAR EN LA PGINA WWW.NEFRABEL.NET o contactar al autor en la 2 2 cuenta de correo algoritmos@nefrabel.net + Cos (A) + Cos (B)
Cos (C) = 1
2
Si
69
Tabla 2.20 Ahora se contina leyendo los ngulos que el vector forma con los ejes coordenados. magnitud 10 M 10 X 64.89 A 64.89 Y 55.54 B 55.54 Z 44.99 C 44.99
Tabla 2.21 Se contina con la validacin de los ngulos ledos, y es igual a: Cos2(A) + Cos2(B) + Cos2(C) = 1, Entonces Cos2(64.89) + Cos2(55.54) + Cos2(44.99) = 1.002, esto indica que estn correctos los ngulos y corresponden al mismo vector. Se sigue con el clculo de las componentes vectoriales. magnitud 10 M 10 X 64.89 Mx 4.24 A 64.89 My 5.66 Y 55.54 Mz 7.10 B 55.54 Z 44.99 C 44.99
Tabla 2.22 El mensaje presenta el vector en sus componentes vectoriales en la direccin de los vectores unitarios i, j, k.
magnitud 10 M 10 X 64.89 Mx A 64.89 My Y 55.54 Mz B 55.54 Z 44.99 Mensaje C 44.99
70
Tabla 2.23 Este ejercicio, muestra de una manera sencilla cmo se realiza la comparacin para validar una operacin y poder determinar qu camino se debe seguir, si se cumple la condicin, entonces se ejecutan ciertas instrucciones, de lo contrario se sigue con las otras sentencias del diagrama de flujo. E.2.5 Realice un algoritmo que lea tres nmeros y determine si corresponden a los lados de un tringulo, si es as, entonces clasifique el tipo de tringulo: escaleno, issceles, equiltero. Anlisis de la informacin Una vez conocidos los valores correspondientes a los tres lados, se almacenan en tres variables llamadas Lado1, Lado2 y Lado3 respectivamente. Luego se verifica que realmente correspondan a un tringulo haciendo que la suma de dos de los lados sea mayor que el tercer lado. Esta comparacin se realiza para (Lado1 + Lado2) > Lado3, luego, (Lado1 + Lado3) > Lado2 y por ltimo SI USTED EST > Lado1, ya te tienen todas las comparaciones (Lado3 + Lado2)INTERESADO EN SEGUIR CONSULTANDO ESTE LIBRO, LO PUEDE COMPRAR qu PGINA tringulo es, issceles, equiltero o posibles para saber EN LA tipo de WWW.NEFRABEL.NET o contactar al autor en la cuenta de correo algoritmos@nefrabel.net escaleno. En el caso que no se cumplan estas tres validaciones de la informacin, los lados no corresponden a un tringulo. Algoritmo Paso 1: Conocer el primer nmero. Paso 2: La variable Lado1 es igual a primer nmero. Paso 3: Conocer el segundo nmero. Paso 4: La variable Lado2 es igual a segundo nmero. Paso 5: Conocer el tercer nmero. Paso 6: La variable Lado3 es igual a tercer nmero. Paso 7: Comparar que la suma de Lado1 ms Lado2 es mayor que Lado3.
71
72
Iniciar primero SI USTED EST INTERESADO EN SEGUIR CONSULTANDO ESTE LIBRO, LO PUEDE COMPRAR EN LA PGINA WWW.NEFRABEL.NET o contactar al autor en la cuenta de correo algoritmos@nefrabel.net Lado1 = primero segundo Lado2 = segundo tercero Lado3 = tercero A
73
(Lado1 + Lado2) > Lado3 Si (Lado1 + Lado3) > Lado2 Si (Lado2 + Lado3) > Lado1
No
No
No
SI USTED EST INTERESADO EN SEGUIR CONSULTANDO ESTE LIBRO, LO PUEDE COMPRAR EN LA PGINA WWW.NEFRABEL.NET o contactar al autor en la Si cuenta de correo algoritmos@nefrabel.net
74
Tabla 2.24 Inicialmente, se leen los valores y se guardan en las tres variables respectivas. La primera comparacin es cierta, ya que (Lado1 + Lado2) > Lado3, entonces se debe continuar con la opcin del si, ahora (Lado2 + Lado3) > Lado1, esta comparacin result cierta, entonces se sigue con la opcin del si, y se tiene (Lado1 + Lado3) > Lado2, despus de hacer estas comparaciones entre los valores de las variables, se puede decir que corresponden a un tringulo. Para saber qu tipo de tringulo es, se comparan los valores de las tres variables para comprobar si son iguales o diferentes, en este caso los tres valores son diferentes entre s, entonces el tringulo es escaleno. Hacer ahora la prueba de escritorio para otros valores diferentes: primero 2 segundo 4 tercero 2 Lado1 2 Lado2 4 Lado3 2
Tabla 2.25 Inicialmente, se leen los valores y se guardan en las tres variables respectivas. La primera comparacin es cierta, ya que (Lado1 + Lado2) > Lado3, entonces se debe continuar con la opcin del si, ahora (Lado2 + Lado3) > Lado1, esta comparacin result cierta, entonces se sigue con la opcin del si, y se tiene (Lado1 + Lado3) > Lado2, que resulta falso, entonces los lados no corresponden a un
75
76
SI USTED EST INTERESADO EN SEGUIR CONSULTANDO ESTE LIBRO, LO PUEDE COMPRAR EN LA PGINA WWW.NEFRABEL.NET o contactar al autor en la Si cuenta de correo algoritmos@nefrabel.net
Comisin = Venta*0.1 A
77
Ventas = , Venta Comisiones = , Comisiones Terminar Figura 2.8 Prueba de escritorio Tomar el INTERESADO EN SEGUIR CONSULTANDO ESTE SI USTED ESTvalor de las ventas igual a $ 2450,000. LIBRO, LO PUEDE COMPRAR EN LA PGINA WWW.NEFRABEL.NET o contactar al autor en la cuenta de correo algoritmos@nefrabel.net ventas $ 2450,000 Tabla 2.26 Ahora se guarda el valor ledo de las ventas en la variable Ventas. ventas $ 2450,000 Venta $ 2450,000
Tabla 2.27 La primera validacin de la variable Venta, pide que se verifique si es menor que $ 500,000; en este caso no es cierto, entonces se hace la asignacin de la variable Comisin igual a cero.
78
Tabla 2.29 Por ltimo falta comprobar la tercera expresin Venta > $2000,000; en este caso es verdadera. El valor de la Comisin es $229,500. La comisin final es de $ 245,000 ms la comisin por ser las ventas mayores de $ 2000,000 que es igual a $ 229,500. Los mensajes son Ventas =, Venta, Comisin =, Comisin. ventas $ 2450,000 Venta $ 2450,000 Comisin 0 $ 245,000 $ 474,500 Tabla 2.30 Mensaje Ventas =, Venta Comisin =, Comisin
79
No
Si ____?
Si
Figura 2.9 Es un proceso sencillo, pero de mucha utilidad cuando se est programando o escribiendo algoritmos y se est aplicando la programacin estructurada. Para aplicar este proceso, se debe tener cuidado de no cometer algunos errores de concepto, cuando se trabaja con este proceso anidado dentro de otro; esto se va a encontrar en los siguientes ejercicios. E.2.7 Crear un algoritmo para comparar dos nmeros diferentes y decir cul es el mayor y cul el menor. El valor del primer nmero almacenarlo en una variable llamada Primero y el valor del segundo nmero en una variable llamada Segundo. Al final presentar un mensaje que diga El mayor es: y a continuacin el nmero; seguido de El menor es: y enseguida el nmero. Anlisis de la informacin Se van a leer dos nmeros, y luego se realizan las comparaciones necesarias para determinar cul es el mayor y cul es el menor, y por ltimo se presenta al usuario que est trabajando con el algoritmo, un mensaje indicando qu nmero es el mayor y qu nmero es el menor. Se puede trabajar con la comparacin de que
80
81
Si
El mayor es: Primero; El menor es: Segundo
82
No
Si
De acuerdo con la respuesta que se reciba en el momento de hacer la comparacin, as mismo se ejecuta una instruccin diferente, dependiendo de que la respuesta sea Si o No. En este ejercicio se compar Primero > Segundo, pero tambin se puede hacer Primero < Segundo. Ambas expresiones son correctas. Prueba de escritorio Es el momento de verificar si la lgica utilizada para escribir el algoritmo est correcta y los valores que presenta son vlidos. Se toman inicialmente dos nmeros cualesquiera y se le asignan a las variables primero y segundo registrndolos en una tabla. Se utilizan los nmeros -1 y 2 primero -1 Tabla 2.31 Siguiendo el orden de las instrucciones del diagrama de flujo, se almacena ese valor en una variable de nombre Primero. primero -1 Primero -1
83
Tabla 2.34 Ahora se hace la comparacin, el contenido de la variable Primero es mayor que el contenido de la variable Segundo? No, entonces, se presenta el mensaje al usuario del algoritmo. primero -1 Primero -1 segundo 2 Segundo 2 Mensaje El mayor es: 2; El menor es: -1
Tabla 2.35 Se toman los valores invertidos, para verificar la otra opcin que permite el algoritmo. Primero 2 Segundo -1
Tabla 2.36 El contenido de la variable Primero es mayor que el contenido de la variable Segundo? Si, entonces Primero 2 Segundo -1 Mensaje El mayor es: 2; El menor es: -1 Tabla 2.37
84
sta es la forma general de una ecuacin de segundo grado. Cmo se resuelve una ecuacin de segundo grado? Bueno, hay dos formas, si es factorizable, entonces se factoriza y se despejan las races para poder encontrar las races que son las soluciones de la ecuacin. Si no es factorizable cmo se calculan las races?
Esta ecuacin calcula las races de la ecuacin de segundo grado, simplemente reemplazando los coeficientes A, B y C. Qu pasa si A es igual a cero? Hasta ahora todo va bien, pero qu pasa si el valor del discriminante es menor que 0? Si es mayor o igual a cero, las races estn dentro del conjunto de los reales, pero si es menor se tiene una raz cuadrada de un nmero negativo, que corresponde al conjunto de los imaginarios. En el captulo anterior se realiz un ejercicio que trata de operaciones con nmeros complejos, entonces ya se sabe que , que es un dato importante en el momento de calcular el discriminante. Cuando se escribe esta expresin se est indicando que se va a calcular su valor absoluto. Entonces ya se
85
86
87
X1 = X1 = X1 =, X1; X2 =, X2
Terminar Figura 2.12 Prueba de escritorio Este es un ejercicio interesante, que permite ver claramente, que antes de empezar a escribir, se debe analizar la informacin que dan en el enunciado del ejercicio, qu se tiene que calcular antes de poder llegar a la respuesta final y por qu mtodos. La prueba de escritorio se hace para la ecuacin:
88
Tabla 2.38 La instruccin siguiente es calcular el valor del discriminante. A 7 B 2 C 1 Discriminante -32
Tabla 2.39 El discriminante es menor que 0, entonces este valor est dentro del conjunto de los imaginarios porque no se puede calcular la raz cuadrada de un nmero dentro del conjunto de los nmeros reales. Entonces calcular el valor de Discriminante1 A 7 B 2 C 1 Discriminante -32 Tabla 2.40 El clculo de la variable Factor es A 7 B 2 C 1 Discriminante -32 Discriminante1 Factor Discriminante1
Tabla 2.41 Los clculos ya estn todos realizados, entonces se puede presentar el mensaje con los valores de las dos races complejas.
A 7 B 2 C 1 Discriminante -32 Discriminante1 Factor X1 X2
Tabla 2.42
89
E.2.9 En una universidad tienen los siguientes criterios para admitir a los estudiantes. Clasifican los exmenes de admisin calificados de 0 a 100 de la siguiente manera: 0 <= bajo <= 65 66 <= medio <= 85 86 <= alto <= 100 Si un estudiante obtuvo un puntaje alto, tiene el cupo para la primera opcin de carrera para la cual se inscribi. Si el puntaje es medio, tiene el cupo para la segunda opcin de carrera que se inscribi. Si el puntaje es bajo, no tiene el cupo para entrar a la universidad. Las becas se otorgan nicamente a los estudiantes nuevos que tuvieron el puntaje alto y el criterio para adjudicarlas es: Si el promedio de la secundaria es mayor que 4.50, el aspirante tiene una beca del 100% del valor del semestre, si su promedio fue menor o igual a 4.50, y mayor que 4.00 le otorgan beca del 50% del valor del semestre. Escriba un algoritmo que lea el cdigo del estudiante, el puntaje de su examen de admisin y la nota promedio de su educacin secundaria, y luego clasifique el puntaje, el promedio de la secundaria y le informe si fue admitido, a que opcin inscrita y si fue becado. Anlisis de la informacin En este ejercicio, hay que poner atencin a los estudiantes que obtienen el puntaje alto, para luego hacer la validacin de la informacin del promedio de la secundaria y poder determinar si
90
91
Diagrama de flujo Iniciar cdigo Id = cdigo examen Puntaje = examen promedio Prom = promedio A
92
Puntaje >= 86
SI USTED EST INTERESADO EN SEGUIR CONSULTANDO ESTE LIBRO, LO Si PUEDE COMPRAR EN LA PGINA WWW.NEFRABEL.NET o contactar al autor en la Prom > 4.5 cuenta de correo algoritmos@nefrabel.net
Si
No
No
Id, Aceptado, segunda opcin Prom <= 4.5 Y Prom > 4.0 No
Terminar Figura 2.13 Prueba de escritorio Los datos que se van a utilizar para hacer la prueba de escritorio son: cdigo = 98765, examen = 98, promedio = 4,6. Se guardan en las variables correspondientes.
93
Tabla 2.43 En la primera expresin que se valida, se comprueba que el puntaje es mayor que 86, entonces se sigue por la alternativa del si. La siguiente comprobacin, tambin es cierta, pues el promedio es 4,6 y la alternativa a seguir es la del si. Entonces el mensaje que se presenta es Id, Aceptado, primera opcin, Beca 100%. Cdigo 98765 Promedio Id Puntaje Prom 4,6 98765 98 4,6 Mensaje Id, Aceptado, primera opcin, Beca 100% Tabla 2.44 2.3 Proceso de seleccin mltiple A este proceso se le llama de seleccin mltiple, porque eso es lo que hace, selecciona entre varias posibilidades que presenta la estructura, despus de haber hecho la validacin de la informacin y decide cul es la que cumple con el resultado que se obtuvo en la comparacin. Este es el tercer proceso que se utiliza cuando hay toma de decisiones entre tres o ms alternativas. Este tipo de proceso tiene aplicacin cuando se presentan varios caminos a seguir despus de que se evala una expresin, que no necesariamente tenga como respuesta verdadero o falso, si o no. Con los ejercicios que se desarrollan a continuacin, se aclara este concepto. La representacin grfica de este proceso, que se utiliza en los diagramas de flujo, es la de la Figura 2.14. Examen 98
94
Opcin 1 No
Accin a SI USTED EST INTERESADO EN SEGUIR CONSULTANDO ESTE LIBRO, LO Opcin 2 ejecutar 2 PUEDE COMPRAR EN LA PGINA WWW.NEFRABEL.NET o contactar al autor en la cuenta de correo algoritmos@nefrabel.net No Opcin 3 No Opcin N No Accin a ejecutar por defecto Salir del proceso Figura 2.14 En este diagrama de flujo se puede ver que inicialmente se recibe una expresin, que se debe evaluar con las diferentes posibilidades que presenta el proceso. En el momento que cumple con alguna de estas opciones, sigue por el camino indicado por el si, ejecuta la accin establecida para esta alternativa y luego sale del proceso. Si no cumple con ninguna de las opciones establecidas, entonces ejecuta la instruccin que est establecida por defecto y luego sale del proceso. La mejor manera de entenderlo es desarrollando unos ejercicios. Si Accin a ejecutar N Si Accin a ejecutar 3
Si
95
96
97
Iniciar Nmero
SI USTED EST INTERESADO EN SEGUIR CONSULTANDO ESTE LIBRO, LO PUEDE COMPRAR EN LANlados = Nmero PGINA WWW.NEFRABEL.NET o contactar al autor en la cuenta de correo algoritmos@nefrabel.net
Si
No hay polgonos de 1 lado No hay polgonos de 2 lado El polgono es un tringulo El polgono es un cuadriltero El polgono es un pentgono B
Si
Si
Si
Si
98
Si
Si
Terminar Figura 2.15 Prueba de escritorio Es el momento de probar si la lgica aplicada fue la correcta, cuando se escribi el algoritmo. Se toma un valor de prueba para empezar, se almacena en la variable Nlados y se registra en la Tabla, para empezar a ejecutar las instrucciones que indica el diagrama de flujo. Nmero 4 Nlados 4
Tabla 2.45 Entonces, ya se ley el valor de la variable Nlados y se va a realizar la primera comparacin, se quiere saber si el valor de Nlados es igual a uno?, no, entonces se verifica la siguiente alternativa Nlados es igual a dos?, tampoco se cumple, se contina con la siguiente, Nlados es igual a tres?, no se cumple, la que est a continuacin, Nlados es igual a cuatro? Esta si se cumple, entonces
99
100
101
Nota = 5 No
Si
Excelente
Regular
Terminar Figura 2.16 Prueba de escritorio Este es el momento de probar si el trabajo estuvo bien hecho, realizando la prueba de escritorio. Se toma un valor para la nota que determina cul es el desempeo correspondiente y se almacena en la variable Nota. Esta asignacin se realiza escribindola en la siguiente tabla.
102
Tabla 2.48 Como ya se tiene el valor de la variable Nota, se realiza la primera comparacin
Nota = 5
Si
Figura 2.17 El valor de la variable Nota, no es igual a 5, es 3, entonces no se puede optar por la opcin Si, se sigue con la comparacin siguiente. Si
Nota = 4
Figura 2.18 En esta segunda comparacin el valor de la variable Nota, no es igual a 4, es 3, entonces no se puede optar por la opcin Si, se sigue con la comparacin siguiente. Nota = 3 Si Regular
Figura 2.19 Esta comparacin si cumple con la condicin de que Nota es igual a 3. Entonces ya se puede seguir por la opcin si, para continuar con el flujo establecido por el algoritmo. Entonces la instruccin a ejecutar es imprimir un mensaje que dice Regular y a continuacin terminar el proceso.
103
Tabla 2.49 Ya se comprob que el algoritmo cumple con los requerimientos establecidos en el enunciado. E.2.12 Escriba un algoritmo por medio del cual se pide el da y el mes de nacimiento y luego le dice al usuario, cul es su signo zodiacal. Anlisis de la informacin El enunciado de este ejercicio es de los que dan poca informacin, pero exigen documentarse antes de empezar a trabajar. Para empezar se debe saber cules son los signos zodiacales, en qu da y mes empieza y en qu da y mes termina. Los meses se identifican Enero = 1, Febrero = 2, Marzo = 3, Abril = 4, Mayo = 5, Junio = 6, Julio = 7, Agosto = 8, Septiembre = 9, Octubre = 10, Noviembre = 11 y Diciembre = 12. El listado de los signos zodiacales, con el da en que empieza y en que termina es: Capricornio: 22 Diciembre - 19 Enero Acuario: 20 Enero 18 Febrero Piscis: 19 Febrero 20 Marzo Aries: 21 Marzo 19 Abril Tauro: 20 Abril 20 Mayo Gminis: 21 Mayo 19 Junio Cncer: 20 Junio 22 Julio Leo: 23 Julio 22 Agosto Virgo: 23 Agosto 22 Septiembre Libra: 23 Septiembre 22 Octubre Escorpin: 23 Octubre 21 Noviembre Sagitario: 22 Noviembre 21 Diciembre
104
105
106
107
, Signo
, Signo
, Signo
, Signo
108
Iniciar da Da = da mes
SI USTED EST INTERESADO EN SEGUIR CONSULTANDO ESTE LIBRO, LO PUEDE COMPRAR EN LA PGINA WWW.NEFRABEL.NET o contactar al autor en la Si cuenta de correo algoritmos@nefrabel.net
No Signo = Acuario
Da <= 19
Si Signo = Capricornio
109
Mes = 2
SI USTED EST INTERESADO EN SEGUIR CONSULTANDO ESTE LIBRO, LO PUEDE COMPRAR EN LA PGINA WWW.NEFRABEL.NET o contactar al autor en la cuenta de correo algoritmos@nefrabel.net
110
Mes = 6
Usted es signo , Signo Si SI USTED EST INTERESADO EN SEGUIR CONSULTANDO ESTE LIBRO, LO Mes = 7 PUEDE COMPRAR EN LA PGINA WWW.NEFRABEL.NET o contactar al autor en la No Si cuenta de correo algoritmos@nefrabel.net Da <= 22 Signo = Leo Signo = Cncer
111
Mes = 10
SI USTED EST INTERESADO EN SEGUIR CONSULTANDO ESTE LIBRO, LO Signo = Escorpin Signo = Libra PUEDE COMPRAR EN LA PGINA WWW.NEFRABEL.NET o contactar al autor en la cuenta de correo algoritmos@nefrabel.net
Terminar
Figura 2.20 Prueba de escritorio Este ejercicio es representativo para entender la metodologa de cmo se debe aplicar del proceso de seleccin mltiple. Se puede observar el poder que tiene este proceso y la cantidad de trabajo que se ahorra si se hace uso de l apropiadamente. Los datos de
112
Tabla 2.50 Se contina con la lectura del mes y almacenamiento del valor en la variable Mes. da 28 Da 28 mes 12 Mes 12
Tabla 2.51 Se realizan las doce comparaciones de acuerdo a cada uno de los meses y se puede verificar que en cada una de ellas se contina por la opcin del No, ya que slo coincide con la ltima que es Mes = 12. Como el da es mayor que 21, se sigue por la ruta del No, que hace que la variable Signo guarde el valor Capricornio. da 28 Da 28 mes 12 Mes 12 Signo Capricornio
Tabla 2.52 Para terminar, nicamente hace falta presentar el mensaje que le indica al usuario cul es su signo zodiacal. En este caso es: Usted es signo , Signo. da 28 Da 28 mes 12 Mes 12 Signo Capricornio Mensaje Usted es signo, Capricornio
Tabla 2.53
113
Las variables cumplen funciones de contadores o acumuladores. Son acumuladores, cuando al valor de una variable se le suma una cantidad, y luego el valor de esa suma se guarda en la variable inicial. Son contadores, cuando al valor de una variable se le suma uno, y luego el valor de esa suma se guarda en la variable inicial. Sirven para controlar el lmite de un proceso. El proceso Si _____ haga _____, es de seleccin simple, y permite que el flujo del algoritmo siga por una ruta especfica si cumple con las condiciones evaluadas. El proceso Si _____ haga _____ sino _____, es de seleccin doble, y permite que el flujo del algoritmo siga por cualesquiera de las dos rutas especificadas, si cumple con las condiciones evaluadas. Si despus de hacer la evaluacin, sta resulta cierta, entonces sigue un camino, si resulta falsa, sigue por el otro camino establecido. El proceso de seleccin mltiple, porque eso es lo que hace, cambia o seleccionar entre varias posibilidades que presenta la
114
115
116
Realice el anlisis de la informacin, algoritmo, seudocdigo, diagrama de flujo y prueba de escritorio. EP.2.6 En una cuenta de banco se consiga $ 1250,000 el primero de Julio de 1,999 y se retira en el 30 de Junio de 2,011. El banco paga un inters compuesto anual de 6.5%. Escriba un algoritmo que realice el clculo para cada ao y presente al usuario esta informacin, de la siguiente forma Ao: ______, Capital: ______ hasta llegar al ltimo ao. Realice el anlisis de la informacin, algoritmo, seudocdigo, diagrama de flujo y prueba de escritorio. EP.2.7 Se tiene un listado de 15 nmeros, se necesita saber cuntos nmeros pares hay en el listado y en qu ubicacin dentro del listado se encuentran, tambin se requiere conocer la sumatoria de todos los nmeros impares y por ltimo, se debe decir si dentro del listado est el cero y en qu posicin se encuentra. Realice el anlisis de la informacin, algoritmo, seudocdigo, diagrama de flujo y prueba de escritorio. EP.2.8 Se tiene la ecuacin . Hallar los puntos mximos y mnimos dentro del intervalo -5 <= x <= 5, con incrementos de 0,25. Al finalizar, solamente debe presentar las
117
119
3 Procesos repetitivos
SI USTED EST INTERESADO EN SEGUIR CONSULTANDO ESTE LIBRO, LO determinado EN LA PGINA WWW.NEFRABEL.NET o est cumpliendo PUEDE COMPRAR nmero de veces o mientras se contactar al autor en launa cuenta de correodeterminada. Estos procesos tienen una aplicacin muy condicin algoritmos@nefrabel.net
importante cuando se est trabajando con listados, arreglos o tablas. Existen dos clases, los procesos para y los procesos mientras que. 3.1 Proceso Para ________ hasta ________ de a ________; En el diseo de algoritmos en programacin de computadores, es necesario realizar procesos repetitivos un nmero determinado de veces y luego de que estas iteraciones se cumplen, continuar con las instrucciones siguientes del algoritmo. Este tipo de proceso se denomina Proceso Para y se representa en un diagrama de flujo de la siguiente forma: Para I=n hasta m de a p Proceso a realizar m veces T Figura 3.1 La instruccin Para I=n hasta m de a p, quiere decir: para I igual a n hasta m, incrementando de a p, realice las instrucciones que estn dentro del proceso. Por ejemplo: I = 1 hasta 5 de a 1. Esta instruccin indica que el ciclo empieza desde el momento que la variable I tenga un valor igual a 1, y se va incrementando en 1 cada vez que realiza las instrucciones que estn dentro del ciclo, hasta llegar al valor mximo igual a 5 y luego de hacer el ltimo ciclo, se termina el proceso.
120
SI USTED EST INTERESADO EN SEGUIR CONSULTANDO ESTE LIBRO, LO PUEDE COMPRAR EN LA PGINA WWW.NEFRABEL.NET o contactar al autor en la cuenta de correo algoritmos@nefrabel.net Seudocdigo
Lea inicial N = inicial Lea final M = final Lea incremento J = incremento Para I=N hasta M de a J Presente I Fin para Termine
121
SI USTED EST INTERESADO EN SEGUIR CONSULTANDO ESTE LIBRO, LO PUEDE COMPRAR EN LA PGINA WWW.NEFRABEL.NET o contactar al autor en la cuenta de correo algoritmos@nefrabel.net
J = incremento
I Terminar Figura 3.2 Este smbolo en el diagrama de flujo sirve para indicar cules son los lmites inferiores y superiores de las veces que se van a realizar las iteraciones, tambin indica en qu valor se van incrementando y dnde empieza el proceso Para. Para I=N hasta M de a J Este smbolo es la instruccin que se va a ejecutar 10 veces y presenta al usuario los diez valores que se van almacenando en la variable I. I
122
SI USTED EST INTERESADO EN SEGUIR CONSULTANDO ESTE LIBRO, LO Tabla 3.1 PUEDE COMPRAR EN LA PGINA WWW.NEFRABEL.NET o contactar al autor en la cuenta de correo algoritmos@nefrabel.net
En la variable I ya se almacen el valor inicial para empezar a realizar las iteraciones, la variable M guarda el valor hasta el cual van a llegar los incrementos, y el incremento se guarda en J que va a ser el valor que se va sumando a la variable I despus de ejecutar el ciclo. Entonces para la primera iteracin se tienen estos valores y el mensaje que se presenta al usuario es 1 inicial 1 N 1 final 10 M 10 incremento 1 Tabla 3.2 Para la segunda iteracin se tienen estos valores inicial 1 N 1 final 10 M 10 incremento 1 J 1 I 1 2 Tabla 3.3 Mensaje 1 2 J 1 I 1 Mensaje 1
123
124
125
7 8
Mensaje 1 2 3 4 5 6 7 8 9
126
Tabla 3.11 Con esta prueba de escritorio queda claro como es el funcionamiento de la estructura de procesos de repeticin Para. E.3.2 Realice un algoritmo, que lea un nmero y presente al usuario la tabla de multiplicar correspondiente del 1 al 10. Anlisis de la informacin Se necesita que el usuario que va a utilizar el algoritmo diga para qu nmero quiere calcular la tabla de multiplicar y el algoritmo la calcula desde 1 INTERESADOConociendo este nmero, se LIBRO, LO SI USTED EST hasta 10. EN SEGUIR CONSULTANDO ESTE utiliza el PUEDE COMPRAR EN LA PGINA WWW.NEFRABEL.NET o el resultado en Proceso Para que ejecuta los clculos y presenta contactar al autoral la cuenta de correo algoritmos@nefrabel.net usuario. Algoritmo Paso 1: Para qu nmero quiere calcular las tablas de multiplicar. Paso 3: Guardar el nmero en la variable Producto. Paso 2: Para la variable I = 1 hasta 10, incrementando de a 1. Cuando I > 10 vaya al Paso 4. Paso 3: Presente la multiplicacin de producto por la variable I. Paso 4: Terminar. Seudocdigo Leer nmero Producto = nmero Para I=1 hasta 10, incremente en 1 Presente Producto,*,I,= Producto*I Fin para En este seudocdigo en la lnea Presente Producto,*,I,= Producto*I, la parte que est entre comillas significa que el usuario va a ver el valor que est almacenado en la variable Producto,
127
Iniciar nmero
SI USTED EST INTERESADO EN SEGUIR CONSULTANDO ESTE LIBRO, LO Producto = nmero PUEDE COMPRAR EN LA PGINA WWW.NEFRABEL.NET o contactar al autor en la cuenta de correo algoritmos@nefrabel.net
I Terminar Figura 3.3 Prueba de escritorio La prueba de escritorio de este algoritmo es similar a la del ejercicio anterior. La nica diferencia es que el contenido de la variable Producto se multiplica por el contenido de la variable I, y en cada una de las iteraciones se presenta el resultado en el mensaje correspondiente, hasta que I llegue al valor lmite igual a 10. El valor ledo nmero es 1.
128
Tabla 3.12 E.3.3 Escriba el algoritmo que calcule el factorial de un nmero, teniendo en cuenta las caractersticas especiales de este tipo de nmeros. Anlisis de la informacin Los nmeros naturales son 0, 1, 2, 3, 4, 5, 6, 7, 9, 10, 11, etc., El factorial est definido para los nmeros naturales. No existe factorial de nmeros negativos, slo de nmeros naturales. Por definicin, se asume que cero factorial es 0! = 1, uno factorial es 1! = 1. 0! = 1 1! = 1 2! = 1*2 = 2 3! = 1*2*3 = 6 4! = 1*2*3*4 = 24 5! = 1*2*3*4*5 = 120 6! = 1*2*3*4*5*6 = 720 7! = 1*2*3*4*5*6*7 = 5040 . . . Con base en esta informacin ya se puede empezar a escribir el algoritmo que calcula N factorial (N!).
129
SI USTED EST INTERESADO EN SEGUIR CONSULTANDO ESTE LIBRO, LO Lea N PUEDE COMPRAR EN LA PGINA WWW.NEFRABEL.NET o contactar al autor en la Si N = 0 haga cuenta de correo algoritmos@nefrabel.net
Presente N, ! = 1
130
N<0
SI USTED EST INTERESADO EN SEGUIR CONSULTANDO ESTE LIBRO, LO PUEDE COMPRAR EN LA PGINA WWW.NEFRABEL.NET o contactar al autor en la No Si N no tiene (Nmod1) = 0 cuenta de correo algoritmos@nefrabel.net
factorial
N no tiene factorial
Figura 3.4
131
Tabla 3.13 Cuando se hace la primera comparacin N = 0?, se comprueba que es cierto, entonces se sigue por la alternativa del Si y se ejecuta la siguiente instruccin que dice N, ! = 1, y significa 0! = 1. N 0 Factorial 1 Mensaje 0! = 1
Tabla 3.15 En la primera comparacin N = 0?, se puede determinar que no es cierta, entonces el flujo contina por la opcin del No. Se hace la pregunta N < 0? y en este caso es cierto, ahora se sigue por la
132
Tabla 3.17 La primera comparacin no es cierta, entonces se contina por la opcin del no, la segunda comparacin no es cierta, de la misma forma se contina por la opcin del no, al realizar la tercera comparacin, se comprueba que el residuo de (2mod1) es igual a 0, entonces se realiza el proceso que est comprendido entre el Para haciendo I=1, N=2, y se va incrementando de a 1. Por qu (2mod1) es igual a 0? N 2 Factorial 1 I 1 Incremento 1
Tabla 3.18 Se ejecuta la instruccin que indica Factorial = Factorial*I y se realiza el incremento de la variable I.
N 2 2
Factorial 1 1
I 1 2
Incremento 1 1
Tabla 3.19
133
Tabla 3.20 Ya est comprobado que el algoritmo desarrollado si cumple con los requisitos del enunciado y valida los datos de entrada para entregar el factorial de un nmero entero. E.3.4 Escriba un algoritmo, que calcule la expansin de Taylor:
Realizando N iteraciones. Anlisis de la informacin Para realizar este ejercicio, ya se cuenta con toda la informacin. Se sabe como calcular el factorial de un nmero y se utiliza el proceso repetitivo Para. Se debe pedir que el usuario suministre el valor de x al iniciar el algoritmo. Para la expansin de Taylor, se debe calcular primero cul es el trmino ensimo. Todos los trminos estn divididos por el factorial de un nmero y en cada uno de los trminos el exponente de la variable x, es el mismo nmero del denominador al cual se le est calculando el factorial.
134
Seudocdigo Leer x X=x Leer n N =n Factor = 1 Serie = 1 Para I = 1; (N-1); 1 Factor = Factor * I Serie = Serie + (X**I) / Factor Fin Para Presente ex = , serie Terminar
135
Iniciar x X=x n N=N Factor = 1 Serie = 1 SI USTED EST INTERESADO EN SEGUIR CONSULTANDO ESTE LIBRO, LO
PUEDE COMPRAR EN LA PGINA WWW.NEFRABEL.NET o contactar al autor en la cuenta de correo algoritmos@nefrabel.net Para I = 1; (N-1); 1
Factor = 1 Serie = 1 T e = , serie Termina r Figura 3.5 Prueba de escritorio Para comprobar la eficiencia de este algoritmo, se va a realizar la comprobacin para e1 = 2.71828. Entonces x es igual a 1 y se realizan 8 iteraciones, n = 8, para verificar la precisin del clculo del algoritmo. Los datos iniciales son los almacenados en la Tabla 3.21
x
136
SI USTED EST INTERESADO EN 1 SEGUIR CONSULTANDO ESTE LIBRO, LO 2 2 8 8 1 PUEDE COMPRAR EN LA PGINA 1 WWW.NEFRABEL.NET o contactar al autor en la 2 1 cuenta de correo algoritmos@nefrabel.net
2.5
Tabla 3.24 La cuarta iteracin es: x 2 X 2 n 8 N 8 Factor 1 1 2 6 24 Serie 1 2 2.5 2.66667 2.70833 I 1 2 3 4
Tabla 3.25
137
Tabla 3.26 La sexta iteracin es: x 2 X 2 n 8 N 8 Factor 1 1 2 6 24 120 720 Serie 1 2 2.5 2.66667 2.70833 2.71667 2.71806 I 1 2 3 4 5 6
Tabla 3.27 La sptima iteracin es: x 2 X 2 n 8 N 8 Factor 1 1 2 6 24 120 720 5040 Serie 1 2 2.5 2.66667 2.70833 2.71667 2.71806 2.71825 I 1 2 3 4 5 6 7
Tabla 3.28
138
ex = , Serie
Tabla 3.29 El algoritmo est realizando los clculos con muy buena exactitud, porque en la 8 iteracin, da seis cifras significativas que coinciden con el valor calculado por una calculadora de funciones, o con las tablas de libros de anlisis numrico. E.3.5 Escriba un algoritmo, que calcule el promedio para cada estudiante de un grupo de N estudiantes. Por estudiante va a leer, cdigo, primera nota, segunda nota y examen. La primera y segunda notas, tienen cada una un valor de 30% y el examen 40%. Debe presentar al final cul es el promedio ms alto y a qu estudiante le corresponde. Anlisis de la informacin
SI USTED hacer el clculo del promedio ms alto de todos los Para poder EST INTERESADO EN SEGUIR CONSULTANDO ESTE LIBRO, LO PUEDE COMPRAR EN LA PGINA WWW.NEFRABEL.NET o referencia. Se estudiantes, se debe tener un valor como punto decontactar al autor en la cuenta de correo algoritmos@nefrabel.net crea una variable def que va a contener el valor igual a cero y cada vez que se calcula el promedio de cada estudiante se va comparando con esta variable, cuando sea mayor el valor calculado, entonces se va almacenando el nuevo valor en la variable def y al final de todos los clculos de los promedios de los estudiantes tendr el mximo valor del promedio en la variable def.
139
140
141
SI USTED EST INTERESADO EN SEGUIR CONSULTANDO ESTE LIBRO, LO PUEDE COMPRAR EN LA PGINA WWW.NEFRABEL.NET o contactar al autor en la cuenta de correo algoritmos@nefrabel.net cdigo
ID = cdigo nota1 N1 = nota1 nota2 N2 = nota2 examen EX = examen DEF = N1*03+N2*0.3+EX*0.4 DEF > Def No Si id = ID n1 = N1 n2= N2 ex = EX def = DEF
142
Tabla 3.31 La informacin del primer estudiante es leda y almacenada en las respectivas variables.
cantidad 2 id 0 n1 0 n2 0 ex 0 def 0 I 1 N 2 ID 1 nota1 3.2 nota2 3.6 examen 3.0 DEF 3.24
Tabla 3.32 La siguiente instruccin a ejecutar es la validacin de si la variable DEF es mayor que la variable def, esto es cierto, entonces la instruccin siguiente es almacenar estos valores en las variables iniciales id, n1, n2, ex y def.
cantidad 2 id 0 1 n1 0 3.2 n2 0 3.6 ex 0 3.0 def 0 3.24 I 1 N 2 ID 1 nota1 3.2 nota2 3.6 examen 3.0 DEF 3.24
Tabla 3.33
143
Tabla 3.34 Se puede comprobar fcilmente que estas notas corresponden a la definitiva ms alta, entonces se almacena en las variables iniciales.
id n1 n2 ex def I N ID nota1 nota2 examen 0 0 0 0 0 1 2 1 3.2 3.6 3.0 1 3.2 3.6 3.0 3.24 1 2 2 3.2 3.0 3.6 2 INTERESADO EN SEGUIR CONSULTANDO ESTE LIBRO, LO 3.2 3.0 3.6 3.3 SI USTED EST PUEDE COMPRAR EN LA PGINA WWW.NEFRABEL.NET o contactar al autor en la cuenta de correo algoritmos@nefrabel.net Tabla 3.35 cantidad 2 DEF 3.24 3.3
Tabla 3.36
144
Mientras que _____ Proceso a realizar M Figura 3.7 Mientras que _____ La instruccin es la que controla el ciclo. Este ciclo se realiza mientras que la condicin sea verdadera, si es falsa, entonces se contina con las instrucciones que estn a continuacin del ciclo. Se repite siempre que se cumpla esta condicin sin importar el nmero de veces que sea necesario, lo nico que lo detiene es que la condicin sea falsa. Este smbolo representa las instrucciones que se van a realizar dentro del ciclo que se est ejecutando, se realiza tantas veces como la condicin del proceso Mientras Que, sea verdadera. Proceso a realizar M
Este smbolo indica en qu parte termina el proceso Mientras Que. Cuando el flujo del algoritmo llega a este punto, se hace la validacin de la instruccin que se encuentra en el Mientras Que, si es cierta se repite nuevamente el ciclo, de lo contrario, se sale del proceso y se contina con el algoritmo.
145
146
147
No es primo
SI USTED EST INTERESADO EN SEGUIR CONSULTANDO ESTE LIBRO, LO PUEDE COMPRAR EN LA PGINA WWW.NEFRABEL.NET o contactar al autor en la Si No cuenta de correo algoritmos@nefrabel.net
N mod I = 0
Si
Es primo
Fin M.Q.
148
149
Tabla 3.42 La instruccin siguiente asigna a la variable I el valor inicial igual a 2. N 2 A 2.41421 Tabla 3.43 La estructura de repeticin Mientras Que, es la que va a controlar que se cumpla que cada nmero que se lea, sea evaluado para saber si es primo o no. Como se cumple la condicin de que el valor de la variable I es menor que el de la variable A, entonces se contina con el proceso siguiente, que es validar si la divisin de N entre I tenga residuo igual a 0; esta verificacin result verdadera. I 2
150
Tabla 3.44 La siguiente instruccin pide que se sume el valor de A y de I, y luego se guarde en la variable I. N 2 2 A 2.41421 2.41421 I 2 4.41421 Tabla 3.45 Ahora se comprueba si se cumple la condicin del M.Q., que se ve que no es cierto, porque 4.41421 no es menor que 2.41421, ya se sale del M.Q. y se termina el proceso. E.3.7 Escriba un algoritmo, que calcule el rea de un tringulo, conociendo el valor de los tres lados, cuando termine, debe preguntar si desea realizar el clculo para otro tringulo o si desea terminar. Anlisis de la informacin Este ejercicio requiere que se validen los valores ledos para saber si corresponden a un tringulo. El enunciado del ejercicio es claro solicitando que se calcule el rea de un tringulo, pero no hace referencia si es un tringulo rectngulo o no, entonces para evitar equivocaciones en el rea, se va a utilizar la frmula de Hern que sirve para calcular el rea de cualquier tringulo, independiente de que sea rectngulo o no. Mensaje N es primo
151
a c
b
Figura 3.9 Teniendo ya claridad de qu se pide en el ejercicio y qu se necesita para realizar el clculo correctamente, se puede realizar el algoritmo. Algoritmo Paso 1: Pregunte si el usuario desea realizar el clculo. Paso 2: Mientras que desee realizar el clculo, contine, de lo contrario termine. Paso 3: Pregunte los valores de los lados a, b, y c. Paso 4: Verifique que a + b es menor que c. Si es cierto contine, de lo contrario Presente No es un tringulo y termine. Paso 5: Verifique que b + c es menor que a. Si es cierto contine, de lo contrario Presente No es un tringulo y termine. Paso 6: Verifique que a + c es menor que b. Si es cierto contine, de lo contario Presente No es un tringulo y termine. Paso 7: Calcule el semipermetro del tringulo Paso 8: Calcule el rea del tringulo . Paso 9: Informe al usuario cul es el valor del rea. Paso 10: Pregunte si va a realizar otro clculo y vaya al paso 2. .
152
Presente El rea es igual a A Leer si desea calcular nuevamente Fin M.Q. Termine
153
A= El rea del triangulo es A tringulo Calcular Fin M.Q. Terminar Figura 3.10
154
Tabla 3.46 Al hacer la primera verificacin, se comprueba que a + b es mayor que c, entonces se contina con la siguiente instruccin que compara que b + c es mayor que a. La siguiente instruccin dice que a + c es mayor que a, entonces se sigue con el flujo del algoritmo y se debe calcular el semipermetro S, que es igual a la suma de los tres lados, a + b + c y se divide por 2 que es igual a 6. Consultar si a 3 b 4 c 5 S 6
Tabla 3.47 Se contina con el clculo del rea, que se encuentra reemplazando en la forma especificada anteriormente. Consultar si a 3 b 4 c 5 S 6 A 6
Tabla 3.48 Ahora se presenta un mensaje al usuario informndole cul es el valor del rea calculada. Consultar Si a 3 b 4 c 5 S 6 A 6 Mensaje El valor del rea es 6
Tabla 3.49
155
156
157
Termina r Figura 3.11 Prueba de escritorio En esta aplicacin del Mientras que, se va a hacer la prueba de escritorio hasta el 5 elemento de la serie. N 5 Tabla 3.50 A continuacin de inicializan las variables A = 2, B= 0, y C = 1, para poder empezar a presentar los mensajes de los primeros elementos que conforman la serie de Fibonacci.
158
Tabla 3.51 Ahora se presentan al usuario los valores contenidos en las variables B y C, que son los dos primeros trminos de la serie. N 5 A 2 B 0 C 1 Mensaje B 0 Tabla 3.52 Se hace la verificacin de la condicin del M.Q., y se verifica que es cierta, entonces se ejecutan las instrucciones que estn contenidas en el M.Q. N 5 A 2 B 0 C 1 Mensaje B 0 Tabla 3.53 Presente ahora el valor del siguiente trmino. N 5 A 2 B 0 C 1 Mensaje B 0 Mensaje C 1 D 1 Mensaje D 1 Mensaje C 1 D 1 Mensaje C 1
Tabla 3.54 Continuar con las instrucciones que asignan nuevos valores a las variables N 5 5 A 2 3 B 0 1 C 1 1 Mensaje B 0 Mensaje C 1 D 1 Mensaje D 1
Tabla 3.55
159
Tabla 3.56 Se presenta el siguiente trmino de la serie y se actualizan los valores de las variables. N 5 5 5 A 2 3 4 B 0 1 1 C 1 1 2 Mensaje B 0 Mensaje C 1 D 1 2 Mensaje D 1 2
Tabla 3.57 Hay que verificar el contenido del M.Q., en este caso es cierto ya que 4 es menor que 5, entonces se ejecuta la actualizacin de las variables y se presente el ltimo elemento de la serie que se quera generar. N 5 5 5 5 A 2 3 4 5 B 0 1 1 2 C 1 1 2 3 Mensaje B 0 Mensaje C 1 D 1 2 3 Mensaje D 1 2 3
Tabla 3.58 Al realizar la verificacin de la condicin del mientras que, se ve que el valor de la variable A es igual al valor de la variable N, entonces, se sale del M.Q., y se termina el proceso. Ya se generaron los 5 primeros elementos de la serie de Fibonacci que son: 0 1 1 2 3.
160
Figura 3.12 El primero es el nmero 1, el segundo es el nmero 3, el tercero es el nmero 6, el cuarto es el nmero 10, el quinto es el nmero 15, y as sigue esta sucesin de nmeros. Esta serie se pude generar tambin de otra forma, calculando la frmula o trmino ensimo. Este ejercicio se va a desarrollar de otra manera. Se va a tener en cuenta la posicin del nmero dentro de los nmeros naturales y sumando el valor de esa posicin empezando desde cero. P 1 2 3 4 5 6 7 8 9 V 0 1 3 6 10 15 21 28 36 P+V 1 3 6 10 15 21 28 36 45
161
Tabla 3.59 Con el contenido de esta Tabla, queda muy claro el algoritmo que se va a utilizar. ste funciona para cualquier cantidad de nmeros triangulares. La columna P+V, contiene el resultado de los primeros 10 nmeros triangulares, siendo P la posicin y V el valor del nmero anterior. Algoritmo Paso 1: Leer cuntos nmeros va a generar Paso 2: Guarde en la variable N cuntos nmeros va a generar Paso 3: Guarde 1 en la variable CONSULTANDO ESTE LIBRO, LO SI USTED EST INTERESADO EN SEGUIR M PUEDE COMPRAR EN LA en la variable P Paso 4: Guarde 1 PGINA WWW.NEFRABEL.NET o contactar al autor en la cuenta de correo algoritmos@nefrabel.net V Paso 5: Guarde 0 en la variable Paso 6: Mientras Que M <= N haga Paso 7: En la variable V guarde la suma de P + V Paso 8: Presente V Paso 9: Guarde en la variable P el valor de P + 1 Paso 10: Guarde en la variable M el valor de M + 1 Paso 11: Fin Mientras que Paso 12: Terminar Seudocdigo Leer nmeros N = nmeros M=1 P=1 V=0 M.Q. M <= N haga V=P+V Presente V P=P+1 M=M+1 Fin M.Q.
162
163
Tabla 3.60 La instruccin siguiente es M.Q. M <= N realice las instrucciones que se encuentran dentro del proceso, que son V = V+P, Presentar V, P = P + 1, M = M + 1 y volver a validar el M.Q. N 4 M 1 2 P 1 2 V 0 1 Mensaje 1
Tabla 3.63
164
Tabla 3.64 Despus de realizar la cuarta iteracin, se presenta el resultado de la variable V y luego se incrementa la variable M en 1, entonces al verificar el M.Q., se sale del proceso, porque no se cumple con la condicin de que M <= N. E.3.10 Suponga que en un banco se deposita un capital de dinero en un CDT el primer da hbil de enero. El banco paga el 7.5 % de inters compuesto anual. Si se consign el dinero en el ao inicial y se retira en el ao final, en el ltimo da hbil del mes de diciembre, cunto dinero se recibe?, adems se quiere saber cunto se liquid por cada ao. Realice un algoritmo que haga estos clculos y presente los resultados por ao, y luego el capital total. El algoritmo debe servir para hacer el clculo para cualquier ao de consignacin, as como para el ao del retiro y para cualquier capital. Anlisis de la informacin En este algoritmo se conoce el ao en que se realiz la consignacin del dinero, entonces la condicin del M.Q., es debe ejecutar hasta que se cumpla el ao de retiro del dinero, la liquidacin se va haciendo anualmente. Algoritmo Paso 1: Lea el ao en que se realiza la consignacin Paso 2: Guarde en la variable AOINI en ao en que se realiz la consignacin. Paso 3: Lea el ao en que se retira el capital
165
166
CAPIT = CAPIT + CAPIT*0.075 AOINI = AOINI + 1 CAPIT, AOINI Fin M.Q. Terminar Figura 3.14 Prueba de escritorio Se realiza la prueba de escritorio con un capital inicial de $ 3000,000, el ao de consignacin del dinero fue en 2008 y se retiro en el 2010. Con esta informacin se empieza a realizar la verificacin del algoritmo.
167
Tabla 3.65 Para el primer ao, se tienen los siguientes resultados: aoinicio 2005 AOINI 2008 2009 Aoretiro 2010 AOFIN 2010 capital 3000,000 CAPIT 3000,000 3225,000
Tabla 3.66 Para el segundo ao, se tienen los siguientes resultados: aoinicio 2005 AOINI 2008 2009 2010 Aoretiro 2010 AOFIN 2010 capital 3000,000 CAPIT 3000,000 3225,000 3466,875
Tabla 3.67 En este captulo, se han realizado ejercicios que le permiten al lector conocer y comprender, cmo se utilizan los procesos repetitivos en conjunto con los procesos de decisin y los procesos secuenciales. El uso adecuado de los procesos estudiados hasta este momento, le dan la capacidad al lector de realizar una programacin estructurada, y est habilitado para realizar algoritmos, seudocdigos y diagramas de flujo, un poco ms complicados que los ejemplos desarrollados en cada captulo, que han sido ilustrativos y de fcil comprensin por la manera como fueron resueltos.
168
169
EP.3.2 Haga un algoritmo que escriba los primeros 100 nmeros enteros, y le informe al usuario, cules son positivos, cules son negativos, cules son pares y cules son impares, y cuntos pares, impares, positivos y negativos hay en el listado.
170
EP.3.3 Escriba un algoritmo que calcule con 6 lugares decimales las siguientes series, siendo n un entero positivo. 1. 2. 3. Realice, anlisis de la informacin, diagrama de flujo y prueba de escritorio. algoritmo, seudocdigo,
EP.3.4 Escriba un algoritmo que calcule con los 10 primeros trminos de la sucesin lugares decimales, las siguientes series, siendo n un entero positivo. 1. 2. 3. Realice, anlisis de la informacin, diagrama de flujo y prueba de escritorio. algoritmo, seudocdigo,
EP.3.5 Haga un algoritmo, que lea 5 nmeros calcule: La suma La suma al cuadrado La media La varianza .
y les
. = .
. . algoritmo, seudocdigo,
La desviacin estndar
171
EP.3.7 Escriba un algoritmo que genere la pareja de temperaturas, Fahrenheit y Celsius equivalentes y las presente al usuario, entre 0 C y 100 C, incrementando de a 10 C. Realice, anlisis de la informacin, diagrama de flujo y prueba de escritorio. algoritmo, seudocdigo,
EP.3.8 Escriba un algoritmo, que realice todas las posibles combinaciones de las letras a, b y c. Realice, anlisis de la informacin, diagrama de flujo y prueba de escritorio. algoritmo, seudocdigo,
Captulo 4: Arreglos
Nelson Francisco Beltrn Franco
173
4 Arreglos
Los arreglos se asemejan a las matrices que se trabajan en las matemticas o en lgebra lineal, y son tiles cuando se necesita manejar listados o bases de datos para recuperarlos ms adelante. Una matriz es un arreglo rectangular de nmeros dispuestos en filas y columnas.
Figura 4.1 sta es la matriz A cuadrada de 4x4. Este tipo de matriz se conoce como de dos dimensiones. En cada una de las posiciones se ve con dos nmeros. Estos nmeros son los subndices que indican en que lugar de la matriz se encuentra cada uno de los elementos, el primero, que corresponde a la letra i indica en qu fila se encuentra el elemento y la j indica en qu columna est ubicado el elemento, la notacin utilizada es A [I,J]. Por ejemplo.
Figura 4.2 Este trmino se encuentra en la fila 2 y en la columna 3. Las matrices o arreglos pueden contener nmeros y letras, como se puede ver en el ejemplo de la matriz C:
174
Figura 4.3 Existen matrices de una sola fila o de una sola columna, que son muy tiles en la programacin y se les conoce como vector fila o vector columna, o matriz de una sola dimensin.
Figura 4.4
Figura 4.5 En programacin el concepto de matriz es muy til porque hace ms entendible el manejo de la informacin con los arreglos, ya que permiten guardar informacin que se puede recuperar ms adelante o modificar, porque se conoce la ubicacin en la cual se guard. La mejor manera de entender la utilidad de estas herramientas es con ejercicios, entonces, manos a la obra. Para el manejo de los arreglos, es necesario aplicar los procesos vistos en los tres primeros captulos, y de esta forma aplicar la programacin estructurada en cada uno de los ejercicios.
Captulo 4: Arreglos
Nelson Francisco Beltrn Franco
E.4.1 Escriba un algoritmo que almacene un listado que contiene N nombres de estudiantes con sus respectivos cdigos, se debe diferenciar entre el nombre y el apellido. Anlisis de la informacin Para realizar este ejercicio, se va a trabajar con arreglos o matrices, ya se explic la utilidad del concepto de las matrices para aplicarlo al diseo de los algoritmos que trabajan con arreglos. En este caso se va a trabajar con una matriz de Nx3, que significa que va a tener N filas y 3 columnas, porque se tiene mayor nmero de estudiantes que es desconocido y la informacin por estudiante es la misma. Algoritmo Paso 1: Cuntos estudiantes hay en el arreglo? Paso 2: El arreglo L tiene N filas y 3 columnas. Paso 3: Para I = 1 hasta N, incremente de a 1, contine, de lo contrario termine. Paso 4: Informe al usuario que va a digitar informacin del estudiante I Paso 5: Para J = 1 hasta 3, incremente de a 1, contine, de lo contrario termine. Paso 6: Informe al usuario que tipo de dato le corresponde digitar. Paso 7: Lea el Dato a digitar Paso 8: Almacene en el arreglo L, en la posicin [I, J] el Dato que digita el usuario Paso 9: Vaya al paso 5 y verifique las iteraciones, si faltan contine, de lo contrario termine Paso 10: Vaya al paso 3 y verifique iteraciones, si faltan contine, de lo contrario termine
175
176
Presente Estudiante, I Para J=1; 3; 1 haga Presente 1 Cdigo Presente 2 Apellido Presente 3 Nombre Presente Digite el Dato, J Lea Dato L[I,J] = Dato Fin para Fin para
En este seudocdigo, se est trabajando con nuevos conceptos. L[N,3], indica que se est inicializando un arreglo de nombre L y de tamao N filas y 3 columnas y se debe inicializar el espacio en memoria. L[I,J] = Dato, indica que en el espacio correspondiente del arreglo L, est almacenando el valor de la variable Dato. Diagrama de flujo
Iniciar
N
L [N, 3] Q
Captulo 4: Arreglos
Nelson Francisco Beltrn Franco
Q Para I = 1; N; 1 Estudiante N, I Para J = 1; 3; 1 1 Cdigo 2 Apellido 3 Nombre Digite el dato, J
177
SI USTED EST INTERESADO EN SEGUIR CONSULTANDO ESTE LIBRO, LO Dato PUEDE COMPRAR EN LA PGINA WWW.NEFRABEL.NET o contactar al autor en la cuenta de correo algoritmos@nefrabel.net
Figura 4.6 Prueba de escritorio Esta verificacin del algoritmo se va a realizar con 2 datos. N 2 Tabla 4.1 La instruccin siguiente dimensiona el arreglo o la matriz asignndole un espacio en memoria L [N, 2], que es igual a L [3, 2].
178
Tabla 4.2 Ahora se inicia el primer Para con las variables I = 1 hasta N, incrementando de a 1. N 2 L[F,G] L[3,2] Tabla 4.3 Se presenta el mensaje al usuario indicndole que va a empezar a digitar la informacin correspondiente al primer estudiante. N 2 L[F,G] L[3,2] I 1 Mensaje Estudiante, I I 1
Tabla 4.4 Ahora se inicia el segundo Para que est anidado, con las variables J = 1 hasta 3, incrementando de a 1. N 2 L[F,G] L[3,3] I 1 Mensaje Estudiante, I J 1
Tabla 4.5 Se le informa al usuario por medio de un mensaje, qu tipo de datos va a digitar relacionada con cada estudiante, y tambin en qu dato va.
Captulo 4: Arreglos
Nelson Francisco Beltrn Franco
N 2 L[F,G] L[3,3] I 1 Mensaje Estudiante, I J 1 Mensaje 1 Cdigo 2 Apellido 3 Nombre Mensaje Digite el dato, J
179
L[3,3]
Estudiante I
Digite el dato, J
Arias
Arias
L[3,3]
Estudiante I
Digite el dato, J
Marcos
Marcos
L[3,3]
Estudiante I
Digite el dato J
312
312
L[3,3]
Estudiante I
Digite el dato J
Luna
Luna
L[3,3]
Estudiante I
Digite el dato J
Stella
Stella
Tabla 4.7 En la Tabla 4.7, se presenta todo el proceso que realizan los ciclos Para anidados y se puede apreciar claramente el incremento de cada
180
Captulo 4: Arreglos
Nelson Francisco Beltrn Franco
Paso 14: Cuando I sea mayor que N-1, contine, de lo contrario, vaya al paso 7. Paso 15: Para I=1 hasta N, incrementando de a 1 haga Paso 16: Presente A[I], es el nmero, I Paso 17: Cuando I sea mayor que N, contine, de lo contrario, vaya al Paso 15. Paso 18: Terminar. Seudocdigo Lea N Reserve el espacio en memoria para el arreglo A[N] Para I=1; N; 1 haga Lea Dato A[I] = Dato Fin para Para I=1;(N-1);1 haga Para J=i+1;N;1 haga Si A[I] > A[J] haga C = A[I] A[I] = A[J] A[J] = C Fin Si Fin para J Fin para I Para I=1;N;1 haga Presente A[I] es el nmero I Fin para I Terminar
181
182
Captulo 4: Arreglos
Nelson Francisco Beltrn Franco
Prueba de escritorio Esta comprobacin se va a hacer con 4 nmeros, -1, 11, -7 y 5. El primer paso es dimensionar la matriz en la cul se van a almacenar los nmeros. N 4 A [N] 4
183
Tabla 4.9 Ya estn los cuatro nmeros dentro del vector A. El paso siguiente es hacer las respectivas comparaciones para ir reubicando los nmeros. N 4 A [N] 4 I 1 2 3 4 Dato -1 11 -7 5 A A [1]=-1 A [2]=11 A [3]=-7 A [4]=5 I 1 J 2 3 4 A [I] [1]=-1 [1]=-1 [1]=-7 [1]=-7 A [J] A [2]=11 A [3]=-7 A [3]=-1 A [4]=5 C
A A A A
-1
Tabla 4.10 En esta verificacin, se compar inicialmente si A [1]=-1 > A [2]=11, esto no es cierto, entonces se contina si A [1]=-1 > A [3]=-7, en este caso es cierto, se procede a hacer el intercambio de variables. C=A[1]=-1, A[1]=A[3] y A[3]=C. Se toma A[1]=-7 > A[4]=5, que no es cierto.
184
-1
11
Tabla 4.11 Se realizar para I=3 que es la ltima comparacin que se hacer para el vector A N 4 A [N] 4 I 1 2 3 4 Dato -1 11 -7 5 A A [1]=-1 A [2]=11 A [3]=-7 A [4]=5 A [1]=-7 A [2]=11 A [3]=-1 A [4]=5 A [1]=-7 A [2]=-1 A [3]=11 A [4]=5 I 1 J 2 3 4 3 4 A [I] A [1]=-1 A [1]=-1 A [1]=-7 A [1]=-7 A [2]=11 A [2]=-1 A [2]=-1 A [3]=11 A [3]=5 A [J] A [2]=11 A [3]=-7 A [3]=-1 A [4]=5 A [3]=-1 A [3]=11 A [4]=5 A [4]=5 A [4]=11 C
-1
11
11
Tabla 4.12 Ya quedaron ordenados de menor a mayor, los nmeros que estn almacenados en el vector A. N 4 A [N] 4 I 1 2 Dato -1 11 A A [1]=-1 A [2]=11 I 1 J 2 3 A [I] A [1]=-1 A [1]=-1 A [J] A [2]=11 A [3]=-7 C
Captulo 4: Arreglos
Nelson Francisco Beltrn Franco
3 4 -7 5 A [3]=-7 A [4]=5 A [1]=-7 A [2]=11 A [3]=-1 A [4]=5 A [1]=-7 A [2]=-1 A [3]=11 A [4]=5 A [1]=-7 A [2]=-1 A [3]=5 A [4]=11 4 2 3 4 A [1]=-7 A [1]=-7 A [2]=11 A [2]=-1 A [2]=-1 A [3]=11 A [3]=5 A [3]=-1 A [4]=5 A [3]=-1 A [3]=11 A [4]=5 A [4]=5 A [4]=11 -1
185
11
11
Tabla 4.13 Por ltimo, presentar al usuario los nmeros ordenados de menor a mayor como se encuentran almacenados en la matriz A. E.4.3 Se tienen 3 listas con las notas de los 2 parciales y el examen de 50 estudiantes. Cada parcial vale el 30% de la nota y el examen el 40%. Se necesita almacenar el cdigo y las notas en una matriz llamada Notas, la definitiva se debe almacenar en la ltima columna de la matriz. Anlisis de la informacin La matriz Notas tiene dos dimensiones. Cuenta con 5 columnas y con 50 filas. Esto se escribe de la siguiente forma: Notas [50,5] Cdigo Nota1 Nota2 Examen Definitiva
Tabla 4.14
186
Captulo 4: Arreglos
Nelson Francisco Beltrn Franco
Fin Para J Fin Para I Terminar Seudocdigo Iniciar Notas[50,5] Para I=1; 50; 1 Para J=1; 5; 1
187
No
Notas[I,J] = Notas[I,2]*0.3+ Notas[I,3]*0.3+ Notas[I,4]*0.4 Notas[I,1], Notas[I,J]
J<5
Si
1 Cdigo 2 Nota 1 3 Nota 2 4 Examen
188
Tabla 4.15 Inicialmente se dimensiona la matriz, en este caso es Notas[2,5], con dos filas, porque slo se va a trabajar con 2 registros. A continuacin se inicializan las variables I y J, de los dos procesos paras. Notas[2,5] I 1 J 1
Tabla 4.16 En el S, se puede comprobar que la variable J es igual a 1, entonces es menor que 5, se sigue por el camino definido por el Si, y se presenta al usuario el men con las opciones para almacenar los datos de cada estudiante. Para informar al usuario en qu dato va, se presenta el valor de J, y a continuacin se van digitando, el cdigo, nota1, nota2 y examen. Cuando el valor de J llega a 5, por los incrementos que se realizan en el Para interno, en el momento de hacer la validacin de J < 5, se sigue por la opcin del No. Se realiza el clculo de la nota definitiva de cada estudiante y luego se presenta el Cdigo seguido de la nota final. Este proceso se repite para poder almacenar la informacin que corresponde al segundo estudiante, cuando I se hace igual a 2.
Captulo 4: Arreglos
Nelson Francisco Beltrn Franco
4.2 Resumen Una matriz es un arreglo rectangular de nmeros dispuestos en filas y columnas. Hay arreglos de una dimensin llamados vector fila o vector columna, de dos dimensiones y multidimensionales. Un arreglo se denota de la forma A[I,J], siendo I las filas y J las columnas. Los arreglos se utilizan cuando se manejan grandes volmenes de informacin y se requiere recuperarla ms adelante para poderlas procesar. En los arreglos alfanumricos. se pueden guardar datos numricos o
189
190
EP.4.2 En una universidad acomodan a los estudiantes para las evaluaciones formando un arreglo de 6x5 y cuando les entregan los temas para el examen les indican cul es su ubicacin en el aula. El reporte de notas que debe entregar el profesor es: promedio de los estudiantes por fila, mayor nota por fila y menor nota por fila. Realice un algoritmo que guarde esta informacin en un arreglo. Primero almacene el cdigo del estudiante segn la ubicacin en un arreglo llamado Posicin, luego debe almacenar las notas en un arreglo Notas, de tal forma que coincida con la ubicacin del arreglo Posicin. Por ltimo debe calcular el promedio por fila y guardarlo en el arreglo Notas, y presentar un reporte que diga de quin y cul es la mxima nota por fila y de quin y cul el la mnima nota por fila. Realice, anlisis de la informacin, diagrama de flujo y prueba de escritorio. algoritmo, seudocdigo,
EP.4.3 Se tiene un arreglo de nmeros, de cuatro filas y cuatro columnas. La suma de los nmeros que estn en cada fila debe dar
Captulo 4: Arreglos
Nelson Francisco Beltrn Franco
34, igual pasa con los elementos que estn en las columnas. Este cuadrado se conoce como el cuadrado mgico de Durero. 4 9 5 16 n= 34 15 6 10 3 n= 34 14 7 11 2 n= 34 1 12 8 13 n= 34 n= n= n= n= 34 34 34 34
191
Figura 4.9 Realice un algoritmo que lea los nmeros y los guarde en un arreglo, para luego calcular la suma de los elementos por fila y los elementos por columna. Si el usuario acert, lo felicita, dicindole, Felicidades, acertaste con todos los nmeros, si se equivoca porque todas las sumas no dan 34, debe decirle Lo siento, debes intentar nuevamente. Realice, anlisis de la informacin, diagrama de flujo y prueba de escritorio. algoritmo, seudocdigo,
EP.4.4 Crear un algoritmo, aplicando el mtodo de Sieve, para dejar en un arreglo nicamente los nmeros primos menores de 100. El procedimiento a seguir segn Sieve es: Almacene en un arreglo lineal o vector los 100 primeros nmeros naturales de la siguiente forma: P[1] P[2] P[3] P[4] P[5] P[6] P[7] 1 2 3 4 5 6 7
Tabla 4.17
192
EP.4.5 Escriba un algoritmo que lea 50 nmeros y los guarde en un vector, luego presente un reporte con la siguiente informacin: Que parejas de nmeros al sumarlos dan 20. El segundo y tercer nmeros ms grandes. El segundo y tercer nmeros ms pequeos El nmero que est en la mitad del listado, no del arreglo. El nmero que est en la mitad del arreglo. Cuntos pares hay en el listado? Cuntos impares hay en el listado? Realice, anlisis de la informacin, diagrama de flujo y prueba de escritorio. algoritmo, seudocdigo,
EP.4.6 Se tienen dos vectores con 20 nmeros cada uno. Escriba un algoritmo que averige cules nmeros estn en los dos arreglos lineales, y luego los almacene en un tercer arreglo y los presente al usuario. Realice, anlisis de la informacin, diagrama de flujo y prueba de escritorio. algoritmo, seudocdigo,
Captulo 4: Arreglos
Nelson Francisco Beltrn Franco
EP.4.7 Escriba un algoritmo, que sume dos matrices cuadradas de 3x3. Realice, anlisis de la informacin, diagrama de flujo y prueba de escritorio. algoritmo, seudocdigo,
193
EP.4.8 Escriba un algoritmo, que multiplique dos matrices de tamao mxn y nxp. (Por qu razn no se pueden multiplicar dos matrices de tamaos nxp y mxn?). Realice, anlisis de la informacin, diagrama de flujo y prueba de escritorio. algoritmo, seudocdigo,
EP.4.9 Escriba un algoritmo, que lea el resultado de los estudiantes que presentan el examen de admisin de una facultad. Debe pedir el cdigo y el puntaje obtenido por el estudiante, luego almacenarlo en un arreglo. El puntaje del examen esta entre 0 y 100. Se debe reportar la siguiente informacin: Qu estudiantes, pasaron el examen con 80 <= puntaje <=100? Qu estudiantes, pasaron el examen con 60 <= puntaje <80? Qu estudiantes, perdieron el examen con 40 <= puntaje <60? Qu estudiantes, perdieron el examen con 20 <= puntaje <40? Qu estudiantes, perdieron el examen con 0 <= puntaje <20? Realice, anlisis de la informacin, diagrama de flujo y prueba de escritorio. algoritmo, seudocdigo,
EP.4.10 Escriba un algoritmo, que lea 10 fuerzas expresadas en sus componentes vectoriales, las almacene en un arreglo, luego reporte cul es el vector suma en expresado en sus componentes vectoriales, calcule su magnitud y d sus ngulos directores. Realice, anlisis de la informacin, diagrama de flujo y prueba de escritorio. algoritmo, seudocdigo,
Captulo 5: C++
Nelson Francisco Beltrn Franco
195
5 C++
5.1 Estudio de un programa en C++ Este captulo est escrito, para que usted aprenda a programar en C++ desde cero, no necesita tener conocimientos previos en este lenguaje. Los nicos conocimientos necesarios, usted ya los ha estudiado en los cuatro primeros captulos de este libro; sigue ahora traducirlos a un lenguaje de programacin, que en este caso es C++. Los seudocdigos desarrollados en los ejemplos anteriores, se van a escribir utilizando la sintaxis de este lenguaje, para tener finalmente el cdigo fuente. Los ejemplos que se exponen en este captulo fueron probados y funcionan correctamente en cualquiera de los compiladores existentes para los sistemas operativos Linux y Windows. Los ejercicios que aparecen resueltos fueron probados con el compilador para C++, Dev-C++ versin 4.9.9.2. Este software es de distribucin gratuita y la ltima versin se puede descargar de la pgina http://www.bloodshed.net/. Este software se rige por una licencia GNU General Public License (GPL). A medida que usted empieza a estudiar los temas expuestos en este captulo, va adquiriendo destreza en el manejo de la sintaxis del lenguaje. En cada ejemplo van involucrando nuevos elementos de C++. Para empezar, se van a analizar las partes de un programa escrito en este lenguaje. E.5.1 Este sencillo ejemplo describe cada una de las partes de un programa escrito en el lenguaje C++. Cdigo fuente
/* Apuntes de clase de algoritmos */ // Ejemplo E.5.1 #include <iostream.h>
196
5.2 Comentarios
SI USTED EST INTERESADO EN SEGUIR CONSULTANDO ESTE LIBRO, LO PUEDE COMPRAR EN LA PGINA WWW.NEFRABEL.NET o contactar al autor en la Se cuenta de correo una descripcin de cada una de las lneas que va a hacer algoritmos@nefrabel.net
Cuando se escriben los programas es conveniente documentarlos con comentarios que permitan saber por qu se escriben las instrucciones, ya que despus de que pasan los das y es necesario hacerle alguna modificacin a cdigo fuente, los comentarios ayudan al programador a saber por qu se escribi algn bloque de cdigo en caso de que los cambios los realice una persona diferente a quien lo escribi por primera vez. Las dos primeras lneas corresponden a un comentario. En C++ los comentarios se escriben de dos maneras: Cuando se utiliza /* al comienzo de un comentario, el texto puede ocupar varios renglones y al final se escribe */. Si se escribe // al comienzo del comentario, a continuacin va el texto del comentario, pero este comentario no puede ocupar ms de un rengln.
Captulo 5: C++
Nelson Francisco Beltrn Franco
Los comentarios son mensajes que se incluyen en el cdigo fuente, para que sean ledos por los programadores, y no por los usuarios del programa. Los comentarios nunca van a aparecer en la pantalla cuando se est ejecutando el programa, porque el compilador los ignora. Los comentarios se deben utilizar cuando sean necesarios, es decir para indicar por qu se hacen las cosas, y no qu se est haciendo.
#include <iostream.h>
197
Al comienzo de esta lnea se encuentra el smbolo (#), que le indica al preprocesador, que se debe incluir el contenido de la biblioteca estndar llamada iostream.h. El preprocesador se ejecuta cuando se inicia el compilador que se vaya a utilizar para probar el cdigo fuente. El preprocesador lee el cdigo fuente que se digit, y busca desde el inicio las lneas que empiezan con el smbolo # que le indican que corresponde a una directiva de preprocesador.
Include es una instruccin del preprocesador, que se encarga de
buscar en las ubicaciones indicadas en el compilador, el archivo de nombre iostream.h, que est escrito entre los parntesis angulares < y >, para luego incluirlas al comienzo del cdigo fuente y proceder a compilar el listado. Si su compilador esta bien configurado, estas bibliotecas estarn en una carpeta llamada include. Ms adelante se van a estudiar estas instrucions del preprocesador. La lnea siguiente del cdigo
int main() {
El programa realmente empieza en esta lnea. Todo programa escrito en C++, siempre empieza con la funcin main(). Todas las funciones deben declarar el tipo de dato que devuelven, en el caso de esta funcin se utiliza siempre int, que corresponde a un valor entero. Esto quiere decir ue cuando se ejecuta la funcin, el valor que regresa al sistema operativo es un entero.
198
mensaje. (<<) es el operador de insercin. Todo lo que est despus del operador de insercin, se imprime en la pantalla. En este caso se SI USTED EST INTERESADO EN SEGUIR CONSULTANDO ESTE LIBRO, LO quiere escribir una cadena de caracteres, por esta o contactar al autor en la razn se escribe PUEDE COMPRAR EN LA PGINA WWW.NEFRABEL.NET entre comillas () algoritmos@nefrabel.net cuenta de correo y (). Los dos ltimos caracteres de la lnea \n le indican a cout que debe insertar una nueva lnea o seguir imprimiendo en el rengln siguiente. El cambio de rengln se realiza al terminar la palabra que est antes de (\n). Al final de toda instruccin se debe escribir (;), porque si se omite, se produce un error, y el listado no se compila.
return 0; se escribe al final de la funcin main(), y se utiliza para
salir de las funciones. El ejemplo Cdigo E_5_1, lo puede descargar de internet, pero si usted quiere aprender a manejar el compilador, escriba el cdigo fuente igual a como est en el libro, y luego complelo y cree el archivo ejecutable. Despus de compilar el archivo, si no se presenta ningn error, tendr como nombre E_5_1.cpp y el ejecutable E_5_1.exe.
Captulo 5: C++
Nelson Francisco Beltrn Franco
5.3 Caracteres de impresin especiales El compilador de C++ reconoce algunos caracteres especiales que sirven para darle formato a la informacin de salida de los programas. Estos caracteres tambin son conocidos como caracteres de escape. En la Tabla 5.1, se encuentran los ms comunes Caracteres de escape Caracter Significado \a Alarma. Hace sonar la alarma \b Retroceso \f Alimentacin hoja nueva impresora \n Nueva lnea SI USTED EST INTERESADO EN SEGUIR CONSULTANDO ESTE LIBRO, LO \r Retorno de carro en la misma lnea PUEDE COMPRAR EN LA PGINA WWW.NEFRABEL.NET o contactar al autor en la \talgoritmos@nefrabel.nethorizontal Tabulador cuenta de correo \v Tabulador vertical \\ Barra invertida \? Signo de cierre de interrogacin \ Comilla simple \ Comilla doble 000 Lo que sigue es un nmero octal Xhh Lo que sigue es un nmero hexadecimal \0 Cero o nulo de terminacin o cero binario Tabla 5.1 El siguiente ejercicio, ilustra de qu manera se pueden utilizar cada uno de estos caracteres de escape, para darle formato a la informacin que se presenta en pantalla, en los programas que se realizan en este captulo. El captulo 5 C++, puede ser descargado en formato PDF, de la pgina web del autor, http://www.nefrabel.net/libros/algoritmos.php con el cdigo de 16 caracteres que se suministra al momento de comprar el libro. Este cdigo es irrepetible, y slo se puede utilizar una vez.
199
201
Bibliografa
1. CAIR, Osvaldo. Metodologa de la programacin: Algoritmos, diagramas de flujo y programas. 3 ed. Bogot D.C.: Alfaomega Grupo Editor S.A. de C.V., 2005. 464 p. ISBN 978-958-682-7492 2. DEITEL, Harvey M. and DEITEL, Paul J., C++ Cmo programar. 2 ed. Mxico: Prentice Hall, 1999. 1184 p. ISBN 970-17-0254-9 3. LIBERTY, Jesse and HORVATH, David B. Aprendiendo C++ para Linux en 21 das. 1 ed. Mxico: Pearson Educacin, 2001. 1144 p. ISBN 970-26-0012-X 4. LIPSCHUTZ, Seymour and POE, Arthur. Programacin con FORTRAN: Incluye Fortran Estructurado. Bogot D.C.: Editorial McGraw-Hill Latinoamericana, S.A., 1980. 314 p. ISBN 968-451017-9 SI USTED EST INTERESADO EN SEGUIR CONSULTANDO ESTE LIBRO, LO 5. LIPSCHUTZ, Martin M. and LIPSCHUTZ, Seymour. Procesamiento PUEDE COMPRAR EN LA PGINA WWW.NEFRABEL.NET o contactar al autor en la cuenta de correo algoritmos@nefrabel.netSchaum. Bogot D.C.: Mc Graw-Hill, de datos: Serie Compendios 1982. 218 p. ISBN 968-451-412-3 6. SANCHEZ C., Rubn E. y VELASCO M., Antonio. Curso bsico de ALGEBRA LINEAL. 3 ed. Bogot D.C.: Compaa Editorial Comex S.A., 1981. 213 p. 7. SCHEID, Francis. Introduccin a la ciencia de las computadoras. 2 ed. Bogot D.C.: Editorial McGraw-Hill Latinoamericana S.A., 1983. 402 p. ISBN 968-451-399-2 8. SPIEGEL, Murray R. Mathematical Handbook of formulas and tables. 1 ed. New York: Schaums Online Series, McGraw-Hill Book Company, 1968. 272 p. 9. SUPPES, Patrick and HILL, Shirley. Introduccin a la lgica matemtica. Bogot D.C.: Editorial Revert S.A., 1988. 285 p. ISBN 84-291-5150-8 10. ULLMAN, Larry. PHP for the world wide web. 2 ed. Berkeley, CA.: Peachpit Press, 2004. 450 p. ISBN 0-321-24565-2