tema #1 - teoria de algoritmos

33
Asignatura de Programación II: Borland C++ 4.5 Página # 1 Programación II Índice Tema 1: Teoría de Algoritmos 1.1. Teoría de los Algoritmos 1.2. Lenguaje C++ 1.3. Resolución de Ejemplos 1.1 - Teoría de los Algoritmos ¿Qué es un Algoritmo? Es un conjunto de Instrucciones o Reglas que permiten obtener un resultado determinado a partir de ciertas reglas definidas y así resolver un problema específico. Es una secuencia finita de instrucciones cada una de las cuales tienen un significado preciso y puede ejecutarse con una cantidad finita de esfuerzo en un tiempo finito. Ejemplo: Problema: Determinar la Suma de dos números enteros. Algoritmo (Solución del Problema): Leer los dos números Evaluar si los dos números leídos son enteros Sumar los dos números Presentar resultado de la operación Características de un Algoritmo Debe consistir en una secuencia de instrucciones claras y finitas. Sus instrucciones deben ser legibles. Debe plantearse correctamente y ha de resolver el problema en todas sus facetas. Debe ser eficiente. ¿Qué es un Programa? Es el conjunto de Instrucciones o Líneas de Códigos definidos a través de un lenguaje de programación para llevar a cabo una determinada tarea y así resolver un problema específico. Es decir es el proceso de planificar y Ing. César Rivas López UPONIC

Upload: marlon-perez

Post on 26-Jun-2015

1.883 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: Tema #1 - Teoria de Algoritmos

Asignatura de Programación II: Borland C++ 4.5 Página # 1

Programación IIÍndice

Tema 1: Teoría de Algoritmos

1.1. Teoría de los Algoritmos1.2. Lenguaje C++1.3. Resolución de Ejemplos

1.1 - Teoría de los Algoritmos¿Qué es un Algoritmo?

Es un conjunto de Instrucciones o Reglas que permiten obtener un resultado determinado a partir de ciertas reglas definidas y así resolver un problema específico. Es una secuencia finita de instrucciones cada una de las cuales tienen un significado preciso y puede ejecutarse con una cantidad finita de esfuerzo en un tiempo finito.

Ejemplo:Problema: Determinar la Suma de dos números enteros.Algoritmo (Solución del Problema):

Leer los dos númerosEvaluar si los dos números leídos son enterosSumar los dos númerosPresentar resultado de la operación

Características de un Algoritmo Debe consistir en una secuencia de instrucciones claras y finitas. Sus instrucciones deben ser legibles. Debe plantearse correctamente y ha de resolver el problema en todas sus facetas. Debe ser eficiente.

¿Qué es un Programa? Es el conjunto de Instrucciones o Líneas de Códigos definidos a través de un lenguaje

de programación para llevar a cabo una determinada tarea y así resolver un problema específico. Es decir es el proceso de planificar y formalizar una secuencia de instrucciones dadas en Algoritmos, a través de la codificación por medio de un lenguaje de programación, que han de seguir en una computadora para dar solución a un problema planteado.

Proceso de la ProgramaciónPara realizar un Programa por computadoras, hay que proponer primeramente una solución para un problema específico, es decir, pensar en una estrategia para solucionarlo. Posteriormente, se pasa al análisis en donde se averigua qué tipo de problema es y como le vamos a dar solución, así como de seleccionar el lenguaje de programación a utilizar. Finalmente, se procede a elaborar el programa en la computadora.

Todo este proceso involucra los pasos siguientes:

Ing. César Rivas López UPONIC

Page 2: Tema #1 - Teoria de Algoritmos

Asignatura de Programación II: Borland C++ 4.5 Página # 2

Definición del Problema Análisis del Problema Planificación del Problema Algoritmo Formulado Codificación del Algoritmo Ejecución y Verificación de Errores Documentación del Programa

Estructura de un AlgoritmoLa estructura general de un Algoritmo está basada particularmente del modelo de programación estructurada, la cual consta de los puntos siguientes:

Diseño del problema de lo general a lo particular (Metodología TOP – DOWN) Teorema de la Estructura (Secuencial, Alternativa y Repetitiva)

Además, se puede representar dicha estructura en: Forma Gráfica: Flujogramas y Diagramas NS. Forma Textual: Pseudocódigo.

La estructura básica de un Algoritmo (en Pseudocódigo) sería:

Los elementos que podemos identificar en esta estructura son: Identificación del AlgoritmoConsiste en una cabecera en la que se da un nombre característico al algoritmo. La instrucción de está corresponde:

Algoritmo Nombre_Algoritmo;

Declaración de VariablesConsiste en definir los nombres de las variables a usar en el algoritmo y el tipo de datos a que pertenece. Los tipos de datos básicos son: Enteros, Real, Carácter y Lógico. La instrucción de está corresponde:

Declaración de Variables:Nombre_Variable1, Nombre_Variable2: Tipo_Datos

Cuerpo del AlgoritmoConstituye la secuencia de acciones que resuelve el problema planteado. Estarán comprendidos entre las palabras INICIO…FIN que indicarán el inicio de las acciones a realizar y el final de ellos.

Ing. César Rivas López UPONIC

Algoritmo Nombre_Algoritmo;Declaración de Variables:

Nombre_Variable: Tipo_DatosINICIO

InstruccionesFIN

Page 3: Tema #1 - Teoria de Algoritmos

Asignatura de Programación II: Borland C++ 4.5 Página # 3

Operaciones Primitivas definidas en un Algoritmo1. Operación de Asignación (Entradas de Datos) Mediante esta operación se podrán dar valores a las variables. La notaremos mediante una flecha, que partirá del valor a asignar y apuntará a la variable a la que se le asignará tal valor.

El formato sería:Nombre_Variable Valor Asignado

Ejemplo:Salario 5000Sexo ‘M’Vacío TruePI 3.1416

A la operación de dar valor a una variable desde el teclado se le conoce como Lectura o Entrada desde el Teclado. El formato sería:

Leer (Nombre_Variable)

Ejemplo:Leer (Salario)

2. Operación de Salidas de Datos A la operación que permite mostrar el contenido de una o más variables en la pantalla se le denomina Escritura de Datos.

El formato sería:Escribir (Nombre_Variable)

Ejemplo:Escribir (Salario) reflejaría el valor de: 5000

Existe un segundo formato para la sentencia de Escritura de Datos que permite escribir mensajes en la pantalla. Tales mensajes habrán de ir encerrados entre comillas dobles. La sintaxis sería:

Escribir (“Contenido del Mensaje”)

Ejemplo:Escribir (“Bienvenido a mi Primer Programa”)

La mayoría de los lenguajes de programación permiten agrupar mensajes y variables en la misma sentencia de Escritura de Datos separándolas entre sí por comas. La sintaxis sería:

Escribir (“Mensaje”, Nombre_Variable)

Ing. César Rivas López UPONIC

Page 4: Tema #1 - Teoria de Algoritmos

Asignatura de Programación II: Borland C++ 4.5 Página # 4

Ejemplo:Escribir (“El salario mensual obtenido fue: ”, Salario)

Reflejaría: El salario mensual obtenido fue: 5000

3. Estructura de Control Secuencia

Su Formato sería:INICIO

Instrucción_1Instrucción_2Instrucción_3….

FIN

Selectiva o AlternativaSu Formato sería (Simple):

INICIOSI (Condición) ENTONCES

Instrucción_1_AInstrucción_2_A….

SINOInstrucción_1_BInstrucción_2_B….

FIN_SIFIN

Su Formato sería (Compuesta):INICIO

EN CASO (Nombre_Variable) SEAValor_1:

Instrucción_1_AInstrucción_2_A….

Valor_2:Instrucción_1_BInstrucción_2_B….

Valor_3:Instrucción_1_CInstrucción_2_C….

Valor_4:Instrucción_1_DInstrucción_2_D

Ing. César Rivas López UPONIC

Page 5: Tema #1 - Teoria de Algoritmos

Asignatura de Programación II: Borland C++ 4.5 Página # 5

….SINO

InstrucciónFIN_EN CASO

FIN

Repetitiva o BucleBucle Mientras:

Su Formato sería:INICIO

Mientras (Condición) HagaInstrucción_1Instrucción_2….Instrucción que haga Falsa a la Condición

FIN_MientrasFIN

Bucle Repetir:Su Formato sería:

INICIORepita

Instrucción_1Instrucción_2….Instrucción que haga Verdadera a la Condición

Hasta Que (Condición)FIN

Bucle Desde:Su Formato sería:

INICIODesde Nombre_Variable Valor_Inicial Hasta Valor_Final Haga

Instrucción_1Instrucción_2….Nombre_Variable Nombre_Variable + Incremento

óNombre_Variable Nombre_Variable – Decremento

FIN_DesdeFIN

Ing. César Rivas López UPONIC

Page 6: Tema #1 - Teoria de Algoritmos

Asignatura de Programación II: Borland C++ 4.5 Página # 6

Ejemplos:1.- Formular un Algoritmo que permita leer 2 números enteros y escribir el mayor de los dos. Si son iguales mandar un mensaje indicándolos que lo son

Solución Definición del Problema

Problema: Determinar el mayor de dos números enteros dados

Si A > B entoncesMensaje: El mayor es el número A

Si A < B entoncesMensaje: El mayor es el número B

Si A = B entoncesMensaje: Los dos números son iguales

Análisis del ProblemaVariables de Entradas: Variables de Salida:

Num_1 y Num_2 Mensaje en Pantalla

Algoritmo Formulado

Algoritmo Ejemplo_1;Declaración de Variables:

Num_1, Num_2: EnterosINICIO

Limpiar_PantallaEscribir (“Comparación entre dos números dados”){Datos de Entradas}

Escribir (“Escriba el Primer Número: ”)Leer (Num_1)Escribir (“Escriba el Segundo Número: ”)Leer (Num_2)

{Comparando los dos números}SI (Num_1 > Num_2) ENTONCES

Escribir (“El mayor es el Num_1”)SINO

SI (Num_1 < Num_2) ENTONCESEscribir (“El mayor es el Num_2”)

SINOEscribir (“Los números son iguales”)

FIN_SIFIN_SI

FIN

Ing. César Rivas López UPONIC

Page 7: Tema #1 - Teoria de Algoritmos

Asignatura de Programación II: Borland C++ 4.5 Página # 7

2.- Leer un carácter y dos números enteros. Si el carácter leído es un operador aritmético (+, –, *, /) calcular la operación correspondiente. Si es cualquier otro entonces mostrar un mensaje de error.

Solución Definición del Problema

Problema: Determinar la operación aritmética entre dos números enteros dados

En caso que (Operador) sea‘+’:

C = A + BMensaje: El Resultado de la operación fue C

‘–‘: C = A – B Mensaje: El Resultado de la operación fue C

‘*’:C = A * BMensaje: El Resultado de la operación fue C

‘/‘: C = A / B Mensaje: El Resultado de la operación fue C

Análisis del ProblemaVariables de Entradas: Variables de Salida:

Operador, Num_1 y Num_2 Num_3 y Mensaje en Pantalla

Algoritmo FormuladoAlgoritmo Ejemplo_2;Declaración de Variables:

Num_1, Num_2: EnterosNum_3 : RealOperador : Carácter

INICIOLimpiar_PantallaEscribir (“Operación Aritmética entre dos números dados”){Datos de Entradas}

Escribir (“Escriba el Primer Número: ”)Leer (Num_1)Escribir (“Escriba el Segundo Número: ”)Leer (Num_2)Escribir (“Escoja qué operación aritmética desea (+,-,*,/): ”)Leer (Operador)

{Operación Aritmética}EN CASO (Operador) SEA ‘+’:

Num_3 Num_1 + Num_2Escribir (“El Resultado de la operación fue ”, Num_3)

Ing. César Rivas López UPONIC

Page 8: Tema #1 - Teoria de Algoritmos

Asignatura de Programación II: Borland C++ 4.5 Página # 8

‘–‘: Num_3 Num_1 – Num_2

Escribir (“El Resultado de la operación fue ”, Num_3) ‘*’:

Num_3 Num_1 * Num_2 Escribir (“El Resultado de la operación fue ”, Num_3)

‘/‘: Num_3 Num_1 / Num_2 Escribir (“El Resultado de la operación fue ”, Num_3)

FIN_EN CASOFIN

3.- Formular un algoritmo que muestre el promedio de una serie de números que finaliza al introducir el valor de –1. Este valor no debe ser tenido en cuenta para el promedio.

Solución Definición del Problema

Problema: Determinar el promedio de los números introducidos desde el teclado.

Promedio =

Si Num_i = – 1 Sale de la introducción y suma del númerados. Y Calcula el promedio

SinoContinúa introduciendo los datos.

Análisis del Problema

Variables de Entradas: Variables de Salida:Num Promedio y Mensaje de Error

Algoritmo FormuladoAlgoritmo Ejemplo_3;Declaración de Variables:

Num, Contador, Suma : EnterosPromedio : Real

INICIOLimpiar_PantallaEscribir (“Promedio de una Serie de Números”){Datos de Entradas}

Suma 0Contador 0 Escribir (“Escriba el Primer Número: ”)Leer (Num)

Ing. César Rivas López UPONIC

Page 9: Tema #1 - Teoria de Algoritmos

Asignatura de Programación II: Borland C++ 4.5 Página # 9

{Totalizando de Datos}Mientras (Num < > – 1) Haga

Suma Suma + NumContador Contador + 1Escribir (“Escriba el Siguiente Número: ”)Leer (Num)

FIN_Mientras

{Determinando el Promedio}SI (Contador = 0) ENTONCES

Escribir (“No se puede determinar Promedio”)SINO

Promedio Suma / ContadorEscribir (“El promedio fue ”, Promedio)

FIN_SIFIN

4.- Formular un algoritmo que calcule el factorial de un número entero dado.

Solución Definición del Problema

Problema: Determinar el factorial de un número entero positivo dado.

0! Y 1! = 15! = 5 * 4 * 3 * 2 * 19! = 9 * 8 * 7 * 6 * 5 * 4 * 3 * 2 * 1….N! = N * (N – 1) * (N – 2) * (N – 3) * … * (N – (N – 1)) Si N es menor a 0 mandar un mensaje de error.

Análisis del ProblemaVariables de Entradas: Variables de Salida:

Num Factorial y Mensaje de Error

Algoritmo FormuladoAlgoritmo Ejemplo_4;Declaración de Variables:

Num, Controlador : EnterosFactorial : Real

INICIOLimpiar_PantallaEscribir (“Factorial de un Número Entero Positivo”){Datos de Entradas}Escribir (“Escriba el Número: ”)Leer (Num)

Ing. César Rivas López UPONIC

Page 10: Tema #1 - Teoria de Algoritmos

Asignatura de Programación II: Borland C++ 4.5 Página # 10

{Evaluando el número}SI (Num < 0) ENTONCES

Escribir (“No se puede calcular el factorial de un número negativo”)SINO

SI (Num = 0) ENTONCESFactorial 1Escribir (“El factorial de ”, Num, “ es de ”, Factorial)

SINOFactorial 1Desde Controlador Num Hasta 1 Haga

Factorial Factorial * ControladorControlador Controlador – 1

FIN_DesdeEscribir (“El Factorial de ”, Num, “ es de ”, Factorial)

FIN_SIFIN_SI

FIN

1.2 - Lenguaje C++ Proceso para la Obtención de un Programa Ejecutable

Fichero Fuente y Programa o Código Fuente: Los programas C y C++ se escriben con la ayuda de un editor de textos del mismo modo que cualquier texto corriente. Los ficheros que contiene programas en C o C++ en forma de texto se conocen como Ficheros Fuentes, y el texto del programa que contiene se conoce como Programa Fuente.

Ficheros Objeto, Código Objeto y Compiladores: Los Programas Fuentes no pueden ejecutarse. Son Ficheros de Texto, pensados para que los comprendan los seres humanos, pero incomprensibles para los ordenadores. Para conseguir un Programa Ejecutable hay que seguir algunos pasos. El primero es Compilar o Traducir el Programa Fuente a su Código Objeto equivalente. Este es el trabajo que hacen los Compiladores de C y C++. Consiste en obtener un fichero equivalente a nuestro programa fuente comprensible para el ordenador, este fichero se conoce como Fichero Objeto, y su contenido como Código Objeto. Los Compiladores son programas que leen un Fichero de Texto que contiene el Programa Fuente y generan un fichero que contiene el Código Objeto. El Código Objeto no tiene ningún significado para los seres humanos, al menos no directamente. Además es diferente para cada ordenador y para cada sistema operativo. Por lo tanto existen diferentes compiladores para diferentes sistemas operativos y para cada tipo de ordenador.

Librerías: Junto con los Compiladores de C y C++, se incluyen ciertos ficheros llamados Librerías. Las librerías contienen el Código Objeto de muchos programas que permiten hacer cosas comunes, como Leer desde el teclado, Escribir en la pantalla, Manejar números, realizar funciones matemáticas, etc. Las Librerías están clasificadas por el tipo de trabajos que hacen, hay Librerías de E/S, Librerías de Matemáticas, Librerías de Manejo de Memoria, Librerías de Manejo de Textos, etc. Hay un conjunto de librerías muy especiales, que se incluyen con todos los Compiladores de C y de C++. Son las Librerías ANSI o

Ing. César Rivas López UPONIC

Page 11: Tema #1 - Teoria de Algoritmos

Asignatura de Programación II: Borland C++ 4.5 Página # 11

Estándar. Pero también hay librerías no estándar, y dentro de estas las hay públicas y comerciales.

Ficheros Ejecutables y Enlazadores: Cuando obtenemos el Fichero Objeto, aún no hemos terminado el proceso. El Fichero Objeto, a pesar de ser comprensible para el ordenador, no puede ser ejecutado.

Existe un programa que hace todas estas cosas, se trata del "Link", o Enlazador. El Enlazador toma todos los Ficheros Objeto que componen nuestro programa, los combina con los ficheros de librería que sea necesario y crea un Fichero Ejecutable. Una vez terminada la fase de enlazado, ya podremos ejecutar nuestro programa.

Errores: Por supuesto, somos humanos, y por lo tanto nos equivocamos. Los errores de programación pueden clasificarse en varios tipos, dependiendo de la fase en que se presenten.

Errores de Sintaxis . Errores de Avisos . Errores de Enlazado . Errores de Ejecución . Errores de Diseño .

Definición del Lenguaje C++ Tanto C como C++ son lenguajes de programación de Propósito General. Todo puede programarse con ellos, desde sistemas operativos y compiladores hasta aplicaciones de bases de datos y procesadores de texto, pasando por juegos, aplicaciones a medida, etc.

Una de las propiedades de C y C++ es la reutilización del código en forma de librerías de usuario. Después de un tiempo trabajando, todos los programadores desarrollan sus propias librerías para aquellas cosas que hacen frecuentemente. Y además, raramente piensan en ello, se limitan a usarlas.

Además, los programas escritos en C o C++ tienen ventajas importantes con respecto a otros lenguajes de programación. Con la excepción del ensamblador, generan los programas más compactos y rápidos. El código es transportable, es decir, un programa ANSI en C o C++ podrá ejecutarse en cualquier máquina y bajo cualquier sistema operativo. Y si es necesario, proporcionan un acceso a bajo nivel de hardware sólo igualado por el ensamblador.

Por último, existen varios compiladores de C y C++ gratuitos, o bajo la norma GNU, así como cientos de librerías de todo propósito y miles de programadores en todo el mundo, muchos de ellos dispuestos a compartir su experiencia y conocimientos.

Uso del Programa Borland C++ 4.5

La palabra “C++” hace referencia al lenguaje C++, un C Mejorado a su versión anterior. Por tanto, Borland C++ 4.5 ha evolucionado a partir del lenguaje C original y ahora contiene

Ing. César Rivas López UPONIC

Page 12: Tema #1 - Teoria de Algoritmos

Asignatura de Programación II: Borland C++ 4.5 Página # 12

centenares de instrucciones, funciones y palabras claves, muchas de las cuales están directamente relacionados con la interfaz gráfica de Windows.

Elementos del Entorno Integrado de Desarrollo.

El Entorno de Trabajo del Borland C++ 4.5 se denomina Entorno Integrado de Desarrollo (IDE), ya que integra muchas funciones diferentes como el diseño, modificación, compilación y depuración en un entorno común. En las herramientas de desarrollo más tradicionales, cada una de esas funciones funcionaría como un programa diferente, cada una con su propia interfaz.

Los pasos para acceder al programa Borland C++ 4.5 se ilustra a continuación:

Pasos para Crear una Aplicación en Borland C++ 4.5 Hay Cuatro Pasos Principales para crear una aplicación en el Lenguaje C++:

o Formular el Algoritmo solución al Problema.o Escribiendo el código fuenteo Ejecutar la Aplicación.o Generar el Código Ejecutable

Ejemplos: 1.- Formule un Programa en C++ que permita leer 2 números enteros y escribir el mayor de los dos. Si son iguales mandar un mensaje indicándolos que lo sonSolución

Algoritmo FormuladoAlgoritmo Ejemplo_1;Declaración de Variables:

Num_1, Num_2: EnterosINICIO

Limpiar_PantallaEscribir (“Comparación entre dos números dados”){Datos de Entradas}

Escribir (“Escriba el Primer Número: ”)Leer (Num_1)Escribir (“Escriba el Segundo Número: ”)Leer (Num_2)

{Comparando los dos números}SI (Num_1 > Num_2) ENTONCES

Escribir (“El mayor es el Num_1”)SINO

SI (Num_1 < Num_2) ENTONCESEscribir (“El mayor es el Num_2”)

SINOEscribir (“Los números son iguales”)

FIN_SIFIN_SI

FIN

Ing. César Rivas López UPONIC

Page 13: Tema #1 - Teoria de Algoritmos

Asignatura de Programación II: Borland C++ 4.5 Página # 13

Escribiendo el Código FuenteEl Código Fuente en C++ sería:

#include <iostream.h>#include <conio.h>int main(){

//Declaración de Variablesint Num_1, Num_2;

// Inicio del Programa clrscr();

cout<<"Comparación entre dos números dados"<<endl;cout<<"Escriba el Primer Número: ";

cin>>Num_1; cout<<endl<<"Escriba el Segundo Número: "; cin>>Num_2; if(Num_1 > Num_2) cout<<"El mayor es el Num_1"<<endl;

else if(Num_1 < Num_2)

cout<<"El mayor es el Num_2"<<endl; else cout<<"Los números son iguales"<<endl;

cout<<"Escriba cualquier tecla para terminar..."; getch(); return 0;

}

Explicación del Código, Partes por Partes: Primera Parte: Archivos o Librerías de Cabecera. En esta se hace referencia a los

archivos o librerías estándar del lenguaje. Todas las funciones de entradas y salidas, funciones matemáticas y otras son definidas a partir de estos archivos con extensión h. Si no se incluye estos archivos, no correrá cualquier programa que vayamos a realizar.

Archivos a Incluir:#include <iostream.h>#include <conio.h>

Segunda Parte: int main (). Es el principio de la definición de la función principal del programa. En general, todas las funciones en C++ toman unos valores de entrada, llamadas Parámetros o Argumentos y devuelven un valor de retorno. La primera palabra int indica el tipo de valor de retorno de la función principal, que en este caso es un número entero. La función main siempre devuelve un entero expresada por la palabra reservada return 0. La segunda palabra es el nombre de la función lo cual es usada para ser llamada o invocada en algún punto del código. El cuerpo de la función estará limitados por las llaves {}.

Ing. César Rivas López UPONIC

Page 14: Tema #1 - Teoria de Algoritmos

Asignatura de Programación II: Borland C++ 4.5 Página # 14

Sintaxis:int main(){ return 0;}

Tercera Parte: int Num_1, Num_2. Esta es nuestra primera sentencia, todas las sentencias terminan con un punto y coma. Esta concretamente es una declaración de variables. Una Declaración nos dice a nosotros y al compilador, que usaremos variables Num_1 y Num_2 de tipo Entero (int). Esta declaración obliga al compilador a reservar un espacio de memoria para almacenar las variables Num_1 y Num_2, pero no le da ningún valor inicial. En general, todas las variables declaradas contendrán valores basuras, es decir, lo que hubiera en esa zona de memoria cuando se reservó espacio para ellas. En C++ es obligatorio declarar las variables que usará el programa.

Sintaxis:Tipo_Datos Nombre_Variables;

Cuarta Parte: cout<< y cin>>. Sentencias equivalente al Escribir y Leer del Algoritmo.

Sintaxis:cout<< “Mensaje”<<Nombre_Variable;cin>>Nombre_Variable

Quinta Parte: if (Condición). Una estructura de control equivalente al SI (Condición) Entonces del Algoritmo.

Sintaxis:If (Condición){

Instrucciones}else{

Instrucciones}

Ing. César Rivas López UPONIC

Page 15: Tema #1 - Teoria de Algoritmos

Asignatura de Programación II: Borland C++ 4.5 Página # 15

Tarea:I.- Formular los programas para los Algoritmos siguientes:

A) Leer un carácter y dos números enteros. Si el carácter leído es un operador aritmético (+, –, *, /) calcular la operación correspondiente. Si es cualquier otro entonces mostrar un mensaje de error.

Algoritmo FormuladoAlgoritmo Ejemplo_2;Declaración de Variables:

Num_1, Num_2: EnterosNum_3 : RealOperador : Carácter

INICIOLimpiar_PantallaEscribir (“Operación Aritmética entre dos números dados”){Datos de Entradas}

Escribir (“Escriba el Primer Número: ”)Leer (Num_1)Escribir (“Escriba el Segundo Número: ”)Leer (Num_2)Escribir (“Escoja qué operación aritmética desea (+,-,*,/): ”)Leer (Operador)

{Operación Aritmética}EN CASO (Operador) SEA ‘+’:

Num_3 Num_1 + Num_2Escribir (“El Resultado de la operación fue ”, Num_3)

‘–‘: Num_3 Num_1 – Num_2

Escribir (“El Resultado de la operación fue ”, Num_3) ‘*’:

Num_3 Num_1 * Num_2 Escribir (“El Resultado de la operación fue ”, Num_3)

‘/‘: Num_3 Num_1 / Num_2 Escribir (“El Resultado de la operación fue ”, Num_3)

FIN_EN CASOFIN

B) Obtener el promedio de una serie de números que finaliza al introducir el valor de –1. Este valor no debe ser tenido en cuenta para el promedio.

Algoritmo FormuladoAlgoritmo Ejemplo_3;Declaración de Variables:

Num, Contador, Suma : Enteros

Ing. César Rivas López UPONIC

Page 16: Tema #1 - Teoria de Algoritmos

Asignatura de Programación II: Borland C++ 4.5 Página # 16

Promedio : RealINICIO

Limpiar_PantallaEscribir (“Promedio de una Serie de Números”){Datos de Entradas}

Suma 0Contador 0 Escribir (“Escriba el Primer Número: ”)Leer (Num)

{Totalizando de Datos}Mientras (Num < > – 1) Haga

Suma Suma + NumContador Contador + 1Escribir (“Escriba el Siguiente Número: ”)Leer (Num)

FIN_Mientras

{Determinando el Promedio}SI (Contador = 0) ENTONCES

Escribir (“No se puede determinar Promedio”)SINO

Promedio Suma / ContadorEscribir (“El promedio fue ”, Promedio)

FIN_SIFIN

C) Obtener el factorial de un número entero dado.

Algoritmo FormuladoAlgoritmo Ejemplo_4;Declaración de Variables:

Num, Controlador : EnterosFactorial : Real

INICIOLimpiar_PantallaEscribir (“Factorial de un Número Entero Positivo”){Datos de Entradas}Escribir (“Escriba el Número: ”)Leer (Num)

{Evaluando el número}SI (Num < 0) ENTONCES

Escribir (“No se puede calcular el factorial de un negativo”)SINO

SI (Num = 0) ENTONCES

Ing. César Rivas López UPONIC

Page 17: Tema #1 - Teoria de Algoritmos

Asignatura de Programación II: Borland C++ 4.5 Página # 17

Factorial 1Escribir (“El factorial de ”, Num, “ es de ”, Factorial)

SINOFactorial 1Desde Controlador Num Hasta 1 Haga

Factorial Factorial * ControladorControlador Controlador – 1

FIN_DesdeEscribir (“El Factorial de ”, Num, “ es de ”, Factorial)

FIN_SIFIN_SI

FIN

II.- Obtener el Algoritmo y Programa para cada uno de los problemas siguientes:

a) Determine el Área de un triángulo sabiendo su base y su altura escrita e introducida desde el teclado.

b) Leer las cantidades de toneladas de maíz producidas por los países de México, Nicaragua y Canadá, calcular e imprimir el porcentaje de producción de cada uno de esos países.

c) Leer los votos obtenidos por los 3 candidatos por la Alcaldía Municipal, calcular e imprimir al ganador. Se desconoce el número de votantes.

d) Leer dos números enteros distintos, donde el primero es mayor que el segundo y que totalice los números comprendidos entre ellos, sin incluirlos.

e) Sean los datos a, b, c, d. Elabore algoritmos independientes para leer los datos, resolver e imprimir el resultado de cada uno de los siguientes incisos:

a) Escribir los datos en orden inverso.b) Escribir los datos en orden inverso, omitiendo el segundo dato.c) Calcular: a + b - c

d

d) Calcular: (a - b)2 (a - b)3

c d a

f) Elabore un algoritmos que teniendo como datos de entrada el radio y la altura de un cilindro calcule el área total y el volumen del cilindro.

Análisis del problema:

Teniendo en cuenta que el área de un cilindro es igual a la suma de las áreas de los dos círculos más el área del rectángulo formado por la longitud de la circunferencia y la altura

Ing. César Rivas López UPONIC

Page 18: Tema #1 - Teoria de Algoritmos

Asignatura de Programación II: Borland C++ 4.5 Página # 18

del cilindro y que el volumen se obtiene multiplicando la superficie de la base del círculo por la altura del cilindro.

g) Un sistema de ecuaciones lineales:

ax + by = cdx + ey = f

Se puede resolver con las siguientes fórmulas:

Elabore un algoritmos que lea dos conjuntos de coeficientes (a, b, y c; d, e, y f) y visualice los valores de x e y.

h) Una persona recibe un préstamo de $10,000.00 de un banco y desea saber cuánto pagará de interés al terminar el mes si el banco le cobra una tasa del 2% mensual.

a) Resuelva este caso particular.b) Generalice este problema para un monto cualquiera de capital y para una tasa

cualquiera.

i) Sean los datos: x, a1, a2, a3, a4; Elabore un diagrama de flujo para calcular:

a1x3 + a2x2 + a3x + a4

Sin usar la operación de potencia.

a) ¿Cuántas operaciones de multiplicación y cuántas de suma utilizó? b) ¿Puede reducir ambas cantidades? En caso afirmativo, hágalo.

j) Elabore un Algoritmo que lea dos valores numéricos a y b y los imprima en orden ascendente.

k) Una empresa desea conocer el monto de comisión correspondiente a una venta realizada por un vendedor bajo las siguientes condiciones. Si la venta es menor a $1,000.00, se le otorga el 3% de comisión. Si la venta es de $1,000.00 o más, el vendedor recibe el 5% de comisión.

l) Elabore un Algoritmo que lea un dato entero e imprima si ese dato es par o impar.

m) Una agencia automotriz ofrece planes de crédito para la adquisición de los diferentes modelos de automóviles. Si el automóvil vale más de $250,000.00 la agencia solicita un 35% de enganche y el resto debe cubrirse en 24 mensualidades sin intereses. Si el

Ing. César Rivas López UPONIC

Page 19: Tema #1 - Teoria de Algoritmos

Asignatura de Programación II: Borland C++ 4.5 Página # 19

automóvil tiene un valor máximo de $250,000.00 se requiere un enganche del 25% y el resto se debe pagar en 18 mensualidades sin intereses.

La agencia desea saber, en base al precio de un automóvil que un determinado cliente elija, cuál es el monto del enganche; y cuál es el número y el monto de las mensualidades que éste debe cubrir.

n) El precio de un boleto de viaje redondo en tren se calcula tomando en cuenta el número de kilómetros que se van a recorrer, siendo el precio $60.00 por Km. Este precio puede tener un descuento del 30% si el viaje de regreso se hace después de 7 días del viaje de ida, o si el recorrido supera los 800 Km.

Elabore un Algoritmo para calcular cuánto se debe pagar por un boleto de tren dando como datos el total de Km recorridos y el número de días entre el viaje de ida y el viaje de vuelta.

Pruebe su Algoritmo con los siguientes grupos de datos:

a) 850 Km y 10 días.b) 356 Km y 8 días.

o) Elabore un Algoritmo para resolver ax2 + bx + c = 0 en el caso de raíces reales. Los datos son: a, b, c. Puede usar las operaciones que necesite. Asegúrese que el resultado sea válido.Análisis del problema:Si a <> 0 se presentan tres casos:

Primero con dos soluciones dadas con la fórmula que da la solución de la ecuación de segundo grado cuando el discriminante es positivo.

Segundo con una solución dada por la fórmula cuando el discriminante es cero. Tercero con dos soluciones complejas, dadas por la fórmula cuando el

discriminante es negativo.

Si a = 0 se presentan a su vez tres casos:

Primero es cuando b <> 0, cuya solución es .

Segundo es cuando b = 0 y c = 0, que es evidente una identidad. Tercero cuando b = 0 y c <> 0 que no puede tener solución.

p) Elabore un Algoritmo que calcule el área de un triángulo mediante la formula:

donde p es el semiperímetro, p = (a + b + c) / 2, siendo a, b, c los tres lados del triángulo.Análisis del problema:Para que el triángulo exista debe cumplirse que los lados sean todos positivos, y además que la suma de dos lados cualesquiera sea mayor que el otro lado.

Ing. César Rivas López UPONIC

Page 20: Tema #1 - Teoria de Algoritmos

Asignatura de Programación II: Borland C++ 4.5 Página # 20

q) Dado un valor de x calcular el valor de y según la siguiente función:

r) Elabore un Algoritmo que calcule la siguiente función:

Datos: num, v

Donde:num es una variable de tipo entera.

v es una variable de tipo entera.

s) En una empresa, se darán aumentos a los empleados según la categoría de su contrato actual de la siguiente forma:

Clave de categoría

Categoría Aumento %

S Sindicalizado 20C Confianza 10D Directivo 5E Ejecutivo 0

Elabore un Algoritmo que solicite la clave de la categoría y el sueldo actual de un empleado y calcule e imprima el nuevo salario.

t) Elabore un Algoritmo para que, dados dos números enteros a, b y una clave, realice la operación aritmética indicada por medio de la clave a los números dados. Por ejemplo, si los datos son: 8 4 +, el algoritmo debe calcular la suma de 8 + 4. Las claves válidas son: + - * /.

u) Elabore un Algoritmo para leer una serie de enteros positivos, contar los valores introducidos y calcular su promedio. El final de los datos se indicará con un número negativo.

v) Una tienda desea obtener una serie de reportes diarios a partir de las ventas realizadas en un día. Elabore un Algoritmo que:

c) solicite el monto de cada venta sin IVA,d) para cada venta, calcule e imprima el IVA y el total con IVA,e) al terminar el día, imprima un reporte con los totales de:

ventas sin IVA,

Ing. César Rivas López UPONIC

Page 21: Tema #1 - Teoria de Algoritmos

Asignatura de Programación II: Borland C++ 4.5 Página # 21

IVA, ventas con IVA, promedio de las ventas con IVA.

Se desconoce el número de ventas que se realizan en un día, por lo que el final de los datos se indica con un –1. Suponga que el IVA es del 15%.

w) Elabore un Algoritmo, que dada una n entera, con 1 £ n £ 100, imprima los primeros n números naturales en orden ascendente.

x) Elabore un Algoritmo, que dada una n entera, con 1 £ n £ 100, imprima los primeros n números naturales en orden descendente.

y) Elabore un Algoritmo, que imprima todos los pares menores o iguales a n.

z) Elabore un Algoritmo, que imprima los primeros n pares.

aa) Elabore un Algoritmo para leer n enteros, calcular e imprimir su suma y su promedio.

bb) Una tabla de estadísticas muestra la producción de barriles de petróleo de 5 países petroleros (México, Venezuela, Arabia Saudita, Libia y Argelia), durante el primer semestre de 2001. La tabla tiene el siguiente formato:

bm, bv, bas, bl, ba: No de barriles/país en enero.bm, bv, bas, bl, ba: No de barriles/país en febrero.. . .bm, bv, bas, bl, ba: No. de barriles/país en junio.

Elabore un Algoritmo que calcule la producción total de barriles en el semestre y la de cada uno de los países involucrados.

cc) Elabore un Algoritmo, que calcule m x n (m 0 , n 0, ambos enteros) sin utilizar la operación de multiplicación.

dd) Elabore un Algoritmo, que calcule mn (n > 0 y entero) sin utilizar potencia.

ee) Elabore un Algoritmo que dado un valor n entero con n 1, calcule e imprima la siguiente sumatoria:

ff) Elabore un Algoritmo que dado un número n entero positivo, imprima todos sus divisores.

Ing. César Rivas López UPONIC

Page 22: Tema #1 - Teoria de Algoritmos

Asignatura de Programación II: Borland C++ 4.5 Página # 22

gg) Dada la función:

y dados los valores k,x1,x2,..,xk, Elabore un Algoritmo para calcular f(xi) para i = 1,2...,k.

hh) Dados los datos: a, b, c, d; Elabore un Algoritmo para cada uno de los siguientes problemas:

f) Hallar el mayor.g) Hallar el menor.h) Hallar el mayor y el menor.

ii) Dados los datos: n, a1, a2,..., an con n > 0, Elabore un Algoritmo para encontrar el máximo de los ai.

jj) Elabore un Algoritmo que reciba un valor n entero y

i) si n0 calcule n!j) si n<0 escriba un mensaje de error y no calcule nada.

kk) Sean los datos m y n enteros positivos, Elabore un diagrama de flujo para calcular el Máximo Común Divisor y el Mínimo Común Múltiplo de m y n. El Algoritmo de Euclides establece que, si m>=n, MCD(m,n) = MCD(n, m mod n).

ll) Construya un Algoritmo que calcule e imprima los 150 primeros números de la serie de Fibonacci. Recuerde que los dos primeros números de la serie son 0 y 1. El resto se calcula como la suma de los dos números que lo preceden.

Ejemplo: 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, . . .

mm) En una guardería hay 25 niños de 1, 2 y 3 años. Los niños de 1 año consumen 6 pañales al día, los niños de 2 años consumen 3 pañales diarios y los niños de 3 años consumen 2 pañales diarios. Se desea conocer el consumo total de pañales diarios.

Datos: edad1

edad2

. . . . . edad25

donde edadi representa la edad del i–ésimo niño en años cumplidos (1, 2 ó 3).

nn) Una empresa que cuenta con k empleados desea realizar algunos cálculos para la nueva nómina. Los datos con que cuenta son los sueldos de los k empleados:

k, s1, s2, s3, ..., sk.

Ing. César Rivas López UPONIC

Page 23: Tema #1 - Teoria de Algoritmos

Asignatura de Programación II: Borland C++ 4.5 Página # 23

Elabore un Algoritmo para leer los datos y contestar a las siguientes preguntas:

k) ¿Cuál es el aumento correspondiente a cada empleado según el siguiente criterio?

17% si el sueldo es inferior a $5,00010% si el sueldo está entre $5,000 y $15,000 5% si el sueldo es superior a $15,000

l) ¿Cuál es el nuevo sueldo para cada empleado?m) ¿Cuál es el total de la nueva nómina?n) ¿Cuál es el incremento en la nómina?o) ¿Cuál es el máximo sueldo nuevo?p) ¿Cuál es el mínimo sueldo nuevo?

Resuelva los incisos progresivamente.

oo) Una empresa tiene n empleados, por los que aporta al INATEC el 2% de la nómina y al INSS el 15%. Donde los datos son:

n, s1, s2,..., sn

Donde:n representa el número de empleadossi representa el sueldo del empleado i

Elabore un Algoritmo que calcule e imprima:q) el sueldo-empresa de cada empleado que consiste en el sueldo del empleado más

las aportaciones mencionadas;r) el monto total de la nómina que paga la empresa; ys) el total de aportaciones al INATEC y al INSS que realiza la empresa.

pp) Una carrera profesional consta de 40 materias, repartidas en 8 semestres a razón de 5 materias por semestre. Como datos se dan las 40 calificaciones correspondientes a un alumno, en grupos de 5 según el semestre:

c1, c2,..., c5 <-primer semestrec6, c7,..., c10 <-segundo semestre. . . . .c36, c37,..., c40 <-octavo semestre

Elabore un Algoritmo para leer los datos y contestar a las siguientes preguntas:t) ¿Cuál es el promedio del alumno por semestre? Indique tanto el promedio como el

semestre.u) ¿Cuál es el promedio que obtuvo en la carrera?

Ing. César Rivas López UPONIC