Free Essay

Algoritmos

In: Computers and Technology

Submitted By melinatestori
Words 18358
Pages 74
Algoritmo y Programación 1 Analista de Sistema de Computación

Módulo

1

Conceptos básicos de programación lógica

1

Esquema de contenidos

Módulo 1

Unidad de Aprendizaje 1
Concepto de procesador, entorno, acción y condición. Algoritmo. Lenguaje. Programa. Concepto de programación estructurada. Estructuras de programación: secuencia, decisión y repetición. Constantes. Variables, expresiones. Identificadores. Tipos de datos numéricos (enteros, reales). Tipo de datos carácter. Tipos de datos cadena de caracteres. Tipos de dato lógico. Cálculo proposicional. Expresiones aritméticas, relacionales, lógicas, carácter y cadena. Operadores. Operadores especiales. Tipos de operandos. Jerarquía de operaciones. Precedencia. Memoria. Asignación simple, compuesta. Aplicaciones en lenguaje Pascal.

Introducción a la computación

Unidad de Aprendizaje 2

Datos y operandos

Unidad de Aprendizaje 3

Estructuras

Estructuras de programación. Decisión simple (if then else). Decisión compuesta (case of). Repetición (while do, repeat until, for do). Anidados. Marca de fin. Contadores. Acumuladores. Máximos y mínimos. Aplicaciones en lenguaje Pascal.

2

Unidad de Aprendizaje 4
Subalgoritmos. Función. Procedimiento. Variables locales y globales. Pasaje de parámetros: por valor, por dirección. Subprogramas predefinidos. Mapa de memoria. Aplicaciones en lenguaje Pascal.

Subprogramas

3

Unidad de Aprendizaje

1

Introducción a la computación

Introducción

En este punto usted se puede preguntar: ¿Qué conceptos son necesarios para interpretar la programación? ¿Qué es la programación? ¿Cuáles son las técnicas que se aplican? ¿Qué tipos de lenguajes se utilizan? Estos y otros interrogantes son los que iremos respondiendo a medida que avancemos en los contenidos de los módulos que constituyen la materia. En principio queremos adelantarle que el estudio de algoritmos es un tema fundamental en el diseño de programas y brinda las bases que servirán para poder construir los mismos de manera fácil y rápida. Veremos que la computadora no solamente es una maquina que puede realizar procesos para darnos resultados, sin que tengamos la noción exacta de las operaciones que realiza para llegar a los mismos, sino que con la computadora además podemos diseñar soluciones a la medida, de problemas específicos que se nos presenten. Mas aún, si estos involucran operaciones matemáticas complejas y / o repetitivas, o requieren del manejo de un volumen muy grande de datos. El diseño de soluciones a la medida de nuestros problemas, requiere como en otras disciplinas una metodología que nos enseñe de manera gradual, la forma de llegar a estas soluciones. A las soluciones creadas por computadora se les conoce como programas y no son más que una serie de operaciones que realiza la computadora para llegar a un resultado, con un 4

grupo de datos específicos. Lo anterior nos lleva al razonamiento de que un programa nos sirve para solucionar un problema especifico. Las herramientas que mostraremos en la materia le facilitarán el desarrollo de su capacidad analítica y creadora, para de esta manera mejorar su destreza en la elaboración de los algoritmos que sirven como base para la codificación de los diferentes programas que realizará a lo largo de su carrera. Dividiremos el estudio de este módulo en cuatro unidades: • • • • Introducción a la Computación Estructuras de programación Datos y operandos Subprogramas

Objetivos
Introducirlo en forma progresiva y sistemática hacia una correcta metodología para la programación de computadoras. A lo largo del curso se introducen las estructuras y herramientas necesarias para la programación, las que estarán disponibles en un lenguaje concreto. Descubra el camino o la estrategia propia, para la resolución de un problema determinado, comprendiendo que no sólo hay una forma de resolver un problema, sino que existen otras posibilidades. Exprese el significado de un algoritmo, y una vez elaborado, el siguiente paso a seguir que es elaborar el diagrama de flujo, y realizar el programa en el lenguaje de programación con el que se quiera trabajar, Esto incluye: El dominio de técnicas de representación de algoritmos. Entender la distinción que existe entre datos y procesamiento. Introducir de manera informal, las nociones de variable y de estructura de control.

5

Conceptos de procesador, entorno, acción y condición

El hombre desde sus orígenes ha debido comunicarse, ya sea de forma oral, escrita o por lenguaje corporal. Para lograr esto se ha tenido que adaptar, buscar o crear formas de lenguaje que le permitan describir situaciones, solucionar problemas matemáticos, físicos o lógicos. La necesidad de explicación y solución de problemas principalmente matemáticos hizo necesario definir una notación genérica, clara y sencilla que permitiera describir un proceso, sus entradas, sus salidas y su inicio y fin. También ha sido necesario definir lenguajes que la permitan al hombre comunicarse con una máquina llamada computador, que fue diseñado para realizar procesos internos sobre la base de entradas y salidas de datos (caja negra). En la actualidad hay equipos computacionales que son automáticos pero aun así, necesitan comunicarse internamente de alguna forma Las computadoras generalmente hacen lo que uno les dice y en ocasiones no es precisamente lo que uno quiere que hagan. No debe de existir ambigüedad en las instrucciones que se le dan a una computadora dentro de un programa. La programación de computadoras en algunas ocasiones resulta compleja y laboriosa, es compleja ya que es una actividad que envuelve diversos procesos mentales. Un algoritmo es más que una sola rama de las ciencias de la computación. Es parte central de todas las áreas de las ciencias de la computación y siendo más justos podemos decir que forma parte relevante de casi todas las ciencias, de los negocios y de la tecnología. La naturaleza de un algoritmo se logra apreciar generalmente en todas aquellas disciplinas que se benefician del uso de computadoras. La computadora no solamente es una maquina que puede realizar procesos para darnos resultados, sin que tengamos la noción exacta de las operaciones que realiza para llegar a esos resultados. Con la computadora además de lo anterior también podemos diseñar soluciones a la medida, de problemas específicos que se nos presenten. Mas aun, si estos involucran operaciones matemáticas complejas y/o repetitivas, o requieren del manejo de un volumen muy grande de datos.

¿Por qué tenemos que abordar estos conceptos? Porque la programación de computadoras es el proceso de planificar una secuencia de instrucciones que se han de seguirse para dar solución a un problema. En realidad cuando hablamos de una computadora estamos hablando de un entorno o ambiente en el cual se ejecuta el programa, un entorno normalmente suele considerarse como la conjunción de elementos de hardware (parte física) y software (parte lógica) que se están utilizando.

6

El uso coloquial de entorno es bastante más amplio y se utiliza para indicar múltiples peculiaridades. Es usual oír hablar de entorno de red cuando lo único que se quiere decir es que se está funcionando en red o entorno monousuario cuando sólo tenemos corriendo los programas de un usuario. Las instrucciones determinan la ejecución de una acción por parte de la computadora y se van ejecutando una a una en forma secuencial, salvo que por medio del cumplimiento de una condición se pueda alterar este orden. En un entorno de multiprogramación, donde son varios los usuarios que están ejecutando sus programas con un solo procesador real, el núcleo del sistema debe asignar el procesador por turnos a los numerosos procesos que pueden estar activos. Hay distintas estrategias para asignar estos turnos, dependiendo del objetivo que se persiga, como veremos en materias futuras.

Recuerde... Programa: Es el conjunto de instrucciones escritas en algún lenguaje de programación y que ejecutadas secuencialmente resuelven un problema especifico. Para poder realizar programas, además de conocer la metodología necesaria, también debemos de conocer, de manera especifica las funciones que puede realizar la computadora y las formas en que se pueden manejar los elementos que hay en la misma. Computadora: Es un dispositivo electrónico utilizado para procesar información y obtener resultados. Los datos y la información se pueden introducir en la computadora como entrada (input) y a continuación se procesan para producir una salida (output)

7

Proceso de información en la computadora

Datos de entrada

Proceso

Datos de salida

Organización física de una computadora

CPU Dispositivos de Entrada Unida de Control Unidad Arit.-Log. Memoria Dispositivos de Salida

Dispositivos de Entrada: Como su nombre lo indica, sirven para introducir datos (información) en la computadora para su proceso. Los datos se leen de los dispositivos de entrada y se almacenan en la memoria central o interna. Ejemplos: teclado, scanners (digitalizadores de rastreo), mouse (ratón), trackball (bola de ratón estacionario), joystick (palancas de juego), lápiz óptico. Dispositivos de Salida: Regresan los datos procesados que sirven de información al usuario. Ejemplo: monitor, impresora. La Unidad Central de Procesamiento (C.P.U) se divide en dos: • • Unidad de control Unidad Aritmético - Lógica

a) Unidad de Control: Coordina las actividades de la computadora y determina que operaciones se deben realizar y en que orden; así mismo controla todo el proceso de la computadora.

8

b) Unidad Aritmético - Lógica: Realiza operaciones aritméticas y lógicas, tales como suma, resta, multiplicación, división y comparaciones.

La Memoria de la computadora se divide en dos: • • Memoria Central o Interna Memoria Auxiliar o Externa a) Memoria Central (interna): La CPU utiliza la memoria de la computadora para guardar información mientras trabaja con ella; mientras esta información permanezca en memoria, la computadora puede tener acceso a ella en forma directa. Esta memoria construida internamente se llama memoria de acceso aleatorio (RAM) La memoria interna consta de dos áreas de memoria: • La memoria RAM (Randon Access Memory): Recibe el nombre de memoria principal o memoria del usuario, en ella se almacena información sólo mientras la computadora esta encendida. Cuando se apaga o arranca nuevamente la computadora, la información se pierde, por lo que se dice que la memoria RAM es una memoria volátil. La memoria ROM (Read Only Memory): Es una memoria estática que no puede cambiar, la computadora puede leer los datos almacenados en la memoria ROM, pero no se pueden introducir datos en ella, o cambiar los datos que ahí se encuentran; por lo que se dice que esta memoria es de solo lectura. Los datos de la memoria ROM están grabados en forma permanente y generalmente son introducidos por el fabricante de la computadora.



b) Memoria Auxiliar (Externa): Es donde se almacenan todos los programas o datos que el usuario desee. Los dispositivos de almacenamiento o memorias auxiliares (externas o secundarias) mas comúnmente utilizados son: cintas magnéticas y discos magnéticos.

Dijimos antes que los programas son un conjunto de instrucciones que se escriben en un lenguaje de programación.

9

Un lenguaje Es una serie de símbolos que sirven para transmitir uno o más mensajes (ideas) entre dos entidades diferentes. A la transmisión de mensajes se le conoce comúnmente como comunicación. La comunicación es un proceso complejo que requiere una serie de reglas simples, pero indispensables para poderse llevar a cabo. Las dos principales son las siguientes: • • Los mensajes deben correr en un sentido a la vez. Debe forzosamente existir 4 elementos: Emisor, Receptor, Medio de Comunicación y Mensaje.

Lenguajes de Programación
Son un conjunto de símbolos, caracteres y reglas (programas) que le permiten a las personas comunicarse con la computadora. Los lenguajes de programación tienen un conjunto de instrucciones que nos permiten realizar operaciones de entrada/salida, cálculo, manipulación de textos, lógica/ comparación y almacenamiento/recuperación. Los lenguajes de programación se clasifican en: • Lenguaje Máquina: Son aquellos cuyas instrucciones son directamente entendibles por la computadora y no necesitan traducción posterior para que la CPU pueda comprender y ejecutar el programa. Las instrucciones en lenguaje maquina se expresan en términos de la unidad de memoria mas pequeña el bit (dígito binario 0 o 1). Son los lenguajes más primitivos debido a que el hardware se desarrolló antes del software y además cualquier software finalmente tiene que expresarse en el lenguaje que maneja el hardware. Lenguaje de Bajo Nivel (Ensamblador): En este lenguaje las instrucciones se escriben en códigos alfabéticos conocidos como mnemotécnicos para las operaciones y direcciones simbólicas. Lenguaje de Alto Nivel: Los lenguajes de programación de alto nivel (Basic, Pascal, Cobol, Fortran, etc.) son aquellos en los que las instrucciones o sentencias a la computadora son escritas con palabras similares a los lenguajes humanos (en general en ingles), lo que facilita la escritura y comprensión del programa, y luego son traducidos a lenguaje de máquina.





10

Lógica de programación La creación de un programa de computadora no es cosa de magia ni es difícil. En algunos aspectos, el aprendizaje de un lenguaje de programación puede ser difícil, pero una vez que se cuenta con los conocimientos básicos, la programación puede ser divertida y a menudo creativa. En la programación computacional clásica, identificar una necesidad o un problema es el primer paso para resolverlo. Sin embargo, rara vez sucede que alguien trate de encontrar algún problema para resolver con un programa de computadora, en la realidad sucede lo contrario. Los problemas o necesidades que hacen surgir la idea de crear un programa aparecen en el curso de la vida de las personas, mientras estas persiguen la obtención de sus metas e intereses. A menudo, cuando dichas necesidades surgen, la gente descubre que alguien ha encontrado la solución, pero esto no siempre es así. Es ahí donde el impulso por desarrollar un programa de computadora se manifiesta. El entender por completo la tarea o problema en cuestión es tan importante como saber un lenguaje de programación.

Todo comienza con nuestros pensamientos e ideas que desarrollamos y refinamos al momento de avanzar en la resolución del problema o tarea. Desafortunadamente, rara vez podemos ser capaces de pensar en todo desde un principio ya que son muchas las variables en la mayoría de los problemas aunque de cualquier manera sigue siendo importante y valioso intentarlo. Durante los avances en el desarrollo, es común encontrarse con obstáculos imprevistos y tener que regresar al proceso de creación de la solución modificando pasos.

Los algoritmos
Son los procedimientos que se construyen para la resolución de cualquier problema. Cuando nos referimos a la construcción de un programa, nos estamos refiriendo a la construcción de un algoritmo. El algoritmo no es un concepto proveniente del campo de la computación, sino que es un término matemático. 11

Históricamente la palabra "algoritmo" deriva del nombre latinizado del gran matemático árabe Mohamed Ibn Moussa Al Kow Rizmi, el cual escribió entre los años 800 y 825 su obra Quitab Al Jabr Al Mugabala, donde se recogía el sistema de numeración hindú y el concepto del cero. Fue Fibonacci, (un gran matemático), el que tradujo su obra al latín y la inició con las palabras: Algoritmi dicit A los algoritmos los encontramos, o mejor dicho, los ejecutamos a lo largo de nuestras actividades diarias; por ejemplo, cuando hacemos una llamada telefónica, tenemos en cuenta un conjunto de instrucciones mínimas y el orden en el cual debemos ejecutarlas para conseguir comunicarnos con alguien en particular; o cuando consultamos un diccionario, etcétera. Conceptualmente podemos decir que un algoritmo es un procedimiento que contiene un conjunto finito de pasos que se deben ejecutar en un orden específico y lógico, para solucionar los problemas. Cuando se tiene un problema para el cual debemos especificar un algoritmo que lo resuelva, tendremos en cuenta varios puntos: • Si no se conoce un método para solucionar el problema en cuestión, debemos hacer un análisis del mismo para llegar a una solución, después de evaluar alternativas, y excepciones. Si se conoce un "buen" método de solución al problema, se debe especificar exacta y completamente el método o procedimiento de solución en un lenguaje que se pueda interpretar fácilmente. Los problemas pueden agruparse en conjunto de problemas que son semejantes en algún sentido. En general, un método para solucionar todos los problemas de un conjunto dado, se considera superior a un método para solucionar solamente un problema del conjunto. Hay criterios para determinar que tan "buena" es una solución, distintos de aquellos que se usan para ver si funciona o no, o hasta qué punto es general la aplicabilidad del método. Estos criterios involucran aspectos tales como: eficiencia, elegancia, velocidad, etcétera.







Al definir con exactitud un método de solución para un problema, este debe tener la capacidad de encontrarla si existe; en caso de que no exista, el método debe reconocer esta situación y suspender cualquier acción. 12

Podríamos sintetizar las características de un algoritmo diciendo que debe tener: • • • Entrada: Todo algoritmo tiene cero o más elementos de Entrada. Estos elementos pueden ser valores, cantidades, condiciones, etcétera. Salida: Todo algoritmo produce una o más salidas o elementos resultantes. Finitud: Todo algoritmo tiene un número finito de pasos. En primer lugar existen algunos algoritmos para los que el número de pasos es fijo, o tiene un máximo estipulado. Estos pueden ser o no ser de naturaleza cíclica. Si son ciclos tienen implícitamente o explícitamente un contador asociado que controla el número de pasos a ejecutar. En segundo lugar, existen algoritmos para los cuales el número máximo de pasos está relacionado con los datos, se puede calcular a priori; y en tercer y último lugar, existen los algoritmos en los que el número máximo está también relacionado con los datos, pero de tal forma que no podemos predecir el número de pasos involucrados. Estos algoritmos generalmente están asociados a una condición o a procesos convergentes. Esta última característica transforma el problema en cuestión en las siguientes variables: • • • • • • Una solución que contiene un número de pasos calculados. Encuéntrese una solución de .... si ésta existe. Encuéntrese una solución de......en un número de pasos menor que un número n, si es que existe la solución. Precisión: Cada paso del algoritmo debe definirse con exactitud, las acciones a ejecutar se especifican rigurosamente y sin ambigüedades para cada caso. Definición: Si se sigue un algoritmo dos veces, se debe obtener el mismo resultado cada vez. Validez: El algoritmo de ser exitoso, es decir, que produzca los resultados esperados, si la terminación de un algoritmo está condicionada a un dato y este evento no se da, entonces nunca terminaría; por lo tanto, el algoritmo no sería válido (problema de loop infinito)

13

Formulación y Solución de los problemas Lo que pretende un algoritmo es sintetizar de alguna forma una tarea, cálculo o mecanismo antes de ser introducido en el ordenador. Los pasos que hay que seguir son los siguientes: • • • • • • Análisis previo del problema. Primera visión del método de resolución. Descomposición en módulos. Programación de los módulos Búsqueda de soluciones parciales. Ensamblaje de soluciones finales.

Los algoritmos están compuestos por diferentes partes, unas relacionadas íntimamente con las otras, de tal forma que muchas veces la inexistencia de alguna provocaría una confusión en el mismo. Por lo tanto es muy importante saber cuáles son las partes principales en las que se divide un algoritmo y cuáles son esenciales y cuales no. Formular y resolver problemas constituye una actividad esencial de la vida y hasta es preocupación de los psicólogos cuando hablan de la inteligencia del hombre, concebida como el concurso de ciertas destrezas mentales relacionadas con lo que ya se ha aprendido y que incluyen: • • • • Capacidad de analizar los problemas. La rapidez y precisión con que acude al pensamiento. Una organización de ideas para garantizar que se posee la información esencial que asegura el aprendizaje. Una retención clara del incremento de conocimiento.

No se trata de almacenar problemas y sus correspondientes soluciones, sino de desarrollar una capacidad para hacer frente con éxito a situaciones nuevas o desconocidas en la vida del hombre. Ante situaciones nuevas, el que no sabe buscar soluciones se sentirá confuso y angustiado y entonces no busca una estrategia y dará una primera solución para poner punto final a su agonía. El que sabe buscar soluciones, selecciona la estrategia que le parece más cercana a la requerida y hace una hábil adaptación que se ajusta a la nueva demanda. 14

Se puede afirmar que todo problema consta de las siguientes partes Datos: Son todos los elementos que conocemos del problema. No se refiere únicamente a los hechos del problema particular sino también al conocimiento que se tenga del marco del problema o entorno del mismo. Operaciones: Procedimientos precisos para manejar, ajustar y adoptar los datos a las necesidades de la situación. combinar y transformar,

Objetivo: Es la solución o resultado final de manipular los datos mediante un conjunto de operaciones. No siempre el objetivo del problema se da explícitamente. Los datos de los problemas suelen llamarse también supuestos o aserciones. Al movernos dentro de la informática no siempre encontramos los problemas a punto de resolverlos, es necesario empezar por hacer su formulación. Se exige hacerlo en términos concisos y claros partiendo de las bases o supuestos que se dispone para especificar sus requerimientos. Sólo a partir de una buena formulación será posible diseñar una estrategia de solución. Es necesario aprender a desligar estos dos procesos. No se deben hacer formulaciones pensando paralelamente en posibles soluciones. Es necesario darle consistencia e independencia para determinar con precisión a que se quiere dar solución y luego canalizar una gama de alternativas posibles. Si ya se ha realizado la formulación podemos cuestionarla con el fin de entender bien la naturaleza del problema.

Etapas El análisis de un problema tiene dos etapas claramente definidas y relacionadas con sus respectivas subdivisiones: • Formulación del problema o Definición del problema o Supuestos: afirmaciones y limitaciones suministradas o Resultados esperados 15



Resolución del problema o Análisis de alternativas y selección de la solución o Especificación detallada del procedimiento que es solución o Adopción o utilización de una herramienta para su implementación, si es necesaria.

Hay que notar que la computadora es un medio y no es el fin en la solución de problemas. En otras palabras, no es la computadora la que soluciona los problemas, somos nosotros quienes lo hacemos y de alguna manera le contamos como es la cosa para que con su velocidad y exactitud trabaje con grandes volúmenes de datos. En el campo de las ciencias de la computación la solución de problemas se describe mediante el diseño de procedimientos llamados algoritmos, los cuales posteriormente se implementan como programas. Los programas son procedimientos que solucionan problemas y que se expresan en un lenguaje conocido por la computadora. Se pueden dar problemas que por su tamaño es necesario subdividirlos en problemas más simples para solucionarlos, utilizando la filosofía de "Dividir para conquistar". Se parte del principio de que es más fácil solucionar varios problemas simples como partes de un todo que seguir una implantación de "Todo o Nada". Desarrollar la capacidad de formular y resolver problemas nos prepara para enfrentar situaciones desconocidas.

Algoritmos Cotidianos Son aquellos algoritmos que nos ayudan a resolver problemas diarios y los ejecutamos sin darnos cuenta de que estamos siguiendo una metodología para resolverlos • Algoritmo para cambiar la rueda de un coche: 1. 2. 3. 4. 5. 6. 16 Inicio. Traer el gato. Levantar el coche con el gato. Aflojar los tornillos de la rueda. Sacar los tornillos de la rueda. Quitar la rueda.

7. Poner la rueda de repuesto. 8. Poner los tornillos. 9. Apretar los tornillos. 10. Bajar el gato. 11. Fin • Algoritmo para aceptar o no una orden de pedido de un cliente 1. 2. 3. 4. • Inicio Leer el pedido Si el cliente es solvente aceptar el pedido, en caso contrario rechazarlo Fin

Algoritmo para determinar el mayor de tres números enteros: 1. Comparar el primero y el segundo entero, deduciendo cuál es el mayor. 2. Comparar el mayor anterior con el tercero y deducir cuál es el mayor. Este será el resultado. Los pasos anteriores se pueden descomponer en otros pasos más simples en los que se denomina refinamiento del algoritmo. 1. Obtener el primer número (entrada), denominado NUM1. 2. Obtener el segundo número (entrada), denominado NUM2. 3. Comparar NUM1 con NUM2 y seleccionar el mayor; si los dos enteros son iguales, seleccionar NUM1. Llamar a este número MAYOR. 4. Obtener el tercer número (entrada), y se denomina NUM3. 5. Comparar MAYOR con NUM3 y seleccionar el mayor; si los dos enteros son iguales, seleccionar el MAYOR. Denominar a este número MAYOR. 6. Presentar el valor MAYOR (salida). 7. Fin

Análisis de un problema elemental Estudiaremos el Algoritmo de Euclides en el cual dados dos números M y N naturales, debemos encontrar su máximo común divisor. Cada par de números M y N naturales será entonces un problema que se ajustará al algoritmo desarrollado.

17

Método de solución Se construye una serie decreciente de la siguiente manera: • • • • • El primer término es el mayor entre M y N. El segundo término es el menor entre M y N El tercer término es el residuo de la división del primer término por el segundo El cuarto término es el residuo de la división del segundo por el tercero y así sucesivamente, hasta que el residuo del cociente sea cero. El máximo común divisor será el divisor del último dividendo.

Esta solución tiene como fundamento matemático demostrado, que el máximo común divisor de dos enteros, ambos no nulos, existe y es positivo menor o igual que N, el proceso debe terminar o sea que existe un número de enteros positivos que satisfacen esas condiciones.

Especificación de los pasos del algoritmo • • • • • • • • • 18 Paso 1: Definir el par de números naturales M y N (entrada) Paso 2: M y N ¿son enteros positivos? Paso 3: Si no se cumple lo anterior, se suspende y se va al paso 9 Paso 4: Comparar los números M y N. Paso 5: Si M es igual a N, cada uno de ellos es M.C.D y se va al paso 8. Paso 6: Si M es menor que N, intercambio los números Paso 7: Resto N de M, y se va al paso 4 Paso 8: Resultado igual M o N Paso 9: Suspender

Este procedimiento depende de la propiedad de la división, aplicada a un algoritmo que involucra el uso repetido de una regla y operación, tal que la información obtenida en cada paso se usa en los siguientes hasta llegar a su resultado buscado. Para un caso particular de M = 105 y N = 168, el algoritmo se comportaría así
M N 105 168 168 105 63 105 105 63 42 63 63 42 21 42 42 21 21 21

Respuesta M.C.D (105, 168) = 21 Otro Ejemplo Dados los números P y Q enteros y positivos, multiplicarlos y obtener el número R resultado. Se usará la suma y la duplicación exacta y entera por dos únicamente. Algoritmo de resolución del problema • • • • • • • • • • Paso 1: Asigne el número P como contenido de la casilla 1 Paso 2: Asigne el número Q como contenido de la casilla 2 Paso 3: Asigne cero como contenido de la casilla 3 Paso 4: Si el contenido de la casilla 2 es un número par vaya al paso 8 Paso 5: Sume –1 (resta) al contenido de la casilla 2. Paso 6: Sume el contenido de la casilla 1 al contenido de la casilla 3. Paso 7: Si el contenido de la casilla 2 es cero vaya al paso 10 Paso 8: Divida el contenido de la casilla 2 por 2 Paso 9: Duplique el contenido de la casilla 1 y vaya al paso 4. Paso 10: La casilla 3 contiene el resultado

19

Apliquemos el algoritmo a los número 6 y 5 CASILLA 1 1er.paso 6 2do.paso 6 3er. paso 12 4to.paso 24 5to.paso (fin) 24 0 30 1 6 2 6 4 6 5 0 CASILLA 2 CASILLA 3

Recuerde lo siguiente: Los pasos a seguir para resolver correctamente un problema: • • • • Comprensión del problema Desarrollo de un plan para resolver el problema Realización del plan Evaluación de la solución

20

En el progreso de la programación también se sigue un procedimiento..... • • • • Definición del problema Desarrollo, refinamiento y pruebas del algoritmo Escritura del programa Pruebas y depuración del programa

Definición de algunos términos comunes en programación Se definen algunos términos en forma simple y se especifican algunos elementos básicos que se usarán en adelante para el desarrollo de la materia y que son imprescindibles para poder “resolver” un algoritmo mediante la ejecución de un programa de computación. Asumiendo que un algoritmo es una serie de operaciones detalladas y no ambiguas que conforman un conjunto de reglas para resolver una cierta clase de problemas, estamos aceptando que un algoritmo es el medio por el que se explica como puede resolverse un problema mediante aproximaciones paso a paso y sin ambigüedad. Al conjunto formado por la representación utilizada y el algoritmo mismo se llama programa

Acción Una acción es un suceso o acontecimiento producido por un actor (ejecutante), tiene la característica de una duración limitada y produce un resultado bien definido y previsto Proceso: Es una acción que se puede descomponer en otras más simples. Se puede considerar un proceso como un conjunto de acciones elementales que forman un acontecimiento. Los procesos pueden ser: Secuenciales 21

Dos acciones no se ejecutan simultáneamente. Paralelos Si se ejecutan dos o más acciones simultáneamente.

A lo largo de este curso trataremos procesos secuenciales, los que en un instante dado solo pueden ejecutar una única acción. Memoria: Es la capacidad de guardar información y de tenerla disponible para su uso. Constante: Valor fijo durante la ejecución del algoritmo. Variable: Debemos tener en cuenta dos componentes: • • Nombre o etiqueta de la variable, que es una secuencia ordenada de uno o más caracteres, los cuales nos sirven para identificar y referenciar en cualquier instante. Valor o contenido de la variable, que es el dato asociado con ella en un instante determinado.

Es conveniente usar nombres mnemotécnicos para las variables de manera que identifiquen, hasta donde sea posible, el papel que desempeña la variable. El valor puede variar durante la ejecución del algoritmo, de ahí su nombre de variable. Asignación: La asignación consiste, en el paso de valores o resultados a una zona de la memoria. Dicha zona será reconocida con el nombre de la variable que recibe el valor. La asignación se puede clasificar de la siguiente forma: • • • • • Simples: Consiste en pasar un valor constate a una variable (a = 15) Contador: Consiste en usarla como un verificador del numero de veces que se realiza un proceso (a = a + 1) Acumulador: Consiste en usarla como un sumador en un proceso (a = a + b) De trabajo: Donde puede recibir el resultado de una operación matemática que involucre muchas variables (a = c + b * 2 / 4) Lectura: La lectura consiste en recibir desde un dispositivo de entrada (por ejemplo el teclado) un valor. Esta operación se representa en un pseudocodigo como sigue: Leer a, b Donde “a” y “b” son las variables que recibirán los valores

22



Escritura: Consiste en mandar por un dispositivo de salida (por ejemplo monitor o impresora) un resultado o mensaje. Este proceso se representa en un pseudocodigo como sigue: Escribe “El resultado es:” R. Donde “El resultado es” es un mensaje que se desea aparezca y R es una variable que contiene un valor.

Inicializar: Consiste en asignar un primer valor a una variable. Dato: Hechos, sucesos. Información: Datos procesados. Tipos de algoritmos: Se tienen básicamente dos tipos de algoritmos: Cualitativos y cuantitativos. • • Algoritmo Cualitativo: Son aquellos cuyos pasos son descriptivos y no involucran cálculos numéricos. Algoritmos Cuantitativos: Son aquellos cuyos pasos fundamentalmente involucran cálculos numéricos.

Recordemos que todo algoritmo tiene un punto de partida y un punto de llegada. En el desarrollo de algoritmos cuantitativos nos encontramos con conceptos tales como operaciones de: Entrada Salida Decisión Almacenamiento

La operación de salida es crucial en el desarrollo de algoritmos.

Ejemplo: Es muy importante entender la utilidad de los ciclos que luego veremos con más detalle, pero que ahora ilustramos con el siguiente ejemplo para mostrar la forma de implementarlos. 23

Supongamos el siguiente problema: Crear un algoritmo para generar los 10 primeros números enteros y calcular su suma. Se tienen dos actividades a cumplir que nos exigen dos variables con funciones definidas así: Número: Nos permite llevar el control del último número generado (contador) Suma: Nos permite llevar el control de las sumas de todos los números generados hasta un instante dado (acumulador) Estas variables se inician en cero por defecto. Una posible solución podría ser describir los pasos en su totalidad, pero nos podemos imaginar que no es cuestión de cuerdos. Por fortuna, tenemos una estructura básica ya aceptada. 1. Iniciar. 2. numero = 0 3. suma = 0 4. 5. 6. 7. 8. 9. Mientras (numero < 9) numero = numero + 1 suma = suma + número Fin mientras Mostrar suma Terminar.

Cuando se da la orden muestre variables se está dando la orden para que efectúe una operación de salida. Una operación igualmente útil sería la que permite asumir un valor para una variable por parte del usuario y la cual sería una operación de entrada.

Diferencia entre el lenguaje algorítmico y el informático Debemos distinguir prontamente la diferencia existente entre el lenguaje algorítmico y el informático. El lenguaje algorítmico es aquel por medio del cual se realiza un análisis previo del problema a resolver y para encontrar un método que permita resolverlo. El conjunto de todas las operaciones a realizar, y el orden en el que deben efectuarse, se le denomina algoritmo. 24

El lenguaje informático es aquel por medio del cual dicho algoritmo se codifica a un sistema comprensible por el ordenador o computadora. Este tipo de lenguaje es más cercano a la máquina que al ser humano y podemos distinguir distintos tipos dependiendo de la proximidad a la maquina. Se denomina lenguaje de computación de alto nivel aquel que es más cercano a la comprensión humana y lenguaje de computación de bajo nivel a aquellos que son más comprensibles por la máquina. En concreto, nosotros vamos a estudiar algunas aplicaciones en el lenguaje Pascal

Técnicas para la formulación de algoritmos Las dos herramientas utilizadas comúnmente para diseñar algoritmos son: • • Diagrama de Flujo Pseuducódigo

Diagrama de Flujo (Organigrama) Un diagrama de flujo (flowchart) es la representación gráfica de un algoritmo. También se puede decir que es la representación detallada en forma gráfica de como deben realizarse los pasos en la computadora para producir resultados. Esta representación gráfica se da cuando varios símbolos (que indican diferentes procesos en la computadora), se relacionan entre sí mediante líneas que indican el orden en que se deben ejecutar los procesos. Los símbolos utilizados han sido normalizados por el instituto norteamericano de normalización (ANSI)

TERMINAL
ENTRADA Y SALIDA DE DATOS

Indica el inicio y el final de nuestro diagrama de flujo.

Indica la entrada y salida de datos

. PROCESO Símbolo de proceso y nos indica la asignación de un valor en la memoria y / o la ejecución de una operación aritmética. 25

DECISION

Símbolo de decisión indica la realización de una comparación de valores.

conector

Conector dentro de pagina. Representa la continuidad del diagrama dentro de la misma pagina.

Líneas de flujo o dirección. Indican la secuencia en que se realizan las operaciones.

DISCOS

Almacenamiento secundario

MONITOR DISCOS

Pantalla de video Almacenamiento de acceso directo

26

Almacenamiento en acceso secuencial
CINTAS

IMPRESORA

Documento o salida impresa

Combinar dos o más archivos

SUMAR

Llamada a un procedimiento predefinido

Extraer datos de un archivo

LEER DATOS

Lectura o escritura de datos

2

Conector fuera de página

A = 20

Entrada manual de datos 27

En lo posible observar las siguientes normas para el diseño de diagramas de Flujo • • • • • • Se deben usar solamente líneas de flujo horizontales y / o verticales. Se debe evitar el cruce de líneas utilizando los conectores. Se deben usar conectores solo cuando sea necesario. No deben quedar líneas de flujo sin conectar. Se deben trazar los símbolos de manera que se puedan leer de arriba hacia abajo y de izquierda a derecha. Todo texto escrito dentro de un símbolo deberá ser escrito claramente, evitando el uso de muchas palabras.

Guía para la construcción de DF Además de las reglas básicas que existen para la elaboración de DF, existen otras reglas adicionales que nos permitirán no elaborar DF erróneos y gratos a la vista de los usuarios usando los componentes básicos de DF que son: proceso (burbuja), flujo, almacenes y terminadores.

Estas reglas incluyen las siguientes: • Escoger nombres con significado para los procesos, flujos, almacenes y terminadores. Un proceso en un DF puede representar una función que se está llevando a cabo, o pudiera indicar cómo se está llevando a cabo, identificando a la persona, grupo o mecanismo involucrado. Un buen sistema que se puede utilizar para nombrar procesos es usar un verbo y un objeto. Es decir, escoja un verbo activo (un verbo transitivo que tenga objeto) y un objeto apropiado para formar una frase descriptiva para el proceso. Los siguientes son ejemplos de nombres de procesos: o Calcular trayectoria del proyectil. 28

o Producir informe de inventario. o Validar número telefónico. o Asignar estudiante a la clase. Los nombres de los procesos (al igual que los nombres de flujos y de terminadores) deben provenir de un vocabulario que tenga algún significado para el usuario. • Numerar los procesos. Como una forma conveniente de referirse a los procesos en un DF, muchos analistas numeran cada burbuja. No importa mucho como sea haga esto, de izquierda a derecha, de arriba abajo o de cualquier otra manera servirá, mientras haya constancia en la forma de aplicar los números. La única cosa que se debe tener en mente es que el sistema de numeración implicará, para algunos lectores casuales de su DF, una cierta secuencia de ejecución. Esto es, cuando se muestre el DF a un usuario, él pudiera preguntar: ¿Acaso la burbuja número 1 sucede primero, luego la 2 y luego la 3?. Y esto no es así en absoluto. El modelo de DF es una red de procesos asincrónicos que se intercomunican, lo cual es, de hecho, una representación precisa de la manera en la que en realidad muchos sistemas operan. Un ejemplo de la funcionalidad de enumerar las burbujas es el siguiente: Es más fácil en una discusión sobre un DF decir " burbuja 1" en lugar de "Editar transacción y reportar errores". Pero de mayor importancia aún es el hecho de que los números se convierten en base para la numeración jerárquica. • Evitar los DF excesivamente complejos El propósito de un DF es modelar de manera precisa las funciones que debe llevar a cabo un sistema y las interacciones entre ellas. Pero otro propósito del DF es ser leído y comprendido, no sólo por el analista que construyó el modelo, sino por los usuarios que sean los expertos en la materia de aplicación. Existe una regla principal para la elaboración de un DF, que se debe tener en mente: no cree un DF con demasiados procesos, flujos, almacenes y terminadores. En la 29

mayoría de los casos, esto significa que no debería haber más de media docena de procesos y almacenes, flujos y terminadores relacionados en un solo diagrama. Existe una excepción importante a esto, un diagrama especial conocido como diagrama de contexto, que representa el sistema entero como un solo proceso y destaca las interfaces entre el sistema y los terminadores externos. • Redibujar el DF tantas veces como sea necesario estéticamente. En un proyecto real de análisis de sistemas el DF debe dibujarse y volver a dibujar a menudo hasta 10 veces o más, antes de 1) ser técnicamente correcto, 2) ser aceptable para el usuario y 3) estar lo suficientemente bien dibujado como para que no sea embarazoso mostrarlo a las dirección de la organización. ¿Qué hace estéticamente agradable a un DF?. Esto es obviamente una cuestión de gustos y puede determinarse por normas dispuestas por su organización o por las características particulares de cualquier paquete que utilice de diseño de diagramas basado en una estación de trabajo automatizada. Y la opinión de usuario pudiera ser un tanto diferente de la suya; lógicamente, cualesquiera cosas que el usuario encuentre agradable debe determinar la manera en la que se dibuje el diagrama. • Asegurarse de que el DF sea lógicamente consistente y que también lo sea con cualesquiera DF relacionados con él. Las principales reglas de consistencia son: o Evite sumideros infinitos, burbujas que tienen entradas pero no salidas. o Evite las burbujas de generación espontánea, que tienen salidas sin tener entradas, porque son sumamente sospechosas y generalmente incorrectas. o Tenga cuidado con los flujos y procesos no etiquetados. Esto suele ser un indicio de falta de esmero, pero puede esconder un error aún más grave: a veces el analista no etiqueta un flujo o un proceso porque simplemente no se le ocurre algún nombre razonable. • Extensiones del DF para sistemas de tiempo real Para los sistemas de tiempo real necesitamos alguna manera de modelar flujos de control (es decir señales o interrupciones). Y se requiere una manera de mostrar procesos de control (esto es, burbujas cuya única labor es coordinar y sincronizar 30

las actividades de otras burbujas del DF). Se muestran gráficamente con líneas punteadas en el DF. El diagrama de flujo, además de representar semi - gráficamente a un algoritmo nos permite generar la traza del mismo, entendiendo por esto a la ejecución manual de forma secuencial de las sentencias que lo componen, obteniendo para cada paso un resultado:

Veamos como ejemplo la traza del algoritmo Suma: Algoritmo Suma Variable entera a, b Escribir "Indique el primer sumando" Leer a Escribir "Indique el segundo sumando" Leer b c=a+b Escribir "El resultado es: ";c Final

TRAZA Comentario Leemos a: Leemos b: Calcula c: Escribe c: Valores a 4 b 5 c a+b c 9

9

Con la traza comprobamos que funciona correctamente o la usamos en etapa de depuración para corregir errores. Pseucódigo Es una mezcla de lenguaje de programación y español (o ingles o cualquier otro idioma) que se emplea, dentro de la programación estructurada, para realizar el diseño de un programa, es la representación narrativa de los pasos que debe seguir un algoritmo para dar solución a un problema determinado. En esencial, el pseudocodigo se puede definir como 31

un lenguaje de especificaciones de algoritmos, siendo un excelente medio para expresar la lógica de un programa.

Ventajas de utilizar un Pseudocodigo a un Diagrama de Flujo • • • • Ocupa menos espacio en una hoja de papel Permite representar en forma fácil operaciones repetitivas complejas Es muy fácil pasar de pseudocódigo a un programa en algún lenguaje de programación Si se siguen las reglas se puede observar claramente los niveles que tiene cada operación

Algunos elementos usados en pseudocódigos para la representación de un proceso
PALABRA UTILIZACIÓN

ABRE CASO CIERRA ENTONCES ESCRIBE FIN HASTA HAGA INICIO LEER MIENTRAS NO O O - BIEN PARA SI Y { } 32

Abre un archivo Selección entre múltiples alternativas Cierra un archivo Complemento de la selección SI – ENTONCES Visualiza un dato en pantalla Finaliza un bloque de instrucciones Cierra la iteración HAGA – HASTA Inicia la iteración HAGA – HASTA Inicia un bloque de instrucciones Lee un dato del teclado Inicia la iteración mientras Niega la condición que le sigue Disyunción lógica Complemento opcional de la selección SI – ENTONCES Inicia un número fijo de iteraciones Inicia la selección SI – ENTONCES Conjunción lógica Inicio de comentario Fin de comentario

0) entonces Mensaje = "El número es positivo” Imprime Mensaje Fin-Si Fin Inicio Diseño: Leer Número

a

Mensaje

“El número no es positivo”

Número >0
Mensaje “El número es positivo”

39

Mostrar Mensaje

Fin
FINALIZAR

Decisión binaria de dos ramas En ella es evaluada una condición y si la condición es verdadera se ejecuta una serie de acciones y en caso contrario realizará otro bloque distinto de acciones; después realiza el fin sí. Pseudocódigo Si (condición es verdadera) Entonces Ejecuta el bloque de verdad Sino Ejecuta el bloque de falso Fin-Si Decisión binaria de rama verdadera

V

F

Pregunta

bloque de verdad

bloque de falso

Ejemplo: Dado un número indicar si es par o impar Análisis: Si a mod 2 = 1 entonces es número impar, si no es par. Suponemos que existe una función mod 2 que vale 1 si el número es par Especificaciones de entrada: Número entero mayor que cero Especificaciones de salida: Mensaje cadena de caracteres de 12 caracteres Mensaje cadena de caracteres de 14 caracteres Proceso: Comparar a mod 2 = 1 40

Pseudocódigo Inicio leer a si (a mod 2 = 1) entonces mensaje es numero par sino mensaje es numero impar imprimir mensaje Fin
INICIO

Diseño:
LEER A

V

F

A mod 2 = 1

MENSAJE

“El número no es positivo”

MENSAJE

“El número es positivo”

MOSTRAR MENSAJE

Alternativa Múltiple

FINALIZAR

41

En esta estructura se pregunta por el valor que tomará la variable, estos pueden ser finitos y predeterminados. La selección múltiple es también conocida como estructura SEGÚN-SEA y es construida a partir de estructuras de selección anidadas.

Pseudocódigo Según sea la expresión Hacer ACCION 1 ACCION 2 ..................... ..................... ACCION N Sino ACCION X Fin Sea Diagrama de flujo:
EXPRESION

ACCION 1

ACCION 2

ACCION N

ACCION X

Ejemplo: Dado un día de semana, indicar que lugar ocupa Análisis: Domingo -- día uno Lunes -- día dos 42

Martes -- día tres Miércoles -- día cuatro Jueves -- día cinco Viernes -- día seis Sábado -- día siete Especificaciones de entrada: Cadena de caracteres de 5 a 10 caracteres de longitud Especificaciones de salida: Cadena de Caracteres de 6 a 9 caracteres de longitud Proceso: Comparar la opción dada e indicar que día es, respecto de lo obtenido. Pseudocódigo: inicio leer dia según_sea dia hacer domingo mensaje día uno lunes mensaje día dos .............................................. .............................................. sino imprime "cadena no valida" fin-según_sea fin Diagrama de flujo:
INICIO

LEER DIA

DIA
DOMINGO Mensaje dia 1 LUNES Mensaje Dia 2 SABADO Mensaje Dia 7 INVALIDO Mensaje no valido

MOSTRAR MENSAJE

43

FINALIZAR

44

Estructuras de Repetición En estas se evalúa una condición y en función del resultado de la misma se evalúa una opción u otra; repetidamente hasta que se cumpla la condición. Fundamentalmente con esta estructura se pueden crear ciclos de repetición con estructuras ya vistas. Existen tres tipos de estructuras repetitivas:
• • •

Haga – Mientras Repita – Hasta o haga hasta Para – Desde – Hasta que

Haga mientras (While) El inicio de la estructura indica una decisión que se definirá si el proceso es ejecutado o no. Si la condición que se evalúa es verdadera ejecuta el bloque de instrucciones dentro del ciclo, hasta que sea realizada la última instrucción se volverá a evaluar la condición, en caso de ser verdadera, ejecuta nuevamente el conjunto de acciones. Si la condición es falsa, ejecuta las acciones después del fin del ciclo. En esta estructura, el bloque de instrucciones quizás nunca llegue a ejecutarse si ocurre que la condición siempre sea falsa. Las variables de control de este ciclo deben contener valores previos que garanticen la entrada al ciclo, y estas pueden modificarse dentro de él, de lo contrario el ciclo podría ser infinito; característica de un ciclo mal estructurado. A continuación se presenta su

Pseudocódigo: Haga mientras (condición sea verdadera) ejecuta bloque de acciones Fin haga

45

Diagrama de flujo:

F

V

Pregunta

BLOQUE

Haga – Hasta que Bloque de instrucciones que se ejecuta en forma secuencial, al final del bloque se realiza la evaluación de la condición. Si la condición es falsa entonces repite el bloque de instrucciones, caso contrario concluirá el ciclo y continuará con la(s) siguientes(s) instrucciones, después del fin de la instrucción. Este ciclo se ejecutará por lo menos una vez independiente de los valores que pueda adquirir durante la ejecución del ciclo. La condición que controla el ciclo, debe ser falsa para repetir el bloque de instrucciones, contrario al ciclo haga mientras. Pseudocódigo Haga ejecuta bloque de acciones hasta que (condición sea verdadera) Fin haga

46

Diagrama de flujo:

BLOQUE

V

Pregunta

F

Para - Desde – Hasta que Se puede considerar un caso particular de una estructura de repetición, como Haga – Mientras, sólo que se conoce el número definido en que se repetirá, y sale del ciclo cuando el valor controlado es igual al valor final con ayuda de un "paso". En general está estructura resume todas las características de otras estructuras en un sólo formato, como modificar el valor de la variable dentro de un ciclo; aunque su efecto es el mismo y su uso depende del diseñador. La función del paso incrementa o decremento el valor de una variable. Pseudocódigo Para (inicio, final, paso) Haga Bloque de instrucciones Fin Para

47

Diagrama de flujo
Valor inicio, fin, paso Valor = fin

Si

No

BLOQUE DE INSTRUCCIONES

En síntesis... En esta UA hemos introducido los conceptos de algoritmo y programa. Hemos visto cuales son los pasos necesarios para plantear y solucionar problemas. Por otra parte, nos detuvimos en los conceptos fundamentales para la programación estructurada: secuencia decisión y repetición. Lo invitamos a realizar las actividades y la autoevaluación para fijar estos conceptos.

48

Actividad

1. Describa un proceso que ordene ascendentemente tres números dados: a, b, c 2. Describa un procedimiento que intercambie los valores de dos casillas utilizando una casilla temporal. 3. Describa un procedimiento que intercambie los valores de dos casillas sin utilizar una casilla temporal. 4. Desarrolle el algoritmo que soluciona el siguiente problema: Suponga que dispone de una balanza y seis objetos, cinco de los cuales tienen el mismo peso y el otro es menos pesado. Haciendo como máximo dos pesadas, encuentre el objeto menos pesado. 5. Especifique el algoritmo que soluciona el siguiente problema: Suponga que se tienen 12 objetos de los cuales 11 tienen el mismo peso. Desarrolle un algoritmo para seleccionar el último objeto en cada uno de los siguientes casos, haciendo como máximo, tres pesadas: a) Si es el más pesado. b) Si es el menos pesado. c) Tiene un peso diferente al de los demás, pero no se sabe cual es la diferencia. 6. Desarrolle el algoritmo que permita sumar todos los números impares contenidos entre 100 y 200. 7. Realice un algoritmo que pida un valor y lo almacene en una variable X y luego calcule el factorial de ese valor X (X!) sabiendo que el factorial de un número está dado por: N! = 1*2*3*4*....*N 8. Realice un algoritmo que pida un valor y lo almacene en una variable A y luego diga si ese número A es primo o no. Recordemos que un número primo es el que solo es divisible por si mismo y por la unidad. 9. La siguiente es la serie de Fibonacci: 0, 1, 1, 2, 3, 5, 8, 13, 21,....La serie se constituye de la siguiente manera: Los dos primeros números de la serie, por definición son 0 y 1; cada uno de los siguientes términos se obtiene de sumar los 2 anteriores términos en la serie. Desarrolle un algoritmo y expresarlo gráficamente de tal forma que dado un número N, calcule los N primeros números de la serie de Fibonacci. Entregue la actividad al tutor 49

50

Autoevaluación

Indique si las siguientes afirmaciones son verdaderas o falsas: 1) En computación los algoritmos sirven para implementar soluciones a problemas. 2) Todo algoritmo tiene un número fijo de pasos 3) Los programas son las herramientas que se usan para diseñar algoritmos. 4) Las estructuras algorítmicas son un grupo de formas de trabajo. 5) En un programa propio todo elemento del mismo es alcanzable 6) Un programa propio es equivalente a un programa propio que sólo use ciertas estructuras algorítmicas 7) En la decisión binaria se ejecuta el bloque de sentencias si la condición es falsa 8) En la estructura de decisión múltiple la ejecución de determinado bloque depende de los datos 9) En la estructura de repetición Haga-Mientras el ciclo se ejecuta al menos una vez. 10) Cuanto vale la variable i a la salida del siguiente ciclo y cuantas veces se ejecuta el bloque del ciclo. I=0 J=5 Haga mientras I < J I=I+1 .... instrucciones Fin Haga mientras Cuanto vale la variable i a la salida del ciclo y cuantas veces se ejecuta el bloque si el valor inicial de i es 1.

51

Clave de corrección

1) Verdadera. A partir de los algoritmos con los pasos que describen la solución a un problema se implementan luego como programas. 2) Falsa. Un algoritmo debe tener un número finito de pasos, pero no necesariamente un número fijo y determinado, ya que existen muchos algoritmos en los cuales la cantidad de pasos está en relación con los datos y no se puede establecer el número de éstos a priori. 3) Falsa. Los programas se escriben usando los esquemas de los algoritmos, las herramientas que sirven para diseñar los algoritmos son los pseudocódigos y los diagramas de flujo. 4) Verdadera. Las estructuras de operación de programas son un grupo de formas de trabajo, que permiten, mediante la manipulación de variables, realizar ciertos procesos específicos que nos lleven a la solución de problemas.
5) Verdadera. Todo elemento del programa es accesible, es decir, existe al menos un

camino desde el inicio al fin que pasa a través de él. 6) Verdadera. Por el Teorema de la Estructura: Todo programa propio, realice el trabajo que realice, tiene siempre al menos un programa propio equivalente que sólo utiliza las estructuras básicas de la programación, que son: La secuencia. La selección. La repetición. 7) Falsa. Se ejecuta si la condición es verdadera. 8) Verdadera. Las instrucciones que se ejecutan dependen del valor de la variable que interviene en la decisión 9) Falsa. La comparación se realiza antes de ingresar al ciclo de manera que el bloque puede no ejecutarse en el caso de que la condición sea falsa en la primera comparación. 10) En ambos casos el valor final de I es 5, pero en el segunda caso el ciclo se ejecuta sólo 4 veces. 52

Unidad de Aprendizaje

2

Datos y operandos

Introducción

En la unidad anterior nos detuvimos para revisar algunos conceptos fundamentales de la Estructura de Programación y que usted debe manejar con solvencia para poder interpretar el proceso lógico de resolución de problemas. En esta oportunidad nos dedicaremos al estudio de los datos y operando. Recordemos que todos los algoritmos y los programas desarrollados para computadora, independientemente del lenguaje en que sean escritos, se diseñan para facilitar la manipulación de información que se representa o almacena en forma o mediante los datos. Por ejemplo la información de alumnos, la información de clientes de una empresa, la información de los datos de una nómina.

Objetivos
Analizar diferentes tipos de datos y expresiones relacionadas. Interpretar las Expresiones Definir Operadores y operandos Interpretar Identificadores como localidades de memoria Describir el Orden de precedencia de los operadores - Jerarquías

53

Reconocer las reglas para cambiar fórmulas matemáticas a expresiones validas para la computadora, además de diferenciar constantes e identificadores y tipos de datos simples.

54

Tipos de datos

Todos los datos tienen un tipo asociado con ellos y el tipo de dato determina la naturaleza del conjunto de valores que puede tomar una variable. Un esquema de los tipos de datos sería: Numéricos Simples Lógicos Alfanuméricos Tipos de datos Estructurados Enumerados Def.x Usuario Arreglos Registros Archivos de Carácter de Cadena Enteros Reales Decimales Exponenciales Alfabéticos Dígitos Especiales

Vectores Matrices

Se definen los datos como los objetos sobre los que opera una computadora, son los objetos de información. Todo sistema de computación digital es alimentado por datos. La representación de los datos, incide en gran parte en la elaboración del algoritmo. El sistema de identificación de los datos es llamado Estructura de Datos; y dicha estructura depende directamente de las características de los diferentes datos. Los datos se pueden dividir en:
• • •

Simples Estructurados Definidos por el usuario

55

Tipos de datos simples
Son aquellos datos que no tienen estructura, y se dividen en:
• • •

Numéricos (enteros, reales) Lógicos Alfanuméricos

Datos Numéricos (enteros, reales) Permiten representar valores escalares de forma numérica, esto incluye a los números enteros y los reales. Este tipo de datos permiten realizar operaciones aritméticas comunes. Dentro de los datos numéricos se distinguen:

a) Datos enteros Estos datos corresponden a números completos, son aquellos datos numéricos que no poseen parte decimal. Pueden ser negativos o positivos y el cero. Estos datos integran en conjunto de los números enteros. Ejemplo:
• • • •

2, 3, 4, 5, 6, 7, 811, 22, 33, 44, etc. El número de ocupantes de un teatro, 520 El número de cuotas de un crédito, 12 El número de hijos de una pareja, 3

b) Datos reales: Son aquellos datos numéricos que poseen tanto parte entera como parte decimal. Pueden ser negativos, positivos y el cero. Estos datos integran el conjunto de los números reales. Ejemplo: 7,5 56 4,23 56,43 8,12 87,2 etc.

A este tipo de datos numéricos reales podemos representarlos en dos formas diferentes:

b. 1.) Reales decimales: Estos datos constan de una parte entera y de una parte decimal, sin embargo podremos utilizarlos también para datos en los cuales se omita la parte entera o para datos donde se omita la parte decimal. Ejemplos:
• • •

El valor de compra de un producto, 850.50 El porcentaje de descuentos de una nómina, 0.25 El valor a pagar a un trabajador, 1252.60

b. 2.) Reales exponenciales: Es la representación que se da a los números reales en forma de potencia de 10. También conocida como Notación Científica. Ejemplos: La velocidad de la luz, 3.0 E 5 La fuerza de gravedad m 0.98 E 1 Donde E5 es 10 y E1 es 10
5 1 2

Datos lógicos Este tipo de datos es también conocido como BOOLEANO, y son aquellos datos que solo pueden tomar dos valores o posibilidades: Verdadero o Falso, ya que representan el resultado de una comparación entre otros datos (numéricos o alfanuméricos). Son empleados básicamente para la representación de las condiciones en las estructuras de control o para representar objetos de tipo binario (1 o 0) Ejemplo: La respuesta a la pregunta de si un alumno aprobó o no un examen: V o F 57

Datos alfanuméricos Son aquellos datos que utilizamos de referencia, con ellos no efectuamos ningún tipo de operaciones aritméticas pero si podemos usar operaciones de cadenas. Siempre van encerrados entre comillas o apóstrofes. Se muestran en forma de una secuencia de caracteres (dígitos, letras, caracteres especiales) que permite representar valores identificables de forma descriptiva, esto incluye nombres de personas, direcciones, etc. Si bien es posible representar números como alfanuméricos, estos pierden su propiedad matemática, es decir no es posible hacer operaciones matemáticas con ellos.

a) Datos alfanuméricos de carácter Son aquellos datos caracteres que son interpretados por la computadora, con ellos se hace referencia a un solo carácter, y se pueden dividir en:

b) Alfabéticos Estos datos de tipo carácter son: (A, B, C, ...,Z). Ejemplo: El sexo de un empleado Masculino ‘M’ Femenino ‘F’ El estado civil de una persona Casado ‘C’ Soltero ‘S’ Viudo ‘V’ c) Dígitos Estos datos de tipo carácter son: (0,1,2,3,4,...,9) Ejemplos: ‘123’ , ‘1’ 58

d) Especiales Estos datos de tipo carácter son: ($,",(,&, ...,*). Ejemplos: ‘$’ , ‘”’

e) Datos alfanuméricos de cadena Los datos de tipo carácter se pueden agrupar en lo que se denominan cadenas de caracteres. Estas son una secuencia de caracteres válidos que generalmente se encierran entre delimitadores (caracteres especiales), y que pueden ser comillas o dobles comillas. Ejemplo : Un aviso en la pantalla solicitando una información, “Escriba el nombre del cliente” El nombre del empleado, “Pedro Perez”.

Otros tipos de datos Los lenguajes de programación modernos admiten los siguientes tipos de datos:

Datos estructurados Se entiende una estructura de datos como la colección o el conjunto de datos que tienen en mismo nombre. Algunos datos estructurados son:
• • • •

Arreglos Registros Conjuntos Archivos

59

Enumerados Tipo de datos enumerados se denominan a aquellos datos que conservan un determinado orden. Esto quiere decir que todo elemento precede un elemento y además tiene un elemento que lo precede, con excepción del primero y el último. Generalmente estos datos se definen al comienzo de los algoritmos, así: Tipo Días = (Domingo, lunes, martes, miércoles, jueves, viernes, sábado) Se utilizan cuando escribimos programas para computadora y necesitamos utilizar nombres para identificar a todos los objetos que se desean o necesitan manipular (variables, constantes, procedimientos, funciones).

Identificadores
Los identificadores son nombres que representan los datos de un programa (constantes, variables, tipos de datos, subprogramas). Un identificador es una secuencia de caracteres que nos permite asignar nombres que nos indiquen a que es a lo que se refieren y sirven para identificar una posición en la memoria de la computadora, que nos permite accesar a su contenido. Es una etiqueta del dato Algunos ejemplos de identificadores son: Num1 - Num2 – Nombre_Programa – Saldo_final - Cargo - Numero_mes – Fecha, Etc.

Reglas para formar un Identificador • • • Generalmente debe comenzar con una letra (A a Z, mayúsculas o minúsculas) y no deben contener espacios en blanco. Letras, dígitos y caracteres como la subraya ( _ ) están permitidos después del primer carácter. La longitud de identificadores depende del lenguaje que se use.

60

Palabras reservadas Son las palabras que constituyen las sentencias, las funciones, las expresiones de programación para cada determinado lenguaje y no se pueden usar como nombres. Algunos ejemplos de palabras reservadas son dependiendo de los lenguajes: Inicio - Fin - Si - Entonces – Mientras - Begin - End - If - Then - While

Constantes y Variables
Constante Una constante es un dato numérico, alfanumérico o booleano que no cambia durante la ejecución del programa. Al resolver problemas mediante algoritmos o programas requerimos en ocasiones de valores que no cambian en ningún momento de la ejecución, a estos valores se les conoce con el nombre de constantes. Estos datos permanecen fijos o invariables en la solución del problema. Existen tantos tipos de constantes como tipos de datos hay. Algunos ejemplos de constantes son:
• • • • • •

Constantes enteras 500 - 250 - 845 Constantes reales (decimales.) 6.258 -0.654 564.425 Constantes reales (Exponenciales) 3.5454E2 4.6987E5 Constantes carácter ‘M’ ‘F’ Constantes cadenas ‘Universitas’ Constantes Booleanas V - F

Variable Es un espacio en la memoria de la computadora que permite almacenar temporalmente un dato durante la ejecución de un proceso, su contenido puede cambia durante la ejecución del programa. Para poder reconocer una variable en la memoria de la computadora, es necesario darle un nombre con el cual podamos identificarla dentro de un algoritmo. 61

Se comportan de manera opuesta a las constantes, es decir son objetos que van cambiando su valor durante la ejecución del programa. Las variables tienen un nombre o etiqueta, que son un conjunto de caracteres alfanuméricos. Al declarar una variable, lo que se está haciendo es reservar un espacio de memoria y que queda etiquetada con el nombre del identificador que se le está asignando. Los tipos de una variable deben ser datos de tipo real, entera, lógica, carácter o cadena. En los lenguajes de programación existentes en muy común que las variables se declaren al comienzo del programa. Algunos ejemplos de variables son: Variable Cod_emp Vlr_dia Pago_mes Sal_inic Frase Código del Empleado Valor Día Pago del Mes Saldo Inicial

Para que las variables o constantes tengan un valor determinado se lo debe asignar: La asignación consiste, en el paso de valores o resultados a una zona de la memoria. Dicha zona será reconocida con el nombre de la variable o constante que recibe el valor. La asignación se puede clasificar de la siguiente forma: • Simples: Consiste en pasar un valor constate a una variable: “variable” = “valor” a = 15 Compuestas: En general se evalúa primero una expresión y ese resultado es asignado a la variable o constante



``variable'' = ``expresión''; a=2–X*3 Inicializar: Consiste en asignar un primer valor a una variable 62

Clasificación de las Variables Las variables se pueden clasificar de tres formas diferentes, la primera de acuerdo a su contenido, la segunda de acuerdo a su almacenamiento y la tercera de acuerdo a su operatividad. Escalares Suscritas de Registros de Archivos de Punteros

Por su almacenamiento

Variables Por su Contenido

Numéricas Lógicas Alfanuméricas de Entrada y Salida de Trabajo Contadores Acumuladores

Por su Uso

De acuerdo con su almacenamiento Esta clasificación se hace de acuerdo a los datos que se le asocien a las variables: Escalares Son aquellas variables que durante la ejecución del programa, tienen almacenado el último dato que se les ha asociado. Suscritas Conocidas también con el nombre de arreglos. Son aquellas variables que durante el desarrollo del problema tienen almacenados todos los datos que se le han asociado. Estas variables pueden ser unidimensionales (vectores) o bidimensionales (matrices) De Registros 63

Son aquellas variables que almacenan un conjunto de campos que pueden ser datos de diferentes tipos. De Archivo Son aquellas variables donde se almacenan un conjunto de registros. De Punteros Son aquellas variables donde se almacenan posiciones de memoria.

De acuerdo a su operatividad De Entrada Son aquellas variables donde se almacenan los datos de entrada del problema. De Salida Son aquellas variables donde se almacenan o representan los datos que corresponden a los resultados. De Trabajo Son aquellas variables que se utilizan para cálculos de operaciones aritméticas o para operaciones transitorias que se usan normalmente dentro de un programa Contadores Se utilizan para llevar el control del numero de ocasiones en que se realiza una operación o se cumple una condición. Con los incrementos generalmente de uno en uno. Acumuladores Forma que toma una variable y que sirve para llevar la suma acumulativa de una serie de valores que se van leyendo o calculando progresivamente. Por su Contenido Numéricas Son aquellas en las cuales se almacenan valores numéricos, positivos o negativos, es decir almacenan números del 0 al 9, signos (+ y -) y el punto decimal. Ejemplo: Iva = 0.15 64 pi = 3.1416 costo = 2500

Lógicas Son aquellas que solo pueden tener dos valores (cierto o falso) estos representan el resultado de una comparación entre otros datos. Alfanuméricas Esta formada por caracteres alfanuméricos (letras, números y caracteres especiales). Ejemplo: Letra = ’a’ apellido = ’lopez’ dirección = ’Av. Salta190’

Expresiones aritméticas, relaciones, lógicas, carácter, cadena
Las expresiones son combinaciones de constantes, variables, símbolos de operación, paréntesis y nombres de funciones especiales. Por ejemplo: a + (b + 3) / c Cada expresión toma un valor que se determina tomando los valores de las variables y constantes implicadas y la ejecución de las operaciones indicadas. Una expresión consta de operadores y operandos. Según sea el tipo de datos que manipulan, se clasifican las expresiones en: Aritméticas Relaciónales Lógicas Carácter

Operadores y Operandos
Operadores: Son elementos que relacionan de forma diferente, los valores de una o más variables y / o constantes. Es decir, los operadores nos permiten manipular valores.

65

Tipos de Operadores

Aritméticos Relacionales Lógicos Caracter

a) Operadores Aritméticos: Los operadores aritméticos permiten la realización de operaciones matemáticas con los valores (variables y constantes) Las variables y constantes pueden ser procesadas mediante la utilización de operaciones y funciones que se acoplen a sus respectivos tipos. Los operadores aritméticos pueden ser utilizados con tipos de datos enteros o reales. Si ambos son enteros, el resultado es entero; si alguno de ellos es real, el resultado es real. Operando (Operador) Operando Valor (constante o variable) Operadores Aritméticos + * / ^ (**) Ejemplos: Expresión 7/2 2 ** 3 4 +2*5 Resultado 3.5 8 14 Suma Resta Multiplicación División Exponenciación

Prioridad de los Operadores Aritméticos (Orden de precedencia) 66

Las expresiones se evalúan o ejecutan de acuerdo a la prioridad de operaciones que haga la máquina. Todas las expresiones entre paréntesis se evalúan primero. Las expresiones con paréntesis anidados se evalúan de dentro a fuera, el paréntesis más interno se evalúa primero.

Dentro de una misma expresión los operadores se evalúan en el siguiente orden. 1.- ^ 2.- *, / 3.- +, Exponenciación (potencia) Multiplicación, división. (en el mismo nivel) Suma y resta ( en el mismo nivel).

Los operadores en una misma expresión con igual nivel de prioridad se evalúan de izquierda a derecha. Ejemplos: 4 + 2 * 5 = 14 ( y no 30) 23 * 2 / 5 = 9.2 es igual 46/5 que 23 * 0.4 3 + 5 * (10 - (2 + 4)) = 23 3.5 + 5.09 - 140 / 40 = 5.09 2.1 * (1.5 + 3.0 * 4.1) = 28.98 Operadores Relaciónales • • • • • Se utilizan para establecer una relación entre dos valores. Compara estos valores entre sí y esta comparación produce un resultado de certeza o falsedad (verdadero o falso). Los operadores relaciónales comparan valores del mismo tipo (numéricos o cadenas) Tienen el mismo nivel de prioridad en su evaluación. Los operadores relaciónales tiene menor prioridad que los aritméticos.

67

El resultado de la operación donde se utilicen operadores relacionales será siempre verdadero o falso. Estos operadores se pueden utilizar para tipos de datos como enteros, reales, lógicos y de carácter. Cuando se realicen comparaciones con tipos de datos de carácter, generalmente se recurre al código normalizado y estándar ASCII.

Los operadores relacionados son: > < >= c a-b = b) or (a < d)) and (( a > = d) and (c > d)) F F T T F T F not (a = c) and (c > b) F T T T

2)

3)

Expresiones lógicas Las expresiones de tipo lógico son aquellas que pueden tomar dos valores, uno cierto u otro falso. Estas expresiones se aplican siempre a las estructuras de control. Son denominadas 70

también Booleanas en honor del matemático George Boole. Se aplican tanto para constantes o variables. Se denominan expresiones lógicas a aquellas expresiones en las cuales pueden intervenir tanto expresiones aritméticas, operadores relacionales y operadores lógicos. Estas expresiones se pueden dividir en: a) Expresiones lógicas simples Son aquellas expresiones en las cuales intervienen expresiones aritméticas con los operadores relacionales. Algunos ejemplos de expresiones lógicas simples son: (sueldo > 150.000.00) (lado A + lado B) < lado C (x ^ 4 = x ^ 2 + x ^ 2)

b) Expresiones lógicas compuestas Son aquellas expresiones en las cuales intervienen expresiones tanto expresiones lógicas simples como también operadores lógicos. Algunos ejemplos de expresiones lógicas compuestas son: (x + y > z) . AND . (x + z > a) . AND . (y + z > x) (edad < 50) . AND. (edad > 18)

Funciones internas La mayoría de los lenguajes de programación actuales además de las operaciones básicas, contienen un amplio conjunto de funciones predefinidas e incorporadas. Su utilización es relativamente fácil, simplemente se escribe el nombre de la función y posteriormente la variable, la expresión o la constante encerrada en paréntesis a la cual se le va a aplicar dicha función. A la parte encerrada en paréntesis se le denomina Argumento.

71

Algunas de las funciones más conocidas y utilizadas son: Función Abs (n) sin(n) Raiz cuadr (n) Truncar(n) Redondeo(n) n Log10(n) Ln(n) Descripción Valor absoluto de n Seno de n Raíz Cuadrada de n n se trunca a parte entera Redondea a entero + próx. Logaritmo decimal de n Logaritmo Neperiano de n Argumento Entero o Real real Entero o Real>0 Real Real Entero o Real >0 Entero o Real >0 Resultado Entero o Real real real Entero Entero Real Real

Algunos ejemplos de funciones son: redondeo (6,2) = 6 truncar (7.6) = 7 RaízCuadrada (81) = 9 abs (-55) = 55

Expresiones de asignación Las expresiones de asignación son utilizadas para asignar valores a una determinada o con el signo = Su forma variable. Se pueden representar las asignaciones con el signo general es: Variable expresión o valor Siempre debemos escribir el nombre de la variable cuyo valor va a ser modificado el lado izquierdo del operador de asignación y a la derecha se escribirá la expresión cuyo valor se asignará a la variable. Algunos ejemplos de expresiones de asignación son: sueldo x fecha 72 sue_neto * 1.5 sueldo almacena valor sueldo neto multipl. por 1.5 10 x almacena el valor de 10 fecha del sistema, fecha almacena la fecha del sistema.

Veremos la función cadena de caracteres El tratamiento de cadenas es un tema importante, debido esencialmente a la gran cantidad de información que se almacena en ellas. Según el tipo de lenguaje de programación elegido se tendrá mayor o menor facilidad para la realización de operaciones. Las operaciones con cadenas más usuales son: • • • • • Cálculo de la longitud Comparación Concatenación Extracción de subcadenas Búsqueda de información

Cálculo de la longitud de una cadena La longitud de una cadena, como ya se ha comentado, es el número de caracteres de la cadena. Así: 'Hola' Tiene 4 caracteres La operación de determinación de la longitud de una cadena se representará por la función Longitud, cuyo formato es: Longitud (cadena) La función longitud tiene como argumento una cadena, pero su resultado es un valor numérico entero. En los distintos lenguajes toma un nombre diferente pero la función es la misma. Ejemplos: Longitud (‘Como estás?’) Longitud (‘’) Longitud (‘ Hola’) devuelve 11 cadena de un blanco devuelve 1 devuelve 5 por el blanco delantero

73

Comparación de cadenas Es una operación muy importante sobre todo en la clasificación de datos tipo carácter, que se utiliza con mucha frecuencia en aplicaciones de proceso de datos (clasificaciones de listas, tratamiento de textos, etc) Los criterios de comparación se basan en el orden numérico del código o juego de caracteres que admite la computadora o el propio lenguaje de programación. En nuestro lenguaje algorítmico utilizaremos el código ASCII como código numérico de referencia. En la comparación de cadenas se pueden considerar dos operaciones más elementales: igualdad y desigualdad. Ejemplos: 'LUIS' < 'LUISITO' 'LUIS' < 'Luis' 'ANA' < 'MARTA' 'BARTOLO' >= 'BARTOLOME' Concatenación La concatenación es la operación de reunir varias cadenas de caracteres en una sola, pero conservando el orden de los caracteres en cada una de ellas. El símbolo que representa la concatenación varía de unos lenguajes a otros. Los más utilizados son: + // & o verdadera verdadera verdadera falsa

Las cadenas para concatenarse pueden ser constantes o variables. Ejemplos: 'Mayo ' + 'de 1999' x = 'Lenguaje' y = 'Ensamblador' z=x+''+y Subcadenas Esta operación permite la extracción de una parte específica de una cadena: subcadena. 74 = 'Mayo de 1999' z = 'Lenguaje Ensamblador'

Subcadena (cadena, inicio, longitud) Cadena: Inicio: Longitud: Es la cadena de la que debe extraerse una subcadena. Es un número o expresión numérica entera que corresponde a la posición inicial de la subcadena. Es la longitud de la subcadena.

Ejemplos: subcadena ('abcdefgh',3,6) subcadena ('Tecnológico',1,3) subcadena ('Malacate',5,2)

Equivale a Equivale a Equivale a

'cdef' 'Tec' 'ca'

Búsqueda Esta operación localiza si una determinada cadena forma parte de otra cadena más grande o busca la posición en que aparece un determinado carácter o secuencia de caracteres en un texto. El resultado de la función es un valor entero Posición (cadena, subcadena) subcadena: Es el texto que se trata de localizar. Ejemplo: Nombre = 'Marielena' Posición (nombre,'elena')

Produce 5.

La función Posición, al tomar también un valor numérico entero se puede utilizar en expresiones aritméticas o en instrucciones de asignación a variables numéricas. Otras funciones de cadenas a) Insertar Cadenas Si se desea insertar una cadena C dentro de un texto o cadena más grande, se debe indicar la posición. El formato es: Insertar (t, p, s) t p Texto o cadena donde se va a insertar. Posición a partir de la cual se va a insertar. 75

s Subcadena que se va a insertar. Ejemplo: Insertar ('Tecnológico',4,'XXX') = Insertar ('Juan O',5,'de la')= b) Borrar

'TecXXXnológico' 'Juan de la O'

Elimina una subcadena que comienza en la posición p y tiene una longitud l. Borrar (t, p ,l) t p l Texto o cadena de donde se va a eliminar una subcadena. Posición a partir del cual se va a insertar. Longitud de la subcadena a eliminar.

Ejemplo: Borrar ('Tecnológico',4,2)

=

'Teclógico'

c) Conversión Cadenas/Números Existen funciones o procedimientos en los lenguajes de programación (val y str) que permiten convertir un número en una cadena y viceversa. En nuestros algoritmos los denotaremos por valor y cadena. Valor (cadena) = Convierte la cadena en un número; siempre que la cadena fuese de dígitos numéricos. Cadena (valor) = Convierte un valor numérico en una cadena. Ejemplos: Valor ('12345') = 12345 Cadena(12345)= '12345' Declaración del Ambiente En la escritura de un programa en cualquiera de los lenguajes conocidos, existe una primera parte donde se definen las variables como objetos donde se guardarán datos cuyo valor no es constante.. En esta sección también se las inicializa o sea se les da un valor inicial con el tipo de dato correspondiente. 76

En este sector conviene dejar siempre un espacio, si se trabaja sobre papel, por si surge alguna variable que no ha sido prevista. Los valores de las variables pueden ser manipulados, entiéndase comparados, concatenadas o sumadas, por medio de Expresiones de distintos tipos. Generalmente en los lenguajes luego de la declaración de las variables viene la declaración de Funciones y Procedimientos. Vale aclarar que también existen las Funciones Internas o predefinidas, que no necesitan que las declaremos o definamos antes de usarlas, son propias de cada lenguaje.

Declaración de Variables Los tipos de datos manejados en la mayoría de los lenguajes son:

Tipo de Dato

Memoria Requerida

Rango

Entero Entero Largo Real de Simple Precisión Real de Doble Precisión Lógico (booleanas) Alfanumérico (cadena)

2 bytes de -32767 a 32767 4 bytes de -2^31 a 2^31 4 bytes de -3.402823 * 10^38 a 3.402823 * 10^38 8 bytes de + - 10 ^ -324 a 10^308 1 bytes 1 (verdadero) o 0 (falso) 6 bytes por cadena mas 1 byte por cada carácter Carácter o conjunto de ellos, por lo general letras

Vale decir que las variables podrán ser de uno de estos tipos de datos. Las variables son identificadas por un nombre mnemónico para facilitar su identificación, es decir por un nombre que adelante o de a entender cual será el contenido de la misma. Estos nombres de variables no podrán empezar con un numero, no podrán tener un espacio o carácter como por ejemplo $,%,& o @, tampoco es conveniente que exceda los ocho caracteres, ya que puede prestarse a errores de tipeo durante su uso. Sintaxis general: Nombre_varable: Tipo_de_valor Dim Nombre_variable as Tipo_de_variable (en lenguaje Qbasic,Pascal) 77

Tipos de Valor: Entero Integer Entero largo Long Real de simple precisión Single Real de doble precisión Double Alfanumérico de longitud variable String Alfanumérico de longitud fija (n caracteres de longitud) String*n

Con la sentencia DEF se puede definir el tipo de variables para un conjunto de variables cuyo nombre comience con una letra o rango de letras. Entero INT Entero largo LNG Real de simple precisión SNG Real de doble precisión DBL Alfanumérico de longitud variable STR Ejemplo: DEF integer a, b, c, d, z Cada tipo de variable puede ser representado por un símbolo, estos símbolos son validos tanto para el pseudocodigo como para el lenguaje. En otro apartado de este curso se verán los procedimientos funciones o functions, en cuya sintaxis debe figurar el tipo de valor que devolverá la función. Este tipo de valor debe ser indicado mediante su simbología, la cual es la misma que se utiliza con las variables y que mostramos a continuación . Entero % Entero largo & Real de simple precisión ! Real de doble precisión # Alfanumérico $

78

Alcance Otro aspecto importante en la declaración de variables es el ámbito de la misma. Se define ámbito como el sector del programa en donde las variables tienen acceso y validez.

79

Actividad
1) ¿Cual es el resultado de la expresión:? Explique porque NOT (10< 12) AND (13 > 11) 2) Sea la expresión a ** 2 > 0 que define una condición en un diagrama de un algoritmo y que determina la ejecución de un ciclo siempre que sea cierta. Explique cuando se detendrá la ejecución del ciclo y que pasa si a toma valores negativos 3) Sea la cadena: “El objetivo de esta materia es que los alumnos programen de acuerdo a las reglas del teorema de la estructura” Empleando las funciones de cadena Subcadena y Posición diseñe un algoritmo que indique cuáles son las subcadenas de longitud 3 que comiencen con la letra “e”. Subcadena (cadena, inicio, longitud) Posición (cadena, subcadena) 4) Dados tres números a, b, c enteros se pide el algoritmo para o Hallar la diferencia del mayor menos el menor. o Hallar la diferencia del medio menos el menor. o Si los tres son iguales debe desplegar un mensaje, y no debe efectuar ninguna operación. o Si dos números son iguales desplegar un mensaje, entonces se deberá efectuar el producto del número igual con el número diferente. No se deberá realizar ninguno de los anteriores incisos. 5) Desarrolle un algoritmo que permita elevar un número cualquiera a cualquier potencia. Tenga en cuenta que el usuario debe proporcionar además de la base el exponente. Recuerde que elevar al cuadrado es multiplicar 2 veces la base, etc. Entregue esta actividad al tutor

80

81

Autoevaluación

Indique si las siguientes afirmaciones son verdaderas o falsas.
1.

Los tipos de datos numéricos son tipos de datos simples

2. Los tipos de dato cadena son tipos de datos estructurados 3. Los meses del año se pueden definir como una variable de tipo de dato enumerado 4. Begín, End, Do son nombres de variables válidos 5. Una constante toma distintos valores durante la ejecución de un programas 6. El nombre de una variable direcciona una posición de memoria donde reside el valor de la misma durante la ejecución de un programa. 7. En una operación de asignación se le asigna valores a las variables 8. El valor de la expresión aritmética: (a * 2 + 6)/4-b es igual a 8 si a vale 5 y b vale 2. 9. La expresión relacional 0 < a < 1 es válida si definimos a la variable a como entera.

82

Clave de corrección

1. Verdadera. Este tipo de datos junto con los lógicos y alfanuméricos definen a los datos simples 2. Falsa. Los tipos de datos cadena son tipos alfanuméricos y simples 3. Verdadera. En los datos enumerados todo elemento precede un elemento y además tiene un elemento que lo precede, con excepción del primero y el último. Se definiría la variable Meses = (Enero, Febrero, Marzo, Abril, Mayo, Junio, Julio, Agosto, Setiembre, Octubre, Noviembre, Diciembre). 4. Falsa. En general son palabras reservadas de varios lenguajes y no pueden nombrar variables en el lenguaje respectivo 5. Falsa. Su nombre lo indica, una constante puede ser definida de distintos tipos y asignarle un valor que no cambia nunca. 6. Verdadera. Al ejecutar un programa se reserva una posición de memoria direccionada por el nombre de la variable y el programa reconoce el valor de la misma cuando la refiere. 7. Verdadera. Estas pueden ser asignaciones simples o mediante el valor de una expresión compuesta 8. Falsa. El valor de la expresión es 2. 9. Falsa. No hay ningún entero que cumpla esas condiciones.

83

Unidad de Aprendizaje

3

Estructuras

Introducción

En esta UA, continuamos con otros conceptos básicos de programación. Estudiaremos con mucho mayor detalle algunas de las técnicas para la estructuración de algoritmos ya vistas en la unidad 1, las cuales se utilizan para obtener soluciones claras y eficientes a los diferentes problemas que se nos planteen. Estudiaremos cuatro estructuras de control de flujo: Estructura de Secuencia Estructura de Procedimiento Estructura de Selección Estructura de Iteración o Repetición

Existen algunos parámetros que en el momento de buscar la forma de resolver un problema con herramientas de programación, son importantes de tener en cuenta, ellos son: • • • Elaborar el diseño de algoritmos partiendo de lo general a lo particular. Conocido también con el nombre de diseño Top-Down. "Dividir para vencer". Dividir el problema en módulos independientes. Emplear para la resolución de problemas la metodología de programación estructurada.

84

• • •

Darle la suficiente importancia que requiere la definición de los datos. Documentar al máximo el programa en todas sus partes. Efectuar la llamada "Prueba de escritorio", utilizando para ello datos reales y significativos, intentando evaluar al máximo el algoritmo con todas las variantes posibles.

Objetivos
En esta unidad analizará las estructuras algorítmicas como componentes básicos de la programación, y aplicará las mismas en el desarrollo de algoritmos más complejos para lograr programas bien hechos y estructurados.

85

Estructura de programación

Diseño Top-Down: Este sistema se basa en la descomposición descendente o jerárquica en módulos del problema, para buscar así de una forma más eficiente su solución. Se alcanza el programa sustituyendo las palabras del pseudocódigo por secuencias de proposiciones cada vez más detalladas, en un llamado refinamiento progresivo. Cada módulo se considera independiente de los demás y se ataca de igual manera, por separado. Se establecen una serie de niveles de mayor a menor complejidad (arriba-abajo) que den solución al problema. Consiste en efectuar una relación entre las etapas de la estructuración de forma que una etapa jerárquica y su inmediato inferior se relacionen mediante entradas y salidas de información. Este diseño consiste en una serie de descomposiciones sucesivas del problema inicial, que recibe el refinamiento progresivo del repertorio de instrucciones que van a formar parte del programa. La utilización de la técnica de diseño Top-Down tiene los siguientes objetivos básicos: Simplificación del problema y de los subprogramas de cada descomposición. Las diferentes partes del problema pueden ser programadas de modo independiente e incluso por diferentes personas. El programa final queda estructurado en forma de bloque o módulos lo que hace más sencilla su lectura y mantenimiento.
Imprímase una lista de los cuadrados perfectos entre 1 y N

86

En la figura anterior se muestra una posible descomposición en sub-problemas que da a lugar a la estructura para el diseño del programa, el cual puede realizarse inicialmente en forma de algoritmo. Observe cómo la descomposición se hace de lo general a lo particular. Un rectángulo representa un determinado sub-problema, y los sub-problemas en los que a su vez ese sub-problema se puede descomponer. Los cuatro rectángulos a partir de los cuales no salen líneas inferiores, denominados terminales, pueden considerarse como puntos de partida. Son los que corresponden más exactamente con los pasos del algoritmo. Los otros rectángulos, denominados no terminales, definen estructuras de decisión de más alto nivel, que describen cómo se ha desarrollado el trabajo. Ésos pueden aparecer en el algoritmo final en forma de estructuras de control o tal vez como comentarios. El resultado es el algoritmo cuadrados perfectos.

Diseño Bottom Up El diseño ascendente se refiere a la identificación de aquellos procesos que necesitan computarizarse conforme vayan apareciendo, su análisis como sistema y su codificación, o bien, la adquisición de paquetes de software para satisfacer el problema inmediato. Cuando la programación se realiza internamente y haciendo un enfoque ascendente, es difícil llegar a integrar los subsistemas al grado tal de que el desempeño global, sea fluido. Los problemas de integración entre los subsistemas son sumamente costosos y muchos de ellos no se solucionan hasta que la programación alcanza la fecha limite para la integración total del sistema. En esta fecha, ya se cuenta con muy poco tiempo, presupuesto o paciencia de los usuarios, como para corregir aquellas delicadas interfaces, que en un principio, se ignoran. Aunque cada subsistema parece ofrecer lo que se requiere, cuando se contempla al sistema como una entidad global, adolece de ciertas limitaciones por haber tomado un enfoque ascendente. Uno de ellos es la duplicación de esfuerzos para accesar el software y más aun al introducir los datos. Otro es, que se introducen al sistema muchos datos carentes de valor. Un tercero y tal vez el más serio inconveniente del enfoque ascendente, es que los objetivos globales de la organización no fueron considerados y en consecuencia no se satisfacen. Programación Estructurada Hemos abordado en la UA 1 a la Programación Estructurada como el conjunto de técnicas para desarrollar programas que cumplan con las siguientes características:


Programas fáciles de Escribir 87

• • •

Programas fáciles de Verificar Programas fáciles de Leer Programas fáciles de Mantener

Estas técnicas incluyen • • • Numero limitado de estructuras de control Diseño TOP-DOWN División Modular

Estructuras algorítmicas
Las estructuras de operación de programas son un grupo de formas de trabajo, que permiten, mediante la manipulación de variables, realizar ciertos procesos específicos que nos lleven a la solución de problemas. Estas estructuras se clasifican de acuerdo con su complejidad en:

Secuenciales

- Asignación - Entrada - Salida - Decisión simple - Decisión compuesta - Decisión múltiple - Bucle - Haga para - Haga mientras - Repetir hasta - Decisiones anidadas - Bucles anidados

Condicionales Estructuras Algorítmicas Cíclicas o repetitivas Anidadas

88

Estructuras Secuenciales Las Estructuras Secuenciales son aquellas que se basan en el concepto de que las instrucciones que aparecen en un algoritmo se ejecuten en el estricto orden en que fueron escritas. La estructura secuencial es aquella en la que una acción (instrucción) sigue a otra en secuencia. Las tareas se suceden de tal modo que la salida de una es la entrada de la siguiente y así sucesivamente hasta el fin del proceso. Una estructura secuencial se representa de la siguiente forma: Una estructura secuencial presentaría el siguiente diagrama N-S (Nassi-Schneiderman) Título del Algoritmo Definición: de variables, de constantes Inicio ,,,,,,,,, Instrucción 1 Instrucción 2 Instrucción 3 ............ Fin Y un Pseudocódigo: Algoritmo Nombre Definiciones Definición de Constantes nombre = valor Definición de Variables nombre = tipo Inicio Instrucción...1 Instrucción...2 Instrucción...3 . Instrucción...n Fin

89

Recordemos algunos conceptos de la unidad 1 que nos serán de gran utilidad en el desarrollo de los siguientes algoritmos y de los ejercicios propuestos en las actividades:

Asignación La asignación consiste, en el paso de valores o resultados a una zona de la memoria. Dicha zona será reconocida con el nombre de la variable que recibe el valor. La asignación se puede clasificar de la siguiente forma: • • • • Simples: Consiste en pasar un valor constate a una variable (a = 15) Contador: Consiste en usar una variable como un verificador del numero de veces que se realiza un proceso (a = a + 1) Acumulador: Consiste en usar una variable como un sumador en un proceso (a = a + b) De trabajo: Donde puede recibir el resultado de una operación matemática que involucre muchas variables (a = c + b * 2 / 4). (asignación compuesta)

Lectura La lectura consiste en recibir desde un dispositivo de entrada (por ejemplo el teclado) un valor. Esta operación se representa en un pseudocodigo como sigue: Leer a, b Donde “a” y “b” son las variables que recibirán los valores

Escritura Consiste en enviar por un dispositivo de salida (monitor o impresora) un resultado o mensaje. Este proceso se representa en un pseudocodigo como sigue: Escribir “El resultado es:”, R Donde “El resultado es:” es un mensaje que se desea que aparezca y R es una variable que contiene un valor resultado del problema

90

Ejemplos de algoritmos secuenciales

Ejemplo 1:
Dada la base y la altura de un triángulo, hallar su área: pseudocódigo: Algoritmo: Área Triángulo 1 Variables real b, h, a Inicio Escribir (‘Área de un triángulo’) Escribir (‘Ingrese la base del triángulo’) Leer (b) Escribir (‘Ingrese la altura del triángulo’) Leer (h) a = (b * h) / 2 Escribir (‘El área del triángulo es: ’, a) Fin

Ejemplo 2:
Dados los tres lados de un triángulo, hallar su área. pseudocódigo: Algoritmo: Área Triángulo 2 Variables real L1, L2, L3, p Inicio Escribir (‘Área de un triángulo teniendo sus lados’) Escribir (‘Ingrese el primer lado del triángulo’) Leer (L1) Escribir (‘Ingrese el segundo lado del triángulo’) Leer (L2) Escribir (‘Ingrese el tercer lado del triángulo’) Leer (L3) p = (L1 + L2+ L3) / 2 a = SQR (p * (p-L1) * (p-L2) * (p-L3)) Escribir (‘El área del triángulo es: ’, a) Fin

91

Ejemplo 3:
Suponga que un individuo desea invertir su capital en un banco y desea saber cuanto dinero ganará después de un mes si el banco paga a razón de 2% mensual. pseudocódigo: Inicio Leer cap_inv gan = cap_inv * 0.02 Imprimir gan Fin

Ejemplo 4:
Un vendedor recibe un sueldo base mas un 10% extra por comisión de sus ventas, el vendedor desea saber cuanto dinero obtendrá por concepto de comisiones por las tres ventas que realiza en el mes y el total que recibirá en el mes tomando en cuenta su sueldo base y comisiones. pseudocódigo: Inicio Leer sb, v1, v2, v3 Tot_vta = v1 + v2 + v3 com = tot_vta * 0.10 tpag = sb + com Imprimir tpag, com Fin Estructuras condicionales o de selección Las estructuras condicionales comparan una variable contra otro(s) valor(es), para que dependiendo del resultado de esta comparación, se siga un determinado curso de acción dentro del programa. Cabe mencionar que la comparación se puede hacer contra otra variable o contra una constante, según se necesite.

92

Estas estructuras de selección son utilizadas para tomar uno de los caminos. El factor de decisión es una condición lógica o una condición de tipo relacional. Para cualquiera de los dos casos se tendrá un valor de verdad. (Cierto o Falso) Se tienen alternativas diferentes que se producen en la ejecución del programa. Las condiciones pueden ser de tipo sencillo con solo una alternativa, o con dos alternativas posibles, pero también se pueden encontrar decisiones en las que se deba seleccionar una de muchas diferentes alternativas, también se pueden establecer decisiones anidadas. Se debe tener mucho cuidado en el uso de las variables dentro del conjunto de instrucciones correspondientes a las distintas opciones de una condición, debemos asegurarnos que estén definidas todas las variables involucradas en las mismas. En la prueba de un algoritmo o programa, debemos introducir todos los valores posibles que puedan tomar las variables de manera de comprobar el algoritmo a fondo. Suele suceder que programas que “funcionan” bien un tiempo de golpe se “pinchan” porque una de las ramas de la decisión no fue considerada.

Decisiones Simples
Las estructuras condicionales simples se les conoce como “Tomas de decisión”. Estas tomas de decisión están basadas en el concepto que si la condición se cumple, entonces se ejecuta las instrucciones contenidas, de lo contrario no ejecuta ninguna instrucción. Si entonces Acción(es) Fin-si Pseudocódigo: Algoritmo Nombre Definiciones Definición de Constantes nombre = valor Definición de Variable nombre = tipo Inicio Si (Expresión Lógica) Entonces Instrucciones S-V. Fin-Si Fin 93

Ejemplo 1:
Un hombre desea saber cuanto dinero se genera por concepto de intereses sobre la cantidad que tiene en inversión en el banco. El decidirá reinvertir los intereses siempre y cuando estos excedan a $7000, y en ese caso desea saber cuanto dinero tendrá finalmente en su cuenta. Pseudocódigo Inicio Leer p_int, cap int = cap * p_int Si int > 7000 entonces capf = cap + int Imprimir capf fin-Si fin Se imprime el resultado dentro del Si porque fuera del mismo la variable capf no está definida.

Ejemplo 2:
Imprimir una leyenda que indique si un alumno aprueba a reprueba un curso, sabiendo que aprobara si su promedio de tres calificaciones es mayor o igual a 70; reprueba en caso contrario. Pseudocódigo Inicio Leer calif1, calif2, calif3 Mensaje=’alumno reprobrado’ prom = (calif1 + calif2 + calif3)/3 Si prom >= 70 entonces Mensaje=’alumno aprobado’ Fin-si Imprimir Mensaje Fin En este caso la variable Mensaje nos permitió utilizar un Si simple al estar inicializada con el cartel correspondiente a la opción falso del Si. 94

Ejemplo 3:
En un almacén se hace un 20% de descuento a los clientes cuya compra supere los $1000 ¿ Cual será la cantidad que pagara una persona por su compra? Pseudocódigo Inicio Leer compra totalapagar = compra Si compra > 1000 entonces descuento = compra * 0.20 totalapagar = compra - descuento fin-si imprimir totalapagar fin. Sin el uso de la variable totalapagar hubiéramos necesitado un si compuesto para imprimir el total neto.

Ejemplo 4:
Un obrero necesita calcular su salario semanal, el cual se obtiene de la siguiente. manera: Si trabaja 40 horas o menos se le paga $16 por hora. Si trabaja mas de 40 horas se le paga $16 por cada una de las primeras 40 horas y $20 por cada hora extra. Pseudocódigo Inicio Leer ht Ss = ht * 16 Si ht > 40 entonces he = ht - 40 ss = he * 20 + 40 * 16 Fin-si Imprimir ss Fin

95

En los cuatro ejemplos anteriores el uso de variables auxiliares y la inicialización de las mismas con los valores correspondientes a la condición falsa del Si permitió el uso de decisiones simples. Sin ellas hubiera sido necesario el uso de decisiones compuestas.

Decisiones Dobles o compuestas

(If....Then.....Else.....Endif)

La estructura selectiva alternativa permite que el flujo de control de un programa se bifurque a una de dos posibles acciones. La diferencia con la estructura secuencial es que ya las instrucciones no se ejecutan absolutamente todas, sino que se toman o realizan unas acciones, de acuerdo a la respuesta dada por una evaluación de una condición o una expresión lógica. Gráficamente se representaría así: Si entonces Acción(es) si no Acción(es) Fin-si

Donde: Si ………………… Condición………… entonces……..…… acción(es)………… si no……………… Indica el comando de comparación Indica la condición a evaluar Precede a las acciones a realizar cuando se cumple la condición Son las acciones a realizar cuando se cumple o no la condición Precede a las acciones a realizar cuando no se cumple la condición

Dependiendo de si la comparación es cierta o falsa, se pueden realizar una o mas acciones.

96

Pseudocódigo: Algoritmo Nombre Definiciones Definición de Constantes nombre = valor Definición de Variable nombre = tipo Inicio Si (Expresión Lógica) Entonces Instrucciones S-V. De lo Contrario Instrucciones S-F. Fin-Si Fin

Ejemplo 1:
Teniendo un número, escribir el valor absoluto de dicho número. pseudocódigo: Algoritmo: Valor Absoluto Definiciones Definición de Variable Real n1, n2 Inicio Escriba (‘VALOR ABSOLUTO DE UN NUMERO’) Escriba (‘Ingrese el número al que se desea hallar su valor absoluto’) Leer (n1) Si (n1 < 0) Entonces n2 = n1 * (-1) De lo Contrario n2 = n1 Fin-Si Escribir (‘El valor absoluto del número es:’ n2) Fin

97

Ejemplo 2:
Se tienen dos números enteros, N1, N2 donde (N1 > N2). Se pretende mediante la utilización de un algoritmo determinar si N1 es divisible exactamente por N2. pseudocódigo Algoritmo: Divisible Definiciones Definición de Variable Real n1, n2 Inicio Escriba (‘NUMEROS DIVISIBLES EXACTAMENTE’) Escriba (‘Ingrese el primer número’) Leer (n1) Escriba (‘Ingrese el segundo número’) Leer (n2) Si (TRUNCA (n1 / n2 * n2) = n1) Entonces Escriba (‘primer número es divisible por segundo número’) De lo Contrario Escriba (‘primer número no divisible por el segundo número’) Fin-Si Fin

Ejemplo 3:
Leer dos números e imprimirlos en forma ascendente pseudocódigo Inicio Leer num1, num2 Si num1 < num2 entonces Imprimir num1, num2 si no Imprimir num2, num1 fin-si Fin

98

Ejemplo 4:
Hacer un algoritmo que imprima el nombre de un articulo, clave, precio original y su precio con descuento. El descuento lo hace en base a la clave, si la clave es 01 el descuento es del 10% y si la clave es 02 el descuento en del 20% (solo existen dos claves). pseudocódigo Inicio Leer nombre, codigoventa, preciooriginal Si codigoventa = 01 entonces preciodescuento = preciooriginal - preciooriginal * 0.10 si no preciodescuento = preciooriginal - preciooriginal * 0.20 fin-si Imprimir nombre, codigoventa, preciooriginal, preciodescuento fin

Esta estructura se puede cambiar a una decisión simple inicializando preciodescuento convenientemente Inicio Leer nombre, codigoventa, preciooriginal Preciodescuento = preciooriginal*(1- 0.2) Si codigoventa = 01 entonces preciodescuento = preciooriginal - preciooriginal * 0.10 fin-si Imprimir nombre, codigoventa, preciooriginal, preciodescuento fin

En las estructuras de decisión compuesta, se pueden anidar varios niveles de decisión, construyéndose una estructura compleja que contemple las distintas posibilidades de las relaciones lógicas.

99

Ejemplo 1:
Leer 2 números; si son iguales que los multiplique, si el primero es mayor que el segundo que los reste y si no que los sume. pseudocódigo Inicio Leer numero, numero si numero = numero entonces resultado = numero1 * numero2 si no si numero1 > numero2 entonces resultado = numero1 - numero2 si no resultado = numero1 + numero2 fin-si fin-si fin

Ejemplo 2:
Leer tres números diferentes e imprimir el numero mayor de los tres. pseudocódigo Inicio Leer numero1, numero2, numero3 Si (numero1 > numero2) and (numero1 > numero3) entonces mayor = numero1 si no Si (numero2 > numero1) and (numero2 > numero3) entonces mayor = numero2 si no mayor = numero3 fin-si fin-si Imprimir mayor fin 100

En este tipo de estructuras se debe tener cuidado que las ramificaciones sean excluyentes y contengan a todas las posibilidades. Un caso particular de este tipo de estructuras es la de decisión múltiple que veremos enseguida. Otro punto que merece resaltarse es que una condición interna debe ser completada antes de completar la estructura condicional más externa.

Decisiones múltiples o Estructura según – caso (CASE) Las estructuras de comparación múltiples, son tomas de decisión especializadas que permiten comparar una variable contra distintos posibles resultados, ejecutando para cada caso una serie de instrucciones especificas. A este tipo de estructuras lo utilizamos para resolver aquellos problemas o situaciones en las cuales luego de evaluar una condición, nos genera más de dos posibles opciones o alternativas. Esta estructura según-caso, es una estructura de alternativa múltiple. En ella se evalúa una expresión y de acuerdo a su valor respuesta realiza una determinada tarea. La estructura SEGUN-CASO, se utiliza frecuentemente para representar las opciones de submenú de un programa.. Esta estructura no es considera como parte de la programación estructurada, pero se ha masificado en tal forma su uso que muchos lenguajes la utilizan (C, PASCAL, etcétera).

Gráficamente se representaría así: Casos Variable Op1: Acción(es) Op2: Acción(es) . . OpN: acción Fin-casos

Donde las acciones que se ejecutan dependen del valor que tome la variable Op 101

pseudocódigo: Algoritmo Nombre Definiciones Definición de Constantes nombre = valor Definición de Variable nombre = tipo Inicio Caso (condición) Caso opcion-1 Instrucciones 1 caso opcion-2 instrucciones 2 caso opcion-3 instrucciones 3 caso opcion-n instrucciones n otros casos instrucciones otros casos Fin-Caso Fin

Ejemplo 1:
Se requiere que mediante la utilización de un algoritmo de decisión múltiple, se muestre la equivalencia de los números romanos (V, X, L, C, D, M) a su valor en decimal. pseudocódigo: Algoritmo Romano - Decimal Definiciones Definición de Variable Carácter nromano Numérico ndecimal Inicio Escribir(‘CONVERSION DE NUMEROS ROMANOS A DECIMALES’) Leer (nromano) Caso (nromano) caso opcion = ‘i’ ndecimal = 1 caso opcion = ‘v’ 102

ndecimal = 5 caso opcion = ‘x’ ndecimal = 10 caso opcion = ‘l’ ndecimal = 50 caso opcion = ‘c’ ndecimal = 100 caso opcion = ‘d’ ndecimal = 500 . otros casos Escribir (‘Número sin conversión activa’) Fin-Caso Escriba (nromano, ‘es equivalente en decimal a: ’, ndecimal) Fin

Ejemplo 2:
Realizar un algoritmo que realice una operación básica entre 2 números A y B. pseudocódigo: Algoritmo Operación Básica Definiciones Definición de Variable Enteros n1, n2, r Carácter op Inicio Escriba (‘OPERACON BASICA ENTRE DOS NUMEROS’) Escriba (‘Ingrese el primer número: ’) Leer (n1) Escriba (‘Ingrese por favor el segundo número: ’) Leer (n2) Escriba (‘Ingrese símbolo por la operación básica que desea realizar: ’) Leer (op) Caso (op) caso opcion = ‘+’ r = n1 + n2 caso opcion = ‘-’ r = n1 - n2 caso opcion = ‘*’ r = n1 * n2 . caso opcion = ‘/’ 103

r = n1 / n2 otros casos Escribir (‘Operación imposible de realizar’) Fin-Caso Escriba (n1, op, n2 ‘=’ r) Fin

Este tipo de estructura se puede evitar usando las estructuras condicionales compuestas anidadas vistas anteriormente, pero en la mayoría de los casos cuando el número de opciones posibles es alto, una estructura anidada es más dificultosa de controlar.

Repetición (While do, repeat until, for do)
Estructuras cíclicas o repetitivas Se llaman problemas repetitivos o cíclicos a aquellos en cuya solución es necesario utilizar un mismo conjunto de acciones que se puedan ejecutar una cantidad especifica de veces. Este tipo de problemas se resuelven con estructuras que permiten realizar acciones repetidamente, esto se hace posible mediante una secuencia de instrucciones que se ejecutan una y otra vez y así evitamos escribir múltiples veces las mismas instrucciones. La cantidad de veces que se repiten ese conjunto de instrucciones puede ser fija (previamente determinada por el programador) o puede ser variable (estar en función de algún dato dentro del programa) Existen tres grandes estructuras iterativas, ellas son:
• • •

Desde (FOR - DO FOR) Mientras (WHILE - DO WHILE) Repetir (REPEAT - DO UNTIL)

Bucle Se denomina bucle o lazo al conjunto de instrucciones que se repiten un número determinado-indeterminado de veces y hasta que se cumpla una condición específica. 104

El bucle mientras y repita son aquellas estructuras en las que no se conoce el número de iteraciones de que consta el bucle. En la estructura desde, de antemano se conoce el número de veces en que se debe repetir el bucle.

Estructura desde (FOR, DO FOR) En esta estructura repetitiva de antemano se sabe el número de veces que se deben ejecutar las instrucciones en el interior del bucle, es por ello que no es necesario controlar el bucle con una condición previa. Para el control se utiliza un contador en el cual se va acumulando el número de veces que se ha repetido las instrucciones. El contador siempre debe tener un valor inicial y uno final. El bucle se detiene en el momento en que el contador alcanza su máximo valor, el contador se incrementa de uno en uno salvo que se indique un paso o incremento distinto Lo que caracteriza al bucle es que ya sabemos con antelación el número de iteraciones a realizar. Es por ello que no hace falta una comprobación de salida y / o entrada. También existe la posibilidad de realizar 0 iteraciones, cuando la variable secundaria es menor que la primaria. Otra característica, es la posibilidad de realizar incrementos de n en n en el contador del bucle. Pasemos a ver el algoritmo anterior mediante un bucle del tipo desde Desde V C = L I a L S Accion1 Accion2 ............ ............. AccionN Fin-desde pseudocódigo: Algoritmo Nombre Definiciones Definición de Constantes nombre = valor 105

VC LI LS

Variable de control del ciclo Limite inferior Limite superior

Definición de Variable nombre = tipo Inicio Desde i valor mínimo hasta valor máximo Instrucciones Fin-desde Fin

Ejemplo 1:
Mediante un bucle Desde realice un algoritmo que imprima los n primeros números pares. pseudocódigo: Algoritmo: Pares Definiciones Definición de Variable n1, n2, i = enteros Inicio Escribir (‘NUMEROS PARES’) Escribir (‘Digite la cantidad de números pares que desea:’) Leer (n1) Desde i = 1 hasta n1 n2 = i * 2 Escriba (n2) Fin-desde Fin

Ejemplo 2:
Elaborar un algoritmo con el cual podamos calcular el número factorial de un número dado. pseudocódigo: Algoritmo Factorial Definiciones Definición de Variable n1, factorial, i = enteros 106

Inicio Escribir (‘NUMERO FACTORIAL’) Escribir (‘Ingrese el número al cual le desea calcular el factorial:’) Leer (n1) Desde i = 1 hasta n1 factorial = factorial * i Fin-desde Escribir (‘El factorial de’ n1 ‘es igual a ’ , factorial) Fin

Ejemplo 3:
Leer 20 números e imprimir cuantos son positivos, cuantos negativos y cuantos neutros. pseudocódigo: Inicio cneutros = 0 cpositivos = 0 cnegativos = 0 Desde x = 1 a 20 Leer numero Si numero = 0 entonces cneutros = cneutros + 1 si no Si numero > 0 entonces cpositivos = cpositivos + 1 si no cnegativos = cnegativos + 1 Fin-si Fin-si Fin-desde Imprimir cneutros, cpositivos, cnegativos Fin.

107

Ejemplo 4:
Simular el comportamiento de un reloj digital, imprimiendo la hora, minutos y segundos de un día desde las 0:00:00 horas hasta las 23:59:59 horas pseudocódigo: Inicio Desde h = 1 a 23 Desde m = 1 a 59 Desde s = 1 a 59 Imprimir h, m, s Fin-desde Fin-desde Fin-desde fin

Estructura Mientras (WHILE o DO WHILE) Son aquellos en que el numero de iteraciones no se conoce con exactitud, ya que esta dado en función de un dato dentro del programa. Esta es una estructura que repetirá un proceso durante “N” veces, donde “N” puede ser fijo o variable. Para esto, la instrucción se vale de una condición que es la que debe cumplirse para que se siga ejecutando. Cuando la condición ya no se cumple, entonces ya no se ejecuta el proceso. En esta estructura la condición está ubicada al comienzo. Las instrucciones que se ejecutan en el interior del bucle se repetirán mientras la condición se cumpla. El bucle Mientras se caracteriza por ser utilizado cuando no conocemos el número de iteraciones con antelación. Es por ello que nos ayudamos de una comprobación o condición para la entrada / salida del mismo antes de realizar la ejecución de la sección del código a repetir; esto último nos posibilita el caso de no efectuar ninguna iteración (iteración = 0) Es importante tener en cuenta que las instrucciones en la estructura WHILE, no se ejecutan si la condición no se cumple. Pseudocódigo: Algoritmo Nombre 108

Definiciones Definición de Constantes nombre = valor Definición de Variable nombre = tipo Inicio Ejecute-Mientras (condición) Instrucciones Fin-Ejecute-Mientras Fin

Ejemplo 1:
Mediante un ciclo ejecute mientras, y teniendo dos números enteros positivos diferentes [n1, n1], donde n1 será menor que n2. Encontrar la suma de los números enteros que se encuentren dentro de este intervalo. pseudocódigo Algoritmo Suma Intervalo Definiciones Definición de Variable entero n1, n2, suma, contador Inicio Escriba (‘INTERVALO ENTRE DOS NUMEROS’) Escriba (‘Ingrese por favor el límite inferior del intervalo’) Leer (n1) Escriba (‘Ingrese el límite superior del intervalo’) Leer (n2) suma = 0 contador = n1 Ejecute-Mientras contador Y Ejecute-Mientras X > 0 X=X–Y Imprimir X Fin-ejecute-Mientras Fin-Si Fin. La condición Si se usa en este caso para que no se imprima ningún valor en el caso de que X fuera igual o menor que Y.

Estructura repetir (REPEAT - DO REPEAT- DO UNTIL): La condición en este bucle está ubicada al final. Las instrucciones en el interior del bucle se ejecutan únicamente hasta que la condición se cumpla. El bucle Repetir se caracteriza porque al igual que en el anterior no sabemos el número de iteraciones que debemos realizar, es por ello que se apoya en condiciones para salir del mismo. Al contrario que el anterior, la comprobación va al final del bucle, de esta forma, como mínimo siempre se produce una iteración. Es importante tener en cuenta que en la estructura REPETIR-HASTA, las instrucciones dentro del bucle se ejecutan como mínimo una vez. pseudocódigo: Algortimo Nombre Definiciones Definición de Constantes 111

nombre = valor Definición de Variable nombre = tipo Inicio Repita Instrucciones Hasta (Condición) Fin

Ejemplo 1:
Dado un número se pide mediante la utilización del bucle REPITA-HASTA obtener la suma de los primeros n números naturales. Pseudocódigo Algoritmo Suma Números Definiciones Definición de Variable enteros n1, suma, indice Inicio Escribir (‘SUMA DE LOS PRIMEROS N NUMEROS’) Leer (n1) indice = 0 suma = 0 Repita indice = indice + 1 suma = suma + indice Hasta (indice = n1) Escribir (‘La suma de los ’n1 ‘primeros números es igual a: ’,suma ) Fin

Ejemplo 2:
Elaborar un algoritmo que contenga el bucle REPITA-HATA que nos permita elaborar la validación de la entrada de un dato correspondiente a un mes y que rechace los restantes. 112

pseudocódigo Algoritmo Validar Fecha Definiciones Definición de Variable mes = enteros Inicio Escribir (‘VALIDACION DE UN DATO DE UN MES’) Escribir (‘Ingrese el número del mes: ’) Repita Leer (mes) Hasta (mes >= 1) y (mes < = 12) Fin

Una forma muy sencilla para pasar un bucle Mientras a Repetir, es hallando la condición opuesta, o bien poniendo un NOT en la comprobación, negando así la condición del Mientras. También se puede hallar teniendo en cuenta el significado de los operadores relacionales y booleanos. NOT (=) NOT (=) NOT() equivale a “ “ “ “ “ >= >

Similar Documents

Free Essay

Algoritmo

...Introducción. Para que una empresa pueda iniciar operaciones, seguir operando o planificar un proyecto requiere de Inversión. Esta inyección de capital puede darse desde aportes de liquidez de los accionistas, emisión de acciones en el mercado de capitales, financiamiento de terceros. Normalmente, las empresas se inician con el aporte de los accionistas o dueños. El escenario ideal sería que la gestión sobre este capital permita seguir operando, sin embargo en escenarios normales, encontramos que y “hasta es necesario” diversificar el riesgo de los accionistas consolidando un buen equilibrio con el financiamiento externo. Llamamos financiamiento externo, cuando la empresa recurre a los agentes superavitarios como los bancos para conseguir capital; sin embargo no es la única opción. Las empresas pueden vender acciones las cuales le entregan a los compradores participación en la empresa, recibiendo (si a la empresa le va bien) dividendos. Otra opción (tema del presente trabajo) es la emisión de Deuda. Emitir deuda significa que la empresa recibe de los inversionistas (mercado) dinero y, a cambio, entrega un rendimiento. Para emitir deuda, las empresas cuentan con varios instrumentos financieros permitidos por la normativa peruana, como lo son los Bonos. Los bonos permiten a la compañía obtener dinero sin dar ningún tipo de control a los inversionistas. En general, los bonos se consideran una inversión segura, en parte debido a su......

Words: 2431 - Pages: 10

Free Essay

Permutaciones

...Universidad del Istmo Campus Tehuantepec Ingeniería en Computación Análisis y Complejidad de Algoritmos Ana Patricia Matus Vicente Décimo semestre En la siguiente gráfica se observa que se graficaron las siguientes funciones: * fn=n * fn=n2 * fn=n3 * fn=n * fn=2n * fn=ln⁡(n) * fn=nln(n) Se puede observar que fn=2n es la función que crece de una manera más rápida con respecto a las otras seis funciones, entre más grande sea el valor de n más rápido crece la función. De lo contrario para fn=ln⁡(n) crece de una manera muy lenta, aun cuando el valor de n sea muy grande. Universidad del Istmo Campus Tehuantepec Ingeniería en Computación Análisis y Complejidad de Algoritmos Ana Patricia Matus Vicente Décimo semestre Cuando de desea buscar un elemento en un arreglo se procede a realizar la búsqueda secuencialmente, a esto se le conoce como búsqueda lineal, las siguientes dos condiciones que ponen fin a la búsqueda: 1. Se encuentra el elemento, es decir ai=x. 2. Se recorrió todo el arreglo y no se encontró el elemento de búsqueda. El algoritmo para la búsqueda lineal fue implementado en el sistema operativo Linux en el lenguaje de programación Go. La Figura 1 muestra el código que implementa dicho algoritmo. Se realiza la búsqueda del número 77 encontrando al elemento, también se realiza la búsqueda del número 1 que no es encontrado como se puede ver en la Figura. Figura 1. Código implementado en lenguaje......

Words: 411 - Pages: 2

Free Essay

How to Use Solver Spanish

...Instrucciones de EXCEL Solver Octubre de 2000 2 La opción Solver de EXCEL sirve para resolver problemas de optimización lineal y no lineal; también se pueden indicar restricciones enteras sobre las variables de decisión. Con Solver es posible resolver problemas que tengan hasta 200 variables de decisión, 100 restricciones explícitas y 400 simples (cotas superior e inferior o restricciones enteras sobre las variables de decisión). Para acceder a Solver, seleccione Tools en el menú principal y luego Solver. La ventana con los parámetros de Solver aparecerá tal y como se muestra a continuación: 3 Cuadro de diálogo de los parámetros de Solver La ventana Solver Parameters se utiliza para describir el problema de optimización a EXCEL. El campo Set Target Cell contiene la celda donde se encuentra la función objetiva correspondiente al problema en cuestión. Si desea hallar el máximo o el mínimo, seleccione Max o Min. Si la casilla Value of está seleccionada, Solver tratará de hallar un valor de la celda igual al valor del campo que se encuentra a la derecha de la selección. El cuadro de diálogo By Changing Cells contendrá la ubicación de las variables de decisión para el problema. Por último, las restricciones se deben especificar en el campo Subject to the Constraints haciendo clic en Add. El botón Change permite modificar las restricciones recién introducidas y Delete sirve para borrar las restricciones precedentes. Reset All borra el problema en curso y restablece......

Words: 1383 - Pages: 6

Free Essay

5.1 Fundamentos Del Método Símplex

...5.1 FUNDAMENTOS DEL MÉTODO SÍMPLEX En la sección 4.1 se introdujo el concepto de soluciones factibles en un vértice (FEV) y la función clave que desempeñan en el método símplex. Estos conceptos geométricos se relacionaron con el álgebra del método símplex de las secciones 4.2 y 4.3. Sin embargo, todo esto se hizo en el contexto del problema de la Wyndor Glass Co., que tiene sólo dos variables de decisión y, por lo mismo, tiene una interpretación geométrica directa. ¿Cómo pueden generalizarse estos conceptos a dimensiones mayores cuando se manejan problemas más grandes? La respuesta se dará en esta sección. Para comenzar se introducirá parte de la terminología básica de cualquier problema de programación lineal con n variables de decisión. Mientras se desarrolla esta tarea puede ser útil que el lector consulte la fi gura 5.1 (que es una repetición de la fi gura 4.1) para interpretar estas defi niciones en dos dimensiones (n 5 2). Terminología Puede entenderse de manera intuitiva que las soluciones óptimas de cualquier problema de programación lineal deben estar sobre la frontera de la región factible y, de hecho, ésta es una propiedad general. Como la frontera es un concepto geométrico, las defi niciones iniciales aclaran cómo se puede identifi car en forma algebraica la frontera de la región factible. La ecuación de la frontera de restricción de cualquier restricción se obtiene al sustituir su signo #, 5 o $ por un signo 5. En consecuencia, la forma de la......

Words: 323 - Pages: 2

Free Essay

Optimization Algorithms

...“Un algoritmo debe ser visto para ser creído”. Por lo tanto se define un algoritmo como un conjunto prescrito de instrucciones o reglas bien definidas, ordenadas y finitas, las cuales permiten realizar una actividad mediante una serie de pasos sucesivos que no generen dudas a quien deba realizar dicha actividad. Estas actividades tienen como estado; uno inicial y uno de entrada, siguiendo una serie de pasos para llegar a su estado final y obtener una solución. Los algoritmos son independientes de los lenguajes de programación. En cada problema el algoritmo puede escribirse y luego ejecutarse en un lenguaje de programación diferente. El algoritmo es la infraestructura de cualquier solución, escrita luego en cualquier lenguaje de programación. Muchos autores han señalado a estos conjuntos de instrucciones como soluciones a problemas abstractos o soluciones a problemas de cálculo. Los algoritmos pueden ser expresados de diferentes maneras, como por ejemplo: lenguaje natural, seudocódigo, flujogramas, lenguaje de programación, entre otros. Cabe destacar que la expresión de un algoritmo mediante el uso del lenguaje natural puede contener ambigüedad y ser demasiado extensa dando como resultado una descripción no muy satisfactoria. Por otro lado, el uso de seudocódigo y de flujograma hace la descripción de un algoritmo más entendible y sencillo para el programador. El flujograma es la técnica más antigua utilizada, pero a su vez es una técnica visual de entender el algoritmo. El......

Words: 4208 - Pages: 17

Free Essay

Analisis de Datos Y Algoritmos

...CAP 5 * El numero de formatos pedidos no podrá ser superior a n ni podrá ser menor que 0. Por lo tanto la variable aleatoria binomial tiene un rango de 0 a n * Para encontrar cuantas maneras hay de seleccionar x objetos entre n objetos se utiliza la regla de las combinaciones. * Para encontrar probabilidades: X≥ 3 = prob de 4 +3 x≤3 = prob de 2+3 x> 3 = prob de 4 x< 3= prob de 0+1+2 * La forma de probabilidad binomial depende de los valores n y p, siempre que p=0.5 la distribución binomial es simétrica, sin importar que tan grande o pequeña sea n. cuando es diferente de 0.5 es asimétrica. * 5.32 Cual es el significado del valor esperado de una distribución de probabilidad? R/: La media de una distribución de probabilidad es el valor esperado. Para calcularlo se multiplica cada resultado posible de x por su probabilidad correspondiente y luego se suman los productos. 5.33 Cuales son las cuatro propiedades que se requieren de una situación para utilizar la distribución binomial? R/:La distribución binomial se utiliza cuando la variable aleatoria es el numero de éxitos en una muestra, compuesta por n observaciones. Las propiedades son: * La muestra debe tener un numero fijo de observaciones n * Cada observación se clasifica en éxito (P) o fracaso (1-P) * La probabilidad de que una observación se clasifique como exitosa es constante de una observación a otra, al igual que la probabilidad de que sea un fracaso * El......

Words: 1586 - Pages: 7

Free Essay

Eficiencia de Algoritmos de Compresión de Archivos En Tablets Android

...Eficiencia de algoritmos de compresión de archivos en tablets android Isaac Torres, Leonardo Larrea, Carlos Gualán, Freddy Tandazo, Jorge García Facultad de Ingeniería en Electricidad y Computación Escuela Superior Politécnica del Litoral Campus “Gustavo Galindo”, Km 30,5 vía Perimetral. Casilla 09-01-5863, Guayaquil, Ecuador ismatorr@espol.edu.ec, jalarrea@espol.edu.ec, camagual@espol.edu.ec, fatandaz@espol.edu.ec, joregarc@espol.edu.ec Resumen En el presente trabajo se buscó determinar el algoritmo de compresión de archivos más eficiente según su grupo, de acuerdo a dos factores, éstos son, tiempo de compresión y porcentaje de compresión, los grupos de algoritmos son: algoritmos estadísticos, algoritmos híbridos y algoritmos de diccionario. Para ello se hizo un muestreo estratificado de archivos con respecto a su tamaño y su redundancia de información. Para analizar la eficiencia de cada algoritmo se utilizó diferencias de medias y varianzas entre el tiempo de compresión y el porcentaje de compresión. Los resultados fueron que los archivos muy pequeños, en lugar de disminuir su tamaño, éstos aumentan. Para los archivos medianos, los algoritmos híbridos y de diccionario tienen un mejor tiempo de compresión y descompresión que los algoritmos estadísticos, mientras que para los archivos grandes, los algoritmos híbridos tienen una clara ventaja sobre los algoritmos estadísticos y de diccionario. Palabras Claves: ESPOL, factores,......

Words: 2161 - Pages: 9

Free Essay

Algoritmo de Asignación de Órganos Para Trasplante En La Región Emilia-Romagna (Italia) Y En La Provincia de Buenos Aires (Argentina). El Caso Del Trasplante Renal.

...Alma Mater Studiorum Università di Bologna Representación en la República Argentina Tesis final del Programa Académico “Políticas y Gestión en Salud. Europa – América Latina Año Académico 2011/2012 Algoritmo de asignación de órganos para trasplante en la región Emilia-Romagna (Italia) y en la provincia de Buenos Aires (Argentina). El caso del trasplante renal. Presentado por: María Clara Zerbino Director de Tesis: Carlos Vassallo 1 Índice Introducción ...................................................................................................................... 4 Situación global ................................................................................................................ 4 Trasplantes en Italia .......................................................................................................... 6 Trasplantes en Argentina .................................................................................................. 9 Algoritmo de asignación de órganos .............................................................................. 11 El caso del trasplante renal ............................................................................................. 13 Criterios de asignación en el caso de trasplante renal .................................................... 14 Criterios de asignación en el caso de trasplante renal en Italia ...................................... 15 Criterios de asignación en el caso de trasplante renal......

Words: 3750 - Pages: 15

Free Essay

Algorithms

.............................................................................................. 2 ¿Para qué sirve?............................................................................................................................. 2 ¿Cómo se utiliza? ........................................................................................................................... 2 Teoría del algoritmo....................................................................................................................... 4 Definición formal e informal....................................................................................................... 4 Variantes del algoritmo .............................................................................................................. 5 Complejidad del algoritmo ......................................................................................................... 7 Aplicaciones del algoritmo ............................................................................................................. 8 Implementación del algoritmo ....................................................................................................... 9 Código: ...................................................................................................................................... 9 Pantalla de Ejecución .........................................................................................................................

Words: 1331 - Pages: 6

Free Essay

Programation of Machines

...Programação de Operações em Máquinas Alunos: Leticia Peixoto Abranches Christiano Michel Fernandes Freitas Artigo Proposição de heurísticas para a minimização do makespan e dos tempos de setup em um ambiente flow shop. Catalão, março de 2013 1) Introdução: Com a evolução da indústria o termo competitividade vem sendo abordado e desenvolvido de forma minuciosa. Não basta produzir ou simplesmente desenvolver um bom produto, é preciso ir além e saber explorar ao máximo a produtividade, criando assim um bom relacionamento com a cadeia de produção do setor. Esta pesquisa apresenta um estudo relacionado ao sequenciamento da produção, que por sua vez é uma linha de estudos da Pesquisa Operacional. O sequenciamento da produção é a ordenação das tarefas em cada máquina e leva em consideração uma gama de objetivos, tais como: redução dos tempos de setup, redução de atrasos, melhoria de fluxo entre outros. De acordo com Slack et al. (2009), considerando a abordagem do carregamento finita ou infinita, quando o trabalho chega, deve-se tomar decisões sobre a ordem em que as tarefas serão executadas. Essa atividade pode ser chamada de sequenciamento. Para se definir qual a ordem de operações a serem realizadas, usam-se regras de prioridade, como por exemplo: a regra Last In First Out ( LIFO), First In First Out ( FIFO), entre outras. Liddell(2009) aponta as funções básicas de um bom sistema de sequenciamento, entre elas: i) A possibilidade de programar cada......

Words: 3078 - Pages: 13

Free Essay

Optimization Box

...PROYECTO Optimizador de paquetes Manual de Usuario [pic] Integrantes |Santiago Aimetta |1184180 | |Leandro Barbagallo |1161453 | |Juan Devincenzi |1185858 | |Matias Leone |1187820 | Índice Índice 2 Menú Principal 2 Sección ABMs 3 ABM de Camiones 3 Alta 3 Modificación y baja 4 ABM de Containers 5 Alta 5 Modificación y baja 6 ABM de Pallets 7 Alta 8 Modificación y baja 8 ABM de Pedidos 9 Carga de producto 10 Desde modelo 3D 11 Cargar producto 11 Modificación y baja de producto 12 Forma manual 13 Optimización 14 Distribución espacial 14 Distribución en camión/container 18 Menú Principal El menú principal de la aplicación contiene las siguientes secciones: • Archivo: Permite salir del programa • ABMs: Contiene los formularios para hacer altas, bajas y modificaciones de pedidos, pallets, camiones y containers. • Carga de producto: Permite crear productos a partir de un modelo 3D o de forma manual. • Optimización: Permite optimizar la distribución espacial de un container o de un camión. • Ayuda: Aquí se encuentran los detalles de los creadores de la......

Words: 2313 - Pages: 10

Free Essay

Hghhfghfhf

...Elaborar um algoritmo que lê uma matriz M[6,6] e um valor A e multiplicar a matriz M pelo valor A e colocar os valores da matriz multiplicada por A em um vetor V[36] e escrever no final o vetor V. 03 - Escreva um algoritmo que lê uma matriz M[5,5] e calcula as somas: a) da linha 4 de M b) da coluna 2 de M c) da diagonal principal d) da diagonal secundária e) de todos os elementos da matriz M Escrever essas somas e a matriz. ** Algoritmos do Livro Cap. 5 04 - Algoritmo 402 05 - Algoritmo 405 06 - Algoritmo 412 07 - Algoritmo 415 // Algoritmos de Funções 08 - Faça uma função que recebe por parâmetro o raio de uma esfera e calcula o seu volume (v = 4/3.P^3.R3). 09 - Escreva uma função que recebe as 3 notas de um aluno por parâmetro e uma letra. Se a letra for A a função calcula a média aritmética das notas do aluno, se for P, a sua média ponderada (pesos: 5, 3 e 2) e se for H, a sua média harmônica. A média calculada também deve retornar por parâmetro. 10 - Faça uma função que recebe a idade de um nadador por parâmetro e retorna , também por parâmetro, a categoria desse nadador de acordo com a tabela abaixo: Idade Categoria 5 a 7 anos Infantil A 8 a 10 anos Infantil B 11-13 anos uvenil A 14-17 anos Juvenil B Maiores de 18 anos (inclusive) Adulto ** Algoritmos do Livro - Cap. 6 11 - Algoritmo 459 12 - Algoritmo 461 13 - Algoritmo 465 14 - Algoritmo 469 //......

Words: 315 - Pages: 2

Free Essay

Template Method

...En el método de plantilla de este patrón de diseño, uno o más pasos de algoritmo pueden ser overridden por subclases para dejar que difieren comportamientos mientras asegurando que el overarching el algoritmo es todavía siguió. En objeto-programación orientada, primero una clase está creada aquello proporciona los pasos básicos de un diseño de algoritmo. Estos da un paso está implementado utilizando métodos abstractos. Más tarde encima, las subclases cambian los métodos abstractos para implementar acciones reales. Por ello el algoritmo general está salvado en uno coloca pero los pasos concretos pueden ser cambiados por las subclases. El patrón de Método de la Plantilla así dirige el cuadro más grande de tarea semantics, y más refined detalles de implementación de selección y secuencia de métodos. Esto el cuadro más grande llama abstracto y métodos no abstractos para la tarea a mano. Los métodos no abstractos son completamente controlados por el método de plantilla, pero los métodos abstractos, implementados en subclases, proporcionar los grado y poder expresivos del patrón de libertad. La clase abstracta de Método de plantilla también puede definir métodos de gancho que puede ser overridden por subclases.3 Algunos o todos de los métodos abstractos pueden ser especializados en una subclase, dejando el escritor de la subclase para proporcionar comportamiento particular con modificaciones mínimas al más grandes semantics. El método de plantilla (aquello es no-abstracto) queda......

Words: 405 - Pages: 2

Free Essay

Cuantic Computing

...embargo, los problemas que requieren recursos exponenciales siguen causando problemas. 1982 Richard Feynman sugiere que simular sistemas cuánticos necesariamente requiere recursos exponenciales. Sin embargo la naturaleza es capaz de simularlo de manera eficiente! 1985 David Deutsch describe el primer modelo para una Quantum Turing Machine basada en la utilización de datos y control cuánticos. • 1993 Charles Bennett y otros científicos de IBM diseñaron el experimento de Teleportación. 1994 Peter Shor describe un algoritmo cuántico para factorizar números que es exponencialmente más rápido que cualquier algoritmo clásico conocido. El potencial de ese algoritmo atrajo mucha inversión de entes estatales y privados. • 1998 Isaac Chuang dirige el grupo de Berkeley que desarrolla la primera computadora cuántica de 1 qubit. • 2001 Un grupo de IBM desarrolla una computadora cuántica capaz de controlar 7 qubits, con ella prueban el algoritmo de Shor factorizando el número 15. • Diciembre de 2005 Rainer Blatt y su grupo de Innsbruck realizan una computadora cuántica de 8 qubits (1 qubyte) y Daniel Stick y...

Words: 3168 - Pages: 13

Free Essay

Towards an Efficient Inference Procedure Through Syntax Based Relevance.

...Em Busca de Procedimentos de Inferência Eficientes via Relevância por Sintaxe Joselyto Riani Orientadora: Profa. Dra. Renata Wassermann Dissertação apresentada ao Instituto de Matemática e Estatística da Universidade de São Paulo como parte dos requisitos para obtenção do título de Mestre em Ciências na área de Computação. Área de Concentração: Inteligência Artificial São Paulo Março / 2004 Em Busca de Procedimentos de Inferência Eficientes via Relevância por Sintaxe Joselyto Riani Este exemplar corresponde à redação final da dissertação de mestrado devidamente corrigida e defendida por Joselyto Riani e aprovada pela comissão julgadora.. Banca examinadora: Profa. Dra. Renata Wassermann (Orientadora) Prof. Dr. Marcelo Finger (IME-USP) Prof. Dr. Marcos Castilho (UFPR) São Paulo Março / 2004 Dedicatória A minha querida tia Lúcia. Agradecimentos Agradeço a Renata pelas longas manhãs e tardes de discussões e esclarecimentos, livros emprestados, depurações realizadas no texto (das mais diversas naturezas) e também pela paciência diante de meus inúmeros imprevistos e improvisos; além dos imensos documentos .pdf enviados para sua caixa postal. Agradeço a Hyperion por ter concedido espaço em minha agenda de trabalho para que eu pudesse participar das atividades do IME. Agradeço ao Flávio Ribeiro pelas incontáveis mensagens respondidas e livros emprestados (nos dias e horários mais inusitados: fins de semana, madrugadas,......

Words: 25342 - Pages: 102