algoritmos y solucion de problemas2

Upload: carlos-eduardo-morales-reategui

Post on 07-Jul-2018

220 views

Category:

Documents


0 download

TRANSCRIPT

  • 8/18/2019 Algoritmos y Solucion de Problemas2

    1/43

      1

    Algoritmos y Solución de ProblemasAutor: Ing. Nelson Prado.

    Índice UNIDAD 1: .......................................................... 1

    1.1. INTRODUCCIÓN. ......... .......... ......... .... 11.2. ALGORITMOS Y SOLUCIÓN DEPROBLEMAS................................................... 21.3. METODOLOGÍA PARA RESOLVERPROBLEMAS................................................... 21.4. ETAPAS DEL CICLO DEPROGRAMACIÓN DE COMPUTADORES .... 31.5. ALGORITMOS ......... ........... ........... ...... 41.6. REPRESENTAR ALGORITMOS ......... 5

    UNIDAD 2: .......................................................... 62.1. VARIABLES, CONSTANTES EIDENTIFICADORES. ...................................... 6

    2.2. DATOS Y TIPOS DE DATOS ......... ..... 62.3. VARIABLES ........... ......... .......... .......... 72.4. OPERACIONES.................................... 72.5. ASIGNAR VALORES A LASVARIABLES .................................................... 92.6. TIPOS DE VARIABLES MÁSUTILIZADOS ................................................... 9

    UNIDAD 3: ........................................................ 113.1. DIAGRAMAS DE FLUJO PARAREPRESENTAR ALGORITMOS .................. 113.2. PSEUDOCÓDIGO PARAREPRESENTAR ALGORITMOS .................. 12

    UNIDAD 4: ........................................................ 134.1. PROCESOS ......... .......... ......... .......... ... 134.2. ESTRUCTURA SECUENCIAL ........ .. 134.3. ESTRUCTURA CONDICIONAL ....... 144.4. ESTRUCTURA ITERATIVA(REPETICIÓN) ............................................... 17

    Estructura Para (Desde - Hasta) ......... .......... 19Ejercicios .................................................... 20Estructura Mientras ..................................... 20Estructura Repetir ......... .......... .......... ......... .. 21

    UNIDAD 5: ........................................................ 225.1. ARREGLOS. ........ .......... .......... ......... .. 22

    5.2. CARGAR UN ARREGLO .......... ........ 225.3. IMPRIMIR UN ARREGLO ........ ........ 235.4. PROCESANDO UN ARREGLO ......... 235.5. ARREGLOS BIDIMENSIONALES .... 24

    UNIDAD 6: ........................................................ 276.1. FUNCIONES Y PROCEDIMIENTOS. 276.2. FUNCIONES ........... ......... .......... ........ 276.3. ÁMBITO DE LAS VARIABLES ........ 306.4. PROCEDIMIENTOS.......... ......... ........ 30

    UNIDAD 1:

    1.1. INTRODUCCIÓN.

    Los matemáticos hindúes, árabes y europeos fueron los primeros que desarrollaron técnicas de cálculo escrito.El matemático árabe Al'Khwarizmi , alrededor del año830 DC, escribe un libro de Aritmética, traducido al latíncomo Algoritmi de numero Indorum, donde introduce elsistema numérico indio (sólo conocido por los árabesunos 50 años antes) y los métodos para calcular con él.De esta versión latina proviene la palabra Algoritmo.

    Por algoritmo se entiende "una lista de instruccionesdonde se especifica una sucesión de operacionesnecesarias para resolver cualquier problema de un tipodado". Los algoritmos son modos de resolución de

     problemas, cabe aclarar que no sólo son aplicables a laactividad intelectual, sino también a todo tipo de problemas relacionados con actividades cotidianas. Elalgoritmo es de carácter general y puede aplicarse acualquier operación matemática o a cualquier problema.La formulación de algoritmos fue uno de los másgrandes adelantos dentro de la ciencia matemática yaque a partir de ello se pudieron resolver infinidad de problemas.

    Landa, matemático ruso, quien ha investigado mucho alrespecto nos dice que "la ciencia matemática, en el proceso de su desarrollo, ha tratado de encontrar losalgoritmos óptimos más generales para resolver los problemas que permitan la solución uniforme de clasesmás amplias de problemas de una manera, es decir,empleando siempre el mismo sistema de operación. Losalgoritmos, para llegar a ser tales deben reunir ciertascaracterísticas. Una de ellas es que los pasos que debenseguirse deben estar estrictamente descritos, cada accióndebe ser precisa, y debe ser general, es decir, que puedaser aplicable a todos los elementos de una misma clase.Por ejemplo en el caso del algoritmo de unamultiplicación, no sólo se realizará el procedimiento deresolución parte para la multiplicación de 4 x 4, sino queel mismo algoritmo podrá aplicarse a cualquiermultiplicación. La última de estas características será laresolución, en otras palabras, esto quiere decir que elalgoritmo deberá llegar a un resultado específico.

    Es de gran importancia aclarar que los algoritmos en simismos no resuelven problemas, se resuelven gracias al producto de ejercer las operaciones dictadas por elalgoritmo, se puede decir que es por el planteamientomismo. La realización de algoritmos es natural e innata

  • 8/18/2019 Algoritmos y Solucion de Problemas2

    2/43

      2

    en el hombre y en la mayoría de los casos es de tipoinconsciente, en otras palabras, las personas suelenresolver problemas sin tener que recurrir a la aplicaciónde cierto algoritmo. No obstante al encontrarse con problemas de un grado de dificultad mayor es necesariodetenerse a analizar y pensar en la solución de éste.

    1.2. ALGORITMOS Y SOLUCIÓN DEPROBLEMAS

    La razón principal por las que personas aprendenlenguajes y técnicas de programación es para utilizar lacomputadora como una herramienta para resolver problemas.

    La resolución de problemas exige al menos lossiguientes pasos:

    •  Definición y análisis del problema.

    •  Diseño del algoritmo.•  Transformación del algoritmo en un programa.•  Ejecución y validación del programa.

    Los primeros dos pasos definen lo que es un sistema deprocesamiento de información.

    Un sistema que transforma datos brutos en informaciónorganizada, significativa y útil.

    Para poder entender lo que es un sistema de procesamiento debemos diferenciar las palabras datos einformación:

    •  Datos se refiere a la representación de algún hecho,concepto o entidad real (por ejemplo palabrasescritas, habladas, números y dibujos).

    •  Información implícita datos procesados yorganizados.

     Figura. 1.1 Sistema de Procesamiento de Información.

    Los componentes de un sistema de proceso deinformación son: entrada, salida y procesador.

    Ejemplo de sistemas: Un termostato que controla latemperatura. La entrada es la temperatura media. Lasalida es una señal que controla la caldera del aireacondicionado.

    1.3. METODOLOGÍA PARA RESOLVERPROBLEMAS

     Figura 1.2: Pasos para resolver problemasmatemáticos.

    Todos los días nos enfrentamos a problemas. Desdenuestro punto de vista un problema es una oportunidad.

    En la mayoría de los textos se recomiendan lossiguientes procedimientos para solucionar problemas:

    1. 

    COMPRENDER EL PROBLEMA.• Leer el problema varias veces.• ¿Qué datos me dan en el enunciado del problema?• ¿Cuál es la pregunta que me da el problema?• ¿Qué debo lograr?• ¿Cuál es la incógnita del problema?• Organizar la información.• Agrupar los datos en categorías.

    • Trazar una figura o diagrama.

    2.   HACER EL PLAN.• Escoger y decidir las operaciones a efectuar.• Eliminar los datos inútiles.• Descomponer el problema en otros más pequeños.

    3.   EJECUTAR EL PLAN (Resolver).• Ejecutar en detalle cada operación.• Simplificar antes de calcular.• Realizar un dibujo o diagrama.

    4. 

     ANALIZAR LA SOLUCIÓN (Revisar).• Dar una respuesta completa.• Hallar el mismo resultado de otra manera.• Verificar por apreciación que la respuesta es

    adecuada.

  • 8/18/2019 Algoritmos y Solucion de Problemas2

    3/43

      3

    Ejemplo 1.1

    En un juego, el ganador obtiene una ficha roja; elsegundo, una ficha azul; y el tercero, una amarilla. Alfinal de varias rondas, el puntaje se calcula de lasiguiente manera: Al triple de la cantidad de fichas rojasse adicionan las fichas azules y se descuenta el doble de

    las fichas amarillas. Si Andrés llegó 3 veces en primerlugar, 4 veces de último y 6 veces de intermedio, ¿Qué puntaje obtuvo?

    Solución:

    COMPRENDE• Leer detenidamente el problema.• ¿Cuántos colores de fichas se reparten?• ¿Cuántas fichas rojas, azules y amarillas obtuvo

    Andrés?• ¿Qué pregunta el problema?

    PLANEA• Para hallar el puntaje que obtiene Andrés por sus

    llegadas de primero, calcular el triple de lacantidad de fichas rojas.

    • Para hallar el puntaje por sus llegadas en segundolugar, contar la cantidad de fichas azules.

    • Para hallar el puntaje que pierde por sus llegadasen último lugar, calcular el doble de la cantidad defichas amarillas.

    • Para hallar el puntaje total, calcular la suma de los puntajes por las fichas rojas y azules, restarle los puntos de las fichas amarillas.

    RESUELVE• Por tres fichas rojas: 3 x 3 = 9 puntos.• Por seis fichas azules: 6 = 6 puntos.• Por cuatro fichas amarillas: 4 x 2 = 8 puntos.• Para obtener el puntaje final de Andrés, sumar los

     puntos obtenidos con las fichas rojas y azules (9 +6 = 15 puntos) y de este resultado restar los puntosrepresentados por las fichas amarillas (15 – 8 = 7 puntos).

    REVISA• El puntaje que obtuvo Andrés es 7 puntos.• Verificar las operaciones y comparar los cálculos

    con la solución estimada.

    Ejercicios

    Debes tener en cuenta (y anotar) las actividades querealizas para resolver estos problemas y clasificarlas encada una de las cuatro etapas vistas: comprender, planear, resolver y revisar.

    1.1. Se tienen dos cubetas de 5 y 4 litrosrespectivamente. Las mismas no están graduadascon medidas. Sí se tiene disponible toda el aguanecesaria. ¿Cómo lograría poner dos litros de aguaen una de las dos?

    1.2. En un curso de un colegio, la materia de educación

    física se divide en dos grupos de estudiantes: Natación, con 136 y Fútbol, con 204. Si hay 25estudiantes que estudian Natación y Fútbol, ¿cuántosestudiantes tiene el curso? Para resolver este problema, debes tener conocimientos sobreconjuntos (representación, clasificación eintersección). Es buena idea que construyas unatabla para organizar la información y un diagrama para representar los datos.

    1.3. Orlando compró 15 metros de tela para mandar afabricar una cortina, a $26 el metro. Para colgarlanecesita 28 aros de madera cuyo valor es de $1 cadauno. El riel y demás accesorios cuestan $30. Si lamodista cobra $5 por cada metro de telaconfeccionado y la instalación vale $15 ¿Cuánto esel costo total de la cortina instalada? Debes tenerconocimientos sobre sumas y multiplicaciones.

    1.4. El “peso neto” indicado en la envoltura de un jabónde baño es de 140 gramos y el “peso neto” indicadoen otro jabón es de 80 gramos. El primero vale $0.90y el segundo $0.65. ¿Cuál de los dos es máscostoso? Debes tener conocimientos sobre sistemasde medidas (peso) y divisiones.

    1.4. ETAPAS DEL CICLO DE

    PROGRAMACIÓN DE COMPUTADORES

    Muchos expertos en programación afirman que paraelaborar en un computador procedimientos que realicendeterminadas tareas, se deben seguir cuatro fases oetapas.

    Estas fases concuerdan con los procedimientos parasolucionar problemas, vistos anteriormente:

    1.  Analizar el problema ( Entender el problema)2.  Diseñar un algoritmo (Trazar un plan)3.  Traducir el algoritmo a un lenguaje de programación

    ( Ejecutar el plan)4.  Depurar el programa ( Revisar )

    Como puedes apreciar, hay una semejanza entre losmétodos utilizados para solucionar problemas y lascuatro fases para solucionar problemas con ayuda delcomputador en otras áreas del conocimiento.

  • 8/18/2019 Algoritmos y Solucion de Problemas2

    4/43

      4

    1.5. ALGORITMOS

    En la naturaleza hay muchos procesos que puedesconsiderar como Algoritmos ya que tienen procedimientos y reglas. Incluso, muchas veces nosomos conscientes de ellos.

    Por ejemplo, el proceso digestivo es un concepto dealgoritmo con el que convivimos a diario sin que hagafalta una definición precisa de este proceso. El hecho deque conozcas cómo funciona el sistema digestivo, noimplica que los alimentos que consumas te alimentenmás o menos.

    La familiaridad de lo que sucede día a día nos impidever muchos algoritmos que pasan a nuestro alrededor.

    Procesos, rutinas o biorritmos naturales como lagestación, las estaciones, la circulación sanguínea, los

    ciclos cósmicos, etc., son algoritmos naturales quegeneralmente pasan desapercibidos.

    Ejemplo 1.2

    Un procedimiento que realizamos varias veces al díaconsiste en lavarnos los dientes. Veamos la forma deexpresar este procedimiento como un Algoritmo:

    1.  Tomar la crema dental.2.  Destapar la crema dental.3.  Tomar el cepillo de dientes.4.  Aplicar crema dental al cepillo.

    5.  Tapar la crema dental.6.  Abrir la llave del lavamanos.7.  Remojar el cepillo con la crema dental.8.  Cerrar la llave del lavamanos.9.  Frotar los dientes con el cepillo.10. Abrir la llave del lavamanos.11. Enjuagarse la boca.12. Enjuagar el cepillo.13. Cerrar la llave del lavamanos.14. Secarse la cara y las manos con una toalla.

    Ejemplo 1.3

    Veamos que algo tan común como los pasos paracambiar una bombilla (foco) se pueden expresar enforma de Algoritmo:

    1.  Ubicar una escalera o un banco debajo de la bombilla fundida.

    2.  Tomar una bombilla nueva.3.  Subir por la escalera o al banco.4.  Girar la bombilla fundida hacia la izquierda hasta

    soltarla.

    5.  Enroscar la bombilla nueva hacia la derecha en el plafón hasta apretarla.

    6.  Bajar de la escalera o del banco.7.  Fin.

    Ejercicio

    1.  Discutir en parejas el ejemplo de la bombilla y proponer algunas mejoras. Luego, un voluntariodebe pasar al tablero y escribir un Algoritmo con participación de toda la clase.

    Los Algoritmos permiten describir claramente una seriede instrucciones que debe realizar el computador paralograr un resultado previsible. Vale la pena recordar queun procedimiento de computador consiste de una seriede instrucciones muy precisas y escritas en un lenguajede programación que el computador entienda.

    En resumen, un Algoritmo es una serie ordenada deinstrucciones, pasos o procesos que llevan a la soluciónde un determinado problema. Los hay tan sencillos ycotidianos como seguir la receta del médico, abrir una puerta, lavarse las manos, etc.; hasta los que conducen ala solución de problemas muy complejos.

    El concepto de algoritmo, aunque similar y obviamenterelacionado, no debe confundirse con el concepto de programa. Mientras el primero es la especificación de unconjunto de pasos (operaciones, instrucciones,órdenes,...) orientados a la resolución de un problema, elsegundo es ese conjunto de operaciones especificadas en

    un determinado lenguaje de programación y para uncomputador concreto, susceptible de ser ejecutado (ocompilado o interpretado). Un algoritmo, estrictamentehablando, no puede ejecutarse hasta que se implementa,ya sea en un lenguaje de programación, en un circuitoeléctrico, en un aparato mecánico, usando papel y lápiz,o en algún otro modelo de computación.

    Las características fundamentales de un algoritmo son:

    •  Debe ser preciso  e indicar el orden de realizaciónde cada paso.

    •  Debe estar definido. Si se sigue el algoritmo dos

    veces, se debe obtener el mismo resultado cada vez.•  Debe ser finito. Si se sigue un algoritmo, se debe

    terminar en algún momento.

    Cuando el procesador es una computadora, el algoritmose expresa por medio de un programa. Cada paso estaexpresado por medio de una instrucción.

  • 8/18/2019 Algoritmos y Solucion de Problemas2

    5/43

      5

    Ejemplo 1.4

    Consideremos algo más complejo como el algoritmo deEuclides para hallar el Máximo Común Divisor (MCD)de dos números enteros positivos dados. Obsérvese queno se especifica cuáles son los dos números, pero si seestablece claramente una restricción: deben ser enteros y

     positivos.

    ALGORITMO1.  Paso 1: Inicio.2.  Paso 2: Leer los dos números (“a” y “b”). Avanzar

    al paso 3.3.  Paso 3: Comparar “a” y “b” para determinar cuál es

    mayor. Avanzar al paso 4.4.  Paso 4: Si “a” y “b” son iguales, entonces ambos son

    el resultado esperado y termina el algoritmo. Encaso contrario, avanzar al paso 5.

    5.  Paso 5: Si “a” es menor que “b”, se debenintercambiar sus valores. Avanzar al paso 6; si “a”no es menor que “b”, avanzar al paso 6.

    6.  Paso 6: realizar la operación “a” menos “b”, asignarel valor de “b” a “a” y asignar el valor de la resta a“b”. Ir al paso 3.

    Ejercicio

    A diferencia de los seres humanos que realizanactividades sin detenerse a pensar en los pasos quedeben seguir, los computadores son muy ordenados ynecesitan que quien los programa les especifique cadauno de los pasos que debe realizar y el orden lógico de

    ejecución. Numerar en orden lógico los pasos siguientes (para pescar):

     ___ El pez se traga el anzuelo. ___ Enrollar el sedal. ___ Tirar el sedal al agua. ___ Llevar el pescado a casa. ___ Quitar el Anzuelo de la boca del pescado. ___ Poner carnada al anzuelo. ___ Sacar el pescado del agua.

    1.6. REPRESENTAR ALGORITMOS

    Los Algoritmos se puede expresar de muchas maneras, pero en este curso se tratarán solo dos formas:

    Pseudocódigo y Diagrama de Flujo.

    En Pseudocódigo la secuencia de instrucciones serepresenta por medio de palabras en forma de frases o

     proposiciones, mientras que en un Diagrama de Flujose representa por medio de gráficos.

    Ejemplo 1.5Diseñar un algoritmo (pseudocódigo) para hallar el áreade un triángulo rectángulo cuya Base mide 3 cm, laAltura 4 cm y la Hipotenusa 5 cm.

    Solución:

    ANÁLISIS DEL PROBLEMAFormular el problema: Ya se encuentra claramente planteado.Resultados esperados: El área de un triángulorectángulo.Datos disponibles: Base, Altura, Hipotenusa, tipo detriángulo. La incógnita es el área y todos los valores sonconstantes. El valor de la hipotenusa se puede omitir.Debes preguntarte si tus conocimientos actuales dematemáticas te permiten resolver este problema; de noser así, debes plantear una estrategia para obtener losconocimientos requeridos.Determinar las restricciones: Utilizar las medidasdadas.Procesos necesarios: Guardar en dos variables (BASE yALTURA) los valores de Base y Altura; Guardar en unaconstante (DIV) el divisor 2; aplicar la fórmulaBASE*ALTURA/DIV y guardar el resultado en lavariable AREA; comunicar el resultado (AREA).

    ALGORITMO EN PSEUDOCÓDIGOPaso 1: Inicio

    Paso 2: Asignar el número 2 a la constante "div"Paso 3: Asignar el número 3 a la constante “base”Paso 4: Asignar el número 4 a la constante “altura”Paso 5: Guardar en la variable "área" el resultado de base*altura/divPaso 6: Imprimir el valor de la variable "área"Paso 7: Final

    Ejercicios

    Elabora un algoritmo para cada uno de los siguientes problemas:

    1.5. Escribir un algoritmo para la preparación de unceviche de camaron que conste de 5 a 10 acciones principales.

    1.6. ¿Qué requisitos debe cumplir un algoritmo bienelaborado?

    1.7. Los ingredientes para 4 personas del “pastel demanzana danés” son los indicados en el cuadroadjunto. Realizar un algoritmo que calcule losingredientes para un número variable de personasque se lee por teclado.

  • 8/18/2019 Algoritmos y Solucion de Problemas2

    6/43

      6

     1.8. Desarrollar un algoritmo para cambiar un neumáticodesinflado. Supóngase que se dispone de una ruedade repuesto y de gato.

    1.9. Hallar el perímetro de un cuadrado cuyo lado mide 5cm.

    1.10.  Hallar el perímetro de un círculo cuyo radiomide 2 cm.

    1.11.  Hallar el área de un cuadrado cuyo lado mide 5cm.

    1.12.  Hallar uno de los lados de un rectángulo cuyaárea es de 15 cm2 y uno de sus lados mide 3 cm.

    1.13.  Hallar el área y el perímetro de un círculo cuyo

    radio mide 2 cm.1.14.  Hallar el área de un pentágono regular de 6 cmde lado y con 4 cm de apotema.

    UNIDAD 2:

    2.1. VARIABLES, CONSTANTES EIDENTIFICADORES. 

    En programación, las Variables son espacios de trabajoreservados para guardar datos (valores). El valor de unaVariable puede cambiar en algún paso del Algoritmo o

     permanecer invariable; por lo tanto, el valor quecontiene una variable es el del último dato asignado aesta.

    Ejemplo 2.1

    En el siguiente diagrama de flujo, "AREA" es unejemplo de Variable; en el paso 5 se guardó en ella elresultado de multiplicar "BASE" por "ALTURA" y en el paso 6 se utilizó nuevamente para guardar el valor dedividir su propio contenido ("AREA") entre la Constante"DIV".

     Figura 2.1: Algoritmo para calcular el área decualquier triángulo rectángulo.

    -  Constantes: Tienen un valor fijo que se le da cuandose define la constante y que ya no puede sermodificado durante la ejecución.

    -  Variables: El valor puede cambiar durante laejecución del algoritmo, pero nunca varia su nombrey su tipo.

    2.2. DATOS Y TIPOS DE DATOS

    Las cosas se definen en la computadora mediante datos,los algoritmos que vamos a diseñar van operar sobreesos datos. A nivel de la máquina los datos se

    representan como una serie de bits (dígito 1 ó 0). Lostipos de datos que vamos a manejar a lo largo del cursoson: numéricos y carácter (también llamadosalfanuméricos), existen además, los datos de tipo lógicosque solo pueden tener uno de dos valores: verdadero ofalso.

    Los datos numéricos pueden ser de varias clases:enteros, enteros largos, de doble precisión, de simple precisión, de coma flotante, reales; cuya definicióndepende del lenguaje de programación utilizado.

    Los datos de tipo carácter o alfanuméricos están

    compuestos por el conjunto finito y ordenado decaracteres que la computadora reconoce:

    •  Caracteres alfabéticos : A,B,C,.......Z ; a,b,c,.......z•  Caracteres numéricos : 0,1,2, ......9 (que no son

    números)•  Caracteres especiales : +, /, *, ?,%,$, #, !,

    ,ä,¦,{},~,etc.

  • 8/18/2019 Algoritmos y Solucion de Problemas2

    7/43

      7

    Una cadena o string es una sucesión de caracteres que seencuentran delimitados por comillas (" "). La longitud dela cadena es la cantidad de caracteres que la forma,incluyendo los espacios que son un carácter más. Así:

    •  "Quito, Pichincha" es una cadena de longitud 18.•  "Miércoles 7 de Marzo de 2008" es una cadena de

    longitud 28 (el 7 y el 2001 no son números)•  "123456" es una cadena de longitud 6, no es el

    número 123.456 sobre "123456" no se puederealizar ninguna operación aritmética como sumar,restar, etc., ya que se trata de una cadenaalfanumérica. Ejemplo de este tipo son: cedula,

     pasaporte, teléfonos.

    2.3. VARIABLES

    Cuando representamos datos, numéricos oalfanuméricos, debemos darles un nombre.

    Una variable es un nombre que representa el valor de undato.

    En esencia, una variable es una zona o posición dememoria en la computadora donde se almacenainformación. En un algoritmo y también en un programase pueden crear tantas variables como queramos. Asítenemos:

    •  A = 50: Variable tipo numérica A cuyo valor es 50.•  Ciudad = "Guayaquil": Variable alfanumérica o de

    tipo carácter Ciudad, cuyo valor es "Guayaquil"•  X = C + B: Variable numérica X cuyo valor es la

    suma de los valores de las variables numéricas C yB. Es una variable calculada.

    Ten en cuenta que las operaciones que se pueden realizarcon dos o más variables exigen que éstas sean del mismotipo. No podemos "sumar", por ejemplo una variablealfanumérica a otra numérica y viceversa como porejemplo:

    •  FechaNueva="1 de Junio de 1.971" + 5 Esto nose puede hacer !! 

    Nombres de las variables constantes

    A continuación encontrarás una serie de reglas paraasignar nombres (identificadores) a variables, constantesy procedimientos:

    •  Los nombres pueden estar formados por unacombinación de letras y números (saldoMes, salario,fecha2, baseTriángulo, etc).

    •  El primer carácter de un nombre debe ser una letra.•  La mayoría de los lenguajes de programación

    diferencian las letras mayúsculas de las minúsculas.•  Con solo leer los nombres se puede entender lo que

    contienen. Deben ser muy descriptivos; no utilizarabreviaturas, a menos que se justifique plenamente.

    •  Es conveniente utilizar una sola palabra paranombrar páginas, controles, variables, etc.

    •   No utilizar caracteres reservados (%, +, /, >, etc).•  Se debe tener en cuenta que algunos lenguajes de

     programación no admiten las tildes.•   No utilizar palabras reservadas por los lenguajes de

     programación.•  Los nombres de procedimientos, variables y

    constantes deben empezar con minúscula. Ejemplo,fecha, suma, etc. Si es un nombre compuesto porvarias palabras, cada una de las palabras (conexcepción de la primera) deben empezar conmayúscula. Ejemplo: fechaInicial, baseTriángulo,

    etc.

    El tipo de nombre que se asigne a variables, constantes y procedimientos es muy importante. Cuando dejas detrabajar en un proyecto por varios días, es más fácil parati retomar la actividad si los nombres describen muy bien el contenido de variables, constantes y procedimientos. 

    Ejemplos de nombres válidos de variables

    •  fechaNueva.•  c1.•  totalPersonas.•  contador_Maletas.•  cantidad_de_Alumnos.•   pedido_Almacen.

    Algunos lenguajes de programación exigen ladeclaración de las variables que se van a utilizar en todoel programa; es decir, que al comenzar el programa sedebe decir que nombre tiene, de que tipo es (numérica oalfanumérica) y un valor inicial. Como aquí no estamostratando con ningún lenguaje, la declaración de lasvariables puede omitirse.

    Las variables también pueden inicializarse; darles unvalor inicial. Por defecto, todas las variables para las queno especifiquemos un valor inicial, valen cero si son detipo numérica y nulo (nulo no es cero ni espacio en blanco; es nulo) si son de tipo carácter.

    2.4. OPERACIONES

  • 8/18/2019 Algoritmos y Solucion de Problemas2

    8/43

      8

    Las variables se pueden procesar utilizando operacionesapropiadas para su tipo. Los operadores son de 4 clases:

    •  Relacionales.•  Aritméticos.•  Alfanuméricos.•  Lógicos.

    Los operadores relacionales se utilizan para formarexpresiones que al ser evaluadas producen un valor detipo lógico: verdadero o falso. Ellos son:

    Signo Operador> Mayor que< Menor que= Igual a= Mayor o igual

    que Distinto

    Ejemplos:Ejemplo Resultado25 "AAA"

    Verdadero

    "B" > "AAAA" Verdadero

    "C" < "c" Verdadero"2" < "12" Falso

    Estas comparaciones se realizan utilizando el valorASCII de cada carácter.

    Para tratar los números se utilizan los operadoresaritméticos:

    Signo Significado+ Suma- Resta* Multiplicación/ División^ PotenciaciónMOD Resto de la división entera

    El único operador alfanumérico se utiliza para unir oconcatenar datos de este tipo:

    Signo Significado+ Concatenación

    Ejemplos:

    Expresión Resultado"Pseudo" + "código" "Pseudocódigo""3" + "4567" "34567""Hola " + "que tal ?" "Hola que tal ?"

    Los operadores lógicos combinan sus operandos deacuerdo con las reglas del álgebra de Boole para producir un nuevo valor que se convierte en el valor dela expresión, puede ser verdadero o falso.

    Signo SignificadoOR Suma lógica (O)AND Producto lógico (Y) NOT Negación (NO)

    Ejemplos:

    Expresión ResultadoVerdad AND Falso Falso

     NOT Falso VerdadVerdad OR Falso Verdad

    Por ejemplo, la expresión: (12 + 5) OR (7 + 3) = 10 esverdadera (se cumple una y Verdad OR Falso esVerdad).

    La expresión (12 * 5) AND (3 + 2) = 60 es falsa(verdad AND falso = Falso).

  • 8/18/2019 Algoritmos y Solucion de Problemas2

    9/43

      9

     ¿Cómo se evalúan los operadores? La prioridad de losoperadores es:

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

    2.5. ASIGNAR VALORES A LAS VARIABLES

    La operación de dar valor a una variable se llamaasignación. La asignación vamos a representarla con elsímbolo; una flecha apuntando a la izquierda. Noutilizaremos en signo = ya que el operador de asignaciónvaría de acuerdo con el lenguaje de programación

    utilizado. El formato general de una asignación es:

    nombre de la variable expresión.

    La flecha se sustituye en los lenguajes de programación por = (basic); : = (pascal). Pero para evitarambigüedades en el algoritmo utilizaremos la flecha parala asignación y el símbolo = para indicar igualdad. Heaquí algunos ejemplos:

    •  a 100: significa que a la variable a se le haasignado el valor 100, ahora A vale 100.

    •  suma 5+10: asigna el valor 15 a la variable sumaa través de una asignación aritmética.

    •  x z + v: asigna el valor de la suma de lasvariables z y v a la variable x. El resultado dependede los valores que se asignen a x y a z.

    Toda asignación es destructiva. Esto quiere decir que elvalor que tuviera antes la variable se pierde y sereemplaza por el nuevo valor que asignamos, así cuandose ejecuta esta secuencia:

    •  edad 25.•  edad 100.

    •  edad 77.

    El valor final que toma edad será 77 pues los valores 25y 100 han sido destruidos.

    2.6. 

    TIPOS DE VARIABLES MÁS UTILIZADOS

    Contador

    Un contador es una variable destinada a contener valores

    que se van incrementando o decrementando cada vezque se ejecuta la acción que lo contiene. El incremento odecremento es llamado paso de contador y es siempreconstante.

    Por ejemplo; el marcador de un partido de fútbol, cadavez que un equipo anota un gol, aumenta su marcador en

    una unidad.

    En las carrera de automóviles, cada vez que un vehículo pasa por la línea de meta, se incrementa en una unidad elnúmero de vueltas dadas al circuito, o bien sedecrementa en una unidad el número de vueltas quequedan por realizar.

    Aunque el incremento es siempre constante, el paso decontador no necesariamente puede ser la unidad como enlos ejemplos que se han dado más arriba; también puedeincrementarse o decrementarse a de dos, tres, cuatro,....n; es decir, puede ser cualquier número que conserva elmismo valor durante todo el programa.

    La sintaxis de una variable contador es:

    variable  variable + constante (al incrementar)variable  variable - constante (al decrementar)

    Ejemplos:

    •  gol_local  gol_local + 1.•  vueltas  vueltas + 1.•  faltan  faltan – 1.•

      de_cinco de_cinco + 5.•  c  c + 1.•  x  x – 3.

    Observación: Cuando una variable aparece a amboslados del símbolo de asignación, conviene inicializarlasa cero.

    Acumulador o Sumador

    Es una variable que nos permite guardar un valor que seincrementa o decrementa en forma NO constante duranteel proceso. En un momento determinado tendrá un valor

    y al siguiente tendrá otro valor igual o distinto. Porejemplo; cuando realizamos un depósito en el banco, lacantidad depositada cada vez no es siempre la misma;unas veces será una cantidad y otras veces distinta. Lomismo ocurre cuando realizamos algún retiro, perodecrementando la cantidad total.

    La sintaxis es:

  • 8/18/2019 Algoritmos y Solucion de Problemas2

    10/43

      10

     acumulador acumulador + variable (al incrementar)acumulador acumulador - variable (al decrementar)

    acumulador es la variable en la que se almacena elresultado.

    variable contiene el número que estamos incrementandoo decrementando

    Ejemplos:

    •  saldo saldo + entrega.•  saldo  saldo – retiro.•  suma  suma + numero.•  sumaEdades sumaEdades + edad.

    Halle el valor de A:A (3*2^5 mod 1 + 8*(3-5) < (2+8-1 mod 1)

    A

     (3*32 mod 1 + (-16)) < 10A -16 < 10A Verdadero

    Ejemplo

    Escribir un algoritmo que intercambie el valor de dosvariables.

    Si se tienen, por ejemplo a = 5 y b = 10, se quiereintercambiar el valor de las variables, así:

    a = 10; b = 5.

     No podemos asignar directamente el valor de una a laotra porque uno de los valores se destruiría; de modoque esto no se puede hacer:

    a  b (el valor de a se pierde y quedaría a = 10 ; b =10) .

    La solución consiste en asignar el valor de una de lasvariables a otra variable auxiliar.

    inicioleer A,B

    Auxiliar  AA  BB  Auxiliarimprimir A,Bfin

    Ejercicios

    2.1.  ¿Cuáles de los siguientes nombres de Variables NO son validos y por qué?

    a) números. b) Numero X.c) 7d) A(45+e) VIIf) 7mesas.g) sieteMesas

    2.2.  Halle el valor de A:A A o (3+5*8) < 3 y ((-6/3 div 4)*2 < 2)

    2.3.  Halle el valor de B:B 3 mod 2 div 3

    2.4.  Halle el valor de C:C (-B*2 8*3 mod 4) y (‘A’>’B’)

    2.5.  Dadas las siguientes declaraciones de variablessiguientes y los valores iniciales indicados:

    VARZ color, lima, marron, amarillo, rojo, naranjaR negro, blanco, verde, azul, morado, crayon

    Evaluar el valor final de las variables después deejecutar de forma independiente las sentencias deasignación siguientes. Nota: suponer que lasincompatibilidades de tipos se resuelven implícitamentee indicar dónde se producen.a) blanco = color * 2.5 / morado

     b) verde = color / moradoc) naranja = color*(-12) DIV rojod) azul = (color + marron) / (crayon + 0.3)e) lima = rojo DIV color + rojo MOD color - 356f) morado = marron / rojo * color

    2.6.  Indicar el tipo de cada una de las siguientesconstantes:a) 534 b) 534.0 c) -534 d) ’534’

    e) -45.3x104

    f) 17x107

    g) -45.6x10-3

    h) ’fin delejercicio’

    2.7.  Indicar el resultado y el tipo de las siguientes

    expresiones:a) 5^2+3 b) 6+19-0.3 c) 3.0^3+1d) 1/4+2 e) 29.0/2+4 f) 3/6.0 - 7

    2.8.  Calcular el valor de cada una de las siguientesexpresiones enteras:

    a) 5*6-3*2 b) -2^3 c) (26+3*4)/4d) 3+2*(18-4^2) e) 2^2*3 f) 8-30/6

  • 8/18/2019 Algoritmos y Solucion de Problemas2

    11/43

      11

    2.9.  Escribir las siguientes expresiones matemáticas enforma de expresiones de computación:

    2.10. Evaluar las siguientes expresiones booleanasescribiendo el árbol de precedencia. Los valoresde las variables son A=TRUE, B=TRUE,C=FALSE, D=FALSE.

    a) C OR NOT A AND B

     b) NOT (A OR C) OR B AND NOT C

    c) NOT(NOT(NOT(A AND C OR D)))

    d) NOT (5 0) y (I ≤ 10)d) (I > 25) o ((I < 50) y (J < 50))

    e) (I < 4) o (J > 5)f) no (I > 6)

    UNIDAD 3:

    3.1. DIAGRAMAS DE FLUJO PARA

    REPRESENTAR ALGORITMOS

    Diagrama de Flujo

    Conjunto de símbolos estándar en los cuales seencuentran escritos los pasos del algoritmo, dichossímbolos se encuentran unidos por medio de flechas,denominadas líneas de flujo, que indican la secuencia enque se deben de ejecutar.

    Los siguientes son los principales símbolos para elaborarDiagramas de Flujo:

  • 8/18/2019 Algoritmos y Solucion de Problemas2

    12/43

      12

     Reglas básicas para elaborar Diagramas de Flujo:

    •  Poner un encabezado que incluya un título queidentifique la función del algoritmo; el nombre delautor; y la fecha de elaboración.

    •  Sólo se pueden utilizar los símbolos anteriores.•  Los diagramas se deben dibujar de arriba hacía abajo

    y de izquierda a derecha.•  La ejecución del programa siempre empieza en la

     parte superior del diagrama.•  Los símbolos de “Inicio” y “Final” deben aparecer

    solo una vez.•  La dirección del flujo se debe representar por medio

    de flechas (líneas de flujo).•  Todas las líneas de flujo deben llegar a un símbolo o

    a otra línea.•  Una línea de flujo recta nunca debe cruzar a otra.• 

    Cuando dos líneas de flujo se crucen, una de ellasdebe incluir una línea arqueada en el sitio dondecruza a la otra.

    •  Las bifurcaciones y ciclos se deben dibujar procurando una cierta simetría.

    •  Cada rombo de decisión debe tener al menos doslíneas de salida (una para SI y otra para NO).

    •  Las acciones y decisiones se deben describirutilizando el menor numero de palabras posible; sinque resulten confusas.

    •  Todo el Diagrama debe ser claro, ordenado y fácilde recorrer.

    Actividad 1.61. Hallar el perímetro de un cuadrado cuyo lado mide 5

    cm.2. Hallar el perímetro de un círculo cuyo radio mide 2

    cm.3. Hallar el área de un cuadrado cuyo lado mide 5 cm.4. Hallar uno de los lados de un rectángulo cuya área

    es de 15 cm2 y uno de sus lados mide 3 cm.5. Hallar el área y el perímetro de un círculo cuyo radio

    mide 2 cm.6. Hallar el área de un pentágono regular de 6 cm de

    lado y con 4 cm de apotema.

    3.2. PSEUDOCÓDIGO PARA REPRESENTARALGORITMOS

    Pseudocódigo: lenguaje de especificación de algoritmoque utiliza para representar las acciones palabrasreservadas en ingles, las cuales son similares a las de loslenguajes de programación, tales como start, end, if-then-else, while-wend, repeat-until, etc. (o suequivalente en español)

    Este nació como un lenguaje similar al inglés y era unmedio de representar básicamente las estructuras decontrol de programación estructurada.

    El pseudocódigo no puede ser ejecutado por una

    computadora. Una ventaja del pseudocódigo es que puede ser traducido fácilmente a lenguajes de programación.

    La escritura del pseudocódigo exige normalmente laindentación (sangría en el margen izquierdo) o en sudefecto, numeración jerárquica.

    Ejercicios:Realice los ejercicios, utilizando Diagramas de Flujoy Pseudocdigo.

    3.1. Escribir un algoritmo que calcule y saque por

     pantalla, las horas, minutos y segundos de un tiempoexpresado sólo en segundos introducido por teclado.

    3.2. Escribe un algoritmo que calcule la altura desde laque cae un objeto que tarda t segundos en llegar alsuelo. El tiempo lo introduce el usuario por teclado.Use la fórmula:

  • 8/18/2019 Algoritmos y Solucion de Problemas2

    13/43

      13

    3.3. Escribe un algoritmo que lea por teclado unatemperatura en grados Fahrenheit y la convierta agrados centígrados según la fórmula:

    3.4. Realizar un algoritmo para intercambiar los valores

    de dos variables.3.5. Escribir un algoritmo para leer un valor entero,

    doblarlo, multiplicarlo por 25 y visualizar elresultado.

    3.6. Diseñar un algoritmo que lea los dos catetos de untriángulo rectángulo y calcule la hipotenusa.

    3.7. Diseñar un algoritmo que lea cuatro calificacionesde un alumno y calcule la calificación promedio.

    UNIDAD 4:

    4.1. PROCESOS

    Se llama procesos a todas las instrucciones contenidasen un algoritmo para:

    •  Declarar variables y constantes.•  Asignar valores iniciales a variables y constantes.•  Leer datos que suministra el usuario por medio del

    teclado o del ratón (mouse).•  Realizar operaciones matemáticas (aplicar

    fórmulas).•  Reportar o mostrar contenidos de variables y

    constantes.• 

    Mostrar en pantalla resultados de procedimientosactivados por el programa.

    4.2.ESTRUCTURA SECUENCIAL

    Un Algoritmo está compuesto por instrucciones dediferentes tipos, organizadas secuencialmente, en formade estructuras de control. De estas estructuras de control,las más comunes son las siguientes:

    •  Secuencial.•  Iterativa (repetición).•  Condicional (decisión, selección).

    Una estructura de control se define como un esquemaque permite representar ideas de manera simplificada yque bajo condiciones normales, es constante.

     Figura 4.1: Modelo de estructura secuencial.

    La estructura de control secuencial es la más sencilla.

    También se la conoce como estructura lineal. Secompone de instrucciones que deben ejecutarse en formaconsecutiva, una tras otra, siguiendo una línea de flujo.

    Solamente los problemas muy sencillos puedenresolverse haciendo uso únicamente de esta estructura.

    Una estructura de control secuencial puede contenercualquiera de las siguientes instrucciones:

    •  Declaración variables•  Asignación de valores•  Entrada de datos•  Procesamiento de datos (operaciones)•  Reporte de resultados

    Ejercicios

    4.1. Diseñar un algoritmo que lea la cantidad de lluvia en pulgadas e imprima su equivalente en milímetrossabiendo que 25.5 mm = 1 pulgada.

    4.2. Diseñar un algoritmo que lea el nombre y el apellidode una persona en ese orden e imprima el apellidoseguido del nombre.

    4.3. El costo de un automóvil para el comprador es lasuma total del costo del vehículo, del porcentaje deganancia del vendedor (12%) y de los impuestosestatales y locales aplicables (6%). Diseñar unalgoritmo que lea el costo del automóvil e imprimael costo para el comprador.

    4.4. La calificación final de un estudiante viene dada portres aspectos del trabajo anual: nota de laboratorioque cuenta un 30% del total, nota de examen parcialque cuenta un 20% del total y nota de examen finalque cuenta el 50% restante. Diseñar un algoritmo

  • 8/18/2019 Algoritmos y Solucion de Problemas2

    14/43

      14

    que lea el nombre del estudiante, la nota delaboratorio, la nota del examen parcial y la nota delexamen final e imprima el tanto por cientocorrespondiente a cada una de las notas así como lacalificación final.

    4.5. Realizar un algoritmo para calcular la longitud deuna circunferencia y el área del círculo con un radio

    leído desde teclado. El algoritmo debe detectarentradas no válidas.

    4.6. Leer dos números y mostrar el producto de ellos.4.7. Leer las longitudes de un rectángulo y calcular la

    superficie y el perímetro.4.8. Convierta de doláres a euros.4.9. Un negocio de deportes hace un 25 % de descuento

    en pelotas de fútbol y de béisbol. Se requiere escribirun programa que le permita a un empleado ingresarlos precios originales de las pelotas. El programadeberá usar esta entrada de datos para calcular el

     precio rebajado. La salida del programa deberámostrar, en líneas separadas, el precio original y el

     precio con descuento.4.10.  Efectuar un programa que lea los valores de 3

    resistencias electrónicas (en Ohmios, W) conectadasen paralelo y muestre en pantalla el valor global delas 3. El valor global es calculado por la siguienteecuación: 1 / (1/R1 + 1/R2 + 1/R3).

    4.11.  ¿Dada la duracion en minutos de una llamadacalcular el costo,considerando?

    -Hasta tres minutos el costo es 0.50-Por encima de tres minutos es 0.50 más0.1*cada minuto adicional a los tres primeros

    4.12. 

    Realizar un algoritmo que permita ingresar unafrase y la descomponga esta en sus palabrasimprimiéndolas al revés. Ejem.

    CIUDAD CHICLAYODADUIC OYALCIHC 

    4.3.ESTRUCTURA CONDICIONAL

    La estructura condicional se utiliza para indicarle alcomputador que debe evaluar una condición y, a partirdel resultado, ejecutar el bloque de instruccionescorrespondiente. La forma más común está compuesta por una proposición que se evalúa y dos bloques de

    instrucciones que se ejecutan, uno cuando la condiciónes verdadera (selección simple y doble) y otro cuandoésta es falsa (únicamente en la selección doble).

    Por su parte, un bloque de instrucciones puede conteneruna o varias instrucciones que se ejecutan una detrás deotra. La estructura condicional tiene dos variantes:

    •  Selección simple.

    •  Selección Múltiple.

    Las estructuras condicionales simple y múltiple evalúanuna proposición (condición) que devuelve comoresultado únicamente dos valores posibles y excluyentes:verdadero o falso.

    Selección simple

    La estructura condicional de selección simple ejecuta un bloque de instrucciones cuando la proposición(condición) es verdadera; si esta es falsa, no hace nada.

    El formato de la estructura de selección es:

     si  entonces instrucción 1

    instrucción 2

    ...................instrucción n si-no 

    instrucción ainstrucción b...................instrucción z

     fin-si 

    Por ejemplo, Cuando realizamos una llamada telefónica:

    Si {señal de ocupado} entonces Colgar el teléfono

     si - no Iniciar la conversación

     fin – si

    En este caso, la condición es {señal de ocupado}, que puede ser verdadera o falsa. Si es verdadera, entoncesdebemos colgar el teléfono y si no, podemos realizar laconversación.

  • 8/18/2019 Algoritmos y Solucion de Problemas2

    15/43

      15

    Ejemplo:

    Si a = 5 entoncesimprimir"A es 5"

    si - noimprimir "A no es igual a 5"

    fin - si 

    También puede obviarse el si - no cuando no nos

    interesa ejecutar un bloque de instrucciones en caso deque la condición no se cumpla.

    Si {condición} entoncesinstrucción 1

    instrucción 2.........instrucción n

     fin – si

     Por ejemplo:

    Si {hoy es Miércoles} entonces

    Comprar entradas para el cine

     fin - si

    Ejemplo:

    Introducir un número por teclado y determinar si es positivo o negativo.

    Para saber si un número es positivo o negativo, debemossaber si es menor o mayor a cero. Si es mayor, el

    número es positivo y si es menor resulta negativo.Utilizamos Si... para evaluar como es el número conrespecto a cero y mostramos los mensajescorrespondientes en cada caso. Así:

    inicioleer numero

    Si numero < 0 entonces

    imprimir "El número es negativo" si-no

    imprimir "El número es positivo" fin-si

     fin

    Ejemplo. Dados dos números, establecer cuál es mayor.

    Comenzamos leyendo ambos números, que en elejemplo se llamarán NumeroA y NumeroB. Luegodebemos comparar como es uno contra el otro (puede ser NumeroA contra NumeroB o bien comparar NumeroBcontra NumeroA):

    inicio

    leer numeroA, numeroBSi numeroA < numeroB entonces

    imprimir "El mayor es:", numeroB

     si-noimprimir "El mayor es:", numeroA

     fin-si fin

    En este ejemplo, ¿qué pasaría si los números fueraniguales? Hagamos la prueba.

    Luego de leer los números, por ejemplo: numeroA=100y numeroB=100 se ejecutan las instrucciones:

    Si numeroA < numeroB entoncesimprimir "El mayor es:", numeroB

    El resultado de la condición

    Por lo tanto, al ser falsa la condición, se ejecuta lainstrucción imprimir "El mayor es:", numeroA.

    Por tanto, el algoritmo ofrecerá una solución incorrectacuando los números son iguales. Para solucionar esto,tenemos que prever el caso de que los números seaniguales, utilizando condiciones anidadas.

    inicioleer numeroA, numeroB

    Si numeroA < numeroB entoncesimprimir "El mayor es:", numeroB

     si-no

    Si numeroA > numeroB entoncesimprimir "El mayor es:", numeroA

     si-noimprimir "Los números son iguales"

     fin-si

     fin-si fin 

    Esta solución contiene dos estructuras de repetición, unadentro de la otra (anidada). En caso de ser necesario podemos anidar tantas estructuras de selección como seanecesario. El algoritmo averigua si A es menor a B, si nolo es, tenemos otras dos posibilidades: que sea menor o

    igual, esto es lo que determina la estructura anidada.

    Otro ejemplo de estructuras de repetición anidadas,consiste en dado un número del 1 al 7, establecer al díade la semana.

    inicio leer numero Si numero=1 entonces 

    imprimir "Domingo"  

  • 8/18/2019 Algoritmos y Solucion de Problemas2

    16/43

      16

      si-no Si numero=2 entonces 

    imprimir="Lunes"   si-no 

    Si numero=3 imprimir "Martes"  

     si-no Si numero=4 entonces 

    imprimir "Miercoles"   si-no 

    Si Numero=5 entonces imprimir "Jueves"  

     si-no Si numero=6 entonces 

    imprimir "Viernes"   si-no 

    Si numero=7 entonces imprimir "Sábado"  

     si-no imprimir "El número

    debe estar entre 1 y 7"   fin-si 

     fin-si  fin-si 

     fin-si  fin-si 

     fin-si  fin-si 

     fin 

     Notarás que tenemos varios  Si...entonces anidados, yaque si el número ingreso no es 1, tenemos que preguntar

    si es 2 ó 3 ó 4...etc. El último Si...entonces  es paraverificar que el número ingresado no es 1, 2, 3, 4, 5, 6 ó7; sino cualquier otro que no nos interesa.

    Repasa los algoritmos anteriores.

    Resulta bastante tedioso anidar un montón de Si ...entonces, como en el ejemplo del día de la semana.Cuando queramos o necesitemos hacer numerosascomparaciones podemos usar otra estructura deselección llamada Según Sea.  El formato de estructurade selección Según sea es:

    Según sea Caso = Caso =

    instrucción o instruccionesOtro caso 

    instrucción o instrucciones fin-según 

    Así, utilizando esta estructura, el problema del día de lasemana será así:

    inicio Leer numeroSegún sea numero

    Caso = 1imprimir "Domingo"  

    Caso = 2imprimir="Lunes"  

    Caso = 3 imprimir="Martes"  

    Caso = 4 imprimir "Miercoles"  

    Caso = 5 imprimir "Jueves"  

    Caso = 6  imprimir "Viernes"  

    Caso = 7  imprimir "Sábado"  

    Otro Caso

    imprimir "El número debe estar entre 1 y 7"   fin-según 

    fin

    Lo cual resulta menos engorroso que varios Si...entonces anidados. Es posible anidar Si... entonces dentro de estructuras Según sea y viceversa.

    Observa que la instrucción Otro Caso  ejecuta una ovarias instrucciones cuando no se cumple ningún caso delos contemplados más arriba. Otro Caso  debe estarsiempre al final (cuando sea necesario, si no o es se puede omitir Otro Caso)

    El uso de una u otra estructura depende de cada persona, pero en general cuando las condiciones a evaluar sonmuchas, se utiliza Según Sea.

    La estructura según sea admite varias condiciones porejemplo:

    Según sea MES  caso= 1,3,5,7,8,10,12 

    TDias = 31 caso = 2,4,6,11 

    TDias =30 caso = 2 

    TDias=28  fin-según 

    Este pequeño ejemplo establece el número de días de unmes determinado almacenado en la variable MES (paraaños no bisiestos). En lugar de escribir varios Caso= 1,Caso =2, etc, se puede especificar acción o acciones (eneste caso la asignación de días a TDias) cuando lavariable tome uno de los valores separados por comas.

  • 8/18/2019 Algoritmos y Solucion de Problemas2

    17/43

      17

    Es decir si TDias  es 1 ó 3 ó 5 ó 7 ó 8 ó 10 ó 12; seejecuta TDias=31.

    Ejercicios

    4.13.  Los n trabajadores de la empresa “PagaPoco"lograron obtener un aumento de sueldo en el último

    mes. Este aumento de sueldo se determinó portramos, de acuerdo a la siguiente tabla:

    Construya un algoritmo que reciba como entrada elsueldo actual de cada uno de los trabajadores y calcule elnuevo sueldo. Además, el algoritmo debería indicarcuánto más gasta la empresa por concepto de sueldos,después del aumento.4.14.  Escribir un algoritmo para calcular las

    soluciones de una ecuación cuadrática de la forma

    4.15.  Un sistema de ecuaciones lineales de la forma:

    Puede resolverse utilizando las siguientes fórmulas:

    Diseñar un algoritmo para leer los coeficientes a, b, c, d,e, f, y calcule los valores de x e y. ¿Existen algunoscasos en los que este algoritmo no funcione?4.16.  Diseñar un algoritmo que lea tres puntuaciones

    de un alumno y calcule la media. Si la media delalumno no supera los 60 puntos el alumno estásuspenso y el algoritmo deberá imprimir un mensajeindicándolo. En caso de que el alumno tenga una

    media superior o igual a 60 puntos pero inferior a70, el alumno estará ‘aprobado pero dudoso’. Si elalumno supera los 70 puntos el mensaje a imprimirserá ‘Aprobado’.

    4.17.  Escribir un algoritmo que lea dos números ydetermine cuál de ellos es el mayor.

    4.18.  Escribir un algoritmo que lea tres números ydetermine cuál de ellos es el mayor.

    4.19.  Dados por el teclado la base y altura de untriángulo, hacer un algoritmo para calcular el área

    del triángulo. Tener en cuenta los casos no válidos(la base o la altura negativas).

    4.20.  Introducir un número por teclado y determinar sies positivo o negativo.-Para saber si un número es positivo o negativo,debemos saber si es menor o mayor a cero. Si esmayor, el número es positivo y si es menor resulta

    negativo.4.21.  Dado un número del 1 al 7, establecer al día de

    la semana.4.22.  Leer un número y mostrar por la salida estándar

    si dicho numero es o no es par.4.23.  Definir una función que dados tres números X,

    Y y Z, devuelva una lista con los números ordenados por orden creciente.

    4.24.  Diseñar una función para leer un año ydeterminar si es bisiesto. NOTA: un año es bisiestosi es múltiplo de 4. Los múltiplos de 100 no son bisiestos, salvo si son también múltiplos de 400.

    4.4.ESTRUCTURA ITERATIVA(REPETICIÓN)

    La estructura iterativa o de repetición permite ejecutaruna o varias instrucciones, un número determinado deveces o, indefinidamente, mientras se cumpla unacondición. Esta estructura ayuda a simplificar losalgoritmos, ahorrando tiempo valioso a quien resuelve problemas con ayuda del computador.

     Figura 2.2: Modelo de estructura iterativa.

    Historia Curiosa

    Un día, en la India, un joven bracmán llamado Lahur

    Sessa pidió una audiencia con el Rey para obsequiarle

  • 8/18/2019 Algoritmos y Solucion de Problemas2

    18/43

      18

    el juego que había inventado. La curiosidad del rey lollevó a conceder la cita que pedía el joven Sessa. El rey

    quedó maravillado y aprendió rápidamente las reglas de

    aquel juego que consistía de un tablero cuadradodividido en sesenta y cuatro cuadritos iguales (32

    blancos y 32 negros); sobre este tablero se ubicaban doscolecciones de piezas, que se distinguían unas de otras

     por el color, blancas y negras, repitiendo simétricamente los motivos y subordinadas a reglas que

     permitían de varios modos su movimiento.

     Algún tiempo después, el rey mandó llamar a su

     presencia al joven bracmán y dirigiéndose a él le dijo:- Quiero recompensarte, amigo mío, por este

    maravilloso obsequio, que de tanto me sirvió paraaliviar viejas angustias. Pide, pues, lo que desees, paraque yo pueda demostrar, una vez más, como soy de

    agradecido con aquellos que son dignos de una

    recompensa. Ante tal ofrecimiento, el joven respondió:

    - Voy, pues, a aceptar por el juego que inventé, unarecompensa que corresponda a vuestra generosidad; no

    deseo, sin embargo, ni oro, ni tierras, ni palacios. Deseo

    mi recompensa en granos de trigo.

    -¿Granos de trigo? –Exclamó el rey, sin ocultar la sorpresa que le causara semejante propuesta-. ¿Cómo podré pagarte con tan insignificante moneda?

    -Nada más simple -aclaró Sessa-. Dadme un grano detrigo por la primera casilla del tablero, dos por la

     segunda, cuatro por la tercera, ocho por la cuarta, y así sucesivamente hasta la sexagésima cuarta y última

    casilla del tablero.

     No sólo el rey, sino también los visires y venerablesbracmanes, se rieron estrepitosamente al oír la extraña

     solicitud del joven. Insensato -exclamó el rey-. ¿Dónde aprendiste tan

     grande indiferencia por la fortuna? La recompensa que

    me pides es ridícula. Mando llamar el rey a los algebristas más hábiles de la

    Corte y les ordenó calculasen la porción de trigo que

    Sessa pretendía. Los sabios matemáticos, al cabo de algunas horas de

    realizar cálculos dispendiosos, volvieron al salón parahacer conocer al rey el resultado completo de sus

    cálculos.

     Preguntándoles el rey, interrumpiendo el juego:-¿Con cuantos granos de trigo podré cumplir, finalmente, con la promesa hecha al joven Sessa?

    -Rey magnánimo -declaró el más sabio de los

     geómetras-: calculamos el número de granos de trigoque constituirá la recompensa elegida por Sessa,

     y obtuvimos un número cuya magnitud es inconcebible

     para la imaginación humana (el número en cuestióncontiene 20 guarismos y es el siguiente:

    18.446.744.073.709. 551. 615. Se obtiene restando 1 ala potencia 64 de 2).

    -La cantidad de trigo que debe entregarse a Lahur Sessa

    -continúo el geómetra- equivale a una montaña queteniendo por base la ciudad de Taligana, fuese 100

    veces más alta que el Himalaya. La India entera, sembrados todos sus campos, y destruidas todas sus

    ciudades, no produciría en un siglo la cantidad de trigoque, por vuestra promesa, debe entregarse al joven

    Sessa.¿Cómo describir aquí la sorpresa y el asombro que esas palabras causaron al Rey Ladava y a sus dignos visires?

     El soberano hindú se veía, por primera vez, en laimposibilidad de cumplir una promesa.

     Lahur Sessa -refiere la leyenda de la época-, como buen súbdito, no quiso dejar afligido a su soberano. Despuésde declarar públicamente que se desdecía del pedido

    que formulara, se dirigió respetuosamente al monarca y

    le dijo: los hombres más precavidos, eluden no sólo laapariencia engañosa de los números, sino también la

     falsa modestia de los ambiciosos. El rey, olvidando la montaña de trigo que prometiera al

     joven bracmán, lo nombró su primer ministro.

    (Tomado del libro “El hombre que calculaba” escrito

     por Malba Tahan)

    Ejemplo

    Elabora un algoritmo para ayudar a los hábilesalgebristas de la corte del Rey Ladava con el cálculo delnúmero de granos de trigo que deben entregar a LahurSessa como pago por haber inventado el juego de

    ajedrez.

  • 8/18/2019 Algoritmos y Solucion de Problemas2

    19/43

      19

     La estructura repetitiva se utiliza cuando se quiere queun conjunto de instrucciones se ejecuten un ciertonúmero finito de veces. Llamamos bucle o ciclo a todo proceso que se repite un cierto número de veces dentrode un algoritmo o un programa.

    Existen dos tipos de estructuras repetitivas; la primera esaquella en donde se tiene perfectamente establecido elnúmero de veces que un grupo de acciones se van aejecutar (20, 5, 2 veces), y la segunda en la que elnúmero de repeticiones es desconocido y se hará hastaque se cumpla o no cierta condición.

    Un ejemplo de la primera sería imprimir los datos de losalumnos de una clase (se conoce cuantos alumnos hay) yun ejemplo de la segunda puede ser el mostrar unmensaje de error cada vez que el usuario pulse unadeterminada tecla (no sabemos cuantas veces pulsará esatecla).

    Las acciones que forman parte del cuerpo del bucle son

    ejecutadas de forma repetitiva mediante la ocurrencia ono de una condición.

    Estructura Para (Desde - Hasta)

    Cuando conocemos de antemano el número de veces enque se desea ejecutar una acción o grupo de acciones, seutiliza la estructura repetitiva Desde o Para.Esta estructura ejecuta las acciones del cuerpo del bucleun número especificado de veces, y de modo automáticocontrola el número de iteraciones o pasos.

    La sintaxis es:

    desde variable= vi hasta vf [incremento]acción o acciones

     fin-desde 

    Donde:

    variable: variable índicevi: valor inicial de la variable índicevf: valor final de la variable índice[incremento]: el número que se incrementa (odecrementa) a la variable índice en cada iteración del bucle.

    Ejemplo:Imprimir todos los números del 1 al 100.

     Inicio

    desde i = 1 hasta 100

    imprimir i fin-desde

     fin

    I es la variable índice con un valor inicial de 1, seincrementa uno en cada paso hasta 100.

    Podemos notar que la estructura desde comienza con unvalor inicial de la variable índice y las acciones seejecutan hasta que el valor inicial sea MAYOR que elque el Valor final.

    La variable índice se incremente en uno (en el ejemplo)

    y si este nuevo valor del índice no es mayor que el valorfinal, se ejecuta de nuevo la acción imprimir.

    En este caso se visualizará los números 1, 2, 3, 4, 5, 6, 7,8, 9, 10 ....97, 98, 99, 100.

    Otro Ejemplo:

    Imprimir todos los números pares desde 2 hasta el 300

  • 8/18/2019 Algoritmos y Solucion de Problemas2

    20/43

      20

     desde i= 2 hasta 300 incremento 2

    imprimir i

     fin-desde

    Donde:

    La variable índice comienza en 2, se imprime 2 y en elsiguiente paso se incrementa (suma) 2 a la variableíndice que pasa a valer 4; se imprime el 4 y como 4 esmenor que 300 (valor final) , se pasa a una nuevaiteración incrementando nuevamente en 2 el índice, queahora vale 6; y así sucesivamente...

    Aquí se visualizan: 2, 4, 6, 8, 10, 12, 14, 16, 18, ..... 296,298, 300

    Si deseamos mostrar los impares el algoritmo es elsiguiente:

    desde i= 1 hasta 300 incremento 2imprimir i

     fin-desde

    El ciclo termina mostrando 299 puesto que en elsiguiente paso, La variable i valdría 301 y es mayor allímite establecido de 300. i pasa a valer realmente 301en el último paso, solo que la instrucción de imprimir nose ejecuta porque el límite de 300 se supera.

    Si diéramos la instrucción de imprimir el valor de i,inmediatamente después del fin-desde, veíamos 301.

    Ejemplo 3: Imprimir los valores comprendidos entre el460 y 500 en orden inverso.

    Debemos mostrar: 500, 499, 498, 497,..... 462, 461, 460.En este caso haremos un decremento a la variable índice(no un incremento como en los ejemplos anteriores).

    Tenemos que comenzar nuestra variable índice en 500 ydecrementar una unidad hasta alcanzar el 460, así:

    desde i= 500 hasta 460 incremento -1

    imprimir i

     fin-desde 

    Como salida tenemos, entonces: 500, 499, 498, 497,496, 495, 494,.... 464, 463, 462, 461, 460.

    El segundo tipo de estructura repetitiva se diferencia dela primera en que no se conoce el número derepeticiones o iteraciones en que se va a ejecutar unainstrucción o un bloque de instrucciones.

    Estas estructuras son básicamente dos: Estructuramientras....fin-mientras y la estructura repetir.... hasta.Estas dos se diferencian en que la verificación de lacondición para repetir el ciclo se hace al inicio conmientras y al final con repetir.

    También existen estructuras repetitivas que soncombinaciones de estas dos que mencionamos, perono las estudiaremos.

    Ejercicios4.25.  Construya un algoritmo que reciba como entrada

    un cierto valor n, y genere como salida n veces la palabra “hola".

    4.26.  Construya un algoritmo que reciba como entradaun cierto valor n y genere como salida el valor de laserie: 1 + 2 + 3 + 4 + : : : + n.

    4.27.  Escribir un algoritmo que calcule la desviaciónestándar de cinco números.

    4.28.  Realizar un algoritmo para calcular los valoresque toma la siguiente función

    4.29.  Imprimir todos los números del 1 al 100.4.30.  Imprimir los valores comprendidos entre el 460

    y 500 en orden inverso.4.31.  Imprimir todos los números pares desde 2 hasta

    el 3004.32.  Dada una secuencia de n números mostrar su

     producto por pantalla.4.33.  Tabla de multiplicar del 5.4.34.  Modificar el programa anterior para aplicar la

    fórmula a cualquier cantidad de resistencias.Primeramente, el programa pedirá el número deresistencias a conectar en paralelo. Después pediráuno a uno los valores de todas las resistencias. Porúltimo, escribirá el resultado global.

    Estructura MientrasComo su nombre lo indica, esta estructura repite elcuerpo del bucle mientras se cumpla una determinada

    condición. Su sintaxis es:

    mientras {condición}

    acción 1acción 2

    acción 3.....

    acción n fin mientras

    instrucción X

  • 8/18/2019 Algoritmos y Solucion de Problemas2

    21/43

      21

     Lo primero que el computador hace es examinar lacondición, lo que puede dar como resultado dos posibilidades:

    - La condición se cumple: Se ejecutan acción 1, acción2, acción 3, ..., acción n.

    Las estará repitiendo hasta que la condición no secumpla, entonces se sale del ciclo y se siguen ejecutandola o las instrucciones que vienen a continuación y estánfuera del bucle; instrucción X.

    - La condición no se cumple: No entrará en el ciclo. Seejecutan las instrucciones que vienen después del bucle,instrucción X, por ejemplo.

    De esto se deduce que el cuerpo del bucle de unaestructura mientras puede repetirse cero o más veces,veces que son determinadas por el cumplimiento o no dela condición.Ejemplo

    mientras contraseña < > "josua"imprimir " La contraseña es incorrecta !" 

     fin-mientrasimprimir " Ha ingresado la contraseña correcta"

    Veremos más ejemplos de esta estructura en la secciónejercicios. Al analizarlos comprenderemos mejor comofunciona.

    Estructura RepetirLa estructura repetir cumple la misma función que laestructura mientras. La diferencia está en que laestructura mientras comprueba la condición al inicio yrepetir lo hace al final; por eso la estructura repetir seejecuta por lo menos una vez.

    La sintaxis es:

    repetir

    intrucción 1

    instrucción 2

    instrucción 3......

    hasta {condición}

    instrución X

    Repetir es opuesta a la estructura mientras. Repetir seejecuta hasta que se cumpla una condición que secomprueba al final del bucle. Esto implica que lasinstrucciones que forman el cuerpo del bucle se ejecutan

     por lo menos una vez. Con la estructura mientras el bucle puede ejecutarse 0 o más veces.

    Lo que la computadora hace al ejecutar la estructurarepetir es:

    - Se ejecutan: instrucción 1, instrucción 2, instrucción 3,

    ......- Se evalúa la condición. Si esta es FALSA se vuelve arepetir el ciclo y se ejecutan instrucción 1, instrucción 2,instrucción 3, ......

    Si la condición es VERDADERA se sale del ciclo y seejecuta instrucción X.

    Ejemplo

    repetir

    imprimir " La contraseña es incorrecta !"hasta contraseña = "  josua"

    Más ejemplos en la sección Ejercicios.

    En resumen, hemos visto dos tipos de estructurasrepetitivas, el primer tipo en la que conocemos elnúmero de veces que se repetirá el bucle o ciclo (Desde....fin-desde; y el segundo tipo en el cual no conocemosel numero de veces en se repite el ciclo ya que estádeterminado por el cumplimiento o no de una condición(mientras ..... fin-mientras y repetir....hasta).

    Toda estructura Desde....fin-desde tiene una estructura

    mientras....fin-mientras o repetir.....hasta equivalente.Pero las estructuras mientras... o hacer ... no tienen NINGÚN desde.....fin-desde equivalente.

    Ejercicios4.35.  Construya un algoritmo que reciba como entrada

    varios montos de depósito y despliegue la suma deellos. Considere que un valor negativo significa queno hay más datos y no debe ser considerado comodato válido.

    4.36.  Construya un algoritmo que reciba como entradauna secuencia de valores numéricos y genere como

    salida la suma de los valores pares y lamultiplicación de los impares. Considere que unvalor negativo significa que no hay más datos y nodebe ser considerado como dato válido.

    4.37.  Construya un algoritmo que reciba como entradauna secuencia de valores de temperaturas y generecomo salida el total de veces que la temperatura fue0. Considere que un valor de temperatura negativosignifica que no hay más datos y no debe serconsiderado como válido.

  • 8/18/2019 Algoritmos y Solucion de Problemas2

    22/43

      22

    4.38.  Construya un algoritmo que reciba como entradauna secuencia de valores de temperaturas y generecomo salida el total de veces que se registro unatemperatura menor que 0, el total de veces que fue 0y el total de veces que fue mayor que 0. Considereque una temperatura con valor 99 es una temperaturano válida e indica el término de los datos.

    4.39.  Construya un algoritmo que genere como salidalos términos de la siguiente serie: 2; 5; 7; 10; 12; 15;17; : : : ; 1800. Hasta un valor dado por el usuario.

    4.40.  Escribir un diagrama de flujo para un algoritmoque calcule la media de varios números, los queintroduzca el usuario por teclado, y saque elresultado por pantalla. Nota: el primer carácter nonumérico que introduzca el usuario indicará que nova a introducir más números.

    4.41.  Leer secuencia de números y mostrar la suma dedichos números hasta que se introduce un númeronegativo.

    4.42.  Pedir al usuario una contraseña hasta que este dela correcta o decida salir.

    4.43.  El número mágico.

    UNIDAD 5:

    5.1. ARREGLOS.

    Hasta ahora hemos trabajado con datos simples querepresentaban un número, un carácter o una cadena. Sinembargo, en ocasiones se necesita procesar unacolección de valores que están relacionados entre sí por

    algún método, por ejemplo, una lista de calificaciones,de los meses del año, temperaturas a lo largo de unasemana, etc.

    El procesamiento de estos datos utilizando datos simpleses muy difícil. Por eso, se han definido en la programación varias estructuras de datos, que son unacolección caracterizada por alguna organización y porlas operaciones que se definen en ella.

    Una de estas estructuras son los arreglos.

    Un arreglo es un conjunto de elementos del mismo tipoque comparten un nombre común; algo así como unavariable que puede almacenar al mismo tiempo más deun valor.

    Los arreglos reciben también el nombre de tablas, listaso arrays.

    Un arreglo es un conjunto ordenado y homogéneo.Ordenado porque el primer elemento, segundo, tercero...

    n-ésimo puede ser identificado y homogéneo porque suselementos son todos del mismo tipo (numéricos oalfanuméricos, pero no una combinación de ambos).

    Gráficamente, un arreglo se representa como una tabla:

    De igual forma que cualquier variable, un arreglo debetener un nombre.

    Aquí hemos llamado A a nuestro arreglo ejemplo.

    Los elementos que están en el arreglo A ocupan todosuna determinada posición dentro de él:

    Así, el número -5 se encuentra en la posición 3; el 99 enla posición 10 y el 12 en la posición 1.

    A(3) = - 5A(10) = 99A(1) = 12

    Vemos, entonces que un elemento se referencia por elnombre del arreglo y la posición que ocupa dentro de él.El número que se coloca entre paréntesis se llama índicey designa la posición del elemento en el arreglo.

    Cada elemento del arreglo se puede procesar como sifuera una variable simple.

    La dimensión de un arreglo está dada por la cantidad deelementos que contiene y debe ser definida al comenzarel programa.

    A los arreglos unidimensionales se les suele conocercomo vectores.

    5.2. CARGAR UN ARREGLOLa asignación de valores a los elementos de un vector serealiza de esta forma:A(4) 0A(7) 4

    Por supuesto que no vamos a cargar un vector de 100elementos, escribiendo 100 asignaciones.

  • 8/18/2019 Algoritmos y Solucion de Problemas2

    23/43

      23

     La carga de un vector se hace por medio del ciclodesde....fin desde . Nuestro bucle va a comenzar en 1hasta un número N que es la longitud del vector.

    Pero antes, no demos olvidar que el vector debe serdimensionado. Al dimensionar un vector le decimos a la

    máquina que reserve los espacios de memoria necesarios para los elementos del vector.

    Los problemas relacionados con vectores tendrán casisiempre esta forma

    inicio

     Leer dimensión del vector Dimensionar VectorCargar Vector

     Procesamiento de los elementos del vector (según lo que

     se pida) Imprimir Vector

     fin

    Por lo tanto, vamos a tener tres desde...fin desde  biendiferenciados:

    •  Un bucle para la carga•  Un bucle para el proceso•  Un bucle para la impresión

    Aunque la carga y el proceso pueden hacerse dentro deun solo bucle, particularmente no recomiendo esta práctica, ya que casi siempre crea dificultadesinnecesarias.

    Ejercicio: Cargar un vector de 30 componentes.

     No olvidemos que antes de cargar un vector debemosdimensionarlo. En este caso la dimensión del vector es30.

    Luego habilitaremos un bucle desde....fin desde comenzando en 1 hasta 30. Llamaremos V a nuestrovector.

    iniciodimensionar v(30)

    desde i= 1 hasta 30leer v(i) fin desde fin

    De esta forma hemos cargado un arreglo v concomponentes. Ahora bien, el usuario deberá siempre poder determinar la dimensión del arreglo sobre el quequiera trabajar. Por eso, vamos a leer la dimensión delvector en una variable:

    inicio Leer n dimensionar v(n)desde i = 1 hasta n 

     Leer v(i) fin desde 

    fin

    Así vamos a cargar un arreglo SIEMPRE

    5.3. IMPRIMIR UN ARREGLO

    El procedimiento para imprimir un arreglo es casiexactamente igual al proceso de carga, con la diferenciaque en lugar de leer, vamos a imprimir. Para el caso denuestro arreglo v de n componentes:

    desde i= 1 hasta n

    imprimir v(i) fin desde

    Es bueno volver a señalar que los elementos de unarreglo son todos del mismo tipo (todos numéricos otodos alfanuméricos).

    5.4. PROCESANDO UN ARREGLO

    Ejercicio: Leer un vector de N componentes. Hallar lasuma y el promedio de los elementos del vector.

    Se pide la suma y el promedio de los elementos.

    Sabemos que el promedio lo hallaremos dividiendo lasuma todos los elementos, sobre la cantidad. Nuestro arreglo (al que llamaremos h) va a tener unadimensión d, que será determinada por el usuario.

    Siguiendo el esquema que habíamos visto, vamos a tener primeramente un bucle para la carga del arreglo, otro para el proceso y otro para imprimir el arreglo.

    iniciosuma 0leer ddimensionar h (d)desde i = 1 hasta h

    leer h (i)  fin desde

    desde i = 1 hasta dsumasuma + h(i)

     fin desde

     promediosuma/dimprimir  h (i) fin

  • 8/18/2019 Algoritmos y Solucion de Problemas2

    24/43

      24

     desde impimir ""La suma de los elementos del vector es:",sumaimprimir "El promedio es:", promediofin

    5.5. ARREGLOS BIDIMENSIONALES

    Matrices

    Un arreglo bidimensional o matriz es un conjunto dedatos homogéneos (todos del mismo tipo), cada uno delos cuales debe referenciarse por dos índices. Los índicesdeterminan la posición de una fila y una columna.

    En este ejemplo tenemos una matriz de dimensión M *

     N, en donde M es el número de columnas y N el númerode filas. Aquí M=5 y N=6.

    El número total de elementos de la matriz será entonces5*6 = 30.

    De la misma forma que los vectores, una matriz debetener un nombre. Llamaremos MAT a nuestra matrizejemplo y determinaremos la posición de algunos de suselementos. MAT será de tipo alfanumérico.

    La matriz MAT está definida con 5 filas y 6 columnas.La notación para el dimensionamiento de una matriz es NOMBRE (cantidad de filas, cantidad de columnas);luego: MAT(5, 6)

    Una vez que la matriz contenga datos (veremos másadelante como cargar una matriz) para referirnos a un

    elemento debemos conocer en que fila y que columnareside ese elemento, por ejemplo:

    MAT (1,1) = "A"MAT(3, 5) ="Ñ"MAT (4,3)= "OK"MAT (5,4)="L"

    Dimensionamiento y Carga de una matriz

    Así como un arreglo unidimensional (vector) tiene queser nombrado y dimensionado antes de ser utilizado, unamatriz también. La instrucción para dimensionar unmatriz es:

    dimensionar M(5,6) 

    La carga de datos se realiza de la misma forma que unvector, por medio de un bucle desde....fin desde; soloque en este caso, vamos a necesitar 2 bucles; uno querecorra las filas y otro las columnas:

    desde fila = 1 hasta 5

    desde columna = 1 hasta 6leer MAT(fila, columna)

     fin-desde  fin-desde 

    En este ejemplo, la variable fila comienza en el valor 1,luego se da inicio al bucle columna que desde 1 hasta 6.El bucle de las columnas debe terminar todo su recorrido para que pueda comenzar el siguiente valor de fila.

    El recorrido de una matriz se hace, por tanto de estamanera:

  • 8/18/2019 Algoritmos y Solucion de Problemas2

    25/43

      25

     Una matriz también puede recorrerse por columnas. Al programar, no siempre podremos predefinir el tamaño deun matriz, por eso, solicitaremos al usuario que ingresela cantidad de filas y columnas con las que deseadimensionar una matriz:

    inicio leer cantfila, cantcolumna

    dimesionar MAT(cantfila, cantcolumna)desde fila=1 hasta cantfila

    desde columna=1 hasta cantcolumnaleer MAT(fila,columna)

     fin-desde fin-desde 

     fin 

    Este algoritmo solicita las dimensiones de la matriz, ladimensiona y luego procede a cargarla.

    Una matriz se imprime utilizando también dos índices:

    inicio leer cantfila, cantcolumna

    dimesionar MAT(cantfila, cantcolumna) -

    ----- se dimensiona desde fila=1 hasta cantfila

    desde columna=1 hasta cantcolumna

    leer MAT(fila,columna)------- lectura

     fin-desde fin-desde desde fila=1 hasta cantfila

    desde columna=1 hasta cantcolumna

    imprimir MAT(fila,columna) -------- impresión fin-desde

     fin-desde  fin 

    Procesando una matriz.

    Proceso de una matriz se realiza también forma análoga

    a los ejemplos anteriores. Utilicemos un ejemplo quecalcula el promedio de los elementos de una matriz.

    inicio leer cantfila, cantcolumnadimensionar M (cantfila, cantcolumna) desde I = 1 hasta cantfila

    desde J=1 hasta cantcolumna

    leer M(I, J) fin-desde

     fin-desde desde I=1 hasta cantfila

    desde J=1 hasta cantcolumna

     suma   suma + M(I, J) fin-desde

     fin-desde  promedio f suma / (cantfila * cantcolumna) 

    desde I = 1 hasta cantfiladesde J=1 hasta cantcolumna

    imprimir M(I, J) fin-desde

     fin-desde  fin 

    Una matriz que tiene la misma cantidad de filas y decolumnas se llama matriz cuadrada.

    1 2 3 4 5

    2

    3

    45

    Esta es una matriz cuadrada de orden 5.

    Las matrices cuadradas tienen ciertas características; porejemplo, los elementos en donde el número de filas esigual al número de columnas se llama diagonal principal(señalados en amarillo): Los elementos de la diagonal principal tienen, entonces, la propiedad de que fila =columna

    La diagonal principal define así dos áreas bien notorias,una que está por encima y otra por debajo. La regióndeterminada por los elementos situados sobre la diagonal

  • 8/18/2019 Algoritmos y Solucion de Problemas2

    26/43

      26

     principal se llama matriz triangular superior que tiene la propiedad de que fila < columna.

    La matriz triangular inferior es la zona situada debajo dela diagonal principal, cuyos índices cumplen con la propiedad: fila > columna.

    Elementos de la Matriztriangular superior

    Elementos de la Matriztriangular inferior

    Operaciones con Matrices

    1- Suma de matrices: Si A y B son dos matrices de igualdimensión (MxN), entonces la suma de Ay B existe y esigual a una matriz C también de dimensión MxN endonde cada C (i, j) = A (i, j) + B (i, j):

    Matriz A

    10 8 3 0

    7 -3 33 45

    9 15 71 29

    Matriz B

    1 6 9 69

    14 22 56 7

    3 5 80 1

    A y B son de igual dimensión, por lo tanto existe unamatriz C que es la suma de A y B

    11 14 13 69

    21 19 89 5212 20 151 30

    2- Producto Escalar por una matriz: Si A es una matrizde orden (dimensión) MxN y K es un escalar, el producto de K*A es igual a otra matriz D también deorden MxN en donde casa D (i, j) = K * A (i ,j):Matriz A:

    1 2 3 4 5 6

    7 8 9 10 11 12

    0-1

    -2

    -3 21 22

    33 3 0 5 12 4

    Escalar: 5Resultado de multiplicar la matriz A por el escalar(numero) 5Matriz D

    5 10 15 20 15 30

    35 40 45 50 55 60

    0 -5-10

    -15

    105 110

    165 15 0 25 60 20

    3- Traspuesta de una matriz: Si A es una matriz de ordenMxN, la traspuesta de A, denotada como A°, es otramatriz de orden NxM donde cada B (i, j) = A (j,i). Unamatriz es simétrica si A° = A:

    Matriz A:

    0 1 2

    3 4 5

    6 7 8

    9 10 11

    Traspuesta de A, A°:

    0 3 6 9

    1 4 7 10

    2 5 8 11

    Ejercicios5.1. Se tiene una tabla con los datos de matricula, peso,

    estatura y sexo de los alumnos de una Universidad.Construya un algoritmo que reciba los datos de la tablaantes mencionada, calcule y genere como salida el promedio de los pesos y de las estaturas. Su algoritmodebe entregar estos valores considerando todos los

    individuos y también diferenciando por sexo. Considerefin de datos la matrícula en cero (0).5.2. Se dispone de una tabla con las temperaturas

    registradas a medio día durante el año 2007. Sedesea determinar cuál fue la máxima, cual fue lamínima y cuantas veces se repitió cada una de estasdurante el año 2007. Además se desea saber el promedio de dichas temperaturas.

    5.3. Cargar un vector de n componentes

  • 8/18/2019 Algoritmos y Solucion de Problemas2

    27/43

      27

    5.4. Leer una lista de n números y almacenar en unvector el factorial de cada número de la lista.

    5.5. Leer un vector de N componentes. Hallar la suma yel promedio de los elementos del vector

    5.6. Leer y almacenar en una matriz de m x n unasecuencia de números.

    5.7. Dadas 2 matrices a y b obtener la suma.

    5.8. Dada una matriz determinar la posición ( i , j ) delmayor número y del menor.

    5.9. Leer una secuencia de n números almacenarlos enun vector A (1 .. n) y mostrar la suma de loselementos pares y el mayor de los impares.

    5.10.  Dada una matriz de m x n (1..4)(1..5) realizar el proceso de ordenar la misma.

    5.11.  Dada una matriz [1..n] [1..m] realizar procesode ordenar solo por filas.

    5.12.  Dado un vector de números determinadaaquellos que sean primos.

    5.13.  Calcular el promedio de los elementos de unamatriz.

    5.14.  Suma de Matrices5.15.  Producto Escalar por una matriz5.16.  Traspuesta de una matriz.5.17.  Desarrolla un algoritmo que lea por el teclado

    una secuencia de n enteros y visualice por pantallalos que sean pares.

    5.18.  Diseñar un programa que cree una lista denúmeros enteros. Cada número se debe situar enorden creciente. El programa visualizará también elcontenido de la lista

    UNIDAD 6:FUNCIONES Y PROCEDIMIENTOS.

    En general un problema complejo puede ser resuelto demanera más fácil y eficiente si se divide en problemasmás pequeños y concentrándonos en cada etapa en lasolución de ese "subproblema". Esto implica que el gran problema original será resuelto por medio de variosmódulos, cada uno de los cuales se encarga de resolverun subproblema determinado. Esos módulos, se conocencon el nombre de subalgoritmos. Un subalgoritmo no esmás que un algoritmo que tiene la función de resolver unsubproblema.

    Los subalgoritmos se escriben sólo una vez, luego es posible hacer referencia a ellos ("llamarlos") desdediferentes puntos del algoritmo. La ventaja obvia es quenos permite reutilización y evita la duplicación decódigos.

    Los subalgoritmos son independientes entre si, en elsentido de que se puede escribir y verificar cada móduloen forma separada sin preocuparse por los demásmódulos. Por ello, es menos complicado localizar unerror y también se puede modificar el código sin tenerque tocar o rehacer varias partes del mismo.

    Los subalgoritmos pueden ser dos tipos: Funciones yProcedimientos (también llamadas subrutinas osubprogramas).

     Notemos que al utilizar procedimientos y funciones seestablece un límite para el alcance de las variables, unastendrán efecto y valor sólo en el subalgoritmo y otras enel algoritmo principal, también es posible especificarque una variable tenga efecto en el algoritmo principal ytodos los subalgoritmos. Este punto lo estudiaremos conmás detalle en la sección Ámbito de variables.

    Los subalgoritmos pueden recibir valores del algoritmo principal (parámetros), trabajar con ellos y devolver unresultado al algoritmo principal: No existen limitacionesen cuanto a las acciones que pueda ejecutar unsubalgoritmo. Un subprograma puede, a su vez, invocaro llamar a otros o a sus propios subprogramas, inclusive puede llamarse a sí mismo (esto se conoce comorecursividad).

    FUNCIONES

    Desde el punto de vista matemático, una función es unaexpresión que toma uno o más valores llamados

    argumentos y produce un valor que se llama resultado.Este resultado es además, único. Ejemplos de funcionesmatemáticas son los logaritmos, funcionestrigonométricas (seno, coseno, etc).

    El en ambiente de programación y diseño de algoritmos,las funciones tienen exactamente el mismo significado.Es decir, se realizan ciertos cálculos con una o másvariables de entrada y se produce un único resultado. En programación y diseño de algoritmos, este resultado podrá ser un valor numérico, alfanumérico o lógico. Esdecir, una función puede devolver un resultado que puede ser una cadena, un número o un valor de tipo

    lógico (verdadero o falso). Esto hace que en loslenguajes de programación, debamos especificar de quétipo es una función. Una función será de tipo numéricacuando devuelva un número y será de tipo alfanuméricao string cuando devuelva una cadena. En el caso de lasfunciones de tipo numérico se tienen subdivisiones queestán dadas por los tipos de datos soportados por ellenguaje (integer o entero, simple o single, doble precisión o double, real, etc). O sea que cuando unafunción numérica devuelva un valor numérico entero

  • 8/18/2019 Algoritmos y Solucion de Problemas2

    28/43

      28

    (sin decimales) será de tipo entera o integer. Si devuelveun valor decimal será doble o simple, dependiendo delgrado de exactitud que se desea; sin embargo como estoes propio de lenguajes de programación no se tendrá encuenta en este tutorial (las funciones serán numéricascuando devuelvan un dato numérico y de tipo stringcuando devuelvan una cadena, sin necesidad de

    especificar esto previamente en el algoritmo). Puedesconsultar al profesor de la materia que te proporcionemás detalles sobre los tipos de datos y su aplicación enlas funciones.

    Tomemos como ejemplo al función matemática sen(x).En este caso la función se llama sen (seno) y elargumento o valor que se pasa a la función para que lo procese es x. Así sen(90º)=1. Este valor es además único(por eso se llama función), es decir no existe ningún otronúmero que la función pueda procesar y devolver 1 másque 90º.

    Cuando utilicemos esta función en un algoritmo ynecesitemos el valor del sen(90º), debemos asignarlo auna variable, así:

    valor sen(90)

    En este caso, la variable valor será = 1, por la tantonuestra función es numérica.

    La llamada a una función será siempre:

    variable   funcion (parámetros)

    Ejemplos: La llamada a una función MES que devuelvael nombre del mes, pasándole el valor numéricocorrespondiente será:

    nombre_mes MES(2) (estodevolvería "Febrero")

    La función es de tipo string porque devuelve una cadenacomo resultado en la variable nombre_mes.

    Ya sabemos como llamar a una función, ahora veremoscomo se escribe la función.

    Como las funciones y procedimientos no se escriben enel algoritmo principal (en programación existen espaciosdestinados a e