Documentos de Académico
Documentos de Profesional
Documentos de Cultura
SISTEMAS Y COMPUTACIN
CONCEPTOS BASICOS
POR:
TEMARIO
1. 2. 3. 4. CONCEPTOS BSICOS SOLUCIN DE PROBLEMAS AUXILIADOS POR LA COMPUTADORA. TCNICAS PARA LA FORMULACIN DE ALGORITMOS ENTIDADES PRIMITIVAS PARA LA CONSTRUCCIN DE INSTRUCCIONES. 5. LENGUAJE DE PROGRAMACION JAVA. 6. ARREGLOS. 7. MODULARIDAD
Sistema de cmputo.
Le llamamos sistema de cmputo a la configuracin completa de una computadora, incluyendo las unidades perifricas y la programacin de sistemas que la hacen un aparato til y funcional para un fin determinado.
Procesador Computadora.
Es un dispositivo aparato electrnico que procesa informacin y realiza calculos usando la aritmetica bsica a gran velocidad, precisin y confiabilidad
Esta parte es conocida tambin como unidad central de procesamiento o CPU formada a su vez por la unidad de control, la unidad aritmtica y lgica almacenamiento primario. Sus funciones consisten en leer y escribir contenidos de las celdas de memoria, llevar y traer datos entre celdas de memoria y registros especiales y decodificar y ejecutar las instrucciones de un programa. El procesador cuenta con una serie de celdas de memoria que se utilizan con mucha frecuencia y que, por ende, forman parte de la CPU. Estas celdas son conocidas con el nombre de registros. Un procesador puede tener una docena o dos de estos registros. La unidad aritmtica y lgica de la CPU realiza las operaciones relacionadas con los clculos numricos y simblicos. Tpicamente estas unidades slo tienen capacidad de efectuar operaciones muy elementales como: suma y resta de dos nmeros de punto fijo, multiplicacin y divisin de punto fijo, manipulacin de bits de los registros y comparacin del contenido de dos registros. Las computadoras personales pueden clasificarse por lo que se conoce como tamao de palabra, esto es, la cantidad de bits que el procesador puede manejar a la vez.
Memoria Central.
Es un conjunto de celdas (actualmente fabricadas con semiconductores) usadas para procesos generales, tales el almacenamiento de programas y el almacenamiento de datos . Cada una de las celdas debe contener un valor numrico y tienen la propiedad de ser direccinables, esto es, que se pueden distinguir una de otra por medio de un nmero nico o direccin para cada celda. El nombre genrico de estas memorias es Random Access Memory (Memoria de acceso aleatorio) o RAM por sus siglas en ingls. La principal desventaja de este tipo de memoria es que los circuitos integrados pierden la informacin que tienen almacenada cuando se interrumpe la alimentacin elctrica. Esto lleva a la creacin de memorias cuya informacin no se pierda cuando se apaga el sistema. Estas memorias reciben el nombre de Read Only Memory (Memoria de solo lectura) o ROM.
Software
En trminos de computacin es todo aquel proceso o programa que utiliza los recursos de la computadora para lograr el objetivo trazado por su diseador o programador.
UNIDAD I
CONCEPTOS BSICOS
ARQUITECTURA DE LA COMPUTADORA
CPU Unidad de Control PC
Dispositivo de Salida
Almacenamiento Secundario
1) La Unidad de control tiene tres funciones bsicas: 1. Leer e interpretar instrucciones del programa. 2. Dirigir la operacin de los componentes internos del procesador 3. Controlar el flujo de programas y datos hacia y desde la RAM. Un programa se debe cargar primero a la RAM antes de que se pueda ejecutar. Durante la ejecucin, la primera de una secuencia de instrucciones del programa se transfiere de la RAM a la UC, donde el decodificador, la decodifica es decir, la interpreta. 2) La Unidad Aritmtica Lgica, realiza todos los clculos (+,-,*, /) y todas las operaciones lgicas (comparaciones). 3) El Almacenamiento Primario. Es el espacio donde se guarda el programa que va a ejecutar la computadora y los datos que va a procesar el programa, o sea de forma temporal en la memoria RAM. 4) El Almacenamiento Secundario. Tiene capacidad ilimitada, es menos costoso y se guardan los programas de forma permanente, algunos de estos son: unidades de disco magntico, unidades de cinta magntica, disco de lser ptico. 5) Dispositivos de entrada. Proporcionan los medios por los cuales los datos son transmitidos a la computadora. Ejemplos: tarjetas perforadas, teletipos y pantallas de tubos de rayos catdicos (CRT) con teclado. 6) Dispositivos de Salida. Los dispositivos de salida permiten mostrar los datos. Ejemplo: impresoras, pantalla. Programa. Es un conjunto de instrucciones expresadas en forma ambigedades para resolver un problema. lgica, es decir sin
7) PC. Contador del Programa. Est en la unidad de control e indica el nmero de celda de memoria que contiene la instruccin que en ese momento se est ejecutando. 8) AC. Acumulador. Est en la unidad lgica aritmtica y almacena los resultados parciales.
SISTEMAS DE NUMERACIN Y LAS COMPUTADORAS. Las primeras computadoras se diseaban basndose en el sistema de numeracin decimal. Este planteamiento hizo que el desarrollo de las capacidades lgicas de la computadora fuera innecesariamente complicado y no utilizaba los recursos con eficiencia. (Por ejemplo, se necesitaban 10 bulbos al vaco para representar un dgito decimal. Un programa especial traduce el sistema decimal al binario en la entrada y el sistema binario al decimal en la salida. En condiciones normales, un programador slo ver entradas y salidas decimales. Sin embargo, en su momento, ste deber manejar largas y confusas sucesiones de 1 y 0 en forma de un volcado de memoria. Esto es como una fotografa instantnea del contenido del almacenamiento primario (bits apagados y bits encendidos) en un momento determinado. Para reducir, por lo menos en parte, la confusin de ver slo 1 y 0 en la salida, el sistema de numeracin Hexadecimal (de base 16) se usa como una simbologa sucinta para presentar el contenido binario tanto del almacenamiento primario como el almacenamiento secundario, pero no confundir, por que las computadoras no operan ni trabajan con el sistema Hexadecimal.
Ejemplo 38C070 38C0A0 38C0D0 38C100 29306294 D06E0610 12C44E0 FF0098E0 4580623F 12114770 607011E D08012EE D20DD0AA 6202D203 41818001 47806310 6229640 D09F629D 44F06076 D27CF000 8CECCC04 4120D121 9640D112 480D06A 88F00010 45B06236 455062DA 48 800000004 5820D120 94BFD112 D06C
Esto es un volcado de memoria Hexadecimal. Cada uno de los renglones es una representacin Hexadecimal del contenido del almacenamiento primario. La primera columna de nmeros a partir de la izquierda consiste en direcciones del almacenamiento. Cada par de dgitos hexadecimales representa los ocho bits de un byte. La direccin del primer byte (29) del volcado de memoria es 0038C070 en el sistema Hexadecimal ( 00000000001110001100000001110000 en el sistema binario). Se puede 8
apreciar cunto espacio se ahorra presentando volcados de memoria en el sistema Hexadecimal en vez de presentarlas en el sistema binario.
Contenido
10
11
10
Por qu usar sistema de numeracin binaria para las operaciones aritmticas en la computadora?
SISTEMA DE NUMERACIN DECIMAL 0*0=0 0*1=0 0*2=0 0*3=0 0*4=0 0*5=0 0*6=0 0*7=0 0*8=0 0*9=0 10 1*0=0 1*1=1 1*2=2 1*3=3 1*4=4 1*5=5 1*6=6 1*7=7 1*8=8 1*9=9 9 2*0=0 2*1=2 2*2=4 2*3=6 2*4=8 2 * 5 = 10 2 * 6 = 12 2 * 7 = 14 2 * 8 = 16 2 * 9 = 18 8 3 *0 = 0 3 *1 = 3 3 *2 = 6 3 *3 = 9 3 *4 = 12 3 *5 = 15 3 *6 = 18 3 *7 = 21 3 *8 = 24 3 *9 = 27 7 <- Nmero de combinaciones
Total de combinaciones diferentes por las tablas de multiplicar 10 + 9 + 8 + 7 + 6 + 5 + 4 + 3 + 2 + 1 = 55 Total de combinaciones diferentes por las tablas de sumar 10 + 9 + 8 + 7 + 6 + 5 + 4 + 3 + 2 + 1 = 55 SISTEMA DE NUMERACIN BINARIO 0*0=0 0*1=0 1*1=1 0+0=0 0+1=1 1 + 1 = 10
Total de combinaciones diferentes por las tablas de multiplicar = 3 Total de combinaciones diferentes por las tablas de sumar REGLA: LAS REGLAS ARITMETICAS SON UNIVERSALES NO DEPENDEN DEL SISTEMA DE NUMERACION QUE SE USE DECIMAL 9 1 10 BINARIO 1 +1 10 OCTAL 7 +1 10 MAGNITUDES
&&&&&&&&&& && &&&&&&&& &&&&&&&&&&&&&&&&
=3
HEXADECIMAL F +1 10
11
Sistemas de Numeracin Sistema Decimal Binario Octal Hexadecimal Base 10 2 8 16 Dgitos 0,1,2,3,4,5,6,7,8,9 0,1 0,1,2,3,4,5,6,7 0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F No. de Dgitos 10 2 8 16 Dgito Mayor 9 1 7 F
Tabla de Equivalencias de los Sistemas de Numeracin Decimal 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 Binario 0 1 10 11 100 101 110 111 1000 1001 1010 1011 1100 1101 1110 1111 10000 Octal 0 1 2 3 4 5 6 7 10 11 12 13 14 15 16 17 20 Hexadecimal 0 1 2 3 4 5 6 7 8 9 A B C D E F 10
12
Conversiones entre Sistemas de Numeracin DECIMAL A BINARIO 76d = ? Residuo 76 | 38 | 0 19 | 0 9|1 4|1 2|0 1| 0
76d = 1001100b
2+ 0 2
4 0 4+
8+ 1 9
19 1 18+
38+ 0 38
76 0 76+
1001100b = 76d
13
Conversiones entre Sistemas de Numeracin BINARIO A OCTAL Regla: Se separa la cantidad en grupos de tres bits de derecha a izquierda. Ejemplo: 10110101111b = ? 10 2 110 6 101 5 111 7
10110101111b = 2657o
3164 o = 11001110100b
14
Conversiones entre Sistemas de Numeracin BINARIO A HEXADECIMAL Regla: Se separa la cantidad en grupos de tres bits de derecha a izquierda. Ejemplo: 10110101111b = ? 101 5 1010 1111 A F
10110101111b = 5AFh
HEXADECIMAL A BINARIO E3A5 x = 1110001110100101b E 3 A 5 1110 0011 1010 0101 E3A5 x = 1110001110100101b
15
348d = 534o
16
367d = 16Fx
17
2 bits
00 01 10 11 A B C D 000 001 010 100 011 101 110 111
3 bits
A B C D E F G H
18
Sin embargo, se decidi usar 8 bits por celda; basndose en el concepto de decimal empacado, como se muestra.
19
CODIGO EBCDIC
(CODIGO BINARIO)
0 1 2 3 4 5 6 7 8 9
111 1 111 1 111 1 111 1 111 1 111 1 111 1 111 1 111 1 111 1
000 0 000 1 001 0 001 1 010 0 010 1 011 0 011 1 100 0 100 1
20
36 11110011
DECIMAL
11110110
EMPACADO
00110110 36
58 11110101 11111000
01011000 58
21
1 BYTE = 8 bits
- Bit: digito binario ( 1 0) (Estado electrnico de encendido y apagado) Byte: es una combinacin de 8 bits.
Generndose 256 combinaciones diferentes y por lo tanto se pueden representar 256 caracteres diferentes.
-------- BYTE OPTIMO ------1 1 0 0 0 1 1
N =1 S
N =0 S
22
BYTE = 8 bits
210 Bytes = 1,024 Bytes 220 Bytes = 1,048,576 Bytes 230 Bytes = 1,073,741,824 Bytes 240 Bytes = 1,099,511,627,776 Bytes 250 Bytes = 1,024 TBytes 260 Bytes = 1,024 PBytes 270 Bytes = 1,024 EBytes 280 Bytes = 1,024 ZBytes
23
Cdigos de almacenamiento de Caracteres en memoria: ASCII (Cdigo Texto) EBCDIC (Cdigo Binario) ASCII: Generalmente se pronuncia aski, es un acrnimo de American Standard Code for Information Interchange, cdigo de intercambio estandar americano. Este cdigo asigna a las letras del alfabeto, a los dgitos decimales del 0 al 9 y a varios smbolos adicionales un nmero binario de 8 bits. De esta forma cada letra, dgito o carcter especial ocupa un byte en la memoria de la computadora. El cdigo ASCII es principalmente utilizado en la memoria para representar texto. EBCDIC: Extended Binary Coded Decimal Interchange Code Cdigo de intercambio decimal codificado en binario extendido. Se usa para realizar clculos numricos.
24
Cdigos
Carcter Dgito 0 1 2 3 4 5 6 7 8 9
ASCII 00110000 (48) 00110001 (49) 00110010 (50) 00110011 (51) 00110100 (52) 00110101 (53) 00110110 (54) 00110111 (55) 00111000 (56) 00111001 (57)
EBCDIC 11110000 11110001 11110010 11110011 11110100 11110101 11110110 11110111 11111000 11111001
25
Qu es un Algoritmo?
Es una sucesin de pasos realizados en forma lgica, es decir, exentos de ambigedades para realizar una tarea. Un algoritmo tiene que ser un reflejo del tipo de programacin que se est utilizando.
PROBLEMA
Fase de Diseo
ALGORITMO
SOLUCIN VA COMPUTADOR
Fase de Implementacion
26
Fase de Diseo
Anlisis del problema
Fase de Implementacin
Codificacin del Algoritmo; Construccin del Programa
Nota: Todos los pasos a seguir en la Fase de Diseo, estn realizados por una persona, o sea, el programador. En la Fase de implementacin, el primer paso de arriba hacia abajo esta hecho por una persona, el segundo paso, por la computadora y el tercero y cuarto paso, esta hecho tanto por el programador como por la computadora.
27
El Anlisis del Problema consta de los siguientes pasos Anlisis del Programa
Datos de Entrada
Existen tres tipos de errores programacin Errores de Sintaxis o El analizador sintctico es una ayuda para resolver este tipo de errores. Errores de Lgica. o Se localizan haciendo pruebas de escritorio a travs del anlisis de resultados parciales y/o finales. Errores en Tiempo de Ejecucin o Son los ms difciles de localizar, dependen de una mala interpretacin del alcance o poder de una instruccin o del tipo de dato, inclusive del hardware y/o de la plataforma.
28
Descripcion Narrada
29
BLOQUE
Smbolos de los diagramas de flujo para Algoritmos FUNCIN DESCRIPCIN DISPOSITIVOS QUE INTERVIENEN Declaracin de Reserva las celdas de Almacenamiento variables memoria que requieran primario cada una de las variables indicadas Lectura de Dato A Transferir el valor Dispositivo de entrada desde el dispositivo de Y almacenamiento entrada (teclado) a la primario celda de memoria asignada a la variable A. Escritura de A Transferir el valor Dispositivo de salida y almacenado en la celda almacenamiento de memoria asignada a primario la variable A al dispositivo estndar de salida (pantalla). Ejecuta las operaciones Almacenamiento aritmticas que se primario y unidad hayan a la derecha del lgica Aritmtica signo igual y el resultado almacnalo en la celda de memoria asignada a la variable que se haya a la izquierda del signo igual.
A=C+B
Inicio, Fin
Inicio del programa, as como el fin del programa Flujo del procesamiento
30
31
32
INICIO
num1, num2
Suma
FIN
33
inicio declarar real: num1, num2, suma leer num1 leer num2 suma= num1 + num2 escribir suma fin
34
MEMORIA PRIMARIA Direccin Inicio 3 Leer num2 Contenido Fin suma 11 9 6 Suma = num1+ num2 num1 7 7 0 1 Declarar num1, num2, Leer num1 suma como real 4 Escribir suma num2 4 8 2 Celda o localidad de memoria 5
10
11
35
Qu es un Programa? Es una serie de instrucciones o sentencias ejecutadas de forma lgica, exenta de ambigedades, para resolver un problema y para escribir las instrucciones se pueden usar cualquiera de los siguientes lenguajes de alto nivel
LENGUAJES
Fortran PROG.FOR Cobol Basic PROG.CBL PROG.BAS
JAVA PROG.JAVA
36
37
Instrucciones Aritmticas
Variable = expresin aritmtica Signo de asignacin En una instruccin aritmtica se ejecutan los clculos indicados en la expresin aritmtica, y el resultado se almacena en la celda de memoria, que corresponde a la variable que de hall a la izquierda del sido igual (=) Operadores Aritmticos Elementos de las instrucciones Aritmticas Variables Constantes Funciones matemticas
38
Precedencia o jerarqua de los operadores aritmticos OPERADORES PRECEDENCIA ARITMTICOS - monario 1ra * / % 2da + 3ra = 4ta
La Precedencia, es el orden en el que se ejecutan los clculos, en una expresin aritmtica. Los operndos pueden ser variables y constantes. Los operndos son separados por operadores aritmticos.
39
REGLAS PARA USAR LOS OPERADORES ARITMTICOS. 1. Cuando dos operadores tienen la misma precedencia, se ejecuta primero el que este ms cerca del signo igual. 2. Cuando dos operndos son del mismo tipo, la operacin se har de acuerdo al tipo de operndos. Es decir, si los operndos son enteros, la operacin ser entera y es consecuencia si con reales, la operacin ser real. 3. Cuando los operndos son de diferente tipo, la operacin se har de acuerdo al tipo de la variable que ocupe ms bytes de memoria. 4. Para modificar el tipo de la operacin se usar el modo cast (el molde para modificar el tipo de operacin) no modificando el tipo de los datos 5. Los parntesis rompen la precedencia de los operadores. 6. Los parntesis se ejecutan iniciando desde el ms interno y el que este ms cerca del signo igual.
40
+= -= *= /= %=
a = a + 8; b = b 9; p = p * (n-3); z = z / 10; r = r % 5;
a + = 8; b - = 9; p * = (n-3); z / = 10; r %= 5;
Incremento: ++ cont = cont + 1; cont ++; ++cont; Decremento: - cont = cont 1; --cont; cont - -;
41
Datos
42
ESTRUCTURAS CONDICIONALES Se usa una estructura condicional para modificar el flujo del procesamiento de un programa de acuerdo al valor falso o verdadero de la condicin.
UNA RAMA SIMPLE DOS RAMAS ANIDADAS ESTRUCTURAS CONDICIONALES CONDICION COMPUESTA ANIDADAS SELECCIN MULTIPLE SIMPLE
43
V Sent 1
Condici n
Sent 2
Sent 3
DOS RAMAS if (condicin) Sentencia 1; else Sentencia 2; Sentencia 3; if (condicin) Sentencia 1; else { Sentencia 2; Sentencia 3; } Sentencia 4;
44
Condicin
Operando1 Operador de relacin Operando 2
Operando
Expresin Aritmtica <Operador de Relacin > Expresin Aritmtica <Operador de Relacin > Expresin Aritmtica <Operador de Relacin >
45
Cond 1 Sent5
Sent6
If (Cond1) If (Cond2 ) If (Cond3) Sent1 Else Sent2 Else If Cond4 Sent3 Else Sent4 Else Sent5 Sent6
46
Condicin 1
Operador lgico
[Operador lgico]
Smbolos
Condicin 2
precedencia
No Y O
! && ||
1 2 3
47
C1
V V F F
C2
V F V F
C1&&C2
V F F F
C1| |C2
V V V F
!C1
F F V V
!C2
F V F V
En consecuencia, se construir una condicin compuesta ligando las condiciones con: 1. El operador Y (&&) cuando las condiciones deben de cumplirse necesariamente, para que se ejecute la rama de verdadero, de acuerdo a la lgica del programa. 2. El operador O (||) cuando una condicin es equivalente a la otra, es decir que una puede sustituir a la otra y basta que una de ellas se cumpla para que se ejecute la rama de verdadero, de acuerdo a la lgica del programa.
48
Estructuras Condicionales de Seleccin Multiple Las estructuras de seleccin multiple estn controladas por variables selectoras. Para que ejecute una rama de la estructura de seleccin mltiple, el valor de la variable selectora debe ser exactamente igual al valor de la etiqueta de esa rama. Si ningn valor de las etiquetas es igual al valor actual de la variable selectora, se ejecutara la rama de falso. En la estructura de seleccin mltiple puede o no usarse la rama de falso. Toda variable selectora puede ser nicamente del tipo entero o tipo carcter.
Inicio
Variable selectora
Variable selectora Etiq 2 Sent1 Sent2 Etiq 3 Sent3 Etiq 4 Sent4 Etiq 5 Sent5 Etiq 6 Sent6 Etiq Sent7 7 Falso error
fin
Variable selectora es de tipo ordinal y puede ser: Dato tipo entero Dato tipo carcter
49
UNIDAD IV
ESTRUCTURAS REPETITIVAS.
(CICLOS, BUCLES, RIZOS)
Un ciclo en programacin, es segmento de cdigo que se ejecuta ms de una vez repetidamente. Las estructuras cclicas que existen son: 1. While 2. Do-while 3. For Para el control de un ciclo durante su ejecucin existen dos tcnicas: 1. Por tarea de valor lmite. 2. Por centinela bandera. Se dice que un ciclo est controlado por tcnica por tarea cuando se conoce de antemano el nmero de veces que el ciclo se ejecutar. Se dice que un ciclo est controlado por tcnica por centinela cuando NO se conoce de antemano el nmero de veces que el ciclo se ejecutar. Existen tambin ciclos que son controlados por la combinacin de la tcnica por tarea y por la tcnica por centinela. Normalmente se combinan estas tcnicas para hacer ms eficiente la ejecucin del programa.
50
ESTRUCTURA WHILE.
INICIO Variable de control del ciclo Inicializacin de la variable que controla el ciclo (antes del ciclo)
Valor Lmite
Cont = 1
Cont < =3
V F
Hola
Cont ++
CARACTERSTICAS: 1. La condicin va al principio del cuerpo del ciclo. 2. Existe la posibilidad de que NO se ejecute ninguna vez el cuerpo del ciclo.
51
ESTRUCTURA
DO WHILE.
Inicio
Cont =1
Hola
Cont = Cont +1
Cont < =3 F V
Fin
CARACTERSTICAS: 1. La condicin va al final del cuerpo del ciclo. 2. Existe la posibilidad de 1que se ejecute al menos una vez el cuerpo del ciclo.
52
53
Calif
Calif<0 o Calif>100 V F
54
Calif
Calif<0 o Calif>100 F
V Mensaje
Calif<0 o Calif>100
Haz Leer calificacin Si (calificacin < 0 o calificacin >100) Escribir (Calificacin no valida debe ser de 0 a 100) Mientras que (calificacin < 0 o calificacin >100 )
55
Resp
Resp!= s y Resp!= n
56
Resp
Resp != s y Resp != n
V Mensaje
Haz Leer respuesta Si (respuesta != s y respuesta !=n)) Escribir (respuesta debe ser s o n ) Mientras que (respuesta != s y respuesta !=n)
57
Resp ==s
V F
Haz // Repeticin de programa {CUERPO DEL PROGRAMA} Haz // Validacin de respuesta Leer respuesta Si (respuesta != s o respuesta !=n)) Escribir (respuesta debe ser s o n ) Mientras que (respuesta != s o respuesta !=n) Mientras que (respuesta == s )
58
Cont=0 Cont<n
Fin
V Cont= Cont+1
Hola
CARACTERSTICAS: 1. El ciclo for es el ciclo while con tcnica por tarea. 2. El ciclo for contiene en forma empaquetada las tres sentencias bsicas que sirven para la ejecucin del ciclo. 3. Comnmente se usa cuando se realizan ciclos en los que se aplican la tcnica por tarea.
59
TCNICAS PARA EL CONTROL DE CICLOS. 1. Por Tarea (valor lmite) 2. Por Centinela (Bandera) 3. Por combinacin de ambas Se usa la tcnica para el control de un ciclo por tarea cuando se sabe a priori el nmero de veces que se va a ejecutar el ciclo. Se usa una tcnica para controlar el ciclo por centinela cuando desconozco desde antes el nmero de veces que se ejecutar el ciclo. Se usa una estructura while cuando existe una posibilidad dentro de la lgica del programa que la tarea del ciclo no se ejecute alguna vez.
- Toda variable Centinela Bandera sirve para detectar si el flujo del procesamiento paso por alguna rama de una condicin dada y dependiendo del valor de la variable Centinela Bandera se decidir cual rama de esa condicin debe ejecutarse. - Toda variable Centinela Bandera debe ser de tipo lgico y solamente puede tomar dos valores: true y false a esos valores se les conoce como valores Centinela Bandera. Toda variable Centinela de inicializarse ya sea con true con false.
60
CICLOS ANIDADOS.
INICIO
n<1
Cont = 0 Hola
Cont = Cont + 1
cont < n
Resp
Resp!=s&&Resp!=n
Resp = = s
Fin 61
ARREGLOS Disear un programa que capture una coleccin de calificaciones, calcule el promedio as como contabilice el nmero de calificaciones que se encuentren arriba del promedio, el nmero de calificaciones abajo del promedio y el nmero que se sean iguales al promedio. Calcular tambin los porcentajes de esas estadsticas, as como validar la calificacin. Se usan arreglos cuando se necesita acceder nuevamente a los datos. Manipular ms de una vez a una coleccin de datos. Un arreglo es una coleccin de datos del mismo tipo identificados bajo un mismo nombre de variable CARACTERISTICAS 1. A los datos en un arreglo se les denomina elementos del arreglo 2. Para identificar o acceder a un elemento se usara el nombre del arreglo, as como la posicin del elemento en el arreglo 3. A la posicin del elemento en el arreglo se le denomina ndice del arreglo el cual deber ser de tipo entero y puede estar representado por un valor, una variable o una expresin aritmtica. 4. Todo arreglo tendr un tamao fsico (MX), el cual indica el numero mximo de elementos que se podrn almacenar en ese momento en el arreglo a0 a1 a2 a3 a4 a5 a6 a7 a8
MX = 9
5. Tambin tendr un tamao lgico (tam) el cual indica el nmero de elementos actualmente almacenados. En consecuencia el tamao lgico jams deber ser mayor al tamao fsico y si as fuere provocara una interrupcin anormal del programa.
62
1.- TIPOS DE ARREGLOS CON RESPECTO A DIMENSIONES 1.1 unidimensionales 1.2 bidimensionales 1.3 tridimensionales .. . . 1.4 n dimensionales 2.- TIPOS DE ARREGLOS CON RESPECTO A LA CONCURRENCIA 2.1 nicos 2.2 Paralelos 3.- TIPOS DE ARREGLOS RESPECTO A TIPOS DE DATOS 3.1 Numricos 3.1.1 Enteros byte short int long 3.1.2 Reales float double 3.2 Caracteres char 3.3 Cadenas String 4.- TIPOS DE ARREGLOS CON RESPECTO A OCURRENCIAS (APARICIONES) 4.2 Con datos repetidos 4.2 Sin datos repetidos 5.- TIPOS DE ARREGLOS CON RESPECTO A ORDENAMIENTO 5.1 Sin datos ordenados 5.2 Con datos ordenados
63
OPERACIONES BASICAS CON ARREGLOS 1. Lectura 2. Escritura 3. Asignacin 4. Bsqueda 5. Insercin 6. Eliminacin 7. Actualizacin 8. Ordenamiento
64
65
Fortran PROG.FOR Cobol Basic Pascal C C++ JAVA PROG.CBL PROG.BAS PROG.PAS PROG.C PROG.CPP PROG.JAVA
66
Al escribir un programa en un lenguaje de alto nivel programa fuente, se requiere transformarlo en un programa ejecutable (lenguaje maquina: ceros y unos) y para ello se debe usar un traductor. A los programas traductores se les llaman intrpretes o compiladores. Existiendo entre ellos diferencias. Un interprete no genera un programa escrito en lenguaje maquina sino que traduce en ese momento la instruccin que se va a ejecutar. Este proceso hace que la ejecucin sea lenta pero tiene la ventaja que el interprete es mas pequeo que un compilador. En consecuencia, un compilador traduce el
Compilador
.
Programa fuente en un programa ejecutable
67
Que es JAVA? JAVA lenguaje de programacin de alto nivel con el que se pueden escribir tanto programas convencionales como programas para Internet. Es un lenguaje con las siguientes caractersticas: 1. Interpretado 2. Sencillo 3. Orientado a objetos 4. Distribuido 5. Robusto 6. Seguro 7. Arquitectura neutra 8. Alto rendimiento 9. Multihilo 10. Dinmico
68
Java, desarrollado por Sun Microsystems en 1995, es un magnifico y completo lenguaje de programacin orientado a objetos, diseado para distribuir contenidos a travs de la red. Permite operar de forma independiente de la plataforma de hardware o de software. Al contrario de todo programa o aplicacin que queda atado al hardware y al sistema operativo. Por ejemplos: Una aplicacin de WINDOWS solo funcionar en plataforma WINTEL (Windows y procesador Intel). Una aplicacin creada para MAC solo funcionar para la plataforma MAC OS o IMAC. Una aplicacin creada para UNIX solo funcionar para la plataforma UNIX. Etc.
69
JAVA, por el contrario es poner una capa sobre cualquier plataforma de hardware y sobre cualquier sistema operativo que permite que cualquier aplicacin desarrollada por JAVA quede ligada a JAVA independiente mente de la plataforma. Esta concepcin queda establecida en el concepto de Maquina Virtual de Java: JVM (Java Virtual Machine). JVM es un software que interpreta instrucciones en BYTECODE para cualquier maquina sobre la que est corriendo y que permite una vez que este instalado, que una misma aplicacin pueda funcionar en un PC o una MAC sin tener que hacer algn ajuste software. As, lo que hace JAVA en combinacin con esta MAQUINA VIRTUAL es funcionar como HARDWARE y como SISTEMA OPERATIVO VIRTUAL emulando en software, una PC UNIVERSAL. Al instalar JAVA, ste actuar como una capa de abstraccin entre el PROGRAMA y el SISTEMA OPERATIVO, otorgando una total independencia de lo que haya por debajo. Es decir, cualquier aplicacin funcionar en cualquier mquina e incluso en cualquier dispositivo. Una de las ventajas de JAVA sobre otros lenguajes de programacin es independiente de la plataforma tanto en cdigo fuente como en binario. Esto quiere decir que el cdigo producido por el traductor de JAVA puede transportarse a cualquier plataforma (INTEL, SPARC, MOTOROLA, Etc.) que tenga instalada una maquina virtual java y ejecutarse.
70
71
Segn lo expuesto, Java incluye dos elementos: un Compilador y un Intrprete. El Compilador produce un cdigo de bytes ( BYTECODE), escrito en UNICODE, que se almacena en un archivo para ser ejecutado por el Intrprete JAVA denominado maquina virtual de JAVA.
Programa escrito en JAVA Cdigo en Bytes ByteCode
Compilador
72
Para facilitar el diseo del programa se usan Entornos de Desarrollo Integrados (Integrated Development Environment, IDE) como NetBeans, JCreator o Jgrasp. Bsicamente, todo Entorno de Desarrollo Integrado contiene: Editor Compilador o Interprete Analizador Sintctico Ayuda Por que JAVA es importante para INTERNET ? INTERNET ha ayudado a posicionar a JAVA en la cima del mundo de la programacin y a su vez JAVA ha tenido un profundo impacto en INTERNET. La razn es que JAVA extiende el universo de los OBJETOS que se mueven libremente en el CIBER ESPACIO que forma la red de INTERNET. En una red existen dos grandes categoras de objetos que se transmiten entre las computadoras conectadas: Informacin PASIVA. Ejemplo, los correos electrnicos. Informacin DINMICA. Ejemplo programas auto ejecutables que son agentes activos en la computadora cliente.
Estos PROGRAMAS DINMICOS presentan serios problemas de SEGURIDAD y PORTABILIDAD. JAVA ha resuelto gran cantidad de problemas con un nuevo modelo de programa llamado el APPLET. Entonces, JAVA puede crear dos tipos de programas: APLICACIONES (programas tipo stand alone) y APPLETS. Una APLICACIN es un programa que se ejecuta en SU computadora bajo el sistema operativo de SU computadora. En esencia, es un programa similar al creado al utilizar C, C++ PASCAL.
73
Un APPLET es una aplicacin diseada para ser transmitida por INTERNET y ejecutada por un NAVEGADOR WEB compatible con JAVA. Un APPLET es un pequeo programa JAVA, descargado dinmicamente por la red, tal como una IMAGEN, un archivo MUSICAL, o un VIDEOCLIP que es un programa inteligente que reacciona dinmicamente a entradas y cambios de usuario. En conclusion, la ejecucin de programas en Java tiene muchas posibilidades: 1. Ejecucin como aplicacin independiente (Stand-alone Application). 2. La ejecucin como applet, 3. La ejecucin como servlet, etc. La ejecucin como aplicacin independiente es anloga a los programas desarrollados con otros lenguajes. Un applet es una aplicacin especial que se ejecuta dentro de un navegador o browser (por ejemplo Netscape Navigator o Internet Explorer) al cargar una pgina HTML desde un servidor Web. El applet se descarga desde el servidor y no requiere instalacin en el ordenador donde se encuentra el browser. Un servlet es una aplicacin sin interface grfica que se ejecuta en un servidor de Internet.
74
Computadora Local
Sistema Operativo
Navegador JAVA
Computador Servidor
75
Terminologa en JAVA
JVM Java Virtual machine JDK Java Development Kit, viene incluido con l, paquetes de libreras que contienen miles de clases.
SDK Software Development Kit, contiene: Las clases que se requieren para desarrollar programas JAVA Herramientas de compilacin, ejecucin y depuracin de cdigo. SDK Software Development Kit, viene con: Un compilador controlado por lnea de ordenes (JAVAC) Una copia de JVM, el motor que corre cdigos de byte (BYTECODE) compilados adecuados para la plataforma WINDOWS, UNIX, LINUX, etc. de su computadora (JAVA)
JIT Just In Time, es un compilador de JAVA que traduce por completo el programa y convirtindolo en ejecutable. La principal ventaja de SDK es su carcter gratuito, autorizado y actualizado. Su principal desventaja es que proporciona slo herramientas de desarrollo estilo lnea de rdenes en vez de un entorno grfico de programa visual. El lenguaje evoluciona rpidamente y el mejor lugar para consultar las ltimas versiones y actualizaciones del mismo se encuentran en el sitio Web de Internet de Sun
www.sun.com www.javasoft.com
76
Mtodos de Instancia
< Acceso 1 >< Nombre del mtodo 1 >( argumentos): valor de retorno > < Acceso 2 > < Nombre del mtodo 2 >( argumentos): valor de retorno > < Acceso 3 > < Nombre del mtodo 3>( argumentos): valor de retorno >
Acceso a una propiedad Acceso es una caracterstica de los atributos, propiedades (variables) de una clase. Esa caracterstica permite acceder, usar, o modificar el valor almacenada en su respectiva celda de memoria. Acceso a un mtodo Acceso es una caracterstica de los mtodos que permite o no acceder, invocar o llamar a ejecutar un mtodo de un objeto a travs de otros objetos, va envo de mensajes.
77
Tipos de Accesos: 1. Privado (-) private Un miembro de una clase declarado privado puede ser accedido por un objeto de esa clase slo desde los mtodos de esa clase. Esto significa que no puede ser accedido por los mtodos de cualquier otra clase, incluidas las subclases. 2. Publico (+) public Un miembro de una clase declarado pblico puede ser accedido por un objeto de esa clase en cualquier parte de la aplicacin donde el objeto en cuestin sea accesible. 3. Protegido ( ) protected Un miembro de una clase declarado protegido se comporta exactamente igual que uno privado para los mtodos de cualquier otra clase, excepto para los mtodos de las clases del mismo paquete o de sus subclases con independencia del paquete a que pertenezcan, para las que se comporta como un miembro pblico. 4. Por defecto ( ) Un miembro de una clase declarado por defecto se comporta exactamente igual que uno privado para los mtodos de cualquier otra clase, excepto para los mtodos de las clases del mismo paquete.
Paquete si si no si
General si no no no
78
< acceso > <tipo_1> variable_1 ; < acceso > <tipo_2> variable_2; . . . .
< acceso > <tipo_n> variable_n ; Definicin de los mtodos de instancia < acceso > <valor de retorno> mtodo_1 (parmetros)
{
Declaracin de variables locales Cdigo del mtodo_1
}
< acceso > <valor de retorno> mtodo_2 (parmetros )
{
Declaracin de variables locales Cdigo del mtodo_2
} {
. .
. .
< acceso > <valor de retorno> mtodo_n (parmetros) Declaracin de variables locales Cdigo del mtodo _n
} }
79
* // Mtodo de obtencion() * + real obtenerSuma() * * */ class CSumaDosNums{ //Atributos private double num1; private double num2; private double suma; //Costructores public CSuma(){// Por defecto } public CSuma( double n1, double n2){ num1=n1; num2=n2; suma =0.0; } // Mtodo de la clase public void sumar(){ suma = num1 + num2; } // Mtodos de asignacion public void asignarNum1(double n1){ num1=n1; } public void asignarNum2(double n2){ num2=n2; } // Mtodo de obtencion() public double obtenerSuma(){ return suma; } }// Fin de la clase CSuma
81
82
Instanciar las clases creando los objetos Declaracin de variables locales Invocacin a los mtodos (envo de mensajes)
[ variable = ] objeto. mtodo_1 (parmetros); [ variable = ] objeto. mtodo_2 (parmetros); [ variable = ] objeto. mtodo_3 (parmetros);
. . . .
}
. . . .
83
import java.util.Scanner; class SumaDosNums{// Clase de prueba para la clase CSumaDosNums public static void main(String[] arg){ double num1=0.0; double num2=0.0; double suma=0.0; String cad=; // Objeto auxiliar System.out.println(\n\tPrograma para sumar dos numeros\n); CSumaDosNums operacion; // Crear la referencia al objeto llamado operacion operacion = new CSumaDosNums(); // Crea el objeto de la clase CSumaDosNums y ejecuta el constructor cad=leer(Introduce el numero 1 > ); num1 =Double.parseDouble(cad);//Convierte la secuencia de caracteres almacenada en la cadena en valor tipo doble cad=leer(Introduce el numero 2 > );//Convierte la secuencia de caracteres almacenada en la cadena en valor tipo doble num2 =Double.parseDouble(cad); operacion.asignarNum1(num1);// Mensaje al objeto operacion para que ejecute el mtodo operacion.asignarNum2(num2);// Mensaje al objeto operacion para que ejecute el mtodo operacion.sumar();// Mensaje al objeto operacion para que ejecute el mtodo suma = operacion.obtenerSuma();// Mensaje al objeto operacion para que ejecute el mtodo escribir( num1 + + + num2 + = + suma); }//Fin del main()
84
public static String leer (String msj){// Mtodo para leer una cadena Scanner scan = new Scanner(System.in); System.out.print(msj); String cadena = scan.nextLine(); return cadena; } public static void escribir ( String msj){// Mtodo escribir el contenido de la cadena msj System.out.println(\n\t + msj); } }
85
public static void main(String[] arg){ double num1=0.0; double num2=0.0; double suma=0.0; String cad=; // Objeto auxiliar System.out.println(\n\tPrograma para sumar dos numeros\n); cad=leer(Introduce el numero 1 > ); num1 =Double.parseDouble(cad);//Convierte la secuencia de caracteres almacenada en la cadena en valor tipo doble cad=leer(Introduce el numero 2 > ); num2 =Double.parseDouble(cad); //Convierte la secuencia de caracteres almacenada en la cadena en valor tipo doble CSumaDosNums operacion; // Crear la referencia al objeto llamado operacion operacion = new CSumaDosNums(num1,num2); // Crea el objeto de la clase CSumaDosNums y ejecuta el constructor operacion.sumar();// Mensaje al objeto operacion para que ejecute el mtodo suma = operacion.obtenerSuma();// Mensaje al objeto operacion para que ejecute el mtodo escribir( num1 + + + num2 + = + suma); }//Fin del main()
86
public static String leer (String msj){// Mtodo para leer una cadena Scanner scan = new Scanner(System.in); System.out.print(msj); String cadena = scan.nextLine(); return cadena; } public static void escribir ( String msj){// Mtodo escribir el contenido de la cadena msj System.out.println(\n\t + msj); } }
87
88
5. Un mtodo de clase es aquel que se puede invocar, llamar o usar a travs de la clase sin necesidad de instanciarla es decir crear un objeto. Ejemplos: Double.parseDouble(), Math.pow(), etc.
6. Para identificar si mtodo es de clase, en la definicin del mtodo debe estar precedido por la palabra reservada static. Los mtodos de instancia no contienen en su definicin la palabra reservada static. 7. No existen mtodos hurfanos es decir, que se llamen, invoquen o usen sin pertenecer a una clase. 8. Los mtodos deben formar parte de un objeto (mtodos de instancia) o pertenecen a una clase (mtodos de clase). 9. La nica excepcin son los mtodos estticos que se hayan en la clase de prueba que para invocarse, para llamarse o para usarse no estn precedidos por un objeto o una clase. 10. Todas las clases deben iniciar con mayscula y los atributos, objetos y mtodos en minsculas.
89
Clase diseada
Mensajes
Clase de Prueba
91
92
Objeto 1
Mtodos Atributos
Mensajes
Mtodos
Atributos
Objeto 2 Esquema de un programa de aplicacin con los Objetos que usa para su implementacin
93
Programa De Aplicacin
objeto_2= New CClase_2( ) objeto_4= New CClase_4( )
94
95
Secuencia \n \t \b \r \f \a \ \
Secuencias de escape
96
abstract static interface false byte synchronized finally null for match throws package goto const try implements import do volatile instanceof
else boolean strictfp long final switch case this operador future generic transient private protected continue default return inner double widefp
int extends break super native new float cast throw outer char class true if public var void rest short while
97
COMENTARIOS Hay dos formatos para escribir comentarios Comentario en una sola lnea // Ejemplo: // Este es un comentario en una linea Comentarios en varias lneas /*...*/ Ejemplo:
/*
Instituto Tecnolgico de Len Programa ...... Enunciado ..... Diseado por .... Materia ... Grupo .... Carrera ... Semestre ..... Asesorado por .... Fecha ....
*/
98
! |
% [
$ ]
& \
* ;
) _
<
+ >
= ?
{ ,
} .
^ /
99
Paquetes Un paquete es un conjunto de clases, lgicamente relacionadas entre s, agrupadas bajo un nombre. Por ejemplo, el paquete java.io agrupa las clases que permiten a un programa realizar la entrada y salida de informacin. Incluso un paquete puede contener otros paquetes.
100
El paquete java.lang contiene las clases que son el ncleo de java. 1. System 2. String 3. Integer 4. Math 5. Etc.
El paquete java.io contiene las clases que son usadas para entrada y salida. 1. BufferedReader 2. InputStreamReader 3. FileInputStream 4. FileOutputStream 5. etc.
1. 2. 3. 4. 5.
El paquete java.util guarda diversas clases de utilidad. Date Random StringTockenizer Scanner etc.
El paquete java.applet suministra clases para crear applets. El paquete java.awt suministra clases para interfaces grficos.
101
La declaracin import Con esta declaracin se especifican las clases de los paquetes que van a utilizar en un programa. La declaracin tiene dos formatos: import nombrePaquete.nombreClase; Especifica la clase que se va a utilizar. import nombrePaquete.*; Especifica que estn disponibles todas las clases del paquete. Al incorporar las clases de ms de un paquete puede ocurrir que haya nombres de clases iguales; para que no haya ambigedad, hay que preceder el nombre de la del paquete al nombre de la clase. Por ejemplo si hubiera alguna colisin con la clase Random, para crear un objeto se escribir: Java.util.Random aleatorio = new java.util.Random();
102
Proteccin de una clase La proteccin de una clase determina la relacin que tiene con otras clases de otros paquetes. Niveles de proteccin: 1) De Paquete, solamente puede ser usado por las clases de ese paquete. 2) Publico, puede ser usado por cualquier clase de otro paquete. Qu se entiende por utilizar? Que la clase puede crear objetos de otra clase y manipularlos usando sus mtodos. Por omisin una clase tiene nivel de paquete y si se desea que tenga el nivel pblico debe calificarse la clase anteponindole la palabra reservada public. Por ejemplo la clase System del paquete java.lang es publica por eso se ha podido utilizar en el ejercicio anterior. Los tipos de datos en JAVA son tipos primitivos tipos referenciados Tipos primitivos Tipos numricos Tipos enteros
float double
Tipo Boolean (lgico)
103
Rango (mnimos...mximos) 0 a 216- 1 -27 a +27-1 -215 a +215-1 -231 a +231-1 -263 a +263-1 +-3.4 x10 +-38 a +- 3.4x10+-38 +-1.7 x10 +-308 a +- 1.7x10+-308
Precisin en dgitos
De 5 a 6 De 15 a 16 false o true
CONVERSION ENTRE TIPOS DE DATOS byte short int long float double
char
Expansin Contraccin
104
mbito o Alcance de una variable El mbito o alcance de una variable es el segmento de cdigo donde una variable en visible, es decir la parte del programa donde la variable puede ser manipulada en una sentencia a travs de: 1. Usado el valor almacenado 2. Modificado el valor almacenado
EL mbito de una variable puede ser sobre: 1. Toda la clase, para este caso son los atributos o propiedades o variables de instancia. 2. Un mtodo, para este caso son las variables locales que se declaran dentro del mtodo. 3. Un bloque de cdigo, para este caso son las variables que se declaran dentro de un bloque el cual es especificado por llaves {}
Declaracin de Constantes Simblicas Ejemplo 1: final static PI= 3.141592654; S la constante PI es declarada dentro de la clase y podr ser vista (usada) por cualquier mtodo. Ejemplo 2: Final ACELERACIONGRAVEDAD = 9.8; S la constante es usada solamente dentro del mtodo que fue declarada y nunca dentro de otro mtodo. En consecuencia no deber incluirse la palabra reservada static.
105
Modificador Static En java existen dos tipos de mtodos: 1. Mtodos de Instancia Para ser usados debe de instanciarse la clase, crear el objeto para que a travs de l se usen los mtodos. 2. Mtodos de Clase Para ser usados no se requiere instanciar la clase y en consecuencia no se encuentra asociado a ningn objeto. Fragmento de cdigo que usa ambos tipos de mtodos String cad = new String (Se inicializa la cadena con este texto); // Invocacin al mtodo de instancia length() int n = cad.length(); // Invocacin del mtodo de clase valueOf() String cadN= String.valoeOf(n);
106
As como existen mtodos de clase existen constantes de clase y variables de clase. Definicin de un mtodo de clase: < acceso> static <valor retorno> mtodo (argumentos) Definicin de una constante de clase < acceso> static final <tipo dato> variable = valor; Definicin de una variable de clase < acceso> static <tipo dato> variable;
107
108
EXCEPCIONES
El lenguaje JAVA incorpora soporte para manejar situaciones anmalas, conocidas como excepciones, que pueden ocurrir durante la ejecucin de un programa. Con el sistema de manipulacin de excepciones de JAVA, un programa puede comunicar eventos inesperados a un contexto de ejecucin ms capacitado para responder a tales eventos anormales. Estas excepciones son manejadas por cdigos fuera del flujo normal del control del programa. Las excepciones proporcionan una manera limpia de verificar errores; esto es, sin abarrotar el cdigo bsico de una aplicacin. Es decir, sin afectar el cdigo esencial del programa que permite resolver un problema. El manejo de excepciones ofrece una forma de separar explcitamente el cdigo que maneja los errores del cdigo bsico de una aplicacin, hacindola ms legible, lo que desemboca en un buen estilo de programacin. La sintaxis es como se presenta: try
{ }
{ } { } . . . { }
catch ( ClaseDeExcepcion e)
catch ( OtraClaseDeExcepcion e)
catch ( AlgnOtraClaseDeExcepcion e)
109
Bsicamente, el esquema anterior dice que s el cdigo de una aplicacin no puede realizar una operacin, se espera que lance una excepcin que ser tratada por el cdigo correspondiente para esa clase de excepcin, en su defecto por JAVA. Algunas de las excepciones ms comunes ArithmeticException Una operacin aritmtica excepcional ha ocurrido. Por ejemplo una divisin por cero. ArrayIndexOutOfBoundsException Una matriz fue accedida con un ndice ilegal, es decir fuera de los lmites permitidos. NullPointerException Se intent utilizar la constante null donde se requera un objeto. NumberFormatException Se intent convertir una cadena con caracteres diferentes a dgitos y/o punto decimal en un nmero.
110
Qu es lo que ocurri entonces, cuando durante la ejecucin de un programa se lanz una excepcin? Lo ms probable es que el programa dej de funcionar. JAVA visualiz un mensaje acerca de lo ocurrido.
S esto, NO lo deseamos deberemos de aprender a como manejar excepciones. Las excepciones en JAVA son objetos de clases derivadas de la clase Throwable definida en el paquete java.lang. As, cuando se lanza una excepcin de la clase ArithmeticException y automticamente JAVA crea un objeto de esta clase.
111
Un objeto de la clase Error se crea cuando ha ocurrido un problema serio que involucra a la maquina virtual de JAVA por lo que una aplicacin normal no suele manipular este tipo de excepcin. La clase Exception conre las excepciones que una aplicacin normal puede manipular. Tiene varias subclases entre las que destacan RuntimeException e IOException. La clase RuntimeException cubre las excepciones ocurridas al ejecutar operaciones sobre los datos que manipula la aplicacin. Son Excepciones que se lanzan durante la ejecucin. En contraposicin a las que se lanzan por causas no dependientes de la maquina virtual de JAVA, como sucedera cuando no se pudiera leer de un fichero del disco. 112
Son ejemplos de excepciones de este tipo ArithmeticException o NUllPointerException. Este tipo de excepciones pertenece al paquete java.lang. La clase IOException cubre las excepciones ocurridas al ejecutar las operaciones de entrada o salida. Este grupo de excepciones pertenece al paquete java.io Las excepciones que se lanzan durante la ejecucin son excepciones implcitas y se corresponden con las subclases RuntimeException y Error. Se dice que son implcitas porque son lanzadas por la maquina virtual de JAVA y por lo tanto, los mtodos implementados en las aplicaciones no tienen que declarar que las lanzan, y aunque lo hicieran, cualquier otro mtodo que los invoque no est obligado a manejarlas. El resto de las excepciones, como las que corresponden con las subclases de IOException, son excepciones explicitas; esto significa, que si se quieren manipular, los mtodos implementados en las aplicaciones tienen que declarar que las lanzan y en este caso, cualquier otro mtodo que los invoque est obligado en manejarlas. El compilador Java nunca obliga a manejar una excepcin de la clase ArithmeticException pero s una excepcin de la clase IOException. S en una aplicacin invocamos el mtodo read() de la clase BufferedReader tiene la obligacin de lanzar una excepcin de la clase IOException.
113
COMO MANEJAR EXCEPCIONES Cuando un mtodo se encuentra con una anomala que no puede resolver, lo lgico es que lance (throw) una excepcin, esperando que quien lo llam directa o indirectamente la captura (catch) y maneje esa anomala. S la excepcin no se captura, el programa finalizar automticamente. Ejemplo Import java.io.*; Public class Leer { public static String datoStr(); { String cadena = ; try { // definir el flujo entrada InputStreamReader flujoEntrada; flujoEntrada =InputSreamReader(System.in); BufferedReader scan; scan = new BufferedReader(flujoEntrada); cadena = scan.readLine(); } catch ( IOException error) { System.err.println(Error: + error.getMessage()); } return cadena; // devuelve la cadena tecleada } // Fin del mtodo datoStr() } // Fin de la clase Leer
114
Las palabras try y catch trabajan conjuntamente y pueden traducirse as: Poner a prueba un segmento de cdigo por si se lanzara una excepcin: Si se ejecuta satisfactoriamente seguir con la ejecucin de la aplicacin. En caso contrario Capturar la excepcin lanzada y manejarla. LANZAR UNA EXCEPCION Lanzar una excepcin equivale a crear un objeto de la clase excepcin para manipularlo fuera del flujo normal de ejecucin de la aplicacin. Para lanzar una excepcin se utiliza la palabra throw y para crear un objeto, new. Por ejemplo, volviendo al mtodo datoStr() de la clase Leer, s ocurre un error cuando se ejecuta el mtodo readLine() se supone que ste mtodo ejecutar la sentencia similar a la siguiente: If (error) trow new IOException();
115
Esta sentencia lanza una excepcin de la clase IOException lo que implica crear un objeto de esta clase. Un objeto de stos contiene toda la informacin acerca de la excepcin, incluyendo su tipo y el estado del sistema cuando el error ocurri. CATURAR UNA EXCEPCION Una vez lanzada la excepcin, el sistema es responsable de encontrar a alguien que la capture con el objetivo de manipularla. El conjunto de esos alguien es el conjunto de mtodos especificados en la pila de llamadas hasta que ocurri el error. Por ejemplo, considere la siguiente aplicacin, que invoca al mtodo datoStr() de la clase Leer
116
{
String cadena; Cadena = Leer.datoStr();
} }
Cuando se ejecute esta aplicacin y se invoque al mtodo datoStr(), la pila de llamadas crecer como se observa en la siguiente figura.
BufferedReader.readLine( )
Leer.dato
Prueba.main()
117
118
Para implementar un manejador para una clase de excepcin: 1. Encerrar el cdigo que pueda lanzar una excepcin en un bloque try. Refirindonos al ejercicio de la clase Leer tenemos: try { // definir el flujo entrada
InputStreamReader flujoEntrada; flujoEntrada =InputSreamReader(System.in); BufferedReader scan; scan = new BufferedReader(flujoEntrada); cadena = scan.readLine(); } 2. Escribir un bloque catch capaz de capturar la excepcin lanzada. En la clase Leer el mtodo datoStr() tiene un bloque match capaz de capturar excepciones de la clase IOException y de sus subclases catch ( IOException error) { System.err.println(Error: + error.getMessage()); }
119
En este manejador se observa parmetro error que referencia al objeto que se cre cuando se lanz la excepcin capturada. Para manipularla, adems de escribir el cdigo que consideremos adecuado, dispondremos de la funcionalidad proporcionada por la clase IOException, y a la cual podemos acceder a travs de objeto error. Por ejemplo, el mtodo getMessage() devuelve una cadena con informacin acerca de la excepcin ocurrida.
120
Clase Formatter Un objeto de la clase Formatter es un interprete para cadenas de formato utilizadas con el mtodo printf() para dar formato de salida. El soporte que proporciona esta clase permite: Mostrar los nmeros, justificados y alineados. Mostrar las cadenas, justificadas y alineadas.
ndice
Es un nmero entero que indica la posicin del argumento en la lista de los argumentos args.
El primer argumento esta referenciado por 1$, el segundo por 2$, as sucesivamente.
121
flags
significado
Justificado a la izquierda, dentro del ancho especificado. Por defecto la justificacin se hace a la derecha. Antepone el signo + o el signo al valor de salida.
Rellena la salida con ceros no significativos (a la izquierda) hasta alcanzar el ancho mnimo especificado. Antepone un espacio en blanco al valor de salida s es positivo. Cuando se utiliza con la especificacin de formato o, x X, anteponerse al valor de salida 0, 0x 0X respectivamente.
Blanco
122
Ancho
Mnimo nmero de posiciones para la salida. S el valor a escribir ocupa ms posiciones que las especificadas, el ancho es incrementado e lo necesario.
123
Tipo Carcter
d
x X f e E g G c S T
124
E, e, f
G, g s
Especifica el nmero de dgitos que se tienen que escribir despus del punto decimal. Por defecto es 6 y el valor es redondeado. Especfica el mximo nmero de dgitos significativos. Por defecto es 6. Especfica el nmero mximo de caracteres que se escribirn. Los caracteres que excedan este nmero, se ignoran.
125
126
ARREGLOS Disear un programa que capture una coleccin de calificaciones, calcule el promedio as como contabilice el nmero de calificaciones que se encuentren arriba del promedio, el nmero de calificaciones abajo del promedio y el nmero que se sean iguales al promedio. Calcular tambin los porcentajes de esas estadsticas, as como validar la calificacin. Se usan arreglos cuando se necesita acceder nuevamente a los datos. Manipular ms de una vez a una coleccin de datos. Un arreglo es una coleccin de datos del mismo tipo identificados bajo un mismo nombre de variable CARACTERISTICAS 6. A los datos en un arreglo se les denomino elementos del arreglo 7. Para identificar o acceder a un elemento se usara el nombre del arreglo, as como la posicin del elemento en el arreglo 8. A la posicin del elemento en el arreglo se le denomina ndice del arreglo el cual deber ser de tipo entero y puede estar representado por un valor, una variable o una expresin aritmtica. 9. Todo arreglo tendr un tamao fsico (Mx), el cual indica el numero mximo de elementos que se podrn almacenar en ese momento en el arreglo a0 a1 a2 a3 a4 a5 a6 a7 a8
MX = 8
10. Tambin tendr un tamao lgico (TAM),el cual indica el nmero de elementos actualmente almacenados. En consecuencia el tamao lgico jams deber ser mayor al tamao fsico y si as fuere provocara una interrupcin anormal del programa.
127
1.- TIPOS DE ARREGLOS CON RESPECTO A DIMENSIONES 1.1 unidimensionales 1.2 bidimensionales 1.3 tridimensionales .. . . 1.4 n dimensionales 2.- TIPOS DE ARREGLOS CON RESPECTO A LA CONCURRENCIA 2.1 nicos 2.2 Paralelos 3.- TIPOS DE ARREGLOS RESPECTO A TIPOS DE DATOS 3.1 Numricos 3.1.1 Enteros 3.1.2 Sencillos 3.1.3 Dobles 3.1.4 Moneda 3.2 Caracteres 3.3 Cadenas 3.4 Estructuras (Registros). 4.- TIPOS DE ARREGLOS CON RESPECTO A OCURRENCIAS (APARICIONES) 4.1 Con datos repetidos 4.2 Sin datos repetidos 5.- TIPOS DE DATOS CON RESPECTO A ORDENAMIENTO 5.1 Sin datos ordenados 5.2 Con datos ordenados OPERACIONES BASICAS CON ARREGLOS 1. Lectura 2. Escritura 3. Asignacin 4. Bsqueda 5. Insercin 6. Eliminacin 7. Actualizacin 8. Ordenamiento
UNIDAD VII
128
PROGRAMACION MODULAR
Un Modulo es un segmento de cdigo que realiza una tarea especifica. Al programar con mdulos se usa la tcnica divide y vencers; Los mdulos pueden ser, genricamente hablando: Mdulos de Lectura (Capturar). Mdulos de Escritura (Mostrar). Mdulos de Clculos. Mdulos de Procesamiento.
129
HERENCIA
CLASES DERIVADAS
La herencia es la relacion que existe entre dos clases, en la que una clase denominada clase derivada subclase clase hija se crea a partir de otra ya existente, denominada clase base superclase clase padre .
Ejemplos:
Clases Base
Empleado
Figura
Programador
Tringulo
Clases Derivadas
130
La clase base y la clase derivada tienen cdigo y datos en comn, de modo que si se crea la clase derivada de modo independiente, se duplicara mucho lo que ya se ha escrito para la clase base. Java usa el mecanismo de extensin ( extends ) que permite crear clases derivadas o clases que son la extensin de otra clase, de modo que la nueva clase hereda todos los miembros datos y los mtodos que pertenecen a la clase ya existente. Formato: class nombre_clase_derivada extends nombre_clase_base Regla: La palabra reservada extends produce que todos los miembros no privados (private) en la clase base sean heredados en la clase derivada.
Empleado
Figura
Programador
Tringulo
131
class Programador extends Empleado { public miembro publico // miembros publicos private miembro privado //miembros privados }
class Triangulo extends Figura { public miembro publico // miembros publicos protected miembro protegido // miembros protegidos }
Los miembros indicados arriba pertenecen a la nueva clase y podr acceder a los miembros de la clase base que estn declarados en su mbito o visibilidad como public o como protected solamente.
132
PagoFijo
abstract class Prestamo
PagoVariable
Hipoteca
{
protected float capital; protected float tasaInteres;
133
{
private float pago // cantidad mensual a pagar por el cliente public PagoFijo (float p, float c, float t) // Constructor public int crearTablaPagos ( float[][] tabla)
{ : } }
class Hipoteca extends Prestamo
{
private float pago // cantidad mensual a pagar por el cliente private int numRecibos; private int recibosPor Ao; public PagoFijo (float p, int nr, int na, float c, float t); // Constructor public int crearTablaPagos ( float[][] tabla)
{ : } }
134
Los miembros private de la clase base son los nicos que no hereda la clase derivada, no se puede acceder a ellos desde la clase derivada. Los miembros con visibilidad public, protected o la visibilidad por defecto (entre las clases del mismo package) se incorporan a la clase derivada con la misma categora de visibilidad que tienen en la clase base.
Cabe recordar que al declarar en la clase el modificador public como prefijo indica que la clase es visible en otros paquetes. package personas; public class Persona { // Miembros de la clase } La clase Persona se puede utilizar en otros paquetes: package empresa; import personas.*; class Becario extends Persona { // Miembros de la clase }
135
Archivos y Flujos
Un archivo en general es un medio para almacenar informacin por lo tanto un archivo en una computadora es un medio electronico para almacenar informacin. Un flujo (Stream), llamado tambien flujo de bits, es el medio electronico que establece la conexin (pipe) entre las celdas del almacenamiento primario y el archivo guardado en el almacenamiento secundario.
136
TIPOS DE ARCHIVOS DE ACUERDO A SU FUNCION Y ALMACENAMIENTO. Bsicamente existen tres tipos de archivos: 1. ARCHIVOS PARA MANIPULAR CARACTERES 2. ARCHIVOS DE ACCESO SECUENCIAL 3. ARCHIVOS DE ACCESO ALEATORIO
OPERACIONES CON ARCHIVOS 1. Abrir el archivo Se establece la tuberia (pipe) para el flujo (stream) de bits. 2. Leer del archivo Se transfieren flujo de bits del archivo que se haya en el amacenamiento secundario a celdas de memoria que se hayan en el almacenamiento primario. 3. Escribir en el archivo Se transfieren flujo de bits de las celdas de memoria que se hayan en el almacenamiento primario al archivo que se haya en el amacenamiento secundario. 4. Aadir al archivo Se transfieren flujo de bits de las celdas de memoria que se hayan en el almacenamiento primario al FINAL del archivo que se haya en el amacenamiento secundario. 5. Cerrar el archivo Se cierra la tubera (pipe) del flujo de bits.
137
Un flujo (stream) es una abstraccin que se refiere a un flujo o corriente de datos que fluyen entre un origen o fuente (productor) y un destino o sumidero (consumidor). Entre el origen y el destino debe existir una conexin o canal (pipe) por la que circulen los datos. La apertura de un archivo establece: La conexin del programa con el dispositivo que tiene el archivo. El canal que comunica el archivo con el programa que van a fluir la secuencia de datos.
138
Abrir un archivo supone crear un objeto y quedar asociado con el flujo. Al comenzar la ejecucin de un programa JAVA se crean automticaticamente tres objetos flujo. Estos son objetos definidos en la clase System: 1. System.in; Objeto entrada estndar, permite la entrada de flujo de bytes desde el teclado. 2. System.out; Objeto de salida estndar; permite al programa la salida de datos por pantalla. 3. System.err; Objeto de salida estndar; permite al programa la salida de errores por pantalla.
139
140
1. InputStream es la clase base de todas las clases definidas para el flujo (stream) de entrada 1. FileInputStream 2. ByteArrayInputStream 3. PipeInputStream 4. SecuenceInputStream 5. StringBufferInputStream 6. FilterInputStream 2. OutputStream es la clase base de todas las clases definidas para el flujo (stream) de salida 1. FileOutputStream 2. ByteOutputStream 3. PipeOutputStream 4. FilterOutputStream
141
La Clase FileInputStream
La clase FileInputStream se usan para leer bytes desde un archivo. Proporciona operaciones bsicas para leer un byte una secuencia de bytes. Se muestran algunos de los mtodos ms importantes de esta clase, todos son public, es importante tener en cuenta la excepcin que puede lanzar para cuando se invoquen se haga un tratamiento de excepcin.
FileInputStream (String nombre) throws FileNotFoundException;
142
int read( byte [ ] s, int org, int len ) throws IOException; Lee una secuencia de bytes del flujo y se almacena en el arreglo s desde la posicin org y un mximo de len bytes.asociado. Devuelve -1 si alcanza el fin de archivo bien el nmero de bytes leidos.
143
La Clase FileOutputStream
La clase FileOutputStream se usan para escribir bytes en un archivo. Proporciona operaciones bsicas para escribir un byte una secuencia de bytes. Se muestran algunos de los mtodos ms importantes de esta clase, todos son public, es importante tener en cuenta la excepcin que puede lanzar para cuando se invoquen se haga un tratamiento de excepcin.
FileOutputStream (String nombre) throws FileNotFoundException;
Crea un objeto inicializado con el nombre de archivo como argumento. En el caso de que sw= true los bytes escritos se aaden al final del archivo.
FileOutputStream (File nombre) throws FileNotFoundException;
Crea un objeto inicializado con el objeto archivo como argumento. . En el caso de que sw= true los bytes escritos se aaden al final del archivo.
144
void write( byte a ) throws IOException; Escribe el byte a del flujo asociado. void write( byte [ ] s) throws IOException; Escribe el arreglo s de bytes en el flujo. int write( byte [ ] s, int org, int len ) throws IOException; Escribe el arreglo s de bytes desde la posicin org y un mximo de len bytes en el flujo.
145
146
Public DataInputStream (FileInputStream fis) Crea un objeto asociado con cualquier objeto de entrada pasado como argumento. Public final bolean readBoolean () throws IOException Devuelve el valor de tipo boolean leido. Public final bolean readByte () throws IOException Devuelve el valor de tipo byte leido. Public final bolean readShort () throws IOException Devuelve el valor de tipo short leido. Public final bolean readInt () throws IOException Devuelve el valor de tipo int leido. Public final bolean readLong () throws IOException Devuelve el valor de tipo long leido. Public final bolean readFloat () throws IOException Devuelve el valor de tipo float leido. Public final bolean readDouble () throws IOException Devuelve el valor de tipo double leido. Public final bolean readChar () throws IOException Devuelve el valor de tipo byte leido. Public final bolean readUTF () throws IOException Devuelve una cadena que se escribi en formato UTF.
147
Public final bolean readLine () throws IOException Devuelve la cadena leda hasta el final de la lnea. La Clase DataOutputStream
El archivo que se va a leer tiene que haber sido escrito por un flujo de la clase DataOutputStream. Esta clase tiene que estar asociada a un flujo de bytes, pero de salida. La finalidad de la clase es escribir en el flujo asociado, datos de tipo primitivo. Para crear un objeto de sta clase, previamente tiene que estar creado el objeto flujo de bytes con el que se va a asociar. Por ejemplo, el archivo jmf.dat para ser creado tienen que instanciar las clases. FileOutputStream fos = new FileOutputStream (jmf.dat); DataOutputStream dos = new DataOutputStream (fos);
A continuacin se describen algunos de los mtodos ms importantes de esta clase, todos tienen visibilidad public, y adems no se puede redefinir, ya que estn declarados como final.
148
Public DataOutputStream (FileOutputStream fis) Crea un objeto asociado con cualquier objeto de entrada pasado como argumento. Public final bolean writeBoolean (boolean v) throws IOException Escribe el dato boolean v. Public final bolean writeByte (byte v) throws IOException Escribe el dato byte v. Public final bolean writeShort (short v) throws IOException Escribe el dato short v. Public final bolean writeInt (int v) throws IOException Escribe el dato int v. Public final bolean writeLong (long v) throws IOException Escribe el dato long v. Public final bolean readFloat (float v) throws IOException Escribe el dato float v. Public final bolean writeDouble (double v) throws IOException Escribe el dato double v. Public final bolean writeChar (char v) throws IOException Escribe el dato char v.
149
Public final bolean writeUTF (String cad) throws IOException Escribe la cadena en formato UTF. Public final int size() throws IOException Devuelve el tamao del flujo.
150
151
152
La clase RandomAccessFile
Un flujo de esta clase permite acceder directamente a cualquier posicin dentro del fichero vinculado con l. Proporciona dos constructores: RandomAccessFile (String nombre_fichero, String modo) RandomAccessFile (File objeto_File, String modo) El primer constructor abre un flujo vinculado con el fichero especificado por nombre_fichero, mientras que el segundo hace lo mismo, pero a partir de un objeto File. El argumento modo puede ser: r rw read Solo permiten realizar operaciones de lectura. read/write Se pueden realizar operaciones de lectura y de escritura sobre el fichero.
153
As mismo, la clase RandomAccessFile provee, adems de los mtodos de las interfaces DataInput y DataOutput, los mtodos: public long getFilePointer() throws IOException Este mtodo devuelve la posicin actual en bytes del puntero L/E en el fichero. Este puntero marca siempre la posicin donde se iniciar la siguiente operacin de lectura o de escritura en el archivo. public long length() throws IOException Este mtodo devuelve la longitude del archive en bytes. public void seek(long pos) throws IOException Y este mtodo, mueve el puntero de L/E a una nueva posicin desplazada pos bytes del principio del archivo. No se permiten desplazamientos negativos.
154
Archivos y Flujos Un flujo (stream) es una abstraccin que se refiere a un flujo o corriente de datos que fluyen entre un origen o fuente (productor) y un destino o sumidero (consumidor). Entre el origen y el destino debe existir una conexin o canal (pipe) por la que circulen los datos. La apertura de un archivo establece: La conexin del programa con el dispositivo que tiene el archivo. El canal que comunica el archivo con el programa que van a fluir la secuencia de datos.
155
Abrir un archivo supone crear un objeto y quedar asociado con el flujo. Al comenzar la ejecucin de un programa JAVA se crean automticticamente tres objetos flujo. Estos son objetos definidos en la clase System: 1. System.in; Objeto entrada estndar, permite la entrada de flujo de bytes desde el teclado. 2. System.out; Objeto de salida estndar; permite al programa la salida de datos por pantalla. 3. System.err; Objeto de salida estndar; permite al programa la salida de errores por pantalla.
156
FLUJOS: JERARQUIA DE CLASES Todo el proceso de entrada y de salida en JAVA se hace a travs de flujos (stream). En los programas hay que crear objetos stream. En el paquete java.io se encuentran todas las clases stream necesarias para dar entrada/salida a los programas. Los flujos de 4. Datos 5. Caracteres 6. Bytes Se pueden clasificar en 3. Flujos de entrada (Input Stream) 4. Flujos de salida (Output Stream) Para ello JAVA declara dos clases que derivan directamente de la clase Object 3. InputStream 4. OutputStream Ambas son clases abstractas que declaran mtodos que deben de refinirse en sus clases derivadas:
157
3. InputStream es la clase base de todas las clases definidas para el flujo (stream) de entrada 1. FileInputStream 2. ByteArrayInputStream 3. PipeInputStream 4. SecuenceInputStream 5. StringBufferInputStream 6. FilterInputStream OutputStream es la clase base de todas las clases definidas para el flujo (stream) de salida 5. FileOutputStream 6. ByteOutputStream 7. PipeOutputStream 8. FilterOutputStream
158
TIPOS DE ARCHIVOS DE ACUERDO A SU FUNCION Y ALMACENAMIENTO. Bsicamente existen tres tipos de archivos: 4. ARCHIVOS PARA MANIPULAR CARACTERES 5. ARCHIVOS DE ACCESO SECUENCIAL 6. ARCHIVOS DE ACCESO ALEATORIO
159
ARCHIVOS PARA MANIPULAR CARACTERES La Clase FileInputStream La clase FileInputStream se usan para leer bytes desde un archivo. Proporciona operaciones bsicas para leer un byte una secuencia de bytes. Se muestran algunos de los mtodos ms importantes de esta clase, todos son public, es importante tener en cuenta la excepcin que puede lanzar para cuando se invoquen se haga un tratamiento de excepcin. FileInputStream (String nombre) throws FileNotFoundException; Crea un objeto inicializado con el nombre de archivo como argumento. FileInputStream (File nombre) throws FileNotFoundException; Crea un objeto inicializado con el objeto archivo como argumento. int read( ) throws IOException; Lee un byte del flujo asociado. Devuelve -1 si alcanza el fin de archivo. int read( byte [ ] s ) throws IOException; Lee una secuencia de bytes del flujo y se almacena en el arreglo s. Devuelve -1 si alcanza el fin de archivo bien el nmero de bytes leidos. int read( byte [ ] s, int org, int len ) throws IOException; Lee una secuencia de bytes del flujo y se almacena en el arreglo s desde la posicin org y un mximo de len bytes.asociado. Devuelve -1 si alcanza el fin de archivo bien el nmero de bytes leidos.
160
La Clase FileOutputStream La clase FileOutputStream se usan para escribir bytes en un archivo. Proporciona operaciones bsicas para escribir un byte una secuencia de bytes. Se muestran algunos de los mtodos ms importantes de esta clase, todos son public, es importante tener en cuenta la excepcin que puede lanzar para cuando se invoquen se haga un tratamiento de excepcin. FileOutputStream (String nombre) throws FileNotFoundException; Crea un objeto inicializado con el nombre de archivo como argumento. FileOutputStream (String nombre, Boolean sw) throws FileNotFoundException; Crea un objeto inicializado con el nombre de archivo como argumento. En el caso de que sw= true los bytes escritos se aaden al final del archivo. FileOutputStream (File nombre) throws FileNotFoundException; Crea un objeto inicializado con el objeto archivo como argumento. void write( byte a ) throws IOException; Escribe el byte a del flujo asociado. void write( byte [ ] s) throws IOException; Escribe el arreglo s de bytes en el flujo. int write( byte [ ] s, int org, int len ) throws IOException; Escribe el arreglo s de bytes desde la posicin org y un mximo de len bytes en el flujo.
161
ARCHIVOS DE ACCESO SECUENCIAL Son aquellos que permiten almacenar no solamente caracteres sino tambien datos de tipo numerico, de tipo cadena (String) y de tipo logico (boolean). La Clase DataInputStream La clase de entrada DataInputStream, filtra una secuencia de bytes, los organiza para poder realizar lectura de datos primitivos directamente: char, byte, short, int, long, float, double y bolean. En objeto de esta clase, lee un flujo de entrada de bajo nivel (flujo de bytes) al que est asociado. La asociacin se realiza al crear el objeto. El constructor tiene como argumento el objeto flujo de entrada. As por ejemplo, si el archivo jmf.dat va a ser ledo se ha de crear un objeto FileInputStream y a continuacin un objeto DataInputStream: FileInputStream fis = new FileInputStream(jmf.dat); DataInputStream dis = new DataInputStream(fis); A continuacin se describen algunos de los mtodos ms importantes de esta clase, todos tienen visibilidad public, y adems no se puede redefinir, ya que estn declarados como final.
162
Public DataInputStream (FileInputStream fis) Crea un objeto asociado con cualquier objeto de entrada pasado como argumento. Public final bolean readBoolean () throws IOException Devuelve el valor de tipo boolean leido. Public final bolean readByte () throws IOException Devuelve el valor de tipo byte leido. Public final bolean readShort () throws IOException Devuelve el valor de tipo short leido. Public final bolean readInt () throws IOException Devuelve el valor de tipo int leido. Public final bolean readLong () throws IOException Devuelve el valor de tipo long leido. Public final bolean readFloat () throws IOException Devuelve el valor de tipo float leido. Public final bolean readDouble () throws IOException Devuelve el valor de tipo double leido. Public final bolean readChar () throws IOException Devuelve el valor de tipo byte leido. Public final bolean readUTF () throws IOException Devuelve una cadena que se escribi en formato UTF. Public final bolean readLine () throws IOException Devuelve la cadena leda hasta el final de la linea. La Clase DataOutputStream El archivo que se va a leer tiene que haber sido escrito por un flujo de la clase
DataOutputStream. Esta clase tiene que estar asociada a un flujo de bytes, pero de
salida. La finalidad de la clase es escribir en el flujo asociado, datos de tipo primitivo. Para crear un objeto de sta clase, previamente tiene que estar creado el objeto flujo de bytes con el que se va a asociar. Por ejemplo, el archivo jmf.dat para ser creado tienen que instanciar las clases. FileOutputStream fos = new FileOutputStream (jmf.dat); DataOutputStream dos = new DataOutputStream (fos); A continuacin se describen algunos de los mtodos ms importantes de esta clase, todos tienen visibilidad public, y adems no se puede redefinir, ya que estn declarados como final.
163
Public DataOutputStream (FileOutputStream fis) Crea un objeto asociado con cualquier objeto de entrada pasado como argumento. Public final bolean writeBoolean (boolean v) throws IOException Escribe el dato boolean v. Public final bolean writeByte (byte v) throws IOException Escribe el dato byte v. Public final bolean writeShort (short v) throws IOException Escribe el dato short v. Public final bolean writeInt (int v) throws IOException Escribe el dato int v. Public final bolean writeLong (long v) throws IOException Escribe el dato long v. Public final bolean writeFloat (float v) throws IOException Escribe el dato float v. Public final bolean writeDouble (double v) throws IOException Escribe el dato double v. Public final bolean writeChar (char v) throws IOException Escribe el dato char v.
164
Public final bolean writereadUTF (String cad) throws IOException Escribe la cadena en formato UTF. Public final int size() throws IOException Devuelve el tamao del flujo.
165
ARCHIVOS DE ACCESO ALEATORIO Hasta ahora, hemos trabajado con ficheros de acuerdo al siguiente esquema: 6. Abrir el archivo 7. Leer del archivo 8. Escribir en el archivo 9. Aadir al archivo 10. Cerrar el archivo Pero no hemos ledo o escrito a partir de una determinada posicin dentro del archivo. Esto es importante cuando necesitamos modificar algunos de los valores contenidos en el archivo o cuando necesitamos extraer una parte concreta dentro del archivo. El paquete java.io contiene la clase RandomAccessFile la que proporciona las capacidades que permiten este tipo de acceso directo. Adems, un flujo de esta clase permite realizar tanto operaciones de lectura como de escritura sobre el archivo vinculado con el mismo. Esta clase se deriva directamente Object, e implementa las interfaces DataInput y DataOutput Un archivo accedido aleatoriamente es comparable a un arreglo unidimensional. En un arreglo unidimensional para acceder a uno de sus elementos utilizando un ndice. En un archivo accedido aleatoriamente el ndice es substituido por un puntero de lectura o escritura (L/E). Dicho puntero es situado automticamente al principio del archivo cuando se abre para leer y/o escribir. Por lo tanto, una operacin de lectura o de escritura comienza en la posicin donde est el puntero dentro del fichero; finalmente, su posicin coincidir justo a continuacin del ltimo byte ledo o escrito. La clase RandomAccessFile Un flujo de esta clase permite acceder directamente a cualquier posicin dentro del fichero vinculado con l. Proporciona dos constructores: RandomAccessFile (String nombre_fichero, String modo) RandomAccessFile (File objeto_File, String modo) El primer constructor abre un flujo vinculado con el fichero especificado por nombre_fichero, mientras que el segundo hace lo mismo, pero a partir de un objeto File. El argumento modo puede ser:
r rw
read Solo permiten realizar operaciones de lectura. read/write Se pueden realizar operaciones de lectura y de escritura sobre el fichero.
166
As mismo, la clase RandomAccessFile provee, adems de los mtodos de las interfaces DataInput y DataOutput, los mtodos: public long getFilePointer() throws IOException Este metdo devuelve la posicion actual en bytes del puntero L/E en el fichero. Este puntero marca siempre la posicin donde se iniciar la siguiente operacin de lectura o de escritura en el archivo. public long length() throws IOException Este mtodo devuelve la longitude del archive en bytes. public void seek(long pos) throws IOException Y este mtodo, mueve el puntero de L/E a una nueva posicin desplazada pos bytes del principio del archivo. No se permiten desplazamientos negativos.
167
168
Applet
Qu son? Un applet es un componente de una aplicacin que se ejecuta en el contexto de otro programa, por ejemplo un navegador web. El applet debe ejecutarse en un contenedor, que lo proporciona un programa anfitrin, mediante un plugin, o en aplicaciones como telfonos mviles que soportan el modelo de programacin por applets. En palabras de sus creadores Sun developer Network:
An applet is a program written in the Java programming language that can be included in a HTML page, much in the same way an image is included in a page. When you use a Java technology-enabled browser to view a page that contains an applet, the applets code is transferred to your system and executed by the browsers Java Virtual Machine (JVM). Un applet es un programa escrito en lenguaje programador Java que puede ser incluido en una pagina HTML, y mucho de la misma manera se incluye una imagen en una pgina. Al utilizar una tecnologa Java del navegador para ver una pgina que contiene un applet, el cdigo del applet se transfiere a su sistema y es ejecutado por el navegador Java Virtual Machine (JVM). A diferencia de un programa, un applet no puede ejecutarse de manera independiente, ofrece informacin grfica y a veces interacta con el usuario, tpicamente carece de sesin y tiene privilegios de seguridad restringidos. Un applet normalmente lleva a cabo una funcin muy especfica que carece de uso independiente. El trmino fue introducido en Apple Script en 1993. Ejemplos comunes de applets son las Java applets y las animaciones Flash. Otro ejemplo es el Windows Media Player utilizado para desplegar archivos de video incrustados en los navegadores como el Internet Explorer. Otros plugins permiten mostrar modelos 3D que funcionan con una applet. Por otra parte, la diferencia entre una aplicacin JAVA y un applet radica en cmo se ejecutan. Para cargar una aplicacin JAVA se utiliza el intrprete de JAVA (pcGRASP de Auburn University, Visual J++ de Microsoft, Forte de Sun de Visual Caf). En cambio, un applet se puede cargar y ejecutar desde cualquier explorador que soporte JAVA (Netscape, Internet Explorer de Windows, Mozilla Firefox...etc.). JavaApplet (applet de Java) Un applet Java es un applet escrito en el lenguaje de programacin Java. Los applets de Java pueden correr en un navegador web utilizando la Java virtual machine (JVM), o en el AppletViewer de Sun. Entre sus caractersticas podemos mencionar un esquema de seguridad que permite que los applets que se ejecutan en el equipo no tengan acceso a partes sensibles (por ej. 169
no pueden escribir archivos), a menos que uno mismo le d los permisos necesarios en el sistema; la desventaja de este enfoque es que la entrega de permisos es engorrosa para el usuario comn, lo cual juega en contra de uno de los objetivos de los Java applets: proporcionar una forma fcil de ejecutar aplicaciones desde el navegador web. En Java un applet (Subprograma), es un programa que puede inscrustarse en un documento HTML; es decir en una pagina Web, Cuando un Navegador carga una pagina Web que contiene un Applet, este se descarga en el navegador Web y comienza a ejecutarse esto nos permite crear programas que cualquier usuario puede ejecutar con tan solo cargar la pagina Web en su navegador. Ventajas La principal ventaja de utilizar applets consiste en que son mucho menos dependientes del navegador que los scripts en Java script, incluso independientes del sistema operativo del ordenador donde se ejecutan. Adems, Java es ms potente que Java script, por lo que el nmero de aplicaciones de los applets podr ser mayor. Desventajas Como desventajas en relacin con Java script cabe sealar que los applets son ms lentos de procesar y que tienen espacio muy delimitado en la pgina donde se ejecutan, es decir, no se mezclan con todos los componentes de la pgina ni tienen acceso a ellos. Es por ello que con los applets de Java no podremos hacer directamente cosas como abrir ventanas secundarias, controlar Frames, formularios, capas, etc. fuentes
170
BIBLIOGRAFA INTRODUCCIN A LAS CIENCIAS COMPUTACIONALES TREMBLAY McGRAW-HILL. METODOLOGIA DE LA PROGRAMACIN JOYANES AGUILAR McGRAW-HILL. FUNDAMENTOS DE PROGRAMACION (CD) LUIS JOYANES AGUILAR LUIS RODRIGUEZ BAENA MC GRAW HILL PROGRAMACION ORIENTADA A OBJETOS (CD) FRANCISCO JAVIER CEBALLOS COMPUTEC RA-MA JAVA 2 Curso de programacin FRANCISCO JAVIER CEBALLOS ALFAOMEGA RA-MA PROGRAMACIN EN JAVA 5.0 JAMES COHOON JACK DAVISON MC GRAW HILL PROGRAMACIN EN JAVA 2 (RECOMENDADO) LUIS JOYANES AGUILAR/ IGNACIO ZAHONERO MARTNEZ MC GRAW HILL
171