You are on page 1of 20

FUNDAMENTOS DE ALGORITMIA

ANDRES CAMILO SOLER LOPEZ PROGRAMACION

SENA TENOLOGO EN GESTION DE REDES DE DATOS BOGOTA 2013

CONCEPTOS BSICOS Y METODOLOGA PARA LA SOLUCIN DE PROBLEMAS POR MEDIO DE COMPUTADORAS

LENGUAJE DE PROGRAMACION Son elementos y smbolos que nos permite crear programas mediante un conjunto de instrucciones, operadores y reglas de sintaxis; que pone a disposicin del programador para que este pueda comunicarse con los dispositivos hardware y software existentes. Los lenguajes de programacin se pueden clasificar atendiendo a varios Criterios: Segn el nivel de abstraccin Segn la forma de ejecucin o Segn su nivel de abstraccin Lenguajes Maquina Lenguajes de bajo nivel Lenguajes de medio nivel Lenguajes de alto nivel o Segn la forma de ejecucin Lenguajes compilados Lenguajes interpretados ALGORITMO Un algoritmo es una serie de pasos organizados que describe el proceso que se debe seguir, para dar solucin a un problema especfico. Existen dos tipos Cualitativos: Son aquellos en los que se describen los pasos utilizando palabras. Cuantitativos: Son aquellos en los que se utilizan clculos numricos para definir los pasos del proceso. ALGORITMO COTIDIANO Es la serie de pasos que realizamos en nuestra vida diaria para realizar las diferentes tareas y actividades comunes, desde los pasos al levantarnos, dormir, comer, etc.

LENGUAJES ALGORITMICOS Los algoritmos pueden describirse utilizando diversos lenguajes. Cada uno de estos lenguajes permiten describir los pasos con mayor o menor detalle. La clasificacin de los lenguajes para algoritmos puede enunciarse de la siguiente manera: o o o o Lenguaje Natural. Lenguaje de Diagrama de Flujo Lenguaje Natural de Programacin Lenguaje de Programacin de Algoritmos

METODOLGIA PARA LA SOLUCION DE PROBLEMAS POR MEDIO DE COMPUTADORAS o o o o o o o o Anlisis del problema Diseo del algoritmo Codificacin Compilacin y ejecucin Verificacin Depuracin Mantenimiento Documentacin

DEFINICON DEL PROBLEMA Es asunto del que se espera una solucin. es una cuestin o situacin que deber aclararse y resolverse y puede tener un nmero determinado o indefinido de situaciones. Resolver problemas no es trivial, pues es necesario comprender que se quiere resolver, encontrar las herramientas adecuadas para resolver el problema, y luego implementar la solucin con las herramientas disponibles.

ANALISIS DEL PROBLEMA Esta fase requiere una clara definicin, donde se contemple exactamente lo que debe hacer el programa y el resultado o solucin deseada. Dado que se busca una solucin por computadora, se precisan especificaciones detalladas de entrada y salida.

DISEO DEL ALGORITMO En esta fase de diseo se determina que hace el programa. Es decir, la resolucin de un problema complejo se realiza dividiendo el problema en

sub problemas y a continuacin subdividir estos sub problemas en otros de nivel mas bajo, hasta que pueda ser implementada una solucin en la computadora. Este mtodo se conoce tcnicamente como diseo descendiente (top-down) o modular. El proceso de dividir el problema en cada etapa y expresar cada paso en forma ms detallada se denomina refinamiento sucesivo. Cada sub problema es resuelto mediante un modulo (sub programa) que tiene un solo punto de entrada y un solo punto de salida

CODIFICACION Una vez que el algoritmo se ha convertido en un programa fuente, es preciso introducirlo en memoria mediante el teclado y almacenarlo posteriormente en un disco. Esta operacin se realiza con un programa editor, posteriormente el programa fuerte se convierte en un archivo de programa que se guarda en disco. El programa fuerte debe ser traducido a lenguaje maquina, este proceso se realiza con el compilador

PRUEBA Y DEPURACION La verificacin de un programa es el proceso de ejecucin del programa con una amplia variedad de datos de entrada, llamados datos de test o prueba, que determinaran si el programa tiene errores (bugs). Para realizar la verificacin se debe desarrollar una amplia gama de datos de test : valores normales de entrada, valores extremos de entrada que comprueben los limites del programa y valores de entrada que comprueben aspectos especiales del programa. La depuracin es el proceso de encontrar lo errores del programa y corregir o eliminar dichos errores

DOCUMETACION La documentacin de un problema consta de las descripciones de los pasos a dar en el proceso de resolucin de un problema. La importancia de la documentacin debe ser destacada por su decisiva influencia en el producto final. Programas pobremente documentados son difciles de leer, mas difciles de depurar y casi imposible de mantener y modificar La documentacin de un programa pude sr interna o externa. La documentacin interna es la contenida en lneas de comentarios. La documentacin externa incluye anlisis, diagramas de flujo, seudocdigos. Manuales de usuario con instrucciones para ejecutar el programa y para interpretar los resultados.

MANTENIMIENTO Cuando se desea corregir posibles errores en el futuro o bien cambiar la programa. Tales cambios se denominan mantenimiento del programa. Despus de cada cambio la documentacin debe ser actualizada para facilitar cambios posteriores. ENTIDADES PRIMITIVAS PARA EL DESARROLLO DE ALGORITMOS

TIPOS DE DATOS Los tipos de datos primitivos son aquellos que almacenan directamente el valor, a diferencia de los tipos de datos referencia que almacenan la direccin de memoria donde se almacena el dato (los objetos son tipo de datos referencia)

ESPRESIONES Las expresiones son combinaciones de constantes, variables, smbolos de operacin, parntesis y nombres de funciones especiales. Cada expresin toma un valor que se determina tomando los valores de las variables y constantes implicadas y la ejecucin de las operaciones indicadas. Una operacin consta de operadores y operandos. Segn sea el tipo de datos que manipulan, se clasifican las expresiones en: o Aritmticas o Relacionales o Lgicas OPERADORES Son elementos que relacionan de forma diferente, los valores de una o mas variables y/o constantes. Es decir, los operadores nos permiten manipular valores. o Operadores aritmticos: permite la realizacin de operaciones matemticas con los valores (variables y constantes).

Los operadores aritmticos 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. o Operadores relacionales: se utilizan para establecer una relacin entre valores. Compara estos valores entre si y esta comparacin produce un resultado de certeza o falsedad (verdadero o falso) Los operadores relacionales comparan valores del mismo tipo (numricos o cadenas) Tiene l mismo nivel de prioridad en su evaluacin Los operadores relacionales tiene menor propiedad que los aritmticos o Operadores lgicos: estos operadores se utilizan para establecer relaciones entre valores lgicos. Estos valores pueden ser resultado de una expresin relacional IDENTIFICADORES COMO LOCALIDADES DE MEMORIA Los identificadores (IDs) son smbolos lxicos que nombran entidades. El concepto es anlogo al nombre. Los identificadores se usan ampliamente en prcticamente todos los sistemas de procesamiento de la informacin. Nombrar las entidades hace posible referirse a las mismas, lo cual es esencial para cualquier tipo de procesamiento simblico. Identificadores en lenguajes informticos. En los lenguajes informticos, los identificadores son elementos textuales que nombran entidades del lenguaje. Algunas de las variables, las constantes, los tipos de dato, las etiquetas, las subrutinas (procedimientos y funciones) y los paquetes

TCNICAS DE DISEO TOP-DOWN son estrategias de procesamiento de informacin caractersticas de las ciencias de la informacin, especialmente en lo relativo al software. En el modelo Top-down se formula un resumen del sistema, sin especificar detalles. Cada parte del sistema se refina diseando con mayor detalle. Cada parte nueva es entonces redefinida, cada vez con mayor detalle,

hasta que la especificacin completa es lo suficientemente detallada para validar el modelo. El modelo "Top-down" se disea con frecuencia con la ayuda de "cajas negras" que hacen ms fcil cumplir requerimientos aunque estas cajas negras no expliquen en detalle los componentes individuales. BOTTOM UP En contraste, en el diseo Bottom-up las partes individuales se disean con detalle y luego se enlazan para formar componentes ms grandes, que a su vez se enlazan hasta que se forma el sistema completo. Las estrategias basadas en el flujo de informacin "bottom-up" se antojan potencialmente necesarias y suficientes porque se basan en el conocimiento de todas las variables que pueden afectar los elementos del sistema.

TCNICAS PARA LA FORMULACIN DE ALGORITMOS DIAGRAMA DE FLUJO Los diagramas de flujo son descripciones grficas de algoritmos; usan smbolos conectados con flechas para indicar la secuencia de instrucciones y estn regidos por ISO. Los diagramas de flujo son usados para representar algoritmos pequeos, ya que abarcan mucho espacio y su construccin es laboriosa. Por su facilidad de lectura son usados como introduccin a los algoritmos, descripcin de un lenguaje y descripcin de procesos a personas ajenas a la computacin. Los algoritmos pueden ser expresados de muchas maneras, incluyendo al lenguaje natural, pseudocdigo, diagramas de flujo y lenguajes de programacin entre otros. Las descripciones en lenguaje natural tienden a ser ambiguas y extensas. El usar pseudocdigo y diagramas de flujo evita muchas ambigedades del lenguaje natural. Dichas expresiones son formas ms estructuradas para representar algoritmos; no obstante, se mantienen independientes de un lenguaje de programacin especfico.

PSEUDOCDIGO El pseudocdigo (falso lenguaje, el prefijo pseudo significa falso) es una descripcin de alto nivel de un algoritmo que emplea una mezcla de lenguaje natural con algunas convenciones sintcticas propias de lenguajes de programacin, como asignaciones, ciclos y condicionales, aunque no est regido por ningn estndar. Es utilizado para describir algoritmos en libros y publicaciones cientficas, y como producto intermedio durante el desarrollo de un algoritmo, como los diagramas de flujo, aunque presentan una ventaja importante sobre estos, y es que los algoritmos descritos en

pseudocdigo requieren menos espacio para representar instrucciones complejas. El pseudocdigo est pensado para facilitar a las personas el entendimiento de un algoritmo, y por lo tanto puede omitir detalles irrelevantes que son necesarios en una implementacin. Programadores diferentes suelen utilizar convenciones distintas, que pueden estar basadas en la sintaxis de lenguajes de programacin concretos. Sin embargo, el pseudocdigo, en general, es comprensible sin necesidad de conocer o utilizar un entorno de programacin especfico, y es a la vez suficientemente estructurado para que su implementacin se pueda hacer directamente a partir de l. As el pseudodocdigo cumple con las funciones antes mencionadas para representar algo abstracto los protocolos son los lenguajes para la programacin. Busque fuentes ms precisas para tener mayor comprensin del tema. DIAGRAMAS DE NASSI SCHNEIDERMAN El diagrama N-S o tambin conocido como diagrama de Chapin es una tcnica de especificacin de algoritmos que combina la descripcin textual, propia del pseudocdigo, con la representacin grfica del diagrama de flujo. El diagrama N-S cuenta con un conjunto limitado de smbolos para representar los pasos del algoritmo, por ello se apoya en expresiones del lenguaje natural; sin embargo, dado que el lenguaje natural es muy extenso y se presta para la ambigedad, solo se utiliza un conjunto de palabras, a las que se denomina palabras reservadas. Las palabras reservadas ms utilizadas son:

Inicio Fin Mientras Incrementar Entero Lgico

Leer Escribir Repita Hasta Para Decrementar Hacer Funcin Real Carcter Cadena Retornar

Los smbolos utilizados en el diagrama de Chapin son corresponden a cada tipo de estructura. Dado que se tienen tres tipos de estructuras, se utilizan tres smbolos. Esto hace que los procesos del algoritmo sean ms fciles de representar y de interpretar.

ESTRUCTURAS ALGORITMICAS SECUENCIALES La estructura secuencial es aquella en la que una accin (instruccin) 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.

ASIGNACION La asignacin 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 asignacin se puede clasificar de la siguiente forma: Simples: Consiste en pasar un valor constante 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 operacin matemtica que involucre muchas variables (a c + b*2/4). En general el formato a utilizar es el siguiente: < Variable > El smbolo ENTRADAS Consiste en mandar por un dispositivo de salida (p.ej. monitor o impresora) un resultado o mensaje. Esta instruccin presenta en pantalla el mensaje escrito entre comillas o el contenido de la variable. Este proceso se representa as como sigue: <valor o expresin > debe leerse asigne .

SALIDA LA LECTURA O ENTRADA DE DATOS CONSISTE EN RECIBIR DESDE UN DISPOSITIVO DE ENTRADA (P.EJ. EL TECLADO) UN VALOR O DATO. ESTE DATO VA A SER ALMACENADO EN LA VARIABLE QUE APARECE A CONTINUACIN DE LA INSTRUCCIN. ESTA OPERACIN SE REPRESENTA AS:

CONDICIONALES SIMPLES Cuando se presenta la eleccin tenemos la opcin de realizar una actividad o no realizar ninguna.

Podemos observar: El rombo representa la condicin. Hay dos opciones que se pueden tomar. Si la condicin da verdadera se sigue el camino del verdadero, o sea el de la derecha, si la condicin da falsa se sigue el camino de la izquierda. Se trata de una estructura CONDICIONAL SIMPLE porque por el camino del verdadero hay actividades y por el camino del falso no hay actividades. Por el camino del verdadero pueden existir varias operaciones, entradas y salidas, inclusive ya veremos que puede haber otras estructuras condicionales. CONDICIONALES MULTIPLES Este es una estructura de seleccin mltiple. Las estructuras de comparacin mltiples, es una toma de decisin especializada que permiten evaluar una variable con distintos posibles resultados, ejecutando para

cada caso una serie de instrucciones especificas. La estructura de seleccin nos permite elegir una ruta de entre varias rutas posibles, en base al valor de una variable que acta como selector. En el momento en que se encuentre una coincidencia, se ejecuta la accin correspondiente a dicha constante y se abandona la estructura. La condicional ELSE (Caso contrario) es un selector opcional que se activa como caso contrario, si uno de los trminos anteriores no se ha activado. Cuando existen ms de dos elecciones (alternativas) posibles, es cuando se presenta el caso de alternativas mltiples. Si el nmero de alternativas es grande puede plantear serios problemas de escritura del algoritmo y naturalmente de legibilidad. La estructura de decisin mltiple evaluar una expresin que podr tomar n valores distintos 1, 2, 3,4,..n . Segn que elija uno de estos valores en la condicin, se realizar una de las n acciones, o lo que es igual, el flujo del algoritmo seguir un determinado camino entre los n posibles. ARREGLOS VECTORES En programacin, un arreglo, llamado habitualmente vector si tiene una sola dimensin o matriz si tiene dos, llamados en ingls arrays, es una zona de almacenamiento continuo, que contiene una serie de elementos del mismo tipo, los elementos de la matriz. Desde el punto de vista lgico una matriz se puede ver como un conjunto de elementos ordenados en fila (o filas y columnas si tuviera dos dimensiones). En principio, se puede considerar que todas las matrices son de una dimensin, la dimensin principal, pero los elementos de dicha fila pueden ser a su vez matrices (un proceso que puede ser recursivo), lo que nos permite hablar de la existencia de matrices multidimensionales, aunque las ms fciles de imaginar son los de una, dos y tres dimensiones. Estas estructuras de datos son adecuadas para situaciones en las que el acceso a los datos se realice de forma aleatoria e impredecible. Por el contrario, si los elementos pueden estar ordenados y se va a utilizar acceso secuencial sera ms adecuado utilizar una lista, ya que esta estructura puede cambiar de tamao fcilmente durante la ejecucin de un programa.

MATRICES Las matrices son vectores de dos dimensiones, si las queremos representar grficamente tendran el siguiente aspecto: e00 e01 e02 e10 e11 e12

e20 e21 e22 La forma de crear una matriz es crear un vector y hacer que cada elemento de este vector sea otro vector, para hacerlo de forma ordenada as:

CADENAS DE CARCTER: es una secuencia ordenada de longitud arbitraria (aunque finita) de elementos que pertenecen a un cierto lenguaje formal o alfabeto anlogas a una frase o a una oracin. En general, una cadena de caracteres es una sucesin de caracteres (letras, nmeros u otros signos o smbolos). Desde un punto de vista de la programacin, si no se ponen restricciones al alfabeto, una cadena podr estar formada por cualquier combinacin finita de todo eljuego de caracteres disponibles (las letras de la 'a' a la 'z' y de la 'A' a la 'Z', los nmeros del '0' al '9', el espacio en blanco ' ', smbolos diversos '!', '@', '%', etc). En este mismo mbito (el de la programacin), se utilizan normalmente como un tipo de dato predefinido, para palabras, frases o cualquier otra sucesin de caracteres. En este caso, se almacenan en un vector de datos, o matriz de datos de una sola fila (array en ingls). Las cadenas se pueden almacenar fsicamente: o Seguidas. o Enlazados letra a letra. Generalmente son guardados un carcter a continuacin de otro por una cuestin de eficiencia de acceso. Un caso especial de cadena es la que contiene cero caracteres, a esta cadena se la llama cadena vaca; en teora de autmatas es comn denotar a la misma por medio de la letra griega . MANEJO DE MODULOS

MODULO En programacin, un mdulo es un software que agrupa un conjunto de subprogramas y estructuras de datos. Los mdulos son unidades que pueden ser compiladas por separado y los hace reusables y permite que mltiples programadores trabajen en diferentes mdulos en forma simultnea, produciendo ahorro en los tiempos de desarrollo. Los mdulos promueven la modularidad y el encapsulamiento, pudiendo generar programas complejos de fcil comprensin. Puede tomarse como sinnimo de subrutina o de unidad de software, aunque este ltimo es ms abarcativo.

FUNCION Las funciones y los procedimientos son conjuntos de instrucciones que realizar una tarea en particular y permiten crear programas complejos, mediante un reparto de tareas que permite construir el Programa de forma estructurada y modular. Desde un punto de vista acadmico, se entiende por procedimiento el conjunto de sentencias a las que se asocia un identificador (un nombre), y que realiza una tarea que se conoce por los cambios que ejerce sobre el conjunto de variables. Y entendemos por funcin el conjunto de sentencias a las que se asocia un identificador (un nombre) y que genera un valor nuevo, calculado a partir de los argumentos que recibe. Los elementos que componen un procedimiento o funcin son: 1. Un identificador, que es el nombre que sirve para invocar a esa funcin o a ese procedimiento. 2. Una lista de parmetros, que es el conjunto de variables que se facilitan al procedimiento o funcin para que realice su tarea modularizada. Al hacer la abstraccin del sistema, y modularlo en partes ms accesibles, hay que especificar los parmetros formales que permiten la comunicacin y definen el dominio (tipo de dato) de los datos de entrada. Esa lista de parmetros define el modo en que podrn comunicarse el programa que utiliza la funcin y la funcin usada. 3. Un cuerpo o conjunto de sentencias. Las necesarias para poder realizar la tarea para la que ha sido definida la funcin o el procedimiento. Dentro de las sentencias tambin se encuentran las declaraciones de variables locales. 4. Un entorno. Entendemos por entorno el conjunto de variables globales al procedimiento o funcin, que pueden ser usadas y modificadas dentro del mbito de la funcin. Esas variables,

por ser globales y por tanto definidas en un mbito ms amplio al mbito local de la funcin, No necesitan ser explicitadas en la lista de parmetros de la funcin. MANIPULACION Un procedimiento es un subprograma que realiza una tarea especfica. Para invocarlo, es decir, para hacer que se ejecute, basta con escribir su nombre en el cuerpo de otro procedimiento o en el programa principal. Pero, hay que tener muy en cuenta que su declaracin debe hacerse antes de que sea llamado por otro mdulo. Una vez que has construido varios programillas en Pascal, crear un procedimiento no es nada complicado, pues tiene prcticamente la misma estructura que un programa. Veamos las secciones que comparten y no comparten un procedimiento y un programa principal: Mientras que en el programa la cabecera consta de la palabra reservada program seguida del nombre del programa, en un procedimiento se compone de la palabra procedure seguida del nombre del procedimiento y una lista de parmetros que es opcional. Las secciones de declaracin de constantes (const), de tipos (type) y de variables (var) tambin pueden aparecer en la estructura de cualquier procedimiento. Respecto al cuerpo del procedimiento, decir que al igual que el de un programa se delimita por las palabras reservadas begin y end, y en su interior puede contener sentencias simples o estructuradas. Por ltimo, comentar que ambos difieren en el signo de puntuacin que marca su final, ya que en un programa es el punto y en un procedimiento es el punto y coma. Todas estas diferencias y similitudes que hemos comentado, puedes apreciarlas en los siguientes esquemas que representan las estructuras de un programa y de un procedimiento I. Resuelva, utilizando el aplicativo LPP los siguientes ejercicios: 1) Suponga que un individuo desea invertir su capital en un banco y desea saber cuanto dinero ganara despus de un mes si el banco paga a razn de 2% mensual.

2) Un vendedor recibe un sueldo base ms un 10% extra por comisin de sus ventas, el vendedor desea saber cunto dinero obtendr por concepto de comisiones por las tres ventas que realiza en el mes y el total que recibir en el mes tomando en cuenta su sueldo base y comisiones.

3) Una tienda ofrece un descuento del 15% sobre el total de la compra y un cliente desea saber cunto deber pagar finalmente por su compra.

4)

Un alumno desea saber cul ser su calificacin final en la materia de Algoritmos. Dicha calificacin se compone de los siguientes porcentajes:
55% del promedio de sus tres calificaciones parciales. 30% de la calificacin del examen final. 15% de la calificacin de un trabajo final.

Bibliografa http://catedraprogramacion.foroactivos.net/t83-definicion-de-lenguaje-deprogramacion-tipos-ejemplos http://www.desarrolloweb.com/articulos/2143.php http://html.rincondelvago.com/lenguajes-algoritmicos_historia-y-susaplicaciones.html http://www.slideshare.net/Adark/metodologa-para-la-solucin-de-problemas# http://www.slideshare.net/yesyduc10/algoritmos-7013312 http://jorgeportella.wordpress.com/2011/04/09/codificacion-de-algoritmos-enlenguajes-de-programacion/ http://www.aprenderaprogramar.com/index.php?option=com_content&view=article &id=419:tipos-de-datos-java-tipos-primitivos-int-boolean-y-objeto-string-array-oarreglo-variables-cu00621b&catid=68:curso-aprender-programacion-java-desdecero&Itemid=188 http://www.slideshare.net/Johnny_ice/tipos-de-datos-variables-expresiones http://es.wikipedia.org/wiki/Top-down_y_Bottom-up http://es.wikipedia.org/wiki/Algoritmo#Diagrama_de_flujo http://www.monografias.com/trabajos19/algoritmos/algoritmos.shtml http://www.desarrolloweb.com/articulos/2199.php http://www.javaya.com.ar/detalleconcepto.php?codigo=80&inicio= https://sites.google.com/site/algoritmicai/estructura-condicional-multiple http://es.wikipedia.org/wiki/Vector_(inform%C3%A1tica) http://www.programacionweb.net/articulos/articulo/?num=335 http://es.wikipedia.org/wiki/Cadena_de_caracteres http://www.alegsa.com.ar/Dic/modulo.php

You might also like