diagrama de flujo gabriel cornejo 4 to b

32
Diagrama de flujo Gabriel cornejo

Upload: gabuxitopcornejo

Post on 16-Dec-2014

2.458 views

Category:

Documents


1 download

DESCRIPTION

 

TRANSCRIPT

  • 1. Gabriel cornejo

2. Diagrama de flujo diagrama de flujo es la representacin grfica del algoritmo o proceso. Se utiliza en disciplinas como la programacin, la economa, los procesos industriales y la psicologa cognitiva. Estos diagramas utilizan smbolos con significados bien definidos que representan los pasos del algoritmo, y representan el flujo de ejecucin mediante flechas que conectan los puntos de inicio y de fin de proceso. 3. Caracterstica del diagrama de flujo Identificar las ideas principales a ser incluidas en el diagrama de flujo. Deben estar presentes el dueo o responsable del proceso, los dueos o responsables del proceso anterior y posterior y de otros procesos interrelacionados, otras partes interesadas. Definir qu se espera obtener del diagrama de flujo. Identificar quin lo emplear y cmo. Los pasos a seguir para construir el diagrama de flujo son: Establecer el alcance del proceso a describir. De esta manera quedar fijado el comienzo y el final del diagrama. Frecuentemente el comienzo es la salida del proceso previo y el final la entrada al proceso siguiente. Identificar y listar las principales actividades/subprocesos que estn incluidos en el proceso a describir y su orden cronolgico. Si el nivel de detalle definido incluye actividades menores, listarlas tambin. Identificar y listar los puntos de decisin. Construir el diagrama respetando la secuencia cronolgica y asignando los correspondientes smbolos. 4. Ventajas de los diagramas de flujo Favorecen la comprensin del proceso al mostrarlo como un dibujo. Elcerebro humano reconoce muy fcilmente los dibujos. Un buendiagrama de flujo reemplaza varias pginas de texto. Permiten identificar los problemas y las oportunidades de mejora delproceso. Se identifican los pasos, los flujos de los re-procesos, losconflictos de autoridad, las responsabilidades, los cuellos de botella, ylos puntos de decisin. Muestran las interfaces cliente-proveedor y las transacciones que enellas se realizan, facilitando a los empleados el anlisis de las mismas. Son una excelente herramienta para capacitar a los nuevos empleados ytambin a los que desarrollan la tarea, cuando se realizan mejoras en elproceso. 5. Tipos de diagramas de flujo Formato vertical: En l, el flujo o la secuencia de las operaciones, va dearriba hacia abajo. Es una lista ordenada de las operaciones de unproceso con toda la informacin que se considere necesaria, segn supropsito. Formato horizontal: En l, el flujo o la secuencia de las operaciones, vade izquierda a derecha. Formato panormico: El proceso entero est representado en una solacarta y puede apreciarse de una sola mirada mucho ms rpido queleyendo el texto, lo que facilita su comprensin, an para personas nofamiliarizadas. Registra no solo en lnea vertical, sino tambinhorizontal, distintas acciones simultneas y la participacin de ms deun puesto o departamento que el formato vertical no registra. Formato Arquitectnico: Describe el itinerario de ruta de una forma opersona sobre el plano arquitectnico del rea de trabajo. El primero delos flujogramas es eminentemente descriptivo, mientras que losutilizados son fundamentalmente representativos. 6. Simbologa y significado valo o Elipse: Inicio y trmino (Abre y/o cierra eldiagrama). Rectngulo: Actividad (Representa la ejecucin de una oms actividades o procedimientos). Rombo: Decisin (Formula una pregunta o cuestin). Crculo: Conector (Representa el enlace de actividades conotra dentro de un procedimiento). Tringulo boca abajo: Archivo definitivo (Guarda undocumento en forma permanente). Tringulo boca arriba: Archivo temporal (Proporciona untiempo para el almacenamiento del documento). 7. Simbologa y normas del cursograma Crculo: Procedimiento estandarizado. Cuadrado: Proceso de control. Lnea ininterrumpida: Flujo de informacin va formulario o documentacin en soportede papel escrito. Lnea interrumpida: Flujo de informacin va formulario digital. Rectngulo: Formulario o documentacin. Se grafica con un doble de ancho que sualtura. Rectngulo Pequeo: Valor o medio de pago (cheque, pagar, etctera).Se grafica con uncudruple de ancho que su altura, siendo su ancho igual al de los formularios. Tringulo (base inferior): Archivo definitivo. Tringulo Invertido (base superior): Archivo Transitorio. Semi-valo: Demora. Rombo: Divisin entre opciones. Trapezoide: Carga de datos al sistema. Elipsoide: Acceso por pantalla. Hexgono: Proceso no representado. Pentgono: Conector. Cruz de Diagonales: Destruccin de Formularios. 8. Historia La paternidad del diagrama de flujo es en principio algo difusa. El mtodoestructurado para documentar graficamente un proceso como un flujo de pasossucesivo y alternativos, el "proceso de diagrama de flujo", fue expuesto por FrankGilbreth, en la Sociedad Americana de Ingenieros Mecnicos (ASME), en 1921,bajo el enunciado de "Proceso de Grficas-Primeros pasos para encontrar elmejor modo". Estas herramientas de Gilbreth rpidamente encontraron sitio enlos programas de ingeniera industrial. Al principio de los 30, un ingenieroindustrial, Allan H. Mogensen comenz la formacin de personas de negocios enLake Placid, Nueva York, incluyendo el uso del diagrama de flujo. Art Spinanger,asistente a las clases de Mogesen, utiliz las herramientas en su trabajo enProcter & Gamble, donde desarroll su Programa Metdico de Cambios porEtapas. Otro asistente al grupo de graduados en 1944, Ben S. Graham, Director deIngeniera de Formcraft Standard Register Corporation, adapt la Grfica de flujode procesos al tratamiento de la informacin en su empresa. Y desarroll laGrfica del proceso de mltiples flujos en mltiples pantallas, documentos, y susrelaciones. En 1947, ASME adopt un conjunto de smbolos derivados de la obraoriginal de Gilbreth como Norma ASME para los grficos de procesos (preparadaMishad, Ramsan y Raiaan). 9. 2da parte de la historia Sin embargo, segn explica Douglas Hartree fueron originalmente HermanGoldstine y John von Neumann quienes desarrollaron el diagrama de flujo(inicialmente llamado "diagrama") para planificar los programas de ordenador.Las tablas de programacin original de flujo de Goldstine y von Neumann,aparecen en un informe no publicado, "Planificacin y codificacin de losproblemas de un instrumento de computacin electrnica, la Parte II, Volumen1 "(1947), reproducido en las obras completas de von Neumann. Inicialmentelos diagramas de flujo resultaron un medio popular para describir algoritmosde computadora, y an se utilizan con este fin. Herramientas como losdiagramas de actividad UML, pueden ser considerados como evoluciones deldiagrama de flujo. En la dcada de 1970 la popularidad de los diagramas de flujo como mtodopropio de la informtica disminuy, con el nuevo hardware y los nuevoslenguajes de programacin de tercera generacin. Y por otra parte seconvirtieron en instrumentos comunes en el mundo empresarial. Son unaexpresin concisa, legible y prctica de algoritmos. Actualmente se aplican enmuchos campos del conocimiento, especialmente como simplificacin yexpresin lgica de procesos, etc. [editar]Vase tambin 10. Lenguaje de programacin Un lenguaje de programacin es un idioma artificial diseado para expresar procesos quepueden ser llevadas a cabo por mquinas como las computadoras. Pueden usarse paracrear programas que controlen el comportamiento fsico y lgico de una mquina, paraexpresar algoritmos con precisin, o como modo de comunicacin humana.1 Estformado por un conjunto de smbolos y reglas sintcticas y semnticas que definen suestructura y el significado de sus elementos y expresiones. Al proceso por el cual seescribe, se prueba, se depura, se compila y se mantiene el cdigo fuente de un programainformtico se le llama programacin. Tambin la palabra programacin se define como el proceso de creacin de un programade computadora, mediante la aplicacin de procedimientos lgicos, a travs de lossiguientes pasos: El desarrollo lgico del programa para resolver un problema en particular. Escritura de la lgica del programa empleando un lenguaje de programacin especfico(codificacin del programa). Ensamblaje o compilacin del programa hasta convertirlo en lenguaje de mquina. Prueba y depuracin del programa. Desarrollo de la documentacin. 11. Historia Para que la computadora entienda nuestras instrucciones debe usarse unlenguaje especfico conocido como cdigo mquina, el cual la mquinacomprende fcilmente, pero que lo hace excesivamente complicado para laspersonas. De hecho slo consiste en cadenas extensas de nmeros 0 y 1. Para facilitar el trabajo, los primeros operadores de computadoras decidieronhacer un traductor para reemplazar los 0 y 1 por palabras o abstraccin depalabras y letras provenientes del ingls; ste se conoce como lenguajeensamblador. Por ejemplo, para sumar se usa la letra A de la palabra inglesa add(sumar). El lenguaje ensamblador sigue la misma estructura del lenguajemquina, pero las letras y palabras son ms fciles de recordar y entender quelos nmeros. La necesidad de recordar secuencias de programacin para las acciones usualesllev a denominarlas con nombres fciles de memorizar y asociar: ADD(sumar), SUB (restar), MUL (multiplicar), CALL (ejecutar subrutina), etc. Aesta secuencia de posiciones se le denomin "instrucciones", y a este conjuntode instrucciones se le llam lenguaje ensamblador. Posteriormente aparecierondiferentes lenguajes de programacin, los cuales reciben su denominacinporque tienen una estructura sintctica similar a los lenguajes escritos por loshumanos, denominados tambin lenguajes de alto nivel. 12. 2da historia La primera programadora de computadora conocida fue Ada Lovelace, hija de AnabellaMilbanke Byron y Lord Byron. Anabella introdujo en las matemticas a Ada quien, despusde conocer a Charles Babbage, tradujo y ampli una descripcin de su mquina analtica.Incluso aunque Babbage nunca complet la construccin de cualquiera de sus mquinas, eltrabajo que Ada realiz con stas le hizo ganarse el ttulo de primera programadora decomputadoras del mundo. El nombre del lenguaje de programacin Ada fue escogido comohomenaje a esta programadora. A finales de 1953, John Backus someti una propuesta a sus superiores en IBM paradesarrollar una alternativa ms prctica al lenguaje ensamblador para programar lacomputadora central IBM 704. El histrico equipo Fortran de Backus consisti en losprogramadores Richard Goldberg, Sheldon F. Best, Harlan Herrick, Peter Sheridan, Roy Nutt,Robert Nelson, Irving Ziller, Lois Haibt y David Sayre.2 El primer manual para el lenguaje Fortran apareci en octubre de 1956, con el primercompilador Fortran entregado en abril de 1957. Esto era un compilador optimizado, porquelos clientes eran reacios a usar un lenguaje de alto nivel a menos que su compilador pudieragenerar cdigo cuyo desempeo fuera comparable al de un cdigo hecho a mano en lenguajeensamblador. En 1960, se cre COBOL, uno de los lenguajes usados an en 2010 en informtica de gestin. A medida que la complejidad de las tareas que realizaban las computadoras aumentaba, sehizo necesario disponer de un mtodo ms eficiente para programarlas. Entonces, se crearonlos lenguajes de alto nivel, como lo fue BASIC en las versiones introducidas en losmicroordenadores de la dcada de 1980. Mientras que una tarea tan sencilla como sumar dosnmeros puede necesitar varias instrucciones en lenguaje ensamblador, en un lenguaje dealto nivel bastar una sola sentencia. 13. ElementosVariables y Vectores Las variables podran calificarse como contenedores de datos y por ello sediferencian segn el tipo de dato que son capaces de almacenar. En la mayorade lenguajes de programacin se requiere especificar un tipo de variableconcreto para guardar un dato concreto. Por ejemplo, en Java, si deseamosguardar una cadena de texto deberemos especificar que la variable es del tipo"String". Por contra en otros lenguajes como PHP, este tipo de especificacin devariables no es necesario. Adems tambin existen variables compuestas porvarias variables llamados vectores. Un vector no es ms que un conjunto devariables ordenadas guardadas dentro de una variables contenedor del tipovector. -Variables tipo Char: Estas variables contienen un nico caracter, esdecir, una letra, un signo o un nmero. -Variables tipo Int: Contienen un nmero entero. -Variables tipo float: Contienen un nmero decimal. -Variables tipo String: Contienen cadenas de texto, o lo que es lo mismo, es unvector con varias variables del tipo Char. 14. Condicionantes Los condicionantes son estructuras de cdigo que indican quepara que cierta parte del programa se ejecute, deben cumplirseciertas premisas, como por ejemplo, que dos valores seaniguales, que un valor exista, que un valor sea mayor que otro ysimilares. Estos condicionantes por lo general solo se ejecutanuna vez a lo largo del programa. Los condicionantes msconocidos y empleados en programacin son: If: Indica una condicin para que se ejecute una parte delprograma. Else if: Siempre va precedido de un "If" e indica una condicinpara que se ejecute una parte del programa siempre que nocumpla la condicin del if previo y si se cumpla con la que el"else if" especifique. 15. Bucles los bucles son parientes cercanos de los condicionantes,pero ejecutan constantemente un cdigo mientras secumpla una determinada condicin. Los ms frecuentesson: For: Ejecuta un cdigo mientras una variable se encuentreentre 2 determinados parmetros. While: Ejecuta un cdigo mientras se cumpla la condicinque solicita. Hay que decir que a pesar de que existan distintos tipos debucles, ambos son capaces de realizar exactamente lasmismas funciones. El empleo de uno u otro depende, por logeneral, del gusto del programador. 16. Funciones Las funciones se crearon para evitar tener que repetirconstantemente fragmentos de cdigo. Una funcin podraconsiderarse como una variable que encierra cdigo dentro de si.Por tanto cuando accedemos a dicha variable (la funcin) enrealidad lo que estamos es diciendo al programa que ejecute undeterminado cdigo predefinido anteriormente. Todos los lenguajes de programacin tienen algunos elementosde formacin primitivos para la descripcin de los datos y de losprocesos o transformaciones aplicadas a estos datos (tal como lasuma de dos nmeros o la seleccin de un elemento que formaparte de una coleccin). Estos elementos primitivos sondefinidos por reglas sintcticas y semnticas que describen suestructura y significado respectivamente. 17. Sintaxis A la forma visible de un lenguaje de programacin se le conoce como sintaxis. La mayorade los lenguajes de programacin son puramente textuales, es decir, utilizan secuenciasde texto que incluyen palabras, nmeros y puntuacin, de manera similar a los lenguajesnaturales escritos. Por otra parte, hay algunos lenguajes de programacin que son msgrficos en su naturaleza, utilizando relaciones visuales entre smbolos para especificarun programa. La sintaxis de un lenguaje de programacin describe las combinaciones posibles de lossmbolos que forman un programa sintcticamente correcto. El significado que se le da auna combinacin de smbolos es manejado por su semntica (ya sea formal o como partedel cdigo duro de la referencia de implementacin). Dado que la mayora de loslenguajes son textuales, este artculo trata de la sintaxis textual. La sintaxis de los lenguajes de programacin es definida generalmente utilizando unacombinacin de expresiones regulares (para la estructura lxica) y la Notacin de Backus-Naur (para la estructura gramtica). Este es un ejemplo de una gramtica simple, tomadade Lisp: expresin ::= tomo | lista tomo ::= nmero | smbolo nmero ::= [+-]?[0-9]+ smbolo ::= [A-Za-z].* lista ::= ( expresin* ) 18. Semntica esttica La semntica esttica define las restricciones sobre la estructura de los textosvlidos que resulta imposible o muy difcil expresar mediante formalismossintcticos estndar. Para los lenguajes compilados, la semntica estticabsicamente incluye las reglas semnticas que se pueden verificar en elmomento de compilar. Por ejemplo el chequeo de que cada identificador seadeclarado antes de ser usado (en lenguajes que requieren tales declaraciones) oque las etiquetas en cada brazo de una estructura case sean distintas. Muchasrestricciones importantes de este tipo, como la validacin de que losidentificadores sean usados en los contextos apropiados (por ejemplo no sumarun entero al nombre de una funcin), o que las llamadas a subrutinas tengan elnmero y tipo de parmetros adecuado, puede ser implementadasdefinindolas como reglas en una lgica conocida como sistema de tipos. Otrasformas de anlisis estticos, como los anlisis de flujo de datos, tambinpueden ser parte de la semntica esttica. Nuevos lenguajes de programacincomo Java y C# tienen un anlisis definido de asignaciones, una forma deanlisis de flujo de datos, como parte de su semntica esttica. 19. Sistema de tipos Un sistema de tipos define la manera en la cual un lenguaje de programacinclasifica los valores y expresiones en tipos, cmo pueden ser manipuladosdichos tipos y cmo interactan. El objetivo de un sistema de tipos es verificar ynormalmente poner en vigor un cierto nivel de exactitud en programas escritosen el lenguaje en cuestin, detectando ciertas operaciones invlidas. Cualquiersistema de tipos decidible tiene sus ventajas y desventajas: mientras por unlado rechaza muchos programas incorrectos, tambin prohbe algunosprogramas correctos aunque poco comunes. Para poder minimizar estadesventaja, algunos lenguajes incluyen lagunas de tipos, conversionesexplcitas no checadas que pueden ser usadas por el programador para permitirexplcitamente una operacin normalmente no permitida entre diferentestipos. En la mayora de los lenguajes con tipos, el sistema de tipos es usadosolamente para checar los tipos de los programas, pero varios lenguajes,generalmente funcionales, llevan a cabo lo que se conoce como inferencia detipos, que le quita al programador la tarea de especificar los tipos. Al diseo yestudio formal de los sistemas de tipos se le conoce como teora de tipos. 20. Lenguajes tipados versus lenguajesno tipados Se dice que un lenguaje tiene tipos si la especificacin de cadaoperacin define tipos de datos para los cuales la operacin esaplicable, con la implicacin de que no es aplicable a otros tipos.Por ejemplo, "este texto entre comillas" es una cadena. En lamayora de los lenguajes de programacin, dividir un nmeropor una cadena no tiene ningn significado. Por tanto, lamayora de los lenguajes de programacin modernos rechazarancualquier intento de ejecutar dicha operacin por parte de algnprograma. En algunos lenguajes, estas operaciones sinsignificado son detectadas cuando el programa es compilado(validacin de tipos "esttica") y son rechazadas por elcompilador, mientras en otros son detectadas cuando elprograma es ejecutado (validacin de tipos "dinmica") y segenera una excepcin en tiempo de ejecucin. 21. Tipos estticos versus tiposdinmicos En lenguajes con tipos estticos se determina el tipo de todas lasexpresiones antes de la ejecucin del programa (tpicamente alcompilar). Por ejemplo, 1 y (2+2) son expresiones enteras; no puedenser pasadas a una funcin que espera una cadena, ni pueden guardarseen una variable que est definida como fecha. Los lenguajes con tipos estticos pueden manejar tipos explcitos otipos inferidos. En el primer caso, el programador debe escribir lostipos en determinadas posiciones textuales. En el segundo caso, elcompilador infiere los tipos de las expresiones y las declaraciones deacuerdo al contexto. La mayora de los lenguajes populares con tiposestticos, tales como C++, C# y Java, manejan tipos explcitos.Inferencia total de los tipos suele asociarse con lenguajes menospopulares, tales como Haskell y ML. Sin embargo, muchos lenguajes detipos explcitos permiten inferencias parciales de tipo; tanto Java yC#, por ejemplo, infieren tipos en un nmero limitado de casos. 22. Tipos dbiles y tipos fuertes Los lenguajes dbilmente tipados permiten que un valor de un tipopueda ser tratado como de otro tipo, por ejemplo una cadena puede seroperada como un nmero. Esto puede ser til a veces, pero tambinpuede permitir ciertos tipos de fallas que no pueden ser detectadasdurante la compilacin o a veces ni siquiera durante la ejecucin. Los lenguajes fuertemente tipados evitan que pase lo anterior.Cualquier intento de llevar a cabo una operacin sobre el tipoequivocado dispara un error. A los lenguajes con tipos fuertes se lessuele llamar de tipos seguros. Lenguajes con tipos dbiles como Perl y JavaScript permiten un grannmero de conversiones de tipo implcitas. Por ejemplo en JavaScript laexpresin 2 * x convierte implcitamente x a un nmero, y estaconversin es exitosa inclusive cuando x es null, undefined, un Array ouna cadena de letras. Estas conversiones implcitas son tiles confrecuencia, pero tambin pueden ocultar errores de programacin. 23. Implementacin La implementacin de un lenguaje es la que provee una manera de quese ejecute un programa para una determinada combinacin de softwarey hardware. Existen bsicamente dos maneras de implementar unlenguaje: compilacin e interpretacin. Compilacin: es el proceso que traduce un programa escrito en unlenguaje de programacin a otro lenguaje de programacin, generandoun programa equivalente que la mquina ser capaz interpretar. Losprogramas traductores que pueden realizar esta operacin se llamancompiladores. stos, como los programas ensambladores avanzados,pueden generar muchas lneas de cdigo de mquina por cadaproposicin del programa fuente. Interpretacin: es una asignacin de significados a las frmulas bienformadas de un lenguaje formal. Como los lenguajes formales puedendefinirse en trminos puramente sintcticos, sus frmulas bienformadas pueden no ser ms que cadenas de smbolos sin ningnsignificado. Una interpretacin otorga significado a esas frmulas. 24. Tcnica Correccin. Un programa es correcto si hace lo que debe hacer tal ycomo se estableci en las fases previas a su desarrollo. Para determinarsi un programa hace lo que debe, es muy importante especificarclaramente qu debe hacer el programa antes de desarrollarlo y, una vezacabado, compararlo con lo que realmente hace. Claridad. Es muy importante que el programa sea lo ms claro y legibleposible, para facilitar as su desarrollo y posterior mantenimiento. Alelaborar un programa se debe intentar que su estructura sea sencilla ycoherente, as como cuidar el estilo en la edicin; de esta forma se vefacilitado el trabajo del programador, tanto en la fase de creacin comoen las fases posteriores de correccin de errores, ampliaciones,modificaciones, etc. Fases que pueden ser realizadas incluso por otroprogramador, con lo cual la claridad es an ms necesaria para queotros programadores puedan continuar el trabajo fcilmente. Algunosprogramadores llegan incluso a utilizar Arte ASCII para delimitarsecciones de cdigo. Otros, por diversin o para impedir un anlisiscmodo a otros programadores, recurren al uso de cdigo ofuscado. 25. Eficiencia. Se trata de que el programa, adems de realizar aquellopara lo que fue creado (es decir, que sea correcto), lo hagagestionando de la mejor forma posible los recursos que utiliza.Normalmente, al hablar de eficiencia de un programa, se suelehacer referencia al tiempo que tarda en realizar la tarea para laque ha sido creado y a la cantidad de memoria que necesita, perohay otros recursos que tambin pueden ser de consideracin alobtener la eficiencia de un programa, dependiendo de sunaturaleza (espacio en disco que utiliza, trfico de red que genera,etc.).Portabilidad. Un programa es portable cuando tiene la capacidadde poder ejecutarse en una plataforma, ya sea hardware osoftware, diferente a aquella en la que se elabor. La portabilidades una caracterstica muy deseable para un programa, ya quepermite, por ejemplo, a un programa que se ha desarrollado parasistemas GNU/Linux ejecutarse tambin en la familia de sistemasoperativos Windows. Esto permite que el programa pueda llegar ams usuarios ms fcilmente. 26. Paradigmas del c++ Los programas se pueden clasificar por el paradigma del lenguaje que se use paraproducirlos. Los principales paradigmas son: imperativos, declarativos y orientacin aobjetos. Los programas que usan un lenguaje imperativo especifican un algoritmo, usandeclaraciones, expresiones y sentencias.3 Una declaracin asocia un nombre de variablecon un tipo de dato, por ejemplo: var x: integer;. Una expresin contiene un valor, porejemplo: 2 + 2 contiene el valor 4. Finalmente, una sentencia debe asignar una expresina una variable o usar el valor de una variable para alterar el flujo de un programa, porejemplo: x := 2 + 2; if x == 4 then haz_algo();. Una crtica comn en los lenguajesimperativos es el efecto de las sentencias de asignacin sobre una clase de variablesllamadas "no locales".4 Los programas que usan un lenguaje declarativo especifican las propiedades que la salidadebe conocer y no especifica cualquier detalle de implementacin. Dos ampliascategoras de lenguajes declarativos son los lenguajes funcionales y los lenguajes lgicos.Los lenguajes funcionales no permiten asignaciones de variables no locales, as, se hacenms fcil, por ejemplo, programas como funciones matemticas.4 El principio detrs delos lenguajes lgicos es definir el problema que se quiere resolver (el objetivo) y dejar losdetalles de la solucin al sistema.5 El objetivo es definido dando una lista de sub-objetivos. Cada sub-objetivo tambin se define dando una lista de sus sub-objetivos, etc.Si al tratar de buscar una solucin, una ruta de sub-objetivos falla, entonces tal sub-objetivo se descarta y sistemticamente se prueba otra ruta. 27. Lenguaje c++ C++ es un lenguaje de programacin diseado a mediados de losaos 1980 por Bjarne Stroustrup. La intencin de su creacin fueel extender al exitoso lenguaje de programacin C conmecanismos que permitan la manipulacin de objetos. En esesentido, desde el punto de vista de los lenguajes orientados aobjetos, el C++ es un lenguaje hbrido. Posteriormente se aadieron facilidades de programacingenrica, que se sum a los otros dos paradigmas que ya estabanadmitidos (programacin estructurada y la programacinorientada a objetos). Por esto se suele decir que el C++ es unlenguaje de programacin multiparadigma. Actualmente existe un estndar, denominado ISO C++, al que sehan adherido la mayora de los fabricantes de compiladores msmodernos. Existen tambin algunos intrpretes, tales comoROOT. 28. Un ejemplo de programa en C++, elclsico Hola mundo Al usar la directiva #include estamos dicindole al compilador que busque e interprete todoslos elementos definidos en el archivo que acompaa la directiva (en este caso, iostream). Paraevitar sobrescribir los elementos ya definidos al ponerles igual nombre, se crearon losespacios de nombres o namespace del singular en ingls. En este caso hay un espacio denombres llamado std, que es donde se incluyen las definiciones de todas las funciones yclases que conforman la biblioteca estndar de C++. Al incluir la sentencia using namespacestd le estamos diciendo al compilador que usaremos el espacio de nombres std por lo que notendremos que incluirlo cuando usemos elementos de este espacio de nombres, comopueden ser los objetos cout y cin, que representan el flujo de salida estndar (tpicamente lapantalla o una ventana de texto) y el flujo de entrada estndar (tpicamente el teclado). La definicin de funciones es igual que en C, salvo por la caracterstica de que si main no va arecoger argumentos, no tenemos por qu ponrselos, a diferencia de C, donde haba queponerlos explcitamente, aunque no se fueran a usar. Queda solo comentar que el smbolo