Programación estructurada

58
Programación estructurada De Wikipedia, la enciclopedia libre Saltar a navegación , búsqueda La programación estructurada es una forma de escribir programas de ordenador (programación de computadora ) de manera clara. Para ello utiliza únicamente tres estructuras: secuencia, selección e iteración; siendo innecesario el uso de la instrucción o instrucciones de transferencia incondicional (GOTO, EXIT FUNCTION, EXIT SUB o múltiples RETURN). Hoy en día las aplicaciones informáticas son mucho más ambiciosas que las necesidades de programación existentes en los años 1960, principalmente debido a las aplicaciones gráficas, por lo que las técnicas de programación estructurada no son suficientes. Ello ha llevado al desarrollo de nuevas técnicas, tales como la programación orientada a objetos y el desarrollo de entornos de programación que facilitan la programación de grandes aplicaciones. Contenido [ocultar ] 1 Orígenes de la programación estructurada o 1.1 Estructura secuencial o 1.2 Estructura selectiva o de selección o 1.3 Estructura iterativa o 1.4 Anidamiento 2 Ventajas de la programación estructurada 3 Inconvenientes de la programación estructurada 4 Bibliografia 5 Véase también 6 Enlaces externos

Transcript of Programación estructurada

Programacin estructuradaDe Wikipedia, la enciclopedia libre Saltar a navegacin, bsqueda La programacin estructurada es una forma de escribir programas de ordenador (programacin de computadora) de manera clara. Para ello utiliza nicamente tres estructuras: secuencia, seleccin e iteracin; siendo innecesario el uso de la instruccin o instrucciones de transferencia incondicional (GOTO, EXIT FUNCTION, EXIT SUB o mltiples RETURN). Hoy en da las aplicaciones informticas son mucho ms ambiciosas que las necesidades de programacin existentes en los aos 1960, principalmente debido a las aplicaciones grficas, por lo que las tcnicas de programacin estructurada no son suficientes. Ello ha llevado al desarrollo de nuevas tcnicas, tales como la programacin orientada a objetos y el desarrollo de entornos de programacin que facilitan la programacin de grandes aplicaciones.

Contenido[ocultar]

1 Orgenes de la programacin estructurada

1.1 Estructura secuencial 1.2 Estructura selectiva o de seleccin 1.3 Estructura iterativa 1.4 Anidamiento

2 Ventajas de la programacin estructurada 3 Inconvenientes de la programacin estructurada 4 Bibliografia 5 Vase tambin 6 Enlaces externos

[editar] Orgenes de la programacin estructuradaA finales de los aos 1960 surgi una nueva forma de programar que no solamente daba lugar a programas fiables y eficientes, sino que adems estaban escritos de manera que facilitaba su comprensin posterior. El teorema del programa estructurado, demostrado por Bhm-Jacopini, demuestra que todo programa puede escribirse utilizando nicamente las tres instrucciones de control siguientes: Secuencia Instruccin condicional. Iteracin (bucle de instrucciones) con condicin al principio.

Solamente con estas tres estructuras se pueden escribir todos los programas y aplicaciones posibles. Si bien los lenguajes de programacin tienen un mayor repertorio de estructuras de control, stas pueden ser construidas mediante las tres bsicas.

[editar] Estructura secuencial

Una estructura de programa es secuencial si se ejecutan una tras otra a modo de secuencia, es decir que una instruccin no se ejecuta hasta que finaliza la anterior. Ejemplo:INPUT x INPUT y auxiliar= x x= y y= auxiliar PRINT x PRINT y

Esta secuencia de instrucciones permuta los valores de x e y, con ayuda de una variable auxiliar, intermedia. 1 Guardamos una copia del valor de x en auxiliar. 2 Guardamos el valor de y en x, se pierde el valor anterior de x pero no importa porque tenemos una copia en auxiliar. 3 Guardamos en y el valor de auxiliar, que es el valor inicial de x. El resultado es el intercambio de los valores de x e y, en tres operaciones secuenciales.

[editar] Estructura selectiva o de seleccinLa estructura selectiva permite la realizacin de una instruccin u otra segn un criterio, solo una de estas instrucciones se ejecutara. Ejemplo:IF a > b THEN PRINT a ; " es mayor que " ; b ELSE PRINT a ; " no es mayor que " ; b END IF

Esta instruccin selectiva puede presentar dos mensajes, uno a es mayor que b, y el otro a no es mayor que b, solo uno de ellos ser presentado, segn el resultado de la comparacin de a y b, si el resultado de a > b es cierto, se presenta el primer mensaje, si es falso el segundo, las palabras IF, THEN, ELSE, END IF; son propias de la instruccin (palabra reservadas) que tienen un significado en el lenguaje, sirven de separadores, y el usuario no debe utilizarlas salvo para este fin.

IF seala el comienzo de la instruccin condicional, y se espera que despus est la condicin de control de la instruccin. THEN seala el fin de la condicin, y despus estar la instruccin a realizar si la condicin es cierta. ELSE separa la instruccin que se ejecutar si la condicin es cierta de la que se ejecutar si es falsa. END IF indica que la instruccin condicional finaliza y el programa seguir su curso.THEN a ; " es mayor que " ; b < b THEN a ; " es menor que " ; b a ; " es igual que " ; b

Ampliemos un poco el ejemplo anterior:IF a > b PRINT ELSEIF a PRINT ELSE PRINT

END IF

Este ejemplo nos permite considerar situaciones en las que tenemos ms de dos alternativas. En este caso hemos considerado tres, pero hay situaciones en las que deben considerarse ms casos y para ellos se puede repetir las veces que queramos la parte ELSEIF.

[editar] Estructura iterativaUn bucle iterativo o iteracin de una secuencia de instrucciones, hace que se repitan mientras se cumpla una condicin, en un principio el nmero de iteraciones no tiene porque estar determinado. Ejemplo:a= 0 b= 7 WHILE b > a DO PRINT a a= a + 1 WEND

Esta instruccin tiene tres palabras reservadas WHILE, DO y WEND.

WHILE: seala el comienzo del bucle y despus de esta palabra se espera la condicin de repeticin, si la condicin es cierta se pasa al cuerpo del bucle, si no al final de la instruccin mientras. DO: seala el final de la condicin, lo que est despus ser el cuerpo del bucle. WEND: seala el final del cuerpo del bucle y de la instruccin WHILE.

El bucle mientras, se repite mientras la condicin sea cierta, esta condicin se comprueba al principio por lo que el cuerpo del bucle puede que no se ejecute nunca, cuando la condicin es falsa en un principio, o que se repita tantas veces como sea necesario, mientras la condicin sea cierta. En el ejemplo tenemos dos variables a y b que al iniciarse el bucle tienen los valores a=0 y b=7. La condicin del bucle es b > a. Cuando a=0 y b=7. la condicin es cierta, en el cuerpo del bucle se escribe el valor de a en pantalla y se incrementa a en una unidad. Entonces a=1 y b=7. ... ... Cuando a=6 y b=7. la condicin es cierta, se escribe el valor de a en pantalla y se incrementa en una unidad. Resultando que a=7 y b=7. Entonces la condicin es falsa y la instruccin WHILE finaliza. La salida por pantalla de este ejemplo seria 0 1 2 3 4 5 6

[editar] AnidamientoEl cuerpo de cualquier estructura puede ser una instruccin simple u otra estructura, que a su vez puede anidar a otra. Ejemplo:IF a > b THEN auxiliar= a a= b b= auxiliar

ELSE REM nada END IF PRINT a ; b

[editar] Ventajas de la programacin estructurada1. Los programas son ms fciles de entender, ya que pueden ser ledos de forma secuencial, sin necesidad de hacer seguimiento a saltos de lnea (GOTO) dentro de los bloques de cdigo para entender la lgica. 2. La estructura del programa es clara, puesto que las instrucciones estn ms ligadas o relacionadas entre s. 3. Reduccin del esfuerzo en las pruebas. El seguimiento de los fallos o errores del programa ("debugging") se facilita debido a la estructura ms visible, por lo que los errores se pueden detectar y corregir ms fcilmente. 4. Reduccin de los costos de mantenimiento de los programas. 5. Programas ms sencillos y ms rpidos (ya que es ms fcil su optimizacin). 6. Los bloques de cdigo son auto explicativos, lo que facilita la documentacin. 7. Los GOTO se reservan para construir las instrucciones bsicas. Aunque no se usan de forma directa, por estar prohibida su utilizacin, estn incluidas implcitamente en las instrucciones de seleccin e iteracin. 8. Un programa escrito de acuerdo a estos principios no solamente tendr una mejor estructura sino tambin una excelente presentacin. La programacin estructurada ofrece estos beneficios, pero no se la debe considerar como una panacea ya que el desarrollo de programas es, principalmente, una tarea de dedicacin, esfuerzo y creatividad.

[editar] Inconvenientes de la programacin estructuradaEl principal inconveniente de este mtodo de programacin es que se obtiene un nico bloque de programa, que cuando se hace demasiado grande puede resultar problemtico su manejo; esto se resuelve empleando la programacin modular, definiendo mdulos interdependientes programados y compilados por separado (en realidad esto no es necesario, pero es recomendable para su mantenimiento y funcionalidad). En realidad, cuando se programa hoy en da (inicios del siglo XXI) se suelen utilizar, tanto las tcnicas de programacin estructurada como las de programacin modular, de forma conjunta y por lo tanto es posible que cuando uno haga referencia a la programacin estructurada est considerando tambin las tcnicas de modularizacin. Un mtodo un poco ms sofisticado es la programacin por capas, en la que los mdulos tienen una estructura jerrquica en la que se pueden definir funciones dentro de funciones o de procedimientos.AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AA

INTRODUCCION

La computadoraautomtica debe su derecho a existir, su utilidad, precisamente a su capacidad de efectuar vastos clculos que no pueden realizar los seres humanos. Deseamos que la computadoraefecte lo que nunca podramos hacer nosotros, y la potencia de las maquinas actuales es tal, que inclusive los clculos pequeos, por su tamao, escapan al poderde nuestra imaginacin limitada. Sin embargo debemos organizar el calculo de manera tal que nuestros limitados poderes sean suficientes para asegurar que se establecer el efecto deseado. Esta organizacin incluye la composicin de los programas. Los avances en la tecnologa siempre van parejos con progresos en los lenguajes de programacin y con nuevas ayudas para simplificar el uso del computador, con lo cual un numero mayor de usuarios se beneficia del. Pero la necesidad de hacer programas para resolver problemas especficos quizs nunca desaparecer. CONCEPTO DE PROGRAMACION ESTRUCTURADA EL creciente empleo de los computadores ha conducido a buscar un abaratamiento del desarrollo des software, paralelo a la reduccin del costo del hardware obtenido gracias a los avances tecnolgicos. Los altos costos del mantenimientode las aplicaciones en produccin normal tambin han urgido la necesidad de mejorar la productividad del personalde programacin. En la dcada del sesenta salieron a la luz publica los principiosde lo que ms tarde se llamo Programacin Estructurada, posteriormente se libero el conjunto de las llamadas " Tcnicas para mejoramiento de la productividad en programacin" (en ingles Improved Programming Technologies, abreviado IPTs), siendo la Programacin Estructurada una de ellas. Los programas computarizados pueden ser escritos con un alto grado de estructuracin, lo cual les permite ser mas fcilmente comprensibles en actividades tales como pruebas, mantenimiento y modificacin de los mismos. Mediante la programacin Estructurada todas las bifurcaciones de control de un programa se encuentran estandarizadas, de forma tal que es posible leer la codificacindel mismo desde su inicio hasta su terminacin en forma continua, sin tener que saltar de un lugar a otro del programa siguiendo el rastro de la lgicaestablecida por el programador, como es la situacin habitual con codificaciones desarrolladas bajo otras tcnicas. EN programacin Estructurada los programadores deben profundizar mas que lo usual al proceder realizar el diseooriginal del programa, pero el resultado final es ms fcil de leer y comprender, el objetivode u programador profesional al escribir programas de una manera estructurada, es realizarlos utilizando solamente un numero de bifurcaciones de control estandarizados.

EL resultado de aplicar la sistemtica y disciplinada manera de elaboracin de programas establecida por la Programacin Estructurada es una programacin de alta precisin como nunca antes haba sido lograda. Las pruebas de los programas, desarrollados utilizando este mtodo, se acoplan mas rpidamente y el resultado final con programas que pueden ser ledos, mantenidos y modificados por otros programadores con mucho mayor facilidad. DEFINICIONES Programacin Estructurada es una tcnica en la cual la estructura de un programa, esto es, la interpelacin de sus partes realiza tan claramente como es posible mediante el uso de tres estructuras lgicas de control:a. Secuencia: Sucesin simple de dos o mas operaciones.

b. Seleccin: bifurcacin condicional de una o mas operaciones. c. Interaccin: Repeticin de una operacin mientras se cumple una condicin. Estos tres tipos de estructuras lgicas de control pueden ser combinados para producir programas que manejen cualquier tarea de procesamiento de informacin. Un programa estructurado esta compuesto de segmentos, los cuales puedan estar constituidos por unas pocas instrucciones o por una pagina o ms de codificacin. Cada segmento tiene solamente una entrada y una salida, estos segmentos, asumiendo que no poseen lazos infinitos y no tienen instrucciones que jamas se ejecuten, se denominan programas propios. Cuando varios programas propios se combinan utilizando las tres estructuras bsicas de control mencionadas anteriormente, el resultado es tambin un programa propio. La programacin Estructurada esta basada en el Teorema de la Estructura, el cual establece que cualquier programa propio (un programa con una entrada y una salida exclusivamente) es equivalente a un programa que contiene solamente las estructuras lgicas mencionadas anteriormente. Una caracterstica importante en un programa estructurado es que puede ser ledo en secuencia, desde el comienzo hasta el final sin perder la continuidad de la tarea que cumple el programa, lo contrario de lo que ocurre con otros estilos de programacin. Esto es importante debido a que, es mucho ms fcil comprender completamente el trabajo que realiza una funcin determinada, si todas las instrucciones que influyen en su accin estn fsicamente contiguas y encerradas por un bloque. La facilidad de lectura, de comienzo a fin, es una consecuencia de utilizar solamente tres estructuras de control y de eliminar la instruccin de desvo de flujo de control, excepto en

circunstancias muy especiales tales como la simulacin de una estructura lgica de control en un lenguaje de programacin que no la posea. VENTAJAS POTENCIALES Un programa escrito de acuerdo a estos principios no solamente tendr una estructura, sino tambin una excelente presentacin. Un programa escrito de esta forma tiende a ser mucho ms fcil de comprender que programas escritos en otros estilos. La facilidad de comprensin del contenido de un programa puede facilitar el chequeo de la codificacin y reducir el tiempo de prueba y depuracin de programas. Esto ultimo es cierto parcialmente, debido a que la programacin estructurada concentra los errores en uno de los factores ms generador de fallas en programacin: la lgica. Un programa que es fcil para leer y el cual esta compuesto de segmentos bien definidos tiende a ser simple, rpido y menos expuesto a mantenimiento. Estos beneficios derivan en parte del hecho que, aunque el programa tenga una extensin significativa, en documentacintiende siempre a estar al da, esto no suele suceder con los mtodos convencionales de programacin. La programacin estructurada ofrece estos beneficios, pero no se la debe considerar como una panacea ya que el desarrollo de programas es, principalmente, una tarea de dedicacin, esfuerzo y creatividad. TEOREMA DE LA ESTRUCTURA El teorema de la estructura establece que un programa propio puede ser escrito utilizando solamente las siguientes estructuras lgicas de control: secuencia, seleccin e iteracin. Un programa de define como propio si cumple con los dos requerimientos siguientes: a. Tiene exactamente una entrada y una salida para control del programa. b. Existen caminos seguibles desde la entrada hasta la salida que conducen por cada parte del programa, es decir, no existen lazos infinitos ni instrucciones que no se ejecutan. Las tres estructuras lgicas de control bsicas, se definen de la siguiente forma: Secuencia: es simplemente la formalizacin de la idea de que las instrucciones de un programa son ejecutadas en el mismo orden en que ellas aparecen en el programa. En trminos de diagrama de flujola secuencia es

representada por una funcin despus de la otra, como se muestra a continuacin. A y B pueden ser instrucciones sencillas hasta mdulos completos, lo importante es que sean programas propios, independientemente de su tamao o complejidad interna. Ay B deben ser programas propios en el sentido en que estos fueron definidos, es decir, que posean solamente una entrada y una salida; la combinacin de A seguida por B es tambin un programa propio, ya que esta unin tiene una entrada y una salida exclusivamente, esto se muestra grficamente en la figura siguiente: Donde la caja externa sugiere que la combinacin de A seguida de puede ser tratada como una unidad para propsitos de control. Seleccin: Es la escogencia entre dos accionestomando la decisin en base al resultado de evaluar un predicado. Esta estructura de control es denominada usualmente IFTHENELSE. La representacin en forma de diagrama de flujo de esta estructura lgica de control se muestra a continuacin: F Donde P es predicado y A y B son las dos funciones. Iteracin: Esta estructura lgica es utilizada para que se repita la ejecucin de un conjunto de instrucciones mientras se cumpla una condicin o predicado. Generalmente a esta estructura se le conoce como DOWHILE (hacer mientras) y su representacin se muestra a continuacin: V F donde P es predicado y A es el modulo controlado. Se debe comprender claramente que un rectngulo, que representa un modulo en un diagrama, siempre puede ser sustituido por cualquiera de las tres estructuras de control descritas anteriormente; por ejemplo, veamos el diagrama siguiente: En l, la lnea punteada limita un rectngulo que contiene una estructura, que a su vez controla dos mdulos X y Y. La estructura limitada por la lnea punteada es sustituida por una funcin quedando de la siguiente forma: V F es decir, una funcin sustituye a una estructura lgica de control o viceversa. OTRAS ESTRUCTURAS LOGICAS DE CONTROL

Aunque todos los programas pueden ser escritos utilizando solamente las tres estructuras de control descritas anteriormente, es algunas veces, conveniente utilizar algunas estructuras adicionales; a continuacin se har una descripcin de esas formas lgicas de control diferentes a las ya definidas: El Dountil: La estructuras de iteracin bsica es el DOWHILE, pero existe una estructura que es muy parecida a ella y que aveces es usada, dependiendo del proceso que se este tratando de representar y de las caractersticas apropiadas en el lenguajecon el cual se esta trabajando, esta forma de control es la que se llama DOUNTIL, cuya representacin grfica en forma de diagrama de flujo se muestra a continuacin: V Donde A es el modulo controlado y P el predicado. La diferencia entre el DOWHILE y el DOUNTIL es que en el primero el predicado es probado antes de ejecutar la funcin, si el predicado es falso la funcin no es ejecutada; mientras que en el segundo, el predicado es probado despus de ejecutar la funcin, o sea, que la funcin siempre ser ejecutada al menos una vez, independientemente si el predicado es cierto o falso. La estructura CASE:Algunas veces resulta de gran ayuda, desde el punto de vista de eficiencias y facilidad de lectura de un programa, tener alguna forma de expresar una desviacin del flujo de control hacia mltiples procesos en funcin del resultado de la evaluacin de un predicado; usualmente, a la estructura de control que satisface el requerimiento anterior, se le denomina la estructura CASE. Por ejemplo, si es necesario ejecutar una de cien rutinas diferentes en funcin del valor de un cdigo de 2 dgitos, podemos representar este proceso mediante 100 estructuras IF, sin embargo el sentido comn nos induce a pensar que no hay razn para adherirnos rgidamente a las tres estructuras bsicas de control y en lugar de 100 IF usaramos la estructura CASE. Esta estructura utiliza el valor de una variable para determinar cual, de varias rutinas, ser ejecutada. La representacin grfica de esta estructura de control se muestra a continuacin: En cada lenguaje ser necesario establecer cuales son las instrucciones que, en forma conveniente y eficiente, realizan funciones establecidas por las diferentes estructuras lgicas de control. ETIQUETAS E INSTRUCCIN GOTO: Ocasionalmente se habla de la programacin estructurada como una tcnica de programacin que no utiliza GOTO(instruccin de desvo del flujo de control en forma incondicional); si bien es cierto que un programa bien

estructurado tiene, o bien ninguna o muy pocas instrucciones GOTO, asumiendo que estamos empleando un lenguaje de programacin adecuado, la ausencia de instrucciones GOTO puede ser mal interpretada. Es conveniente que aclaremos este aspecto en este momento. Un programa bien estructurado gana una parte importante de su fcil comprensin del hecho que puede ser ledo en forma secuencial sin desvos en el flujo de control desde una parte del programa a otra. Esta caracterstica es consecuencia de usar exclusivamente las estructuras lgicas de control estndar (el GOTO no es una de ellas), esta secuencialidad o lectura TOPDOWN es beneficiosa debido a que hay un limite definido para muchos detalles que la mente humana puede abarcar de una vez. Se hace relativamente fcil y rpida la comprensin de la tarea que realiza una instruccin si su funcin puede ser entendida en trminos de unas pocas instrucciones mas, fsicamente contiguas y delimitadas. El problema con la instruccin GOTO es que generalmente aleja al programa realizado de los propsitos descritos y en casos extremos puede hacer que un programa sea esencialmente incomprensible. No se requieren esfuerzos especiales para eliminar de un programa los GOTO, los cuales han sido, algunas veces, malentendidos como enemigos de la programacin estructurada, existen buenas y fundadas razones para no querer usarlos pero no se necesita que se realice un trabajoarduo para eliminarlo; ellos no aparecern, en general, cuando se utilicen las estructuras lgicas de control, descritas anteriormente. Naturalmente, si escogemos para programar un lenguaje de computacin que no posea las estructuras lgicas de control fundamentales, entonces, tendremos que simularlas y seguramente ello implicara el uso de la instruccin GOTO; pero este uso puede hacerse en forma cuidadosamente controlada. Existen situaciones poco comunes en las cuales el uso de GOTO puede tener ventajas comparado con otras maneras de expresar un proceso; estos casos son excepcionales y usualmente no ocurren en la programacin realizada diariamente. Se deben analizar cuidadosamente las consecuencias de emplear el GOTO, antes de su uso. SEGMENTACION Para la comprensin de un programa se haga en forma fcil y rpida es necesario que, al revisarlo, uno no tenga que hojear una gran cantidad de paginas para entender cuales el trabajo que realiza. Una regla practica para lograr estos fines es establecer que cada segmento del programa no exceda, en longitud, a una pagina de codificacin, o sea, alrededor de 50 lneas (el significado que se asigna al termino segmento, en este trabajo, no tiene

ninguna relacin con su significado en relacin a las funciones de sistemasoperativos o sistemas maneadores de Bases de Datos). La segmentacin no es solamente particionar un programa en trozos cuya longitud sea de unas 50 lneas; esta tcnica debe cumplir con ciertas caractersticas fundamentales:a. La segmentacin reflejara la divisin del programa en partes que se

relacionen entre s en forma jerrquica, formando una estructura de rbol. Esta organizacin puede ser representada grficamente por un diagrama de procesos, lo que hace ms sencillo comprender la relacin existente entre un segmento y el resto del programa. Adicionalmente, podemos indicar que, el segmento en la cumbre de la estructura jerrquica contendr las funciones de control de mas alto nivel, mientras que los segmentos inferiores en esta organizacin contendrn funciones detalladas. b. Una segmentacin bien diseada deber mostrar, claramente, las relaciones existentes entre las distintas funciones de manera que sea fcil comprender lo que debe hacer el programa y asegurar que efectivamente lo realice. Este hecho, garantizara que los cambios que se efecten a una parte del programa, durante la programacin original o su mantenimiento, no afecten al resto del programa que no ha sufrido cambios.c. En una segmentacin bien realizada la comunicacin entre segmentos

se lleva a cabo de una manera cuidadosamente controlada. Algunos autores recomiendan que los segmentos consistan en procedimientosy la nica comunicacin existente entre ellos sea a travs de una lista de parmetros, esto reduce la oportunidad de que interactuen entre ellos de una manera indeseada e inentendible. IDENTACION El uso de la identacion es importante debido a que, cuando se es consistente en su utilizacin, facilita la lectura del programa al mostrar en una forma grfica las relaciones existentes entre las distintas instrucciones. La identacion puede ser de gran beneficio, tal como se muestra continuacin, donde ambos programas realizan la misma funcin, pero el de la derecha es ms fcil de comprender, verificar y corregir. DIRECTRICES PAR IDENTAR Debe comprenderse claramente que las lneas siguientes solo pretenden presentar unas directrices de identacion, sin pretender que estas sean las nicas reglas a seguir en este proceso, cada centro de procesamiento deber establecer sus propias convenciones, sin que sea motivo de preocupacin la

diferencia respecto a las sugerencias dadas aqu, lo importante es que se establezcan unas normas y se cumplan de manera consistente. Las siguientes son sugerencias para el desarrollo de una poltica de identacion en un centro de procesamiento, la idea fundamental es ayudar a que el lector de un programa le sea fcil comprender las relaciones y las funciones existentes en l:a. En los lenguajes donde se permite el uso de etiquetas, estas deben

colocarse lo ms externas posibles, por ejemplo comenzando en la columna 2, y deben estar separadas por una lnea (siempre que lo permita el lenguaje en uso). b. Se obtiene consistencia si todas las instrucciones se comienzan en una misma columna, por ejemplo en la columna 4 o cualquier otra ubicada a su derecha.c. En los lenguajes en que se hagan declaraciones sobre las variablesa

utilizar, la informacin quedara mas claramente representada si los atributos declarados se alinean en forma vertical. d. El uso de lineas en blanco ayuda a mostrar con mas claridad las relaciones existentes entre distintos tems agrupados en las declaraciones e. Las instrucciones son mucho mas fciles de localizar y de cambiar si no se escribe mas de una instruccin por lnea. f. La vision de control de las estructuras lgicas o de los bloques se clarifica si las instrucciones controladas son idnticas por alguna cantidad constante. Se sugiere una identacion de tres espacios. VENTAJAS DE LA PROGRAMACION ESTRUCTURADA Con la programacin estructurada elaborar programas de computador sigue siendo un albor que demanda esfuerzo, creatividad, habilidad y cuidado. Sin embargo, con este nuevo estilo podemos obtener las siguientes ventajas: 1. - Los programas son ms fciles de entender. Un programa estructurado puede ser ledo en secuencia, de arriba hacia abajo, sin necesidad de estar saltando de un sitio a otro en la lgica, lo cual es tpico de otros estilos de programacin. La estructura del programa es mas clara puesto que las instrucciones estn mas ligadas o relacionadas entre s, por lo que es ms fcil comprender lo que hace cada funcin. 2. Reduccin del esfuerzo en las pruebas. El programa se puede tener listo para produccin normal en un tiempo menor del tradicional; por otro lado, el seguimiento de las fallas("debugging") se facilita debido a la lgica ms visible, de tal forma que los errores se pueden detectar y corregir mas fcilmente.

3. Reduccin de los costos de mantenimiento. 4. Programas ms sencillos y ms rpidos 5. Aumento de la productividad del programador 6. Se facilita la utilizacin de las otras tcnicas para el mejoramiento de la productividad en programacin 7. Los programas quedan mejor documentados internamente.

La programacin estructurada es una teoria de programacin que consiste en construir programas de facil comprension. La programacin estructurada es especialmente util, cuando se necesitan realizar correciones o modificaciones despues de haber concluido un programa o aplicacion. Al haberse utilizado la programacin estructurada, es mucho ms sencillo entender la codificacion del programa, que se habra hecho en diferentes secciones. La programacin estructurada se basa en una metodologi de desarrollo de programas llamda refinamiento sucesivos: Se plantea una operacion como un todo y se divide en segmentos ms sencillos o de menor complejidad. Una vez terminado todos los segmentos del programa, se procede a unificar las aplicaciones realizadas por el pool de programadores. Si se ha utilizado adecuadamente la programacin estructurada, esta integracion debe ser sencilla y no presentar problemas al integrar la misma , y de presentar algun problema, sera rapidamente detectable para su correccion. La representacion grafica de la programacin estructurada se realiza a traves de diagramas de flujo o flow chart, el cual representa el programa con sus entradas, procesos y salidas. La programacin estructurada propone segregar los procesos en estructuras lo ms simple posibles, las cuales se conocen como secuencia, seleccion e interaccion. Ellas estan disponibles en todos los lenguajes modernos de programacin imperativa en forma de sentencias. Combinando esquemas sencillos se pueden llegar a construir sistemas amplios y complejos pero de facil entendimiento.

rbol (programacin)En ciencias de la computacin, un rbol es una estructura de datos comnmente usada que emula la estructura de un rbol con un conjunto de nodos conectados. Cada nodo tiene cero o ms nodos hijos, que estn por debajo de l (en ciencias de la computacin, al contrario que en la naturaleza, los rboles crecen hacia abajo, no hacia arriba), El nodo del cual uno nodo es hijo es llamado su nodo padre. Un hijo tiene como mximo un padre; un nodo sin padre es llamado nodo raz (o simplemente raz). Los nodos sin hijos son llamados hojas. En teora de grafos, un rbol es un grafo conectado acclico. Un rbol con raz es como un grafo con un vrtice seleccionado como la raz. En ese caso, slo dos vrtices conectados con el lado heredan una relacin de padre-hijo. Un grafo acclico con mltiples componentes conectados o un conjunto de rboles con raz se llama bosque. En una estructura de datos en rbol, no hay distincin entre los diferentes hijos de un nodo, ninguno es el primer hijo o el ltimo hijo. Un rbol en el que se distinguen los hijos por su orden se llama rbol ordenado, y las estructuras de datos construidas en ellos se llaman '''estructuras de datos de rboles ordenados''' Un rbol Binario es un tipo de arbol ordenado, y hay una relacion uno a uno entre los arboles binarios y los arboles ordenados generales Hay muchas formas diferentes de representar un arbol, representaciones comunes muestran los nodos como varibles alocados en el moticulo como punterios a sus hijos, sus padres. o juntos, o como elementos de un array, con relaciones entre determinadas posiciones en el arreglo (ej., heap binario) Ir entre los elementos de un arbol, por medio de las conexiones entre padres e hijos, es llamado '''Caminar por el arbol''', y la accion es '''caminata''' por el arbol. A menudo, una operacion puede ser realizada cuando un apuntador arriva a un nodo en particular. Una caminata donde las operaciones suceden a un nodo antes de suceder a sus hijos es llamada una '''primera caminata ancha'''; una caminata donde los hijos son operados antes de que el padre sea llamado se llama '''primera caminar profunda '''. Vea tambien rbol Binario para una discucion de pre-orden, en-orden y post-orden transversal

Operaciones comunes en arboles son: * Enumerar todos los elementos * Buscar un elemeto * Aadir un nuevo item en una cierta posicion del arbol * Borrar un elemento * Remover una seccion completa de un arbol (llamado '''podar'''); * Aadir una seccion completa a un arbol (llamado '''injertar'''); * Encontrar la raiz de cualquier nodo Usos comunes de los arboles son: * Manipular datos jerarquicos * Para hacer la informacion facilmente buscable (ver tambien: algoritmos de busqueda en rboles ) * Manipular listas ordenadas de datos. == Ejemplos == * http://www.aisee.com/graphs * SDXF == Terminos Relacionados == * Particion de espacion binario * heap * rbol(Teoria de grafos) * Algoritmos de busqueda en rboles * estructura de un rbol * rbol exponencial Arbol (programacion) Arbol (programacion)Arbol (programacion)

5 Librera Estndar1 SinopsisC++ no llega al nivel de simplicidad de su antecesor C, pero al igual que aqul, tampoco dispone de utilidades o funciones para entrada o salida implementadas en el propio lenguaje, de modo que estas y otras muchas, como manejo de cadenas de caracteres (strings), manejo de ficheros, funciones matemticas Etc. son implementadas en forma de libreras externas. Una librera es un conjunto de recursos (algoritmos) prefabricados, que pueden ser utilizados por el programador para realizar determinadas operaciones ( 1.4.4a). Las declaraciones de

las funciones (prototipos 4.4.1) utilizadas en estas libreras, junto con algunas macros y constantes predefinidas que facilitan su utilizacin, se agrupan en ficheros de nombres conocidos que suelen encontrarse en sitios predefinidos. Por ejemplo, en los sistemas UNIX, en /usr/include. Estos ficheros se suelen llamar "de cabecera", porque es tradicin utilizar las primeras lneas del programa para poner las directivas #include ( en el fuente durante la fase de preprocesado ( 1.4). 4.9.10g) que los incluir

2 Clases de librerasLos compiladores C++ incluyen un amplio repertorio de clases, funciones y macros que permiten realizar una amplia variedad de tareas, incluyendo entradas/salidas de bajo y alto nivel; manipulacin de cadenas alfanumricas y ficheros; control de procesos (incluyendo multiproceso); manejo de memoria; clculos matemticos y un largo etctera. Este repertorio de recursos es denominado colectivamente como "Rutinas de librera"; "Libreras de ejecucin" RTL ("Runtime Librarys") o simplemente "Libreras". Puede decirse que el lenguaje aislado (tal cual) no tiene prcticamente ninguna utilidad sin la concurrencia de estas utilidades. El Estndar C++ las clasifica segn su utilidad:

Soporte del lenguaje [7] Diagnstico Utilidades generales Cadenas alfanumricas ("Strings") Localizacin Contenedores Iteradores Algoritmos Clculo numrico Entrada/Salida

2.1 Librera Estndar C++Para poner un poco de orden, el Estndar C++ define la denominada Librera Estndar [3] que debe acompaar a cada implementacin del compilador que se adhiera al estndar. Es decir: la norma determina cuales son, como se llaman y como se utiliza este conjunto de algoritmos que deben acompaar (como mnimo) a cada implementacin del compilador que quiera llamarse

"Estndar". La ltima versin, ISO/IEC 14882 del ao 1998, especifica que se compone de 32 ficheros de cabecera de nombres fijos y conocidos agrupados segn la funcionalidad de los algoritmos. Son los siguientes: Ficheros Parte de la STL que describe los algoritmos ( Parte de la STL relativa a contenedores tipo bitset ( booleanos. Parte de la librera numrica de la STL relativa a los complejos ( ). 5.1.1e1). Set de valores 5.1.3) Funcionalidad/funciones

Parte de la STL relativa a contenedores tipo deque; un tipo de colas: "Doubleended-queue" ( 5.1.1c3).

Parte de la librera de diagnstico relativa al manejo de excepciones ( Parte de la STL relativa a Objetos-funcin ( Manipuladores. Supreclases para manejo de flujos de E/S. Contiene declaraciones adelantadas de todas las plantillas de flujos y sus typedefs estndar. Por ejemplo ostream. Parte del a STL que contiene los algoritmos estndar de E/S. Algoritmos estndar de flujos de entrada. 4.9.18f) Flujos hacia/desde ficheros. 1.6)

Parte de la STL relacionada con iteradores ( 5.1.2), un tipo de puntero que permite utilizar los algoritmos de la Librera con las estructuras de datos representadas por los contenedores. Descripcin de propiedades dependientes de la implementacin ( afectan a los tipos fundamentales. Parte de la STL relativa a contenedores tipo list ( enlazadas ( Parte de la STL relativa a la internacionalizacin ( 5.2). 1.8) 5.1.1c4); listas doblemente 1.2.1) que

Parte de la STL relativa a contenedores tipo map ( Utilidades relativas a la gestin de memoria, incluyendo asignadores ( punteros inteligentes (auto_ptr). Manejo de memoria dinmica ( Parte de la librera numrica de la STL relativa a operaciones numricas ( Parte de la STL relativa a contenedores tipo queue ( objetos ( Parte de la STL relativa a contenedores tipo set ( Parte de la STL relativa a contenedores tipo stack ( ( 1.8). 5.1.1c5); pilas de objetos Flujos hacia/desde cadenas alfanumricas. 5.1.1e2). 1.8). 5.1.1d1); colas de Algoritmos estndar para los flujos de salida. ). 1.3.2) 5.1.5) y 5.1.1e4).

Parte de la STL relativa a las clases de las que derivan los objetos lanzados por las excepciones ocasionadas en los algoritmos de la propia STL y otras expresiones. Estas clases son utilizadas para reportar errores detectados durante runtime. Los usuarios tambin pueden utilizar excepciones para reportar errores en sus propios programas ( 1.6.1a).

Parte de la STL relativa al Almacenamiento de flujos de E/S ("Stream buffers"). Define los tipos que controlan la capa de transporte ( Parte de la STL relativa a contenedores tipo string ( ); una generalizacin de las cadenas alfanumricas para albergar cadenas de objetos. Mecanismo de identificacin de tipos en tiempo de ejecucin ( 4.9.14). 5.3.2f).

Parte de la STL que contiene elementos auxiliares como operadores y pares (pairs). Parte de la librera numrica de la STL relativa a manejo de matrices numricas () Parte de la STL relativa a los contenedores tipo vector; una generalizacin de

las matrices unidimensionales C/C++ (

5.1.1c1)

Es digno de mencin que aunque generalmente las libreras no aportan ninguna caracterstica al lenguaje (se supone que son utilidades auxiliares que no forman parte del lenguaje propiamente dicho), una pequea porcin de la Librera Estndar C++ s aporta caractersticas que se consideran pertenecientes a este, de forma que deben estar presentes los ficheros de cabecera correspondientes si se desea usarlas. En concreto se refieren a los siguientes elementos:

Operadores new, new[], delete y delete[] (

4.9.20).

Clase type_info que corresponde al mecanismo RTTI de identificacin de tipos en tiempo de ejecucin representado por el operador typeid ( 4.9.14).

Rutinas de inicio y terminacin (

1.5). 1.6.1a)

Las excepciones estndar lanzadas por los algoritmos anteriores (

2.2 Librera CAdems de otras nuevas, cuyo diseo e importancia cambian drsticamente la filosofa del lenguaje, C++ incluye prcticamente la totalidad de funciones de la primitiva librera estndar C. A esta librera, mantenida por compatibilidad, la denominamos Librera clsica ( 5.5).

3 ComponentesAl referirnos a las libreras C++ utilizamos la terminologa siguiente:

RTL Conjunto de libreras que acompaan a un compilador ("Runtime Library"), sean o no estndar. Librera Estndar. Conjunto de libreras cuyo contenido est definido por el Estndar C++ (abreviadamente LE) Libera clsica. Parte de la Librera Estndar correspondiente al C clsico. STL ("Standard Templete Library"). Parte de la LE genuina de C++ (que no es heredada de C) y que responde a la forma "++" de hacer las cosas.

La calidad de un compilador C++ viene determinada en gran medida por la calidad y cantidad de su RTL; por su grado de adherencia al Estndar [6] y por el grado de soporte que proporciona para la plataforma concreta a que se destina. Nota: en lo que concierne a la programacin para MS Windows (las referencias a la plataforma Wintel surgen de forma constante e inevitable), los compiladores Borland C++ y MS Visual C++ son quizs los ms conocidos y utilizados. El primero incluye una completa librera denominada VCL (Visual Component Library conocida como MFC (Microsoft Foundation Classes 4.11.8b). La del segundo es 1.7.2).

Linux dispone de su propio compilador: GNU Cpp, que comenz siendo un compilador C y ha evolucionado a un producto que es en realidad un superconjunto de compiladores. No

solo puede compilar cdigo C y C++; tambin otros lenguajes como Ada o Fortran; de forma que es comn referirse a ellos como GCC ("GNU Compiler Collection"). La buena noticia es que existen versiones de este compilador para plataformas Windows, de forma que incluso en este ambiente "Propietario" pueden realizarse desarrollos utilizando herramientas "Open source" (ver recuadro en 1.4.0a1).

A grandes rasgos la librera Estndar C++ comprende los siguientes mdulos:

La denominada Librera Estndar de Plantillas ( ("Standard Templete Library").

5.1), abreviadamente STL

Librera numrica. Parte de la STL que contiene algoritmos especialmenteconcebidos para computacin numrica. Por ejemplo, una clase valarray optimizada para matrices numricas y una clase complex para manejo y representacin estandarizada de nmeros complejos (en realidad una plantilla con especializaciones para los tipos float, double y long double).

Utilidades. Parte de la STL dedicada a elementos auxiliares tales comoadaptadores y la clase auto_ptr.

Unas utilidades de entrada/salida de flujos, denominadas genricamente iostreams ( 5.3).

Una utilidad locale para manejo de localismos [4] (

5.2).

Una clase string para manejo estandarizado de cadenas de caracteres. En realidad es una instanciacin (especializacin) de la plantilla basic_string para cadenas de caracteres. Un esquema para describir de modo uniforme el entorno de ejecucin mediante la utilizacin de una clase estndar denominada numeric_limits y especializacin para cada uno de los tipos de datos fundamentales. Utilidades para manejo de memoria ( 5.1.5).

Soporte para utilizacin de juegos de caracteres y signos de diversos idiomas. Utilidades de diagnstico y manejo de errores. Incluyen manejo de excepciones ( 1.6) y la macro assert ( 1.4.5).

4 FuncionalidadSi atendemos a su funcionalidad, las utilidades ofrecidas por la Librera Estndar pueden agruparse en:

Clasificacin: Clasifican caracteres ASCII, como letras, caracteres de control (no imprimibles), Maysculas/minsculas etc. Se definen en la cabecera . Entradas/Salidas de Consola: Estas son las denominadas entrada/salida estndar. Por defecto se refieren al teclado y a la pantalla (no pueden utilizarse directamente en aplicaciones de interfaz grfica).

Conversin: Convierten caracteres y cadenas de caracteres desde formato alfabtico a numrico de diversos tipos (float, int, long). Tambin realizan la conversin inversa: de formatos numricos a representaciones alfabticas y de maysculas a minsculas y viceversa. Diagnstico: Son rutinas destinadas a comprobaciones; a descubrir y corregir posibles errores. Directorio: Rutinas para manejo de directorios y sus direcciones (path names). En linea (Inline): Rutinas para versiones inline de funciones. El compilador genera el cdigo correspondiente para las versiones inline cuando se utiliza #pragma intrinsic o si se solicita optimizacin al compilador (optimizacin de tiempo de ejecucin). Entrada/Salida. Son rutinas que proporcionan manejo de flujos y operaciones de Entrada/Salida a bajo nivel (de Sistema Operativo). Manipulacin. Manejo de cadenas y bloques de memoria: copiar, comparar, convertir y buscar. Matemticas: Para realizar clculos matemticos. De Memoria: Proporcionan asignacin de memoria dinmica. Miscelnea. Se agrupan aqu rutinas varias, como las que posibilitan saltos (goto) no locales y las que manejan diferencias de tipo cultural o de lenguaje. Por ejemplo representacin de nmeros, de moneda, formatos de fecha y hora, clasificacin de tipo alfabtico, etc. Control de proceso. Rutinas que permiten invocar y terminar nuevos procesos desde otra rutina. Fecha y hora. Incluyen rutinas para conversin y manipulacin de variables de medida del tiempo (fecha y hora). Argumentos variables. Rutinas utilizadas cuando se usan listas variables de argumentos, como en los casos de printf(), vscanf(), etc.

5 UtilizacinLa utilizacin de la Librera Estndar C++ requiere de dos tipos de condiciones que podramos describir como formales y conceptuales. 5.1 En cuanto a las primeras (condiciones formales) y habida cuenta que las utilidades aparecen en forma de funciones, resulta evidente que su utilizacin exige incluirlas en nuestro programa. Para ello se necesitan tres pasos (en realidad las exigencias son las mismas que con cualquier otra funcin, la diferencia estriba en la forma en que se realizan los pasos b y c): a: Incluir en el cdigo fuente las invocaciones a las funciones que estamos utilizando. Ejemplo: printf("Esto es una llamada a la funcin \"printf\" de librera\n"); b: Incluir en el cdigo fuente los prototipos de dichas funciones. Puesto que los prototipos ya estn incluidos en los ficheros estndar de cabecera, hay que indicar al compilador que los incluya [2]. Esto se realiza poniendo en nuestro fuente (normalmente al principio) una directiva de preprocesado #include ( 4.9.10g) que seala el fichero de cabecera que se debe aadir. Por ejemplo, si el manual indica que la funcin printf est definida en el fichero de cabecera stdio.h ponemos en nuestro cdigo:

#include c: Incluir en el fuente las definiciones de las funciones utilizadas. Como alternativa se puede indicar al compilador que tales definiciones estn en ficheros compilados previamente. En este ltimo caso se dice que las definiciones de las funciones estn en libreras ( 1.4) de las que existen dos tipos:estticas (.LIB, .OBJ y .BPI) y dinmicas (.DLL). Toda la informacin que necesita el compilador est contenida en los ficheros de cabecera, por lo que las operaciones correspondientes son realizadas de forma automtica; con la sola condicin de que los ficheros y libreras correspondientes sean accesibles al enlazador.

No olvidar que la entidades de la Librera Estndar C++ (que no estn en ficheros de cabecera .h), se han definido en un espacio de nombres denominado std, por lo que es preciso referirse a l especficamente cuando se quieran utilizar estos recursos ( 4.1.11c2).

5.2 Respecto a las que hemos denominado "condiciones conceptuales", damos por sentado que la utilizacin de algoritmos de la Librera exige conocerlos. Pero debemos advertir que existe una gran diferencia entre las rutinas de la que hemos denominado librera clsica y los recursos de la nueva Librera Estndar de Plantillas STL. 5.2a En general los algoritmos contenidos en la librera clsica realizan tareas muy sencillas bajo la forma de funciones que, con un cierto nmero de argumentos, realizan la tarea encomendada. A veces devolviendo un objeto (que puede ser una estructura). Su utilizacin exige poco ms que repasar esta coleccin de funciones (209 en la ltima versin del Estndar) hasta encontrar la que mejor se ajusta a nuestras necesidades. Para esto lo mejor es recurrir a la clasificacin temtica ofrecida en la documentacin que acompaa a los compiladores antes que a la lista alfabtica de las mismas. A continuacin estudiamos atentamente su prototipo y la explicacin de funcionamiento que acompaa el manual (eventualmente incluso con un ejemplo) y ya estamos listos para utilizarla. En el peor de los casos suelen bastar un par de pruebas hasta que conseguimos ajustar los argumentos de forma que se consiga el resultado esperado. Nota: a ttulo de ejemplo, el fichero BCB5RTL.HLP, que contiene la "C Runtime Library reference" (nombre con que aparece la Librera Clsica en la documentacin de Borland), contiene dos secciones; la primera, denominada "Categorical Routines and Types Listing", contiene la clasificacin temtica; la segunda, denominada "Alphabetical Routines and Types Listing", contiene la relacin alfabtica [5].

Como ltima recomendacin al respecto, sobre todo si pensamos que nuestro programa tendr una larga vida y/o pensamos portarlo a otras plataformas, aconsejara echar un vistazo a la seccin de "compatibilidad" que acompaa a la descripcin de cada funcin en la documentacin de la mayora de compiladores. Suele ocurrir que el compilador ofrezca muchas ms funciones que las estrictamente Estndar C++, y que estas no estn claramente separadas del resto, de forma que es posible que elijamos una funcin que resuelve nuestro problema pero no es portable, en cuyo caso aconsejara evitarlas dentro de lo posible. Nota: como ejemplo escogido al azar, la funcin max(), que aparece en primer lugar en la clasificacin temtica de la documentacin Borland C (Runtime Library reference: "Categorical Routines and Types Listing"), es una funcin ofrecida por este compilador

para el entorno Windows-32 pero no es portable a UNIX ni tampoco pertenece a los estndares C o C++.

5.2b Para todo el que no se haya asomado antes a la programacin genrica, la utilizacin de la nueva Librera de Plantillas (STL) exige la asimilacin de un nuevo paradigma; una nueva forma de pensar que, si se tiene experiencia en programacin tradicional, exige incluso un "cambio de chip", ya que estas herramientas conforman un mundo enteramente nuevo y singular. Con independencia de las explicaciones ms detalladas que incluimos en el siguiente captulo ( 5.1), adelantemos aqu que la STL ofrece un conjunto de recursos flexible, potente y altamente optimizado para resolver una gran variedad de situaciones de programacin. Pero esta versatilidad y potencia tributan un precio: su alto grado de parametrizacin supone algo ms que utilizar herramientas aisladas. Es necesario saber ensamblar entre s los recursos disponibles, que no trabajan aisladamente y que son bsicamente de tres tipos: contenedores, iteradores y algoritmos. El resultado es que el proceso de utilizar la STL es algo ms complicado que la simple bsqueda de una funcin que resuelva nuestras necesidades; que la curva de aprendizaje es ciertamente ms ardua que en el caso de la librera clsica, y que los conceptos involucrados son ms abstractos y requieren un conocimiento ms extenso de sus fundamentos para utilizarlos. Desde luego, la descripcin detallada de todos sus elementos exige un libro completo, y de hecho son muchos los que se han publicado con el objeto exclusivo de describir la STL y/o sus tcnicas de uso. En compensacin, las contrapartidas obtenidas justifican sin duda el esfuerzo. El programador puede concentrarse ms en el problema que en los detalles de su implementacin en el fuente, se incremente la productividad y se gana en claridad conceptual.

6 Funciones y macrosHay que sealar que algunas funciones pueden venir implementadas de dos formas: como macro y como funcin. Por ejemplo, la funcin isalnum, contenida en . Esto significa que adems de estar implementada como una funcin en la correspondiente librera (que se utiliza con los argumentos sealados en el manual), est definida como una macro de preprocesado en , de forma que salvo indicacin contraria al compilador, el preprocesador transforma la llamada del programador en otra serie de sentencias equivalentes que utilizan los mismos argumentos. El resultado es que en el cdigo resultante, que luego pasa al compilador y al enlazador, no existe nada parecido a una llamada a una funcin isalnum (tcnicamente el proceso es una sustitucin inline de la funcin de librera, 4.4.6b).

Para evitar que esto ocurra y por consiguiente que la llamada a islanum nunca llegue a producirse, basta con indefinir la correspondiente directiva. Esto se hace incluyendo al principio del cdigo, y debajo de la lnea #include , una lnea de preprocesado adecuada, en este caso: #undef isalnum, con lo que el #define del preprocesador quedar sin efecto, con el resultado de que todas las invocaciones a isalnum de nuestro cdigo sern respetadas por el preprocesador. Ms tarde el enlazador cargar el cdigo de isalnum (que extrae de la librera) con el resto de nuestro programa, y colocar en cada punto de nuestro cdigo donde aparezca una invocacin a isalnum, un salto a la direccin adecuada. En estos casos, el resultado es el mismo en ambas modalidades: como macro (por defecto) o como funcin de librera. La eleccin de una u otra es cuestin de optimizacin. Para tomar una decisin es necesario comprobar y valorar dos aspectos: El tamao del ejecutable que resulta en uno y otro caso. Posiblemente mayor si se utiliza la funcin muchas veces y se adopta la macro.

La velocidad de ejecucin. Posiblemente mayor si se utiliza la funcin muchas veces (en bucles muy largos) y se utiliza la macro [1].

Inicio. [1] El cronometraje se puede realizar sencillamente a mano, con un cronmetro, o colocando marcadores en sitios estratgicos del programa que, utilizando el reloj del sistema, muestren los tiempos consumidos. Ver ejemplo ( 9.1).

[2] Estrictamente hablando estas operaciones son realizadas por el preprocesador, el analizador sintctico, el compilador o el enlazador segn los casos. Nos referimos a todos estos mdulos como "compilador" en un sentido genrico, pues desde un punto de vista prctico, en algunos casos (como el copilador C++Builder de Borland), solo hay que realizar una llamada al "compilador" y este se encarga de la totalidad del proceso ( 1.4.0).

[3] En lo sucesivo la designaremos as, con maysculas iniciales, para simbolizar que es una librera nica y perfectamente especificada. [4] "Locales" son conjuntos de datos que indican preferencias culturales. Por ejemplo: formas de representar la hora, las fechas, el "punto" decimal, etc. La utilidad locale de la Librera Estndar es la forma que tiene C++ de dar soporte a la internacionalizacin de los programas. [5] Aconsejo descargar la documentacin C++ del "Site" de Borland aunque se trabaje con otro compilador. Adems de gratuita, es muy completa, bien estructurada y con abundantes ejemplos. [6] Posiblemente esta afirmacin puede resultarle sorprendente a ms de uno. En informtica y en muchos aspectos de la vida, las leyes y normas suelen ir muy por detrs de mundo y la vida cotidianos. Es frecuente que las estandarizaciones y normativas se limiten a consagrar "oficialmente" hbitos y costumbres largamente consagrados ya por la prctica. Sin embargo, en el caso del C++ los acontecimientos se han sucedido a veces de forma contraria. En el Comit de Estandarizacin participan representantes de la industria (del software) junto con miembros de laboratorios de investigacin y desarrollo. Tericos de los lenguajes; estudiosos de las teoras de computacin, de compiladores, Etc. que han tenido tanto o ms peso que aquellos. El resultado es que en algunos casos el Estndar a introducido y aprobado herramientas que no estaban suficientemente probadas o generalizadas en la prctica. Construcciones tericas que ni siguiera eran soportadas por la mayora de compiladores disponibles comercialmente. Esto, que incluso ha originado comentarios negativos por parte de algunos miembros del Comit, ha motivado que incluso algn tiempo despus de publicado el Estndar, muchos compiladores no hubiesen implementado an todas sus caractersticas. [7] Este primer grupo constituye un caso especial: En principio una librera es algo que ayuda a realizar determinadas operaciones con ms facilidad que la ofrecida por los mtodos implementados en el lenguaje, o que permite hacer algo que no puede hacerse con las herramientas definidas en l, pero que en rigor no forma parte del lenguaje en s mismo. Sin embargo C++ ha sido dotado de ciertas extensiones que se han incluido en forma de libreras (denominadas "de soporte" parte del lenguaje. 1.5.2). De forma que en cierto sentido dichas libreras s forman

Libreras C/C++En esta pgina se incluye una seleccin de libreras de apoyo a la programacin en C/C++. Si piensa abordar algn desarrollo medianamente importante y cree que no son suficientes las herramientas que proporciona el lenguaje, antes de reinventar la rueda, es aconsejable que empiece a buscar por ah (o por aqu). Es ms que posible que eso que busca ya est inventado.

BeeCrypt Librera criptogrfica

www.virtualunlimited.com

BeeCrypt es una librera criptogrfica de cdigo abierto que proporciona una encriptacin rpida y potente. Puede ser utilizada en proyectos de cdigo abierto o comerciales. Incluye generadores aleatorios; bloques de cifras; funcin hash (funcin unilateral inconvertible), y mensaje de autentificacin de cdigos. Est optimizado para C e implementacin en muchos algoritmos, incluyendo Blowfish, Diffie-Hellman, ElGamal, y SHA-1. Blitz++ www.oonumerics.org/blitz/

Blitz++ es una librera "Open source" destinada a utilizar los beneficios del C++ y de la POO en la computacin cientfica; principalmente clculo matricial & vectorial/tensorial. Bsicamente se trata de aprovechar, entre otras, las ventajas del encapsulamiento; herencia; polimorfismo; sobrecarga de operadores y programacin genrica (plantillas), pero sin los inconvenientes que hasta ahora imponan los lenguajes destinados tradicionalmente a estos menesteres (como Fortran) en lo que se refiere a la velocidad. Esta librera est auspiciada por la oonumerics.org (Scientific Computing in Object-Oriented Languages). Boost www.boost.org/

Lo primero que habra que destacar de estas libreras es su alta calidad tcnica. Adems son gratuitas; pueden ser utilizadas libremente en cualquier proyecto, e incluyen cdigo fuente y abundante documentacin. En realidad las Boost son un conjunto heterogneo de utilidades que tienen su origen en una iniciativa de algunos miembros del comit de estandarizacin del C++, aunque posteriormente han recibido aportaciones de mltiples autores. Comprenden un extenso catlogo que incluye los siguientes tpicos: String and text processing; Containers; Iterators; Algorithms; Function Objects and higher-order programming; Generic Programming; Template Metaprogramming; Preprocessor Metaprogramming; Concurrent Programming; Math and numerics; Correctness and testing; Data structures; Input/Output; Inter-language support; Memory; Parsing; Miscellaneous. El proceso de seleccin para que una librera sea admitida, es pblico y bastante estricto, lo que garantiza que el mero hecho aparecer en la coleccin es un marchamo de la calidad y nivel tcnico a que antes aludamos. En realidad esta coleccin es una especie de antesala oficiosa del Estndar, ya que algunas de sus componentes son analizadas y evaluadas por los miembros del comit como candidatas a ser incluidas en futuras revisiones del estndar C++. Correccin de errores ECC http://eccpage.com

Esta pgina est dedicada a programas escritos en C/C++ y MATLAB que implementan rutinas de codificacin y decodificacin de control de errores (ECC Error-Correction-Codes) muy populares, tales como Reed-Solomon, BCH, the binary Golay, binary Goppa, decodificador Viterbi, y otros. C++ portable components www.appinf.com/

Libreras C++ que se integran perfectamente con la Librera Estndar, cubriendo aspectos no contempladas por esta. Estn disponibles para casi cualquier plataforma que disponga de un compilador C++ Estndar, incluyendo MS Visual C++; GCC para Mac y Linux; Sun ONE Studio; Compaq C++ y HP ANSI C++. Entre otros, proporcionan los siguientes servicios: una librera NET que ofrece soporte para protocolos y servidores HTTP, FTP, SMTP y otros; una librera XML que proporciona un analizador/escritor XML, e interfaz para las especificaciones DOM (Document Object Model); una librera de utilidades con clases para procesar ficheros de configuracin y comandos del shell (command line arguments), adems de un marco de trabajo para crear aplicaciones servidor implementadas como demonios Unix o servicios Windows (segn el caso). Finalmente, una librera DBlite, que ofrece soporte para una database SQL, de forma que pueden manejarse cmodamente datos de cualquier tipo sin necesidad de utilizar databases externas. En el diseo ha primado la consideracin de hacerla "ligera", de forma que es adecuada para el desarrollo de aplicaciones C++ en todo tipo de sistemas, especialmente dispositivos mviles y "embebidos". Est disponible en dos modelos de licencia: Open Source y comercial. DLsoft www.dlsoft.com/

Si necesita aadir soporte para cdigos de barras en sus programas C++, este fabricante ofrece una extensa seleccin de libreras que pueden ser tiles. Dispone de versiones VCL desarrolladas en Pascal (clases derivadas de TImage) que pueden ser utilizadas con el compilador Borland C/C++, y de versiones para MS Visual C++. Firebird www.firebirdsql.org/

Firebird es una base de datos relacional RDBMS ("Relational Data Base Management System") multiplataforma, que ofrece la mayora de las caractersticas del Estndar ANSI SQL junto con un elevado rendimiento, excelente concurrencia, y un potente lenguaje que permite almacenar procedimientos y disparadores ("triggers"). Ofrece soporte nativo para Linux; Windows; una gran variedad de plataformas Unix; Solaris, y MacOS. Soporta distintos mtodos de conexin, incluyendo componentes nativos para C/C++ [2]. Est exento de cualquier exigencia de registro, licencia, o derechos. Los desarrollos que lo utilicen pueden ser distribuidos libremente incluso si se trata de productos comerciales. Est disponible en tres versiones: SuperServer, Classic y Embedded. La primera es la ms usual; SuperServer utiliza un solo mdulo para atender todas las conexiones. Este mdulo comparte su memoria entre los clientes de la database, utilizando un hilo ("thread") para manejar cada conexin. La versin Classic del servidor es apropiada para mquinas dotadas de SMP ("Symmetric Multyprocessing"). Crea un nuevo proceso para cada conexin que debe atender. Finalmente, la versin Embedded consiste en una librera dinmica (.DLL) de 1.5 MB, que contiene la funcionalidad de un servidor. Es apropiada para aplicaciones que requieran la capacidad de una RDBMS sin las complicaciones de instalacin y mantenimiento de un servidor (una situacin anloga a la ofrecida por SQLite ).

En realidad, Firebird arrastra una larga historia, y experiencia con las RDBs, de ms de 20 aos. La tecnologa subyacente ha sido explotada desde 1984 bajo distintos nombres. El ltimo Interbase 6.0, cuando en Agosto del 2000, su cdigo fue distribuido como abierto ("Open Source") por Borland. IT++ http://itpp.sourceforge.net/

IT++ es una librera C++ de funciones y clases para proceso de seales, incluyendo proceso del habla y comunicaciones, que tiene su origen en el Departamento de Teora de la Informacin de la Universidad Tecnolgica de Chalmers en Suecia y que se distribuye bajo la

licencia GNU GPL. Ha sido desarrollada por investigadores y estudiosos de distintas universidades. Tambin est siendo desarrollada como parte de NEWCOM (European Network of Excellence in Wireless Communications). Est formada alrededor de un conjunto de clases genricas de vectores y matrices, junto con gran nmero de funciones para su manejo, que la hacen similar al popular Matlab. Para aumentar su seguridad, funcionalidad y velocidad, hace uso de distintas libreras "open-source". En particular BLAS, CBLAS, LAPACK y FFTW. Puede funcionar bajo los sistemas GNU/Linux, Sun Solaris, Mac OS X y Microsoft Windows (en este ltimo, a travs de Cygwin, MinGW/MSYS, o MS Visual C++ .NET). Jungo. WinDriver www.jungo.com

Se trata de una herramienta que simplifica el proceso de escribir drivers para diversos Sistemas Operativos, permitiendo utilizar los compiladores C++ ms frecuentes (MS Visual C++, Borland, GCC y otros). Entre los SO soportados estn: Windows 9x, NT/NT Embedded, 2000, Windows CE, Linux, Solaris, OS/2 y VxWorks. Lateral ARTS Simkin www.simkin.co.uk

Simkin es un lenguaje de script que puede trabajar con C++, tambin con Java y XML. Se trata de un producto de cdigo abierto (open source). La sintaxis es tan sencilla como la de JavaScript. La versin para Visual C++ es una librera de 200 KB. Simkin puede ser utilizado en multitud de formas, entre ellas: Creacin y manipulacin de databases; sistemas de simulacin; construir test de funcionamiento mediante scripts; incluir en una aplicacin la funcionalidad de una "macro", etc. LiDIA www.informatik.tu-darmstadt.de

LiDIA es una librera para computacin numrica de la Universidad de Tecnologa de Darmstadt, segn la descripcin original: "LiDIA is a C++ library for computational number theory which provides a collection of highly optimized implementations of various multiprecision data types and time-intensive algorithms. Su distribucin incluye el cdigo fuente y es libre para usos no comerciales. Adems de las mquinas Sparc y Alpha, LiDIA puede utilizarse en los entornos ix86/Linux GNU. En particular con las versiones del compilador g++ 3.x y posteriores. Literal Arts. Lenguaje embebible de script www.simkin.co.uk

Simking es un lenguaje de script interpretado que trabaja con C++ (existe una versin para Java), y se distribuye bajo la licencia GNU "Open source". Los scripts pueden ser alojados en ficheros de datos, incluyendo XML o en bases de datos. Puede utilizarse para personalizar aplicaciones C++ mediante scripts que son interpretados por clases C++ que se proporcionan con el lenguaje. Estas clases proporcionan una interfaz directa para escripts alojados en documentos XML o en rboles. MarshallSoft. Libreras de comunicaciones www.marshallsoft.com

Libreras de comunicaciones incluyendo protocolos IP para Internet y para comunicacin serie, tanto para entornos Windows como DOS. La empresa ofrece los siguientes paquetes: Libreras Windows para e-mail: Libreras Windows FTP: Libreras de interfaz Winsock: SEE4C SMTP/POP3 Email Engine Library for C/C++ WIL4C Winsock Interface Library for C/C++ FCE4C FTP Client Engine Library for C/C++

Marcador para Windows:

MDD4C MarshallSoft DUN Dialer for C/C++

Comunicaciones serie para Windows: WSC4C Windows Standard Serial Comm Library for C/C++ Comunicaciones serie para DOS: PCL4C Personal Communications Library for C/C++ www.mysql.com

MySQL++

MySQL++ es una interfaz (API) de la popular base de datos relacional MySQL para C++. Su propsito es hacerla funcionar mediante contenedores STL. MySQL. Database www.mysql.com

MySQL es un sistema de administracin de una base de datos con soporte para mltiples usuarios que utiliza el lenguaje SQL estandarizado para el almacenamiento, actualizacin y acceso a informacin. Soporta varios lenguajes de programacin: C, C++, Eiffel, Java, Perl, PHP, Python y TCL. Dispone as mismo de diferentes GUIs, incluyendo versiones para Borland C++ y Microsoft Visual C++ Palisand. DalC++ Database Access Library www.palisand.com

Se trata de una librera C++ orientadas a objetos que soporta Borland C++ Builder e incorpora drivers de MS Access y SQL Server. Diseada para desarrolladores de aplicaciones cliente/servidor que necesiten escribir aplicaciones no muy voluminosas, que deban soportar diversas bases de datos relacionales. Database Access Library se encarga de todas las transformaciones entre el paradigma orientado a objetos y el modelo relacional, sin renunciar por ello a ninguna ventaja de la programacin orientada a objetos. Otras caractersticas incluyen: soporte para asociaciones directas y bidireccionales 1-n y n-n, asociaciones 1-n restringidas, seleccin polimrfica explcita, soporte de esquemas de diseo sujeto-objeto, generacin automtica de esquemas y soporte de migracin de esquemas. PTypes www.melikyan.com

PTypes (C++ Portable Types Library) es una alternativa a la Librera Estndar de Plantillas (STL) de C++. Es un proyecto de cdigo abierto mantenido por Hovik Melikyan que entre otras caractersticas incluye flujos de E/S, funcionamiento en modo multihebra y trabajo en red, ya que permite manejar conexiones IP. Se trata de una librera multiplataforma que puede funcionar en los principales sistemas actualmente en uso (FreeBSD, Linux, SunOS, Mac OS X y Windows). SFL www.imatix.com

SFL ("Standard Function Library") es una librera de funciones C/C++ escrita en C estndar, que contiene aproximadamente 450 funciones relativas a las siguientes reas: Compression, encryption, and encoding; Datatype conversion and formatting; Dates, times, and calendars; Directory and environment access; User and process groups; Inverted bitmap indices; Symbol tables; Error message files; Configuration files; String manipulation and searching; File access; Internet socket access; Internet programming (MIME, CGI); SMTP (e-mail) access; Server (batch) programming; Program tracing. SFL ha sido portada a MS-DOS; Windows; OS/2; Linux; Digital OpenVMS y distintos sistemas UNIX (IBM AIX, SunOS, HP/UX, Solaris, NetBSD, FreeBSD, SCO OpenServer, Digital UNIX). Se distribuye con una completa documentacin y con el cdigo fuente. Sus creadores (iMatrix)

la facilitan bajo la licencia Open Source, de forma que puede ser utilizada y distribuida, incluso en aplicaciones comerciales mediante una licencia muy permisiva (solo se exige que en la documentacin del producto se incluya la siguiente frase: "This product uses parts of the iMatix SFL, Copyright 1991-2000 iMatix Corporation ". SQLAPI++ Library www.sqlapi.com

Es una librera de interfaz para acceder a las bases de datos de los motores SQL ms comunes: Oracle, SQLServer, InterBase, DB2, Informix, Sybase, SQLBase y ODBC. Utiliza APIs propios, y las apliaciones desarrolladas con esta librera se ejecutan limpia y eficazmente. Incluye una interfaz de usuario que permite acceder a las caractersticas especficas de cada base de datos. SQLite www.sqlite.org

Seguramente no es exagerado decir que prcticamente cualquier aplicacin, incluyendo las que no son especficamente algn tipo de database (un catlogo de msica o de fotos por ejemplo), necesita manejar algunos datos, aunque solo sean de configuracin inicial, ltimos ficheros/direcciones utilizadas, etc. Tampoco sera exagerado decir que, casi con seguridad, ya dispone en su equipo de alguna aplicacin que utilice esta librera sin que usted se haya percatado de ello, ya que multitud de aplicaciones comerciales y freeware la utilizan. Por ejemplo, Firefox y Thunderbird y Sunbird; el software de muchos telfonos celulares, y los sistemas operativos Mac OS X de Apple o Solaris de Sun. Si desea beneficiarse de la potencia de la sintaxis SQL para sus datos sin la aparatosidad de los motores SQL tradicionales, seguramente SQLite es la opcin ms acertada. Su autor original, Richard Hipp, ha colocado su cdigo en el dominio pblico, con lo que cualquiera es libre de copiar, modificar, publicar, usar, compilar, vender o distribuir el cdigo original en forma de fuente o como binario compilado, y para cualquier propsito, comercial o no comercial. SQLite ofrece la potencia de un motor de base de datos relacional de cero-configuracin, pensado para ser incluido ("embedded") en cualquier aplicacin C/C++ que lo necesite [1]. Soporta databases de hasta 2 TeraBytes (241 Bytes), pero su cdigo se reduce a una librera de menos de 250 KBytes en su configuracin completa, que puede ser reducida a unos 150 Kbytes si se omiten las funcionalidades no esenciales. Adems de una interfaz C/C++ perfectamente documentada, dispone de su propio TCL ("Tool Command Languaje") que permite controlar las bases de datos mediante comandos de consola o ficheros script. Existen tambin interfaces ("wrappers") para distintos lenguajes, incluyendo ADA, Common Lisp, Java, JavaScript, Perl, PHP, Python, etc. Str Library www.utilitycode.com

Str Library es una librera de clases para desarrollos C++ adecuada al tratamiento de cadenas ("Strings"). Especialmente adecuada para aplicaciones multihebra, se caracterza por su eficiencia y velocidad. Template Numerical Toolkit TNT math.nist.gov

Conjunto de herramientas para computacin numrica de Roldan Pozo, de la Divisin de Matemticas y Ciencias de la Computacin (MCSD) del Instituto USA de Estandarizacin y Tecnologa (NIST). Es una coleccin de interfaces e implementaciones de objetos numricos y estructuras bsicas, como matrices multidimensionales y dispersas, usadas frecuentemente en aplicaciones numricas y cculos cientficos en C++. Virtual Unlimited. Aplicaciones y libreras para seguridad www.virtualunlimited.com

Productos para criptografa y seguridad; entre otros BeeCrypt, una librera suministrada bajo la licencia GNU de cdigo abierto. Incluye implementaciones en C y ensamblador de varios algoritmos de cifrado y encriptacin, incluyendo Blowfish, MD5, SHA-1 y ElGamal. BeeCrypt ha sido diseada como una herramienta de uso general que puede ser utilizada en multitud de circunstancias. Existen dos versiones: Una escrita en C y ensamblador; otra en Java. Xceed Software. Aplicaciones y libreras varias Swig Zip Compression Library FTP Library Zip Self-Extractor Module Winsock Library Backup Library Absolute Packager www.swig.org/ www.xceedsoft.com

Xceed Software ofrece diversas herramientas para programacin:

SWIG es una herramienta de desarrollo que permite conectar programas escritos en C/C++ con otros lenguajes de alto nivel, principalmente lenguajes de "script", tales como Perl, Python, Tcl/Tk, Ruby, Guile, MzScheme y PHP; aunque entre los lenguajes soportados se incluyen otros como Java y Eiffel. Principalmente se utiliza para crear entornos de programacin interpretados de alto nivel y herramientas para construir interfaces de usuario. Puede ser utilizado y distribuido libremente para uso comercial y privado. Inicio. [1] ltimamente algunos fabricantes de RDBMS ("Relational DataBase Management System") han ofrecido versiones ligeras ("downsized") de sus gestores de bases de datos de gran escala para adaptarlos a aplicaciones embebidas. Sin embargo, SQLite es el nico de tales RDBMS que ha sido especficamente diseado desde su origen para ofrecer esta particularidad. Adems, su cdigo es de dominio pblico. En el fichero de cabecera sqlite3.h puede leerse la siguiente nota de copyright: ** The author disclaims copyright to this source code. In place of ** a legal notice, here is a blessing: ** ** May you do good and not evil. ** May you find forgiveness for yourself and forgive others. ** May you share freely, never taking more than you give. ** ********************************************************************** ***

[2] Existen libreras auxiliares que puede facilitar esta labor. Por ejemplo, IBpp www.ibpp.org/, una librera de clases (libre de dependencias de cualquier tipo) que proporciona acceso a Firebird desde cualquier aplicacin C++, ya sea visual o en modo consola. En realidad IBpp es una interfaz que, a travs de distintas clases muy fciles de utilizar, proporciona todo lo necesario para acceder a las bases de datos Firebird, as como a las tareas de mantenimiento y administracin del servidor.

Inicio

22 - Librerias estandar

Tutorial creado por Peter Class; traduccin por Pello Xabier Altadill Izura . Extraido de: http://es.tldp.org/Manuales-LuCAS/doc-tutorial-c++/html/ 28 Febrero 2006

< anterior | 1 .. 19 20 21 22 23 | siguiente > ""La sintaxis de inclusion de librerias puede variar segun la version y la plataforma del compilador c++. Puede ser asi:

... using namespace std; #include

... O mas simple:

... using namespace std; #include ... Pero, que narices es eso del namespace? Con eso de namespace lo que hacemos es declarar un zona concreta para variables, objetos, etc.

... int contador; // variable global

// definimos el espacio de nombres freedomia namespace freedomia {

int contador;

}

// definimos el espacio de nombres libertonia namespace libertonia {

int acumulador; int contador;

}

// vamos a probar int main () {

// asi utilizariamos la variable del espacio freedomia freedomia::contador = 0;

// y asi la otra, la global ::contador = 0;

// QUE PASA SI no lo especificamos? efectivamente tendremos // seremos unos ambiguos

// y si somos unos vagos y no queremos especificar el espacio de

nombres // en cada uso de la variable?? // metemos la directiva using using namespace libertonia;

acumulador = 0;

// pero OJO esto seguiria siendo ambiguo contador = 0;

// using como declaracion. // Pero que pasa si lo que realmente queremos es quitar esa ambiguedad // y afirmar que en adelanta vamos a utilizar la variable de determinado namespace? // ESTO se haria asi using libertonia::contador;

// ahora si, esto seria correcto contador = 0;

}

A lo que ibamos: al igual que en c, en c++ tenemos una libreria base para desarrollar aplicaciones. Aqui se hecha un rapido vistazo a todas ellas.

#include Libreria basica de entrada/salida. Imprescindible.

#include Libreria para el manejo de string con las funciones mas usuales como strcpy, strncpy, strlen, strcat, strncat, incluso las que sirven para buscar dividir un string en tokens.

#include Libreria para escribir fechas, con distintas opciones. Podemos sacar la fecha del momento y separar los valores de dia, hora, minuto, etc..

#include Otra libreria basica, que contiene funciones como los conversores de ascci-integer atoi, algoritmos de ordenacion de arreglos como qsort..

Veamos el listado que contiene las librerias del ambito estandar.

iostream : entrada y salida

iomanip : manipuladores de entrada/salido con argumentos

fstream : flujos de archivos

sstream : flujos de cadenas (tipo c++)

strstream : flujos de cadenas (tipo c)

vector : contenedor para crear vectores

list : contenedor para crear listas

deque : contenedor para una cola de extremo doble

map : contenedor para grupo de pares (id,valor)

string : cadenas

Librerias de c. Estan versioneadas para la libreria estandar de c++ las siguientes: cstdlib, cstdio, cerrno, cassert, cstdarg, cstring, ctime, csignal, cstddef, csetjmp, cmath, clocale, climits, cfloat y cctype.

Operadores de bits: Otra opcion mas de c++

& AND | OR ^ exclusive OR ~ complement

Figura: programar es como cocinar

Existen mas librerias standar y lo que es mejor, librerias muy potentes disponibles para desarrollar programas mas complejos: creacion de interfaces de ventanas, comunicaciones, etc..

El estilo A la hora de escribir codigo se pueden tomar muchas costumbres y vicios que no facilitan la generacion de un estilo claro. De todas formas, dentro de un mismo proyecto seria mejor mantener un mismo estilo. No debe ser una preocupacion, ya que existen programas para formatear el codigo fuente, meter espacios tabulaciones, saltos de linea, etc.

""

Librerias Screenshot Conio Es una emulacin de la libreria Conio.h de Borland para los compiladores Visual C++ 6.0 y Dev C++. Tamao del archivo: 49 Kb Numero de descargas: 496

Principio del formulario

code/librerias

123

Descargar librera

Final del formulario

Screenshot

WinBGI Es una emulacin de la libreria Graphics.h de Borland para los compiladores Visual C++ 6.0 y Dev C++. Tamao del archivo: 702 Kb Numero de descargas: 566

Principio del formulario

code/librerias

124

Descargar librera

Final del formulario

Screenshot

Bases Libreria para la conversin de bases: Binario a Decimal Binario a Octal Binario a Hexadecimal Octal a Decimal Octal a Binario Octal a Hexadecimal Decimal a Binario Decimal a Hexadecimal Decimal a Octal Hexadecimal a Binario Hexadecimal a Octal Hexadecimal a Decimal Libreria disponible para los compiladores Visual C++ 6.0 y Dev C+ +. Tamao del archivo: 213 Kb

Numero de descargas: 328

Principio del formulario

code/librerias

125

Descargar librera

Final del formulario

Screenshot

FMOD 3.75 Libreria para el manejo de audio para el compilador Visual C++ 6.0. [Pagina de Inicio] Tamao del archivo: 1958 Kb Numero de descargas: 219

Principio del formulario

code/librerias

126

Descargar librera

Final del formulario

Screenshot

OpenGL 2.0 + GLUT 3.76 + GLEW 1.4.0 + GLAUX Libreria para el manejo de graficos en 3D para el compilador Visual C++ 6.0. [Pagina de Inicio] Tamao del archivo: 2534 Kb Numero de descargas: 354

Principio del formulario

code/librerias

127

Descargar librera

Final del formulario

Screenshot

SDL 1.2.11 + SDL_Image 1.2.5 Libreria para el manejo de graficos en 2D para el compilador Visual C++ 6.0. [Pagina de Inicio] Tamao del archivo: 859 Kb Numero de descargas: 202

Principio del formulario

code/librerias

128

Descargar librera

Final del formulario

Screenshot

MySQL Libreria que permite el acceso a base de datos MySQL para los compiladores Visual C++ 6.0 y Dev C++. [Pagina de Inicio] Tamao del archivo: 4382 Kb Numero de descargas: 196

Principio del formulario

code/librerias

137

Descargar librera

Final del formulario

Screenshot

Image Button Libreria que permite poner imagenes o iconos en los botones. Libreria disponible para los compiladores Visual C++ 6.0, Visual C+ + .NET 2005 y Dev C++. [Pagina de Inicio] Tamao del archivo: 475 Kb Numero de descargas: 187

Principio del formulario

code/librerias

139

Descargar librera

Final del formulario

Screenshot

Image Menu Libreria que permite poner diferente estilos al menu, por ejemplo Office 2003, office 2007. Libreria disponible para los compiladores Visual C++ 6.0, Visual C++ .NET 2005 y Dev C++. [Pagina de Inicio] Tamao del archivo: 830 Kb Numero de descargas: 157

Principio del formulario

code/librerias

140

Descargar librera

Final del formulario

Screenshot

Hyperlink Libreria que permite utilizar el control hyperlink y de esta manera poder poner enlaces web o direcciones de correo en una caja de dialogo. Libreria disponible para los compiladores Visual C++ .NET 2005 y Visual C++ 6.0. [Pagina de Inicio] Tamao del archivo: 60 Kb Numero de descargas: 100

Principio del formulario

code/librerias

141

Descargar librera

Final del formulario

Compiladores Screenshot Turbo C++ 3.0 Es un compilador para realizar programas en C/C++ en MS-DOS. [Pagina de Inicio] Tamao del archivo: 2902 Kb Numero de descargas: 175

Principio del formulario

compiladores/

129

Descargar compilador

Final del formulario

Screenshot

Dev C++ 4.9.9.2 Es un entorno de desarrollo para el compilador Mingw que permite realizar programas en C/C++ en consola y en Windows.

Principio del formulario

compiladores/

130

Final del formulario

Screenshot

Pellesc Es un compilador basado en LCC que contiene su entorno de desarrollo y editor de recursos, que permite realizar programas en lenguaje C en consola y en Windows.

Principio del formulario

compiladores/

131

Final del formulario

Screenshot

Code Blocks 1.0 Es un excelente entorno de desarrollo para el compilador Mingw que permite crear programas en C/C++ en modo consola o aplicaciones Windows.

Principio del formulario

compiladores/

161

Final del formulario

Screenshot

Visual C++ .NET 2008 Express Es un compilador que permite realizar aplicaciones en C/C++ en consola y en windows, tambien contiene editor de recursos y permite realizar interfaces graficas complejas utilizando Windows Forms.

Principio del formulario

compiladores/

171

Final del formulario