CUESTIONARIO UNIDAD 4

48
CUESTIONARIO UNIDAD 4 INTRODUCCION A LA PROGRAMACION 1.- EXPLIQUE AMPLIAMENTE LOS SIGUIENTES CONCEPTOS SOFTWARE Es el conjunto de los programas de cómputo, procedimientos, reglas, documentación y datos asociados que forman parte de las operaciones de un sistema de computación el concepto de software va más allá de los programas de cómputo en sus distintos estados: código fuente, binario o ejecutable; también su documentación, datos a procesar e información de usuario es parte del software: es decir, abarca todo lo intangible, todo lo "no físico" relacionado. Clasificación del software. Si bien esta distinción es, en cierto modo, arbitraria, y a veces confusa, se puede clasificar al software de la siguiente forma: Software de sistema: Es aquel que permite que el hardware funcione. Su objetivo es desvincular adecuadamente al programador de los detalles del computador en particular que se use, aislándolo especialmente del procesamiento referido a las características internas de: memoria, discos, puertos y dispositivos de comunicaciones, impresoras, pantallas, teclados, etc. El software de sistema le procura al usuario y programador adecuadas interfaces de alto nivel y utilidades de apoyo que permiten su mantenimiento. Incluye entre otros: Sistemas operativos Controladores de dispositivo Herramientas de diagnóstico Herramientas de Corrección y Optimización Servidores Utilidades Software de programación: Es el conjunto de herramientas que permiten al programador desarrollar programas informáticos, usando diferentes alternativas y lenguajes de programación, de una manera práctica. Incluye entre otros: Editores de texto Compiladores

Transcript of CUESTIONARIO UNIDAD 4

Page 1: CUESTIONARIO UNIDAD 4

CUESTIONARIO UNIDAD 4

INTRODUCCION A LA PROGRAMACION1.- EXPLIQUE AMPLIAMENTE LOS SIGUIENTES CONCEPTOS

SOFTWARE

Es el conjunto de los programas de cómputo, procedimientos, reglas, documentación y datos asociados que forman parte de las operaciones de un sistema de computación el concepto de software va más allá de los programas de cómputo en sus distintos estados: código fuente, binario o ejecutable; también su documentación, datos a procesar e información de usuario es parte del software: es decir, abarca todo lo intangible, todo lo "no físico" relacionado.Clasificación del software. Si bien esta distinción es, en cierto modo, arbitraria, y a veces confusa, se puede clasificar al software de la siguiente forma:

Software de sistema: Es aquel que permite que el hardware funcione. Su objetivo es desvincular adecuadamente al programador de los detalles del computador en particular que se use, aislándolo especialmente del procesamiento referido a las características internas de: memoria, discos, puertos y dispositivos de comunicaciones, impresoras, pantallas, teclados, etc. El software de sistema le procura al usuario y programador adecuadas interfaces de alto nivel y utilidades de apoyo que permiten su mantenimiento. Incluye entre otros:

Sistemas operativos Controladores de dispositivo Herramientas de diagnóstico Herramientas de Corrección y Optimización Servidores Utilidades

Software de programación: Es el conjunto de herramientas que permiten al programador desarrollar programas informáticos, usando diferentes alternativas y lenguajes de programación, de una manera práctica. Incluye entre otros:

Editores de texto Compiladores Intérpretes Enlazadores Depuradores

Entornos de Desarrollo Integrados (IDE): Agrupan las anteriores herramientas, en entorno visual, de forma que el programador no necesite introducir múltiples comandos para compilar, interpretar, depurar, etc... Habitualmente cuentan con una avanzada interfaz gráfica de usuario (GUI).

Software de aplicación: Aquel que permite a los usuarios llevar a cabo una o varias tareas específicas, en cualquier campo de actividad susceptible de ser automatizado o asistido, con especial énfasis en los negocios. Incluye entre otros:

Page 2: CUESTIONARIO UNIDAD 4

Aplicaciones de control y automatización industrial Aplicaciones ofimáticas Software educativo Software médico Software de Cálculo Numérico Software de Diseño Asistido (CAD) Software de Control Numérico (CAM)

PROGRAMA

Es un paquete de software usado para mostrar información, normalmente mediante una serie de diapositivas. Típicamente incluye tres funciones principales: un editor que permite insertar un texto y darle formato, un método para insertar y manipular imágenes y gráficos y un sistema para mostrar el contenido en forma continua

Hay muchos tipos de presentaciones, por ejemplo profesionales (relacionadas con el trabajo), para educación, o para comunicar noticias en general. Los programas de presentación pueden servir de ayuda o reemplazar a las formas tradicionales de dar una presentación, como por ejemplo panfletos, resúmenes en papel, pizarras, diapositivas o transparencias. Un programa de presentación permite colocar texto, gráficos, películas y otros objetos en páginas individuales o "diapositivas". El término "diapositiva" es una referencia al proyector de diapositivas, un dispositivo que se ha quedado obsoleto para estos fines desde la aparición de los programas de presentación. Las diapositivas se pueden imprimir en transparencias y ser mostradas mediante un proyector de transparencias, o ser visualizadas directamente en la pantalla del ordenador (o en una pantalla normal usando un proyector de vídeo) bajo el control de la persona que da la presentación. La transición de una diapositiva a otra puede ser animada de varias formas, y también se puede animar la aparición de los elementos individuales en cada diapositiva.

PROGRAMADOR

Un programador es un individuo que ejerce la programación, es decir, que escribe programas de computadora u ordenador. Los programadores también reciben el nombre de desarrolladores de software.

En la mayoría de los países, programador es también una categoría profesional reconocida.El programador se encarga de la implementación de algoritmos mediante un lenguaje de programación que pueda entender la computadora.

Inicialmente, la profesión se formalizó desde el enfoque Tayloriano de la especialización de funciones en la empresa. Así, el proceso de producción de software se concibe como un conjunto de tareas altamente especializadas donde está claramente definido el papel de cada categoría profesional:

El analista tiene como cometido analizar un problema y describirlo con el propósito de ser solucionado mediante un sistema de información.

El programador cuya única función consistía en trasladar las especificaciones del analista en código ejecutable por la computadora. Dichas especificaciones se recogen en un documento denominado cuaderno de carga, medio de comunicación entre ambos. Obsérvese que esto se consideraba un trabajo mecánico y de baja cualificación.

Page 3: CUESTIONARIO UNIDAD 4

Hoy día se reconoce que este enfoque no es válido para organizar tareas de tipo intelectual, como es la producción de software. De manera que la profesión de programador ha ido evolucionando. Las dificultades de comunicación entre analistas y programadores (un mero documento no basta para describir lo que se quiere hacer) dio origen a una categoría profesional intermedia, denominada analista-programador. La concepción original del programador ha desaparecido siendo sustituida por esta: la de un profesional mucho más formado y con unas funciones menos "mecánicas".

La profesión de analista también ha evolucionado, surgiendo el concepto diseñador (de software). Esto se debe a los avances de la ingeniería del software donde se reconoce que el análisis es una actividad distinta del diseño. El análisis describe el problema (el qué hacer) mientras que el diseño describe la solución (el cómo hacerlo). En la mayoría de países industrializados esto ha dado lugar a la categoría profesional del diseñador o arquitecto del software.

LENGUAJE DE PROGRAMACION

Un lenguaje de programación es un lenguaje que puede ser utilizado para controlar el comportamiento de una máquina, particularmente una computadora. Consiste en un conjunto de símbolos y reglas sintácticas y semánticas que definen su estructura y el significado de sus elementos y expresiones.

Aunque muchas veces se usa lenguaje de programación y lenguaje informático como si fuesen sinónimos, no tiene por qué ser así, ya que los lenguajes informáticos engloban a los lenguajes de programación y a otros más, como, por ejemplo, el HTML (lenguaje para el marcado de páginas web).

Un lenguaje de programación permite a uno o más programadores especificar de manera precisa: sobre qué datos una computadora debe operar, cómo deben ser estos almacenados, transmitidos y qué acciones debe tomar bajo una variada gama de circunstancias. Todo esto, a través de un lenguaje que intenta estar relativamente próximo al lenguaje humano o natural, tal como sucede con el lenguaje Léxico. Una característica relevante de los lenguajes de programación es precisamente que más de un programador puedan tener un conjunto común de instrucciones que puedan ser comprendidas entre ellos para realizar la construcción del programa de forma colaborativaLos lenguajes de programación se determinan según el nivel de abstracción, Según la forma de ejecución y Según el paradigma de programación que poseen cada uno de ellos y esos pueden ser:Según su nivel de abstracción

Lenguajes de bajo nivel

Los lenguajes de bajo nivel son lenguajes de programación que se acercan al funcionamiento de una computadora. El lenguaje de más bajo nivel es, por excelencia, el código máquina. A éste le sigue el lenguaje ensamblador, ya que al programar en ensamblador se trabajan con los registros de memoria de la computadora de forma directa.Lenguajes de medio nivel

Hay lenguajes de programación que son considerados por algunos expertos como lenguajes de medio nivel (como es el caso del lenguaje C) al tener ciertas características que los acercan a los lenguajes de bajo nivel pero teniendo, al mismo tiempo, ciertas cualidades que lo hacen un lenguaje más cercano al humano y, por tanto, de alto nivel.Lenguajes de alto nivel

Page 4: CUESTIONARIO UNIDAD 4

Artículo principal: Lenguaje de alto nivelLos lenguajes de alto nivel son normalmente fáciles de aprender porque están formados por elementos de lenguajes naturales, como el inglés. En BASIC, el lenguaje de alto nivel más conocido, los comandos como "IF CONTADOR = 10 THEN STOP" pueden utilizarse para pedir a la computadora que pare si CONTADOR es igual a 10. Por desgracia para muchas personas esta forma de trabajar es un poco frustrante, dado que a pesar de que las computadoras parecen comprender un lenguaje natural, lo hacen en realidad de una forma rígida y sistemática.

DATO

El dato (del latín datum), es una representación simbólica (numérica, alfabética, etc.), atributo o característica de una entidad. El dato no tiene valor semántico (sentido) en sí mismo, pero convenientemente tratado (procesado) se puede utilizar en la realización de cálculos o toma de decisiones. Es de empleo muy común en el ámbito informático.

En programación un dato es la expresión general que describe las características de las entidades sobre las cuales opera un algoritmo.

IDENTIFICADOR

Representan los nombres de los objetos de un programa (constantes, variables, tipos de datos, procedimientos, funciones, etc.). Es una secuencia de carácteres que puede ser de cualquier longitud, aunque tiene ciertas reglas que hay que seguir, las cuales son:

1. Debe comenzar con una letra o "_" y no puede contener espacios en blanco. 2. Letras, dígitos y carácteres subrayados ("_") están permitidos después del primer

carácter.

En síntesis un identificador es un método para nombrar a las celdas de memoria en la computadora, en lugar de memorizarnos una dirección de memoria.

Se utilizan para nombrar variables, constantes, procedimientos y funciones.

Constantes

Las constantes son valores que no pueden cambiar en la ejecución del programa. Recibe un valor en el momento de la compilación del programa y este no puede ser modificado.

Variables

Page 5: CUESTIONARIO UNIDAD 4

Las variables son valores que se pueden modificar durante la ejecución de un programa. Al contrario de las constantes estas reciben un valor, pero este valor puede ser modificado durante la ejecución o la compilación del programa.

Sentencia de Asignación

Se utiliza para asignar o almacenar valores a variables o constantes. Es una operación que sitúa un valor determinado en una posición de memoria. Se demuestra en pseudocódigo con el símbolo <- (Una flecha apuntando hacia el identificador, donde se desea guardar el valor.). Variable <- expresión

El tipo de expresión debe ser del mismo tipo que el de la variable, en caso contrario en la fase de compilación se produciría un error de tipos. Aunque a la fecha existen lenguajes de programación con una potente herramienta para la conversión de datos (tal es el caso de Visual Basic), no es recomendable asignar valores de un tipo diferente a variables de otro tipo.

MEMORIA

Su definición es: almacenes internos en el ordenador. El término memoria identifica el almacenaje de datos que viene en forma chips, y el almacenaje de la palabra se utiliza para la memoria que existe en las cintas o los discos. Por otra parte, el término memoria se utiliza generalmente como taquigrafía para la memoria física, que refiere a los chips reales capaces de llevar a cabo datos. Algunos ordenadores también utilizan la memoria virtual, que amplía memoria física sobre un disco duro.

Cada ordenador viene con cierta cantidad de memoria física, referida generalmente como memoria principal o RAM. Se puede pensar en memoria principal como arreglo de celdas de memoria, cada una de los cuales puede llevar a cabo un solo byte de información.

Un ordenador que tiene 1 megabyte de la memoria, por lo tanto, puede llevar a cabo cerca de 1 millón de bytes (o caracteres) de la información.

La memoria funciona de manera similar a un juego de cubículos divididos usados para clasificar la correspondencia en la oficina postal. A cada bit de datos se asigna una dirección. Cada dirección corresponde a un cubículo (ubicación) en la memoria.

Para guardar información en la memoria, el procesador primero envía la dirección para los datos. El controlador de memoria encuentra el cubículo adecuado y luego el procesador envía los datos a escribir.

Para leer la memoria, el procesador envía la dirección para los datos requeridos. De inmediato, el controlador de la memoria encuentra los bits de información contenidos en el cubículo adecuado y los envía al bus de datos del procesador.

Hay varios tipos de memoria: RAM (memoria de acceso aleatorio): Éste es igual que memoria principal. Cuando es

utilizada por sí misma, el término RAM se refiere a memoria de lectura y escritura; es decir, usted puede tanto escribir datos en RAM como leerlos de RAM. Esto está en contraste a la ROM, que le permite solo hacer lectura de los datos leídos. La mayoría de la RAM es volátil, que significa que requiere un flujo constante de la electricidad para mantener su contenido. Tan pronto como el suministro de poder sea interrumpido, todos los datos que estaban en RAM se pierden.

Page 6: CUESTIONARIO UNIDAD 4

ROM (memoria inalterable): Los ordenadores contienen casi siempre una cantidad pequeña de memoria de solo lectura que guarde las instrucciones para iniciar el ordenador. En la memoria ROM no se puede escribir.

PROM (memoria inalterable programable): Un PROM es un chip de memoria en la cual usted puede salvar un programa. Pero una vez que se haya utilizado el PROM, usted no puede rehusarlo para salvar algo más. Como las ROM, los PROMS son permanentes.

EPROM (memoria inalterable programable borrable): Un EPROM es un tipo especial de PROM que puede ser borrado exponiéndolo a la luz ultravioleta.

EEPROM (eléctricamente memoria inalterable programable borrable): Un EEPROM es un tipo especial de PROM que puede ser borrado exponiéndolo a una carga eléctrica.

SISTEMA DE NUMERACION

El sistema binario desempeña un importante papel en la tecnología de los ordenadores. Los primeros 20 números en el sistema en base 2 son 1, 10, 11, 100, 101, 110, 111, 1000, 1001, 1010, 1011, 1100, 1101, 1110, 1111, 10000, 10001, 10010, 10011 y 10100. Cualquier número se puede representar en el sistema binario, como suma de varias potencias de dos. Por ejemplo, el número 10101101 representa, empezando por la derecha, (1 × 20) + (0 × 21) + (1 × 22) + (1 × 23) + (0 × 24) + (1 × 25) + (0 × 26) + (1 × 27) = 173.

Las operaciones aritméticas con números en base 2 son muy sencillas. Las reglas básicas son: 1 + 1 = 10 y 1 × 1 = 1. El cero cumple las mismas propiedades que en el sistema decimal: 1 × 0 = 0 y 1 + 0 = 1. La adición, sustracción y multiplicación se realizan de manera similar a las del sistema decimal:

100101 1011010 +110101 - 110101 1011010 100101

Puesto que sólo se necesitan dos dígitos (o bits), el sistema binario se utiliza en los ordenadores o computadoras. Un número binario cualquiera se puede representar, por ejemplo, con las distintas posiciones de una serie de interruptores. La posición “encendido” corresponde al 1, y “apagado” al 0. Además de interruptores, también se pueden utilizar puntos imantados en una cinta magnética o disco: un punto imantado representa al dígito 1, y la ausencia de un punto imantado es el dígito 0. Los biestables ( dispositivos electrónicos con sólo dos posibles valores de voltaje a la salida y que pueden saltar de un estado al otro mediante una señal externa ) también se pueden utilizar para representar números binarios. Los circuitos lógicos realizan operaciones con números en base 2. La conversión de números decimales a binarios para hacer cálculos, y de números binarios a decimales para su presentación, se realizan electrónicamente

SISTEMA DECIMAL O BASE 10

Cuando en una enumeración se usan 10 símbolos diversos, a esta se le denomina numeración decimal o basa diez. El valor de cada cifra es el producto de la misma por una potencia de diez (la base), cuyo exponente es igual a la posición ocupada por la cifra; se supone que las unidades ocupan la posición 0, la decenas la posición 1 y así sucesivamente.

Por ejemplo, 327 se puede descomponer en: 3 . 102 + 2 . 101 + 7 . 100 = 300 + 20 + 7 = 327

Page 7: CUESTIONARIO UNIDAD 4

Siguiendo con el mismo razonamiento podemos definir una numeración binaria o en base 2, donde los símbolos 0 y 1 vistos anteriormente asumen el valor numérico 0 y 1. Así, el número 10110 escrito en base 2 o binaria equivale al siguiente número en base 10 o decimal:

1 . 24 + 0 .23 + 1 . 22 + 1 . 21 + 0 . 20 = 16 + 0 + 2 + 2 + 0 = (22)10

NUMERACIÓN OCTAL Y HEXADECIMAL

El sistema de numeración hexadecimal utiliza 16 símbolos o signos y el sistema de numeración octal utiliza solo 8 símbolos. Para comprenderse funcionamiento, retomaremos el numero anteriormente analizado en base 10, (327) y lo estudiaremos en base octal y hexadecimal.

BASE 8 U OCTAL

Si tenemos el número (327)8 su correspondiente valor en base 10 será: (327) = 3 . 82 + 2 . 81 + 7 . 80 = 192 + 16 + 7 = (215)10

Los signos que se utilizan en base 8 son:

0 1 2 3 4 5 6 7

Una cifra octal equivale a 3 cifras binarias, por lo que el numero escrito en binario se puede convertir en octal dividiéndolo en grupos de 3 bits, y traduciendo cada uno de ellos en la cifra octal correspondiente. Por ejemplo, el número binario 10110, equivale a 26 en octal:

10 110 numero binario descompuesto en grupos de 3 bits. 2 6 equivalente en octal de cada grupo.

BASE 16 O HEXADECIMAL

Si analizamos el número (327)10 , y obtenemos su correspondiente valor en base 10, será:

(327)16 = 3 . 162 + 2 . 161 + 7 . 160 = = 768 + 32 + 7 = (807)10

Por lo que (327)16 = (807)10 Los signo utilizados en base 16 son los que se indican a continuación:

0 1 2 3 4 5 6 7 8 9 A B C D E F

El valor de las letras es el siguiente: A= 10; B= 11; C= 12 ; D= 13; E= 14; F= 15

Una cifra hexadecimal contiene la misma información que 4 bits, por lo que el numero escrito en binario se puede convertir en hexadecimal dividiendolo en grupos de cuatro bits, y traduciendo cada uno de ellos en la cifra hexadecimal correspondiente. Por ejemplo, el numero 10110equivale a 16 en hexadecimal; la descomposición seria:

1 0110 numero binario descompuesto en grupos de cuatro bits 1 6 equivalente hexadecimal en cada grupo

Page 8: CUESTIONARIO UNIDAD 4

OPERADOR

En todos los lenguajes de programación se útilizan operadores para efectuar operaciones aritmeticas. Combinando las variables y constantes en expresiones aritméticas por medio de funciones adecuadas.

Una expresión es un conjunto de datos o funciones unidos por operadores aritméticos, los cuales se muestran en la siguiente tabla:

Operador Significado+ Suma- Resta* Multiplicación/ División^ ExponenciaciónMod Módulo

Operadores Lógicos

En ocasiones en los programas se necesitan realizar comparaciones entre distintos valores, esto se realiza utilizando los operadores relaciones, los cuales se listan a continuación: Operador Significado< Menor que> Mayor que<= Menor o igual que>= Mayor o igual que= Igual a<> Distinto a, diferente de

EXPRESION

En programación, una expresión es una combinación de constantes, variables o funciones, que es interpretada (evaluada) de acuerdo a las normas particulares de precedencia y asociación para un lenguaje de programación en particular. Como en matemáticas, la expresión es su "valor evaluado", es decir, la expresión es una representación de ese valor.

Ejemplos de expresión

Expresión aritmética: 3+2, x+1, ... Expresión lógica: x OR y, NOT x, ...

Expresión con predicados: P(a) AND Q(b),

EJECUTABLE

Page 9: CUESTIONARIO UNIDAD 4

Un ejecutable o archivo ejecutable, es un archivo binario cuyo contenido se interpreta por el ordenador como un programa.

Generalmente, contiene instrucciones en código máquina de un procesador en concreto, pero también puede contener bytecode que requiera un intérprete para ejecutarlo. Además suele contener llamadas a funciones específicas de un sistema operativo (llamadas al sistema).

Dependiendo del tipo de que se traten las instrucciones, hablaremos de ejecutables portables (se pueden ejecutar en varias plataformas) y no portables (destinado a una plataforma concreta). Por ejemplo, un ejecutable Java es portable ya que utiliza un bytecode no asociado a un procesador en concreto.

Existen otro tipo de programas llamados scripts. No contienen código máquina sino el código fuente, que se interpreta a la vez que se ejecuta.

Determinar si un archivo es ejecutable es sobre todo una cuestión de convención. Unos sistemas operativos se basan en la extensión de archivo (como la terminación .exe) y otros lo hacen leyendo los metadatos (como los bits de permiso de ejecución en Unix).

En la mayoría de los sistemas modernos, un archivo ejecutable contiene mucha información que no es parte del programa en sí: recursos como textos e imágenes, requisitos del entorno de ejecución, información simbólica y de depuración, u otra información que ayude al sistema operativo a ejecutar el programa.

2.- DESCRIBA AMPLIAMENTE EL DESARROLLO HISTORICO DE LA PROGRAMACION

Los primeros lenguajes de programación surgieron de la idea de Charles Babagge, la cual se le ocurrió a este hombre a mediados del siglo XIX. Era un profesor matemático de la universidad de Cambridge e inventor ingles, que la principio del siglo XIX predijo muchas de las teorías en que se basan los actuales ordenadores. Consistía en lo que él denominaba la maquina analítica, pero que por motivos técnicos no pudo construirse hasta mediados del siglo XX. Con él colaboro Ada Lovedby, la cual es considerada como la primera programadora de la historia, pues realizo programas para aquélla supuesta maquina de Babagge, en tarjetas perforadas. Como la maquina no llego nunca a construirse, los programas de Ada, lógicamente, tampoco llegaron a ejecutarse, pero si suponen un punto de partida de la programación, sobre todo si observamos que en cuanto se empezó a programar, los programadores utilizaron las técnicas diseñadas por Charles Babagge, y Ada, que consistían entre otras, en la programación mediante tarjetas perforadas. A pesar de ello, Ada ha permanecido como la primera programadora de la historia. Se dice por tanto que estos dos genios de antaño, se adelantaron un siglo a su época, lo cual describe la inteligencia de la que se hallaban dotados.

En 1823 el gobierno Británico lo apoyo para crear el proyecto de una máquina de diferencias, un dispositivo mecánico para efectuar sumas repetidas. Pero Babagge se dedico al proyecto de la máquina analítica, abandonando la maquina de diferencias, que se pudiera programar con tarjetas perforadas, gracias a la creación de Charles Jacquard (francés). Este hombre era un fabricante de tejidos y había creado un telar que podía reproducir automáticamente patrones de tejidos, leyendo la información codificada en patrones de agujeros perforados en tarjetas de papel rígido. Entonces Babagge intento crear la máquina que se pudiera programar con tarjetas perforadas para efectuar cualquier cálculo con una precisión de 20 dígitos. Pero la tecnología de la época no bastaba para hacer realidad sus ideas. Si bien las ideas de Babagge no llegaron a materializarse de forma definitiva, su contribución es decisiva, ya que los

Page 10: CUESTIONARIO UNIDAD 4

ordenadores actuales responden a un esquema análogo al de la máquina analítica. En su diseño, la máquina constaba de cinco unidades básicas: 1) Unidad de entrada, para introducir datos e instrucciones; 2) Memoria, donde se almacenaban datos y resultados intermedios; 3) Unidad de control, para regular la secuencia de ejecución de las operaciones; 4) Unidad Aritmético-Lógica, que efectúa las operaciones; 5) Unidad de salida, encargada de comunicar al exterior los resultados. Charles Babbage, conocido como el "padre de la informática" no pudo completar en aquella época la construcción del computador que había soñado, dado que faltaba algo fundamental: la electrónica. El camino señalado de Babbage, no fue nunca abandonado y siguiéndolo, se construyeron los primeros computadores.

Cuando surgió el primer ordenador, el famoso ENIAC (Electronic Numerical Integrator And Calculator), su programación se basaba en componentes físicos, o sea, que se programaba, cambiando directamente el Hardware de la maquina, exactamente lo que sé hacia era cambiar cables de sitio para conseguir así la programación de la maquina. La entrada y salida de datos se realizaba mediante tarjetas perforadas.

LAS TENDENCIAS DE LOS LENGUAJES DE PROGRAMACIÓN

El estudio de los lenguajes de programación agrupa tres intereses diferentes; el del programador profesional, el del diseñador del lenguaje y del Implementador del lenguaje.

Además, estos tres trabajos han de realizarse dentro de las ligaduras y capacidades de la organización de una computadora y de las limitaciones fundamentales de la propia "calculabilidad". El termino "el programador" es un tanto amorfo, en el sentido de que camufla importantes diferencias entre distintos niveles y aplicaciones de la programación. Claramente el programador que ha realizado un curso de doce semanas en COBOL y luego entra en el campo del procesamiento de datos es diferente del programador que escribe un compilador en Pascal, o del programador que diseña un experimento de inteligencia artificial en LISP, o del programador que combina sus rutinas de FORTRAN para resolver un problema de ingeniería complejo, o del programador que desarrolla un sistema operativo multiprocesador en ADA.

En este trabajo, intentare clarificar estas distinciones tratando diferentes lenguajes de programación en el contexto de cada área de aplicación diferente. El "diseñador del lenguaje" es también un termino algo nebuloso. Algunos lenguajes (como APL y LISP) fueron diseñados por una sola persona con un concepto único, mientras que otros (FORTRAN y COBOL) son el producto de desarrollo de varios años realizados por comités de diseño de lenguajes.

El "Implementador del lenguaje" es la persona o grupo que desarrolla un compilador o interprete para un lenguaje sobre una maquina particular o tipos de maquinas. Mas frecuentemente, el primer compilador para el lenguaje Y sobre la maquina X es desarrollada por la corporación que manufactura la maquina X . Por ejemplo, hay varios compiladores de Fortran en uso; uno desarrollado por IBM para una maquina IBM, otro desarrollado por DEC para una maquina DEC, otro por CDC, y así sucesivamente. Las compañías de software también desarrollan compiladores y también lo hacen los grupos de investigación de las universidades. Por ejemplo, la universidad de Waterloo desarrolla compiladores para FORTRAN Y PASCAL, los cuales son útiles en un entorno de programación de estudiantes debido a su superior capacidad de diagnostico y velocidad de compilación.

Page 11: CUESTIONARIO UNIDAD 4

Hay también muchos aspectos compartidos entre los programadores, diseñadores de un lenguaje implementadores del mismo. Cada uno debe comprender las necesidades y ligaduras que gobiernan las actividades de los otros dos.

Hay, al menos, dos formas fundamentales desde las que pueden verse o clasificarse los lenguajes de programación: por su nivel y por principales aplicaciones. Además, estas visiones están condicionadas por la visión histórica por la que ha transcurrido el lenguaje. Además, hay cuatro niveles distintos de lenguaje de programación.

Los "Lenguajes Declarativos" son los mas parecidos al castellano o ingles en su potencia expresiva y funcionalidad están en el nivel mas alto respecto a los otros. Son fundamentalmente lenguajes de ordenes, dominados por sentencias que expresan "Lo que hay que hacer" en ves de "Como hacerlo". Ejemplos de estos lenguajes son los lenguajes estadísticos como SAS y SPSS y los lenguajes de búsqueda en base de datos, como NATURAL e IMS. Estos lenguajes se desarrollaron con la idea de que los profesionales pudieran asimilar mas rápidamente el lenguaje y usarlo en su trabajo, sin necesidad de programadores o practicas de programación.

Los lenguajes de " Alto Nivel" son los más utilizados como lenguaje de programación. Aunque no son fundamentalmente declarativos, estos lenguajes permiten que los algoritmos se expresen en un nivel y estilo de escritura fácilmente legible y comprensible por otros programadores. Además, los lenguajes de alto nivel tienen normalmente las características de " Transportabilidad". Es decir, están implementadas sobre varias maquinas de forma que un programa puede ser fácilmente " Transportado " (Transferido) de una maquina a otra sin una revisión sustancial. En ese sentido se llama "Independientes de la maquina". Ejemplos de estos lenguajes de alto nivel son PASCAL, APL y FORTRAN (para aplicaciones científicas), COBOL (para aplicaciones de procesamiento de datos), SNOBOL( para aplicaciones de procesamiento de textos), LISP y PROLOG (para aplicaciones de inteligencia artificial), C y ADA (para aplicaciones de programación de sistemas) y PL/I (para aplicaciones de propósitos generales).

Los "Lenguajes Ensambladores" y los "Lenguajes Maquina" son dependientes de la maquina. Cada tipo de maquina, tal como VAX de digital, tiene su propio lenguaje maquina distinto y su lenguaje ensamblador asociado. El lenguaje Ensamblador es simplemente una representación simbólica del lenguaje maquina asociado, lo cual permite una programación menos tediosa que con el anterior. Sin embargo, es necesario un conocimiento de la arquitectura mecánica subyacente para realizar una programación efectiva en cualquiera de estos niveles lenguajes.

Los siguientes tres segmentos del programa equivalentes exponen las distinciones básicas entre lenguajes maquina, ensambladores de alto nivel:

Como muestra este ejemplo, a mas bajo nivel de lenguaje mas cerca esta de las características de un tipo e maquina particular y más alejado de ser comprendido por un humano ordinario. Hay también una estrecha relación ( correspondencia 1:1) entre las sentencias en lenguaje ensamblador y sus formas en lenguaje maquina codificada. La principal diferencia aquí es que los lenguajes ensambladores se utilizan símbolos (X, Y, Z, A para " sumar", M para "multiplicar"), mientras que se requieren códigos numéricos (OC1A4, etc.) para que lo comprenda la maquina.

La programación de un lenguaje de alto nivel o en un lenguaje ensamblador requiere, por tanto, algún tipo de interfaz con el lenguaje maquina para que el programa pueda ejecutarse. Las tres interfaces más comunes: un "ensamblador”, un "compilador" y un "interprete". El ensamblador y el compilador traducen el programa a otro equivalente en el lenguaje X de la maquina "residente" como un paso separado antes de la ejecución. Por otra parte, el

Page 12: CUESTIONARIO UNIDAD 4

interprete ejecuta directamente las instrucciones en un lenguaje Y de alto nivel, sin un paso de procesamiento previo.

La compilación es, en general, un proceso más eficiente que la interpretación para la mayoría de los tipos de maquina. Esto se debe principalmente a que las sentencias dentro de un "bucle" deben ser reinterpretadas cada vez que se ejecutan por un interprete. Con un compilador. Cada sentencia es interpretada y luego traducida a lenguaje maquina solo una vez.

Algunos lenguajes son lenguajes principalmente interpretados, como APL, PROLOG y LISP. El resto de los lenguajes -- Pascal, FORTRAN, COBOL, PL/I, SNOBOL, C, Ada y Modula-2 – son normalmente lenguajes compilados. En algunos casos, un compilador estará utilizable alternativamente para un lenguaje interpretado (tal como LISP) e inversamente (tal como el interprete SNOBOL4 de los laboratorios Bell).

1

Frecuentemente la interpretación es preferible a la compilación en un entorno de programación experimental o de educación, donde cada nueva ejecución de un programa implicado un cambio en el propio texto del programa. La calidad de diagnosis y depuración que soportan los lenguajes interpretados es generalmente mejor que la de los lenguajes compilados, puesto que los mensajes de error se refieren directamente a sentencias del texto del programa original. Además, la ventaja de la eficiencia que se adjudica tradicionalmente a los lenguajes compilados frente a los interpretados puede pronto ser eliminado, debido a la evolución de las maquinas cuyos lenguajes son ellos mismos1lenguajes de alto nivel. Como ejemplo de estos están las nuevas maquinas LISP, las cuales han sido diseñadas recientemente por Symbolics y Xerox Corporations.

Los lenguajes de Programación son tomados de diferentes perspectivas. Es importante para un programador decidir cuales conceptos emitir o cuales incluir en la programación. Con frecuencia el programador es osado a usar combinaciones de conceptos que hacen al lenguaje "DURO" de usar, de entender e implementar. Cada programador tiene en mente un estilo particular de programación, la decisión de incluir u omitir ciertos tipos de datos que pueden tener una significativa influencia en la forma en que el Lenguaje es usado, la decisión de usar u omitir conceptos de programación o modelos.

Existen cinco estilos de programación y son los siguientes:

Orientados a Objetos.

Imperativa : Entrada, procesamiento y salidas de Datos.

Funcional : "Funciones", los datos son funciones, los resultados pueden ser un valor o una función.

Lógico : {T, F} + operaciones lógicas (Inteligencia Artificial).

Concurrente : Aún esta en proceso de investigación.

El programador, diseñador e implementador de un lenguaje de programación deben comprender la evolución histórica de los lenguajes para poder apreciar por que presentan características diferentes. Por ejemplo, los lenguajes "mas jóvenes" desaconsejan (o prohíben) el uso de las sentencias GOTO como mecanismo de control inferior, y esto es correcto en el contexto de las filosofías actuales de ingeniería del software y programación estructurada. Pero hubo un tiempo en que la GOTO, combinada con la IF, era la única estructura de control disponible; el programador no dispone de algo como la construcción WHILE o un IF-THEN-ELSE

Page 13: CUESTIONARIO UNIDAD 4

para elegir. Por tanto, cuando se ve un lenguaje como FORTRAN, el cual tiene sus raíces en los comienzos de la historia de los lenguajes de programación, uno no debe sorprenderse de ver la antigua sentencia GOTO dentro de su repertorio.

Lo más importante es que la historia nos permite ver la evolución de familias de lenguajes de programación, ver la influencia que ejercer las arquitecturas y aplicaciones de las computadoras sobre el diseño de lenguajes y evitar futuros defectos de diseño aprendido las lecciones del pasado. Los que estudian se han elegido debido a su mayor influencia y amplio uso entre los programadores, así como por sus distintas características de diseño e implementación. Colectivamente cubren los aspectos más importantes con los que ha de enfrentarse el diseñado de lenguajes y la mayoría de las aplicaciones con las que se enfrenta el programador. Para los lectores que estén interesados en conocer con mas detalle la historia de los lenguajes de programación recomendamos las actas de una recién conferencia (1981) sobre este tema, editadas por Richard Wexelblat. Vemos que FORTRAN I es un ascendente directo de FORTRAN II, mientras que FORTRAN, COBOL, ALGO 60, LISP, SNOBOL y los lenguajes ensambladores, influyeron en el diseño de PL/I.

También varios lenguajes están prefijados por las letras ANS. Esto significa que el American National Standards Institute ha adoptado esa versión del lenguaje como el estándar nacional. Una vez que un lenguaje esta estandarizado, las maquinas que implementan este lenguaje deben cumplir todas las especificaciones estándares, reforzando así el máximo de transportabilidad de programas de una maquina a otra. La policía federal de no comprar maquinas que no cumplan la versión estándar de cualquier lenguaje que soporte tiende a "fortalecer" el proceso de estandarización, puesto que el gobierno es, con mucho, el mayor comprador de computadoras de la nación.

Finalmente, la notación algebraica ordinaria, por ejemplo, influyo fuertemente en el diseño de FORTRAN y ALGOL. Por otra parte, el ingles influyo en el desarrollo del COBOL. El lambda calculo de Church dio los fundamentos de la notación funcional de LISP, mientras que el algoritmo de Markov motivo el estilo de reconocimiento de formas de SNOBOL. La arquitectura de computadoras de Von Neumann, la cual fue una evolución de la maquina más antigua de Turing, es el modelo básico de la mayoría de los diseños de computadoras de las ultimas tres décadas. Esta maquina no solo influyeron en los primeros lenguajes sino que también suministraron el esqueleto operacional sobre el que evoluciono la mayoría de la programación de sistemas.

Una discusión más directa de todos estos primeros modelos no están entre los objetivos de este texto. Sin embargo, es importante apuntar aquí debido a su fundamental influencia en la evolución de los primeros lenguajes de programación, por una parte, y por su estado en el núcleo de la teoría de la computadora, por otra. Mas sobre este punto, cualquier algoritmo que pueda describirse en ingles o castellano puede escribirse igualmente como una maquina de Turing (maquina de Von Neumann), un algoritmo de Markov o una función recursiva. Esta sección, conocida ampliamente como "tesis de Church", nos permite escribir algoritmos en distintos estilos de programación (lenguajes) sin sacrificar ninguna medida de generalidad, o potencia de programación, en la transición.

3.- DESCRIBA AMPLIAMENTE EL DESARROLLO HISTORICO del software

El software. El software es quizá uno de los productos de la ingeniería que más ha evolucionado en muy poco tiempo, pasando del software empírico o artesanal hasta llegar al software desarrollado bajo los principios y herramientas de la ingeniería del software.

Page 14: CUESTIONARIO UNIDAD 4

Sin embargo, dentro de estos cambios, las personas encargadas de la elaboración del software se han enfrentado a problemas muy comunes: unos debido a la exigencia cada vez mayor en la capacidad de resultados del software, debido al permanente cambio de condiciones lo que aumenta su complegidad y obsolescencia; y otros, debido a la carencia de herramientas adecuadas y estándares de tipo organizacional encaminados al mejoramiento de los procesos en el desarrollo del software.

Una necesidad sentida en nuestro medio es el hecho de que los productos de software deben ser desarrollados con base en la implentación de estándares mundiales, modelos , sistemas métricos, capacitación del recurso humano y otros principios y técnicas de la ingeniería software que garanticen la producción de software de calidad y competitividad a nivel local e internacional.

Antecedentes: Génesis y Evolución.

Con el acelerado avance tecnológico de la información, la cantidad y la complejida de los productos de software se estan incrementando considerablemente, así como también la exigencia en su funcionalidad y confiabilidad; es por esto que la calidad y la productividad se estan constituyendo en las grandes preocupaciones tanto de gestores como para desarrolladores de sofware.

En los primeros años del software, las actividades de elaboracion de programas eran realizadas por una sola personas utilizando lenguajes de bajo nivel* y ajustandose a un computador en especial, que generaban programas dificiles de enterder, aun hasta para su creador, despues de algun tiempo de haberlo producido. Esto implicaba tener que repetir el mismo proceso para desarrollar el mismo programa para otras maquinas.

Por consiguiente, la comfiabilidad, facilidad de mantenimeinto y cumplimiento no se garantizaban y la productividad era muy baja.

Posteriormente, con la aparicion de tecnicas estructuradas y con base en las experiencias de los programadores se mejoro la productividad del software. Sin embargo, este software seguia teniendo fallas, como por ejemplo: documentacion inadecuada, dificultad para su correcto funcionamiento, y por su puesto, insatisfaccion de cliente.

Conforme se incrementaba la tecnología de los computadores, también crecía la demanda de los productos de software, pero mucho mas lentamente, tanto que hacia 1990 se decía que las posibilidades de software estaban retrasadas respecto a las del hardware en un mínimo de dos generaciones de procesadores y que la distancia continuaba aumentando.

En la actualidad muchos de estos problemas subsisten en el desarrollo de software, con una dificultad adicional relacionada con la incapacidad para satisfacer totalmente la gran demanda y exigencias por parte de los clientes.  

Page 15: CUESTIONARIO UNIDAD 4

4.- mediante una tabla descriptiva ilustre la comparación de 20 lenguajes de programación diferente con respecto a 10 caracteristicas principales que deben cubrir los lenguajes

de programación.

5.- mediante una tabla descriptiva ilustre la comparación de 20 software diferente con respecto a 10 caracteristicas principales que deben cubrir los software.

Software

Caract.

Word Writer Abiword wordpad Corel

wordperfect

Tipo software Procesador

textos

Procesador

textos

Procesador

textos

Procesador

textos

Procesador

textos

Fiabilidad Buena Buena Buena Buena Buena

Eficiencia Buena Buena Excelente Buena Excelente

Integridad Buena Buena Buena Buena Buena

Facilidad de uso Depende la versión

Buena Muy buena Buena Muy buena

Facilidad de mantenimiento

ND ND Buena ND ND

Page 16: CUESTIONARIO UNIDAD 4

Flexibilidad Buena Buena Buena Poca Muy buena

Facilidad de prueba

Buena Buena Buena Buena Muy buena

Portabilidad ND ND Buena ND ND

Facilidad de reuso

Si Si ND ND ND

Interoperabilidad si ND Si Poca Buena

Software

Caract.

Dreamweaver Photoshop Coreldraw Graphics

Autodesk Cool 3D

Tipo software Diseño web Edicion de Fotografias

Diseño grafico

Diseño 3D Diseño 3D

Fiabilidad Muy Buena Muy buena Buena Buena Buena

Eficiencia Excelente Excelente Muy buena Buena Muy Buena

Integridad Buena Buena Buena Buena Buena

Facilidad de uso Buena Buena Regular Poca Buena

Facilidad de mantenimiento

ND ND ND ND ND

Flexibilidad Buena Buena Regular Regular ND

Facilidad de prueba

Buena Buena Buena Poca Muy buena

Portabilidad ND ND ND ND ND

Facilidad de reuso

ND ND ND Buena ND

Interoperabilidad Muy buena ND Buena ND Buena

Software

Caract.

Adobe Premiere Pro

SuperDVD video editor

Full Motion Video

ZS4 Video Editor

AVS Video Tool

Page 17: CUESTIONARIO UNIDAD 4

Tipo de software Edicion de video

Edicion de video

Edicion de video

Edicion de video

Edicion de video

Fiabilidad Buena Regular Buena Buena Muy buena

Eficiencia Buena Regular Buena Buena Muy buena

Integridad Buen a Regular Buena Buena Buena

Facilidad de uso Buena Mala Buena Regular Buena

Facilidad de mantenimiento

ND ND ND ND ND

Flexibilidad Buena Regular Mala Regular Muy buena

Facilidad de prueba

Buena Mala Buena Buena Buena

Portabilidad ND ND Regular Mala ND

Facilidad de reuso

ND ND ND ND ND

Interoperabilidad ND ND ND ND ND

Software

Caract.

Kaspersky NOD 32 AVG Panda Norton

Tipo de software Antivirus Antivirus Antivirus Antivirus Antivirus

Fiabilidad Muy Buena Muy Buena Buena Buena Regular

Eficiencia Muy buena Muy buena Buena Buena Buena

Integridad Muy buena Muy buena Buena Buena Buena

Facilidad de uso Buena Buena Buena Buena Regular

Facilidad de mantenimiento

Buena Buena Buena Buena Regular

Flexibilidad Buena Buena Buena Buen a ND

Facilidad de prueba

Buena Buena Buena Buena Regular

Page 18: CUESTIONARIO UNIDAD 4

Portabilidad ND ND ND ND ND

Facilidad de reuso

ND ND ND ND ND

Interoperabilidad Buen a Buena Buena Buena Buena

6.- ILUSTRE UN EJEMPLO QUE EXPLIQUE AMPLIAMENTE LA ESTRUCTURA DE UN PROGRAMA DESARROLLADO CON LA FILOSOFIA ORIENTADO A OBJETO (QUE CONTENGA COMO MINIMO LOS 5 ELEMENTOS BASICOS DE LA PROGRAMACION OO)

Elementos Básicos de un programa

En programación se debe separar la diferencia entre el diseño del algoritmo y su implementación en un lenguaje específico. Por ello, se debe distinguir claramente entre los conceptos de programación y el medio en que ellos se implementan en un lenguaje especifico. Sin embargo, una vez que se comprendan los conceptos de programación, como utilizarlos, la enseñanza de un nuevo lenguaje es relativamente fácil.

Los lenguajes de programación (como los restantes lenguajes) tienen elementos básicos que se utilizan como bloques constructivos, así como reglas para las que esos elementos se combinan. Estas reglas se denominan sintaxis del lenguaje. Solamente las instrucciones sintácticamente correctas pueden ser interpretadas por la computadora y los programas que contengan errores de sintaxis con rechazados por la máquina.

Los elementos básicos constitutivos de un programa o algoritmo son:

· Palabras reservadas (inicio, fin, si – entonces…, etc.)

· Identificadores (nombres de variables esencialmente)

· Caracteres especiales (coma, apóstrofos, etc.)

· Constantes

· Variables

· Expresiones

· Instrucciones

Page 19: CUESTIONARIO UNIDAD 4

Además de estos elementos básicos, existen otros elementos que forman parte de los programas, cuya comprensión y funcionamiento será vital para el correcto diseño de un algoritmo y naturalmente la codificación del programa.

Estos elementos son:

· Bucles

· Contadores

· Acumuladores

· Interruptores

· Estructuras:

- Secuenciales

- Selectivas

- Repetitivas

El amplio conocimiento de todos los elementos de programación y el modo de su integración en los programas constituyen las técnicas de programación que todo buen programador debe conocer.

7.- ILUSTRE CON UN ESQUEMA LA CLASIFICACION EXTENSA DE TODOS LOS TIPOS DE DATOS QUE EXISTEN EN LA POO (INCLUYENDO LOS SUBTIPOS) Y EJEMPLIFIQUE CADA UNO CON 5 EJEMPLOS.

Se clasifican según el tipo de maquina o lenguaje y generalmente encontramos los siguientes:

*numéricos: son símbolos que representan un valor determinado pueden ser enteros o decimales. Estos a su vez pueden ser:-enteros: pues como su nombre lo indica son enteros, es decir, no tienen parte fraccionaria pueden ser positivos y negativos.-real: incluye a los enteros y a los fraccionarios.

*lógicos: son aquellos que solo tiene dos posibles soluciones ya sea verdadero o falso cuando se requiere tomar una decisión. Son muy conocidos como boléanos.

*cadenas: son de tipo textual, es decir, son palabras, símbolos o frases y no tienen valor alguno.Se clasifican en dos categorías:-datos tipo carácter (char): son símbolos o letras que la computadora reconoce. Como pueden ser los números, letras del alfabeto y otros como los de suma (+), resta (-), multiplicación (*),

Page 20: CUESTIONARIO UNIDAD 4

etc. Este tipo de datos contiene un solo carácter.-datos tipo cadena (string): son un conjunto de caracteres los cuales son delimitados por comilla o apostrofé dependiendo del lenguaje en el que estemos programando.

Los tipos de datos numéricos, lógicos y de cadenas son datos simples ya que no son complejos. Existen los datos compuestos y son:

*subrango: especifica el intervalo valido para los valores de un dato.*enumerativos: se definen individualmente para el dato. Siempre se deben de poner entre paréntesis; ejemplo: (14, 15, 20, 89)*definidos por el usuario: son creadas por el programador de acuerdo al diseño del programa y para satisfacer las necesidades del mismo.

8.- EXPLIQUE AMPLIAMENTE LAS REGLAS FUNDAMENTALES PARA CREAR IDENTIFICADORES VALIDOS EN LA POO E ILUSTRE 5 EJEMPLOS DE IDENTIFICADORES DIFERENTES POR CADA TIPO QUE EXISTE.

Identificador.

Un identificador es una secuencia de caracteres comenzando por una letra y conteniendo letras y números. Los identificadores no se limitan a los caracteres ASCII, si el editor de texto lo soporta, se pueden escribir identificadores utilizando caracteres Unicode.

Las letras Java incluyen los caracteres ASCII A-Z y a-z. Los dígitos Java incluyen los dígitos ASCII 0-9. Para propósitos de construir identificadores, los caracteres ASCII $ y _ son también considerados letras Java.

No hay un límite en lo concerniente al número de caracteres que pueden tener los identificadores.

Secuencia de caracteres que puede ser usada como un nombre en un programa

Los identificadores nombran variables, funciones, clases y objetos; cualquier cosa que el programador necesite identificar o usar.

En Java, un identificador comienza con una letra, un subrayado (_) o un símbolo de dólar ($).

1.- Los siguientes caracteres pueden ser letras o dígitos.

2.-Se distinguen las mayúsculas de las minúsculas y no hay longitud máxima.

Palabras clave

3.- Las siguientes son las palabras clave que están definidas en Java y que no se pueden utilizar como identificadores:

abstract continue for new switch boolean default goto null synchronized break do if package this byte double implements private threadsafe byvalue else import protected throw

Page 21: CUESTIONARIO UNIDAD 4

case extends instanceof public transient catch false int return true char final interface short try class finally long static void const float native super while

Palabras Reservadas

4.- Además, el lenguaje se reserva unas cuantas palabras más, pero que hasta ahora no tienen un cometido específico. Son:

cast future generic inner operator outer rest var

Serían identificadores válidos:

Identificador nombre_usuario Nombre_Usuario _variable_del_sistema $transaccion

y su uso sería, por ejemplo:

int contador_principal; char _lista_de_ficheros; float $cantidad_en_Ptas;

Ejemplos de identificadores válidos:

_varx $var1 MAX_NUM var2

true, false, and null no son palabras claves pero son palabras reservadas, así que tampoco pueden ser utilizadas como identificadores

9.- EXPLIQUE AMPLIAMENTE COMO SE ESTRUCTURA LA MEMORIA VIRTUAL Y REAL DE UNA COMPUTADORA ASI MISMO EXPLIQUE COMO SE ALMACENA, DIRECCIONA Y SE RECUPERAN LOS DATOS ALMACENADOS EN LA MEMORIA DE LA COMPUTADORA AL UTILIZAR UN PROGRAMA.

Memoria Virtual

Page 22: CUESTIONARIO UNIDAD 4

La Memoria virtual es un concepto que permite al software usar más memoria principal que la que realmente posee el computador. La mayoría de los computadores tienen cuatro tipos de memoria: registros en la CPU, la memoria cache (tanto dentro como fuera del CPU), la memoria física (generalmente en forma de RAM, donde la CPU puede escribir y leer directa y razonablemente rápido) y el disco duro que es mucho más lento, pero también más grande y barato.

Muchas aplicaciones requieren el acceso a más información (código y datos) que la que puede ser mantenida en memoria física. Esto es especialmente cierto cuando el sistema operativo permite múltiples procesos y aplicaciones corriendo simultáneamente.

Una solución al problema de necesitar mayor cantidad de memoria de la que se posee, consiste en que las aplicaciones mantengan parte de su información en disco, moviéndola a la memoria principal cuando sea necesario. Hay varias formas de hacer esto. Una opción es que la aplicación misma sea responsable de decidir qué información será guardada en cada sitio (segmentación), y de traerla y llevarla. La desventaja de esto, además de la dificultad en el diseño e implementación de cada programa, es que es muy probable que los intereses sobre la memoria de dos o varios programas generen conflictos entre sí: cada programador podría realizar su diseño tomando en cuenta que es el único programa corriendo en el sistema. La alternativa es usar memoria virtual, donde la combinación entre hardware especial y el sistema operativo hace uso de la memoria principal y la secundaria para hacer parecer que la computadora tiene mucha más memoria principal (RAM) que la que realmente posee. Este método es invisible a los procesos. La cantidad de memoria máxima que se puede hacer ver que existe tiene que ver con las características del procesador. Por ejemplo, en un sistema de 32 bits, el máximo es 232, lo que da aproximadamente 4000 Megabytes (4 Gigabytes). Todo esto hace el trabajo del programador de aplicaciones mucho más fácil, al poder ignorar completamente la necesidad de mover datos entre los distintos espacios de memoria.

Aunque la memoria virtual podría ser implementada por software del sistema operativo, en la práctica casi universalmente se usa una combinación de hardware y software, dado el esfuerzo extra que implicaría ello para el procesador.

Almacenamiento de Datos

La única estructura que ofrece la memoria es la organización de sus elementos en bytes. Por tanto, para almacenar los datos que manipula un procesador es imprescindible saber de antemano su tamaño. El tamaño de algunos datos básicos viene definido por la arquitectura del propio procesador. Por ejemplo, el lenguaje máquina de la arquitectura IA-32 contiene instrucciones máquina para operar enteros de 32 bits. Esto no quiere decir que el procesador

Page 23: CUESTIONARIO UNIDAD 4

no pueda manejar enteros de otros tamaños, sino que el procesador manipula estos de forma mucho más rápida y eficiente. Números de otros tamaños pueden ser manipulados igualmente pero con un coste mayor en tiempo de ejecución.

Los lenguajes de programación de alto nivel como Java definen un conjunto de datos denominados “básicos” y un conjunto de mecanismos para definir datos complejos en base a ellos. Como los programas escritos en estos lenguajes deben ejecutar en diferentes equipos con diferentes procesadores, es difícil definir el tamaño de los datos tal que se ajuste a todos ellos. El compilador se encarga de transformar las operaciones escritas en lenguaje de alto nivel en las instrucciones más adecuadas para manipular los datos en el procesador pertinente. La tabla 3.2 muestra los tipos de datos básicos definidos en Java así como su tamaño.

La regla para almacenar datos en memoria es utilizar tantos bytes como sean necesarios a partir de una dirección de memoria. En adelante, la posición de memoria a partir de la cual está almacenado un dato se denominará su dirección de memoria. De forma análoga, cuando se dice que un dato está en una posición de memoria lo que significa es que está almacenado en esa posición y las siguientes que se precisen.

Dirección y Almacenamiento

Almacenamiento de direcciones de memoria Supongamos que la memoria utilizada tiene un tamaño de 4 Gigabytes y por tanto sus direcciones se representan con 32 bits. Las direcciones de memoria son números naturales en el rango [0, 232 - 1]. Pero este número natural es susceptible de ser almacenado él mismo en memoria. Es decir, se puede almacenar la representación binaria de una dirección de memoria en la propia memoria. Al tener un tamaño de 32 bits o 4 bytes, se utilizan para ello cuatro posiciones de memoria consecutivas.

Una dirección de memoria, por tanto, se puede considerar de dos formas posibles: o como una dirección de una celda de memoria, o como un número natural susceptible de ser manipulado como tal. Supóngase que en la posición de memoria 0×00000100 se encuentra almacenado el número entero de 32 bits 0×0153F2AB y que en la posición 0×00000200 se debe almacenar la dirección de dicho número. Para ello se almacena, a partir de la posición 0×00000200 el número 0×00000100 utilizando los cuatro bytes a partir de esa posición y se hace en orden creciente de significación al utilizar el esquema little endian.

Tipo Contiene Tamaño Rango boolean true, false 1 bit byte Entero 8 bits [-128, 127]char Caracter Unicode 16 bits [0, 65535]short Entero 16 bits [-32768, 32767]int Entero 32 bits [-2147483648, 2147483647]long Entero 64 bits [-9223372036854775808,

9223372036854775807]float IEEE-754 Coma Flotante 32 bits [±1.4012985E-45, ±3.4028235E+38]double IEEE-754 Coma Flotante 64 bits [±4.94065645841246544E-324,

±1.7976931348623157E+308]

Page 24: CUESTIONARIO UNIDAD 4

Tras almacenar la dirección de memoria de un dato en la posición 0x00000200, ¿es posible obtener de nuevo el número 0x0153F2AB? La respuesta es afirmativa, pero no de forma inmediata, se debe obtener de memoria primero los cuatro bytes almacenados en la posición 0x00000200 y utilizarlos como una dirección de memoria de donde obtener los cuatro bytes contenidos en la posición 0x00000100. El acceso a este último dato se ha realizado de forma indirecta, es decir, mediante un acceso previo a memoria para obtener la dirección del dato final. Utilizando la notación funcional de operaciones sobre memoria, el acceso al dato se logra ejecutando Lectura(Lectura(0x00000200)).

A este mecanismo de acceso a un dato en memoria a través de su dirección a su vez almacenada en otra posición se le conoce con el nombre de “indirección”. En el ejemplo anterior se dice que el dato almacenado en la posición 0x00000200 apunta al dato 0x0153F2AB. La figura 3.16 ilustra esta situación.

El mecanismo de indirección se puede encadenar de manera arbitrariamente larga. La dirección que contiene la dirección de un dato, a su vez se puede almacenar de nuevo en memoria. En tal caso, para acceder al dato final se requieren dos accesos a memoria en lugar de uno. Por tanto, es posible almacenar las direcciones tal que haya que seguir una cadena de indirecciones para en última instancia acceder al dato. La figura 3.17 muestra una distribución de datos tal que la posición 0x00000100 contiene “la dirección de memoria de la dirección de memoria de la dirección de memoria del dato”.

Page 25: CUESTIONARIO UNIDAD 4

De la técnica de indirección se deriva que en memoria no sólo se almacenan datos (naturales, enteros, coma flotante, letras, etc.) sino también direcciones de memoria. Todos estos datos, a efectos de almacenamiento y su manipulación por el procesador, no son más que una secuencia de bytes en diferentes celdas. El que una secuencia de bits determinada se interprete como un número o como una dirección queda totalmente bajo el control del programador. En los programas escritos en ensamblador es preciso saber qué dato está almacenado en qué posición de memoria pero el propio lenguaje no aporta mecanismo alguno que compruebe que se el acceso se hace de forma correcta. Si por error en un programa se obtiene un dato de 32 bits de memoria y se interpreta como una dirección cuando en realidad es un dato numérico o viceversa, lo más probable es que el programa termine de forma brusca o con resultados incorrectos.

10.- EXPLIQUE AMPLIAMENTE EN QUE CONSISTE EL SISTEMA BINARIO, OCTAL, HEXADECIMAL Y DECIMAL EJEMPLIFICANDO CON 5 EJEMPLOS CADA UNO DE ELLOS.

SISTEMA DECIMAL.

Este es el sistema que manejamos cotidianamente, está formado por diez símbolos {0, 1, 2, 3, 4, 5, 6, 7, 8, 9} por lo tanto la base del sistema es diez (10).

Ejemplos:

1. 122. 243. 954. 1005. 1986

SISTEMA BINARIO.

Es el sistema que utiliza internamente el hardware de las computadoras actuales, se basa en la representación de cantidades utilizando los dígitos 1 y 0. Por tanto su base es 2 (número de dígitos del sistema). Cada dígito de un número en este sistema se denomina bit (contracción de binary digit). Se puede utilizar con nombre propio determinados conjuntos de dígitos en binario. Cuatro bits se denominan cuaterno (ejemplo: 1001), ocho bits octeto o byte (ejemplo: 10010110), al conjunto de 1024 bytes se le llama Kilobyte o simplemente K, 1024 Kilobytes forman un megabyte y 1024 megabytes se denominan Gigabytes.

Page 26: CUESTIONARIO UNIDAD 4

Ejemplos:

1. 10100(20)2. 11111011000(2008)3. 100(4)4. 10100100(164)5. 1111(15)

SISTEMA OCTAL.

El sistema numérico octal utiliza ocho símbolos o dígitos para representar cantidades y cifras numéricas. Los dígitos son: {0, 1, 2, 3, 4, 5, 6, 7}; la base de éste es ocho (8) y es un sistema que se puede convertir directamente en binario

Ejemplos:

1. 144 (100)2. 12 (10)3. 172 (122)4. 20 (16)5. 11 (9)

SISTEMA HEXADECIMAL.

El sistema numérico hexadecimal utiliza dieciséis dígitos y letras para representar cantidades y cifras numéricas. Los símbolos son: {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F}; la base del sistema es dieciséis (16). También se puede convertir directamente en binario como se verá más adelante. En la tabla 1.1 se muestran los primeros veintiuno números decimales con su respectiva equivalencia binaria, octal y hexadecimal.

Ejemplos:

1. A(10)2. 14(20)3. E(14)4. 400(1024)5. 7D8(2008)

11.- REALICE LAS CONVERSIONES SIGUIENTES (5 EJEMPLOS DE CONVERSIONES), EXPLICANDO PRIMERAMENTE Y TEORICAMENTE COMO SE DEBE DE HACER ESTA CONVERSION.

DECIMAL A BINARIOBINARIO A DECIMAL

Page 27: CUESTIONARIO UNIDAD 4

DECIMAL A OCTALOCTAL A DECIMAL

DECIMAL A HEXADECIMALHEXADECIMAL A DECIMAL

BINARIO A HEXADECIMALHEXADECIMAL A BINARIO

DECIMAL A BINARIO

Para realizar la conversión decimal a binario se realiza lo siguiente:

1) Se divide la cantidad decimal entre 2, de la división se obtiene 2 números, uno llamado Residuo y otro llamado Cociente.

2) Con ambos se realiza una lista poniendo al lado izq. El cociente y al derecho el residuo.3) Y así sucesivamente hasta que el cociente sea cero.4) Para agrupar o cortar la cantidad binaria resultante, se comienza de la parte inferior.

Decimal

164

Proceso

División Cociente Residuo

164/2 82 082/2 41 041/2 20 120/2 10 010/2 5 05/2 2 12/2 1 01/2 0 1

10100100 Binario

Conversiones Decimal a Binario

1) 1568 110001000002) 1111 100010101113) 10 10104) 120 11110005) 200 11001000

BINARIO A DECIMAL

Para realizar la conversión de binario a Decimal se realiza lo siguiente:

Page 28: CUESTIONARIO UNIDAD 4

1) Se inicia por el lado derecho del número Binario. Cada numero se multiplica por (2) y se eleva a la potencia consecutiva (iniciando por la potencia 0).

2) Después se realiza cada una de las multiplicaciones, se suman todas y el número resultante será el equivalente al Sistema Decimal.

Binario

110101

Procesotomando los números

1*(2) elevado a (0)= 10*(2) elevado a (1)= 01*(2) elevado a (2)= 40*(2) elevado a (3)= 01*(2) elevado a (4)= 161*(2) elevado a (5)= 32

1+0+4+0+16+32

53Decimal

Conversiones Binario a Decimal

1) 10010111 1512) 110111 553) 11001000 2004) 11111011000 20085) 100 4

DECIMAL A OCTAL

Para realizar la conversión de Decimal a Octal se realiza lo siguiente:

1) Se divide la cantidad decimal entre 2, de la división se obtiene 2 números, uno llamado Residuo y otro llamado Cociente.

2) Con ambos se realiza una lista poniendo al lado izq. El cociente y al derecho el residuo.3) Y así sucesivamente hasta que el coeficiente sea cero o menor al número 8.4) Para agrupar o cortar la cantidad binaria resultante, se comienza de la parte inferior.

Decimal

8777

Proceso

Page 29: CUESTIONARIO UNIDAD 4

División Cociente Residuo

8777/8 1097 11097/8 137 1137/8 17 117/8 2 12/8 2 2

21111 Octal

Conversiones Decimal a Octal

1) 24 302) 100 1243) 56 704) 1024 20005) 21 25

OCTAL A DECIMAL

Para realizar la conversion de octal a decimal se realiza lo sigueinte:

1) se incia por el lado derecho del numero octal, cada numero se multiplica por 8, pero antes se debe elevar ala potencia consecutiva iniciando por la potencia cero.

2) Despues se suma el resultado de cada una de las multiplicaciones y el numero resultante sera el equivalente al sistema decimal.

Octal 4023

Proceso: tomamos los numeros de derecha a izquierda y hacemos las siguientes operaciones:

3(8^0)=32(8^0)=160(8^2)=04(8^3)=2048

3+16+0+2048

2067decimal

Conversiones Octal a Decimal

1) 503 3232) 734 4763) 763 4994) 5236 2718

Page 30: CUESTIONARIO UNIDAD 4

5) 71 57

DECIMAL A HEXADECIMAL

Para realizar la conversion de Decimal a Hexadecimal, se realiza lo siguiente:

1. Se divide la cantidad decimal entre 16, de la division se obtienen dos numeros, el residuo y el cociente.

2. Con ambos numeros se realiza una lista poniendo al lado izquierdo el cociente y al lado derecho el residuo.

3. Y asi sucesivamente hasta que el cociente sea cero o menor al numero 16.4. Para agrupar o contar la cantidad hexadecimal resultante, se comienza de la parte

inferior, recuerda sustituir los numerots mayores de 9 con sus respectivas letras A=10, B=11, C=12, D=13, E=14, F=15.

Decimal 1523

Proceso:

Division Cociente Residuo1523/16 95 395/16 5 155/16 0 5

5F3Hexadecimal

Conversiones Decimal a Hexadecimal

1) 2600 A282) 5523 15933) 26 1A4) 1000 3E85) 2008 7D8

HEXADECIMAL A DECIMAL

Para realizar la conversion de Hexadecimal a Decimal se realiza lo siguiente:

1) Se inicia por el lado derecho del numero hexadecimal, cada numero multiplicalo por 16, pero antes debes elevarlo a la potencia consecutiva iniciando por la potencia cero.

2) Despues se suma el resultado de cada una de las multiplicaciones y el numero resultante sera el equivalente al sistema decimal.

Hexadecimal 812

Procedimiento:tomamos los numero sde deracha a izquierda y hacemos las sigueintes operaciones:

2(16^0)=2 1(16^1)=168(16^2)=2048

2+16+2048

Page 31: CUESTIONARIO UNIDAD 4

2066Decimal

Conversiones Hexadecimal a Decimal

1) F73 39552) 9AB1 396013) EF36 612384) CD 2055) 2B 43

BINARIO A HEXADECIMAL

Para realizar la conversion de binario a hexadecimal se realiza lo siguiente:

1) Se agrupa la cantidad binaria en grupos de 4 en 4, inciando por el lado derecho, si al terminar de agrupar no completas 4 digitos, entonces se agrega ceros a la izquierda.

2) Posteriormente se ve el valor correspondiente de acuerdo a la tabla:

Numero Valor Numero Valor0000 0 1000 80001 1 1001 90010 2 1010 A0011 3 1011 B0100 4 1100 C0101 5 1101 D0110 6 1110 E0111 7 1111 F

3) La cantidad correspondiente en Hexadecimal se agrupa de izquierda a derecha.

Binario

110111010

Proceso: Tomando los numeros de derecha a izquierda en grupos de 4 en 4:

1010=A1011=B1 entonces agrega 0001=1

1BAHexadecimal

Conversiones Binario a Hexadecimal

1) 11011110101 6F52) 1101001001 3493) 110001 314) 10100010 A25) 10100 14

Page 32: CUESTIONARIO UNIDAD 4

HEXADECIMAL A BINARIO

Para realizar la conversion de Hexadecimal a Binario se realiza lo siguiente:

1) Solamente se sustituye el valo del digito hexadecimal por su representacion binaria es 4 digitos binarios correspondientes.

2) Despues agrupe de izquierda a derecha los digitos, para formar la cantidad binaria.

Hexadecimal CD5procedimiento: Tomamos los numeros en ese orden y cada uno lo convertimos a binario por separado:

C D 51100 1101 0101

110011010101 Binario

Conversiones Hexadecimal a Binario

1) 3A1 11101000012) 72C 111001011003) B56 1011010101104) 9E3 1001111000115) 15A 101011010

12.- MEDIANTE UNA TABLA DESCRIPTIVA ILUSTRE LA CLASIFICACION DE TODOS LOS TIPOS DE OPERACIONES QUE EXISTE Y QUE SE PUEDE APLICAR A TODOS LOS TIPOS DE DATO QUE EXISTE Y REPRESENTELOS JERARQUICAMENTE DE 5 EJEMPLOS DE EXPRESIONES VALIDAS POR CADA GRUPO DE OPERADORES.

Page 33: CUESTIONARIO UNIDAD 4

13.- realice una investigación sobre los pro y los contra de convertir en ejecutable un programa en java asi mismo

Page 34: CUESTIONARIO UNIDAD 4

explique ampliamente los procedimientos que existen para convertir un programa java en ejecutable.

Ventajas

Se hace mas rápido la ejecución de un programa ya que no hay que hacerlo desde consola o desde un editor de texto con jcreator o

texpad, lo cual suele ser molestoso.

Desventajas:

Que se necesita maquina virtual

Los ejecutables en JAVA, no son ".exe", eso hay que tenerlo en cuenta. Pues si fueran .exe , solo funcionarían en Windows, y JAVA, porsupuesto es multiplataforma, por lo que tiene otra forma de ejecutar sus archivos.

No requieren de un IDE para ejcutarse, el IDE, lo unico que hace es probar si todo funciona correctamente, y ejecutarle en tiempo de desarrollo del programa, pero no para producción.

Los proramas en JAVA, para ser ejecutados pasan por DOS procesos, uno de compilación (o pseudo compilación) y otro de interpretación (que es en si la ejecución).La compilación es para convertir el fuenta (.java) en (.class) de esa manera se obtienen un archivo independiente de la plataforma. Que puede ser distribuido incluso por la red, por su ligero tamaño. (por eso decimos que JAVA es un lenguaje de red).El proceso de Interpretación lo hace el JRE (java runtime engine) , ayudado claro, con el plugin, que esta preinstalado en el sistema operativo. El JRE, es independiente de la plataforma tambien, pero el plugin, si es dependiente de la plataforma, osea del Sistema operativo. Pero como este plugin viene desde fábrica, entonces, es transparente para nosostros.

Si quieres tener un archivo ejecutable de JAVA, siemptr tendra que seguir estos dos pasos, compilar y ejecutarse(interpretarse).Si es windows, creas un BAT, y si es linux, creas un SCRIPT, que te haga las veces de "ejecutor".

Si no quieres esa manera, tienes otra forma más estándar, por el lado de JAVA, tenemos a los archivos ".jar", que son archivos que pueden compimir a un conjunto de clases JAVA, y que pueden ser ejecutados por los Sistemas operativos, si tiene una clase ocn un método "main", claro.

En Java, en principio, no se pueden crear autoejecutables ya que este es un lenguaje multiplataforma y los archivos autoejecutables son dependientes de la plataforma. Esto

Page 35: CUESTIONARIO UNIDAD 4

provoca que tengamos que usar la consola para ejecutar nuestros programas; lo que supone un gran inconveniente para usuarios sobre todo acostumbrados a los entornos gráficos.

Existen varias soluciones para este asunto. Aquí se explican tres de ellas. La primera es la de crear ejecutables dependientes de la plataforma ; la segunda permite hacer más fácil la ejecución en cada plataforma sin impedir su ejecución en otra plataforma; la tercera es válida para cualquier plataforma y aporta otras muchas posibilidades.

Crear ejecutables de la plataforma

Podemos crear un ejecutable de la plataforma de varias maneras:

Podemos usar traducir el código java a código C con Toba o J2C. De esta forma sólo nos queda compilar el código C para crear el ejecutable. Toba es un proyecto libre cuyo desarrollo ha quedado estancado cuando Java iba por la versión 1.1, pero podemos descargarlo todavía desde su página web. J2C lo puedes encontrar aquí (creo; cuando veas la página sabrás el porqué de mis dudas),

Existe un compilador que además de permitirnos, como cualquier otro compilador, crear bytecodes a partir de ficheros .java, nos da la posibilidad de compilar el fuente (archivos .java) para obtener un ejecutable de la plataforma y también permite crear un ejecutable de la plataforma a partir del bytecode. De esta forma el código obtenido es mucho más rápido. El programa se llama GJC y forma parte la familia de compiladores GCC del proyecto GNU que se desarrolla bajo la GPL (General Public License).

Si lo que queremos es crear un archivo ejecutable .exe (para plataforma Windows) y prescindir de la cualidad de multiplataforma de este lenguaje, lo que hay que hacer es conseguir un programa que realice esta tarea. Esto lo hacen algunas IDE's y el programa JtoExe. Al crear un .exe lo que hacemos es sustituir los archivos de clase de Java, al contrario que la siguiente opción que complementa y no sustituye. En particular el programa JtoExe necesita de la máquina virtual de Java para poder ejecutar el programa de modo seguiremos necesitando instalar la JVM al contrario que las dos opciones anteriores.

Crear scripts

Otra posibilidad, que nos permite mantener la multiplataforma es crear un script para cada plataforma. Esto lo que nos permite es facilitar la ejecución dentro de cada plataforma sin evitar que podamos ejecutar el programa en otra para la que no hayamos creado un script. Bueno para el que no haya entendido nada hasta aquí o no sepa lo que es un script lo voy a explicar más claramente. Un script no es más que un archivo en el que se guardan los comandos que se teclearían en la consola (es decir, lo que teclearías en una ventana MS-DOS en caso de usar este Sistema Operativo o en una shell para los que usen Unix) para que fuera interpretados por el intérprete de comandos.

Archivos .bat

Los script de Windows/MS-DOS se llaman archivos por lotes de MS-DOS, y su extensión es .bat. De este modo solamente tenemos que crear un archivo de este tipo cuya única línea sea la siguiente:

javaw ClasePrincipal

Page 36: CUESTIONARIO UNIDAD 4

Ya sólo nos queda ejecutarlo con un doble click en el navegador de archivos y se lanzará la aplicación por medio del programa javaw del JDK (deberá estar indicada la ruta de este programa en la variable de entorno PATH). También podríamos haber usado el programa java.exe. Esta solución tiene un inconveniente: se abre una ventana de MS-DOS muy incómoda. Si usamos el programa javaw.exe esta ventana podrá cerrarse nada más ser lanzada la aplicación y si usamos el programa java.exe sólo podrá cerrarse una vez finalizada la aplicación.

Scripts en Unix

Para los que usen Unix crear el script no debe tener mucha dificultad. Podemos crearlo desde la shell de la siguiente forma:

shell>echo 'java ClasePrincipal' > nombre_archivo_del_script

Siendo ClasePrincipal la clase que se ha de ejecutar y estando la ruta hacia el programa java en la variable de entorno PATH y la ruta hacia ClasePrincipal en la variable de entorno CLASSPATH. Y posteriormente ejecutarlo de la siguiente forma:

shell>sh nombre_archivo_del_script

Aunque también podríamos ejecutarlo, aunque para ello deberíamos darle los permisos adecuados. Una vez dados estos permisos lo podríamos ejecutar desde la shell de la siguiente forma:

shell>./nombre_archivo_del_script

O de la siguiente si en la variable de entorno PATH se ha especificado el directorio actual

shell>nombre_archivo_del_script

Ejecutar directamente desde Linux

Desde la versión del Kernel 2.2.10 existe una posibilidad a la hora de compilar el kernel que nos permite ejecutar directamente un bytecode como si se tratara de un binario para Linux. Para ello necesitaremos compilar un kernel con la opción de Misc Binaries. Tendremos que crear un scrip para lanzar las clases (esto no será necesario para los applets). De este modo bastará con cambiar los permisos del bytecode para permitir su ejecución y ya podremos lanzar nuestro applet o aplicación como un ejecutable más. Todo ello se explica en la documentación del kernel 2.2.10.

Archivos jar

La última y más recomendada posibilidad es la de hacer un archivo jar ejecutable. Los archivos jar permiten introducir todos los archivos necesarios para ejecutar nuestra aplicación (clases, imágens, sonidos, archivos de texto, ...) en uno solo con la posibilidad de comprimirlos. Pero además ofrecen otras posibilidades, entre las que se encuentra la posibilidad de añadir información adicional: versión del programa, quién lo ha creado, ... y la que en nuestro caso nos interesa: indicar la clase principal (la que contiene el método main) para poder ejecutarla con el intérprete del JDK (el programa java). Esta información se guarda en un archivo dentro del jar, que se llama MANIFEST.MF cuya ruta dentro del archivo jar será siempre META-INF/MANIFEST.MF. Este archivo es creado por defecto siempre que se crea un archivo jar. Este archivo se puede personalizar, y ahora veremos como:

Para administrar un archivo jar se usa el programa jar del JDK.

Page 37: CUESTIONARIO UNIDAD 4

Crear un arhchivo jar

A continuación se muestra un ejemplo de cómo crear un archivo jar con las opciones más usuales.

jar cfv MiArchivo.jar Clase1.class Clase2.class Imagen.gif Sonido.au OtrosArchivos

En esta ocasión se ha creado un archivo jar de nombre MiArchivo.jar que contendrá los archivos Clase1.class, Clase2.class, Imagen.gif y Sonido.au y el directorio OtrosArchivos. Como se puede observar en un archivo jar podemos meter cualquier tipo de archivo, incluso directorios. Si exite alguna referencia a archivos dentro de otro directorio estas se mantendrán sin producirse errores ya que la jerarquía de directorios se mantiene dentro del archivo. En el ejemplo se han empleado las opciones c, f y v de la línea de comandos. Estas opciones y otras se explican a continuación:

c .- Indica que vamos a crear un archivo.f .- Indica que la salida quieres que vaya a un fichero, y no a la salida estandar.v .- Indica que quieres obtener información durante el proceso de creación del archivo.m .- Indica al programa que queremos personalizar el archivo de manifiesto para añadir información adicional.M .- Indica que no se cree el archivo de manifiesto.0 .- Indicamos que no queremos que se comprima el contenido del archivo.