fundamentos de algoritmos (1)

98
[APUNTES DE FUNDAMENTOS DE ALGORITMOS ] El presente documento son apuntes de algoritmos de diferentes autores de libros, documentos y direcciones de internet 2012 KARR kene

Upload: anahi-vasquez-rodriguez

Post on 29-Oct-2015

2.486 views

Category:

Documents


4 download

TRANSCRIPT

[ ]El presente documento son apuntes de algoritmos de diferentes autores de libros, documentos y direcciones de internet

2012

KARR

kene

INDICE GENERAL

1. Sistema de procesamiento de información............................................................3

2. Concepto de algoritmo............................................................................................3

2.1. Características de los algoritmos......................................................................3

2.2. Partes de un algoritmo.....................................................................................3

3. Resolución de problemas con computadoras y las herramientas de programación3

3.1. Análisis del problema:......................................................................................3

3.2. Diseño o desarrollo del algoritmo....................................................................4

3.3. Resolución del algoritmo en la computadora..................................................4

4. Representación de un algoritmo............................................................................4

4.1. Diagrama de flujo.............................................................................................4

4.2. Pseudocódigo....................................................................................................5

5. Datos y Tipos de datos.............................................................................................5

5.1. Datos numéricos...............................................................................................5

5.1.1. Enteros:......................................................................................................5

5.1.2. Reales:.......................................................................................................5

5.2. Datos Lógicos:...................................................................................................5

5.3. Datos carácter:..................................................................................................5

6. Constantes y Variables:...........................................................................................6

7. Operadores..............................................................................................................6

7.1. Relacionales o condicionales:...........................................................................6

7.2. Aritméticos :.....................................................................................................6

7.3. Alfanuméricos:..................................................................................................7

7.4. Lógicos o Booleanos:........................................................................................7

7.5. Paréntesis:........................................................................................................7

8. Expresiones..............................................................................................................7

9. Regla de Prioridad....................................................................................................8

10. Operación de Asignación.....................................................................................8

11. Ejercicios...............................................................................................................8

12. Estructura General de un Programa....................................................................9

12.1. Partes de un programa...............................................................................10

13. Instrucciones y tipos de instrucciones...............................................................10

13.1. Instrucción...................................................................................................10

13.2. Tipos de instrucción....................................................................................10

14. Programación Estructurada...............................................................................11

14.1. Estructuras Secuencial................................................................................11

14.2. Estructuras Selectivas.................................................................................15

14.2.1. Selectivas simples:...................................................................................15

14.2.2. Selectivas Dobles:....................................................................................15

14.2.3. Selectivas múltiples:................................................................................16

14.2.4. Ejemplos..................................................................................................17

14.2.5. Ejercicios..................................................................................................18

14.3. Estructuras Repetitivas...............................................................................21

14.3.1. Estructura repetitiva mientras (While o Do while):................................22

14.3.2. Estructura repetitiva para (For):.............................................................22

14.3.3. Estructura repetitiva repetir:..................................................................23

14.3.4. Ejemplos..................................................................................................24

14.3.5. Ejercicios..................................................................................................24

15. Subprogramas....................................................................................................27

15.1. Procedimientos (Subprograma):.................................................................27

15.2. Funciones....................................................................................................28

15.3. Algoritmos Recursivos................................................................................29

16. Estructuras de Datos..........................................................................................30

16.1. Arreglos unidimensionales.........................................................................31

16.1.1. Ordenación..............................................................................................32

16.1.2. Búsqueda.................................................................................................35

16.2. Arreglos bidimensionales...........................................................................37

17. Estructuras lineal................................................................................................42

17.1. Pilas.............................................................................................................42

17.2. Colas............................................................................................................42

18. Estructura no lineal............................................................................................42

18.1. Arboles........................................................................................................42

18.2. Grafos..........................................................................................................42

ProcesadorEntrada=Datos Salida=Información

1. Sistema de procesamiento de información

Los temimos procesador de datos y sistema de procesamiento (tratamiento) de la información se utilizan con frecuencia., el uso de diario de datos e información son esencialmente sinónimos sin embargo existe una diferencia datos se refiere a la representación de algún hecho, concepto o entidad real (los datos pueden tomar diferentes formas, por ejemplo palabras escritas o habladas, números y dibujos), información implica datos procesados y organizados, un sistema en general se define como conjunto de componentes conectados e interactivos, que tienen un propósito y una unidad total. Sistema de procesamiento de información es un sistema que transforma datos brutos en información organizado, significativo y útil (Aguilar, 1988)

2. Concepto de algoritmoEs el conjunto de instrucciones que especifican la secuencia de operaciones a realizar en orden para resolver un sistema específico o clase de problema. Los algoritmos son independientes tanto del lenguaje de programación en que se expresa como de la computadora que los ejecuta. El diseño de la mayoría de los algoritmos requiere creatividad y conocimientos profundos de la técnica de la programación. En esencia. Todo problema se puede describir por medio de un algoritmo (Aguilar, 1988)

2.1. Características de los algoritmos Un algoritmo debe ser preciso e indicar el orden de realización de cada

paso Un algoritmo debe estar definido. Si se sigue un algoritmo dos veces, se

debe obtener el mismo resultado cada vez Un algoritmo debe ser finito. Si se sigue un algoritmo, se debe terminar en

algún momento ósea debe tener un numero finito de pasos2.2. Partes de un algoritmo

La definición de un algoritmo debe describir tres partes: Entrada, Proceso y SalidaEntrada: son los datos que van iniciar el procesoProceso: Es la secuencia de paso que nos permite ejecutar alguna operaciónSalida: Es la información que se requiere al resolver el problema

2.3. Frfr

3. Resolución de problemas con computadoras y las herramientas de programación

Esta se puede dividir en tres fases importantes3.1. Análisis del problema:

El problema debe estar bien definido si se desea llegar a una solución satisfactoria, para poder definir con precisión el problema se requiere que las especificaciones de entrada y salida sean descritas con detalle. Una buena definición del problema junto con una descripción detallada de las especificaciones de entrada y salida son los requisitos más importantes para llegar a una solución eficaz. El Análisis del problema exige una lectura previa del problema a fin de obtener una idea general de lo que se solicita la segunda lectura servirá para responder a las preguntas¿Qué información debe proporcionar la resolución del problema?¿Qué datos se necesitan para resolver el problema?

3.2. Diseño o desarrollo del algoritmoLa descomposición del problema original en subproblemas más simples y a continuación dividir estos subproblemas en otros más simples que pueden ser implementados para la solución en la computadora se denomina diseño descendente (Top – Down Design.). Las ventajas más importantes del diseño descendente son.

El problema se comprende más fácilmente al dividirse en partes más simples denominados módulos.

Las modificaciones en los módulos son más fáciles La comprobación del problema se puede verificar fácilmente

Tras los pasos anteriores es preciso representar el algoritmo mediante determinadas herramientas de programación diagrama de flujo, pseudocódigo o diagrama N-S

3.3. Resolución del algoritmo en la computadoraUna vez que el algoritmo está diseñado y representado gráficamente mediante una herramienta de programación (diagrama de flujo, pseudocódigo o diagrama N-S) se debe pasar a la fase de resolución práctica del problema con la computadora

4. Representación de un algoritmoPara representar los algoritmos debemos utilizar métodos gráficos o numéricos, que sea independiente de un lenguaje de programación, de tal manera que nos permita visualizar el algoritmo que queramos representar, existen varios métodos, los más usados a nivel internacional son el diagrama de flujo y el pseudocódigo.4.1. Diagrama de flujo

Es un diagrama que utiliza los símbolos (cajas) estándar mostrados y que tiene los pasos del algoritmo escritos en esas cajas unidas por flechas, denominadas líneas de flujo, que indican la secuencia en que se deben ejecutar.Un diagrama de flujo (flowchart) es una de las técnicas de representación de algoritmos más antigua y a la vez más utilizada, aunque su empleo ha

disminuido, estos símbolos están normalizados por ANSI y entre las cajas más importantes tenemos: (Aguilar, 1988)

Símbolo FunciónTerminal: representa el comienzo, inicio, final y fin de un programa. Puede representar también una parada o interrupción programada

Entrada / Salida : cualquier tipo de introducción de datos en la memoria desde los periféricos o registro dela información procesada en un periféricoProceso: Cualquier tipo de información que pueda originar cambio de valor, formato, posición de la información almacenada en memoria, operaciones aritméticas, de transferencia, etc.Decisión: indican operaciones lógicas o de comparación entre datos, normalmente dos y en función del resultado de la misma determina cuál de los distintos caminos alternativos del programa se debe seguir normalmente tiene dos salidas respuesta sí o no pero puede tener tres o más según los casosIndicador de Dirección o Línea de Flujo:indica el sentido de ejecución de las operaciones

4.2. PseudocódigoEs un lenguaje especificado de algoritmos. El uso de tal lenguaje hace el paso de codificación final relativamente fácil. La ventaja de un pseudocódigo es que en su uso la planificación de un programa, el programador se puede concentrar en la lógica y en las estructuras de control y preocuparse de las reglas de un lenguaje de programación. Es también fácil modificar el pseudocódigo si se descubren errores o anomalías en la lógica del programa(Aguilar, 1988)El pseudocódigo es un lenguaje algorítmico, de alto lenguaje utilizado para escribir con mucha más abstracción instrucciones de un lenguaje de programación.

Si

No

5. Datos y Tipos de datos5.1. Datos numéricos

El tipo numérico es el conjunto de los valores numéricos, estos pueden representarse de dos formas distintas

5.1.1. Enteros:Es un subconjunto finito de los números enteros. Los enteros son números completos, no tienen componentes fraccionarios o decimales y pueden ser negativos o positivos (Aguilar, 1988)

5.1.2. Reales:El tipo real consiste en un subconjunto de los números reales, Los números reales siempre tienen su punto decimal y pueden ser positivos o negativos

5.2. Datos Lógicos:Tipo lógico también denominado booleano, es aquel dato que solo puede tener uno o dos valores cierto o verdadero (True ) y falso (False), este tipo de dato se utiliza para representar alternativas (si/no) a determinadas conclusiones

5.3. Datos carácter:Es el conjunto finito y ordenado de caracteres que la computadora reconoce. Un dato tipo carácter contiene un solo carácter (Aguilar, 1988)Una cadena de caracteres (String) es una sucesión de caracteres que se encuentran delimitados por una comilla (apostrofo) o dobles comillas según el tipo de lenguaje de programación. La longitud de una cadena de caracteres es el número de ellos comprendidos entre los separadores o delimitadores

6. Constantes y Variables:Los programas de computadora contiene ciertos valores que no deben cambiar durante la ejecución del programa tales valores se llaman constantes de igual forma existen otros valores que cambiaran durante la ejecución del programa a estos valores se les llama variables.

7. OperadoresTodos los símbolos que representan enlaces entre cada uno de los argumentos que intervienen en una operación se llaman operadores y se utilizan para construir expresiones. (Rodriguez Almeida, 1991) Los operadores pueden ser:7.1. Relacionales o condicionales:

Se utilizan para formar expresiones booleanas, es decir, expresiones que al ser evaluadas producen un valor booleano: verdadero o falso, tal como se muestra en la figura

(RodriguezAlmeida, 1991)

Fuente: Libro de metodología de la programación deRodríguez Almeida

7.2. Aritméticos :Para tratar los números se utilizan los operadores aritméticos, que junto con las variables numéricas forman expresiones aritméticas (Rodriguez Almeida,1991)

Fuente: Libro de metodología de la programación de Rodríguez Almeida

Los operadores mod y div son de menor prioridad

7.3. Alfanuméricos:Se utiliza para unir datos alfanuméricos (Rodriguez Almeida, 1991)

Fuente: Libro de metodología de la programación de Rodríguez Almeida

Concatenación, unir expresiones alfanuméricas como si fueran eslabones de una cadena.

7.4. Lógicos o Booleanos:

Combinan sus operandos de acuerdo con las reglas del algebra de Boole con el fin de producir un nuevo valor que se convierta en el valor de la expresión

Fuente: Libro de metodología de la programación de Rodríguez Almeida

OR u O: Es un operador binario, afecta a dos operadores. La expresión forma es cierta cuando al menos algunos de los operandos es cierto. Es el operador lógico de disyunción.AND o Y: es un operador binario. La expresión formada es cierta cuando ambos operandos son ciertos al mismo tiempo. Es el operador lógico de Conjunción.NOT o no: es un operador unario. Afecta a la expresión cambiando sus estado lógico, si era verdad lo transforma en falso o viceversa

7.5. Paréntesis:Los paréntesis se utilizan para anidar expresiones,

Fuente: Libro de metodología de la programación de Rodríguez Almeida

7.6. ded8. Expresiones

Las expresiones son combinaciones de constantes, variables, símbolos de operación, paréntesis, y nombres de funciones especiales. Las mismas ideas son utilizadas en notación matemática tradicionalCada expresión toma un valor que se determina tomando los valores de las variables y constantes implicadas y la ejecución de las operaciones indicadasUna expresión consta de operando y operadores según el tipo de objetos que se manipulan, se clasifican las operaciones en:

Aritméticas Relacionales Lógicas Carácter

9. Regla de PrioridadSegún Rodríguez (Rodriguez Almeida, 1991), la prioridad a la hora de evaluar los operadores en cualquier expresión es

Paréntesis Potencias Productos y divisiones Sumas y restas Concatenación Relacionales Lógicos

Según Joyanes(Aguilar, 1988)Las expresiones que tienen dos o más operadores requieren usar reglas matemáticas que permitan determinar el orden de las operaciones, se denominan reglas de prioridad o precedencia y son:

a) Las operaciones que están encerradas entre paréntesis se evalúan primero. Si existen diferentes paréntesis anidados (interiores unos a otros), las expresiones más internas se evalúan primero.

b) Las expresiones aritméticas dentro de una expresión suelen seguir el siguiente orden de prioridad:

Operador exponencial (^) Operadores de multiplicación y división Operadores de suma y resta Operadores lógicos or y and

10. Operación de AsignaciónLa operación de asignación es el modo de darle valores a una variable. La operación de asignación se representa con el símbolo u operador ( ). LA operación de asignación se conoce como instrucción o sentencia de asignación cuando se refiere a un lenguaje de programaciónEl formato general de una operación de asignación es

Expresión Expresión, expresión, variable o constanteEjemplo

A 10Significa que la variable A se le ha asignado el valor entero de 10

11. Ejercicios Encontrar el valor de la variable valor después de la ejecución de las

siguientes operacionesa. Valor 4.0*5b. X 3.0

Y 2.0

Nombre de la variable Expresión

Valor X^Y – Yc. Valor 5

X 3Valor valor* X

Deducir el resultado que se puede producir con las siguientes instrucciones

Variables x, y = enterosX 1Y 5Escribir x,y

Deducir el valor de las expresiones siguientesX A +B +CX A + B * CX A + B / CX A + B mod CX (A + B )/ CX A + (B / C)X A + (B * C)Siendo A =5, B =25, C= 10

Escribir las siguientes expresiones en forma de expresiones algorítmicas

i.MN

+P

ii. M+ N(P−Q)

iii.(M+N )(P−Q)

iv.(M+ n

p)

(q−rs)

v.(seno ( x )+coseno (x))

tan(x)

vi. −b±√b2−4 ac2a

Como se intercambian los valores de las A, B y AuxAux AA BB Aux

Programa (algoritmo de resolución)Entrada Salida

12. Estructura General de un ProgramaEs un conjunto de instrucciones, órdenes dadas a la máquina, que producirán la ejecución de una determinada tarea. En esencia un programa es un medio para conseguir un fin.El proceso de la programación es por consiguiente, un proceso de solución de problemas, y el desarrollo de un programa requiere las siguientes fases

Definición y análisis del problema Diseño de algoritmos

o Diagrama de flujoo pseudocódigo

Codificación del programa Depuración y verificación del programa Documentación Mantenimiento

12.1. Partes de un programa

12.2. d13. Instrucciones y tipos de instrucciones

13.1. InstrucciónSon las acciones o instrucciones que se deben escribir y posteriormente almacenar en memoria en el mismo orden en que han de ejecutarse, es decir, en secuencia

13.2. Tipos de instrucción Instrucciones de inicio y fin

Son aquellas instrucciones que inicializan y finalizan la escritura y ejecución del programa por ejemplo en java public class {

public static void main(String, args[]){}

} Instrucciones de asignación

Son aquellas instrucciones que permite asignar valores a una variableEjemplo en perl

$th=23;

Instrucciones de lecturaEsta instrucción lee datos de un dispositivo de entrada ejemplo leer edad, tiempo. Ejemplos en PERL.

Ejemplo 1Print " ingrese el nombre del empleado: ";$nombre=<STDIN>;

Ejemplo 2

print"ingrese la cantidad de horas trabajadas: ";$th=<STDIN>;chop($th);

o también puede usarse

chomp($th); Otro ejemplo de lectura en matlab:

a=input ('ingrese el valor de a :');b=input ('ingrese el valor de b :');

Instrucciones de escrituraEsta instrucción escribe en un dispositivo de salida ejemplo escribir A, B, CEjemplosEn PERL :print"empleado sueldo bruto descuento sueldo neto \n";print"==============================================\n";print " $sb $desc $sn $nombre";

En matlab :disp('la suma de dos números es :');disp(s);

Instrucciones de bifurcaciónEl desarrollo lineal de un programa se interrumpe cuando se ejecuta una bifurcación. Las bifurcaciones pueden ser según el punto del programa a donde se bifurca hacia adelante o hacia atrás.

Acción 1

Acción 2

Acción 3

Acción F2Acción F1

¿ ?

o Bifurcación incondicional: se realiza siempre que el flujo del programa pase por la instrucción sin necesidad del cumplimiento de ninguna condición

o Bifurcación Condicional: depende del cumplimiento de una determinada condición. Si se cumple la condición, el flujo sigue ejecutando la acción F2 si no cumple se ejecuta la acción F1

Ejemplo en PERL

if($num <=1){ return $factor=1;}

else { return $factor= $num*&factorial($num-1);

} }

14. Programación EstructuradaSe refiere a un conjunto de técnicas que aumentan considerablemente la productividad del programa reduciendo un elevado grado el tiempo para escribir, verificar, depurar y mantener los programas. La programación estructurada incorpora Diseño descendente: es el proceso mediante el cual un problema se descompone en una serie de niveles o pasos sucesivos de refinamientoRecursos abstractos: la programación estructura se auxilia de los recursos abstractos en lugar de los recursos concretos de que se dispone Estructuras básicas: son tres tipos de control: secuencial, selectiva y repetitivas.

14.1. Estructuras SecuencialLa estructura secuencial es aquella en la que una acción (instrucción) sigue a otra en secuencia. Las tareas se suceden de tal modo que la salida de una es la entrada de la siguiente y así sucesivamente hasta el fin del proceso. (Wilder, 2010)En Pseudocódigo una Estructura Secuencial se representa de la siguiente forma:Ejemplo 1Tengo un teléfono y necesito llamar a alguien pero no sé cómo hacerlo.

Ejemplo 2Escriba un algoritmo que pregunte por dos números y muestre como resultado la suma de estos. Use Pseudocódigo y diagrama de flujos.

Ejemplo 3A continuación se presenta un Pseudocódigo en PERL.

print" ingrese el nombre del empleado: ";$nombre=<STDIN>;#chop($nombre);print" ingrese la cantidad de horas trabajadas: ";$th=<STDIN>;chop($th);print" ingrese el costo por hora trabajo: " ;$cph=<STDIN>;chop($cph);$sb= $th*$cph;$desc=$sb*0.13;$sn=$sb-$desc;print" sueldo bruto descuento sueldo neto empleado \n";print"==============================================\n";print " $sb $desc $sn $nombre";

Ejemplo 4A continuación se presenta un Pseudocódigo en PERL.

th=input('ingrese el total de horas trabajadas :');cph=input('ingrese el costo por hora trabajada : ');sb=th*cph;desc = sb*0.13;sn= sb - desc;disp('sueldo bruto');disp(sb);disp('descuento');disp(desc);disp('sueldo neto');disp(sn);

Ejercicios 1 al 11 extraídos de Lic. Salomón Aquino de la materia Lógica Computacional.(Aquino, 2007)1. Leer el sueldo de tres empleados y aplicarles un aumento del 10, 12 y

15% respectivamente. Desplegar el resultado. 2. Escribir un programa que calcule el salario de un trabajador de la

manera siguiente. El trabajador cobra un precio fijo por hora y se le descuento el 10% en concepto de impuesto sobre la renta. El programa debe pedir el nombre del trabajador, las horas trabajadas y el precio que cobra por hora. Como salida debe imprimir el sueldo bruto, el descuento de renta y el salario a pagar.

3. Programa que pida el precio de un artículo y calcule su valor aplicándole un 18% de IGV.

4. Dada una medida de tiempo expresada en horas, minutos y segundos con valores arbitrarios, elabore un programa que transforme dicha

medida en una expresión correcta. Por ejemplo, dada la medida 3h 118m 195s, el programa deberá obtener como resultado 5h 1m 15s

5. Escriba un programa que calcule el área de un triángulo rectángulo, dada la altura y la base.

6. Elabore un programa que realice la conversión de cm. a pulgadas.Donde 1cm = 0.39737 pulgadas. Por lo tanto, el usuario proporcionara el dato de N cm. y el programa dirá a cuantas pulgadas es equivalente.

7. Elabore un programa que realice la conversión de pulgadas a cm.Donde 1 cm. = 0.39737 pulgadas. Por lo tanto, el usuario proporcionara el dato de N pulgadas y el programa dirá a cuantos centímetros equivale.

8. Elabore un programa que realice la conversión de metros a pies Donde 1 m = 3.2808 pies, Por lo tanto, el usuario proporcionara el dato de N m y el programa dirá a cuantos pies equivale.

9. Elabore un programa que realice la conversión de pies a metros Donde 1 m = 3.2808 pies. Por lo tanto, el usuario proporcionara el dato de N pies y el programa dirá a cuantos metros equivale.

10. Elabore un programa que realice la conversión de kilogramos a libras Donde 1 Kg. = 2.2046 libras. Por lo tanto, el usuario proporcionara el dato de N Kg. y el programa dirá a cuantas libras equivale.

11. Elabore un programa que realice la conversión de libras a kilogramos Donde 1 Kg. = 2.2046 libras. Por lo tanto, el usuario proporcionara el dato de N libras y el programa dirá a cuantos kilogramos equivale.

12. Introducir 5 notas por teclado, obtener la suma de las notas, el promedio de las mismas y el doble de las notas.

13. Un alumno desea saber cuál será su calificación final en la materia de Algoritmos. Dicha calificación se compone de los siguientes porcentajes:

55% del promedio de sus tres calificaciones parciales.30% de la calificación del examen final. 15% de la calificación de un trabajo final.

14. Calcular el número de pulsaciones que una persona debe tener por cada 10 segundos de ejercicio, si la fórmula es:num. Pulsaciones = (220 - edad)/10

15. Determinar la suma de los N primeros números enteros de acuerdo a la siguiente formula:

16. En un hospital existen tres áreas: Ginecología, Pediatría, Traumatología. El presupuesto anual del hospital se reparte conforme a la siguiente tabla:Área Porcentaje del presupuestoGinecología 40%Traumatología 30%Pediatría 30%

Obtener la cantidad de dinero que recibirá cada área, para cualquier monto presupuestal.

17. El coste de un automóvil nuevo para un comprador es la suma total del coste del vehículo, del porcentaje de la ganancia del vendedor y de los impuestos locales o estatales aplicables (sobre el precio de venta). Suponer una ganancia del vendedor del 12% en todas las unidades y un impuesto del 6% y diseñar un algoritmo para leer el coste total del automóvil e imprimir el coste para el consumidor.

18. Un alumno desea saber cuál será su promedio general en las tres materias más difíciles que cursa y cuál será el promedio que obtendrá en cada una de ellas. Estas materias se evalúan como se muestra a continuación:La calificación de Matemáticas se obtiene de la sig. Manera:

Examen 90%Promedio de tareas 10%En esta materia se pidió un total de tres tareas.

La calificación de Física se obtiene de la sig. Manera:Examen 80%Promedio de tareas 20%En esta materia se pidió un total de dos tareas.

La calificación de Química se obtiene de la sig. Manera:Examen 85%Promedio de tareas 15%En esta materia se pidió un promedio de tres tareas.

19. Dados las coordenadas (x1,y1) y (x2,y2) de dos puntos en el plano cartesiano, determinar la distancia (d) entre estos dos puntos

20. Se tiene las votaciones de 3 candidatos (v1, v2, v3). Sobre el total (tot), determinar el porcentaje de votación obtenido por cada uno de los candidatos (p1,p2,p3)

21. Leer tres valores enteros y realizar las siguientes operaciones Sumar todos los valores Multiplicar todos los valores Restar de las suma de los dos el doble del tercero Promedio de todos los valores. Suma de las mitades de los últimos valores

22. Leer cuatro valores reales a, b, c y d. Realizar lo siguiente: Sumar el cuadrado de los extremos más el cubo de los demás Multiplicar el promedio de los tres primeros por el promedio de

los tres últimos valores Calcular la siguiente expresión:

23. Si tenemos una expresión algebraica de la forma A x2+Bx+C , donde conocemos los valores de los coeficientes de cada uno de los términos A, B, C , diseñe una aplicación que realice los siguiente:

Calcular cinco valores de la expresión para cinco valores diferentes de la variable independiente x.

Elevar a la cuarta potencia todos los coeficientes de los temimos Calcular las raíces reales, si esa expresión representase a la

ecuación de una curva en el plano cartesiano.24. Se tiene un triángulo rectángulo de base B y altura H. Calcular lo

siguiente: Área de la figura Perímetro de la figura hipotenusa

25. Se lee el radio de un circulo y el lado de un cuadrado, se le pide que realice una aplicación que haga lo siguiente:

Calcular área de las figuras Sumar los perímetros de ambas figuras Área promedio Elevar al cubo el perímetro del triangulo Calcular la altura promedio de las figuras

26. Hay un cilindro, una esfera y un cono. Al leer las dimensiones básicas de cada uno de ellos, haga una aplicación que realice:

Volumen promedio Suma de áreas laterales Altura promedio

27. Leer cuatro valores reales y calcular la siguiente expresión:

28. Leer dos valores reales p y q del teclado y escribir la media aritmética29. Leer un valor real x del teclado. Calcular y escribir r=x2 – 2x3

30. Leer los coeficientes de un polinomio de grado tres de la forma P(x)=x3+ax2+bx+c, leer a continuación un cierto valor para la variable independiente x y calcular y escribir y = P(x)

31. Convertir a radianes un valor de ángulo medido en grados sexagesimales

32. Calcular y escribir la temperatura T que corresponde a un mol de gas ideal sometido a una presión P cuando ocupa un volumen V. Se supone que los valores de P y V se proporcionan por teclado

33. Crea un programa para que almacene la secuencia de DNA que hay a continuación en una variable, y la escriba en la pantalla.Secuencia de DNA: ACGGGAGGACGGGAAAATTACTACGGCATTAGC

Instrucción

Condición

34. Queremos conocer los datos estadísticos de una asignatura, por lo tanto, necesitamos un algoritmo que lea el número de reprobados, aprobados, notables y sobresalientes de una asignatura, y nos devuelva:

¿El tanto por ciento de alumnos que han superado la asignatura?¿El tanto por ciento de reprobados, aprobados, notables y sobresalientes de la asignatura?

35. Guarda las dos secuencias de DNA siguientes en dos variables escalares y escríbelas en la pantalla. A continuación, crea una tercera variable que contenga las dos primeras concatenadas. Escribe también el resultado.Primera secuencia de DNA: ACGGGAGGACGGGAAAATTACTACGGCATTAGCSegunda secuencia de DNA: ATAGTGCCGTGAGAGTGATGTAGTA

14.2. Estructuras SelectivasEste tipo de estructuras se utilizan cuando el programador quiere realizar algunas bifurcaciones o establecer condiciones que cumpla o alguna determinada condición o restricción

14.2.1.Selectivas simples:Ejecuta una determinada acción cuando se cumple una determinada condición. A continuación se muestra su sintaxis

Pseudocódigo

Si condición Entonces Instrucción

Fin si

En Diagrama de flujo se muestra en la figura

Instrucción 2Instrucción 1

Condición

Instrucción 1 Instrucción 2 Instrucción n

14.2.2.Selectivas Dobles: La estructura anterior es muy limitada y normalmente se necesitara una estructura que permita elegir dos opciones o alternativas posibles en función del cumplimiento o no de una determinada condición. A continuación se muestra su sintaxis

Si condición entoncesInstrucción 2

Sino Instrucción 1

Fin si

14.2.3.Selectivas múltiples:Con frecuencia en la práctica, es necesario que existan más de dos elecciones posibles

Diagrama de Flujo

Condición

Pseudocódigo

Según sea condición

Case 1:Case 2:...Case n:

Fin según

14.2.4.EjemplosEjemplo 1:Resolución de una ecuación de primer gradoSi la ecuación es ax + b =0, a y b son los datos y las posibles soluciones son Si a <> 0 entonces x= -b/a a=0 b<>0 entonces “solución imposible” a= 0 b =0 entonces “ solución indeterminada”

Algoritmo pseudocódigo

InicioLeer a, bSi a <> 0 entonces

x - b/aSino

Si b<>0 entoncesEscribir “solución imposible”

SinoEscribir “solución indeterminada”

Fin- siFin – si

FinEjemplo 2Resolución de la ecuación de segundo grado teniendo en cuenta los tres posibles valores de discriminaciónLa ecuación de segundo grado es:ax^2 + bx +c = 0El discriminante D vale D = b^2 - 4ac

Y las raíces son

X1, x2 = −b±√b2−4 ac2a

=−b±√D2a

Si el discriminante es menor que cero, las raíces son imaginariasAlgoritmo PseudocódigoInicioLeer a, b, cD b^2 -4*a*cSegún sea D hacer

D <0: escribir “raíces complejas”D = 0: x - b/2*aD >0: rcraizcua(D)

X1 (-b + rc)/2*aX2 (-b -rc)/2*aEscribir x1, x2Fin _ segúnfinEjemplo 3Se desea diseñar un algoritmo que escriba los nombres de los días de la semana en función del valor de una variable DIA introducida por tecladoInicioLeer DíaSegún_ sea DIA hacer

1: escribir “Lunes”2: escribir “Martes”3: escribir “Miercoles”4: escribir “Jueves”5: escribir “Viernes”6: escribir “Sabado”7: escribir “Domingo”Otros: escribir “Error”

Fin_ segúnFinEjemplo 4El ejercicio 1 de los propuestos en Código en perlprint"ingrese 1ra medida : ";$m1=<STDIN>;chop($m1);print"ingrese 2da medida : ";$m2=<STDIN>;

chop($m2);print"ingrese 3ra medida : ";$m3=<STDIN>;chop($m3);print"ingrese 4ta medida : ";$m4=<STDIN>;chop($m4);$media=($m1+$m2+$m3+$m4)/4;if ($media <= 4) {

print"el ruido no es nocivo \n"; print"su media es: $media";} else { print"el ruido es nocivo \n"; print"su media es: $media" ; }

Ejemplo 5El ejercicio 2 de los propuestos en Código en perl

print" ingrese el sueldo del cliente: " ;$sueldo=<STDIN>;chop($sueldo);print"estado del cliente: ";$est=<STDIN>;chop($est);print" numero de hijos: ";$nh=<STDIN>;chop($nh);if ($sueldo > 1200){ print" se concede el préstamo"; } elsif (($sueldo <= 1200) && ($sueldo > 1000) && ($est eq "s") && ($nh==0)) { print" se concede el préstamo"; } elsif (($sueldo <= 1200) && ($sueldo > 1000) && ($est eq "c") && ($nh==0)) {

print" se concede el préstamo"; } else { print" no se le concede el préstamo" ; }Ejemplo 6El ejercicio 1 de los propuestos en Código de Matlab

m1=input('ingrese la 1ra media: ');m2=input('ingrese la 2da media: ');m3=input('ingrese la 3ra media: ');m4=input('ingrese la 4ta media: ');media=(m1+m2+m3+m4)/4;if (media <= 4 ) disp('el ruido no es nocivo'); disp('la media es ');disp(media);else disp('el ruido es nocivo'); disp('la media es ');disp(media);end

Ejemplo 7El ejercicio 2 de los propuestos en Código de Matlab

sueldo = input('ingrese el sueldo del cliente');nh=input('ingrese el número de hijos: ');est=input('ingrese el estado civil: '); % 0 = casado y 1 =solteroif (sueldo > 1200) disp('se le concede el prestamo');else if ((sueldo <=1200)&&(sueldo > 1000)&& (nh==0) &&(est==1)) disp('se le concede el prestamo'); else if ((sueldo <=1200)&&(sueldo > 1000)&& (nh==0) &&(est==0)) disp('se le concede el prestamo'); else disp(' no se le concede el prestamo'); end endend

14.2.5.Ejercicios1. Para calcular el nivel de ruido de una calle de una ciudad se

realizan 4 medidas, una cada 8 horas, en un punto concreto. Si la media de las medidas del nivel de ruido supera la máxima admitida (por ejemplo máxima =4), significa que el ruido es nocivo para la salud. Realizar un programa que calcule el nivel medio del ruido de una calle y determine si el nivel de ruido es nocivo o es admisible.

2. Un banco antes de conceder un préstamo a 20 años comprueba los ingresos del solicitante. Si los ingresos son superiores a 1200.00 nuevos soles mensuales el crédito se concede. Si los ingresos son inferiores a 1200.00 nuevos soles pero superiores a 1000.00 nuevos soles y está soltero el crédito se concede. También se le concede si tiene ingresos entre 1200.00 y 1000.00 nuevos soles y está casado sin hijos. Realizar un programa que pida los ingresos mensuales y el estado civil del solicitante y si tiene hijos y diga si se le da el crédito o no

3. Escriba un programa que lea el importe de la compra y la cantidad recibida y calcule el cambio a devolver, teniendo en cuenta que el número de monedas que devuelva debe ser mínimo. Suponer que el sistema monetario utilizado consta de monedas de 100, 50, 25, 5, 1 unidad.

4. Escriba un programa que lea tres números enteros y asigne el valor apropiado TRUE o FALSE a las siguientes variables booleanas y muestre el tipo de triangulo que es (si es un triángulo)Triangulo: True si los números pueden representar longitudes de los lados de un triángulo (La suma de dos cualesquiera de los lados debe ser mayor que el otro).Equilátero: True si es un triángulo equilátero (todos los lados son iguales).Isósceles: True si es un triángulo isósceles (al menos dos lados son iguales).Escaleno: True si es un triángulo escaleno (no tiene dos lados iguales).

5. Escribe un programa que lea los coeficientes A, B, C de la ecuación cuadrática AX2 + BX + C = 0 y muestre por pantalla la solución obtenida. Considerar los casos en que no exista solución, que existan infinitas soluciones, que exista una sola solución (Ecuación lineal) o que existan dos soluciones.

6. Se quiere realizar un programa que determine si un alumno es apto o no. Un alumno se considera apto si su nota final es de 5 o

más y no apto en caso contrario. La nota final se calcula como la media ponderada del trabajo realizado en casa, la media obtenida en los tests y la puntuación del examen. Nota final = 0.3* Trabajo + 0.5*Test + 0.3*Examen. Además debe tener la calificación de acuerdo a la tabla:

Nota >=9.5 Matrícula de Honor8.5 <= Nota < 9.5 Sobresaliente6.5 <= Nota < 8.5 Notable5 <= Nota < 6.5 AprobadoNota < 5 Suspenso

7. Escribir un algoritmo tal que dada la temperatura máxima del mes y la temperatura medida hoy, actualice el valor de la máxima si la temperatura leída hoy es mayor que dicho máximo.

8. Implementar un algoritmo que dados tres números a, b y c, los devuelva ordenados de menor a mayor

9. El cuadrante de un punto (x, y) se puede determinar a partir del signo de x e y. Escribir un algoritmo tal que dadas las coordenadas x e y, indique a que cuadrante pertenece el punto

10. Dados el valor antiguo y el actual del contador de la luz, escribir un algoritmo que determine a cuánto asciende la factura de la luz de un determinado abonado. El importe es la suma de la cuota fija (S/. 12 ) más una cuota variable que depende del consumo y se calcula por tramos: los primeros 100 Kw, a 0.06 el Kw, los 150 Kw siguientes a 0.04 el Kw, si el consumo excede de 250 Kw, esa fracción se cobra 0.02 el kw

11. Supóngase que el importe del seguro obligatorio de un conductor de un coche depende del modelo del coche, del color y de la edad del conductor. Sean dos modelos de coche A y B y los precios del seguro según el color:

Si el conductor tiene menos de 26 años, el precio se incrementa un 25 %; si tiene entre 26 y 30 años se incrementa un 10 %; si tiene entre 31 y 65 años el precio no se modifica; si tiene más de 65 años el precio se incrementara un 10 %. Además, en cualquier caso, hay que considerar que si el conductor tiene menos de 2 años el permiso de conducir, el precio se incrementara un 25 % adicional.Diseñar un algoritmo que calcule el precio del seguro para un determinado modelo y un determinado conductor.

12. Diseñar un algoritmo que dado un número, indique si es par o impar

13. Desarrolle un algoritmo que permita leer dos valores distintos, determinar cuál de los valores es el mayor y escribirlo.

14. Desarrolle un algoritmo que permita leer tres valores y almacenarlos en las variables A, B y C respectivamente. El algoritmo debe imprimir cual es el mayor y cuál es el menor. Recuerde constatar que los tres valores introducidos por el teclado sean valores distintos. Presente un mensaje de alerta en caso de que se detecte el ingreso de valores iguales

15. Determinar la cantidad de dinero que recibirá un trabajador por concepto de las horas extras trabajadas en una empresa, sabiendo que cuando las horas de trabajo exceden de 40, el resto se consideran horas extras y que éstas se pagan al doble de una hora normal cuando no exceden de 8; si las horas extras exceden de 8 se pagan las primeras 8 al doble de lo que se paga por una hora normal y el resto al triple.

16. Se desea agregar una letra para representar la calificación de los alumnos, las calificaciones son notas entre 1 y 10; use los siguientes parámetros: A para calificaciones mayores o iguales a 9, B para calificaciones mayores o iguales a 8, C para calificaciones mayores o iguales a 7, D para calificaciones mayores o iguales a 6, F para todas las demás calificaciones.

17. La empresa Milagrito S.A. tiene la siguiente tabla de parámetros para pagar las comisiones de sus ejecutivos de ventas:

Escriba un programa que al introducir la cantidad vendida por el ejecutivo de ventas, calcule de cuánto será su comisión

18. En base al valor de dos números enteros, determine si estos son: A. Iguales.B. No iguales.C. El primero es mayor que el segundo.D. El segundo es mayor que el primero.E. El primero es mayor o igual que el segundo.F. El segundo es mayor o igual que el primero.

19. Un restaurante, desea dar a conocer a sus clientes el plato que se ha preparado para cada uno de los tiempos de comida desayuno, almuerzo y cena. El restaurante prepara un plato único para cada uno de los tiempos. Cuando el cliente seleccione entre los tiempos de comida (desayuno, almuerzo o cena) se debe desplegar el detalle de este. Ejemplo: Seleccione su tiempo de Comida: desayunoDetallePlátanos, Frijoles, Queso, Crema, Pan y Café

20. Elabore un programa que pida dos números y que permita mostrar un menú con las cuatro operaciones básicas, donde el usuario pueda seleccionar la operación que desea realizar (basta con que seleccione el número).

21. Leer un número real x, calcular y escribir r = |x|3 22. Calcular el coste de una llamada telefónica que ha durado t

minutos sabiendo que si t<1, el coste es de 0.4 euros mientras que para duraciones superiores el coste es 0.4 + (t+1)/4 euros.

23. Leer un número real del teclado. Calcular el valor de p sabiendo que si x está en el intervalo (2,8], el resultado p toma el valor uno, en caso contrario toma el valor cero. Escribir posteriormente el valor de p.

24. Leer un valor x del teclado. Calcular y escribir el valor y = f(x), siendo f una función definida a trozos del siguiente modo:

x F(x)X є [-1,3) 10-xx>50 1resto 0

25. Leer las componentes de un vector de R2 (x e y). Calcule el valor de r que se define como r= NC(x, y), si x≠0, y≠0 y x=0 o si y =0

26. Dado un numero entero x mayor que uno se ha de escribir un uno si el número es par y un cero en caso contrario.

27. Dados dos números enteros positivos p y q, p > q, se ha de escribir un uno si son divisibles y cero si no lo son

28. Dada una cantidad N > 1 calcular la raíz cuadrada entera aproximada r. se ha de cumplir que r*r ≤ N<(r+1)(r+1). Por ejemplo, si N=24 se tiene que r=4 pues 4*4 =16≤24<25=5*5.

29. Se ha de escribir un uno en el caso de que exista un trio (x, y, z) de números enteros positivos tales que x2 + y2 = z2. Limite a x є (0, 100], y є (0, 100]. En caso de que no se encuentre solución se ha de escribir un cero.

30. Determinar el mayor y menor valor de 5 números ingresados desde el teclado.

31. Ordenar de menor a mayor 5 números ingresados por teclado32. Un restaurant ofrece un descuento del 20% para un consumo

mayor a S/. 30.00 y aplica un impuesto de 15% para todo consumo. Determinar el importe a pagar por lo consumido, mostrando todos los importes.

33. Un profesor desea implementar un algoritmo que le permita bonificar equitativamente a todos sus alumnos de acuerdo a la nota conseguida en un examen, de la siguiente forma: si la nota fuera menor que 5 se bonifica con 3 puntos; si la nota fuera mayor o igual que 5 pero menor que 10 se bonifica con 2 puntos y si la nota fuera mayor o igual que 10 pero menor que 15 se bonifica con 1 punto; y si la nota fuera mayor o igual que 15 pero menor o igual que 20 se le descuenta el residuo de la nota entre 5, determinar la nota bonificada para cualquier alumno.

34. Dos personas desean intercambiar sus identidades (nombre, dirección, teléfono, edad) siempre y cuando la edad del primero fuese mayor que la edad de segundo en no más de 4 años. Ingresar los datos de cada persona y mostrar sus nuevas identidades o un mensaje mostrando la diferencia de edades que impidiera el intercambio.

35. Un trabajador del estado percibe un sueldo básico mensual de 750 nuevos soles; además recibe incrementos de sueldo de acuerdo a los siguientes conceptos

instrucción porcentajeHasta 5to secundaria 5%

técnico 10%profesional 20%

También por ley está sujeto a un descuento de 10% si su sueldo excede de S/. 800. determinar el sueldo neto que recibe un trabajador

36. En una olimpiada de tiro al blanco se llega a un acuerdo entre los participantes para que el puntaje obtenido sea calculado en base al puntaje original (0 al 10) alcanzado en el tiro, multiplicado por un factor:

Para un tiro realizado determinar su puntaje correspondiente.37. Una tienda de ropa ha establecido los porcentajes de descuento,

que se indican a continuación, de acuerdo a ciertas características del comprador: nacionalidad (1,2) y del producto que compra: sexo (H, M), talla (Niño, Joven, Adulto). Se sabe que una persona puede comprar varios productos por lo que se desea mostrar como resultados los siguiente: nombre del comprador, cantidad de productos comprados, importe comprado, importe descontado, el importe a pagar; para lo cual se deben ingresar los datos que sean necesarios. El proceso para la compra de una persona termina cuando al ingresar el nombre del comprador se presiona ENTER

Nacionalidadniño joven adultosexo sexo sexo

H M H M H M1 5 4 7 9 10 122 4 5 9 7 12 10

Condición Social porcentajecasado 3%Por cada hijo 2%Sin vivienda 5%

Puntaje original Factor0 01..5 66..8 99..10 10

38. Leer cuatro valores reales a, b, c, y d. realizar lo siguiente:¿Calcular la siguiente expresión?

39. Leer cuatro valores reales y calcular la siguiente expresión:

40. Escribir un algoritmo cree un menú de conversión para:¿Pulgadas a centímetros (1 pulgada = 2.54 cm)?¿Pies a metros (1 pie = 0.3048 metros = 12 pulgadas)?¿Millas por hora a kilómetros por hora (60 millas\hora = 80 Km\hora)?¿Grados a radianes (360 grados = 2pi radianes, pi=3.141592)?¿?

41. Desarrolle un algoritmo para la siguiente función

42. El gobierno del Perú desea reforestar un bosque que mide determinado número de hectáreas. Si la superficie del terreno excede a 1 millón de metros cuadrados, entonces decidirá sembrar de la siguiente manera.Porcentaje de la superficie del bosque. Tipo de árbol 70% pino, 20% oyamel, 10% cedro.Si la superficie del terreno es menor o igual a un millón de metros cuadrados, entonces decidirá sembrar de la siguiente manera.Porcentaje de la superficie del bosque tipo de árbol.50% pino30% oyamel

20% cedro.El gobierno desea saber el número de pinos, oyameles y cedros, que tendrá que sembrar en el bosque. Si se sabe que en 10 metros cuadrados caben 8 pinos, en 15 metros cuadrados caben 15 oyameles y en 18 metros cuadrados caben 10 cedros. También se sabe que una hectárea equivale a 10 mil metros cuadrados.

43. Una fábrica ha sido sometida a un programa de control de contaminación para lo cual se efectúa una revisión de los puntos IMECA generados por la fábrica. el programa de control de contaminación consiste en medir los puntos IMECA que emite la fábrica en cinco días de una semana y si el promedio es superior a los 170 puntos entonces tendrá la sanción de parar su producción por una semana y una multa del 50% de las ganancias diarias cuando no se detiene la producción. Si el promedio obtenido de puntos IMECA es de 170 o menor entonces no tendrá ni sanción ni multa. El dueño de la fábrica desea saber cuánto dinero perderá después de ser sometido a la revisión.

44. Una persona se encuentra con un problema de comprar un automóvil o un terreno, los cuales cuestan exactamente lo mismo. Sabe que mientras el automóvil se devalúa, con el terreno sucede lo contrario. Esta persona comprara el automóvil si al cabo de tres años la devaluación de este no es mayor que la mitad del incremento del valor del terreno. Ayúdale a esta persona a determinar si debe o no comprar el automóvil.

45. Permita ingresar el mes y día de nacimiento, después de evaluar se debe imprimir el signo zodiacal correspondiente.

46. Luego de ingresar una fecha del día con el formato Día Mes Año. Se imprime la fecha del día siguiente.

47. Imprima el valor medio de tres números ingresados por el teclado.48. Permitir ingresar una hora determinada con el formato H M S (H=

Hora, M= Minuto, S= Segundo). Se pide imprimir la hora que será después de un segundo

49. Leer un números real x y otro entero z. calcular y escribir y = x z, suponiendo que z ≥ 0

50. Los empleados de una fábrica trabajan en dos turnos, diurno y nocturno. Se desea calcular el jornal diario de acuerdo con los siguientes puntos: Las tarifas de las horas es de 50 nuevos soles La tarifa de las horas nocturnas es de 80 nuevos soles Caso de ser domingo la tarifa se incrementa en un 100%

tanto en el turno diurno y nocturno

Condición

Falsa

51. Diseñar el algoritmo que dado un número, indique si es par o es impar

52. Dado un número, se debe contestar si es múltiplo de 3, 6 y 9 a la vez. Condicionar el algoritmo para cualquier número.

53. Ingresar un numero en forma de ARABICO (entero) y mostrar su equivalente en ROMANO asumiendo que el número ingresado es correcto y no debe ser mayor a 3999Ejemplo si se ingresa el numero 123 debe aparecer como resultado CXXIII

54.14.3. Estructuras Repetitivas

Son las estructuras que repiten una secuencia de instrucciones un determinado número de veces a esto se le denomina bucle y se denomina iteración al hecho de repetir la ejecución de una secuencia de accionesAntes de explicar los tipos de estructuras repetitivas definamos que es un Contador, acumulador o sumadorUn contador es una variable destinada a contener diferentes valores, que se va incrementando o decrementando cada vez que el ordenador realice una instrucción que lo contiene. El incremento o decremento si es negativo, llamado también paso del contador, es siempre constante ejemplo i 1, j 0, etc.Acumulador o sumador: es una variable que nos va a permitir guardar un valor que se incrementa o decrementa de forma no constante durante el proceso. En un instante determinado tendrá un valor y al siguiente tendrá otro valor igual o distinto. Ejemplo S S + i , a a*i , etc

14.3.1.Estructura repetitiva mientras (While o Do while):La estructura repetitiva mientras, es aquella en que al cuerpo del bucle se repite mientras se cumple una determinada condición. La representación en Pseudocódigo y Diagrama de Flujo será:

Mientras condición hacerAcción 1Acción 2...

Fin mientras

Calcular valor inicial y final

Fijar la variable índice al valor inicial

Variable índice > valor final

Acciones

Incrementar variable índice

Cuerpo del bucle

Falso

Verdadero

14.3.2.Estructura repetitiva para (For):En muchas ocasiones se conoce de antemano el número de veces que se desea ejecutar las acciones de un bucle. En este caso en el que el número de iteraciones es fija se debe usar la estructura desde o para La representación en pseudocódigo y diagrama de flujo es

Desde variable (V) = vi hasta vf hacerAcción 1Acción 2...

Fin desdeV: variable índiceVi, vf : valor inicial y final de la variable

Condición

Acciones

Falsa Verdadera

14.3.3.Estructura repetitiva repetir:Existen muchas situaciones en la que se desea que un bucle se ejecute al menos una vez antes de comprobar la condición de repetición. La estructura repetir se ejecuta hasta que se cumpla una condición determinada que se comprueba al final del bucle. El bucle repetir – hasta que se repite mientras el valor dela expresión booleana de la condición sea falsa, justo lo opuesto de la sentencia mientras.La representación en Pseudocódigo y Diagrama de Flujo es

RepetirAccion1Acción 2...

Hasta _que Condición

14.3.4.EjemplosEjemplo 1

Hallar el factorial de un numero N utilizando la estructura desdeInicio

Leer NFact 1Desde i 1 hasta N hacer

Factfact*i

Para o desde i = 1 hasta n hacer

Acciones

Fin_desdeEscribir “el factorial de”, N, “es”, fact

Fin

Ejemplo 2

Realizar el algoritmo para obtener la suma de los números pares hasta 1000.Inicio

Suma 2Numero 4Mientras número <= 1000 hacer

Suma suma + numeroNumero número +2

Fin _ mientrasFin

Ejemplo 3

Dado dos números enteros, realizar el algoritmo que calcule el cociente y el resto

InicioLeer M, NResto MCociente 0Repetir

Resto resto – NCociente cociente + 1

Hasta_ que resto < NEscribir “dividiendo”, M, “divisor”, N, “Cociente”, cociente, Resto

FinEjemplo 4Ejemplo 1 en código Perlprint"ingrese un numero para hallar su factorial: "; $n=<STDIN>; chop($n); $i=1; $fact=1; if ($n==0) { print"$fact" ; } else

{ while($i<=$n) { $fact=$fact*$i; $i++; } print"el factorial es: $fact" ; }Ejemplo 5El ejemplo 1 En código en Matlabn=input('ingrese un numero para hallar el factorial : ');i=1;fact=1;if n==0 disp('el factorial es :'); disp(fact);else while i<=n fact=fact*i; i=i+1; end disp('el factorial es: '); disp(fact);endEjemplo 6 Calcular el factorial de n números leídos por teclado, en código perl.print"ingrese el número de factoriales a calcular: "; $n=<STDIN>; chop($n); for($i=1;$i<=$n;$i++) {

print"ingrese un numero: "; $num=<STDIN>; chop($num); $fact=1; for($j=1;$j<=$num;$j++ ) { $fact=$fact*$j; } print"el factorial del número $num es $fact \n";

}

Ejemplo 7Calcular el factorial de n números leídos por teclado, código matlab

n=input('ingrese el número de factoriales a calcular: ');for i=1:n num=input('ingrese un numero: '); fact=1; for j=1:num fact=fact*j; end disp(fact);end

Ejemplo 8Dados dos números enteros, realizar el algoritmo que calcule el cociente y el resto en código perlprint"ingrese el primer número: ";$a=<STDIN>;chop($a);print"ingrese el segundo número: ";$b=<STDIN>;chop($b);$resto=$a;$cociente=0;do{$resto=$resto-$b;$cociente=$cociente+1;}until($resto<$b);print"dividendo : $a, divisor: $b, cociente: $cociente, resto:$resto";

14.3.5.Ejercicios1. Hallar el factorial de un numero N utilizando la estructura

mientras y repetir2. Imprimir los 30 primeras potencias de 4, es decir 4 elevado a 1, 4

elevador a 2 con las tres estructuras.3. Calcular la suma de los n primeros enteros con las tres estructuras4. Diseñar un algoritmo para imprimir la suma de los números

impares menores o iguales que n5. Calcular el número máximo de una serie de 100 números.6. Realizar un algoritmo que escriba los N primeros números de la

serie de Fibonacci 1,2,3,5,8,13,217. Determinar la media de una lista indefinida de números positivos,

terminados con número negativo o cero.8. Calcular el factorial de los n números leídos por teclado9. Calcular

Ex=1+x+ x2

2 !+ x

3

3!+…+ x

n

n! , Para N > 0

Para un N dado

Para que N sea tal que xn

n ! < E (por ejemplo e = 10 - 4)

10. Dadas 3 listas de 10 números de teléfono, donde la primera lista contiene el número de pasos consumidos en llamadas locales asociado a cada teléfono, la segunda contiene información sobre llamadas nacionales y la tercera contiene información sobre llamadas internacionales, calcular los subtotales del coste década una de las categorías considerando los costes siguientes: llamada local, 5 pesetas por paso, llamada nacional 10 pesetas por paso y llamada internacional 50 pesetas por paso. Construir un programa que lee los datos de entrada desde el teclado e imprima los resultados finales por pantalla.

11. Diseñar un algoritmo que determine los números primos entre dos números dados.

12. El DNA es una hélice formada por dos cadenas, una complementaria de la otra, que avanzan en sentidos opuestos:

En la cadena complementaria, las sustituciones de nucleótidos son las siguientes:

La dirección en la que siempre deben dar las secuencias (por consenso) es 5' 3'.Escribe un programa que, dada una secuencia de DNA, calcule su complementaria (y reversa). Secuencia de DNA: ACGGGAGGACGGGAAAATTACTACGGCATTAGC

13. La transcripción es el paso de DNA a RNA, donde todas las timinas (T) de la secuencia cambian a uridinas (U). En este apartado debes escribir un programa para transcribir secuencias de DNA. Introduce la siguiente secuencia de DNA en el programa en forma de variable escalar, y cambia todas sus T's por U's. Finalmente, como siempre, escribe el resultado para comprobar que el programa hace lo esperado.

14. Dado un número N, calcular la suma 5 +10 +15 + 20+ . . . +5* n15. Diseñar el algoritmo que encuentre (muestre) los números pares

que hay entre 100 y 1000.

5' ACTCAGA 3' 3' TGAGTCT 5'

A TT AC GG C

16. Diseñar el algoritmo que calcule la suma de los pares que hay entre dos números dados.

17. ¿Calcular los pagos mensuales de una hipoteca y el total a pagar. El programa debe solicitar el capital, el interés anual y el número de años y debe escribir la cuota a pagar mensualmente. Para calcular la cuota se utiliza la siguiente fórmula: Sea C el capital del préstamo, R la tasa de interés mensual y N el número de pagos. La cuota mensual viene dada por:

Y el interés mensual será: interés anual / 100 /1218. Cifrado de datos: dado un número de cuatro dígitos se

reemplazará cada dígito por (dígito +7) módulo 10. A continuación se intercambiará el primer dígito por el tercero y el segundo por el cuarto, y ese será el número cifrado.

19. Desarrolle el algoritmo de la bisección para el cálculo de la siguiente ecuación no lineal

20. Desarrolle el algoritmo del trapecio: para calcular por medio del método del trapecio la integral de la siguiente función.

F(X) = 0.2 + 25 X - 200 X2 + 675 X3 - 900 X4 + 400 X5

El proceso consiste de la siguiente manera Leer el intervalo a, b y el número de sub intervalos Dividir el intervalo en n sub intervalo Evaluar la función en los extremos de los sub intervalos Aplicar la formular Salida integral aproximada

a = f (xo)

b = f (xn)

21. Desarrollar un algoritmo para Aproximar la siguiente función y = seno(x)

22. Desarrollar un algoritmo para Aproximar la siguiente función y = coseno(x)

23. Desarrollar un algoritmo para Aproximar la siguiente función y = ex

24. Desarrollar un algoritmo para Aproximar la siguiente función y = ln(1+x)

25. Dado n>0 hallar la suma

26. Se desea calcular la suma siendo los valores ak los elementos de la sucesión dada por ak= ak-1+ ak-2, para k > 2, con a1=1 y a2=1. El limite n ha de leerse del teclado y se supone mayor que dos.

27. Se desea calcular la suma , siendo m y n dos números enteros positivos que se suponen dados.

28. Escriba los n primeros términos de la sucesión dada por

, siendo n un numero entero positivo dado.

29. Escribir un programa que imprima las n primeras líneas de pascal (n se ingresa por teclado)11 11 2 11 3 3 11 4 6 4 1

30. Escribir un programa que encuentre el logaritmo en cualquier base de un numero positivo x. la base y el número, lo ingresara el usuario y el programa debe continuar hasta que se ingrese un valor 0

31. Dado un numero entero x mayor que uno se ha de escribir un uno si es primo y un cero en caso contrario. Para ello ha de comprobar si x es divisible por algún entero en el intervalo (1, x).

32. Dado un numero entero mayor que uno se ha de escribir la lista de sus divisores comprendidos en el intervalo (1, x).

33. Se ha de escribir un uno en el caso de que exista un trio (x, y, z) de números enteros positivos tales que x2 + y2 = z2, escribiendo todas las soluciones en el intervalo x є (0, 1000], y є (0, 1000]. En caso contrario de que no se encuentre solución se ha de escribir un cero.

34. Dado dos números enteros positivos p y q escriba un algoritmo que permita hallar el máximo común divisor de los mismos

35. Diseñe un algoritmo que permita descubrir si dos enteros positivos son primos entre sí, es decir si su máximo común divisor es uno.

36. Calcule e imprima los números primos entre 1 y 10037. Mostrar los N primos términos de la siguiente serie, donde N debe

estar entre 5 y 305, 7, 10, 14, 19

38. Mostrar los N primeros términos de la siguiente serie, indicando además la suma de los mismos.

7, 9, 12, 16, 2139. Determinar la cantidad de términos que son múltiplos de 3 en los

200 primeros términos de la siguiente serie6, 8, 10, 12, 14

40. Contar y sumar los números enteros positivos introducidos por teclado.

41. Sume los números del 1 al 200 menos los múltiplos de 5.42. Calcule la suma y el producto de los números impares

comprendidos entre 11 y 111. Resolver con tres estructuras distintas.

43. Calcule el MCD (Máximo Común Divisor) de dos números A y B de acuerdo con el algoritmo de Euclides.

44. Imprima las tablas de multiplicar desde P hasta Q, siendo P y Q dos valores ingresados por el teclado, tal que P>=0 cada tabla debe tener el multiplicador desde 1 hasta 12.

45. Imprima los números de Fibonacci menores que 1500. Los números de Fibonacci se calcula como la suma de los 2 anteriores: 0, 1, 1, 2, 3, 5, 8, 13,…

46. Imprima los 50 primeros números múltiplos de 3 anteriores al 500.47. Calcule e imprima el número de términos necesarios para que el

valor de la siguiente sumatoria se aproxime lo más cercanamente a 1000 sin que lo exceda.

48. Calcule el número máximo de términos de la serie de Fibonacci 1, 1, 2, 3, 5,8,.., cuya suma no exceda de 10000.

49. Permita ingresar el nombre del bien, la cantidad a depreciar y el número de años de depreciación, la salida debe mostrar cada año y su depreciación. De acuerdo con el método de la suma de los dígitos empleado en el análisis financiero para calcular la depreciación. Por ejemplo suponga que un automóvil de $20000 será depreciado durante un periodo de 5 años, la suma de los dígitos del año: 1+2+3+4+5=15. De acuerdo con el método el primer año el bien se deprecia 5/15, el segundo 4/15 y así sucesivamente.

50. La esquina de un rectángulo debe estar sobre la curva elabore el algoritmo que determine las coordenadas de la esquina del mayor rectángulo posible (imprima las coordenadas (x, y) y el área máxima).

15. SubprogramasLa resolución de problemas complejos se facilita considerablemente si se dividen en problemas más pequeños llamados subproblemas (Subprogramas). Las herramientas usadas en la programación son las funciones y procedimientos (subrutinas) 15.1. Procedimientos(Subprograma):

Llamados también subrutina, un procedimiento es un subprograma que ejecuta un proceso específico, cuando se invoca el procedimiento, los pasos que lo definen se ejecutan y a continuación se devuelve el control al programa que le llamoDeclaración de un procedimiento

Procedimiento nombre (parámetros formales, parámetros variables)Inicio

Acciones

Fin

Donde Nombre: Es el nombre del procedimiento a invocarParámetros formales: Tiene el mismo significado que en las funcionesParámetros variables: En algunos lenguajes de programación está permitido este tipo de declaración, para designar que ellos obtendrán resultados del procedimiento en lugar de los valores actuales asociados a ellos.Invocación a una función(Llamar_a) nombre (lista de parámetros actuales)Por ejemploProcedimiento división (dividendo, divisor, cociente, resto)Inicio

Cociente dividendo/ divisorResto dividendo - cociente*divisor

RetornoFin

Algoritmo aritméticaInicio

Leer M, NLlamar_a división (M, N, P, Q)Escribir p, Q

Fin15.2. Funciones

Matemáticamente una función es una operación que tiene uno o más valores llamados argumentos y produce un valor denominado resultado o valor de la función para los argumentos dados (Aguilar, 1988)Declaración de una función

Dónde: Par1, par2,… Lista de parámetros o argumentosNombre_ función Nombre asociado con la función, que será un nombre de identificación valido

Función nombre _ función (par1, par2, par3,…)Inicio

Acciones

Fin

Acciones instrucciones que constituyen la definición de la función y que debe contener una acción solo de asignación que asigne un valor al nombre de la función, es decir, nombre_ función expresiónPor ejemplo la función

f ( x )= x

1+x2

Función fun(x)Inicio

Funx/(1 + x^2)FinInvocación de una funciónUna función puede ser llamada solo mediante referencia de la forma siguiente:Variable de asignación nombre _ función (par1, par2,…)Por ejemplo

F_x fun(x)

Procedimiento vs funcióni. Un procedimiento es llamado desde el algoritmo o programa principal

mediante su nombre y una lista de parámetros actuales o bien con la instrucción llamar. Al llamar el procedimiento se detiene momentáneamente el programa que se estuviera realizando y el control pasa al procedimiento llamado. Después que las acciones del procedimiento se ejecutan, se regresa a la acción inmediatamente siguiente a la que se llamó.

ii. Las funciones devuelven un valor, las subrutinas pueden devolver 0,1 o más valores y en forma de la lista de parámetros

iii. El procedimiento se declara igual que la función, pero su nombre no está asociado a ninguno de los resultados que obtiene

15.3. Algoritmos RecursivosEs un algoritmo que se define en términos de sí mismo. Son implementados en forma de subrutinas (Funciones,, Procedimientos, subprogramas, etc.) De tal manera que dentro de una subrutina recursiva hay una o más llamadas a sí misma.Es una herramienta muy potente en algunas aplicaciones sobre todo de cálculo. La recursión puede ser utilizada como una alternativa a la repetición o estructuras repetitivas. El uso de la recursión es particularmente idóneo

para la solución de aquellos problemas que pueden definirse de modo natural en términos recursivos (Aguilar, 1988)Recursividad directa: cuando en una subrutina hay llamadas a ella misma Recursividad indirecta: cuando se tienen varias subrutinas y estas se llaman unas a otras formado ciclos.La recursividad es un elemento muy importante en la solución de algunos problemas VentajasAlgunos problemas son esencialmente recursivos, por lo cual su implementación se facilita mediante un algoritmo de naturaleza recursiva, sin tener que cambiarlo a un método iterativo. DesventajasPuede llegar a utilizar grandes cantidades de memoria en un instante, pues implementa una pila cuyo tamaño crece linealmente, con el número de recursiones necesarias en el algoritmo Ejemplo 1Calcular factorial de un número n

Función factorial (n)Inicio

Si n = 0 entoncesFactorial 1

SinoFactorial n* factorial(n-1)

Fin siFin

InicioLeer nFact factorial(n)Escribir “el factorial de n es”, fact

Fin

Ejemplo 2Calcular factorial de un número n en Perl

sub factorial { my $n=$_[0]; if($n==0 || $n==1) { $fact=1; } else { $fact=$n*&factorial($n-1);

} } print"ingrese un numero :" ; $n=<STDIN>; chop($n); print "el factorial de $n es ";print &factorial($n);Ejemplo 3Calcular factorial de un número n en Matlabfunction factor=factorial(n)if n==0 || n==1 factor=1;else factor=n*factorial(n-1);endahora podemos llamarlo desde la venta de comandos de matlabEjemplo 4Desarrollar un algoritmo con procedimientos en perl para Aproximar la siguiente función y = coseno(x)

sub potencia { $k=$_[0]; $x=$_[1]; my $exp=2*$k; $pot=$x**$exp; print"la potencia es: $pot \n"; return $pot; } sub factorial { $k=$_[0]; my $lim=2*$k; $fact=1; if($k==0) { $fact=1; } else { my $j=1; do { $fact=$fact*$j;

$j=$j+1 ;

} until($j>$lim);

}

print"factorial es: $fact \n"; return $fact; }

sub suma { $i=$_[0]; $s=$_[1]; $x=$_[2]; my $k=$i-1; my $sig=(-1)**$i; $s=$s-(&potencia($k,$x)/&factorial($k))*$sig;

} Print "ingrese el número de términos: "; $n=<STDIN>; chop($n); print "ingrese el valor de x: "; $x=<STDIN>; chop($x); $s=0; for($i=1;$i<=$n;$i++) { &suma($i,$s,$x); } print $s;

Ejercicios1. Diseñar un algoritmo que calcule el máximo común divisor de dos

números mediante el algoritmo de Euclides con el siguiente procedimientoa. Dividir el número mayor (A) por el menor (B). Si el resto de la división es cero el numero B es el máximo común divisorb. Si la división no es exacta, se divide el número menor (B) por el resto de la división anteriorc. Se siguen los pasos anteriores hasta obtener un resto cero. El último divisor es el mcd buscado

2. Para calcular el máximo común divisor (mcd) de dos números, se recurre a una función específica definida con un programa con un subprograma. Se desea calcular la salida del programa principal con dos números A y B,

cuyos valores son 15 y 10, es decir, el mcd (A, B) y comprobar el método de paso de parámetros por valor

3. Realizar un algoritmo que permita ordenar tres números mediante un procedimiento de intercambios de dos variables

4. Diseñar una función que calcule la media de tres números leídos del teclado y poner un ejemplo de su aplicación

5. Realizar un procedimiento que realice la conversión de coordenadas polares (r, ) a coordenadas cartesianas (x, y)

X = rcos()Y = rseno()

6. Función que calcule xy, con x є R, y suponiendo que y es un valor entero y > 0

7. Función que calcule xy, con x є R, y suponiendo que y es un valor entero que puede ser positivo, negativo o cero

8. Función que calcule , siendo m y n dos enteros positivos. Puede hacer uso de las funciones que haya realizado con anterioridad para calcular el factorial.

9. Función que calcule la suma de las componentes de un vector.

10. Función para calcular la suma , siendo a un vector dado como argumento, a є Rn y siendo n > 0, entero otro argumento.

11. Función para calcular el producto escalar de dos vectores v є Rn y w є Rn, suponiendo n > 0 entero.

12. Función Evapol(), que evalué el polinomio A(x) =a1xn+ … + anx1+ an+1x0, dado el grado del polinomio n ≥ 0 entero, el vector de coeficientes a =( a1, …, an+1) y el valor x. Puede hacer uso de las funciones que haya realizado con anterioridad para calcular las potencias.

13. Función que calcule el vector de coeficientes de un polinomio C suma de otros dos (A y B). La función ha de recibir los grados na, nb y los vectores de coeficientes vA = (a1,…, ana+1) y vB = b1,…,bnb+1, de cada uno de los dos polinomios sumados. La función devolverá el grado y el vector de coeficientes del polinomio suma C = A+B.

16. Estructuras de DatosUna estructura de datos es una colección de datos que pueden ser caracterizados por su organización y las operaciones que se definen en ella. La estructuras d datos son muy importantes en los sistemas de computadoras. Los tipos de datos más frecuentes utilizados en los diferentes lenguajes de programación son(Aguilar,1988)

Datos simples

Datos estructurados

Estándar

Definido por el programador(No estándar)

Simples o Estáticos

Compuestos o dinámicos

EnteroRealCarácterLógico

Sub rangoEnumerativo

Array (vectores / matrices)RegistrosFicherosConjuntosCadenas (String)

Listas (pilas / colas)Listas enlazadasArbolesGrafos

16.1. Arreglos unidimensionales (array) Es un conjunto finito y ordenado de elementos homogéneos. La propiedad ordenada significa que el elemento primero, segundo, tercero de un Arreglo puede ser identificado. Los elementos de un arreglo son homogéneos, es decir del mismo tipo de datos (Aguilar, 1988)El tipo más simple de arreglo es el arreglo unidimensional o vector (matriz de una dimensión) a continuación la representación de un vector

i A(i)

1 14.02 12.03 8.04 7.05 8.406 8.207 8.158 7.25

Subíndice o

El subíndice o índice de un elemento(1, 2, ..,n) designa su posición en la ordenación del vectorDeclaración de un arregloNombre arreglo = arreglo [liminf . . . limsup] de tipo de dato

DondeNombre arreglo: nombre valido del arregloLiminf . . . limsup :límite inferior y superior del rango del arregloTipo de dato: es el tipo d datos de los elementos del arreglo, puede ser entero, carácter, real,…Asignación a un arregloA (1) 10 se asigna el valor 10 a la posición 1 del vector AA (5) 20 se asigna el valor 20 a la posición 5 del vector ALectura y escritura de datosLa lectura y escritura de un arreglo u operaciones de entrada y salida normalmente se realizan con estructuras repetitivas.

Final = arreglo [1.. 20] de real// LecturaDesde i = 1 hasta 20 hacer

Leer final (i)Fin desde// EscrituraDesde i = 1 hasta 20 hacer

Escribir final (i)Fin desde

16.1.1.Ordenación:Llamado también clasificación, es el proceso de organizar datos en algún orden o secuencia específica tal como creciente o decreciente para datos numéricos o alfanuméricos para datos de caracteres. Los métodos de ordenación se dividen en dos categorías:

Ordenación de vectores, tablas (arrays) Ordenación de archivos

Los métodos de clasificación se explicaran aplicados a vectores (arrays unidimensionales) pero se pueden extender a matrices o tablas (arrays bidimensionales) considerando la ordenación respecto a una fila o columna los métodos directos son los que se realizan en el espacio ocupado por el array. Los más populares son:

Método de intercambio o burbuja Método de Selección Método de Inserción

Método de intercambio o de Burbuja

Se basa en el principio de comparar pares de elementos adyacentes e intercambiarlos entre sí, de una lista o vector hasta que estén todos ordenados.

50 15 56 14 35 1 12 9A(1) A(2) A(3) A(4) A(5) A(6) A(7) A(8)

Los pasos a dar son:

Comparar A (1) y A (2), si están en orden, se mantienen como están, en caso contrario se intercambian entre sí.

A continuación se comparan los elementos 2 y 3; de nuevo se intercambian si es necesario.

El proceso continua hasta que cada elemento del vector ha sido comparado con sus elementos adyacentes y se han realizado los intercambios necesarios

Algoritmo:

Desde i 1 hasta n-1 hacer {este representa el numero pasadas}Desde j 1 hasta n-1 hacer {este representa número de

comparaciones}Si A[ j ] > A [j+1] entonces

AuxA[j]A[j] A [j+1]A [j+1] Aux

Fin siFin desde j

Fin desde i

Método de Selección

El algoritmo de ordenación por selección de una lista o vector de n elementos tiene los siguientes pasos.

Encontrar el elemento mayor de la lista Intercambiar el elemento mayor con el elemento de subíndice n (o

bien el elemento menor en el subíndice 1) A continuación se busca el elemento mayor en la sablista de

subíndices 1.. n-1 y se intercambia con el elemento de subíndice n-1, por consiguiente se sitúa el segundo elemento mayor en la posición n-1.

A continuación se busca el elemento mayor en la sablista 1..n-2 y así sucesivamente

AlgoritmoFunción Posmayor (j,tabla)

InicioÍndice_max 1

Desde índice 2 hasta j hacerSi tabla [índice]> tabla [índice_max] entonces

Indice_maxindiceFin siPosmayorindice_max

Fin desde iFin

Inicio {programa principal}Desde j límite hasta 2 hacer

Mayor Posmayor(j, tabla)Aux Tabla [mayor]Tabla [mayor] Tabla[j]Tabla[j] Aux

Fin desde jFin

Método se InserciónEl método se basa en considerar una parte de la lista ya ordenando y situar cada uno de los elementos restantes insertándolo en el lugar que le corresponde por su valorAlgoritmoProcedimiento desplazar (tabla, aux, k, nuevopos)InicioEncontrado falseMientras (k > 1) y (no encontrado) hacer

Si tabla [k-1] >aux entoncesTabla [k] tabla [k - 1]K k – 1

SinoEncontrado true

Fin siNuevapos k

Fin mientrasFinInicio {programa principal}

Desde K 2 hasta N hacerAux tabla[k]

Desplazar (tabla, k, aux, nuevapos)Tabla [nuevapos] aux

Fin desde kFinMétodo de Shell

Este método es una mejora del método de inserción directa que se utiliza cuando el número de elementos a ordenar es grande se suele denominar también ordenación por disminución de incrementos.Pasos

Se divide la lista original (16 elementos como ejemplo) en este caso en 8 grupos de dos(considerando un incremento o intervalo de 16/2 =8)

Se clasifica cada grupo por separado (se comparan las parejas de elementos y si no están ordenados) se intercambian entre sí de posiciones)

Se divide ahora la lista en cuatro grupos d de cuatro (intervalo de salto 8/4 = 4) y nuevamente se clasifica cada grupo por separado.

Un tercer paso clasifica dos grupos de ocho registros y luego un cuarto paso completa el trabajo clasificando todos los 16 registros

AlgoritmoInicioIntervalo n div 2Mientras (intervalo > 0) hacer

Desde i (intervalo - 1) hasta n hacerj i – intervaloMientras (j > 0) hacer

K i + intervaloSi A[j] <= A[k] entonces

j 0Sino {intercalar A[j], A[k]}

AuxA[j]A[j] A[k]A[k] aux

Fin sij = j - intervalo

Fin mientrasFin desde i

Intervalo intervalo div 2Fin mientrasFin

Método de ordenación rápida (ojo trabajo)16.1.2.Búsqueda

La búsqueda de información está relacionada con las tablas para consulta. Estas tablas contienen una cantidad de información que se almacena en forma de listas de parejas de datosMétodo de búsqueda secuencial Supongamos una lista de elementos almacenados en un vector (array unidimensional). El método más sencillo de buscar un elemento en un vector es explorar secuencialmente el vector o dicho en otras palabras, recorrer el vector desde el primer elemento hasta el último. Si se

encuentra el elemento buscado visualizar un mensaje similar “fin de la búsqueda o elemento encontrado”, en casi contrario visualizar un mensaje similar a “elemento no encontrado” (Aguilar, 1988).Algoritmo 1InicioLeer t(Recorrido del vector)

Desde i 1 1 hasta n hacerSi A[i] = t entonces

Escribir “elemento encontrado”Fin si

Fin desdeFinAlgoritmo 2Inicio

Leer tI 1Mientras (A[i] <> t) y (i <= n) hacer

I i+1 (este bucle se detiene bien con A[i]= t o bien con i >n)Fin mientrasSi A[i] = t entonces (condición de parada)

Escribir “el elemento se ha encontrado en la psicion”, iSino

Escribir “el número no se encuentra en el vector”Fin si

FinMétodo de búsqueda binariaLa búsqueda secuencial es se comienza con el primer elemento del vector y se busca en el hasta que se encuentra el elemento o se alcanza el final del vector, aunque este método puede ser un método adecuado para pocos datos, se necita una técnica más eficaz para conjuntos grandes de datos. El método de búsqueda binaria se basa en la división sucesiva del espacio ocupado por el vector en sucesivas mitades hasta encontrar el elemento buscado, este vector debe estar ordenado. La búsqueda binaria utiliza el método de divide y vencerás para localizar el valor buscado. Con este método se examina primero el elemento central de la lista, si este es el elemento buscado, entonces la búsqueda ha terminado. En caso contrario se determina si el elemento buscado está en la primera o la segunda mitad de la lista y a continuación se repite este proceso, utilizando el elemento central de esta sablista (Aguilar, 1988)

AlgoritmoInicio

Leer k (inicializar variables)Bajo 1Alto NCentral ent((bajo + alto)/2)Mientras (bajo <= alto) y (A[central] <>K ) hacer

Si K < A[central] entoncesAlto central - 1

SinoBajo central + 1

Fin siCentral ent((bajo + alto)/2)

Fin mientrasSi k = A[central] entonces

Escribir “valor encontrado en”, centralSino

Escribir “valor no encontrado”Fin si

FinMétodo de busca por clavesLa búsqueda binaria proporciona un medio para reducir el tiempo requerido para buscar en una lista. Este método, sin embargo, exige que los datos estén ordenados. Por lo que surge este método para mejorar la velocidad de búsqueda sin estar ordenados. El método de transformación de claves o hashing consiste en convertir la clave dada (numérica o alfanumérica) en una dirección (índice) dentro del arreglo. La correspondencia entre claves y la dirección en el medio de almacenamiento o en el arreglo se establece por una función de conversión (función o hash). (Aguilar, 1988)OJO Trabajo

16.1.3.Mezcla o intercalaciónLa intercalación es el proceso de mezclar (intercalar) dos vectores ordenados y producir uno nuevo vector ordenadoAlgoritmo

InicioLeer A, B (A, B vectores de M y N elementos9I 1J 1K 1

Mientras i <= M y j <= N hacer(seleccionar siguiente elemento de A o B y añadirlo en C)

K k + 1Si A[i] < B[j] entonces

C[k] A[i]i= i + 1

sinoC[k] B[j]J j + 1

Fin si Fin mientrasSi i <= M entonces

Desde r i hasta M hacerK k +1C[k] A[r]

Fin desdesino

Desde r j hasta N hacerK k +1C[k] B[r]

Fin desdeFin siEscribir C (vector clasificado)

Fin

16.2. Arreglos bidimensionales:

Se puede considerar como un vector de vectores. Es por consiguiente un conjunto de elementos, todos del mismo tipo en el cual el orden de los componentes es significativo y en el que se necesitan especificar dos subíndices para poder identificar a cada elemento del arreglo. (Aguilar, 1988).

Fila 1

Columna 1

Fila 2Fila 3Fila 4

Fila 5

Columna 2 Columna 4

Columna 5

Asignación en una arreglo de dos dimensionesA (1,2) 10 se asigna el valor 10 en la posición i = 1 y j = 2 de arreglo bidimensional AA (5,6) 20 se asigna el valor 20 a la posición i = 5 y j = 6 del arreglo bidimensional ALectura y escritura de datosLa lectura y escritura de un arreglo u operaciones de entrada y salida normalmente se realizan con estructuras repetitivas.

Final = arreglo [1.. 20; 1..10] de real// LecturaDesde i 1 hasta 20 hacer

Desde j 1 hasta 10 hacerLeer final [i, j]

Fin desde jFin desde i// EscrituraDesde i 1 hasta 20 hacer

Desde j 1 hasta 10 hacerEscribir final [i, j]

Fin desde jFin desde i

Ejemplo 1Escribir un algoritmo que permita calcular el cuadrado de los 100 primeros números enteros y a continuación escribir una lista que contenga dichos 100 números cuadrados.AlgoritmoInicio

Desde N 1 hasta 100 hacer C N*NEscribir N, C

Fin desde{Escritura de la tabla}Desde N 1 hasta 100 hacer

A(N) N*NEscribir A(N)

Fin desdeFinEjemplo 2Se tiene N temperaturas. Se desea calcular su media y determinar entre todas ellas cuales son superiores o iguales a esa mediaAlgoritmoInicio

Columna 3

Suma 0C 0Leer NDesde i 1 hasta N hacer

Leer temp[i]Suma suma/N

Fin desdeDesde i 1 hasta N hacer

Si temp[i] >= media entoncesC C +1

Escribir temp[i]Fin si

Fin desde iEscribir “la media es:”, mediaEscribir el total de temperaturas mayores iguales a la medio es : “, C

FinEjemplo 3Inicializar una matriz de dos dimensiones con un valor constante KAlgoritmoInicio

Desde i 1 hasta M hacerDesde j 1 hasta N hacer

Q[i,j] KFin desde j

Fin desde ifin

Ejemplo 4Realizar la suma de dos matricesAlgoritmoInicio

Desde i 1 hasta m hacerDesde j 1 hasta n hacer

S[i,j] Q[i,j] + B[i,j]Fin desde j

Fin desde ifin

Ejemplo 5

Calcular el porcentaje de cada nucleótido de una secuencia de ADN ingresado por teclado en perl#programa para calcular la frecuencia de bases de una secuencia de ADN

print"introducir la se cuencia de ADN :";$mysec=<STDIN>;chop($mysec);$a=0;$c=0;$g=0;$t=0;$r=0;$n=length($mysec);print"el tamaño de la cadena es: $n \n";@mysec=split //,$mysec;#print @mysec;for($i=0;$i<$n;$i++){ # $adn=$mysec[$i]; #print $adn; if(@mysec[$i]eq"a")

{ $a=$a+1; } elsif (@mysec[$i]eq"c") { $c=$c+1; } elsif (@mysec[$i]eq"g") { $g=$g+1; } elsif (@mysec[$i]eq"t") { $t=$t+1; } else { $r=$r+1; }}$porcentajea=100*$a/$n;$porcentajec=100*$c/$n;$porcentajeg=100*$g/$n;$porcentajet=100*$t/$n;

$procentajer=100*$r/$n;print"resultado en porcentaje de cada nucleotido es: \n";print" Adenina: $porcentajea\n";print" Citocina: $porcentajec\n";print" Guanina: $porcentajeg\n";print" Timina: $porcentajet\n";print"otros Residuos: $procentajer\n";

Ejercicios

1. Leer las componentes de un vector de números reales de dimensión 10.

Escribirlo luego en la pantalla.

2. Leer un entero n supuesto n >0 y un vector v є Rn x 1, calcular y escribir el

producto escalar m = vtv, m є R, donde vt simboliza el vector transpuesto

de v.

3. Leer n (suponiendo que es entero y > 0). Leer a continuación la n

componentes de un vector de números reales dimensión n. Calcular y

escribir luego la media aritmética de sus componentes

4. Leer n (suponiendo que es entero y >0) y un vector de dimensión n.

Calcular y escribir la componente de mayor valor y su índice dentro del

vector.

5. Leer n (suponiendo que es entero y mayor que dos). Construir un vector

v є Rn x 1 tal que vk = vk-1 / 3 + 0.5, para k = 2,…,n y siendo v1 = 1.

6. Leer n (suponiendo que es entero y mayor de dos). Construir un vector v

є Rn x 1 , tal que sus componentes sean los términos de ls sucesión de

Fibonacci.

7. Se han medido las longitudes de tornillos procedentes de un mismo lote

de fabricación. Se han dispuesto en un vector v de dimensión n>2. Se

dispone de v y n. Diseñe un algoritmo para calcular la media y varianza

de las longitudes. La varianza se calcular como

Siendo μ la media aritmética de las componentes de v.

8. Máximo de un vector. Dada un vector A є R n x 1, calcular el elemento

mayor.

9. Se quiere construir y escribir un vector v de dimensión n cuyas

componentes siguen la ley vk = 3*vk-1 – k, para k ≥ 2. Tanto n como v1

son cantidades que han de leerse del teclado

10. Determinar los valores de i, j, después de la ejecución de las

instrucciones siguientes.

Inicio

I 1

J 2

A[i] j

A[i] i

A[j + 1] j + 1

I A[j] + A [i]

A[3] 5

J A[j] + A [i]

Fin

11. Dados los vectores A = 3 5 6 8 4 7 8 5 3 1 y B = 3 4 6 8 9 1 2 3 0 9,

realice un algoritmo para calcular las siguientes

operaciones

12. Crear un vector de 70 elementos donde cada elemento del vector sea

igual a su posición

13. Dada en una lista no ordenada de números y un número leído por

teclado:

a. Diseñar una solución que busque en la lista el número leído. Si lo

encuentra, debe informar de su posición en la lista, sino debe devolver

la posición cero.

b. Modificar el anterior para que devuelva el número de veces que

aparece.

c. Diseñar una solución que busque el número mayor y devuelva

cuantas veces aparece.

d. Diseñar una solución que devuelva Verdadero si el número leído,

aparece más veces que el mayor.

e. Diseñar una solución que calcule la media de todos los números.

f. Diseñar una solución que calcule la media entre el mayor y el menor.

g. Diseñar una solución que cree una lista inversa a la dada. Es decir,

que genere una nueva lista tal que su primer elemento sea el último de

la lista inicial, su segundo elemento sea el penúltimo de la lista inicial,

etc., etc., etc.

14. Dadas 3 listas de 10 números de teléfono, donde la primera lista

contiene el número de pasos consumidos en llamadas locales asociado a

cada teléfono, la segunda contiene información sobre llamadas

nacionales y la tercera contiene información sobre llamadas

internacionales, calcular los subtotales del coste de cada una de las

categorías considerando los costes siguientes: llamada local, 5pesetas

por paso, llamada nacional 10 pesetas por paso y llamada

internacional50 pesetas por paso. Construir un programa que lee los

datos de entrada desde el teclado e imprima los resultados finales por

pantalla.

15. Dado un vector v de dimensión n cuyas componentes son todas

positivas o cero se desea reordenar sus componentes de mayor a menor

por ejemplo, si

V = [2 3 8 5 4]

El resultado ha de ser un nuevo vector

w= [8 5 4 3 2]

16. Repetir el ejercicio anterior pero sin usar un vector auxiliar como w. el

resultado que se pretende conseguir es que el propio vector v tenga sus

componentes ordenadas( emplear todos los métodos de ordenación)

17. Igual que el anterior pero suponiendo que v contiene cantidades

positivas y negativas, por ejemplo

V=[-7 3 8 -9 5 4 0 -1]

Ha de dar como resultado el propio vector reordenado así:

V= [8 5 4 3 2 -1 -7 -9]

18. Suponiendo que A es un conjunto [1, 3, 5, 7], B es [2, 4, 6] y C es [1, 2,

3] evalué las siguientes expresiones.

A+(B*C), A+(B+C), A+B+C, A+(B+C), C+(A+C), C-(A-B), (C-A)-B

19. Se desea calcular la mediana de los valores contenidos en un vector T є

Rn. si n es impar la mediana es el valor central del vector ordenado, en

caso contrario la mediana es la media de los dos elementos que están

más al centro. En ambos casos el paso previo para calcular la mediana es

ordenar el vector. Un ejemplo con n par es T = [10 23 11 15]. La

ordenación produce T° = [23 15 11 10] y la mediana es (15 + 11)/2 = 13.

Un ejemplo con n impar es T = [11.8 12 28 11.5 14], en este caso la

ordenación produce un nuevo vector T° = [11.5 11.8 12 14 28], de

donde se obtiene la mediana que es el valor central 12.

Puede comprobar con lo ejemplos anteriores que la mediana no

coincide con la media aritmética.

20. La cantidad de un cierto isotopo radioactivo presente en una mezcla

varia con el tiempo pues el isotopo se descompone emitiendo radiación.

Se denota mediante y(k) la cantidad en gramos de isotopo en el instante

de tiempo t = k medido en años unos científicos han descubierto que se

cumple que y(k) = 0.99*y(k-1). Si un barril de desechos radioactivos

contiene 1000 gramos de isotopo ¿Cuál será la cantidad de isotopo

presente al cabo de 500 años?

21. La velocidad de un paracaidista en su descenso al suelo una vez que ha

abierto el paracaídas se denota mediante v(k) (m/s), siendo k el tiempo

que lleva cayendo medido en segundos, k > 1. Se ha especulado con la

idea de que dicha velocidad sigue la ley: v(k) = v(k-1) + 10 - 0.4*(v(k-1))2.

Sabiendo que una caída típica puede durar 5 minutos y que el

paracaídas se suele abrir con una velocidad de 100 Km/h ¿con que

velocidad llega al suelo?

22. Se sabe que la cantidad de bacterias de cierta especie en un cultivo es

x(k) = 1.1*x(k-1), siendo k el tiempo medido en horas, k >1. Si al cabo de

la primera hora x(1) se contabilizaron 100 unidades ¿Cuántas habrá al

cabo de un día?

23. Dados los arrays lineales ABC(-5:15); EJM(1935:1994);PQR(45)

Se pide calcular el número de elementos de cada array

24. Un arreglo estrictamente triangular inferior A es un arreglo de n x n, en

el cual a[i, j] ≠ 0, si i<=j,

¿Cuál es el máximo número de elementos no iguales a cero en tal

arreglo?

¿Cómo pueden almacenarse secuencialmente estos elementos en la

memoria?

¿Desarrolle un algoritmos para acceder A[i, j] donde i>=j?

25. En un arreglo se ha almacenado el número total de toneladas de

cereales cosechadas durante cada mes del año anterior. Se desea la

siguiente información:

¿el promedio anual de toneladas cosechadas ?

¿Cuántos meses tuvieron una cosecha superior al promedio anual?

¿Cuántos meses tuvieron una cosecha inferior al promedio anual?

Escriba un programa que proporcione estos datos

26. En un arreglo se almacenan las calificaciones finales de N alumnos.

Escriba un programa que calcule e imprima.

¿El promedio general del grupo?

¿Número de alumnos aprobados y número de alumnos reprobados?

¿Porcentaje de alumnos aprobados y porcentaje de alumnos

reprobados?

¿Número de alumnos cuya calificación fue mayor o igual 11?

27. Lectura / escritura de una matriz m x n. Se han de leer del teclado las

dimensiones m y n (suponga que son números enteros positivos). A

continuación se han de leer los elementos akj de una matriz A de m filas

y n columnas. Finalmente se presentará en la pantalla la matriz leída.

28. Construir una matriz A є Rm x n cuyo elemento genérico akj viene dado

por akj = k2 – j

29. Dada una matriz (se supone ya leída) A de dimensiones m x n, se quiere

anular (poner a cero) los elementos de su diagonal principal y escribir la

matriz resultante.

30. Traza de una matriz. Dada una matriz cuadrada A є R n x n , dada siendo n

> 0 un entero también dado se ha de diseñar un algoritmo que permita

obtener la traza de A (suma de los elementos de la diagonal)

31. Suma de matrices. Dadas (suponga que ya han sido leídas) dos matrices

A є R n x n y B є R n x n, se quiere calcular y escribir la matriz C obtenida

como suma de las anteriores c = A +B

32. Matriz traspuesta. Dada una matriz A є R n x n, calcular su traspuesta B= At

33. Submatriz triangular. Dada una matriz A є R n x n, se desea calcular otra

matriz B є R n x n cuyos elementos son ceros excepto los de la submatriz

triangular inferior que son iguales a los elementos de igual posición de

A. Es decir, los elementos que están por debajo de la diagonal principal

de A se copian en B, el resto de elementos de B valen cero. Se supone

que tanto m como n son números enteros mayores que uno ya leídos.

34. Máximo de una matriz. Dada una matriz A є R n x n, calcular el elemento

mayor.

35. Máximo de cada matriz. Dada una matriz A є R n x n , con m > 1 y n > 1

dados se desea calcular un vector v є R n x n cuya componente genérica vk,

es el mayor valor de la fila k-esima de A.

36. Escribir el algoritmo que permita determinar el número de elementos

positivos de una tabla

37. Leer una matriz de 3 por 3 elementos y calcular la suma de cada una de

sus filas y columnas, dejando dichos resultados en dos vectores, uno de

la suma de las finas y otro de las columnas

38. Realizar los algoritmos: de la matriz inversa, producto de matrices,

multiplicación de una matriz por un escalar, matriz identidad y matriz

triangular

39. Se dispone de las notas de 40 alumnos, cada uno de ellos puede tener

uno o varias notas. Escribir un algoritmo que permita obtener la media

de cada alumno y la media de la clase a partir de la entrada de las notas

desde un terminal

40. Un avión dispone de 180 plazas de las cuales 60 son de no fumador y

numeradas del 1 al 60 y 120 plazas numeradas de 61 al 120. Diseñar un

algoritmo que permita hacer la reserva de plazas de avión y se detenga

media antes de la salida, cuyo momento se abrirá la lista de espera.

41. Juego del Rojo-amarillo-verde. El programa genera tres dígitos

aleatorios distintos entre 0 y 9. A estos dígitos se les asignan las

posiciones 1, 2 y 3. El objetivo del juego es adivinar los dígitos así como

sus posiciones correctas en el menor número de intentos posibles. Para

cada intento, el jugador proporciona tres dígitos para las posiciones 1, 2,

y 3. El programa responde con una pista que consta de rojo, amarillo y

verde. Si un dígito adivinado está en la posición correcta la respuesta es

verde. Si el digito adivinado está en posición incorrecta, la respuesta es

amarillo. Si el dígito para una posición dada no coincide con ninguno de

los tres dígitos, la respuesta es rojo. Ejemplo: dígitos 6,5,8 en las

posiciones 1,2,3

42. Jhon Pérez ha heredado $1.000. Él ha decidido invertir su dinero por un

año. Un inversionista le ha sugerido cinco inversiones posibles: oro,

bonos, negocio en desarrollo, certificado de depósito, acciones. Jhon

debe decidir cuánto invertir en cada opción. La siguiente tabla

representa las ganancias que obtendría para cada escenario posible de

comportamiento del mercado

Utilizar el Criterio de Hurwicz: Es un criterio intermedio entre maximin y

el maximax: Supone la combinación de ponderaciones de optimismo y

pesimismo. Sugiere la definición del llamado coeficiente de optimismo

(α), y propone que se utilice como criterio de decisión una media

ponderada entre el máximo resultado asociado a cada alternativa, y el

mínimo resultado asociado a la misma.

Para el optimista

Para el pesimista

Para hallar la solución óptima se marca el máximo y el mínimo de cada

alternativa. Según el coeficiente de optimismo del decidor (α), se

multiplica el máximo por éste y el mínimo se multiplica por (1-α). Luego

se suman los dos. Luego elegimos el máximo entre todas las

alternativas. En nuestro ejemplo, si suponemos que el empresario es

neutral α=0,5

43. Escriba un algoritmo que busque el valor máximo de los elementos de

un vector de N números reales, donde N es una constante a la que le

daremos un valor cualquiera. El algoritmo debe escribir por pantalla el

valor máximo. Supongamos que:

44. Lea una matriz de N x M (variables) e indique luego ,

Cuantos elementos positivos contiene la matriz

Cuantos elementos pares y positivos contiene

Cuál es el mayor elemento que contiene la matriz y cuantas veces

figura.

45. Crear una matriz de dimensiones variables y llenarlas de unos e

imprimirla

46. Crear a una matriz N x N , cuya diagonal principal (i = j) esté formada

por unos y el resto por ceros

47. Crear una matriz de 5 x 5 donde cada elemento de esta corresponda a

la suma de los índices de la fila con la columna (i + j)

48. Su ponga que ya ha sido leída una matriz de 9 x 5, se le pide que

encuentre el número de elementos pares que contiene la matriz. Luego

imprima la matriz completa

49. Lea una matriz de dimensiones 5 x 5 y luego entregue:

El promedio de los elementos de la segunda fila de la matriz

La suma de elementos de la cuarta columna de la matriz

50. Un fabricante de automóviles dispone de un modelo de vehículo en

cinco colores. Para saber la aceptación de cada color realiza una

encuesta usando un programa en su ordenador. El programa ha de

ayudarle a contar los votos de los encuestados. El encuestador tecleara

el número del color elegido (de uno a cinco) cada vez que pregunte a

una persona nueva. Cuando no quiera preguntar a nadie más

introducirá el valor -1. En ese momento el programa le indicara el

número de votos que cada color ha obtenido. Posteriormente se han de

ordenar los colores según los resultados de la votación.

51. Multiplicación de matrices. Suponga ya leídas A є R m x n y B є R n x p,

calcule C=A*B.

52. Matriz al cubo. Diseñe un algoritmo que permita obtener B = A3, siendo

A є R n x n una matriz cuadrada que se supone ya leída.

53. Exponenciación de matrices. Diseñe un algoritmo que permita obtener B

= Ap, siendo A є R n x n, una matriz dada y p >0 un entero también dado.

54. Dados dos enteros positivos m y n se desea construir la matriz S є R m x n,

cuyo elemento genérico viene dado por

55. Dados los array multidimensionales:

X(-5:5;3:33) y Y(3:10;1:15;10:20)

Se pide calcular la longitud de cada dimensión y el número de

elementos de X e Y

56. La empresa ACME S.A. ha asignado un código a cada uno de sus obreros.

El código está formado por 5 caracteres y tienen la siguiente estructura:

XX-Y-ZZ

Donde

XX= especialidad

Y=categoría

ZZ=numero (0 - 90)

Especialidad

CO=Construcción

CA=Carpintería

IS=Instalaciones

LI=Limpieza

Categorías:

F=oficial

O=operario

P=Peón

Escribir un algoritmo que permita ingresar el código de cada

obrero y mostrar en pantalla la especialidad y la categoría. Se

debe considerar que el código ingresado por el operador tenga 5

caracteres, si el código no corresponde a una especialidad o

categoría, el programa deberá mostrar el mensaje “código no

valido”.

57. Construir un algoritmo que imprima el calendario correspondiente a un

mes y año determinado. Por ejemplo considera años bisiestos entre

1980 y 2020. Los días domingos deben aparecer resaltados

58. de

16.3. Ecdscds

17. Estructuras lineal17.1. Pilas17.2. Colas

18. Estructura no lineal18.1. Arboles18.2. Grafos

Supongamos que un problema requiere de 2 pilas: A(n1) y B(n2). No disponemos de mucha memoria y para evitar desbordamiento, es decir que la cantidad de elementos de A sea mayor que n1 o que la cantidad de elementos de B sea mayor que n2. Empleamos un solo array C con n1+n2 elementos con la particularidad que la pila A mete sus datos por la izquierda desde el elemento 1 y la pila B mete sus datos por la derecha desde el elemento n. Elabore las operaciones meter y sacar para este caso.

Desarrollar el algoritmo que lea una cadena de caracteres y determine si forma un palindrome. Un palindrome es una secuencia de caracteres que se lee igual hacia adelante que hacia atrás por ejemplo.

ABLE WAS I ERE I SAW ELBAEl carácter “.” (punto) termina la cadena. Escribir un mensaje indicando si la cadena es un palindrome. Puede asumir que los datos son correctos y que el número máximo de caracteres es 80.

Escriba el algoritmo de conversión de una expresión infija a prefija. Supongamos que EI es una expresión aritmética escrita en notación infija. EI puede tener paréntesis izquierdos y derechos, operandos (dígitos 0 – 9 y letras A - Z), operadores (^ = potencia, * = multiplicación, / = división, + = suma, - = resta de acuerdo con sus prioridades). Efectué la prueba de escritorio para la siguiente expresión: Z =((((X+1)*2)-5)/Y)