Vous êtes sur la page 1sur 33

SEMANA 12 A 17

PROGRAMACIN MODULAR La programacin modular se define como aqulla que afronta la solucin de un problema descomponindolo en subproblemas ms simples, y estos a su vez se resuelven mediante un algoritmo o mdulo ms o menos independiente del resto. Ventajas de la programacin modular Facilita la comprensin del problema y su resolucin escalonada

Aumenta la claridad y legibilidad de los programas

Permite que varios programadores trabajen en el mismo problema a la vez, puesto que cada uno puede trabajar en uno o varios mdulos de manera bastante independiente

Reduce el tiempo de desarrollo, reutilizando mdulos previamente desarrollados Mejora la fiabilidad de los programas, porque es ms sencillo disear y depurar mdulos pequeos que programas enormes Facilita el mantenimiento de los programas

Resumiendo, es posible afirmar sin temor a fallar que es virtualmente imposible escribir un programa de grandes dimensiones si no procedemos a dividirlo en fragmentos ms pequeos, abarcables por nuestro pobre intelecto humano. Hay que tener muy presente que la programacin modular y la estructurada no son tcnicas incompatibles, sino ms bien complementarias. La mayora de los programas que se desarrollan con lenguajes estructurados son, de hecho, estructurados y modulares al mismo tiempo. Desarrollar programas de forma modular Significa que pueden identificarse las principales tareas a realizar por el programa y que se pueden disear y probar procedimientos individuales para estas tareas. Por ejemplo: Qu transacciones se le hacen a una cuenta de ahorros? Transacciones: Depsito (cheque y efectivo)

Intereses

Retiro

Estado de cuenta

Cambio de libreta

Tiempo de vida de los datos Segn el lugar donde son declaradas puede haber dos tipos de variables.

Globales : las variables permanecen activas durante todo el programa. Se crean al iniciarse ste y se destruyen de la memoria al finalizar. Pueden ser utilizadas en cualquier procedimiento o funcin.

Locales : las variables son creadas cuando el programa llega a la funcin o procedimiento en la que estn definidas. Al finalizar la funcin o el procedimiento, desaparecen de la memoria

Si dos variables, una global y una local, tienen el mismo nombre, la local prevalecer sobre la global dentro del mdulo en que ha sido declarada. Dos variables locales pueden tener el mismo nombre siempre que estn declaradas en funciones o procedimientos diferentes.

Parmetros Formales Es un tipo especial de variables en un procedimiento a los que se pueden pasar valores desde el exterior del procedimiento. Se declaran en la cabecera del procedimiento. Ejemplos: 1. Uso de variables globales en procedimientos o funciones. Algoritmo global var x:entero Inicio x 0cambiar escribir (x) fin

Mdulo cambiar inicio x 1 fin

La variable X est definida como global, por lo tanto la salida ser 1. 2. Uso de variables locales. Algoritmo local var x:entero Inicio x 0 cambiar escribir (x) fin Mdulo cambiar var x:entero inicio x 1 fin Como x es local, no tiene efecto en el programa, por lo tanto la salida ser 0. 3. Variables locales y globales. Programa en Borland C++ /* Variables globales y locales. */ #include stdio.h int num1=1; main() /* Escribe dos cifras */ { int num2=10;

printf("%d\n",num1); printf("%d\n",num2); }

Parmetros por Valor Son los parmetros que pueden recibir valores pero que no pueden devolverlos. Es una variable global que se conecta con una variable local mediante el envo de su valor, despus de lo cual ya no hay relacin. Lo que le sucede a la variable local no afectar a la global. Cuando un parmetro actual se pasa por valor, el subprograma hace una copia del valor de ste en una posicin de memoria idntica en tamao pero distinta en ubicacin a la del parmetro actual y la asigna al parmetro formal correspondiente. Como el subprograma trabaja a partir de sus parmetros formales, si durante la ejecucin se modifica el valor de un parmetro formal correspondiente a un paso por valor, el contenido de la posicin de memoria del parmetro actual no se ver alterado. Ejemplo: Algoritmo parmetro valor var x: entero Inicio x=0 cambiar(x) escribir(X) Fin

Mdulo cambiar (y:entero) inicio y 1 fin Salida 0

Parmetros por Variable Son los que pueden recibir y devolver valores. Son variables globales que se conectan con una local a travs de su contenido; al establecerse dicha conexin las variables se convierten en sinnimos, lo que afecte a la variable local le suceder a la variable global. Ejemplo: Algoritmo parmetro variable

var x:entero Inicio x 0 cambiar (x) escribir (x) Fin

Mdulo cambiar (var y:entero) inicio y 1 fin Salida: x =1

PROCEDIMIENTOS Son subprogramas, es decir, mdulos que forman parte de un programa y realizan una tarea especfica. Un procedimiento puede tener sus propias variables que se declaran en la seccin var del propio procedimiento. Estas se llaman variables locales. La casilla de memoria para estas variables se crea cada vez que el procedimiento es llamado y se borran al salir del mismo. Asi, las variables locales para un procedimiento slo se pueden usar en el cuerpo del procedimiento y no en el cuerpo principal del programa. FUNCIONES La funcin es una estructura autnoma similar a los mdulos. La diferencia radica en que la funcin se usa para devolver un solo valor de un tipo de dato simple a su punto de referencia. La funcin se relaciona especificando su nombre en una expresin, como si fuera una variable ordinaria de tipo simple. Las funciones se dividen en estndares y definidas por el usuario. Estndar : Son funciones proporcionadas por cualquier lenguaje de programacin de alto nivel, y se dividen en aritmticas y alfabticas. Definidas por el usuario : son funciones que puede definirlas el programador con el propsito de ejecutar alguna funcin especfica, y que por lo general se usan cuando se trata de hacer algn clculo que ser requerido en varias ocasiones en la parte principal del algoritmo. Ejemplos:

Funcin factorial (n:entero): entero var i, factorial:entero inicio si n <=1 entonces

factorial <-- 1 sino factorial <-- 1 desde i = 1 hasta n hacer factorial <-- factorial * 1 fin_desde fin_si fin Evaluar la funcin f = x! / (y!(x-y)!) Algoritmo hallarf var x,y:entero f:real inicio leer (x,y) f <-- factorial (x)/(factorial (y)* factorial (x-y)) escribir ("El valor de f es:", f) fin

Semejanzas entre Procedimientos y Funciones. La definicin de ambos aparece en la seccin de subprogramas de la parte de declaraciones de un programa y en ambos casos consiste en una cabecera, una parte de declaraciones una parte de instrucciones. Ambos son unidades de programa independientes. Los parmetros, constantes y variables declarados en una funcin o procedimiento son locales a la funcin o al procedimiento, solamente son accesibles dentro del subprograma. Cuando se llama a una funcin o a un procedimiento, el nmero de los parmetros reales debe ser el mismo que el nmero de los parmetros formales y los tipos de los parmetros reales deben coincidir con los tipos de los correspondientes parmetros formales, con una excepcin: se puede asociar un parmetro real de tipo entero con un parmetro formal por valor de tipo real. Diferencias entre Procedimientos y Funciones. Mientras que a un procedimiento se le llama mediante una instruccin de llamada a procedimiento, a una funcin se la llama usando su nombre en una expresin. Puesto que se debe asociar un valor al nmero de una funcin, tambin se le debe asociar un tipo. Por tanto, la cabecera de una funcin debe incluir un identificador de tipo que especifique

el tipo del resultado. Sin embargo, no se asocia ningn valor con el nombre de un procedimiento y, por tanto, tampoco ningn tipo. Las funciones normalmente devuelven un nico valor a la unidad de programa que la llama. Los procedimientos suelen devolver ms de un valor, o pueden no devolver ninguno si solamente realizan alguna tarea, como una operacin de salida. En los procedimientos, los valores se devuelven a travs de parmetros por variable, pero el valor de una funcin se devuelve mediante la asignacin al nombre de la funcin de dicho valor en la parte de instrucciones de la definicin de la funcin PROGRAMACION ORIENTADA A OBJETOS La programacin orientada a objetos (POO) es una tcnica o estilo de programacin que utiliza objetos como bloque esencial de construccin. Un programa orientado a objetos es una coleccin de clases. Necesita de una funcin principal que cree objetos y comience la ejecucin mediante la invocacin de sus funciones o mtodos. En primer lugar, se crean los objetos. Segundo, los mensajes se envan desde unos objetos y se reciben en otros a medida que el programa se ejecuta. Tercero, se borran los objetos cuando ya no son necesarios y se recupera la memoria ocupada por ellos. Los objetos son tipos de datos abstractos (TDA) definidos por el programador. En realidad son unidades que contienen datos y funciones que operan sobre esos datos. A los objetos tambin se les conoce como instancias de clase. A los elementos de un objeto se les conoce como miembros (datos miembros yfunciones miembro). Ejemplos de objetosventanas, iconos, arreglos, pilas, colas, rboles binarios, nmeros complejos. Los datos de un objetos estn ocultos y solamente a travs de sus funciones pueden ser accesados. Todos los campos miembros y funciones estn completamente en el interior del objeto y son ocultos desde el exterior, lo que significa que estn encapsulados. A las funciones de un objeto tambin se les conoce como mtodos y a los datos como variables. CARACTERISTICAS Los diseadores definen nuevas clases (o tipos) de objetos.

Los objetos poseen una serie de operaciones asociadas a ellos.

Las operaciones tienden a ser genricas, es decir, operan sobre mltiples tipos de datos.

Las clases o tipos de objetos comparten componentes comunes mediante mecanismos de herencia.

Pero no hay un acuerdo aceptado por todo el mundo respecto a cules son las caractersticas que definen la POO, pero al menos todos concuerdan en estas tres:

Abstraccin Un buen ejemplo de abstraccin es el cuerpo humano, aunque el cuerpo es una unidad, est dividido en lo que conocemos por sistemas (el sistema respiratorio, el sistema linftico, cardiovascular, etc., etc.). Estos sistemas, a su vez estn compuestos por otros ms pequeos: los rganos, y as sucesivamente. La abstraccin nos permite dividir nuestro programa en distintos objetos que se agrupan para formar cosas ms complejas. Bsicamente la abstraccin es la capacidad de separar los elementos (al menos mentalmente) para poder verlos de forma singular. Como cuando describimos el cuerpo humano y decimos cabeza, brazo(s), pierna(s), etc. Encapsulacin: Tambin conocida como ocultamiento . La encapsulacin se encarga de mantener ocultos los procesos internos que necesita para hacer lo que sea que haga, dndole al programador acceso slo a lo que necesita . Esto da dos ventajas iniciales: Lo que hace el usuario puede ser controlado internamente (incluso sus errores), evitando que todo colapse por una intervencin indeseada. La segunda ventaja es que, al hacer que la mayor parte del cdigo est oculto , puedes hacer cambios y/o mejoras sin que eso afecte el modo como los usuarios van a utilizar tu cdigo. Slo tienes que mantener igual la forma de acceder a l. Por cierto, estas puertas de acceso que se dan a los usuarios son lo que se conoce como interfaz . Herencia: La herencia es la capacidad que tiene una clase de derivar las propiedades y mtodos de otra. Por ejemplo: Decimos que una gallina es un ave ; esto quiere decir que las gallinas tienen caractersticas comunes con otras aves (pico, plumas, etc.), es decir que la gallina hereda las caractersticas comunes de todas las aves. Pero adems, resulta que un ave es un animal , lo que significa que tambin comparte caractersticas comunes al caballo, el perro, el hombre y cualquier otra cosa que pueda ser clasificada como animal. La herencia nos permite, entre otras cosas, evitar tener que escribir el mismo cdigo una y otra vez, puesto que al definir que una categora pertenece a otra, automticamente estamos atribuyndoles las caractersticas generales de la primera, sin tener que definirlas de nuevo. Polimorfismo: El trmino de polimorfismo define la capacidad de que ms de un objeto puedan crearse usando la misma clase de base para lograr dos conceptos de objetos diferentes, en este caso podemos citar el tpico ejemplo de los telfonos, los cuales se basan en un telfono base, con la capacidad de hacer ring y tener un auricular, para luego obtener un telfono digital, inalmbrico, con botonera de marcado y tambin, tomando la misma base, construir un telfono analgico y con disco de marcado.

Ventajas de la programacin orientada a objetos

Flexibilidad. Si partimos del hecho que mediante la definicin de clases establecemos mdulos independientes, a partir de los cuales podemos definir nuevas clases, entonces podemos pensar en estos mdulos como bloques con los cuales podemos construir diferentes programas.

Reusabilidad. Una vez que hemos definido a la entidad persona para utilizarla en una aplicacin de negocios, por mencionar un ejemplo, y deseamos construir a continuacin una aplicacin, digamos de deportes, en donde requerimos definir a la misma entidad persona, no es deseable volver a escribir la definicin para la entidad persona. Por medio de la reusabilidad podemos utilizar una clase definida previamente en las aplicaciones que nos sea conveniente. Es claro que la flexibilidad con la que se defini la clase va a ser fundamental para su reutilizacin.

Mantenibilidad. Las clases que conforman una aplicacin, vistas como mdulos independientes entre s, son fciles de mantener sin afectar a los dems componentes de la aplicacin.

Extensibilidad. Gracias a la modularidad y a la herencia una aplicacin diseada bajo el paradigma de la orientacin a objetos puede ser fcilmente extensible para cubrir necesidades de crecimiento de la aplicacin.

Desventajas de la POO A pesar de que las ventajas de la programacin orientada a objetos superan a las limitaciones de la misma, podemos encontrar algunas caractersticas no deseables en sta.

Limitaciones para el programador. No obstante que la tecnologa orientada a objetos no es nueva, un gran porcentaje de programadores no estn familiarizados con los conceptos de dicha tecnologa. En otras palabras, la lgica de la programacin estructurada sigue siendo predominante en la mayora de los desarrolladores de software, despus de haber revisado de forma breve los principios de la programacin orientada a objetos, nos es claro que en sta se requiere una lgica de pensamiento totalmente diferente a la lgica comnmente utilizada para la programacin estructurada.

Tamao excesivo en las aplicaciones resultantes. La gran mayora de los equipos de computo cuentan con capacidades tanto de almacenamiento como de memoria lo suficientemente buena como para ejecutar la mayora de las aplicaciones que puedan desarrollarse con la tecnologa orientada a objetos, sin embargo existen casos en los que lo anterior no se cumple.

Una de las desventajas de la programacin orientada a objetos es que cuando se heredan clases a partir de clases existentes se heredan de forma implcita todos los miembros de dicha clase aun cuando no todos se necesiten, lo que produce aplicaciones muy grandes que no siempre encajan en los sistemas con los que se disponga.

Velocidad de ejecucin. Esto tiene que ver, en cierto modo, con el punto anterior, unaaplicacin innecesariamente pesada en muchas ocasiones es ms lenta de ejecutar que una aplicacin conformada nicamente por los mdulos necesarios.

QUE ES UN OBJETO Objeto es el concepto clave de la Programacin Orientada a Objetos, la idea de objeto es similar a la del mundo real, un objeto puede ser una silla, una mesa. Tu perro es un objeto.

Los objetos tienen dos caractersticas: Un estado y un comportamiento. Fijate que por ejemplo tu perro tiene un estado: nombre, color, raza, altura, etc. y un comportamiento: ladrar, cavar pozo, llorar, dormir, comer, etc.

Un auto es un objeto. Tambin tiene un estado: Cantidad de puertas, color, tamao, etc. y un comportamiento: acelerar, frenar, subir cambio, bajar cambio, girar izq., girar der., etc.

Entonces podemos definir a un objeto en POO, como un conjunto de datos y funciones relacionadas. A las funciones de los objetos, tales como acelerar en el caso del auto, de aqu en ms las llamaremos mtodos, a los datos los llamaremos atributos.

Los objetos en programacin, son modelados observando objetos del mundo real, por ejemplo implementamos el objeto "perro" dentro de nuestro programa definiendo los atributos y mtodos del objeto perro real. Un ejemplo mas complicado de un objeto podra ser el siguiente: Objeto: Cuenta bancaria Atributos: tipo, titular, saldo. Mtodos: Depositar, Extraer. Aqu se ve la necesidad de que el atributo "saldo" sea solo accesible a travs de los mtodos "Depositar" y "Extraer" por una cuestin de seguridad, encapsulamiento y para evitar comportamientos indeseados. QUE ES UNA CLASE Una clase es algo abstracto que define la "forma" del objeto, se podra hablar de la clase como el molde de los objetos.

En el mundo real existen objetos del mismo tipo, por ejemplo tu bicicleta es solo una mas de todas las bicicletas del mundo. Entonces diramos que tu bicicleta es una instancia de la clase "Bicicleta". Todas las bicicletas tienen los atributos: color, cantidad de cambios, dueo y mtodos: acelerar, frenar, pasar cambio, volver cambio. Las fabricas de bicicletas utilizan moldes para producir sus productos en serie, de la misma forma en POO utilizaremos la clase bicicleta (molde) para producir sus instancias (objetos). Los objetos son instancias de clases. Ejemplo: Podramos tener la clase Perro, una instancia de esta clase podra ser el objeto perro llamado "Chicho". La clase Perro especificara que todos los perros tendran un nombre, color de pelo, una altura. Mientras que la instancia "Chicho" contendr valores especficos para cada uno de estos atributos. Podemos definir a una clase como una plantilla que define variables y mtodos comunes para todos los objetos de cierto tipo. Existe un lenguaje de modelado llamado UML mediante el cual podemos representar grficamente todo un sistema orientado a objetos utilizando rectngulos, lneas y otro tipo de smbolos grficos. MENSAJES Un objeto por si solo no tiene mucho significado. Ejemplo: el objeto "bicicleta" no tiene mucho sentido si no interacta con un objeto "persona" que pedalee. La interaccin entre objetos se produce mediante mensajes. Los mensajes son llamados a mtodos de un objeto en particular. Podemos decir que el objeto persona enva el mensaje "girar a la izquierda" al objeto bicicleta. Los mensajes pueden contener parmetros. Por ejemplo teniendo un mtodo en la clase bicicleta llamado "Girar" que recibe como parmetro la direccin (derecha o izquierda). Un mensaje esta compuesto por los siguientes tres elementos: El objeto destino, hacia el cual el mensaje es enviado El nombre del mtodo a llamar Los parmetros solicitados por el mtodo

Beneficios de los mensajes Como todo lo que un objeto puede hacer esta expresado mediante mtodos, el envo de mensajes soporta todas las posibles interacciones entre objetos. Para enviar o recibir mensajes, los objetos no necesitan formar parte del mismo proceso, ni siquiera de la misma mquina.

DIRIJASE A LA SIGUIENTE URL: http://d.scribd.com/docs/26qa9w41d4jir6du417f.pdf En esta pgina usted ver la estructura de la programacin orientada a objetos mediante un ejemplo el cul est desarrollado en Visual basic.Net.

Publicado por LOGICA DE PROGRAMACION en 6:46:00 PM 0 comentarios

Etiquetas: concepto, Funciones, Parmetros por valor y referencia, parmetros y/o argumentos, Programacin Modular, Programacin Orientada a Objetos (P.O.O)

SEMANA 9-11
ESTRUCTURAS DE ALMACENAMIENTO Como sabemos, el almacenamiento constituye una de las partes principales dentro de los sistemas computacionales, puesto que es en dispositivos de gran capacidad donde la informacin es guardada para luego ser accedida o recuperada. Uno de los mayores dispositivos que se utiliza para este propsito son los conocidos dscos duros (discos rgidos). La estructura fsica de un disco rgido esta compuesta por: Cabezas lectoras que recorren la superficie del disco Platos que son pequeos discos que se encuentra uno sobre otro y compuestos por caras. Las pistas que son circuferencias ubicadas en una cara. Y cilindros definidos como la unin de pistas alineadas verticalmente.

Una correcta planificacin trae con sigo un aumento en la velocidad de acceso a datos:

Planificacin FCFS Conocido como first-come-fist-served es un algoritmo que atiende las peticiones en orden de llegada sin importar si se encuentran en ragos muy dispersos. No es muy eficiente pues el cabezal de lectura recorre la superficie de una manera irregular.

Planificacin SSTF Basada en el principio de short-seek-time-first estable las peticiones de direccin de tal manera que ser atendida aquella que se encuentre ms cerca de la cabeza de lectura. Este algoritmo reduce considerablemente el tiempo, pero como desventaja puede provocar que inanicin por la presencia de solicitudes siempre menores.

Planificacin SCAN Tambin conocido como algoritmo del elevador, pues recorre toda la longitud de los platos de un lado a otro buscando en su camino las solicitudes que se encuentren pendientes. Uno de sus inconvenientes es el que las solicitudes de acceso no tienen un tiempo de espera uniforme, es decir, las de un extremo sern atendidas luego de un tiempo mayor. Planificacin C-SCAN Esta planificacin es una variacin del anterior que resuelve la espera de tiempo para cada solicitud, haciendo un recorrido uniforme en cuanto ha atender pedidos lo que hace que la cabeza lectora recorra el plato de inicio a fin y retorne. Planificacin LOOK En la prctica los dos algoritmos anteriores, que recorren todo el plato no son implementados, si no que se usa ms la forma de detectar la ltima peticin y regresar nuevamente al principio, es decir no hay razn de seguir recorriendo si ya no existen solicitudes. Otro aspecto importante en el almacenamiento masivo: Espacio de Intercambio Este es un concepto importante pues su implementacin es conocida

como memora virtual. Lo quepermite aumentar la cantidad de memora de tal manera que el SO mover al disco todo o parte de un proceso sin mucha actividad, permitiendo liberar recursos. Para ubicar el espacion de intercambio existen dos formas, la primera como un fichero de intercambio que puede reducir o ampliar su tamao pero que puede ser afectado por la paginacin y la segunda una Particin de intercambio, que es basicamente especificar una particin del disco para utilizar, y en diferencia a la anterior no puede ser modificado su tamao. Por qmarqevaon 21-06-2008 (http://www.utpl.edu.ec/blog/sistemasoperativos/2008/06/21/estructura-del-almacenamientomasivo/) ARRAYS (ARREGLOS) Un array (tambin llamado arreglo) es una agrupacin de muchos datos individuales del mismo tipo bajo el mismo nombre. Cada dato individual de un array es accesible mediante un ndice. VECTOR Es el caso ms simple de array unidimensional. En los vectores hay dos cosas que hay q diferenciar y son: Posicin y la cantidad. Por ejemplo: int serie[5]=3; La cantidad es 3 y la posicin es 5. En la posicin 5 del vector serie. se almacena el nmero 3. Los vectores siempre arrancan de la posicin 0. OPERACIONES BASICAS CON VECTORES Manipulacin de elementos individuales Los vectores en C deben manipularse elemento a elemento . No se pueden modificar todos los elementos a la vez. Llenado de un vector por definicin: Para asignar valores a los elementos de un vector, por lo tanto, el mecanismo es este: int serie[5]; serie[0] = 5; serie[1] = 3; serie[2] = 7; ...etc... La inicializacin de los valores de un vector tambin puede hacerse conjuntamente en el momento de declararlo, as: int serie[5] = {5, 3, 7, 9, 14}; El resultado de esta declaracin ser un vector de 5 elementos de tipo entero a los que se les asigna estos valores:

Cada elemento del vector es, a todos los efectos, una variable que puede usarse independientemente de los dems elementos. As, por ejemplo, un elemento del vector serie puede usarse en una instruccin de salida igual que cualquier variable simple de tipo int:

int serie[5]; serie[0] = 21; printf("%i", serie[0]); Del mismo modo, pueden usarse elementos de vector en una instruccin de entrada. Por ejemplo: int serie[5]; scanf("%i", &serie[0]); serie[1] = serie[0] + 15; printf("%i", serie[1]); Llenado de un vector por lectura o teclado: int v[n]=0, i; for (i=0; i<=n-1, i++) { printf (datos:%d : ,i+1); scanf ("%d",v[i] ); } Imprimir un vector for (i=0; i<=n-1, i); printf (datos:%d : ,i+1); Sumar posiciones a=0; for (i=0; i<=n-1, i++) printf (datos:%d : ,i+1); a=a+v[i]; COMO ORDENAR UN VECTOR Mencionaremos tres mtodos de ordenacin muy populares: 1. Ordenacin por INTERCAMBIO DIRECTO (burbuja) El mtodo de la burbuja es muy ineficiente, pues tarda mucho tiempo en ordenar un vector si ste es muy largo. Pero es fcil de entender. La idea general es simple: tomaremos los dos primeros elementos y los compararemos. Si estn desordenados, intercambiamos sus posiciones. Si estn ordenados, los dejamos como estn. Despus haremos lo mismo con los elementos segundo y tercero (comparar y, si es necesario, intercambiar). Luego, con el tercero y el cuarto. Despus con el cuarto y el quinto, y as sucesivamente hasta recorrer el vector completo. Cuando lleguemos al final, el vector no estar todava ordenado, pero el elemento ms grande del vector habr subido hasta la ltima posicin, igual que una burbuja de aire en el agua . Si volvemos a repetir el proceso desde el principio, el segundo elemento ms grande habr subido hasta la penltima posicin del vector. Y, la siguiente vez, el tercer elemento ms grande subir hasta la antepenltima posicin. Y as hasta que ordenemos todos los elementos. Si el vector tiene N elementos, hay que repetir el recorrido N veces, aunque en cada repeticin podemos quedarnos una posicin ms abajo del final, ya que sabemos con seguridad que los ltimos elementos estn colocados en su sitio.

El algoritmo funciona exactamente igual si recorremos el vector desde el final hacia el principio, slo que, en ese caso, son los elementos ms pequeos los que van descendiendo y colocndose en su posicin definitiva en cada iteracin del algoritmo. En la siguiente implementacin, usamos este segundo enfoque: repetimos el proceso tantas veces como elementos tenga el vector (longitudvector) y, en cada repeticin, recorremos el vector desde el final hacia atrs, comparando e intercambiando pares adyacentes de elementos. (Aviso importante : la plantilla de WordPress muestra automticamente dos caracteres - consecutivos cmo si fueran un guin largo . Si desea usar esta implementacin, recuerde que debe deshacer ese cambio) void ordena_vector(int v[longitudvector]) { int i, j, minimo, posicion_minimo; for (i = 0; i < minimo =" v[i];" posicion_minimo =" i;" j="i;" minimo =" v[j];" posicion_minimo =" j;">

El mtodo de la burbuja necesita muchos pasos para completarse (y por eso tarda tanto y se dice que es un algoritmo ineficiente). En concreto, si vector tiene N elementos, hay que ejecutar alrededor de N*N pasos para completar la ordenacin. El tiempo de ejecucin es proporcional al nmero de pasos necesarios y, por lo tanto, crecer exponencialmente (al ritmo de N 2 ) con el tamao del vector. Por eso no es un mtodo prctico cuando se trata de vectores muy grandes. 2. Ordenacin por seleccin directa El algoritmo de seleccin directa tambin parte de un concepto bastante simple: es recorrer todo el vector para buscar el elemento ms pequeo y, una vez localizado, colocarlo en la primera posicin. El elemento que estuviera ocupando la primera posicin debe ser movido al lugar donde estaba el elemento ms pequeo, claro, o de lo contrario se sobreescribira y se perdera para siempre. Despus, haremos lo mismo buscando el segundo elemento ms pequeo, movindolo a la segunda posicin del vector. Luego buscamos el tercer elemento ms pequeo, el cuarto, etc. Repitiendo esta bsqueda tantas veces como elementos tenga el vector, habremos conseguido ordenarlo. A continuacin se presenta una posible implementacin en C. Observe que tambin se necesitan dos bucles anidados para culminar el proceso, por lo que el nmero de pasos necesarios es alrededor de N 2 y, por lo tanto, el tiempo de ejecucin tambin crece exponencialmente, como en el caso de la burbuja. void ordena_vector(int v[LONGITUD_VECTOR]) { int i, j, elem; for (i = 1; i <> { for (j = LONGITUD_VECTOR - 1; j >=i; j--) { if (v[j-1] > v[j]) {

elem = v[j-1]; v[j-1] = v[j]; v[j] = elem; }

} } }

Ordenacin rpida (QUICKSORT) El algoritmo Quicksort (u ordenacin rpida) es un mtodo de ordenacin mucho ms elaborado que los dos anteriores y, por lo tanto, ms difcil de comprender. La versin que presentamos es recursiva, pero existen implementaciones equivalentes iterativas, ms difciles (todava) de comprender, pero ms rpidas. La idea es la siguiente: tomemos un elemento cualquiera del vector (generalmente el elemento central), que llamaremos pivote. Buscamos a la derecha del pivote todos los elementos que deberan estar a la izquierda (porque sean ms pequeos que el pivote) y, a la izquierda, todos los que deberan estar a la derecha (por ser ms grandes) e intercambimoslos.

El proceso de intercambio de pares se repetir hasta que alcancemos el pivote. Entonces, sabremos que todos los elementos de la derecha del pivote son mayores que ste, y, los de la derecha, son menores. Ahora dividimos el vector en dos mitades: a la izquierda del pivote y a la derecha del pivote. Procesaremos cada mitad con el mismo procedimiento: buscar un nuevo pivote e intercambiar elementos de la izquierda y de la derecha.

Repetiremos el proceso hasta que los vectores sean triviales (es decir, hasta que el pivote coincida con los extremos izquierdo y/o derecho).

Este algoritmo necesita, por trmino medio, un nmero de pasos proporcional a N * log(N). Puede que no parezca mucho comparado con el N 2 que necesita la burbuja, pero, para tamaos muy grandes, la diferencia de tiempos es enorme. NOTA: en esta implementacin, por simplicidad, el vector v es una variable global

void ordena_vector(int iz, int de) { int i, j, x, w; i = iz; j = de; x = v[(iz+de) / 2]; do { while (v[i] < w =" v[i];" w =" v[i];">

MARTINEZ B, Nstor Ral. METODO BURBUJA EN VECTORES . Universidad Cooperativa de Colombia seccional Bucaramanga, 2009 en el cd de la tesis en la ruta CD DE LOGICA DE PROG\VIDEOS BLOGGER LOGICA DE PROGRAMACION

MATRICES Una matriz, tabla o array bidimiensional, como un vector, es una coleccin de elementos individuales, todos del mismo tipo, agrupados bajo el mismo identificador. La diferencia con el vector es que, en el momento de declararlo y de acceder a cada elemento individual, debemos utilizar dos ndices en lugar de uno:

int matriz[4][4];

Tenemos aqu una variable compleja llamada matriz que no consta de 4 elementos enteros, sino de 16, es decir, 44. Podemos representar grficamente la matriz como una tabla: Cada casilla de la tabla o matriz es identificable mediante una pareja de ndices. Normalmente, el primero de los ndices se refiere a la fila, y el segundo, a la columna. Por ejemplo, si hacemos estas asignaciones:

matriz[0][0] = 5; matriz[1][0] = 1; matriz[3][2] = 13;

el estado en el que quedar la matriz ser el siguiente

Por descontado, los dos ndices de la matriz pueden ser diferentes, obtenindose tablas que son ms anchas que altas o ms altas que anchas.

Por lo dems, las matrices se utilizan exactamente igual que los vectores. A modo de ejemplo, ste sera el cdigo para inicializar una matriz de 510 enteros con todos sus elementos a 0. Observe cmo se usan los dos bucles anidados para acceder a todos los elementos:

int m[5][10];i int i, j;for (i = 0; i<= 4; i++) { for (j = 0; j <= 9; j++) { m[i][j] = 0; } }

OPERACIONES BASICAS CON MATRICES

Manipulacin de elementos individuales Llenado de una matrz por definicin: El llenado de la matrz se hace por filas y se hace de una vez. n = Filas y m = Columnas. int A[n][m]={{3,7,4,2},{1,1,1,1},{3,5,8,9},{4,3,7,8},{6,2,3,4} }

Llenado de una matris por lectura o teclado: Hay 2 formas por filas o por columnas Por Filas Por columnas

for (i=0; i<=n-1, i++) for (j=0; j <=m-1,j++) (j=0; j <=m-1, j++) for (i=0; i <=n-1,i++) { printf ("datos: "); scanf ("%d", & v[i][j]);} for (i=0; i<=n-1, i++) for (j=0; j <=m-1,j++) { printf ("fila %d, columna %d, i++, j++"); scanf ("%d", & v[i][j]); } for (i=0; i<=n-1, i++) {

printf ("fila %d, i++); for (j=0; j <=m-1,j++) { printf ("columna %d, j++"); scanf ("%d", & v[i][j]); } }

Llenado de una matrz por asignacin: Es ubicar la cantidad que se necesite en donde se desee

for (i=0; i<=n-1, i++) for (j=0; j <=m-1,j++) if (i=j) v[i][j])=1;

Imprimir una matrz for (i=0; i<=n-1, i++) { printf ("\n"); for (j=0; j <=m-1,j++) printf ("%d\t", v[i][j]); } Suma por filas

float s[n]=0; A[i][j]int suma=0; for (i=0; i<=n-1, i++) { suma=0; for (j=0;j<=m-1, j++) suma=suma+A[i][j]; s[i]=suma;

float A[n][m]=0; int suma=0; for (i=0; i<=n-1, i++) { suma=0; for (j=0; j<=m-2, j++) suma=suma+A[i][j]; A[i][m-1]=suma;

Suma por columnas

for (j=0; j<=m-1, j++) { suma=o; for (i=0; i<=n-1, i++) suma=suma+A[i][j]; s[j]=suma;

for (j=0; j<=m-1, j++) {

suma=o; for (i=0; i<=n-2, i++) suma=suma+A[i][j]; A[n-1][j]=suma;

Imprimir la suma de las columnas i=n-1; for (j=0; j <=m-1, j++) printf ("%f", A[i][j]);

Imprimir el total de la columna 2 i=4; j=1; printf ("%f",A[i][j]);

MARTINEZ B, Nstor Ral.SUMA DE FILAS Y DE COLUMNAS EN UNA MATRIS DE MxN. Universidad Cooperativa de Colombia seccional Bucaramanga, 2009 en el cd de la tesis en la ruta CD DE LOGICA DE PROG\VIDEOS BLOGGER LOGICA DE PROGRAMACION Ahora desarrolle las actividades que se encuentran en la plataforma moodle.

Publicado por LOGICA DE PROGRAMACION en 10:09:00 AM 0 comentarios Etiquetas: arrays, arreglos, estructuras de almacenamiento, matrices, operaciones con vectores, vectores

SEMANA 4 A LA SEMANA 8
ESTRUCTURAS BASICAS Las Estructuras Bsicas pueden ser: Secuenciales : Cuando una instruccin del programa sigue a otra.

Seleccin o decisin : Acciones en las que la ejecucin de alguna depender de que se cumplan una o varias condiciones. Repeticin, Iteracin: Cuando un proceso se repite en tanto cierta condicin sea establecida para finalizar ese proceso. ESTRUCTURA SECUENCIAL Se caracteriza porque una accin se ejecuta detrs de otra. El flujo del programa coincide con el rden fsico en el que se han ido poniendo las instrucciones. Dentro de este tipo podemos encontrar operaciones de inicio/fin, inicializacin de variables, operaciones de asignacin, clculo, sumarizacin, etc. Este tipo de estructura se basa en las 5 fases de que consta todo algoritmo o programa: Definicin de variables (Declaracin), Inicializacin de variables, Lectura de datos, Clculo, Salida. Ejemplo: Se desea encontrar la longitud y el rea de un crculo de radio 5.

MARTINEZ B, Nstor Ral. Video Estrutura Secuencial. Universidad Cooperativa de Colombia seccional Bucaramanga, 2009 ver en el cd de la tesis en la ruta CD DE LOGICA DE PROG\VIDEOS BLOGGER LOGICA DE PROGRAMACION ESTRUCTURAS SELECTIVAS Las estructuras selectivas o alternativas se clasifican en: Simples Dobles Compuestas Mltiples

Estructura de Seleccin Simple (IF) Se identifican porque estn compuestos nicamente de una condicin. La estructura si - entonces evala la condicin y en tal caso: Si la condicin es verdadera, entonces ejecuta la accin Si (o acciones si son varias). Si la condicin es falsa, entonces no se hace nada. Estructura de Seleccin doble Son estructuras lgicas que permiten controlar la ejecucin de varias acciones y se utilizan cuando se tienen dos opciones de accin, por la naturaleza de estas se debe ejecutar una o la otra, pero no ambas a la vez, es decir, son mutuamente excluyentes.

MARTINEZ B, Nstor Ral. Ejm Estructura Doble. Universidad Cooperativa de Colombia seccional Bucaramanga, 2009 ver en el cd de la tesis en la ruta CD DE LOGICA DE PROG\VIDEOS BLOGGER LOGICA DE PROGRAMACIONo ver en CD de Proyecto de OVAS II Fase

Estructura selectiva compuesta En la solucin de problemas encontramos casos en los que luego de tomar una decisin y marcar el camino correspondiente a seguir, es necesario tomar otra decisin. Dicho proceso puede repetirse numerosas veces. En aquellos problemas en donde un bloque condicional incluye otro bloque condicional se dice que un bloque est anidado dentro del otro.

Estructura selectiva multiple Se usa cuando existan ms de dos elecciones posibles. Este problema se podra resolver por estructuras selectivas simples o dobles, anidadas o en cascada, pero si el nmero de alternativas es grande puede plantear serios problemas de escritura y de legibilidad. Usando la estructura de decisin mltiple se evaluar una expresin que podr tomar n valores distintos, 1, 2 , 3, ....,n y segn que elija uno de estos valores en la condicin, se realizar una de las n acciones o lo que es igual, el flujo del algoritmo seguir slo un determinado camino entre los n posibles. Esta estructura se representa por un selector el cual si toma el valor 1 ejecutar la accin 1, si toma el valor 2 ejecutar la accin 2, si toma el valor N realizar la accin N. LENGUAJES DE PROGRAMACION

(Histria de los lenguajes de programacin) en el cd de la tesis en la ruta CD DE LOGICA DE PROG\VIDEOS BLOGGER LOGICA DE PROGRAMACION
http://www.youtube.com/watch?v=MiMKWVqxSls&feature=related Ya que este tema es bastante largo recomendamos que visite: http://www.lenguajes-deprogramacion.com/ Los lenguajes de programacin son herramientas que nos permiten crear programas y software. Entre ellos tenemos Delphi, Visual Basic, Pascal, Java, etc..Una computadora funciona bajo control de un programa el cual debe estar almacenado en la unidad de memoria; tales como el disco duro.Los lenguajes de programacin de una computadora en particular se conoce como cdigo de mquinas o lenguaje de mquinas. Hay lenguajes de programacin que utilizan compilador. Un leguaje de programacin es un conjunto de smbolos junto a un conjunto de reglas para combinar dichos smbolos que se usan para expresar programas. Los leguajes de programacin constan de:. Lxico : Conjunto de smbolos permitidos o vocabulario Sintaxis : Reglas que indican cmo realizar las construcciones del lenguaje Semntica: Reglas que permiten determinar el significado de cualquier construccin del lenguaje. TIPOS DE LENGUAJES Lenguaje de bajo nivel Es el tipo de lenguaje que cualquier computadora es capaz de entender. Se dice que los programas escritos en forma de ceros y unos estn en lenguaje de mquina, porque esa es la versin del programa que la computadora realmente lee y sigue. Lenguajes de alto nivel Son lenguajes de programacin que se asemejan a las lenguas humanas usando palabras y frases fciles de entender.

En un lenguaje de bajo nivel cada instruccin corresponde a una accin ejecutable por el ordenador, mientras que en los lenguajes de alto nivel una instruccin suele corresponder a varias acciones. Caractersticas de los lenguajes de programacicn: Son independientes de la arquitectura fsica de la computadora. Permiten usar los mismos programas en computadoras de diferentes arquitecturas (portabilidad), y no es necesario conocer el hardware especfico de la mquina. La ejecucin de un programa en lenguaje de alto nivel, requiere de una traduccin del mismo al lenguaje de la computadora donde va a ser ejecutado. Una sentencia en un lenguaje de alto nivel da lugar, al ser traducida, a varias instrucciones en lenguaje entendible por el computador. Utilizan notaciones cercanas a las usadas por las personas en un determinado mbito. Se suelen incluir instrucciones potentes de uso frecuente que son ofrecidas por el lenguaje de programacin.

GENERACION DE LOS LENGUAJES DE PROGRAMACION : Lenguaje de mquina (Primera Generacin) Es el lenguaje que la computadora entiende, su estructura est totalmente adaptada a los circuitos de la mquina y la programacin es tediosa porque los datos se representan por ceros y unos. Es de bajo nivel. Es un conjunto de instrucciones codificadas en binario que son capaces de relacionarse directamente con los registros y circuitera del microprocesador de la computadora y que resulta directamente ejecutable por ste, sin necesidad de otros programas intermediarios. Los datos se referencian por medio de las direcciones de memoria donde se encuentran y las instrucciones realizan operaciones simples. Estos lenguajes estn ntimamente ligados a la CPU y por eso no son transferibles. (baja portabilidad). Para los programadores es posible escribir programas directamente en lenguaje de mquina, pero las instrucciones son difciles de recordar y los programas resultan largos y laboriosos de escribir y tambin de corregir y depurar. Lenguaje ensamblador (Segunda Generacin) Es otro lenguaje de programacin de bajo nivel, pero simblico porque las instrucciones se construyen usando cdigos de tipo mnemotcnico, lo cual facilita la escritura y depuracin de los programas pero no los acorta puesto que para cada accin se necesita una instruccin. El programa ensamblador va traduciendo lnea a lnea a la vez que comprueba la existencia de errores. Si localiza alguno da un mensaje de error. Algunas caractersticas que lo diferencian del lenguaje de mquina son que permite el uso de comentarios entre las lneas de instrucciones; en lugar de direcciones binarias usa identificadores como total, x, y, etc. Y los cdigos de operacin se representan por mnemotcnica siempre tienen la desventaja de repertorio reducido de instrucciones, rgido formato para las instrucciones, baja portabilidad y fuerte dependencia del hardware. Tiene la ventaja del uso ptimo de los recursos hardware, permitiendo la obtencin de un cdigo muy eficiente. Ejemplo de algunos cdigos mnemnicos son: STO para guardar un dato, LOA para cargar algo en el acumulador, ADD para adicionar un dato, INP para leer un dato, STO para guardar informacin, MOV para mover un dato y ponerlo en un registro, END para terminar el programa, etc. Con la tercera generacin avanzamos a los lenguajes de alto nivel, muchos de los cuales se consideran exportables. Esto es, pueden correr en ms de un tipo de computadoras, se les puede exportar de una mquina a otra. Lenguaje de procedimientos (Tercera Generacin) Son lenguajes de alto nivel similares al habla humana pero requieren cierta capacitacin para su uso. Ventajas : a. Independencia de la arquitectura fsica de la computadora (portabilidad), esto significa que un mismo lenguaje puede funcionar (al menos en teora) en distintos computadores, por lo que tanto el lenguaje como los programas escritos con l sern transportables de un computador a otro. En la prctica, esta caracterstica resulta limitada por la gran diversidad de versiones y dialectos que se constituyen para cada lenguaje.

b. una sentencia en un lenguaje de alto nivel da lugar, al ser traducida, a varias instrucciones en lenguaje mquina. Se llaman de procedimientos porque estn diseados para expresar la lgica capaz de resolver problemas generales. Entre estos tenemos: Basic Pascal Cobol C Fortran Para que el lenguaje de procedimientos pueda funcionar debe traducirse a lenguaje de mquina a fin de que la computadora lo entienda. Para ello se han de usar programas traductores que realicen dicho proceso. Tienen la capacidad de soportar programacin estructurada. Lenguajes orientados a problemas (4GL) Resultan ms eficaces para la resolucin de un tipo de problemas a costa de una menor eficiencia para otros. Requieren poca capacitacin especial de parte del usuario Son considerados de muy alto nivel Diseados para resolver problemas especficos Incluye: lenguajes de consulta y generador de aplicaciones Lenguajes de consulta: Permiten a no programadores usar ciertos comandos de fcil comprensin para la bsqueda y generacin de reportes a partir de una base de datos. Generador de aplicaciones: Quiere decir que cuando se disea uno de estos lenguajes, se tiene en cuenta que su finalidad es la resolucin de problemas, prescindiendo de la arquitectura del computador. Contiene varios mdulos que han sido preprogramados para cumplir varias tareas.

Lenguajes naturales Lenguajes orientados a aplicaciones en inteligencia artificial, como lisp y prolog. Dentro de este campo destacan las aplicaciones en sistemas expertos, juegos, visin artificial (Jurasic Park) y robtica. Lisp es un lenguaje para procesamiento de listas y manipulacin de smbolos. Prolog es un lenguaje basado en la lgica, para aplicaciones de bases de datos e Inteligencia Artificial. Podemos decir entonces, que los lenguajes de alto nivel, tienen las ventajas de mayor legibilidad de los programas, portabilidad, facilidad de aprendizaje y facilidad de modificacin. ENTORNO DE DESARROLLO INTEGRADO (EDI) Ver en el OVAS el temario del curso http://201.221.156.156/moodle

MARTINEZ B, Nstor Ral. EDI V3. Universidad Cooperativa de Colombia seccional Bucaramanga, 2009 en el cd de la tesis en la ruta CD DE LOGICA DE PROG\VIDEOS BLOGGER LOGICA DE PROGRAMACION

ESTRUCTURAS REPETITIVAS O CICLO O BUCLE. Son operaciones que se deben ejecutar un nmero repetido de veces. El conjunto de instrucciones que se ejecuta repetidamente cierto nmero de veces, se llama Ciclo, Bucle o Lazo . Generalmente, son usados para hacer una accin repetida sin tener que repetir varias veces el mismo cdigo, esto ahorra tiempo, deja el cdigo ms sencillo y facilita su modificacin en el futuro. Iteracin es cada una de las diferentes pasadas o ejecuciones de todas las instrucciones contenidas en el bucle. Fases de un Programa Cclico : Entrada de datos e instrucciones previas Lazo o bucle Instrucciones finales o resto del proceso Salida de resultado.

ESTRUCTURA DESDE/PARA (FOR) Se usa frecuentemente cuando se conoce de antemano el nmero de veces que se ejecutarn las acciones de un bucle. A la estructura Desde/Para se le conoce como Repetitiva. Para utilizar esta estructura en algoritmos, debemos hacer uso de contadores y algunas veces de acumuladores, cuyos conceptos se describen a continuacin: CONTADOR: Un contador es una variable cuyo valor se incrementa o decrementa en una cantidad constante cada vez que se produce un determinado suceso o accin. Los contadores se utilizan con la finalidad de contar sucesos o acciones internas de un bucle; deben realizar una operacin de inicializacin y posteriormente las sucesivas de incremento o decremento del mismo. La inicializacin consiste en asignarle al contador un valor. Se situar antes y fuera del bucle. Representacin: nombre del contador> + Si en vez de incremento es decremento se coloca un menos en lugar del ms. Ejemplo: i = i + 1

ACUMULADOR O TOTALIZADOR : Es una variable que suma sobre s misma un conjunto de valores para de esta manera tener la suma de todos ellos en una sola variable. La diferencia entre un contador y un acumulador es que mientras el primero va aumentando de uno en uno, el acumulador va aumentando en una cantidad variable. Representacin: + Un ejemplo muy claro apra el ciclo For se ver cuando lleguemos a hablar de los vectores y la matrices.

ESTRUCTURA MIENTRAS (While) Se usa cuando queremos repetir la ejecucin de unas sentencias un nmero indefinido de veces. Su sintaxis es la siguiente: while(condicin){ sentencia a ejecutar } Para entender mejor el uso de while nos serviremos del siguiente ejemplo: while($color != "rojo"){ color= dame un color; } ESTRUCTURA HACER MIENTRAS (Do While) El bucle DO. WHILE se usa cuando no sabemos el nmero de veces que va a ejecutarse un bucle pero lo que si tenemos claro es que por lo menos una vez si que se ejecutara la accion. Su sintaxis es la siguiente: do{ sentencia del bucle } while(condicion

MARTINEZ B, Nstor Ral. Ejm Bucles. Universidad Cooperativa de Colombia seccional Bucaramanga, 2009 en el cd de la tesis en la ruta CD DE LOGICA DE PROG\VIDEOS BLOGGER LOGICA DE PROGRAMACION

Publicado por LOGICA DE PROGRAMACION en 7:28:00 PM 0 comentarios Etiquetas: ESTRUCTURAS BASICAS, Iteracin:, Repeticin, Secuenciales, Seleccin doble, Seleccin Simple (IF), selectiva compuesta, selectiva multiple Entradas antiguas Pgina principal Suscribirse a: Entradas (Atom)

Vous aimerez peut-être aussi