Anda di halaman 1dari 52

REPBLICA BOLIVARIANA DE VENEZUELA MINISTERIO DEL P.P. PARA LA EDUCACIN UNIVERSITARIA UNIVERSIDAD BOLIVARIANA DE VENEZUELA P.F.G.

- GAS

ALGORITMOS, DIAGRAMAS DE FLUJO Y LENGUAJES DE PROGRAMACIN

Profesora: Rossimari Osorio 11.889.948 10.915.781

Alumnos:

C.I. lvarez, Wilson Briceo Edgar

Fernndez, Mauro. 11.774.904 Fuentes, Vctor 14.424.985 Rondn, Moiss 17.548.055 Rondn, Ruth 22.712.398

Punta de Mata, Mayo de 2012.

Introduccin

La computadora no solamente es una mquina que puede realizar procesos para darnos resultados, sin que tengamos la nocin exacta de las operaciones que realiza para llegar a esos resultados. Con la computadora adems de lo anterior tambin podemos disear soluciones a la medida, de problemas especficos que se nos presenten. Ms an, si estos involucran operaciones matemticas complejas y/o repetitivas, o requieren del manejo de un volumen muy grande de datos. El diseo de soluciones a la medida de nuestros problemas, requiere como en otras disciplinas una metodologa que nos ensene de manera gradual, la forma de llegar a esas soluciones. A las soluciones creadas por computadoras se le s conoce como programas y no son ms que una serie de operaciones que realiza la computadora para llegar a un resultado, con un grupo de datos especficos. Lo anterior nos lleva al razonamiento de que un programa nos sirve para solucionar un problema especfico. Para poder realizar programas, adems de conocer la metodologa mencionada, tambin debemos de conocer, de manera especfica las funciones que pueden realizar las computadoras y las formas en que se pueden manejar los elementos que hay en las mismas.

Algoritmos Podemos encontrar muchas definiciones de algoritmo en los textos de programacin, todas ellas muy similares:

Conjunto ordenado y finito de pasos que permiten hallar la solucin de un problema. Una secuencia de pasos que conducen a la realizacin de una tarea. Descripcin exacta de la secuencia en que se ha de realizar un conjunto de actividades tendientes a resolver un determinado tipo de problemas o procedimientos.

Conjunto de sentencias/instrucciones en lenguaje nativo, los cuales expresan la lgica de un programa. Es un sistema por el cual se llega a una solucin, teniendo en cuenta que debe de ser definido, finito y preciso. Toda receta, proceso, rutina, mtodo, procedimiento, tcnica, formula que resuelven un determinado problema. Conjunto de instrucciones concretas y detalladas mediante el cual se consigue una accin determinada. Conjunto de reglas que permiten obtener un resultado determinado a partir de ciertas reglas definidas. Descripcin precisa de una sucesin de instrucciones que permiten llevar a cabo un trabajo en un nmero finitos de pasos. Un conjunto de smbolos y procedimientos usados en la realizacin de un clculo. Un algoritmo se puede definir como una forma de expresar en lenguaje

natural la solucin de un problema, por medio de un conjunto de pasos u operaciones lgicas necesarias finitas. Hay que tomar en cuenta que a cada paso de un algoritmo le sigue otro claramente definido, sin ambigedades.

Caractersticas Las caractersticas fundamentales que debe cumplir todo algoritmo son: Ser definido: Sin ambigedad, cada paso del algoritmo debe indicar la accin a realizar sin criterios de interpretacin. Ser finito: un nmero especfico y numerable de pasos debe componer el algoritmo, el cual deber finalizar al completarlos. Tener cero o ms entradas: Datos son proporcionados a un algoritmo como insumo (o estos son generados de alguna forma) para llevar a cabo las operaciones que comprende. Tener una o ms salida: Debe siempre devolver un resultado; de nada sirve un algoritmo que hace algo y nunca sabemos que fue... El devolver un resultado no debe ser considerado como nicamente verlos en forma impresa o en pantalla, como ocurre con las computadoras. Existen muchos otros mecanismos susceptibles de programacin que no cuentan con una salida de resultados de esta forma. Por salida de resultados debe entenderse todo medio o canal por el cual es posible apreciar los efectos de las acciones del algoritmo. Efectividad: El tiempo y esfuerzo por cada paso realizado debe ser preciso, no usando nada ms ni nada menos que aquello que se requiera para y en su ejecucin. Tipos de Algoritmos Existen dos tipos y son llamados as por su naturaleza: Cualitativos: Son aquellos en los que se describen los pasos utilizando palabras. Cuantitativos: Son aquellos en los que se utilizan clculos numricos para definir los pasos del proceso.

Metodologa para la solucin de problemas por medio de Algoritmos Decisin del Problema: Esta fase est dada por el enunciado del problema, el cual requiere de una definicin clara y precisa. Es importante que se conozca lo que se desea que se realice con el algoritmo; mientras esto no se conozca del todo no tiene mucho caso continuar con la siguiente etapa. Anlisis del Problema: Una vez que se ha comprendido lo que se desea hacer, es necesario definir: Los datos de entrada. Cul es la informacin que se desea producir. Los mtodos y frmulas que se necesitan para procesar los datos. Diseo del Algoritmo: Las caractersticas de un buen algoritmo son: Debe tener un punto particular de inicio. Debe ser definido, no debe permitir dobles interpretaciones. Debe ser general, es decir, soportar la mayora de las variantes que se puedan presentar en la definicin del problema. Debe ser finito en tamao y tiempo de ejecucin. Prueba de escritorio o Depuracin: Es la comprobacin que se hace de un algoritmo para saber si est bien hecho. Esta prueba consiste en tomar datos especficos de entrada y seguir la secuencia indicada en el algoritmo hasta obtener un resultado, el anlisis de estos resultados indicara si el algoritmo esta correcto o si por el contrario hay necesidad de corregirlo o hacerle ajustes. Diagramas de Flujos

Un diagrama de flujos es la representacin grfica de un algoritmo. Tambin se puede decir que es la representacin detallada en forma grfica de cmo deben realizarse los pasos en la computadora para producir los resultados. Esta representacin grfica se da cuando varios smbolos (que indican diferentes procesos en la computadora), se relacionan entre s mediante lneas que indican el orden en que se deben ejecutar los procesos. Los smbolos utilizados han sido normalizados por el Instituto Norteamericano de Normalizacin (ANSI) y son los siguientes:

SMBOLO

DESCRIPCIN Indica el inicio y el final del diagrama de flujo

Indica la entrada y salida de datos Smbolo de proceso y nos indica la asignacin de un valor en la memoria y/o la ejecucin de una operacin aritmtica o cualquier funcin de procesamiento Indica la salida de informacin por la impresora Conector dentro de pgina. Representa la continuidad del diagrama dentro de la misma pagina Conector fuera de pgina. Representa la continuidad del diagrama en otra pagina Indica la salida de informacin en la pantalla o monitor SMBOLO DESCRIPCIN

SI NO

Smbolo de decisin. Indica la realizacin de una comparacin de valores para determinar cul trayectoria debe seguirse Proceso predefinido, operaciones o pasos de programas especificados en una subrutina o en otro conjunto de diagrama de flujo.

Smbolo del Para. Esta estructura de control repetitiva se usa generalmente cuando se conoce de antemano el nmero de interacciones. O Smbolo de seleccin mltiple. Dada una expresin permite escoger una opcin de muchas.

Lneas de flujo o direccin. Indican la secuencia en que se realizan las operaciones.

Recomendaciones para el diseo de Diagramas de Flujo. Se deben usar solamente lneas de flujos horizontales y/o verticales. Se debe evitar el cruce de lneas utilizando los conectores. Se debe usar conectores solo cuando sea necesario. No deben quedar lneas de flujo sin conectar. Se deben trazar los smbolos de manera que se puedan leer de arriba hacia abajo y de izquierda a derecha. Todo texto escrito dentro de un smbolo deber ser escrito claramente, evitando el uso de muchas palabras.

Ejemplos de Algoritmos y su respectivo Diagrama de Flujo. 1) Dado un conjunto de 100 nmeros naturales, desarrollar un algoritmo para determinar cuntos estn comprendidos entre 25 y 35, cuntos son mayores que 30 y cuantos son menores que 12. Algoritmo: 1) Inicio del Algoritmo. 2) Inicializar las variables que se van a utilizar como contadores: ME12=0; MA30=0; E25Y35=0. 3) Inicializar el lazo: C=1; representa los elementos que se han procesado. 4) Leer un valor del conjunto: N. 5) Si N > 12, haga: ME12 = ME12 + 1 y luego vaya al paso 8. 6) Si 25 < N < 35, haga E25Y35 = E25Y35 + 1 y contine, 7) Si N > 30, haga MA30 = MA30 + 1 y contine, 8) Verificar el fin del lazo, esto es cuando el nmero de elementos del conjunto es mayor que cien. Si C 100, haga C = C + 1 y vaya al paso 4 9) En caso de ser C > 100, Imprima: EXISTEN E25Y35 NMEROS ENTRE 25 Y 35 MA30 NMEROS MAYORES QUE 30 ME12 NMEROS MENORES QUE 12 10) Fin del Algoritmo.

Diagrama de Flujo:

INICIO

IniciInicio

ME = 0 MA = 0 E25Y35= 0

C=1

INTRODUCIR N SI ME12 = ME12 + 1 N< 12 NO

SI E25Y35 = E25Y35 + 1

25 < N < 35

NO SI MA30 = MA30 + 1 N> 30 NO

C=C+1

NO C> 100

SI

IMPRIMIR: EXISTEN: E25Y35 NMEROS ENTRE 25 Y 35 MA30 NMEROS MAYORES QUE 30 ME12 NMEROS MENORES QUE 12

2) Algoritmo y Diagrama de Flujo que describe el proceso de Elaboracin FIN de Harina de Maz Precocida.

El proceso de elaboracin de harina de maz precocida, consiste en la transformacin del maz en el alimento con que se elaboran las arepas, empanadas y otros. ALGORITMO 1) Inicio del proceso 2) Se recibe el maz en planta. 3) Se procede con la limpieza del maz, obteniendo maz limpio que se almacena en el silo de maz limpio e impurezas que van al silo de subproducto. 4) Con el maz limpio se realiza la desgerminacin, obtenindose el endospermo que se almacena en el respectivo silo y el sub-producto que va al silo de subproducto. 5) Con el endospermo se procede a aplicarle vapor para realizarle la coccin. 6) El endospermo cocido es transformado en hojuelas de maz. 7) Las hojuelas de maz son pasadas por los diferentes molinos obtenindose la Harina de Maz Precocida. 8) Se realizan los anlisis de control de calidad a la Harina, de no ser los correctos se procede a corregir y continuar. La harina se almacena en su silo. 9) La Harina es transportada del silo a la Empaquetadora y se procede a empaquetarla en paquetes de 1 Kg. 10)Se realizan los anlisis de control de calidad a los paquetes, si no son los correctos se desempaqueta la harina y es llevada al silo y se vuelve al paso 9. 11) Se colocan los paquetes en fardos de 20 Kg y luego en paletas de 60 fardos (1200 Kg) y es puesta en el almacn. 12) Fin del proceso

INICIO

INICIO LIMPIEZA DE MAZ

LIMPIEZA DEL MAZ

ENTRADA DE MAZ A PLANTA

PASE DEL MAZ POR LIMPIADORAS DESGERMINACIN DEL MAZ SI COCCIN Y LAMINADO DEL ENDOSPERMO ENVIAR MAZ LIMPIO AL SILO DE MAZ LIMPIO ES MAZ ? NO

MOLIENDA DE HOJUELAS

ENVIAR IMPUREZAS AL SILO DE SUB-PRODUCTO

EMPAQUE DE LA HARINA

ALMACENA R EL MAZ LIMPIO ALMACENA R LAS IMPUREZAS

FIN FIN

INICIO DESGERMINACIN DEL MAZ

INICIO COCCIN Y LAMINADO DEL ENDOSPERMO

ENVIAR EL MAZ LIMPIO AL 3er PISO

ENVIAR EL ENDOSPERMO AL 3er PISO HUMECTAR EL MAZ LIMPIO

HUMECTAR EL ENDOSPERMO

NO
14,5< HUMEDA D <16.5

NO
CORREGIR LA HUMECTACIN 16< HUMEDA D <18.5

SI

SI
PASAR EL MAZ POR EL PULIDOR

CORREGIR LA HUMECTACIN

SI
ES ENDOS PERMO ?

NO

INYECTARLE VAPOR SEGN EL FLUJO UTILIZADO

PASAR EL ENDOSPERMO POR EL SISTER

PASAR EL SUBPRODUCTO POR EL SECADO

PASAR EL ENDOSPERMO POR EL LAMINADOR UNA VEZ COCINADO

SI

ES MAZ ?

PASAR HOJUELAS POR SECADORA ALMACENAR EN SILO DE SUB-PRODUCTO

NO
ALMACENAR ENDOSPERMO EN EL SILO

SUBIR HOJUELAS AL 2do PISO

ALMACENAR EN BIN DE HOJUELAS INICIO MOLIENDA DE HOJUELAS

FIN

FIN

PASAR LA HOJUELA POR EL MOLINO 1BK

PASAR EL MATERIAL POR EL SISTER PASAR MATERIAL POR MOLINO 1SIZ PASAR MATERIAL POR MOLINO 2SIZ PASAR MATERIAL POR MOLINO 3SIZ PASAR MATERIAL POR MOLINO 4SIZ SUBIR LA HARINA AL 3er PISO COMO ES LA GRANULOMETRI A PASAR MATERIAL POR MOLINO 2BK PASAR MATERIAL POR MOLINO 3BK PASAR MATERIAL POR MOLINO 4BK

HACERLE MUESTRA DE CONTROL DE CALIDAD

CUMPLE CON PARMETR OS?

NO

SI

CORREGIR PARMETROS

DOSIFICAR CON VITAMINAS

ALMACENAR LA HARINA EN EL SILO

INICIO FIN EMPAQUE DE LA HARINA

TRANSPORTAR LA HARINA A LA EMPAQUETADORA

EMPAQUETAR EN PAQUETES DE 1KG

VERIFICAR PARMETROS DE CONTROL DE CALIDAD SUBIR LA HARINA AL SILO DE HARINA

CUMPLE CON PARMETR OS?

NO
DESEMPAQUETAR LOS PAQUETES

SI
COLOCAR 20 PAQUETES POR FARDO

COLOCAR 60 FARDOS POR PALETA

COLOCAR LAS PALETAS EN EL ALMACN

FIN

Software MATLAB: Es un software matemtico que ofrece un entorno de desarrollo

integrado (IDE) con un lenguaje de programacin propio (lenguaje M). Est disponible para las plataformas Unix, Windows y Apple Mac OS X. Antes de comenzar MATLAB, se deben tener las siguientes consideraciones generales: MATLAB distingue entre maysculas y minsculas. La comilla ' es la que, en un teclado estndar, se encuentra en la tecla de la interrogacin. Los comentarios deben ir precedidos por % o, lo que es lo mismo, MATLAB ignora todo lo que vaya precedido por el smbolo %. La ayuda de MATLAB es bastante til; para acceder a la misma basta teclear help. Es recomendable usarlo para obtener una informacin ms precisa sobre la sintaxis y diversas posibilidades de uso de los comandos. El Sistema MATLAB El sistema Matlab consiste de cinco partes principales: Entorno de desarrollo: Es el conjunto herramientas y mdulos que ayudan a usar las funciones y archivos de matlab. Muchas de esas herramientas son interfaces graficas de usuario. Esto incluye, el escritorio de matlab, la ventana de comandos, el historial de comandos, un editor y un depurador, navegadores para revisin de la ayuda, el espacio de trabajo o workspace y los archivos. La librera de funciones matemticas: esta es una gran coleccin de algoritmos computacionales que van desde funciones elemnteles como la suma, la funcin seno y coseno, y la aritmtica de nmeros complejos hasta funciones mucho ms sofisticadas como inversas de matrices, autovalores de matrices, funciones de bessel, y transformadas radiadas de Fourier.

El lenguaje MATLAB: Es un lenguaje de alto nivel para matrices con

sentencias para control de flujo, creacin de funciones y estructuras de datos, funciones de entrada/salida y algunas caractersticas de programacin orientada por objetos, Este lenguaje permite tanto la programacin a pequea escala para la creacin rpida de programas, como programacin a larga escala para la realizacin de aplicaciones complejas Grficas: Matlab cuenta con mdulos extensivos para la visualizacin de vectores y matrices en forma de grficas, as como para realizar comentarios e impresin de estas grficas. Matlab incluye funciones de alto nivel para la visualizacin de datos en dos y tres dimensiones, procesamiento de imgenes, animacin, y creacin de grficos de presentacin. Matlab tambin incluye funciones de bajo nivel que permiten personalizar completamente la apariencia de los grficos as como construir interfaces graficas de usuario para las aplicaciones. Interfaces Externas: Las interfaces externas son un conjunto de libreras que permiten la programacin en lenguaje C y FORTRAN de programas que interacten con matlab. Estas libreras proveen facilidades para realizar llamadas de rutinas desde Matlab.

El paquete MATLAB dispone de dos herramientas adicionales que expanden sus prestaciones: Simulink (plataforma de simulacin multidominio y ms usado ) GUIDE (editor de interfaces de usuario - GUI).

Cajas de herramientas y paquetes de bloques Las funcionalidades de Matlab se agrupan en ms de 35 cajas de herramientas y paquetes de bloques (para Simulink), clasificadas en las siguientes categoras: MATLAB (Cajas de herramientas) Matemticas y Optimizacin Estadstica y Anlisis de datos Diseo de sistemas de control y anlisis Procesado de seal y comunicaciones Procesado de imagen Pruebas y medidas Biologa computacional Modelado y anlisis financiero Desarrollo de aplicaciones Informes y conexin a bases de datos Simulink Modelado de punto fijo Modelado basado en eventos Modelado fsico Grficos de simulacin Diseo de sistemas de control y anlisis Procesado de seal y comunicaciones Generacin de cdigo Prototipos de control rpido y SW/HW HIL Tarjetas integradas Verificacin, validacin y comprobacin

Adems, se pueden ampliar las capacidades de MATLAB con las cajas de herramientas (toolboxes); y las de Simulink con los paquetes de bloques (blocksets). Es un software muy usado en universidades y centros de investigacin y desarrollo. En los ltimos aos ha aumentado el nmero de prestaciones, como la de programar directamente procesadores digitales de seal o crear cdigo VHDL. Origen: El software de aplicacin MATLAB, Fue creado por The MathWorks en 1984, nace como una solucin a la necesidad de crear una poderosa herramienta de clculo de mejorar las ya existentes, para resolver problemas de clculo complejos en los que es necesario aprovechar las amplias capacidades de proceso de datos de grandes computadores.

Surgiendo la primera versin de MATLAB con la idea de emplear

paquetes de subrutinas escritas en Fortran en los cursos de lgebra lineal y anlisis numrico, sin necesidad de escribir programas en dicho lenguaje. El lenguaje de programacin M fue creado en 1970 para proporcionar un sencillo acceso al software de matrices LINPACK y EISPACK sin tener que usar Fortran. En 2004, se estimaba que MATLAB era empleado por ms de un milln de personas en mbitos acadmicos y empresariales.

Caractersticas Bsicas de MATLAB MATLAB provee acceso inmediato a las caractersticas grficas especializadas requeridas en ingeniera y ciencias. Potente graficacin orientada a objetos grficos le permite graficar los resultados de su anlisis, incorporar grficos en sus modelos de sistemas, rpidamente presentar complejos 3-D objetos, y crear resultados de presentacin, entre lo cual se destaca: Entrada a Matlab: orden matlab o con el icono del programa Salida: orden exit o quit. Utilizacin: modo comando o mediante ficheros con secuencias de comandos Recuperar rdenes previas con las teclas de cursor del teclado(flecha arriba) No tiene en cuenta los espacios. El punto y coma al final de una expresin no visualiza su valor en la pantalla. Las variables no necesitan estar definidas antes de ser usadas y permanecen en memoria hasta que se ejecutan la orden de salir. Los nombres de variables difieren con maysculas y minsculas. Si la evaluacin de una expresin no se asigna a ninguna variable, la recibe Ans. Para obtener la lista de variables: who y whos Para borrarlas: clear, clear nom_var

Para guardar el espacio de trabajo (por defecto matlab.mat): save [nombre.mat] o File -> Save Workspace as... Para recuperar el espacio de trabajo: load [nombre.mat] o File -> Load Workspace as... % comentarios help [comando] help[toolbox] Operadores relacionales ==, ~=, <, >, <=, >= Funciones de Matlab Manipulacin y Reduccin de Datos MATLAB tiene un rango completo de funciones para preprocesar datos para anlisis, incluyendo: Y decimando Secciones de datos Y promediando Y procesando umbrales Y filtrando Numerosas operaciones para manipular arreglos multidimensionales, incluyendo reticulacin e interpolacin de datos, estn tambin disponibles. Descriptivos Grficos Para Explorar y Presentar Sus Datos Grficos de propsitos generales y de aplicacin especfica le permiten visualizar al instante seales, superficies paramtricas, imgenes y ms. Todos los atributos de los grficos de MATLAB son personalizables, desde los rtulos de ejes al ngulo de la fuente de luz en las superficies 3-D. Los grficos estn integrados con las capacidades de anlisis, de modo que usted puede mostrar grficamente cualquier conjunto de datos sin editar, ecuacin o resultado funcional. Aplicaciones El Matlab y la estadstica:

Combina poderosos algoritmos estadsticos con interfaces grficas interactivas. Las Statistics Toolbox le dan un rango ancho de herramientas para realizar clculos estadsticos. Proporciona una nica mezcla de facilidad grfica de uso y programabilidad. Los despliegues grficos interactivos le permitieron aplicar mtodos estadsticos fcilmente y de forma consistente, mientras el lenguaje de MATLAB le permite fcilmente crear los acostumbrados mtodos estadsticos y de anlisis. Librera de Aplicaciones de MATLAB MATLAB tiene una gran coleccin de funciones para el procesamiento de seal en el Signal Processing Toolbox. La MATLAB C Math Library proporciona al usuario la capacidad computacional de MATLAB en una librera en formato objeto enlazable. El objetivo principal de la C Math Library es soportar el desarrollo de aplicaciones 'stand alone' utilizando MATLAB y su compilador. GRAFICAS MATLAB provee excelentes funciones para grficas en dos, tres y cuatro dimensiones:

Software de programacin Octave o GNU Octave Octave o GNU Octave es un programa libre para realizar clculos numricos. Como indica su nombre es parte de proyecto GNU. MATLAB es considerado su equivalente comercial. Entre varias caractersticas que comparten se puede destacar que ambos ofrecen un intrprete permitiendo ejecutar rdenes en modo interactivo. Ntese que Octave no es un sistema de lgebra computacional como podra ser Mxima, sino que usa un lenguaje que est orientado al anlisis numrico. El proyecto fue creado alrededor del ao 1988 pero con una finalidad diferente: Ser utilizado en un curso de diseo de reactores qumicos. Posteriormente en el ao 1992, se decide extenderlo y comienza su desarrollo a cargo de John W. Eaton. La primera versin alpha fue lanzada el 4 de enero de 1993. Un ao ms tarde, el 17 de febrero de 1994 aparece la versin 1.0. El nombre surge del nombre de un profesor de unos de los autores conocido por sus buenas aproximaciones por medio de clculos mentales a problemas numricos. Caractersticas de OCTAVE Octave est escrito en C++ usando la librera STL. Tiene un intrprete de su propio lenguaje (de sintaxis similar a Matlab), y permite una ejecucin interactiva o por lotes. Puede extenderse el lenguaje con funciones y procedimientos por medios de mdulos dinmicos. Utiliza otros programas GNU para ofrecer al usuario crear grficos para luego imprimirlos o guardarlos (Grace). Dentro del lenguaje tambin se comporta como una consola de rdenes (shell). Esto permite listar contenidos de directorios, por ejemplo. Adems de correr en plataformas Unix tambin lo hace en Windows. Puede cargar archivos con funciones de Matlab de extensin .m.

El lenguaje Octave La sintaxis es similar a la utilizada en MATLAB. Es un lenguaje interpretado. No permite pasar argumentos por referencia. Siempre se pasan por valor. No permite punteros. Se pueden generar scripts. Soporta gran parte de las funciones de la librera estndar de C. Puede extenderse para ofrecer compatibilidad a las llamadas al sistema 2.1.2.- UNIX. El lenguaje est pensado para trabajar con matrices y provee mucha funcionalidad para trabajar con stas. No es un lenguaje de programacin orientado a objetos. Por lo tanto, no tiene clases ni objetos. Soporta estructuras similares a los "struct"s de C. Al ser su Licencia pblica general de GNU, puede ser copiado y utilizado libremente. MATLAB y OCTAVE Diferencias: Existen tres tipos de diferencias entre Matlab y Octave 1. Diferencias heredadas de las primeras versiones de Octave. En muchos casos se trata de funcionalidades de Octave que no tienen equivalente en Matlab. Pueden perfectamente considerarse extensiones al lenguaje Matlab. Estn perfectamente documentadas en un apndice del manual. 2. Funcionalidades de las ltimas versiones de Matlab que no han sido an implementadas en Octave. Siempre existen diferencias debido a que los desarrolladores de Octave estn apuntando un blanco en movimiento. 3. Diferencias debidas a la arquitectura de los intrpretes. Slo deberemos tenerlas en cuenta cuando escribamos extensiones al intrprete

mediante otros lenguajes de programacin. Mientras Matlab est programado en C, Octave lo est en C++ y hace un uso extensivo de la STL. Es mucho ms sencillo programar extensiones para Octave puesto que pone a disposicin del programador una extensiva librera en C++ que bien podra utilizarse De forma completamente independiente. De todos modos existe en Octave una capa de compatibilidad para las extensiones de Matlab. Semejanzas: Entre varias caractersticas que comparten se puede destacar que: Ambos ofrecen un intrprete permitiendo ejecutar rdenes en modo interactivo. MATLAB es considerado el equivalente comercial de OCTAVE. El lenguaje Octave La sintaxis es similar a la utilizada en MATLAB. Octave est escrito en C++ usando la librera STL VISUAL BASIC Visual Basic es un lenguaje de programacin desarrollado por Alan Cooper para Microsoft. El lenguaje de programacin es un dialecto de BASIC, con importantes aadidos. Su primera versin fue presentada en 1991 con la intencin de simplificar la programacin utilizando un ambiente de desarrollo completamente grfico que facilitar la creacin de interfaces grficas y en cierta medida tambin la programacin misma. Desde el 2001 Microsoft ha propuesto abandonar el desarrollo basado en la API Win32 y pasar a trabajar sobre un framework o marco comn de libreras independiente de la versin del sistema operativo, .NET Framework, a travs de Visual Basic .NET (y otros lenguajes como C Sharp (C#) de fcil transicin de cdigo entre ellos) que presenta serias incompatibilidades con el cdigo Visual Basic existente.

Ventajas Es un lenguaje RAD. Posee una curva de aprendizaje muy rpida. Integra el diseo e implementacin de formularios de Windows. Permite usar con suma facilidad la plataforma de los sistemas Windows dado que tiene acceso prcticamente total a la API de Windows incluidas libreras actuales. El cdigo en Visual Basic es fcilmente migrable a otros lenguajes. Es un lenguaje muy extendido por lo que resulta fcil encontrar informacin, documentacin y fuentes para los proyectos. Fcilmente extensible mediante libreras DLL y componentes ActiveX de otros lenguajes. Posibilidad de aadir soporte para ejecucin de scripts, VBScript o JScript, en las aplicaciones mediante Microsoft Script Control. Acceso a la API multimedia de DirectX (versiones 7 y 8). Tambin est disponible, de forma no oficial, un componente para trabajar con OpenGL 1.1: VBOpenGL type library Existe una versin integrada en las aplicaciones de Office, versiones tanto Windows como Mac, que permite programar macros para extender y automatizar funcionalidades en documentos como por ejemplo una hoja de clculo de EXCEL o una base de datos ACCESS (VBA) Es un entorno perfecto para realizar pequeos prototipos rpidos de ideas. Desventajas Sin soporte oficial de Microsoft desde el 4 de abril de 2008 (aunque existe mucha documentacin disponible en el sitio de MSDN incluidas descargas de Service Packs, paquetes de dependencias mnimas y similares en el sitio web de Microsoft).

No es multiplataforma (Sin embargo se pueden usar emuladores e interpretes para correrlos en otras plataformas). Por defecto permite la programacin sin declaracin de variables. (que puede ser sencillamente corregida escribiendo la frase Option Explicit en el encabezado de cada mdulo de cdigo, en cuyo caso ser menester declarar todas las variables a utilizar, lo que a la postre genera cdigo ms estable y seguro).

No permite programacin a bajo nivel ni incrustar secciones de cdigo en ASM (aunque es posible ejecutar cdigo ASM mediante pequeos hacks como este).

Slo soporta libreras dinmicas (DLL) que usen la convencin de llamadas _stdcall y componentes y libreras ActiveX. Es un lenguaje basado en objetos pero no implementa por completo la filosofa de Orientacin a Objetos (vase POO). No permite la sobrecarga de operadores ni mtodos. No permite nombres de espacio (vase namespace). No soporta el punteros a memoria salvo en algunas acciones concretas, como por ejemplo pasar la direccin de memoria de una funcin como argumento (operador AddressOf).

No soporta tratamiento de procesos como parte del lenguaje. No incluye operadores de desplazamiento de bits como parte del lenguaje. No permite el manejo de memoria dinmica, punteros, etc. como parte del lenguaje. No soporta el tratamiento de excepciones. Su tratamiento de errores se basa en la captura de mensajes y desvi del flujo de ejecucin de la forma tradicional del BASIC (On Error Goto <etiqueta/numero lnea>).

No controla todos los errores de conversin de tipos dado que en muchas ocasiones hace conversiones al vuelo (sobre todo al usar variables de tipo Variant).

Aunque existen opciones avanzadas en el compilador para desactivar los controladores de desbordamiento de enteros o las comprobaciones

de lmites en matrices entre otros (presumiblemente para optimizar y lograr algo de rendimiento) no es seguro del todo dado que hay ms posibilidades de generar una excepcin grave no controlada por el intrprete (y por consiguiente el programador) o un memory leak haciendo el programa altamente inestable e impredecible. No tiene instrucciones de preprocesamiento. El tratamiento de mensajes de Windows es bsico e indirecto. La gran gama de controles incorporados son, sin embargo en algunos casos, muy generales, lo que lleva a tener que reprogramar nuevos controles para una necesidad concreta de la aplicacin. Esto cambia radicalmente en Visual Basic .NET donde es posible reprogramar y mejorar o reutilizar los controles existentes. El depurador no es demasiado flexible ni cmodo en ciertas situaciones. Los controles personalizados no mejoran la potencia de la API de Windows, y en determinados casos acudir a sta ser el nico modo de conseguir el control personalizado deseado. No soporta correctamente la programacin multihilo haciendo muy inestable su ejecucin inclusive desde el propio entorno de desarrollo. Su fuerte dependencia de libreras y componentes ActiveX que requieren de privilegios de administrador para poder instalar las aplicaciones (existen opciones de terceras aplicaciones para generar ejecutables independientes que embeben las dependencias en el propio cdigo del ejecutable, por ejemplo: Molebox o Thinstall/VMware Thinapp).

Lenguaje de programacin C

C es un lenguaje de programacin creado en 1972 por Dennis M. Ritchie en los Laboratorios Bell como evolucin del anterior es decir el lenguaje B, a su vez basado en BCPL. Al igual que B, es un lenguaje orientado a la implementacin de Sistemas Operativos, concretamente Unix. C es apreciado por la eficiencia del

cdigo que produce y es el lenguaje de programacin ms popular para crear software de sistemas, aunque tambin se utiliza para crear aplicaciones. Se trata de un lenguaje dbilmente tipificado de medio nivel pero con muchas caractersticas de bajo nivel. Dispone de las estructuras tpicas de los lenguajes de alto nivel pero, a su vez, dispone de construcciones del lenguaje que permiten un control a muy bajo nivel. Los compiladores suelen ofrecer extensiones al lenguaje que posibilitan mezclar cdigo en ensamblador con cdigo C o acceder directamente a memoria o dispositivos perifricos.

Caractersticas Un ncleo del lenguaje simple, con funcionalidades aadidas

importantes, como funciones matemticas y de manejo de archivos, proporcionadas por bibliotecas. Es un lenguaje muy flexible que permite programar con mltiples estilos. Uno de los ms empleados es el estructurado "no llevado al extremo" (permitiendo ciertas licencias de ruptura). Un sistema de tipos que impide operaciones sin sentido. Usa un lenguaje de preprocesado, el preprocesador de C, para tareas como definir macros e incluir mltiples archivos de cdigo fuente. Acceso a memoria de bajo nivel mediante el uso de punteros. Interrupciones al procesador con uniones. Un conjunto reducido de palabras clave. Por defecto, el paso de parmetros a una funcin se realiza por valor. El paso por referencia se consigue pasando explcitamente a las funciones las direcciones de memoria de dichos parmetros. Punteros a funciones y variables estticas, que permiten una forma rudimentaria de encapsulado y polimorfismo. Tipos de datos agregados (struct) que permiten que datos relacionados (como un empleado, que tiene un id, un nombre y un salario) se

combinen y se manipulen como un todo (en una nica variable "empleado").

Ventajas

Lenguaje muy eficiente puesto que es posible utilizar sus caractersticas de bajo nivel para realizar implementaciones ptimas. A pesar de su bajo nivel es el lenguaje ms portado en existencia, habiendo compiladores para casi todos los sistemas conocidos. Proporciona facilidades para realizar programas modulares y/o utilizar cdigo o bibliotecas existentes.

Desventajas

El mayor problema que presenta el lenguaje C frente a los lenguajes de tipo de dato dinmico es la gran diferencia en velocidad de desarrollo: es mucho ms lento programar en C. La razn estriba en que el compilador de C se limita a traducir cdigo sin apenas aadir nada. La gestin de la memoria es un ejemplo clsico: en C el programador ha de reservar y liberar la memoria explcitamente. En otros lenguajes (como BASIC, Matlab o C#) la memoria es gestionada de forma transparente para el programador. Esto alivia la carga de trabajo humano y en muchas ocasiones previene errores. El mantenimiento tambin es ms difcil y costoso que con lenguajes de ms alto nivel. El cdigo en C se presta a sentencias cortas y enrevesadas de difcil interpretacin. Aunque el lenguaje admite cdigo escrito de forma fcilmente legible, si no se siguen normas en el equipo de programacin algunos programadores pueden acabar escribiendo cdigo difcil de leer. Esto complica la revisin y el mantenimiento. Lenguaje C no dispone de sistemas de control automticos y la seguridad depende casi exclusivamente de la experiencia del programador. La

mayor parte de los problemas de seguridad en los sistemas informticos actuales deriva de haber sido realizados en C. El fallo de seguridad clsico consiste en que algunas entradas de informacin al programa no se comprueban en longitud. Si un atacante introduce datos lo bastante grandes puede provocar la sobreescritura de cdigo en la pila del programa e incluso llegar a forzar la ejecucin de cdigo pernicioso. Los lenguajes de tipo dinmico cuentan con controles de gestin de memoria y de entrada de datos automticos. Por estas razones, los directores de desarrollo han de sopesar la ventaja en eficiencia de un buen programa en C frente a la mayor duracin del trabajo y los riesgos de seguridad y estabilidad. Han de tener en cuenta adems, que los equipos bajan de precio con el tiempo mientras que el coste de los programadores aumenta.

Variantes

Desde el inicio del lenguaje han surgido varias ramas de evolucin que han generado varios lenguajes: Objective-C es un primer intento de proporcionar soporte para la programacin orientada a objetos en C, de escasa difusin, pero actualmente usado en Mac OS X y GNUstep. C++ diseado por Bjarne Stroustrup fue el segundo intento de proporcionar orientacin a objetos a C y es la variante ms difundida y aceptada. Esta versin combina la flexibilidad y el acceso de bajo nivel de C con las caractersticas de la programacin orientada a objetos como abstraccin, encapsulacin y ocultacin. Tambin se han creado numerosos lenguajes inspirados en la sintaxis de C, pero que no son compatibles con l:

Java, que une una sintaxis inspirada en la del C++ con una orientacin a objetos ms similar a la de Smalltalk y Objective C. JavaScript, un lenguaje de scripting creado en Netscape e inspirado en la sintaxis de Java diseado para dar a las pginas web mayor interactividad. A la versin estandarizada se la conoce como ECMAScript.

C# (pronunciado C Sharp) es un lenguaje desarrollado por Microsoft derivado de C/C++ y Java. Aplicabilidad Hecho principalmente para la fluidez de programacin en sistemas

UNIX. Se usa tambin para el desarrollo de otros sistemas operativos como Windows o Linux. Igualmente para aplicaciones de escritorio como OpenOffice.org, cuyo principal lenguaje de programacin es C. De la misma forma, es muy usado en aplicaciones cientficas (para experimentos informticos, fsicos, qumicos, matemticos, entre otros, parte de ellos conocidos como modelos y simuladores), industriales (industria robtica, ciberntica, sistemas de informacin y base de datos para la industria petrolera y petroqumica. Predominan tambin todo lo que se refiere a simulacin de mquinas de manufactura), simulaciones de vuelo (es la ms delicada, ya que se tienen que usar demasiados recursos tanto de hardware como de software para desarrollar aplicaciones que permitan simular el vuelo real de una aeronave. Se aplica por tanto, en diversas reas desconocidas por gran parte de los usuarios noveles. Los ordenadores de finales de los 90 son varios rdenes de magnitud ms potentes que las mquinas en que C se desarroll originalmente. Programas escritos en lenguajes de tipo dinmico y fcil codificacin (Ruby, Python, Perl...) que antao hubieran resultado demasiado lentos, son lo bastante rpidos como para desplazar en uso a C. Aun as, se puede seguir encontrando cdigo C en grandes desarrollos de animaciones, modelados y

escenas en 3D en pelculas y otras aplicaciones multimedia. Actualmente, los grandes proyectos de software se dividen en partes, dentro de un equipo de desarrollo. Aquellas partes que son ms "burocrticas" o "de gestin" con los recursos del sistema, se suelen realizar en lenguajes de tipo dinmico o de guin (script), mientras que aquellas partes "crticas", por su necesidad de rapidez de ejecucin, se realizan en un lenguaje de tipo compilado, como C o C++. Si, despus de hacer la divisin, las partes crticas no superan un cierto porcentaje del total (aproximadamente el 10%) entonces todo el desarrollo se realiza con lenguajes dinmicos. Si la parte crtica no llega a cumplir las expectativas del proyecto, se comparan las alternativas de una inversin en nuevo hardware frente a invertir en el coste de un programador para qu reescriba dicha parte crtica. Lenguaje C++ C++ es un lenguaje de programacin diseado a mediados de los aos 1980 por Bjarne Stroustrup. La intencin de su creacin fue el extender al exitoso lenguaje de programacin C con mecanismos que permitan la manipulacin de objetos. En ese sentido, desde el punto de vista de los lenguajes orientados a objetos, el C++ es un lenguaje hbrido. Posteriormente se aadieron facilidades de programacin genrica, que se sum a los otros dos paradigmas que ya estaban admitidos (programacin estructurada y la programacin orientada a objetos). Por esto se suele decir que el C++ es un lenguaje de programacin multiparadigma. Actualmente existe un estndar, denominado ISO C++, al que se han adherido la mayora de los fabricantes de compiladores ms modernos. Existen tambin algunos intrpretes, tales como ROOT. Una particularidad del C++ es la posibilidad de redefinir los operadores (sobrecarga de operadores), y de poder crear nuevos tipos que se comporten como tipos fundamentales.

El nombre C++ fue propuesto por Rick Mascitti en el ao 1983, cuando el lenguaje fue utilizado por primera vez fuera de un laboratorio cientfico. Antes se haba usado el nombre "C con clases". En C++, la expresin "C++" significa "incremento de C" y se refiere a que C++ es una extensin de C.

Un ejemplo de programa en C++, buenos das A continuacin se cita un programa de ejemplo Hola mundo escrito en C++: # include <iostream> // Esta biblioteca permite el uso de cout(<<) y de cin(>>) using namespace std; int main() { cout << " buenos das " << endl; return 0; } Al usar la directiva #include estamos dicindole al compilador que busque determinadas cosas en un archivo que se llama iostream. Para evitar redefinir cosas ya hechas al ponerles igual nombre, se cre algo llamado espacios de nombres o namespace en el singular del ingls. En este caso hay un espacio de nombres llamado std, que es donde se incluyen las definiciones, entre muchas otras cosas del objeto cout, que representa el flujo de salida estndar (tpicamente la pantalla o una ventana de texto), y todo esto es exactamente lo que decimos al aadir la sentencia using namespace std. La definicin de funciones es igual que en C, salvo por la caracterstica de que si main no va a recoger argumentos, no tenemos por qu ponrselos, a diferencia de C, donde haba que ponerlos explcitamente, aunque no se fueran a usar. Queda solo comentar que el smbolo << se conoce como operador de

insercin, y grosso modo est enviando a cout lo que queremos mostrar por pantalla para que lo pinte, en este caso la cadena "Hola mundo!. El mismo operador << se puede usar varias veces en la misma sentencia, de forma que gracias a esta caracterstica podemos poner un carcter endl al final, que es el equivalente del \n en C o \n\r, segn el sistema en que se est programando. Para los usuarios de Windows que no conocen la consola, para poder ver el buenos das agreguen la lnea system("PAUSE"); // Este operador se incluye solamente en Windows antes del return 0; Otro ejemplo de utilidad del lenguaje de programacin se encuentra el rea de clculo, de volumen, superficie entre otros: Programa para calcular el valor y superficie de una esfera . #Include<Stdio.h> /*Superficie y volumen de una esfera*/ Mam() { Int volumen,area,r; Printf(introdusca el valor r/h); Scanf(%d,r); Volumen=(4*3.1416*r*r*r/3); %d\n,volumen); Area=4*3,1416*r*r; Prinf(area=%d\n,area); Scanf(%,r); Retur 0; } Prinf(volumen=

Constructores

Son unos mtodos especiales que se ejecutan automticamente al crear un objeto de la clase. En su declaracin no se especifica el tipo de dato que devuelven, y poseen el mismo nombre que la clase a la que pertenecen. Al igual que otros mtodos, puede haber varios constructores sobrecargados, aunque no pueden existir constructores virtuales. Como caracterstica especial a la hora de implementar un constructor, justo despus de la declaracin de los parmetros, se encuentra lo que se llama "lista de inicializadores". Su objetivo es llamar a los constructores de los atributos que conforman el objeto a construir. Cabe destacar que no es necesario declarar un constructor al igual que un destructor, pues el compilador lo puede hacer, aunque no es la mejor forma de programar. Existen varios tipos de constructores en C++:

Constructor predeterminado. Es el constructor que no recibe ningn parmetro en la funcin. Si no se definiera ningn constructor, el sistema proporcionara uno predeterminado. Es necesario para la construccin de estructuras y contenedores de la STL.

Constructor de copia. Es un constructor que recibe un objeto de la misma clase, y realiza una copia de los atributos del mismo. Al igual que el predeterminado, si no se define, el sistema proporciona uno.

Constructor de conversin. Este constructor, recibe como nico parmetro, un objeto o variable de otro tipo distinto al suyo propio. Es decir, convierte un objeto de un tipo determinado a otro objeto del tipo que estamos generando. Destructores Los destructores son funciones miembro especiales llamadas

automticamente en la ejecucin del programa, y por tanto no tienen por qu ser llamadas explcitamente por el programador. Su cometido es liberar los recursos computacionales que el objeto de dicha clase haya adquirido en

tiempo de ejecucin al expirar este. Los destructores son invocados automticamente al alcanzar el flujo del programa el fin del mbito en el que est declarado el objeto. Existen dos tipos de destructores pueden ser pblicos o privados, segn si se declaran: si es pblico se llama desde cualquier parte del programa para destruir el objeto. si es privado no se permite la destruccin del objeto por el usuario. Lenguaje de programacin Java Java es un lenguaje de programacin orientado a objetos desarrollado por Sun Microsystems a principios de los aos 90. El lenguaje en s mismo toma mucha de su sintaxis de C y C++, pero tiene un modelo de objetos ms simple y elimina herramientas de bajo nivel, que suelen inducir a muchos errores, como la manipulacin directa de punteros o memoria. Java le permite a los usuarios jugar en lnea, participar en sesiones de chat con internautas de todo el mundo, calcular los intereses de una hipoteca y ver imgenes en tres dimensiones, entre otras muchas aplicaciones. Es tambin esencial para las aplicaciones de intranet y otras soluciones de comercio electrnico que constituyen la base informtica de las empresas. Historia Java se cre como una herramienta de programacin para ser usada en un proyecto de set-top-box en una pequea operacin denominada the Green Project en Sun Microsystems en el ao 1991. El equipo (Green Team), compuesto por trece personas y dirigido por James Gosling, trabaj durante 18 meses en Sand Hill Road en Menlo Park en su desarrollo. El lenguaje se denomin inicialmente Oak (por un roble que haba fuera de la oficina de Gosling), luego pas a denominarse Green tras descubrir que Oak era ya una marca comercial registrada para adaptadores de tarjetas grficas y finalmente se renombr a Java.

El trmino Java fue acuado en una cafetera frecuentada por algunos de los miembros del equipo. Pero no est claro si es un acrnimo o no, aunque algunas fuentes sealan que podra tratarse de las iniciales de sus creadores: James Gosling, Arthur Van Hoff, y Andy Bechtolsheim. Otros abogan por el siguiente acrnimo, Just Another Vague Acronym ("slo otro acrnimo ambiguo ms"). La hiptesis que ms fuerza tiene es la que Java debe su nombre a un tipo de caf disponible en la cafetera cercana, de ah que el icono de java sea una taza de caf caliente. Un pequeo signo que da fuerza a esta teora es que los 4 primeros bytes (el nmero mgico) de los archivos.class que genera el compilador, son en hexadecimal, 0xCAFEBABE. A pesar de todas estas teoras, el nombre fue sacado al parecer de una lista aleatoria de palabras. Los objetivos de Gosling eran implementar una mquina virtual y un lenguaje con una estructura y sintaxis similar a C++. Entre junio y julio de 1994, tras una sesin maratoniana de tres das entre John Gaga, James Gosling, Patrick Naughton, Wayne Rosing y Eric Schmidt, el equipo reorient la plataforma hacia la Web. Sintieron que la llegada del navegador web Mosaic, propiciara que Internet se convirtiese en un medio interactivo, como el que pensaban era la televisin por cable. Naughton cre entonces un prototipo de navegador, WebRunner, que ms tarde sera conocido como HotJava. En 1994, se les hizo una demostracin de HotJava y la plataforma Java a los ejecutivos de Sun. Java 1.0a pudo descargarse por primera vez en 1994, pero hubo que esperar al 23 de mayo de 1995, durante las conferencias de SunWorld, a que vieran la luz pblica Java y HotJava, el navegador Web. El acontecimiento fue anunciado por John Gage, el Director Cientfico de Sun Microsystems. El acto estuvo acompaado por una pequea sorpresa adicional, el anuncio por parte de Marc Andreessen, Vicepresidente Ejecutivo de Netscape, de que Java sera soportado en sus navegadores. El 9 de enero del ao siguiente, 1996, Sun fund el grupo empresarial JavaSoft para que se encargase del desarrollo tecnolgico. Dos semanas ms tarde la primera versin de Java fue publicada.

La promesa inicial de Gosling era Write Once, Run Anywhere (Escrbelo una vez, ejectalo en cualquier lugar), proporcionando un lenguaje independiente de la plataforma y un entorno de ejecucin (la JVM) ligero y gratuito para las plataformas ms populares de forma que los binarios (bytecode) de las aplicaciones Java pudiesen ejecutarse en cualquier plataforma.

Filosofa El lenguaje Java se cre con cinco objetivos principales: 1. Debera usar el paradigma de la programacin orientada a objetos. 2. Debera permitir la ejecucin de un mismo programa en mltiples sistemas operativos. 3. Debera incluir por defecto soporte para trabajo en red. 4. Debera disearse para ejecutar cdigo en sistemas remotos de forma segura. 5. Debera ser fcil de usar y tomar lo mejor de otros lenguajes orientados a objetos, como C++. Orientado a objetos La primera caracterstica, orientado a objetos (OO), se refiere a un mtodo de programacin y al diseo del lenguaje. Aunque hay muchas interpretaciones para OO, una primera idea es disear el software de forma que los distintos tipos de datos que usen estn unidos a sus operaciones. As, los datos y el cdigo (funciones o mtodos) se combinan en entidades llamadas objetos. Un objeto puede verse como un paquete que contiene el comportamiento (el cdigo) y el estado (datos). El principio es separar aquello que cambia de las cosas que permanecen inalterables. Independencia de la plataforma

La segunda caracterstica, la independencia de la plataforma, significa que programas escritos en el lenguaje Java pueden ejecutarse igualmente en cualquier tipo de hardware. Este es el significado de ser capaz de escribir un programa una vez y que pueda ejecutarse en cualquier dispositivo, tal como reza el axioma de Java, write once, run anywhere.

El recolector de basura En Java el problema de las fugas de memoria se evita en gran medida gracias a la recoleccin de basura (o automatic garbage collector). El programador determina cundo se crean los objetos y el entorno en tiempo de ejecucin de Java (Java runtime) es el responsable de gestionar el ciclo de vida de los objetos. El programa, u otros objetos pueden tener localizado un objeto mediante una referencia a ste. Cuando no quedan referencias a un objeto, el recolector de basura de Java borra el objeto, liberando as la memoria que ocupaba previniendo posibles fugas (ejemplo: un objeto creado y nicamente usado dentro de un mtodo slo tiene entidad dentro de ste; al salir del mtodo el objeto es eliminado). Aun as, es posible que se produzcan fugas de memoria si el cdigo almacena referencias a objetos que ya no son necesarios es decir, pueden an ocurrir, pero en un nivel conceptual superior. En definitiva, el recolector de basura de Java permite una fcil creacin y eliminacin de objetos y mayor seguridad. Sintaxis La sintaxis de Java se deriva en gran medida de C++. Pero a diferencia de ste, que combina la sintaxis para programacin genrica, estructurada y orientada a objetos, Java fue construido desde el principio para ser completamente orientado a objetos. Todo en Java es un objeto (salvo algunas excepciones), y todo en Java reside en alguna clase (recordemos que una clase es un molde a partir del cual pueden crearse varios objetos).

El entorno de ejecucin era relativamente seguro y los principales navegadores web pronto incorporaron la posibilidad de ejecutar applets Java incrustadas en las pginas web. Java ha experimentado numerosos cambios desde la versin primigenia, JDK 1.0, as como un enorme incremento en el nmero de clases y paquetes que componen la biblioteca estndar. Las aplicaciones Java estn tpicamente compiladas en un bytecode, aunque la compilacin en cdigo mquina nativo tambin es posible. En el tiempo de ejecucin, el bytecode es normalmente interpretado o compilado a cdigo nativo para la ejecucin, aunque la ejecucin directa por hardware del bytecode por un procesador Java tambin es posible. La implementacin original y de referencia del compilador, la mquina virtual y las bibliotecas de clases de Java fueron desarrolladas por Sun Microsystems en 1995. Desde entonces, Sun ha controlado las especificaciones, el desarrollo y evolucin del lenguaje a travs del Java Community Process, si bien otros han desarrollado tambin implementaciones alternativas de estas tecnologas de Sun, algunas incluso bajo licencias de software libre. Entre noviembre de 2006 y mayo de 2007, Sun Microsystems liber la mayor parte de sus tecnologas Java bajo la licencia GNU GPL, de acuerdo con las especificaciones del Java Community Process, de tal forma que prcticamente todo el Java de Sun es ahora software libre (aunque la biblioteca de clases de Sun que se requiere para ejecutar los programas Java an no lo es).

Entornos de funcionamiento: El diseo de Java, su robustez, el respaldo de la industria y su fcil portabilidad han hecho de Java uno de los lenguajes con un mayor crecimiento y amplitud de uso en distintos mbitos de la industria de la informtica. En dispositivos mviles y sistemas empotrados

En el navegador web En sistemas de servidor En aplicaciones de escritorio Plataformas soportadas

Aplicaciones con ventanas Swing es la biblioteca para la interfaz grfica de usuario avanzada de la plataforma Java SE. Las instrucciones import indican al compilador de Java que las clases e interfaces del paquete javax.swing se incluyan en la compilacin. La clase Hola extiende (extends) la clase javax.swing.JFrame, que implementa una ventana con una barra de ttulo y un control para cerrarla. El constructor Hola () inicializa el marco o frame llamando al mtodo setDefaultCloseOperation (int) heredado de JFrame para establecer las operaciones por defecto cuando el control de cierre en la barra de ttulo es seleccionado al valor WindowConstants.DISPOSE_ON_CLOSE. Esto hace que se liberen los recursos tomados por la ventana cuando es cerrada, y no simplemente ocultada, lo que permite a la mquina virtual y al programa acabar su ejecucin. A continuacin se crea un objeto de tipo JLabel con el texto "Hola, mundo!", y se aade al marco mediante el mtodo add (Component), heredado de la clase Container. El mtodo pack(), heredado de la clase Windows, es invocado para dimensionar la ventana y distribuir su contenido. El mtodo main() es llamado por la JVM al comienzo del programa. Crea una instancia de la clase Hola y hace la ventana sea mostrada invocando al mtodo setVisible (boolean) de la superclase (clase de la que hereda) con el parmetro a true. Vase que, una vez el marco es dibujado, el programa no termina cuando se sale del mtodo main(), ya que el cdigo del que depende

se encuentra en un hilo de ejecucin independiente ya lanzado, y que permanecer activo hasta que todas las ventanas hayan sido destruidas.

Entornos de funcionamiento El diseo de Java, su robustez, el respaldo de la industria y su fcil portabilidad han hecho de Java uno de los lenguajes con un mayor crecimiento y amplitud de uso en distintos mbitos de la industria de la informtica.

En dispositivos mviles y sistemas empotrados Desde la creacin de la especificacin J2ME (Java 2 Platform, Micro Edition), una versin del entorno de ejecucin Java reducido y altamente optimizado, especialmente desarrollado para el mercado de dispositivos electrnicos de consumo se ha producido toda una revolucin en lo que a la extensin de Java se refiere. Es posible encontrar microprocesadores especficamente diseados para ejecutar bytecode Java y software Java para tarjetas inteligentes (JavaCard), telfonos mviles, buscapersonas, set-top-boxes, sintonizadores de TV y otros pequeos electrodomsticos. El modelo de desarrollo de estas aplicaciones es muy semejante a las applets de los navegadores salvo que en este caso se denominan MIDlets.

En el navegador web Desde la primera versin de java existe la posibilidad de desarrollar pequeas aplicaciones (Applets) en Java que luego pueden ser incrustadas en una pgina HTML para que sean descargadas y ejecutadas por el navegador web. Estas mini-aplicaciones se ejecutan en una JVM que el navegador tiene configurada como extensin (plug-in) en un contexto de seguridad restringido

configurable para impedir la ejecucin local de cdigo potencialmente malicioso. Las applets Java no son las nicas tecnologas (aunque s las primeras) de componentes complejos incrustados en el navegador. Otras tecnologas similares pueden ser: ActiveX de Microsoft, Flash, Java Web Start, etc. En sistemas de servidor En la parte del servidor, Java es ms popular que nunca, desde la aparicin de la especificacin de Servlets y JSP (Java Server Pages).

Hasta entonces, las aplicaciones web dinmicas de servidor que existan se basaban fundamentalmente en componentes CGI y lenguajes interpretados. Ambos tenan diversos inconvenientes (fundamentalmente lentitud, elevada carga computacional o de memoria y propensin a errores por su interpretacin dinmica). Los servlets y las JSPs supusieron un importante avance ya que: *0 *1 El API de programacin es muy sencilla, flexible y extensible. Los servlets no son procesos independientes (como los CGIs) y por

tanto se ejecutan dentro del mismo proceso que la JVM mejorando notablemente el rendimiento y reduciendo la carga computacional y de memoria requeridas. *2 Las JSPs son pginas que se compilan dinmicamente (o se pre-

compilan previamente a su distribucin) de modo que el cdigo que se consigue una ventaja en rendimiento substancial frente a muchos lenguajes interpretados. La especificacin de Servlets y JSPs define un API de programacin y los requisitos para un contenedor (servidor) dentro del cual se puedan desplegar estos componentes para formar aplicaciones web dinmicas completas. Hoy da existen multitud de contenedores (libres y comerciales) compatibles con estas especificaciones.

En aplicaciones de escritorio Hoy en da existen multitud de aplicaciones grficas de usuario basadas en Java. El entorno de ejecucin Java (JRE) se ha convertido en un componente habitual en los PC de usuario de los sistemas operativos ms usados en el mundo. Adems, muchas aplicaciones Java lo incluyen dentro del propio paquete de la aplicacin de modo que se ejecuten en cualquier PC. En las primeras versiones de la plataforma Java existan importantes limitaciones en las APIs de desarrollo grfico (AWT). Desde la aparicin de la biblioteca Swing la situacin mejor substancialmente y posteriormente con la aparicin de bibliotecas como SWT hacen que el desarrollo de aplicaciones de escritorio complejas y con gran dinamismo, usabilidad, etc. sea relativamente sencillo.

Plataformas soportadas Una versin del entorno de ejecucin Java JRE (Java Runtime Environment) est disponible en la mayora de equipos de escritorio. Sin embargo, Microsoft no lo ha incluido por defecto en sus sistemas operativos. En el caso de Apple, ste incluye una versin propia del JRE en su sistema operativo, el Mac OS. Tambin es un producto que por defecto aparece en la mayora de las distribuciones de GNU/Linux. Debido a incompatibilidades entre distintas versiones del JRE, muchas aplicaciones prefieren instalar su propia copia del JRE antes que confiar su suerte a la aplicacin instalada por defecto. Los desarrolladores de applets de Java o bien deben insistir a los usuarios en la actualizacin del JRE, o bien desarrollar bajo una versin antigua de Java y verificar el correcto funcionamiento en las versiones posteriores. Programacin Expresiones

Las expresiones son un conjunto de elementos o tokens junto con literales que son evaluados para devolver un resultado. Los tokens son elemento ms pequeo de un programa que es significativo, e interpretado o entendido por el compilador, en java los tokens se dividen en cinco categoras que son: Identificadores: Son las representaciones que se les da a los nombres que se asignan a las variables, clases, paquetes, mtodos y constantes en el cdigo de java para que el compilador los identifique y el programador pueda entenderlos. En java los identificadores pueden diferenciar entre maysculas o minsculas por ser case sensitive, por lo que la variable cuyo nombre sea Mivariable, no es igual a mivarialble, ya que java identifica estas como variables diferentes por el case sensitive, tambin se puede utilizar nmeros, o el signo _ para asignar un identificador. Palabras claves: Son los identificadores reservados por java para cumplir con un objetivo especfico en el cdigo y el compilador, se usan de forma limitada y en casos especficos. Las palabras claves que usa java son las siguientes:

abstract Catch Do Final implements Long Private Static Throw Void byvalue

boolean char double finally import native protected super throws volatile cast

break class else float instanceof new public switch transient while const

byte continue extends for int null return syncroniced true var future

case default false if interface package short this try rest generic

Goto

inner

operator

outer

Las palabras que se encuentran en negrilla, son palabras claves para java aunque actualmente no se utilicen en la versin de java, pero se pretenden integrar en las siguientes versiones de java. Las palabras como true, false o null tambin son palabras claves pero son palabras reservadas en java por lo cual no pueden ser utilizadas como un identificador. Literales y constantes: Los literales son sintaxis para asignar valores a una variable, es decir el valor que puede tomar una variable, tambin es un valor constante que puede ser de tipo numrico. Las constantes son variables que tienen un valor fijo y no puede ser modificado en el trascurso de la ejecucin del cdigo, estas se declaran por medio de los modificadores final y static. final static double pi= 3.1416; Operadores: Son los que nos indican una evaluacin que se aplica a un objeto o un dato, sobre un identificador o constante. Un ejemplo de operadores puede ser la suma, resta o multiplicacin. Separadores: Se utilizan para indicarle al compilador de java donde se ubican los elementos del cdigo, los separadores que admite java son: { },:; Tambin el compilador de java identifica y elimina los comentarios, retornos de carros espacios vacos y de tabulacin a la hora de compilar por lo que no son considerados parte de un tokens. Las expresiones pueden ser una combinacin en secuencia de variables, operadores y mtodos. Las expresiones son utilizadas para realizar clculos, para asignar valores a variables, o para controlar la ejecucin del flujo del programa. Operadores

Los operadores son aquellos que tras realizar una operacin devuelven un resultado, estos se puede caracterizar por el nmero de operadores, el tipo de operandos, y el resultado que generan. Nmero de operandos. Pueden ser de dos tipos unarios, y binarios. Los unarios son aquellos que solo necesitan de un operando para devolver un valor, mientras que los binarios necesitan de dos o ms operandos.

Operadores unarios. Operador ! ~ Descripcin Cambio de signo Operador NOT Complemento a 1

Operadores binarios. Operadores +-*/% == != < > <= >= && || ^ ^ << >> >>> + Descripcin Operadores aritmticos Operadores relacionales Operadores booleanos Operadores a nivel de bit Concatenacin de cadenas

Operadores a nivel de bit Los operadores a nivel de bit nos permiten realizar operaciones sobre nmeros binarios. ~ Complemento a 1, este operador invierte los dgitos, cambiando los 0 por 1 y los 1 por 0, un ejemplo puede ser:

11001011 ~ 11001011 resultado 00110100 Como se puede ver se cambian los valores de 0 a 1 y de 1 a 0. & AND a nivel de bit , este operador realiza una operacin AND o suma entre dos nmeros de bit, en donde si dos bit son igual a 1 el resultado ser 1, de lo contrario ser 0, un ejemplo puede ser: 01001101 & 10011011 ______________ 00001001 | O a nivel de bit, este operador realiza una operacin OR en donde si alguno de los dos nmeros es 1 el resultado ser 1, un ejemplo puede ser: 11001101 | 01011101 ______________ 11011101 ^ XOR a nivel de bit, este operador realiza la operacin XOR en donde si los dos nmeros son iguales el resultado ser 0 de lo contrario ser 1, un ejemplo puede ser: 00101001 ^ 01101101 ______________ 01000100

<< Desplazamiento a la izquierda, este operador desplaza n cantidad de espacios a la izquierda un bit, un ejemplo puede ser;

01101110 01101110 << 2 = 11011100

Como se puede ver al realizar el desplazamiento se realiza una insercin de un dgito 0 a la derecha. Crticas En 1995 alguien dijo que Java fue creado para abrir una nueva va en la gestin de software complejo, y es por regla general aceptado que se ha comportado bien en ese aspecto. Sin embargo no puede decirse que Java no tenga grietas, ni que se adapta completamente a todos los estilos de programacin, todos los entornos, o todas las necesidades. General Java no ha aportado capacidades estndares para aritmtica en punto flotante. El estndar IEEE 754 para Estndar para Aritmtica Binaria en Punto Flotante apareci en 1985, y desde entonces es el estndar para la industria. Y aunque la aritmtica flotante de Java (cosa que cambi desde el 13 de noviembre de 2006, cuando se abri el cdigo fuente y se adopt la licencia GPL, aparte de la ya existente) se basa en gran medida en la norma del IEEE, no soporta an algunas caractersticas. Ms informacin al respecto puede encontrarse en la seccin final de enlaces externos. El lenguaje En un sentido estricto, Java no es un lenguaje absolutamente orientado a objetos, a diferencia de, por ejemplo, Ruby o Smalltalk. Por motivos de eficiencia, Java ha relajado en cierta medida el paradigma de orientacin a objetos, y as por ejemplo, no todos los valores son objetos. El cdigo Java puede ser a veces redundante en comparacin con otros lenguajes. Esto es en parte debido a las frecuentes declaraciones de tipos y conversiones de tipo manual (casting). Tambin se debe a que no se dispone de operadores sobrecargados, y a una sintaxis relativamente simple. Sin

embargo, J2SE 5.0 introduce elementos para tratar de reducir la redundancia, como una nueva construccin para los bucles foreach. A diferencia de C++, Java no dispone de operadores de sobrecarga definidos por el usuario. Los diseadores de Java tomaron esta decisin puesto que consideraban que, bajo ciertas circunstancias, esta caracterstica poda complicar la lectura y mantenimiento de los programas. Apariencia La apariencia externa (el look and feel) de las aplicaciones GUI (Graphical User Interface) escritas en Java usando la plataforma Swing difiere a menudo de la que muestran aplicaciones nativas. Aunque el programador puede usar el juego de herramientas AWT (Abstract Windowing Toolkit) que genera objetos grficos de la plataforma nativa, el AWT no es capaz de funciones grficas avanzadas sin sacrificar la portabilidad entre plataformas; ya que cada una tiene un conjunto de APIs distinto, especialmente para objetos grficos de alto nivel. Las herramientas de Swing, escritas completamente en Java, evitan este problema construyendo los objetos grficos a partir de los mecanismos de dibujo bsicos que deben estar disponibles en todas las plataformas. El inconveniente es el trabajo extra requerido para conseguir la misma apariencia de la plataforma destino. Aunque esto es posible (usando GTK+ y el Look-and-Feel de Windows), la mayora de los usuarios no saben cmo cambiar la apariencia que se proporciona por defecto por aquella que se adapta a la de la plataforma. Rendimiento El rendimiento de una aplicacin est determinado por multitud de factores, por lo que no es fcil hacer una comparacin que resulte totalmente objetiva. En tiempo de ejecucin, el rendimiento de una aplicacin Java depende ms de la eficiencia del compilador, o la JVM, que de las propiedades intrnsecas del lenguaje. El bytecode de Java puede ser interpretado en tiempo de ejecucin por la mquina virtual, o bien compilado al cargarse el programa, o durante la propia ejecucin, para generar cdigo nativo que se ejecuta directamente sobre el hardware. Si es interpretado, ser ms lento que usando

el cdigo mquina intrnseco de la plataforma destino. Si es compilado, durante la carga inicial o la ejecucin, la penalizacin est en el tiempo necesario para llevar a cabo la compilacin. El uso de un recolector de basura para eliminar de forma automtica aquellos objetos no requeridos, aade una sobrecarga que puede afectar al rendimiento, o ser apenas apreciable, dependiendo de la tecnologa del recolector y de la aplicacin en concreto. Las JVM modernas usan recolectores de basura que gracias a rpidos algoritmos de manejo de memoria, consiguen que algunas aplicaciones puedan ejecutarse ms eficientemente.

Conclusin

Un algoritmo es una secuencia de pasos lgicos necesarios para llevar a cabo una tarea especfica, como la solucin de un problema. Los algoritmos son independientes tanto del lenguaje de programacin en que se expresan como de la computadora que los ejecuta. En cada problema el algoritmo se puede expresar en un lenguaje diferente de programacin y ejecutarse en una computadora distinta; sin embargo el algoritmo ser siempre el mismo. Un diagrama de flujo (flowchart) es una de las tcnicas de representacin de algoritmos ms antigua y a la vez ms utilizada, aunque su empleo ha disminuido considerablemente, sobre todo desde la aparicin de lenguajes de programacin estructurados. Un diagrama de flujo es un diagrama que utiliza los smbolos (cajas) y que tiene los pasos del algoritmo escritos en esas cajas unidas por flechas, denominadas lneas de flujo, que indican la secuencia en que se deben ejecutar. Los lenguajes de programacin al igual que los idiomas sirven de vehculo de comunicacin entre seres humanos, existen lenguajes que realizan la comunicacin entre ellos y las computadoras. Estos lenguajes permiten expresar las instrucciones que el programador desea que la computadora ejecute.

Bibliografa

Jess Loaiza, Jos Vargas, Euro Foucault. Algoritmos, Diagramas de Flujo y Diagramas Estructurados. Valencia 1985. Vadell Hermanos Editores. Natasha Guerra. Algoritmos. Punta de Mata 2010. Trabajo de Mtodos Numricos. www.mat.ucm.es/~jair/matlab/notas.htm es.wikipedia.org www.uv.es/etomar/13042/MC_P1_05.PDF gemini.udistrital.edu.co/comunidad/estudiantes/.../ matlabTut/acerca.p...

Anda mungkin juga menyukai