0%(1)0% fanden dieses Dokument nützlich (1 Abstimmung)
568 Ansichten131 Seiten
Este documento presenta el módulo "Desarrollo de Lógica de Programación". El módulo busca desarrollar la lógica de programación en los estudiantes a través del estudio de herramientas, estructuras básicas y estructuras de datos. El módulo contiene una unidad didáctica dividida en tres temas principales. El documento incluye objetivos, contenidos, evaluación y una autoevaluación inicial.
Este documento presenta el módulo "Desarrollo de Lógica de Programación". El módulo busca desarrollar la lógica de programación en los estudiantes a través del estudio de herramientas, estructuras básicas y estructuras de datos. El módulo contiene una unidad didáctica dividida en tres temas principales. El documento incluye objetivos, contenidos, evaluación y una autoevaluación inicial.
Este documento presenta el módulo "Desarrollo de Lógica de Programación". El módulo busca desarrollar la lógica de programación en los estudiantes a través del estudio de herramientas, estructuras básicas y estructuras de datos. El módulo contiene una unidad didáctica dividida en tres temas principales. El documento incluye objetivos, contenidos, evaluación y una autoevaluación inicial.
NOMBRE DEL ALUMNO: _______________________________ PERODO: ___________ AO ________
SANTA TECLA, ENERO 2011
INDICE
Introduccin 1 Objetivo General del Mdulo 2 Objetivos del rea de Competencias 2 Subcompetencias 2 Duracin del Mdulo 2 Esquema General del Mdulo 3 Autoevaluacin Inicial 4 Sistema de Evaluacin 5 Unidad Didctica I 6 Introduccin a la Unidad 6 Resultados de Aprendizaje 6 Contenidos de la Unidad 7 1. HERRAMIENTAS DE PROGRAMACIN 8 1.1 Sistemas de Procesamiento de la Informacin 8 1.2 Tablas de verdad y Jerarqua de Operadores 16 1.3 Algoritmos y diagramas de flujo 35 2. ESTRUCTURAS BSICAS DE PROGRAMACIN 52 2.1Metodologa para la solucin de problemas 52 2.2Tipos de Estructuras bsicas 52 2.3 Estructuras secuenciales 53 2.4 Estructuras de seleccin 60 2.5 Estructuras cclicas 82 3. Estructuras de datos y subalgoritmos 103 3.1 Estructuras de datos 103 3.2 Modularidad 119 3.3 Ordenamiento y Bsqueda 123 EVALUACIN FINAL 127 1
DESARROLLO DE LGICA DE PROGRAMACIN
INTRODUCCIN El presente mdulo tiene como finalidad que usted pueda desarrollar la lgica de programacin, a travs del estudio de diferentes herramientas que le servirn para plantear la solucin de problemas por medio de representacin grfica y pseudo codificada; a partir del anlisis de un problema en particular, lo que propiciar que usted pueda iniciarse en el campo de la programacin. No se pretende ensear un lenguaje de programacin, sino dar a conocer las bases de la programacin; a travs de un lenguaje similar al habla humana (pseudocdigo), que luego le facilite aprender a utilizar un lenguaje de programacin en particular. El mdulo est compuesto por una unidad que proporcionar paso a paso, las bases que usted necesita para adquirir los conocimientos e ir desarrollando la lgica de programacin, y as plantear soluciones a problemas en el rea de la informtica. Est dividido en tres partes: la primera constituye la fase inicial de la identificacin de competencias y se refiere a conceptos fundamentales del desarrollo de software, donde se definen las reglas que debe seguir para aplicar jerarqua de operadores y tablas de verdad, los cuales reflejar a travs de una representacin algortmica. Luego estudiaremos las herramientas bsicas de programacin, donde a partir del anlisis de un problema informtico se representar su solucin en forma grfica o pseudo codificada. Finalmente, la tercera parte se centra en las estructuras de datos y subalgoritmos para que resuelva problemas ms complejos y los aplique en situaciones de la vida real.
2
OBJETIVO GENERAL DEL MDULO: Al finalizar este mdulo, usted habr adquirido las competencias para aplicar las tcnicas bsicas que le permitan realizar el anlisis de un problema, representado por medio de diagramas de flujo o pseudocdigo.
REA DE COMPETENCIAS: Desarrollar Lgica Computacional
SUBCOMPETENCIAS:
Aplicar Tablas de Verdad y Jerarqua de Operadores Elaborar Algoritmos narrados y pseudocodificados Disear Flujogramas para resolver problemas Elaborar la estructura general de un programa Elaborar algoritmos usando estructuras bsicas de programacin Elaborar algoritmos usando arreglos en una y dos dimensiones Resolver problemas aplicando cadenas de caracteres Resolver problemas usando procedimientos y funciones Aplicar mtodos de ordenamiento y bsqueda en la solucin de problemas
DURACIN DEL MDULO: 100 HORAS.
HORAS TERICAS: 30
HORAS PRCTICAS: 70
3
ESQUEMA GENERAL DEL MDULO
TEMA 2: ESTRUCTURAS BSICAS DE PROGRAMACIN TEMA 3: ESTRUCTURAS DE DATOS Y SUBALGORITMOS TEMA 1: HERRAMIENTAS DE PROGRAMACIN 1.1 Sistemas de Procesamiento de la Informacin 1.2 Tablas de Verdad y Jerarqua de Operadores 1.3 Algoritmos y Diagramas de Flujo UNIDAD 1: DESARROLLAR LGICA DE PROGRAMACIN 2.1 Metodologa para la solucin de problemas 2.2 Tipos de Estructuras Bsicas 2.3 Estructuras Secuenciales 2.4 Estructuras de Control 2.5 Estructuras Cclicas 3.1 Estructuras de Datos 3.2 Modularidad 3.3 Ordenamiento y Bsqueda MODULO: DESARROLLO DE LGICA DE PROGRAMACIN 4
En su rol de protagonista del proceso de aprendizaje, le proponemos completar el siguiente cuestionario previo al estudio del mdulo, con el objeto de que usted defina cules son sus conocimientos iniciales de los temas que se van a estudiar y, que avale su aprendizaje en el transcurso del desarrollo del mdulo. Finalmente puede comparar ambos procesos para que identifique los aprendizajes alcanzados al terminar el mdulo. Para tal propsito, complete el cuestionario utilizando la siguiente escala: 1. No conozco ni s hacerlo (Nunca he ledo sobre este tema ni trabajado en l) 2. He escuchado pero no he trabajado en ello. 3. Tengo poco conocimiento del tema. 4. Conozco y s hacerlo.
Coloque un cheque en la escala seleccionada.
Contenidos 1 2 3
4
Evaluar expresiones aplicando tablas de verdad y jerarqua de operadores
Utilizar algoritmos y representacin grfica para la solucin de problemas
Resolver problemas utilizando estructuras de seleccin simple, doble, compuesta y mltiple
Resolver problemas utilizando estructuras cclicas y bucles anidados
Representar problemas utilizando estructuras de datos: vectores, matrices y registros
Aplicar modularidad para simplificar la solucin de problemas
Utilizar cadenas de caracteres y mtodos de ordenamiento y bsqueda
AUTOEVALUACIN INICIAL
5
SISTEMA DE EVALUACIN. Socializacin: Controles de lectura 100% Prctica: Evaluacin de los temas 45% (3 exmenes prcticos 15% c/u) Ejercicios prcticos 25% Tarea significativa 30% Porcentaje de socializacin 30% Porcentaje de Prctica 70% TAREA SIGNIFICATIVA: La evaluacin final del mdulo consiste en la elaboracin de un documento que contiene el anlisis y diseo de un problema especfico, el cual debe contener: a) Portada b) ndice c) Introduccin d) Objetivos e) Descripcin del proyecto f) Anlisis del Problema g) Planeacin de la Solucin h) Descripcin de variables i) Algoritmo General j) Flujograma k) Diagrama N-S l) Corrida manual con diferentes datos de prueba Sugerencias para la presentacin del documento: Revise su ortografa y redaccin Incluya en forma completa, la bibliografa y sitios web consultados. Documento en formato de Word tamao carta, con mrgenes de 2.5 a cada lado. Tipo de letra verdana tamao 11 para textos y los ttulos en tamao 12. Interlineado 1.5. Entrega puntual, en la fecha estipulada. EVALUACIN FINAL 6
UNIDAD DIDCTICA I. DESARROLLAR LGICA DE PROGRAMACIN
INTRODUCCIN. En nuestros das, aprender a programar es uno de los retos ms grandes que las personas tienen; a pesar de que tener una computadora cada da es ms viable y es una herramienta poderosa para resolver problemas. Sin embargo, para que una persona aprenda tcnicas y lenguajes de programacin, primero debe iniciarse en el campo de la lgica y desarrollar las bases para el anlisis de un problema. Como parte del anlisis se tiene que aprender que un problema se descompone en una serie de etapas, las cuales se deben seguir para llegar a obtener buenos resultados al final. El presente mdulo consta de una nica unidad de aprendizaje. Dicha unidad tiene como propsito, lograr que el estudiante desarrolle la lgica de programacin; a travs de diferentes conceptos, herramientas y estructuras que le conducirn a travs del campo de la programacin. La unidad est compuesta de tres grandes temas como son herramientas de programacin, estructuras bsicas de programacin y Estructuras de datos y Subalgoritmos. Con el desarrollo de cada uno de estos temas se pretende lograr que el alumno investigue, analice y aplique los conocimientos adquiridos en la solucin de problemas de programacin en forma pseudocodificada, utilizando ciertas herramientas y estructuras bsicas, demostrando as, el desarrollo de la lgica adquirida a travs del mdulo. RESULTADOS DE APRENDIZAJE: Resolver expresiones en forma correcta, aplicando Tablas de Verdad y Jerarqua de Operadores. Elaborar algoritmos y diagramas de flujo en base a las reglas de construccin establecidas. Desarrollar algoritmos y diagramas de flujo utilizando la estructura general de un programa. Disear algoritmos y flujogramas utilizando estructuras Bsicas de Programacin segn estndares de pseudocdigo Elaborar algoritmos y flujogramas usando estructuras de datos en base a reglas de construccin. Elaborar algoritmos usando instrucciones bsicas de cadenas de caracteres. Resolver problemas en forma modular utilizando procedimientos y funciones estndar o definidas por el usuario. Utilizar diferentes mtodos de ordenamiento y bsqueda en base a requerimientos del problema. 7
CONTENIDOS DE LA UNIDAD: 1. HERRAMIENTAS DE PROGRAMACIN 1.1 Sistemas de Procesamiento de la Informacin 1.1.1 Pasos del desarrollo de software 1.1.2 Lenguajes de programacin 1.1.3 Intrpretes y compiladores 1.2 Tablas de verdad y Jerarqua de Operadores 1.2.1 Lgica de Proposiciones 1.2.2 Tablas de valores de verdad 1.2.3 Tipos de datos y jerarqua de operadores 1.3 Algoritmos y diagramas de flujo 1.3.1 Introduccin a los algoritmos 1.3.2 Representacin de algoritmos 2. ESTRUCTURAS BSICAS DE PROGRAMACIN 2.1 Metodologa para la solucin de problemas 2.2 Tipos de Estructuras bsicas 2.3 Estructuras secuenciales 2.4 Estructuras de control 2.5 Estructuras cclicas 3. ESTRUCTURAS DE DATOS Y SUBALGORITMOS 3.1 Estructuras de datos 3.1.1 Introduccin a las estructuras de datos 3.1.2 Arreglos en una dimensin 3.1.3 Arreglos en dos dimensiones 3.1.4 Cadenas de Caracteres 3.1.5 Registros 3.2 Modularidad 3.2.1 Introduccin a la modularidad 3.2.2 Procedimientos 3.2.3 Funciones 3.3 Ordenamiento y Bsqueda 3.3.1 Mtodos de Ordenamiento 3.3.2 Mtodos de Bsqueda
8
TEMA 1. HERRAMIENTAS DE PROGRAMACIN CONCEPTOS. 1.1 Sistemas de Procesamiento de la Informacin. Sistema de informacin: es un conjunto de elementos que interactan entre s con el fin de apoyar las actividades de una empresa o negocio 1 . Procesamiento de Informacin: Es la capacidad de los Sistemas de Informacin para realizar clculos con base en secuencias de operaciones preestablecidas. Estos clculos pueden efectuarse con datos introducidos recientemente en el sistema o bien con datos que estn almacenados. Esta caracterstica de los sistemas permite la transformacin de datos fuente en informacin que puede ser utilizada para la toma de decisiones, lo que hace posible, entre otras cosas, que un tomador de decisiones genere una proyeccin financiera a partir de los datos que contiene un estado de resultados o un balance general de un ao base 1 . Procesamiento de Datos: es cualquier ordenacin o tratamiento de datos, o los elementos bsicos de informacin, mediante el empleo de un sistema. Procesar datos es generar informacin para la toma de decisiones 2 . 1.1.1 Pasos del desarrollo de software. Escribir un programa para resolver un problema involucra una serie de pasos desde su anlisis hasta llegar a su implementacin. Estos pasos se conocen como Desarrollo de Software y algunas veces como Ingeniera de Software o Ciclo de Vida de un Sistema. El desarrollo de software se puede definir como la aplicacin prctica del conocimiento cientfico al diseo y construccin de programas de computadora y a la documentacin asociada requerida para desarrollar, operar y mantenerlos. [Bohem, 1976] 1.1.2 Lenguajes de Programacin. Un lenguaje de programacin es un conjunto de smbolos y reglas sintcticas y semnticas que se utiliza para escribir los programas de computadoras. Un lenguaje de programacin permite a uno o ms programadores especificar la forma precisa en que los datos van a ser operados en una computadora, cmo van a ser almacenados o transmitidos y qu acciones tomar ante ciertas circunstancias o problemas que se deben resolver. El programador debe ser capaz de seleccionar el lenguaje de programacin apropiado para resolver un problema bajo ciertas circunstancias especficas, de manera ptima. Una caracterstica relevante de los lenguajes de programacin es precisamente que ms de un programador puedan tener un conjunto comn de instrucciones que puedan ser comprendidas entre ellos para realizar la construccin del programa de forma colaborativa.
1 Tomado de http://www.slideshare.net/miniproject/sistemas-de-informacin-1708626. 2 Tomado de fccea.unicauca.edu.co/old/procesamiento.htm 9
1.1.3 Intrpretes y Compiladores. Los compiladores, los intrpretes y los ensambladores se encargan de traducir lo que haya escrito en lenguaje de alto nivel (cdigo fuente) y lo convierten a cdigo objeto (casi ejecutable).
TRADUCCIN (Ensamblador, Intrprete, Compilador) Existen dos tipos principales de traductores de los lenguajes de programacin de alto nivel: Compilador, que analiza el programa fuente y lo traduce a otro equivalente escrito en otro lenguaje (por ejemplo, en el lenguaje de la mquina). Su funcin es similar a la de un traductor humano, que toma un libro lo analiza completamente y produce otro equivalente escrito en una lengua diferente. Intrprete, que analiza el programa fuente y lo ejecuta directamente, sin generar ningn cdigo equivalente. Su accin equivale a la de un intrprete humano, que traduce las frases que oye sobre la marcha, sin producir ningn escrito permanente. Intrpretes y compiladores tienen diversas ventajas e inconvenientes que los hacen complementarios: o Con el intrprete es ms fcil la bsqueda de errores, pues la ejecucin del programa se puede interrumpir en cualquier momento para estudiar el entorno (valores de las variables, etc.). El intrprete va analizando instruccin por instruccin y al momento en que detecta un error se detiene permitiendo su modificacin o correccin. Adems, el programa puede modificarse sobre la marcha, sin necesidad de volver a comenzar la ejecucin. o El compilador genera programas ms rpidos y eficientes, pues este analiza todo el cdigo de una sola vez y luego genera un archivo objeto, por lo cual el anlisis del lenguaje fuente se hace una sola vez, durante la generacin del programa equivalente. Se tarda analizando solamente la primera vez, pero luego lo que se ejecuta es el cdigo objeto, por lo cual las dems ejecuciones son ms rpidas. En cambio, un intrprete como no genera el cdigo objeto, siempre se tarda realizando el anlisis pues lo hace instruccin por instruccin hasta que termina y no hayan ms errores detectados. El tiempo de ejecucin se ir reduciendo cuando se vayan depurando todos los errores encontrados. o Un intrprete permite utilizar funciones y operadores ms potentes, como por ejemplo ejecutar cdigo contenido en una variable en forma de cadenas de caracteres. Usualmente, este tipo de instrucciones es imposible de tratar por medio de compiladores. Los lenguajes que incluyen este tipo de operadores y que, por tanto, Cdigo Fuente Cdigo Objeto Cdigo Ensamblador 10
exigen un intrprete, se llaman interpretativos. Los lenguajes compilativos, que permiten el uso de un compilador, prescinden de este tipo de operadores. 3
LENGUAJES COMPILADOS Es un programa que traduce un programa escrito en un lenguaje de alto nivel, en un programa en lenguaje de mquina que la computadora es capaz de entender y ejecutar directamente. Ejemplo de lenguajes que usan compilador: Pascal Cobol Fortran Ada Modula 2 C , C++ Involucra dos pasos en su operacin: 1. Convertir cdigo fuente a objeto 2. Ejecutar el cdigo objeto
Fases de compilacin:
Anlisis: Dependiente del lenguaje. Independiente de la mquina Sintaxis: Independiente del lenguaje. Dependiente de la mquina.
ENLAZADOR (LINKER) El enlazador realiza la tarea de enlazar la funcionalidad de las teclas y funciones con el cdigo objeto generado a travs de la compilacin de un programa. Una librera es la coleccin de varias teclas y sus funciones, las cuales son creadas por programadores expertos y almacenadas en lugares especiales para que se puedan utilizar por otros programadores. Tambin pueden ser algunas funciones estndar como raz cuadrada, logaritmo, random y otras.
3 Tomado de www.scribd.com/doc/37261651/Emulador-y-Simulador. Programa Fuente Cdigo Intermedio Programa Objeto Anlisis Sintaxis 11
Para poder utilizar estas funciones predefinidas que estn guardadas en las libreras, el programador tiene que hacer referencia a dicha librera, que es un archivo que se llama en la cabecera del programa. El proceso de enlace es mostrado a continuacin:
MINI CONTROL DE LECTURA
1. INVESTIGUE Y RESUELVA EL SIGUIENTE CRUCIGRAMA:
HORIZONTALES 6. Paso final del desarrollo de software que garantiza que los programas siempre estn funcionando correctamente y libres de errores. 8. Etapa donde se plantea el bosquejo de la solucin a travs de pseudocdigos y otras herramientas de diseo. 9. Manuales que sirven de referencia para los que van a usar el sistema. 10. Etapa que consiste en correr el programa y corregir las partes que no funcionan. VERTICALES 1. Tipo de error difcil de detectar, los resultados obtenidos no son los esperados y puede significar volver a elaborar todo el cdigo nuevamente. 2. Generacin del programa usando un lenguaje de programacin. 3. Consiste en comprobar que el software realice correctamente las tareas indicadas en la especificacin del problema. 4. Tipo de error fcil de detectar por deberse posiblemente a mala escritura. Compilador Enlazador Librera Cdigo Ejecutable Cdigo Fuente Cdigo Ejecutable 12
5. Datos que se deben identificar a partir de las salidas del problema. 7. Primer elemento a buscar en la identificacin de requerimientos.
1 2 3 4 5 6 7
8 9 10
2. INVESTIGACIN INDIVIDUAL. INVESTIGUE Y CONTESTE EL SIGUIENTE CUESTIONARIO EN SU CUADERNO. LUEGO DISCTALO CON SU GRUPO DE CLASE. 1. Qu es procesamiento de datos? 2. Qu es desarrollo de software? 3. Cules son los pasos del desarrollo de Software? 4. Qu es un programa? 5. Cules son los tipos de sistemas de informacin? 6. Cul es la aplicacin de los sistemas de informacin? 7. Qu es un lenguaje de programacin? 8. Qu funciones realiza un programador? 9. En qu consiste la fase de resolucin de un problema? 10. Qu es codificacin? 11. Qu es depuracin? 12. Qu son lenguajes de bajo nivel? 13. Qu son lenguajes de alto nivel? 14. En qu consiste la portabilidad? 13
15. Cules son las generaciones de lenguajes de programacin? 16. Escribe ejemplos de lenguajes que pertenecen a cada generacin y sus caractersticas 17. Qu es compilacin?. Cules son las fases de compilacin? 18. Qu es un intrprete? 19. Cules son las semejanzas y diferencias entre intrprete y compilador? 20. Escribe ejemplos de programas que trabajan con intrprete y cules con compilador. 21. Qu es cdigo fuente? 22. Qu es cdigo objeto? 23. Cules son los errores que se producen en la compilacin de un programa?
3. INVESTIGUE Y COMPLETE EL ESPACIO EN BLANCO CON LA RESPUESTA CORRECTA. 1. Los lenguajes de programacin se dividen en _____________ nivel y ____________ nivel. 2. Toda instruccin de lenguaje de programacin tiene al menos dos partes: cdigo de _________________ y direccin del _________________ 3. Independencia de la arquitectura fsica de la computadora en un lenguaje de alto nivel significa que un mismo lenguaje puede funcionar en distintos computadores, a esto se le llama ___________________. 4. El valor en binario 100011 equivale en decimal al valor ________ 5. LISP y PROLOG corresponden a la generacin de lenguajes ________________________
4. PARA ANALIZAR. Son verdaderas las siguientes afirmaciones? Responda si o no, marcando con una X en el cuadro respectivo.
Afirmacin: Es cierto? 1. Los lenguajes de alto nivel no son portables S No X 2. Son lenguajes interpretados: Basic y Visual Basic S No 3. Una librera es un conjunto de teclas y funciones que estn guardadas para que se puedan utilizar en los programas S No 4. Un compilador revisa todo el cdigo fuente y luego muestra los errores. Al ser corregidos se crea un cdigo objeto. S No 5. Un intrprete no genera cdigo objeto S No 14
5. EVALUACIN:
INDICACIN. Traslade el nmero de la respuesta correcta al espacio de en medio segn corresponda. Si no sabe la respuesta, debe investigar en alguna fuente bibliogrfica o en Internet. 1. Depuracin Es una pastilla de silicio que contiene componentes electrnicos en miniatura, llamados semiconductores. 2. Compilador Consiste en la recoleccin de datos de entrada que son evaluados y ordenados para ser colocados de manera que produzcan informacin til. 3. Memoria Secundaria Se deben generalmente a operaciones no permitidas como dividir por cero, leer un dato no numrico en una variable numrica, exceder un rango de valores permitidos, etc. 4. Manual de usuario Se encargan de darle soporte tcnico al programa 5. Prueba Estos se encargan de investigar y documentar con las herramientas necesarias para que el programador pueda desarrollar el sistema en algn lenguaje de programacin adecuado. 6. Operadores Consiste en comprobar que el software realice correctamente las tareas indicadas en la especificacin del problema 7. Procesamiento de Datos Es un programa que traduce un programa escrito en un lenguaje de alto nivel, en un programa en lenguaje de mquina que la computadora es capaz de entender y ejecutar directamente 8. Errores de Ejecucin Son dispositivos de almacenamiento para guardar la informacin de forma permanente para uso posterior 9. Chip En esta fase se comprueba el funcionamiento de cada programa y esto se hace con datos reales o ficticios. 10. Analistas de sistemas Contiene informacin sobre cmo usar el programa, descripcin de mens y pantallas y otros.
PARTE II.
Dadas las siguientes oraciones, chequee el recuadro dependiendo si es Falsa o Verdadera. Recuerde, si algo no lo sabe: Investguelo.
15
N PREGUNTA F V 1. En la fase de identificacin de requerimientos se especifican los objetivos, salidas y entradas del problema.
2. Las pruebas y depuracin son dos actividades independientes, significa que no es necesario hacer ambas.
3. La Unidad de Control y la ALU trabajan en forma separada dentro del computador
4. Una computadora sin software no tiene mucha utilidad aunque tenga bastantes elementos de hardware
5. Los lenguajes se dividen en bajo nivel y alto nivel
TERMINOLOGA APLICADA Desarrollo de software es la aplicacin prctica del conocimiento cientfico al diseo y construccin de programas de computadora y a la documentacin asociada requerida para desarrollar, operar y mantenerlos. Lenguaje de programacin es un conjunto de smbolos y reglas sintcticas y semnticas que definen su estructura y el significado de sus elementos y expresiones. Procesamiento de Datos: es cualquier ordenacin o tratamiento de datos, o los elementos bsicos de informacin, mediante el empleo de un sistema. Procesar datos es generar informacin para la toma de decisiones. Procesamiento de Informacin: Es la capacidad del Sistema de Informacin para efectuar clculos de acuerdo con una secuencia de operaciones preestablecida. Sistema de informacin: es un conjunto de elementos que interactan entre s con el fin de apoyar las actividades de una empresa o negocio.
BIBLIOGRAFA Metodologa de la Programacin. Diagramas de Flujo, algoritmos y programacin. Luis Joyanes Aguilar. Editorial Mc Graw Hill. Mxico. Fundamentos de programacin. Algoritmos y estructuras de datos. Luis Joyanes Aguilar. Editorial Mc Graw Hill. Mxico. Introduccin a la Programacin. Ramn A. Mata-Toledo y Pauline K. Cushman. Editorial Mc Graw Hill. Mxico. SITIOS DE INTERNET: Lenguajes de Programacin. http://bc.inter.edu/facultad/RFIGUEROA/Programming2.htm
16
1.2 TABLAS DE VERDAD Y JERARQUA DE OPERADORES
LGICA. Es la capacidad de pensar racionalmente acerca de soluciones alternativas y los resultados de aplicarlas, y por lo tanto, de hacer elecciones inteligentes. Otras definiciones de Lgica: Es el estudio crtico del razonamiento y tiene un valor terico y prctico. 4
Es el estudio de los mtodos y principios usados al distinguir entre los argumentos correctos (buenos) y los argumentos incorrectos (malos). En un sentido amplio, es el estudio del correcto razonamiento.
ARGUMENTOS. Cuando el razonamiento se expresa con palabras, recibe el nombre de argumento. Un argumento es un grupo cualquiera de proposiciones o enunciados que forman premisas y conclusiones. Este puede constar de varias premisas pero de una sola conclusin. PREMISAS Y CONCLUSIN Las premisas de un argumento son proposiciones afirmadas como fundamento o razones para aceptar una conclusin. La conclusin es la proposicin afirmada que se basa en las otras proposiciones o premisas. Una proposicin puede ser premisa en un argumento y conclusin en otro. Hay dos condiciones que debe satisfacer un argumento para establecer la verdad de su conclusin: Debe ser vlido y todas sus premisas deben ser verdaderas. A esto se le llama razonamiento confiable. 5
TIPOS DE PROPOSICIONES O ENUNCIADOS: Simples o tomos Compuestas
Enunciado Simple: Es el que no contiene otro enunciado como parte componente. Los tomos o proposiciones simples son tales que no es posible encontrar en ellas otras proposiciones Ej. Las rosas son rojas Enunciado compuesto: Es el que se compone de varios enunciados. Estas proposiciones compuestas estn conformadas de varias proposiciones simples a travs de lo que se denomina conectores lgicos, entre los cuales se encuentran: y, o, implica. Ej. Las rosas son rojas y las violetas son azules.
4 Tomado de www.slideshare.net/marthaill10/unidad-iv-algoritmos 5 Tomado de www.scribd.com/doc/3863819/apuntesprog 1.2.1 LGICA DE PROPOSICIONES 17
Valor de Verdad Es la certeza o falsedad de una proposicin. Se representa por T (True) o V (verdadero) cuando es cierta y por F (false o falso) cuando no es cierta.
CONECTIVAS LOGICAS (Algebra de Boole) Las conectivas lgicas tambin se llaman a veces operadores, y son de dos tipos: Operadores unarios: NEGACION: Not, Ejemplo: El peridico no ha llegado todava. Operadores binarios: CONJUNCION: AND, &, y , ^ DISYUNCION: OR , V CONDICIONAL: ==> implica BICONDICIONAL: <==> s y slo s Ejemplo: Ayer fui al supermercado y a la escuela. (Conjuncin) Compra soda o jugo (Disyuncin) Si tomas entonces no manejes (Condicional) Ganars el concurso s y slo s respondes bien todas las preguntas (Bicondicional).
Como se mencion anteriormente, para formar expresiones compuestas necesitamos conectivos lgicos. Comenzaremos con un conectivo unitario; este es el que se aplica solamente a una proposicin. Se le llama Negacin. La operacin unitaria de negacin, se representa por el smbolo de Not ( ) y tiene la siguiente tabla de verdad:
P P
V F F V
Por ejemplo, si tenemos el enunciado: El pizarrn es verde. Su negacin sera: El pizarrn no es verde. Conjuncin (AND, , &) : Es una conectiva que puede definirse como verdadera slo cuando ambas variables proposicionales sean verdaderas. En cualquier otro caso es falsa. P Q P Q V V V V F F F V F F F F
Disyuncin (V,OR) : La sentencia ser verdadera cuando una o ambas variables proposicionales sean verdaderas. Con la disyuncin a diferencia de la conjuncin, basta con que una de las variables sea verdadera para que la disyuncin nos d verdadero. En otras palabras, slo cuando las dos premisas son falsas, la disyuncin nos dar una conclusin falsa. P Q P V Q V V V V F V F V V F F F 1.2.2 TABLA DE VALORES DE VERDAD 18
Los ( ) tienen la mayor prioridad pues pueden cambiar el valor de verdad a una expresin. El NOT se aplica directamente a una proposicin, si no existen parntesis. AND tiene ms prioridad que OR La jerarqua nos queda entonces: ( ) NOT AND OR
EJEMPLO. Si A y B son valores verdaderos y P y Q son falsos, cul es el valor de verdad de la siguiente expresin:
1. (A or B) ^ (P ^ Q) Solucin: Lo primero que tenemos que hacer es sustituir la expresin por los valores de verdad que nos da el enunciado. Evaluamos primero los parntesis, comenzando con el primero. En la tabla OR buscamos a qu equivalen Verdadero or Verdadero (porque A y B son verdaderos segn el enunciado). Obtenemos que es Verdadero. Como la expresin est negada, su valor opuesto es Falso. Al evaluar el segundo parntesis, Q es falso y al negarlo nos queda verdadero. Luego, si P es falso nos queda Falso and Verdadero, y esto es igual a Falso. Entonces:
NOT ( A OR B ) AND ( P AND NOT Q ) NOT ( V OR V ) AND ( F AND NOT F) NOT ( V ) AND ( F AND V ) F AND F Falso
MINI CONTROL DE LECTURA
Coloque las siguientes palabras en los espacios en blanco segn corresponda. 1. Lgica 2. Conjuncin 3. Argumentos 4. Premisas Notacin: NOT se representa con ~ o AND se representa con ^ y OR se representa con v Usaremos NOT, OR y AND para no confundir con V y F (Verdadero y Falso) JERARQUA DE OPERADORES BOOLEANOS:
19
5. Enunciado Simple
1. _______________, es una conectiva que puede definirse como verdadera slo cuando ambas variables proposicionales sean verdaderas. En cualquier otro caso es falsa. 2. __________________, es el que no contiene otro enunciado como parte componente. 3. ______________, son proposiciones afirmadas como fundamento o razones para aceptar una conclusin. 4. _________________, es el estudio de los mtodos y principios usados al distinguir entre los argumentos correctos (buenos) y los argumentos incorrectos (malos). 5. __________________, es un grupo cualquiera de proposiciones o enunciados que forman premisas y conclusiones
Uno de los propsitos de las computadoras es manejar informacin. La informacin est formada por datos. Un dato es toda aquella informacin caracterstica de una entidad, que es susceptible de tratamiento en un programa informtico. Tambin es la expresin general que describe los objetos con los cuales opera una computadora. En un programa los datos de entrada se transforman por el programa hasta producir datos de salida. Para la solucin de problemas, definir adecuadamente las estructuras de los datos es tan importante como el diseo mismo de la solucin del problema. Todos los datos tienen un tipo asociado con ellos que nos servir para poder conocer con qu informacin trabajaremos. Por ejemplo, cuando ingresamos el sueldo de un trabajador necesitamos que este contenga decimales, o al solicitar la edad de una persona sta tiene que estar con nmeros enteros, etc. Adems hay operaciones que no tienen sentido como la suma entre caracteres.
La asignacin de tipos a los datos tiene dos objetivos principales: Detectar errores de operaciones aritmticas en los programas Determinar cmo ejecutar las operaciones.
Los tipos de datos son clasificados como sigue: a) Simples b) Estructurados
a) Tipos de Datos Simples. Los tipos de datos simples son los que ocupan slo una casilla de memoria, por lo tanto una variable simple hace referencia a un nico valor a la vez. Los datos simples pueden dividirse en: 1. Numricos 2. Tipos de Datos Alfanumricos 3. Tipos de datos Lgicos o booleanos
b) Tipos de Datos Estructurados Estos son un tipo de datos especial que tienen la ventaja de almacenar varios valores al mismo tiempo dentro de una misma variable. 1.2.3 TIPOS DE DATOS Y JERARQUIA DE OPERADORES
20
Entre stos tenemos: Arreglos (arrays), Registros (record), Archivos o Ficheros (File) y Punteros (pointer). REGLAS DE LOS IDENTIFICADORES: Deben comenzar por una letra. Pueden estar constituidos por letras y dgitos, y en algunos casos por el signo del subrayado. Ejemplo: dato_1 No deben contener espacios en blanco. Las letras no deben ser tildadas El nmero mximo de caracteres depender del compilador utilizado. Se recomienda usar nombres cortos. El nombre asignado debe tener relacin con la informacin que contiene. No podr coincidir con palabras reservadas, propias del lenguaje algortmico. Tampoco debe tener el mismo nombre de una funcin, ya sea definida por el usuario o de la biblioteca del lenguaje que se utilice.
Es el modo de darle valores a una variable. Se representa con el smbolo , el cual se conoce como instruccin o sentencia de asignacin. El formato general de una operacin de asignacin es:
Nombre de la variable expresin La flecha de asignacin se sustituye en algunos lenguajes de programacin por el smbolo de =. Ejemplo: A 15 significa que a la variable A se le ha asignado el valor 15. La accin de asignar es destructiva, ya que cada vez que le asignamos un valor a una variable, ste le cae encima al anterior pues se est almacenando en un rea de memoria. Por ejemplo, en la secuencia de asignaciones A 5 A 123 A 6 Cuando stas se ejecutan, el ltimo valor que toma A es 6 por lo tanto los otros dos han desaparecido.
1. Una variable o expresin que esta al lado derecho de una sentencia de asignacin debe tener un valor antes de asignrsele a la variable de la izquierda. Esto quiere decir que hasta que un programa le da un valor a una variable, esa variable no tiene valor. Ejemplos: Si x no tiene un valor antes de realizar la operacin y= 2x+10, se producir un error pues el computador no sabr qu valor le tiene que asignar a x. OPERACIN DE ASIGNACIN
REGLAS DE ASIGNACIN
21
Si a,b y c no tienen un valor antes de realizar la operacin de x= a+b+c, tambin se producir un error. 2. En la izquierda de una sentencia de asignacin slo puede existir una variable que reciba operaciones a la derecha, no operaciones en s. Por consiguiente no es vlido lo siguiente: valor_neto interes = 3.5 sueldo + comision = nuevo_sueldo (lo correcto sera hacer nuevo_sueldo = sueldo + comisin). Recuerde que la variable de la izquierda recibe las operaciones, variables o expresiones de la derecha, siempre y cuando stas generen un valor para ser asignado.
MINI CONTROL DE LECTURA
INVESTIGUE:
1. Qu son tipos de datos numricos, alfanumricos y lgicos. Escriba ejemplos de tipos que corresponden a cada uno. Elabore un reporte en una pgina de papel bond tamao carta. 2. Qu son constantes, variables e identificadores, su uso y ejemplos. 3. Qu son contadores y acumuladores. Escriba ejemplos de su uso.
EJERCICIOS:
1. Indique cules de los siguientes datos son vlidos para ser procesados por una computadora?. Si no es vlido, indique porqu y si es vlido tambin indique a qu tipo de dato pertenece.
a) 12005 b) Rpido corren los carros c) 250 d) 123.56 e) 0.001 f) 4,512 g) h) juan perez
2. Indique cules de los siguientes identificadores es vlido y si no lo es, diga porqu. a) X 2
b) 4Fx10 c) Apellido 1 d) Num_par e) For (investigar)
3. En el siguiente cuadro aparecen varias palabras que corresponden a este tema. Traslade a los espacios en blanco segn correspondan con el enunciado. Sobra uno. 22
Datos Estructurados Identificadores Datos Simples Asignacin Constante Variable 1. Es el modo de darle valores a una variable. Se representa con el smbolo . ____________________ 2. Son palabras creadas por los programadores para dar nombre a los objetos y dems elementos que necesitamos declarar en un programa: variables, constantes, tipos, estructuras de datos, archivos, subprogramas, etc. ____________________________ 3. Estos son un tipo de datos especial que tienen la ventaja de almacenar varios valores al mismo tiempo dentro de una misma variable._____________________________ 4. Es un dato cuyo valor no cambia durante todo el proceso de ejecucin de un programa. _________________________ 5. Son los que ocupan slo una casilla de memoria, por lo tanto una variable simple hace referencia a un nico valor a la vez. _________________________
EXPRESIONES. Las expresiones son combinaciones de constantes, variables, smbolos de operacin, parntesis y nombres de funciones especiales. Una expresin representa una unidad de datos simple, tal como un nmero o un carcter. Tambin puede consistir en alguna combinacin de entidades interconectadas por uno o ms operadores. Las expresiones tambin pueden representar condiciones lgicas que son verdaderas o falsas. Cada expresin tiene un valor, que se determina tomando los valores de las variables y constantes implicadas ejecutando las operaciones indicadas. Ejemplos: X = 9 * 15 + 6 2.5 + 13 = 15.5 A+B = C+D
ELEMENTOS DE UNA EXPRESIN: OPERANDOS OPERADORES
Un operador es un smbolo o palabra que significa que se ha de realizar cierta accin entre dos o ms valores, llamados operandos. Ejemplos: Operando 1 Operador Operando 2 X + 2 OPERADORES Y EXPRESIONES
23
OPERADORES Los operadores especifican el tipo de clculo que se quiere desarrollar en los elementos de una expresin. Los operadores se pueden clasificar en las siguientes categoras: Aritmticos Relacionales Lgicos Alfanumricos Asociativos
OPERADORES ARITMTICOS 6
Los operadores aritmticos son usados para realizar clculos matemticos. Algunos de los operadores aritmticos se listan a continuacin: Operador Aritmtico Descripcin Ejemplo Adicin (+) Suma los operandos. x = y + z Resta (-) Resta el operando derecho del operando izquierdo.
x = y z Multiplicacin (*) Multiplica los operandos. x = y * z Divisin Real (/) Divide el operando izquierdo por el operando derecho y da un resultado real. x = y / z Mdulo o Residuo (%) Calcula el residuo de una divisin entera. x = y % z Divisin entera (\) Divide el operando izquierdo por el operando derecho. Los valores deben ser enteros y da un resultado tambin entero.
x = y \ z Potencia (^) Eleva un nmero x a una potencia y s = x ^ y Raz cuadrada (raiz2) Obtiene la raz cuadrada de un nmero x = raiz2(5)
EJEMPLOS: Supngase que unas variables a y b tienen valores 10 y 3, respectivamente. Se muestran a continuacin varias expresiones aritmticas en las que aparecen estas variables, acompaadas del resultado.
6 Extracto tomado de Fundamentals of Programming. NIIT. 24
Expresin Valor a + b 13 a b 7 a * b 30 a / b 3.33 a \ b 3 a % b 1 Para resolver una expresin aritmtica se deben seguir las siguientes reglas: Primero se resuelven las expresiones que se encuentran entre parntesis. Todas las sub expresiones entre parntesis se evalan de adentro hacia afuera, desde el parntesis ms interno hasta ir desaparecindolos todos. Se deben seguir ciertas reglas de prioridad que veremos ms adelante.
OPERADORES RELACIONALES Usted puede comparar dos operandos utilizando operadores relacionales. El resultado es un valor de verdad ya sea Cierto o Falso. Tenemos seis operadores relacionales. La siguiente tabla muestra dichos operadores: Operador Relacional Descripcin Ejemplo Explicacin = Compara los dos operandos y evala si son iguales x = y Devuelve verdadero si los valores son iguales y falso si no lo son <> Compara los dos operandos y evala si son diferentes x <> y Devuelve verdadero si los valores no son iguales y falso en caso contrario > Evala si el operando izquierdo es mayor que el derecho x > y Devuelve verdadero si el primero es mayor que el segundo y falso en caso contrario < Evala si el operando izquierdo es menor que el derecho x < y Devuelve verdadero si el primero es menor que el segundo y falso en caso contrario >= Evala si el operando izquierdo es mayor o igual que el derecho x >= y Devuelve verdadero si el primero es mayor o es igual que el segundo y falso en caso contrario <= Evala si el operando izquierdo es menor o igual que el derecho x <= y Devuelve verdadero si el primero es menor o es igual que el segundo y falso en caso contrario
25
EJEMPLO Supongamos que i,j y k son variables enteras con valores asignados 2,3 y 4 respectivamente. A continuacin se presentan varias expresiones lgicas en las que aparecen estas variables.
Expresin Resultado i <= j Verdadero (i + j)>k Verdadero k <> 4 Falso (j+k) > (i+5) Falso OPERADORES LGICOS O BOOLEANOS Los operadores lgicos son usados para combinar el resultado de expresiones conteniendo operadores relacionales. Existen tres operadores lgicos, que se describen en la siguiente tabla: Operador Lgico Descripcin Ejemplo AND Operador lgico AND x < 7 AND y > 100 OR Operador lgico OR x < 7 OR y > 100 NOT Operador Lgico de negacin NOT x = 10
JERARQUA DE OPERADORES El resultado de evaluar una expresin aritmtica es un nmero. Ahora bien, cuando aparecen dos o ms expresiones aritmticas, Cmo saber qu operaciones hay que realizar primero? Por ejemplo, si tenemos una expresin 3 + 7 * 4. Cul es la respuesta correcta?. Veamos: 1) 3 + 7 = 10 10 * 4 = 40. Si hacemos primero la suma el resultado ser 40. 2) 7 * 4 = 28 3) 3 + 28 = 31. Si hacemos el producto y el resultado lo sumamos con el primer trmino, la respuesta es 31. Sabemos que la matemtica es exacta, entonces Si hay una nica respuesta, cmo la obtenemos?. Veamos otro ejemplo. Sea la expresin: X2 + 1 / 2 26
Observe que esta expresin es totalmente diferente a esta otra (X2+1)/2, por lo que es importante codificar las expresiones aritmticas correctamente. Los parntesis nos indican un orden para realizar las operaciones. Pero no siempre nos darn los parntesis, por lo se cre la jerarqua de operadores. La jerarqua vara de lenguaje a lenguaje, por lo que es importante que cuando usted vaya a codificar en algn lenguaje, lo primero que debe revisar es la jerarqua que corresponde a ese lenguaje. Operador Nivel de prioridad ( ) Mayor signo Potencia Producto y divisin ( * , / ) Div ( \ ) , Mod Suma y resta ( + , - ) Concatenacin Relacionales Negacin Menor And Or
REGLAS DE PRIORIDAD Para resolver una expresin se deben seguir las siguientes reglas: Primero se resuelven las expresiones que se encuentran entre parntesis. Se procede aplicando la jerarqua de operadores. Al evaluar una expresin, si hay dos operadores con la misma jerarqua, se procede a evaluar de izquierda a derecha. Si hay expresiones relacionales, se resuelven primero parntesis, luego se encuentran los valores de verdad de las expresiones relacionales y por ltimo se aplica jerarqua de operadores lgicos. En caso de haber iguales, proceder de izquierda a derecha. El orden correcto a seguir, es primero resolver operadores aritmticos, luego los relacionales y por ltimo los lgicos. Si solo hay operadores aritmticos, el resultado es un nmero. Si hay operadores aritmticos y relacionales, el resultado es un valor booleano.
Esta ser la jerarqua que adoptaremos para resolver nuestros ejercicios de aqu en adelante. 27
ILUSTRACIONES EJEMPLOS DE OPERADORES ARITMTICOS. 1. Se tiene la siguiente expresin aritmtica: X = 3 + 4 * 6 / 3 * 2 6 * 8 / 3 * 4 + 5 * 3 / 2 * 2 Cul sera el valor que al final quedar almacenado en la variable X?
SOLUCIN Lo primero que hara el computador es recorrer la expresin buscando parntesis, luego expresiones de potencia (o sea el smbolo ^ para resolverlo de primero debido a que este es el operador de mayor peso en la jerarqua). Como no encuentra ninguno, entonces vuelve al principio de la expresin y comienza a buscar (y resolver a medida que los encuentre) multiplicaciones y divisiones. X = 3 + 4 * 6 / 3 * 2 6 * 8 / 3 * 4 + 5 * 3 / 2 * 2 X = 3 + 24 / 3 * 2 6 * 8 / 3 * 4 + 5 * 3 / 2 * 2 X = 3 + 8 * 2 6 * 8 / 3 * 4 + 5 * 3 / 2 * 2 X = 3 + 16 6 * 8 / 3 * 4 + 5 * 3 / 2 * 2 X = 3 + 16 48 / 3 * 4 + 5 * 3 / 2 * 2 X = 3 + 16 16 * 4 + 5 * 3 / 2 * 2 X = 3 + 16 64 + 5 * 3 / 2 * 2 X = 3 + 16 64 + 15 / 2 * 2 X = 3 + 16 - 64 + 7.5 * 2 X = 3 + 16 64 + 15 X = 19 64 + 15 X = -45 + 15 X = -30 Respuesta. Con lo cual hayamos que, luego de resuelta la expresin, el valor que quedar almacenado en la variable X ser el valor 30. Es muy importante que cuando tenga que resolver una expresin de estas, lo haga paso a paso, sin apresuramientos y ver como obtiene, sin mayores tropiezos, el mismo resultado que le dara al computador. 2. Se tiene la siguiente expresin aritmtica: A = 5 * 2 / 2 * 2 + 6 * 4 / 2 * 2 4 * 6 * 2 / 2 * 3 / 2 SOLUCIN Como en esta expresin no existen parntesis, operaciones de potenciacin ni signo, entonces se procede a resolver el siguiente nivel de la jerarqua, de izquierda a derecha (multiplicaciones y divisiones) A = 5 * 2 / 2 * 2 + 6 * 4 / 2 * 2 4 * 6 * 2 / 2 * 3 / 2 A = 10 / 2 * 2 + 6 * 4 / 2 * 2 4 * 6 * 2 / 2 * 3 / 2 28
EJEMPLOS DE EXPRESIONES CON OPERADORES RELACIONALES: 1. Resolver la siguiente expresin, para A=5 y B=16.
(A ^ 2) > (B * 2)
(A ^ 2) > (B * 2) El primer paso es sustituir los valores de A y B (5 ^ 2) > (16 * 2) Efectuamos los parntesis, primero el de ms a la izquierda 25 > (16 * 2) Resolvemos el parntesis de la derecha 25 > 32 Se evala la expresin relacional y el resultado es Falso Respuesta 2. Resolver la siguiente expresin, donde X=6 y B = 7. (X ^ 3 \ B) <= (X * 5 + B ^ 3 / 4) (X ^ 3 \ B) <= (X * 5 + B ^ 3 / 4) Sustituir los valores de X y B (6 ^ 3 \ 7) <= (6 * 5 + 7 ^ 3 / 4) Evaluando potencia en parntesis de ms a la izquierda (216 \ 7) <= (6 * 5 + 7 ^ 3 / 4) Resolviendo parntesis de ms a la izquierda, hacemos divisin entera 30 <= (6 * 5 + 7 ^ 3 / 4) Procediendo con el parntesis de la derecha, potencia tiene mayor prioridad 30 <= (6 * 5 +343 / 4) Producto y divisin real tienen misma prioridad, pero producto est ms a la izquierda 29
30 <= (30 +343 / 4) Luego sigue la divisin real 30 <= (30 +85.75) Efectuamos la suma 30 <= 115.75 Ya eliminamos los parntesis, procedemos a evaluar el operador relacional Verdadero Respuesta
3. Resolver la siguiente expresin: NOT((15 > = 7 ^ 2) and ( (43 8 * 2) mod 4 < > 3 * 2 div 2 ) or 3 > = 3 ) NOT((15 >= 7 ^ 2) and ( (43 8 * 2) mod 4 < > 3 * 2 div 2) or 3 >= 3)
Resolviendo parntesis de adentro hacia afuera y el de ms a la izquierda. Potencia tiene mayor prioridad. Not ((15 >= 49) and ((43 8 * 2) mod 4 < > 3 * 2 div 2 ) or 3 > = 3 )
Pasamos al parntesis de la derecha pues ya no hay operadores aritmticos en el primer parntesis Not ((15>=49) and ((43 16) mod 4 < > 3 * 2 div 2 ) or 3 > = 3 ) Efectuamos la resta para quitar el parntesis Not ((15>=49) and (27 mod 4 <> 3 * 2 div 2 ) or 3 > = 3 ) Seguimos con el producto Not ((15>=49) and (27 mod 4 <> 6 div 2 ) or 3 > = 3 ) Div y mod tienen igual prioridad, el de ms a la izquierda es mod. Not ((15>=49) and (3 <> 6 div 2 ) or 3 > = 3 ) Luego efectuamos el div Not ((15>=49) and (3 <> 3 ) or 3 > = 3 ) Ya no hay operadores aritmticos, seguimos con los relacionales, el parntesis de ms a la izquierda Not (Falso and (3 <> 3 ) or 3 > = 3 ) Luego con el de la derecha Not (Falso and Falso or 3 > = 3 ) Quitamos el ltimo operador relacional Not (Falso and Falso or Verdadero) And tiene mayor prioridad que Or Not(Falso or Verdadero) Efectuamos Or Not(Verdadero) Evaluamos Negacin False Respuesta
30
Las frmulas matemticas se deben escribir en formato lineal. Esto obliga al uso frecuente de parntesis que indiquen el orden de evaluacin correcto de las operaciones. Linealizar una expresin significa, convertir una expresin algebraica en expresin aritmtica o algortmica.
EJEMPLOS: Linealizar las siguientes expresiones: (no se olvide que linealizar significa escribir una expresin algebraica en una sola lnea).
1-
Sabemos que la divisin real se representa por / y que usamos parntesis para que se realicen las operaciones en el orden correcto. Respuesta: X = ( a + b / c ) / ( a / b + c )
2-
Recuerde que los parntesis ayudan a separar las expresiones para que se evalen en el orden correcto, debemos poner los que sean necesarios pero tratando de que no vayan ms de la cuenta. MINI CONTROL DE LECTURA
INVESTIGACIN INDIVIDUAL.
1. Qu son operadores alfanumricos. Escriba ejemplos. 2. Cules son los operadores asociativos y cules se usan en programacin.
ESCRITURA DE FRMULAS:
31
EJERCICIO PARTE I. Resuelva el siguiente crucigrama.
HORIZONTALES 1. Estudio crtico del razonamiento y tiene un valor terico y prctico. 3. Tipo de datos que contiene caracteres especiales, letras y nmeros. 5. Informacin caracterstica de una entidad que describe objetos con los que opera un programa 7. Tipos de datos que ocupan solamente una casilla de memoria. 8. Conectiva que es falsa solamente cuando dos premisas son falsas
VERTICALES 2. Proposicin afirmada que se basa en otras proposiciones o premisas. 3. Enunciados que no contienen otro enunciado como parte componente. 4. Palabra creada para nombrar los objetos y dems elementos que necesitamos declarar en un programa. 6. Tipo de datos verdadero o falso 9. Operador de negacin
1 2 3 4 5 6 7
8 9
PARTE II. En la siguiente sopa de letras, encontrar 11 trminos estudiados en este tema. Identifquelas y encirrelas. 32
A O P E R A D O R E S T S C O N T A D O R P S L I Q U I P O E P D S E I G A T M O D A E R N N N S H C U F M R P G O E A Z I G D L N A I J I A C C O N S T A N T E S L I Y L J A P S D I V E I O E M E O T O O L R Z N R F O R L I S L R P A I T B T T J O E I A X R O U I R S U S D J M E A
EJERCICIOS DE PRCTICA
PARTE I. EJERCICIOS DE TABLAS DE VERDAD Si A y B son enunciados verdaderos y X e Y son falsos, cul es el valor de verdad de los siguientes enunciados: 1. ~(A v X) 2. ~ A v ~ X 3. ~ B ^ ~ Y 4. A v ( X ^ Y ) 5. (A ^ X) v (B ^Y) 6. A ^ [X v (B ^ y)] 7. A v [X ^ (B v Y)] 8. X v [A ^ (Y v B)] 9. [(A^X) v ~B] ^ ~ [(A^ X) v ~B] 10. [(X^A) v ~Y] v ~ [ (X^A) v ~y]
PARTE II. EJERCICIOS SOBRE OPERADORES Y SU JERARQUA
Evale las siguientes expresiones y muestre el resultado. 1. Cul es el valor de la expresin 4 * 7 / 2 + 8 * 4 mod 3 - 5 ? a) -4 b) 11 c) 14
2. Not(S > 3 AND S <=10) OR (T >= 100 AND T < 200) , Para S = 5 y T = 70? a) Falso b) Verdadero 33
3. Cul es el resultado de la expresin : (c + 90) = 45 * 3 ^ 2 or 47 - c * b > 1000 para c = 2 y b = 3? a) Falso b) Verdadero
4. Al convertir la siguiente expresin matemtica en una expresin algortmica, escriba el resultado obtenido. (Linealizar).
5. Resolver las siguientes expresiones, paso a paso, aplicando jerarqua de operadores. Subraye el paso efectuado cada vez. a) 4 + 1 * 5 ^ 2 1 b) 193 MOD 19 DIV 3 * 127 c) (37 + 15 MOD 4)/SQR(5) d) TRUNC(3.2 * 4) DIV 3 e) 9 / 3 + 4 ^ 2 5 * 1 + 9 / -2 + 3 f) Not((8>9 and 5>5) or (not(4<2 and 5>8))) g) 4/2*3/6+6/2/1/5^2/4*2 h) TRUNC(83.7)+ROUND(83.7) (Investigue) i) ((12+3) DIV 2)/(8-(5-1)) j) x>3 and (y=4 or x+y <=z) Para x=1, y=4 y z=10. k) 17 / 2 + 3 ^ 2 ^ 2 2 * 2 / 2 l) 3 * A 4 * B / A ^ 2 Para A = 5, B = 2 m) ((( B + C ) / 2 * A + 10 ) * 3 * B ) 6. Si A = 5, B = 3, C =2
Represente las siguientes expresiones algebraicas en expresiones algortmicas: n) V= 1 r 2 h 3 o) X = 6(x + y) p)
q)
Si x = 1, y = 4, z = 10, pi = 3.1416 y e = 2.7183, evaluar las expresiones: r) 3 * x + 2 * y 1 / 2 * z s) ( y ^ ( 2 * y ) 6 * ( z / 10 ) ) / 2 t) not ( 2 * x = y / 2 or ( pi e ) * z > y ) = not y / 2 = 2 * x and not y < ( pi e ) * z 34
Escriba expresiones booleanas que determinen si: (Investigue si es necesario) a) El valor de una variable entera i se encuentra en el rango de 1 a 100, ambos inclusive. b) Cualquiera de los valores de dos variables enteras j y k, una es un mltiplo de la otra
c) Usando cualesquiera variables adicionales necesarias, escriba una secuencia de sentencias de asignacin que permute los valores de dos variables reales x e y. d) Si X, Y y Z son variables enteras, escriba sentencias de asignacin para asignar su suma, producto y promedio a variables llamadas de la misma forma.
TERMINOLOGA APLICADA
Enunciado compuesto: es el que se compone de varios enunciados simples. Enunciado Simple: es el que no contiene otro enunciado como parte componente. Expresiones: son combinaciones de constantes, variables, smbolos de operacin, parntesis y nombres de funciones especiales. Identificadores: son palabras creadas por los programadores para dar nombre a los objetos y dems elementos que necesitamos declarar en un programa: variables, constantes, tipos, estructuras de datos, archivos, subprogramas, etc. Lgica: es la capacidad de pensar racionalmente acerca de soluciones alternativas y los resultados de aplicarlas, y por lo tanto, de hacer elecciones inteligentes. Premisas: son proposiciones afirmadas como fundamento o razones para aceptar una conclusin. Tipos de datos simples: son los que ocupan slo una casilla de memoria, por lo tanto una variable simple hace referencia a un nico valor a la vez.
BIBLIOGRAFA Pascal. Introduccin. Jim Welsh y John Elder. Editorial Prentice Hall. Mxico. Metodologa de la Programacin. Diagramas de Flujo, algoritmos y programacin. Luis Joyanes Aguilar. Editorial Mc Graw Hill. Mxico. Fundamentos de programacin. Algoritmos y estructuras de datos. Luis Joyanes Aguilar. Editorial Mc Graw Hill. Mxico. Introduccin a la Programacin. Ramn A. Mata-Toledo y Pauline K. Cushman. Editorial Mc Graw Hill. Mxico.
35
1.3 ALGORITMOS Y DIAGRAMAS DE FLUJO 1.3.1 Introduccin a los algoritmos. CONCEPTO DE ALGORITMO: Es un conjunto de pasos secuenciales y ordenados que permiten lograr un objetivo. Que sean pasos secuenciales significa que deben ser ejecutados uno despus de otro y que sean pasos ordenados quiere decir que deben llevar un orden casi obligatorio (u obligatorio en la mayora de los casos). Como puede notar el algoritmo permite lograr un objetivo. O sea que la clave para hacer buenos algoritmos y llegar a la solucin de un problema es tener claro el objetivo y no perderlo nunca de vista. 7
Debe ser independiente de la sintaxis de un lenguaje de programacin puesto que es la concrecin de un plan y un medio para comunicar ideas entre personas. Lo que s es importante notar, es que de un algoritmo sale el cdigo en un lenguaje de programacin. Por cada lnea del algoritmo se corresponden una o varias lneas de cdigo en un lenguaje de programacin. 8
METODOLOGA A SEGUIR: 1. Establecer el problema. 2. Analizar el problema. Para ello nos hacemos las siguientes preguntas: Qu informacin tenemos? Qu necesitamos conocer? Qu queremos obtener? 3. Disear el algoritmo para su solucin. 4. Codificar.
7 Tomado de webdelprofesor.ula.ve/ingenieria/eladio/Material/UNIDAD_III.pdf 8 Tomado de http://www.cyta.com.ar/biblioteca/bddoc/bdlibros/construccion_programas/programar.pdf Partes de un Algoritmo Datos de Entrada Proceso Datos de salida 36
CARACTERSTICAS QUE DEBEN DE CUMPLIR LOS ALGORITMOS OBLIGATORIAMENTE: Un algoritmo debe resolver el problema para el que fue formulado. Lgicamente no sirve un algoritmo que no resuelve ese problema. En el caso de los programadores, a veces crean algoritmos que resuelven problemas diferentes al planteado. Los algoritmos deben mostrar claramente cules son los datos iniciales y cules son los resultados. Los algoritmos son independientes del computador. Los algoritmos se escriben para poder ser utilizados en cualquier mquina. Los algoritmos deben de ser precisos. Los resultados de los clculos deben de ser exactos, de manera rigurosa. No es vlido un algoritmo que slo aproxime la solucin. Debe constar de pasos claros, precisos y no ambiguos. Los algoritmos deben de ser finitos. Deben alcanzar la solucin correcta en un tiempo finito. No es un algoritmo vlido aquel que produce situaciones en las que el algoritmo no termina. Los algoritmos deben de poder repetirse. Deben de permitir su ejecucin las veces que sea necesario. No son vlidos los que tras ejecutarse una vez, ya no pueden volver a hacerlo por la razn que sea. Debe tener la capacidad de resolver el problema aun cuando cambiemos los datos de entrada.
CARACTERSTICAS ACONSEJABLES PARA LOS ALGORITMOS 9
Validez. Un algoritmo es vlido si carece de errores. Un algoritmo puede resolver el problema para el que se plante y sin embargo no ser vlido debido a que posee errores. Eficiencia. Un algoritmo es eficiente si obtiene la solucin al problema en poco tiempo. No lo es si es lento en obtener el resultado. ptimo. Un algoritmo es ptimo si es el ms eficiente posible y no contiene errores. La bsqueda de este algoritmo es el objetivo prioritario del programador. No siempre podemos garantizar que el algoritmo hallado es el ptimo, a veces s.
Aunque no existe una nica forma de representar un algoritmo, la estructura general de ste debera ser como la siguiente: Algoritmo <nombre_del_algoritmo> Inicio definicin de constantes declaracin de variables Sentencia 1 Sentencia 2 . . . Sentencia n Fin
9 Tomado de www.conocimientosweb.net/.../article1382.html ESTRUCTURA GENERAL DE UN ALGORITMO 37
REPRESENTACIN DE ENTRADAS Y SALIDAS EN UN ALGORITMO 10
ENTRADAS Entradas son los datos proporcionados al computador para procesar y generar la salida. Para que los resultados sean correctos, se tienen que dar los datos de entrada correctos. La entrada se puede representar de varias formas. Flujogramas y pseudocdigo tienen diferentes mtodos de representar la instruccin de aceptar una entrada. Algunos ejemplos de representacin de entradas son los siguientes:
En un Flujograma, la instruccin es representada usando el smbolo llamado Entrada de datos. Existe un smbolo para entrada por tarjeta perforada que ya est en desuso por haber desaparecido las mismas. Los smbolos utilizados en flujogramas para representar las entradas son los siguientes: En un pseudocdigo, la instruccin se da a travs de teclado. Existen varias formas de representar el pseudocdigo. Por ejemplo, para leer la edad de un estudiante en una variable llamada edad, se puede hacer de las siguientes formas:
SALIDAS Un computador requiere entradas para generar las salidas. Despus de aceptar la entrada, el computador la procesa y luego despliega el resultado. Este resultado es llamado la salida.
10 Extracto tomado de Fundamentals of Programming. NIIT.
Entrada de datos
Entrada manual
Entrada por tarjeta perforada Begin . Read (edad) Accept edad . End 38
REPRESENTACIN DE LA SALIDA: Al igual que las entradas, hay diferentes formas de representar la salida. En un Flujograma, se utiliza el smbolo desplegar. Los smbolos utilizados en flujogramas para representar las salidas son los siguientes:
Salida de datos
Salida a papel (documento)
Salida a pantalla
En pseudocdigo, la instruccin desplegar salida es representada usando salida a pantalla o a papel.
Begin
Display Digite el valor del area: Accept edad
Print (area) Display area End
MINI CONTROL DE LECTURA
INVESTIGUE: Ejemplos de dispositivos de entrada Ejemplos de dispositivos de salida
Salida a papel Salida a pantalla 39
1. EJERCICIO DE APLICACIN A continuacin se le presenta una lista de dispositivos de E/S. Clasifquelos en el cuadro que se muestra abajo, segn corresponde. Speakers Teclado VDUs Mouse Touch Screen Lpiz ptico Joystick
DISPOSITIVOS DE ENTRADA DISPOSITIVOS DE SALIDA
1.3.2 REPRESENTACIN DE ALGORITMOS
INVESTIGUE: 1. Diferencia entre algoritmo y programa. 2. En qu consiste la documentacin de los algoritmos, importancia de la documentacin y los lineamientos para documentar un algoritmo. Elabore un reporte en hojas de papel bond tamao carta.
COMENTARIOS EN UN ALGORITMO Los comentarios en un algoritmo se usan como una referencia para explicar la lgica del mismo. Es una forma de documentar el proceso, estos no tienen efecto en el cdigo del programa (el computador los ignora), sino que sirven para que el programador comprenda mejor lo que se est representando en el algoritmo. Los comentarios se pueden representar ya sea en una sola lnea o en varias lneas. Para representar comentarios en una sola lnea, se utilizan dos barras: //Este es un comentario. Para representar un comentario en varias lneas se utiliza la siguiente simbologa: /* Este es un comentario en varias Lneas */
40
NOTACIONES PARA EL DISEO DE ALGORITMOS Los algoritmos pueden ser representados en diferentes formas, entre las cuales tenemos:
Representacin en lenguaje narrado Es la serie de pasos que seguimos en nuestra vida diaria para realizar las diferentes tareas y actividades comunes, y que los hacemos casi sin darnos cuenta de que estamos siguiendo una metodologa para resolverlos. En otras palabras hacemos algoritmos narrados cuando enumeramos cierta informacin en una secuencia de pasos en forma ordenada.
EJEMPLOS: Disear algoritmos narrados para los siguientes casos:
1) Cambiar una llanta a un carro. Inicio. Traer gato. Levantar el carro con el gato. Aflojar tornillos de las llantas. Sacar los tornillos de las llantas. Quitar la llanta. Poner la llanta de repuesto. Poner los tornillos. Apretar los tornillos. Bajar el gato. Fin. Lenguaje Narrado Flujogramas Diagramas Nassi- Schneiderman Tablas de decisin Pseudocdigo 41
2) Determinar el mayor de tres nmeros enteros.
Pasos del algoritmo: Inicio 1.- Comparar el primero y el segundo entero, deduciendo cul es el mayor. 2.- Comparar el mayor anterior con el tercero y deducir cul es el mayor. Este ser el resultado. Fin Los pasos anteriores se pueden descomponer en otros pasos ms simples, lo que se denomina refinamiento del algoritmo. 1. Inicio 2.- Obtener el primer nmero (entrada), denominado NUM1. 3.- Obtener el segundo nmero (entrada), denominado NUM2. 4.- Comparar NUM1 con NUM2 y seleccionar el mayor; si los dos enteros son iguales, seleccionar NUM1. Llamar a este nmero MAYOR. 5.- Obtener el tercer nmero (entrada), y se denomina NUM3. 6.- Comparar MAYOR con NUM3 y seleccionar el mayor; si los dos enteros son iguales, seleccionar el MAYOR. Denominar a este nmero MAYOR. 7.- Presentar el valor MAYOR (salida). 8.- Fin. 3) Receta para hacer huevos picados Inicio 1. Se coloca aceite o margarina en la cacerola 2. Se pica cebolla, chile y tomate 3. Se ponen a frer, con un poco de sal 4. Cuando ya estn fritos, se echan los huevos 5. Se bate y se deja cocer 6. Se sirve caliente en un plato Fin
EJERCICIOS PRCTICOS
Elabore un algoritmo narrado para los casos siguientes:
1. Cambiar un vidrio roto de una ventana 2. Preparar una taza de te 3. Hacer palomitas de maz 4. Poner la mesa para la comida 5. Ir al cine
42
Representacin en pseudocdigo PSEUDO: Falso, imitacin CODIGO: instrucciones escritas en un lenguaje de programacin El pseudocdigo no es propiamente un cdigo sino un tipo de descripcin que incluye un poco de lenguaje natural y de instrucciones estandarizadas para los lenguajes de programacin. Podemos decir que es un lenguaje intermedio entre el lenguaje natural (nuestra forma normal de expresarnos) y cualquier lenguaje de programacin especfico, como por ejemplo C, Fortran, Pascal, etc. Es una mezcla de lenguaje natural, smbolos, trminos y otras caractersticas comnmente utilizadas en los lenguajes de programacin. Adems es una tcnica para diseo de programas que permite definir las estructuras de datos, las operaciones que se aplicarn a los datos y la lgica que tendr el programa de computadora para solucionar un determinado problema. No existe una notacin formal o estndar de pseudocdigo, sino que, cada programador puede utilizar la suya propia. Usted puede detectar errores cuando escribe pseudocdigo porque cada paso del pseudocdigo puede ser revisado durante la creacin. Se concibi para superar las dos principales desventajas de los flujogramas: requiere mucho trabajo para elaborarlo y que no se puede modificar tan fcilmente sin tener que hacer un nuevo redibujo. VENTAJAS DEL PSEUDOCDIGO. Es ms fcil y rpido de elaborar en comparacin con el Flujograma. Es ms fcil detectar errores y hacer cambios. No necesita ser reescrito si se hacen cambios, ya que cada paso es independiente y puede ser modificado sin alterar los otros pasos. Es fcil su traduccin a cualquier lenguaje de programacin. Esto no se logra con los flujogramas y tablas de decisin, ya que el formato usado por el pseudocdigo es similar a un programa. Ambos contienen un grupo de instrucciones secuenciales usando un grupo de instrucciones definidas. Es un lenguaje algortmico similar al espaol u otro idioma Es una imitacin de las instrucciones reales para una computadora Permite representar en forma fcil operaciones repetitivas complejas. Al seguir las reglas se pueden observar claramente los niveles que tiene cada operacin.
DESVENTAJAS DEL PSEUDOCDIGO. No provee una representacin grfica del algoritmo, por lo que puede ser difcil entender la lgica compleja de un pseudocdigo. Si el pseudocdigo contiene demasiadas condiciones anidadas puede ser difcil de entender.
El pseudocdigo puede ser diseado en espaol o en ingls. Cuando se disea en ingls, se tiene un grupo de instrucciones ms parecidas a un lenguaje de programacin. Entre las instrucciones utilizadas en el pseudocdigo ingls tenemos las siguientes: Begin . End/ Start. Stop. Estas instrucciones son usadas para iniciar y finalizar. 43
Accept, read, input: Estas instrucciones son usadas para obtener una entrada de un usuario. Display, write, print: Estas son usadas para presentar un resultado o una salida. If else: Son usadas para hacer decisiones.
EJEMPLO Elaborar el pseudocdigo para encontrar la superficie de un crculo para un radio cualquiera. Begin Var Pi, S, R : Real Const Pi 3.1416 read ( R ) S Pi * R ^ 2 print ( S ) End
Las fases de un algoritmo pseudocodificado se utilizarn para resolver problemas en el siguiente tema.
MINI CONTROL DE LECTURA
INVESTIGACIN INDIVIDUAL: Cules son los smbolos utilizados en los diagramas de flujo y la explicacin de su uso. Cules son las reglas para la construccin de diagramas de flujo?. El ANSI (American National Standars Institute), recomienda un nmero de reglas que necesitan seguirse para construir los flujogramas. Compare Fase de inicio Declaracin de variables o constantes Inicializacin de variables o constantes (Asignacin) Entradas Clculos Salidas Fases de un Algoritmo Pseudocodificado Fase de inicio Declaracin de variables/Constantes Inicializacin de variables/constantes Fase de lectura Fase de Clculos Fase de Salida Fase de Fin 44
ambas reglas y establezca reglas generales. Cules son las ventajas y desventajas de los flujogramas?. Elabore un reporte en su cuaderno con lo investigado.
PARA ANALIZAR Indique si las siguientes afirmaciones son verdaderas o falsas. Escriba V o F.
Afirmacin V F 1. La documentacin slo sirve para resolver problemas en otros procesos similares. 2. Los comentarios sirven para mejorar la legibilidad de los programas y ayudan a entender mejor el pseudocdigo
3. Estandarizar la documentacin nos da la ventaja de que ayuda a determinar si todos los requerimientos han sido encontrados o no.
4. El pseudocdigo es una mezcla de lenguaje natural, smbolos, trminos y otras caractersticas comnmente utilizadas en los lenguajes de programacin.
5. Display, Read e Input son usadas para introducir datos de entrada en el pseudocdigo
Continuando con el estudio de algoritmos, estudiaremos la representacin en Diagramas de Flujo o llamados tambin Flujogramas. FLUJOGRAMAS Son la representacin grfica de la secuencia de actividades de un proceso en los algoritmos. Consiste en smbolos para representar los pasos de un algoritmo. Cada smbolo tiene un significado que representa una accin a ser seguida, correspondiente a un paso del algoritmo. Cada smbolo se conecta a travs de flechas, denominadas lneas de flujo, que indican el orden en que los pasos deben ser ejecutados. Puesto que un Flujograma es la representacin grfica de un algoritmo, tambin debe tener: ENTRADA PROCESO SALIDA. Para comprender mejor los diagramas de flujo, se tiene que respetar las reglas de construccin. Al realizar una prueba manual, se debe tomar un conjunto de datos significativos de entrada y comenzar a recorrer el Flujograma de arriba hacia abajo y de izquierda a derecha; segn sea la forma representada, para ver cmo se comporta el Flujograma y si los resultados obtenidos son correctos y coherentes. DISEO DE FLUJOGRAMAS 45
EJERCICIOS DE APLICACIN
EJEMPLO 1. En ejemplos anteriores, diseamos un pseudocdigo para encontrar la superficie de un crculo para un radio cualquiera. El Flujograma que representa a dicho ejemplo es el siguiente:
EJEMPLO 2. Leer dos nmeros y calcular el producto de dichos nmeros, desplegar el resultado.
BEGIN Var PI, S, R:REAL Const PI 3.1416 Read R S PI * R ^ 2 END S BEGIN Var N1,N2,Result: INTEGER Read N1,N2 Result N1 * N2 Result END 46
EJERCICIOS PRCTICOS
1. Dibuje un Flujograma a partir del siguiente pseudocdigo: Begin Var sueldo, nuesueldo,aum: real read (sueldo) aum sueldo * 0.10 nuesueldo sueldo + aum print (nuesueldo) End
2. Dado el siguiente pseudocdigo, corrija los errores que encuentre. Luego elabore el respectivo Flujograma. Calcular el salario neto de un trabajador en funcin del nmero de horas trabajadas, precio de la hora de trabajo y descuentos fijos al sueldo bruto en concepto de impuestos (20%) Begin Var horas: entero precio,sbruto, impues, sneto:real read(horas, precio) sbruto horas * precio impues sbruto * 0.20 sneto sbruto - impues print (sneto) End
3. Indique cules de los siguientes diseos son vlidos segn las reglas de construccin de flujogramas y si no son vlidos, analice porqu.
Es vlido?. Si __ No __ Es vlido?. Si __ No __ 47
Es vlido?. Si __ No __
4. Traslade el nmero de la respuesta correcta al espacio de en medio segn corresponda. 1. Algoritmo Son la representacin grfica de la secuencia de actividades de un proceso en los algoritmos 2. Flujogramas Entrada, Proceso, Salida 3. Pseudocdigo Validez, Eficiencia, Preciso, finito 4. Caractersticas del algoritmo Es un conjunto de pasos secuenciales y ordenados que permiten lograr un objetivo 5. Elementos del algoritmo Es una mezcla de lenguaje natural, smbolos, trminos y otras caractersticas comnmente utilizadas en los lenguajes de programacin
5. Elabore pseudocdigo y Flujograma para resolver el problema de hallar la suma, producto y media aritmtica de tres nmeros.
TABLAS DE DECISIN 11
Representan algoritmos que tienen como propsito representar decisiones complejas. Los flujogramas que representan algoritmos complejos, tienen una gran cantidad de ramificaciones y son difciles de crear y de entender. En tales casos, las tablas de decisin se usan como una alternativa para simplificar las tareas de decisin que estn incluidas dentro de un proceso.
11 Tomado de Fundamentos de Programacin. Algoritmos y Estructuras de datos. 2 edicin. Luis Joyanes Aguilar.
INVESTIGACIN INDIVIDUAL. Cules son las ventajas de las tablas de decisin? Elabore ms ejemplos del uso de tablas de decisin. Cul es la simbologa que se usa para representar los diagramas Nassi Schneiderman?. Elabore el resumen en su cuaderno. 48
Esta herramienta sencilla se basa en la construccin de una tabla en la que se recojan las condiciones que se pueden dar en el problema y las acciones que se deben tomar cuando se cumplan las condiciones. Una tabla de decisin se representa en un cuadro de cuatro bloques. A la izquierda de la tabla se tiene la matriz y a la derecha las entradas. La matriz de condiciones recoge las condiciones de todo o parte del problema; dicho en otras palabras, las preguntas que deben probarse para alcanzar una decisin. La matriz de acciones refleja todas o parte de las acciones del problema a realizar o las acciones que han de emprenderse cuando se presenta un conjunto dado de condiciones.
La entrada de las condiciones (combinacin de las posibles condiciones) permiten reflejar en las tablas de decisin (TD) si se cumple o no tal condicin o si es indiferente, es decir, sea cual sea su condicin de entrada, no tiene influencia sobre la accin que debera efectuarse. La entrada de las acciones (decisin) indica efectuar la accin correspondiente a un conjunto de condiciones cumplimentadas. REGLAS DE DECISIN: Cada combinacin de entrada de condiciones y su correspondiente entrada de acciones constituyen una relacin denominada regla de decisin. Existen tantas reglas como pares distintos de entradas condiciones/acciones. El nmero de reglas de decisin debe cubrir todos los casos posibles, sin repeticiones ni omisiones. FORMAS DE CONSTRUCCIN: El nmero de reglas de decisin utiliza la frmula 2 n , donde n es el nmero de condiciones posibles. Matriz de condiciones Entrada de condiciones (Situacin) Matriz de acciones Entrada de acciones (Decisin) 49
A una condicin de entrada slo le corresponde una decisin o condicin de salida. A una condicin de salida le pueden corresponder varias condiciones de entrada. Para que una TD est bien construida, es necesario que en cada momento sea cierta una y slo una de las situaciones Cada regla de decisin (columna) es una estructura si- entonces (si se cumple la condicin de entrada, entonces realizar tal o tales acciones) del tipo booleano de condiciones y se le pueden aplicar las leyes del lgebra de Boole. La lista de condiciones puede ponerse en cualquier orden. La lista de acciones debe ponerse en el orden en que se tengan que ejecutar. Especifique un nombre apropiado para la tabla, describiendo su objetivo.
EJEMPLO: Considere el ejemplo de desarrollar una tabla de decisin para representar la eleccin de un candidato para aplicar al puesto de recepcionista en Lycos SA de CV. Los criterios para seleccionar al candidato son los siguientes: Sexo femenino Experiencia en trabajos similares de ms de dos aos Soltera.
En este ejemplo la matriz de condiciones especifica los criterios de eleccin para el puesto de recepcionista. Condiciones aplicadas contiene dos alternativas de condicin: Y para satisfactorio y N para insatisfactorio. (Si cumple o no cumple la condicin). Como son tres condiciones, tenemos 2 3 lo cual nos da 8 combinaciones posibles. Para completar la tabla en una manera sencilla, se va dividiendo por la mitad las dos posibles alternativas, la condicin 1 que es sexo femenino, tendr 4Y y 4N. Luego la condicin 2, experiencia, tendr para las primeras 4Y, 2Y y 2N y para las otras 4, tambin 2Y y 2N. La tercera condicin tendr una alternativa de cada una. La tabla de decisin para representar el ejemplo es la siguiente: Criterios para elegir candidatos a la plaza de recepcionista en Lycos SA de CV. Matriz de Condiciones Condiciones Aplicadas (Entrada de condiciones) El candidato es sexo femenino Y Y Y Y N N N N Ms de dos aos de experiencia Y Y N N Y Y N N Estado marital es soltera Y N Y N Y N Y N Matriz de Acciones Acciones tomadas (Entrada de acciones) Aceptar la aplicacin Y N N N N N N N Para encontrar la matriz de acciones resultante, aplicamos tabla AND. Vemos que solamente cuando las tres condiciones se cumplen, la aplicacin es aceptada. 50
Ventajas: 12
Son tiles en los casos en que se necesite representar condiciones complejas. Son ms fciles de documentar que los flujogramas. Si las condiciones son complejas, se representan en una pgina mientras que los flujogramas podran extenderse en muchas pginas reduciendo la legibilidad.
DIAGRAMAS NASSI SCHNEIDERMAN (N-S) Estos diagramas tambin conocidos como diagramas de Chapin o Diagramas de Caja, son como un diagrama de flujo en el que se omiten las flechas de unin y tienen forma de cajas en forma contigua. Las acciones sucesivas se escriben en cajas y similar a los flujogramas, se pueden escribir diferentes acciones en una caja.
EJEMPLO: Considere el ejemplo de calcular la superficie de un crculo para un radio cualquiera. Hasta ahora hemos elaborado el pseudocdigo y Flujograma. Elaboraremos el respectivo diagrama N-S:
Inicio Var Real: Pi, S, R Const Pi 3.1416 Leer ( R ) S Pi * R ^ 2 Escribir ( S ) Fin
EJERCICIOS PRCTICOS 1. Dibuje un diagrama N-S a partir del siguiente pseudocdigo:
Begin Var sueldo, nuesueldo, aum: real read (sueldo) aum sueldo * 0.10 nuesueldo sueldo + aum print (nuesueldo) End
2. Elabore una tabla de decisin para representar el siguiente enunciado:
12 Tomado de Fundamentals of Programming. NIIT. 51
En la empresa El Encanto S.A. se tienen las siguientes condiciones para otorgar un descuento: Si el cliente compra $10000 o ms en mercanca entonces se le otorgar un 20% de descuento. Si el cliente compra ms de $5000 y menos de $10000 en mercanca entonces se le otorgar un 10% de descuento. Si el cliente compra menos de $5000 en mercanca entonces no se le otorgar descuento alguno 3. Dibuje un diagrama N-S para el ejercicio de hallar la suma, producto y media aritmtica de tres nmeros. 4. Dibuje un diagrama N-S para el caso de convertir una cantidad dada en horas, minutos y segundos a segundos.
TERMINOLOGA APLICADA Algoritmo: es un mtodo para resolver un problema mediante una serie de pasos definidos, precisos y finitos. Diagrama Nassi Schneiderman: El diagrama N-S o tambin conocido como diagrama de Chapin es una tcnica de especificacin de algoritmos que combina la descripcin textual, propia del pseudocdigo, con la representacin grfica del diagrama de flujo. Flujograma: representa la esquematizacin grfica de un algoritmo, el cual muestra grficamente los pasos o procesos a seguir para alcanzar la solucin de un problema. Pseudocdigo: es un lenguaje intermedio entre nuestro lenguaje y el de programacin, debido a que quien lo utiliza se gua por una serie de normas pero sin llegar a usar una estructura tan rgida como la del lenguaje de programacin. Tabla de decisin: es una herramienta que sirve para representar de manera ms fcil la lgica de un problema cuando est es ms o menos complicada. Para ello se trata de identificar en el problema las acciones que hay que ejecutar y las condiciones que se tienen que cumplir para ejecutar esas acciones. Las acciones normalmente se identifican a travs de verbos, y las condiciones van a ser las condicionales.
BIBLIOGRAFA Fundamentos de Programacin. Luis Joyanes Aguilar. Editorial Mc Graw Hill. Mxico Metodologa de la Programacin. Diagramas de Flujo, algoritmos y programacin. Luis Joyanes Aguilar. Editorial Mc Graw Hill. Mxico. Fundamentos de Programacin. Libro de Problemas. Luis Joyanes Aguilar, Luis Rodrguez Baena y Matilde Fernndez Azuela. Editorial Mc Graw Hill. Espaa. Fundamentals of Programming. Student Guide. NIIT. India. 52
TEMA 2. ESTRUCTURAS BSICAS DE PROGRAMACIN CONCEPTOS. 2.1 METODOLOGA PARA LA SOLUCIN DE PROBLEMAS Siempre que vamos a resolver un problema nos enfrentamos con la dificultad de tener que encontrar una solucin. Para ello, tenemos que tener bien claro cul es el problema que queremos resolver para luego determinar la solucin que sea ms adecuada. Esto quiere decir que debemos determinar el objetivo o propsito de querer resolver el problema. Un problema es una situacin real, bajo ciertas condiciones y/o restricciones, que se necesita transformar, y conocer su comportamiento al variar algunos de sus componentes.
FASES DE RESOLUCIN DE UN PROBLEMA PARA EL DISEO DE UN PROGRAMA:
INVESTIGACIN INDIVIDUAL.
Investigue cada una de las fases del desarrollo de un programa y explquelos. Elabore un reporte escrito.
FASE DE RESOLUCIN DE UN PROBLEMA FASE DE IMPLEMENTACIN EN LA COMPUTADORA CODIFICACIN DEL ALGORITMO EN PROGRAMA COMPILACIN Y EJECUCIN DEL PROGRAMA VERIFICACIN Y DEPURACIN DEL PROGRAMA DOCUMENTACIN Y MANTENIMIENTO DEL PROGRAMA ANLISIS DEL PROBLEMA DISEO DEL ALGORITMO VERIFICACIN MANUAL DEL ALGORITMO FASE DE RESOLUCIN DE UN PROBLEMA 53
2.2 TIPOS DE ESTRUCTURAS BSICAS.
Un problema se puede dividir en acciones elementales o instrucciones, usando un nmero limitado de estructuras de control (bsicas) y sus combinaciones que pueden servir para resolver dicho problema. Las estructuras de control de un lenguaje de programacin son mtodos de especificar el orden en que las instrucciones de un algoritmo se ejecutarn. Estas son por consiguiente fundamentales en los lenguajes de programacin y en los diseos de algoritmos. Se les llama de control debido a que controlan el modo de ejecucin del programa. 13
Las Estructuras Bsicas pueden ser: Secuenciales: cuando una instruccin del programa sigue a otra. Constan de Entrada, Proceso y Salida. Seleccin o decisin: acciones en las que la ejecucin de alguna depender de que se cumplan una o varias condiciones. Pueden ser simples, dobles, compuestas y mltiples. Repeticin o Iteracin: cuando un proceso se repite en tanto cierta condicin sea establecida para finalizar ese proceso. Estas pueden ser: Mientras (While), Desde/Para (For) y Repetir (Repeat)
2.3 ESTRUCTURAS SECUENCIALES. Son problemas en los que, para su solucin se emplea una serie de acciones ejecutadas invariablemente en un orden secuencial. Las tareas suceden de tal modo que la salida de una es la entrada de la siguiente y as sucesivamente hasta el fin del proceso. Dentro de este tipo podemos encontrar operaciones de inicio/fin, inicializacin de variables, operaciones de asignacin, clculo, sumarizacin, etc. Este tipo de estructura se basa en las 5 fases de que consta todo algoritmo o programa: Definicin de variables (Declaracin) Inicializacin de variables. Lectura de datos Clculos Salida
REPRESENTACIN GRFICA: PSEUDOCDIGO
Begin Read ( ) Accin 1 Accin 2
Accin N print ( ) End
FLUJOGRAMA
DIAGRAMA N-S Begin Read ( ) Accin 1 Accin 2 Accin N Print ( ) End
13 Tomado de www.scribd.com/doc/3863819/apuntesprog ACCIN 1 ACCIN 2 ACCIN N 54
EJEMPLOS: 1. En una tienda se ofrece un descuento del 15% sobre el total de la compra y un cliente desea saber cunto deber pagar finalmente por su compra.
Resolveremos el ejercicio, aplicando los pasos de la metodologa de la solucin de un problema: DEFINICIN DEL PROBLEMA: Obtener la cantidad de dinero que tendr que pagar el cliente, si la tienda ofrece un 15% de descuento sobre el total de la compra.
ANLISIS DEL PROBLEMA: Para obtener el descuento es necesario conocer la cantidad total de la compra, y sobre sta aplicar el 15%. Posteriormente, este descuento deber ser sustrado de la cantidad total de la compra para as obtener la cantidad con descuento, que es la que el cliente pagar.
Pasos que se deben realizar: Salidas: Cantidad a pagar Entradas: Total de la compra
Datos adicionales: el descuento equivale al 15% sobre el total de la compra. Aplicar las siguientes frmulas: Descuento = total de la compra * 0.15 Cantidad a pagar = total de la compra descuento
Seccin de Declaraciones: Var Real: CP, TC, D Donde CP ser Cantidad a pagar TC ser total de la compra y D ser el descuento
DISEO DEL ALGORITMO: 55
PRUEBA MANUAL DEL ALGORITMO ENTRADA PROCESO SALIDA TC CP 100 D = TC * 0.15 D = 100 * 0.15 = 15 CP = TC D CP = 100 15 = 85
85
2. Un vendedor recibe un sueldo base ms un 10% extra por comisin de sus ventas. El vendedor desea saber cunto dinero obtendr por concepto de comisiones por las tres ventas que realiza en el mes y el total que recibir en el mes tomando en cuenta su sueldo base y sus comisiones.
DEFINICIN DEL PROBLEMA: PSEUDOCDIGO Begin Read (TC) D TC * 0.15 CP TC D Print (CP) End
FLUJOGRAMA
N S
Begin Read (TC) D TC * 0.15 CP TC - D Print (CP) End
Begin TC D TC * 0.15 CP TC - D CP End 56
Obtener la cantidad de dinero que recibir un vendedor por concepto de comisiones por tres ventas realizadas en el mes, y el total que recibir en el mes por sueldo y comisin. Se sabe que el vendedor recibe un sueldo base y un 10% extra por comisiones de todas sus ventas.
ANLISIS DEL PROBLEMA: Para obtener la comisin y la cantidad que recibir el vendedor, se necesita realizar lo siguiente: Para obtener la cantidad total de ventas hay que conocer la cantidad de cada una de sus ventas en el mes y sumarlas. Posteriormente, sobre el total de las ventas se debe aplicar el 10% para obtener la comisin. Por ltimo, para obtener el total de dinero que debe recibir el vendedor hay que sumarle al sueldo base la comisin.
Pasos que se deben realizar: Salidas: Cantidad a recibir por comisin, cantidad total a recibir Entradas: cantidad de venta 1, 2 y 3, sueldo base Datos adicionales: el descuento de 10% se aplicar sobre el total de las ventas del mes
Aplicar las siguientes frmulas: Total de las ventas = Venta 1 + Venta 2 + Venta 3 Comisin = Total de las ventas * 0.10 Total a recibir = Sueldo base + Comisin
Seccin de Declaraciones: Var Real: TV, V1,V2,V3,TR,C, SB
Donde SB ser Salario Base TV ser Total de las Ventas V1,V2 y V3 ser el valor de las tres ventas C ser la comisin TR ser el total a recibir
DISEO DEL ALGORITMO
57
PRUEBA MANUAL DEL ALGORITMO
ENTRADA PROCESO SALIDA SB 1500 TR V1 100 V2 150 V3 250 TV = V1+V2+V3 = 100 + 150 + 250 = 500 C = TV * 0.1 = 500 * 0.1 = 50 TR = SB + C = 1500 + 50 = 1550
1550
EJERCICIOS PRCTICOS
Aplicar las fases para la resolucin de un problema en los siguientes ejercicios.
1. Un alumno ha realizado tres evaluaciones parciales. El desea saber cul es su promedio final del mdulo Desarrollo de Lgica de Programacin, si se sabe que las dos primeras evaluaciones valen 30% y la tercera 40%. 2. Dado el radio y la altura de un cilindro, calcular el rea y el volumen. Sabiendo que las frmulas para el rea son 2 r h y para el volumen r 2 h. PSEUDOCDIGO
Begin Read (SB,V1,V2,V3) TV V1+V2+V3 C TV * 0.1 TR SB + C Print (TR) End
FLUJOGRAMA
N S
Begin Read (SB,V1,V2,V3) TV V1+V2+V3 C TV * 0.1 TR SB + C Print (TR) End
Begin SB, V1,V2,V3 TV V1+V2+V3 0.15 C TV*0.1 TR End TR SB + C 58
3. Determinar el sueldo de un vendedor, el cual depende de su sueldo base ms el 10% de su comisin sobre las ventas. Imprimir el nombre del vendedor, sueldo y comisin. 4. Calcular el sueldo de un trabajador a quien se le realizan los siguientes descuentos:. Renta = 10%, AFP = 5%, FSV = 8%; al final deber imprimir el nombre del trabajador, su direccin, telfono, salario neto y total de descuentos.
LISTA DE COTEJO:
Nombre del alumno:
Fecha:
Nombre del evaluador:(Instructor)
Titulo de la tarea: Estructuras Secuenciales
INDICACIONES
NIVEL LOGRADO NIVELES DE EJECUCIN (Colocar una X en el nivel logrado)
En grupos de 4 alumnos siguiendo las indicaciones de su instructor, resuelvan los siguientes ejercicios. Presenten un reporte escrito en papel bond tamao carta, colocando la portada al frente, que incluya la seccin, el nombre completo de los integrantes, nmeros de carn y firmas. Antes de entregar el reporte verifiquen que contenga todos los componentes, auxilindose de los criterios de ejecucin abajo detallados. 6- Realizan el trabajo satisfactoriamente y en el tiempo adecuado, haciendo buen trabajo en equipo 5- Pueden realizar el trabajo satisfactoriamente aplicando buena lgica e iniciativa al resolver los problemas 4- Pueden realizar el trabajo satisfactoriamente con poca ayuda del instructor 3- Pueden realizar el trabajo pero necesitan mucha ayuda del instructor. 2- Pueden realizar el trabajo pero no terminan en el tiempo estimado
1- No pueden realizar el trabajo
59
CRITERIO DE EJECUCIN Para un logro aceptable todos los tems deben recibir respuestas Si, No, o No Aplica. SI NO N/A Definen adecuadamente cada problema Realizan anlisis de cada problema Elaboran pseudocdigo para cada problema Elaboran Flujograma para cada problema Elaboran diagrama N-S en cada problema Realizan prueba manual
Aplique las fases para la resolucin de un problema en los siguientes ejercicios. Elabore reporte escrito en papel bond. 1. Se desea saber la media aritmtica de los 5 mejores estudiantes de Informtica e imprimir el resultado. 2. Suponga que un individuo decide invertir su capital en un banco y desea saber cunto dinero ganar despus de un mes si el banco le paga a razn de 2% mensual. 3. Un alumno desea saber cul ser el promedio general en las tres materias ms difciles que cursa y cul ser el promedio que obtendr en cada una de ellas, sabiendo que se evala de la siguiente manera: La calificacin de Informtica se obtiene de un examen con 50% y un promedio de tareas de 50% con tres tareas entregadas. La calificacin de Fsica se obtiene de la siguiente forma: Examen 30%, promedio de tareas 40% para un total de dos tareas, Proyecto 30%. La calificacin de Matemtica se obtiene con 2 exmenes 20% cada uno, promedio de tres tareas 30% y proyecto con 30%. Calcular el promedio de un alumno cualquiera por asignatura y el total ganado por las tres. 4. Un maestro desea saber qu porcentaje de hombres y qu porcentaje de mujeres hay en un grupo de estudiantes. 5. En un hospital existen tres reas: Pediatra, Oncologa y Traumatologa. El presupuesto anual del hospital se reparte conforme a la siguiente tabla:
60
AREA PORCENTAJE DEL PRESUPUESTO Pediatra 30% Oncologa 40% Traumatologa 30%
Obtener la cantidad de dinero que recibir cada rea para cualquier monto presupuestal. 6. Los premios de un determinado juego se distribuyen de acuerdo al siguiente criterio: a) La cantidad repartida en premios es un 60% de la recaudacin total b) Existen 5 categoras de premiados y el nmero de acertantes por categora se lee de teclado Indicar la cantidad que percibe cada acertante de cada una de las categoras. 7. Calcular e imprimir el costo de produccin de un artculo, teniendo como datos la descripcin y el nmero de unidades producidas. El costo se calcula multiplicando el nmero de unidades producidas por un factor de costo de materiales de 3.5 y sumndole al producto un costo fijo de $10700. 8. La velocidad de la luz es 300000 Km. por segundo. Leer un tiempo en segundos e imprimir la distancia que recorre en dicho tiempo.
2.4 ESTRUCTURAS DE SELECCIN.
Una decisin es la estructura segn la cual se puede escoger uno de entre dos caminos lgicos dependiendo de una condicin que al ser evaluada nos brinda la oportunidad de saber cul de los dos caminos escoger. La evaluacin de dicha condicin siempre va a originar una respuesta VERDADERA (cuando la condicin se cumple) o FALSA (cuando dicha condicin no se cumple) y con ello se podr saber cul es el conjunto de instrucciones a resolver. La representacin de una estructura selectiva se hace con palabras en pseudocdigo (if then else o en espaol si entonces - sino) y en flujograma con una figura geomtrica en forma de rombo. La condicin, en algoritmos tcnicos, se podr expresar en trminos de dos tipos de operadores: los operadores relacionales y los operadores booleanos. Recordemos que los operadores relacionales son aquellos que nos originan una respuesta Verdadera o Falsa y que corresponden a los smbolos mayor que, menor que, mayor o igual, menor o igual, igual (de comparacin) y diferente de. Los operadores booleanos son aquellos que nos permiten establecer conexiones entre expresiones en donde aparezcan los operadores booleanos y corresponden a los operadores: AND: Genera Verdadero si todas las expresiones relacionales conectadas son Verdaderas OR: Genera Verdadero si al menos una de las expresiones conectadas es Verdadera NOT que invierte el sentido lgico de la expresin
Con estos elementos podemos recordar que la utilizacin de las decisiones como estructura bsica de programacin no tiene ninguna restriccin y que pueden considerarse como vlidos los siguientes casos: Una decisin dentro de otra Una decisin a continuacin de otra Muchas decisiones dentro de otras Muchas decisiones a continuacin de otras Los lenguajes de programacin normalmente cuentan con una forma de seleccionar uno de entre varios caminos lgicos que correspondera a una pequea modificacin de la estructura de DECISIN pero que en ltimas parte del mismo supuesto. 61
Las estructuras selectivas o alternativas se clasifican en: a) Simples b) Dobles c) Compuestas d) Mltiples
ESTRUCTURAS SELECTIVAS SIMPLES. Se identifican porque estn compuestos nicamente de una condicin. La estructura si entonces evala la condicin y en tal caso: Si la condicin es verdadera, entonces ejecuta la accin Si (o acciones si son varias). Si la condicin es falsa, entonces no se hace nada.
REPRESENTACIN GRFICA:
DIAGRAMA DE FLUJO DIAGRAMA NASSI SCHNEIDERMAN
PSEUDOCDIGO EN ESPAOL PSEUDOCDIGO EN INGLS Si <condicin> Entonces <accin Si> Fin_si If <condicin> then <accin Si> End_if
DONDE: Condicin: Expresa la condicin o conjunto de condiciones a evaluar Accin: Expresa la operacin o conjunto de operaciones que se van a realizar si la condicin resulta verdadera.
EJEMPLOS 1. Construir un algoritmo tal, que dado como dato la calificacin de un alumno en un examen, escriba Aprobado en caso que esa calificacin fuese mayor o igual que 7. DEFINICIN DEL PROBLEMA El mismo enunciado.
condicin acciones Si condicin no
ACCIONES si no 62
ANLISIS DEL PROBLEMA
Salidas: mensaje de aprobado si se cumple la condicin. Entradas: calificacin Datos adicionales: un alumno aprueba si la calificacin es mayor o igual que 7.
Seccin de declaraciones: Var Real: Cal Donde Cal = calificacin
PSEUDOCDIGO: Begin Read (Cal) If Cal >= 7 then print (aprobado) End_if End
FLUJOGRAMA: DIAGRAMA N-S
no no yes
PRUEBA MANUAL DEL ALGORITMO: ENTRADA PROCESO SALIDA Cal 7.5 If 7.5 >= 7? yes Aprobado Cal 5.7 If 5.7 >=7? No
Begin Read(Cal) Yes Cal > =7 No
Print (aprobado)
End
Begin Cal Cal >=7 aprobado End 63
EJEMPLO 2 Dado el sueldo de un empleado, se desea encontrar su nuevo sueldo solo si obtiene un aumento del 10% cuando su sueldo es inferior a $600.
DEFINICIN DEL PROBLEMA El mismo enunciado. ANLISIS DEL PROBLEMA: Este ejemplo se toma como selectivo simple, porque se encontrar nuevo sueldo solo cuando haya un aumento, en caso contrario el problema no nos dice que imprimamos el nuevo sueldo; por lo tanto si el sueldo no cumple la condicin no se har nada. Salidas: nuevo sueldo Entradas: sueldo del empleado Datos adicionales: si sueldo inferior a 600, el empleado tendr un aumento de 10% Seccin de Declaraciones Variables: Var Real: SI, NS Donde: SI = sueldo inicial NS = nuevo sueldo
PSEUDOCDIGO: Begin Read (SI) If SI <= 600 then NS SI + SI * 0.1 print ( NS ) End_if End
FLUJOGRAMA: DIAGRAMA N-S
no no yes
Begin Read(SI) Yes SI<=600 No
NS SI + SI * 0.1 Print (NS)
End End
Begin SI SI<=600 NS End NS SI + SI * 0.1
64
PRUEBA MANUAL DEL ALGORITMO ENTRADA PROCESO SALIDA SI NS
EJERCICIOS PRCTICOS Resolver los ejercicios en parejas y al finalizar la prctica debern entregar el desarrollo de las soluciones de cada problema en papel bond tamao carta, colocando la portada al frente que incluya la seccin, el nombre completo de los integrantes, nmeros de carn y firmas.
Aplicar las fases para la resolucin de un problema en los siguientes ejercicios. 1. Un hombre desea saber cunto dinero se generar por concepto de intereses sobre la cantidad que tiene en inversin en el banco. El decidir reinvertir los intereses, siempre y cuando stos excedan a $1500, y en ese caso desea saber cunto dinero tendr finalmente en su cuenta. 2. Leer un nmero y decir si est entre 10 y 100, ambos inclusive. 3. Dado como dato el sueldo de un trabajador, aplique un aumento del 15% si su sueldo es mayor o igual a $550. Imprimir en ese caso el nuevo sueldo del trabajador.
TAREA Aplicar las fases para la resolucin de un problema en los siguientes ejercicios. Resuelva cada ejercicio en hojas de papel bond.
1. El nmero de sonidos emitidos por un grillo en un minuto es una funcin de la temperatura. Como resultado de esto, es posible determinar el nivel de la temperatura haciendo uso de un grillo como termmetro. Sea T= N/4 + 40. Donde T= temperatura en grados Fahrenheit, N= nmero de sonidos emitidos por el grillo. 2. Dados los valores enteros P y Q, determine si los mismos satisfacen la siguiente expresin: P 3
+ Q 4 2P 2 < 680. En caso afirmativo debe imprimir los valores de P y Q. 3. La tangente de un ngulo se define como el cociente entre el seno y el coseno de dicho ngulo. Calcular la tangente de un ngulo, considerando que se conoce el valor del seno y del coseno del mismo. (Para resolver este problema debe identificar cul es la condicin).
65
ESTRUCTURAS SELECTIVAS DOBLES Son estructuras lgicas que permiten controlar la ejecucin de varias acciones y se utilizan cuando se tienen dos opciones de accin, por la naturaleza de estas se debe ejecutar una o la otra, pero no ambas a la vez, es decir, son mutuamente excluyentes.
REPRESENTACIN GRFICA:
DIAGRAMA DE FLUJO DIAGRAMA NASSI SCHNEIDERMAN
No yes
PSEUDOCDIGO EN ESPAOL PSEUDOCDIGO EN INGLS
Si <condicin> Entonces <accin 1> Sino <accin 2> Fin_si
If <condicin> then <accin 1> Else <accin 2> End_if
DONDE: Condicin: Expresa la condicin o conjunto de condiciones a evaluar Accin 1: Expresa la operacin o conjunto de operaciones que se van a realizar si la condicin resulta verdadera. Accin 2: Expresa la operacin o conjunto de operaciones que se van a realizar si la condicin resulta falsa
REPRESENTACIN PSEUDOCODIFICADA. Espaol Ingls Si <condicin> entonces If <condicin> then <accin S1> <accin S1> sino else <accin S2> <accin S2> Fin_Si End_if
En este caso se constituye en una seleccin de dos posibilidades. Si la condicin es verdadera se ejecuta la accin 1, y si es falsa, se ejecuta la accin 2. En el Flujograma es recomendable que el camino verdadero deba colocarse a la derecha y lo falso a la izquierda. En el diagrama N-S no se puede cambiar el orden del Si y No.
condicin Accin 1 yes condicin no
ACCION 1 ACCION 2 Accin 2 66
EJEMPLOS
1. 1. Dado como dato la calificacin de un alumno en un examen, escriba aprobado si su calificacin es mayor o igual que 7 y Reprobado en caso contrario.
DEFINICIN DEL PROBLEMA. El mismo enunciado.
ANALISIS DEL PROBLEMA. Salidas: Mensaje de aprobado o reprobado. Entradas: calificacin Datos adicionales: If calificacin >= 7 then Print(Aprobado) else Print(Reprobado) End_if
Seccin de declaraciones: Var Real: cal Donde Cal ser la calificacin
FLUJOGRAMA
DISEO DEL ALGORITMO: PSEUDOCDIGO DIAGRAMA N-S Begin Read (cal) If cal > =7 then print (aprobado) else print (reprobado) End_if End
2. Dado el sueldo de un empleado, encontrar el nuevo sueldo si obtiene un aumento del 10% si su sueldo es inferior a $600, en caso contrario no tendr aumento.
DEFINICIN DEL PROBLEMA. El mismo enunciado.
ANALISIS DEL PROBLEMA. Salidas: nuevo sueldo Entradas: sueldo del empleado
Begin Read (Cal) yes Cal >=7 no print (Aprobado) print (Reprobado) End No yes Begin cal Cal >=7 Reprobado Aprobado End 67
Datos adicionales:
If sueldo < 600 then Nuevo sueldo= sueldo + aumento 10% Else Nuevo sueldo = sueldo + aumento 0% End_if Seccin de declaraciones: Var Real SI, NS donde SI = sueldo inicial NS = nuevo sueldo
DISEO DEL ALGORITMO
PSEUDOCDIGO: Begin Read (SI) If SI <= 600 then NS SI + SI * 0.1 else NS SI End_if print( NS ) End
DIAGRAMA N-S Begin Read(SI) yes SI<600 no NS SI+ SI*0.1 NS SI Print (NS) End
EJERCICIOS PRCTICOS Resolver los ejercicios en parejas y al finalizar la prctica debern entregar el desarrollo de las soluciones de cada problema en papel bond tamao carta, colocando la portada al frente que incluya la seccin, el nombre completo de los integrantes, nmeros de carn y firmas.
Aplicar las fases para la resolucin de un problema en los siguientes ejercicios. NS SI Begin SI SI<600 NS SI + SI*0.1 NS End FLUJOGRAMA YES NO 68
1. En un hospital se ingresa un paciente cobrndole $25 diarios por hospitalizacin. Si el paciente es operado deber adems cancelar $1000 por los gastos ms 20% del pago total por honorarios del doctor. Dados n das que estuvo el paciente, escriba el nombre, nmero de das que estuvo ingresado y el detalle de todos los pagos hechos. 2. Determinar si un nmero es par o impar, usando la instruccin mod. 3. Una persona enferma se encuentra en reposo y desea saber cuntas caloras consume su cuerpo durante todo el tiempo que realice una misma actividad. Las actividades que tiene permitido realizar son nicamente dormir o estar sentado en reposo. Los datos que tiene son que estando dormido consume 1.08 caloras por minuto y estando sentado en reposo consume 1.66 caloras por minuto. 4. Una empresa que comercializa cosmticos tiene organizados a sus vendedores en tres departamentos y ha establecido un programa de incentivos para incrementar su productividad. El gerente al final del mes pide el importe global de las ventas de los tres departamentos y aquellos que excedan el 33% de las ventas totales se les paga una cantidad extra equivalente al 20% de su salario mensual. Si todos los vendedores ganan lo mismo, determinar cunto recibirn los vendedores de los tres departamentos al finalizar el mes.
TAREA Aplicar las fases para la resolucin de un problema en los siguientes ejercicios. Resuelva cada ejercicio en hojas de papel bond. 1. En un supermercado se hace una promocin mediante la cual el cliente obtiene un descuento dependiendo de un nmero que escoge al azar. Si el nmero escogido es menor a 74 el descuento es del 15% sobre el total de la compra y si es mayor o igual a 74 es de 20%. Obtener cunto dinero se le descuenta y el pago final. 2. Un obrero necesita calcular su salario semanal, el cual se obtiene de la siguiente manera: Si trabaja 40 horas o menos se le paga $4 por hora. Si trabaja ms de 40 horas se le paga $4 por cada una de las primeras 40 horas y $6 por cada hora extra. Calcule el nuevo salario del obrero. 3. Una empresa quiere hacer una compra de varias piezas de la misma clase a un fabricante de refacciones. La empresa, dependiendo del monto total de la compra, decidir qu hacer para pagar al fabricante. Si el monto total de la compra excede de $50000, la empresa tendr la capacidad de invertir de su propio dinero un 55% del monto de la compra, pedir prestado al banco un 30% y el resto lo pagar solicitando un crdito al fabricante. Si el monto de la compra no excede a $50000 la empresa tendr capacidad de invertir de su propio dinero un 70% y el resto lo pagar solicitando crdito al fabricante. El fabricante cobra por concepto de intereses un 20% sobre la cantidad que se le pague a crdito. 4. Cul es la conductancia Gt (siemens) y resistencia equivalente Rt (W) para cuatro resistores R1, R2, R3 y R4 conectados en serie? Cul es la cada de voltaje Vi (voltios) para cada resistencia, si pasa una corriente i de 10 amperios por el circuito? Rt = R1 + R2 + R3 + R4 (Resistencia Equivalente) Gt = 1/Rt (conductancia) Vi = i * Ri (caida de voltaje en cada resistencia)
ESTRUCTURAS SELECTIVAS COMPUESTAS (ANIDADAS). En la solucin de problemas encontramos numerosos casos en los que luego de tomar una decisin y marcar el camino correspondiente a seguir, es necesario tomar otra decisin. Dicho proceso puede repetirse numerosas veces. 69
En aquellos problemas en donde un bloque condicional incluye otro bloque condicional se dice que un bloque est anidado dentro del otro. A este tipo de estructuras se les conoce tambin como estructuras selectivas anidadas. REPRESENTACIN GRFICA: DIAGRAMA DE FLUJO DIAGRAMA NASSI SCHNEIDERMAN
PSEUDOCDIGO EN ESPAOL PSEUDOCDIGO EN INGLS Si <condicin S1> Entonces Si <condicin S2> entonces <accin S21> Sino <accin S22> Fin_si Fin_si If <condicin S1> Then If <condicin S2> Then <accin S21> Else <accin S22> End_if End_if
En este caso hay dos condiciones, la primera condicin S1 es una selectiva simple, porque solamente tiene una posibilidad. Cuando es verdadera, se ejecuta la condicin S2. Si es falsa, se contina directamente con el siguiente bloque de diagrama. La condicin S2 es selectiva doble, tiene dos posibilidades. Cuando es verdadera, se ejecuta la accin S21 y si es falsa, se ejecuta la accin S22. yes condicin S1 no cond S2 yes no accin accin S2_1 S2_2
1. Determinar la cantidad de dinero que recibir un trabajador por concepto de las horas extras trabajadas en una empresa, sabiendo que cuando las horas de trabajo exceden de 40, el resto se consideran horas extras y que stas se pagan al doble de una hora normal cuando no exceden de 8; si las horas extras exceden de 8 se pagan las primeras 8 al doble de lo que se paga por una hora normal y el resto al triple.
DEFINICIN DEL PROBLEMA El mismo enunciado. ANLISIS DEL PROBLEMA. Datos de salida: Pago. Datos de entrada: nmero de horas trabajadas y pago por hora normal. Datos Adicionales: Lo primero que hay que determinar es si el trabajador trabaj horas extras o no. Encontrar las horas extras de la siguiente forma: Horas extras = horas trabajadas 40 En caso que si trabaj horas extras: Si horas extras > 8 entonces a horas extras excedentes de 8 = horas extras 8 y pago por horas extras = pago por hora normal * 2 * 8 + pago por hora normal * 3 * horas extras excedentes de 8 De otra forma (solo horas al doble) pago por horas extras = pago por hora normal * 2 * horas extras. Finalmente, pago total que recibir el trabajador ser: Pago = pago por hora normal * 40 + pago por horas extras. Si no trabaj horas extras tendremos: Pago = pago por hora normal * horas trabajadas. Definicin de variables: ht = horas trabajadas het = horas extras que exceden de 8 ph = pago por hora normal phe = pago por horas extras he = horas extras pt = pago que recibe el trabajador DECLARACIN DE VARIABLES: ENTERO: ht, he, het REAL: ph, phe, pt PSEUDOCDIGO: Begin Read (ht, ph) If ht >40 then he ht 40 If he > 8 then het he 8 phe ph * 2 * 8 + ph * 3 * het else 71
phe ph * 2 * he End_if pt ph * 40 + phe else pt <-- ph * ht End_if Print (El pago total de horas trabajadas es:, pt) Fin
FLUJOGRAMA:
EJERCICIO: Realiza la prueba manual del algoritmo.
72
Diagrama N-S:
DEFINICIN DEL PROBLEMA: El mismo enunciado.
ANALISIS DEL PROBLEMA. Salidas: numero mayor Entradas: N1,N2,N3 Datos adicionales: IF (N1 > N2) and (N1 > N3) THEN NM N1 ELSE IF (N2>N3) THEN NM N2 ELSE NM N3 END_IF END_IF
Seccin de Declaraciones Var integer N1,N2,N3,NM
EJEMPLO 2. Leer tres nmeros enteros diferentes entre s y determinar el nmero mayor de los tres. DISEO DEL ALGORITMO PSEUDOCDIGO Begin Read (N1,N2,N3) if (N1 > N2) and (N1 > N3) then NM N1 else if (N2>N3) then NM N2 else NM N3 end_if end_if 73
Donde N1, N2 y N3 son los tres nmeros NM es el nmero mayor
DIAGRAMA N-S Begin Read (N1,N2,N3) YES (N1 > N2) and (N1 > N3) NO NM N1 YES N2>N3 NO NM N2 NM N3 Print (NM) End no yes NM N2 NM N3 Begin N1,N2,N3 N1>N2 and N1>N3 NM N1 N2>N3 NM End yes no FLUJOGRAMA 74
PRUEBA MANUAL DEL ALGORITMO ENTRADA PROCESO SALIDA N1 N2 N3 NM 10 8 1 (N1 > N2) and (N1 > N3)? (10>8) and (10>1)? YES NM = 10
10 2 13 4 (N1 > N2) and (N1 > N3)? (2 > 13) and (2 > 4) F and F NO (N2 > N3)? (13 > 4) YES NM = 13
13 5 2 8 (N1 > N2) and (N1 > N3)? (5 > 2) and (5 >8) T and F NO (N2 > N3)? (2 > 8) NO NM = 8
8
EJERCICIOS PRCTICOS Resolver los ejercicios en parejas y al finalizar la prctica debern entregar el desarrollo de las soluciones de cada problema en papel bond tamao carta, colocando la portada al frente que incluya la seccin, el nombre completo de los integrantes, nmeros de carn y firmas.
Aplicar las fases para la resolucin de un problema en los siguientes ejercicios. 1. En una tienda de descuento se efecta una promocin en la cual se hace un descuento sobre el valor de la compra total segn el color de la bolita que el cliente saque al pagar en caja. Si la bolita es blanca no se le har descuento alguno, si es verde se le har un 10% de descuento, si es amarilla un 25%, si es azul un 50% y si es roja un 100%. Determinar la cantidad final que un cliente deber pagar por su compra. Se sabe que slo hay bolitas de los colores mencionados. 75
2. Elaborar un sistema de facturacin que pida el nombre del vendedor, nombre del cliente, fecha de factura, nmero de factura y suma de ventas realizadas. A la suma de ventas realizadas, se les har un descuento segn la siguiente tabla: VENTAS DESCUENTO 0 < V < 100 0% 100 <=V <=500 15% 500 < V <=1000 20% V>1000 30%
3. Calcular la utilidad que un trabajador recibe en el reparto anual de utilidades, si ste se le asigna como un porcentaje de su salario mensual que depende de su antigedad en la empresa de acuerdo con la siguiente tabla: TIEMPO UTILIDAD Menos de 1 ao 5% del salario 1 ao o ms y menos de 2 aos 7% del salario 2 aos o ms y menos de 5 aos 10% del salario 5 aos o ms y menos de 10 aos 15% del salario 10 aos o ms 20% del salario
TAREA Aplicar las fases para la resolucin de un problema en los siguientes ejercicios. Resolverlos en parejas, en hojas de papel bond tamao carta.
1. El ISSS requiere clasificar a las personas que se jubilarn en el ao 2010. Existen tres tipos de jubilaciones: por edad, por antigedad joven y por antigedad adulta. Las personas adscritas a la jubilacin por edad deben tener 60 aos o ms y una antigedad en su empleo de 30 aos o ms. Las personas adscritas a la jubilacin por antigedad joven deben tener menos de 60 aos y una antigedad en su empleo de 25 aos o ms. Las personas adscritas a la jubilacin por antigedad adulta deben tener 60 aos o ms y una antigedad en su empleo de 25 aos o ms. Determinar a qu tipo de jubilacin quedar adscrita una persona. 2. En una llantera se ha establecido una promocin de llantas que consiste en lo siguiente: Si se compran menos de 5 llantas el precio es de $45 cada una, si se compran de 5 a 10, el precio es de $40 y si se compran ms de 10 el precio es de $35. Obtener la cantidad de dinero que una persona tiene que pagar por el total de la compra. 3. Una frutera ofrece las manzanas con descuento segn la siguiente tabla:
Determinar cunto pagar una persona que compre manzanas en esa frutera. 4. Dado un nmero entero, determine e imprima si el mismo es positivo, negativo o nulo.
ESTRUCTURAS SELECTIVAS MLTIPLES.
Con frecuencia es necesario que existan ms de dos elecciones posibles. Este problema se podra resolver por estructuras selectivas simples o dobles, anidadas o en cascada, pero si el nmero de alternativas es grande puede plantear serios problemas de escritura y de legibilidad. Usando la estructura de decisin mltiple se evaluar una expresin que podr tomar n valores distintos, 1, 2 , 3, ...., n y segn que elija uno de estos valores en la condicin, se realizar una de las n acciones o lo que es igual, el flujo del algoritmo seguir slo un determinado camino entre los n posibles. Esta estructura se representa por un selector el cual si toma el valor 1 ejecutar la accin 1, si toma el valor 2 ejecutar la accin 2, si toma el valor N realizar la accin N.
REPRESENTACIN GRFICA: DIAGRAMA DE FLUJO
case 1 case 2 case N Default
SELECTOR Accin X Accin N Accin 2 Accin 1 77
PSEUDOCDIGO EN ESPAOL PSEUDOCDIGO EN INGLES En caso que Selector sea Caso valor 1 Accin 1 break Caso valor 2 Accin 2 break Caso valor N Accin N break Otro caso Accin X Fin Caso que
Switch (expression) Case 1: Accin 1 break Case 2: Accin 2 break Case N: Accin N break Default: Accin X break End_Case
DIAGRAMA NASSI SCHNEIDERMAN
As, si el selector toma el valor 1 se ejecutar la accin 1, si toma el valor 2 se ejecutar la accin 2, si toma el valor N, se realizar la accin N. De otra forma, si no es ningn caso de los anteriores, significa que no se cumpli ninguna de las anteriores, entonces se realizar la accin X. Deber reemplazar Selector por variables, propiedad o expresin que vaya a ser el valor clave.
EJEMPLO:
1. Disear un algoritmo tal que dados como datos dos variables de tipo entero, obtenga el resultado de la siguiente funcin:
100 * V si num = 1 Resp = 100 ^ V si num = 2 100 /V si num = 3, para V <> 0 0 cualquier otro valor de num
En caso que Selector sea Valor 1 Valor 2 ....... Valor N Accin Accin ....... Accin 1 2 N Switch (expression) Valor1 Valor 2 Valor N Default Accin Accin Accin N Accin 1 2 X 78
DEFINICION DEL PROBLEMA El mismo enunciado.
ANALISIS DEL PROBLEMA Salidas: Resp Entradas: V, num Datos adicionales: segn el valor que tome num, as encontraremos Resp con las frmulas dadas. Seccin de Declaraciones: Var integer: V, num Real: resp Donde resp ser el resultado de la funcin, V y num los valores de las dos variables de entrada
DISEO DEL ALGORITMO:
Begin Read (num,V) Switch(num) 1 2 3 default Resp= 100*V Resp= 100^V Resp=100/V Resp = 0 Print (Resp) End
1 2 3 default
Begin Read (num,V) Switch (num) case 1: hacer Resp = 100*V break case 2: hacer Resp = 100 V break case 3: hacer Resp = 100/V break Default Resp = 0 break End_case Print (Resp) Fin Begin Num, V num Resp = 100*V Resp = 100^V Resp = 100/V Resp = 0 Resp End 79
PRUEBA MANUAL DEL ALGORITMO ENTRADA PROCESO SALIDA NUM V Switch (1) resp=100 * 4 Resp = 400
Resp 1 4
400 5 2 Switch(5) default: Resp = 0
0
Para este ejercicio es recomendable agregar una validacin antes de entrar al switch, ya que V nunca puede ser cero pues invalida la opcin 3 al volverse indeterminada la divisin. EXPRESIONES LGICAS Sirven para plantear condiciones o comparaciones y dan como resultado un valor booleano verdadero o falso, es decir, se cumple o no se cumple la condicin. Se pueden clasificar en simples y complejas. Las simples son las que usan operadores relacionales y las complejas las que usan operadores lgicos.
EJEMPLO Un ejemplo en el cual usamos el operador lgico AND sera: Una escuela aplica dos exmenes a sus aspirantes, por lo que cada uno de ellos obtiene dos calificaciones denotadas como C1 y C2. El aspirante que obtenga calificaciones mayores que 80 en ambos exmenes es aceptado; en caso contrario es rechazado.
En este ejemplo se dan las condiciones siguientes: If (C1 >= 80) and (C2 >= 80) then print (aceptado) else print (rechazado) end_if Note que tambin usa operadores relacionales. Por lo general cuando hay operadores lgicos, stos van acompaados de operadores relacionales. Un ejemplo usando el operador lgico OR sera: Una escuela aplica dos exmenes a sus aspirantes, por lo que cada uno de ellos obtiene dos calificaciones denotadas como C1 y C2. El aspirante que obtenga una calificacin mayor que 90 en cualquiera de los exmenes es aceptado; en caso contrario es rechazado. En este caso se dan las condiciones siguientes:
If (C1 >=90) or (C2 >=90) then print (aceptado) else print (rechazado) Fin_si 80
La instruccin equivale a OR ya que nos dice que puede ser en cualquiera de los exmenes no necesariamente en los dos. En el ejemplo 1 la palabra ambos equivala a seleccionar la instruccin AND. Si la instruccin nos dijera que obtenga una nota en cualquiera de los exmenes pero no en ambos, nos estara indicando una instruccin XOR que es un tipo de OR pero exclusivo. Es decir, no puede considerarse el caso en que tenga la misma nota en los dos exmenes, solo en uno de los dos.
EJERCICIOS PRCTICOS Resuelvan los siguientes ejercicios en grupos de 3 personas. Entregar el reporte escrito en hojas de papel bond tamao carta. Para cada ejercicio deben aplicar las fases de resolucin de un problema. 1. Dados como datos la categora y el sueldo de un trabajador, calcule el aumento correspondiente teniendo en cuenta la siguiente tabla:
Categora Aumento 1 15% 2 10% 3 8% 4 5%
Imprima la categora del trabajador y su nuevo sueldo. 2. Una librera vende libros con las condiciones siguientes: Si el cliente es tipo 1 se le descuenta el 30%, si es tipo 2 se le descuenta 20% y si es tipo 3 se le descuenta el 10%. Si la cantidad de libros solicitada es mayor que 50, se hace un descuento adicional de 5%; en caso de ser mayor que 100 el descuento adicional es de 10%. Cuando el cliente realiza una compra se generan los datos siguientes: Nombre del cliente, Tipo de cliente (1,2,3), cantidad en libros y costo por libro. Leer estos datos e imprimir: Nombre del cliente, total a pagar, descuento y neto a pagar. 3. El costo de las llamadas telefnicas internacionales, depende de la zona geogrfica en la que se encuentre el pas destino y del nmero de minutos hablados. En la tabla siguiente se muestra el costo por minuto por zona. A cada zona se le ha asociado una clave. CLAVE ZONA PRECIO 12 Amrica del Norte 2 15 Amrica Central 2.2 18 Amrica del Sur 4.5 19 Europa 3.5 23 Asia 6 25 frica 6 29 Oceana 5
Calcular e imprimir el costo total de una llamada, con base en la clave de la zona.
81
TAREA Aplicar las fases de resolucin de un problema. Escribir a la par de cada ejercicio el tipo de estructura de seleccin que utiliz. Realice los ejercicios en su cuaderno de tareas. 1. Tres lneas pueden formar un tringulo si y slo s la longitud de la lnea ms larga es menor que la suma de las longitudes de las dos lneas ms cortas. Sea a + b > c, con a,b y c colocados en orden ascendente. Determinar si el tringulo es equiltero, issceles o escaleno. 2. Se desea leer por teclado un nmero comprendido entre 1 y 10 (inclusive) y se desea visualizar si el nmero es par o impar. (Si (num\2 * 2 = num) entonces es par). Luego visualizar si el nmero es positivo, negativo o nulo. 3. Los empleados de una fbrica trabajan en dos turnos: diurno y nocturno. Se desea calcular el jornal diario de acuerdo con los siguientes puntos: La tarifa de las horas diurnas es de $500. La tarifa de las horas nocturnas es de $800. En caso de ser domingo, la tarifa se incrementar en $200 el turno diurno y $300 el nocturno. 4. Leer como datos el modelo de un vehculo y su precio, determinar el valor final que debe pagar el comprador. El concesionario est haciendo descuentos, teniendo en cuenta el modelo con base en la siguiente tabla:
MODELO DESCUENTO Volskwagen 8% Toyota 9% Hyundai 6% Mazda 5%
EVALUACIN DEL TEMA. Rbrica para obtener la calificacin. Trabajar en grupos de 4 alumnos. Criterios Dominio Bajo 1-4 Dominio Medio 5 - 7 Dominio Alto 8 - 10 Clasificacin Grupal (5 grupos) G1 G2 G3 G4 G5 Anlisis (10%) No identifican todas las partes del anlisis Identifican algunas partes con dificultad o ayuda Identifica adecuadamente las partes del anlisis
Algoritmo (40%) No elaboran el algoritmo de cada ejercicio Elaboran algoritmo en forma incompleta Elabora correctamente los tres elementos del algoritmo
82
Prueba manual (30%) No realizan prueba manual de todos los ejercicios Realizan prueba manual en forma incompleta Completan la prueba manual en forma correcta
Orden y limpieza (10%) El trabajo est desordenado, sucio o ilegible La informacin no est completamente ordenada y aseada Elaboran reporte en forma ordenada y legible.
Auto evaluacin (10%) (Es nota individual, cada alumno realiza esta parte). Calificacin total
2.5 ESTRUCTURAS CCLICAS
CONCEPTOS BSICOS Estos conceptos bsicos de un programa son fundamentales en las estructuras repetitivas.
BUCLES (LAZO) El bucle, ciclo o lazo, es un segmento de un algoritmo o programa cuyas instrucciones se repiten un nmero determinado de veces, mientras se cumple una determinada condicin especfica (existe o es verdadera la condicin). 14
Un ciclo tiene las siguientes caractersticas: a. El conjunto de instrucciones debe ser finito b. La cantidad de veces que se repita dicho conjunto de instrucciones tambin debe ser finita. En algunos casos esta cantidad de veces va a depender de una condicin explcita y en otros casos va a depender de una condicin implcita. Una condicin es explcita cuando depende solamente de la misma ejecucin del programa sin que sea importante la participacin del usuario. Asimismo una condicin es implcita cuando depende solamente de la voluntad del usuario y por lo tanto la cantidad de iteraciones o repeticiones del ciclo podra llegar a ser diferente cada vez pues sera posible que cambiara con cada usuario. c. Deben estar claramente demarcados el inicio y el fin del ciclo. En los casos en los cuales solo exista una instruccin a iterar, no sern necesarias dichas marcas. d. Dentro de un ciclo podr ir cualquiera de las otras estructuras que se han estudiado incluyendo otros ciclos. Un bucle consta de tres partes: Decisin Cuerpo del bucle Salida del bucle
ITERACIN Es cada una de las diferentes pasadas o ejecuciones de todas las instrucciones contenidas en el bucle.
14 Tomado de enriquebarrueto0.tripod.com/algoritmos/cap03.doc 83
CONTADORES Un contador es una variable cuyo valor se incrementa o decrementa en una cantidad fija en cada iteracin. Se utilizan en los siguientes casos: Para contabilizar el nmero de veces que es necesario repetir una accin (variable de control de un bucle) Para contar un suceso particular solicitado por el enunciado del problema (asociado a un bucle independiente) Representa la variable de control del ciclo. Toma un valor inicial (generalmente 0 1) y se incrementa en la mayora de los casos. Toma un valor inicial y se compara con el valor final. Los contadores se utilizan con la finalidad de contar sucesos o acciones internas de un bucle; deben realizar una operacin de inicializacin y posteriormente las sucesivas de incremento o decremento del mismo. La inicializacin consiste en asignarle al contador un valor. Se situar antes y fuera del bucle. Representacin: <nombre del contador> <nombre del contador> + <valor constante> Si en vez de incremento es decremento se coloca un menos en lugar del ms. Ejemplo: i = i + 1 (incremento) i = i 1 (decremento)
ACUMULADOR O TOTALIZADOR Un acumulador es un campo de memoria que suma sobre s misma un conjunto de valores para de esta manera tener la suma de todos ellos en una sola variable. Se utiliza en aquellos casos en que se desea obtener el total acumulado de un conjunto de cantidades, siendo preciso inicializarlo con el valor cero. Adems en las situaciones en que hay que obtener un total como producto de distintas cantidades se utiliza un acumulador, debindose inicializar con el valor. La diferencia entre un contador y un acumulador es que mientras el primero va aumentando de uno en uno en un valor constante, el acumulador va aumentando en una cantidad variable. Representacin: <Nombre del acumulador> <nombre del acumulador> + <valor variable>
INVESTIGACIN INDIVIDUAL
Investigue qu son bucles finitos e infinitos. Bucles independientes, anidados y cruzados. Ejemplos de cada uno y cmo funcionan segn su representacin en pseudocdigo, Flujograma y N-S. TIPOS DE CICLOS Los tipos de Bucles o Ciclos que estudiaremos son los siguientes: Estructura For (Desde) Estructura While (Mientras) Estructura Repeat (Repetir) En esta leccin estudiaremos la forma general de la estructura For, su uso y ejemplos.
84
ESTRUCTURA FOR (DESDE/PARA): DEFINICIN La estructura repetitiva For (desde) es aquella en la que el nmero de iteraciones se conoce por anticipado, y por ello no se precisa poner ninguna condicin de salida para detener el bucle. En su lugar un contador cuenta el nmero de iteraciones fijas y se termina cuando llega al valor final previamente definido. Quiere decir que esta estructura se usa frecuentemente cuando se conoce de antemano el nmero de veces que se ejecutarn las acciones de un bucle. Esta es una de sus caractersticas. REPRESENTACIN GRFICA:
DIAGRAMA N-S FLUJOGRAMA PSEUDOCDIGO ESPAOL PSEUDOCDIGO EN INGLS
Desde i = Vi hasta Vf (incr/decr) hacer Acciones Fin_desde
For i = Vi To Vf (incr/decr) Do Acciones End_for DONDE: i : Valor ndice (contador) Vi: Valor Inicial Vf: Valor Final Incr/decr: Incremento o decremento de la variable ndice TIPOS DE CICLOS FOR (Desde) REPEAT (Repetir) WHILE (Mientras) 85
EJEMPLO Calcular la suma de los cuadrados de los primeros 100 enteros y escribir el resultado.
DEFINICIN DEL PROBLEMA El mismo enunciado.
ANLISIS DEL PROBLEMA Salidas: cuadrados de los primeros 100 enteros Entradas: ninguna Datos adicionales: Acumulador de cuadrados: la variable suma Para generar los cuadrados usamos suma suma + i * i
Seccin de declaraciones: Var entero: suma , i Donde i es el ndice del bucle, suma es el acumulador de la suma de cuadrados. REPRESENTACIN GRFICA: PSEUDOCDIGO
Begin Suma 0 For i = 1 to 100 do Suma suma + i * i End_for print (suma) End
DIAGRAMA N-S
Begin suma 0 i = 1,100,1 suma suma + i*i suma End Begin
suma 0
For i = 1 to 100 do suma suma + i * i
End_for print (suma)
End Begin
suma 0
For i = 1 to 100 do suma suma + i * i
End_for print (suma)
End FLUJOGRAMA 86
PRUEBA MANUAL DEL ALGORITMO Como son 100 elementos, el algoritmo resulta muy grande, por lo tanto realizaremos la prueba con valor final de 4 en vez de 100, solamente para ver el funcionamiento del bucle.
ENTRADA PROCESO SALIDA Suma = 0 i=1 suma = suma + i * i suma = 0 + 1 * 1 = 1 i=2 suma = 1 + 2 * 2 = 5 i=3 suma = 5 + 3 * 3 = 14 i=4 suma= 14 + 4 * 4 = 14+16= 30 i=5 fuera del rango. (Termina el bucle)
30
Observe que no hay entradas en este ejercicio.
Hay un nmero importante de reglas que deben seguirse cuando se utilizan instrucciones FOR: Los valores inicial y final de la variable de control se determinan antes de que empiece la repeticin y no pueden cambiarse durante la ejecucin de la instruccin For. Dentro del cuerpo del bucle For, los valores de las variables que especifican los valores inicial y final pueden cambiar, pero esto no va a afectar al nmero de repeticiones. La instruccin del cuerpo del bucle de una instruccin For puede utilizar el valor de la variable de control, pero no debe modificar este valor. Esta estructura se puede usar nicamente en aquellos casos en que conocemos el nmero de veces que se va a realizar el ciclo. Esta estructura hace el incremento automticamente y se inicializa en la instruccin For.
EJERCICIOS PRCTICOS Aplicar las fases para la resolucin de un problema en los siguientes ejercicios, usando estructura For. Incluye la prueba manual con 5 datos de prueba. Resuelvan los ejercicios en grupos de 3 alumnos y presenten un reporte escrito en hojas de papel bond.
1. Dado el sueldo de 20 trabajadores, considere un aumento del 15% a cada uno de ellos, si su sueldo es inferior a $800. Imprima el sueldo con el aumento incorporado. 2. Calcule el aumento de sueldos para 50 empleados de una empresa, bajo el siguiente criterio: Si el sueldo es menor a $1000: aumento 12% Si el sueldo est comprendido entre $1000 y $25000: aumento 10% Si el sueldo es mayor a $25000: aumento 8% Imprima el nuevo sueldo del trabajador y el monto total de la nmina considerando el aumento. 87
3. Leer 100 nmeros enteros y contar cuntos de ellos son positivos, negativos o nulos. 4. Dados como datos 300 nmeros enteros, obtener la suma de los nmeros impares y el promedio de los nmeros pares. 5. Dados 24 nmeros reales que representan las temperaturas del exterior en un perodo de 24 horas. Encuentre la temperatura media del da y las temperaturas ms alta y ms baja del da.
TAREA Aplicar las fases para la resolucin de un problema en los siguientes ejercicios. Realizar prueba manual con 5 datos de prueba. Usa estructura desde/para. Resuelve los ejercicios en tu cuaderno de tareas.
1. Una compaa de seguros tiene contratados a n vendedores. Cada uno hace tres ventas a la semana. Su poltica de pagos es que un vendedor recibe un sueldo base y 10% extra por comisiones de sus ventas. El gerente de su compaa desea saber cunto dinero obtendr en la semana cada vendedor por concepto de comisiones por las tres ventas realizadas y cunto tomando en cuenta su sueldo base y sus comisiones. 2. Dados 100 nmeros enteros como datos, obtener: a) Cuntos nmeros ledos fueron mayores que cero. b) el promedio de los nmeros positivos c) el promedio de todos los nmeros 3. Dado el peso, la altura y el sexo de 50 personas que pertenecen a Sonsonate, obtenga el promedio del peso y de la altura de esta poblacin. 4. Resolver el problema anterior considerando adems el promedio de la altura y del peso en funcin del sexo. Es decir, obtener el promedio de la altura y peso de la poblacin femenina y masculina. 5. En una escuela, la colegiatura de los alumnos se determina segn el nmero de materias que cursan. El costo de todas las materias es el mismo. Se ha establecido un programa para estimular a los alumnos, el cual consiste en lo siguiente: Si el promedio obtenido por un alumno en el ltimo perodo es mayor o igual que 9, se le har un descuento del 30% sobre la colegiatura y no se le cobrar IVA; Si el promedio obtenido es menor que 9, deber pagar la colegiatura completa, la cual incluye el 10% de IVA. Obtener cuanto pagan 20 alumnos.
ESTRUCTURA MIENTRAS (WHILE)
Se llama Mientras a la estructura algortmica que se ejecuta mientras la condicin evaluada resulte verdadera. Se evala la expresin booleana y, si es cierta, se ejecuta la instruccin especificada, llamada el cuerpo del bucle. Entonces se vuelve a evaluar la expresin booleana, y si todava es cierta se ejecuta de nuevo el cuerpo. Este proceso de evaluacin de la expresin booleana y ejecucin del cuerpo se repite mientras la expresin sea cierta. Cuando se hace falsa, finaliza la repeticin. Si la condicin del bucle While se evala a falso cuando se ejecuta el bucle por primera vez, el cuerpo del bucle no se ejecutar nunca. En este caso se dice que el bucle se ha ejecutado cero veces. La condicin lgica en un bucle While, debe tener un valor la primera vez que se evala; en caso contrario, el programa abortar al ejecutarse While. La condicin lgica en un bucle While, debe ser modificada por una sentencia en el cuerpo del bucle, normalmente por un contador, en caso contrario, el bucle es infinito.
REPRESENTACIN GRFICA: 88
DIAGRAMA DE FLUJO
PSEUDOCDIGO EN ESPAOL PSEUDOCDIGO EN INGLS Mientras (Condicin) hacer Acciones Fin_Mientras While ( Condicin) do Acciones End_While DIAGRAMA NASSI SCHNEIDERMAN
MTODOS: Existen tres mtodos para controlar o terminar un bucle:
1
Bucle controlado por contador (bucle de conteo) 2
Bucle controlado por condicin 3
Bucle controlado por banderas o interruptores ACCIONES V < =Vf V Vi While (Condicin) do
Acciones 89
1. BUCLE CONTROLADO POR CONTADOR Un bucle controlado por contador es un bucle cuyas iteraciones se controlan por una variable, cuyo valor representa a un contador. El mecanismo utilizado es una variable de control del bucle que acta como contador. Un bucle controlado por contador consta de tres partes, adems del cuerpo y de la condicin de salida: Inicializacin de la variable de control del bucle Comprobacin del valor de la variable de control del bucle Incremento del valor de la variable del control del bucle El formato de este bucle es: 1. Establecer variable contador a un valor inicial 2. While variable contador < valor final do Proceso Incrementar variable contador en X veces 3. End_While Se utiliza un bucle controlado por contador, cuando se conoce con anticipacin el nmero de veces que se va a realizar la accin, es decir cuntas iteraciones se deben ejecutar exactamente. En ese caso decimos que esta estructura trabaja igual que la estructura For.
EJEMPLO
Elabore pseudocdigo para el caso en que se desean escribir los nmeros del 1 al 100
Begin Var integer: i i 1 While i <=100 do print ( i ) i i + 1 End_While End
2. BUCLE CONTROLADO POR CONDICIN Los bucles controlados por centinela se utilizan cuando no se sabe con anticipacin, el nmero exacto de iteraciones a realizar. Existen dos tcnicas para realizar este bucle controlado por condicin: 1. Bucle controlado por el usuario Este mtodo consiste simplemente en preguntar al usuario si existen ms entradas. Se sale del bucle cuando el usuario lo decide. El bucle se realiza mientras haya ms entradas, usando una expresin booleana Si/No. Si el usuario no desea continuar repitiendo el bucle, digita N o No, segn se haya establecido la condicin de respuesta del usuario. 2. Bucle controlado por un valor centinela. Un centinela es un valor especial utilizado para sealar el final de una lista de datos. El valor elegido debe ser totalmente distinto de los posibles valores de la lista, para que se pueda 90
utilizar para sealar el final de la lista. Es decir que no debe pertenecer al rango de datos vlido.
EJEMPLO 1. Disee un pseudocdigo para calcular la suma y producto de N nmeros enteros, utilizando un bucle controlado por el usuario.
Begin Var integer : suma, prod, num char : resp suma 0 prod 1 Read ( resp ) While(resp < > N) and ( resp < > n) do Read (num) suma suma + num prod prod * num print (Desea continuar (S / N)?) read ( resp ) End_While print (Total de la suma es: , suma) print (Total de producto es:, prod) End
2. Disee un pseudocdigo para calcular la suma y producto de N nmeros enteros, utilizando un bucle controlado por centinela.
Begin Var integer : suma, prod, num suma 0 prod 1 read (num) While ( num < > -1) do suma suma + num prod prod * num read ( num ) End_While print (Total de la suma es: , suma) print (Total de producto es:, prod) Fin
3. BUCLE CONTROLADO POR BANDERAS O INTERRUPTORES Una bandera o interruptor (flag) es una variable lgica que se utiliza para conservar el estado (verdadero o falso) de una condicin. El valor del interruptor debe inicializarse antes de comenzar el bucle y debe cambiar su estado (valor) dentro del cuerpo del bucle. Normalmente la bandera puede tomar los valores de 1 o 0, True o False Se utiliza para: 91
Recordar en un determinado punto de un programa la ocurrencia o no de un suceso anterior, para salir de un bucle o para decidir en una instruccin alternativa qu accin realizar Para hacer que dos acciones diferentes se ejecuten alternativamente dentro de un bucle.
EJEMPLO Determinar si un nmero entero proporcionado por el usuario es primo. Un nmero primo es un entero que no tiene ms divisores que l mismo y la unidad. Elaborar Pseudocdigo:
Begin Var boolean: primo integer: divisor, num, res primo True divisor 2 read (num) while ((divisor < num) and (primo = T)) do Res num mod divisor if (res = 0) then primo F end_if divisor divisor + 1 end_while if primo = T then print (Numero, num, es primo) else print (Numero, num, no es primo) end_if End
TAREA Aplique los pasos de la metodologa para resolver un problema en los siguientes ejercicios. Resolver utilizando estructura While, en su cuaderno de tareas. Resuelva el primer ejercicio con bucle controlado por contador y los otros con bucle controlados por condicin. Realice prueba manual con 3 datos de prueba.
1. Calcular la suma y producto de los nmeros pares comprendidos entre 10 y 30 (ambos inclusive). 2. Dados 100 nmeros enteros, encontrar cuntos de ellos son positivos, negativos o nulos. 3. Calcular el aumento de sueldo para N empleados de una empresa, bajo el siguiente criterio: Si el sueldo es menor a $650, el aumento es del 15% Si el sueldo est comprendido entre $650 y $1000, el aumento es del 12% Si el sueldo es mayor a $1000, el aumento es del 9%. Imprimir lo siguiente: Cdigo del trabajador, nombre del trabajador, sueldo del trabajador, monto total de la nmina, considerando el nuevo sueldo y el monto total de los aumentos. 92
EJERCICIOS PRCTICOS Apliquen los pasos de la metodologa para resolver un problema en los siguientes ejercicios. Resolver los ejercicios en parejas, en hojas de papel bond. Indiquen en cada caso, el tipo de bucle While utilizado y su justificacin.
1. Obtener suma de los trminos de la serie: 2, 5, 7, 10, 12, 15, 17, .... 1800. 2. En un supermercado una seora pone en su carrito los artculos que va tomando de los estantes. La seora quiere asegurarse de que el cajero le cobre bien lo que ella ha comprado, por lo que cada vez que toma un artculo anota su precio junto con la cantidad de artculos iguales que ha tomado y determina cunto dinero gastar en ese artculo; a esto le suma lo que ir gastando en los dems artculos, hasta que decide que ya tom todo lo que necesitaba. Aydale a esta seora a obtener el total de sus compras. 3. En una tienda de descuento, las personas que van a pagar el importe de su compra llegan a la caja y sacan una bolita de color, que les dir qu descuento tendrn sobre el total de su compra. Determinar la cantidad que pagar cada cliente desde que la tienda abre hasta que cierra. Se sabe que si el color de la bolita es roja, el cliente tendr un 40% de descuento; si es amarilla, un 25% y si es blanca no tendr descuento. 4. La siguiente se llama Conjetura de Ulam en honor al matemtico S. Ulam: Comience con cualquier entero positivo. Si es par divdalo entre 2 y si es impar multiplquelo por 3 y agrguele 1. Obtenga enteros repitiendo sucesivamente el proceso. Al final obtendr el nmero 1, independientemente del entero inicial. Por ejemplo, cuando el entero inicial es 26, la secuencia ser: 26 13 40 20 10 5 16 8 4 2 1 Leer un entero positivo y obtener e imprimir la sucesin de Ulam.
ESTRUCTURA REPETIR (REPEAT)
Se llama Repetir a la estructura algortmica que se ejecuta un nmero definido de veces hasta que la condicin se torna verdadera.
Las reglas para construccin de una estructura usando Repeat, nos dicen que debemos declarar una variable contador que debe inicializarse antes del ciclo e incrementarse dentro del ciclo. A diferencia de la estructura While, la condicin ahora estar colocada al final del bucle para que primero ejecutemos la instruccin y luego preguntamos si la condicin se cumple. Esto quiere decir, que en esta estructura el bucle se realizar por lo menos una vez. Tambin podr observar que la condicin est al revs, porque el bucle se repite hasta que la condicin se cumpla. En el bucle While, la condicin se evaluaba mientras era cierta. Hoy en Repeat se evala mientras es falsa. Igual que el bucle While, el bucle repeat puede ser controlado por contador, por condicin o por banderas.
REPRESENTACIN PSEUDOCODIFICADA:
Espaol Ingls Repetir Repeat Acciones Acciones Hasta que <condicin> Until <condicin>
93
REPRESENTACIN GRFICA:
1. BUCLE REPEAT CONTROLADO POR CONTADOR: Cuando el bucle es controlado por contador, se inicializa la variable contadora, luego se realiza el proceso, se incrementa la variable contadora y despus se coloca la condicin. Como en el bucle While se usa el smbolo menor o menor o igual, aqu usamos el smbolo mayor o mayor o igual; debido a que la condicin es contraria a la del While, y porque se realizar mientras sea falsa. En ese caso decimos que el bucle repeat se realizar por lo menos una vez. 2. BUCLE REPEAT CONTROLADO POR CONDICIN Cuando el bucle es controlado por condicin, si es controlado por el usuario, se continuar cuando el usuario lo indique pero se entrar siempre la primera vez y luego se coloca la condicin para que el usuario decida si contina o sale. Si la condicin es por centinela, al contrario del bucle While, ac realizaremos las acciones hasta que la variable sea igual al centinela. Note que en el bucle While se hace mientras es diferente de centinela, aqu es lo contrario. 3. BUCLE REPEAT CONTROLADO POR BANDERAS. El proceso es igual que en el bucle Mientras, con la diferencia de que la condicin se coloca en la parte de abajo. Generalmente cuando se usan banderas para controlar un bucle, se utilizan operadores lgicos en la condicin. Las banderas tambin se pueden usar como parte de un proceso, para controlar la secuencia de dichos procesos.
TAREA
Investigue 2 ejemplos de bucles Repeat controlados por contador y por condicin. Desarrolle los ejercicios en su cuaderno de tareas. Aplique en cada caso los pasos de la metodologa para la solucin de un problema.
Inicializar variable ndice Variable ndice > valor final acciones Incrementar variable ndice si no
Repeat Until (condicin )
Repetir hasta que (Condicin) 94
EJEMPLO Aplicar los pasos de la metodologa para la solucin de un problema para leer un nmero entero N y calcular el resultado de la siguiente serie: 1 1/2+ 1/3 1/4 +.... +/- 1/N. Resolveremos el problema utilizando bucle Repeat controlado por contador y usando banderas.
DEFINICIN DEL PROBLEMA El mismo enunciado.
ANLISIS DEL PROBLEMA Salidas: suma de los trminos de la serie. Entradas: nmero de trminos para la serie Datos adicionales: ninguno. Clculos: Serie serie +/- (1/I) Seccin de Declaraciones: Var Integer: I,N Real: serie Char: band
PSEUDOCDIGO
Begin Serie 0 I 1 Read (N) band T Repeat If band = T then Serie serie + (1/I) band F else Serie serie (1/I) band T end_if I I + 1 Until (I > N) print (serie) End
TAREA 1. Elabore pseudocdigo para el ejercicio anterior, usando bucle Repeat controlado por condicin. 2. Aplique los pasos de la metodologa para la solucin de un problema para resolver los siguientes ejercicios:
a. Calcular la suma y producto de los nmeros pares comprendidos entre 10 y 30 (ambos inclusive). b. Dados 100 nmeros enteros, encontrar cuntos de ellos son positivos, negativos o nulos. 95
c. Calcular el aumento de sueldo para N empleados de una empresa, bajo el siguiente criterio: Si el sueldo es menor a $650, el aumento es del 15% Si el sueldo est comprendido entre $650 y $1000, el aumento es del 12% Si el sueldo es mayor a $1000, el aumento es del 9%. Imprimir lo siguiente: Cdigo del trabajador, nombre del trabajador, sueldo del trabajador, monto total de la nmina, considerando el nuevo sueldo y el monto total de los aumentos.
EJERCICIOS PRCTICOS Apliquen los pasos de la metodologa para resolver un problema en los siguientes ejercicios. Resolver los ejercicios en parejas, en hojas de papel bond. Indiquen en cada caso, el tipo de bucle Repeat utilizado y su justificacin. 1. En una librera, los clientes hacen pedidos de libros, cuadernos y revistas con las condiciones siguientes: los libros tienen un descuento del 22%, las revistas del 16% y los cuadernos del 10%. Los datos que se ingresan para cada tipo de artculo son: la cantidad pedida, el precio unitario y el tipo de pago. Si el pago es al contado, se tiene un descuento de 6% en cualquiera de los casos. Calcular e imprimir el costo total del pedido considerando el tipo de pago para cada cliente y el total que pagan al final del da N clientes. 2. Determinar la media de ventas de X empleados. Cada empleado hace N ventas, el proceso se debe repetir si el usuario lo requiere. 3. Un vendedor ha hecho una serie de ventas y desea saber cuntas de stas fueron de $200 o menos; cuntas fueron mayores a 200 pero inferiores a 400 y cuntas de 400 o ms. Elabore la informacin para ese vendedor despus de leer los datos de entrada. Considere 1 como fin de datos. 4. Se tienen las calificaciones de un grupo de alumnos que se examinaron en literatura y el profesor necesita calcular e imprimir las calificaciones clasificadas dentro de los rangos siguientes: 0 .. 3.99 4.0 .. 5.99 6.0 .. 7.99 8.0 .. 10.0 -1 para fin de datos
CONVERSIN DE ESTRUCTURAS. Las estructuras repetitivas e iterativas sirven para resolver problemas en los cuales el mismo proceso se repite un nmero determinado de veces. El mismo problema puede resolverse con cualquiera de las tres estructuras estudiadas, siempre y cuando se cumplan ciertos requisitos que corresponden a cada estructura. A continuacin se muestra un cuadro comparativo de las tres estructuras, a tomar en cuenta para resolver un problema. 96
CUADRO COMPARATIVO DE LAS TRES ESTRUCTURAS FOR WHILE REPEAT Se usa cuando conocemos el nmero de veces que se har el bucle Se usa cuando sabemos o no el nmero de veces que se har el bucle Se usa cuando sabemos o no el nmero de veces que se har el bucle Se maneja con contadores Se puede manejar con contadores y con centinelas Se puede manejar con contadores y con centinelas Se inicializa y se incrementa automticamente Si se controla con contadores, se debe inicializar e incrementar Si se controla con contadores, se debe inicializar e incrementar Es una estructura repetitiva Es una estructura iterativa Es una estructura iterativa Pueden usarse banderas o acumuladores Pueden usarse banderas o acumuladores Pueden usarse banderas o acumuladores Tiene su propio smbolo en el Flujograma. No tienen un smbolo en el flujograma, usan el de decisin No tienen un smbolo en el flujograma, usan el de decisin Se realiza cero o ms veces Puede en algunos casos no realizarse ni una vez Se realiza por lo menos una vez La condicin est implcita en la definicin La condicin se sita al inicio del bucle La condicin se sita al final del bucle Se realiza mientras la condicin evaluada es verdadera Se realiza mientras las condicin evaluada es verdadera Se realiza hasta que la condicin evaluada se hace verdadera (se hace cuando es falsa)
TAREA Aplicar los elementos de la fase de Resolucin de un problema para los siguientes ejercicios. Resolver cada problema por las tres estructuras. Hacer tambin prueba manual con pequeos datos de prueba. 1. Una compaa de seguros tiene contratados a n vendedores. Cada uno hace tres ventas a la semana. Su poltica de pagos es que un vendedor recibe un sueldo base y 10% extra por comisiones de sus ventas. El gerente de su compaa desea saber cunto dinero obtendr en la semana cada vendedor por concepto de comisiones por las tres ventas realizadas y cunto tomando en cuenta su sueldo base y sus comisiones. 2. Dados N nmeros enteros como datos, obtener: a) Cuntos nmeros ledos fueron mayores que cero. b) el promedio de los nmeros positivos c) el promedio de todos los nmeros
97
BUCLES ANIDADOS Los bucles son anidados cuando estn dispuestos de tal modo que unos son interiores a otros. Las reglas para construir las estructuras anidadas establecen que la estructura interna debe estar incluida totalmente dentro de la externa y no debe existir solapamiento. Las variables ndices o de control de los bucles toman valores de modo tal que por cada valor de la variable ndice del ciclo externo se debe ejecutar totalmente el bucle interno.
EJEMPLOS: Ejemplo 1: Calcular el factorial de N nmeros enteros ledos de teclado. El problema consistir en realizar una estructura de N iteraciones aplicando el factorial de un nmero. El pseudocdigo es el siguiente:
Begin Read (n) For i = 1 to n do read (numero) fact 1 for j = 1 to numero do fact fact * j End_for Print (El factorial del numero, numero, es, fact ) End_for Fin
FLUJOGRAMA:
Begin n I=1, n, 1 numero fact 1 j=1, numero, 1 fact fact * j fact End 98
Begin Read (n) For i=1 to n do
Read (numero)
fact 1
For j=1 to numero do
fact fact * j
End_for
Print((El factorial del numero, numero, es, Fact)
End_for End
EJEMPLO 2 Imprimir todos los nmeros primos entre 2 y 100 inclusive.
PSEUDOCDIGO:
Begin For i = 2 to 100 do primo T divisor 2 While ( divisor <= sqrt( i ) ) and primo = T do If i mod divisor = 0 then primo F else divisor divisor + 1 End_if End_While If primo = T then Print ( i, ) End_if End_For End
EJERCICIOS DE APLICACIN Complete el ejercicio con su Flujograma y N-S. Diagrama N-S 99
EVALUACIN DEL TEMA A continuacin se le presentan una serie de preguntas, subraye la/las respuesta(s) correcta(s) para cada enunciado. (Tiempo: 45 minutos).
1. Consiste en asignarle al contador un valor y se sita antes y fuera del bucle. a) Totalizacin b) iteracin c) inicializacin
2. Es el conjunto de instrucciones que se ejecuta repetidamente en una estructura. a) Centinela b) Contador c) Bucle
3. Estructura algortmica que se usa frecuentemente cuando se conoce de antemano el nmero de veces que se desea ejecutar las acciones de un bucle. a) While b) For c) Repeat
4. Es cada una de las diferentes pasadas o ejecuciones de todas las instrucciones contenidas en un ciclo. a) iteracin b) lazo o bucle c) Bandera
5. Estructura algortmica que se ejecuta en tanto la condicin evaluada resulta verdadera. a) Repeat b) While c) For
6. Estructura en la cual la condicin se sita al final de la secuencia. a) While b) Repeat c) For
7. Las estructuras Repetir y Mientras se conocen con el nombre de: a) Estructuras Iterativas b) Estructuras Repetitivas c) Banderas
8. Estructura en la cual el bucle contina hasta que la condicin es verdadera. a) While b) For c) Repeat
9. Estructura algortmica que siempre se ejecuta al menos una vez. a) Repeat b) While c) For 10. Variable cuyo valor se incrementa o decrementa en una cantidad constante cada vez que se produce la accin. a) Centinela b) Contador c) Acumulador
11. Campo de memoria cuya misin es almacenar cantidades variables resultantes de sumas sucesivas. a) Contador b) Acumulador c) Bandera
12. Son variables que pueden tomar dos valores durante la ejecucin de un programa como True o False, 1 0. a) Centinelas b) Banderas c) Contadores
13. Estructura en la cual debe haber una condicin que debe ser evaluada antes de entrar al bucle, no se hace en forma automtica. a) For b) Repeat c) While
100
14. La estructura Desde/Para se conoce con el nombre de: a) Estructura Iterativa b) Estructura Repetitiva c) Inicializacin
15. Es un valor que no corresponde al rango de datos vlido y sirve para terminar la ejecucin del bucle. a) Bandera b) Acumulador c) Centinela
16. Es la estructura que no puede utilizar centinelas. a) For b) Repeat c) While
17. Esta estructura posee un contador que se inicializa y se incrementa automticamente. a) While b) Repeat c) For
18. Bucle cuyas iteraciones se conocen y verifican a travs de una variable de control. a) Controlado por contador b) controlado por banderas c) controlado por condicin
19. Mtodo que consiste en preguntar al usuario si existen ms entradas para continuar o terminar el bucle. a) Bucle controlado por centinela b) Bucle controlado por el usuario c) Bucle controlado por bandera 20. Seleccione las variables que se pueden utilizar en una estructura repetitiva (Respuesta mltiple)
contadores
acumuladores
centinelas
banderas
II PARTE. PARA ANALIZAR. Son verdaderas las siguientes afirmaciones?. Responda si o no, marcando con una X en el cuadro respectivo. (Tiempo 10 min.)
Afirmacin Es cierto? SI NO 1. Un acumulador y un contador, siempre se tienen que inicializar con cero para poderlos utilizar.
2. Cuando se tiene un problema donde no sabemos cuntas veces vamos a realizar la accin, siempre tenemos que resolverlo utilizando centinelas; de lo contrario no se puede resolver.
101
3. Las banderas siempre deben inicializarse con False para poderlas utilizar. 4. Los bucles While y Repeat trabajan de la misma forma, pero en forma inversa. 5. El bucle For y el bucle While se utilizan siempre que la condicin resulta verdadera.
III. PARTE. SOPA DE LETRAS
En la siguiente sopa de letras, encontrar 13 trminos estudiados en ste tema. Encierre en crculos las palabras encontradas. (Tiempo 5 min.)
C O N D I C I O N A D R C I A S B A N D E R A I B A C E K O L M I L A T U Y U L A M A G E T J E C T M P S L A N A S E R L M U D A C I C L O F A E A L P L T I M D O U C S E A L E N I T N E C I T R D E C R E M E N T O K C O N T A D O R R C N F O R T U N A D M P L A
TERMINOLOGA APLICADA
Acumulador: es un campo de memoria que suma sobre s misma un conjunto de valores para de esta manera tener la suma de todos ellos en una sola variable. Se utiliza en aquellos casos en que se desea obtener el total acumulado de un conjunto de cantidades, siendo preciso inicializarlo con el valor cero. 102
Bandera: es una variable lgica que se utiliza para conservar el estado (verdadero o falso) de una condicin. El valor del interruptor debe inicializarse antes de comenzar el bucle y debe cambiar su estado (valor) dentro del cuerpo del bucle. Bucle: es un segmento de un algoritmo o programa cuyas instrucciones se repiten un nmero determinado de veces, mientras se cumple una determinada condicin especfica (existe o es verdadera la condicin). Bucle finito: Es el que se procesa muchas veces, segn la condicin lo permita y nos genera una salida. Bucle Infinito: Cuando un bucle se estar repitiendo indefinidamente, ya que no existe una condicin de salida del algoritmo. Contador: es una variable cuyo valor se incrementa o decrementa en una cantidad fija en cada iteracin. Centinela: es un valor especial utilizado para sealar el final de una lista de datos. El valor elegido debe ser totalmente distinto de los posibles valores de la lista, para que se pueda utilizar para sealar el final de la lista. Es decir que no debe pertenecer al rango de datos vlido. Iteracin: Es cada una de las diferentes pasadas o ejecuciones de todas las instrucciones contenidas en el bucle.
BIBLIOGRAFA Fundamentos de programacin. Algoritmos, estructuras de datos y objetos. Luis Joyanes Aguilar. Editorial Mc Graw Hill. Espaa. Metodologa de la programacin. Diagramas de flujo, algoritmos y programacin. Luis Joyanes Aguilar. Editorial Mc Graw Hill. Mxico. Fundamentos de Programacin. Libro de Problemas. Luis Joyanes Aguilar, Luis Rodrguez Baena, Matilde Fernndez Azuela. Editorial Mc Graw Hill. Espaa. Fundamentals of Programming. Student Guide. NIIT. India.
103
TEMA 3. ESTRUCTURAS DE DATOS Y SUBALGORITMOS
CONCEPTOS Todas las variables que se han considerado hasta ahora son de tipo simple. Una variable de tipo simple consiste de una sola caja de memoria y slo puede contener un valor cada vez. Una variable de tipo estructurado consiste en toda una coleccin de casillas de memoria. Los tipos de datos estudiados: entero, real, alfabtico son considerados como datos de tipo simple, puesto que una variable que se define con alguno de estos tipos slo puede almacenar un valor a la vez, es decir, existe una relacin de uno a uno entre la variable y el nmero de elementos (valores) que es capaz de almacenar. En cambio un dato de tipo estructurado, como el arreglo, puede almacenar ms de un elemento (valor) a la vez, con la condicin de que todos los elementos deben ser del mismo tipo, es decir, que se puede tener un conjunto de datos enteros, reales, etc.
3.1.1. Introduccin a las Estructuras de Datos. ESTRUCTURA DE DATOS es una coleccin de datos que se caracterizan por su organizacin y las operaciones que se definen en ella. Los datos estructurados, llamados tambin estructuras de datos, son una coleccin o conjunto de datos simples que tiene el mismo nombre.
LAS ESTRUCTURAS DE DATOS SE CLASIFICAN EN:
a) ESTRUCTURA DE DATOS ESTTICAS: Son aquellas en las que el espacio ocupado en memoria se define en tiempo de compilacin y no puede ser modificado durante la ejecucin del programa. Entre ellas tenemos: Arrays Registros Archivos
b) ESTRUCTURAS DE DATOS DINMICAS: Son aquellas en las que el espacio ocupado en memoria puede ser modificado en tiempo de ejecucin. Corresponden a este tipo: Lineales (Pilas, Colas y listas enlazadas) No lineales (rboles y grafos).
Estas estructuras no son soportadas en todos los lenguajes. La eleccin de la estructura de datos idnea, depender de la naturaleza del problema a resolver, y en menor medida, del lenguaje. Las estructuras de datos tienen en comn que un identificador, nombre, puede representar a mltiples datos individuales.
ARRAYS: Un arreglo (array) es una coleccin de datos del mismo tipo, que se almacenan en posiciones consecutivas de memoria y reciben un nombre comn. Para referirse a un determinado elemento de un array se deber utilizar un ndice, que especifique su posicin relativa en el array. 15
Un arreglo es una coleccin finita, homognea y ordenada de elementos.
15 Tomado de http://www.mailxmail.com/curso-aprende-programar/estructuras-datos-arreglos 3.1 ESTRUCTURAS DE DATOS 104
Finita: Todo arreglo tiene un lmite; es decir, debe determinarse cul ser el nmero mximo de elementos que podrn formar parte del arreglo. Homognea: Esto significa que todos los elementos del arreglo deben ser del mismo tipo. (Todos enteros, todos reales, todos booleanos, etc.) Ordenada: Se puede determinar cul es el primer elemento, el segundo, el tercero,.... y el n-simo elemento. Tambin el orden es significativo, el orden viene dado por el subndice de un vector.
MINI CONTROL DE LECTURA
INVESTIGACIN INDIVIDUAL
1. Investigue cules son las caractersticas de los arreglos. 2. Cmo se clasifican los arreglos segn sus dimensiones. 3. Cules son las operaciones que se pueden realizar con vectores. Escribe ejemplos de cada una.
3.1.2 ARREGLOS EN UNA DIMENSIN. DEFINICION. Estn formados por un conjunto de elementos de un mismo tipo de datos que se almacenan bajo un mismo nombre, y se diferencian por la posicin que tiene cada elemento dentro del arreglo de datos. Cuando se define un arreglo, es necesario hacerlo como una variable. En la parte de declaraciones de variables se utiliza el siguiente formato: NombreVariable: Arreglo[tamao] Tipo de dato Donde: NombreVariable Es el nombre de identificacin de la variable Arreglo Es la palabra reservada que indica que la variable es un arreglo Tamao Es un nmero entero que indica la cantidad de elementos que tendr el arreglo, por ejemplo 10, 20, 50, etc. Tipo de dato Es el tipo de dato que tendr el conjunto de elementos del arreglo que se est definiendo, puede ser Entero, Real, Carcter, etc.
Al declarar un arreglo, se debe inicializar sus elementos antes de utilizarlos. Entonces, para declarar un arreglo tiene que indicar su tipo, un nombre nico y la cantidad de elementos que va a contener. Por ejemplo, las siguientes instrucciones declaran tres arreglos distintos: char nombre[30]; Float costo_partes[50]; Int edad_empleados[100]; Float precios_acciones[25];
A los arreglos en una dimensin se les llama tambin Vectores o Listas. Los vectores se representan de forma lineal, indicando el valor del ndice asociado a cada componente en la parte inferior, y el nombre del arreglo en la parte superior. Estos vectores se pueden representar, como filas o como columnas de datos.
EJEMPLO Sea un vector Calificaciones de 100 componentes: En forma de columna se representara as:
105
Los componentes del vector van de arriba hacia abajo.
En forma de fila se representa as:
CALIFICACIONES
0 1 2 3 4 5 99
Los componentes del vector se recorren de izquierda a derecha. Declaracin del vector de calificaciones: Var calificaciones: array [0..99] of Real O de la otra forma: Real: calificaciones[100]
Para acceder a valores especficos del arreglo, use un valor de ndice que apunte al elemento deseado. Por ejemplo, para acceder al primer elemento del arreglo calificaciones debe utilizar el valor de ndice 0 ( calificaciones[0] ).
INICIALIZACIN Y ASIGNACIN DE VALORES Como se deca anteriormente, antes de utilizar un arreglo es necesario inicializarlo: calificaciones[0]; Para inicializar todos los elementos de una vez, se colocan dentro de un bucle, comnmente una estructura For que va del primer elemento al ltimo que contiene el arreglo. Para asignar un valor a un elemento del arreglo se hace por ejemplo: calificaciones[0] 100;
Cuando se usan arreglos, una operacin comn es usar una variable ndice para acceder a los elementos de un arreglo. Suponiendo que la variable ndice I contiene el valor 3, la siguiente instruccin asigna el valor 400 a valores[3]: valores[I] 400;
EJEMPLO Aplicar las fases para la resolucin de un problema para leer un vector de 20 nmeros enteros y a continuacin escribir en un vector A todos los nmeros negativos y en un vector B todos los positivos o iguales a cero. Imprimir dichos vectores. ANLISIS DEL PROBLEMA Salidas: vectores A y B Entradas: vector de 20 nmeros enteros Datos adicionales: if numero > 0 then positivo else negativo o cero
Seccin de Declaraciones: Var Entero: Num[20], i, j,k,A[20], B[20]
Pseudocdigo:
Begin j 1 k 1 For i=1 to 20 do Read(Num[i]) If (Num[i] >0) then A[j] Num[i] j j + 1 else B[k] Num[i] k k + 1 end_if end_for for i=1 to j do print(A[i]) end_for for i=1 to k do print(B[i]) end_for End
Diagrama N-S
107
FLUJOGRAMA:
no yes Begin j 1 k 1
i=1,20,1 Num[i] Num[i] >0 A[j] Num[i] j j + 1
B[k] Num[i]
k k + 1
i=1, j, 1 A [ i ] i=1, k, 1 B [ i ] End 108
EJERCICIO
Realice prueba manual con 5 datos de prueba.
EJERCICIOS PRCTICOS Apliquen las fases para la resolucin de un problema en los siguientes ejercicios. Trabajen en grupos de 4 y presenten un reporte en hojas de papel bond. 1. Leer dos vectores VEC1 y VEC2 de 20 posiciones cada uno. Se desea imprimir si dichos vectores son iguales. (Se consideran iguales cuando cada elemento de uno es igual a cada elemento del otro). Imprimir los vectores son iguales o los vectores no son iguales, de acuerdo al resultado. 2. Leer un vector Estatura de 30 elementos. Se desea imprimir el promedio de esas estaturas. Imprimir adems, las estaturas iguales o inferiores a la media. 3. Leer un vector de 20 elementos. Se desea ordenar dicho vector en forma ascendente (menor a mayor) e imprimir el vector ordenado.
RBRICA PARA EVALUAR EL TRABAJO EN GRUPO:
Criterios Dominio Bajo 1-4 Dominio Medio 5 - 7 Dominio Alto 8 - 10 Clasificacin Grupal (5 grupos) G1 G2 G3 G4 G5 Anlisis (10%) No identifican todas las partes del anlisis Identifican algunas partes con dificultad o ayuda Identifica adecuadamente las partes del anlisis
Algoritmo (40%) No elaboran el algoritmo de cada ejercicio Elaboran algoritmo en forma incompleta Elabora correctamente los tres elementos del algoritmo
Lgica Aplicada (30%) La lgica utilizada no resuelve el problema La lgica utilizada no es la ms apropiada Completan los ejercicios con buena lgica
Orden y limpieza (10%) El trabajo est desordenado, sucio o ilegible La informacin no est completamente ordenada y aseada Elaboran reporte en forma ordenada y legible.
109
Auto evaluacin (10%) (Es nota individual, cada alumno realiza esta parte). Calificacin total
TAREA
Para los siguientes ejercicios realice anlisis del problema y luego elabore pseudocdigo y Flujograma.
1. Calcular la suma de todos los elementos de un vector de dimensin 50, as como su media aritmtica y su producto. 2. Hacer diferentes listados de una lista de 15 nmeros segn el siguiente criterio: Si nmero >=0 y <50, ponerlo en lista1 Si nmero >=50 y <100, ponerlo en lista2 Si nmero>=100 y <=150, ponerlo en lista3 3. Investigue qu son los nmeros de Fibonacci. Genere el algoritmo para los K primeros nmeros de Fibonacci. 4. Dados dos vectores de tipo entero A y B, calcular el producto de dichos vectores. 5. Suponga que en una eleccin hubo 12 candidatos. Los votos para cada candidato se teclean de manera desorganizada por ej. 1 5 7 5 1 12 10 7 .... final de datos 1. Encontrar: a. El nmero de votos de cada candidato al final de la eleccin. b. El candidato ganador, el nmero de votos que obtuvo y el porcentaje correspondiente del total de la eleccin. (Suponemos que el candidato ganador no empat en nmero de votos con otro candidato).
3.1.3 ARREGLOS EN DOS DIMENSIONES
Una matriz es una tabla con nmeros distribuidos en filas y columnas de forma que todas las filas tienen el mismo nmero de elementos y lo mismo para todas las columnas. Es un conjunto de datos homogneo, finito y ordenado, donde se hace referencia a cada elemento por medio de dos ndices. El primero de los ndices se utiliza generalmente para indicar los renglones (filas) y el segundo para indicar columnas, por lo cual cada componente de la matriz se direcciona mediante su Nombre, seguido de los dos ndices separados por coma y entre parntesis. Tambin puede definirse como un arreglo de arreglos. La dimensin u orden de una matriz es una forma de definir el nmero de filas y de columnas que esta tiene. Si tiene m filas y n columnas, se dice que la dimensin u orden de la matriz es de m x n. Esto quiere decir que internamente en memoria se reservan MxN posiciones consecutivas para almacenar todos los elementos del arreglo. A los elementos de una matriz se les denota por A ij siendo i el n de fila y j el n de columna. As el elemento a 34 sera el elemento de la tercera fila que ocupa la cuarta columna.
110
REPRESENTACIN GRFICA DE MATRICES: Se representa de forma tabular, de igual forma a la utilizada en Matemtica, situando las filas horizontalmente y las columnas en forma vertical.
a 11 a 12 .... a 1N
a 21 ... ... ..... .... .... a M1 a M2 .... a MN
DECLARACIN DE UNA MATRIZ
Id_ar r egl o=ar r egl o[l i mi nf . . l i msup, l i mi nf c. . l i msupc] de t i po
Filas Columnas
Por ejemplo: 1 I M 1 J N
Se representa en forma de una tabla: 1 2 J N ....... ....... ....... ........ ........
Pseudocdigo para el recorrido por filas: Const M=valor1 N= valor2 Tipo Array[1..M,1..N] de real:matriz Var Matriz: A Desde i = 1 hasta M hacer Desde j = 1 hasta N hacer Escribir (A[i,j]) Fin_desde Fin_desde
El recorrido por columnas se hace de manera similar, invirtiendo el sentido de los ndices. Desde j = 1 hasta N hacer Desde i = 1 hasta M hacer Escribir (A[i,j]) Fin_desde 1 2
I M A = 111
Fin_desde El nmero de elementos que contendr una fila viene dado por U1-L1+1 (Valor mayor valor menor +1) Igualmente, el nmero de elementos para la columna es U2-L2+1 As, el nmero total de elementos de la tabla es (U2-L2+1)*(U1-L1+1)
MINI CONTROL DE LECTURA
INVESTIGACIN INDIVIDUAL Investigue los siguientes conceptos y ponga ejemplo de cada uno. Haga pseudocdigo para representar el ejemplo.
EJEMPLO Se tiene informacin sobre las calificaciones de 6 exmenes de un grupo de 30 alumnos. Los datos sobre estos exmenes se proporcionan de la siguiente manera:
Cal 1,1 Cal 1,2 ............ Cal 1,6
Cal 2,1 Cal 2,2 ............ Cal 2,6
....................... Cal 30,1 Cal 30,2 ........ Cal 30,6
Donde Cali,j es una variable real que expresa la calificacin que obtuvo el alumno i en el examen j. 1 i 30, 1 j 6 Calcular lo siguiente: a) el promedio de calificaciones de cada uno de los 6 exmenes b) el promedio de cada alumno c) el tipo (nmero) de examen que tuvo el mayor promedio de calificacin. Escriba tambin dicho promedio.
El pseudocdigo para el ejemplo es el siguiente: Begin For i=1 to 30 do For j=1 to 6 do Print (Escriba la calificacin del alumno,i, en el examen,j) Read (cal[ i,j ]) //lectura de las calificaciones de los 6 exmenes de los 30 alumnos End_for 112
End_for //clculo del promedio de calificaciones de cada uno de los exmenes For j=1 to 6 do sum 0 For i=1 to 30 hacer sum sum + cal[i,j] end_for prom[j] sum/30 print(promedio examen, j , prom[j]) End_for
//clculo del promedio de cada alumno For i=1 to 30 do sum 0 For j=1 to 6 do sum sum + cal[i,j] End_for print(promedio del alumno , i, sum/6) End_for
//clculo del tipo de examen que tuvo el mayor promedio de calificacin. Examen 1 promayor prom[1] For j=2 to 6 do if promayor < prom[j] then promayor prom[j] Examen j End_if End_for Print (el examen, Examen, obtuvo el mayor promedio=, promayor) End E X M E N E S 1 2 3 4 5 6 1 Cal 1,1 Cal 1,2 Cal 1,3 Cal 1,4 Cal 1,5 Cal 1,6
EJERCICIOS PRCTICOS Aplicar los elementos de la fase de Resolucin de un problema para los siguientes ejercicios. Resuelvan en parejas y entreguen su reporte escrito en hojas de papel bond.
1. Se tiene una tabla T de orden N. Calcular la suma de sus elementos. 2. Sumar el nmero de elementos positivos y el de negativos de una tabla T de n filas y m columnas. 3. Sea A una matriz 5X4, de enteros positivos. Escribir la fila que contiene el nmero menor y la columna que contenga el nmero mayor. 4. Se tienen dos matrices A y B. Se desea saber si son idnticas o no. Recuerde que debe leer el nmero de filas y columnas de dichas matrices.
TAREA Aplicar los elementos de la fase de Resolucin de un problema para los siguientes ejercicios. Resuelva en su cuaderno de tareas. 1. Determinar si una matriz es simtrica (Si Ai,j = Aj,i). Como salida da un valor booleano. 2. Visualizar la matriz transpuesta de una matriz M de 6X7 elementos. 3. Dada una matriz A(NXN), escribir la diagonal de esa matriz. 4. Sean A(mXn) y B(n) dos arreglos de dos y una dimensin respectivamente. Construya el algoritmo que asigne valores a A a partir de B teniendo en cuenta los siguientes criterios: a) A[i,j]=B[i] si i<=j b) A[i,j]=0 si i>j Para 1 M 30 1 N 20 y A[1..M,1..N], B[1..N]
MINI CONTROL DE LECTURA
Traslade el nmero de la respuesta correcta a la casilla de en medio segn corresponda.
1. Escalar Matriz que multiplicada por la original nos da la identidad. 2. Diagonal Matriz donde todos sus elementos son ceros. 3. Simtrica Matriz que tiene todos sus elementos nulos, excepto los de la diagonal principal que son iguales. 4. Nula Matriz resultante de intercambiar filas por columnas. 5. Inversa Matriz donde todos sus elementos son ceros, excepto los de la diagonal principal. 6. Identidad Matriz cuadrada que es igual a su transpuesta y sus i,j son iguales a sus j,i. 7. Rectangular Matriz que tiene unos en su diagonal principal y ceros en las dems posiciones. 8. Cuadrada En una matriz es la que est formada por los elementos donde coincide el nmero de fila con el de columna: i=j 9. Diagonal principal Matriz cuyo nmero de filas es igual al nmero de columnas 10. Transpuesta Matriz de orden mxn donde el nmero de filas es distinto del nmero de columnas 114
Una celda es la interseccin de una fila con una columna.
3.1.4 CADENAS DE CARACTERES
Una cadena de caracteres (string en ingls) es un conjunto de caracteres incluido el espacio en blanco- que se almacenan en un rea contigua de la memoria. Es una sucesin de caracteres que pueden ser letras, nmeros o caracteres especiales. Su longitud puede variar de 0 a 255 caracteres. Generalmente las cadenas de caracteres se almacenan en arreglos para su fcil manipulacin. Se conocen en este caso como arreglos de caracteres.
INVESTIGACIN INDIVIDUAL Investigue las funciones bsicas para el manejo de cadenas. Entre ellas tenemos funciones para asignacin, comparacin, bsqueda, extraccin, concatenacin. Escribe el nombre de la funcin y para qu se usa. Escribe ejemplos. Elabora un reporte en tu cuaderno de tareas.
Las variables de cadena se dividen en: Estticas. Su longitud se define antes de ejecutar el programa y no puede cambiarse a lo largo de este. Semiestticas. Su longitud puede variar durante la ejecucin del programa, pero sin sobrepasar un lmite mximo declarado al principio. Dinmicas. Su longitud puede variar sin limitacin dentro del programa. Segn el cdigo ASCII hay un orden de caracteres, as A es menor que C. El valor de A es 65 y el de C es 67
Representacin: Una cadena tipo carcter (char) se representa entre comillas simples. Ejemplo: a. Se puede referir a un solo elemento de una cadena. Una cadena tipo arreglo de caracteres (string) se representa entre comillas dobles: hola. Declaracin: char c = 'a'; char str[5] = "hola";
EJEMPLOS 1. El siguiente pseudocdigo sustituye las e por *.
Var: char str[80] Begin Print (Digite una palabra:) RECUERDE EL CONCEPTO: Se llama matriz de orden "m n" a un conjunto rectangular de elementos aij dispuestos en m filas y en n columnas. El orden de una matriz tambin se denomina dimensin o tamao, siendo m y n nmeros naturales. Tomado de www.utpl.edu.ec/eva/descargas/material/184/G15103.7.pdf 115
Read (str) For i=1 to length(str) do if str[i] = e entonces str[i] = * end_if End_for Print (str) End
En el ejemplo, la funcin length devuelve la longitud de la cadena leda. Al declarar la cadena, se hace con char y el tamao mximo de la cadena es 80 caracteres. 2. Se desea eliminar los blancos de una frase dada terminada en un punto. Se supone que es posible leer los caracteres de la frase de uno en uno. Pseudocdigo: Var char f[80] Begin i 1; j 0 f[i] getchar( ) //getchar( ) es una funcin que permite la lectura de un carcter Repeat if f[i] < > then j j + 1 g[j] f[i] End_if i i +1 f[i] getchar() Until f[i] = . // escritura de la nueva frase g For i = 1 to j do print (g[i]) //no avanzar lnea End_for End
En el ejemplo, se ha utilizado la funcin getchar() que lee un nico carcter a la entrada. La estructura Repeat permite leer todos los caracteres hasta que encuentre un punto, que el usuario deber introducir para finalizar la entrada.
MINI CONTROL DE LECTURA
Traslade el nmero de la respuesta correcta a la casilla de en medio segn corresponda. 1. Concat() Copia una cadena dentro de otra. 2. Strreverse() Encuentra el punto medio de una cadena. 3. Sub() Compara dos cadenas c1 y C2; devuelve 0 si C1=C2, 1 si C1>C2 y -1 si C1<C2. 4. Getchar() Devuelve la longitud de una cadena. 5. Mid() Lee un carcter de una cadena. 116
6. Pos() Convierte una cadena de mayscula a minscula. 7. Strcpy() Une varias cadenas de caracteres en una sola, conservando el orden de los caracteres de cada una. 8. Length() Extrae una subcadena de una cadena a partir de una posicin y nmero de caracteres dados. 9. Strlwr() Invierte el contenido de una cadena. 10. Strcmp() Busca una subcadena dentro de una cadena y si la encuentra devuelve la posicin donde comienza o cero si no la encuentra.
EJERCICIOS PRCTICOS Para los siguientes ejercicios, elaboren pseudocdigo. Trabajar en parejas y entregar reporte escrito en pginas de papel bond.
1. Se desea leer una cadena de caracteres y escribirla en un arreglo A de forma invertida, utilizando operaciones con cadenas. No usar step ni strreverse(). Var cadena: string[80]. 2. Leer una cadena y desplegar si es palndromo o no. Investiga qu es un palndromo. Ejemplo: reconocer.
3.1.5 REGISTROS Un registro es un dato estructurado, formado por elementos lgicamente relacionados, que pueden ser del mismo o de distinto tipo, a los que se denomina campos. Los campos de un registro podrn ser de un tipo estndar o de otro tipo registro previamente definido (Se pueden definir registros dentro de otros). Anteriormente hemos trabajado con los arreglos, donde aprendimos que estos necesariamente deben ser del mismo tipo. La ventaja del uso de registros es que pueden contener datos de diversos tipos.
EJEMPLO En un almacn se pueden retener los datos de sus productos en registros de acuerdo al formato mostrado en la siguiente figura:
No_Prod Nombre Descripcin precio
Cantidad
Integer char [20] char [50] Real Integer
Este registro puede ser definido de la siguiente manera:
Struct Tipo_Estructura { Int No_Prod Char Nombre[20] Char Descripcin[50] Real Precio 117
Int Cantidad } datos
Donde Tipo_Estructura es el nombre del nuevo tipo de dato que hemos creado. Datos es una variable de tipo registro. La forma de acceder a los campos de la estructura es la siguiente: Variable.campo Donde variable es el nombre de la variable de tipo estructura que hemos creado y campo es el nombre de la variable que forma parte de la estructura. Lo veremos mejor con un ejemplo, basado en la estructura creada anteriormente: Datos.descripcin= articulo_del_hogar
Una estructura puede ser definida como miembro de otra estructura. En tales casos, la declaracin de la estructura interna debe aparecer antes que la declaracin de la estructura externa.
EJEMPLO Consideremos el caso de una cuenta de ahorros. Se definirn dos estructuras, una llamada fecha y otra llamada cuenta. Cuenta contiene en forma anidada a fecha, de tal manera que nos forma una estructura como la siguiente:
La definicin sera de la forma siguiente: CUENTA Num_cuenta Tipo_cuenta Nombre[80] saldo ultimopago mes dia ao miembro miembro miembro miembro Miembro estructura miembro miembro miembro Estructura 118
Struct fecha { Int mes Int dia Int ao } Struct cuenta { Int num_cuenta Char tipo_cuenta Char nombre[80] Float saldo Struct fecha ultimopago } antiguocliente, nuevocliente
Note que ultimopago es de tipo fecha que es una estructura. Tambin, fecha debe preceder a cuenta. Un ejemplo de uso de estas estructuras sera: antiguocliente.ultimopago.mes=6
EJERCICIOS DE APLICACIN
1. Plantea un problema utilizando la estructura anterior, para x clientes. Elabora el pseudocdigo correspondiente. 2. En base a la siguiente estructura sobre datos de una persona, elabora el pseudocdigo para leer los datos de la estructura y luego desplegar los resultados.
Struct personas { Char cuenta[25] Char nombres[25] Char apellidos[25] Char direccin[45] Int edad Char sexo[25] Char telfono[10] Char pas[25] } datos 119
3. Elabora el pseudocdigo para capturar la informacin del currculum vitae de una persona.
Resuelve en tu cuaderno de tareas.
3.2.1 Introduccin a la Modularidad La programacin modular permite la descomposicin de un problema en un conjunto de subproblemas independientes entre s, ms sencillos de resolver y que pueden ser tratados separadamente unos de otros. Gracias a la modularidad se pueden probar los subprogramas o mdulos de manera independiente, depurndose sus errores antes de su inclusin en el programa principal y almacenarse para su posterior utilizacin cuantas veces se precise. Uno de los elementos principales de programacin utilizados en la representacin de cada mdulo es la subrutina. Una subrutina es un conjunto de instrucciones de cmputo que realizan una tarea. Un programa principal llama a estos mdulos a medida que se necesitan. Un mdulo es un segmento, rutina, subrutina, subalgoritmo o procedimiento, que puede definirse dentro de un algoritmo con el fin de ejecutar una tarea especfica y puede ser llamado o invocado desde el algoritmo principal cuando sea necesario.
CUNDO ES TIL LA MODULARIZACIN? Este enfoque de segmentacin o modularizacin es til en dos casos: 1. Cuando existe un grupo de instrucciones o una tarea especfica que deba ejecutarse en ms de una ocasin. 2. Cuando un problema es complejo o extenso, la solucin se divide o segmenta en mdulos que ejecutan partes o tareas especficas.
INVESTIGUE Y COMPLETE
1. Cules son las ventajas de la programacin modular? Escriba en su cuaderno lo que investig. 2. Qu son procedimientos y funciones. Semejanzas y diferencias entre ambos. 3. Qu son funciones estndar y cules son definidas por el usuario. 4. Investigue qu son variables globales, locales, paso de parmetros, parmetros por valor, parmetros por referencia o variables, parmetros actuales o reales y parmetros formales. Luego complete el siguiente prrafo.
1. ___________________________ Son un tipo de variables en un mdulo a los que se pueden pasar valores desde el exterior del mdulo. Se declaran en la cabecera del mdulo y son una copia de la variable original. Son una especie de variables locales. 2. ___________________________ son las variables que permanecen activas durante todo el programa y se declaran en la cabecera del programa; se crean al iniciarse ste y luego se destruyen de la memoria al finalizar. Pueden utilizarse en cualquier procedimiento o funcin. 3.2 MODULARIDAD 120
3. ___________________________ Son las variables declaradas en un mdulo y existen solamente en el mdulo en el cual han sido declaradas, al salir de l desaparecen de la memoria. 4. _____________________________ Son un tipo de variables que se pasan en una llamada al mdulo y son una especie de variable global que traslada su valor a la variable del mdulo, modificando o no su valor dependiendo de la declaracin de la variable destino. 5. _____________________________ Son los que pueden recibir valores pero que no pueden devolverlos. Es una variable global que se conecta con una variable local mediante el envo de su valor, despus de lo cual ya no hay relacin. Lo que sucede a la variable local no afectar a la global. 6. _____________________________ Es cuando se hace una llamada a un procedimiento desde el programa principal, mediante el envo de un valor en una variable global hacia una local. 7. ______________________________ Son los que pueden recibir y devolver valores. Son variables globales que se conectan con una local a travs de su contenido; al establecerse dicha conexin las variables se convierten en sinnimos y lo que afecte a la variable local, le afectar a la variable global. 8. ______________________________ Son subprogramas o mdulos que forman parte de un programa y realizan una tarea especfica. Contienen variables locales y pueden devolver uno, varios o ningn resultado. 9. ___________________________ Es una estructura autnoma que se usa para devolver un solo valor y se llama a s misma para devolver el resultado. No necesita variables adicionales para devolver el resultado. 10. __________________________ Son aquellas que existen en las libreras del programa y que solo se requiere llamarlas con sus parmetros correspondientes y hacer referencia a la librera correspondiente, para poderlas utilizar.
3.2.2 PROCEDIMIENTOS.
EJEMPLOS 1. Ejemplo de uso de variables globales en procedimientos o funciones. Observe que hay un mdulo cambiar y un programa principal. Program global var integer: x Begin //programa principal x 0 cambiar print (x) End
121
Mdulo cambiar //Declaracin del mdulo Begin x 1 End Observe que la variable X est definida como global, por lo tanto la salida ser 1. Se entra al mdulo y se modifica la variable global.
2. Ejemplo de uso de variable local.
Program local var integer: x Begin //programa principal x 0 cambiar print (x) End
Mdulo cambiar //Declaracin del mdulo Var integer: x //variable local Begin x 1 End
Observe que ahora hay dos variables con el mismo nombre. Una local y otra global. Cuando se da ese caso, en un mdulo la que prevalece es la local. Por lo tanto la X global permanece invariable. Por lo tanto la salida ser 0. 3.2.3 FUNCIONES.
EJEMPLOS
1. Calcular el factorial de n nmeros enteros, utilizando funciones.
Function factorial (integer: n):integer var integer: i, factorial Begin If n <=1 then factorial <-- 1 else factorial <-- 1 for i = 1 to n do factorial <-- factorial * 1 end_for end_if End
122
2. Evaluar la funcin f = x! / (y!(x-y)!) //utilizando la funcin anterior Program hallarf var integer: x, y real: f Begin read (x,y) f <-- factorial (x)/(factorial (y)* factorial (x-y)) print (El valor de f es:, f) End
3. Escribir un algoritmo que permita el clculo del MCD de dos nmeros por el algoritmo de Euclides Program MaximoComunDivisor var integer: num1, num2
function mcd (integer:mayor, menor):integer var integer: resto, aux Begin Repeat resto <-- mayor mod menor if resto = 0 then mcd <-- menor else aux <-- mayor mayor <-- menor menor <-- aux mod menor end_if Until ( resto =0) End
//Programa principal Begin Limpiar pantalla print (introduzca dos enteros:) Read (num1,num2) print (maximo comun divisor de, num1, y, num2, es:) if num1 >= num2 then print (mcd(num1,num2)) else print (mcd(num2,num1)) end_if End
Pruebas:
123
2 3 2 64 28 8 4 8 4 0
EJERCICIOS DE APLICACIN
Realice prueba manual con los dos nmeros anteriores: 28 y 64.
EJERCICIOS PRCTICOS Aplicar las fases para la resolucin de un problema en los siguientes ejercicios. Resolverlos utilizando procedimientos o funciones. Trabajar en grupos de 4 y presentar un reporte en papel bond. 1. Una matriz cuadrada se dice que es simtrica cuando A[i,j] = A[j,i] para todo par de ndices i y j, dentro de los lmites de la matriz. Escriba un programa que indique si una matriz cuadrada es simtrica o no. 2. Leer un nmero y buscarlo en una matriz N X M. Escribir cuntas veces se encuentra. 3. Encontrar el producto de matrices usando procedimientos. 4. Encontrar la suma de dos matrices A y B usando procedimientos. 5. Se tiene una matriz 4 X 3 y se desea encontrar su matriz transpuesta.
3.3.1 MTODOS DE ORDENAMIENTO Uno de los procedimientos ms comunes y tiles en el procesamiento de datos, es la clasificacin u ordenacin de los mismos. Se considera ordenar al proceso de reorganizar un conjunto dado de objetos en una secuencia determinada. 16
Cuando se analiza un mtodo de ordenacin, hay que determinar cuntas comparaciones e intercambios se realizan para el caso ms favorable, para el caso medio y para el caso ms desfavorable. Para el caso del ordenamiento, el problema consiste en ordenar el vector en forma ascendente (de menor a mayor). Si se quisiera trabajar con ordenamiento descendente los cambios seran mnimos.
16 Tomado de www.mitecnologico.com/.../MetodosDeOrdenamientoYBusqueda 3.3 ORDENAMIENTO Y BSQUEDA 124
Desordenada Ordenada Ordenada (ascendente) (descendente) Existen varios mtodos para ordenamiento, clasificados en tres formas: Intercambio Seleccin Insercin En cada familia se distinguen dos versiones: un mtodo simple y directo, fcil de comprender pero de escasa eficiencia respecto al tiempo de ejecucin, y un mtodo rpido, ms sofisticado en su ejecucin por la complejidad de las operaciones a realizar, pero mucho ms eficiente en cuanto a tiempo de ejecucin. En general, para arreglos con pocos elementos, los mtodos directos son ms eficientes (menor tiempo de ejecucin) mientras que para grandes cantidades de datos se deben emplear los llamados mtodos rpidos.
EJEMPLO Uso de algoritmos de Intercambio directo mediante el Mtodo de la Burbuja. Aunque no es muy eficiente para ordenar listas grandes, es fcil de entender y muy adecuado para ordenar una pequea lista de unos 100 elementos o menos.
Una pasada por la ordenacin de burbujeo consiste en un recorrido completo a travs del arreglo, en el que se comparan los contenidos de las casillas adyacentes, y se cambian si no estn en orden. La ordenacin por burbujeo completa consiste en una serie de pasadas (burbujeo) que termina con una en la que ya no se hacen cambios porque todo est en orden. Supngase que estn almacenados cuatro nmeros en un arreglo con casillas de memoria de x[1] a x[4]. Se desea disponer esos nmeros en orden creciente. La primera pasada de la ordenacin por burbujeo hara lo siguiente: Comparar el contenido de x[1] con el de x[2]; si x[1] contiene el mayor de los nmeros, se intercambian sus contenidos. Comparar el contenido de x[2] con el de x[3]; e intercambiarlos si fuera necesario. Comparar el contenido de x[3] con el de x[4]; e intercambiarlos si fuera necesario. Al final de la primera pasada, el mayor de los nmeros estar en x[4].
34 28 28 28 28 34 34 34 43 43 43 15 15 15 15 43
Al final de la segunda pasada, los ltimos dos elementos estarn ordenados como se muestra:
28 28 28 28 34 34 15 15 15 15 34 34 43 43 43 43
125
Al final de la tercera pasada, los ltimos tres elementos estarn ordenados como se muestra:
28 15 15 15 15 28 28 28 34 34 34 34 43 43 43 43
Ntese que el arreglo ya qued ordenado, sin embargo, se hace una pasada ms porque la computadora no advierte que el arreglo est en orden hasta que ocurre una pasada sin intercambios.
15 15 15 15 28 28 28 28 34 34 34 34 43 43 43 43
La ordenacin por burbujeo debe su nombre a la forma en que ascienden los nmeros ms pequeos como si fueran burbujas, hasta la parte superior; mientras que los ms grandes descienden cayendo hasta el fondo. En cada pasada del mtodo, se va ubicando el nmero ms grande en su lugar correcto, uno cada vez; aunque puede darse el caso en que se coloquen ms de ellos en su lugar por pura casualidad.
EJEMPLO
Se tiene el siguiente pseudocdigo para ordenar un vector de nmeros enteros:
Begin Read(n) For i = 1 to n do read ( A[i] ) End_for For i = n to 1 step -1 do For j=1 to j < i do if ( A[j] > A[j+1] ) then Aux A[j] A[j] A[j+1] A[j+1] Aux End_if end_for end_for for i = 1 to n do print ( A[i] ) end_for End 126
3.3.2 MTODOS DE BSQUEDA La bsqueda como su nombre lo indica, es una operacin que tiene por objeto localizar un elemento dentro de una estructura de datos. Esto puede resultar muy til cuando se est trabajando con grandes cantidades de datos almacenados en arreglos y resulta necesario determinar si un arreglo contiene un valor que coincide con algn valor clave o buscado. Para los arreglos en una dimensin o listas, encontramos dos tcnicas que utilizan las dos formas de acceso a sus elementos, ya sea secuencial o acceso directo; dichos mtodos son: bsqueda lineal o secuencial y bsqueda binaria.
Bsqueda Secuencial: La bsqueda secuencial es la forma ms simple para buscar un elemento en un arreglo. Consiste en que dado un valor clave a ser buscado, se va comparando con cada uno de los elementos del arreglo hasta encontrarlo. Se utiliza normalmente cuando el array no est ordenado. Se empieza con la primera casilla del arreglo y se observa una casilla tras otra hasta que se encuentra el elemento buscado o se han visto todas las casillas. El resultado de la bsqueda es un solo valor, y corresponde a la posicin del elemento buscado (si se encuentra) o cero (si no se encuentra). Dado que el arreglo no est en ningn orden en particular, existe la misma probabilidad de que el valor se encuentra ya sea en el primer elemento, como en el ltimo. Por lo tanto, en promedio, el programa tendr que comparar el valor buscado con la mitad de los elementos del arreglo. El mtodo de bsqueda lineal funciona bien con arreglos pequeos o para arreglos no ordenados. Si el arreglo est ordenado, se puede utilizar la tcnica de alta velocidad de bsqueda binaria, donde se reduce sucesivamente la operacin eliminando repetidas veces la mitad de la lista restante.
Bsqueda Binaria. La bsqueda binaria es el mtodo ms eficiente para encontrar elementos en un arreglo ordenado. El proceso comienza comparando el elemento central del arreglo con el valor buscado. Si ambos coinciden finaliza la bsqueda. Si no ocurre as, el elemento buscado ser mayor o menor en sentido estricto que el central del arreglo. La bsqueda se reduce a la mitad, pues ahora examinaremos ya sea la parte izquierda o la derecha del punto central, dependiendo si el elemento buscado es mayor o menor que el de en medio. Se procede a hacer bsqueda binaria en el nuevo sub array siguiendo el mismo proceso. Se contina de la misma forma, hasta terminar de dividir el arreglo en sub arreglos.
EJEMPLO Dado un arreglo de nmeros enteros, se desea encontrar el mayor y el menor. Imprimir adems la posicin donde se encuentran.
Begin 127
print ( Digite cuntos nmeros son: ) read (n) for i = 1 to n do print (Digite el nmero: , i) read ( num[ i ] ) end_for Mayor num[1] Menor num[1] Pos_may 1 Pos_men 1 For i = 1 to n do If (num[i] > mayor) then Mayor num[i] Pos_may i else If (num[i] < menor) then Menor num[i] Pos_men i End_if End_if End_for print ( El mayor es , Mayor, y su posicin es, Pos_may) print ( El menor es , Menor, y su posicin es, Pos_men) End
TAREA 1. Investigue dos mtodos de ordenamiento y dos mtodos de bsqueda. Elabore el pseudocdigo para cada uno y una corrida manual. 2. Elabore el pseudocdigo para eliminar todos los nmeros duplicados de una lista. Imprimir la lista sin duplicados.
EVALUACIN FINAL DE TAREA SIGNIFICATIVA
La siguiente rbrica es para evaluar su trabajo final (Tarea significativa del mdulo.
Nombre del Evaluado: ____________________________________________ Nombre del evaluador: ___________________________________________ Ttulo de la Tarea: ____________________________________________________________ Fecha de evaluacin: ________________________
OBJETIVO: Evaluar la aplicacin de conocimientos adquiridos durante el mdulo, en la elaboracin de una tarea significativa.
128
Para su valoracin se establece una escala numrica que contiene 10 aspectos o criterios para un total de 100 puntos y cuyo valor porcentual del total asignado al mdulo es del 30% de la prctica.
La escala numrica tiene 5 opciones para evaluar los aspectos a observar: 5. Excelente 4. Muy Bueno 3. Bueno 2. Regular 1. Deficiente
CRITERIOS DE EVALUACIN VALORACIN 5 4 3 2 1 1. Presenta documento con portada, ndice, introduccin, objetivos y definicin del problema con orden y aseo
2. Elabor correctamente la planeacin de la solucin 3. Realiz descripcin completa de variables 4. Para la solucin del problema aplic diferentes estructuras y tcnicas utilizadas en clase
5. Present algoritmo general 6. Elabor Flujograma y Diagrama N-S 7. Elabor corrida manual con diferentes datos de prueba 8. Demuestran dominio del tema en forma Individual 9. Demuestran creatividad y buen desarrollo de lgica 10. El documento se entreg con puntualidad, respetando reglas ortogrficas y de redaccin.
Total de puntos obtenidos
TERMINOLOGA APLICADA
Burbuja: Mtodo de ordenamiento bastante comn y eficiente para pocos elementos. La idea bsica subyacente en el ordenamiento de burbuja es pasar a travs del arreglo de datos varias veces en forma secuencial. Cada paso consiste en la comparacin de cada elemento en el arreglo con su sucesor (x[i] con x[i+1]) y el intercambio de los dos elementos si no estn en el orden correcto 129
Estructura de datos: son una coleccin de datos cuya organizacin se caracteriza por las funciones de acceso que se usan para almacenar y acceder a elementos individuales de datos. Funcin: es un subprograma que recibe como argumentos o parametros, datos de tipos numerico o no numerico, y devulve un nico resultado. Esta caracterstica le diferencia escencialmente de un procedimiento. Mdularidad: Propiedad que permite subdividir una aplicacin en partes ms pequeas (llamadas mdulos), cada una de las cuales debe ser tan independiente como sea posible de la aplicacin en s y de las restantes partes. Procedimiento: es un subprograma que realiza una tarea especfica. Puede recibir cero o mas valores del programa que llama y devolver cero o mas valores a dicho programa. Registro: es la unidad bsica de informacin en aplicaciones comerciales o que involucren cantidades masivas de datos. El registro es una estructura formada por un nmero fijo de componentes, denominados campos. A diferencia del arreglo, las componentes o campos pueden ser de tipos diferentes. String: Las cadenas de caracteres permiten la manipulacin de textos. Generalmente, se considera que un string no es ms que un array de caracteres. Por esa razn, se suele relacionar el concepto de string con el de array.
BIBLIOGRAFA
Fundamentos de Programacin. Luis Joyanes Aguilar. Editorial Mc Graw Hill. Mxico Metodologa de la Programacin. Diagramas de Flujo, algoritmos y programacin. Luis Joyanes Aguilar. Editorial Mc Graw Hill. Mxico. Fundamentos de Programacin. Libro de Problemas. Luis Joyanes Aguilar, Luis Rodrguez Baena y Matilde Fernndez Azuela. Editorial Mc Graw Hill. Espaa. Fundamentals of Programming. Student Guide. NIIT. India.
SITIOS DE INTERNET: Modularidad http://www.mailxmail.com/curso-aprende-programar/modularidad-procedimientos-funciones