Descarga la aplicación para disfrutar aún más
Vista previa del material en texto
1 Algoritmos y Solución de Problemas Autor: Ing. Nelson Prado. Índice UNIDAD 1: .......................................................... 1 1.1. INTRODUCCIÓN. ................................ 1 1.2. ALGORITMOS Y SOLUCIÓN DE PROBLEMAS................................................... 2 1.3. METODOLOGÍA PARA RESOLVER PROBLEMAS................................................... 2 1.4. ETAPAS DEL CICLO DE PROGRAMACIÓN DE COMPUTADORES .... 3 1.5. ALGORITMOS ..................................... 4 1.6. REPRESENTAR ALGORITMOS ......... 5 UNIDAD 2: .......................................................... 6 2.1. VARIABLES, CONSTANTES E IDENTIFICADORES. ...................................... 6 2.2. DATOS Y TIPOS DE DATOS .............. 6 2.3. VARIABLES ........................................ 7 2.4. OPERACIONES .................................... 7 2.5. ASIGNAR VALORES A LAS VARIABLES .................................................... 9 2.6. TIPOS DE VARIABLES MÁS UTILIZADOS ................................................... 9 UNIDAD 3: ........................................................ 11 3.1. DIAGRAMAS DE FLUJO PARA REPRESENTAR ALGORITMOS .................. 11 3.2. PSEUDOCÓDIGO PARA REPRESENTAR ALGORITMOS .................. 12 UNIDAD 4: ........................................................ 13 4.1. PROCESOS ......................................... 13 4.2. ESTRUCTURA SECUENCIAL .......... 13 4.3. ESTRUCTURA CONDICIONAL ....... 14 4.4. ESTRUCTURA ITERATIVA (REPETICIÓN) ............................................... 17 Estructura Para (Desde - Hasta) ................... 19 Ejercicios .................................................... 20 Estructura Mientras ..................................... 20 Estructura Repetir ........................................ 21 UNIDAD 5: ........................................................ 22 5.1. ARREGLOS. ....................................... 22 5.2. CARGAR UN ARREGLO .................. 22 5.3. IMPRIMIR UN ARREGLO ................ 23 5.4. PROCESANDO UN ARREGLO ......... 23 5.5. ARREGLOS BIDIMENSIONALES .... 24 UNIDAD 6: ........................................................ 27 6.1. FUNCIONES Y PROCEDIMIENTOS. 27 6.2. FUNCIONES ...................................... 27 6.3. ÁMBITO DE LAS VARIABLES ........ 30 6.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ño 830 DC, escribe un libro de Aritmética, traducido al latín como Algoritmi de numero Indorum, donde introduce el sistema numérico indio (sólo conocido por los árabes unos 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 instrucciones donde se especifica una sucesión de operaciones necesarias para resolver cualquier problema de un tipo dado". Los algoritmos son modos de resolución de problemas, cabe aclarar que no sólo son aplicables a la actividad intelectual, sino también a todo tipo de problemas relacionados con actividades cotidianas. El algoritmo es de carácter general y puede aplicarse a cualquier operación matemática o a cualquier problema. La formulación de algoritmos fue uno de los más grandes adelantos dentro de la ciencia matemática ya que a partir de ello se pudieron resolver infinidad de problemas. Landa, matemático ruso, quien ha investigado mucho al respecto nos dice que "la ciencia matemática, en el proceso de su desarrollo, ha tratado de encontrar los algoritmos óptimos más generales para resolver los problemas que permitan la solución uniforme de clases más amplias de problemas de una manera, es decir, empleando siempre el mismo sistema de operación. Los algoritmos, para llegar a ser tales deben reunir ciertas características. Una de ellas es que los pasos que deben seguirse deben estar estrictamente descritos, cada acción debe ser precisa, y debe ser general, es decir, que pueda ser aplicable a todos los elementos de una misma clase. Por ejemplo en el caso del algoritmo de una multiplicación, no sólo se realizará el procedimiento de resolución parte para la multiplicación de 4 x 4, sino que el mismo algoritmo podrá aplicarse a cualquier multiplicación. La última de estas características será la resolución, en otras palabras, esto quiere decir que el algoritmo deberá llegar a un resultado específico. Es de gran importancia aclarar que los algoritmos en si mismos no resuelven problemas, se resuelven gracias al producto de ejercer las operaciones dictadas por el algoritmo, se puede decir que es por el planteamiento mismo. La realización de algoritmos es natural e innata 2 en el hombre y en la mayoría de los casos es de tipo inconsciente, en otras palabras, las personas suelen resolver problemas sin tener que recurrir a la aplicación de cierto algoritmo. No obstante al encontrarse con problemas de un grado de dificultad mayor es necesario detenerse a analizar y pensar en la solución de éste. 1.2. ALGORITMOS Y SOLUCIÓN DE PROBLEMAS La razón principal por las que personas aprenden lenguajes y técnicas de programación es para utilizar la computadora como una herramienta para resolver problemas. La resolución de problemas exige al menos los siguientes 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 de procesamiento de información. Un sistema que transforma datos brutos en información organizada, significativa y útil. Para poder entender lo que es un sistema de procesamiento debemos diferenciar las palabras datos e información: • Datos se refiere a la representación de algún hecho, concepto o entidad real (por ejemplo palabras escritas, habladas, números y dibujos). • Información implícita datos procesados y organizados. Figura. 1.1 Sistema de Procesamiento de Información. Los componentes de un sistema de proceso de información son: entrada, salida y procesador. Ejemplo de sistemas: Un termostato que controla la temperatura. La entrada es la temperatura media. La salida es una señal que controla la caldera del aire acondicionado. 1.3. METODOLOGÍA PARA RESOLVER PROBLEMAS Figura 1.2: Pasos para resolver problemas matemáticos. Todos los días nos enfrentamos a problemas. Desde nuestro punto de vista un problema es una oportunidad. En la mayoría de los textos se recomiendan los siguientes 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. 3 Ejemplo 1.1 En un juego, el ganador obtiene una ficha roja; el segundo, una ficha azul; y el tercero, una amarilla. Al final de varias rondas, el puntaje se calcula de la siguiente manera: Al triple de la cantidad de fichas rojas se adicionan las fichas azules y se descuenta el doble de las fichas amarillas. Si Andrés llegó 3 veces en primer lugar, 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 la cantidad de fichas rojas. • Para hallar el puntaje por sus llegadas en segundo lugar, contar la cantidad de fichas azules. • Para hallar el puntaje que pierde por sus llegadas en último lugar, calcular el doble de la cantidad de fichas 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 puntos representados 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 que realizas para resolver estos problemas y clasificarlas en cada una de las cuatro etapas vistas: comprender, planear, resolver y revisar. 1.1. Se tienen dos cubetas de 5 y 4 litros respectivamente. Las mismas no están graduadas con medidas. Sí se tiene disponible toda el agua necesaria. ¿Cómo lograría poner dos litros de agua en 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 25 estudiantes que estudian Natación y Fútbol, ¿cuántos estudiantes tiene el curso? Para resolver este problema, debes tener conocimientos sobre conjuntos (representación, clasificación e intersección). Es buena idea que construyas una tabla para organizar la información y un diagrama para representar los datos. 1.3. Orlando compró 15 metros de tela para mandar a fabricar una cortina, a $26 el metro. Para colgarla necesita 28 aros de madera cuyo valor es de $1 cada uno. El riel y demás accesorios cuestan $30. Si la modista cobra $5 por cada metro de tela confeccionado y la instalación vale $15 ¿Cuánto es el costo total de la cortina instalada? Debes tener conocimientos sobre sumas y multiplicaciones. 1.4. El “peso neto” indicado en la envoltura de un jabón de baño es de 140 gramos y el “peso neto” indicado en otro jabón es de 80 gramos. El primero vale $0.90 y el segundo $0.65. ¿Cuál de los dos es más costoso? Debes tener conocimientos sobre sistemas de medidas (peso) y divisiones. 1.4. ETAPAS DEL CICLO DE PROGRAMACIÓN DE COMPUTADORES Muchos expertos en programación afirman que para elaborar en un computador procedimientos que realicen determinadas tareas, se deben seguir cuatro fases o etapas. Estas fases concuerdan con los procedimientos para solucionar 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 los métodos utilizados para solucionar problemas y las cuatro fases para solucionar problemas con ayuda del computador en otras áreas del conocimiento. 4 1.5. ALGORITMOS En la naturaleza hay muchos procesos que puedes considerar como Algoritmos ya que tienen procedimientos y reglas. Incluso, muchas veces no somos conscientes de ellos. Por ejemplo, el proceso digestivo es un concepto de algoritmo con el que convivimos a diario sin que haga falta una definición precisa de este proceso. El hecho de que conozcas cómo funciona el sistema digestivo, no implica que los alimentos que consumas te alimenten más o menos. La familiaridad de lo que sucede día a día nos impide ver muchos algoritmos que pasan a nuestro alrededor. Procesos, rutinas o biorritmos naturales como la gestación, las estaciones, la circulación sanguínea, los ciclos cósmicos, etc., son algoritmos naturales que generalmente pasan desapercibidos. Ejemplo 1.2 Un procedimiento que realizamos varias veces al día consiste en lavarnos los dientes. Veamos la forma de expresar 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 para cambiar una bombilla (foco) se pueden expresar en forma 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 voluntario debe pasar al tablero y escribir un Algoritmo con participación de toda la clase. Los Algoritmos permiten describir claramente una serie de instrucciones que debe realizar el computador para lograr un resultado previsible. Vale la pena recordar que un procedimiento de computador consiste de una serie de instrucciones muy precisas y escritas en un lenguaje de programación que el computador entienda. En resumen, un Algoritmo es una serie ordenada de instrucciones, pasos o procesos que llevan a la solución de un determinado problema. Los hay tan sencillos y cotidianos como seguir la receta del médico, abrir una puerta, lavarse las manos, etc.; hasta los que conducen a la solución de problemas muy complejos. El concepto de algoritmo, aunque similar y obviamente relacionado, no debe confundirse con el concepto de programa. Mientras el primero es la especificación de un conjunto de pasos (operaciones, instrucciones, órdenes,...) orientados a la resolución de un problema, el segundo es ese conjunto de operaciones especificadas en un determinado lenguaje de programación y para un computador concreto, susceptible de ser ejecutado (o compilado o interpretado). Un algoritmo, estrictamente hablando, no puede ejecutarse hasta que se implementa, ya sea en un lenguaje de programación, en un circuito elé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ón de 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 algoritmo se expresa por medio de un programa. Cada paso esta expresado por medio de una instrucción. 5 Ejemplo 1.4 Consideremos algo más complejo como el algoritmo de Euclides para hallar el Máximo Común Divisor (MCD) de dos números enteros positivos dados. Obsérvese que no se especifica cuáles son los dos números, pero si se establece claramente una restricción: deben ser enteros y positivos. ALGORITMO 1. 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 ambosson el resultado esperado y termina el algoritmo. En caso contrario, avanzar al paso 5. 5. Paso 5: Si “a” es menor que “b”, se deben intercambiar 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”, asignar el 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 realizan actividades sin detenerse a pensar en los pasos que deben seguir, los computadores son muy ordenados y necesitan que quien los programa les especifique cada uno 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 se representa por medio de palabras en forma de frases o proposiciones, mientras que en un Diagrama de Flujo se representa por medio de gráficos. Ejemplo 1.5 Diseñar un algoritmo (pseudocódigo) para hallar el área de un triángulo rectángulo cuya Base mide 3 cm, la Altura 4 cm y la Hipotenusa 5 cm. Solución: ANÁLISIS DEL PROBLEMA Formular el problema: Ya se encuentra claramente planteado. Resultados esperados: El área de un triángulo rectángulo. Datos disponibles: Base, Altura, Hipotenusa, tipo de triángulo. La incógnita es el área y todos los valores son constantes. El valor de la hipotenusa se puede omitir. Debes preguntarte si tus conocimientos actuales de matemáticas te permiten resolver este problema; de no ser así, debes plantear una estrategia para obtener los conocimientos requeridos. Determinar las restricciones: Utilizar las medidas dadas. Procesos necesarios: Guardar en dos variables (BASE y ALTURA) los valores de Base y Altura; Guardar en una constante (DIV) el divisor 2; aplicar la fórmula BASE*ALTURA/DIV y guardar el resultado en la variable AREA; comunicar el resultado (AREA). ALGORITMO EN PSEUDOCÓDIGO Paso 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/div Paso 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 un ceviche de camaron que conste de 5 a 10 acciones principales. 1.6. ¿Qué requisitos debe cumplir un algoritmo bien elaborado? 1.7. Los ingredientes para 4 personas del “pastel de manzana danés” son los indicados en el cuadro adjunto. Realizar un algoritmo que calcule los ingredientes para un número variable de personas que se lee por teclado. 6 1.8. Desarrollar un algoritmo para cambiar un neumático desinflado. Supóngase que se dispone de una rueda de repuesto y de gato. 1.9. Hallar el perímetro de un cuadrado cuyo lado mide 5 cm. 1.10. Hallar el perímetro de un círculo cuyo radio mide 2 cm. 1.11. Hallar el área de un cuadrado cuyo lado mide 5 cm. 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 cm de lado y con 4 cm de apotema. UNIDAD 2: 2.1. VARIABLES, CONSTANTES E IDENTIFICADORES. En programación, las Variables son espacios de trabajo reservados para guardar datos (valores). El valor de una Variable puede cambiar en algún paso del Algoritmo o permanecer invariable; por lo tanto, el valor que contiene una variable es el del último dato asignado a esta. Ejemplo 2.1 En el siguiente diagrama de flujo, "AREA" es un ejemplo de Variable; en el paso 5 se guardó en ella el resultado de multiplicar "BASE" por "ALTURA" y en el paso 6 se utilizó nuevamente para guardar el valor de dividir su propio contenido ("AREA") entre la Constante "DIV". Figura 2.1: Algoritmo para calcular el área de cualquier triángulo rectángulo. - Constantes: Tienen un valor fijo que se le da cuando se define la constante y que ya no puede ser modificado durante la ejecución. - Variables: El valor puede cambiar durante la ejecución del algoritmo, pero nunca varia su nombre y 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 sobre esos datos. A nivel de la máquina los datos se representan como una serie de bits (dígito 1 ó 0). Los tipos de datos que vamos a manejar a lo largo del curso son: numéricos y carácter (también llamados alfanuméricos), existen además, los datos de tipo lógicos que solo pueden tener uno de dos valores: verdadero o falso. 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ón depende del lenguaje de programación utilizado. Los datos de tipo carácter o alfanuméricos están compuestos por el conjunto finito y ordenado de caracteres 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. 7 Una cadena o string es una sucesión de caracteres que se encuentran delimitados por comillas (" "). La longitud de la 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 puede realizar ninguna operación aritmética como sumar, restar, etc., ya que se trata de una cadena alfanumérica. Ejemplo de este tipo son: cedula, pasaporte, teléfonos. 2.3. VARIABLES Cuando representamos datos, numéricos o alfanuméricos, debemos darles un nombre. Una variable es un nombre que representa el valor de un dato. En esencia, una variable es una zona o posición de memoria en la computadora donde se almacena información. En un algoritmo y también en un programa se 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 y B. Es una variable calculada. Ten en cuenta que las operaciones que se pueden realizar con dos o más variables exigen que éstas sean del mismo tipo. No podemos "sumar", por ejemplo una variable alfanumérica a otra numérica y viceversa como por ejemplo: • FechaNueva="1 de Junio de 1.971" + 5 Esto no se puede hacer !! Nombres de las variables constantes A continuación encontrarás una serie de reglas para asignar nombres (identificadores) a variables, constantes y procedimientos: • Los nombres pueden estar formados por una combinació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 utilizar abreviaturas, a menos que se justifique plenamente. • Es conveniente utilizar una sola palabra para nombrarpá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 por varias palabras, cada una de las palabras (con excepción de la primera) deben empezar con mayúscula. Ejemplo: fechaInicial, baseTriángulo, etc. El tipo de nombre que se asigne a variables, constantes y procedimientos es muy importante. Cuando dejas de trabajar en un proyecto por varios días, es más fácil para ti 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 la declaración de las variables que se van a utilizar en todo el programa; es decir, que al comenzar el programa se debe decir que nombre tiene, de que tipo es (numérica o alfanumérica) y un valor inicial. Como aquí no estamos tratando con ningún lenguaje, la declaración de las variables puede omitirse. Las variables también pueden inicializarse; darles un valor inicial. Por defecto, todas las variables para las que no especifiquemos un valor inicial, valen cero si son de tipo numérica y nulo (nulo no es cero ni espacio en blanco; es nulo) si son de tipo carácter. 2.4. OPERACIONES 8 Las variables se pueden procesar utilizando operaciones apropiadas para su tipo. Los operadores son de 4 clases: • Relacionales. • Aritméticos. • Alfanuméricos. • Lógicos. Los operadores relacionales se utilizan para formar expresiones que al ser evaluadas producen un valor de tipo lógico: verdadero o falso. Ellos son: Signo Operador > Mayor que < Menor que = Igual a <= Menor o igual que >= Mayor o igual que <> Distinto Ejemplos: Ejemplo Resultado 25 <= 25 Verdadero 25 <> 25 Falso 25 <> 4 Verdadero 50 <= 100 Verdadero 500 >= 1 Verdadero 1 = 6 Falso Cuando se comparan caracteres alfanuméricos se hace uno a uno, comenzando por la izquierda hacia la derecha. Si las variables son de diferente longitud, pero exactamente iguales, se considera que la de menor longitud es menor. Los datos alfanuméricos son iguales si y solo si tienen la misma longitud y los mismos componentes. Las letras minúsculas son mayores que las mayúsculas y cualquier carácter numérico es menor que cualquier letra mayúscula o minúscula; Así: carácter numérico < mayúsculas < minúsculas. Ejemplos: Comparación Resultado "A" < "B" Verdadero "AAAA" > "AAA" Verdadero "B" > "AAAA" Verdadero "C" < "c" Verdadero "2" < "12" Falso Estas comparaciones se realizan utilizando el valor ASCII de cada carácter. Para tratar los números se utilizan los operadores aritméticos: Signo Significado + Suma - Resta * Multiplicación / División ^ Potenciación MOD Resto de la división entera El único operador alfanumérico se utiliza para unir o concatenar 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 de acuerdo con las reglas del álgebra de Boole para producir un nuevo valor que se convierte en el valor de la expresión, puede ser verdadero o falso. Signo Significado OR Suma lógica (O) AND Producto lógico (Y) NOT Negación (NO) Ejemplos: Expresión Resultado Verdad AND Falso Falso NOT Falso Verdad Verdad OR Falso Verdad Por ejemplo, la expresión: (12 + 5) OR (7 + 3) = 10 es verdadera (se cumple una y Verdad OR Falso es Verdad). La expresión (12 * 5) AND (3 + 2) = 60 es falsa (verdad AND falso = Falso). 9 ¿Cómo se evalúan los operadores? La prioridad de los operadores 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 llama asignación. La asignación vamos a representarla con el símbolo�; una flecha apuntando a la izquierda. No utilizaremos en signo = ya que el operador de asignación varí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 evitar ambigüedades en el algoritmo utilizaremos la flecha para la asignación y el símbolo = para indicar igualdad. He aquí algunos ejemplos: • a �100: significa que a la variable a se le ha asignado el valor 100, ahora A vale 100. • suma � 5+10: asigna el valor 15 a la variable suma a través de una asignación aritmética. • x �z + v: asigna el valor de la suma de las variables z y v a la variable x. El resultado depende de los valores que se asignen a x y a z. Toda asignación es destructiva. Esto quiere decir que el valor que tuviera antes la variable se pierde y se reemplaza por el nuevo valor que asignamos, así cuando se ejecuta esta secuencia: • edad � 25. • edad � 100. • edad � 77. El valor final que toma edad será 77 pues los valores 25 y 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 vez que se ejecuta la acción que lo contiene. El incremento o decremento es llamado paso de contador y es siempre constante. Por ejemplo; el marcador de un partido de fútbol, cada vez 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 el número de vueltas dadas al circuito, o bien se decrementa en una unidad el número de vueltas que quedan por realizar. Aunque el incremento es siempre constante, el paso de contador no necesariamente puede ser la unidad como en los ejemplos que se han dado más arriba; también puede incrementarse o decrementarse a de dos, tres, cuatro,.... n; es decir, puede ser cualquier número que conserva el mismo 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 ambos lados del símbolo de asignación, conviene inicializarlas a cero. Acumulador o Sumador Es una variable que nos permite guardar un valor que se incrementa o decrementa en forma NO constante durante el proceso. En un momento determinado tendrá un valor y al siguiente tendrá otro valor igual o distinto. Por ejemplo; cuando realizamos un depósito en el banco, la cantidad depositada cada vez no es siempre la misma; unas veces será una cantidad y otras veces distinta. Lo mismo ocurre cuando realizamos algún retiro, pero decrementando la cantidad total. La sintaxis es: 10 acumulador � acumulador + variable (al incrementar) acumulador � acumulador - variable (al decrementar) acumulador es la variable en la que se almacena el resultado. variable contiene el número que estamos incrementando o 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)) < 10 A � -16 < 10 A � Verdadero Ejemplo Escribir un algoritmoque intercambie el valor de dos variables. Si se tienen, por ejemplo a = 5 y b = 10, se quiere intercambiar el valor de las variables, así: a = 10; b = 5. No podemos asignar directamente el valor de una a la otra porque uno de los valores se destruiría; de modo que 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 las variables a otra variable auxiliar. inicio leer A,B Auxiliar � A A � B B � Auxiliar imprimir A,B fin Ejercicios 2.1. ¿Cuáles de los siguientes nombres de Variables NO son validos y por qué? a) números. b) Numero X. c) 7 d) A(45+ e) VII f) 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 variables siguientes y los valores iniciales indicados: VAR Z color, lima, marron, amarillo, rojo, naranja R negro, blanco, verde, azul, morado, crayon Evaluar el valor final de las variables después de ejecutar de forma independiente las sentencias de asignación siguientes. Nota: suponer que las incompatibilidades de tipos se resuelven implícitamente e indicar dónde se producen. a) blanco = color * 2.5 / morado b) verde = color / morado c) naranja = color*(-12) DIV rojo d) azul = (color + marron) / (crayon + 0.3) e) lima = rojo DIV color + rojo MOD color - 356 f) morado = marron / rojo * color 2.6. Indicar el tipo de cada una de las siguientes constantes: a) 534 b) 534.0 c) -534 d) ’534’ e) -45.3x10 4 f) 17x10 7 g) -45.6x10 -3 h) ’fin del ejercicio’ 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+1 d) 1/4+2 e) 29.0/2+4 f) 3/6.0 - 7 2.8. Calcular el valor de cada una de las siguientes expresiones enteras: a) 5*6-3*2 b) -2^3 c) (26+3*4)/4 d) 3+2*(18-4^2) e) 2^2*3 f) 8-30/6 11 2.9. Escribir las siguientes expresiones matemáticas en forma de expresiones de computación: 2.10. Evaluar las siguientes expresiones booleanas escribiendo el árbol de precedencia. Los valores de 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<3) AND A OR NOT (D OR C) e) A AND NOT (D OR NOT C AND A) OR NOT (NOT C OR B) 2.11. Encuéntrese el valor de la variable RESULT después de la ejecución de las siguientes secuencias de operaciones (suponer que todas las variables son reales): a) RESULT ← 3.0*5 b) X ← 2.0 Y ← 3.0 RESULT ← X^Y-X c) RESULT ← 4 X ← 2 RESULT ← RESULT*X 2.12. ¿Qué valor se obtiene en las variables A, B y C después de la ejecución de las siguientes instrucciones? A ← 3 B ← 20 C ← A+B B ← A+B A ← B 2.13. Supóngase que I y J son variables enteras cuyos valores son 6 y 12 respectivamente. ¿Cuáles de las siguientes condiciones son verdaderas? a) (2*I) ≤ J b) (2*I-1) < J c) (I > 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 se encuentran escritos los pasos del algoritmo, dichos símbolos se encuentran unidos por medio de flechas, denominadas líneas de flujo, que indican la secuencia en que se deben de ejecutar. Los siguientes son los principales símbolos para elaborar Diagramas de Flujo: 12 Reglas básicas para elaborar Diagramas de Flujo: • Poner un encabezado que incluya un título que identifique la función del algoritmo; el nombre del autor; 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 ellas debe incluir una línea arqueada en el sitio donde cruza a la otra. • Las bifurcaciones y ciclos se deben dibujar procurando una cierta simetría. • Cada rombo de decisión debe tener al menos dos líneas de salida (una para SI y otra para NO). • Las acciones y decisiones se deben describir utilizando el menor numero de palabras posible; sin que resulten confusas. • Todo el Diagrama debe ser claro, ordenado y fácil de recorrer. Actividad 1.6 1. 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 REPRESENTAR ALGORITMOS Pseudocódigo: lenguaje de especificación de algoritmo que utiliza para representar las acciones palabras reservadas en ingles, las cuales son similares a las de los lenguajes de programación, tales como start, end, if- then-else, while-wend, repeat-until, etc. (o su equivalente en español) Este nació como un lenguaje similar al inglés y era un medio de representar básicamente las estructuras de control 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 la indentación (sangría en el margen izquierdo) o en su defecto, numeración jerárquica. Ejercicios: Realice los ejercicios, utilizando Diagramas de Flujo y Pseudocdigo. 3.1. Escribir un algoritmo que calcule y saque por pantalla, las horas, minutos y segundos de un tiempo expresado sólo en segundos introducido por teclado. 3.2. Escribe un algoritmo que calcule la altura desde la que cae un objeto que tarda t segundos en llegar al suelo. El tiempo lo introduce el usuario por teclado. Use la fórmula: 13 3.3. Escribe un algoritmo que lea por teclado una temperatura en grados Fahrenheit y la convierta a grados 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 el resultado. 3.6. Diseñar un algoritmo que lea los dos catetos de un triángulo rectángulo y calcule la hipotenusa. 3.7. Diseñar un algoritmo que lea cuatro calificaciones de un alumno y calcule la calificación promedio. UNIDAD 4: 4.1. PROCESOS Se llama procesos a todas las instrucciones contenidas en 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 procedimientos activados por el programa. 4.2.ESTRUCTURA SECUENCIAL Un Algoritmo está compuesto por instrucciones de diferentes tipos, organizadas secuencialmente, en forma de 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 esquema que permite representar ideas de manera simplificada y quebajo 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. Se compone de instrucciones que deben ejecutarse en forma consecutiva, una tras otra, siguiendo una línea de flujo. Solamente los problemas muy sencillos pueden resolverse haciendo uso únicamente de esta estructura. Una estructura de control secuencial puede contener cualquiera 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ímetros sabiendo que 25.5 mm = 1 pulgada. 4.2. Diseñar un algoritmo que lea el nombre y el apellido de una persona en ese orden e imprima el apellido seguido del nombre. 4.3. El costo de un automóvil para el comprador es la suma total del costo del vehículo, del porcentaje de ganancia del vendedor (12%) y de los impuestos estatales y locales aplicables (6%). Diseñar un algoritmo que lea el costo del automóvil e imprima el costo para el comprador. 4.4. La calificación final de un estudiante viene dada por tres aspectos del trabajo anual: nota de laboratorio que cuenta un 30% del total, nota de examen parcial que cuenta un 20% del total y nota de examen final que cuenta el 50% restante. Diseñar un algoritmo 14 que lea el nombre del estudiante, la nota de laboratorio, la nota del examen parcial y la nota del examen final e imprima el tanto por ciento correspondiente a cada una de las notas así como la calificación final. 4.5. Realizar un algoritmo para calcular la longitud de una circunferencia y el área del círculo con un radio leído desde teclado. El algoritmo debe detectar entradas 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 escribir un programa que le permita a un empleado ingresar los precios originales de las pelotas. El programa deberá 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) conectadas en paralelo y muestre en pantalla el valor global de las 3. El valor global es calculado por la siguiente ecuación: 1 / (1/R1 + 1/R2 + 1/R3). 4.11. ¿Dada la duracion en minutos de una llamada calcular el costo,considerando? -Hasta tres minutos el costo es 0.50 -Por encima de tres minutos es 0.50 más 0.1*cada minuto adicional a los tres primeros 4.12. Realizar un algoritmo que permita ingresar una frase y la descomponga esta en sus palabras imprimiéndolas al revés. Ejem. CIUDAD CHICLAYO DADUIC OYALCIHC 4.3.ESTRUCTURA CONDICIONAL La estructura condicional se utiliza para indicarle al computador que debe evaluar una condición y, a partir del resultado, ejecutar el bloque de instrucciones correspondiente. 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ón es 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 contener una o varias instrucciones que se ejecutan una detrás de otra. La estructura condicional tiene dos variantes: • Selección simple. • Selección Múltiple. Las estructuras condicionales simple y múltiple evalúan una proposición (condición) que devuelve como resultado ú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 <condición> entonces instrucción 1 instrucción 2 ................... instrucción n si-no instrucción a instrucció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, entonces debemos colgar el teléfono y si no, podemos realizar la conversación. 15 Ejemplo: Si a = 5 entonces imprimir"A es 5" si - no imprimir "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 de que la condición no se cumpla. Si {condición} entonces instrucció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, debemos saber 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 con respecto a cero y mostramos los mensajes correspondientes en cada caso. Así: inicio leer 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 el ejemplo se llamarán NumeroA y NumeroB. Luego debemos comparar como es uno contra el otro (puede ser NumeroA contra NumeroB o bien comparar NumeroB contra NumeroA): inicio leer numeroA, numeroB Si numeroA < numeroB entonces imprimir "El mayor es:", numeroB si-no imprimir "El mayor es:", numeroA fin-si fin En este ejemplo, ¿qué pasaría si los números fueran iguales? Hagamos la prueba. Luego de leer los números, por ejemplo: numeroA=100 y numeroB=100 se ejecutan las instrucciones: Si numeroA < numeroB entonces imprimir "El mayor es:", numeroB El resultado de la condición Por lo tanto, al ser falsa la condición, se ejecuta la instrucción imprimir "El mayor es:", numeroA. Por tanto, el algoritmo ofrecerá una solución incorrecta cuando los números son iguales. Para solucionar esto, tenemos que prever el caso de que los números sean iguales, utilizando condiciones anidadas. inicio leer numeroA, numeroB Si numeroA < numeroB entonces imprimir "El mayor es:", numeroB si-no Si numeroA > numeroB entonces imprimir "El mayor es:", numeroA si-no imprimir "Los números son iguales" fin-si fin-si fin Esta solución contiene dos estructuras de repetición, una dentro de la otra (anidada). En caso de ser necesario podemos anidar tantas estructuras de selección como sea necesario. El algoritmo averigua si A es menor a B, si no lo 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ía de la semana. inicio leer numero Si numero=1 entonces imprimir "Domingo" 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, ya que si el número ingreso no es 1, tenemos que preguntar si es 2 ó 3 ó 4...etc. El último Si...entonces es para verificar 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 numerosas comparaciones podemos usar otra estructura de selección llamada Según Sea. El formato de estructura de selección Según sea es: Según sea <variable> Caso = <condición> Caso = <condición> instrucción o instrucciones Otro caso instrucción o instrucciones fin-según Así, utilizando esta estructura, el problema del día de la semana será así: inicio Leer numero Según sea numero Caso = 1 imprimir "Domingo" Caso = 2 imprimir="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 o varias instrucciones cuando no se cumple ningún caso de los contemplados más arriba. Otro Caso debe estar siempre 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 son muchas, se utiliza Según Sea. La estructura según sea admite varias condiciones por ejemplo: 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 un mes determinado almacenado en la variable MES (para años no bisiestos). En lugar de escribir varios Caso= 1, Caso =2, etc, se puede especificar acción o acciones (en este caso la asignación de días a TDias) cuando la variable tome uno de los valores separados por comas. 17 Es decir si TDias es 1 ó 3 ó 5 ó 7 ó 8 ó 10 ó 12; se ejecuta 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ó por tramos, de acuerdo a la siguiente tabla: Construya un algoritmo que reciba como entrada el sueldo actual de cada uno de los trabajadores y calcule el nuevo sueldo. Además, el algoritmo debería indicar cuá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 algunos casos 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 del alumno no supera los 60 puntos el alumno está suspenso y el algoritmo deberá imprimir un mensaje indicándolo. En caso de que el alumno tenga una media superior o igual a 60 puntos pero inferior a 70, el alumno estará ‘aprobado pero dudoso’. Si el alumno supera los 70 puntos el mensaje a imprimir será ‘Aprobado’. 4.17. Escribir un algoritmo que lea dos números y determine cuál de ellos es el mayor. 4.18. Escribir un algoritmo que lea tres números y determine cuál de ellos es el mayor. 4.19. Dados por el teclado la base y altura de un triá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 si es positivo o negativo.- Para saber si un número es positivo o negativo, debemos saber si es menor o mayor a cero. Si es mayor, 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 y determinar si es bisiesto. NOTA: un año es bisiesto si 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 ejecutar una o varias instrucciones, un número determinado de veces o, indefinidamente, mientras se cumpla una condición. Esta estructura ayuda a simplificar los algoritmos, 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 18 el juego que había inventado. La curiosidad del rey lo llevó 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 cuadrado dividido en sesenta y cuatro cuadritos iguales (32 blancos y 32 negros); sobre este tablero se ubicaban dos colecciones 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ó para aliviar viejas angustias. Pide, pues, lo que desees, para que 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é, una recompensa 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 de trigo 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 venerables bracmanes, se rieron estrepitosamente al oír la extrañasolicitud 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 para hacer 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 trigo que 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ón contiene 20 guarismos y es el siguiente: 18.446.744.073.709. 551. 615. Se obtiene restando 1 a la potencia 64 de 2). -La cantidad de trigo que debe entregarse a Lahur Sessa -continúo el geómetra- equivale a una montaña que teniendo 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 trigo que, 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 la imposibilidad de cumplir una promesa. Lahur Sessa -refiere la leyenda de la época-, como buen súbdito, no quiso dejar afligido a su soberano. Después de 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 la apariencia 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ábiles algebristas de la corte del Rey Ladava con el cálculo del número de granos de trigo que deben entregar a Lahur Sessa como pago por haber inventado el juego de ajedrez. 19 La estructura repetitiva se utiliza cuando se quiere que un conjunto de instrucciones se ejecuten un cierto número finito de veces. Llamamos bucle o ciclo a todo proceso que se repite un cierto número de veces dentro de un algoritmo o un programa. Existen dos tipos de estructuras repetitivas; la primera es aquella en donde se tiene perfectamente establecido el número de veces que un grupo de acciones se van a ejecutar (20, 5, 2 veces), y la segunda en la que el número de repeticiones es desconocido y se hará hasta que se cumpla o no cierta condición. Un ejemplo de la primera sería imprimir los datos de los alumnos de una clase (se conoce cuantos alumnos hay) y un ejemplo de la segunda puede ser el mostrar un mensaje de error cada vez que el usuario pulse una determinada tecla (no sabemos cuantas veces pulsará esa tecla). Las acciones que forman parte del cuerpo del bucle son ejecutadas de forma repetitiva mediante la ocurrencia o no de una condición. Estructura Para (Desde - Hasta) Cuando conocemos de antemano el número de veces en que se desea ejecutar una acción o grupo de acciones, se utiliza la estructura repetitiva Desde o Para. Esta estructura ejecuta las acciones del cuerpo del bucle un número especificado de veces, y de modo automático controla 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 índice vi: valor inicial de la variable índice vf: valor final de la variable índice [incremento]: el número que se incrementa (o decrementa) 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, se incrementa uno en cada paso hasta 100. Podemos notar que la estructura desde comienza con un valor inicial de la variable índice y las acciones se ejecutan hasta que el valor inicial sea MAYOR que el que 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 valor final, 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 20 desde i= 2 hasta 300 incremento 2 imprimir i fin-desde Donde: La variable índice comienza en 2, se imprime 2 y en el siguiente paso se incrementa (suma) 2 a la variable índice que pasa a valer 4; se imprime el 4 y como 4 es menor que 300 (valor final) , se pasa a una nueva iteración incrementando nuevamente en 2 el índice, que ahora 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 el siguiente: desde i= 1 hasta 300 incremento 2 imprimir i fin-desde El ciclo termina mostrando 299 puesto que en el siguiente paso, La variable i valdría 301 y es mayor al límite establecido de 300. i pasa a valer realmente 301 en el último paso, solo que la instrucción de imprimir no se 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 el 460 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 y decrementar 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 de la primera en que no se conoce el número de repeticiones o iteraciones en que se va a ejecutar una instrucción o un bloque de instrucciones. Estas estructuras son básicamente dos: Estructura mientras....fin-mientras y la estructura repetir.... hasta. Estas dos se diferencian en que la verificación de la condición para repetir el ciclo se hace al inicio con mientras y al final con repetir. También existen estructuras repetitivas que son combinaciones de estas dos que mencionamos, pero no las estudiaremos. Ejercicios 4.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 entrada un cierto valor n y genere como salida el valor de la serie: 1 + 2 + 3 + 4 + : : : + n. 4.27. Escribir un algoritmo que calcule la desviación estándar de cinco números. 4.28. Realizar un algoritmo para calcular los valores que 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 300 4.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 de resistencias a conectar en paralelo. Después pedirá uno a uno los valores de todas las resistencias. Por último, escribirá el resultado global. Estructura Mientras Como su nombre lo indica, esta estructura repite el cuerpodel bucle mientras se cumpla una determinada condición. Su sintaxis es: mientras {condición} acción 1 acción 2 acción 3 ..... acción n fin mientras instrucción X 21 Lo primero que el computador hace es examinar la condición, lo que puede dar como resultado dos posibilidades: - La condición se cumple: Se ejecutan acción 1, acción 2, acción 3, ..., acción n. Las estará repitiendo hasta que la condición no se cumpla, entonces se sale del ciclo y se siguen ejecutando la o las instrucciones que vienen a continuación y están fuera del bucle; instrucción X. - La condición no se cumple: No entrará en el ciclo. Se ejecutan las instrucciones que vienen después del bucle, instrucción X, por ejemplo. De esto se deduce que el cuerpo del bucle de una estructura mientras puede repetirse cero o más veces, veces que son determinadas por el cumplimiento o no de la condición. Ejemplo mientras contraseña < > "josua" imprimir "La contraseña es incorrecta !" fin-mientras imprimir "Ha ingresado la contraseña correcta" Veremos más ejemplos de esta estructura en la sección ejercicios. Al analizarlos comprenderemos mejor como funciona. Estructura Repetir La estructura repetir cumple la misma función que la estructura mientras. La diferencia está en que la estructura mientras comprueba la condición al inicio y repetir lo hace al final; por eso la estructura repetir se ejecuta 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 se ejecuta hasta que se cumpla una condición que se comprueba al final del bucle. Esto implica que las instrucciones 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 estructura repetir es: - Se ejecutan: instrucción 1, instrucción 2, instrucción 3, ...... - Se evalúa la condición. Si esta es FALSA se vuelve a repetir 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 se ejecuta 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 estructuras repetitivas, el primer tipo en la que conocemos el número de veces que se repetirá el bucle o ciclo (Desde ....fin-desde; y el segundo tipo en el cual no conocemos el 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. Ejercicios 4.35. Construya un algoritmo que reciba como entrada varios montos de depósito y despliegue la suma de ellos. Considere que un valor negativo significa que no hay más datos y no debe ser considerado como dato válido. 4.36. Construya un algoritmo que reciba como entrada una secuencia de valores numéricos y genere como salida la suma de los valores pares y la multiplicación de los impares. Considere que un valor negativo significa que no hay más datos y no debe ser considerado como dato válido. 4.37. Construya un algoritmo que reciba como entrada una secuencia de valores de temperaturas y genere como salida el total de veces que la temperatura fue 0. Considere que un valor de temperatura negativo significa que no hay más datos y no debe ser considerado como válido. 22 4.38. Construya un algoritmo que reciba como entrada una secuencia de valores de temperaturas y genere como salida el total de veces que se registro una temperatura menor que 0, el total de veces que fue 0 y el total de veces que fue mayor que 0. Considere que una temperatura con valor 99 es una temperatura no válida e indica el término de los datos. 4.39. Construya un algoritmo que genere como salida los 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 algoritmo que calcule la media de varios números, los que introduzca el usuario por teclado, y saque el resultado por pantalla. Nota: el primer carácter no numérico que introduzca el usuario indicará que no va a introducir más números. 4.41. Leer secuencia de números y mostrar la suma de dichos números hasta que se introduce un número negativo. 4.42. Pedir al usuario una contraseña hasta que este de la correcta o decida salir. 4.43. El número mágico. UNIDAD 5: 5.1. ARREGLOS. Hasta ahora hemos trabajado con datos simples que representaban un número, un carácter o una cadena. Sin embargo, en ocasiones se necesita procesar una colecció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 una semana, etc. El procesamiento de estos datos utilizando datos simples es muy difícil. Por eso, se han definido en la programación varias estructuras de datos, que son una colección caracterizada por alguna organización y por las operaciones que se definen en ella. Una de estas estructuras son los arreglos. Un arreglo es un conjunto de elementos del mismo tipo que comparten un nombre común; algo así como una variable que puede almacenar al mismo tiempo más de un valor. Los arreglos reciben también el nombre de tablas, listas o 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 sus elementos son todos del mismo tipo (numéricos o alfanumé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 debe tener un nombre. Aquí hemos llamado A a nuestro arreglo ejemplo. Los elementos que están en el arreglo A ocupan todos una determinada posición dentro de él: Así, el número -5 se encuentra en la posición 3; el 99 en la posición 10 y el 12 en la posición 1. A(3) = - 5 A(10) = 99 A(1) = 12 Vemos, entonces que un elemento se referencia por el nombre del arreglo y la posición que ocupa dentro de él. El número que se coloca entre paréntesis se llama índice y designa la posición del elemento en el arreglo. Cada elemento del arreglo se puede procesar como si fuera una variable simple. La dimensión de un arreglo está dada por la cantidad de elementos que contiene y debe ser definida al comenzar el programa. A los arreglos unidimensionales se les suele conocer como vectores. 5.2. CARGAR UN ARREGLO La asignación de valores a los elementos de un vector se realiza de esta forma: A(4) � 0 A(7) � 4 Por supuesto que no vamos a cargar un vector de 100 elementos, escribiendo 100 asignaciones. 23 La carga de un vector se hace por medio del ciclo desde....fin desde . Nuestro bucle va a comenzar en 1 hasta un número N que es la longitud del vector. Pero antes, no demos olvidar que el vector debe ser dimensionado. 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 casi siempre esta forma inicio Leer dimensión del vector Dimensionar Vector Cargar 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 bien diferenciados: • Un bucle para la carga • Un bucle para el proceso • Un bucle para la impresión Aunque la carga y el proceso pueden hacersedentro de un solo bucle, particularmente no recomiendo esta práctica, ya que casi siempre crea dificultades innecesarias. Ejercicio: Cargar un vector de 30 componentes. No olvidemos que antes de cargar un vector debemos dimensionarlo. En este caso la dimensión del vector es 30. Luego habilitaremos un bucle desde....fin desde comenzando en 1 hasta 30. Llamaremos V a nuestro vector. inicio dimensionar v(30) desde i= 1 hasta 30 leer v(i) fin desde fin De esta forma hemos cargado un arreglo v con componentes. Ahora bien, el usuario deberá siempre poder determinar la dimensión del arreglo sobre el que quiera trabajar. Por eso, vamos a leer la dimensión del vector 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 casi exactamente igual al proceso de carga, con la diferencia que en lugar de leer, vamos a imprimir. Para el caso de nuestro 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 un arreglo son todos del mismo tipo (todos numéricos o todos alfanuméricos). 5.4. PROCESANDO UN ARREGLO Ejercicio: Leer un vector de N componentes. Hallar la suma 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 la suma todos los elementos, sobre la cantidad. Nuestro arreglo (al que llamaremos h) va a tener una dimensió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. inicio suma � 0 leer d dimensionar h (d) desde i = 1 hasta h leer h (i) fin desde desde i = 1 hasta d suma �suma + h(i) fin desde promedio �suma/d imprimir h (i) fin 24 desde impimir ""La suma de los elementos del vector es:", suma imprimir "El promedio es:", promedio fin 5.5. ARREGLOS BIDIMENSIONALES Matrices Un arreglo bidimensional o matriz es un conjunto de datos homogéneos (todos del mismo tipo), cada uno de los cuales debe referenciarse por dos índices. Los índices determinan 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úmero de filas. Aquí M=5 y N=6. El número total de elementos de la matriz será entonces 5*6 = 30. De la misma forma que los vectores, una matriz debe tener un nombre. Llamaremos MAT a nuestra matriz ejemplo y determinaremos la posición de algunos de sus elementos. 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ás adelante como cargar una matriz) para referirnos a un elemento debemos conocer en que fila y que columna reside 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 que ser nombrado y dimensionado antes de ser utilizado, una matriz también. La instrucción para dimensionar un matriz es: dimensionar M(5,6) La carga de datos se realiza de la misma forma que un vector, por medio de un bucle desde....fin desde; solo que en este caso, vamos a necesitar 2 bucles; uno que recorra las filas y otro las columnas: desde fila = 1 hasta 5 desde columna = 1 hasta 6 leer 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 esta manera: 25 Una matriz también puede recorrerse por columnas. Al programar, no siempre podremos predefinir el tamaño de un matriz, por eso, solicitaremos al usuario que ingrese la cantidad de filas y columnas con las que desea dimensionar una matriz: inicio leer cantfila, cantcolumna dimesionar MAT(cantfila, cantcolumna) desde fila=1 hasta cantfila desde columna=1 hasta cantcolumna leer MAT(fila,columna) fin-desde fin-desde fin Este algoritmo solicita las dimensiones de la matriz, la dimensiona 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 que calcula el promedio de los elementos de una matriz. inicio leer cantfila, cantcolumna dimensionar 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 cantfila desde J=1 hasta cantcolumna imprimir M(I, J) fin-desde fin-desde fin Una matriz que tiene la misma cantidad de filas y de columnas se llama matriz cuadrada. 1 2 3 4 5 2 3 4 5 Esta es una matriz cuadrada de orden 5. Las matrices cuadradas tienen ciertas características; por ejemplo, los elementos en donde el número de filas es igual 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ón determinada por los elementos situados sobre la diagonal 26 principal se llama matriz triangular superior que tiene la propiedad de que fila < columna. La matriz triangular inferior es la zona situada debajo de la diagonal principal, cuyos índices cumplen con la propiedad: fila > columna. Elementos de la Matriz triangular superior Elementos de la Matriz triangular inferior Operaciones con Matrices 1- Suma de matrices: Si A y B son dos matrices de igual dimensión (MxN), entonces la suma de Ay B existe y es igual a una matriz C también de dimensión MxN en donde 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 una matriz C que es la suma de A y B 11 14 13 69 21 19 89 52 12 20 151 30 2- Producto Escalar por una matriz: Si A es una matriz de orden (dimensión) MxN y K es un escalar, el producto de K*A es igual a otra matriz D también de orden MxN en donde casa D (i, j) = K * A (i ,j):
Compartir