Beruflich Dokumente
Kultur Dokumente
DISEO DE ALGORITMOS
LOGICA DE PROGRAMACION
TABLA DE CONTENIDO
Pag.
Introduccin . .. UNIDAD 1. CONCEPTOS GENERALES UNIDAD 2 ENTRADA y SALIDA DE DATOS DE DATOS. UNIDAD 3 PROGRAMACION MODULAR . UNIDAD 4 INSTRUCCIONES DE DECISIN .. UNIDAD 5 ENUNCIADOS DE REPETICION (ciclos) UNIDAD 6 ARREGLOS .
3 4 31 36 45 57 88
UNIDAD 7 CONCEPTOS BSICOS DE PROGRAMACIN ORIENTADA A OBJETOS. 117 PRODUCTO FINAL GLOSARIO BIBLIOGRAFIA 124 125 132
LOGICA DE PROGRAMACION
Introduccin
El profesional en sistemas de informacin se enfrenta permanentemente a la solucin de problemas, donde los algoritmos, las estructuras de datos y los lenguajes de alto nivel son el fundamento para la construccin del pensamiento lgico necesario que le permite disear y planificar soluciones lgicas de manera rigurosa y sistemtica. Representacin algortmica de solucin a problemas de informacin siguiendo modelos estandarizados, representacin de los datos y posibles transformaciones y conocimiento y aplicacin de un lenguaje de programacin de alto nivel bsico. Este documento pretende ser soporte para el aprendizaje de la lgica de programacin, encontraran que se trabaja la programacin modular desde el principio con el fin de familiarizar el estudiante con las funciones y procedimientos y de esta manera cuando trabajen los mtodos en los lenguajes de programacin orientados a objetos se le facilite el manejo de estos.
LOGICA DE PROGRAMACION
LOGICA DE PROGRAMACION
1. CONCEPTOS GENERALES
1.1 LOGICA Procedimiento razonable y apropiado para buscar la solucin de un problema cualquiera.
1.1.1 Ejemplo 1: Escribir los pasos a seguir para sumar dos nmeros. 1 Leer nmero 1 2 Leer nmero 2 3 Sumar los nmeros 1 y 2.
1.2 EJERCICIOS
1.2.1 Ejemplo 2: Supongamos que usted necesita programar un autmata para que conduzca
un auto en un viaje por la autopista Medelln Bogot. Una condicin que debe considerara es como cambiar una llanta en caso de un pinchazo. Como persona precavida que es usted el auto tiene llanta de repuesto y las herramientas necesarias para estos casos. Describamos los pasos lgicos para realizar dicha tarea. 1 Sacar la llanta de repuesto del bal 2 Quitar la llanta pinchada 3 Poner la llanta nueva 4 Guardar la llanta pinchada y la herramienta 5 Reanudar el viaje. Hagamos el ejercicio en forma ms detallada. INICIO 1Orillar y detener el auto 2 Bajar del auto y colocar las seales 3 Abrir el bal y sacar la llanta de repuesto. 4 Si el repuesto est bueno siga el paso 7 5 Si el repuesto est malo buscar otra solucin 6 Ir al fin 7 Bloquear el carro y poner el gato 8 Aflojar tuercas y subir el carro 9 Quitar las tuercas y la llanta pinchada 10 Poner la llanta de repuesto y poner tuercas 11 Bajar el auto y apretar las tuercas 12 Recoger seales, herramientas y la llanta pinchada 13 Guardar todo y cerrar el bal 14 Reanudar el viaje. FIN
LOGICA DE PROGRAMACION
Intente escribir en forma resumida y lgica los pasos para realizar las siguientes tareas: Describa los pasos para embetunar los zapatos Describa los pasos para ir desde su casa al cine Describa los pasos para escuchar msica Describa los pasos para hacer una torta Describa los pasos para realizar una prctica deportiva. Describa los pasos para realizar una llamada desde un telfono publico. Describa los pasos para ir a una biblioteca para una consulta. Describa los pasos para hacer un trabajo de investigacin. Describa los pasos para ir a un partido de ftbol
1.3 ALGORITMO La palabra algoritmo se deriva de la traduccin al latn de la palabra rabe Alkhowarizmi, nombre de un matemtico y astrnomo rabe que escribi un tratado sobre manipulacin de nmeros y ecuaciones en el siglo IX. Un algoritmo es una serie de pasos organizados que describe el proceso que se debe seguir, para dar solucin a un problema especfico. Cuando se tiene un problema para solucionar hay que entender claramente que se pide hacer y cules datos se tienen para buscar su solucin y cuales son las respuestas que se esperan. Qu se pide? Que se tiene?. La respuesta a estas preguntas son la base para plantear una posible solucin y si sta se dar por medio del computador, nuestro primer paso ser realizar un Algoritmo o sea la descripcin de esa posible solucin con palabras. Este debe cubrir la solucin del problema desde su inicio hasta su terminacin.
1.4 TIPOS DE ALGORITMOS Los algoritmos pueden ser cualitativos o cuantitativos; lgicos o matemticos
1.4.1 Algoritmo cualitativo: es la descripcin con palabras sencillas de las caractersticas o cualidades medibles ( que se pueden comprobar) de un elemento. Ejemplo: ancho, largo, corto, azul, etc. Son aquellos en los que se describen los pasos utilizando palabras. NOTA: Cualidades subjetivas de un elemento no se tiene en ejemplo: belleza, fealdad, simpata, etc. cuenta en un algoritmo por
1.4.2 Algoritmo cuantitativo Son aquellos en los que se utilizan clculos numricos para definir los pasos del proceso y hallar respuestas numricas. 1,4.3 Algoritmo matemtico: Conduce a la solucin de respuesta es nica. una expresin matemtica y su
LOGICA DE PROGRAMACION
Algoritmo identificador //cabecera //seccin de declaracin var tipo_de_datos: lista_de_identificadores const lista_de_identificadores = valor inicio //cuerpo del algoritmo accin 1 accin 2 accin 3 . . . accin n fin
Es una serie de smbolos y reglas que se utilizan para describir de manera explcita un proceso. Tipos de Lenguajes Algortmicos: Grficos: Es la representacin grfica de las operaciones que realiza un algoritmo (diagrama de flujo). No Grficos: Representa en forma descriptiva las operaciones que debe realizar un algoritmo (pseudocodigo).
1.6.1 Grficos : 1.6.1.1 Diagrama de flujo: Es una tcnica de representacin de algoritmos ms antigua y a la vez mas utilizada, aunque su empleo ha disminuido considerablemente, sobre todo desde la aparicin del lenguaje estructurado. Son fciles de disear porque el flujo lgico se muestra en un dibujo (smbolos o cajas estndares) en lugar de palabras y que cada paso del algoritmo escrito en estos dibujos estar unido por flechas denominadas lneas de flujo, que indican la secuencia que se debe seguir.
Sin embargo, los diagramas de flujo tienen una limitacin grande: son difciles de actualizar y complejos de leer si ocupan varias pginas; cuando se han de modificar los diagramas de flujo resulta difciles precisamente por su carcter grafico.
Los smbolos principales son: En la siguiente tabla se explican los smbolos mas utilizados en los diagramas de flujo
LOGICA DE PROGRAMACION
SMBOLO
FUNCION Inicio y fin del algoritmo. (Sirve para indicar el comienzo y fin del diagrama de flujo, dentro de el se escriben las palabras inicio y fin) Proceso. (Dentro de el se escriben todas las actualizaciones, asignaciones y operaciones) Entrada. (Sirve para la captura de datos por medio de una lectura. Dentro de l se escribe la palabra lea precedida de la(s) variable(s), separadas por comas)
Salida. (Sirve para mostrar el contenido de una variable y/o mensajes. Dentro de l se escribe la palabra escriba precedida de la(s) variable(s), separadas por comas) Decisin. (Sirve para hacer comparaciones, es decir, para
si
no
Lnea de flujo. (Sirve para indicar el seguimiento lgico del diagrama. Determina el orden de la ejecucin de las instrucciones) Mltiples. (En funcin del resultado de la comparacin se seguir uno de los diferentes caminos de acuerdo a dicho resultado)
Repetitivas. (Sirven como smbolos propios de los ciclos ya que para ellos primitivamente se utilizaba los smbolos bsicos (proceso y decisin)
Ejemplo 3 Se desea obtener el salario bsico neto de un trabajador conociendo l numero de horas, el salario hora y la tasa de impuesto que se le debe deducir. Nota: El ejemplo esta realizado en diagrama de flujo ,diagrama estructurado y en pseudo cdigo.
LOGICA DE PROGRAMACION
Diagrama de flujo
INICIO
Lea: horas_trabajadas, salario_hora, tasa
Escriba:
salario_bruto,
FIN
1.6.1.2 Diagrama estructurado o Diagrama de Nassi, N-S o Chapn : Denominada as por su inventor o tambin conocido como diagrama estructurado es como un diagrama de flujo en el que se omiten las flechas de unin y las cajas son contiguas. Las acciones sucesivas se escriben en cajas y, como en el diagrama de flujo, se pueden escribir diferentes acciones en una caja. Los diagramas de N-S comienzan en un primer rectngulo que se va rellenando de arriba-abajo siguiendo la tcnica descendente.
Los procesos de entrada, salidas, operaciones, actualizaciones, inicio, fin y nombre del programa (acciones) se representan en una caja por cada proceso as: Nombre del programa Inicio < accion 1> < accion 2> | |
LOGICA DE PROGRAMACION
10
Programa salario Inicio lea nombre, horas, precio salario = horas * precio Impuesto = 0.25 * salario SalarioNeto = salario impuesto Escriba nombre, salario, impuesto,
Salarioneto Fin 1.6.2 No Grficos o Pseudo cdigo: Es la descripcin de los pasos lgicos para la solucionar un problema en forma semejante al lenguaje de computadora utilizado, es decir un lenguaje de seudo programacin, una imitacin del cdigo de computadora. El Pseudo cdigo es una mezcla de lenguajes natural y smbolos, trminos y otras caractersticas comnmente utilizadas en uno o ms lenguajes de alto nivel. 1.6.2.1 Caractersticas del Seudocdigo: Las siguientes son las caractersticas ms importantes: Debe tener un nombre que lo identifique. Ejemplo programa inventario Todo pseudo cdigo debe tener un inicio y un fin. No puede existir un programa con infinitas instrucciones. Debe tener 0 o ms datos de entrada. Pueden existir programas que no le pidan datos de entrada al usuario. Los pseudo cdigos deben tener 1 o ms datos de salida. Un programa que no le muestre al usuario ningn resultado o respuesta, no sirve para nada. Solucin Pseudo cdigo Ejemplo 3 Programa salario_neto Inicio lea horas_trabajadas, salario_hora, tasa salario_bruto = horas_trabajadas * salario_hora total_impuesto = salario_bruto * tasa salario_neto = salario_bruto - total_impuesto escriba salario_bruto, total_impuesto, salario_neto fin
1.7 DATOS
LOGICA DE PROGRAMACION
11
Los algoritmos y programas de computadoras, con independencia del lenguaje en que estn escritos, estn diseados para manipular informacin o datos. La mayora de las computadoras pueden trabajar con varios tipos de datos. Y los algoritmos y los programas correspondientes operan sobre estos. Las acciones de las instrucciones ejecutables reflejan en los cambios de los valores de los datos de entrada que se transforman despus de varias etapas intermedias, dando como resultado unos datos de salida. Existen dos clases de tipos de datos: simples ( sin estructura) y compuestos (estructurados). Los datos estructurados por ahora solo veremos el tipo cadena de esta clase los dems mas adelante, y de los simples identificaremos los siguientes: Numricos, Lgicos y Carcter 1.7.1 Datos Numricos: Los datos de tipo numrico son los relativos a las diferentes clases de nmeros. enteros
1.7.2 Enteros: Es un subconjunto finito de los numero enteros. Los enteros son nmeros complejos, no contienen componentes fraccionarios o decimales y pueden ser positivos o negativos. Ejemplos de datos numricos: 5 -15 20 1340 6 4 17 26
1.7.3 Reales: Es un subconjunto de los nmeros reales. Los reales son nmeros siempre tiene un punto decimal y pueden ser positivos o negativos. Un real consta de un entero y una parte decimal. Ejemplos de datos reales: 0.08 3.7452 -8.12 3739.41 -52.4.321 3.0
1.7.4 Datos Lgicos: Tambin denominados bolanos, es aquel dato que solo puede tomar uno de dos valores: cierto / falso
LOGICA DE PROGRAMACION
12
si / no v/f 0/1
1.7.5 Datos Carcter: Es el conjunto finito y ordenado de caracteres que la computadora puede interpretar. Un dato tipo carcter contiene solo uno. Los caracteres que reconoce las diferentes computadoras no son estndar, sin embargo, la mayora reconoce los siguientes caracteres alfabticos, numricos y especiales. Caracteres alfabticos: (A, B, C, D, E,..., Y, Z) (a, b, c, d, e,..., y, z) Caracteres numricos: (1, 2, 3, 4,..., 9,0) Caracteres especiales: (+ ,- ,* ,/ ,^ ,$ ,& ,...)
Los caracteres se pueden organizar en cadenas. Una cadena de caracteres es una secuencia o serie de caracteres validos encerrados entre caracteres especiales llamados delimitadores y que suelen ser las comillas doble, ya que las comillas simples son los delimitadores de caracteres individuales, ejemplos: Paris bien vale una misa 12 de octubre de 1492
CONTENIDO Enteros o Reales Boleanos Todos los caracteres individuales Agrupando varios caracteres
EJEMPLO 10, 3,25, -2.908, 2.35E18 Falso, verdadero A,b.c,d,.$.&,#, @, etc. Hola, Juan Daz, 2h43
1.8 CAMPO rea de trabajo que puede almacenar uno o varios datos. se almacena: "Carlos Alberto Garcia". Ejemplo: En el campo NOMBRE
1.9 REA DE TRABAJO Es un espacio de memoria con la longitud que necesita el programador. trabajo deben tener nombres diferentes y deben ser inicializadas en cero (0). Las reas de
1.11 ARCHIVO
LOGICA DE PROGRAMACION
13
1.13 IDENTIFICADORES Son los nombres que se dan a los programas, constantes, variables, subprogramas y otros objetos o entidades de dgitos. La sintaxis para formar un identificador es la siguiente: Letra/_[letra / digito / _]...
Lo cual indica que un identificador consta de uno o ms caracteres (letras, dgitos y el carcter de subrayado) y que el primer carcter debe ser una letra o el carcter de subrayado.
Las letras pueden ser maysculas o minsculas. Ejemplos: SUMA Calculo_nmeros_primos Ordenar7 a123
Ejemplos de errores en declaracin de identificadores: #suma calculo nmeros primos -ordenar 12ab3 salario$base
1.14 VARIABLES Son todos aquellos valores que pueden o no cambiar en el transcurso de un programa, como existen diferentes tipos de datos las variables pueden ser numricas y alfanumricas. Las variables deben tener las siguientes caractersticas: Tienen Nombre ste debe ser nico ya que en un programa no pueden existir dos variables con el mismo nombre. Este debe empezar siempre por una letra Toda variable tiene tipo y ste no puede cambiar en el curso del programa; s! el
LOGICA DE PROGRAMACION
14
Los nombres de las variables elegidas para el algoritmo o programa deben ser significativas y tener relacin con el objeto que representa. TEMP = para representar valores de temperatura NOV_ESTUD = almacenara el nombre del estudiante Nombres vlidos de variables Peso X27A SALA_BASICO Apellido P23A PLACA TELEFONO
1.14.1 Variable Numrica: Su nombre puede ser una letra o agrupacin de letras o combinacin de letras y nmeros; debiendo empezar siempre por una letra sin caracteres especiales ni espacios en blanco. El valor almacenado en ella debe ser totalmente numrico; y puede ser de tipo real o entero.
NOMBRE VARIABLE
A1 = Alberto = X12BASE =
VALOR ALMACENADO
500 200 33.12455
TIPO
Entero Entero Real
1.14.2 Alfabtica o alfanumrica: Su nombre puede constar de una letra o agrupacin de letras o combinacin de letras y nmeros empezando siempre con una letra, no puede tener caracteres especiales, ni espacios en blanco. El valor almacenado en sta puede ser numrico, alfabtico o alfa-numrico y siempre debe estar colocado entre comillas. Este tipo de valor almacenado se denomina constante, literal, cadena o ttulo.
VALOR ALMACENADO " Pedro " " Juan " " 200 " " W112 "
NOTA: Los nombres de las variables deben ser nemotcnicos, es decir, que con solo leer el nombre de la variable se puede entender o determinar lo que contiene; estos no deben comenzar por nmeros, ni contener espacios en blanco, ni caracteres especiales ( % $ & + / * etc.). 1.14.3 Boleana o lgicas: verdadero. son aquellas que slo almacenan datos cuyo valor es: falso o
LOGICA DE PROGRAMACION
15
1.15 CONSTANTES
Ejemplo 4: Se desea saber el valor de un artculo al cual se le har un descuento del 7% VAL-DESCU = Valor-artculo * 0.07
variable
variable
Nota: Los nombres deben tener las caractersticas de los nombres de las variables.
1.16 EXPRESIONES Las expresiones son combinaciones de constantes, variables, smbolos de operacin, parntesis y nombres de funciones especiales; una expresin consta de operandos y operadores. Los parntesis indican el orden de clculo. Segn el tipo de dato que manipulan se clasifican en: Aritmticas Lgicas Carcter Ejemplo 5: A + (b-c) * 3d X + (2)^2
1.16.1 Expresiones aritmticas. Las expresiones aritmticas son anlogas a las formulas matemticas. Las variables y constantes son numricas (real enteras) y las operaciones son las aritmticas. Ejemplo 6: 5 * 18 = 90 resultado de la expresin operando operador operando
LOGICA DE PROGRAMACION
16
OPERADOR Exponenciacin Suma Menos Multiplicacin Divisin normal Divisin entera Modulo o resto
TIPO DE OPERANDO Entero o real Entero o real Entero o real Entero o real Real Entero Entero
TIPO DE RESULTADO Entero o real Entero o real Entero o real Entero o real Real Entero Entero
NOTA 1: Operadores mod y div. El smbolo / se utiliza para la divisin real y el operador div para la divisin entera. NOTA 2: La expresin 19 div A solo se puede utilizar si A es entera, ejemplo 3, esta nos da un resultado entero de 6. Ejemplo 7: 15 3 6 2 cociente (div) residuo (mod) 15 div 6
El mod nos muestra el resto por lo tanto si la divisin anterior la expresamos 15 mod 6 el resultado ser 3 El mod y el div siempre dan un resultado entero 1.17.1 Reglas de prioridad. Las expresiones que tienen 2 ms operando requieren unas reglas matemticas que permitan determinar el orden de las operaciones, lo que se denomina reglas de prioridad o precedencia. Las operaciones que se encuentren encerradas entre parntesis se evalan primero. Si existen diferentes parntesis anidados (interiores unos a otros) se realizan primero las expresiones ms internas. Las operaciones aritmticas dentro de una expresin suelen seguir el siguiente orden de prioridad: Operador exponencial (^ **) Operadores *, / Operadores div y mod Operadores + , En caso de que se encuentren varios operadores de igual prioridad en una expresin o subexpresin encerrada entre parntesis, el orden de prioridad en dicho caso es de izquierda a derecha. Nota: Cuando se est diseando operaciones o expresiones matemticas se debe tener en cuenta las tablas de prioridad de los operadores. Los operadores div y mod si se est utilizando el lenguaje Pascal y Modula2 son de mayor rango que el + y ; en lenguaje Basic y Fortran son de menor prioridad del + y -; en el lenguaje C no existe el div y el mod (resto) se expresa con el operador % y tiene el mismo nivel del /, *.
LOGICA DE PROGRAMACION
17
SE UTILIZA PARA: Elevar un nmero a cualquier potencia Sumar Restar Multiplicar Dividir Cociente de la divisin Residuo de la divisin
2 + 12 ^ 2 * 3
= 2+ 144* 3 = 434
OPERADOR
Mayor que Menor que Mayor o igual que Menor o igual que Igual Diferente
NOTACION
> < >= <= = <> no encontrarse en el teclado del
SIGNIFICADO Mayor que Menor que Igual Mayor o igual que Menor o igual que Diferente a
EJEMPLO 56 > 65 falso 36< 78 verdadero 34 = 26 falso 34 >= 32 verdadero 17 <= 37 falso 8 <> 6 verdadero
Ejemplos 9 : Si la variable X = 37
LOGICA DE PROGRAMACION
18
X < 80 el resultado ser verdadero X + 12 < 20 el resultado ser falso Si A = 8 y B = 5 A<B falso A=B falso A>B verdadero B>A falso C = B > A La variable C toma el valor de falso.
1.20 PROCESO
Es el conjunto de operaciones o clculos que transforman los datos en informacin, siguiendo una serie de instrucciones, escogiendo alternativas, dando resultados parciales cuando se manejan archivos etc.. Datos Procesados que le sirven al usuario para el anlisis o tomar decisiones.
Cuando se tiene un problema para solucionar hay que entender claramente qu se pide hacer y cules son los datos que se tienen para buscar la solucin y cules son los resultados esperados.
1.21.1 Definicin del problema. Qu nos pide el usuario? De qu disponemos para resolverlo? Las respuestas a stas preguntas son la base para plantear una posible solucin y si esta amerita realmente resolverla por medio del computador. El primer paso ser realizar un algoritmo en seudo-lenguaje que describa los pasos lgicos del problema 1.21.2 Anlisis: Estudiado el problema es preciso analizarlo: Todos los pasos que a continuacin se enuncian tienen por objeto la solucin a un problema cualquiera mediante un buen anlisis de este. Cada paso es de igual importancia al otro para obtener un buen resultado.
Leer el enunciado del problema hasta que se tenga claro qu se pide hacer. Aclarar cualquier duda que se tenga de alguna pregunta o condicin. Determinar los datos de entrada con que se cuenta para la solucin del problema. durante el desarrollo del
Definir qu comparaciones y/o clculos se necesitan realizar problema y para obtener el resultado final. Determinar que resultados se necesitan tanto intermedios Tener en cuenta toda clase de restricciones y condiciones solucin.
LOGICA DE PROGRAMACION
19
1.21.3 Seleccin de la mejor alternativa. Analizado el problema, posiblemente tengamos varias formas de resolverlo; lo importante es determinar cul es la mejor alternativa, que produzca los resultados esperados en el menor tiempo y al menor costo. 1.21.4 Diagramacin o Seudo-cdigo. Una vez que sabemos cmo resolver el problema, pasamos a disear grficamente la lgica de la alternativa seleccionada. Lo que llamamos un diagrama de flujo donde representamos los pasos lgicos a cumplir por el computador en la solucin del problema y obtener los resultados esperados. Resulta muy til pasar esos pasos lgicos planteados en el diagrama a frases que indiquen lo mismo; es decir hacer una codificacin del problema utilizando instrucciones en espaol, como si le estuviramos hablando al computador. Esto es lo que llamamos un seudo-cdigo. 1.21.5 Diagrama: Es una representacin grfica para la definicin, anlisis " solucin de un problema en el cual los smbolos son usados para representar una operacin, flujo de datos y equipo. Existen fundamentalmente dos tcnicas de diagramacin: libre y estructurada. Dentro de la diagramacin estructurada se distinguen: la grfica rectangular y el seudo-cdigo. Todo algoritmo se puede representar en tres estructuras condicional, Repeticin. Secuencia. Indica una operacin incondicional. bsicas: Secuencia, Bifurcacin o
Titulo del algoritmo Inicio Instruccin 1 instruccin 2 Instruccin 3 : : Fin Diagrama de N-S (Nassi-Shmeiderman) Favorecen la programacin estructurada, se trabajan de arriba abajo siguiendo la tcnica de Top dawn Tcnica de seudo-cdigo es una imitacin de las instrucciones de un lenguaje de programacin en espaol. Titulo del algoritmo Inicio Instruccin 1 Instruccin 2 Instruccin 3 Fin Bifurcacin condicional. Indica que se debe cumplir una condicin, consta de una pregunta y dos alternativas falso o verdadero. Se da un condicional simple cuando slo se ejecutan acciones por la alternativa de verdadero o (SI)
LOGICA DE PROGRAMACION
20
Seudo-cdigo Condicional simple Si condicin entonces Acciones cumple la condicin Fin si Se da un condicional compuesto cuando se ejecutan acciones por verdadero y por la de falso. la alternativa de
Seudo-cdigo Condicional compuesto Si condicin entonces Acciones SI cumple la condicin Sino Acciones NO se cumple la condicin Fin si
Repeticin o ciclo. Indica la iteracin o repeticin de una o varias dependiendo de una condicin verdadera. CICLO MIENTRAS
instrucciones
LOGICA DE PROGRAMACION
21
Mientras Condicin
Acciones Repite tantas veces mientras no se cumpla la condicin
En seudo-cdigo seria : Haga mientras no se cumpla la condicin Acciones Fin ciclo 1.21.6 Prueba de escritorio. Para cerciorarse de que el diagrama y/o seudo-cdigo est bien y que el programa que codifiquemos en el lenguaje de programacin funcione correctamente debemos someterlo a una prueba de escritorio. Esta prueba consiste en que le damos diferentes datos de entrada al programa y le seguimos la secuencia indicada en el diagrama o seudo-cdigo , hasta obtener los resultados. Al analizar los resultados obtenidos se podr ver si el diagrama o seudo-cdigo est correcto o hay que realizar correcciones o ajustes. 1.21.7 Codificacin. Una vez hayamos verificado el diagrama mediante las pruebas de escritorio, codificamos el programa en el lenguaje de computador seleccionado. Esto es: cada paso del diagrama se convierte en una instruccin con la sintaxis propia del lenguaje seleccionado para que el computador la reconozca. 1.21.8 Compilacin. Utilizamos ahora el programa de computador llamado compilador o traductor, el cual analiza todo el programa codificado y detecta los errores de sintaxis ocasionados por los errores en la codificacin. Ningn compilador detecta los errores de lgica. 1.21-9 Prueba de computador. Una vez el programa termine de ser compilado y no existan errores de sintaxis, le ordenamos al computador que lo ejecute; para ello le suministramos algunos datos de prueba tal como se realizo en la prueba de escritorio. 1.21.10 Documentacin externa. Una vez est el programa listo para su ejecucin, es conveniente documentarlo, siguiendo las normas establecidas por la empresa. Una buena documentacin incluye siempre : Enunciado del problema. Diagrama o seudo-cdigo Descripcin de la solucin Relacin de variables o campos utilizados en el programa, cada uno con su respectiva funcin. Listado de la ltima compilacin Resultados de la prueba de ejecucin Si observas claramente estos pasos tienen una secuencia lgica para la solucin de un problema, no tiene ambigedades y entregan un resultado. Con ello podemos disear un seudo-cdigo que seria:
LOGICA DE PROGRAMACION
22
INICIO Definicin del problema Anlisis del problema Seleccin de la mejor alternativa Diagrama o seudo-cdigo Prueba de escritorio Codificacin en el lenguaje deseado. Compilacin Si hay errores vaya al paso 6 Pruebas Si hay errores vaya al paso 4 Documentacin externa FIN
1.22 ELEMENTOS BSICOS DE UN PROGRAMA Hay que separar lo que es el diseo del algoritmo y su implementacin en un lenguaje de programacin especifico. Por eso es importante la diferenciacin de los conceptos de programacin y el medio en que se implementan en un lenguaje especifico. Todos los lenguajes de programacin al igual que cualquier lenguaje tienen sus elementos bsicos y las reglas para utilizarlos. Estas reglas son la sintaxis propias de cada lenguaje. Solamente las instrucciones que estn correctamente escritas sern procesadas por el computador. Los elementos bsicos de un algoritmo o programa son: Palabras reservadas identificadores Caracteres especiales Constantes y variables Expresiones e instrucciones Adems existen otros elementos que forman parte de los programas cuya comprensin ser vital `para el correcto diseo de los algoritmos Bucles o ciclos Contadores y acumuladores Interruptores Estructuras: Secuenciales Selectivas Repetitivas. Todo programa est compuesto por una entrada de datos, un proceso de estos y una(s) respuesta(s) que constituye la salida.
LOGICA DE PROGRAMACION
23
archivo . Se puede simbolizar por los signos = y su funcin es asignar el valor que est a la derecha del smbolo igual la flecha a la variable que est a la izquierda de la misma.
Variable
Retencin IVA Resultado Descuento =
Constante
125000 16% = Aprob = 0.08
Variable
Salario_neto = Promedio Nota-final = Valoreps =
Expresin
salario deducciones ( Nota1 + nota2 +nota3) /3 suma/5 salariobruto * 0.08
NOTA: Observe que siempre en la expresin el miembro de la izquierda es una variable. La operacin de asignar es destructiva ya que el valor que tuviere la variable antes de la asignacin se pierde, para tomar el nuevo valor. Ejemplo 10: A A N N 2 5 + 7 El valor de A ser 12 4 3 + N el valor de N ser 7
Ejemplo 11:
Suma 14 + 16 + 7 El valor que toma suma ser 37 Radio 1.5 Pi 3.1416 Areacirculo Radio * Pi / 2 El valor de la variable Areacirculo ser el resultado de la operacin indicada Asignacin lgica. La expresin que se evala es de tipo lgico.
LOGICA DE PROGRAMACION
24
Ejemplo 12
P
8 <4
Nota: a una variable no se le puede asignar un valor de tipo diferente al suyo. Hay un error cuando a una variable de tipo numrico se le asigna una cadena de caracteres, y a una variable de tipo carcter se le asigna un valor numrico.
Nota: las variables donde se guardan los resultados de clculos u operaciones matemticas son llamadas variables de trabajo, se deben siempre dar un valor inicial de 0.
1. 24 ACTIVIDADES TRABAJO INDEPENDIENTE Consulte acerca de los siguientes trminos, interiorice su significado y averige como se calculan : Promedio Inters Porcentaje Subsidio Deduccin Impuesto
Comisin Recargo
Elabore el taller de lgica 1, que hace parte de tu trabajo independiente. Identifique Que es algoritmo?; Conceptos sobre Seudo cdigo, diagrama de flujo. Diferencie conceptos sobre: Expresiones, operadores, identificadores Elabore el taller 2 de manejo de los operadores, es tu trabajo independiente. Consulta la pagina http//espanol.geocities.com/evmejia_36
LOGICA DE PROGRAMACION
25
Razonamiento Lgico Soy cuatro veces mayor que mi hija. Dentro de 20 aos ser dos veces mayor que ella. Cuantos aos tenemos ahora? Completa la cuadricula con los nmeros que faltan del 1 al 16 para formar un cuadrado mgico, en el que cada lnea horizontal, vertical y diagonal de esquina a esquina sume 34. 15
10
Dos hombres corren en una carrera de 100 Mts y el hombre A gana por 10 metros. Entonces decide hacer las cosas mas justas en una segunda carrera, dando 10 metros de ventaja al hombre B. Realizan la carrera a la misma velocidad que la anterior. Cual seria el resultado? Que vendra despus en esta secuencia? 155,210,225,240 . En un saco de naranjas, 4 de 52 estn malas. Qu probabilidades hay de sacar dos malas? Qu numero esta en discordancia con los dems 491322 891726 191029 831114 751217 391221 Qu nmero seguira esta secuencia? 2,13,89,610,4181,28657,? Qu nmero sera el prximo en esta serie? 4,8,15,30,37,74..? Qu nmero sera el prximo en sta serie? 147,144,12,9,3..? Cual es el prximo numero? 74169,183,74,65,61,37,58,89,145..? A partir de la informacin que te damos, aade los nmeros que faltan.
2713
LOGICA DE PROGRAMACION
26
1936
7413
84
Qu nmero completa esta secuencia? 763592,468,32, ? Un reloj da las seis en 5 segundos. En cuanto tiempo da las doce? Qu tienen estos nmeros en comn? 8228 92126 6889 210012 15269251 Qu nmero continuara en la serie? 2736,9108,17127,89298,? Encuentre una palabra de seis letras que tenga alguna en comn con las siguientes palabras: 0 l etras en comn con CRECER letra en comn con CAF letras en comn con DIENTE letras en comn con PERDN letras en comn con ALIENTO El diagrama indica la ubicacin de los 35 barrios de una ciudad, Los crculos Son barrios y las lneas carreteras. La distancia entre barrios es de 5 km. El intendente decide que ningn barrio debe estar a ms de 5 km de un cuartel de bomberos. Cul es la mnima cantidad de cuarteles necesarios? Indique sus ubicaciones.
LOGICA DE PROGRAMACION
27
Dos amigos. lex y David, salen de sus casas corriendo con intencin de encontrarse. Sus relojes marcan las doce del medioda. lex corre el doble que David, Cuando se encuentran, el reloj de lex marca las 12,30 y el de David, que se adelanta, seala un minuto ms. Al da siguiente, Repiten la experiencia, David pone en hora su reloj. lex retrasa su salida diez mintos y corre a la mitad de velocidad que su amigo, Qu hora marcar el reloj de David cuando se junten ?
Tres estudiantes, Antonio, Berta y Carlos, participan en una serie de exmenes. Encada prueba, el que queda primero recibe x puntos; el segundo recibe y puntos y, el tercero z puntos. x, y, z son nmeros enteros mayores que cero, de tal manera que x > y > z. No hay empates. En total, Antonio acumul 20 puntos, Berta 10 puntos y Carlos 9 puntos. Antonio qued el segundo en el examen de lgebra. Quin qued segundo en el examen de geometra?
LOGICA DE PROGRAMACION
28
24 - 5^2* 16mod3+14*(8/2+5) + 87
X= A+B*C X= ABC X =B/A*C X = A + B mod C X = A^3 / 25 * C X = A + A * B/C Evaluar las siguientes expresiones 3+ 6 * 14 12 + 3 * 7 + 5 * 4 7 * 8 mod 3 * 7 + 9 7 * ((10 5 ) mod 3) * 5 + 7 12 * 4/2 + (15-3) * 5 + 7 -16+3*6+14*8 4+7*10+15/5-18 18div 6 * 9 + 16 6 25 / 5 * 12 + 4^2 16 (7^2 + 12) * (48 (12 * 3)) * 2
A = 4 B = 3 ENTONCES : A<B (A 2 ) < (B + 5) A*(12-5) > B * 3 A + B > B^2 X = 3 ENTONCES ( X < 6.5) Y 3 = 3
LOGICA DE PROGRAMACION
29
X>=8
Decir cual es el valor final de A,B,C en las siguientes expresiones: 1) A 3 B 4 C A +B /2 B B+C C C *A A C-B 3) A B C B C A 3 4 A+B B + C +A C *A+3 C *5 - B 2) A B C A B A 7 A+2 A*B+5 B^2 + 8/3 17 (A 17) * C 8
Cuales son los valores de P; Q; R despus de las siguientes operaciones 5) P Q R P Q R 3 6 P +Q /3 P+R+2 Q *P P-Q 6) P 7 Q P+2 R P*Q+7 P Q^2 + 8/3 Q 17 R (Q 7) * P 8
1. Deducir los resultados que se obtienen del siguiente algoritmo: Variables X, Y, Z: enteras Inicio X = 15 div 4 Y = 30 mod 7 Z = Y ** X Imprima (X, Y) Imprima (Z) Fin 2. Encontrar el valor de la variable VALOR despus de la ejecucin de las siguientes operaciones. VALOR 4.0 * 5 X 3.0 y 2.0 VALOR X + Y- Y VALOR 5 X 3 VALOR VALOR * X
Determinar los valores de A, B,C y D despus de la ejecucin de las siguientes instrucciones. Variables A, B, C, D: enteras INICIO
LOGICA DE PROGRAMACION
30
A1:B 4 C:A+ B D:A-B A:C+2 *8 B:C+B C:A*B D:B +D A:D+C Si C = D Entonces C= A - D sino C= B - D Fin si Fin
LOGICA DE PROGRAMACION
31
Saber el manejo de los diferentes tipos de datos en la entrada, proceso y salida de informacin. Hacer ejercicios donde identifica los diferencias entre variables y constantes Realizar ejercicios donde utiliza instrucciones de asignacin.
CONTENIDO TEMTICO Definicin de dato y sus tipos. Definicin de variables y constantes. Entradas y salidas de informacin. Instrucciones de asignacin. El concepto de variable y constante
Indicadores de logro: Conceptual: Conoce los diferentes tipos de datos, y elementos bsicos para realizar un algoritmo. Procedimental: Realiza solucin de problemas sencillos que le permiten entrar datos, procesarlos y dar respuestas. Actitudinal: Demuestra inters por conseguir una respuesta correcta.
LOGICA DE PROGRAMACION
32
La entrada de datos generalmente se realiza por teclado, mediante instrucciones que permiten capturar datos. Para la entrada de informacin se usar la orden LEER
FORMATO O SINTAXIS LEER mensaje variable1. LEER mensaje variable2. LEER mensaje variablen. LEER : mensaje variable1, mensaje variable2,.... mensaje variableN. Ejemplo de cada formato: LEER: Nombre NOMB LEER: Cdigo COD LEER: Salario bsico hora SBH LEER: Numero de horas trabajadas NHT LEER: Retencin en la fuente RTF LEER: Nombre NOMB ; Cdigo COD; Salario bsico hora SBH; Numero de horas trabajadas NHT; Retencin en la fuente RTF
EFECTO La variable A recibe el valor entrado por teclado. Lee dos valores por teclado, el primero lo asigna a la variable A y el segundo a la variable B La variable sueldo recibe el valor introducido por teclado. Las variables Nombre y sueldo toman los valores introducidos por teclado.
Se utilizar la palabra IMP (Imprima) para indicar la salida palabra MOSTRAR para la salida por pantalla.
FORMATO O SINTAXIS:
LOGICA DE PROGRAMACION
33
IMP mensaje ; variable IMP mensaje ; variable de trabajo IMP mensaje ; variable, mensaje ; variable de trabajo Mostrar mensaje ; variable Mostrar mensaje ; variable de trabajo Mostrar:: mensaje variable1, mensaje variable2, mensaje variable de trabajo , mensaje variable de trabajoN.
EFECTO El contenido de la variable A es impreso. Los valores de las variables A y B son mostrados por pantalla IMP Sueldo La palabra sueldo es impresa. MOSTRAR: El Nombre es: Muestra : la frase El Nombre es: seguido del Nomb contenido de la variable Nomb.
convertirla en grados
Qu pide realizar el enunciado del problema? Convertir en grados centgrados una cantidad de grados Fahrenheit Qu datos tengo? El valor de la temperatura en grados Fahrenheit Qu clculos debo realizar? Para poder hacer los clculos debo conocer la formula de la conversin de temperaturas de grados Fahrenheit a grados centgrados. La formula es : C = 5/9 * ( GF 32) Conocidos los datos de entrada y la formula que se aplicar, estamos en condiciones de realizar el algoritmo. PROGRAMA GRADOS FAHRENHEIT ANALISIS DATOS DE ENTRADA Temp_gf = temperatura en grados Fahrenheit DATO DE SALIDA Temp_gc = temperatura en grados centgrados C = 5/9 * (Temp_gf 32) Inicio Asignar tipo a las variables ENT: Temp_gf ; Temp_gc Inicializar las variables de trabajo Temp_gc = 0 Leer los datos de entrada Leer Temperatura grados Fahrenheit Temp_gf Realizar los clculos Temp_gc 5/9 * (Temp_gf 32) Mostrar los resultados
LOGICA DE PROGRAMACION
34
IMP : La Temperatura en grados centgrados es Temp_gc Fin Prueba de escritorio Temp_gf Temp_gc 350 0 177 75 24
2.3 MODELO GENERAL DE UN DIAGRAMA ENTRADA Y SALIDA DE DATOS INICIO ( Nombre del programa) ( 1) ASIGNAR TIPO A VARIABLES Y CONSTANTES ( todas las variables y constantes que se definieron en la lista de variables) ( 2) INICIAR VARIABLES DE TRABAJO Y CONSTANTES (3)LEER DATOS DE ENTRADA PROCESAR DATOS LEIDOS Clculos necesarios para solucionar el problema Los clculos pueden ser una(s) funcin(es) o un(os) procedimiento(s)(5) MOSTRAR RESULTADOS OBTENIDOS FIN DEL INICIO
LOGICA DE PROGRAMACION
35
1. Escriba Un algoritmo que imprima el siguiente mensaje Buenos Dias. 2. Escriba un algoritmo que imprima el mensaje Mi nombre es : y a continuacin mi nombre. 3. Escriba un algoritmo que imprima la fecha del da. 4. Escriba un algoritmo que imprima el nmero 4135.801. 5. Escriba un algoritmo que muestre su nombre completo, direccin, fecha de nacimiento y
nmero de telfono. Cada uno de estos datos precdalo de un titulo, ejemplo: Telfono : 4424444 Ext. 181.
6. Desarrolle un algoritmo que lea un nmero negativo e imprima un numero y el positivo del
mismo.
8. Realizar un algoritmo que permita intercambiar entre si los valores de dos variables A y B. 9. Lea un nmero NRO e imprima el nmero y el resultado de restarle 2387. 10. Lea un nmero y calcular el 5% del nmero ledo. Imprima tanto el nmero como el
porcentaje calculado.
11. Lea el nombre de un empleado, su salario bsico por hora, el nmero de horas trabajadas en
el perodo y el porcentaje de retencin en la fuente. Calcular el salario bruto, el valor de la retencin y su salario neto.
LOGICA DE PROGRAMACION
36
CONTENIDO TEMTICO
Definicin de programacin modular Funciones y procedimientos Funcin recursiva
Competencias acadmicas a desarrollar Aprender a dividir problemas en subproblemas Conocer la diferencia entre funcin y procedimiento, variables globales y locales.
Indicadores de logro: Conceptual: Identificar la diferencia entre procedimiento y funcin. Procedimental: Soluciona los problemas planteados, por medio de algoritmos que utilicen subprogramas. Actitudinal: Muestra inters en aplicar la tcnica modular y habilidad para aplicar las diferentes estructuras.
LOGICA DE PROGRAMACION
37
3. PROGRAMACION MODULAR
3.1 PROGRAMACIN MODULAR
La programacin modular es un mtodo flexible para mejorar la productividad de los programas. En esta los programas se dividen en mdulos independientes que ejecutan las diferentes tareas del programa. Hay un modulo principal que controla todo lo que sucede, y transfiere el control a los diferentes mdulos. Cada modulo es independiente de los otros en el sentido que ninguno puede acceder directamente a otro. La programacin modular permite resolver un problema mediante su descomposicin en varios problemas mas simples llamados mdulos, que se codifican y procesan independientemente. Un problema complejo se puede dividir en pequeos subproblemas ms sencillos. Estos subproblemas se conocen como Mdulos y su complementacin en un lenguaje se llama subprograma (procedimientos y funciones). Un subprograma realiza las mismas acciones que un programa, sin embargo, un subprograma lo utiliza solamente un programa para un propsito especifico. Un subprograma recibe datos de un programa y le devuelve resultados (el programa llama o invoca al subprograma, este ejecuta una tarea especifica y devuelve el control al programa que lo llamo). Funciones Tipos de Mdulos Procedimientos Un programa modular se compone de un programa principal y subprogramas. El programa principal debe contener operaciones fundamentales y las llamadas a los subprogramas. La mayora de los lenguajes de programacin permiten la lenguaje reciben diferentes nombres: programacin modular y segn el
LOGICA DE PROGRAMACION
38
Un mtodo de solucionar un problema complejo como ya lo hemos dicho es subproblemas (mas sencillos) , y estos a su vez en otros mas simples.
dividirlo en
Un subprograma es programa independiente que resuelve una funcin definida por los mdulos. Estos pueden representar tareas que se ejecutan una sola vez o tareas repetitivas; utiliza datos provenientes del programa principal o de otro subprograma y produce resultados para el programa principal o el otro subalgoritmo que lo utiliza o invoca.
Cuando el programa principal o un subprograma invoca o llama un subprograma este comienza ejecutarse hasta llegar a la ltima instruccin. Cuando se termina de ejecutar el subalgoritmo este debe regresar al punto del programa desde donde fue llamado.
La comunicacin entre los mdulos se realiza por medio de datos que se desean pasar al mdulo llamado.
La utilizacin de los algoritmos consta de dos etapas: Declaracin: Proceso en el cual se escribe el subalgoritmo. Activacin: es proceso en el cual se utiliza un subalgoritmo dentro de un algoritmo.
LOGICA DE PROGRAMACION
39
3.4 FUNCIONES Es un subprograma que proporciona un valor o entrada. resultado segn sean sus parmetros de
Funcin: Una funcin en matemticas, es una operacin que toma un o mas valores (argumentos) y devuelve un resultado (valor de la funcin para los argumentos dados). Por ejemplo: F(X) = X / (1+X2) Donde: F .. X .
Definicin de funciones: Una definicin de funcin se presenta de la siguiente manera: Funcin nombre_funcion (p1, p2, , pn) Inicio Bloque de instrucciones Fin Donde: Funcin Es la palabra clave que nos indica una definicin de funcin. Nombre_funcion .. Es el identificador con el cual se reconoce a la funcin en el cuerpo del algoritmo principal. P1,p2,,pn ... Es el grupo de parmetros que define a la funcin.
Llamado a una funcin: Cuando definimos una funcin solo indicamos al algoritmo que esta funcin existe, pero una definicin de funcin no implica la realizacin de las instrucciones que la constituyen. Para hacer uso de una funcin, el algoritmo principal la debe llamar. Por ejemplo: Funcin F(X) Inicio F = X /(1 + X^2) Fin Inicio Imprimir Este es el algoritmo principal Leer N R = F(N) llamado de la funcin Imprimir El resultado de la funcin es:,R Fin
Una funcin se invoca cuando se le hace referencia mediante su nombre y la lista de los parmetros actuales en cualquier instruccin donde se pueda usar una constante o variable.
LOGICA DE PROGRAMACION
40
3.4.1 Funciones internas: Conjunto de operaciones predefinidas por la mayora de los lenguajes de programacin. Ejemplo: Funcin Abs(x) Cos(x)
generalmente incorporadas
Descripcin Tipo de argumento Tipo de resultado valor absoluto de x entero o real igual argumento coseno de x (radianes) entero o real real
3.4.2 Funciones externas: Son aquellas definidas por el usuario. Las funciones deben ser declaradas dentro del los programas con un subprograma o subalgoritmo que en general se define con una serie de instrucciones similares a un programa. FORMATO O SINTAXIS: Funcin nombre (lista de parmetros): resultado VARIABLES LOCALES A LA FUNCION IFUNCacciones> " nombre < expresin fin funcin.
Ejemplo 15: Funcin Tangente de X (generalmente las funciones trigonomtricas son funciones internas) Real Funcin tan (real: X) x es el `parmetro de entrada funcin tan es igual a sen (x) / cos(x), ngulo x en radianes Inicio Devolver (sen(x) / cos(x)) Fin-funcin
3.5 PROCEDIMIENTOS Un subprograma que necesita cero, uno definidos en su formato. o varios valores en funcin de los parmetros
Un procedimiento se llama con una instruccin llamar- a con el nombre del procedimiento. Al ejecutarse la llamada la rutina que la efecta se detiene momentneamente y el control pasa al procedimiento llamado. Despus de que se termina de ejecutar el procedimiento el control se devuelve a la rutina que lo llamo y continua con la instruccin siguiente a llamar. Los valores que devuelve el procedimiento se envan a travs de una lista de parmetros. Los parmetros de entrada reciben valores del programa llamador y los de salida devuelven valores al programa llamador. NOTA: Parmetros son los datos mediante los cuales un procedimiento se comunica con la unidad del programa que llama. Pueden ser de entrada comunican valores al
LOGICA DE PROGRAMACION
41
procedimiento; de salida envan valores desde el procedimiento entrada / salida que sirve para ambos propsitos. Formato: Procedimiento nombre (lista de parmetros): resultado VARIABLES LOCALES AL PROCEDIMIENTO IPROC Instrucciones para realizar el procedimiento resultados FIN PROC.
Un procedimiento es llamado desde el programa principal mediante su nombre y una lista de parmetros, o bien con la instruccin llamar a. Al ser llamado el procedimiento el programa principal se detiene momentneamente y el control pasa al procedimiento llamado, una vez se ejecuta el procedimiento, se regresa a la instruccin siguiente a la que llam al procedimiento. Las funciones devuelven un valor, los procedimientos pueden devolver 0, 1 varios valores y en forma de lista de parmetros. El procedimiento se declara igual que la funcin por un nombre pero este no est asociado al resultado y en la funcin si.
3.7 VARIABLES
3.7.1 Variables globales: son las que se utilizan en todo el programa y tienen actuacin tanto en el programa principal como en los subprogramas. Su definicin se realiza en el programa principal. 3.7.2 Variables locales; son las que se utilizan en la definicin de un subprograma (incluyendo parmetros). Solo tiene actuacin o significado dentro del subprograma donde se definen y no son conocidas fuera de el. Su definicin debe ser dentro del subprograma. A las variables locales slo se accede desde el programa donde se declaran y a las globales se tiene acceso desde cualquier parte del programa ( sea programa principal, subprograma, etc.). Ejemplo 16; Realice una funcin para sumar 2 nmeros enteros FUNSUMAR (VALOR a,b : entero) : resulta entero VAR SUM: ENTERO INICIO FUNC SUM = a + b SUMAR = SUM
LOGICA DE PROGRAMACION
42
RETORNE (SUMA) FIN-FUNC Ejemplo 17: Se tiene el nombre del artculo, nmero de artculos vendidos, el valor de cada artculo. Calcule el valor de la venta. Mostrar el nombre, el total de la venta. Realice una funcin ANALISIS DATOS DE ENTRADA NOMART= nombre del artculo NOARTV = nmero de artculos vendidos VRART = valor de cada articulo DATOS DE SALIDA V_VRVTA = valor de la venta V_VRVTA = NOARTV *VRART INICIO P_PPAL CARAC = NOMART ENT = NOARTV REAL = VRART, V_VRVTA LEER : Nombre del artculo NOMART, nmero de artculos vendidos NOARTV valor de cada articulo VRART MOSTRAR : Nombre del artculo NOMART Total de la venta REAL V_VRVTA (ENT:NOARTV ,REALVRART) FIN P_PPAL FUNC REAL: V_VRVTA(ENT:NOARTV ,REALVRART) V_VRVTA = NOARTV *VRART RETORNE (V_VRVTA) FIN FUNC. PRUEBA DE ESCRITORIO NOARTV 15 40 VRART 20 25 V_VRVTA 0 300 0 1000 Calculos 15 * 20 40 * 25
3.8 RECURSIVIDAD
Trmino recursividad es un concepto amplio, difcil de precisar. Ejemplo una fotografa de otra fotografa, en un noticiero de TV un periodista transfiere el control a otro que est en otra ciudad y este a su vez puede transferirlo a otro. En programacin podemos decir que es un programa que se llama a si mismo y puede ser directa e indirecta. Directa: cuando un programa se llama a si mismo Indirecta: cuando el programa llama a otro programa y este a su vez llama al primero.
LOGICA DE PROGRAMACION
43
En general, cuando se escriben algoritmos usando recursividad, lo usual es que sea muy obvia cul es la modificacin que hay que hacerles a los argumentos que recibe el procedimiento antes de hacer el llamado recursivo. De esta forma se evita que haya ciclos recursivos infinitos. En resumen, la recursividad se basa en el hecho de que cuando un procedimiento es invocado, obtiene una copia nueva de todas sus variables locales, que generalmente estn en la pila de ejecucin del programa; ah es donde queda tambin registrado el lugar de retorno para la rutina. Cuando el procedimiento recursivo trabaja sobre sus variables, est usando las que estn en el nuevo registro de activacin, por lo que, cuando termina su trabajo, regresa al punto de invocacin que le corresponde. En realidad la recursividad existe porque el llamado entre procedimientos se implementa usando registros de activacin organizados en una pila de ejecucin para el programa.
Ejemplo 18: Realice una funcin que calcule el termino n de la serie Fibonaci. NOTA : La serie Fibonaci es 0 1 1 2 3 5 8 13............n Funcin Fibonaci (entero::n) { Funcin general}l Ent. I, Ultimo, Penltimo, Suma Inicio Func Suma 1 Penltimo 1 Ultimo 1 Para I = 2, n haga Penltimo Ultimo Ultimo Suma Suma Penltimo + Ultimo Fin para Devolver : Suma Finfunc. Ejemplo 19: Ahora realizamos un algoritmo recursivo. Por definicin : Fib(0) = 0 Fib(1) = 1 Fib(2) = Fib(1) + Fib(0) 1+0=1 Fib(3) = Fib(2) + Fib(1) 1+1=2 Fib(4) = Fib(3) + Fib(2) 2+1=3 Fib(5) = Fib(4) + Fib(3) 3+2=5 La funcin recursiva dado que Fib(n) = Fib (n-1) + Fib(n-2) seria: Funcin fib entero Inicio Si n = 0 o n = 1 entonces Devolver 1 Sino Devolver Fib (n-1) + Fib(n-2) Finsi Fin funcin .
LOGICA DE PROGRAMACION
44
1. Realice un procedimiento que permita intercambiar el valor de dos variables 2. Realizar una funcin que permita obtener el trmino n de la serie de Fibonacci. 3. Realizar una funcin que permita obtener el valor absoluto de un nmero 4. Realice un procedimiento que permita convertir coordenadas polares (ngulo, radio) en
cartesianas( (x,y). X = radio * cos(ngulo) Y = radio * Sen(ngulo)
6. Realizar una funcin que permita obtener el mayor valor de tres parmetros de entrada A, B, y
C; los tres valores son diferentes.
7. Realice un procedimiento que permita verificar si una fecha es vlida o no. 8. Realice un procedimiento que permita calcular el valor de Pi. 9. Realizar una funcin que permita obtener mximo comn divisor de dos nmeros mediante el
algoritmo de Eucldes.
10. Realice un procedimiento que permita verificar si un nmero ledo es primo o no.
LOGICA DE PROGRAMACION
45
OBJETIVO: Reconocer, diferenciar y manejar apropiadamente los tipos de datos, los operadores lgicos y matemticos, los conceptos de variables y constantes; las instrucciones de entrada y salida de datos y manejo de seleccin doble, anidada y mltiple. Aplicar las diferentes estructuras de decisin de acuerdo a los requerimientos del problema Objetivos especficos: Aprender el manejo de las instrucciones de decisin Adquirir destreza en el anlisis del problema planteado y utilizando mltiples decisiones. Hacer algoritmos con el manejo de los datos realizando las operaciones con una secuencia lgica. CONTENIDO TEMTICO Alternativas: Simples Dobles En bloque Anidadas Mltiples Competencias acadmicas a desarrollar Aprender el manejo de las instrucciones de decisin Adquirir destreza en el anlisis del problema planteado y utilizando mltiples decisiones. Hacer algoritmos con el manejo de los datos realizando las operaciones con una secuencia lgica.
Indicadores de logro: Conceptual: Identifica las instrucciones de entrada y salida de informacin, el proceso de los datos. Procedimental: Implementacin eficaz de soluciones utilizando las estructuras ms adecuadas de acuerdo al caso. Escogiendo la alternativa que la solucin del problema requiera. Actitudinal: Reconoce cual es la estructura mas adecuada.
LOGICA DE PROGRAMACION
46
FORMATO O SINTAXIS
Decisin Compuesta SI Condicin o condiciones unidas por operadores lgicos ENTONCES Bloque de instrucciones que deben ejecutarse cuando si se cumple la condicin. SINO (De lo contrario o de otro modo) Bloque de instrucciones que deben ejecutarse cuando no se cumple la condicin. FINSI (Fin de las preguntas).
Decisin con operadores lgicos SI Condicin o condiciones (unidas por operadores lgicos) ENTONCES
Bloque de instrucciones cuando se cumple la(s) condicin(es) FINSI (Fin de las preguntas).
Ejemplo 20: Elaborar programa en seudo cdigo (EPES) que lea o entre cdigo, nombre, salario bsico horas, nmero de horas trabajadas, retencin y aos en la empresa de un empleado. S, el empleado lleva ms de 10 aos en la empresa adicionarle salario neto. una bonificacin de $100.000 al
Si el empleado lleva ms de 5 aos en la empresa y menos de 10 aos y su salario neto es menor de $60.000 entonces imprimir Tendr aumento de sueldo. S el empleado lleva menos de un ao en la empresa imprimir Bienvenido. Adems imprimir cdigo, nombre y Salario Neto del empleado. ANALISIS DATOS ENTRADA
LOGICA DE PROGRAMACION
47
CODEMP : Cdigo del empleado NOMEMP : Nombre del empleado SALBH : Salario Bsico Hora NHT : Nmero de Horas Trabajadas RET : Retencin AEMP: Aos en la empresa DATOS DE SALIDA ? SALBR : Salario Bruto SALN : Salario Neto.
PROGRAMA SALARIOS INICIO PROG.PPAL. PASO 1 ASIGNACION DE TIPO A LAS VARIABLES CARAC: CODEMP ; NOM EMP REAL: SALBH ; RET; SALBR ; SALN ENT :AEMP ; NHT Se agruparon varias variables en una sola lnea separadas por punto y coma. Tambin se colocan las variables y constantes con su tipo en cada lnea. PASO 2 INICIALIZACION DE LAS VARIABLES DE TRABAJO SALBR ; SALN 0 PASO 3 ENTRADA DE DATOS Mostrar entre cdigo Lea CODEMP Mostrar entre Nombre Lea NOMEMP Mostrar entre Salario Bsico Hora Lea SALBH Mostrar entre Horas Trabajadas Lea NHT mostrar entre Retencin Lea RET mostrar Entre aos en la Empresa Lea AEMP Los ttulos Mostrar entre Cdigo, etc. se utilizan para que informacin acerca del dato que debe digitar. el usuario tenga
PASO 4 CALCULOS Y COMPARACIONES CON IMPRESIONES INTERMEDIAS CALCULOS (REAL:SBR:SBH:SN; ENT: NHT:AEMP) PASO 5 SALIDA DE INFORMACIN MOSTRAR Cdigo=;COD,Nombre: NOM,Salario Neto= SN La salida de informacin se hizo en una sola lnea combinando separadas por comas y punto y coma. FIN PROG.PPAL INPROC CALCULOS (REAL:SBR:SBH:SN; ENT: NHT:AEMP) ttulos y variables
LOGICA DE PROGRAMACION
48
SBR = SBH * NHT (Calcula el salario bruto) SN = SBR RT (conocido el salario bruto puede calcular el salario neto) SI AEMP > 10 ENTONCES SN = SN + 100.000 ( le suma la bonificacin a los empleados con mas de 10 aos) FINSI SI (AEMP > 5) ^ ( AEMP < 10 ) ^ (SN < 60000) ENTONCES MOSTRAR Tendr aumento de sueldo FINSI SI AEMP < 1 ENTONCES MOSTRAR Bienvenido FINSI RETORNE FIN PROC.. Ntese que no se utiliza la sentencia SINO (de lo contrario o de otro modo) porque ninguna de las condiciones expuestas especificaba que hacer en caso de que no se cumpliera la condicin. PRUEBA DE ESCRITORIO CODEMP 1234 NOMEMP Luis SALBH 7000 NHT 40 AEMP RET 6 28.400 SALBR 280.000 SALN 257.600
Con frecuencia, es necesario que existan mas de dos elecciones posibles. Este problema como s vera mas adelante, se podra resolver por estructuras alternativas, anidadas o en cascada; Sin embargo, este mtodo si l nmero de alternativas es grande puede plantear serios problemas de escritura del algoritmo y naturalmente la legibilidad. La estructura caso es una alternativa mltiple.
La estructura de decisin mltiple evaluar una expresin que podra tomar n valores distintos, 1, 2, 3,..., n. Segn que elija uno de los de estos valores en la condicin, se realizara una de las n acciones, o lo que es igual, el flujo del algoritmo seguir un determinado camino entre los n posibles.
FORMATO O SINTAXIS Segn opcin hacer V1 : accin 1 V2 : accin 2 V3 : accin 3 : Vn : accin n Sino Accin no se cumple Fin segn. En caso de V1 : accin 1 V2 : accin 2 V3 : accin 3 : Vn : accin n Sino Accin no se cumple Fin caso
LOGICA DE PROGRAMACION
49
FORMATO O SINTAXIS Caso_de expresin hacer e1 : {conjunto de instrucciones} e2 : {conjunto de instrucciones} otro_caso: {conjunto de instrucciones} fin_caso
Ejemplo 21 : Se desea disear un algoritmo que escriba los nombres de los das de la semana en funcin del valor de una variable DIA introducida por teclado, que representa su posicin dentro de la semana. Los das de la semana son 7; por consiguiente el rango de valores de DIA ser 1... 7, y caso de que da tome un valor fuera de este rango se deber producir un mensaje de error advirtiendo la situacin anmala. Programa nombre_dia INICIO lea DIA . . . . . . . . . . . fin Caso_de DIA hacer 1: 2: 3: 4: 5: 6: 7: escriba LUNES escriba MARTES escriba MIRCOLES escriba JUEVES escriba VIERNES escriba SABADO escriba DOMINGO escriba "ERROR
otro_caso: fin_caso
LOGICA DE PROGRAMACION
50
estructura si - entonces puede contener otra si entonces y esta a su vez puede contener otra, dndose lo que llaman condicionales anidados.
Caso 1. Se tienen tres posibles valores para una variable. SI Condicin1 (Entonces) Bloque de instrucciones que deben ejecutarse cuando cumple la condicin1. SINO (De lo contrario o de otro modo) SI Condicin2 (Entonces) Bloque de instrucciones si la condicin2 SINO (De lo contrario o de otro modo) Bloque de instrucciones que deben ejecutarse cuando no se cumplen la condicin1 y la condicin 2 FINSI (fin condicin 2) FINSI (Fin de la condicin 1).
Ejemplo 22: Se tiene el nombre de un vendedor, el valor de la venta y el cdigo del producto. La comisin de este vendedor se le liquida de acuerdo al cdigo del producto que vende: si el cdigo del producto es 1 la comisin es del 5% sobre el valor de sus ventas; si el cdigo del producto es 2 la comisin es del 7.5% sobre el valor de sus ventas; si el cdigo del producto es 3 la comisin es del 6% sobre el valor de sus ventas. Imprima el nombre del vendedor y su comisin. SOLUCION ANALISIS DATOS DE ENTRADA Nom_vend = nombre del vendedor Cod_prod = Cdigo del producto que vende el vendedor Val-vta = valor de la venta del vendedor DATOS DE SALIDA Com_ven = Comisin que recibe el vendedor
Com_vend = Val-vta * % ( formula para calcular la comisin . el % toma el valor de acuerdo al codigo del producto)
( PROGRAMA COMISIONES) INICIO PROG. PPAL. Asignar tipo de valores que tendrn las variables CARAC: Nom_vend; Cod_prod REAL: Val-vta ; Com_ven Inicializar variables en que se almacenan los clculos Com_ven = 0 Lectura de los datos de entrada LEER; Nombre del vendedor Nom_vend;Codigo del producto; cod_prod;
LOGICA DE PROGRAMACION
51
Valor de la venta Val-vta MOSTRAR Nombre del vendedor Nom_vend MOSTRAR: La comisin del vendedor Com_ven (REAL:Val-vta, CARAC:cod_prod) Se invoca una funcin que realiza los clculos para hallar la comisin de acuerdo al l cdigo del producto FIN PROG- PPAL. INFUNC REAL Com_ven (REAL: Val-vta; CARAC:cod_prod) SI Cod_prod = 1 (Entonces) Com_vend = Val-vta * 0.05 SINO (De lo contrario o de otro modo) SI Cod_prod = 2 (Entonces) Com_vend = Val-vta * 0.075 SINO (De lo contrario o de otro modo) Com_vend = Val-vta * 0.06 FINSI FINSI RETORNE Com_vend FIN FUNC.
PRUEBA DE ESCRITORIO Nom_vend Juan Vlez Ana Medina Cod_prod 2 3 Val-vta 10000.000 8000.000 Com_ven 750.000 480.000
Caso 2. Se tienen VARIAS CONDICIONES para unas variables. SI Condicin1 (Entonces) Bloque de instrucciones que deben ejecutarse cuando si cumple condicin1. SINO (De lo contrario o de otro modo) SI Condicin2 (Entonces) Bloque de instrucciones si cumple la condicin2 y niega la condicin 1 SINO (De lo contrario o de otro modo) SI Condicin 3 (Entonces) Bloque de instrucciones si cumple la condicin3 y niega las condiciones 1 y 2 SINO (De lo contrario o de otro modo) Bloque de instrucciones que deben ejecutarse cuando no se cumplen las Condiciones 1, 2 y 3 FINSI (fin condicin 3)
LOGICA DE PROGRAMACION
52
FINSI (fin condicin 2) FINSI (DE LA CONDICIN 1). NOTA: Observe que el ltimo condicional que se abre es el primero que se cierra. Ejemplo 23 Se tiene el nombre, la nota parcial 1 y parcial 2, el seguimiento y el examen final, calcular la nota definitiva ( seguimiento 40%) , mostrarla con su nombre y decir si gan, perdi o habilita definitiva. ANALISIS DATOS DE ENTRADA NOMEST = nombre del estudiante CODEST = cdigo de estudiante NPAR1 = Nota del parcial 1 NPAR2 = Nota del parcial 2 NSGTO = Nota del Seguimiento NEXFIN = Nota del examen final DATO DE SALIDA NDEF = nota definitiva.( de acuerdo al enunciado la formula es: NDEF = NPAR1*0.20+ NPAR2* 0.20+ NSGTO * 0.40+ NEXFIN* 0.20) PROGRAMA NOTAS INICIO PROG- PPAL. ASIGNAR TIPO A LOS IDENTIFICADORES CARAC: CODEST, NOMEST REAL_ NDEF, NPAR1, NPAR2, NSGTO, NEXFIN INICIAR VARIABLE DE TRABAJO NDEF = 0 LEER: Cdigo del estudiante CODEST, Nombre del estudiante NOMEST, Nota del parcial 1 NPAR1, Nota del parcial 2 NPAR2, Nota del seguimiento NSGTO, Nota del examen final NEXFIN CALCULARNOTA( REAL: NDEF: NPAR1: NPAR2:: NSGTO:NEXFIN) MOSTRAR NOMBRE ESTUDIANTE NOMEST CODIGO ESTUDIANTE CODEST SU NOTA DEFINITIVA NDEF FIN PROG.PPAL. IN PROC. CALCULARNOTA( REAL: NDEF: NPAR1: NPAR2:: NSGTO:NEXFIN) NDEF = NPAR1*.20+ NPAR2*. 20+ NSGTO * .40+ NEXFIN* .20 SI NDEF >= 3.0 ENTONCES MOSTRAR GANO SINO SI NDEF >= 2.0 ENTONCES MOSTRAR: HABILITA SINO MOSTRAR PERDIO
LOGICA DE PROGRAMACION
53
FINSI FINSI RETORNE (NDEF) FINPROC. PRUEBA DE ESCRITORIO NOMEST Juan Diaz CODEST 2345 NPAR1 3.0 NPAR2 2.5 NSGTO 3.0 NEXFIN 2,0 NDEF 0 2.7
HABILITA
2345
Luisa Jaramillo
3567
4.1
INICIO ( Nombre del programa) ( 1) ASIGNAR TIPO A VARIABLES Y CONSTANTES ( todas las variables y constantes que se definieron en la lista de variables) ( 2) INICIAR VARIABLES DE TRABAJO Y (3)LEER DATOS DE ENTRADA (4) PROCESAR DATOS LEIDOS Clculos necesarios para solucionar el problema Los clculos pueden ser una(s) funcin(es) o un(os) procedimiento(s)(ver nota) Evaluar condiciones Realizar los clculos necesarios para solucionar el problema (5) MOSTRAR RESULTADOS OBTENIDOS FIN DEL INICIO CONSTANTES
Nota: El orden de los clculos y el proceso se realizan segn sea el enunciado. Los clculos pueden ser antes, dentro o despus del condicional.
LOGICA DE PROGRAMACION
54
Elabora el taller de la unidad 4, condicionales simples, compuestos y mltiples: prctica el anidamiento de los condicionales compuestos- Todo esto hace parte de tu trabajo independiente. Consulta la pagina http//espanol.geocities.com/evmejia_36
4.6
Practicar alternativas compuestas y condicionales anidados. Realice los algoritmos utilizando funciones y procedimientos
1. Leer 2 nmeros para realizar una divisin. Si el segundo nmero es Cero (0) imprima
"divisin no posible"
4. Leer x, y, z compararlos y si al menos dos son iguales imprima un mensaje que diga: 'Hacen
pareja".
6. Leer un nmero si este es > 0 sumarle 10 y poner el resultado en una variable SUM, de
lo contrario si el nmero es < 0 multiplquelo por su positivo.
7. Imprima el nombre y la edad de una persona, si esta es mayor de edad, mujer y casada. Si
es hombre y soltero imprima slo su nombre, si no cumple alguno de los requisitos, imprimir un mensaje "No cumple con lo pedido ".
8. Se desea seleccionar un atleta para una maratn internacional, para seleccionarlo este
debe haber terminado el maratn anterior, en un tiempo determinado. Los tiempos son 150 minutos para hombres menores de 40 aos; 175 minutos para hombres con una edad mayor o igual a 40 aos y 180 minutos para mujeres. Los datos a introducir (leer) son: Sexo, Edad y tiempo efectuado en su maratn anterior.
9. Leer un nmero si es par imprimir su cubo, si es impar imprimir su cuarta. 10. Deducir si un nmero ledo desde el teclado es positivo, negativo o igual a Cero (0). 11. Realice un seudo cdigo para saber si un ao ledo es bisiesto o no. Es bisiesto si el ao/4 y
el residuo es = 0 y adems que sea mltiplo de 100 y de 400 mayor de 1000.
LOGICA DE PROGRAMACION
55
13. Imprimir el mayor entre tres nmeros. 14. Leer tres nmeros imprimirlos en orden descendente. 15. Leer dos Nmeros e imprimirlos solo si son los dos positivos. 16. Se tiene la siguiente informacin:
1 Suma 2 Resta 3 Producto 4 Divisin 5 Exponenciacin Escoger una opcin y realizar la operacin indicada con 2 nmeros que sern ledos luego de escoger la opcin.
El nmero medio
20. Una agencia de alquiler de autos cobra la hora de uso del vehculo a un valor determinado
de acuerdo a la temporada, si el cliente usa el carro por ms de 10 horas le hacen un descuento del 20% por cada hora de ms. Haga un programa que lea horas de uso, valor hora, y determine el total a pagar.
21. Una empresa requiere de un celador que cumpla los siguientes requisitos: Hombre casado,
mayor de 30 aos y menor de 45.
22. Se tienen los datos de una persona (Nombre, Edad, Sexo, Estado Civil). Imprimir un mensaje
de "Aceptado" siempre y cuando cumpla con los requisitos. Sexo = M Masculino Estado Civil =1 Casado(a)
24. Segn las teoras de Sigmound Freud, el hombre se desarrolla en las siguientes etapas de
acuerdo a su edad nio 13-17 adolescente 18-25 joven 26-55 adulto y mayor de 55 anciano.
LOGICA DE PROGRAMACION
56
Si tenemos la lectura de una edad de persona imprimir en cual etapa se encuentra esta persona.
25. Una tienda de libros vende sus libros de acuerdo a las siguientes especificaciones:
Valor del IVA 16% Precio base 1.000 Si nmero de pginas es mayor de 201 el precio del libro se incrementa en 10%. Se leen los siguientes datos: nombre del libro, nmero de pginas.
26. Una tienda de libros vende sus libros de acuerdo a las siguientes especificaciones: Precio
base de $ 5000, si el si el nmero de hojas es mas 100 y menos de 200 $7 por cada hoja, entre 200 y 300 hojas $8 de recargo; $9 de recargo por cada hoja si el nmero de hojas es mayor de 300. Realizar un algoritmo que calcule el precio del libro y lo imprima con su nombre. Se lee el nombre del libro y el nmero de pginas.
muestre lo
28. Leer un nmero de mes y decir cuntos das tiene este. Si es mes dos verificar si el ao es
bisiesto y decir que este mes tiene 29 das , de lo contrario tiene 28. Nota: Meses 4, 6, 9, 11 tienen 30 das. Meses 1, 3, 5, 7, 8, 10, 12 tienen 31 das. Mes 2 tiene 28 o 29 das.
29. Un cliente que tiene en inversin en el banco. El decidir reinvertir con los intereses siempre y
cuando estos excedan a $100.000 sino solo dejara el capital . Desea saber cuanto dinero tendr finalmente en su cuenta. Se lee el valor invertido y la tasa de inters.
30. Un obrero necesita calcular su salario semanal, el cual se obtiene de la siguiente manera:
Si trabaja 40 horas o menos se le paga $ 5000 por hora Si trabaja mas de 40 horas se le paga $ 5000 por cada una de las primeras 40 horas y $6000 por cada hora extra.
31. Se tienen el rea y el valor del metro cuadrado de una propiedad y la forma de pago de la
cuota inicial.. Se pide calcular el precio de venta, el valor de la cuota inicial que es el 45% del valor del terreno.. Si la forma de pago es = 1 el recibe un descuento del 10% sobre la cuota inicial y si forma de pago es = 2 se le recarga un 8% sobre su valor. Mostrar el valor de la propiedad y el valor a pagar de la cuota inicial. (solo hay 2 formas de pago) NOTA : Recuerde que la prueba de escritorio es una herramienta muy til para saber si el algoritmo que diseo si funciona o no funciona.
LOGICA DE PROGRAMACION
57
CONTENIDO TEMTICO
Definicin de contadores y acumuladores Definicin de suiches o banderas Definicin de registro centinela Definicin de registro identificador Instrucciones repetitivas: Ciclo Mientras Ciclo Haga Para o Desde Ciclo Repita Hasta Ciclos anidados Rompimiento de control
Competencias acadmicas a desarrollar Utilizar contadores y acumuladores en la solucin de un problema con varios registros. Reconocer los diferentes ciclos y saber aplicarlos de acuerdo a la situacin. Utilizar datos centinelas en el manejo de los ciclos. Desarrollar algoritmos con suiches y variables de rompimiento. Asimilar el concepto de los ciclos anidados, variables de grupo y variables generales Indicadores de logro: Conceptual: Diferencia los conceptos de: acumulador y contador; registro centinela y registro identificador. Procedimental: Soluciona problemas, con mas de un registro, aplicando las estructuras de ciclos y las seales de fin de archivo Implementa soluciones para datos organizados, por grupos. Actitudinal: Demuestra inters en resolucin de problemas simples mediante algoritmos basados en estructuras de control alternativas e iterativas.
LOGICA DE PROGRAMACION
58
5.2 ACUMULADOR
rea de trabajo donde se almacena un valor que puede ser variable. El trmino acumulador iene de acumular (sumar cantidades). Por ejemplo: la caja registradora de un almacn suma cantidades diferentes de pagos, al final de la jornada muestra un acumulado o suma de los valores registrados.
5.3 PROMEDIO
Resultado de la divisin de la suma de unas variables (acumulador) dividida por el nmero de variables sumadas (contador). ( PROMEDIO = ACUMULADOR/CONTADOR). Cuando el ejercicio pide un promedio se debe inicializar un Acumulador y un Contador. Generalmente la operacin del promedio se realiza por fuera del ciclo.
5.6 CICLOS
Los computadores estn diseados para que las operaciones o el conjunto de ellas se puedan repetir muchas veces.
LOGICA DE PROGRAMACION
59
Para poder implementar acciones que deben ejecutarse repetidamente se utilizan los ciclos o bucles y se llama iteracin el hecho de repetir la ejecucin de unas determinadas acciones. Estos se utilizan en un programa cuando se necesita repetir varias veces una serie de acciones o instrucciones.
Las dos principales preguntas que se deben hacer al disear un bucle son: Que contiene el bucle? Cuntas veces hay que repetir.
Generalmente por medio de contadores se controla el nmero de Las tres estructuras repetitivas o iterativas son: Haga mientras Repetir hasta Desde o Para
repeticiones.
La decisin de detener un proceso repetitivo tiene que estar al principio o al final del ciclo, como sucede en el ciclo mientras y el repita hasta; en el ciclo desde o para se realizan un nmero fijo de veces.
FORMATO O SINTAXIS Variable = Valor inicial HAGA MIENTRAS condicin Bloque de instrucciones Variable = Variable + i FIN - MIENTRAS Ejemplo 24: Generar e imprimir los nmeros de 0 al 500 Lista de variables X = Contador generador de los nmeros INICIO (PROGRAMA GENERAR NUMEROS) ENT: X
LOGICA DE PROGRAMACION
60
Solucin: X 0 HAGA MIENTRAS X < 500 IMPRIMA: Numero X X=X+1 FIN - MIENTRAS FIN
PRUEBA DE ESCRITORIO ( Se realiza con 5 nmeros si funciona para estos funciona para 500) X 0 0+1=1 1+ 1 =2 2+ 1 =3 3+1=4 4 +1 = 5
pares.
ANALISIS : Datos entrada NUM = nmero Datos salida CONT = contador de nmeros CONT = CONT +1 RES = residuo RES = NUM mod 2 (utiliza el operador mod ) INICIO (PROGRAMA NUMEROS PARES) Asignar tipo a las variables ENT: NUM, RES, CONT Inicializar variables de trabajo CONT, RES = 0 HAGA MIENTRAS CONT < 10 MOSTRAR "Entre nmero" LEA Valor del numero NUM RES = NUM mod 2 SI RES = 0 ENTONCES MOSTRAR :Numer par NUM FIN - SI CONT = CONT +1 FIN MIENTRAS FIN DEL PROGRMA PRUEBA DE ESCRITORIO ( Se realiza con 5 nmeros ) CONT NUM 3 6 14 17 9
Ejemplo 26: Un ciclo mientras controlado con un registro identificador Se tiene un archivo con los
LOGICA DE PROGRAMACION
61
datos de los N trabajadores de la empresa XY cada registro tiene: el nombre, horas trabajadas y valor hora. Calcular el salario neto e imprimirlo con el nombre del trabajador, teniendo en cuenta que si el salario mensual es >= $800.000 la retencin para impuestos es del 4.5% y para seguridad social el 2.5%; si es menor retenerle para seguridad social el 2% y darle un auxilio de 60.000 para transporte. Calcule el total de aportes de los trabajadores para impuestos y para seguridad social, el total de salarios pagados por la empresa. ANALISIS DATOS DE ENTRADA (registro) NOMT= nombre del trabajador SALBH = salario bsico hora pagado al Trabajador NHTRAB = nmero de horas trabajadas por el trabajador DATOS DE SALIDA TAPORS = Total de los aportes para seguridad social TAPORS TAPORS + RETSS TIMPT = Total aportes de los trabajadores para impuestos TIMPT = TIMPT + RETIMP SALNPT = salario neto que recibe el trabajador SALNPT = SALB RETIMP RETSS + AUXTRASP SALB = salario bruto que se le paga al trabajador SALB = SALBH * NHTRAB TSALPE = total de salarios pagados por la empresa TSALPE = TSALPE + SALB RETSS = Retencin para seguridad social RETSS = SALB * % RETIMP = Retencin para impuestos RETIMP = SALB * % AUXTRASP = auxilio para transporte CONT = contador de trabajadores controla el ciclo CONT CONT + 1 Nota: el % toma el valor de acuerdo al monto del salario (PROGRAMA SALARIOS) INICIO PROG-PPAL. ASIGNAR TIPO CARAC: NOMT
REAL: SALNPT,RETSS,RETIMP,AUXTRASP REAL: TSALPE,TIMPT,TAPORS,TSALPE,SALBH,SALB
ENT:NHTRAB ; CONT INICIAR VARIABLES DE TRABAJO TSALPE,TIMPT,TAPORS,; CONT = 0 LEER N ( N : es el nmero de trabajadores de la fbrica) HAGA M. Q CONT < N (controla el ciclo con un contador que debe llegar a N) LEER : Nombre del trabajador NOMT, salario basico horaSALBH, Numero de horas trabajadas NHTRAB (lee los datos de entrada del problema) CAL-SALARIO (REAL:SALBH; ENT: NHTRAB: REAL:SALNPT) Se llama un procedimiento donde se calcula el salario neto de acuerdo al monto del salario bruto TOTALES (REAL: RETSS, RETIMP : REAL TSALPE,TIMPT,TAPORS) Se llama un procedimiento donde se calculan los totales con datos que recibe del procedimiento MOSTRAR: Nombre del trabajador: NOMT Salario neto : SALNPT CONT CONT + 1 ( contador que permite saber cuado se llega a N) FIN MQ. MOSTRAR: El total de Salarios pagados por la empresa TSALPE El total de deducciones para impuestos TIMPT El total de aportes para Seguridad Social: TAPORS FIN PROG-PPAL.
LOGICA DE PROGRAMACION
62
IN-PROC CAL-SALARIO (REAL:SALBH; ENT: NHTRAB: REAL:SALNPT) SALB = SALBH * NHTRAB (se empieza el proceso de los datos ledos ) SI SALB > 800.000 ENTONCES RETIMP = SALB * 0.045 RETSS = SALB * 0.025 AUXTRASP = 0 SINO RETIMP = 0 RETSS = SALB * 0.02 AUXTRASP = 60.000 FIN SI SALNPT = SALB RETIMP RETSS + AUXTRASP RETORNE ( SALNPT, RETIMP. RETSS, SALB) FIN PROC. IN-PROC TOTALES (REAL: RETSS, RETIMP : REAL TSALPE,TIMPT,TAPORS) TIMPT = TIMPT + RETIMP TSALPE = TSALPE + SALB TAPORS = TAPORS + RETSS RETORNE ( TAPORS, TSALPE, TIMPT FIN PROC.
PRUEBA DE ESCRITORIO NOMT Elas Prez Pedro Duran Carmen Gmez TAPORS 0 24.000 29.760 33.600 RETSS 0 24.000 5.760 3.840 TIMPT 0 43.200 NHTRAB 48 48 48 SALBH 20.000 6.000 4.000 SALNPT 0 892.800 342.000 248.160 AUXTRASP 0 0 60.000 60.000 SALBH 0 960.000 288.000 192.000 CONT 0 1 2 3 TSALPE 0 960.000 1248.000 1440.000
RETIMP 0 43.200 0 0
Ejemplo 27 : Un ciclo mientras controlado por un registro centinela: Se tiene un archivo con: valor de las ventas, el nombre y el cdigo de los vendedores de una compaa. A cada vendedor se le liquida la comisin de acuerdo a la siguiente: Si el valor de las ventas: <= 3'000.000 COMISION = 15.000 + 3.5% de esas ventas; si el valor de las ventas: > 3000.000 ^ <= 5`000.000 COMISION = 10.000 + 4.5% de las ventas y si el valor de las ventas es: > 5'000.000 COMISION = 8.000 + 5% de las ventas. Imprima el nombre y la comisin pagada al vendedor; el total de comisiones pagadas por la empresa; el promedio de ventas; el vendedor que realiz la mayor venta y su nombre. El fin de archivo lo controla un cdigo del vendedor 000000
LOGICA DE PROGRAMACION
63
ANALISIS DATOS DE ENTRADA (registro) CODV = cdigo del vendedor NOMV = nombre del vendedor VRVTAS = valor de las ventas del vendedor DATOS DE SALIDA COMV = comisin del vendedor TCOMPE = total comisiones pagadas por la empresa TVTASVEND = total de las ventas de todos los vendedores PROMVTAS = Promedio de ventas CONTVEND = contador de vendedores NOMVMV = nombre vendedor que realiz la mayor venta MAYVTA = mayor venta (PROGRAMA COMISIONES) INICIO PROG.PPAL. ASIGNAR TIPO CARAC: CODV, NOMV , NOMVMV REAL: MAYVTA, VRVTAS, COMV, TCOMPE, PROMVTAS, TVTASVEND INICIAR VARIABLES DE TRABAJO MAYVTA, TVTASVEND, COMV, TCOMPE, PROMVTAS, CONTVEND LEER: Codigo del vendedor CODV Nombre del vendedor NOMV valor de las ventas VRVTAS (LEER 1er registro) HAGA M.Q (CODV <> 0000000) (Dato centinela cdigo 00000) MOSTRAR: Nombre del vendedor NOMV Comisin del vendedor COMV (REAL:VRVTAS) TOTALES (REAL:VRVTAS, COMV, ENT: CONTVEND : REAL : TVTASVEND, TCOMPE) MAYOR-VTA ( REAL MAYVTA : REAL:VRVTAS: CARAC: NOMVMV, NOMV) LEER: Codigo del vendedor CODV Nombre del vendedor NOMV valor de las ventas VRVTAS (Siguientes registros) FIN M.Q. MOSTRAR: El promedio de ventas es:PROMVTAS(REAL: TVTASVEND ENT: CONTVEND) El total de comisiones pagadas es: TCOMPE La mayor venta la realizo NOMVMV La mayor venta es: MAYVTA FIN PROG.PPAL. IN-FUNC REAL COMV (REAL:VRVTAS) SI VRVTAS > 5`000.000 ENTONCES (empieza el proceso del registro ledo) COMV = VRVTAS * 0.05 + 8.000 SINO SI VRVTAS > 3000.000 ENTONCES COMV = VRVTAS * 0.045 + 10.000 SINO
LOGICA DE PROGRAMACION
64
COMV = VRVTAS * 0.035 + 15.000 FINSI FINSI RETORNE (COMV) FIN FUNC. IN-PROC TOTALES (REAL:VRVTAS, COMV, ENT: CONTVEND : REAL : TVTASVEND, TCOMPE) TVTASVEND TVTASVEND + VRVTAS TCOMPE TCOMPE + COMV CONTVEND CONTVEND + 1 RETORNE (CONTVEND, TVTASVEND, TCOMPE) FIN PROC. IN- PROC MAYOR-VTA ( REAL MAYVTA : REAL:VRVTAS: CARAC: NOMVMV, NOMV) SI VRVTAS > MAYVTA ENTONCES MAYVTA VRVTAS NOMVMV NOMV FINSI RETORNE (MAYVTA. NOMVMV) FIN-PROC. FUNC REAL PROMVTAS(REAL: TVTASVEND ENT: CONTVEND) PROMVTAS = TVTASVEND/ CONTVEND RETORNE(PROMVTAS) FIN-FUNC. PRUEBA DE ESCRITORIO CODV 222333 222433 223569 224678 00000 NOMV Amanda Garca Carlos Cardona Evelio Duran Rubn Jaramillo VRTAS 5000.000 3000.000 7000.000 4000.000
LOGICA DE PROGRAMACION
65
Ejecuta repetitivamente un conjunto o bloque de instrucciones hasta que se cumpla una condicin determinada que puede verificarse al principio o la final del ciclo. Se ejecuta mientras el valor de la condicin es falso, justo lo contrario al ciclo mientras. La estructura repetir se ejecuta al menos una vez, ya que cuando la instruccin repetir se ejecuta solo se evala despus de ejecutar la las instrucciones que hay en el bucle. FORMATO O SINTAXIS: Variable = valor inicial REPITA Bloque de instrucciones HASTA condicin = verdadera ( fin ciclo) Ejemplo 28: Generar los nmeros pares del 2 al 10 e imprimirlos. Lista de identificadores: cn = contador que genera los nmeros pares INICIO ( PROGRAMA GENERAR NUMEROS PARES) Asignar tipo ENT:cn Solucin: Inicializar variables cn = 2 REPETIR MOSTRAR numero par cn cn = cn + 2 HASTA cn = 10 FIN PROGRAMA. PRUEBA DE ESCRITORIO Cn +2 =2 2+ 2 = 4 4+2=6 6+2=8 8 + 2 = 10
La estructura mientras termina cuando la condicin es falsa y la repita hasta cuando la instruccin es verdadera. En la instruccin repetir el cuerpo del bucle se ejecuta siempre una vez, por el contrario en la mientras es mas general y existe la posibilidad de que el bucle no sea ejecutado.
LOGICA DE PROGRAMACION
66
Ejecuta repetitivamente un conjunto o bloque de instrucciones que se conoce de antemano y que por lo tanto no requiere de condicin de salida; el contador para contar el nmero de iteraciones se incrementa o decrementa de modo automtico.
FORMATO O SINTAXIS: HAGA PARA vi = vi HASTA vn , con incremento de 1 hacer Bloque de instrucciones FIN PARA
NOTA: El incremento cuando es de 1, no es necesario indicarlo si es mayor se debe indicar; cuando es decremento se indica el valor de ste acompaado del signo (-). Si el valor inicial es mayor que el final se dar un decremento (-) y si el valor inicial es menor que el valor final se dar un incremento (+).
Ejemplo 29: Calcular los cuadrados de los 10 primeros nmeros e ANALISIS: J = contador automtico que controla el ciclo Cuad = cuadrado de los nmeros generados Cuad = J * J INICIO ( PROGRAMA CUADRADOS) Asignar tipo a las variables ENT :J, Cuad Inicializar variables Cuad = 0 HAGA PARA J = 1 HASTA 10, 1 Cuad = J * J MOSTRAR El cuadrado es : Cuad FIN - CICLO FIN PROGRAMA. PRUEBA DE ESCRITORIO J 1 2 3 4 5 6 7 8 9 10 Cuad 1 4 9 16 25 36 49 64 81 100
imprimirlos.
LOGICA DE PROGRAMACION
67
5. 11 MODELO CICLO MIENTRAS CON REGISTRO IDENTIFICADOR Y REGISTRO CENTINELA REGISTRO CENTINELA INICIO (1) ASIGNAR TIPO A VARIABLES Y CONSTANTES (2) INICIAR CONTADORES, ACUMULADORES, VARIABLES DE TRABAJO (3) LEER REGISTRO (DATOS DE ENTRADA) (4) HAGA MIENTRAS NO SE A SEAL DE FIN DE ARCHIVO (5) PROCESAR DATOS LEIDOS (REGISTRO) Clculos necesarios para solucionar el problema Los clculos pueden ser una(s) funcin(es) o un(os) procedimiento(s)-ACUMULAR -CONTAR -EVALUAR CONDICIONES - MOSTRAR RESULTADOS PARTICULARES ( DE CADA SUJETO) 6 LEER REGISTRO (DATOS DE ENTRADA FIN CICLO 7 CALCULOS GENERALES 8 MOSTRAR RESULTADOS GENERALES FIN DEL INICIO REGISTRO IDENTIFICADOR INICIO ( 1) ASIGNAR TIPO A VARIABLES Y CONSTANTES 2) INICIAR CONTADORES, ACUMULADORES, VARIABLES DE TRABAJO (3) LEER No. DE REGISTROS (SUJETOS) (4) HAGA MIENTRAS CONTREG. < No. DE REGISTROS (5)LEER REGISTRO (DATOS DE ENTRADA (6) PROCESAR DATOS LEIDOS REGISTRO Clculos necesarios para solucionar el problema Los clculos pueden ser una(s) funcin(es) o un(os) procedimiento(s) - ACUMULAR -CONTAR -EVALUAR CONDICIONES -MOSTRAR RESULTADOS PARTICULARES ( DE CADA SUJETO) CONTREG = CONTREG + 1 (**) FIN CICLO 7 CALCULOS GENERALES 8 MOSTRAR RESULTADOS GENERALES FIN DEL INICIO
LOGICA DE PROGRAMACION
68
5.12 DENTRO DEL CICLO 5 REGISTRO IDENTIFICADOR: Primera instruccin leer los datos de entrada del sujeto (registro) para procesarlos. 6 Se inicia el proceso de los datos ledos (Registro) 5 REGISTRO CENTINELA: Se inicia el proceso de los datos que se traen ledos (registro) PROCESAR DATOS LEIDOS EN REGISTRO IDENTIFICADOR Y CENTINELA : Se realizan los clculos necesarios para la solucin del problema. contar, acumular, evaluar condiciones, mostrar resultados particulares ( de cada sujeto) REGISTRO IDENTIFICADOR: 6 (**) Obligatorio este contador de registros incrementarlo para poder que el ciclo funcione (camine hasta el numero de sujetos). REGISTRO CENTINELA: 6 leer registro (datos de entrada. los registros siguientes del archivo, hasta que aparezca la seal de fin del archivo. Ultima instruccin dentro del ciclo, cuando termina de procesar totalmente el registro que se trae ledo.
5.13 FUERA DEL CICLO 7) CALCULOS GENERALES: promedios, (*acumuladores / contadores) , porcentajes (*contador particular/ contador general), Condiciones: evaluar condiciones con los resultados generales. acumuladores y contadores que fueron incrementados dentro del ciclo. 8) MOSTRAR RESULTADOS GENERALES. ** No se muestran datos de un solo sujeto, pues solo mostrara los datos correspondientes del ltimo sujeto procesado.
REGISTRO IDENTIFICADOR: Se realizan dos lecturas diferentes. La primera puede hacerse o no de acuerdo a que el enunciado diga el nmero de sujetos en cifras o de una letra. La segunda siempre ser la primera instruccin dentro del ciclo. El ciclo se controla con un contador de registros ( hasta completar el numero de sujetos que hay en el archivo) REGISTRO CENTINELA: Se realizan dos lecturas iguales, una antes de entra al ciclo y la otra dentro del ciclo al final de este. Ser la ltima instruccin que se realiza dentro del ciclo. El ciclo se controla con una seal de fin de archivo.
LOGICA DE PROGRAMACION
69
Nota: Observe que no necesita el contador de registros dentro del ciclo ya que este su estructura es un contador automtico; los dems pasos son iguales a los que se realizan en el ciclo mientras con registro identificador. .
Estructuras anidadas: de la misma manera que se pueden anidar estructuras de condicin se puede hacer con los ciclos, en los dos casos la estructura interna debe de estar totalmente incluida en la externa. Las variables de control de los ciclos toman valores de tal modo que una variable del ciclo externo no cambia de valor, mientras no se ejecute totalmente el ciclo interno. Ejemplo 30: Hallar el factorial de N nmeros ledos. ANALISIS DATO DE ENTRADA NUM = NUMERO LEIDO N = Cantidad de nmeros ledos DATO DE SALIDA ?FACT = FACTORIAL J = Contador ciclo externo L = Contador ciclo interno INICIO (PROGRAMA FACTORIAL) ENT: J,L,N, NUM LEER; N (cantidad de nmeros leidos) J=1 HAGA PARA J = 1, HASTA N, 1 (ciclo externo) LEA valor del numero NUM FACT = 1
LOGICA DE PROGRAMACION
70
HAGA PARA L = 1, HASTA NUM, 1 ( ciclo interno) FACT = FACT * L FIN PARA( del ciclo interno) IMPRIMA: El numero es: NUM Su factorial es: FACT FIN PARA (del ciclo externo) FIN PROGRAMA.
Los suiches o interruptores es un campo de memoria que puede tomar dos valores: falso o verdadero; si o no; 1 o 0, a lo largo de la ejecucin de un programa y permite comunicar informacin de una parte a otra del mismo programa. Estos tienen gran aplicacin en la programacin y son utilizados para: ciclo. no de un suceso
Recordar en determinados puntos del programa la ocurrencia o anterior. Decidir en instrucciones alternativas la accin que se debe seguir.
Ejemplo 31: Se desea un programa que permita reservar unas localidad de un reservada muestre un mensaje explicando que no est disponible. ANALISIS DATO DE ENTRADA NRO_CED = Nmero de cdula VARIABLES DE TRABAJO SW = Suiche NRO-S = nmero de silla INICIO (RESERVA DE LOCALIDADES) BOL: SW ENT : NRO-CED. NRO-S Inicializar variables SW = S NRO-S = 0 HAGA MIENTRAS SW = S LEA ; Numero de silla NRO-S SI NRO-S = 0 ENTONCES DIGITE: El numero de la cedula NRO-CED El nombre es: NOMBRE NRO-S = CED SINO MUESTRE " LA SILLA YA FUE RESERVADA" FIN SI DESEA CONTINUAR: S / N
teatro y si est
LOGICA DE PROGRAMACION
71
LEA SW FIN MIENTRAS. FIN PRUEBA DE ESCRITORIO SW = S NRO-S = 0 24899,142 77865.432 NRO- CED 24899,142 24899,142 NOMBRE Luis Jaramillo Gloria Angel
SW = N Ejemplo 32: Generar los primeros n nmeros de la sucesin: 17- 15- 18- 16- 19 17- 20- 21 ...... n ANALISIS DATOS DE ENTRADA NT = numero de trminos VARIABLES DE TRABAJO BAN = bandera o suiche CONT = contador CONT = CONT + 1 TER = Trmino de la serie que se genera, INICIO Asignar tipo BAN , CONT, TER, NT = 0 ENTERO Inicializar Variables y constantes BAN = 1 CONT = 1 TER = 17 LEER NT HAGA MIENTRAS ( CONT <= NT ) MOSTRAR Trmino de la serie TER SI BAN = 1 ENTONCES TER = TER 2 BAN = 2 Sino TER = TER + 3 BAN = 1 FINSI CONT = CONT + 1 FIN MIENTRAS FIN PRUEBA DE ESCRITORIO NT = 5 TER 17 15 18 16 19 CONT 1 2 3 4 5 BAN 1 2 1 2 1
LOGICA DE PROGRAMACION
72
A menudo es conveniente tener una archivo organizado por uno o sobre l un proceso especial.
Rompimiento de control es el que se da cuando necesitamos ejecutar una o varias instrucciones que estn por fuera de un proceso establecido (ciclo); este proceso necesita de una variable de control para ejecutar el rompimiento, se puede dar a varios niveles.
Ejemplo 33: En una Universidad se tiene el archivo de los grupos; cada registro contiene los siguientes datos: - CODIGO DEL GRUPO - NOMBRE DEL ESTUDIANTE - CODIGO DEL ESTUDIANTE - EDAD DEL ESTUDIANTE - ESTATURA DEL ESTUDIANTE - PESO DEL ESTUDIANTE
Elaborar un seudo cdigo que imprima los cdigos de los grupos y el promedio de edad de los estudiantes; el nombre del estudiante mas alto, su cdigo, la estatura y el peso. El fin de archivo lo controla una edad -1 . Anlisis: este ejercicio tiene un rompimiento de control de primer nivel; cada que se cambie de grupo se debe hallar el promedio de edad e imprimirlo, debemos trabajar ciclos anidados; como no se conoce el nmero de estudiantes se trabaja con un registro centinela y un ciclo mientras. ANALISIS DATOS DE ENTRADA (Registro) CODG = cdigo del grupo NOME = nombre del estudiante CODE = cdigo del estudiante ED = edad del estudiante EST = estatura del estudiante PE = peso del estudiante DATOS DE SALIDA SUMED = Acumulador que contendr la suma de las edades de los cada grupo. CESTG = Contador de los estudiantes de cada grupo. PROMED = Promedio de edad de los estudiantes de cada grupo. MAYEST = Mayor estatura NEMYEST = Nombre del estudiante de mayor estatura. PEMAYEST = Peso del estudiante de mayor estatura. VARIABLE DE ROMPIMIENTO CODGACT = Contendr el cdigo del grupo que se est evaluando, cuando este sea diferente al
estudiantes de
LOGICA DE PROGRAMACION
73
ledo se habr cambiado de grupo es decir se da el rompimiento. INICIO PROG PPALTipo de variables CARAC: NEMYEST; NOME, CODGACT; CODE, CODG REAL : PEMAYEST; CESTG; MAYEST; SUMED l Inicializacin de variables
NEMYEST = MAYEST CESTG , SUMED = 0 LEA REGISTRO CODGACT = CODG HAGA MIENTRAS ED <> -1 HAGA MIENTRAS ( CODGACT = CODG) AND ( ED <> -1 ) CAL-MAYOR-EST (REAL: EST. PEMAYEST; MAYEST, PE; CARAC: NEMYEST, NOME) CESTG = CESTG + 1 SUMED = SUMED + ED LEA REGISTRO FIN MIENTRAS (CICLO INTERNO). IMPRIMA: El grupo es:CODGACT El promedio del grupo es: PROMED ( REAL ; SUMED, ENT: CESTG) CAMBIO DE GRUPO (CARAC: CODGACT; CODE, CODG , ENT CESTG) FIN MIENTRAS (CICLO EXTERNO) IMPRIMA: El estudiante de mayor estatura es: NEMYEST La estatura es:MAYEST El peso es: PEMAYEST FIN PROG. PPAL. IN-FUNC. REAL PROMED ( REAL ; SUMED, ENT: CESTG) PROMED = SUMED / CESTG RETORNE ( PROMED FIN FUNC. IN PROC CAL-MAYOR-EST ( REAL: EST. PEMAYEST; MAYEST, PE ; CARAC : NEMYEST, NOME) SI EST > MAYEST ENTONCES MAYEST = EST NEMYEST = NOME PEMAYEST = PE FIN SI
FIN PROC IN PROC CAMBIO DE GRUPO (CARAC: CODGACT; CODE, CODG , ENT CESTG, SUMED, REAL: PROMED)
CODGACT = CODG SUMED, CESTG, PROMED = 0 RETORNE (SUMED, CESTG, PROMED, CODGACT) FIN-PROC.
NOTA: Cuando se presenta rompimientos a ms de un nivel, variables de control de rompimiento como niveles haya.
LOGICA DE PROGRAMACION
74
PRUEBA DE ESCRITORIO CODE 123 234 145 246 345 346 456 457 NOME Luisa Ochoa Jaime Sierra Jorge Ortiz Carlos Daz Esteban Garcs Alicia Medina Camilo Osorio Jorge Cano CODEG 11 11 11 22 22 22 33 33 ED 18 17 19 16 17 17 19 20 PE 58 73 70 76 65 68 63 65 EST 1.65 1,76 1,72 1,81 1,71 1,70 1,67 1,69
CODGACT 11
22
LOGICA DE PROGRAMACION
75
CAMBIO DE GRUPO( VAR. DE GRUPO...., VARIABLES) FIN MIENTRAS CALCULOS GENERALES ( promedios, porcentajes) MOSTRAR RESULTADOS GENERALES FIN DEL PROGRAMA PPAL INICIO PROCESAR REGISTRO (VARIABLES......) INICIAR VARIABLES ACCIONES PARA PROCESAR REGISTRO LEIDO ( Contar, acumular, evaluar condiciones, hacer clculos, mostrar resultados particulares etc.) RETORNE (resultados) FIN SUBPROGRAMA INICIO CAMBIO DE GRUPO (VAR. DE GRUPO........VARIABLES...) CALCULOS GRUPO (promedios, porcentajes, evaluacin de variables del grupo) RESULTADOS DE GRUPO ( se muestra los resultados del grupo que se acabo de procesar) VARIABLE DE ROMPIMIENTO = VARIABLE GRUPO INICIAR LAS VARIABLES DEL GRUPO RETORNE (RESULTADOS DE GRUPO) FIN SUBPROGRAMA
Caso 2: Ejercicio con un ciclo con registro centinela y un condicional compuesto INICIO PROGRAMA PPAL. ASIGNAR TIPO (A TODAS LAS VARIABLES Y CONSTANTES) INICIAR VARIABLES TODAS LAS VARIABLES DE TRABAJO LEER REGISTRO (primer registro) VARIABLE DE ROMPIMIENTO VARIABLE GRUPO HACER MIENTRAS No Fin Archivo ( SEAL DE FIN DE ARCHIVO) SI variable de rompimiento = variable grupo ENTONCES PROCESAR REGISTRO ( VARIABLES ............) ( Contar, acumular, evaluar condiciones, hacer clculos, mostrar resultados particulares etc.) LEER REGISTRO(registros siguientes) SINO CAMBIO DE GRUPO(VAR. DE GRUPO...., VARIABLES) CALCULOS GRUPO (promedios, porcentajes, evaluacin de variables del grupo) RESULTADOS DE GRUPO ( se muestra los resultados del grupo que se acabo de procesar) FIN SI FIN MIENTRAS . CAMBIO DE GRUPO( VAR. DE GRUPO...., VARIABLES) CALCULOS GENERALES ( promedios, porcentajes) MOSTRAR RESULTADOS GENERALES FIN DEL PROGRAMA PPAL. INICIO PROCESAR REGISTRO INICIAR VARIABLES ACCIONES PARA PROCESAR REGISTRO
LOGICA DE PROGRAMACION
76
( Contar, acumular, evaluar condiciones, hacer clculos, mostrar resultados particulares etc.) RETORNE (RESULTADOS) FIN SUBPROGRAMA INICIO CAMBIO DE GRUPO (VAR. DE GRUPO........VARIABLES...) CALCULOS GRUPO (promedios, porcentajes, evaluacin de variables del grupo) RESULTADOS DE GRUPO ( se muestra los resultados del grupo que se acabo de procesar) VARIABLE DE ROMPIMIENTO VARIABLE GRUPO INICIAR LAS VARIABLES DEL GRUPO RETORNE RESULTADOS DE GRUPO FIN SUBPROGRAMA
controla un cdigo del vendedor 000000 Imprima el nombre y la comisin pagada al vendedor. Promedio de ventas por ciudad El total de comisiones pagadas por la empresa. El vendedor de la empresa que realiz la mayor venta y su nombre. ANALISIS DATOS DE ENTRADA ( registro de datos) CODV = cdigo del vendedor NOMV = nombre del vendedor VRVTAS = valor de las ventas del vendedor CIUD = ciudad donde vende DATOS DE SALIDA COMV = comisin del vendedor COMV = VRTAS * % + prima % y prima toman el valor de acuerdo al valor de las ventas del vendedor TCOMPE = total comisiones pagadas por la empresa TVTAS-CIUD = total de las ventas los vendedores de cada ciudad TVTAS-CIUD = TVTAS-CIUD + VRVTAS PROMVTAS-CIUD = Promedio de ventas ciudad PROMVTAS-CIUD =TVTAS-CIUD / CVEND-CIUD CVEND-CIUD = contador de vendedores por ciudad NOMVMV = nombre vendedor de la empresa que realiz la mayor venta MAYVTA = mayor venta VARIABLE DE ROMPIMIENTO CIUDACT = ciudad que se est procesando Este ejercicio se soluciona con ciclos anidados y registro centinela
LOGICA DE PROGRAMACION
77
PROGRAMA COMISIONES INICIO PROG-PPAL. ASIGNAR TIPO CARAC :CODV, NOMV , NOMVMV, CIUDACT, CIUD REAL : MAYVTA, VRVTAS, COMV, TCOMPE, PROMVTAS-CIUD, TVTAS-CIUD ENT: CVEND-CIUD INICIAR VARIABLES ( contadores y acumuladores) MAYVTA, TVTAS-CIUD, COMV, TCOMPE, PROMVTAS-CIUD, CVEND-CIUD = 0 LEER: Cdigo CODV, Nombre del vendedor NOMV Valor de sus ventas, VRVTAS, Ciudad donde vende CIUD ( 1er registro) CIUDACT = CIUD HAGA M.Q (CODV <> 0000000) HAGA M-Q ( CIUDACT = CIUD ) AND (CODV <> 0000000) (empieza el proceso del registro ledo) MOSTRAR La comisin del vendedor COMV ( REAL: VRTAS,COMV) MOSTRAR: Nombre del vendedor NOMV. TOTALES (REAL:TCOMPE, TVTAS-CIUD ENT: CVEND-CIUD) MAYORVENTA ( REAL: MAYVTA, VRTAS ;CARAC; NOMV. NOMVMV) L EER: Cdigo CODV, Nombre del vendedor NOMV Valor de sus ventas, VRVTAS, Ciudad donde vende CIUD ( registros siguientes) FIN M.Q. (ciclo interno) CAMBIO DE CIUDAD( CARAC : CIUDACT, CIUD; REAL PROMVTAS-CIUD, TVTAS-CIUD) FIN MQ. (ciclo externo) MOSTRAR El vendedor que realizo la mayor venta: NOMVMV, La mayor venta es MAYVTA, El total de comisiones pagadas por la empresa TCOMPE FIN PROG-PPAL. IN-FUNC. REAL COMV ( REAL: VRTAS,COMV) SI VRVTAS > 5`000.000 ENTONCES COMV = VRVTAS * 0.05 + 30.000 SINO SI VRVTAS > 3000.000 ENTONCES COMV = VRVTAS * 0.045 + 20.000 SINO COMV = VRVTAS * 0.035 + 10.000 FINSI FINSI RETORNE (COMV) FIN-FUNC. IN PROC TOTALES (REAL:TCOMPE, TVTAS-CIUD REAL :COMV: VRVTAS; ENT: CVEND-CIUD) TVTAS-CIUD = TVTAS-CIUD + VRVTAS TCOMPE = TCOMPE + COMV CVEND-CIUD = CVEND-CIUD + 1 RETORNE (TCOMPE, TVTAS-CIUD. CVEND-CIUD) FIN PROC.
LOGICA DE PROGRAMACION
78
IN PROC MAYORVENTA ( REAL: MAYVTA, VRTAS ;CARAC; NOMV. NOMVMV) SI VRVTAS > MAYVTA ENTONCES MAYVTA VRVTAS NOMVMV NOMV FINSI RETORNE (NOMVMV, MAYVTA) FIN PROC. IN PROC CAMBIO DE CIUDAD( CARAC : CIUDACT, CIUD; REAL PROMVTAS-CIUD, TVTAS- CIUD) PROMVTAS-CIUD =TVTAS-CIUD / CVEND-CIUD MOSTRAR El promedio de ventas por ciudad es: PROMVTAS-CIUD La ciudad es CIUDACT CIUDACT = CIUD PROMVTAS-CIUD, TVTAS-CIUD, CVEND-CIUD =0 RETORNE (CIUDACT = CIUD, PROMVTAS-CIUD, TVTAS-CIUD, CVEND-CIUD) FIN PROC. PRUEBA DE ESCRITORIO COV 235 123 458 345 789 876 965 432 698 000 COMV 0 80.000 330.000 380.000 200.000 280.000 430.000 115.000 200.000 80.000 CIUD Bogot Bogot Bogot Bogot Medelln Medelln Medelln Cali Cali NOMV Juan Valdez Jaime Garca Carmen Londoo Luisa Villada Carlos Gmez Pedro Vlez Samuel Ospina Miguel Restrepo Felipe Varela VRTAS 2000.000 6000.000 7000.000 4`000.000 5000.000 8000.000 3000.000 4`000.000 2`000.000
TCOMPE 0 80,000 410.000 790.000 990.000 1270.000 1700.000 1815.000 2015.000 2095.000
TVTASCIUD 0 2000.000 8000.000 15000.000 19000.000 0 5000.000 13000.000 16000.000 0 4`000.000 6`000.000
CVEND-CIUD PROMVTAS-CIUD 0 0 1 19000.000 / 4 2 4`750.000 3 0 4 0 16000.000 /3 1 5333.333 2 0 3 6`000.000 / 2 0 1 3000.000 2 CIUDACT Bogot Medelln Cali
LOGICA DE PROGRAMACION
79
Ejemplo 35: Se tiene un archivo con los datos de los trabajadores de la empresa XY organizado por secciones cada registro tiene: el nombre, el departamento, las horas trabajadas y valor hora. Calcular el salario neto e imprimirlo con el nombre del trabajador, teniendo en cuenta que si el salario mensual es >= $1.200.000 la retencin para impuestos es del 4.5% y para seguridad social el 2.5%; si es menor retenerle para seguridad social el 2% y darle un auxilio de 60.000 para transporte. Calcule el total de aportes de los trabajadores para impuestos y para seguridad social en la empresa y por seccin el total de salarios pagados por la empresa el promedio de salarios por seccin. El fin de archivo lo controla un nombre del trabajador en nnnnnnnn NOTA: Este ejemplo se ejecuto el algoritmos en subprogramas, y utilizando un condicional compuesto en reemplazo del ciclo interno. ANALISIS DATOS DE ENTRADA (registro de datos) NOMT= nombre del trabajador SALBD = salario bsico hora pagado al trabajador NDTRAB = nmero de horas trabajadas por el trabajador SEC = Cdigo seccin DATOS DE SALIDA TAPORSS = Total aportes para seguridad social por seccin TAPORSS = TAPORSS + RETSS TIMPTS = Total aportes para impuestos por seccin TIMPTS = TIMPTS + RETIMP TAPORSE = Total aportes para seguridad social en la empresa TAPORSE TAPORSE + RETSS TIMPTE = Total aportes para impuestos en la empresa TIMPTE= TIMPTE + RETIMP SALNPT = salario neto que recibe el trabajador SALNPT = SALBM RETIMP RETSS + AUXTRASP SALBM = salario bsico mes o bruto mes que se le paga al trabajador SALBM = SALD* NDTRAB TSALPE = total de salarios pagados por la empresa TSALPE = TSALPE + SALBM TSALPS = total de salarios pagados por seccin TSALPS = TSALPS + SALBM POMSS = Promedio salarios por seccin POMSS = TSALPS / CVS CVS = Contador vendedores por seccin CVS = CVS + 1 RETSS = Retencin para seguridad social RETSS = SALBM * % RETIMP = Retencin para impuestos RETIMP = SALBM * % AUXTRASP = auxilio para transporte Tenga en cuenta que el valor de % se da de acuerdo al valor de los salarios brutos. VARIABLE DE ROMPIMIENTO SECACT = Seccin actual INICIO PROG-PPAL. ASIGNAR TIPO A TODOS LOS IDENTIFICADORES CARAC: NOMT, SECACT, SEC REAL : TSALPE,TIMPTE,TAPORSE, TSALPS, SALBD, TIMPTS REAL: TAPORSS,SALBM , SALNPT,RETSS,RETIMP,AUXTRASP, POMSS ENT:NDTRAB INICIAR LAS VARIABLES DE TRABAJO TSALPE, TIMPTS ,TAPORSS,TSALPS, SALBM,SALNPT , TIMPTE,TAPORSE =0 RETSS,RETIMP,AUXTRASP = 0
LOGICA DE PROGRAMACION
80
LEER : Nombre deel trabajador NOMT, Salario bsico da SALD, Numero de das trabajados NDTRAB, Seccin donde labora SEC (1er registro) SECACT = SEC (asignar a la variable de rompimiento el valor de la variable de grupo) HAGA M. Q (NOMT<> nnnnnnn ) SI SECACT = SEC ENTONCES (se empieza el proceso del registro ledo) SALARIOS ( REAL: SALD, ENT: NDTRAB,REAL: SALBM, SALNPT,RETSS,RETIMP) TOTALES (REAL:RETSS, RETIMP, TSALPE,TIMPTE,TAPORSE, TSALPS REAL_TIMPTS ,TAPORSS,TSALPS, SALBM, ENT:CVS) MOSTRAR: NOMBRE NOMT ; SALARIO NETO SALNPT, LEER : Nombre deel trabajador NOMT, Salario bsico da SALD, Numero de das trabajados NDTRAB, Seccin donde labora SEC ( los registros Siguientes) SINO CAMBIO_SEC (REAL:TIMPTS ,TAPORSS,TSALPS,CARAC:SEC,SECACT;ENT:CVS) FINSI FIN MQ. CAMBIO_SEC (REAL:TIMPTS ,TAPORSS,TSALPS,CARAC:SEC,SECACT;ENT:CVS) MOSTRAR: El total de salarios pagados por la empresa TSALPE, El total impuestos pagados por los trabajadores TIMPTE, El total impuestos pagados por los trabajadores TAPORSE
FIN.
IN-PROC. SALARIOS ( REAL: SALD, ENT: NDTRAB,REAL: SALBM, SALNPT,RETSS,RETIMP)) SALBM = SALD* NDTRAB SI SALBM >1.200.000 ENTONCES RETIMP = SALBM * 0.07 RETSS = SALBM * 0.03 AUXTRASP = 0 SINO RETIMP = 0 RETSS = SALBM * 0.02 AUXTRASP = 60.000 FIN SI SALNPT = SALBM RETIMP RETSS + AUXTRASP RETORNE (SALNPT,SALBM,RETIMP, RETSS) FIN PROC. IN PROC.TOTALES (REAL:RETSS, RETIMP, TSALPE,TIMPTE,TAPORSE, TSALPS REAL_TIMPTS ,TAPORSS,TSALPS, SALBM, ENT:CVS) TIMPTE= TIMPTE + RETIMP TSALPE = TSALPE + SALBM TAPORSE TAPORSE + RETSS TIMPTS = TIMPTS + RETIMP TSALPS = TSALPS + SALBM TAPORSS TAPORSS + RETSS CVS = CVS + 1 RETORNE (TSALPE,TIMPTE,TAPORSE, TSALPS, TIMPTS ,TAPORSS,CVS) FIN PROC.
LOGICA DE PROGRAMACION
81
IN PROC. CAMBIO_SEC (REAL:TIMPTS ,TAPORSS,TSALPS,CARAC:SEC,SECACT;ENT:CVS) POMSS = TSALPS / CVS MOSTRAR : EL PROMEDIO SALAIOS POR SECCION POMSS EL TOTAL DE APORTES PARA SEGURIDAD SOCIAL TPORSS EL TOTAL DE APORTES PARA IMPUESTOS ES: TIMPTS EN LA SECCION SECACT TIMPTDS, TAPORSS, POMSS, TSALPS, CVS = 0 SECACT = SEC RETORNE (TIMPTDS, TAPORSS, POMSS, TSALPS, CVS,SECAT) FIN PROC. PRUEBA DE ESCRITORIO CODV 33333 44444 55555 55667 66666 66554 77777 88888 22233 22245 21156 22345 0000000 SALBM NOMT Elas Prez Pedro Duran Carmen Gmez Carlos Vlez Ana Gallego Luisa Jimnez Ester Ramrez Carlos Medina Amanda Garca Carlos Crdoba Juan Ruiz Evelio Duran nnnnnn SEC Calzado Calzado Calzado Calzado Vestuario Vestuario Vestuario Vestuario Vestuario Tocador Tocador Tocador NDTRAB 30 30 30 30 30 30 30 30 30 30 30 30 0 SALBH 50.000 26.000 34.000 25.000 20.000 40.000 28.000 35.000 45.000 23.000 20.000 27.000 000000
1.500.000 105.000 45.000 780.000 0 15.600 1.020.000 0 20.400 750.000 600.000 840.000 1.050.000 0 15.000 0 12.000 0 16.800 0 21.000
TIMPTS TAPORSS TSALPS 0 1.350.000 0 0 0 60.000 824.400 105.000 45.000 1.500.000 60.000 1.059.600 60.600 2.280.000 795.000 648.000 0 883.200 100.800 81.000 96.000 0 12.000 55.200 72.000 0 112.500 0 13.800 25.800 42.000 3.300.000 4.050.000 0 600.000 2.040.000 3.390.000 4.440.000 0 690.000 1.290.000 2.100.000
0 1.296.000
60.000 1.089.000 195.300 0 1.215.000 60.000 60.000 60.000 736.200 648.000 853.800
SECACT Calzado
Vestuario
Tocador
LOGICA DE PROGRAMACION
82
Nota : recuerde que una prueba de escritorio es una herramienta muy importante para detectar los errores de lgica.
1. Escriba un algoritmo que lea 142 nmeros e informe el valor promedio de ellos. 2. Escriba un algoritmo que lea N registros conteniendo cada uno un nmero (NRO) y una
potencia (POT), calcular la sumatoria implementado el operador exponenciacin. de NRO**POT. Debes asumir que no esta
LOGICA DE PROGRAMACION
83
6. Clculo de la media de 50 nmeros a leer, e imprima el resultado. 7. Contar el nmero de letras i de una frase terminada en un punto. Se supone que las letras
pueden leerse independientemente. En este algoritmo el contador de letras slo se incrementa cuando se encuentra las letras i buscadas.
9.
Lea una serie de nmeros distintos de cero (el ltimo nmero de la serie es el cero 0) y obtener el nmero mayor. Como resultado se debe visualizar el nmero mayor y un mensaje indicando la presencia de un nmero negativo, en caso de que se haya ledo un nmero negativo.
10. Calcular la suma de los cuadrados de los 100 primeros nmeros naturales. 11. Sumar los nmeros pares del 2 al 100 e imprimir su valor. 12. Calcular los mltiplos de los nmeros comprendidos entre 4 y N, donde N es un valor
introducido por teclado.
13. Dados 10 nmeros enteros, mostrar la suma de los nmeros pares de la lista, cuntos
nmeros pares existen y cul es la media aritmtica de los nmeros impares.
14. Se tiene un archivo con 200 registros de empleados de una compaa, cada registro contiene
los siguientes datos: Nmero del empleado Nombre del empleado Salario bsico por hora Horas trabajadas en el mes Deducciones Se requiere leer los registros e imprimir un listado con la siguiente informacin por empleado: Nmero del empleado Nombre del empleado Salario bsico hora Horas trabajadas Deducciones Salario mensual ** Tambin se debe calcular e imprimir al final del listado, el total de salarios pagados a todos los empleados y el promedio salarial por empleado.
**
LOGICA DE PROGRAMACION
84
forma:
El total a pagar es igual a los cargos fijos ms los cargos variables. Los cargos fijos son $3000 y los cargos variables se calculan sumando el 10% del patrimonio y el 15% de la renta. Cada registro contiene: El cdigo del estudiante Patrimonio Renta Se debe obtener por estudiante Cdigo Renta Patrimonio Cargo fijo Cargo variable Total matrcula El fin de los datos es un cdigo de estudiante en cero.
17. Se lee un conjunto de 1000 nmeros. Un nmero por registro. Elabore un algoritmo que
imprima la suma de estos nmeros y adems los subtotales que resultan de sumar grupos de a 50.
19. Se tiene un conjunto de 50 registros con los siguientes campos : Nombre, Edad, Sexo (F =
femenino M = masculino) Se debe imprimir cada uno de los siguientes totales: Hombres mayores de edad Hombres menores de edad Mujeres mayores de edad Mujeres menores de edad
LOGICA DE PROGRAMACION
85
El total de nmeros positivos El total de nmeros negativos El mayor de los nmeros. Calcule el factorial de n nmeros ledos
21. En una eleccin realizada en Piedra Dura, se presentaron tres candidatos: Juan, Pedro y
Pablo. Por cada votante se elabor un registro as: CED CED : Numero de identificacin del votante VOTO es: Si voto por Pedro 1 Si voto por Pablo 2 Si voto por Juan 3 Si voto en blanco 4 Elabore un algoritmo que muestre el resultado de la votacin, indicando cuantos votantes hubo en total y cuantos votos alcanz cada candidato y quien gano las elecciones. El fin de datos lo indica una cdula en cero 0. VOTO
22. Una librera estima los precios de sus libros de la siguiente forma:
El precio bsico de un libro es de $5.000.oo mas $150 por pagina. Sin embargo si el nmero de paginas excede de 550 el precio se incrementara en otros $2.500.oo. Se tiene un conjunto de registros cada uno de los cuales contiene el cdigo de un libro y el nmero de paginas. Se requiere calcular e imprimir el cdigo y el precio de cada uno de los libros. Fin de datos es un cdigo de libro igual a cero 0.
24. En un negocio el valor de las compras hechas por sus clientes, las tiene almacenadas en un
archivo, formado por los siguientes campos: Cdula del cliente Nombre del cliente Cdigo del articulo Unidades compradas Valor unitario
LOGICA DE PROGRAMACION
86
El archivo est clasificado en forma ascendente por la cdula del cliente. Por cada compra del cliente imprima lo siguiente: Cdula Cdigo del artculo Unidades compradas Valor unitario Valor de la compra Por cada cliente se debe informar: Cedula Nombre del cliente Valor total de las compras del cliente De todos los datos procesados se debe informar :El valor total comprado por todos los clientes. La cdula y nombre del cliente que ms compr.
26. En una empresa se quiere generar un informe de cartera, para ello se cuenta con un archivo,
en el cual cada registro contiene: Cdula del cliente Nmero de la factura Valor total de la factura El archivo est clasificado en forma ascendente por la cdula del cliente. En el informe se debe imprimir lo siguiente: Cdula del cliente y su nombre. Una a una sus facturas con el respectivo valor La deuda total del cliente Cliente con la mayor deuda
LOGICA DE PROGRAMACION
87
27. Al liquidar la nmina de una empresa, se debe leer un archivo que contiene por cada
empleado lo siguiente: Cdigo Concepto de devengado Valor devengado por dicho concepto El archivo est clasificado en forma ascendente por el cdigo del empleado. Se imprime un informe que contenga lo siguiente: El cdigo del empleado y el nombre. Cada uno de los conceptos y el respectivo valor devengado El devengado total por trabajador El nombre del trabajador que ms gan El valor total devengado en la empresa
28. Se tiene el nombre, cdigo del producto, el nombre de la seccin, el total de las ventas del
vendedor. El archivo esta organizado por secciones el fin de archivo es una seccin 0000. Calcule la comisin del vendedor teniendo en cuenta que si el producto es de: Cdigo 1 esta es del 5%, Cdigo 2 esta es del 8%, Cdigo 3 esta es del 7%, cdigo 4 es del 6.5% Imprima el nombre cdigo del producto y la comisin neta de cada vendedor teniendo en cuenta que sobre su comisin le retienen el 2.5% para impuestos y el total comisiones pagadas por cada seccin, y el total pagado por la empresa de acuerdo a cada producto.
29. Se tiene un archivo de los estudiantes de un colegio organizado por grupos, por cada
estudiante se lee; el nombre, el cdigo del estudiante, el nmero del grupo, la nota definitiva, contar los que pierden y los que ganan en cada grupo; imprimir: el promedio del colegio; la mayor nota y la menor nota de cada grupo e imprimirlo con el nombre y cdigo del estudiante. El fin de archivo lo controla un cdigo 000000.
30. Se tiene un archivo de trabajadores organizado por departamentos; cada registro tiene
el nombre, horas trabajadas y valor hora, cdigo de cada departamento, y el cdigo del trabajador. Calcule el salario teniendo en cuenta: la retencin del 8% si salario bsico es > $1.280.000, de lo contrario retencin va a ser del 3%. Calcule el total de salarios de la empresa. y el total de retenciones y el promedio de salario por departamento. El fin de archivo lo controla un cdigo 000000.
pide realizar un programa que permita: Imprimir el nombre cdigo del vendedor y la comisin del vendedor; el nombre y el cdigo del vendedor que tenga la venta ms alta, el total de ventas de la zona y el total de ventas de la empresa; el total de comisiones que paga la empresa y promedio de ventas de cada zona. La informacin que se lee por cada vendedor es: Nombre, cdigo del vendedor; nmero de la zona, total de comisin del vendedor y total de las ventas del vendedor. El archivo esta organizado por zonas y el fin de archivo lo indica un cdigo de vendedor 000000.
LOGICA DE PROGRAMACION
88
UNIDAD 6 ARREGLOS
OBJETIVO: Recurrir al manejo de estructuras como vectores y matrices en la solucin de los problemas planteados. Implementar soluciones a problemas utilizando estas estructuras, para el manejo de varios registros al nivel de la memoria R.A.M. Objetivos especficos : Ordenar, eliminar, modificar o buscar los datos en arreglos de una dimensin Reconocer las estructuras de los arreglos bidimensionales y las diferentes operaciones que se dan en su recorrido. Hacer ejercicios con el manejo de vectores y matrices, y sus combinaciones. Realizar ordenamiento de vectores aplicando alguno de los diferentes mtodos. CONTENIDO TEMTICO Definicin Arreglos: Unidimensionales Bidimensionales Multidimensionales
Competencias acadmicas a desarrollar Ordenar, eliminar, modificar o buscar los datos en arreglos de una dimensin Reconocer las estructuras de los arreglos bidimensionales y las diferentes operaciones que se dan en su recorrido. Hacer ejercicios con el manejo de vectores y matrices, y sus combinaciones. Realizar ordenamiento de vectores aplicando alguno de los diferentes mtodos.
Indicadores de logro: Conceptual: Conoce e identifica los arreglos con una o ms dimensiones para aplicarlas en problemas planteados. Procedimental: Resuelve problemas mediante algoritmos que requieran operaciones con datos almacenados en vectores y matrices, y el manejo de ciclos anidados. Integra los elementos bsicos de la algoritmia en el tratamiento y solucin de los problemas planteados, e identifica fcilmente los errores. Actitudinal: Reconoce las diferentes estructuras de datos y se interesa por su manejo en la solucin de los problemas.
LOGICA DE PROGRAMACION
89
6. ARREGLOS
6.2 VECTOR Arreglo unidimensional organizado en forma de lista. Conjunto de datos continuos que tienen el mismo formato y se denominan elementos del vector. Generalmente en un vector se almacenan datos para luego ellos o consultar de una forma rpida. realizar una operacin con
Para referirse a un determinado elemento se coloca el nombre del vector y dentro de un parntesis un subndice que indica a cual de los elementos nos estamos refiriendo. Los vectores se almacenan en la memoria central del computador en un orden adyacente. As un vector de 9 posiciones , llamado EDADES se representa grficamente por nueve posiciones de memoria sucesivas. Cada elemento se puede procesar como si fuese una variable simple. Ejemplo 36 Vector EDADES
23
35 24
12
24
36
27
18
LOGICA DE PROGRAMACION
90
Edades(9) = 18 Los vectores deben ser dimensionados dentro del programa previamente a su uso. Ejemplo: Vector [1...9] de enteros: EDADES
Tiene un ndice que indica el nmero de cada posicin del vector. Este debe ser un nmero entero. Tiene tipo numrico o alfanumrico segn sean los datos que almacene. Los datos del vector deben ser homogneos, es decir Cuando se refiere a un elemento del vector: siempre se vector y dentro de parntesis la posicin. del mismo tipo. debe escribir el nombre del
Se dan dos tipos de operaciones sobre los arreglos: sobre sus elementos o sobre el arreglo completo.
LOGICA DE PROGRAMACION
91
Operaciones sobre los elementos del arreglo son: asignacin, lectura/ escritura. Operaciones sobre el arreglo completo son: Recorrido, bsqueda, insercin / eliminacin, ordenacin.
6.4.1 Asignacin De Datos En Un Vector. Al igual que en las variables, los valores almacenados en un vector pueden ser dados por el programador o por el usuario del programa. Ejemplo: Vec-num(1) Vec-nomb (25) nombre Ana 5 indicamos que en la posicin 1 del vector nmero se le asign el valor 5
Si se desea asignar valores a todas las posiciones del vector se debe utilizar un ciclo (Para, mientras o repita).
6.4.2 Lectura y escritura de datos. La entrada o salida (escritura/ lectura) normalmente se realizan con estructuras repetitivas. Ejemplo 36 Usando el vector Edades que tenemos anterior LEER: Edades(6) leer el elemento 6 del vector edades que es 24 ESCRIBIR (IMPRIMIR): Edades(9) nos mostrar el elemento 9 que es 18
6.4.3 Bsqueda En Un Vector: Cuando se necesita hallar uno o varios elementos que cumplan una determinada caracterstica dentro de un vector se emplean dos tipos de bsqueda: secuencial o lineal y binaria. 6.4.3.1 Bsqueda lineal o secuencial Mtodo de localizacin basado en comparaciones a lo largo de todo el vector. Se emplea generalmente cuando se trabaja con vectores desorganizados. Se da bsqueda con barrido completo y la con barrido interrumpido 6.4.3.2 Bsqueda binaria. En este caso podemos hallar la de un vector ordenado. posicin de un elemento dentro
6.4.3.3 Bsqueda con barrido completo: Se realiza desde el primer elemento hasta al ltimo; se utiliza cuando pueden haber varios elementos que contengan la misma caracterstica. Ejemplo 37:
Llenar un vector de 10 posiciones con valores cuntas veces se repite el elemento 75 en dicho vector.
numricos e imprimir
Realice el ejercicio en subprogramas . ANALISIS VEC_NUM = vector nmeros J = contador subndice del vector CONT = contador de elementos iguales a 75
LOGICA DE PROGRAMACION
92
INICIO PROG-PPAL. ARREGLO VEC_NUM[10] ENT: NUMERO ENT _ J LLENAR (ENT: VEC _NUM ,J) CONTAR (ENT: VEC_NUM,J,CONT) MOSTRAR el elemento 75 se repite: CONT FIN PROG-PPAL IN-PROC LLENAR (ENT: VEC ,J ) HAGA PARA J = 1,HASTA 10510,1 HAGA LEER: valor NUMERO VEC_NUM (J) = NUMERO FIN PARA RETORNE FIN-PROC. IN PROC. CONTAR (ENT:VEC_NUM, J,CONT) CONT = 0 HAGA PARA J = 1,HASTA 10,1 S VEC_NUM(J) = 75 ENTONCES CONT = CONT + 1 FIN SI. FIN PARA RETORNE(CONT) FIN-PROC. PRUEBA DE ESCRITORIO 25 56 75 23 CONT 0 1 2 3
89
75
13
27
75
89
J = 1/ 2 / 3 / 4 / 5 / 6 / 7 / 8 / 9 / 10
6.4.3.4. Bsqueda con barrido interrumpido. Esta se realiza hasta que se encuentra el elemento deseado o se recorra completamente el vector sin encontrarlo. Ejemplo 38 Realice un procedimiento que permita buscar en un vector de 100 posiciones con valores numricos diferentes, un valor ledo e imprimir la posicin en que se encuentra.
IDENTIFICADORES VECNUM = vector nmeros SW = suiche K = contador subndice del vector VALOR = Contiene el valor a buscar POS= posicin en la que se encuentra el valor ledo IN-PROC BUSCAR VALOR (ENT VECNUM, K) K=1 SW = NO
LOGICA DE PROGRAMACION
93
LEER: VALOR HAGA MIENTRAS (K < = 100) AND ( SW = NO) SI VECNUM(K) = VALOR ENTONCES SW = SI POS = K FIN SI K=K+1 FIN MIENTRAS SI SW = NO ENTONCES IMPRIMA: VALOR NO ENCONTRADO EN EL VECTOR SINO IMPRIMA: ENCONTRADO VALOR EN LA POSICIN POS FIN SI RETORNE FIN PROC.
6.4.3.5 Bsqueda binaria. En este caso podemos hallar la dentro de un vector ordenado. El Mtodo es el siguiente:
Se halla el elemento central del vector Si coincide con elemento a buscar termine.
posicin de un elemento
Si el elemento buscado es menor que el central se sabe que est en la primera mitad del vector. Si el elemento buscado es mayor que el central se sabe que mitad del vector. est en la segunda
Se selecciona la mitad del vector en la cual se cree se halla el elemento y se repite todo el proceso anterior. Si en la mitad donde se supone que se encuentra el elemento es menor que uno el elemento no se encuentra en el vector y termina la bsqueda.
Ejemplo 39 : Realizar un algoritmo que permita buscar un elemento k en un vector de N elementos, utilizar el mtodo de Bsqueda binaria,
IDENTIFICADORES BAJO = LIMITE INFERIOR ALTO = LIMITE SUPERIOR CENTRAL = LIMITE CENTRAL K = ELEMENTO A BUSCAR VECTOR = ARREGLO A RECORRER N = NUMERO DE ELEMENTOS DEL ARREGLO IN-PROC BUSQUEDABINARIA (ENT: VECTOR, N. K) ARREGLO VECTOR [N] ENTERO :NUMERO
LOGICA DE PROGRAMACION
94
BAJO = 1 ALTO = N CENTRAL = (ALTO + BAJO) div 2 HAGA M.Q ( BAJO <= ALTO) AND (VECTOR (CENTRAL) <> k) SI K < VECTOR (CENTRAL) ENTONCES ALTO = (CENTRAL 1) SINO BAJO = CENTRAL + 1 FIN SI CENTRAL = (ALTO + BAJO) div 2 FIN M.Q SI K = VECTOR (CENTRAL) ENTONCES MOSTRAR VALOR ENCONTRADO EN: CENTRAL SINO MOSTRAR VALOR NO ENCONTRADO FIN SI RETORNE FIN PROC.
6.4.4 Actualizacin De Un Vector. Esto puede ser : Aadir, Insertar, o eliminar un elemento a un vector. Aadir . Para aadir un elemento al vector se hace al final de este, verificando que exista el espacio suficiente en memoria para el nuevo elemento: es decir que no contenga todos los elementos con que fue definido al principio del programa. Insertar. Cuando se inserta un elemento este se introduce en el interior del vector . en este caso se debe hacer un desplazamiento previo hacia abajo para colocar el elemnto nuevo en la posicin relativa. Eliminar. Para borrar un elemento del vector, si ste est en la ltima posicin no es problema. El borrado al interior del vector requiere de un desplazamiento hacia arriba de los elementos inferiores al borrado, para reorganizar el vector.
Insertar ordenado. Ejemplo 40: En un arreglo de 100 posiciones y N elementos, que est ordenado insertar un elemento Y, verificando que el vector quede ordenado.
IDENTIFICADORES N = nmero de elementos que hay en el vector Y = valor a insertar VEC = arreglo POS = posicin en que se encuentra el elemento INICIO INSERTAR ORDENADO ARREGLO VEC_NUM[100] ENT: NUMERO LEER: N, Y SI N < 100 ENTONCES BUSCAR (ENT_VEC,N,Y,POS)
LOGICA DE PROGRAMACION
95
Si POS > 0 entonces Elemento ya existe Sino N N+1 POS POS * (-1) HAGA PARA K = N , HASTA (POS + 1), -1 VEC(K) = VEC(K-1) FINPARA VEC(POS) = Y Finsi SINO No hay espacio en el vector. FINSI RETORNE FIN PROC. IN-PROC BUSCAR (ENT: VEC,N,Y,POS) Haga M.Q. (K <= 100) AND (VEC(K) < Y) K=K+1 Fin M.Q Si (K > N) OR (VEC(K) > Y) entonces Pos -K sino POS K Finsi RETORNE(POS) FIN PROC.
Insertar desordenado : Ejemplo 41: En un arreglo de 100 posiciones y con elementos sin ordenar, insertar un elemento Y.
INICIO INSERTAR DESORDENADO ARREGLO VEC_NUM[100] ENT: NUMERO LEER: N, Y SI N < 100 ENTONCES POS = N + 1 VEC(POS) = Y SINO NO HAY ESPACIO EN EL VECTOR FIN SI FIN INSERTAR DESORDENADO
IDENTIFICADORES N = Tamao del vector X = valor a borrar VEC = arreglo POS = posicin en que se encuentra el elemento a borrar
LOGICA DE PROGRAMACION
96
INICIO BORRAR ORDENADO ARREGLO VEC_NUM[N] ENT: NUMERO LEER: N,X SI N > 0 ENTONCES BUSCAR ( ENT: VEC,N,X,POS) Si POS < 0 entonces Elemento no existe en el vector Sino N N-1 HAGA PARA J =POS, HASTA N, 1 VEC(J) = VEC(J + 1) FINPARA Finsi SINO No hay elementos en el vector. FINSI FIN BORRAR ORDENADO IN-PROC BUSCAR (ENT:VEC,N,Y,POS)
IDENTIFICADORES N = Tamao del vector X = valor a borrar VEC = arreglo POS = posicin en que se encuentra el elemento a borrar K y J = contadores (subndices) para recorrer el vector
LOGICA DE PROGRAMACION
97
N N -1 HAGA PARA K= J, HASTA N, 1 VEC(K) VEC(K+1) FIN PARA SINO J=J+1 FINSI FIN M.Q. SI SW = 0 ENTONCES MOSTRAR:Elemento no est en el vector. FINSI SINO MOSTRAR No hay elementos en el vector FINSI FIN BORRAR DESORDENADO
LOGICA DE PROGRAMACION
98
Modificar ordenado, Ejemplo 45 En un arreglo de N posiciones ordenado modificar un elemento Z y dejar el vector nuevamente ordenado.
INICIO MODIFICAR ORDENADO ARREGLO VEC_NUM[N] ENT: NUMERO LEER: N, X, Z SI N >=1 ENTONCES J 1 SW 0 HAGA M.Q. (J <= N) AND ( SW = 0 ) SI VEC(J) = Z ENTONCES SW 1 VEC(J) X POS = J SINO J=J+1 FINSI FIN M.Q. SI SW = 0 ENTONCES MOSTRAR Elemento Z no existe en el vector. SINO SI VEC(POS) > VEC(POS+1) ENTONCES ORDENARSUPERIOR( ENT: VEC,POS,J) SINO SI VEC(POS) < VEC(POS-1) ENTONCES ORDENARINFERIOR(ENT:VEC,POS,J) FINSI FINSI FINSI SINO MOSTRAR No hay elementos en el vector. FINSI FIN
PROC ORDENARINFERIOR(ENT VEC,POS,J) HAGA PARA J = 1, HASTA (POS -1), 1 HAGA PARA K = 1, HASTA (POS ) , 1 SI VEC(J) > VEC(K) ENTONCES AUX = VEC(J) VEC(J) = VEC(K) VEC(K) = AUX FIN-Si FIN-PARA FIN-PARA RETORNE FIN PROC. PROC ORDENAR SUPERIOR(ENT: VEC,POS,J ) HAGA PARA J = POS, HASTA (N -1), 1 HAGA PARA K = (POS + 1) HASTA ( N ), 1 SI VEC(J) > VEC(K) ENTONCES
LOGICA DE PROGRAMACION
99
AUX = VEC(J) VEC(J) = VEC(K) VEC(K) = AUX FIN-SI FIN-PARA FIN-PARA RETORNE FIN PROC
GENERAL
PARA
UN
EJERCICIO
CON
VECTOR
EN
PROGRAMA PRINCIPAL INICIO LEER N ARREGLO VEC[ N] ELEMENTO: TIPO K i= ENTERO LLENAR (TIPO: VEC,ENT: K.N) RECORRER (TIPO:VEC,ENT; K,N TIPO:VARIABLES..........) MOSTRAR (TIPO:VEC,ENT:K.N) FIN PROG-PPAL. IN PROC LLENAR (TIPO: VEC,ENT: K.N) HAGA PARA K = 1, HASTA N, 1 LEA ELEMENTO VEC (K ) = ELEMENTO FIN PARA RETORNE FIN PROCIN- PROC RECORRER (TIPO:VEC,ENT; K,N TIPO:VARIABLES..........) ASIGNAR TIPO A IDENTIFICADORES INICIAR VARIABLES HAGA PARA K = 1 HASTA N, 1 ACCIONES CON EL VEC(K ) Clculos necesarios para solucionar el problema FIN PARA CALCULOS GENERALES Los clculos pueden ser una(s) funcin(es) o un(os) Procedimiento(s) MOSTRAR RESULTADOS DE LAS ACCIONES RETORNE FIN-PROC. IN-PROC MOSTRAR (TIPO:VEC,ENT:K.N) HAGA PARA K = 1, HASTA N,1 MOSTRAR VEC (K ) FIN PARA RETORNE FIN-PROC.
LOGICA DE PROGRAMACION
100
Mtodos de ordenacin. Se dividen en dos categoras: Ordenacin INTERNA de vectores, tablas. Ordenacin EXTERNA de archivos. La ordenacin de vectores o arreglos se denomina tambin ordenacin interna, ya que se almacena en la memoria interna de la computadora de gran velocidad y acceso aleatorio. La ordenacin de archivos se suele hacer con casi siempre sobre soportes de almacenamiento externo, discos, cinta, etc. y por ello se denomina tambin ordenacin externa. Estos dispositivos son ms lentos en las operaciones de entrada/salida, pero, por el contrario, pueden contener mayor cantidad de informacin. Ordenacin interna: Clasificacin de los valores almacenados en un vector, creciente o decreciente y esto se realiza en memoria central y rpida (RAM). segn el orden
Ordenacin externa: Es la clasificacin de los registros de un archivo situado en un soporte externo (cinta, disco duro, diskette, cd-rom, etc.); aunque es menos rpido. Los ms conocidos son: Ordenacin por Intercambio o de burbuja (Mtodo # 1, Mtodo # 2 y Mtodo # 3). Ordenacin por Insercin directa. Ordenacin por Insercin Binaria. Ordenacin por Seleccin Directa. Ordenacin por el mtodo de Shell Ordenacin por el mtodo Quicksort(rpido)
La organizacin de un vector puede ser: Ascendente los valores van de menor a mayor. Descendente los valores van de mayor a menor.
6.6.1 Ordenamiento burbuja 1 El algoritmo ordena los elementos del arreglo utilizando el mtodo de la burbuja. Transporta en cada pasada el elemento mayor hacia la parte derecha del arreglo. VEC es un arreglo de N elementos
LOGICA DE PROGRAMACION
101
Ejemplo 46: Realizar un procedimiento para ordenar un vector de N elementos con el mtodo de ordenamiento Burbuja 1 IN PROC BURBUJA1 (ENT: VEC,N, K ) ENT:K, J HAGA PARA K = 1 HASTA (N-1) , 1 HAGA PARA J = ( K + 1) HASTA N., 1 SI VEC( i ) > VEC(J) ENTONCES AUXILIAR = VEC( K) VEC(I ) = VEC(J) VEC(J) = AUXILIAR FIN SI. FIN PARA FIN PARA RETORNE FIN-PROC-
6.6.2 Ordenamiento Por Intercambio Directo O De Burbuja. (Mtodo Nro. 2.) Se puede realizar una mejora en la velocidad de ejecucin del algoritmo. Obsrvese que en el primer recorrido del vector (cuando I =1) el valor mayor del vector se mueve al ltimo elemento X (N), entonces en el siguiente paso no es necesario comparar X (N-1) y X(N). En otras palabras, el limite superior del bucle o ciclo PARA, puede ser N-2. Despus de cada paso se puede decrementar en uno el lmite superior del bucle/ciclo PARA, el algoritmo sera:
Ejemplo 47: Realizar un procedimiento para ordenar un vector de N elementos con el mtodo de ordenamiento Burbuja 2
LOGICA DE PROGRAMACION
102
El algoritmo ordena los elementos del arreglo. Transporta en cada pasada el elemento ms grande hacia la parte derecha del arreglo. VEC es un arreglo de N elementos} IN- PROC BURBUJA2(ENT: VEC,N.J) HAGA PARA K = 1,HASTA (N-1), 1 HAGA PARA J = 1 HASTA (N-K), 1 SI VEC(J) > VEC(J+1) ENTONCES AUX = VEC(J) VEC(J) = VEC(J + 1) VEC(J+1) = AUX FIN-Si FIN-PARA FIN-PARA RETORNE FIN-PROC{BURBUJA2}
6.6.3 Ordenamiento Por Intercambio Directo O De Burbuja. (Mtodo Nro. 3. Utilizando una Bandera o Seal) -.Mediante una bandera o centinela, o bien, una variable lgica, se puede detectar la presencia o ausencia de una condicin. En este caso mediante la variable SW se representa la clasificacin terminada con un valor verdadero y clasificacin no terminada por un valor falso.
Ejemplo 48: Realizar un procedimiento para ordenar un vector de N elementos con el mtodo de ordenamiento Burbuja 3 El algoritmo ordena los elementos del arreglo utilizando el mtodo de la burbuja con seal de clasificado, utilizando un suiche o bendera. IDENTIFICADORES VNUM es un arreglo de n elementos K variablesde tipo entero. AUX es una variable del tipo de dato de los elementos del arreglo SW es una variable de tipo booleano (falso o verdadero) IN PROC BURBUJA3 (VNUM,N,K) SW = F HAGA MIENTRAS QUE clasificado = F SW = V HAGA PARA K = 1 HASTA N-1 ,1 SI VNUM(K) > VNUM,(K+1) AUX = VNUM(k) VNUM(k) = VNUM(k+1) VNUM(k+1) = AUX SW = F FIN-SI FIN-PARA FIN-MIENTRAS QUE RETORNE FIN-PROC{BURBUJA3}
LOGICA DE PROGRAMACION
103
6.6.4 Ordenamiento Por Insercin directa En este mtodo una vez que se determina la posicin correcta del elemento, se interrumpen las comparaciones. Ejemplo 49: Realizar un procedimiento para ordenar un vector de N elementos con el mtodo de ordenamiento Insercin directa IN PROC INSERCIONDIRECTA(VECA,N,J) HAGA PARA J = 2, HASTA N ,1 AUX = VECA(J) K = J-1 HAGA MIENTRAS QUE (k >=1) (AUX < VECA(k)) VECA(k+1) = VECA(k) k = k-1 FIN-MIENTRAS VECA(K+1) = AUX FIN-PARA RETORNE FIN-PROC.
6.6.5 Ordenamiento Por Seleccin Directa . El mtodo de ordenacin por seleccin directa es ms eficiente que los mtodos analizados anteriormente, pero slo para vectores pequeos. La idea bsica de este algoritmo consiste en buscar el menor elemento del arreglo y colocarlo en la primera posicin. Luego se busca el segundo elemento ms pequeo del arreglo y se lo coloca en la segunda posicin. El mtodo se basa en los siguientes principios: Seleccionar el menor elemento del arreglo Intercambiar dicho elemento con el primero Repetir los pasos anteriores con los (n-1), (n-2) elementos y as sucesivamente hasta que slo quede el elemento mayor. Ejemplo 50: Realizar un procedimiento para ordenar un vector de N elementos con el mtodo de ordenamiento Seleccin directa VECA es un arreglo de N elementos} P, MENOR, K y J son variables de tipo entero
LOGICA DE PROGRAMACION
104
FIN-PROC.
6.6.6 Ordenamiento Por Insercin Binaria: El mtodo de ordenacin por insercin directa puede mejorarse fcilmente. Para ello se recurre a una bsqueda binaria en lugar de una bsqueda secuencial para insertar un elemento en la parte izquierda del arreglo, que ya se encuentra ordenado. El proceso, al igual que en mtodo de insercin directa, se repite desde el segundo hasta el n-simo elemento. Ejemplo 51: Realizar un procedimiento para ordenar un vector de N elementos con el mtodo de ordenamiento Insercin Binaria.
6.6.7 Ordenamiento Por El Mtodo De Shell. Es una mejora del mtodo de insercin directa que se utiliza cuando el nmero de elementos a ordenar es grande. El mtodo se denomina Shell -en honor a su inventor Donal Shell- y tambin mtodo de insercin sin incrementos decrecientes. Shell modific los saltos contiguos resultantes de las comparaciones por saltos de mayor tamao y con eso se consegua la clasificacin ms rpida. El mtodo se basa en fijar el tamao de los saltos constantes, pero de ms de una posicin. Supongamos un vector A de seis (6) elementos.
LOGICA DE PROGRAMACION
105
12
16
24
36
En el mtodo de insercin, los saltos se hacen de una posicin y se necesitarn 5 comparaciones. En el mtodo de Shell, si los saltos son de dos posiciones, se realiza tres comparaciones. El mtodo se basa en tomar como salto N/2 (siendo N el nmero de elementos) y luego se va reduciendo a la mitad en cada repeticin hasta que el salto o distancia vale 1 Para un vector VECA de N elementos, el primer salto a dar tendr un valor de N/2, por lo que, para redondear, se tomar la parte entera de N div 2 . El seudo cdigo del procedimiento de ordenamiento por el mtodo Shell es el siguiente:
Ejemplo 52: Realizar un procedimiento para ordenar un vector de N elementos con el mtodo de ordenamiento Shell. El algoritmo ordena los elementos del arreglo utilizando el mtodo de Shell. A es un arreglo de N elementos} SALTO, F, K,J, son variables de tipo entero
IN PROC ORDENAMIENTO-SHELL(ENT;VECA,N,K)
SALTO = N div 2 HAGA MIENTRAS QUE (SALTO > 0) HAGA PARA F = (SALTO + 1), HASTA N, 1 J = F - SALTO HAGA MIENTRAS QUE J > 0 K = J + SALTO SI VECA(J) = VECA(K) J=0 SINO AUX = VECA(J) VECA (J) = VECA(K) VECA(K) = AUX FIN-SI J = J - SALTO FIN-MIENTRAS FIN-PARA SALTO = SALTO div 2 FIN-MIENTRAS RETORNE FIN-PROC.
Nota : Realice la prueba de escritorio para cada ejercicio , recuerde que es una herramienta muy importante para detectar los errores de lgica y entender como funciona el algoritmo.
LOGICA DE PROGRAMACION
106
6.7 MATRICES.
Las matrices o Arreglos Bidimensionales. Conjunto de cantidades organizadas en filas y columnas (MATRIZ). Los elementos deben ser de un mismo tipo; para referirse a un determinado elemento debe realizarlo por el nombre de la matriz y dentro de un parntesis 2 subndices separados por comas, donde el primero se refiere a la fila y el segundo se refiere a la columna. MATRIZ (FILA, COLUMNA)
30 35 59 56
40 78 49 87
SUMA DE LA DIAGONAL PRINCIPAL MA(1,1) + MA(2,2) + MA(3,3) + MA(4,4) = 230 20 + 35 + 49 + 126 = 230
Es un arreglo de M * N elementos organizados en dos dimensiones donde M es el numero de filas o reglones y N el numero de columnas.
Para representar una matriz se necesita un nombre de matriz se necesita un nombre de matriz acompaado de dos ndices. Mat [R,C]
Donde R indica el rengln y C indica la columna, donde se encuentra almacenado el dato.
Columna [C]
LOGICA DE PROGRAMACION
107
6.7.1 Tipos de matrices : Matriz cuadrada: cuando el nmero de filas es igual al de columnas. Los elementos ubicados en la diagonal principal, cumplen que son iguales el nmero de la fila al de la columna. Matriz identidad: Es una matriz cuadrada donde los elementos de la diagonal principal son 1 y el resto de elementos son 0. Matriz transpuesta: la matriz transpuesta A t de la matriz A, es una matriz donde las filas de una son las columnas de la otra. 6.7.2 Llenado de una matriz Por filas o renglones Hacer para R = 1 a 5 Hacer para C = 1 a 5 Leer Mat [R,C] Fin-para Fin-para Por columnas Hacer para C = 1 a 5 Hacer para R = 1 a 5 Leer Mat [R,C] Fin-para Fin-para Nota: Para hacer el llenado de una matriz se deben de usar dos variables para los ndices y se utilizan 2 ciclos uno para las filas o renglones y otro para las columnas; a estos ciclos se les llama ciclos anidados (un ciclo dentro de otro ciclo).
LOGICA DE PROGRAMACION
108
IN-PROC RECORRER (TIPO: MAT,ENT:F,C,M,N TIPO:VARIABLES..........) ASIGNAR TIPO A IDENTIFICADORES INICIAR VARIABLES GENERALES HAGA PARA F = 1 HASTA N, 1 . INICIAR VARIABLES DE GRUPO HAGA PARA C = 1 HASAT M , 1 ACCIONES CON EL MAT(F,C) Clculos necesarios para solucionar el problema FIN PARA CALCULOS DE GRUPO Los clculos pueden ser una(s) funcin(es) o un(os) Procedimiento(s) MOSTRAR RESULTADOS DE GRUPO FIN PARA CALCULOS GENERALES Los clculos pueden ser una(s) funcin(es) o un(os) Procedimiento(s) MOSTRAR RESULTADOS GENERALES REGRESE FIN-PROC. IN-PROC MOSTRAR (TIPO:MAT,ENT: F,C,M,N) HAGA PARA F = 1, HASTA N, 1 HAGA PARA C = 1 HASTA M, 1 MOSTRAR MAT(F,C) FIN PARA FIN PARA RETORNE FIN.PROC.
LOGICA DE PROGRAMACION
109
1 6 7 8 F 1 2 3 4 C 1 2 3 4
5 8 2 5 C C 1 1 2 2 3 3 4 4
7 9 3 2 C 1 2 3 4 C 1 2 3 4
9 4 5 4 SUMA 0 1 9 12 16
Ejemplo 54 :Realice un procedimiento que lea un valor, recorra la matriz de N* N, y diga si el valor se encuentra y en que lugar de la matriz est. IDENTIFICADORES MVAL = Matriz valores N* N = tamao de la matriz F, C = Subndices de la matriz POS = Posicin el la que de hallo el valor buscado SW = variable boleana (si o no) que interrumpe el proceso cuando se encuentra el valor buscado. IN-PROC BUSCAR-VALOR (ENT;MVAL,F,C) LEER: Valor a buscar VALOR POS = 0,0 SW = NO HAGA MIENTRAS (F< = N) AND ( SW = NO) HAGA MIENTRAS (C< = N ) AND ( SW = NO) SI MVAL(F,C) = VALOR ENTONCES SW = SI P OS = F,C FIN SI C=C+1 FIN MIENTRAS F=F+1 FIN MIENTRAS SI SW = NO ENTONCES IMPRIMA: Valor no encontrado SINO IMPRIMA: Encontrado valor en: POS FIN SI RETORNE FIN-PROC Ejemplo 55 Un tablero de damas es una matriz de 8 filas por 8 columnas. Un (1) uno representa la ficha roja, un (2) dos representa la ficha negra en el tablero un (0) cero representa la ausencia de fichas. Se pide calcular e imprimir: - Cuntas fichas rojas hay en el tablero. - Cuntas fichas negras hay en el tablero. - Cuntas fichas hay en total en el tablero.
LOGICA DE PROGRAMACION
110
IDENTIFICADORES FR = contador de las fichas rojas FN = contador de las fichas negras TF = contador de todas las fichas TABLERO = matriz I , J = subndices de la matriz INICIO CONTAR FICHAS ARREGLO TABLERO[8*8] ENT: I,J , FR, FN, TF FR = 0, FN = 0, TF = 0 HAGA PARA I = 1 HASTA 8, 1 [ recorre las filas] HAGA PARA J = 1 HASTA 8, 1 [recorre las columnas] SI TABLERO (I,J) = 1 ENTONCES FR = FR + 1 SINO SI TABLERO (I,J) = 2 ENTONCES FN = FN + 1 SINO SI TABLERO (I,J) = 0 ENTONCES Salir del condicional FIN SI FIN SI FIN SI FIN PARA [ ciclo ms interno el de las columnas] FIN PARA [ ciclo ms externo el de las filas]. TF = FR + FN IMPRIMA: Hay fichas rojas FR. Hay fichas negras FN. Total de fichas en el tablero TF. FIN. Ejemplo 56 Multiplicar 2 matrices A, de N * M y B de X * Y posiciones. Nota : El nmero de filas de A debe ser igual al nmero de columnas de B. IDENTIFICADORES MATA = matriz A MATB = matriz B MATC = matriz donde se almacena el resultado de la multiplicacin de las matrices, M*N = tamao de la matriz A X*Y= tamao de la matriz B M*Y = tamao de la matriz C I,j,k = subindices de las matrices SUMATORIA = variable de trabajo guarda la suma de los elementos multiplicados PROGRAMA MULTIPLICACION DE MATRICES INICIO PROG-PPAL. ARREGLO MATA[M*N] NUMEROS: ENTEROS ARREGLO MATB [X*Y] NUMEROS: ENTEROS SI M <> Y ENTONCES
LOGICA DE PROGRAMACION
111
MOSTRAR: No es valida la multiplicacin IR A FIN SINO PRODUCTO DE LA MATRIZ (ENT: MATA, MATB, N,M,X,Y) FINSI FIN PROG-PPAL IN-PROC PRODUCTO DE LA MATRIZ(ENT: MATA, MATB, N,M,X,Y) ARREGLO MATC [M*Y] ENT: SUMATORIA ENT : I, J , K HAGA PARA I = 1, N , 1 HAGA PARA J = 1 HASTA Y, 1 MATC = 0,0 SUMATORIA = 0 HAGA PARA K = 1, HASTA N , 1 SUMATORIA = SUMATORIA + ( MATA(I,K) * MATB(K,J)) FIN PARA MATC(I,J) = SUMATORIA FIN PARA FIN PARA REGRESE FIN-PROC. 6.10 ACTIVIDADES DE TRABAJO INDEPENDIOENTE Consulte acerca de los siguientes trminos, qu es un arreglo? arreglo Unidimensional. Arreglo bidimensional Identifique diagonal, conceptos tales como: subndice, dimensin, vector, matriz, arreglos paralelos.
Frmese una opinin acerca de qu es una matriz?; Conceptos sobre: columna, fila, diagonal principal, diagonal secundaria Elabore el taller de la unidad 6 sobre vectores y matrices, que hace parte de tu trabajo independiente.
1. Elabore un algoritmo que lea 10 datos numricos en un vector e imprima los datos positivos y
cuntos son.
2. Elabore un algoritmo que lea 10 nmeros enteros en un vector e imprima los nmeros impares
y la cantidad de nmeros pares.
LOGICA DE PROGRAMACION
112
4. Dados 9 nmeros enteros (ledos por teclado), calcular la suma de los nmeros divisibles por
tres, mostrar cuntos son y cul es la media aritmtica de estos nmeros.
5. Elabore un algoritmo que guarde 10 nmeros enteros e informe cul fue el menor nmero ledo
entre todos (supngase que todos los nmeros son diferentes).
6. Desarrolle un algoritmo que lea las notas definitivas de un grupo de 50 alumnos en un vector y
que calcule e imprima: a) b) c) d) El promedio general del grupo. Nmero de alumnos que estn por encima del promedio. Nmero de alumnos aprobados y nmero de alumnos reprobados. Porcentaje de alumnos aprobados y porcentaje de alumnos reprobados.
7. Palabras palndromas son aquellas que pueden leerse tanto al derecho como al revs,
ejemplo: ANILINA. Desarrolle un algoritmo que lea una palabra de mximo 7 letras y determine si dicha palabra es de este tipo o no.
3
1
5
2 3
7
4
9
5
11
6
13
5
1
3
2
9
3
7
4 5
13 11
6
9. Desarrolle un algoritmo que lea un vector de N elementos. Intercambiar el elemento i-simo por
el elemento n-simo, tal como lo ilustra la siguiente figura: vector antes del intercambio: Vector despus del intercambio:
3
1
5
2
7
3 4
9
5
11 13 15
6 7
15 13 11
1 2 3 4
9
5
7
6
5
7
11. En un vector de 50 posiciones ordenado insertar un elemento X 12. Realizar un algoritmo que permita buscar un elemento k en un vector de N elementos, utilizar
el mtodo de Bsqueda binaria,
LOGICA DE PROGRAMACION
113
14. Hacer un diagrama que lea dos vectores de N y M posiciones. Crear un vector con la unin
de ambos vectores e imprimirlos. Vector A 12 23 78 15 14
16
57
32
18
Vector C 12 23 78 15 14 16 57 32 18
15. En un vector de 100 elementos ordenado eliminar un elemento Y. 16. En un vector de 100 posiciones ordenado leer un elemento Z buscarlo en el vector para
modificarlo. El vector debe quedar ordenado.
18. Lea un vector de 15 posiciones e invirtalo sin utilizar otro Vector. 19. Dado un arreglo de N elementos enteros, ordnelo en forma descendente aplicando :
Insercin directa Insercin binaria Seleccin directa
LOGICA DE PROGRAMACION
114
- Buscar cuntos elementos del vector son mayores que ese promedio; - leer un valor Y , buscar en que posicin del vector se encuentra -Imprimir los elementos almacenados en las posiciones pares desde la posicin 55 a la 1
TALLER DE MATRICES
1. Llenar una matriz de 10*10 posiciones, Sume los elementos almacenados en las columnas. 2. Llenar una matriz de 10*10 posiciones, sume e imprima la diagonal principal secundaria. 3. Llenar una matriz de 15 *15 se desea: sumar los elementos almacenados en las filas y
llenar un vector con las sumas; organizarlo en orden ascendente imprima el vector.
4. Llenar una matriz de 10 * 10 con valores diferentes; llenar un vector con la suma de la
diagonal principal y la fila 7; organizar el vector en orden descendente imprima el vector.
5. Llene una matriz de 16*16; sume los elementos almacenados en las filas impares y llena un
vector con ellas; luego secundaria. organizar el vector en orden descendente ; imprima la diagonal
LOGICA DE PROGRAMACION
115
6. Llenar una matriz de 16*15 posiciones con valores diferentes, sumar los elementos de las filas
3, 7, 15 e imprimirlos.
7. Llenar una matriz de 20 * 20 con valores numricos; hallar el promedio de las columnas y
llevarlo a un vector llamado promedio e imprimirlo
10. Llenar un vector de 60 posiciones con valores diferentes, leer luego un valor X e imprimir
cuantos elementos del vector son mayores que el nmero ledo; llenar una matriz con el vector e imprimirla.
11. Dada una matriz cuadrada de NxN elementos, imprimir los elementos de la diagonal
ascendente.
12. Dada una matriz cuadrada de NxN elementos, imprimir los elementos de la diagonal
descendente.
13. Dada una matriz cuadrada de NxN elementos, imprimir los elementos de la triangular superior. 14. Dada una matriz cuadrada de NxN elementos, imprimir los elementos de la triangular inferior. 15. Llenar una matriz de NxM elementos, hallar e imprimir el elemento mayor as como la posicin
que ocupa (columna, fila).
16. Sumar las columnas de una matriz de NxM y el resultado de cada suma llevarlo a un vector
de N posiciones.
18. Elaborar un algoritmo que lea los datos de una matriz de tipo numrico de 3 filas por 3
columnas; luego a partir de sta, llenar otra de 3 columnas por 9 filas (matriz de tripletas), en la cual cada fila contendr en la primera columna el nmero de la fila donde se encuentra el
LOGICA DE PROGRAMACION
116
elemento en la primera matriz, en la segunda columna, el nmero de la columna en la cual se encuentra el mismo elemento en la primera matriz, y en la tercera, el elemento como tal. Por ejemplo: A partir de esta matriz: 20 10 5 8 3 90 44 2 11 Se debe generar esta matriz de tripletas: 1 1 20 1 2 10 1 3 5 2 1 8 2 2 3 2 3 90 3 1 44 3 2 2 3 3 11 Mostrar el vector final. Si el nmero de elementos es impar no es posible hacer el intercambio, por lo tanto indicarlo con un mensaje de salida.
X X X
X X X X X
X X X X X
X X X
LOGICA DE PROGRAMACION
117
UNIDAD 7 OBJETOS
Objetivo: Distinguir los elementos conceptuales bsicos de la programacin orientada a objetos y asociarlos de forma significativa. Objetivos especficos: Define la Programacin Orientada a Objetos. Explica los conceptos de: Clase, Subclase, Superclase. Objeto. Distingue los atributos Explica la diferencia entre un Mtodo. y un Mensaje.
CONTENIDO TEMTICO Introduccin a la Programacin Orientada a Objetos. Definiciones Tericas Bsicas Clase, Subclase, Superclase, Objeto Instancia., Mtodo. Mensaje. Herencia. Polimorfismo. Abstraccin de Datos. Encapsulamiento. LOGROS: Conceptual: Conocer los conceptos bsicos para el desarrollo de un algoritmo con la orientacin a objetos. Procedimental: Disea algoritmos diferenciando los atributos y los mtodos. Actitudinal: Reconoce los diferentes paradigmas de programacin
LOGICA DE PROGRAMACION
118
7.1 GENERALIDADES
La POO es un paradigma de la programacin de computadores; esto hace referencia al conjunto de teoras, estndares, modelos y mtodos que permiten organizar el conocimiento, proporcionando un medio bien definido para visualizar el dominio del problema e implementar en un lenguaje de programacin la solucin a ese problema. La POO se basa en el modelo objeto, donde el elemento principal es le objeto, el cual es una unidad que contiene todas sus caractersticas y comportamientos en s misma, lo cual lo hace como un todo independiente, pero que se interrelaciona con objetos de su misma clase o de otras clase, como sucede en el mundo real. La programacin orientada a objetos ha revolucionado el estilo y enfoque de desarrollo de aplicaciones, quedando as desfasado el tradicional enfoque estructurado. Pero llegando a este punto, nos preguntamos Qu es un objeto? Conceptualmente podramos decir que un objeto es todo aquello que tenga caractersticas y acciones propias que lo identifiquen y que a su vez esta funcionalidad pueda verse reflejada en distintas situaciones e implementaciones.
LOGICA DE PROGRAMACION
119
EL POO es una tcnica para desarrollar soluciones computacionales utilizando componentes de software (objetos de software). Objeto: Componente o cdigo de software, el cual contiene en s mismo tanto sus caractersticas (campos) como sus comportamientos (mtodos), el cual se accede a travs de su interfaz o signatura. Campos: Es una caracterstica de un objeto, que ayuda a definir su estructura y permite diferenciarlo de otros objetos. Se define con un identificador y un tipo, el cual indica los valores que puede almacenar. El conjunto de valores de los campos definen el estado del objeto. Mtodo: Es la implementacin de un algoritmo que representa una operacin o funcin que un objeto realiza. El conjunto de los mtodos de un objeto determinan el comportamiento del objeto. Clase : Es la abstraccin de un grupo de objetos que comparten las mismas caractersticas y el mismo comportamiento Definiciones de las propiedades y comportamiento de un tipo de objeto concreto. La instanciacin es la lectura de estas definiciones y la creacin de un objeto a partir de ellas. Clase.abstracta. Clase desde la cual no se pueden instanciar objetos, pero s otras clases. El comportamiento de una clase abstracta tambin es abstracto, en tal sentido, dicho comportamiento lo debe implementar una clase derivada (sea clase comn o clase final). Clase comn. Es una clase que tiene clases ascendientes y descendientes. A partir de una clase comn se pueden instanciar objetos u otras clases. Clase final. Es una clase que no admite instanciar otras clases a partir de ella, es decir, no admite clases descendientes. Desde una clase final slo se pueden instanciar objetos. Constructor. mtodo u operacin con el mismo nombre de la clase, usado para crear un objeto. Un constructor establece el estado inicial de un objeto y puede ser sobrecargado varias veces. Dato. Conjunto de bytes que operan "algo" con significado. Instancia. Valor especfico de una clase, es decir, un objeto en particular. Un objeto se instancia cuando se ejecuta su constructor o cuando se le enva un mensaje que cambie su estado -con un mtodo asignarX(dato). Evento: un suceso en el sistema (tal como una interaccin del usuario con la mquina, o un mensaje enviado por un objeto). El sistema maneja el evento enviando el mensaje adecuado al objeto pertinente. Mensaje: una comunicacin dirigida a un objeto, que le ordena que ejecute uno de sus mtodos con ciertos parmetros asociados al evento que lo gener. Propiedad o atributo: contenedor de un tipo de datos asociados a un objeto (o a una clase de objetos), que hace los datos visibles desde fuera del objeto, y cuyo valor puede ser alterado por la ejecucin de algn mtodo.
LOGICA DE PROGRAMACION
120
Estado interno: es una propiedad invisible de los objetos, que puede ser nicamente accedida y alterada por un mtodo del objeto, y que se utiliza para indicar distintas situaciones posibles para el objeto (o clase de objetos). En comparacin con un lenguaje imperativo, una "variable" no es ms que un contenedor interno del atributo del objeto o de un estado interno, as como la "funcin" es un procedimiento interno del mtodo del objeto. 1
7.2 MODULARIDAD
Proceso de crear partes de un todo que se integran perfectamente entre s para que funcionen por un objetivo general, y a las cuales se les pueden agregar ms componentes que se acoplen perfectamente al todo, o extraerle componentes sin afectar su funcionamiento. En el caso que se requiera actualizar un mdulo, no hay necesidad de hacer cambios en otras partes del todo. Un ejemplo clsico es conjunto de mdulos que, al integrarlos conforman un armario, el cual puede agregarle ms funcionalidad si se le agregan ms mdulos, o al contrario. Tambin se puede cambiar su finalidad si se acomodan esos mdulos para darle otro objetivo: volverlo una mesa. Esto ayuda a la descomposicin de problemas en subproblemas, es decir, a la solucin de problemas por composicin de soluciones a subproblemas.
7.3 REUTILIZACIN
Capacidad de usar un mismo cdigo para varias implementaciones o necesidades (desarrollos); para esto se debe tener en cuenta: Polimorfismo: Esta propiedad indica que un elemento puede tomar distintas formas. Podemos definirlo como el uso de varios tipos en un mismo componente o funcin. Por ejemplo, una funcin que sume dos operandos, la cual maneja, o dos nmeros o dos cadenas, para retornar un total de una suma o de una concatenacin. Tambin se denomina subsumption (ms delante de detalla este concepto). Genericidad: Usar algoritmos genricos para resolver varias situaciones, como acceso a varios motores de bases de datos de forma transparente, como el PEAR de PHP. Consiste en parametrizar una funcin con varios tipos de datos donde ella misma en su cuerpo decida como operar, como la ut0110.4gl. Operaciones Relacionadas: Todas las operaciones de un mdulo deben estar dentro de l, como parte de su cuerpo..
LOGICA DE PROGRAMACION
121
1) Construccin de un modelo mecnico de un 2) Construccin de un modelo algortmico de sistema fsico a partir de objetos concretos. un sistema fsico a partir de objetos de software Los objetos aqu seran, en un modelo de una Los objetos aqu seran, rutinas de conexion a pista de carreras: los autos, las carreteras, las DB, shorts, validacin de acceso, despliegue, llegadas, las graderas, espectadores, etc. impresiones, etc. En un modelo de un sistema planetario, tenemos los objetos concretos: los planetas, los orbitas, el sol, energa, etc Este concepto de POO se puede ver como una intuitiva correspondencia entre un software de simulacin de un sistema fsico y el sistema fsico en s (o su modelo mecnico). Modelo algortmico: Anlisis, diseo e implementacin de un software usando objetos de software. Objetos de Software: Componentes que integran o conforman el modelo; pueden ser unidades de cdigo para resolver situaciones especficas, shorts, uso de DB, prints, funciones, vectores, etc. Modelo Mecnico: Anlisis, diseo e implementacin de prototipo a escala de un sistema fsico usando objetos concretos. Objetos Concretos: Partes fsicas del modelo mecnico, ojo del modelo, no del sistema real, o sea, los objetos planeta no son los planetas reales. Modelo: Es una vista de un sistema del mundo real, es decir, una abstraccin de dicho sistema considerando un cierto propsito. As, el modelo describe completamente aquellos aspectos del sistema que son relevantes al propsito del modelo y a un apropiado nivel de detalle. Diagrama: Representacin grfica de un modelo. Abstraccin: Capacidad del ser humano para entender una situacin excluyendo detalles y solo vindola a alto nivel. El hombre ha comprendido el mundo con la abstraccin. Esta propiedad permite distinguir a un objeto de los dems, observando sus caractersticas y comportamientos, pensando en qu es y no cmo se codificara en un lenguaje. Con la abstraccin se destaca lo importante y se ignora lo irrelevante, o sea, hay ocultamiento de informacin. Hay abstraccin de datos la declarar un variable tipo integer, ya que internamente el compilador lo implementa en 2 bytes, lo cual es transparente al programador, o al declarar una variable date, el complilador controla los das de los meses, acepta solo operaciones vlidas entre las fechas, permitiendo al programador abstraerse de esos detalles. Estos tipos de datos abstractos coleccionan valores y operaciones, los cuales se usan transparentemente sin importar su implementacin: otro lo implementa y yo lo uso. La reutilizacin es la principal caracterstica del la POO, la cual se logra con: Encapsulacin de Informacin: Ocultamiento de informacin, datos o funciones especiales a los usuarios. En el caso de la programacin, hace el encapsulamiento es lo que permite que tanto la estructura (campos) como el comportamiento (mtodos) se encuentren dentro del mismo cuerpo de
LOGICA DE PROGRAMACION
122
cdigo de la clase con la que se crean los objetos. Dentro de la clase se deben agrupar tanto la informacin o datos de los campos como las operaciones o mtodos o funciones que operan sobre esta informacin. Herencia: Propiedad que permite a los objetos se construidos a partir de otros objetos; es recibir de una modulo superior, las caractersticas de l, como atributos o funciones (campos y mtodos o comportamientos), para usarlos en el mdulo actual. Heredar es compartir atributos. Mtodos unidos a los objetos: los mtodos de un objeto son inseparables y siempre harn parte de su cuerpo como un todo.
Ejemplo 57: La famosa ecuacin de Einstein para conversin de una masa m en energa viene
dada por la frmula E = mc2, donde c es la velocidad de la luz, c = 2.997925 x 1010 m/seg. Leer una masa en gramos y obtener la cantidad de energa producida cuando la masa se convierte en energa. 2
Observacin: si la masa se da en gramos, la frmula produce la energa en ergios. Anlisis: Clases: Energa Objetos: una instancia de la clase Energa (en este caso se reemplaza el identificador Proyecto por Energa) Entrada: la masa (en gramos). Salida: la energa (en ergios). Proceso: despus de capturar la entrada, se aplica la ecuacin de Einstein. Solucin: Diseo de la clase en UML:
Seudo cdigo:
2
FUNDAMENTOS DE PROGRAMACION ORIENTADA A OBJETOS COMPENDIO DE EJERCICIOS MODELO GRUPO GIISTA Tecnolgico de Antioquia Institucin Universitaria
LOGICA DE PROGRAMACION
123
clase Energa privado: real masa pblico: asignarMasa(real m) masa = m fin_mtodo //------------------------------real obtenerMasa ( ) retornar masa fin_mtodo //------------------------------Energa ( ) fin_mtodo //------------------------------real calcularEnerga ( ) real e const real c = 2.997925 * Mat.elevar (10, 10) e = masa * Mat.elevar (c, 2) retornar e fin_mtodo //------------------------------------------------principal ( ) Energa e = nuevo Energa ( ) real ms = Leer.datoReal( ) e.asignarMasa(ms) Imprimir.mensaje (e.calcularEnerga ( )) fin_mtodo fin_clase
7.5 ACTIVIDADES DE TRABAJO INDEPENDIENTE
Consulte acerca de los siguientes trminos, interiorice su significado: Clase, Objeto, Herencia, Poliformismo. Abstraccin, Mtodo, Mensaje, Instancia, Atributos Relacione los conceptos: Superclase, subclase, Encapsulamiento.
Frmese una opinin acerca de qu es una clase y su instancia?; Consulta la pagina http//espanol.geocities.com/evmejia_36
LOGICA DE PROGRAMACION
124
8. PRODUCTO FINAL
8.1 EL PORTAFOLIO El portafolio es una coleccin estructurada de evidencias de diferentes fuentes y referenciadas a las Unidades de Competencia y Titulaciones. El portafolio es una tcnica que permite a la persona recopilar los trabajos elaborados en un determinado periodo, y abre un espacio para aprender a evaluar su desempeo en trminos de acierto o de errores. Esta recopilacin de documentos tendr vida en la medida que el participante la dinamice para su propio beneficio y constituye un instrumento que archiva las evidencias de su aprendizaje. Un portafolio puede tener cualquier forma o tamao, dependiendo del tipo de evidencia que se requiera presentar en la evaluacin. Sin embargo, es correcto utilizar una pasta de argollas como la A -Z. Este paquete se debe archivar con las evidencias recogidas para las unidades. Los tipos de evidencia que se archivan en el portafolio pueden incluir: - Reportes de evaluadores Productos del trabajo Testimonios Aprendizajes Previos Resultado de cuestionarios aplicados No existen reglas estrictas ni nicas sobre cmo organizar la evidencia, pero es conveniente acordar un sistema de ordenamiento y seguirlo para facilitar su manejo de acuerdo a las unidades de competencia. El evaluador puede orientar sobre cmo organizar el portafolio. Contendr Introduccin Conclusiones Plan de Trabajo semanal Contenido de la asignatura Glosario Bibliografa Talleres resueltos Correccin de Quices y parciales, con su autoevaluacin ( en computador ) Laboratorios con su autoevaluacin ( en computador ) Documentos soporte.
LOGICA DE PROGRAMACION
125
GLOSARIO
ACUMULADOR: rea de trabajo donde se almacena un valor que puede ser variable. El trmino acumulador viene de acumular (sumar cantidades). Por ejemplo: la caja registradora de un almacn suma cantidades diferentes de pagos, al final de la jornada muestra un acumulado o suma de los valores registrados. ALGORITMO: La palabra algoritmo se deriva de la traduccin al latn de la palabra rabe Alkhowarizmi, nombre de un matemtico y astrnomo rabe que escribi un tratado sobre manipulacin de nmeros y ecuaciones en el siglo IX. Conjunto finito de pasos o acciones que deben realizarse en una forma ordenada para llegar a un fin determinado para la solucin de cualquier problema. ALGORITMO CUALITATIVO: Es la descripcin con palabras sencillas de las caractersticas o cualidades medibles ( que se pueden comprobar) de un elemento. Ejemplo: ancho, largo, corto, azul, etc. Son aquellos en los que se describen los pasos utilizando palabras. ALGORITMO CUANTITATIVO: Son aquellos en los que se utilizan clculos numricos para definir los pasos del proceso y hallar respuestas numricas. ALGORITMO MATEMTICO: Conduce a la solucin de respuesta es nica. una expresin matemtica y su
ALGORITMO LGICO: Es la solucin a una situacin lgica; puede conducir a una o varias respuestas. ARCHIVO: Es un conjunto de registros relacionados entre si. REA DE TRABAJO: Es un espacio de memoria con la longitud que necesita el programador. Las reas de trabajo deben tener nombres diferentes y deben ser inicializadas en cero o en blanco. ARREGLO : Conjunto de cantidades o valores homogneas, que por su naturaleza se comportan de idntica forma y deben de ser tratados en forma similar. Se les debe de dar un nombre que identifica el conjunto. Cada cantidad que hace parte del arreglo se le llama elemento. unidimensionales; bidimensionales y multidimensionales. Los tipos de arreglos son:
ASIGNACION DE INFORMACIN: Accin de sustitucin de la informacin contenida en una variable de memoria o un campo de un archivo . Se puede simbolizar por los signos = y su funcin es asignar el valor que est a la derecha del smbolo igual la flecha a la variable que est a la izquierda de la misma. BIT: Digito binario o elemento mnimo de informacin BINARIO: Sistema operativo en base 2.
LOGICA DE PROGRAMACION
126
BYTE : Conjunto de bits que se tratan como unidad, generalmente se componen de 8 bits. CARCTER: Es la menor unidad de informacin. CAMPO: rea de trabajo que puede almacenar uno o varios datos. NOMBRE se almacena: "Carlos Alberto Garca". Ejemplo: En el campo
CICLOS: Para poder implementar acciones que deben ejecutarse repetidamente se utilizan los ciclos o bucles. Estos se utilizan en un programa cuando se necesita repetir varias veces una serie de acciones o instrucciones. CICLOS ANIDADOS: De la misma manera que se pueden anidar estructuras de condicin se puede hacer con los ciclos, en los dos casos la estructura interna debe de estar totalmente incluida en la externa. CICLO DESDE o PARA: Ejecuta repetitivamente un conjunto o bloque de instrucciones que se conoce de antemano y que por lo tanto no requiere de condicin de salida; el contador para contar el nmero de iteraciones se incrementa o decrementa de modo automtico. CICLO HACER MIENTRAS: Se utiliza para ejecutar repetitivamente un conjunto o bloque de instrucciones mientras se cumple una condicin especfica. Permite ejecutar repetitivamente el conjunto de instrucciones hasta que una variable, contador llegue a su valor lmite. CICLO REPITA HASTA: Ejecuta repetitivamente un conjunto o bloque de instrucciones hasta que se cumpla una condicin determinada que puede verificarse al principio o la final del ciclo. Se ejecuta mientras el valor de la condicin es falso, justo lo contrario al ciclo MIENTRAS. CLASE: Una clase se define como la descripcin de los atributos (campos y mtodos) de los objetos COMPILADOR : Es un programa encargado de corregir todos los errores de sintaxis que tenga el programa del usuario. Este corrige los errores de sintaxis ms no de lgica, puesto que esta depende nicamente del programador. Adems traduce el lenguaje del usuario a lenguaje de mquina. CONTADOR : rea de trabajo cuyo incremento o decremento es definido. El trmino contador est asociado con la accin de contar. Ejemplo: la registradora de un bus cuenta el nmero de pasajeros que suben a ste durante un determinado tiempo o recorrido. CONSTANTES : Son todos aquellos valores que no cambian en el transcurso de son definidos antes de utilizarse. un programa y
DATO: Conjunto de caracteres que hay en un campo. Ejemplo: "Carlos" parte del campo nombre.
DATOS NUMRICOS: Los datos de tipo numrico son los relativos a las diferentes clases de nmeros. DATOS LGICOS: Tambin denominados bolanos, es aquel dato que solo puede tomar uno de dos valores: cierto / falso o si / no 0 v / f o 0 / 1
LOGICA DE PROGRAMACION
127
DATOS CARCTER: Es el conjunto finito y ordenado de caracteres que la computadora puede interpretar. Un dato tipo carcter contiene solo uno. DIAGRAMA DE FLUJO: es una tcnica de representacin de algoritmos ms antigua y a la vez mas utilizada, aunque su empleo ha disminuido considerablemente, sobre todo desde la aparicin del lenguaje estructurado. Son fciles de disear porque el flujo lgico se muestra en un dibujo (smbolos o cajas estndares) en lugar de palabras y que cada paso del algoritmo escrito en estos dibujos estar unido por flechas denominadas lneas de flujo, que indican la secuencia que se debe seguir. DIAGRAMA ESTRUCTURADO o Diagrama de Nassi, N-S o Chapin : Denominada as por su inventor o tambin conocido como diagrama estructurado es como un diagrama de flujo en el que se omiten las flechas de unin y las cajas son contiguas. ENUNCIADOS DE ASIGNACIN: Se utilizan para indicar una accin o proceso (generalmente la asignacin de un valor o un resultado de una operacin a una variable). ENUNCIADOS DE DECISIN O ALTERNATIVOS: En el desarrollo de un algoritmo la mayora de las veces se ver abocado a tomar una decisin o realizar comparaciones o agrupacin, para que ste sea general y flexible se deben tener en cuenta las alternativas que se puedan presentar en un momento dado. Se utilizarn para hacer preguntas, comparaciones y tomar decisiones. Por medio de preguntas de exclusin, excepcin, y comparacin se puede tomar una decisin o conocer alguna situacin. EXPRESIONES: Las expresiones son combinaciones de constantes, variables, smbolos de operacin, parntesis y nombres de funciones especiales; una expresin consta de operandos y operadores. Los parntesis indican el orden de clculo. Segn el tipo de dato que manipulan se clasifican en: Aritmticas, Lgicas, Carcter. FUNCIONES: Es un subprograma que proporciona un valor o resultado segn sean sus parmetros de entrada. Las funciones pueden ser internas o externas.Una funcin se representa: f (p1, p2......,pn) f Nombre de la funcin
HERENCIA: Propiedad que permite a los objetos se construidos a partir de otros objetos; es recibir de una modulo superior, las caractersticas de l, como atributos o funciones (campos y mtodos o comportamientos), para usarlos en el mdulo actual. Heredar es compartir atributos.
LOGICA DE PROGRAMACION
128
IDENTIFICADORES : Son los nombres que se dan a los programas, constantes, variables, subprogramas y otros objetos o entidades de dgitos. Su nombre puede constar de una letra o agrupacin de letras o combinacin de letras y nmeros empezando siempre con una letra, no puede tener caracteres especiales, ni espacios en blanco. LENGUAJE DE MAQUINA: Es un lenguaje de manejo exclusivo de la mquina, es un sistema binario (unos y ceros) basado en dos estados de prendido ON (1) y apagado OFF (0). LENGUAJE DE ALTO NIVEL: Son las instrucciones que generalmente se usan en ingls y de una forma sencilla para que el usuario entienda fcilmente . Ej. Cobol, Basic, Pascal etc.. LENGUAJE DE BAJO NIVEL: Es un lenguaje mas al nivel de la mquina, procesan estos lenguajes mas rpidamente que los de alto nivel. los compiladores
un problema
MATRICES: Arreglos bidimensionales. Conjunto de cantidades organizadas en filas y columnas (MATRIZ). Los elementos deben ser de un mismo tipo; para referirse a un determinado elemento debe realizarlo por el nombre de la matriz y dentro de un parntesis 2 subndices separados por comas, donde el primero se refiere a la fila y el segundo se refiere a la columna. MEMORIA : Capacidad de guardar informacin y tenerla disponible para su uso.
MEMORIA ROM (read only memory), memoria de slo lectura, en la cual se almacena ciertos programas e informacin que necesita la computadora las cuales estn grabadas permanentemente y no pueden ser modificadas por el programador. Las instrucciones bsicas para arrancar una computadora estn grabadas aqu MEMORIA RAM (Random access memory), memoria de acceso aleatorio, la utiliza el usuario mediante sus programas, y es voltil. La memoria del equipo permite almacenar datos de entrada, instrucciones de los programas que se estn ejecutando en ese momento, los dato s resultados del procesamiento y los datos que se preparan para la salida. MTODO: Es la implementacin de un algoritmo que representa una operacin o funcin que un objeto realiza. El conjunto de los mtodos de un objeto determinan el comportamiento del objeto MODELO: Es una vista de un sistema del mundo real, es decir, una abstraccin de dicho sistema considerando un cierto propsito. As, el modelo describe completamente aquellos aspectos del sistema que son relevantes al propsito del modelo y a un apropiado nivel de detalle. MODULARIDAD: Proceso de crear partes de un todo que se integran perfectamente entre s para que funcionen por un objetivo general, y a las cuales se les pueden agregar ms componentes que se acoplen perfectamente al todo, o extraerle componentes sin afectar su funcionamiento. En el caso que se requiera actualizar un mdulo, no hay necesidad de hacer cambios en otras partes del todo. Un ejemplo clsico es conjunto de mdulos que, al integrarlos conforman un armario, el cual puede agregarle ms funcionalidad si se le agregan ms mdulos, o al contrario. OBJETO: Componente o cdigo de software, el cual contiene en s mismo tanto sus caractersticas (campos) como sus comportamientos (mtodos), el cual se accede a travs de su interfaz o
LOGICA DE PROGRAMACION
129
signatura. OBJETOS CONCRETOS: Partes fsicas del modelo mecnico, ojo del modelo, no del sistema real, o sea, los objetos planeta no son los planetas reales. PARMETROS: Son los datos mediante los cuales un procedimiento se comunica con la unidad del programa que llama. Pueden ser de entrada comunican valores al procedimiento; de salida envan valores desde el procedimiento al programa que llama; de entrada/salida que sirve para ambos propsitos. POLIFORMISMO: Esta propiedad indica que un elemento puede tomar distintas formas. Podemos definirlo como el uso de varios tipos en un mismo componente o funcin. Por ejemplo, una funcin que sume dos operandos, la cual maneja, o dos nmeros o dos cadenas, para retornar un total de una suma o de una concatenacin PROCESO : Es el conjunto de operaciones o clculos que transforman los datos en informacin, siguiendo una serie de instrucciones, escogiendo alternativas, dando resultados parciales cuando se manejan archivos etc.. PROCEDIMIENTO: Un subprograma que necesita cero, uno o varios valores en funcin de los parmetros definidos en su formato; se llama con una instruccin llamar- a o con el nombre del procedimiento PROGRAMAS DEL USUARIO: Son aplicaciones especficas que cada persona disea para la solucin de diferentes problemas de procesamiento de la informacin, los programas son escritos en un lenguaje de programacin, de acuerdo a las normas y sintaxis de dicho lenguaje. El programa consta de un nmero especfico de instrucciones, las cuales respetando una secuencia lgica cumplirn el objetivo de tomar unos datos de entrada, procesarlos y entregar una informacin como salida. PROGRAMA FUENTE: Es el programa escrito por el alto nivel. programador usando un lenguaje de
PROGRAMA OBJETO: Es el programa que resulta de la compilador del programa fuente en lenguaje de mquina.
PROGRAMACIN ORIENTADA A OBJETOS: al conjunto de teoras, estndares, modelos y mtodos que permiten organizar el conocimiento, proporcionando un medio bien definido para visualizar el dominio del problema e implementar en un lenguaje de programacin la solucin a ese problema. La POO se basa en el modelo objeto, donde el elemento principal es le objeto, el cual es una unidad que contiene todas sus caractersticas y comportamientos en s misma, lo cual lo hace como un todo independiente, pero que se interrelaciona con objetos de su misma clase o de otras clase, como sucede en el mundo real. La POO tiene como marco de referencia conceptual el objeto, el cual pertenece a una clase que agrupa a todos compaeros con las mismas caractersticas y un comportamiento similar. Una ventaja de la POO es la facilidad que brinda a travs de sus herramientas, de concebir,
LOGICA DE PROGRAMACION
130
analizar, modelar, disear e implementar el mundo real de manera fiel a como se presenta en la realidad; el paso que hay desde la concepcin y asimilacin del problema hasta la implementacin del mismo es un proceso que se hace de manera casi natural. Esto porque el mundo est lleno de objetos La POO es un paradigma de la programacin de computadores; esto hace referencia reales, los cuales se pueden representar como tales en una solucin computarizada PROMEDIO : Resultado de la divisin de un acumulador por un ( PROMEDIO = ACUMULADOR/CONTADOR). contador.
PSEUDO CDIGO: Es la descripcin de los pasos lgicos para la solucionar un problema en forma semejante al lenguaje de computadora utilizado, es decir un lenguaje de seudo programacin, una imitacin del cdigo de computadora. El Pseudo cdigo es una mezcla de lenguajes natural y smbolos, trminos y otras caractersticas comnmente utilizadas en uno o ms lenguajes de alto nivel.
REGISTRO: Es un conjunto de campos relacionados. REGISTRO CENTINELA: Es el ltimo registro que contiene una seal de fin de archivo, no se procesa. Cuando se utiliza el registro centinela se debe leer antes del ciclo el primer registro; una vez se procese ste se realiza la lectura del siguiente (antes del fin del ciclo). No hay que utilizar contador para controlar el final del ciclo. REGISTRO IDENTIFICADOR: Indica el nmero de iteraciones que deben realizarse en un ciclo. Se lee antes del ciclo, necesita de un contador para controlar cuando se terminan de procesar todos los registros indicados en el registro identificador. SISTEMA BINARIO: Sistema de numeracin que utilizan los circuitos digitales de las computadoras. Su base numrica es 2. SISTEMA HEXADECIMAL: Sistema numrico que tiene base 16 SISTEMAS OPERATIVOS : El sistema operativo es el gestor y organizador de todas las actividades que realiza la computadora. Marca las pautas segn las cuales se intercambia informacin entre la memoria central y la externa, y determina las operaciones elementales que puede realizar el procesador. SOFTWARE: Es el conjunto de instrucciones que las computadoras emplean para manipular datos. Sin el software, la computadora sera un conjunto de medios sin utilizar. Al cargar los programas en una computadora, la mquina actuar como si recibiera una educacin instantnea; de pronto "sabe" cmo pensar y cmo operar. SOFTWARE DE USO GENERAL : El software para uso general ofrece la estructura para un gran nmero de aplicaciones empresariales, cientficas y personales. El software de hoja de clculo, de diseo asistido por computadoras (CAD), de procesamiento de texto, de manejo de Bases de Datos, pertenece a esta categora. La mayora de software para uso general se vende como paquete; es decir, con software y documentacin orientada al usuario ( manuales de referencia, plantillas de teclado y dems ). SOFTWARE DE APLICACIONES : El software de aplicacin esta diseado y escrito para realizar
LOGICA DE PROGRAMACION
131
tareas especficas personales,,empresariales o cientficas como el procesamiento de nminas, la administracin de los recursos SUBALGORITMOS o SUBPROGRAMAS: Es un programa independiente que resuelve una funcin definida por los mdulos. Estos pueden representar tareas que se ejecutan una sola vez o tareas repetitivas; utiliza datos provenientes del programa principal o de otro subprograma y produce resultados para el programa principal o el otro subalgoritmo que lo utiliza o invoca. SUBNDICE: o ndice, indica el nmero de cada posicin del arreglo. Este debe ser un nmero entero. SUICHES: Los suiches o interruptores es un campo de memoria que puede falso o verdadero; si o no; 1 o 0. tomar dos valores:
Estos tienen gran aplicacin en la programacin y son utilizados para: Ejecutar alternativamente acciones diferentes dentro de un ciclo. Recordar en determinados puntos del programa la ocurrencia o no de un suceso anterior. Decidir en instrucciones alternativas la accin que se debe seguir. VARIABLES: Son todos aquellos valores que pueden o no cambiar en el transcurso de un programa, como existen diferentes tipos de datos las variables pueden ser numricas y alfanumricas. VARIABLE ALFABTICA O ALFANUMRICA: El valor almacenado en sta puede ser numrico, alfabtico o alfa-numrico y siempre debe estar colocado entre comillas. Este tipo de valor almacenado se denomina constante, literal, cadena o ttulo. VARIABLES DE TRABAJO: Son las variables donde se guardan los resultados de clculos u operaciones matemticas y se les debe dar siempre un valor inicial de 0. VARIABLES GLOBALES: Son las que se utilizan en todo el programa y tienen actuacin tanto en el programa principal como en los subprogramas. Su definicin se realiza en el programa principal. VARIABLES LOCALES: Son las que se utilizan en la definicin de un subprograma (incluyendo parmetros). Solo tiene actuacin o significado dentro del subprograma donde se definen y no son conocidas fuera de el. Su definicin debe ser dentro del subprograma. VARIABLE NUMRICA: Su nombre puede ser una letra o agrupacin de letras o combinacin de letras y nmeros; debiendo empezar siempre por una letra sin caracteres especiales ni espacios en blanco. El valor almacenado en ella debe ser totalmente numrico; y puede ser de tipo real o entero. VECTOR : Arreglo unidimensional organizado en forma de lista. Conjunto de datos continuos que tienen el mismo formato y se denominan elementos del vector. Generalmente en un vector se almacenan datos para luego realizar una operacin con ellos o consultar de una forma rpida.
LOGICA DE PROGRAMACION
132
BIBLIOGRAFIA
Bsica: BECERRA SANTAMARA, Cesar . Algoritmos, Conceptos Bsicos.Ed Santafe de Bogot Kimpres, 1995. 300 p. + disquete . CAIR BATTISTUTTI, Osvaldo. Estructuras de datos, 2a ed, . ed. Mexico : McGraw-Hill, 2002. 458 p. CORREA URIBE, Guillermo. Desarrollo De Algoritmos Y Sus Aplicaciones., Ed. Santaf de Bogot, Mc Graw Hill, 250 p. HERNNDEZ, Roberto; LZARO, Juan Carlos; DORMIDO, Raquel; ROS, Salvador. Estructura de datos y algoritmos. Madrid : s.n., 2001. 283 p. + CD-ROM. JOYANES AGUILAR, Luis. Fundamentos de programacin : algoritmos y estructuras de datos. 2. ed. Madrid : McGraw-Hill, 1996. 714 p. JOYANES AGUILAR, Luis; RODRGUEZ BAENA, Luis; FERNNDEZ AZUELA, Matilde. Fundamentos de programacin : libro de problemas. Madrid : McGraw-Hill, 1996. 392 p. JOYANES AGUILAR, Luis. Problemas De La Metodologa De Programacin. Madrid: Ed. Mc Graw Hill, 1990, 500 p. ORREGO VILLA, Gildardo Antonio. Fundamentos De Lgica De Programacin. Diseo de algoritmos. ed. Medelln : s.n., 2000. 110 p. OVIEDO R, Efran. Algoritmos estructurados. 2. ed. Medelln : s.n., 1995. 283 p. VSQUEZ L., Gabriel. Lgica para programacin de computadores fundamentos y aplicaciones. 2. ed. Medelln : Ediciones Grficas, 1985. 163 p. VSQUEZ L., Gabriel. Lgica para programacin de computadores fundamentos y aplicaciones. 2. ed. Medelln : Ediciones Grficas, 1985. 163 p. VILLALOBOS S, Jorge A. Diseo y manejo de estructuras en datos en C. Bogot : McGraw-Hill, 1996. 392 p. + disquete
Complemetaria :
Manual soporte elaborado por la docente
CIBERGRAFIA
http://www.algoritmia.net http://informatica.uv.es/iiguia/2000/AED/2002_03/Teoria/