El conjunto de operaciones que se realizan sobre una cierta información se denomina tratamiento de la información, el mismo que va a constar de los siguientes elementos: ENTRADA TRATAMIENTO DE LA INFORMACIÓN PROCESO SALIDA RECOGIDA DE DATOS DEPURACION DE DATOS ALMACENAMIENTO ARITMETICO Y/O LÓGICO RECOGIDA DE RESULTADOS DISTRIBUCION DE RESULTADOS HERRAMIENTAS QUE AYUDAN A FORMAR UN PROGRAMA 1. El Hardware compuesto por las computadoras y sus dispositivos periféricos. 2. El Software entre los cuales se encuentran los sistemas operativos. 3. Los Algoritmos para resolver los problemas de programación así como programas para medir, evaluar y probar la corrección del programa. 4. Una metodología de programación. CARACTERISTICAS QUE DEBE CUMPLIR UN PROGRAMA 1. 2. 3. 4. Funcionar y realizar la tarea encomendada. Poder ser leído y comprendido. Poder ser modificado si es necesario sin mucho esfuerzo. Terminar en el tiempo previsto y dentro del presupuesto. Cualquier programa escrito por el programador en lenguaje de alto nivel (PASCAL, FORTRAN, ALGOL, C, etc.) conocido como PROGRAMA FUENTE debe ser traducido mediante un programa compilador, el mismo que es específico del computador y es el único que entiende la máquina, el computador verifica que las instrucciones del programador estén escritas regidas a las reglas semánticas y sintácticas del lenguaje utilizando, en el caso de existir mensajes de error, indica que tipo de error es donde se encuentra y cual es la solución. El momento de no existir ningún tipo de error, el programa compilador traducirá el programa fuente a un programa objeto en lenguaje máquina. El programa compilado (traducido al lenguaje maquina) se denomina programa objeto o ejecutable que junto con los datos introducidos por el usuario se ejecuta para obtener resultados como indica el gráfico. 1 DATOS PROGRAMA FUENTE PROGRAMADOR LENGUAJE LLL NATURAL EJECUCION PROGRAMA COMPILADO PROGRAMA OBJETO COMPUTADOR LENGUAJE MAQUINA EJECUCION PROGRAMA OBJETO RESULTADO ALGORITMOS “Las computadoras hacen lo que se les indica que hagan, que no siempre es necesariamente lo que el usuario quiere que haga” se debe evitar la repetición de procesos o de instrucciones que se le proporciona al computador. En la solución de cualquier problema mediante la computadora existen 2 fases: FASE DE SOLUCION.- Se concentra el programador para diseñar un algoritmo que resuelva esta fase es independiente de los lenguajes la solución elaborada puede traducirse al lenguaje que se desee o más adecuado según su aplicación. FASE DE INSTALACION.- Consiste en la traducción del algoritmo elaborado en lenguaje de alto nivel. ALGORITMO.- Es una secuencia ordenada de pasos donde queda marginada la repetición de procesos que lleva a la solución de un problema en un tiempo finito, tiene varias propiedades. 1. Los pasos de un Algoritmo deben ser simples. 2. Seguir un orden establecido. 3. Los Algoritmos deben ser efectivos en un número finito de pasos. CARACTERISTICAS DE LOS ALGORITMOS 1. Entrada: Constituida por el conjunto de datos con los que se trabajara. 2. Proceso: instrucciones que conjuntamente con los datos realizar una tarea determinada. 3. Salida: Esta dada por los resultados de la información procesada con los datos introducidos. TIPOS DE DATOS.Según los procesos que se vaya a realizar en un programa se debe ingresar los datos necesarios para lo cual se los clasifica de la siguiente manera: 2 NUMERICOS INDICAN CANTIDAD 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 REALES ALFABETICOS TIPO DE DATOS ENTEROS ALFANUMERICOS NUMERICOS INDICAN POSICION SIMBOLOS ESPECÍFICOS A, b, c, d, e,...... CHART un caracter STRING uno o varios caracteres 0, 1, 2, 3, 4, 5, 6,....... ,;.:-_[]{} IDENTIFICADORES.Es un carácter o conjunto de caracteres que como función tiene la de representar algún valor o información que se le asigne a este. El identificador debe cumplir con algunas características para que se llame así: 1. Siempre debe empezar con un carácter alfabético. 2. Entre un carácter y otro nunca debe existir espacios en blanco. 3. A continuación del primer carácter alfabético puede ir otro carácter cualesquiera Eje. Ejemplo A A5 5A 6 Ejemplo Ejemplo-2 es o no un identificador. – si – si – no – no - si - si OPERACIÓN DE ASIGNACION.En una operación de asignación al identificador que se encuentra a la izquierda del signo de igualdad será el receptor de la operación o del valor que provenga de la operación que se encuentra a la derecha Ej. C=A+B Que indica que el resultado de A + B se le asigne o almacene al identificador C VARIABLE.Es un identificador que parte al inicio del programa con un valor mientras se ejecuta el programa hasta finalizarlo, va tomando varios valores, almacenando en él ultimo valor Ej. 3 Sí A parte con el valor de 2 y B con el valor de 3, C=A+B C=C*B C=C/A C en la primera instrucción tomaría el valor de 5, en la segunda el valor de 8 y por ultimo el valor de C quedaría en 4. CONSTANTE.Similar a la variable con la diferencia que ha un identificador se le da un único valor desde que inicia hasta que finaliza, por lo general los valores constantes representan magnitudes físicas, matemáticas, etc., así como también las constantes personalizadas por el programador OPERACIÓN DE ACUMULACION.Cuando se realiza una operación de acumulación sucesiva es importante dar un valor inicial al identificador, el mismo que no deberá altera el resultado de la primera operación de las tantas que se realizan para lo cual se sigue el formato 1. - VALOR INICIAL DEL ACUMULADOR. 2. - ACUMULADOR = ACUMULADOR (OPERACIÓN) VALOR CONSTA NUEVO ACTUAL +, -, *, / O VARIABLE Ejemplo Acu = 0 Acu = Acu + 3 En la primera ejecución se deberá sumar 0 + 3 y el valor nuevo del acumulador será 3, en una segunda ejecución el valor nuevo pasa a ser el valor actual del acumulador y sumado 3, el valor nuevo del acumulador será 6, y de esta forma se repite todo el proceso hasta que cumpla una cierta condición. CONTADOR.Se basa en el acumulador con sus mismas reglas pero limitado las operaciones que se puede realizar y que al ser contador como su nombre lo dice el valor con el que se opera debe ser constante. 1. - VALOR INICIAL DEL CONTADOR 2. - CONTADOR = CONTADOR (OPERACIÓN) VALOR CONSTA NUEVO ACTUAL +, - , CLASES DE OPERACIONES.Dependiendo de los datos que se tenga se puede realizar diferentes tipos de operación, se puede considerar entre las operaciones básicas las siguientes. + * / 4 ARITMETICAS OPERADORES AND NOR NOT LOGICAS RELACION = < > <> OPERADORES ARITMETICOS.Generalmente trabaja con los datos numéricos que son los únicos con los que se realizan operaciones. Los Operadores Aritméticos más usados como base para las operaciones, son la suma, resta, multiplicación, división que unidas con los diferentes datos numéricos se los representa así OPERACION SUMA RESTA MULTIPLICACIÓN DIVISION OPERADOR 1 ENTERO ENTERO REAL ENTERO ENTERO REAL ENTERO ENTERO REAL ENTERO ENTERO REAL OPERADOR 2 ENTERO REAL REAL ENTERO REAL REAL ENTERO REAL REAL ENTERO REAL REAL RESULTADO ENTERO REAL o Entero o Real ENTERO REAL o Entero o Real ENTERO Entero o real o Entero o Real Entero o real Entero o real Entero o real En el caso de la división existe una situación especial en donde se va a utilizar funciones de bibliotecas, que son procesos internos dentro del paquete de programación que facilita al usuario el trabajo de cálculo. Ej. las funciones de biblioteca para calcular las funciones trigonométricas, raíz cuadrada, potenciación, etc. NOTA : Para la división de solo valores enteros y para tener un resultado entero se utiliza dos funciones de biblioteca que son: DIV y MOD; cada una tiene su cualidad en el momento de operar. 5 Operador 1 Operador 1 Operador 1 operador 2 Residuo cociente DIV MOD operador 2 operador 2 = = COCIENTE RESIDUO Ejemplo 1. - 124 dividido para 6 124 DIV 6 = 20 124 MOD 6 = 4 Ejemplo 2. - 17.5 dividido para 5. No se puede utilizar en este ejemplo las funciones de biblioteca DIV o MOD por no ser los dos operadores enteros Dependiendo del ejercicio del que se va a realizar, o se usa el DIV o se usa el MOD ó los dos; no existe ninguna jerarquía entre los 2 operadores. Otra función de Biblioteca es el INT (X); siendo X un dato entero o real, indicando la función que toma la parte entera del número o parámetro X. C = INT (3,5) C= 3 E = INT (7,9) E=7 D = INT (4) D=4 JERARQUÍA DE LAS OPERACIONES 1. – Destrucción de paréntesis 2. – Potencia y Radical 3. – Multiplicación y División 4. – Suma y Resta 2+5*4–2+6 2+1*7 2 + 5 * 4 * 36 + 1 * 7 2 + 20 – 72 + 7 - 43 Cuando hay más de una operación, una a continuación de la otra que tenga la misma jerarquía, se opera de izquierda a derecha. S = 2+5/2.5+(7 (2+3*8/6-4) (7-3)/2 S= 2+5 / 2.5 + (7 (2+4-4) S= 2+5 / 2.5 + (7 (2 ) (2) S= 2+5 / 2.5 + 2401 (2) 6 S = 2405 OPERADORES LOGICOS.Este tipo de operadores permiten realizar por medio de un bloque de condición varias preguntas, utilizando cualquier tipo de datos. Como operadores bases entre los lógicos se tiene el operador AND (Y), que escogerá como condición verdadera si todas las preguntas son verdaderas, si por lo menos una es falsa ira por la opción falsa. El otro es el operador OR, que tiene un concepto contrario al anterior, es decir opta por la condición como verdadera si por lo menos una de las varias preguntas es verdadera, y es la condición falsa cuando todas las condiciones son falsas. Mientras que el operador lógico NOT niega lo que es verdadero y viceversa. OPERADORES DE RELACION O COMPARACION. Al igual que los otros tipos de operadores los de comparación tienen operadores bases como son: > (mayor que), < (menor que), él = (igual que). PROGRAMACION ESTRUCTURADA Conocida como programación modular ya que las instrucciones se ejecutan una tras de otra y de la misma manera será más conveniente realizar cualquier modificación. Entendiendo por modificación añadir, quitar, o cambiar algún bloque de proceso. REGLAS PARA UTILIZAR LA PROGRAMACIÓN ESTRUCTURAL 1. Siempre un programa debe tender a ser general y considerar todos los posibles casos que se pueden presentar. 2. Todas las estructuras deben poseer una sola entrada y una sola salida 3. Las estructuras son independientes entre sí indicando que cada estructura puede trabajar con otros datos. 4. Entre todas las estructuras se pueden combinar, o una estructura puede contener a otra, o también una estructura puede estar a continuación de otra. PASOS PARA LA RESOLUCION DEL PROBLEMA 1. Conocer a fondo y claramente el problema. 2. Una vez conocido el problema analizar si se tiene o no las herramientas para resolver el problema. 3. Trazar un plan o una metodología a seguir para resolver el problema. CLASIFICACION DE LAS ESTRUCTURAS DE PROGRAMACION 7 ESTRUCTURA SECUENCIAL CLASIFICACION ESTRUCTURAS ESTRUCTURA DE BIFURCACION O CONDICION ESTRUCTURA ITERACION O REPETICION B. SIMPLE B. ANIDADA B. COMPUESTA B. MULTIPLE EST. WHILE<CONDICION>DO EST. DO <CONDICIO>WHILE EST. FOT<VI>TO<VF>DO Donde VI igual a valor inicial y VF valor final. DIAGRAMAS DE FLUJO. Un diagrama de flujo es un paso intermedio entre el algoritmo y el lenguaje de programación, que se basa en un algoritmo ya que utiliza las mismas reglas, con la diferencia que en vez de utilizar palabras para representar una instrucción, en el diagrama de flujo se utiliza bloques, como los que se detalla a continuación BLOQUES UTILIZADOS PARA LA DIAGRAMACION BLOQUE NOMBRE TERMINAL ENTRADA DE DATOS ASIGNACION O PROCESO SALIDA DE RESULTADOS FUNCION Indica el inicio o fin de un diagrama de flujo para lo cual dentro del bloque debe ir la palabra inicio o fin respectivamente. En un D: F: debe existir un solo inicio y un solo final. Utilizando cualquier medio o periférico de entrada permite el ingreso de información, dentro de este bloque debe ir identificadores y no valores. Indica la ejecución de cualquier proceso ejecutable ó asignación de Información. Utilizando cualquier medio o periférico de salida permite dar a conocer los resultados obtenidos de los procesos, en este bloque se debe visualizar identificadores 8 CONDICION REPETICIÓN CONECTOR LINEAS DE FLUJO Utilizando por lo menos una pregunta aparecen dos o más alternativas cada una de estas ejecutando un proceso diferente, debiendo ejecutarse un solo de estos procesos. Controlada por una pregunta o condición permite ejecutar un proceso varias veces hasta que la condición diga lo contrario. Permite seguir el flujo del diagrama de una posición a otra por lo que se utiliza dos conectores. Uno donde se corta la secuencia y el segundo donde continua el proceso anterior dentro de la circunferencia debe ir un identificador siendo igual en ambos conectores. Indica la secuencia en la que se ejecutara cada una de las instrucciones del diagrama. ESTRUCTURA SECUENCIAL Es la estructura donde las instrucciones se ejecutan una a continuación de otra sin repetir ninguna de ellas o saltar de un lugar a otro, esta estructura es la base para las demás estructuras en vista de que existen cinco bloques que conforman la estructura y estos cinco bloques tendrán que encontrarse en las otras estructuras sin que sea factible la eliminación o el cambio de posición de cada uno de los bloques, lo que si puede suceder es que se aumente el número de bloques. Bloque 1 Bloque 2 INICIO LECTURA DE DATOS Bloque 3 PROCESO Bloque 4 SALIDA DE RESULTADO S Bloque 5 FIN 9 En el ejemplo No. 11 se pretenderá hacer notar lo semejante que es un algoritmo con un diagrama de flujo, claro esta que en el uno utilizando palabras y en los otro bloques que represente cada una de las instrucciones. 11. - Realizar en diagrama de flujo que calcule la velocidad lineal de un móvil. 1. - Inicio INICIO 2. - Leer (e, t) e, t B2 3. - V= e / t V= e t B3 e 20 B1 V 4. - Imprimir ( V ) FIN 5. - fin t 5 V 4 B4 B5 12. - Realizar en diagrama de flujo que transforme una cantidad X dada en horas a minutos. ( Como guía el presente ejercicio ya se resolvió como algoritmo en el ejercicio No. 1) INICIO h 1 3 m 60 180 h m= h*60 m FIN 3. - Realizar en diagrama de flujo que lea 2 valores sume estas cantidades e imprima su resultado, lea un 3er valor el mismo que se multiplicara con el resultado. Imprimir el nuevo resultado. ( El presente ejercicio se lo puede resolver de dos maneras diferentes, la primera en donde se detalla cada uno de los pasos tal y como dice el enunciado, mientras que el segundo agrupa los bloques que tienen igual instrucción y lo representa en uno solo, esta tarea es la más recomendable de presentar ya que ahorra espacio). 10 A B 3 2 C 5 D E 4 20 INICIO INICIO A, B A B C 4 6 10 A,B,D C = A+B D 2 E 20 C=A+B E=C*D C D C, E E=D*C FIN E FIN 14. - Realizar en diagrama de flujo que lea 2 valores, y como resultado imprima los 2 valores cambiando de variable (El ejercicio es muy practico ya que permite intercambiar de valores a las variables. Se puede resolver de dos maneras, la primera sin utilizar una variable auxiliar, es decir que se trabaje solamente con los dos identificadores de entrada, para lo cual se utiliza artificios como son las operaciones aritméticas. En el segundo caso si se utiliza una variable auxiliar, es decir un identificador que no se lee que en este caso es el identificador C. No se puede decir solamente que A=B y B=A, porque los dos identificadores quedaran con el mismo valor, perdiéndose el uno, ya que cada identificador puede almacenar varios valores, pero de uno en uno, es decir al entrar un nuevo valor se pierde el anterior A B 3 6 9 3 6 INICIO INICIO A,B A,B A = A+B B = A-B A = A-B C=A A=B B=C A,B A,B FIN FIN A 3 2 B 2 3 C 3 11 ESTRUCTURA DE BIFURCACIÓN La estructura de bifurcación conocida también como estructura de condición, ya que permite seleccionar una de dos o más alternativas, en las cuales existen diferentes procesos, utilizando para esto un bloque de condición. La bifurcación se divide en bifurcación simple, anidada, compuesta y múltiple. Bifurcación Simple: Permite seleccionar 1 de 2 alternativas posibles, presentándose esta bifurcación con los siguientes formatos. 1.- El primer formato es cuando tanto por el camino que cumple y no cumple la condición, existe un proceso diferente, ademas cumple que tiene una sola entrada y una sola salida. NO SI CONDICI. PROCESO 2 PROCESO 1 Si cumple la condición IF< condición > Then SI NO Proceso 1 Else SINO Proceso 2 2.- El segundo formato es similar al anterior, es decir existe las dos alternativas, pero cuando cumple la condición realiza un proceso, caso contrario existe el camino de salida pero sin ningún proceso, de la misma manera cumple la regla de una sola entrada y una sola salida. NO SI Si cumple <condición> entonces IF<coNDICIÓN> THEN Proceso. CONDIC IÓN PROCESO 3.- El tercer formato es especial ya que se presenta en algunos casos, a pesar de que en algunos lenguajes de programación no existe su codificación ya que no permite que exista un proceso cuando la condición no cumple sin antes exista un proceso cuando la 12 condición cumple, por lo que en el presente texto también se lo elimina, pero dando dos soluciones: NO SI CONDIC IÓN PROCESO NO EXISTE SOLUCIÓN CONDICIÓN = < > COMPLEMENTO ó <> > ó >= < ó =< Solución 1. Se puede utilizar el complemento del operador de la condición, de esta manera los procesos se invierten es decir lo que se resolvía por la alternativa de cumplir la condición pasa a ser un proceso de la alternativa de cuando no cumple la condición y viceversa. Solución 2. Se puede aumentar un proceso por la alternativa cuando cumple la condición, pero este proceso no debe alterar la ejecución del programa, los procesos que se puede realizar es la impresión de algún mensaje, o la asignación de un mismo valor. 13 15.- Realizar un diagrama de flujo que calcule si un número es positivo o negativo, considerando al cero como positivo. (el presente ejercicio es el mismo de los algoritmos, No. 3, se presenta en dos formas con la finalidad de hacer notar la solución 1 descrita anteriormente, en donde decía que al cambiar el operador de la condición los procesos se invertían, lo que se puede notar en el ejemplo que esta a continuación, se cambia el > por el complemento que será <. Esto se puede aplicar cuando se tenga el tercer formato de la estructura de bifurcación.) INICIO INICIO N 6 Positivo - 10 negativo N NO NO SI N>0 N<0 N, positivo N, positivo N,negativ o N SI N, negativo FIN FIN 16.- Realizar un diagrama de flujo que calcule si un número es par o impar. INICIO N 3 Impar 8 Par N R = N mod 2 no R=0 N”Impar” si N”par” FIN 14 17.- Realizar un diagrama de flujo que lea un número X, y si el número es impar imprima el número inmediato superior y en caso, de ser par imprima el mismo número.( El ejercicio se presta para entender las 2 solución para el formato 3 de la estructura de bifurcación, ya que se necesita realizar una condición pero solamente en una alternativa existe un proceso, mientras que en la otra no, entonces si el proceso se realiza cuando la condición no cumple, es de notar que cuando la condición cumple no existirá ningún proceso con lo que se estaría en el tercer caso de la estructura de bifurcación.) INICIO INICIO X N R = X mod 2 NO R=0 X = X+1 R = X mod 2 SI R=0 X = X+1 X X X FIN FIN 15 El primer caso sería el no valido para lo cual se daría la solución 2 donde se crea un proceso, en este caso se divide un proceso que sería en vez de que se imprima en una parte general se imprima parcialmente en cada alternativa de la condición con lo que estaría resulto en el segundo caso. O como el tercer caso donde se utiliza la primera solución utilizando la operación complementaria en la condición que seria del operador igual, el complemento el operador diferente. INICIO X R = X mod 2 R<>0 SI X = X+1 X FIN 16 BIFURCACIÓN ANIDADA Se fundamente en la Bifurcación simple con la diferencia que dentro de 1 condición existe una nueva condición, es decir dentro de una bifurcación existe como proceso o parte de este otra bifurcación simple repitiendo este proceso las veces necesarias siempre cumpliendo la regla que consiste en una entrada y una salida en cada bifurcación, como indica el esquema, además de los formatos anteriormente revisados en la bifurcación simple. E1 no si CONDICI ÓN 1 E4 NO PROCESO 1 SI E2 CONDICI ÓN 4 NO SI CONDICI ÓN 2 PROCESO 5 E3 NO SI CONDICI ÓN 3 PROCESO 4 S4 PROCESO 3 PROCESO 2 S2 S1 S3 17 Se puede notar en el ejercicio anterior que cada entrada tiene su salida, de la misma manera la condición uno contiene a la condición 2 y 4, mientras que la condición 2 contiene a la condición3. 18.- Realizar un diagrama de flujo que calcule el mayor valor de tres números leídos (no se considera para este ejercicio los números iguales en vista de que pide solamente el mayor valor). INICIO A,B,C SI A>B SI SI B>C C mayor A>C B mayor C mayor A mayor FIN En el ejercicio No. 18 y en adelante cuando se trate de este tipo de bifurcaciones, es aconsejable desde la segunda condición en adelante comparar siempre el resultado parcial obtenido hasta ese momento con las variables que faltaran comparar, es decir que sea cual sea el resultado en la segunda condición, no hace falta volver a comparar con la variable que se que do en la primera condición. 19.- Realizar un diagrama que calcule el mayor de 4 números leídos. 18 A B C D 3 2 5 4 2 3 5 4 INICIO A,B,C SI A>B SI A>C B>D C>D D mayor SI NO B>C NO C>D C mayor D mayor B mayor D mayor C mayor D mayor A>D SI A mayor FIN El ejercicio anterior para encontrar el número mayor de 4 números usa demasiadas condiciones, no se diga si se pidiera el mayor de 5 o 6 números se debería utilizar de 15 a 30 condiciones, que sería ya exagerado, mucho cuidado no mal sino que se debe resolver de una manera que no ocupe mucha memoria en la computadora ni que tampoco se demore mucho el programa en su ejecución. Para solucionar este problema se deberá usar una técnica de SOBREPOSICION DE VALORES. SOBREPOSICION DE VALORES.- El proceso consiste en utilizar o las mismas variables de lectura u otras variables auxiliares, la finalidad es la de en una condición sin importar por que alternativa opte, el resultado parcial hasta el total ir asignando a una misma variable o identificador, además la bifurcación con sobreposición de valores significa utilizar la misma bifurcación simple o anidada. 20.- Resolver el ejercicio anterior utilizando la sobreposición de valores que consisten en utilizar la Bifurcación simple una tras de otra y asignado a una misma variable al resultado total o parcial en una sola variable. INICIO A,B,C A>B May = B May = A C > May May = C 19 May Tanto en el ejercicio anterior como en el siguiente se utiliza la variable auxiliar may para ir asignando el resultado parcial hasta el final y luego imprimir el resultado. El caso del ejercicio para calcular el número mayor se utiliza dos condiciones, el mismo ejercicio utilizando bifurcaciones anidadas se utilizo tres condiciones( ver ejercicios No. 18 y 20 ), mientras que en el ejercicio siguiente para calcular el mayor de 4 números se utiliza 3 condiciones, y resolviendo con la bifurcación anidada se utiliza 8 condiciones (ver ejercicio No. 19 y 21 ) es notorio la simplificación del uso de condiciones al resolver por el método de sobreposición de valores. Pero no siempre se puede resolver de esta manera, ni tampoco se puede decir que la una manera es mejor que la otra, esto queda a criterio del programador. De la misma de manera el número de condiciones va estar dado por el número de variables de lectura menos 1. También se debe tomar en cuenta que por cada resultado que se va ha imprimir se debe utilizar las variables auxiliares 21.- Realizar un diagrama de flujo que calcule el mayor de 4 números leídos usando la sobreposición de valores INICIO A,B,C,D N Variables = n-1 Condiciones A>B May = B May = A C > May May = C D > May May = D May FIN 20 BIFURCACION COMPUESTA Es representado por la bifurcación simple o anidada con la diferencia de que en vez de utilizar una sola pregunta en el bloque de condición puede utilizar 2 o más preguntas en un solo bloque, unidas estas preguntas por medio de los operadores lógicos AND y OR, los que tienen como característica trabajar con 2 o más preguntas, cada una de estas preguntas pudiendo ser verdadera o falso. Para tener el resultado final se debe considerar lo descrito en la parte de los operadores lógicos (pag 12). 22.- Realizar un diagrama de flujo que indique si un número X leído cumple o no las siguientes condiciones, que sea entero y positivo. (Un número es positivo si es mayor o igual a cero, mientras que para ser entero, se utiliza la función de biblioteca ENT. Del número, tomando la parte entera del número, este resultado se compara con el mismo número y si es igual, entonces el valor leído es entero, caso contrario no lo es.) El ejercicio se resuelve de dos maneras la primera usando bifurcación simple para lo cual se utiliza dos condiciones. La segunda ya se utiliza la bifurcación múltiple dándose cuenta que en una sola condición se realiza las dos preguntas. (Bifurcación simple) INICIO X NO SI X>0 NO SI X = ENT (X) “No” “No” “Si” FIN (Bifurcación compuesta) INICIO X X > 0 AND X= ENT (X) “No” SI “Si” 21 23.- Realizar un diagrama de flujo que lea un número entre 1 y 999, para formar un nuevo número donde los dígitos se encuentren del último al primero.( Primeramente se debe controlar que el número sea mayor a 0 y menor a 1000, es decir máximo de tres dígitos y a la vez entero. Para separar los dígitos se divide el número para 10 usando las funciones de biblioteca y los resultados se van almacenando de acuerdo a la posición de donde se encuentra el dígito, entre Unidad, Decena y Centena, existiendo una variable Auxiliar. Una vez separado los dígitos, se procede a unir los mismos pero tomando desde el último hasta el primero y multiplicando por su valor respectivo de 100, 10 y 1, para terminar sumando estos resultados. INICIO X (X > 0) AND (X<1000) AND (ENT(X)= X) And X<100 No cumple SI U = X MOD 10 A = X DIV 10 C = A MOD 10 D = A MOD 10 S = (U*100)+(D*10)+C S FIN 24.- Realizar un diagrama de flujo que lea un número N e Imprimir si es múltiplo de 5 y número par a la vez .(El ejercicio al igual que los otros se resuelve de dos formas diferentes con relación a las preguntas de la condición, porque el proceso es diferente. INICIO INICIO X X X MOD 5 = 0 AND X MOD = O “No Cumple” M = X MOD 5 P = X MOD 2 SI “Si Cumple” M=0 and P=0 “No” 22 “Si” BIFURCACIÓN MULTIPLE También conocida como estructura tipo CASE o MENU, se fundamenta en los formatos de la bifurcación simple, anidada teniendo como características que por medio de una condición que se ejecuta automáticamente permite seleccionar uno de varios caminos posibles, cada uno de estos contiene un proceso diferente. Así también como otra característica se acostumbra por lo general antes de cualquier proceso desplazar en un bloque el menú o las operaciones con las que trabajará. Tanto el ingreso de datos como la salida de resultados puede darse uno solo para todo el proceso o una diferente para cada uno como se presenta el esquema. OPCIONES DEL MENU 1. ….. 2. ….. 3. ….. N….. Lectura de la opción Seleccionada OPCION = ? 1 ELSE 2 3 PROCE 1 PROCE 2 PROCE 3 4 PROCE 4 5 PROCE 5 N PROCE N MENSAJE El formato anterior presenta una estructura de bifurcación múltiple con varios caminos, el funcionamiento consiste en que una vez leída la opción seleccionada, el lenguaje de programación va buscando de camino en camino en orden, cual es la opción seleccionada, si no encuentra entonces opta por irse por un camino else (sino), donde se puede enviar un mensaje indicando que la opción seleccionada no existe. 25.- Realizar un diagrama de flujo que calcule individualmente cada uno de los parámetros del Movimiento rectilíneo uniforme. ( Los parámetros son el Espacio, Velocidad y Tiempo, como se vera lo primero que se visualiza en el diagrama es los procesos que se puede realizar, a continuación se lee el numeral o literal que preceda al proceso a ejecuta, por medio de la condición y en una forma automática se selecciona la alternativa y procede a ejecutarse. Ejecuta una sola de las tantas opciones existentes). 23 INICIO 1. Espa 2. Veco 3. Tiem OP 1 NO OP=? 2 3 V.T NO EXISTE E.T V.E V = E/T T = E/V V T E = V*T E FIN En este caso los datos deben ser individuales ya que cada proceso es diferente, de la misma manera como el resultado primeramente tiene diferentes unidades de medida, y luego están representados por diferentes variables entonces también las impresiones deben ser individuales. 26.- Realizar un diagrama de flujo que calcule el área de las siguientes figuras geométricas: Cuadrado, rectángulo, triángulo y circunferencia. (Como en el caso anterior, los procesos son diferentes por lo tanto la lectura de los datos se debe realizar en cada camino de las alternativas, el resultado puede tener dos opciones si se almacena en diferentes identificadores se debería imprimir debajo de cada proceso, pero como en el ejemplo se presenta en un mismo identificador, entonces se puede realizar una impresión para todos los procesos. 24 INICIO 1. “Area del cuadrado” 2. “Area del rectángulo” 3. Area del triángulo” 4. Area de circunferencia X X=? C A=L*L B,H A=B*H NO EXISTE B,H A=B*H/2 r A=2Π.r2 A FIN 27.- En una empresa que contrata solo emplea nacional todos los emplea gana un mismo sueldo con la diferencia de que ganan un porcentaje más dependiendo de la región de donde provienen con las siguientes condiciones. - Proviene del oriente gana un Región insular Costa Sierra 40% más el sueldo básico 50% 30% 20% 25 INICIO 1. R insular 2. R oriente 3. R costa 4. R sierra OP;SB OP = ? NO EXISTE ST=SB+ SB + 50 100 ST=SB+ SB + 40 100 ST=SB+ SB + 30 100 ST=SB SB + 20 100 ST FIN En este caso es algo particular ya que al decir que el sueldo básico ( SB ) es igual para todos los empleador, entonces no hace falta leer en cada alternativa sino uno solo antes de la condición, de la misma manera como se esta calculando el sueldo total ( ST ), en todas las opciones y se almacena en una misma variable entonces se realiza una sola impresión Se podría concluir diciendo que cada alternativa que existe en una bifurcación múltiple es como tener un programa independiente. 26 ESTRUCUTURA DE REPETICIÓN O INTERACCIÓN Este tipo de estructura permite realizar varias veces un mismo proceso considerando siempre el estado que presenta la condición que es la que permite repetir un proceso. Por lo general una estructura de repetición contiene 4 parámetros fundamentales por lo general pero no necesariamente. Estos parámetros son las siguientes. - Dar un valor inicial a un contador Utilizar una condición que por lo general se compare entre el contador y el número máximo de veces que se requiere que se repita el proceso. El proceso de repetición propiamente dicho La modificación de uno de los 2 parámetros que actúan en la condición. Los parámetros enumerados anteriormente no necesariamente deben seguir el orden establecido sino que depende del tipo de estructura utilizada. Es así que se tiene las estructuras de repetición: 1. WHILE < CONDICIÓN > DO 2. REPEAT < CONDICIÓN > UNTIL 3. FOR < VI > TO < VF > DO Donde < condición > significa que puede realizarse cualquier condición o pregunta, en tanto que < VI > quiere decir un valor inicial, y < VF > será reemplazado por valor final. Los formatos de cada una de estas estructuras se estudiara a continuación ya que tienen sus características propias: ESTRUCTURA WILE < CONDICION > DO Valor inicial del contador CONDICIÓN SI PROCESO NO Modificación de uno de los 2 parámetros 27 Características. a) b) c) d) Se ejecuta primero la condición y luego el proceso Se repite el proceso si sólo si cumple la condición. Por lo general si el contador empieza en 1 la condición será < si el contador empieza en 0 será < El número mínimo de repeticiones del proceso es 0 veces el máximo N veces EST. REPEAT <CONDICION> UNTIL Valor inicial del contador PROCESO Modificación de uno de los 2 parámetros de condición NO CONDICIÓN SI Características a) b) c) d) Se ejecuta primero el proceso y luego la condiciónSe repite el proceso hasta que la condición sea verdadera o dicho en otras palabras mientras la condición sea falso. Si el contador = 1 la condición podría ser > Si el contador = 0 la condición podría ser > El número mínimo de veces que se repite el proceso es 1 veces y el número máximo N veces. EST. FOR < Valor Inicial > TO < Valor Final > DO VI;VF; INCREMT. PROCESO 28 Características. a) b) c) d) e) En un solo bloque conocido como FOR TO DO se representa 3 bloques representados en otras estructuras ( el VI igual a iniciar en un valor al contador, VF, similar a la condición y el Incremento igual a la modificación de uno de los dos parámetros de la condición. El valor del incremento puede ser solamente + 1 o – 1 Si VI<VF entonces se supone la condición < y el incremento de +1) Si VI>VF entonces se supone la condición es > o = y el incremento de –1) El número mínimo de veces que se repite un proceso es 0 veces, mientras que el número máximo N veces. Cuando la línea de flujo ingresa por la parte superior del bloque del for, entonces el contador parte con el valor específico asignado, mientras que si continua la línea de flujo por la parte lateral significa que se debe incrementar al ultimo valor del contador. 28.- Realizar un Diagrama de Flujo utilizando las tres estructuras de repetición para que realice como proceso la impresión de N veces la palabra PRUEBA.( N es igual a las veces que se va imprimir la palabra; I es un contador. INICIO N 0 2 N I 1 1 2 3 IMPRIME 1 2 I=1 I<N NO SI “PRUEBA” FIN I = I=1 29 INICIO N 0 N 2 I 1 2 1 2 3 IMPRIME I=1 “PRUEBA” I = I=1 I>N NO SI FIN INICIO N I = 1; N = 1 N 0 3 I 1 1 2 3 4 IMPRIME “PRUEBA” FIN Como se puede ver el mismo ejercicio se resuelve utilizando las tres estructuras de repetición, pero no siempre se va a poder realizar esta tarea. 30 29.- Realizar un diagrama de flujo que imprima los N primeros números impares. (El ejercicio se resolverá con las tres estructuras de repetición, además esta ya resuelto en el ejercicio No. 7 con la diferencia que son los pares, y en este último pide los impares para lo cual el único cambio sería, en vez de empezar en 2 el un contador ( P ) ahora empezar en uno por ser el primer número impar. ) Estructura WHILE < CONDICION > DO INICIO N I=1 P=1 I<N P FIN P= P+2 I = I+1 Estructura FOR…TO… DO INICIO N ESTRUCTURA REPEAT ….UNTIL INICIO N P=1 I=1 P=1 I = 1; N = 1 P P=p+2 FIN P I=I+1 P = P+ 2 I >N 31 FIN 30.- Realizar un diagrama de flujo que imprima los N primeros números impares, pero utilizando un solo contador. (Basándose en el ejercicio anterior se puede resolver el nuevo ejercicio, tomando como parte del resultado que el contador que se use va ir de uno en uno y para sacra los números impares se debería multiplicar por 2 y se tendría 2, 4, 6, etc. Y de ahí a cada valor se debería restar uno y se tendría 1, 3, 5, etc.) INICIO N I=1 I<N SI A = 2+I I = I+1 FIN A INICIO INICIO N N I=1 I = 1; N = 1 A=I+2 A=I*2 I=I+1 A A FIN I >N FIN 32 31.- Realizar un diagrama de flujo que imprima cada uno de los términos de la siguiente serie. S = 2, 5, 8, 11, 14, .........., (3N-1).( Lo principal en las serie es fijarse en la formula del enésimo término, ya que de ahí va saliendo cada uno de los valores, por ejemplo del ejercicio planteado, al tener (3N-1), si N se le reemplaza por el contador que es I, el mismo que tomara valores de 1 hasta N, entonces cuando I vale uno en la formula se cambiaría ( 3*1-1= 2), cuando sea I=2 (3*2-1=5), si I=3, (3*3-1=8), de esta manera, se obtiene todos los valores. En el diagrama de flujo cuando toque el punto de calcular el termino solamente se pone 3*I-1). INICIO INICIO N N I=1 I<N NO I=1; N; 1 T=3*I-1 SI T T = 3*I-1 I=I+1 FIN FIN T INICIO N I=1 T = 3*I-1 I=I+1 T NO I>N SI FIN 33 ECUACION PARA CALCUALR LA FORMULA DEL ENESIMO TERMINO ENESIMO = TERMINO VALOR DEL POSICION INTERVALO * DEL ENTRE DOS TERMINO VALORES CONSECUTIVOS + VALOR DEL VALOR PRIMER - DEL TERMINO INTERVALO Se debe aclarar que la formula trabaja solamente para calcular el valor y no el signo del término. 32.- Imprimir cada uno de los términos de la serie S = 2, 9, 16, 2 ................ (7N - 5) INICIO N I=1 I<N NO SI T = 7*I-5 I=I+1 FIN T En este ejemplo se puede notar que tiene la misma solución del anterior con la diferencia de la formula del enésimo término, por lo que cuando se trate de una serie, sed tomaría el diagrama anterior como plantilla. 32.- Imprimir cada uno de los términos de la siguiente serie S = 2, -4, 6, -8, 10, -12, ......... (2N). ( La diferencia con el ejercicio anterior es de que los términos van con un signo intercalado de positivo a negativo, existiendo diferentes maneras de resolver, viendo a continuación los siguientes. En este caso se utiliza un identificador cualquiera asignado aquí con el nombre SIG, que debe empezar en el valor de 1, por que una cantidad multiplicado por 1 da la misma cantidad, entonces no cambia de valor, lo que interesa es cambiar el signo, para lo cual si el primer término es negativo el 34 identificador SIG deberá empezar en –1, pero si el primer término es positivo deberá comenzar en 1 positivo) INICIO INICIO N N Sig = 1 I=1 Sig = 1 R = (2*1)*Sig Sig = Sig(-1) I = I+1 I = 1; N;1 T T = (2*1) * Sig Sig = Sig(-1) NO I>N T SI SI FIN FIN INICIO N I=1 I<N SI T = (2*I)*(-1)↑(i+1) I=I+1 FIN T 35 33.- Realizar un diagrama de flujo que de un curso de n estudiantes lea una nota por cada uno suponiendo que las notas va de 0 a 20 se desea encontrar la mayor nota obtenida en el curso.(Para este ejercicio donde existe un rango de valores como datos que se va a ingresar se debe considerar que se debe iniciar una variable en algún valor para tener con que comparar el primer dato ingresado, ahora con que valor se compara el primer dato?, si esta pidiendo el mayor valor ingresado, se deberá comparar con el menor valor del rango de datos dados, y en el otro caso viceversa). INICIO N MAY = 0 I=1 I<N NOTA MAY NOTA>MAY FIN MAY = SI NOTA I=I+1 36 INICIO INICIO N N MAY = 0 MAY = 0 I=1 I = 1; N; 1 NOTA NOTA NOTA>M AY MAY = NOTA NOTA>M AY MAY = NOTA I >N MAY FIN MAY FIN Si se quisiera calcular la nota menor los cambios sería, en la variable may no empezar en cero sino en 20, y cambiar el signo de la bifurcación en vez de NOTA > MAY, iría NOTA <MAY, incluso si se desea cambiar el identificador MAY por MEN. 34.- Realice un diagrama de flujo que lea N valores diferentes que pueden ser solo positivos, o solo negativos o combinados, y calcule cual es el valor mayor ingresado. (En el presente caso no tiene un rango de valores en el cual va ser ingresado los datos como en el caso anterior, el problema se presenta cuando el primer dato ingresado con que valor se va ha comparar sino no hay rangos, entonces lo mas factible será comparar el primer valor con si mismo, ahora cuando es el primer valor ingresado?, cuando el contador utilizado sea igual a uno, que va ser una sola vez). 37 INICIO N I=1 I<N SI NO MAY X NO I=1 SI MAY = X FIN NO X >MAY SI MAY = X I=I+1 Este ejercicio puede funcionar también para calcular el menor elemento leído, solamente cambiando el signo de la segunda bifurcación. El ejercicio No. 33 puede ser resuelto con el diagrama No.34, lo que no ocurre con el ejercicio 34, no se puede resolver con el diagrama No.33. 38 El mismo ejercicio anterior pero con la estructura Repeat…. Until. INICIO N I=1 X I=1 MAY = X X > MAY MAY = X I=I+1 I >N MAY FIN 39 35.- Realizar un diagrama de flujo que cuente cuantos dígitos compone a un número X leído.( Este ejercicio sirve para demostrar que no siempre en una estructura de repetición entran los cuatro parámetros vistos anteriormente, sino que hay ejercicios como el que sigue que se sale del formato pero sigue siendo estructura de repetición. Se debe notar que en la condición no se utiliza el contador, además el contador no se esta utilizando para ver el numero de procesos que se esta realizando). INICIO X C=0 X<>0 SI C=C+1 X = X DIV IO C FIN INICIO X C=0 C=C+1 X = X DIV 10 X<>0 C FIN 40 ESTRUCTURA REPEAT UNTIL COMO ESTRUCTURA DE CONTROL Y REPETICION. Además de ser una estructura de repetición la estructura repeat … until se puede utilizar también como una estructura de control, aprovechando la característica de repetir por lo menos una vez el proceso, de esta forma se puede usar para controlar que cumpla una instrucción específica, como es el caso de los datos ingresados, si es posible esta parte del control transformarle a otra estructura siempre y cuando se cumpla con las reglas de cada estructura, sin embargo no es aconsejable dicho cambio. 36.- Realizar un diagrama de flujo que ingrese el año de nacimiento de una persona y calcule su edad.( Anteriormente ya se resolvió este ejercicio pero sin no cumplía la condición emitía un mensaje y salía del programa, ahora es otro tipo de control, ya que hasta que no ingrese los datos bien, se repetirá la lectura). INICIO AA; AN AA>AN E = AA - AN C FIN 41 37.- Realice un diagrama de flujo que calcule el factorial de un numero X. (el factorial es igual a la multiplicación sucesiva del número hasta 1. Ejemplo: factorial de 5 es igual a 5*4*3*2*1 igual 120. Para poder calcular el factorial el número debe ser positivo ( X< 0) y entero (ENT(X) = X), por lo tanto estos deben ser los controles que se utilicen.) INICIO X (X>0) AND ( ENT( X)= X) NO SI P=1 I = 1; X;1 P=P*I P FIN 42 INICIO INICIO X X X > 0 AND ENT X = X X>0 AND ENT X = X NO SI I=1 P=1 P = P*I I=I+1 I=1 P=1 I<X NO I>X SI P = P*I I=I+1 P P FIN FIN Se puede notar en el ejercicio anterior que esta resuelto de las tres formas de repetición, pero la parte del control se notara que no cambia en nada, sino solo la parte del proceso mismo. 43 38.- Realizar un diagrama de flujo que lea 2 números enteros positivos, para obtener el resultado de multiplicar dichos 2 valores, pero realizando procesos de sumas solamente. INICIO A,B (A>0) AND (A>B) AND (ENT A=A)AND ENT B = B I=1 S=0 I<A NO SI S=S+B I=I+1 S FIN En este caso se supone que no se conoce la operación de la multiplicación, por lo que se opta el utilizar la operación base de la multiplicación que es la suma, es decir se puede sumar A veces B o B veces sumar A. Nuevamente se utiliza las tres formas de la estructura de repetición 44 INICIO A,B (A>0) AND (A>B) AND (ENT A=A)AND (ENT B = B) I=1 S=O INICIO A,B S=S+B I=I+1 I >A (A>0) AND (A>B) AND (ENT A=A) AND (ENT B = B) S SI S=0 FIN I = 1; A;1 S=S+B S FIN 45 ARREGLOS A diferencia de una variable simple en donde puede tomar varios valores, pero que queda almacenada 1 y que es el último ingresado, en un arreglo de igual manera se puede ingresar muchos valore que se almacenan uno a continuación de otro en posiciones no iguales, de esta manera permite ubicar en cualquier momento un dato. Los arreglos se dividen en: UNIDIMENSIONALES, BIDIMENSIONALES ARREGLO UNIDIMENSIONAL.- También conocido como vector, almacena la información ingresada en orden de 1 en 1, se representa por una tabla que se divide en dos. La primera parte representa a la posición del elemento dentro del vector. La segunda parte indica el contenido de cada uno de los elementos del vector, Horizontalmente se divide en N partes o en N elementos que contienen el vector, los elementos o datos de un vector deben ser del mismo tipo. Solo númericos, o solo alfanumericos. A sí Posición Contenidos 1 2 . . N Casa 50 A5 Ejemplo Elemento Para identificar un vector se usa al igual que las variables un carácter o un conjunto de caracteres y a continuación encerrados entre paréntesis un subíndice que por lo general es el contador que se utiliza en el diagrama, ya que recorre desde la primera posición hasta la última posición del vector, notando con esto que para cualquier proceso (lectura, escritura o instrucción se utilizará por lo menos una estructura de repetición para que realice el recorrido). Nombre (Subíndice) V (I) V (I) Arreglo X Variable simple Se estaría leyendo el vector V en las posiciones I. Se debe indicar que todos los ejercicios resueltos hasta este punto o sin utilizar vectores, se los puede resolver y de una manera más fácil, utilizando vectores. LECTURA Y ESCRITURA DE UN VECTOR Como se dijo anteriormente para todo proceso con vectores se necesita una estructura de repetición y además se debe conocer el Número de elementos o la dimensión del vector aunque no es necesario lo último. Ej. 46 INICIO INICIO N N I=1 I=1 V(I) I<N I=I+1 V(I) NO I<N I=1 I=I+1 I=1 I<N V(I) V(I) I=I+1 FIN I=I+1 NO I<N FIN Se notara que en las tres formas de la estructuras de repetición la primera parte o el primer bloque de repetición se refiere a la lectura de cada uno de los elementos del vector, mientras que el segundo bloque, es la impresión de cada uno de los elementos del vector. En vectores resulta más fácil y rápido trabajar con la estructura FOR .. TO … DO, por lo que se va ha trabajar los siguientes ejercicios solo con la estructura, como se indica a continuación. 47 INICIO INICIO N N I = 1, N , 1 I = 1, N , 1 V(I) V(I) I = 1, N , 1 K = 1, N , 1 V(I) V(K) FIN FIN En los subíndices de los vectores cuando en la lectura se lee cada uno de los elementos sobre la base de un contador, en algún otro proceso como puede ser la escritura de cada uno de los elementos, también no es necesario trabajar con el mismo subíndice de la lectura sino con otro como indica el formato anterior, en la primera resolución tanto en la lectura como en la escritura se utiliza el subíndice I, mientras que en la segunda resolución en la lectura se lee con el subíndice I, en la escritura se utiliza el subíndice K, esto no significa que se hable de otro vector, es el mismo, sería otro vector cuando en vez de el nombre V, se encuentre otro nombre. 48 39.- Realizar un diagrama de flujo que lea un vector de N. Elementos, realice la sumatoria de todos los elementos del vector e imprima el resultado. INICIO INICIO N N I=1 S=0 I=1 S=0 V(I) I<N I=I+1 V(I) NO I<N I=1 I=I+1 I=1 I<N S=S+V(I) I=I+1 S S=S +V(I) I=I+1 FIN NO I<N S FIN En estos casos se ejecuta el diagrama de flujo de la siguiente manera, primero se lee todo el vector, luego se va recuperando de uno a uno los elementos y a la vez se va realizando la suma. En el caso siguiente la primera parte se resuelve de esta manera que se acaba de detallar, y la segunda forma es que al mismo tiempo que se lee se va sumando, en si se va ahorrando pasos. 49 2 FORMA INICIO N S=0 I = 1, N , 1 V(I) INICIO N S=0 I = 1, N , 1 V(I) S=S+V(I) I = 1, N , 1 S=S+V(I) V(K) S FIN FIN 40.- Realice un diagrama de flujo que calcule el mayor elemento ingresado en un vector. El ejercicio se puede resolver de distintas formas, las mismas que son 1) usando varios bloques de repetición, y 2) usando un solo bloque de repetición. Se puede tomar como ejercicios base para la resolución los ejercicios No 33 y 34. ya resueltos sin vectores 50 Usando varios bloques de repetición INICIO N I = 1; N; 1 V(I) MAY = V( 1 ) I=1,N,1 NO V(I)>MAY SI MAY = V(I) MAY FIN En el ejercicio que se acaba de presentar se debe notar lo siguiente, primero se lee todos los elementos del vector, seguido a una variable auxiliar en este caso MAY, se le asigna la primera posición del vector, por el hecho de que un vector para ser un arreglo, debe tener por lo menos un elemento, el mismo que estará en la primera posición, y por último se compara todos los elementos. 51 Usando un solo bloque de condición. INICIO N I = 1, N , 1 V(I) I=1 MAY = V( I ) V(I) >MAY MAY = V( I ) MAY FIN En este caso a la vez que se va leyendo los elementos se va comparando, presentándose un inconveniente, del primer elemento con que se compara, como ya se vio, se lo debe comparar consigo mismo, por eso existe una condición comparando el contador con un, es decir con el primer elemento. En ambos casos del ejercicio para calcular el menor elemento lo único que debería cambiar es el signo de la bifurcación. 52 41.- Realizar un D.F que lea 2 vectores de igual dimensión en los cuales, primer vector se ingresa el nombre de cada uno de los estudiantes del curso y en el segundo una nota por cada estudiante. Se desea encontrar cual es la nota mayor y a quien pertenece. (El presente ejercicio trae consigo algunas instrucciones nuevas como son: un vector ya no numérico sino alfanumérico, así también como leer más de un vector, de otra parte el ejercicio de encontrar el mayor valor de un grupo de números leídos ya se resolvió en el ejercicio No 40) INICIO I 1 2 3 N NOTA NOMB 16 18 17 Luis María Vero I = 1, N , 1 NOTA( I ) NOM$( I ) I=1 MAY = NOTA( I ) PER$ = NOM$ (I ) NOTA(I)>MAY MAY = NOTA( I ) PER$ =NOMB$(I) MAY, PER$ FIN El ejercicio tiene una particularidad de que el nombre como es de tipo alfanumérico debe ser de tipo string y como se quiere saber la nota mayor y a quien pertenece, entonces se debe almacenar en variables auxiliares, para la nota esta la variable MAY, mientras que para el nombre esta la variable PER$, es decir de tipo string. 53 42.- Realizar un diagrama de flujo que inserte un elemento X en una posición P de un vector, de N elementos. Resolver de dos maneras: ( Para insertar un elemento dentro de un vector se debe considerar que la posición donde se va añadir el nuevo elemento este dentro del vector, es decir si el vector tiene 4 elementos no se puede insertar en la posición 10 ni el la posición –2 debe ser una posición secuencial a las que existe, por eso es la primera comparación en los dos casos. Luego en la primera forma de resolver se toma lo mas simple la posición donde se desea insertar el elemento se le envía una posición después del último y como ya se tiene respaldado la posición P, entonces se inserta el nuevo elemento. En la segunda forma es diferente ya que se hace recorrer a todos los elementos desde donde se va ha insertar hacia atrás una posición de tal forma que la posición P tiene el mismo contenido que la posición P + 1, y ahora se inserta el posición P el elemento nuevo. PRIMERA FORMA SEGUNDA FORMA Inicio Inicio N1 X1 P N1 X1 P NO NO (P>1) AND (P < N) (P>1)AND (P< N) I = 1;N;1 I = 1;N;1 V (I) V (I) V(N+1) = V (P) V (P) = x I = 1;N -1;1 V (I+1) = V(I) I = 1;N + 1;1 V(P) = X V(J) I = 1;N+1;1 V (I) FIN 54 FIN 43.- Realizar un diagrama de flujo que de un vector de N elementos eliminar los valores negativos (El ejercicio enunciado es lo contrario que el anterior donde se va ya no ha insertar sino a suprimir un elemento, para lo cual se utiliza la segunda forma de inserción, que consiste como ahora es la supresión entonces desde una posición más atrás de la que se va ha suprimir se hace recorrer una posición adelante y luego se elimina el último elemento Inicio V I 1 2 3 4 N 6 -4 +2 10 I = 1;N;1 V (I) I = 1;N;1 si V(I) <0 J=I;N-1;1 V (J) = V (J+1) N = N-1 I = I -1 FIN 55 44. Realizar un diagrama de flujo que ordene un vector. (El siguiente ejemplo es la base para cualquier ordenamiento y con cualquier tipo de datos, no se especifica en que orden se desea ordenar por que simplemente sino así de esa manera la solución es cambiar solamente el signo de la condición y ya se tiene ordenado de la otra manera.) Inicio N I = 1;N;1 V (I) I=1;N;1 J= I+1;N;1 NO si V(I) >V(J) AUX = V(I) V(I) = V(J) V(J) = AUX I=1;N;1 V (I) FIN 56 45.- Realizar un D.F que un vector que sea un vector que lea el elemento mayor y menor. (Se demuestra que no necesariamente se realiza un diagrama para encontrar el mayor y menor elemento de un vector, con el diagrama anterior del ordenamiento, como ya todos los elementos están en orden, se supone que el primer elemento esta el primera posición y el mayor elemento el la última posición, o viceversa. Inicio N I = 1;N;1 V (I) I=1;N;1 J= I+1;N;1 NO si V(I) >V(J) AUX = V(I) V(I) = V(J) V(J) = AUX V(1) V(N) 57 FIN 46.- De un curso de N estudiantes, se almacenan en vectores el nombre y una nota por cada alumno, se desea obtener un listado en orden alfabético de los estudiantes del curso con su respectiva nota. (Para la solución se debe basar en los ejercicios de ordenamiento con la diferencia que el enunciado pide trabajar con dos vectores, entonces para lo cual se debe considerar el ordenamiento por que vector pide, en este caso es el ordenamiento en orden alfabético por lo tanto el vector que va en la condición es el nombre, pero si existe algún movimiento no solo se debe cambiar el vector nombre sino también el vector nota, como indica el ejercicio. Inicio I 1 2 3 NOM NOTA B C A 16 17 18 N I = 1;N;1 NOTA(I), NOM$(I) I=1;N;1 J= I+1;N;1 NOM$(I) >NOM$(J) A$ = NOM$(J) NOM$ (J) = NV$(J) NOM$(J)=A$ B=NOTA(I) NOTA(I)=NOTA(J) NOTA(J)=B I=1;N;1 NOM$(I) NOTA$(I) 58 Arreglos Bidimensionales: conocido también como matrices lleva el mismo fundamento que los vectores es decir almacena información diferente en posiciones distintas de la matriz. Los vectores y las matrices se relacionan hasta el punto de poder resolver los mismos ejercicios en vectores o en matrices teniendo presente que para realizar cualquier proceso que involucre matrices es necesario por lo menos dos bloques de repetición. Físicamente la matriz es una tabla que se subdivide verticalmente en M partes (columnas) y horizontalmente se subdivide en N partes (Filas). La posición física de un elemento esta relacionada con él numero de la fila seguido con él numero de la columna. Una matriz también se considera como un conjunto de vectores de igual dimensión. 1.1 1.2 1.3 1.4 2.1 3.1 Para identificar a una matriz se utiliza el nombre de la matriz encerrado entre paréntesis el subíndice de la fila y el subíndice de la columna. La dimensión de una matriz viene dada por él numero de filas y por él numero de columnas N*M De igual forma cuando el numero de filas es igual al numero de columnas se dice que la matriz es cuadrática 59 Ejemplos: Leer una matriz de orden NxM y calcule cual es el elemento mayor de cada fila. INICIO N,M I=1,N,1 J=1,M,1 A[I,J] I=1,N,1 MAY= A[I,1] J=1,M,1 A[I,J]>MAY MAY= A[I,J] MAY FIN 60 Leer un vector de N elementos y convertir a matriz controlando que la matriz sea cuadrática o que la dimensión del vector sea un cuadrado perfecto. INICIO N X=SQRT(N) ENT(X)=X C=1 I=1,X,1 J=1,X,1 A[I,J]=V[C] C=C+1 I=1,X,1 J=1,X,1 A[I,J] FIN 61 Leer una matriz de orden N * M y convertir a vector INICIO N,M I=1,N,1 J=1,M,1 A[I,J] X=N*M C=1 I=1,N,1 J=1,M,1 V[C]= A[I,J] C=C+1 I=1,X,1 V[I] FIN 62 Realizar un DF que lea una matriz cuadrática y que intercambie sus valores de la siguiente manera - El primero con el último el segundo con el penúltimo, siguiendo el mismo orden hasta terminar de intercambiar la matriz INICIO N X=SQR(N) ENT(X)=X I=1,X,1 J=1,X,1 A[I,J] I=1,X,1 J=1,X,1 AUX=A[I,J] A[I,J]=A[(X+1-I),(X+1-J)] A[(X+1-I),(X+1-J)]=AUX I=1,X,1 J=1,X,1 A[I,J] FIN di 63