Source: https://es.scribd.com/document/91539311/Fundamentos-de-Programacion-Algoritmos-JB
Timestamp: 2017-02-25 16:38:26+00:00

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

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