You are on page 1of 40

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
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:

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.

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 colaborativa
Los 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
Artículo principal: Lenguaje de alto nivel
Los 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

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.
• 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

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:

01234567
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:

0123456789ABCDEF

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

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ón
Mod 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

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 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.

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 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 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.

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.

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 Word Writer Abiword wordpad Corel

Caract. wordperfe
ct
Tipo software Procesado Procesado Procesado Procesado Procesado
r r r r r

textos textos textos textos textos

Fiabilidad Buena Buena Buena Buena Buena

Eficiencia Buena Buena Excelente Buena Excelente

Integridad Buena Buena Buena Buena Buena

Facilidad de Depende Buena Muy Buena Muy buena


uso la versión buena

Facilidad de ND ND Buena ND ND
mantenimient
o

Flexibilidad Buena Buena Buena Poca Muy buena

Facilidad de Buena Buena Buena Buena Muy buena


prueba

Portabilidad ND ND Buena ND ND

Facilidad de Si Si ND ND ND
reuso

Interoperabili si ND Si Poca Buena


dad

Software Dreamwea Photoshop Coreldraw Autodesk Cool 3D


ver Graphics
Caract.

Tipo software Diseño Edicion de Diseño Diseño 3D Diseño


web Fotografia grafico 3D
s

Fiabilidad Muy Buena Muy Buena Buena Buena


buena

Eficiencia Excelente Excelente Muy Buena Muy


buena Buena

Integridad Buena Buena Buena Buena Buena

Facilidad de Buena Buena Regular Poca Buena


uso

Facilidad de ND ND ND ND ND
mantenimient
o

Flexibilidad Buena Buena Regular Regular ND

Facilidad de Buena Buena Buena Poca Muy


prueba buena

Portabilidad ND ND ND ND ND

Facilidad de ND ND ND Buena ND
reuso

Interoperabili Muy buena ND Buena ND Buena


dad

Softwar Adobe SuperDVD Full ZS4 Video AVS Video


e Premiere video Motion Editor Tool
Pro editor Video
Caract.

Tipo de Edicion de Edicion de Edicion de Edicion de Edicion de


software video video video video video

Fiabilidad Buena Regular Buena Buena Muy


buena

Eficiencia Buena Regular Buena Buena Muy


buena

Integridad Buen a Regular Buena Buena Buena

Facilidad de Buena Mala Buena Regular Buena


uso

Facilidad de ND ND ND ND ND
mantenimient
o

Flexibilidad Buena Regular Mala Regular Muy


buena

Facilidad de Buena Mala Buena Buena Buena


prueba

Portabilidad ND ND Regular Mala ND

Facilidad de ND ND ND ND ND
reuso
Interoperabili ND ND ND ND ND
dad

Softwar Kaspersky NOD 32 AVG Panda Norton


e

Caract.

Tipo de Antivirus Antivirus Antivirus Antivirus Antivirus


software

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 Buena Buena Buena Buena Regular


uso

Facilidad de Buena Buena Buena Buena Regular


mantenimient
o

Flexibilidad Buena Buena Buena Buen a ND

Facilidad de Buena Buena Buena Buena Regular


prueba

Portabilidad ND ND ND ND ND

Facilidad de ND ND ND ND ND
reuso

Interoperabili Buen a Buena Buena Buena Buena


dad

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

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 (*), 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
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
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 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.
Tipo Contiene Tamaño Rango
booleantrue, 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]
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.
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”.

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. 12

2. 24

3. 95

4. 100

5. 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.

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 BINARIO
BINARIO A DECIMAL
DECIMAL A OCTAL
OCTAL A DECIMAL
DECIMAL A HEXADECIMAL
HEXADECIMAL A DECIMAL
BINARIO A HEXADECIMAL
HEXADECIMAL 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 0
82/2 41 0
41/2 20 1
20/2 10 0
10/2 5 0
5/2 2 1
2/2 1 0
1/2 0 1

10100100
Binario

Conversiones Decimal a Binario

1) 1568 11000100000

2) 1111 10001010111

3) 10 1010
4) 120 1111000

5) 200 11001000

BINARIO A DECIMAL

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

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

Proceso
tomando los números

1*(2) elevado a (0)= 1


0*(2) elevado a (1)= 0
1*(2) elevado a (2)= 4
0*(2) elevado a (3)= 0
1*(2) elevado a (4)= 16
1*(2) elevado a (5)= 32

1+0+4+0+16+32

53
Decimal

Conversiones Binario a Decimal

1) 10010111 151

2) 110111 55

3) 11001000 200

4) 11111011000 2008

5) 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

División Cociente Residuo

8777/8 1097 1
1097/8 137 1
137/8 17 1
17/8 2 1
2/8 2 2

21111
Octal

Conversiones Decimal a Octal

1) 24 30

2) 100 124

3) 56 70

4) 1024 2000

5) 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)=3
2(8^0)=16
0(8^2)=0
4(8^3)=2048

3+16+0+2048

2067
decimal

Conversiones Octal a Decimal

1) 503 323

2) 734 476

3) 763 499

4) 5236 2718

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 Residuo


1523/16 95 3
95/16 5 15
5/16 0 5

5F3
Hexadecimal

Conversiones Decimal a Hexadecimal


1) 2600 A28

2) 5523 1593

3) 26 1A

4) 1000 3E8

5) 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)=16
8(16^2)=2048

2+16+2048

2066
Decimal

Conversiones Hexadecimal a Decimal

1) F73 3955

2) 9AB1 39601

3) EF36 61238

4) CD 205

5) 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 Valor
0000 0 1000 8
0001 1 1001 9
0010 2 1010 A
0011 3 1011 B
0100 4 1100 C
0101 5 1101 D
0110 6 1110 E
0111 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=A
1011=B
1 entonces agrega 0001=1

1BA
Hexadecimal

Conversiones Binario a Hexadecimal

1) 11011110101 6F5

2) 1101001001349

3) 110001 31

4) 10100010 A2

5) 10100 14

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
CD5
procedimiento: Tomamos los numeros en ese orden y cada uno lo
convertimos a binario por separado:
C D 5
1100 1101 0101

110011010101
Binario

Conversiones Hexadecimal a Binario

1) 3A1 1110100001

2) 72C 11100101100

3) B56 101101010110

4) 9E3 100111100011

5) 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.
13.- realice una investigación sobre los pro y los contra de
convertir en ejecutable un programa en java asi mismo
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 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
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.

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.

You might also like