Source: https://es.scribd.com/doc/91539311/Fundamentos-de-Programacion-Algoritmos-JB
Timestamp: 2016-05-29 03:16:03+00:00

Document:
SubirSign inJoinBooksAudiobooksComicsSheet MusicEditors' Picks BooksHand-picked favorites from our editorsEditors' Picks AudiobooksHand-picked favorites from our editorsEditors' Picks ComicsHand-picked favorites from our editorsEditors' Picks Sheet MusicHand-picked favorites from our editorsTop BooksWhat's trending, bestsellers, award-winners & moreTop AudiobooksWhat's trending, bestsellers, award-winners & moreTop ComicsWhat's trending, bestsellers, award-winners & moreTop Sheet MusicWhat's trending, bestsellers, award-winners & moreCategoriesArts & IdeasBiography & MemoirBusiness & LeadershipChildren'sComputers & TechnologyCooking & FoodCrafts & HobbiesFantasyFiction & LiteratureHappiness & Self-HelpHealth & WellnessHistoryHome & GardenHumorLGBTMystery, Thriller & CrimePolitics & EconomyReferenceReligionRomanceScience & NatureScience FictionSociety & CultureSports & AdventureTravelYoung AdultCategoriesArts & IdeasBiography & MemoirBusiness & LeadershipChildren'sComputers & TechnologyCooking & FoodFantasyFiction & LiteratureHappiness & Self-HelpHealth & WellnessHistoryHome & GardenHumorLGBTMystery, Thriller & CrimePolitics & EconomyReferenceReligionRomanceScience & NatureScience FictionSociety & CultureSports & AdventureTravelYoung AdultCategoriesAdaptationsChildren’sCrime & MysteryFictionHumorMangaNonfictionRomanceSciFi, Fantasy & HorrorSuperheroesYoung AdultPublishersArcanaArchie ComicsBOOM! StudiosDynamiteIDW PublishingKingstone ComicsMarvel ComicsSpace Goat ProductionsTop Cow ComicsTop Shelf ProductionsValiant Comics ZenescopeDifficultyBeginnerIntermediateAdvancedMixedInstrumentBrassDrums & PercussionGuitar, Bass, and FrettedPianoStringsVocalWoodwindsGenreClassicalCountryFolkJazz & BluesMovies & MusicalsPop & RockReligious & HolidayStandardsWelcome to Scribd! Start your free trial and access books, documents and more.Find out moreFundamentos de Programación – AlgoritmosUniversidad Central del Ecuador
FUNDAMENTOS DE PROGRAMACIÓN – ALGORITMOS
OBJETIVO. Mostrar los fundamentos de la programación, de modo que al final del curso, el estudiante será capaz de diseñar algoritmos mediante ejercicios prácticos utilizados cotidianamente en el desarrollo de aplicaciones de software, con ayuda de las diferentes técnicas algorítmicas, con la finalidad de formarse una mentalidad de programador. INTRODUCCIÓN. Todos tenemos conciencia de que el éxito de una empresa depende de la rapidez, calidad, control de los recursos, exactitud y otros muchos factores. Hace tiempo, las empresas ya sean grandes o pequeñas, tenían que hacer sus procesos manualmente o con ayuda de máquinas. Pero a raíz de la aparición de las primeras computadoras, las grandes empresas obtuvieron unas de estas y comenzaron a tener mayor ventaja sobre las demás organizaciones. Con el paso del tiempo, se crearon computadoras más pequeñas, de menos costo, más rápidas, lo cual ha provocado que cualquier persona o empresa pueda adquirir una o más de estas computadoras. En la actualidad, muchas empresas realizan sus operaciones por medio de computadoras, por ejemplo en las fábricas ensambladoras de autos se utilizan robots programados, los cuales se encargan de montar y soldar las partes que forman el carro; en los supermercados, se utilizan las computadoras junto con un programa para registrar rápidamente las compras de los clientes, además de que les ayuda para llevar el control de su inventario y de sus ingresos entre otras cosas; en los hospitales, se están utilizando pequeños robots programados, los cuales se introducen en el cuerpo del paciente para realizar incisiones, cauterizar, saturar, etc.; este manual, fue elaborado en un editor de textos llamado Microsoft Word, el cual es un programa de aplicación diseñado específicamente para poder crear y dar formato a documentos de texto. En fin, podríamos continuar enumerando en donde se utilizan las computadoras y nunca terminaríamos, lo cual da un amplio campo de trabajo para los programadores. Este manual, tiene la finalidad de mostrarte los fundamentos de la programación y formarte una mentalidad de programador, mediante la elaboración de algoritmos utilizando diferentes técnicas algorítmicas y herramientas de software para escribir y entender de manera más sencilla el fascinante mundo de la programación. Ya que un programador es decir, la persona que diseña sistemas computacionales o
Ing. Jéfferson Beltrán M. Msc. 1
aplicaciones de software, antes de comenzar a interactuar con la computadora tiene que tener una manera de pensar diferente a las demás personas para poder analizar y resolver problemas mediante aplicaciones de software, los cuales primero debe plasmarlos en papel o en alguna herramienta de software específica para ello y luego en un lenguaje de programación. ÍNDICE. El ordenador. El software. Sistema binario y representación binaria de datos. Algoritmos y elementos que lo conforman. Conceptos básicos de programación. Resolución de problemas con computadora – Desarrollo de Software Tipos y Paradigmas de Programación. Lenguajes de programación. La lógica como aspecto fundamental de la programación. Representación gráfica de los algoritmos. Entorno de programación integrado (IDE). Programación Estructurada. Estructura de datos y Arreglos. Modularidad. Recursividad. Estilos de Programación
Ing. Jéfferson Beltrán M. Msc.
1. EL ORDENADOR. Un ordenador es una máquina programable. Las dos características principales de un ordenador son: Responde a un sistema específico de instrucciones de una manera bien definida. Puede ejecutar una lista de instrucciones pregrabadas (un programa). Los ordenadores modernos son electrónicos y digitales. La maquinaria real, cables, transistores, y circuitos, se llaman hardware; las instrucciones y los datos se llaman software. Todos los ordenadores de uso general requieren los siguientes componentes de hardware: Dispositivos de Entrada: Como su nombre lo indica, sirven para introducir datos (información) en el ordenador para su proceso. Ejemplo: teclado, ratón, scanner, etc. Dispositivos de Salida: Regresan los datos procesados que sirven de información al usuario. Los más comunes son el monitor y la impresora. La Unidad Central de Procesamiento (CPU). Aunque generalmente al gabinete se le denomina CPU, el CPU es el microprocesador del ordenador y es el encargado de hacer todos los cálculos y operaciones (es cerebro del ordenador). El CPU a su vez se divide en las siguientes partes: Unidad de Control: Coordina las actividades del ordenador y determina que operaciones se deben realizar y en qué orden; así mismo controla todo el proceso del ordenador. Unidad Aritmética - Lógica: Realiza operaciones aritméticas y lógicas, tales como suma, resta, multiplicación, división y comparaciones. La Memoria. Es una parte del ordenador en donde se almacenan los datos a procesar y la información resultante. Esta puede ser de dos tipos: Memoria Primaria: Es el espacio en que se almacenan los datos a procesar o calcular en este momento. Memoria Secundaria: Es el espacio en el que se almacena la información resultante para su futura consulta o manejo. Por ejemplo: discos duros, unidades de almacenamiento magnético (CD-DVD), etc.
Ing. Jéfferson Beltrán M. Msc. 3
. UNIDAD DE CONTROL DISPOSITIVOS DE ENTRADA UNIDAD DE ARITMÉTICA Y LÓGICA DISPOSITIVOS DE SALIDA
Además de estos componentes. los ordenadores se pueden clasificar por tamaño y potencia de la siguiente forma. Además del microprocesador.P. pero tiene un microprocesador más potente y un monitor de mejor calidad. Msc. muchos otros hacen posible que los componentes básicos trabajen juntos eficientemente.
Ing. un ordenador personal tiene un teclado para introducir datos. un monitor para mostrar la información. Una estación de trabajo es como un ordenador personal. Jéfferson Beltrán M.Fundamentos de Programación – Algoritmos
C. para un sólo usuario basado en un microprocesador. Miniordenador (minicomputer): Un ordenador para varios usuarios capaz de soportar centenares de usuarios simultáneamente. y un dispositivo de almacenamiento para guardar datos. aunque hoy un solapamiento considerable: Ordenador personal (personal computer): Un ordenador pequeño. Chasis (mainframe): Una computadora multiusuario de gran potencia capaz de soportar miles de usuarios simultáneamente. Generalmente. Estación de trabajo (workstation): Una computadora de gran potencia para un sólo usuario.U. Por ejemplo. cada ordenador requiere un bus que transmita datos de una parte del ordenador a otra. Superordenador (supercomputer): Un ordenador extremadamente rápido que puede realizar cientos de millones de instrucciones por segundo.
Las operaciones que debe realizar el hardware son especificadas con una lista de instrucciones. Writer. Solaris. los editores de texto (Word. Unix. Jéfferson Beltrán M.Fundamentos de Programación – Algoritmos
Nota: No se dará más detalle sobre los ordenadores pues nos tomaría todo el semestre y no es el objetivo del curso. El software se divide en dos grandes grupos: Software del sistema. Android.
2. antivirus. Msc. coordina el hardware y organiza archivos y directorios en dispositivos de almacenamiento de una forma sencilla y transparente para el usuario.
Ing. o software. navegadores.
. llamadas programas. etc. Linux. EL SOFTWARE. o El Sistema Operativo es el software básico de una computadora. básicamente. Estos programas son. OpenOffice. los dispositivos de hardware y el usuario. Dirige las operaciones globales de la computadora. los compiladores de lenguajes de programación y los utilitarios (Microsoft Office. Los principales sistemas operativos son: MS-DOS. instruye a la computadora para ejecutar otros programas. iOS. etc). que provee una interfaz entre el resto de programas del ordenador. Mac OS. El software del sistema es el conjunto de programas indispensables para que la máquina funcione. Microsoft Windows. el Sistema Operativo. correo electrónico. y Software de aplicaciones. administra los recursos de la máquina. etc).
el hexadecimal y sobre todo el binario. permite establecer el papel de tales relaciones y operaciones. contabilidad.1. 6
. a través de reglas propias.
3. operaciones y relaciones que. AND y NOT). 1} con las operaciones aritméticas (suma. no es el único y por el contrario los más utilizados en los circuitos digitales son el octal. gestión de negocios.) se denominan programas de aplicación o software de aplicaciones. resta. Los elementos del conjunto o alfabeto binario se denominan cifras binarias o bits. 3. utilizar códigos intermedios resulta más favorable que transformar directamente decimales en binarios y al revés. Msc. Jéfferson Beltrán M. multiplicación) y lógicas (OR.
3. A nivel electrónico. El más conocido y usado es el sistema de numeración decimal. Las computadoras suelen efectuar las operaciones aritméticas utilizando una representación para los datos numéricos basada en el sistema de numeración de base dos conocido como binario natural o simplemente binario.2. El SISTEMA BINARIO. El sistema de numeración binario es el conjunto de elementos {0.Fundamentos de Programación – Algoritmos
Los programas que realizan tareas concretas (por ejemplo facturación.
Ing. SISTEMAS DE NUMERACIÓN. SISTEMA BINARIO Y REPRESENTACIÓN BINARIA DE DATOS. Sistema de Numeración es el conjunto de elementos o símbolos. análisis estadístico. etc. El bit del extremo de la derecha es el bit menos significativo o de menor peso. Se utilizan los sistemas octal y hexadecimal (bases 8 y 16) respectivamente para obtener códigos intermedios. sistemas bancarios.
Jéfferson Beltrán M.2.Fundamentos de Programación – Algoritmos
El bit del extremo de la izquierda es el bit más significativo o de mayor peso.1. y realizar la suma de las operaciones.
Ing. 3. Consiste en multiplicar cada uno de los términos por potencias crecientes de 2 a partir de la coma decimal y hacia la izquierda.
. TRANSFORMACIÓN DE DECIMAL (ENTEROS) A BINARIO. apuntando los restos.2. hasta obtener cociente cero. Ejemplo: convertir a decimal 101011102
3. TRANSFORMACIÓN DE BINARIO A DECIMAL (ENTEROS). Se va dividiendo la cantidad decimal por 2.2. El último resto obtenido es el bit más significativo (MSB) y el primero es el bit menos significativo (LSB). Msc.
XOR. Estas operaciones son similares a las del sistema decimal. OPERACIONES BÁSICAS Y LÓGICAS. la XOR y la XNOR. AND y NOT.
Ing.2.
.Fundamentos de Programación – Algoritmos
3. de aquí surgen otras como la NOR. Msc.3. la multiplicación y la división. Jéfferson Beltrán M. Las operaciones más básicas con el sistema binario son la suma. ya que el sistema binario también es un sistema posicional
Las operaciones binarias lógicas básicas son OR. la resta. la NAND.
mayor es la precisión y la potencia de cálculo del ordenador. etc). los ordenadores trabajan internamente con dos niveles de voltaje: ―apagado‖ (0) y ―encendido‖ (1). Msc. con él se puede codificar un alfabeto completo (ASCII estándar). 64. 4. megabyte (Mb). etc. por los que su sistema de numeración natural es el sistema binario.
Ing. 32. Es la agrupación de 8 bits. sino que se trabaja a nivel de carácter (letras. Son comunes palabras de 8. Es el tamaño de información manejada en paralelo por los componentes del sistema. 256 y 512 bits.
3. como la memoria y los buses. 1 byte.
El bit es la unidad mínima de almacenamiento empleado en informática. 128. que se compone de 8 bits. A continuación se muestra la tabla de verdad de las principales operaciones lógicas binarias. Lo normal es utilizar los múltiplos del byte: kilobyte (kb). Los tamaños más comunes son: Octeto. gigabyte (Gb). A mayor tamaño de palabra. caracteres especiales. Jéfferson Beltrán M. La AND a la intersección y la NOT al complemento. que ocupa un byte. 9
. números.
REPRESENTACIÓN BINARIA DE DATOS. es el tamaño más común de información. con él podemos represe4ntar dos valores (0 y 1).Fundamentos de Programación – Algoritmos
La OR responde a la unión entre conjuntos. en cualquier dispositivo digital o en la teoría de la información. El ordenador trabaja con agrupaciones de bits fáciles de manipular y suelen ser múltiplos de 2. 16. la base del sistema binario. Cuando se almacena la información no se trabaja a nivel de bit. carácter o byte. es decir. 32 y 64 bytes. Palabra. 8.3.
comienzo de línea (CR). Los elementos del conjunto de caracteres. los caracteres se codifican con un código de entrada/salida. dependerán del código de E/S utilizado por el programa que interprete el texto introducido así como del periférico que lo codifique. 10
. cualquier texto se puede representar por medio de caracteres. Caracteres geométricos y gráficos: símbolos con los que se representan formas geométricas o iconos elementales: Caracteres de control: representan órdenes de control. sincronización de una transmisión (SYN). Jéfferson Beltrán M. el número mínimo de bits necesarios para codificar un conjunto de símbolos depende del cardinal de este conjunto: Con 2 bits (n=2) podemos hacer 2^2=4 combinaciones. Msc. Si utilizamos n bits para codificar m símbolos. etc. asociando a cada carácter una determinada combinación de n bits. Cuando se introducen textos en un ordenador a través del periférico que corresponda. pitido (BEL).
Ing. es decir. Caracteres especiales: símbolos ortográficos y matemáticos no incluidos en los grupos anteriores. Los caracteres utilizados en informática se suelen clasificar en cinco categorías: Caracteres alfabéticos: letras mayúsculas y minúsculas del alfabeto Caracteres numéricos: constituidos por las diez cifras decimales. se podrían codificar 4 símbolos distintos (m=4). así como su número m. como salto de línea (NL).Fundamentos de Programación – Algoritmos
Cualquier información escrita.
Msc. Un algoritmo es un método para resolver un problema mediante una serie de pasos precisos. o No determina la forma o imagen concreta de cada carácter (fuente). japonesa. o No contempla la codificación de caracteres de control. 8 símbolos (m=8). imágenes. o Cubre la mayoría de los lenguajes actuales. que es el lenguaje de programación. Las características principales son: o Está reconocido como estándar ISO/IEC 10646. Todos los símbolos se representan con un número fijo de bits. definidos y finitos. Dicho de otra forma. y cualquier información que se almacene en un computador. Se puede también representar también sonidos. siendo n el menor número natural que verifica:
Los principales códigos de E/S son: El código ASCII (American Standard Code for Information Interchange) básico utiliza 7 bits y es uno de los más utilizados actualmente. El código ASCII extendido usa 8 bits por carácter por lo que se tienen 256 caracteres diferentes. ñ. y así sucesivamente. o A cada carácter se le asigna un único código.Fundamentos de Programación – Algoritmos
Con 3 bits (n=3) serían 2^3=8 combinaciones. etc. 16 concretamente. símbolos como ä. coreana. videos.. Es un conjunto de reglas para resolver determinado problema describiendo de forma lógica su solución. Con n bits se podrían codificar m=2^n símbolos distintos. ALGORITMOS Y ELEMENTOS QUE LO CONFORMAN. etc. pudiendo codificarse en total 216 = 65356 símbolos diferentes. o Incluye caracteres combinados. 11
. o Cada carácter está formado por una cadena de 16 bits. Unicode es un código de E/S propuesto por un consorcio de empresas y entidades que trata de crear aplicaciones capaces de procesar texto de muy diferentes sistemas de escritura.
4. etc. para codificar m símbolos distintos se necesitan n bits. Cada una de las acciones de que consta un algoritmo es denominada sentencia (o instrucciones) y éstas deben ser escritas en términos de cierto lenguaje comprensible para el computador.
Ing. Jéfferson Beltrán M. El problema es que los símbolos codificados son insuficientes para representar caracteres especiales de idiomas de diversas culturas como china.
un valor de verdad como Verdadero o Falso. o Salida. Las constantes deben ser declaradas y asignadas un valor antes de su utilización. a grandes rasgos. tal como ‗B‘. o Eficiente. TIPOS DE DATOS. Msc. Estos datos. 12
. Jéfferson Beltrán M. o Finito. Las diferencias piezas de información con las que un programa trabaja se conocen colectivamente como “datos”.
Los algoritmos se construyen utilizando elementos simples para que el lenguaje se parezca más a los lenguajes de programación de alto nivel.2.2. o Repetible.2. que determina la naturaleza del conjunto de valores que aquel puede tomar. entre otros. en
Ing. o Exactitud/precisión. Dada una misma entrada. Son cero o más parámetros (datos) los cuales son externamente sustituidas. Entre ellos se tienen: 4. CONSTANTES Y VARIABLES. un número real como 5. Una variable es. Por su parte.75. Cada instrucción puede ser verificada por una persona con una prueba manual que satisfaga los requerimientos planteados por el problema. los datos de un programa cuyo valor puede cambiar durante la ejecución del mismo se conocen como Variables. un valor entero como 36. Todos los programas necesitan almacenar datos temporalmente para poder procesarlos y generar así la salida esperada.
CARACTERÍSTICAS DE LOS ALGORITMOS.1. pueden clasificarse en dos grupos: A un dato cuyo valor no puede cambiar (se mantiene constante) durante la ejecución de un programa se lo denomina Constante. 4.
PARTES DE UN ALGORITMO. Por ejemplo.
Los criterios que debe satisfacer un algoritmo (características) son: o Entrada. Al menos un dato es producido.
4. Todos los datos tienen un “tipo” asociado con ellos. un dato puede ser un simple caracter. Terminará después de un número finito de pasos. una cadena de caracteres como ―Hola Mundo‖.2. siempre debe dar la misma salida.Fundamentos de Programación – Algoritmos
4.1. Cada instrucción debe ser clara y sin ambigüedad (hacen lo que deben hacer).
4.2. Las variables y constantes se pueden procesar utilizando operaciones y funciones adecuadas para sus tipos. para denotar que el valor situado a su derecha se almacena en la variable situada a la izquierda: o variable  Valor o Ejemplo: suma0 (la asignación sólo será válida si el valor es válido para el tipo de dato definido para la variable).2. y que contiene un valor (Valor de la Variable). SENTENCIAS O INSTRUCCIONES. la cual se utiliza para almacenar un valor en una variable. Las sentencias describen acciones algorítmicas que pueden ser ejecutadas. Otros ejemplos de sentencias simples son las de entrada/salida. una posición de memoria con nombre (Nombre de la Variable). operaciones de cálculos aritméticos y entradas/salidas de datos) y no ejecutables (no realizan acciones concretas ni afectan a la ejecución del programa. Las variables se asemejan a cajas o buzones.Fundamentos de Programación – Algoritmos
realidad. Las sentencias se clasifican. 4. según su tipo y número. sino que ayudan a su legibilidad) como la declaración de variables. Msc. OPERADORES Y EXPRESIONES. La operación de asignación se suele representar en pseudocódigo con el símbolo ‗‘. condicionalmente o repetidamente.
Ing. Un operador es un símbolo o palabra que significa que se ha de realizar cierta acción entre uno o dos valores que son llamados operandos. donde cada una de las cuales tiene un número y contiene un valor. por ejemplo. Se denomina expresión a un conjunto de variables y / o constantes unidas por operadores. las sentencias se clasifican en ejecutables (especifican. Sentencias estructuradas: Son sentencias compuestas de otras sentencias que se ejecutan en secuencia. El ejemplo más típico de sentencia simple es la sentencia de asignación.4. Existen tantos tipos de variables como tipos de datos diferentes. En general. en: Sentencias Simples: Son sentencias que no contiene ninguna otra sentencia.3. Jéfferson Beltrán M. 13
La operación not (no) actúa sobre una sola condición simple u operando y simplemente niega (o invierte) su valor.Fundamentos de Programación – Algoritmos
Si en una expresión existe más de una operación debe tenerse en cuenta que existen una serie de reglas para definir la prioridad en la que éstas se realizarán. Ejemplos de operadores relacionales son ― < ‖ (Menor que). existen métodos que
Ing. la multiplicación y la división de dos datos respectivamente. Su resultado en es valor de verdad. etc. Estos operadores trabajan con operandos que son expresiones lógicas. Por ejemplo: a + b. ― . Existen diversos tipos de operadores. Msc. a<b. Ejemplos de operadores aritméticos son ― + ‖. Jéfferson Beltrán M.5. La operación or (o) es verdadera si uno de los dos operandos es verdadero. ― >‖ (Mayor que). los cuales permiten obtener el resultado de la suma. etc.69 * X
4. etc. 14
. De relación: Los operadores de relación (o relacionales) se utilizan para expresar condiciones y describen una relación entre dos valores. ― * ‖ y ― / ‖. por ejemplo: Aritméticos: Son apropiados únicamente para tipos numéricos. Ejemplo de expresión: Cos (2*pi * X) + 7.2. ― = ‖ (Igual a) y ― <> ‖ (Distinto a). Lógicos: Estos operadores se utilizan con constantes lógicas de forma similar al modo en que los operadores aritméticos se utilizan con las constantes numéricas. El concepto de flujo de control a través de un algoritmo y luego del programa se refiere al orden en que se ejecutan las acciones individuales del mismo.. Por este motivo es que se suelen utilizar los paréntesis para establecer la prioridad de aplicación de los operandos. Su resultado es un número. La operación and (y) combina dos condiciones simples y produce un resultado verdadero sólo si los dos operandos son verdaderos. la resta. c/d. c<>d.‖. Su resultado es un valor de verdad. Los operadores aritméticos y los relacionales se utilizan de la siguiente forma: variable o constante operador variable o constante. ESTRUCTURAS DE CONTROL. Aunque un flujo normal de un programa estructurado es lineal. Existen otros operadores lógicos además de los mencionados.
El proceso se refiere a los cálculos que se deben hacer para obtener la salida deseada. Jéfferson Beltrán M. Los pasos para crear un algoritmo son: Análisis del problema.
Para diseñar un algoritmo se debe comenzar por identificar las tareas más importantes para resolver el problema y disponerlas en el orden en que han de ser ejecutadas. Msc. Es mejor solucionar problemas pequeños. los procesa y genera la salida. Para resolver cualquier problema. Las estructuras de control son: Secuencia: Sucesión simple de dos o más operaciones (una tras otra).
Ing. Estas estructuras son. A partir de los datos de entrada se consigue la salida. Las estructuras de control de un lenguaje de programación son métodos para especificar el orden en que las instrucciones de un algoritmo se ejecutarán. fundamentales en los lenguajes de programación y en los diseños de los algoritmos. por consiguiente. 15
. De Repetición o Iteración: Repetición de una operación mientras se cumple una condición. se debe comprenderlo completamente. los algoritmos reciben datos de entrada. Prueba del algoritmo. Diseño del algoritmo. PASOS PARA CREAR UN ALGORITMO. Se realiza las pruebas manuales necesarias para comprobar que el algoritmo arroje los resultados deseados. 4. Se describen los pasos para resolver el problema.Fundamentos de Programación – Algoritmos
permiten salir del flujo lineal a través del uso de las llamadas estructuras de control.3. De Selección/Condicionales: Bifurcación condicional de una o más operaciones. En general.
C. impresoras.) para la realización y explotación de aplicaciones informáticas. El primero trabaja con representaciones gráficas.
Ing.1.
Son las características propias de cualquier entidad.5. 5.1.
5. DATOS. etc.Fundamentos de Programación – Algoritmos
Los algoritmos generalmente se escriben en diagramas de flujo y pseudocódigo. CONCEPTOS BÁSICOS DE PROGRAMACIÓN. Por ejemplo: los datos de una persona como su edad.4. Debe ser confiable y funcional. terminales. INFORMACIÓN.1. Java. número de teléfono. 5. Es el conjunto de uno a varios programas. el segundo con un lenguaje especial (más adelante se describirá a detalle éstos conceptos).3. etc. PROGRAMA. Documentado adecuadamente. CARACTERÍSTICAS DEL PROGRAMA. que produzcan los resultados deseados. 5.
Es una lista de instrucciones que la computadora debe seguir para procesar datos y convertirlos en información. Advertir errores de entrada obvios y comunes. En el conjunto de elementos necesarios (computadora. APLICACIÓN INFORMÁTICA. 5. Las instrucciones se componen de enunciados usados en lenguajes de programación como Pascal. etc.
. Se le conoce también como desarrollo de software. C#. Es un proceso para convertir especificaciones generales de un sistema en instrucciones utilizables por la máquina. Jéfferson Beltrán M. 5. fecha de nacimiento. domicilio. SISTEMA INFORMÁTICO. Codificado en el lenguaje apropiado. Ser comprensible. 5.2. Msc.
Consiste en la recolección de datos de entrada que son evaluados y ordenados para ser colocados de manera que produzcan información útil. El proceso de resolución de un problema con una computadora conduce a la escritura de un programa. 5. ordenación. Las fases de resolución de un problema con computadoras son: Análisis del problema Diseño del algoritmo solución Codificación Compilación y Ejecución Verificación Depuración Documentación Mantenimiento
El proceso de crear y mantener programas de computación se denomina Desarrollo de Software o Ciclo de Vida de Desarrollo de Software. se pueden considerar una serie de fases o pasos comunes que generalmente deben seguir todos los programadores. 17
. Aunque el proceso de diseñar programas es.
6. esencialmente. un proceso creativo.DESARROLLO DE SOFTWARE. Como habíamos mencionado. Captura de datos de entrada Manejo de los datos (incluye clasificación. cálculos.6. PROCESAMIENTO DE DATOS.6. Msc. definidos y
Ing. RESOLUCIÓN DE PROBLEMAS CON COMPUTADORA . 5. transformación. Jéfferson Beltrán M. Las dos primeras fases conducen a un diseño detallado escrito en forma de algoritmo. ACTIVIDADES DEL PROCESAMIENTO DE DATOS.Fundamentos de Programación – Algoritmos
Es el conocimiento relevante producido como resultado del procesamiento de datos y adquirido por la gente para realzar el entendimiento y cumplir ciertos propósitos. etc) Administración de la salida resultante. y a su ejecución en la misma. un algoritmo es un método para resolver un problema mediante una serie de pasos (instrucciones) precisos.
Documentación de las especificaciones del programa. Determinación de la salida deseada.. En las fases de verificación y depuración el programador busca errores de las etapas anteriores y los elimina.1. 2. de presentación en el monitor. se pueden determinar los datos de entrada y la fuente de estos datos.1. 6. en definitiva.. Se requieren de cinco tareas: 1.Fundamentos de Programación – Algoritmos
Ing. Determinación de los requerimientos de procesamiento. Cuanto más tiempo se invierta en la fase de análisis y diseño. etc. Es importante disponer de documentación permanente. Determinación de los datos de entrada. Debe definirse claramente los problemas particulares que deberán ser resueltos o las tareas que hay que realizar. pues se realizan mejoras o se aumenta funcionalidad a los mismos. Los datos deben ser recolectados y analizados. Una vez identificada la salida que se desea. Msc. 3. Los datos seleccionados deben ser arreglados en una forma ordenada para producir información. Determinación de objetivos del programa. Aquí se definen las tareas de procesamiento que deben desempeñarse para que los datos de entrada se conviertan en una salida.
. PASOS DEL DESARROLLO DE SOFTWARE. de qué presupuestos se debe partir. Durante la tercer etapa (codificación) se implementa (poner en funcionamiento) el algoritmo en un código escrito en un lenguaje de programación. Se conoce también como especificación. Esta salida podría ser una salida de impresión. reflejando las ideas desarrolladas en la fase de análisis y diseño. Los programas son mantenidos en el tiempo. menor será el tiempo necesario para depurar el programa. 4. 5. La fase de compilación y ejecución traduce y ejecuta el programa. Es donde se determina qué es lo que debe resolverse con el computador. En este paso se determinan la información inicial para la elaboración del programa. debe realizarse la documentación del mismo. Jéfferson Beltrán M. 6. Esto conduce al siguiente paso del diseño del programa. Deben registrarse todos los datos necesarios para el procesamiento requerido. definición o análisis del problema. ANÁLISIS DEL PROBLEMA. esto nos permitirá saber qué es lo que se pretende solucionar y nos proporcionará información útil para el planeamiento de la solución.1. el planteamiento del problema. Por último.
6. Jéfferson Beltrán M. En este paso se genera una solución con técnicas de programación como diseño descendente de programas. Revisa el listado línea por línea en busca de errores de sintaxis y lógica. DISEÑO DEL ALGORITMO SOLUCIÓN. PRUEBAS . 6. diagramas de flujo y estructuras lógicas. Consiste en verificar la funcionalidad del programa a través de varios métodos para detectar errores posibles. Es diseñar cualquier sistema nuevo o las aplicaciones que se requieren para satisfacer las necesidades.1. Se corre el programa en forma manual aplicando datos tanto correctos como incorrectos para comprobar que funciona correctamente.4.
6.3.2. 6. El programa corre en una computadora usando un programa traductor para convertirlo a lenguaje de máquina. el compilador comprueba la sintaxis y semántica del programa. Intento de Traducción.
. Se debe seleccionar el lenguaje apropiado para resolver el problema. Para ello debe
Ing. lo traduce y se ejecuta el programa. Esta actividad se debe dividir en: Operaciones de entrada/salida. El programador se sienta frente a un escritorio y corrige una impresión del programa. Almacenamiento/ consulta.1. COMPILACIÓN Y EJECUCIÓN.VERIFICACIÓN. Lógica/ comparación. pseudocódigos.1. Es la generación real del programa con un lenguaje de programación. CODIFICACIÓN DEL PROGRAMA. En la fase de compilación y ejecución. Chequeo de Escritorio. Cálculos. Prueba manual de datos de muestra.5.1. Msc. En esta etapa se hace uso de la lógica que desarrolló en el paso del diseño del programa para efectivamente generar un programa.
Msc. leer un dato no numérico en una variable numérica. Es una violación de las reglas del lenguaje de programación. Prueba por un grupo selecto de usuarios potenciales. 6. Errores de Ejecución. no sólo por la dificultad de detectarlos. Son más fáciles de corregir. Después del intento de traducción y corregidos los errores de sintaxis. el cual dará información sobre el lugar donde está y la naturaleza de cada uno de ellos mediante un mensaje de error. Se deben generalmente a operaciones no permitidas como dividir por cero. Se detectan porque se produce una parada anormal del programa durante su ejecución. DEPURACIÓN. exceder un rango de valores permitidos. Jéfferson Beltrán M. sino porque se deben a la propia concepción y diseño del programa.1.1. Errores de Especificación. Prueba de datos de muestra en la computadora. Usuarios potenciales ponen a prueba el programa y ofrecen retroalimentación. Se trata por lo general del paso final en la prueba de un programa. En esta fase se comprueba el funcionamiento de cada programa y esto se hace con datos reales o ficticios. 20
. Esto se conoce como prueba beta. de lo contrario serán identificados por el programa de traducción. Cuando los programas se depuran. lo cual puede implicar repetir gran parte del trabajo realizado. se procede a buscar errores de lógica utilizando diferentes datos de muestra. se pueden encontrar los siguientes errores: Errores de sintaxis o de compilación. ya que son detectados por el compilador (posible error de escritura). Errores de Lógica. se prueban.
Ing. etc. Se deben a mal diseño del programa posiblemente por mala comunicación usuario-programador y se detectan cuando ya se ha concluido el diseño e incluso cuando el programa está en producción (funcionando). Cuando los programas están depurados. 6. Es el peor tipo de error y el más difícil de corregir. DOCUMENTACIÓN DE PROGRAMA. Son los más difíciles de corregir. Corresponden a la obtención de resultados que no son correctos y la única manera de detectarlos es realizando suficientes pruebas del programa.Fundamentos de Programación – Algoritmos
estar ya libre de errores de sintaxis.7. Depurar es correr el programa en una computadora y corregir las partes que no funcionan.6.
corridas. 21
. instrucciones necesarias para su instalación puesta en marcha y funcionamiento. Alrededor del 75% del costo total del ciclo de vida de un programa se destina al mantenimiento. mensajes de error. que la documentación debe contener algoritmos y diagramas de flujo de los diferentes módulos que lo constituyen y las relaciones que se establecen entre ellos. Jéfferson Beltrán M. descripción de los ficheros de cada módulo y todo lo que sea de importancia para un programador. menús de opciones. A los usuarios se les elabora un manual de referencia o de usuario para que aprendan a utilizar el programa. Esto se hace a través de capacitaciones y revisión de la documentación del manual de usuario. sepan cómo responder a ellos. Msc. El manual del usuario no está escrito a nivel técnico sino al de los distintos usuarios previstos y explica en detalle cómo usar el programa: descripción de las tareas que realiza el programa. Además que se encargan de darle soporte técnico al programa. listados del programa. Es por ello. recuperación de errores. cuáles son comunes a diferentes módulos y cuáles locales. 6. recomendaciones de uso. Estos se encargan de hacer una investigación previa de cómo realizar el programa y documentar con las herramientas necesarias para que el programador pueda desarrollar el sistema en algún lenguaje de programación adecuado.8. método de entrada y salida de datos. A los analistas de sistemas que son las personas que deberán proporcionar toda la información al programador. Es el paso final del desarrollo del software. A los programadores a través del manual técnico para que recuerden aspectos de la elaboración del programa o en caso que otras personas puedan actualizarlo o modificarlo (darle mantenimiento) y no son necesariamente las personas que lo diseñaron. descripción de variables que se emplean en cada módulo. El propósito del
Ing. También se debe documentar el programa para que sea más entendible.Fundamentos de Programación – Algoritmos
Consiste en describir por escrito a nivel técnico los procedimientos relacionados con el programa y su modo de uso. MANTENIMIENTO DEL PROGRAMA. También se documenta técnicamente mediante diagramas UML (Unified Modeling Language). ¿Para quiénes es la documentación? Los documentos que deben elaborarse son: Manual de Usuario y Manual Técnico. etc.1. A los operadores por si se presentan mensajes de error.
que integran el programa en su totalidad. modular y orientada a objetos. el programa principal coordina las llamadas a los módulos secundarios (subprogramas) y pasa los datos necesarios en forma de parámetros. Una característica importante en un programa estructurado es que puede ser leído en secuencia. A continuación. PROGRAMACIÓN MODULAR. de esta manera la comprensión y lectura de un programa es muy sencilla y se torna fácil el encontrar errores.
Ing. Existen varios tipos o técnicas de programación. además que los sistemas evolucionan en el tiempo y su funcionalidad es aumentada o mejorada de acuerdo a las necesidades de los usuarios.
La programación modular consta de varias secciones dividas de forma que interactúan a través de llamadas a funciones o procedimientos. las técnicas se centran en programación estructurada. PROGRAMACIÓN ESTRUCTURADA. esto es. TIPOS Y PARADIGMAS DE PROGRAMACIÓN. se presenta brevemente las principales técnicas de programación: 7. Msc. Selección/Condicional: Bifurcación condicional de una o más operaciones.2. la interpelación de sus partes se realiza tan claramente como es posible mediante el uso de tres estructuras de control: Secuencia: Sucesión simple de dos o más operaciones (una tras otra).Fundamentos de Programación – Algoritmos
mantenimiento es garantizar que los programas en uso estén libres de errores de operación y sean eficientes y efectivos. Repetición: Repetición de una operación mientras se cumple una condición. 7. en la mayoría de casos. desde el comienzo hasta el final sin perder la continuidad de la tarea que cumple el programa.1. Jéfferson Beltrán M.
Programación Estructurada es una técnica en la cual la estructura de un programa. En la programación modular. 22
. Estos tres tipos de estructuras lógicas de control pueden ser combinados para producir programas que manejen cualquier tarea de procesamiento de información.
los objetos disponen de mecanismos de interacción llamados métodos.
Se caracteriza principalmente por permitir declarar y llamar a funciones dentro de otras funciones. abstracción. es su identificador (concepto análogo al de identificador de una variable o una constante). El comportamiento está definido por los métodos o mensajes a los que sabe responder dicho objeto.3. PROGRAMACIÓN FUNCIONAL. La identidad es una propiedad de un objeto que lo diferencia del resto. qué operaciones se pueden realizar con él. Esta característica lleva a tratarlos como unidades indivisibles. 7. Está basado en varias técnicas. cada módulo puede contener sus propios datos y llamar a otros módulos o funciones. al poder tener valores bien diferenciados en sus atributos. Esta comunicación favorece a su vez el cambio de estado en los propios objetos. será uno o varios atributos a los que se habrán asignado unos valores concretos (datos). incluyendo herencia.
La programación orientada a objetos o POO (OOP según sus siglas en inglés) es un paradigma de programación que usa objetos y sus interacciones.4. 23
. que favorecen la comunicación entre ellos. Jéfferson Beltrán M.Fundamentos de Programación – Algoritmos
A su vez. La
Ing. Los métodos (comportamiento) y atributos (estado) están estrechamente relacionados por la propiedad de conjunto. en la que los datos y los procedimientos están separados y sin relación. De esta manera se estaría realizando una programación estructurada camuflada en un lenguaje de programación orientado a objetos. Un objeto contiene toda la información que permite definirlo e identificarlo frente a otros objetos pertenecientes a otras clases e incluso frente a objetos de una misma clase. para diseñar aplicaciones y programas informáticos. es decir. PROGRAMACIÓN ORIENTADA A OBJETOS (POO). ya que lo único que se busca es el procesamiento de unos datos de entrada para obtener otros de salida. comportamiento (método) e identidad: El estado está compuesto de datos. dicho con otras palabras. polimorfismo y encapsulamiento Los objetos son entidades que tienen un determinado estado (atributos). Esta propiedad destaca que una clase requiere de métodos para poder tratar los atributos con los que cuenta. Msc. A su vez. La POO difiere de la programación estructurada tradicional. en las que no se separa el estado y el comportamiento. 7.
7. En la programación dirigida por eventos. primero definen objetos para luego enviarles mensajes solicitándoles que realicen sus métodos por sí mismos. el programa pasará a ejecutar el código del correspondiente administrador de evento. en cambio. PROGRAMACIÓN DE SCRIPTS. que será el que haga que la película se muestre por pantalla. 7. Mientras en la programación estructurada (o secuencial) es el programador el que define cuál va a ser el flujo del programa.5. para que sea interpretado comando por comando cada vez que se ejecuta por un intérprete o un shell. Los programadores que emplean POO. estas intervenciones ocurrirán cuando el programador lo haya determinado. En la programación estructurada solo se escriben funciones que procesan datos.
. Jéfferson Beltrán M. Cuando alguno de los eventos esperados por el programa tenga lugar. definidos por el usuario o que ellos mismos provoquen. Aunque en la programación secuencial puede haber intervención de un agente externo al programa. al ejecutarse el programa esperará hasta que se produzca algún evento. lo que se conoce como el administrador de evento. Por ejemplo. y en segundo lugar en las estructuras de datos que esos procedimientos manejan.
Un script es un programa que se escribe con una sintaxis particular generalmente en un archivo de texto plano que permanece en su forma original.6. si el evento consiste en que el usuario ha hecho click en el botón de play de un reproductor de películas. se ejecutará el código del administrador de evento. PROGRAMACIÓN DIRIGIDA POR EVENTOS.
La programación dirigida por eventos es un paradigma de programación en el que tanto la estructura como la ejecución de los programas van determinados por los sucesos que ocurran en el sistema. El creador de un programa dirigido por eventos debe definir los eventos que manejarán su programa y las acciones que se realizarán al producirse cada uno de ellos. en la programación dirigida por eventos será el propio usuario —o lo que sea que esté accionando el programa— el que dirija el flujo del programa. y no en cualquier momento como puede ser en el caso de la programación dirigida por eventos. Msc.Fundamentos de Programación – Algoritmos
programación estructurada anima al programador a pensar sobre todo en términos de procedimientos o funciones.
PROGRAMACIÓN CONCURRENTE Y PARALELA.8. Se suele utilizar para controlar los accesos de usuarios y programas a un recurso de forma simultánea. Jéfferson Beltrán M. principalmente en juegos y en sistemas expertos.
. 7.7. Los elementos de procesamiento pueden ser diversos e incluir recursos tales como un único ordenador con muchos procesadores.
Ing.9.
La programación paralela es una técnica de programación en la que muchas instrucciones se ejecutan simultáneamente. Esto se logra dividiendo el problema en partes independientes de tal manera que cada elemento de procesamiento pueda ejecutar su parte del algoritmo a la misma vez que los demás. transparentes y tolerantes a fallos. 7.
Se suele utilizar en la inteligencia artificial. hardware especializado o una combinación de los anteriores. etc). Casi cualquier lenguaje de programación que tenga acceso al máximo al hardware del sistema puede manejar la programación distribuida. varios ordenadores en red. Se trata de una programación basada en el cálculo de predicados (una teoría matemática que permite lograr que un ordenador basándose en hecho y reglas lógicas. 7. Se basa en el principio de que los problemas grandes se pueden dividir en partes más pequeñas que pueden resolverse de forma concurrente ("en paralelo"). con la posibilidad de hacer algún tipo de procesamiento propio (como control de flujo. pueda dar soluciones inteligentes). escalables. abiertos. PROGRAMACIÓN LÓGICA. Msc. Este paradigma es el resultado natural del uso de las computadoras y las redes. operaciones matemáticas simples. La computación paralela emplea elementos de procesamiento múltiple simultáneamente para resolver un problema.
La programación distribuida es un paradigma de programación enfocado en desarrollar sistemas distribuidos.Fundamentos de Programación – Algoritmos
Un script es básicamente un programa que llama a otros programas. Se trata de una programación más lenta y laboriosa. considerando una buena cantidad de tiempo y código. PROGRAMACIÓN DISTRIBUIDA.
etc. 7. el HTML es el lenguaje que permite codificar o preparar documentos de hipertexto. Apple Safari. HTML (Hypertext Markup Language). es un sistema con el cual se localiza un recurso dentro de la red. PROGRAMACIÓN WEB. que es el protocolo encargado de llevar la información que contiene una página Web por toda la red de internet. que viene a ser el lenguaje común para la construcción de una página Web. Las aplicaciones web residen en un servidor web como Apache. Mozilla Firefox. Jéfferson Beltrán M. se deben tener claros.Fundamentos de Programación – Algoritmos
La programación distribuida típicamente cae en alguna de las varias arquitecturas básicas o arquitecturas: cliente-servidor. dentro de esa computadora un archivo que indica el camino al recurso que se solicita. Es un conjunto de símbolos junto a un conjunto de reglas para combinar dichos símbolos que se usan para escribir programas de computadoras que pueden ser entendidos por ellas.
Ing. que significan World Wide Web o telaraña mundial. LENGUAJES DE PROGRAMACIÓN. n-tier. En resumen. una sintaxis y una semántica. Esto se consigue generando los contenidos del sitio a través de una base de datos mediante lenguajes de script. objetos distribuidos.10. en cambio el cliente es un navegador web como Internet Explorer. es el lenguaje necesario cuya funcionalidad es la de representar cualquier clase de información que se encuentre almacenada en una página Web. etc. La programación web permite la creación de sitios dinámicos en Internet. HTTP (Hypertext Transfer Protocol). tres conceptos fundamentales: El URL (Uniform Resource Locators). Internet Information Server (IIS).. entre otras además. Msc.
8. que identifica una computadora. Constan de un léxico. Para realizar una página con la programación web. 26
. La programación web. este recurso puede ser una página web. un servicio o cualquier otra cosa. el URL no es más que un nombre. Google Chrome. En la programación web. Con la programación web podemos desarrollar sitios dinámicos como periódicos digitales o tiendas virtuales. 3-tier. parte de las siglas WWW.
Msc. sino que necesitan ser traducidos a instrucciones en lenguaje máquina que entiendan las computadoras. bajo nivel (ensamblador. o assembler) y alto nivel. La programación en lenguaje de máquina es difícil. según su evolución temporal y el uso que se les quiera dar. Existen diversos tipos de lenguajes de programación de alto nivel.2. no son entendibles directamente por la máquina. Un lenguaje típico de bajo nivel es el lenguaje ensamblador (Assembler). LENGUAJES DE MAQUINA. y no necesitan traducción posterior para que el CPU pueda comprender y ejecutar el programa. esto es. ya que implica escribir directamente en un sistema binario (ceros y unos). Sintaxis: Reglas que indican cómo realizar las construcciones del lenguaje.
Los lenguajes de máquina son aquellos cuyas instrucciones son directamente entendibles por la computadora.
Los lenguajes de programación de alto nivel son aquellos en los que las instrucciones o sentencias a la computadora son escritas con palabras similares a los lenguajes humanos – en general lenguaje inglés – lo que facilita la escritura y comprensión por parte del programador. por eso se necesitan lenguajes que permitan simplificar ese proceso. Éstos son dependientes de la arquitectura física de la computadora y de un conjunto específico de instrucciones para el CPU. las sentencias del programa no dependen del diseño de hardware de una computadora específica. 27
. Una propiedad de los lenguajes de alto nivel es que son independientes de la máquina. Algunos ejemplos de tipos de lenguajes de alto nivel son:
Ing. 8. Éstos se clasifican en tres grandes categorías: máquina. Los programas escritos en un lenguaje de alto nivel se llaman Programas Fuente. Jéfferson Beltrán M.1. LENGUAJES DE BAJO NIVEL. 8.Fundamentos de Programación – Algoritmos
Léxico: Conjunto de símbolos permitidos o vocabulario. 8. al igual que los escritos en lenguajes de bajo nivel. y los programas escritos en ellos deben ser traducidos a lenguaje máquina para poder ser ejecutados.3. Los programas escritos en lenguajes de alto nivel. Semántica: Reglas que permiten determinar el significado de cualquier construcción del lenguaje. LENGUAJES DE ALTO NIVEL.
Los lenguajes de bajo nivel fueron diseñados con ese fin.
Msc. Visual Basic. Perl. Pascal. etc. y del lado del cliente lenguajes como JavaScript. Fortran.exe. El proceso de traducción de un programa fuente a un programa objeto se denomina Compilación. o Lenguaje scripting de aplicaciones específicas: ActionScript en Flash. etc. Expect. csh. etc. Funcionales: AML.
Los compiladores son programas se encargan de traducir lo que haya escrito en lenguaje de alto nivel (código o programa fuente) y lo convierten en un programa llamado código o programa objeto (casi ejecutable). Declarativos: Lisp. CAML. MATLAB.
Ing. JSP (JavaServer Pages). mIRC.
8. C++. AppleScript.Fundamentos de Programación – Algoritmos
Estructurados . Visual Basic. 28
. Python. o Lenguajes dinámicos de propósito general: Groovy. etc. VBScript. sed. etc. etc. COMPILADORES E INTÉRPRETES. C#. etc. PHP. sh. Java. o GUI Scripting: AutoHotkey. C++. JScript.NET. Orientados a Objetos: SmallTalk. Prolog.4. PHP. etc..
COMPILACIÓN. Delphi. etc. Automator. etc De scripting: o Lenguaje de control de tareas y shells: cmd.NET.
o Lenguajes de procesamiento de textos: AWK. etc.procedimentales: Basic. Dirigidos por eventos: Visual Basic.  De programación web: Del lado del servidor se tiene ASP (Active Server Pages). Perl. C#. Cobol. Jéfferson Beltrán M. C. AutoIt. Ruby. Visual Basic. Lisp. Objetive-C. Multiparadigma: Java. XSLT. etc.
en cuanto a que sus entradas o datos son algún programa y su salida es otro programa.Fundamentos de Programación – Algoritmos
8. Compilador un programa que traduce un programa escrito en un lenguaje de alto nivel. En cambio. 29
. y programa objeto o código objeto a la versión traducida que el compilador produce. por ejemplo C++. sobre todo cuando se habla de programas objeto. Código se usa frecuentemente para referirse a un programa o a una parte de él. Al tener el código objeto. Una vez traducido un programa.1. Msc. un intérprete permite que un programa fuente escrito en un lenguaje vaya traduciéndose y ejecutándose directamente sentencia a sentencia por la computadora. Para evitar confusiones. El código objeto puede ser ejecutado posteriormente. informa al usuario de la presencia de errores en el programa fuente. Un compilador es un tipo especial de programa. pasándose a crear el programa objeto cuando está libre de errores. Ejemplo: Basic estándar y JavaScript. en un programa en lenguaje de máquina que la computadora es capaz de entender y ejecutar directamente. su ejecución es independiente de su compilación. el programa se ejecuta más rápido. COMPILADOR E INTÉRPRETE. El compilador. Convierte y ejecuta el programa en línea al mismo tiempo.4. Involucra dos pasos en su operación: Convertir código fuente a objeto. Las ventajas de los intérpretes son:
Ing. Ejecutar el código objeto. solemos llamar programa fuente o código fuente al programa de entrada. Convierte uno por uno los enunciados del código fuente a código objeto antes de ser ejecutados. Jéfferson Beltrán M.
. y por lo tanto. El programa es más fácil de desarrollar. Es el estudio crítico del razonamiento y tiene un valor teórico y práctico. sólo se realiza una vez. La lógica se remonta a la época de Aristóteles en el siglo IV antes de Cristo. de hacer elecciones inteligentes. ¿QUÉ ES LÓGICA?
Lógica Deductiva. Argumentos.Fundamentos de Programación – Algoritmos
Resulta más fácil localizar y corregir errores (depuración de programas) Son más pedagógicos para aprender a programar. Jéfferson Beltrán M. si se respetaban. Con el intérprete. se llega a la conclusión válida de que "Todos los griegos son mortales" 9. Traducción de esa línea (si ya está correcta) a código objeto. "Todos los humanos son mortales" y "Todos los griegos son humanos". En un sentido amplio.1. Ejecución de esa línea. no producirían nunca falsas conclusiones si la reflexión partía de premisas verdaderas (reglas de validez). es el estudio del correcto razonamiento. para obtener una solución posible. Es la que se encarga de determinar la validez o invalidez de los argumentos. Cuando el razonamiento se expresa con palabras. Un argumento es un grupo cualquiera de
Ing. aunque más lenta la traducción. En el ejemplo más famoso. recibe el nombre de "argumento". Msc. LA LÓGICA COMO ASPECTO FUNDAMENTAL DE LA PROGRAMACIÓN. Permite proporcionar la simbología que nos servirá para facilitar el desarrollo de la capacidad de análisis de problemas. En lógica. Para cada una de las líneas se ejecuta el siguiente proceso: Análisis de la instrucción de esa línea. Es la capacidad de pensar racionalmente acerca de soluciones alternativas y los resultados de aplicarlas.
9. Con el compilador. cada vez que necesitamos ejecutar el programa tenemos que volver a analizarlo porque no hay código objeto. Aristóteles desarrolló reglas para establecer un razonamiento encadenado que. Es el estudio de los métodos y principios usados al distinguir entre los argumentos correctos (buenos) y los argumentos incorrectos (malos).
Premisas y Conclusión. Una proposición puede ser premisa en un argumento y conclusión en otro. "Las rosas son rojas y las violetas son azules".Fundamentos de Programación – Algoritmos
proposiciones o enunciados que forman premisas y conclusiones. Ej. Este puede constar de varias premisas pero de una sola conclusión. "Por consiguiente. Es el que se compone de varios enunciados. La conclusión es la proposición afirmada que se basa en las otras proposiciones o premisas. Aparece como premisa en el siguiente argumento: "Todos los hombres son mortales" "Sócrates es un hombre" "Por lo tanto. 31
. en tanto que "pues" y "porque" se emplean para introducir las premisas. ninguno de los asistentes está prestando atención". Cuando los enunciados se unen por la conjunción ―Y‖. Por ejemplo: "Todos los hombres son mortales". Las premisas de un argumento son proposiciones afirmadas como fundamento o razones para aceptar una conclusión. Y como conclusión en el siguiente argumento: " Todos los animales son mortales" "Todos los hombres son animales" "Luego. sirven para introducir la conclusión de un argumento. Sócrates es mortal". Ej. Hay dos condiciones que debe satisfacer un argumento para establecer la verdad de su conclusión: Debe ser válido y todas sus premisas deben ser verdaderas.
Ing. Jéfferson Beltrán M. se denominan Enunciados conyuntos. "Las rosas son rojas" Enunciado compuesto. Msc. "por lo cual". Otro Ejemplo: "Todos se aburren en la conferencia". "Ninguno de los que se aburren presta atención". todos los hombres son mortales" Expresiones como "por tanto". "de ello se deduce". Enunciado Simple: Es el que no contiene otro enunciado como parte componente.
10. y esto es igual a Falso. cuál es el valor de verdad de la siguiente expresión: not (A or B) and (P and not Q) Solución: Evaluamos primero los paréntesis. Jéfferson Beltrán M. su valor opuesto es Falso. Levantarse 2. Msc. Q es falso y al negarlo nos queda verdadero. 10. Este algoritmo es caracterizado porque sigue un proceso de ejecución común y lógico. En la tabla OR buscamos a qué equivalen Verdadero or Verdadero (porque A y B son verdaderos según el enunciado). 32
. se denominan Enunciados disyuntos. Luego.Fundamentos de Programación – Algoritmos
Cuando los enunciados se unen por el conector ―O‖. Obtenemos que es Verdadero. De aquí surgen las siguientes tablas de verdad:
Ejemplos de aplicación de estas tablas de verdad: Si A y B son valores verdaderos y P y Q son falsos. Como la expresión está negada. Bañarse
Ing. DESCRIPCIÓN NARRADA.1. REPRESENTACIÓN GRÁFICA DE LOS ALGORITMOS. describiendo textualmente paso a paso cada una de las actividades a realizar dentro de una actividad determinada. Al evaluar el segundo paréntesis. si P es falso nos queda Falso and Verdadero. comenzando con el primero. Ejemplo: Algoritmo para asistir a clases: 1.
Ubicarse en un asiento
10. Buscar el aula 10. Ejemplo: Escribir un algoritmo que imprima en pantalla ―Hola Mundo‖. denominadas líneas de flujo. las operaciones que se aplicarán a los datos y la lógica que tendrá el programa de computadora para solucionar un determinado problema. Vestirse 4. Para diseñarlos se utilizan determinados símbolos o figuras que representan una acción dentro del procedimiento.Fundamentos de Programación – Algoritmos
3. Cepillarse los dientes 6.2. Desayunar 5. pero que respeta las directrices y los elementos de los lenguajes de programación. Se concibió para superar las dos principales desventajas de los diagramas de flujo: lento de crear y difícil de modificar sin un nuevo redibujo. Son la representación gráfica de la solución algorítmica de un problema. DIAGRAMAS DE FLUJO O FLUJOGRAMAS. Msc. FinProceso
10. con los pasos del algoritmo escritos en el símbolo adecuado y los símbolos unidos con flechas. Es una técnica para diseño de programas que permite definir las estructuras de datos. Proceso HolaMundo Escribir "Hola Mundo‖. Llegar a la Universidad 9. Jéfferson Beltrán M. Pseudo = falso. Utiliza un pseudolenguaje muy parecido a nuestro idioma. Tomar el autobús 8.3. Para su elaboración se sigue las siguientes reglas:
. que indican el orden en que los pasos deben ser ejecutados. PSEUDOCÓDIGO. El pseudo código no es realmente un código sino una imitación y una versión abreviada de instrucciones reales para las computadoras. Salir de casa 7. Utilizan unos símbolos normalizados.
La secuencia de un flujo normal en una solución de un problema es: 1. jamás curvas. o Pueden usarse como modelos de trabajo en el diseño de nuevos programas o sistemas. Una lectura o entrada de datos. o Codificación eficaz de los programas. o Documentación adecuada de los programas. 4. Un final Ejemplo: Dibujar un diagrama de flujo que imprima en pantalla ―Hola Mundo‖. Una salida de información. Evitar cruce de flujos. 34
. 4. 5. o Análisis efectivo de las diferentes secciones del programa. o Depuración y pruebas ordenadas de programas
Se escribe de arriba hacia abajo y de izquierda a derecha. o Comunicación con el usuario. 3. El proceso de datos. 2. Jéfferson Beltrán M. Msc. 2.Fundamentos de Programación – Algoritmos
1. 3. En cada paso expresar una acción concreta. Tiene un inicio. Siempre se usan flechas verticales u horizontales.
Entre las ventajas de usar diagrama de flujos se tiene: o Rápida comprensión de las relaciones.
UML es el lenguaje de modelado de sistemas de software más conocido y utilizado en la actualidad. para detallar los artefactos en el sistema y para documentar y construir. En otras palabras. UML cuenta con varios tipos de diagramas. y aspectos concretos como expresiones de lenguajes de programación.4. tan solo se trata de una notación. Estos diagramas son: 10. 10. DIAGRAMAS UML. o Acciones a seguir tras la salida de un símbolo de decisión. o Diagrama de caso de uso. es decir.1. Msc. los cuales muestran diferentes aspectos de las entidades representadas. Es un lenguaje gráfico para visualizar.4. Es importante resaltar que UML es un "lenguaje de modelado" para especificar o para describir métodos o procesos. o Diagrama de actividad. Jéfferson Beltrán M. o Diagrama de estado. es el lenguaje en el que está descrito el modelo. está respaldado por el OMG (Object Management Group). INTRODUCCIÒN A UML (Unified Modeling Language). construir y documentar un sistema. pueden ser difíciles de seguir si existen diferentes caminos. UML ofrece un estándar para describir un "plano" del sistema (modelo).Fundamentos de Programación – Algoritmos
Entre las desventajas podemos anotar: o Diagramas complejos y detallados suelen ser laboriosos en su planteamiento y diseño.
Diagramas de comportamiento. no es una metodología de desarrollo de software. esquemas de bases de datos y componentes reutilizables. Se utiliza para definir un sistema. o Diagrama de interacción. 35
. Permiten exhibir comportamientos de un sistema o de los procesos de las organizaciones. Hay que tener en cuenta que el estándar UML no define un proceso de desarrollo específico. o No existen normas fijas para la elaboración de los diagramas de flujo que permitan incluir todos los detalles que el usuario desee introducir. incluyendo aspectos conceptuales tales como procesos de negocio.
Ing. especificar. funciones del sistema.
o Entorne de programación integrado). o Diagrama de clases. Un entorno de programación es un programa que contiene. Diagramas de estructura. además del compilador. o Diagrama de objeto o Diagrama de paquetes. Eclipse. Integrated Development Environment. para ello usaremos las herramientas PSeInt y JTraductor aunque no son propiamente IDEs. depuración y ejecución de un programa es mucho más fácil y rápido cuando se utiliza un buen entorno de programación. codificación. Nuestro objetivo ahora es escribir algoritmos en pseudocódigo y en diagramas de flujo. ENTORNO DE PROGRAMACIÓN INTEGRADO (IDE). que ayuda a analizar y corregir errores en tiempo de ejecución. ejemplos. o Diagrama de estructura. El proceso de diseño. o Diagrama de comunicaciones o Diagrama de secuencia o Diagrama de tiempo. Por este motivo.) integrada. Estos elementos están integrados. Jéfferson Beltrán M. o Diagrama de componentes. de modo que pueden llamarse fácilmente uno a otros durante el proceso de programación. Es un subconjunto de los diagramas de comportamiento que permiten enfatizar las interacciones entre los objetos. Un entorno de programación típico contiene: Un editor. etc. Ejemplos de entorno de programación son: Microsoft Visual Studio. PSeInt es una herramienta en donde se escribe algoritmos en
Ing. o Diagrama despliegue. Un depurador (o debugger).
11. tutoriales. a los entornos de programación frecuentemente se los identifica con la sigla IDE (en inglés. 36
. Msc. que proporciona el medio para introducir el texto y los símbolos que constituyen el código fuente Un intérprete o un compilador. que convierte el código fuente en instrucciones que la computadora puede comprender y ejecutar. NetBeans.Fundamentos de Programación – Algoritmos
Diagramas de Interacción. Muestran los elementos de una especificación que sean independientes del tiempo. Ayuda (manuales. utilitarios y herramientas.
permite ejecutar el algoritmo paso a paso controlando la velocidad e inspeccionando expresiones. Jéfferson Beltrán M.3 3. Para separar decimales se utiliza el punto. Escribiremos los algoritmos bajo el paradigma de la programación estructurada. Repetitivas o Iterativas: Repetición de una operación mientras se cumple una condición. Todo algoritmo en pseudocógido tiene la siguiente estructura general: Proceso <NombrePrograma> <acción 1>. PSeInt es un software con varios años de creación. tanto enteros como reales. para ello usaremos un pseudolenguaje cuyas características son: Sintaxis sencilla (sin la complejidad de los lenguajes de programación). <acción 2>.
12.14 o Lógico: Sólo puede tomar dos valores: VERDADERO o FALSO. . Selectivas o Condicionales: Bifurcación condicional de una o más operaciones. Ejemplos: 12 23 0 -2. genera un diagrama de flujo y lo convierte en un programa C++. en cambio. JTraductor genera un programa Java.Fundamentos de Programación – Algoritmos
pseudocódigo. (generalmente se usa comillas simples para un carácter y dobles para cadena de caracteres o texto) Estructuras de datos: Arreglos. en cambio JTraductor se basa en PSeInt pero es de reciente creación. PROGRAMACIÓN ESTRUCTURADA. o Caracter: Caracteres o cadenas de caracteres encerrados entre comillas (pueden ser dobles o simples). Manejo de las estructuras básicas de control. Recordemos que Programación Estructurada es una técnica en la cual la estructura de un programa se lo realiza tan claramente como es posible mediante el uso de tres estructuras de control: Secuenciales: Sucesión simple de dos o más operaciones (una tras otra).
. Msc. Sólo 3 tipos de datos básicos: o Numérico: Números. . Ejemplos 'hola' "hola mundo" '123' 'FALSO' 'etc'.
condicionales si-entonces o de selección múltiple y/o lazos mientras. aunque si comentarios.
números. Es decir. o en líneas separadas. ) es el separador decimal.Fundamentos de Programación – Algoritmos
. cada una terminada en punto y coma.Detectar errores de operaciones en los programas durante la fase de codificación. Msc. luego le sigue una secuencia de instrucciones (acciones) y finaliza con la palabra FinProceso. Definición de variables.Determinar cómo se ejecutarán las operaciones entre datos.
Ing. FinProceso Se inicia con la palabra clave Proceso seguida del nombre del programa. La instrucción Definir permite explicitar el tipo de una o más variables. aunque si comentarios. aunque la asignación de tipos a los datos tiene dos objetivos principales: 1. Todo lo que precede a //.
o Las constantes de tipo carácter se escriben entre comillas ( " ). Una secuencia de instrucciones es una lista de una o más instrucciones.
. Esta definición puede ser opcional u obligatoria. Jéfferson Beltrán M. no será tomado en cuenta al interpretar el algoritmo. pero la estructura contenida debe comenzar y finalizar dentro de la contenedora. <acción n>. Constantes e identificadores. o Las constates lógicas son Verdadero y Falso. mediante el uso de la doble barra ( // ). No puede haber instrucciones fuera del programa. hasta el fin de la línea. No puede haber instrucciones fuera del proceso. pueden contener otras adentro. 2. Las acciones incluyen operaciones de entrada y salida. el punto ( . Las estructuras no secuenciales pueden anidarse. asignaciones de variables. o Los identificadores deben constar comenzando siempre con una letra. repetir o para. o En las constantes numéricas. Se pueden introducir comentarios luego de una instrucción.
A menos que el programa conozca los tipos de datos no puede ejecutar correctamente la operación de suma. … . // se define la variable var como Real Definir acumulador Como Entero. si el compilador detecta una operación de suma de dos caracteres normalmente producirá un error.
La instrucción de asignación permite almacenar un valor en una variable. // asigna 1. Jéfferson Beltrán M. ya que los números enteros y los reales se almacenan de formas distintas en memoria. Ejemplo: var<-1. <variable> <. Por consiguiente. // incrementa en 1 el acumulador
Ing.0. // acumulador es una variable Entero
Asignación. <varN> Como [Real/Entero/Logico/Caracter] . A los lenguajes que exigen que todos los datos utilizados deban tener sus tipos declarados explícitamente se los conoce como “fuertemente tipados”. Este mecanismo explícito de conversión de tipos de datos se suele denominar “CAST”. Msc. primero se evalúa la expresión de la derecha y luego se asigna el resultado a la variable de la izquierda.0 a var acumulador<-acumulador +1.Fundamentos de Programación – Algoritmos
Una operación de suma no tiene sentido con caracteres de texto. El tipo de un dato puede ser convertido bajo ciertas condiciones a otro tipo. Una variable debe ser definida antes de ser utilizada por primera vez. Ejemplo: Definir var Como Real. El tipo de la variable y el de la expresión deben coincidir. 39
. Incluso entre tipos numéricos la operación de suma se almacena de modo distinto. <var2> . Al ejecutarse la asignación. sólo con números. La sintaxis es: Definir <var1> .<expresión> .
valor3.
La instrucción Escribir permite mostrar valores al ambiente. para luego referirse a los mismos utilizando uno o más subíndices. Salidas.. <exprN> . Escribir ―El Resultado es: ‖ .
Esta instrucción imprime al ambiente (en este caso en la pantalla) los valores obtenidos de evaluar N expresiones. Jéfferson Beltrán M. Dado que puede incluir una o más expresiones. Ejemplo: Escribir ―Ingrese el nombre: ‖.<variableN> .
. . <variable2> . Arreglos. Leer <variablel> . . . Esta instrucción lee N valores desde el ambiente (en este caso el teclado) y los asigna a las N variables mencionadas.Fundamentos de Programación – Algoritmos
Entradas. resp*2 .
Ing. Leer valor1. Ejemplo: Leer cantidad. Los arreglos son estructuras de datos homogéneas (todos sus datos son del mismo tipo) que permiten almacenar un determinado número de datos bajo un mismo identificador.
La instrucción Leer permite ingresar información desde el ambiente.. Pueden incluirse una o más variables. por lo tanto el comando leerá uno o más valores. valor2. ... Escribir <exprl> . <expr2> . Msc. mostrará uno o más valores.
Para utilizar un arreglo.. Esta instrucción define un arreglo con el nombre indicado en <indentificador> y N dimensiones.20].<max1N>)... lo cual determina cuantos elementos se almacenarán y como se accederá a los mismos. Ejemplo: Definir vector.... Msc. Se pueden definir más de un arreglo en una misma instrucción. Dimensionamiento. La cantidad de dimensiones puede ser una o más.<maxN>).
Operadores y Funciones. La instrucción Dimension permite definir un arreglo. es decir.. y la máxima cantidad de elementos debe ser una expresión numérica positiva. Dimesion <identificador> (<max1>. matriz Como Entero. Las siguientes tablas exhiben la totalidad de los operadores de este lenguaje reducido: Operador Relacionales > < = Mayor que Menor que Igual que 3>2 'ABC'<'abc' 4=3
Ing. indicando sus dimensiones.). Dimension <ident1> (<max11>. primero es obligatorio su dimensionamiento. matriz[10.. definirlo declarando los rangos de sus subíndices...<maxMN>). Es importante notar que es necesario definir un arreglo antes de utilizarlo. separándolos con una coma (.<identM>(<maxM1>.. Los N parámetros indican la cantidad de dimensiones y el valor máximo de cada una de ellas.. Este pseudolenguaje dispone de un conjunto básico de operadores y funciones que pueden ser utilizados para la construcción de expresiones más o menos complejas.. Dimension vector[100]. Jéfferson Beltrán M.
un problema se puede dividir en acciones elementales o instrucciones.
Ing. usando un número limitado de estructuras de control (básicas) y sus combinaciones que pueden servir para resolver dicho problema 12. aunque puede alterarse mediante el uso de paréntesis. ~(2<5) //falso Suma Multiplicación División Potenciación
La jerarquía de los operadores matemáticos es igual a la del álgebra. Msc. 42
<> <= >= Lógicos & | ~ Algebraicos + * / ^
Diferente que Menor o igual que Mayor o igual que
4<>3 'a'<='b' 4>=5
Conjunción (y / and). ESTRUCTURA SECUENCIAL.1. (1=1 | 2=1) //verdadero Negación (no / not). A continuación se listan las funciones integradas disponibles: Función RC(X) ABS(X) LN(X) EXP(X) SEN(X) COS(X) ATAN(X) Significado Raíz Cuadrada de X Valor Absoluto de X Logaritmo Natural de X Función Exponencial de X Seno de X Coseno de X Arcotangente de X
TRUNC(X) Parte entera de X REDON(X) Entero más cercano a X
Como habíamos mencionado anteriormente. (7>4) & (2=1) //falso Disyunción (o / or). Jéfferson Beltrán M.
. //asignación del valor del área
Ing. Las salidas serán entonces la longitud y el área. long Como Real. (Fase 5 del algoritmo) Sabemos que la longitud de un círculo viene dada por la fórmula 2 * pi * radio y que el área viene dada por pi * radio al cuadrado. Salida. 5. cálculo. Jéfferson Beltrán M.
Ejemplo 1: Se desea encontrar la longitud y el área de un círculo de radio ingresado por teclado. Solución. area. Cálculo. Dentro de este tipo podemos encontrar operaciones de inicio/fin. area = área. El objetivo del ejercicio es encontrar la longitud y el área de un círculo con un radio ingresado por teclado. (Fase 4 del algoritmo) Si definimos las variables como: (fase 1 del algoritmo) long = Longitud. 2.pi * radio ^ 2.1416. pi = 3. Msc. Lectura de datos. radio.1416.Fundamentos de Programación – Algoritmos
Se caracteriza porque una acción se ejecuta detrás de otra.3. 4. etc. sumarización. //definición de variables pi <. Definición de variables (Declaración) Inicialización de variables. operaciones de asignación. //definición de un valor constante Escribir "Ingrese el radio: ". 3. El flujo del programa coincide con el orden físico en el que se han ido poniendo las instrucciones. //Ingresa por teclado el radio area <. Este tipo de estructura se basa en las 5 fases de que consta todo algoritmo o programa: 1. //despliega en pantalla Leer radio. hagamos el algoritmo: Pseudocódigo: Proceso Algoritmo1 //este algoritmo calcula el área y la longitud de un círculo de radio ingresado por teclado Definir pi. inicialización de variables. radio = radio.
Msc. area.//asignación del valor de la longitud Escribir "Area: ". Solución. 44
. //salida del algoritmo FinProceso
Ejemplo 2. Desplegar el resultado.
Ing. long. Leer el sueldo de tres empleados y aplicarles un aumento del 10. Jéfferson Beltrán M.2 * pi * radio .Fundamentos de Programación – Algoritmos
long <. " Longitud: ". 12 y 15% respectivamente.
sueldo1 * 1.sueldo3 Como Real.0. Datos adicionales: aumentos del 10. //incrementa el 10% al sueldo original //y lo asigna en sueldoFinal1 sueldoFinal2 <.sueldo2.Fundamentos de Programación – Algoritmos
Salidas: Sueldos finales. 12 y //15% respectivamente Definir sueldo1.0. Escribir "Ingrese el sueldo de los 3 empleados". //definición de variables Definir sueldoFinal1. //inicializamos variables sueldo2 <. //incrementa el 12% al sueldo original //y lo asigna en sueldoFinal2
Ing. sueldoFinal3 = los sueldos finales sueldo1. sueldoFinal1 <.10.0.sueldo2 * 1. sueldo2. sueldoFinal2 <. Msc. sueldo3 = salarios de los empleados Pseudocódigo: Proceso Algoritmo2 //Leer el sueldo de tres empleados y aplica un aumento del 10. //lee los sueldos sueldoFinal1 <. Leer sueldo1. sueldoFinal3 Como Real.0. Jéfferson Beltrán M.0.12. sueldoFinal2.sueldo2. 12 y 15% Cálculos: Sueldo final = sueldo inicial * (1+porcentaje/100) Definición de variables: sueldoFinal1. Entradas: Salarios de los empleados.sueldo3. sueldo3 <. sueldoFinal2.0. sueldoFinal3 <. 45
. sueldo1 <.
. FinProceso incrementados: "." ". Msc.sueldoFinal1. //incrementa el 15% al sueldo original //y lo asigna en sueldoFinal3 Escribir "Sueldos "."
Ing.Fundamentos de Programación – Algoritmos
sueldoFinal3 <.sueldoFinal2. Jéfferson Beltrán M.15.sueldoFinal3.sueldo3 * 1.
Otras Acciones Secuenciales. Jéfferson Beltrán M. Msc.
Ing. 47
Ejemplo: Esperar 3 Segundos. reflejando el cumplimiento o no de una determinada condición. Ejemplo: Esperar Tecla. La instrucción "Borrar Pantalla" (o "Limpiar Pantalla") permite. como su nombre lo indica. indicando a continuación de la palabra clave la longitud y unidad de dicho intervalo.
. Estas condiciones se llaman expresiones lógicas. Ejemplo: Borrar Pantalla.1. o booleanas. se necesita una sentencia de control que dirija a la computadora a ejecutar una sentencia si la expresión es verdadera. y otra sentencia en caso de que sea falsa. Con frecuencia nos enfrentamos a situaciones en las que se deben proporcionar instrucciones alternativas que pueden o no ejecutarse dependiendo de los datos de entrada.2. La instrucción "Esperar" también puede utilizarse para pausar el algoritmo durante un intervalo de tiempo predefinido.
12. La instrucción "Esperar Tecla" detiene su algoritmo hasta que el usuario presione una tecla cualquiera de su teclado. borrar la pantalla y colocar el cursor en la esquina superior izquierda. ESTRUCTURAS SELECTIVAS O CONDICIONALES.
12.2. Las unidades válidas son Segundos y Milisegundos. La realización de acciones alternativas o decisiones se especifican utilizando condiciones que son verdaderas o falsas. Msc.Fundamentos de Programación – Algoritmos
En PSeInt.
ESTRUCTURA SELECTIVA “SI-ENTONCES” (“IF-THEN”).
La siguiente figura muestra el diagrama de flujo de la estructura ―Si-Entonces‖:
Ing. Dado que las expresiones lógicas toman el valor verdadero o falso. Jéfferson Beltrán M.
Jéfferson Beltrán M. Salidas: Mensaje de aprobado si se cumple la condición. si la condición es falsa no se ejecuta ninguna instrucción y la ejecución del programa continúa con la instrucción siguiente.Fundamentos de Programación – Algoritmos
EL pseudocódigo es: Si <condición> Entonces <instrucciones> Sino <instrucciones> FinSi La estructura ―Si‖ funciona de la siguiente manera: 1. Datos adicionales: Un alumno aprueba si la calificación es mayor o igual que 7. La cláusula sino (else) es optativa. Msc. entonces sólo se ejecutará la sentencia B y el control pasa de nuevo inmediatamente a la siguiente sentencia del programa. Si la expresión toma el valor verdadero (true). Si la expresión toma el valor falso (false). escriba "Aprobado" en caso que esa calificación fuese mayor o igual que 7. . Se evalúa la expresión lógica. Variables:
Ing. Ejemplo 3. 49
. Solución. 2. en ese caso. Construir un algoritmo que lea la calificación de un alumno en un examen. se ejecutará la sentencia A y el control pasará a la sentencia inmediatamente siguiente. Entradas: Calificación. 3.
Jéfferson Beltrán M. Msc. Diagrama de flujo:
. Leer cal. //declaro la variable Escribir "Ingrese la calificación del alumno: ". Si cal>=7 Entonces Escribir "Aprobado".Fundamentos de Programación – Algoritmos
Cal = calificación Pseudocódigo: Proceso Algoritmo3 //lee la calificación de un alumno y escribe "Aprobado" si es mayor o //igual que 7 Definir cal Como Real. FinSi FinProceso.
Ejemplo 4. Pseudocódigo: Proceso Algoritmo3 //escribe "Aprobado" si es mayor o igual que 7 o "Reprobado" caso //contrario Definir cal Como Real. Jéfferson Beltrán M. Dada la calificación de un alumno en un examen. 51
. //declaro la variable Escribir "Ingrese la calificación del alumno: ". escriba "Aprobado" si su calificación es mayor o igual que 7 y "Reprobado" en caso contrario. Msc. Si cal>=7 Entonces
Ing. Leer cal.
. aplicar un aumento del 15% si su sueldo es inferior a $1000 y 12% en caso contrario. Jéfferson Beltrán M.Fundamentos de Programación – Algoritmos
Escribir "Aprobado".
Ing. Sino Escribir "Reprobado". Dado como dato el sueldo de un trabajador. Msc. luego imprimir el nuevo sueldo del trabajador. FinSi FinProceso
15.Fundamentos de Programación – Algoritmos
Pseudocódigo: Proceso Algoritmo5 //aumento el 15% si su sueldo es inferior a $1000 y 12% en caso //contrario Definir sueldo. nuevoSueldo. Sino NuevoSueldo <. Jéfferson Beltrán M.sueldo*1. FinProceso
Ing. FinSi Escribir "El nuevo sueldo es: ". Si sueldo<1000 Entonces NuevoSueldo <. nuevoSueldo Como Real.
. Msc.sueldo*1. Leer sueldo. //declaro la variable Escribir "Ingrese el sueldo del trabajador: ".12.
en caso contrario es rechazado. Ejemplo 6: Operador lógico Y (―&‖): Una escuela aplica dos exámenes a sus aspirantes. se cumple o no se cumple la condición. es decir.Fundamentos de Programación – Algoritmos
EXPRESIONES LÓGICAS. Se pueden clasificar en simples y complejas.2.
Sirven para plantear alternativas o decisiones y dan como resultado un valor booleano verdadero o falso. El aspirante que obtenga calificaciones mayores o iguales que 7 en ambos exámenes es aceptado. Msc. 54
. Jéfferson Beltrán M.2.
Ing. por lo que cada uno de ellos obtiene dos calificaciones denotadas como calif1 y calif2. Las simples son las que usan operadores relacionales y las complejas las que usan operadores lógicos.
Ing. Si ((calif1>=7) & (calif2>=7)) Entonces Escribir "Estudiante aceptado". Leer calif2. Escribir "Ingrese la nota 1: ". Leer calif1. calif2 Como Real. Escribir "Ingrese la nota 2: ". Sino Escribir "Estudiante rechazado". Msc. caso contrario //es rechazado Definir calif1. Jéfferson Beltrán M.
Pseudocódigo: Proceso Algoritmo6 //escribe aceptado si las 2 calificaciones son >= que 7.
por lo que cada uno de ellos obtiene dos calificaciones denotadas como calif1 y calif2. Msc. Jéfferson Beltrán M. El aspirante que obtenga una calificación mayor o igual que 9 en cualquiera de los exámenes es aceptado. éstos van acompañados de operadores relacionales. en caso contrario es rechazado. Pseudocódigo: Proceso Algoritmo7
Ing. Ejemplo 7: Operador lógico O (―|‖): Una escuela aplica dos exámenes a sus aspirantes. nótese que también se usa operadores relacionales. Por lo general cuando hay operadores lógicos.Fundamentos de Programación – Algoritmos
. Escribir "Ingrese la nota 2: ". caso //contrario es rechazado Definir calif1. Sino Escribir "Estudiante rechazado". Si ((calif1>=9) | (calif2>=9)) Entonces Escribir "Estudiante aceptado". FinSi FinProceso
Ing. Escribir "Ingrese la nota 1: ".Fundamentos de Programación – Algoritmos
//escribe aceptado si una de las 2 calificaciones es >= que 9. Jéfferson Beltrán M. Leer calif2. calif2 Como Real. Leer calif1. Msc.
La instrucción del ejemplo 7 equivale a OR ya que nos dice que puede ser en cualquiera de los exámenes no necesariamente en los dos. nos estaría indicando una instrucción XOR que es un tipo de OR pero exclusivo. En ejemplo 6 la palabra ambos equivale a seleccionar la instrucción AND.
. no puede considerarse el caso en que tenga la misma nota en los dos exámenes. Msc. Es decir. Si la instrucción nos dijera que obtenga una nota en cualquiera de los exámenes pero no en ambos. Jéfferson Beltrán M. solo en uno de los dos.
2. el resto se consideran horas extras y que éstas se pagan al doble de una hora normal cuando no exceden de 8. Dicho proceso puede repetirse numerosas veces. 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. pueden contener otras adentro. Lo primero que hay que determinar es si el trabajador trabajó horas extras o no. es decir. Definición de variables: ht = horas trabajadas het = horas extras que exceden de 8 ph = pago por hora normal
Ing. Datos de salida: Pago.
ESTRUCTURAS ANIDADAS. pero la estructura contenida debe comenzar y finalizar dentro de la contenedora. Msc. En los problemas en donde un bloque condicional incluye otro bloque condicional se dice que un bloque está anidado dentro del otro. Jéfferson Beltrán M. Datos de entrada: número de horas trabajadas y pago por hora normal. En la solución de problemas encontramos numerosos casos en los que luego de tomar una decisión y marcar el camino correspondiente a seguir. Si no trabajó horas extras tendremos: Pago = pago por hora normal * horas trabajadas. Determinar la cantidad de dinero que recibirá un trabajador por concepto de las horas extras trabajadas en una empresa.Fundamentos de Programación – Algoritmos
12. sabiendo que cuando las horas de trabajo exceden de 40. Solución. Encontrar las horas extras de la siguiente forma: Horas extras = horas trabajadas . Finalmente.
Recordemos que las estructuras no secuenciales se pueden anidar. 59
. pago total que recibirá el trabajador será: Pago = pago * hora normal * 40 + pago por horas extras.40 En caso que sí 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 (sólo horas al doble) pago por horas extras = pago por hora normal * 2 * horas extras. es necesario tomar otra decisión.3. Ejemplo 8.
ph * 2 * 8 + ph * 3 * het. Si he > 8 entonces //determinamos las horas a pagar al triple het <.ph * 2 * he. //variable de horas trabajadas Definir ph. Leer ph. het.ht . pt Como Real. Msc. Si ht > 40 entonces //determinamos las horas extras he <. //variables para pago Escribir "Ingrese las horas trabajadas: ".he . phe. Sino //se pagan al doble phe <. Leer ht. Escribir "Ingrese el valor por hora normal: ".Fundamentos de Programación – Algoritmos
phe = pago por horas extras he = horas extras pt = pago que recibe el trabajador Pseudocódigo: Proceso Algoritmo8 Definir he. FinSi //pago horas normales más horas extras
Ing.40.8. Jéfferson Beltrán M. ht Como Entero. 60
. //las 8 se pagan al doble y el resto al triple phe <.
.ph * 40 + phe. FinSi Escribir "El valor a pagar es: ". Jéfferson Beltrán M. pt. FinProceso
pt <.ph * ht. Sino //no hay horas extras pt <. Msc.
Msc.Fundamentos de Programación – Algoritmos
Ing. Jéfferson Beltrán M.
b. Dados los datos A. Sino Escribir a. Si a>b Entonces Si a>c Entonces Si b>c Entonces Escribir a.c. construir un algoritmo para escribir estos números en forma descendente. Este es un ejemplo de los algoritmos conocidos como de Lógica Pura.c. Entradas: A.b. Solución: Salida: A. Msc.Fundamentos de Programación – Algoritmos
Ejemplo 9.b. Leer a. Escribir "Ingrese 3 números: ". La dinámica del problema es comparar dos números a la vez para conocer cuál es el mayor. Jéfferson Beltrán M." ". B y C ordenados descendentemente. B y C que representan números enteros diferentes. Escribir "Los números ordenados descendentemente son: ". B y C.c. Pseudocódigo: Proceso Algoritmo9 //ordenar 3 números de mayor a menor Definir a. Observación: Para ordenar números no es un algoritmo eficiente. FinSi Sino
Ing." "." ".b. ya que poseen muchas decisiones y muchas bifurcaciones." ". 63
. pero nos sirve para ejemplarizar estructuras anidadas.c Como Entero.
." ".a." "." ". FinSi FinSi FinProceso
Ing.c." ". Sino Escribir b." ".Fundamentos de Programación – Algoritmos
Escribir c." ". FinSi Sino Escribir c.a.b. Jéfferson Beltrán M. Msc." ".a. FinSi Sino Si b>c Entonces Si a>c Entonces Escribir b.b." ".c.
. Jéfferson Beltrán M. Msc.
Usando la estructura de decisión múltiple se evaluará una expresión que podrá tomar n valores distintos. se realizará una de las n acciones o lo que es igual. La estructura de selección múltiple se implementa con la sentencia Según.
Con frecuencia es necesario que existan más de dos elecciones posibles. Esta estructura se representa por un selector el cual si toma el valor 1 ejecutará la acción A. si toma el valor N realizará la acción N.Fundamentos de Programación – Algoritmos
12.4.…. si toma el valor 2 ejecutará la acción B. el flujo del algoritmo seguirá sólo un determinado camino entre los n posibles. 1. Este problema se podría resolver por estructuras selectivas anidadas o en cascada. Jéfferson Beltrán M. 66
ESTRUCTURA DE SELECCIÓN MÚLTIPLE “SEGÚN” (“CASE”). 3. pero si el número de alternativas es grande puede plantear serios problemas de escritura y de legibilidad. 2.2. Msc.n y según que elija uno de estos valores en la condición..> De Otro Modo: <instrucciones> FinSegun
Ing. cuyo diagrama de flujo y pseudocódigo son: Diagrama de flujo:
Segun <variable> Hacer <número1>: <instrucciones> <número2>.<número3>: <instrucciones> <.
num2. si opc=3. cuya secuencia de instrucciones asociada se ejecutará sólo si el valor almacenado en la variable no coincide con ninguna de las opciones anteriores. la secuencia de instrucciones asociada se debe ejecutar cuando el valor de la variable es uno de esos números. se evalúa el contenido de la variable y se ejecuta la secuencia de instrucciones asociada con dicho valor. Si una opción incluye varios números. Al ejecutarse. despliegue el resultado: Pseudocódigo: //Ejemplo de estructura Segun Proceso Algoritmo10 Definir num1. dependiendo del valor almacenado en una variable de tipo numérico. Escribir "Ingrese los dos números a operar: ". Jéfferson Beltrán M. Cada opción está formada por uno o más números separados por comas. Msc. Escribir "Ingrese una opción: 1 (Suma). se puede agregar una opción final. Opcionalmente. el producto. resp <-0.num2. la división y 0 en cualquier otro caso. Leer num1. Leer opc. dos puntos y una secuencia de instrucciones.Fundamentos de Programación – Algoritmos
Reglas: Esta instrucción permite ejecutar opcionalmente varias acciones posibles (distintas entre si). 67
. opc Como Entero. Definir resp Como Real. Ejemplo 10: Escribir un algoritmo tal que si opc=1 realice la suma. si opc=2. denominada De Otro Modo. 2 (Producto). Segun opc Hacer
Ing. 3 (División) :".
3: Si num2=0 Entonces Escribir "El denominador no puede ser 0". Msc.num1+num2.num1/num2.num1*num2. FinProceso
Ing. Sino resp <.resp. Jéfferson Beltrán M.
. 2: resp <. FinSegun Escribir "El resultado es : ".0. FinSi De Otro Modo: resp <.Fundamentos de Programación – Algoritmos
1: resp <.
Ejemplo 11. calcule el aumento correspondiente teniendo en cuenta la siguiente tabla.
Incrementos Categoría Aumento 1 15% 2 10% 3 8%
Ing. 69
. Jéfferson Beltrán M. Imprimir la categoría del trabajador y el nuevo sueldo. Dados como datos la categoría y el sueldo de un trabajador. Msc.
07. FinSegun nuevoSueldo <.
Ing. 70
.sueldo*0. Msc. Leer cat.Fundamentos de Programación – Algoritmos
4 Pseudocódigo: Proceso Algoritmo11 //ejemplo de estructura Segun Definir cat Como Entero.0. 3: inc <. nuevoSueldo Como Real. Escribir "Ingrese el sueldo : ". 2: inc <. Leer sueldo.sueldo + inc. De Otro Modo: inc<. Escribir "Ingrese la categoría : ".
Definir sueldo.1. 4: inc <.sueldo*0.15.sueldo*0.08. Segun cat Hacer 1: inc <.sueldo*0. inc. Jéfferson Beltrán M.
Escribir "Categoría : ". Msc.". Jéfferson Beltrán M.cat. nuevo sueldo: ".nuevoSueldo. FinProceso Diagrama de Flujo:
Msc. Para aplicaciones de este tipo se utiliza la sentencia Para (for). lazo. Los cálculos simples o la manipulación de pequeños conjuntos de datos se pueden realizar fácilmente a mano. Las estructuras repetitivas básicas son: Estructura Para. Esta sentencia requiere que conozcamos por anticipado el número de veces que se ejecutarán las sentencias del interior del bucle. Este conjunto de sentencias se denomina bucle. Las acciones que se repiten en un bucle constituyen el cuerpo del bucle.Fundamentos de Programación – Algoritmos
12. Las estructuras de control repetitivas son aquellas en las que una sentencia o grupos de sentencias se repiten muchas veces.
. y cuyo número se conozca por anticipado. Las computadoras están especialmente preparadas para ejecutar tareas repetidamente.3. y cada repetición del cuerpo del bucle se denomina iteración.1. Estructura Mientras. ESTRUCTURAS REPETITIVAS O ITERATIVAS. ciclo. pero las tareas grandes o repetitivas son realizadas con mayor eficiencia por una computadora.
En numerosas ocasiones se puede necesitar un bucle que se ejecute un número determinado de veces. o loop. En la siguiente figura se muestra el diagrama de flujo de la estructura Para:
El pseudocódigo es:
Ing. Estructura Repetir.3.
ESTRUCTURA REPETITIVA “PARA” (“FOR”). Jéfferson Beltrán M.
Los contadores se utilizan con la finalidad de contar sucesos o acciones internas de un bucle. CONTADOR. Algunos lenguajes permiten definir lo que se llama paso.2. Al llegar al final del bucle (FinPara).1. y a continuación se ejecuta las sentencias de instrucciones que forman el cuerpo del bucle. Es común usar en las estructuras repetitivas los contadores y acumuladores que los describimos a continuación:
12. Representación: <nombre del contador> <. en caso negativo se vuelve a ejecutar todas las sentencias del interior del bucle hasta que la variable de control <variable> sea mayor que el valor final <final>.1. la variable <variable> se incrementará en uno.<inicial> Hasta <final> (Con Paso <paso>) Hacer <instrucciones> FinPara
Al ejecutarse la sentencia Para la primera vez.3.Fundamentos de Programación – Algoritmos
Para <variable> <. Ejemplo: i <. 12. deben realizar una operación de inicialización y posteriormente las sucesivas de incremento o decremento del mismo. ACUMULADOR O TOTALIZADOR. Msc.<nombre del contador> + <valor constante>.1. Jéfferson Beltrán M. Si en vez de incremento es decremento se coloca un menos en lugar del más.i + 1. que es la cantidad de unidades en las que se incrementará o decrementará la variable de control en cada iteración. La inicialización consiste en asignarle al contador un valor. Si se omite la cláusula Con Paso <paso>. se incrementa la variable <variable> en <paso> unidades y se verifica si el valor almacenado en <variable> es mayor que el valor <final>. Un contador es una variable cuyo valor se incrementa o decrementa en una cantidad constante cada vez que se produce un determinado suceso o acción. Se situará antes y fuera del bucle. el valor <inicial> se asigna a la variable <variable>. denominada variable de control.
el acumulador va aumentando en una cantidad variable.<nombre del acumulador> + <valor variable>.0. Msc.suma Como Entero. Jéfferson Beltrán M. //inicializo el acumulador suma <. La diferencia entre un contador y un acumulador es que mientras el primero va aumentando un valor constante. FinPara Escribir "La suma de los 100 primeros enteros es: ".
.suma + i*i. Se desea resolver el problema usando estructura Para.Fundamentos de Programación – Algoritmos
Es una variable que suma sobre sí misma un conjunto de valores para de esta manera tener la suma de todos ellos en una sola variable. FinProceso
Ing. Calcular la suma de los cuadrados de los primeros 100 enteros y escribir el resultado.suma. Representación: <Nombre del acumulador> <. Ejemplo 12. Para i<-1 Hasta 100 Con Paso 1 Hacer suma <. Pseudocódigo: Proceso Algoritmo12 //Ejemplo estructura Para Definir i.
Msc. Pseudocódigo: // Calcula el promedio de una lista de N datos Proceso Algoritmo13 Definir i. Leer numDatos. Escribir "Ingrese la cantidad de datos:". 75
. dato Como Real. numDatos Como Entero. Calcular la promedio de N números enteros y escribir el resultado.Fundamentos de Programación – Algoritmos
Ing. acum <. Jéfferson Beltrán M. Definir acum. promedio.0.
Ing.acum + dato.Fundamentos de Programación – Algoritmos
Para i<-1 Hasta numDatos Hacer Escribir "Ingrese el dato ".acum / numDatos. acum <.
.promedio. FinPara
promedio <.": ".i. Leer dato. Msc. Escribir "El promedio es: ". Jéfferson Beltrán M.
. El diagrama de flujo y pseudocódigo de la estructura iterativa mientras son:
Ing. Jéfferson Beltrán M. Msc.3.
ESTRUCTURA ITERATIVA “MIENTRAS” (“WHILE”).
La estructura iterativa Mientras es aquella en la que el número de iteraciones no se conoce por anticipado y el cuerpo del bucle se repite mientras se cumple una determinada condición.Fundamentos de Programación – Algoritmos
12. Por esta razón.2. se lo conoce como bucle condicional.
Después de cada iteración la expresión lógica se evalúa y se verifica de nuevo. de modo que sea falsa en algún momento y así finalice la ejecución del ciclo. las instrucciones del cuerpo del bucle deben contener alguna instrucción que modifique la o las variables involucradas en la expresión lógica <condición>. Si se evalúa como falsa. se puede ejecutar el bucle.
. Esto significa que el bucle se ejecutará indefinidamente a menos que algo en el interior del mismo modifique la condición haciendo que su valor pase a falso. esta situación no es deseable). entonces se ejecuta el cuerpo del bucle y se evalúa de nuevo la expresión lógica <condición>.Fundamentos de Programación – Algoritmos
Pseudocódigo: Mientras <condición> Hacer <instrucciones> FinMientras
Cuando la sentencia mientras se ejecuta. Este proceso se repite mientras la expresión lógica sea verdadera.
Ing. Jéfferson Beltrán M. cero o más veces. Mientras que la condición sea verdadera el bucle se ejecutará. lo primero que sucede es la evaluación de la expresión lógica <condición>. es decir. Si la expresión lógica se evalúa como verdadera. Si la expresión nunca cambia de valor. ninguna acción se realiza y el programa sigue en la siguiente sentencia después del bucle. a fin de evitarlo. Msc. si cambia de verdadera a falsa la sentencia mientras finaliza. entonces el bucle no termina nunca y se denomina bucle o loop infinito (en general.
Msc.suma + i*i. Calcular la suma de los cuadrados de los primeros 100 números enteros y escribir el resultado. Como recordarás. En este caso.1. Solución. 79
. Esta variable además nos sirve para compararla con el valor dado en la condición.
Ing. Ahora lo haremos con la estructura Mientras.i+1. resolvimos este ejercicio en la lección anterior pero utilizando la estructura Para. i <.Fundamentos de Programación – Algoritmos
Ejemplo 14. para llevar la cuenta de las veces que entramos al cuerpo del bucle. se sale del ciclo. También es importante notar que esta variable se debe inicializar antes de entrar al cuerpo del ciclo y dentro del cuerpo se incrementará en uno cada vez que ingrese a él.suma Como Entero. //inicializo el acumulador y el contador suma <. cuando no se cumple la condición. //incremento el contador i <. Jéfferson Beltrán M. se necesita un contador (un índice).
Mientras i<=100 Hacer //sumo al acumulador suma <.0. Pseudocódigo: //Ejemplo estructura Mientras Proceso Algoritmo14 Definir i.
Msc. FinProceso
.suma.Fundamentos de Programación – Algoritmos
Escribir "La suma de los 100 primeros enteros es: ". Jéfferson Beltrán M.
. sumaGasto Como Real. gasto3. Por ejemplo. //leemos gasto fuera del bucle mientras Leer gasto.Fundamentos de Programación – Algoritmos
En las estructuras cíclicas condicionales es común controlar los ciclos con centinelas y banderas.. En un bucle mientras controlado por tarea. Ejemplo 15.3. Escribir "Ingrese -1 para salir". ya que nunca será una calificación válida y cuando aparezca este valor se terminará de ejecutar el bucle. Escribir "Ingrese el gasto realizado: ". un valor centinela puede ser un número negativo. -1 es el centinela de fin de datos. .
12.0.2. sumaGasto <. Pseudocódigo: //Ejemplo de centinelas Proceso Algoritmo15 Definir gasto. pero no sabemos exactamente cuántos fueron. un valor centinela en esta lista puede ser -1. la condición mientras especifica que el cuerpo del bucle debe continuar ejecutándose mientras la tarea no haya sido completada. -1 donde gastoi es el gasto número i y sumaGasto es el acumulador de gastos efectuados. Solución: Si definimos gasto1. esto puede ser controlado por centinelas. 81
. Suponga que debemos obtener la suma de los gastos que hicimos en nuestro último viaje. CENTINELAS.. gasto2.
Ing.1. si se tienen las calificaciones de un test (comprendida entre 0 y 100). Jéfferson Beltrán M. Si la lista de datos son números positivos. Msc. Centinelas son variables que toman valores adecuados para suspender el ingreso a un bucle..
sumaGasto + gasto.sumaGasto. Escribir "Ingrese el gasto realizado: ".
. Jéfferson Beltrán M. Leer gasto.Fundamentos de Programación – Algoritmos
Mientras gasto <> -1 Hacer sumaGasto <. FinProceso
Ing. Msc. FinMientras Escribir "El gasto total es: ".
Msc. Conocidas también como interruptores.2. los cuales pueden ser 0 ó 1. BANDERAS. Se les suele llamar interruptores porque cuando toman los valores 0 ó 1 están simulando un interruptor abierto/cerrado o encendido/apagado.
Ing.2. Jéfferson Beltrán M. 83
. son variables que pueden tomar solamente dos valores durante la ejecución del programa.3. o bien los valores booleanos True o False.Fundamentos de Programación – Algoritmos
12. switch. flags o conmutadores.
FinSi i <.Verdadero. Jéfferson Beltrán M.serie + 1/i.serie .1/2+ 1/3 . Definir serie Como Real.1/4+. bandera <.
Ing.1/i.Falso..Verdadero. Escribir "Ingrese el valor de N: "..1. +/. Definir i.0. serie <.. Sino serie <. num Como Entero. 84
.i+1. Msc. i <. Leer num.Fundamentos de Programación – Algoritmos
Ejemplo 16: Leer un número entero N y calcular el resultado de la siguiente serie: 1 . Pseudocódigo: //Ejemplo de banderas Proceso Algoritmo16 Definir bandera Como Logico.1/N. //inicializamos la bandera bandera <. bandera <. Mientras i <= num Hacer Si bandera = Verdadero Entonces serie <.
serie. Msc. FinProceso Diagrama de flujo:
. Jéfferson Beltrán M.Fundamentos de Programación – Algoritmos
FinMientras Escribir "La suma de la serie es: ".
ESTRUCTURA ITERATIVA “REPETIR” (“REPEAT”).
La estructura iterativa Repetir es una bucle condicional como lo es también la estructura Mientras. Se usa cuando el número de iteraciones no se conoce por anticipado (lo cual si se conoce en la estructura Para). La diferencia entre ambas es que la condición se sitúa al inicio (Mientras) o al final (Repetir) de la secuencia de instrucciones. Entonces, en el primero, el bucle continúa mientras la condición es verdadera (la cual se comprueba antes de ejecutar la acción, es decir se ejecuta cero o más veces) y en el segundo, el bucle continúa hasta que la condición se hace verdadera (la condición se comprueba después de ejecutar la acción, es decir, se ejecutará al menos una vez). El diagrama de flujo de la estructura Repetir es el siguiente:
El pseudocódigo de la estructura Repetir es: Repetir <instrucciones> Hasta Que <condición>
Al ejecutarse esta instrucción, la secuencia de instrucciones que forma el cuerpo del ciclo se ejecuta una vez y luego se evalúa la condición <condición>. Si la condición es falsa, el cuerpo del ciclo se ejecuta nuevamente y se vuelve a evaluar la condición. Esto se repite hasta que la condición sea verdadera. Note que, dado que la condición se evalúa al final, las instrucciones del cuerpo del ciclo serán ejecutadas al menos una vez. Además, a fin de evitar ciclos infinitos, el cuerpo del ciclo debe contener alguna instrucción que modifique la o las variables involucradas en la condición de modo
Ing. Jéfferson Beltrán M. Msc. 87
que en algún momento la condición sea verdadera y se finalice la ejecución del ciclo. Un ciclo Repetir controlado por centinela, por ejemplo es cuando el usuario digita una letra para salir como ‗S‘ o ‗N‘ para indicar si desea continuar o no. El bucle debe repetirse hasta que la respuesta del usuario sea ‗n‘ o ‗N‘. (Observe que los centinelas solamente pueden usarse con las estructuras Mientras y Repetir, no con estructuras Para). Ejemplo 17: Calcular la suma de los cuadrados de los primeros 100 números enteros y escribir el resultado. Solución. Nuevamente resolveremos el ejercicio de las dos lecciones anteriores, ahora utilizando la estructura Repetir. Como sabemos, en los bucles condicionales podemos usar una variable contador que debe inicializarse antes del ciclo e incrementarse dentro del bucle para controlar el número de veces que se ingresará al mismo. A diferencia de la estructura Mientras, la condición ahora estará colocada al final del bucle para que primero se ejecute la instrucción y luego se verifique si la condición se cumple. Esto quiere decir, que en esta estructura el bucle se realizará por lo menos una vez. También podrás observar que la condición está al revés, porque el bucle se repite hasta que la condición se cumpla. En el bucle Mientras, la condición se evaluaba mientras era verdadera. Pseudocódigo: //Ejemplo estructura Repetir Proceso Algoritmo17 Definir i,suma Como Entero; //inicializo el acumulador y el contador suma <- 0; i <- 1;
Ing. Jéfferson Beltrán M. Msc. 88
//sumo al acumulador suma <- suma + i*i; //incremento el contador i <- i+1; Hasta Que i>100
Escribir "La suma de los 100 primeros enteros es: ",suma; FinProceso
Ing.. Jéfferson Beltrán M.Fundamentos de Programación – Algoritmos
Ejemplo 18. Definir resp Como Caracter. hasta que él decida no ingresar más números. 90
. Pseudocódigo: //Ejemplo estructura Repetir con centinelas Proceso Algoritmo18 Definir suma. num Como Real. Se desea calcular la suma de N números ingresados por el usuario. Msc.
suma. //inicializo la centinela
Repetir Escribir "Ingrese un número: ". // leo la respuesta Leer resp. Hasta Que (resp='N' | resp='n')
Escribir "La suma es: ".
. //sumo al acumulador suma <.suma + num. Leer num. FinProceso
Ing.0. Msc. Jéfferson Beltrán M.Fundamentos de Programación – Algoritmos
//inicializo acumulador suma <. //pregunto se desea continuar Escribir "Desea ingresar otro número (S/N): ".
ESTRUCTURA DE DATOS Y ARREGLOS.
13. Msc. 13.1.
. INTRODUCCIÓN. Jéfferson Beltrán M.
Estructura de Datos es una colección de datos que se caracterizan por su organización y las operaciones que se definen en ella. ARREGLOS. puesto que una variable que se define con alguno de estos tipos sólo puede almacenar un valor a la vez. lógico son considerados como datos de tipo simple. Los tipos de datos estudiados: entero. puede almacenar más de un elemento (valor) a la vez. Son aquellas en las que el espacio ocupado en memoria puede ser modificado en tiempo de ejecución.
13. Jéfferson Beltrán M. Msc. árboles y grafos. reales. con la condición de que todos los elementos deben ser del mismo tipo. carácter. 13. Corresponden a este tipo los arreglos y registros. es decir. etc. real. del lenguaje. Estructura de Datos Estáticas.Fundamentos de Programación – Algoritmos
Todas las variables que se han considerado hasta ahora son de tipo simple. 93
.3. Son aquellas en las que se asigna una cantidad fija de memoria cuando se declara la variable y no puede ser modificada durante la ejecución del programa. existe una relación de uno a uno entre la variable y el número de elementos (valores) que es capaz de almacenar. Corresponden a este tipo las listas. que se puede tener un conjunto de datos enteros. es decir. Una variable de tipo estructurado consiste en toda una colección de casillas de memoria.2. Los datos de tipo estándar pueden ser organizados en diferentes estructuras de datos: estáticas y dinámicas. En cambio un dato de tipo estructurado. los sueldos de los empleados de
Ing. en menor medida. Las estructuras de datos tienen en común que un identificador o nombre. Un arreglo (o array) es una estructura de datos en la que se almacena una colección de datos del mismo tipo (por ejemplo. puede representar a múltiples datos individuales. La elección de la estructura de datos idónea dependerá de la naturaleza del problema a resolver y. Una variable de tipo simple consiste de una sola localidad o ―caja‖ de memoria y sólo puede contener un valor a la vez. ESTRUCTURA DE DATOS. Estructuras de Datos Dinámicas. Estas estructuras no son soportadas en todos los lenguajes.
para ello se utiliza un índice que especifique la posición relativa en el arreglo..Fundamentos de Programación – Algoritmos
una empresa).. un arreglo es una colección finita. Dicho de otra forma. Msc..
. Todo arreglo tiene un límite. Jéfferson Beltrán M. Multidimensionales (tres o más dimensiones). Los arreglos se clasifican de acuerdo con el número de dimensiones que tienen. es decir. Finita. el tercero. Ordenada: Se puede determinar cuál es el primer elemento..
En resumen. homogénea y ordenada de elementos. Bidimensionales (tablas o matrices). un arreglo y es una lista de un número finito n de elementos del mismo tipo que se caracteriza por: Almacenar sus elementos en posiciones de memoria contiguas Tener un único nombre de variable (por ejemplo salarios) que representa a todos los elementos Permitir acceso directo o aleatorio a sus elementos individuales.
Ing. y el n-ésimo elemento. debe determinarse cuál será el número máximo de elementos que podrán formar parte del arreglo. Homogénea. Así se tienen los arreglos: Unidimensionales (vectores). Todos los elementos del arreglo deben ser del mismo tipo. el segundo.
Leer una lista de calificaciones de un examen.. ¿cuántas instrucciones involucra? Definir nota1.
Ing. Encontrar su media.. nota3. nota3. Con lo estudiado hasta el momento.
Supongamos también que hay 100 calificaciones.. En la fase de lectura de datos. ...+nota100)/100. de ese modo son 100 direcciones diferentes de memoria para almacenar las calificaciones del examen.. nota2. por lo tanto serán 100 veces). nota2.. 2. Ordenar la lista de las calificaciones en orden ascendente.Fundamentos de Programación – Algoritmos
Ejemplo..... Suponga que se desea desarrollar un programa para: 1... (En la declaración real de un algoritmo en pseudocódigo no pueden usarse puntos suspensivos. 3....... nota100.. Se imagina declarar las 100 variables. 95
. serán también 100 veces las instrucciones para ir leyendo cada valor. nota100.nota100 Como Entero... Para calcular la media: media  (nota1+nota2+. deberíamos utilizar 100 variables diferentes nota1.. Escribir una lista de las calificaciones mayores que la media.. Jéfferson Beltrán M. Msc. nota2... 4... Leer nota1..
declarar los rangos de sus índices. porque es fácil recorrer toda la lista de notas con unas pocas instrucciones. Msc. un nombre único y su dimensionamiento. de esa manera se requerirá el mismo tiempo para acceder al elemento de la posición 100 que el de la posición 5.
Ing.. Queremos también que esta estructura se almacene en memoria principal para que su almacenaje y recuperación sea más rápida. FinSi … Si nota100 > media Entonces Escribir nota100. FinSi Y después de muchísimas líneas de código. sólo se puede acceder a un elemento buscando desde el principio de la lista. Es por ello que existen los arreglos. deberá también compararse una por una: Si nota1 > media Entonces Escribir nota1. FinSi Si nota2 > media Entonces Escribir nota2.Fundamentos de Programación – Algoritmos
Para la lista de calificaciones mayores que la media. cuando el acceso a la información es secuencial.. lo cual determina cuantos elementos se almacenarán y como se accederá a los mismos. ¡Todavía falta ordenar la lista de calificaciones en orden ascendente! Los arreglos nos permiten ahorrar instrucciones. se debe inicializar sus elementos antes de utilizarlos Definición y Dimensionamiento. debemos indicar su tipo. Jéfferson Beltrán M. Lo que se necesita es una estructura de acceso directo que permita almacenar y recuperar los datos directamente especificando su posición en la estructura. y esto es algo lento. Para poder utilizar un arreglo.. que están organizados en una secuencia de elementos. En el caso anterior. Al declarar un arreglo. 96
. es decir.. todos del mismo tipo y se puede acceder a cada elemento directamente especificando su posición en esta secuencia.
Esta instrucción define un arreglo con el nombre indicado en <indentificador> y N dimensiones. Msc. Dimension <ident1> (<max11>.. Es importante notar que es necesario definir un arreglo antes de utilizarlo.. y se diferencian por la posición que tiene cada elemento dentro del arreglo de datos. Los N parámetros indican la cantidad de dimensiones y el valor máximo de cada una de ellas. matriz[10.3.. es decir.. que identifica la posición del elemento dentro del conjunto. y la máxima cantidad de elementos debe ser una expresión numérica positiva... 97
... a cada una de las cuales se puede acceder directamente mediante un número entero denominado índice del arreglo. Dimension vector[100].
13.. La cantidad de dimensiones puede ser una o más. Jéfferson Beltrán M. tamaño fijo y elementos homogéneos que se almacenan bajo un mismo nombre.<identM>(<maxM1>. Generalmente los índices de los elementos de los arreglos inician en 0.<maxN>).).20].
ARREGLO UNIDIMENSIONAL. Los elementos del arreglo se almacenan en posiciones contiguas de memoria. si declaramos un arreglo de 100 elementos. Ejemplo: Definir vector..1.Fundamentos de Programación – Algoritmos
La instrucción Dimension permite declarar un arreglo.
Un arreglo de una dimensión (también conocido como vector) es un tipo de datos estructurado compuesto de un número de elementos finitos. Se pueden definir más de un arreglo en una misma instrucción. los índices de elementos válidos van de 0 a 99 (aunque existen lenguajes que inician los índices de los arreglos en 1).<maxMN>). separándolos con una coma (... vector[0] vector[1] vector[2]
Ing. tamaño fijo significa que el tamaño del arreglo debe ser conocido en tiempo de compilación y homogéneo significa que todos sus elementos son del mismo tipo. matriz Como Entero. indicando sus dimensiones. Dimesion <identificador> (<max1>.. Finitos indica que hay un último elemento.<max1N>).
Definir un arreglo llamado vector de 100 elementos de tipo Real....1. Ejemplo.3.
13. Las operaciones que se pueden realizar con vectores durante el proceso de resolución de un problema son:
Ing. Hacen referencia a los elementos que forman el arreglo.
vector[0] vector[1] vector[2] ……….1. Los índices.3. vector[97] vector[98] vector[99]
valoro valor1 valor2 ……….Fundamentos de Programación – Algoritmos
……….1.2. Los componentes.. Definir vector Como Real. de qué modo podrán accederse esos componentes. Msc. vector[97] vector[98] vector[99]
13. PARTES DE UN ARREGLO. especifican cuántos elementos tendrá el arreglo y además. Dimension vector[100]. es decir. valor97 valor98 valor99
Definición y Dimensionamiento. OPERACIONES CON ARREGLOS. Jéfferson Beltrán M. Permiten hacer referencia a los componentes del arreglo en forma individual. 98
. a los valores que se almacenan en cada una de las casillas del mismo.
FinPara Escritura. FinPara Asignación. Ordenación.0 Hasta 99 Con Paso 1 Hacer
Ing. Normalmente se realizan con estructuras repetitivas.5.vector[1] / 2. //asigna una operación al arreglo vector //Se puede asignar un valor constante a todos los elementos del vector Para i <.0 Hasta 99 Con Paso 1 Hacer Leer vector[i]. Asignación. Podemos recorrer el arreglo con una estructura repetitiva y asignar un valor a todos los elementos del arreglo. modificación).Fundamentos de Programación – Algoritmos
Lectura/ Escritura. lo escribimos. No es posible asignar directamente un valor a todo el arreglo. 99
. Msc. Ejemplo: Para i <. eliminación.0 Hasta 99 Con Paso 1 Hacer Escribir vector[i]. Ejemplo: Para i <. //asigna el valor 5 a la posición 1 del arreglo vector vector[10] <. Es similar al caso de lectura. Búsqueda. Usamos los índices para recorrer los elementos del arreglo. Lectura. sino que se debe asignar el valor deseado en cada componente. Jéfferson Beltrán M. Actualización (inserción. Ejemplo: vector[1] <. sólo que en lugar de leer el componente del arreglo. El proceso de lectura de un arreglo consiste en leer y asignar un valor a cada uno de sus elementos. Recorrido (acceso secuencial).
(Recorrido). Se debe tener en cuenta si el arreglo está o no ordenado. FinPara Inicialización.0. Las partes de un arreglo unidimensional y las operaciones son las mismas que en los arreglos multidimensionales (pueden extenderse). Ejemplo19. Msc. siempre que haya espacio en memoria (recordemos que el tamaño de un arreglo es fijo). menor. mayor. Incluye añadir (insertar). 100
. Recorrido del vector es la acción de efectuar una acción general sobre todos los elementos de ese vector. Actualización. inicializar con 0 cada elemento del arreglo.Fundamentos de Programación – Algoritmos
vector[i] <. el promedio. Observación. Siempre es importante inicializar las variables y por lo tanto también los arreglos. El acceso a los elementos de un vector puede ser para leer en él o para escribir (visualizar su contenido). Añadir datos a un vector consiste en agregar un nuevo elemento al final del vector.10. salvo que se trata de varias dimensiones y no sólo de una. i. Se desea ingresar una lista de 10 valores numéricos y calcular la suma. suma. borrar o modificar algunos de los ya existentes. los números mayor y menor de dicha lista Pseudocódigo: //Ejemplo de arreglos Proceso Algoritmo19 Definir lista. Ejemplo: Para i <. //defino el arreglo y su tamaño
Ing.0 Hasta 99 Con Paso 1 Hacer vector[i] <. Por ejemplo. promedio Como Entero. FinPara Acceso Secuencial. Jéfferson Beltrán M.
Dimension lista[10]. Jéfferson Beltrán M.suma + lista[i]." de la lista: ".lista[0]. 101
. //inicializo variables suma <. FinPara //calculo el promedio promedio <.0 Hasta 9 Con Paso 1 Hacer suma <.0 Hasta 9 Con Paso 1 Hacer Escribir "Ingrese el valor ". Msc.0.0 Hasta 9 Con Paso 1 Hacer lista[i] <. menor <. FinPara //leo los elementos del arreglo Para i <. FinPara //inicializo los números mayor y menor con el primer //elemento del arreglo mayor <. Leer lista[i].suma / 9. //calculo los números mayor y menor de la lista
Ing.mayor. //calculo la suma recorriendo el arreglo Para i <. //inicializo el arreglo Para i <.(i+1).0.
Promedio: ". Msc.
. mayor. Escribir "Número mayor: ".lista[i]. suma. Jéfferson Beltrán M. FinSi Si lista[i] < menor Entonces menor <. FinSi FinPara //presento los resultados Escribir "Suma: ".lista[i].Fundamentos de Programación – Algoritmos
Para i <. menor. promedio.1 Hasta 9 Con Paso 1 Hacer Si lista[i] > mayor Entonces mayor <. ". FinProceso Diagrama de flujo:
Ing. ". Número menor: ".
Jéfferson Beltrán M.
seRepite <.Falso. Definir cant.lista.Fundamentos de Programación – Algoritmos
Ejemplo 20. Pseudocódigo: //Ordenamiento de un arreglo Proceso Algoritmo20 Definir nombre. Dimension lista[200]. cant <. Ingresar una lista de nombres (la lista termina cuando se ingresa un nombre en blanco). no se permite ingresar nombres repetidos y luego ordenar y presentar la lista. Msc. // leer la lista cant <. lista[cant] <. Escribir "Ingrese un nombre (enter en blanco para terminar):". Definir seRepite Como Logico. Leer nombre. Jéfferson Beltrán M.posMenor Como Enteros.0.i.nombre.aux Como Cadenas. 104
.j. //no es "" el nombre no se necesita buscar un repetido Si nombre<>"" Entonces Para i <. Mientras nombre<>"" Hacer Escribir "Ingrese un nombre: ".0 Hasta cant-1 Hacer
Ing. Repetir // leer un nombre y ver que no esté ya en la lista Leer nombre.cant+1.
Si nombre=lista[i] Entonces seRepite <- Verdadero; //salgo //repetido y no necesito seguir buscando i <- cant; Escribir "Nombre repetido"; Escribir "Ingrese un nombre: "; FinSi FinPara FinSi Hasta Que ~ seRepite FinMientras // ordenamos la lista Para i <- 0 Hasta cant-2 Hacer // busca el menor entre i y cant posMenor <- i; Para j <- i+1 Hasta cant-1 Hacer Si lista[j] < lista[posMenor] Entonces posMenor <- j; FinSi FinPara // intercambia el que estaba en i con el menor que encontró aux <- lista[i];
Ing. Jéfferson Beltrán M. Msc. 105
lista[i] <- lista[posMenor]; lista[posMenor] <- aux; FinPara // mostrar como queda la lista Escribir "La lista ordenada en forma ascendente es:"; Para i <- 0 Hasta cant-1 Hacer Escribir " ",lista[i]; FinPara FinProceso
.n-1] matriz[1. Internamente en memoria se reservan MxN posiciones consecutivas para almacenar todos los elementos del arreglo. Definir matriz Como Entero.).20].
1 1 matriz[0.3.j] matriz[i. etc..
Hasta ahora hemos visto como se puede manipular información con una sola columna o lista de entrada con los llamados vectores. o arreglos de una dimensión. las filas y columnas de las matrices inician en 0).1]
Ejemplo 21.0] matriz[m-1.0] 2 matriz[0. ….0] 2 matriz[1. J matriz[0. ….1] M matriz[m-1. Pseudocódigo: //Ejemplo de matrices
Ing. ….. ingresar las dimensiones por teclado. Declaración de una matriz.1] matriz[1. donde: 1<=I<=M y 1<=J<=N (observe que al igual que en los vectores..j] matriz[m-1. Se desea realizar la suma de dos matrices. uno para la fila y otro para la columna.
ARREGLO BIDIMENSIONAL.. Una matriz se representa como una tabla.Fundamentos de Programación – Algoritmos
13.2. cubos. Dimension matriz[10. en numerosas ocasiones es necesario trabajar con datos que tengan más de una dimensión (se representan por ejemplo como tablas de doble entradas..1] …. ….0] matriz[i.j] matriz[1.n-1] matriz[m-1. Sin embargo.n-1] matriz[i. Para localizar o almacenar un valor en el arreglo se deben especificar dos posiciones (dos subíndices).n-1]
I matriz[i. Jéfferson Beltrán M. Ejemplo: Definir una arreglo bidimensional de 10 filas y 20 columnas de números enteros llamado matriz.j] N matriz[0. Un arreglo bidimensional (matriz o tabla) es un arreglo con dos índices. Msc.
matriz3 Como Entero. n.j+1.". Para i <. FinPara FinPara Limpiar Pantalla.0 Hasta n-1 Con Paso 1 Hacer Escribir "Ingrese el valor B[". Leer matriz1[i.j]. Para i <. matriz3[m. Escribir "Ingrese el número de columnas: ".0 Hasta n-1 Con Paso 1 Hacer Escribir "Ingrese el valor A["."]".0 Hasta m-1 Con Paso 1 Hacer Para j <.".". m.j+1. Escribir "Ingrese el número de filas: ".i+1.n].". Jéfferson Beltrán M. Limpiar Pantalla. Leer m.n]. j. //defino la dimension de las matrices Dimension matriz1[m. Leer n.n].i+1. matriz1. 109
.0 Hasta m-1 Con Paso 1 Hacer Para j <."]". //ingreso la primera matriz Escribir "Ingrese la matriz A:". matriz2. matriz2[m. //ingreso la segunda matriz Escribir "Ingrese la matriz B:".
Ing. Msc.Fundamentos de Programación – Algoritmos
Proceso Algoritmo21 Definir i.
j].j] + matriz2[i.matriz1[i.j].".0 Hasta m-1 Con Paso 1 Hacer Para j <."]=".
. Limpiar Pantalla.. Esperar Tecla.".j]. Msc.j] <.j+1. FinPara FinPara Escribir "Presione enter.matriz3[i. Escribir "C[".Fundamentos de Programación – Algoritmos
Leer matriz2[i. FinPara FinPara FinProceso
Ing. Para i <.0 Hasta n-1 Con Paso 1 Hacer matriz3[i. Jéfferson Beltrán M..".i+1. //sumo las matrices y las presento en pantalla Escribir "La suma de A+B es:".
Jéfferson Beltrán M. El descomponer un programa en módulos independientes más simples se conoce también como el método de "Divide y vencerás". se puede ver como una caja negra (encapsulamiento) que ejecuta una tarea en particular en un programa. Cuando existe un grupo de instrucciones o una tarea específica que deba ejecutarse en más de una ocasión. ahorrando en consecuencia tiempo de programación.Fundamentos de Programación – Algoritmos
14. Cuando un problema es complejo o extenso. que permite descomponer un problema complejo en subproblemas hasta que éstos sean concretos y fáciles de resolver. MODULARIDAD. Los subprogramas son una herramienta importante para el desarrollo de algoritmos y programas. se puede utilizar en otros programas eliminando la duplicación innecesaria de código (reutilización de código). idealmente. Msc. en esencia. debería ser independiente de otros subprogramas. 2. con las llamadas a los mismos dentro del programa principal. ¿Cuándo es útil la modularización? Este enfoque de segmentación o modularización es útil en dos casos: 1. Las ventajas más sobresalientes de utilizar subprogramas o módulos son: El uso de subprogramas facilita el diseño descendente y modular. Un subprograma realiza una tarea concreta que se describe con una serie de instrucciones y que. Ventajas de la Programación Modular.
. de modo que normalmente un proyecto de programación se compone de un programa principal y un conjunto de subprogramas. Una vez que el módulo se ha escrito y comprobado. Los procedimientos se pueden ejecutar más de una vez en un programa y en diferentes programas. Un subprograma. acepta entradas y produce ciertas salidas. la solución se divide o segmenta en módulos que ejecutan partes o tareas específicas. Aumenta la facilidad de depuración y búsqueda de errores en un programa ya que éstos se pueden aislar fácilmente depurándose sus errores
Ing. Estos subproblemas se implementan mediante módulos o subprogramas. Una estrategia para la resolución de problemas complejos con computadoras es la división o descomposición del problema en otros problemas más pequeños y fáciles de resolver.
Definidas por el usuario. 113
. Las funciones se dividen en estándares y definidas por el usuario.
14. Son funciones definidas el programador con el propósito de ejecutar alguna función específica. ya que éstos no siempre son necesarios. El uso de subprogramas facilita la división de tareas de programación entre un equipo de programadores. y que por lo general se usan cuando se trata de hacer algún cálculo que será requerido en varias ocasiones en la parte principal del algoritmo. Las funciones y procedimientos están compuestos por un grupo de sentencias a las que se asigna un nombre (identificador) y constituyen una unidad de programa a la que se puede invocar desde el programa principal u otra función o procedimiento. uno o varios valores. Una de las características importantes y diferenciadoras de los subprogramas es la posibilidad de comunicación entre el programa principal y los subprogramas (o entre dos subprogramas). prácticamente. Las funciones normalmente devuelven un sólo valor a la unidad de programa (programa principal u otro subprograma) que los referencia (que los llama o invoca). PROCEDIMIENTOS Y FUNCIONES. que son unidades de programas diseñados para ejecutar una tarea específica. No es obligatorio que un subprograma utilice parámetros. Los subprogramas en programación estructurada se clasifican en procedimientos y funciones.Fundamentos de Programación – Algoritmos
individualmente antes de su inclusión en bibliotecas independientes y de ser llamados en el programa principal. Un parámetro es un medio para pasar información – valores a variables – del programa principal a un subprograma y viceversa. Son funciones proporcionadas por lenguaje de programación. Jéfferson Beltrán M. Esta comunicación se realiza a través de una lista de parámetros. Estándar. Msc.1. El uso de módulos facilita la proyección y la comprensión de la lógica subyacente para el programador y el usuario. Los procedimientos pueden devolver cero. Un parámetro es. una variable cuyo valor debe ser o bien proporcionado por el programa principal al subprogramas o ser devuelto desde el
La implementación de procedimientos y funciones lo haremos en la herramienta JTraductor. Dos variables locales pueden tener el mismo nombre siempre que estén declaradas en funciones o procedimientos diferentes. y se dice que es local al subprograma. Msc. es una buena práctica evitar el uso de variables globales desde subprogramas a menos que sea estrictamente necesario. A diferencia de las variables locales. IMPLEMENTACIÓN DE PROCEDIMIENTOS Y FUNCIONES. básicamente es
Ing. Jéfferson Beltrán M. pues en PSeInt no es posible realizarlo (al momento de escribir estas líneas). Visibilidad de las variables. Una variable local es una variable que está declarada dentro de un subprograma. y se comportarán como variables locales únicamente dentro de dicho bloque o estructura. y su valor se pierde una vez que el subprograma termina. una global y una local. 14. hay dos tipos de parámetros: parámetros de entrada y parámetros de salida. Hay que tener especial precaución al trabajar con variables globales. Por lo general. tienen el mismo nombre. Por consiguiente.1. ya que al ser recursos compartidos todos los subprogramas pueden tener acceso simultáneo a ellas y se pueden producir errores lógicos debidos a la concurrencia.1. además que es muy común para un programador aprender varios lenguajes de programación. si están muy claros del algoritmo. Una variable local sólo está disponible durante el funcionamiento del mismo.Fundamentos de Programación – Algoritmos
subprogramas al programa principal. Las variables que intervienen en un programa con subprogramas pueden ser de dos tipos: variables locales y variables globales. Las variables declaradas en el programa principal se denominan variables globales. Si dos variables. Las variables también pueden ser declaradas dentro de un bloque o estructura de control. cuyos valores se pueden utilizar sólo dentro del subprograma en el que están declaradas. 114
. mientras que los de salida son aquellos cuyos valores se calcularán en el subprograma y se deben devolver al programa principal para su proceso posterior. la local prevalecerá sobre la global dentro del módulo en que ha sido declarada. Los de entrada son aquellos cuyos valores deben ser proporcionados por el programa principal. las variables globales pueden ser utilizadas en el programa principal y en todos los subprogramas. permanecen activas durante toda la ejecución del programa.
. <. . <varN> <Tipo variable> <variable> <. <acción n>. =.. =. ^ >..8. Msc. Leer <variable> Escritura Escribir <exprl> . <=.. <expr2> . <acción 1>. Fin . <acción 2>.<valor> Como [Real/Entero/Logico/Caracter] .
Comentarios //esto es un comentario No existe forma de definir comentarios Tipos de Variables Real/Entero/Logico/Caracter Real/Entero/Logico/Cadena Declaración de Variables Definir <var1> . <var2> .<expresión> Lectura Leer <var1> . *.Fundamentos de Programación – Algoritmos
cuestión de aprender un nuevo léxico. <acción n>. +. Jéfferson Beltrán M. Operadores >. >=.. <. <acción 2>. *.. <expr2> .<>. … .. . !=.
. . Escribir <exprl> . -. <exprN> .. ~. <=. &.. sintaxis y semántica y saber las semejanzas y diferencias entre un lenguaje y otro. La siguiente tabla muestra un comparativo entre PSeInt (v20120418 ) y JTraductor (v0. ||. +. . <var2> . -. /. |.<expresión> . >=. PSeInt JTraductor
Inicio /Fin del Algoritmo Proceso <NombrePrograma> Proceso Principal <acción 1>. &&.. <exprN> Estructura Si-Entonces Si <condición> Entonces <instrucciones> Sino
Si <condición> Entonces <instrucciones> Sino
Ing. FinProceso . . <variable> <. . . / Asignación <variable> <.0).<varN> .
..<inicial> Hasta Para <Tipo Var> <variable> <..<inicial> <final> (Con Paso <paso>) Hacer Hasta <final> Con Paso <paso> Hacer <instrucciones> <instrucciones> FinPara FinPara Estructura Mientras Mientras <condición> Hacer <instrucciones> FinMientras Estructura Repetir No es soportado la estructura repetir
Mientras <condición> Hacer <instrucciones> FinMientras Repetir <instrucciones> Hasta Que <condición>
Arreglos Dimension <ident1> No es soportado los arreglos (<max11>... 116
. <TipoVar> <Var2>..> De Otro Modo: <instrucciones> FinSegun Estructura Para Para <variable> <.) <instrucciones> Retornar <Variable/Valor>
Ing. El pseudocódigo para declarar funciones es: Funcion <Tipo Var> <nombreFuncion> (<TipoVar> <Var1>.<identM>(<m axM1>.<max1N>).....
Declaración de Funciones.. Jéfferson Beltrán M.Fundamentos de Programación – Algoritmos
<instrucciones> FinSi
Estructura Según Segun <variable> Hacer No es soportado la estructura Según <num>: <instrucciones> <num>..<num>: <instrucciones> <.<maxMN>)... Msc.
Msc. Realizar una función que acepte dos números como parámetros y devuelva la suma de dichos números. Pseudocódigo: Funcion Real sumarNumeros (Real parametro1. Jéfferson Beltrán M. si no se tienen parámetros. Pueden tener cero o más parámetros (<TipoVar> <VarN>) que deben ser pasados al momento de llamar a la función. Real parametro2) Real suma suma <. debe ir el paréntesis vacío. Solución. El nombre de la función <nombreFuncion> debe iniciar con un carácter válido.0. 117
FinFuncion Las funciones siempre deben retornar una variable o valor <Variable/Valor> del mismo tipo del que fue declarada la función <Tipo Var> a través de la palabra reservada Retornar. num1. Ejemplo 21.parametro1 + parametro2 Retornar suma FinFuncion
Proceso principal Real suma <. num2 Escribir "Ingrese el primer número" Leer num1 Escribir "Ingrese el segundo número" Leer num2
Ing. Crearemos una función llamada sumarNumeros que será llamada en el programa principal.
) <instrucciones> FinProcedimiento Los procedimientos. El pseudocódigo para declarar procedimientos es: Procedimiento <nomProcedimiento> (<TipoVar> <Var1>.
... Nótese que los nombres de los parámetros en la definición (parametro1 y parametro2) no necesariamente tienen que ser los mismos que los utilizados en la invocación (num1 y num2). A primera vista. Jéfferson Beltrán M.
Declaración de Procedimientos. a diferencia de las funciones no devuelven ningún valor. los procedimientos parecen dificultar la escritura de un programa. sino que la organización de un programa en funciones y/o procedimientos lo hace más fácil de escribir y depurar. Al nombre de la función junto con la lista ordenada de sus parámetros de entrada se lo conoce como firma de la función. suma Fin En este ejemplo vemos la definición (declaración) de una función en pseudocódigo para calcular la suma de dos números reales. Sin embargo.Fundamentos de Programación – Algoritmos
suma <.sumarNumeros(num1. no puede haber dentro del mismo programa dos funciones con la misma firma. no sólo no es así. Msc. los cuales son pasados al subprograma como parámetros de entrada. En general. La función calcula la suma y la devuelve como un parámetro de salida.. Esta función la podemos invocar desde el programa principal u otra función o procedimiento. <TipoVar> <Var2>.num2) Escribir "La suma es: ". Nótese también que el compilador chequeará previamente que el tipo de dato del parámetro de salida de la función (en este caso un número real) pueda ser asignado a la variable suma según su tipo.
El nombre del procedimiento <nomProcedimiento> debe iniciar con un carácter válido. multiplicación y división) de dos números. Procedimiento bienvenida (Cadena nombre) Escribir "\n\t Bienvenido: ". A primera vista. Ejemplo 23. no sólo no es así. Pseudocódigo:
Ing. Realizar un algoritmo que calcule las operaciones matemáticas básicas (suma. no puede haber dentro del mismo programa dos procedimientos con la misma firma. si no se tienen parámetros. debe ir el paréntesis vacío. Use funciones y procedimientos. Msc. En general. Sin embargo. 119
. nombre FinProcedimiento
Proceso principal Cadena nombre Escribir "Ingrese su nombre: " Leer nombre bienvenida(nombre) Fin Al nombre de la función junto con la lista ordenada de sus parámetros de entrada se lo conoce como firma del procedimiento. Se desea crear un procedimiento que de la bienvenida al usuario que ingresa al programa. resta. los procedimientos parecen dificultar la escritura de un programa.Fundamentos de Programación – Algoritmos
Pueden tener cero o más parámetros (<TipoVar> <VarN>) que deben ser pasados al momento de llamar al procedimientos. Ejemplo 22. sino que la organización de un programa en funciones y/o procedimientos lo hace más fácil de escribir y depurar. Jéfferson Beltrán M.
Real num2) Retornar (num1 + num2) FinFuncion
Funcion Real multiplicar (Real num1.num2) Escribir "El resultado del producto es: ". Real num2) Retornar (num1 / num2) FinFuncion
Procedimiento calculadora (Real num1.num2) Escribir "El resultado de la resta es: ".num2) Si num2!=0 Entonces Escribir "El resultado de la división es: ". Jéfferson Beltrán M. restar(num1. sumar(num1.num2) Sino
Ing.num2) FinFuncion
Funcion Real dividir (Real num1. Msc. 120
Funcion Real sumar (Real num1. multiplicar(num1. Real num2) Retornar (num1 * num2) FinFuncion
Funcion Real restar (Real num1. Real num2) Retornar (num1 . dividir(num1. Real num2) Escribir "El resultado de la suma es: ".
14. Las bibliotecas pueden luego ser referenciadas dentro de múltiples programas para que éstos puedan hacer uso de los subprogramas incluidos en aquella.num2<-0 Escribir " \tCALCULADORA\n" Escribir "Ingrese el primer número: " Leer num1 Escribir "Ingrese el segundo número: " Leer num2 calculadora(num1. Jéfferson Beltrán M. armando de esta manera el programa deseado.num2) Fin Se puede observar que en programa principal se orquesta (invoca) al resto de funciones o procedimientos. 121
Escribir "El resultado de la división es: Denominador igual a 0" FinSi FinProcedimiento
Proceso principal Real num1<-0. el procedimiento calculadora imprime en pantalla el resultado de las operaciones matemáticas básicas calculadas con funciones. En la mayoría de los lenguajes de programación de alto nivel es posible guardar un subprograma o un conjunto de subprogramas como un archivo independiente al cual se denomina genéricamente biblioteca (del inglés library).2. que es ni más ni menos que el código de máquina generado a partir del código fuente (SIN INCLUIR EL CODIGO DE LAS
Ing. BIBLIOTECAS. Recordemos que la salida del proceso de compilación de un código fuente se denomina Programa Objeto. Msc.
En general el pseudocódigo de un algoritmo recursivo es el siguiente: Funcion <Tipo Var> recursivo (<TipoVar> <Var1>. Es una poderosa herramienta de programación como alternativa a algoritmos iterativos (cuando es ―casi‖ imposible resolver con estructuras iterativas). Observación.) <Tipo Var> valor
Ing. que se define en función de sí mismo. 122
. En resumen. en problemas matemáticos. Se dice que un proceso es recursivo si forma parte de sí mismo. hasta que los subproblemas llegan a ser tan simples que se pueden resolver sin realizar más subdivisiones. es decir. Jéfferson Beltrán M. la recursividad consiste en: En el cuerpo de sentencias del subalgoritmo se invoca al propio subalgoritmo para resolver ―una versión más pequeña‖ del problema original. se utiliza la misma técnica de descomposición para subdividir cada uno de estos subproblemas en otros que son menos complejos. Recursividad. <TipoVar> <Var2>. en estructuras de datos y en muchos otros problemas. y la solución general del problema se obtiene juntando todos los componentes resueltos. Este proceso se conoce comúnmente como LinkEdición.. llamado linker. El Programa Objeto es luego utilizado como entrada para que otro componente de software. 15. Habrá un caso (o varios) tan simple que pueda resolverse directamente sin necesidad de hacer otra llamada recursiva. En otras palabras. lo asocie con los subprogramas que se encuentran en las bibliotecas referenciadas y produzca el llamado Programa Ejecutable. Tanto PSeInt como en JTraductor no es posible el uso de bibliotecas. por lo que hay que saber cuándo y cómo aplicarla. un método es recursivo si contiene invocaciones a sí mismo. es el proceso de resolver un problema reduciéndolo a uno o más subproblemas que son idénticos en su estructura al problema original y más simples de resolver...Fundamentos de Programación – Algoritmos
BIBLIOTECAS UTILIZADAS). Una vez que se ha subdividido el problema original. La recursión aparece en la vida diaria. RECURSIVIDAD. Es un proceso extremadamente potente. Msc.
Ejemplo 24. Solución. Msc. en el caso no base.. tenemos los casos: Si n = 1 (caso base) Retornar 1 Si n > 1 Retornar n * factorial(n – 1) Sea factorial(n) la función que calcula el factorial de un número entero n. sea n=4.recursivo(<Var1>.. Calcular el factorial de un número entero usando un algoritmo recursivo. Jéfferson Beltrán M. entonces: factorial (4) = 4 * factorial (3) = 4 * 6 = 24 factorial (3) = 3 * factorial (2) = 3 *2 = 6 factorial (2) = 2 * factorial (1) = 2 * 1 = 2 factorial (1) = 1 Pseudocódigo: Funcion Entero factorial (Entero n) Entero temp
Ing. conduce a problemas cada vez más pequeños que terminarán en el caso base. Recordemos la definición recursiva del factorial: n! = n * (n-1)! . 123
. Cada llamada. <Var2>. en la que no se producen llamadas recursivas (caso base).. Asegurar que se cubren todos los posibles casos entre el base y los no base. si n > 1 1! = 1 Por lo tanto.) <instrucciones> Retornar valor FinFuncion
Las condiciones que debe cumplir un algoritmo recursivo son: Asegurar que existe una condición de salida.Fundamentos de Programación – Algoritmos
<instrucciones> valor <.
que haga que el algoritmo sea más eficiente. Jéfferson Beltrán M. podemos encontrar una solución iterativa simple.n*factorial(n-1) Sino temp <. (2)! = (2) * (1)!
Ing. 124
.n. Ejemplo 25. Msc. si n>1 (n-1)! = (n-1) * (n-2)! (n-2)! = (n-2) * (n-3)! ……." es ". factorial(n) Fin A veces. Se define el factorial como: n! = n * (n-1)! . Solución. Calcular el factorial de un número entero usando un algoritmo iterativo.Fundamentos de Programación – Algoritmos
Si n>1 Entonces temp <.1 FinSi Retornar temp FinFuncion Proceso principal Entero n<-0 Escribir "Factorial de un número entero\t\n" Escribir "Ingrese en valor de n: " Leer n Escribir "El factorial de ". se tiene que: n! = n * (n-1)!. si n > 1 1! = 1 De acuerdo con esta definición.
.n. Jéfferson Beltrán M. que es la definición iterativa de factorial. La principal ventaja es la simplicidad de comprensión y su gran potencia. sencilla y elegante. Msc. y facilidad para comprobar y convencerse de que la solución del
Ing. Sea factorial(n) la función que calcula el factorial de un número entero n. factorial(n) Fin
Ventajas. favoreciendo la resolución de problemas complejos de manera natural." es ".1 Hasta n Con Paso 1 Hacer fact <. sea n=4. entonces: factorial (4) = 4*3*2*1 = 24 Pseudocódigo: Funcion Entero factorial (Entero n) Entero fact<-1 Para Entero i <.fact*i FinPara Retornar fact FinFuncion
Proceso principal Entero n<-0 Escribir "Factorial de un número entero\t\n" Escribir "Ingrese en valor de n: " Leer n Escribir "El factorial de ".Fundamentos de Programación – Algoritmos
De donde: n!=n*(n-1)*(n-2)*…*1.
Aunque no suele ser requerido por los compiladores de los lenguajes de alto nivel.
Ing. Una simple llamada puede generar un gran número de llamadas recursivas. puesta a punto y mantenimiento. incluso. La legibilidad de los programas aumenta considerablemente utilizando comentarios. Elección de nombres significativos para variables. El valor de la recursividad reside en el hecho de que se puede usar para resolver problemas sin fácil solución iterativa. existen una serie de reglas que se recomiendan seguir desde el principio del aprendizaje de la programación. Los comentarios son una parte fundamental de la documentación de un programa. (factorial(n) genera n llamadas recursivas). La recursividad se debe usar cuando sea realmente necesaria. una de las características más importantes que debe tener un buen programador. nombres de subprogramas y nombres de programas deben ser significativos para orientar al usuario o a otros programadores sobre lo que representan: X. Comentarios. JJ no son identificadores significativos. y tienen importancia primordial en las fases de análisis.
16. Un programa con buen estilo es más fácil de leer. Un comentario es un texto explicativo más o menos largo. cuando no exista una solución iterativa simple. ya que ayudan al programador y a otras personas a la comprensión del mismo. Las variables. Desventajas. El principal inconveniente es la ineficiencia tanto en tiempo como en memoria. Y. situado en el programa e ignorado por el compilador. ESTILO DE PROGRAMACIÓN. que utiliza bucles y pilas para almacenar las variables. sin lugar a dudas. de corregir y de mantener. Aunque la experiencia proporciona el estilo. Los comentarios son considerados parte del código fuente por más que sean ignorados en las etapas de compilación y ejecución. dado que para permitir su uso es necesario transformar el programa recursivo en otro iterativo. Jéfferson Beltrán M. El buen estilo de programación es. que las propias instrucciones. constantes. es decir. Msc. No es raro encontrar programas en los cuales los comentarios ocupan más lugar. es una práctica habitual realizar una identación (o tabulación) en cada uno de los bloques y unidades de programas fundamentales para mejorar la legibilidad del código fuente. funciones y procedimientos.Fundamentos de Programación – Algoritmos
problema es correcta. 126
. Identación. Observación.
Editorial C.S. Algoritmos y estructuras de datos.0 Manual de Referencia‖. Editorial Mc Graw Hill ―Lógica Simbólica‖. Rodríguez Baena y Fernández Azuela.E. Con el mismo fin de mejorar le legibilidad y comprensibilidad del programa es recomendado utilizar espacios en blanco antes y después de un operador. Luis Joyanes Aguilar y Angel Hermoso. 1996 ―Fundamentos de Programación‖. ―Programación en Pascal‖. así como también dejar una línea en blanco entre partes importantes o que estén lógicamente separadas. ―Aprenda Visual C++ Ya‖. Editorial Mc Graw Hill
Espacios y Líneas en Blanco. Copi. Validación. 4ª Edición Sanford Leestma y Larry Nyhoff. BIBLIOGRAFÍA. Editorial Prentice Hall ―Introducción a la Ciencia de las Computadoras‖. Mark Andrews. Los programas no pueden considerarse correctos hasta que han sido validados utilizando un rango amplio de datos de prueba para contemplar todas las posibles direcciones que el flujo de control puede tomar en tiempo de ejecución. 2ª Edición ―Pascal y Turbo Pascal enfoque práctico‖. 1999 Editorial Alfaomega ra-ma ―Fundamentos de Programación‖.
. Editorial Prentice Hall 1999 ―Cómo programar en C/C++‖ Deitel/Deitel.A.C. Jéfferson Beltrán M. Chris Pappas y William H. Libro de Problemas Luis Joyanes Aguilar. Luis Joyanes Aguilar 1996.
17. Msc. ―Fundamentos de Informática‖ Luis A. Murray. Ureña y otros. Editorial Mc Graw Hill ―Visual C++ 6. Editorial Mc Graw Hill Irving M.
Ma. del Rosario Bores Rangel y Román Rosales Becerril. Msc.Fundamentos de Programación – Algoritmos
―Computación. Editorial Alfaomega ra-ma 1999 http://pseint.
.sourceforge. Lógica Computacional y Programación‖. Metodología. Editorial Mc Graw Hill 1991 ―Metodología de la Programación. 1a Edición Editorial Alfaomega 1995 ―Enciclopedia del Lenguaje C‖. Gottfried.net/ http://jtraductor.sourceforge. 1ª Edición Editorial Mc Graw Hill 1993 ―Programación en C‖. 1ª Edición Byron S. Diagramas de Flujo y programas‖ Tomos I y II.net/
Ing. Jéfferson Beltrán M. 1ª Edición Francisco Javier Ceballos. Algoritmos. Osvaldo Cairó battistutti.
Más de este usuarioprogramacion_completaccysProgramacionNormalización de BDDReto Matemático con solución
Fundamentos de Programación - Algoritmos JB by Gabriela Cabrera Herrera2,7K viewsEmbedDownloadRead on Scribd mobile: iPhone, iPad and Android.Copyright: Attribution Non-Commercial (BY-NC)List price: $0.00Download as PDF, TXT or read online from ScribdFlag for inappropriate contentMore informationShow less
RelatedPASOS A SEGUIR PARA DESARROLLAR UN ALGORITMOby Jean_c254 Fundamentos de Programacion Algoritmos JBby Pendejada MatutinaAlgoritmos Lenguaje c 9200 Completoby Nelson Yesid Reino CalderonFundamentos de programacionby Israel AguilarFases de la Programaciónby Juan Sánchez RosasFormula Rioby Pattyko TkfManual Fundamentos de Programación 1.1(1)by Wladimir Arnaldo Briceño MirandaEjercicios Operadores Relacionales Logicosby joseca7Similar to Fundamentos de Programación - Algoritmos JBPASOS A SEGUIR PARA DESARROLLAR UN ALGORITMO4 Fundamentos de Programacion Algoritmos JBAlgoritmos Lenguaje c 9200 CompletoFundamentos de programacionFases de la ProgramaciónFormula RioManual Fundamentos de Programación 1.1(1)Ejercicios Operadores Relacionales LogicosProgramador.Certificado.Java.2.Curso.Practico.Segunda.Edicion.RA-MA.pdf

References: Resolución 
 resolución 
 resolución 
 RESOLUCIÓN 
 resolución 
 resolución 
 resolución