Cuestionario Unidad 4
Cuestionario Unidad 4
Cuestionario Unidad 4
INTRODUCCION A LA
PROGRAMACION
1.- EXPLIQUE AMPLIAMENTE LOS SIGUIENTES CONCEPTOS
SOFTWARE
Sistemas operativos
Controladores de dispositivo
Herramientas de diagnóstico
Herramientas de Corrección y Optimización
Servidores
Utilidades
Editores de texto
Compiladores
Intérpretes
Enlazadores
Depuradores
PROGRAMA
PROGRAMADOR
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
DATO
IDENTIFICADOR
Constantes
Variables
Sentencia de Asignació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
SISTEMA DE NUMERACION
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
1 . 24 + 0 .23 + 1 . 22 + 1 . 21 + 0 . 20 = 16 + 0 + 2 + 2 + 0 = (22)10
BASE 8 U OCTAL
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:
BASE 16 O HEXADECIMAL
Por lo que (327)16 = (807)10 Los signo utilizados en base 16 son los que se
indican a continuación:
0123456789ABCDEF
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:
OPERADOR
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
Ejemplos de expresión
EJECUTABLE
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).
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.
Orientados a Objetos.
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.
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.
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
Facilidad de ND ND Buena ND ND
mantenimient
o
Portabilidad ND ND Buena ND ND
Facilidad de Si Si ND ND ND
reuso
Facilidad de ND ND ND ND ND
mantenimient
o
Portabilidad ND ND ND ND ND
Facilidad de ND ND ND Buena ND
reuso
Facilidad de ND ND ND ND ND
mantenimient
o
Facilidad de ND ND ND ND ND
reuso
Interoperabili ND ND ND ND ND
dad
Caract.
Portabilidad ND ND ND ND ND
Facilidad de ND ND ND ND ND
reuso
· Constantes
· Variables
· Expresiones
· Instrucciones
· Bucles
· Contadores
· Acumuladores
· Interruptores
· Estructuras:
- Secuenciales
- Selectivas
- Repetitivas
*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.
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.
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
int contador_principal;
char _lista_de_ficheros;
float $cantidad_en_Ptas;
true, false, and null no son palabras claves pero son palabras reservadas,
así que tampoco pueden ser utilizadas como identificadores
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.
Ejemplos:
1. 12
2. 24
3. 95
4. 100
5. 1986
SISTEMA BINARIO.
Ejemplos:
1. 10100(20)
2. 11111011000(2008)
3. 100(4)
4. 10100100(164)
5. 1111(15)
SISTEMA OCTAL.
Ejemplos:
1. 144 (100)
2. 12 (10)
3. 172 (122)
4. 20 (16)
5. 11 (9)
SISTEMA HEXADECIMAL.
Ejemplos:
1. A(10)
2. 14(20)
3. E(14)
4. 400(1024)
5. 7D8(2008)
DECIMAL A BINARIO
Decimal
164
Proceso
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
1) 1568 11000100000
2) 1111 10001010111
3) 10 1010
4) 120 1111000
5) 200 11001000
BINARIO A DECIMAL
Binario
110101
Proceso
tomando los números
1+0+4+0+16+32
53
Decimal
1) 10010111 151
2) 110111 55
3) 11001000 200
4) 11111011000 2008
5) 100 4
DECIMAL A OCTAL
Decimal
8777
Proceso
8777/8 1097 1
1097/8 137 1
137/8 17 1
17/8 2 1
2/8 2 2
21111
Octal
1) 24 30
2) 100 124
3) 56 70
4) 1024 2000
5) 21 25
OCTAL A DECIMAL
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.
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
1) 503 323
2) 734 476
3) 763 499
4) 5236 2718
5) 71 57
DECIMAL A HEXADECIMAL
Decimal
1523
Proceso:
5F3
Hexadecimal
2) 5523 1593
3) 26 1A
4) 1000 3E8
5) 2008 7D8
HEXADECIMAL A 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
1) F73 3955
2) 9AB1 39601
3) EF36 61238
4) CD 205
5) 2B 43
BINARIO A HEXADECIMAL
Binario
110111010
1010=A
1011=B
1 entonces agrega 0001=1
1BA
Hexadecimal
1) 11011110101 6F5
2) 1101001001349
3) 110001 31
4) 10100010 A2
5) 10100 14
HEXADECIMAL A BINARIO
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
1) 3A1 1110100001
2) 72C 11100101100
3) B56 101101010110
4) 9E3 100111100011
5) 15A 101011010
Desventajas:
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 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.
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
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.