Algoritmos y su Codificación en C++. Volumen 1

 César Liza Avila

 

INTRODUCCION

Este libro nace con la idea de servir como texto introductorio a un curso de programación y contiene características importantes dignas de resaltar que lo diferencia de otros. En los algoritmos contenidos en él, utilizamos los conocimientos previos que trae el estudiante para enlazarlo de manera efectiva con las técnicas de programación de computadoras bajo un enfoque estrictamente lógico. Contiene abundantes ejemplos divididos por temas en donde la complejidad va gradualmente en aumento, con explicaciones detalladas de la lógica utilizada, diagramas Nassi-Schneiderman (N/S) y codificación en C++. Sus 109 problemas resueltos y 121 propuestos hace que esta obra sea eminentemente práctica y por la manera como está estructurado el libro podrá detenerse en cualquier momento, para reflexionar sobre lo aprendido y tomar un merecido descanso con la certeza que al retomar su lectura no habrá perdido la secuencia del mismo.

Hemos elegido el lenguaje de programación C++, para codificar los algoritmos, por que hoy más que nunca cobra vigencia. Prácticamente todo software comercial está escrito en él, y provee de una visión muy profunda de los fundamentos de programación y del funcionamiento básico de las computadoras, sin llegar a tener la complejidad de un lenguaje ensamblador. Para la lectura de esta obra, no se requieren conocimientos de C++, pues se utilizan unas pocas sentencias. Todos los programas aquí mostrados se ven parecidos. Esto ha sido deliberadamente planificado, evitando escribir códigos más complejos y óptimos, así como la utilización de algunas funciones y particularidades proporcionadas por el C++, con el objeto de darle claridad a los programas y centrar la atención del estudiante en la lógica antes que en detalles de programación. Se recomienda probar todos los programas para que este texto resulte efectivo.

La importancia del estudio de Algoritmos radica en que es el punto de entrada al fascinante mundo de la programación de computadoras. Al implementar algoritmos, utilizamos nuestros conocimientos en diversas áreas, para resolver problemas, estructurándolos de tal manera que podamos establecer una serie de pasos para llegar a su solución. Aquí es fundamental nuestra formación matemática, pues sin ella careceremos de las visión para plantear problemas de manera lógica, así como de los métodos de solución.

Los programadores con experiencia no suelen construir diagramas N/S. Sin embargo, al plantear un problema, si estructuran una serie de pasos para resolverlo. De alguna manera han adquirido la suficiente destreza para hacerlo sobre la marcha y tienen una idea lo suficientemente clara antes de sentarse a programar. Esto de ninguna manera es recomendable para el novato y le es totalmente imprescindible la utilización de alguna herramienta como los diagramas N/S para plantear la solución a un problema dado.

Recuerde siempre que la programación de computadoras requiere de especiales destrezas y sobre todo rigidez matemática, pues nada puede dejarse al azar. En computadoras, absolutamente todo debe estar debidamente estructurado. Sin embargo, un problema puede ser resuelto de diversas maneras, cada una mejor que otra, así que la solución de problemas mediante algoritmos y la programación de computadoras, se convierte en un arte, que se de desarrolla mejor practicando y apoyándose en ejemplos descritos adecuadamente.

Esperamos que este pequeño aporte cumpla con el objetivo propuesto, así como que los problemas presentados le sean de utilidad práctica, y contribuyan en su formación profesional y humana. Le rogamos que cualquier crítica, sugerencia, o inquietud, la dirija a la siguiente dirección electrónica: creadores@hotmail.com, que gustosos la responderemos con el ánimo de mejorar en futuras ediciones.

César Liza Avila


INDICE

1.      La estructura secuencial ......................................15

1.1. Intercambio de valores
1.2. Número de apretones de mano
1.3. Suma de los n primeros números naturales
1.4. Suma de los cuadrados de los n primeros números naturales
1.5. Suma de los cubos de los n primeros números naturales
1.6. Suma de áreas de todos los cuadrados formados uniendo los puntos medios de sus lados
1.7. Area de un rombo de diagonales conocidas
1.8. Volumen de un cilindro recto
1.9. Area total de un cilindro recto
1.10. Area de un triángulo inscrito en una circunferencia
1.11. Area de un triángulo en función del semiperímetro
1.12. Hipotenusa de un triángulo rectángulo
1.13. Teorema del coseno
1.14. Distancia entre 2 puntos
1.15. Convierte complejo c = a + b i, a coordenadas polares
1.16. Monto a devolver por un capital prestado
1.17. Ley de senos
1.18. Conversión de grados sexagesimales a centesimales y radianes
1.19. Conversión del sexagesimal UºV'W" a grados, minutos y segundos centesimales
1.20. Conversión de grados Celsius a Farenheit, Kelvin y Rankine
1.21. Conversión de ºF, ºK y ºR a Celsius.



2. La estructura condicional simple .........................45

2.1. Solución de ecuaciones de primer grado
2.2. Costo de una llamada telefónica
2.3. Costo de una llamada telefónica en horario reducido y normal
2.4. Cómo es un número respecto a otro
2.5. Ordena de mayor a menor 3 números
2.6. Mayor valor de 3 números
2.7. Raíces reales de una ecuación de segundo grado
2.8. Año bisiesto
2.9. Dados q, r y s, y determine si q es múltiplo de r y s
2.10. Valor numérico de y = (x -3)/(x2 - 25)
2.11. Valor numérico de una expresión
2.12. Indica si tres longitudes forman un triángulo
2.13. Clasifica triángulos según sus lados
2.14. Clasifica alumnos según su promedio
2.15. Obtiene el signo, parte entera y parte fraccionaria de un número
2.16. Monto a pagar por compras con descuento
2.17. Dado el sueldo obtiene el salario neto e impuesto
2.18. Hora del siguiente segundo



3. La estructura condicional múltiple ......................69

3.1. Calculadora de 5 funciones
3.2. Signos del zodiaco
3.3. Estaciones del año
3.4. Cuántos días tiene un mes
3.5. Fecha correcta
3.6. Fecha del día siguiente
3.7. Conversión de números arábigos a romanos
3.8. Descuentos de pensiones de enseñanza según ocupación del tutor



4. La estructura repetitiva mientras .........................85

4.1. Cociente y el residuo de una división por restas sucesivas
4.2.
Números de Fibonacci menores que n
4.3. Divisores comunes de dos números
4.4.
Factoriza un número
4.5. Indica si un número es primo
4.6. Reduce una fracción a su mínima expresión
4.7. Lee un número e invierte sus las cifras
4.8. Indica si un número es perfecto
4.9. Indica si un número es cubo perfecto
4.10. Indica si un número pertenece a un sistema de numeración
4.11. Convierte un número decimal a una base menor que 10
4.12. Convierte un numero en una base menor que 10 a base 10
4.13. MCD de dos números por método de Euclides
4.14. MCD de dos números por restas sucesivas
4.15. MCD de dos números por descomposición de factores
4.16. MCM de 2 o más números



5. La estructura repetitiva hacer mientras .............107


5.1. Calculo del valor de .
5.2. Raíz cuadrada por el método de Newton.
5.3. Cantidad de números positivos, negativos, pares e impares
5.4. Volumen máximo de una caja a partir de lámina rectangular
5.5. Máxima área de terreno


6. La estructura repetitiva para ..............................117

6.1. Suma de una serie:
6.2. Velocidad promedio para toda la trayectoria
6.3. Valor numérico de un polinomio de grado n
6.4. Promedio de n números
6.5. Promedio ponderado de n números
6.6. Tablas de multiplicar del 1 al 15
6.7. Simula "reloj rápido"
6.8. Números de 4 cifras múltiplos de 3 y 7
6.9. Ternas pitagóricas menores que n
6.10. Artículos que podemos comprar si gastamos todo nuestro dinero
6.11. Mayor de n números
6.12. Números de 3 dígitos que aumentan en 297 al invertir sus cifras
6.13. Producto de fracciones
6.14. Suma de fracciones
6.15. Permutaciones
6.16. Variaciones
6.17. Combinaciones
6.18. Triángulo de Pascal



7. Arreglos unidimensionales .................................141

7.1. Lee n números en un array y lo imprime
7.2. Media aritmética de un conjunto de datos
7.3. Media armónica de un conjunto de datos
7.4. Media geométrica de un conjunto de datos
7.5. Promedio ponderado de un conjunto de datos
7.6. Búsqueda secuencial en un conjunto de datos
7.7. Elimina elementos repetidos en un array
7.8. Varianza y la desviación estándar de un conjunto de datos
7.9. Regresión lineal
7.10. Ordenamiento por burbuja
7.11. Ordenamiento por selección
7.12. Ordenamiento por inserción
7.13. Dado un número de día diga que fecha es



8. Funciones definidas por el usuario ....................165

8.1.
Primeros m múltiplos de n
8.2. Divisores comunes de dos números
8.3. Fecha correcta
8.4. Teorema del coseno
8.5. Número primo
8.6. Raíz cuadrada método de Newton
8.7. Número combinatorio
8.8. Promedio ponderado
8.9. Método de la burbuja



Diagramas Nassi-Schneiderman ..................................181