215
Instituto Tecnológico De León SISTEMAS Y COMPUTACIÓN CONCEPTOS BASICOS POR: Ing. José. María Francisco Cabrera Gutiérrez 1

JV Conceptos Basicos

Embed Size (px)

Citation preview

Page 1: JV Conceptos Basicos

Instituto Tecnológico De León

SISTEMAS Y COMPUTACIÓN

CONCEPTOS BASICOS

POR:

Ing. José. María Francisco Cabrera Gutiérrez

León, Gto. A 23 de Agosto 2010

1

Page 2: JV Conceptos Basicos

TEMARIO

1. CONCEPTOS BÁSICOS2. SOLUCIÓN DE PROBLEMAS AUXILIADOS POR LA COMPUTADORA.3. TÉCNICAS PARA LA FORMULACIÓN DE ALGORITMOS4. ENTIDADES PRIMITIVAS PARA LA CONSTRUCCIÓN DE

INSTRUCCIONES.5. LENGUAJE DE PROGRAMACION JAVA.6. ARREGLOS.7. MODULARIDAD

2

Page 3: JV Conceptos Basicos

Introducción

Descripción básica de un sistema de cómputo.Esta sección tiene como finalidad dar una breve reseña de las partes principales de un

sistema de cómputo a un nivel básico, que permita al usuario un mayor entendimiento de los conceptos que se trataran a lo largo del tutorial.

Sistema de cómputo. Le llamamos sistema de cómputo a la configuración completa de una computadora,

incluyendo las unidades periféricas y la programación de sistemas que la hacen un aparato útil y funcional para un fin determinado.

Procesador ó Computadora.Es un dispositivo ó aparato electrónico que procesa información y realiza calculos usando

la aritmetica básica a gran velocidad, precisión y confiabilidad

Esta parte es conocida también como unidad central de procesamiento o CPU formada a su vez por la unidad de control, la unidad aritmética y lógica 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 aritmética y lógica de la CPU realiza las operaciones relacionadas con los cálculos numéricos y simbólicos. Típicamente estas unidades sólo tienen capacidad de efectuar operaciones muy elementales como: suma y resta de dos números de punto fijo, multiplicación y división de punto fijo, manipulación de bits de los registros y comparación del contenido de dos registros.

Las computadoras personales pueden clasificarse por lo que se conoce como tamaño de palabra, esto es, la cantidad de bits que el procesador puede manejar a la vez.

3

Page 4: JV Conceptos Basicos

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 numérico y tienen la propiedad de ser direcciónables, esto es, que se pueden distinguir una de otra por medio de un número único o dirección para cada celda.

El nombre genérico de estas memorias es Random Access Memory (Memoria de acceso aleatorio) o RAM por sus siglas en inglés. La principal desventaja de este tipo de memoria es que los circuitos integrados pierden la información que tienen almacenada cuando se interrumpe la alimentación eléctrica.

Esto lleva a la creación de memorias cuya información no se pierda cuando se apaga el sistema. Estas memorias reciben el nombre de Read Only Memory (Memoria de solo lectura) o ROM.

Unidades de Entrada y Salida. Para que una computadora nos sea útil es necesario que el procesador se comunique al exterior por medio de interfaces que permiten la entrada y la salida de datos del procesador y la memoria.

Haciendo uso de estas comunicaciones es posible introducir datos para su procesamiento y la posterior visualización de los datos ya procesados.

Algunas de las unidades de entrada mas comunes son teclados, lectoras de tarjetas (ya en desuso), mouse, etc. Las unidades de salida más comunes son las terminales de vídeo y las impresoras.

Unidades de Memoria Auxiliar. Como la memoria central de una computadora es costosa y, considerando las

aplicaciones actuales, muy limitada, surge entonces la necesidad de crear sistemas de almacenamiento de información prácticos y económicos. Además, la memoria central pierde su contenido al apagarse la máquina, por lo que no es conveniente utilizarla para almacenamiento permanente de datos.

Estos y otros inconvenientes dan lugar a la creación de unidades periféricas de memoria que reciben el nombre de almacenamiento secundario (memoria auxiliar o secundaria). De estas unidades periféricas las más comunes son las cintas y los discos magnéticos.

La información almacenada en estos medios magnéticos recibe el nombre de archivo. Un archivo está formado por un número variable de registros, generalmente de tamaño fijo; los registros pueden contener datos o programas.

4

Page 5: JV Conceptos Basicos

SoftwareEn términos de computación es todo aquel proceso o programa que utiliza los recursos de

la computadora para lograr el objetivo trazado por su diseñador o programador.

5

Page 6: JV Conceptos Basicos

Unidad de Control

PC

Unidad Aritmética Lógica AC

UNIDAD ICONCEPTOS BÁSICOS

ARQUITECTURA DE LA COMPUTADORA

C P U

Dispositivo Dispositivo de

de entrada Leer SalidaEscribir

AlmacenamientoSecundario

Líneas de transmisión de datos

Líneas de comunicación

6

Almacenamiento Primario

Page 7: JV Conceptos Basicos

1) La Unidad de control tiene tres funciones básicas:1. Leer e interpretar instrucciones del programa.2. Dirigir la operación de los componentes internos del procesador3. 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 ejecución, 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 Aritmética Lógica, realiza todos los cálculos (+,-,*, /) y todas las operaciones lógicas (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 magnético, unidades de cinta magnética, disco de láser ó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 catódicos (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 lógica, es decir sin ambigüedades para resolver un problema.

7) PC. Contador del Programa. Está en la unidad de control e indica el número de celda de memoria que contiene la instrucción que en ese momento se está ejecutando.

8) AC. Acumulador. Está en la unidad lógica aritmética y almacena los resultados parciales.

7

Page 8: JV Conceptos Basicos

SISTEMAS DE NUMERACIÓN Y LAS COMPUTADORAS.Las primeras computadoras se diseñaban basándose en el sistema de numeración

decimal. Este planteamiento hizo que el desarrollo de las capacidades lógicas de la computadora fuera innecesariamente complicado y no utilizaba los recursos con eficiencia. (Por ejemplo, se necesitaban 10 bulbos al vacío para representar un dígito 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 sólo 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 fotografía instantánea del contenido del almacenamiento primario (bits apagados y bits encendidos) en un momento determinado. Para reducir, por lo menos en parte, la confusión de ver sólo 1 y 0 en la salida, el sistema de numeración Hexadecimal (de base 16) se usa como una simbología 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 29306294 4580623F D20DD0AA 62ª29640 8CECCC04 88F00010 800000004

38C0A0 D06E0610 12114770 6202D203 D09F629D 4120D121 45B06236 5820D120

38C0D0 1ª2C44E0 60701ª1E 41818001 44F06076 9640D112 455062DA 94BFD112

38C100 FF0098E0 D08012EE 47806310 D27CF000 48ª0D06A 48ª D06C

Esto es un volcado de memoria Hexadecimal. Cada uno de los renglones es una representación Hexadecimal del contenido del almacenamiento primario.

La primera columna de números a partir de la izquierda consiste en direcciones del almacenamiento. Cada par de dígitos hexadecimales representa los ocho bits de un byte.

La dirección del primer byte (29) del volcado de memoria es 0038C070 en el sistema Hexadecimal (ó 00000000001110001100000001110000 en el sistema binario). Se puede

8

Page 9: JV Conceptos Basicos

apreciar cuánto espacio se ahorra presentando volcados de memoria en el sistema Hexadecimal en vez de presentarlas en el sistema binario.

9

Page 10: JV Conceptos Basicos

Almacenamiento Primario (Memoria Principal, RAM)

0 1 2

3 4 5

6 7 8

9 10 11

10

Dirección

Contenido

Celda o localidad de memoria

Page 11: JV Conceptos Basicos

¿Por qué usar sistema de numeración binaria para las operaciones aritméticas en la computadora?

SISTEMA DE NUMERACIÓN DECIMAL

0 * 0 = 0 1 * 0 = 0 2 * 0 = 0 3 *0 = 00 * 1 = 0 1 * 1 = 1 2 * 1 = 2 3 *1 = 30 * 2 = 0 1 * 2 = 2 2 * 2 = 4 3 *2 = 60 * 3 = 0 1 * 3 = 3 2 * 3 = 6 3 *3 = 90 * 4 = 0 1 * 4 = 4 2 * 4 = 8 3 *4 = 120 * 5 = 0 1 * 5 = 5 2 * 5 = 10 3 *5 = 150 * 6 = 0 1 * 6 = 6 2 * 6 = 12 3 *6 = 180 * 7 = 0 1 * 7 = 7 2 * 7 = 14 3 *7 = 210 * 8 = 0 1 * 8 = 8 2 * 8 = 16 3 *8 = 240 * 9 = 0 1 * 9 = 9 2 * 9 = 18 3 *9 = 27 10 9 8 7 <- Número 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 NUMERACIÓN BINARIO

0 * 0 = 0 0 + 0 = 00 * 1 = 0 0 + 1 = 11 * 1 = 1 1 + 1 = 10

Total de combinaciones diferentes por las tablas de multiplicar = 3

Total de combinaciones diferentes por las tablas de sumar = 3

REGLA:

LAS REGLAS ARITMETICAS SON UNIVERSALES NO DEPENDEN DEL SISTEMA DE NUMERACION QUE SE USE

DECIMAL BINARIO OCTAL HEXADECIMAL

9 1 7 F 1 +1 + 1 + 1

10 10 10 10

MAGNITUDES

11

Page 12: JV Conceptos Basicos

&&&&&&&&&& && &&&&&&&& &&&&&&&&&&&&&&&&

12

Page 13: JV Conceptos Basicos

Sistemas de Numeración

Sistema Base Dígitos No. de Dígitos

Dígito Mayor

Decimal 10 0,1,2,3,4,5,6,7,8,9 10 9

Binario 2 0,1 2 1

Octal 8 0,1,2,3,4,5,6,7 8 7

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

Tabla de Equivalencias de los Sistemas de Numeración

Decimal Binario Octal Hexadecimal

0 0 0 0

1 1 1 1

2 10 2 2

3 11 3 3

4 100 4 4

5 101 5 5

6 110 6 6

7 111 7 7

8 1000 10 8

9 1001 11 9

10 1010 12 A

11 1011 13 B

12 1100 14 C

13 1101 15 D

14 1110 16 E

15 1111 17 F

16 10000 20 10

13

Page 14: JV Conceptos Basicos

Conversiones entre Sistemas de Numeración

DECIMAL A BINARIO

76d = ?

Residuo

76 | 38 | 019 | 0

9 | 1 4 | 1 2 | 0

1| 0

76d = 1001100b

BINARIO A DECIMAL

1001100b = ?

2+ 4 8+ 19 38+ 761 0 0 1 1 0 0 2 4+ 9 18+ 38 76+

1001100b = 76d

14

Page 15: JV Conceptos Basicos

Conversiones entre Sistemas de Numeración

BINARIO A OCTALRegla:

Se separa la cantidad en grupos de tres bits de derecha a izquierda.

Ejemplo:

10110101111b = ?

10 110 101 111 2 6 5 7

10110101111b = 2657o

OCTAL A BINARIO3164o = ?

Ejemplo:

3 1 6 4 11 001 110 100

3164 o = 11001110100b

15

Page 16: JV Conceptos Basicos

Conversiones entre Sistemas de Numeración

BINARIO A HEXADECIMALRegla:

Se separa la cantidad en grupos de tres bits de derecha a izquierda.

Ejemplo:

10110101111b = ?

101 1010 1111 5 A F

10110101111b = 5AFh

HEXADECIMAL A BINARIO

E3A5 x = 1110001110100101b

E 3 A 51110 0011 1010 0101

E3A5 x = 1110001110100101b

16

Page 17: JV Conceptos Basicos

Conversiones entre Sistemas de Numeración

DECIMAL A OCTAL

348d = ?

348 828 43 8 4 3 5

348d = 534o

OCTAL A DECIMAL

534o = ?

5 * 8 = 40 + 3 = 43 * 8 = 344 +4 = 348

534o = 348d

17

Page 18: JV Conceptos Basicos

Conversiones entre Sistemas de Numeración

DECIMAL A HEXADECIMAL

367d = ?

367 16 47 22 16 15 6 1

367d = 16Fx

HEXADECIMAL A DECIMAL

16Fx = ?

16Fx = 1 * 16 = 16 + 6 = 22 * 16 = 352 + 15 = 367

18

Page 19: JV Conceptos Basicos

BIT : BINARY DIGIT

BIT : DIGITO BINARIO (1,0)

¿Cuál es el tamaño óptimo de celda con respecto a Bits?

TAMAÑO DE CELDA Ó LOCALIDAD DE MEMORIA PROPUESTO

1 bit 2 bits 3 bits

0 A 00 A 000 A 1 B 01 B 001 B

10 C 010 C 11 D 100 D

011 E 101 F 110 G

111 H

Número de combinaciones = 2bits/celda

El número optimo de bits por celda = 27= 128 combinaciones diferentes . Porque el número de caracteres diferentes que existen son:

10 dígitos: 0,1,2,3,4,5,6,7,8,9,027 letras mayúsculas: A, B, C, D, E, F, G, H, I, J ....X,Y, Z27 letras minúsculas: a,b,c,d,e,f,g,h,i,j .........................x,y,z14 signos de puntuación; , ; : . ¡ ! ¿ ? ‘ “ á ä _ -23 especiales: ¬ | ° # $ % & / ( ) \ * + [ ] { } @ ^ ~ ‘ > <

101 caracteres diferentes

19

Bits en la celda

Page 20: JV Conceptos Basicos

Sin embargo, se decidió usar 8 bits por celda; basándose en el concepto de decimal empacado, como se muestra.

20

Page 21: JV Conceptos Basicos

CODIGO EBCDIC(CODIGO BINARIO)

0 1111 00001 1111 00012 1111 00103 1111 00114 1111 01005 1111 01016 1111 01107 1111 01118 1111 10009 1111 1001

36

11110011 11110110DECIMAL EMPACADO

36

21

00110110

Page 22: JV Conceptos Basicos

58

58

22

11110101 11111000

01011000

Page 23: JV Conceptos Basicos

Dando a origen al concepto de BYTE.

Unidad de capacidad ó unidad de medida de la memoria 1 BYTE = 8 bits

- Bit : digito binario ( 1 ó 0)(Estado electrónico de encendido y apagado)

- Byte : es una combinación de 8 bits.-

Generándose 256 combinaciones diferentes y por lo tanto se pueden representar 256 caracteres diferentes.

-------- BYTE OPTIMO -------

1 1 0 0 0 1 1

N N= 1 = 0

S S

23

Page 24: JV Conceptos Basicos

BYTE = 8 bits

1Kbyte = 210 Bytes = 1,024 Bytes1Mbyte = 220 Bytes = 1,048,576 Bytes1Gbyte = 230 Bytes = 1,073,741,824 Bytes1Tbyte = 240 Bytes = 1,099,511,627,776 Bytes1Pbyte = 250 Bytes = 1,024 TBytes1Ebyte = 260 Bytes = 1,024 PBytes1Zbyte = 270 Bytes = 1,024 EBytes1Ybyte = 280 Bytes = 1,024 ZBytes

24

Page 25: JV Conceptos Basicos

Códigos de almacenamiento de Caracteres en memoria: ASCII (Código Texto) EBCDIC (Código Binario)

ASCII: Generalmente se pronuncia “aski”, es un acrónimo de American Standard Code for Information Interchange, código de intercambio estandar americano.

Este código asigna a las letras del alfabeto, a los dígitos decimales del 0 al 9 y a varios símbolos adicionales un número binario de 8 bits.

De esta forma cada letra, dígito o carácter especial ocupa un byte en la memoria de la computadora.

El código ASCII es principalmente utilizado en la memoria para representar texto.

EBCDIC: Extended Binary Coded Decimal Interchange Code Código de intercambio decimal codificado en binario extendido.

Se usa para realizar cálculos numéricos.

25

Page 26: JV Conceptos Basicos

Códigos

Carácter ó Dígito ASCII EBCDIC0 00110000 (48) 111100001 00110001 (49) 111100012 00110010 (50) 111100103 00110011 (51) 111100114 00110100 (52) 111101005 00110101 (53) 111101016 00110110 (54) 111101107 00110111 (55) 111101118 00111000 (56) 111110009 00111001 (57) 11111001

26

Page 27: JV Conceptos Basicos

UNIDAD IISOLUCIÓN DE PROBLEMAS USANDO LA COMPUTADORA COMO

HERRAMIENTA

¿Qué es un Algoritmo?

Es una sucesión de pasos realizados en forma lógica, es decir, exentos de ambigüedades para realizar una tarea.

Un algoritmo tiene que ser un reflejo del tipo de programación que se esté utilizando.

Fase de Diseño

Fase Ardua No recomendable

Fase de Implementacion

LAS FASES PARA LA SOLUCIÓN DE PROBLEMAS USANDO LA COMPUTADORA COMO HERRAMIENTA:

1. Fase de Diseño2. Fase de Implementación

27

ALGORITMO

SOLUCIÓN VÍA COMPUTADOR

PROBLEMA

Page 28: JV Conceptos Basicos

Desarrollo de las Dos Fases:

Fase de Diseño Fase de Implementación

Nota:Todos los pasos a seguir en la Fase de Diseño, están realizados por una persona, o

sea, el programador.

En la Fase de implementación, 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.

28

Análisis del problema

Diseño del Algoritmo

Validación del Algoritmo

Codificación del Algoritmo; Construcción del Programa

Ejecución del Programa

Validación del Programa

Aplicación del Programa

Page 29: JV Conceptos Basicos

El Análisis del Problema consta de los siguientes pasos

Existen tres tipos de errores programación Errores de Sintaxis

o El analizador sintáctico es una ayuda para resolver este tipo de errores. Errores de Lógica.

o Se localizan haciendo “pruebas de escritorio” ó a través del análisis de resultados parciales y/o finales.

Errores en Tiempo de Ejecucióno Son los más difíciles de localizar, dependen de una mala interpretación del

alcance o poder de una instrucción o del tipo de dato, inclusive del hardware y/o de la plataforma.

29

Análisis del Programa

Descripción del Problema

Datos de Entrada Datos de Salida (Resultados)

Page 30: JV Conceptos Basicos

UNIDAD IIITÉCNICAS PARA LA FORMULACIÓN DE ALGORITMOS

Pagina sobre la Iniciación al diseño de algorítmoswww.desarrolloweb.com/manuales/67/

Instructivos Descripcion Narrada Manual de Operación

Técnicas para Recetas de Cocina

La Formulación Pseudo código

De Algoritmos Diagrama de flujo

30

Page 31: JV Conceptos Basicos

Símbolos de los diagramas de flujo para AlgoritmosBLOQUE FUNCIÓN DESCRIPCIÓN DISPOSITIVOS QUE

INTERVIENENDeclaración de

variablesReserva las celdas de

memoria que requieran cada una de las

variables indicadas

Almacenamiento primario

ALectura de Dato A Transferir el valor

desde el dispositivo de entrada (teclado) a la

celda de memoria asignada a la variable

A.

Dispositivo de entradaY almacenamiento

primario

AEscritura de A Transferir el valor

almacenado en la celda de memoria asignada a

lavariable A al

dispositivo estándar de salida (pantalla).

Dispositivo de salida y almacenamiento

primario

A = C + B

Calculo(instrucción aritmética,

sentencia de asignación)

Ejecuta las operaciones aritméticas que se

hayan a la derecha del signo

igual y el resultado almacénalo en la celda de memoria asignada a

lavariable que se haya a la izquierda del signo

igual.

Almacenamiento primario y unidad lógica Aritmética

Inicio, Fin

Inicio del programa, así como el fin del programa

Flujo del procesamiento

31

Int a,b,cFloat x,y

Page 32: JV Conceptos Basicos

¿Con qué tipo de instrucciones puedo almacenar un valor en una celda?Vía sentencia de lectura y por sentencia de asignación (instrucción aritmética).

32

Page 33: JV Conceptos Basicos

Estructuras para el Diseño de Algoritmos1.Secuénciales (lineales).2.Condicionales (toma de decisiones).3.Repetitivas (cíclicas)

33

Page 34: JV Conceptos Basicos

ALGORITMO PARA LA SUMA DE DOS NÚMEROSESTRUCTURA SECUENCIAL

DIAGRAMA DE FLUJO

34

INICIO

real num1, num2, suma

num1, num2

Suma = num1 + num2

Suma

FIN

Page 35: JV Conceptos Basicos

ALGORITMO PARA LA SUMA DE DOS NÚMEROS

ESTRUCTURA SECUENCIAL

PSEUDOCODIGO

iniciodeclarar

real: num1, num2, suma

leer num1

leer num2suma= num1 + num2escribir suma

fin

35

Page 36: JV Conceptos Basicos

MEMORIA PRIMARIA

0 1 2Inicio Declarar num1, num2,

suma como realLeer num1

3 4 5Leer num2 Suma = num1+ num2 Escribir suma

6 num1 7 num2 8Fin 7 4

suma 9 10 1111

36

Dirección

Contenido

Celda o localidad de memoria

Page 37: JV Conceptos Basicos

¿Qué es un Programa?Es una serie de instrucciones o sentencias ejecutadas de forma lógica, exenta de ambigüedades, para resolver un

problema y para escribir las instrucciones se pueden usar cualquiera de los siguientes lenguajes de alto nivel

LENGUAJESFortran PROG.FOR

Cobol PROG.CBL

Basic PROG.BAS

Pascal PROG.PAS

C PROG.C

C++ PROG.CPP

JAVA PROG.JAVA

37

Page 38: JV Conceptos Basicos

UNIDAD IVENTIDADES PRIMITIVAS PARA LA

CONSTRUCCIÓN DE INSTRUCCIONES

Tipos de instrucciones o Sentencias Para Construir Programas1) Lectura de datos (entrada)2) Escritura de datos (salida)3) Procesamiento (instrucciones aritméticas, sentencia de asignación)4) Estructuras de Control

a. Condicionales (toma de decisiones)b. Repetitivas (cíclicas)

38

Page 39: JV Conceptos Basicos

Instrucciones Aritméticas

Variable = expresión aritmética

Signo de asignación

En una instrucción aritmética se ejecutan los cálculos indicados en la expresión aritmética, 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 Aritméticos

Elementos de Variableslas instruccionesAritméticas Constantes Funciones matemáticas

¿Que es una variable?Una variable es un espacio (Celda de Memoria que podemos reservar) al cual se le puede

asignar diferentes valores según nos convenga pero uno a la vez.

En nuestro curso utilizaremos cuatro tipos básicos de variables: numéricas, caracteres, cadenas y lógicas (boleanas) más adelante veremos sus características.

Piensa que según que tipo de lenguaje estemos utilizando para implementar nuestro código pueden existir muchos tipos de variables diferentes.

Reglas para construir con propiedad nombres de variables1. Deberán usarse caracteres alfanuméricos.2. Deberá comenzar con una letra minúscula ó un guión bajo ( _ ) ó signo de pesos (

$ ).3. Deberá contener no mas de 65536 caracteres.4. Deberá usar nombres de variables que indiquen la tarea de la variable en el

programa.

39

Page 40: JV Conceptos Basicos

Precedencia o jerarquía de los operadores aritméticos

OPERADORES ARITMÉTICOS

PRECEDENCIA

- monario 1ra

* / % 2da

+ - 3ra

= 4ta

La Precedencia, es el orden en el que se ejecutan los cálculos, en una expresión aritmética.

Los operándos pueden ser variables y constantes.Los operándos son separados por operadores aritméticos.

40

Page 41: JV Conceptos Basicos

REGLAS PARA USAR LOS OPERADORES ARITMÉTICOS.1. Cuando dos operadores tienen la misma precedencia, se ejecuta primero el que este

más cerca del signo igual.2. Cuando dos operándos son del mismo tipo, la operación se hará de acuerdo al tipo

de operándos. Es decir, si los operándos son enteros, la operación será entera y es consecuencia

si con reales, la operación será real.

3. Cuando los operándos son de diferente tipo, la operación se hará de acuerdo al tipo de la variable que ocupe más bytes de memoria.

4. Para modificar el tipo de la operación se usará el modo cast (el molde para modificar el tipo de operación) no modificando el tipo de los datos

5. Los paréntesis rompen la precedencia de los operadores.6. Los paréntesis se ejecutan iniciando desde el más interno y el que este más cerca del

signo igual.

41

Page 42: JV Conceptos Basicos

OPERADORES ARITMÉTICOS DE ASIGNACIÓN .

+ = a = a + 8; a + = 8;- = b = b – 9; b - = 9;* = p = p * (n-3); p * = (n-3);/ = z = z / 10; z / = 10;% = r = r % 5; r %= 5;

OPERADORES MONARIOS ARITMÉTICOS.

Incremento: ++cont = cont + 1;

cont ++;++cont;

Decremento: - -cont = cont – 1;

--cont;cont - -;

42

Page 43: JV Conceptos Basicos

Tipos de Datos Primitivos

Entero Numéricos Real

Datos Carácter

Booleano (Lógico)

43

Page 44: JV Conceptos Basicos

ESTRUCTURAS CONDICIONALESSe usa una estructura condicional para modificar el flujo del

procesamiento de un programa de acuerdo al valor falso o verdadero de la condición.

UNA RAMA SIMPLE

DOS RAMAS

ANIDADAS

ESTRUCTURAS

CONDICIONALES SIMPLE CONDICION COMPUESTA

ANIDADAS

SELECCIÓN MULTIPLE

44

Page 45: JV Conceptos Basicos

Estructuras Condicionales Simples

V F V F

UNA RAMA DOS RAMAS

if (condición) if (condición) Sentencia 1; Sentencia 1;

Sentencia 2; else Sentencia 2;

Sentencia 3;

if (condición) if (condición) { Sentencia 1; Sentencia 1; else

Sentencia 2; {Sentencia 3; Sentencia 2;

} Sentencia 3; Sentencia 4; }

Sentencia 4;

45

Condición

Sent 1

Condición

Sent 2Sent 1

Sent 2 Sent 3

Page 46: JV Conceptos Basicos

Condición

Operando1 Operador de relación Operando 2

Operando Operadores de Relación

Constantes (8 > 3) > Variables (T != 20) < Expresiones >=

Aritméticas (Q–3 = = P*Q-8) <== = != (DIFERENTE)

Combinaciones de operándos para construir condiciones

Variable <Operador de Relación > ConstanteVariable <Operador de Relación > VariableVariable <Operador de Relación > Expresión Aritmética

Expresión Aritmética <Operador de Relación > Constante Expresión Aritmética <Operador de Relación > VariableExpresión Aritmética <Operador de Relación > Expresión Aritmética

46

Page 47: JV Conceptos Basicos

Estructuras Condicionales Anidadas

If (Cond1) If (Cond2 )

If (Cond3) Sent1

ElseSent2

ElseIf Cond4

Sent3Else

Sent4Else

Sent5Sent6

47

Cond1

Cond2

Cond3

Cond4

Sent1 Sent4Sent3Sent2

Sent5

Sent6

Page 48: JV Conceptos Basicos

CONDICIÓN COMPUESTA.Es la unión de dos o más condiciones a través operador es

lógicos

Condición 1 [Operador lógico] Condición 2

Operador lógico Símbolos precedencia No ! 1°Y && 2°O || 3°

48

Page 49: JV Conceptos Basicos

TABLA DE VERDADPara los Valores de las Condiciones Compuestas

C1 C2 C1&&C2 C1| |C2 !C1 !C2

V V V V F FV F F V F VF V F V V FF F F F V V

En consecuencia, se construirá una condición 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 lógica del programa.

2. El operador O (||) cuando una condición 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 lógica del programa.

49

Page 50: JV Conceptos Basicos

Estructuras Condicionales de Selección MultipleLas estructuras de selección multiple están controladas por

variables selectoras. Para que ejecute una rama de la estructura de selección múltiple, el valor de la variable selectora debe ser exactamente igual al valor de la etiqueta de esa rama. Si ningún valor de las etiquetas es igual al valor actual de la variable selectora, se ejecutara la rama de falso. En la estructura de selección múltiple puede o no usarse la rama de falso. Toda variable selectora puede ser únicamente del tipo entero o tipo carácter.

Etiq 2 Etiq 3 Etiq 4 Etiq 5 Etiq 6 Etiq 7 Falso

Variable selectora es de tipo ordinal y puede ser:

Dato tipo entero Dato tipo carácter

50

Inicio

Variable selectora

int o char, variable selectora

Variable selectora

Sent1 Sent2 Sent3 Sent4 Sent6 Sent7 errorSent5

fin

Page 51: JV Conceptos Basicos

UNIDAD IVESTRUCTURAS REPETITIVAS.

(CICLOS, BUCLES, RIZOS)

Un ciclo en programación, es segmento de código que se ejecuta más de una vez repetidamente.

Las estructuras cíclicas que existen son:1. While2. Do-while3. For

Para el control de un ciclo durante su ejecución existen dos técnicas:1. Por tarea de valor límite.2. Por centinela ó bandera.

Se dice que un ciclo está controlado por técnica por tarea cuando se conoce de antemano el número de veces que el ciclo se ejecutará.

Se dice que un ciclo está controlado por técnica por centinela cuando NO se conoce de antemano el número de veces que el ciclo se ejecutará.

Existen también ciclos que son controlados por la combinación de la técnica por tarea y por la técnica por centinela. Normalmente se combinan estas técnicas para hacer más eficiente la ejecución del

programa.

51

Page 52: JV Conceptos Basicos

ESTRUCTURA WHILE .

CARACTERÍSTICAS:1. La condición va al principio del cuerpo del ciclo.2. Existe la posibilidad de que NO se ejecute ninguna vez el

cuerpo del ciclo.

52

INICIO

Cont = 1

Cont < =3

“Hola”

Cont ++

Fin

Tarea a realizar en el ciclo

Actualización o modificación de la variable que controla el ciclo.

Valor Límite

Condición del control del ciclo

Inicialización de la variable que controla el ciclo (antes del ciclo)

Variable de control del ciclo

Cuer-po del ciclo

V F

Page 53: JV Conceptos Basicos

ESTRUCTURA DO WHILE.

CARACTERÍSTICAS:1. La condición va al final del cuerpo del ciclo.2. Existe la posibilidad de 1que se ejecute al menos una vez el

cuerpo del ciclo.

53

Inicio

Cont =1

“Hola”

Cont = Cont +1

Cont < =3

Fin V

F

Page 54: JV Conceptos Basicos

Técnicas en las que se sugiere se use la estructura do while

1. Técnica de validación a. Sin mensajeb. Con mensaje

Validar significa aceptar durante el proceso de lectura

solamente valores en un intervalo dado (Caso 1) o valores específicos (Caso 2).

Para el primer caso:

Aceptar solamente valores de calificaciones en el intervalo 0 a 100 en una variable de tipo entero.

Para el segundo caso:

El aceptar solamente el carácter ´s´ o el carácter ´n´ en una variable tipo caracter.

2. Técnica de repetición de un programa o de un método

54

Page 55: JV Conceptos Basicos

Técnica de validación sin mensaje

Ejemplo: Validar una calificación en el intervalo de 0 a 100 durante un proceso de lectura.

HazLeer Calificación

Mientras que (Calificación < 0 o Calificación >100)

55

Calif

Calif<0 o Calif>100

V F

Page 56: JV Conceptos Basicos

Técnica de validación con mensaje

HazLeer calificaciónSi (calificación < 0 o calificación >100)

Escribir (“Calificación no valida debe ser de 0 a 100”)Mientras que (calificación < 0 o calificación >100 )

56

Calif<0 o Calif>100

V F

Calif<0 o Calif>100 Mensaje

Calif

V

F

Page 57: JV Conceptos Basicos

Técnica de validación sin mensajeEjemplo: Validar que como respuesta reciba una s o una n.

HazLeer respuesta

Mientras que (respuesta != ‘s’ y respuesta !=’n’)

57

Resp

Resp!= ’s’ y Resp!= ’n’

V F

Page 58: JV Conceptos Basicos

Técnica de validación con mensaje

HazLeer respuestaSi (respuesta != ‘s’ y respuesta !=’n’))

Escribir (“respuesta debe ser ‘s’ o ’n’ “)Mientras que (respuesta != ‘s’ y respuesta !=’n’)

58

Resp!= ’s’ y Resp !=’n’

V F

Resp != ’s’ y Resp != ’n’Mensaje

Resp

V

F

Page 59: JV Conceptos Basicos

Técnica de repetición de la ejecuciónde un programa o de un método

Haz // Repetición de programa{CUERPO DEL PROGRAMA}Haz // Validación de respuesta

Leer respuestaSi (respuesta != ‘s’ o respuesta !=’n’))

Escribir (“respuesta debe ser ‘s’ o ’n’ “)Mientras que (respuesta != ‘s’ o respuesta !=’n’)

59

Resp ==’s’

V F

CUERPO DEL PROGRAMA

Resp

Page 60: JV Conceptos Basicos

Mientras que (respuesta == ‘s’ )

60

Page 61: JV Conceptos Basicos

ESTRUCTURA FOR.

Inicio

Cont=0

Cont<n

Cont= Cont+1

“Hola”

CARACTERÍSTICAS:1. El ciclo for es el ciclo while con técnica por tarea.2. El ciclo for contiene en forma empaquetada las tres

sentencias básicas que sirven para la ejecución del ciclo.

3. Comúnmente se usa cuando se realizan ciclos en los que se aplican la técnica por tarea.

61

n

Fin

V

F

Page 62: JV Conceptos Basicos

TÉCNICAS PARA EL CONTROL DE CICLOS.

1. Por Tarea (valor límite)2. Por Centinela (Bandera)3. Por combinación de ambas

Se usa la técnica para el control de un ciclo por tarea cuando se sabe a priori el número de veces que se va a ejecutar el ciclo.

Se usa una técnica para controlar el ciclo por centinela cuando desconozco desde antes el número de veces que se ejecutará el ciclo.

Se usa una estructura while cuando existe una posibilidad dentro de la lógica 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 condición dada y dependiendo del valor de la variable Centinela ó Bandera se decidirá cual rama de esa condición debe ejecutarse.

- Toda variable Centinela ó Bandera debe ser de tipo lógico 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.

62

Page 63: JV Conceptos Basicos

CICLOS ANIDADOS.

63

INICIO

n

n < 1

Cont = 0

“Hola”

Cont = Cont + 1

cont < n

Resp

Resp!=’s’&&Resp!=’n’

Resp = = ‘s’

Fin

Page 64: JV Conceptos Basicos

ARREGLOSDiseñar un programa que capture una colección de calificaciones, calcule el promedio así como contabilice el número de calificaciones que se encuentren arriba del promedio, el número de calificaciones abajo del promedio y el número que se sean iguales al promedio.

Calcular también los porcentajes de esas estadísticas, así como validar la calificación.

Se usan arreglos cuando se necesita acceder nuevamente a los datos. Manipular más de una vez a una colección de datos.

Un arreglo es una colección de datos del mismo tipo identificados bajo un mismo nombre de variable

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

posición del elemento en el arreglo 3. A la posición 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 expresión aritmética.

4. Todo arreglo tendrá un tamaño físico (MX), el cual indica el numero máximo de elementos que se podrán almacenar en ese momento en el arreglo

a0

a1

a2

a3

a4

a5

a6

a7

a8

5. También tendrá un tamaño lógico (tam) el cual indica el número de elementos actualmente almacenados. En consecuencia el tamaño lógico jamás deberá ser mayor al tamaño físico y si así fuere provocaría una interrupción anormal del programa.

64

MX = 9

Page 65: JV Conceptos Basicos

1.- TIPOS DE ARREGLOS CON RESPECTO A DIMENSIONES 1.1 unidimensionales1.2 bidimensionales1.3 tridimensionales

..

.

.1.4 n – dimensionales

2.- TIPOS DE ARREGLOS CON RESPECTO A LA CONCURRENCIA 2.1 Únicos2.2 Paralelos

3.- TIPOS DE ARREGLOS RESPECTO A TIPOS DE DATOS3.1 Numéricos

3.1.1 Enterosbyte

short

int

long

3.1.2 Realesfloat

double

3.2 Caractereschar

3.3 CadenasString

4.- TIPOS DE ARREGLOS CON RESPECTO A OCURRENCIAS (APARICIONES)4.2 Con datos repetidos4.2 Sin datos repetidos

5.- TIPOS DE ARREGLOS CON RESPECTO A ORDENAMIENTO5.1 Sin datos ordenados5.2 Con datos ordenados

65

Page 66: JV Conceptos Basicos

OPERACIONES BASICAS CON ARREGLOS1. Lectura2. Escritura3. Asignación4. Búsqueda5. Inserción6. Eliminación7. Actualización8. Ordenamiento

66

Page 67: JV Conceptos Basicos

UNIDAD VII

PROGRAMACION MODULAR

Un Modulo es un segmento de código que realiza una tarea especifica.

Al programar con módulos se usa la técnica divide y vencerás.

Los módulos pueden ser, genéricamente hablando: Módulos de Lectura (Capturar). Módulos de Escritura (Mostrar). Módulos de Cálculos. Módulos de Procesamiento.

67

Page 68: JV Conceptos Basicos

UNIDAD V

LENGUAJE DE PROGRAMACIÓN JAVA

Un programa tiene que escribirse en un lenguaje entendible por la computadora el cual se llama lenguaje ensamblador (lenguaje maquina) escrito en ceros y unos pero esta operación es demasiado laboriosa, compleja y tediosa. Por lo que se crearon lenguajes de alto nivel más cercanos al entendimiento humano tales como:

Fortran PROG.FOR

Cobol PROG.CBL

Basic PROG.BAS

Pascal PROG.PAS

C PROG.C

C++ PROG.CPP

JAVA PROG.JAVA

68

Page 69: JV Conceptos Basicos

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 intérpretes o compiladores. Existiendo entre ellos diferencias.Un interprete no genera un programa escrito en lenguaje maquina sino que traduce en ese momento la instrucción que se va a ejecutar. Este proceso hace que la ejecución sea lenta pero tiene la ventaja que el interprete es mas pequeño que un compilador.

En consecuencia, un compilador traduce el

.

Programa fuente en un programa ejecutable

69

Programa escrito en un lenguaje de

alto nivelCompilador

Programa escrito en lenguaje maquina

Page 70: JV Conceptos Basicos

¿Que es JAVA?JAVA lenguaje de programación de alto nivel con el que se pueden escribir tanto programas convencionales como programas para Internet.

Es un lenguaje con las siguientes características:1. Interpretado2. Sencillo3. Orientado a objetos4. Distribuido5. Robusto6. Seguro7. Arquitectura neutra8. Alto rendimiento9. Multihilo10. Dinámico

70

Page 71: JV Conceptos Basicos

Java, desarrollado por Sun Microsystems en 1995, es un magnifico y completo lenguaje de programación orientado a objetos, diseñado para distribuir contenidos a través de la red.Permite operar de forma independiente de la plataforma de hardware o de software. Al contrario de todo programa o aplicación que queda atado al hardware y al sistema operativo. Por ejemplos:

Una aplicación de WINDOWS solo funcionará en plataforma WINTEL (Windows y procesador Intel).

Una aplicación creada para MAC solo funcionará para la plataforma MAC OS o IMAC.

Una aplicación creada para UNIX solo funcionará para la plataforma UNIX. Etc.

71

Page 72: JV Conceptos Basicos

JAVA, por el contrario es poner una capa sobre cualquier plataforma de hardware y sobre cualquier sistema operativo que permite que cualquier aplicación desarrollada por JAVA quede ligada a JAVA independiente mente de la plataforma. Esta concepción 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 aplicación pueda funcionar en un PC o una MAC sin tener que hacer algún ajuste software.Así, lo que hace JAVA en combinación 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 abstracción entre el PROGRAMA y el SISTEMA OPERATIVO, otorgando una total independencia de lo que haya por debajo.

Es decir, cualquier aplicación funcionará en cualquier máquina e incluso en cualquier dispositivo.

Una de las ventajas de JAVA sobre otros lenguajes de programación es independiente de la plataforma tanto en código fuente como en binario.

Esto quiere decir que el código producido por el traductor de JAVA puede transportarse a cualquier plataforma (INTEL, SPARC, MOTOROLA, Etc.) que tenga instalada una maquina virtual java y ejecutarse.

72

Page 73: JV Conceptos Basicos

JAVA es lo más cercano a un lenguaje a un LENGUAJE de COMPUTACÒN UNIVERSAL.

73

Page 74: JV Conceptos Basicos

Según lo expuesto, Java incluye dos elementos: un Compilador y un Intérprete. El Compilador produce un código de bytes ( BYTECODE), escrito en UNICODE, que se almacena en un archivo para ser ejecutado por el Intérprete JAVA denominado maquina virtual de JAVA.

74

Programa escrito en

JAVA

Código en Bytes

ByteCode

Compilador Maquina Virtual JAVA

Page 75: JV Conceptos Basicos

Para facilitar el diseño del programa se usan Entornos de Desarrollo Integrados (Integrated Development Environment,

IDE) como NetBeans, JCreator o Jgrasp.Básicamente, todo Entorno de Desarrollo Integrado contiene: Editor Compilador o Interprete Analizador Sintáctico Ayuda

¿Por que JAVA es importante para INTERNET ?INTERNET ha ayudado a posicionar a JAVA en la cima del mundo de la programación y a su vez JAVA ha tenido un profundo impacto en INTERNET.La razón 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 categorías de objetos que se transmiten entre las computadoras conectadas:

Información PASIVA. Ejemplo, los correos electrónicos. Información DINÀMICA. Ejemplo programas auto ejecutables

que son agentes activos en la computadora cliente.

Estos PROGRAMAS DINÀMICOS 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 APLICACIÒN 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.

75

Page 76: JV Conceptos Basicos

Un APPLET es una aplicación diseñada para ser transmitida por INTERNET y ejecutada por un NAVEGADOR WEB compatible con JAVA. Un APPLET es un pequeño programa JAVA, descargado dinámicamente por la red, tal como una IMAGEN, un archivo MUSICAL, o un VIDEOCLIP que es un programa inteligente que reacciona dinámicamente a entradas y cambios de usuario.

En conclusion, la ejecución de programas en Java tiene muchas posibilidades:

1. Ejecución como aplicación independiente (Stand-alone Application).

2. La ejecución como applet,3. La ejecución como servlet, etc.

La ejecución como aplicación independiente es análoga a los programas desarrollados con otros lenguajes.Un applet es una aplicación especial que se ejecuta dentro de un navegador o browser (por ejemplo Netscape Navigator o Internet Explorer) al cargar una página HTML desde un servidor Web. El applet se descarga desde el servidor y no requiere instalación en el ordenador donde se encuentra el browser. Un servlet es una aplicación sin interface gráfica que se ejecuta en un servidor de Internet.

76

Page 77: JV Conceptos Basicos

JAVA como lenguaje de ITERNET

77

Computadora Local

Navegador JAVA

JAVAVirtual

Machine

Código nativo de JAVA

Sistema Operativo

Computador Servidor

Page 78: JV Conceptos Basicos

Terminología en JAVAJVM Java Virtual machine

JDK Java Development Kit, viene incluido con él, paquetes de librerías que contienen miles de clases.

SDK Software Development Kit, contiene: Las clases que se requieren para desarrollar programas JAVA Herramientas de compilación, ejecución y depuración de código.

SDK Software Development Kit, viene con: Un compilador controlado por línea de ordenes (JAVAC) Una copia de JVM, el motor que corre códigos 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 convirtiéndolo en ejecutable.

La principal ventaja de SDK es su carácter gratuito, autorizado y actualizado. Su principal desventaja es que proporciona sólo herramientas de desarrollo estilo línea de órdenes en

vez de un entorno gráfico de programa visual.El lenguaje evoluciona rápidamente 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.comwww.javasoft.com

78

Page 79: JV Conceptos Basicos

ESQUEMA UML BASICO DE UNA CLASE

Acceso a una propiedadAcceso es una característica de los atributos, propiedades (variables) de una clase. Esa

característica permite acceder, usar, o modificar el valor almacenada en su respectiva celda de memoria.

Acceso a un métodoAcceso es una característica de los métodos que permite o no acceder, invocar o

llamar a ejecutar un método de un objeto a través de otros objetos, vía envío de mensajes.

79

[<Acceso> ] <Nombre de la clase>

Métodos de Instancia< Acceso 1 >< Nombre del método 1 >( argumentos): valor de retorno >< Acceso 2 > < Nombre del método 2 >( argumentos): valor de retorno >

……………< Acceso 3 > < Nombre del método 3>( argumentos): valor de retorno >

Declaración de variables de instancia< Acceso 1 > <Tipo 1> < Nombre de la variable 1 >;< Acceso 2 > <Tipo 2> < Nombre de la variable 2 >;

……………………..< Acceso n > <Tipo n> < Nombre de la variable n >;

Page 80: JV Conceptos Basicos

Tipos de Accesos:1. Privado (-) private

Un miembro de una clase declarado privado puede ser accedido por un objeto de esa clase sólo desde los métodos de esa clase. Esto significa que no puede ser accedido por los métodos de cualquier otra clase, incluidas las subclases.

2. Publico (+) publicUn miembro de una clase declarado público puede ser accedido por un objeto de

esa clase en cualquier parte de la aplicación donde el objeto en cuestión sea accesible.

3. Protegido ( ) protectedUn miembro de una clase declarado protegido se comporta exactamente igual

que uno privado para los métodos de cualquier otra clase, excepto para los métodos 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 público.

4. Por defecto ( ) Un miembro de una clase declarado por defecto se comporta exactamente igual

que uno privado para los métodos de cualquier otra clase, excepto para los métodos de las clases del mismo paquete.

Derechos de acceso entre clases

Restricciones Esta Clase Subclases Paquete Generalpublic si si si siprotected si si si noprivate si no no nopor defecto si no si no

80

Page 81: JV Conceptos Basicos

Definición de una Clase[<Acceso>] class CUnaClase

{ Declaración de Variables de instancia

< acceso > <tipo_1> variable_1 ;< acceso > <tipo_2> variable_2;. .. .< acceso > <tipo_n> variable_n ;Definición de los métodos de instancia< acceso > <valor de retorno> método_1 (parámetros)

{Declaración de variables locales

Código del método_1

}

< acceso > <valor de retorno> método_2 (parámetros )

{Declaración de variables locales

Código del método_2

} . .. .

< acceso > <valor de retorno> método_n (parámetros)

{Declaración de variables locales

Código del método _n

}}

81

Page 82: JV Conceptos Basicos

ESTRUCTURA DE UN PROGRAMA EN JAVAEl programa realiza la suma de dos números

/* * Programa No. 1 * Suma de dos Números Diseñado por José María Francisco Cabrera Gutiérrez Instituto Tecnólogico de león Ingeniería en Sistemas Computacionales

Asesor José María Francisco Cabrera Gutiérrez león, Gto. a 23 de Febrero de 2010 * * * >>>> Algoritmo <<<<< * * INICIO * Declarar * real num1, num2, suma * * leer num1, num2 * suma = num1 + num2 * escribir suma * FIN * * >>>>> Esquema UML de la clase * * clase CSuma * * //Atributos * - real num1 * - real num2 * - real suma * * //Costructores * + CSuma()// Por defecto * + CSuma( real n1, real n2) * * // Método de la clase * + vacio sumar() * * // Métodos de asignacion * + vacio asignarNum1(real n1) * + vacio asignarNum2(real n2) *

82

Page 83: JV Conceptos Basicos

* // Método 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; } // Método de la clase public void sumar(){ suma = num1 + num2; } // Métodos de asignacion public void asignarNum1(double n1){ num1=n1;

} public void asignarNum2(double n2){ num2=n2;

} // Método de obtencion() public double obtenerSuma(){ return suma; }

}// Fin de la clase CSuma

83

Page 84: JV Conceptos Basicos

El código de esta clase deberá ser almacenado en el archivo CSumaDosNums.java

84

Page 85: JV Conceptos Basicos

Definición de la Clase de prueba[<Acceso>] class Clase Prueba

{ public static void main(String[] argumentos) { Instanciar las clases creando los objetos

Declaración de variables locales

Invocación a los métodos (envío de mensajes)

[ variable = ] objeto. método_1 (parámetros);[ variable = ] objeto. método_2 (parámetros);[ variable = ] objeto. método_3 (parámetros);

. .

. .

. .

. .[ variable= ] objeto. método_n (parámetros)

}

}

85

Page 86: JV Conceptos Basicos

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 método operacion.asignarNum2(num2);// Mensaje al objeto operacion para que ejecute el método operacion.sumar();// Mensaje al objeto operacion para que ejecute el método

suma = operacion.obtenerSuma();// Mensaje al objeto operacion para que ejecute el método escribir( num1 + “ + “ + num2 + “ = “ + suma);

}//Fin del main()

86

Page 87: JV Conceptos Basicos

public static String leer (String msj){// Método 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){// Método escribir el contenido de la cadena msj System.out.println(“\n\t” + msj); }

}

El código de esta clase deberá ser almacenado en el archivo SumaDosNums.java

87

Page 88: JV Conceptos Basicos

import java.util.Scanner;class SumaDosNumsOtra{// Otra 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”); 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 método suma = operacion.obtenerSuma();// Mensaje al objeto operacion para que ejecute el método escribir( num1 + “ + “ + num2 + “ = “ + suma);

}//Fin del main()

88

Page 89: JV Conceptos Basicos

public static String leer (String msj){// Método 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){// Método escribir el contenido de la cadena msj System.out.println(“\n\t” + msj); }

}

El código de esta clase deberá ser almacenado en el archivo SumaDosNumsOtra.java

89

Page 90: JV Conceptos Basicos

Teoría sobre métodos y otros conceptos.

1. Al diseñar una clase, ésta solamente debe contener los métodos se refieren a:

i. Cálculos aritméticosii. Procesos para manipular datos tales como:

a. Búsquedasb. Actualizacionesc. Insercionesd. Eliminacionese. Ordenamientos, etc.

2. Los métodos de lectura o escritura de atributos (datos) deben implementarse en la clase de prueba. No olvidar que la clase de prueba es usualmente, lo que conocemos como programa en cualquier otro lenguaje.

3. Los métodos para ejecutarse, deben formar parte de un objeto (métodos de instancia) o pertenecen a una clase (métodos de clase).

4. Un método de instancia en aquel que solamente se puede invocar, llamar o usar a través de un objeto de la clase que contiene ese método.

Ejemplos: operacion.asignarNum1(), operación.asignarNum2(), operacion.obtenerSuma(), operacion.sumar(), etc.

90

Page 91: JV Conceptos Basicos

5. Un método de clase es aquel que se puede invocar, llamar o usar a través de la clase sin necesidad de instanciarla es decir crear un objeto.

Ejemplos: Double.parseDouble(),

Math.pow(), etc.

6. Para identificar si método es de clase, en la  definición del método debe estar precedido por la palabra reservada static. Los métodos de instancia no contienen en su definición la palabra reservada static.

7. No existen métodos “huérfanos” es decir, que se llamen, invoquen o usen sin pertenecer a una clase.

8. Los métodos deben formar parte de un objeto (métodos de instancia) o pertenecen a una clase (métodos de clase).

9. La única excepción son los métodos estáticos que se hayan en la clase de prueba que para invocarse, para llamarse o para usarse no están precedidos por un objeto o una clase.

10. Todas las clases deben iniciar con mayúscula y los atributos, objetos y métodos en minúsculas.

91

Page 92: JV Conceptos Basicos

Para una mejor asesoría por Internet

Con el propósito de poder asesorarlos más eficientemente, solamente arreglaré aquellos programas que cumplan con los

siguientes requisitos:Al principio de la clase diseñada, deberá contener

1. Número de programa:2. El enunciado del programa.3. Diseñado por4. Materia5. Grupo6. Asesor Ing. José María Francisco Cabrera Gutiérrez7. Fecha

Ejemplo:

/*Programa No. 3

Enunciado:En una compañía pagan a los empleados de acuerdo a las

horas trabajadas por semana y reciben un incremento de 0.35% del pago semanal por cada año de antigüedad. Diseñar un programa que lea las horas trabajadas por semana, el pago por hora y los años trabajados, calcular y mostrar el pago semanal con y sin incremento.

Diseñado por: Juan Compilador del AlgoritmoMateria Fundamentos de Programación Grupo CAsesor: Ing. José María Francisco Cabrera GutiérrezLeón, Gto. A 13 de octubre de 2008

*/

92

Page 93: JV Conceptos Basicos

Esquema para probar una clase diseñada

93

Clase diseñada

Clase de Prueba

Mensajes

Page 94: JV Conceptos Basicos

94

Page 95: JV Conceptos Basicos

Objeto 1

Mensajes

Objeto 2Esquema de un programa de aplicación con los Objetos que usa para su

implementación

95

Métodos

Atributos

Métodos

Atributos

Page 96: JV Conceptos Basicos

96

objeto_1= New CClase_1( )

objeto_2= New CClase_2( )

objeto_3= New CClase_3( )

objeto_4= New CClase_4( )

ProgramaDe

Aplicación

Page 97: JV Conceptos Basicos

97

Page 98: JV Conceptos Basicos

Secuencias de escape

Secuencia ASCII Definición\n CR+LF Línea nueva\t HT Tabulador horizontal

\b BS Retroceso\r CR Retorno de Carro\f FF Alimentación pagina

\a BEL Alerta, pitido\’ Comilla simple\” Comilla doble

98

Page 99: JV Conceptos Basicos

Palabras reservadas en JAVA

abstract else intstatic boolean extendsinterface strictfp breakfalse long superbyte final nativesynchronized switch newfinally case floatnull this castfor operador throwmatch future outerthrows generic charpackage transient classgoto private trueconst protected iftry continue publicimplements default varimport return voiddo inner restvolatile double shortinstanceof widefp while

99

Page 100: JV Conceptos Basicos

COMENTARIOSHay dos formatos para escribir comentarios

Comentario en una sola línea //Ejemplo:

// Este es un comentario en una linea

Comentarios en varias líneas /*...*/Ejemplo:

/* Instituto Tecnológico de León

Programa ......

Enunciado .....

Diseñado por ....

Materia ...

Grupo ....

Carrera ...

Semestre .....

Asesorado por ....

Fecha ....

*/

100

Page 101: JV Conceptos Basicos

Signos de puntuación y separadores

! % $ & * ( ) - + = { } ^| [ ] \ ; ‘ _ < > ? , . /“

101

Page 102: JV Conceptos Basicos

PaquetesUn paquete es un conjunto de clases, lógicamente 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 información. Incluso un paquete puede contener otros paquetes.

102

Java

io

util

applet

net

awt

Predeterminado

Otros paquetes

lang

Page 103: JV Conceptos Basicos

El paquete java.lang contiene las clases que son el núcleo de java. 1. System2. String3. Integer4. Math5. Etc.

El paquete java.io contiene las clases que son usadas para entrada y salida. 1. BufferedReader2. InputStreamReader3. FileInputStream4. FileOutputStream5. etc.

El paquete java.util guarda diversas clases de utilidad.1. Date2. Random3. StringTockenizer4. Scanner5. etc.

El paquete java.applet suministra clases para crear applets.El paquete java.awt suministra clases para interfaces gráficos.

103

Page 104: JV Conceptos Basicos

La declaración importCon esta declaración se especifican las clases de los paquetes que van a utilizar en un

programa.La declaración tiene dos formatos:

import nombrePaquete.nombreClase;Especifica la clase que se va a utilizar.

import nombrePaquete.*;Especifica que están disponibles todas las clases del paquete.

Al incorporar las clases de más de un paquete puede ocurrir que haya nombres de clases iguales; para que no haya ambigüedad, hay que preceder el nombre de la del

paquete al nombre de la clase. Por ejemplo si hubiera alguna colisión con la clase Random, para crear un objeto se

escribirá:Java.util.Random aleatorio = new java.util.Random();

104

Page 105: JV Conceptos Basicos

Protección de una claseLa protección de una clase determina la relación que tiene con otras clases de otros

paquetes. Niveles de protección:

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 métodos.Por omisión una clase tiene nivel de paquete y si se desea que tenga el nivel público

debe calificarse la clase anteponiéndole 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 primitivostipos referenciados

Tipos primitivos Tipos numéricos

Tipos enteros

byte (1 byte)

short ( 2 bytes)

int (4 bytes)

long ( 8 bytes)

char (2 bytes)Tipos reales

float ( 4 bytes)

double ( 8 bytes)Tipo Boolean (lógico)

105

Page 106: JV Conceptos Basicos

Tipo Tamaño en

bytes

Rango

(mínimos...máximos)

Precisión en

dígitos

char 2 0 a 216- 1

byte 1 -27 a +27-1

short 2 -215 a +215-1

int 4 -231 a +231-1

long 8 -263 a +263-1

float 4 +-3.4 x10 +-38 a +- 3.4x10+-38 De 5 a 6

double 8 +-1.7 x10 +-308 a +- 1.7x10+-308 De 15 a 16

boolean 1 bit false o true

CONVERSION ENTRE TIPOS DE DATOS

106

byte short

int long float double

char

Expansión

Contracción

Page 107: JV Conceptos Basicos

Ámbito o Alcance de una variable

El ámbito o alcance de una variable es el segmento de código donde una variable en visible, es decir la parte del programa donde la variable puede ser manipulada en una

sentencia a través de: 1. Usado el valor almacenado2. 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 método, para este caso son las variables locales que se declaran dentro del

método.3. Un bloque de código, para este caso son las variables que se declaran dentro de un

bloque el cual es especificado por llaves {}

Declaración de Constantes SimbólicasEjemplo 1:

final static PI= 3.141592654;Sí la constante PI es declarada dentro de la clase y podrá ser vista (usada) por

cualquier método.

Ejemplo 2:Final ACELERACIONGRAVEDAD = 9.8;

Sí la constante es usada solamente dentro del método que fue declarada y nunca dentro de otro método.

En consecuencia no deberá incluirse la palabra reservada static.

107

Page 108: JV Conceptos Basicos

Modificador StaticEn java existen dos tipos de métodos:

1. Métodos de InstanciaPara ser usados debe de instanciarse la clase, crear el objeto

para que a través de él se usen los métodos.

2. Métodos de ClasePara ser usados no se requiere instanciar la clase y en

consecuencia no se encuentra asociado a ningún objeto.

Fragmento de código que usa ambos tipos de métodosString cad = new String (“Se inicializa la cadena con este texto”);// Invocación al método de instancia length() int n = cad.length();// Invocación del método de clase valueOf()String cadN= String.valoeOf(n);

108

Page 109: JV Conceptos Basicos

Así como existen métodos de clase existen constantes de clase y variables de clase.Definición de un método de clase:

< acceso> static <valor retorno> método (argumentos)

Definición de una constante de clase< acceso> static final <tipo dato> variable = valor;

Definición de una variable de clase< acceso> static <tipo dato> variable;

109

Page 110: JV Conceptos Basicos

Tipos referenciadosLas clases

Las interfaces

Los arreglos

110

Page 111: JV Conceptos Basicos

EXCEPCIONESEl lenguaje JAVA incorpora soporte para manejar situaciones anómalas, conocidas

como excepciones, que pueden ocurrir durante la ejecución de un programa.Con el sistema de manipulación de excepciones de JAVA, un programa puede

comunicar eventos inesperados a un contexto de ejecución más capacitado para responder a tales eventos anormales.

Estas excepciones son manejadas por códigos fuera del flujo normal del control del programa.

Las excepciones proporcionan una manera limpia de verificar errores; esto es, sin abarrotar el código básico de una aplicación. Es decir, sin afectar el código esencial

del programa que permite resolver un problema.El manejo de excepciones ofrece una forma de separar explícitamente el código que

maneja los errores del código básico de una aplicación, haciéndola más legible, lo que desemboca en un buen estilo de programación.

La sintaxis es como se presenta:try

{// Código de una aplicación

}

catch ( ClaseDeExcepcion e) {

// Código para el tratamiento de esta excepción

}

catch ( OtraClaseDeExcepcion e) {

// Código para el tratamiento de esta excepción

}...

catch ( AlgúnOtraClaseDeExcepcion e) {

// Código para el tratamiento de esta excepción

}

111

Page 112: JV Conceptos Basicos

Básicamente, el esquema anterior dice que sí el código de una aplicación no puede realizar una operación, se espera que lance una excepción que será tratada por el código correspondiente para esa clase de excepción, ó en su defecto por JAVA.

Algunas de las excepciones más comunes ArithmeticException

Una operación aritmética excepcional ha ocurrido. Por ejemplo una división por cero.

ArrayIndexOutOfBoundsExceptionUna matriz fue accedida con un índice ilegal, es decir fuera de los límites

permitidos.

NullPointerExceptionSe intentó utilizar la constante null donde se requería un objeto.

NumberFormatExceptionSe intentó convertir una cadena con caracteres diferentes a dígitos y/o punto

decimal en un número.

112

Page 113: JV Conceptos Basicos

¿Qué es lo que ocurrió entonces, cuando durante la ejecución de un programa se lanzó una excepción?

Lo más 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 excepción de la clase ArithmeticException y automáticamente JAVA crea un objeto de esta clase.

113

Page 114: JV Conceptos Basicos

Jerarquía de las clases de excepción que se haya en el paquete java.lang

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 aplicación normal no suele manipular este tipo de excepción.

La clase Exception conre las excepciones que una aplicación 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 aplicación. Son Excepciones que se lanzan durante la ejecución.

En contraposición a las que se lanzan por causas no dependientes de la maquina virtual de JAVA, como sucedería cuando no se pudiera leer de un fichero del disco.

114

Throwable

Exception

RuntimeException

ClassNotFoundException

IOException

EOFException

Error

Page 115: JV Conceptos Basicos

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 ejecución son excepciones implícitas y se corresponden con las subclases RuntimeException y Error. Se dice que son implícitas porque son lanzadas por la maquina virtual de JAVA y por lo tanto, los métodos implementados en las aplicaciones no tienen que declarar que las lanzan, y aunque lo hicieran, cualquier otro método 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 métodos implementados en las aplicaciones tienen que declarar que las lanzan y en este caso, cualquier otro método que los invoque está obligado en manejarlas.

El compilador Java nunca obliga a manejar una excepción de la clase ArithmeticException pero sí una excepción de la clase IOException.

Sí en una aplicación invocamos el método read() de la clase BufferedReader tiene la obligación de lanzar una excepción de la clase IOException.

115

Page 116: JV Conceptos Basicos

COMO MANEJAR EXCEPCIONES

Cuando un método se encuentra con

una anomalía que no puede resolver, lo lógico es que lance (throw) una excepción, esperando que quien lo llamó directa o indirectamente la captura (catch) y maneje esa

anomalía. Sí la excepción no se captura, el programa finalizará automáticamente. 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 método datoStr()

} // Fin de la clase Leer

116

Page 117: JV Conceptos Basicos

Las palabras try y catch trabajan conjuntamente y pueden traducirse así:Poner a prueba un segmento de código por si se lanzara una excepción:

Si se ejecuta satisfactoriamente seguir con la ejecución de la aplicación.

En caso contrarioCapturar la excepción lanzada y manejarla.

LANZAR UNA EXCEPCIONLanzar una excepción equivale a crear un objeto de la clase excepción para

manipularlo fuera del flujo normal de ejecución de la aplicación.

Para lanzar una excepción se utiliza la palabra throw y para crear un objeto, new. Por ejemplo, volviendo al método datoStr() de la clase Leer, sí ocurre un error cuando se ejecuta el método readLine() se supone que éste método ejecutará la sentencia similar a la siguiente:

If (error) trow new IOException();

117

Page 118: JV Conceptos Basicos

Esta sentencia lanza una excepción de la clase IOException lo que implica crear un objeto de esta clase. Un objeto de éstos contiene toda la información acerca de la

excepción, incluyendo su tipo y el estado del sistema cuando el error ocurrió.

CATURAR UNA EXCEPCIONUna vez lanzada la excepción, 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 métodos especificados en la pila de llamadas hasta que ocurrió el error.

Por ejemplo, considere la siguiente aplicación, que invoca al método datoStr() de la clase Leer

118

Page 119: JV Conceptos Basicos

Public class Prueba {

public static void main(String[] arg)

{String cadena;Cadena = Leer.datoStr();

} }

Cuando se ejecute esta aplicación y se invoque al método datoStr(), la pila de llamadas crecerá como se observa en la siguiente figura.

119

BufferedReader.readLine( )

Leer.dato

Prueba.main()

Page 120: JV Conceptos Basicos

Sí al ejecutarse el método readLine() ocurriera un error éste método lanzaría una excepción de la clase IOException que interrumpiría el flujo normal de la ejecución.

Después el sistema buscaría en la pila de llamadas hacia abajo y comenzando con el propio método que produjo el error, un método que implemente un manejador que pueda capturar la excepción.

Sí el sistema descendiendo por la pila de llamadas, no encuentra este manejador, el programa terminaría.

120

Page 121: JV Conceptos Basicos

Para implementar un manejador para una clase de excepción:

1. Encerrar el código que pueda lanzar una excepción en un bloque try. Refiriéndonos 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 excepción lanzada. En la clase Leer el método 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());

}

121

Page 122: JV Conceptos Basicos

En este manejador se observa

parámetro error que referencia al objeto que se creó cuando se lanzó la excepción capturada.

Para manipularla, además de escribir el código que consideremos adecuado, dispondremos de la funcionalidad proporcionada por la clase IOException, y a la cual podemos acceder a través de objeto error. Por ejemplo, el método getMessage() devuelve una cadena con información acerca de la excepción ocurrida.

122

Page 123: JV Conceptos Basicos

Clase Formatter

Un objeto de la clase Formatter es un interprete para cadenas de formato utilizadas con el método printf() para dar formato de salida.

El soporte que proporciona esta clase permite: Mostrar los números, justificados y alineados. Mostrar las cadenas, justificadas y alineadas.

%[indice$][flags][ancho][.precisión]tipoUna especificación de formato siempre comienza con %

índice Es un número entero que indica la posición del argumento en la lista de los argumentos args. El primer argumento esta referenciado por “1$”, el segundo por “2$”, así sucesivamente.

123

Page 124: JV Conceptos Basicos

flags significado Justificado a la izquierda, dentro del ancho especificado. Por defecto la justificación

se hace a la derecha. Antepone el signo + o el signo – al valor de salida.

0 Rellena la salida con ceros no significativos (a la izquierda) hasta alcanzar el ancho mínimo especificado.

Blanco Antepone un espacio en blanco al valor de salida sí es positivo.

# Cuando se utiliza con la especificación de formato o, x ó X, anteponerse al valor de salida 0, 0x ó 0X respectivamente.

124

Page 125: JV Conceptos Basicos

Ancho Mínimo número de posiciones para la salida. Sí el valor a escribir ocupa más posiciones que las especificadas, el ancho es incrementado e lo necesario.

Precisión El significado depende del tipo de salida.

125

Page 126: JV Conceptos Basicos

Tipo es uno de los siguientes caracteres, entre otros:

Carácter Salidad entero con signo en base 10

entero sin signo base 8

x ó X entero sin signo base 16f valor con signo de la forma

[-]ddddd.dddde valor con signo de la forma

[-]ddddd e[+-]ddddE valor con signo de la forma

[-]ddddd E[+-]ddddg valor con signo, en formato f ó

e (el que sea más compacto en valor y precisión dado)

G valor con signo, en formato f ó E (el que sea más compacto en valor y precisión dado)

c un solo carácter, correspondiente al byte menos significativo.

S Escribir una cadena de caracteres.

T o t Prefijo para el formato de una fecha o una hora

126

Page 127: JV Conceptos Basicos

La precisión, en función del tipo tiene el siguiente significado:

E, e, f Especifica el número de dígitos que se tienen que escribir después del punto decimal. Por defecto es 6 y el valor es redondeado.

G, g Específica el máximo número de dígitos significativos. Por defecto es 6.

s Específica el número máximo de caracteres que se escribirán. Los caracteres que excedan este número, se ignoran.

127

Page 128: JV Conceptos Basicos

Algunos de los formatos empleados para mostrar la fecha y hora son:Símbolo Significado Presentación Ejemplo

Y año numérica 2007y año numérica 07m mes del año numérica 08d día del mes numérica 20l hora(1 a 12) numérica 10p am ó pm alfabética pmH hora(0 a 24) numérica 21M minutos numérica 45S segundos numérica 59

A día de la semana alfabética sábadoa día de la semana alfabética sáb

B mes del año alfabética Agostob mes del año alfabética Agoj día del año numérica 223z zona horaria numérica +0100

Ejemplo:

Calendar c = Calendar.getInstance();

System.out.printf

(“Son las %1$tH:%1$tM del %tA %1$td de %1$tB de %1$tB de %1$tY”, c);

El resultado será de la forma:

Son las 14:55 del viernes 17 de agosto de 2007

128

Page 129: JV Conceptos Basicos

ARREGLOS

Diseñar un programa que capture una colección de calificaciones, calcule el promedio así como contabilice el número de calificaciones que se encuentren arriba del

promedio, el número de calificaciones abajo del promedio y el número que se sean iguales al promedio.

Calcular también los porcentajes de esas estadísticas, así como validar la calificación.Se usan arreglos cuando se necesita acceder nuevamente a los datos. Manipular más

de una vez a una colección de datos.Un arreglo es una colección de datos del mismo tipo identificados bajo un mismo

nombre de variableCARACTERISTICAS

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

posición del elemento en el arreglo 8. A la posición 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 expresión aritmética.

9. Todo arreglo tendrá un tamaño físico (Mx), el cual indica el numero máximo de elementos que se podrán almacenar en ese momento en el arreglo

a0

a1

a2

a3

a4

a5

a6

a7

a8

10. También tendrá un tamaño lógico (TAM),el cual indica el número de elementos actualmente almacenados. En consecuencia el tamaño lógico jamás deberá ser mayor al tamaño físico y si así fuere provocaría una interrupción anormal del programa.

129

MX = 8

Page 130: JV Conceptos Basicos

1.- TIPOS DE ARREGLOS CON RESPECTO A DIMENSIONES 1.1 unidimensionales

1.2 bidimensionales1.3 tridimensionales

..

.

.1.4 n – dimensionales

2.- TIPOS DE ARREGLOS CON RESPECTO A LA CONCURRENCIA 2.1 Únicos2.2 Paralelos

3.- TIPOS DE ARREGLOS RESPECTO A TIPOS DE DATOS3.1 Numéricos

3.1.1 Enteros3.1.2 Sencillos3.1.3 Dobles3.1.4 Moneda

3.2 Caracteres3.3 Cadenas3.4 Estructuras (Registros).

4.- TIPOS DE ARREGLOS CON RESPECTO A OCURRENCIAS (APARICIONES)4.1 Con datos repetidos4.2 Sin datos repetidos

5.- TIPOS DE DATOS CON RESPECTO A ORDENAMIENTO5.1 Sin datos ordenados5.2 Con datos ordenados

OPERACIONES BASICAS CON ARREGLOS1. Lectura2. Escritura3. Asignación4. Búsqueda5. Inserción6. Eliminación7. Actualización8. Ordenamiento

UNIDAD VII

130

Page 131: JV Conceptos Basicos

PROGRAMACION MODULAR

Un Modulo es un segmento de código que realiza una tarea especifica.Al programar con módulos se usa la técnica divide y vencerás;

Los módulos pueden ser, genéricamente hablando: Módulos de Lectura (Capturar). Módulos de Escritura (Mostrar). Módulos de Cálculos. Módulos de Procesamiento.

131

Page 132: JV Conceptos Basicos

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

132

Empleado

Programador

Figura

Triángulo

Clases Derivadas

Clases Base

Page 133: JV Conceptos Basicos

La clase base y la clase derivada tienen código y datos en común, de modo que si se crea la clase derivada de modo independiente, se duplicaría mucho lo que ya se ha escrito para la clase base.

Java usa el mecanismo de extensión ( extends ) que permite crear clases derivadas o clases que son la extensión de otra clase, de modo que la nueva clase hereda todos los miembros datos y los métodos 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.

133

Empleado

Programador

Figura

Triángulo

Clases Derivadas (SubClases)

Clases Base (SuperClases)

Page 134: JV Conceptos Basicos

class Programador extends Empleado class Triangulo extends Figura

{ {

public miembro publico public miembro publico

// miembros publicos // miembros publicos

private miembro privado protected miembro protegido

//miembros privados // miembros protegidos

} }

Los miembros indicados arriba pertenecen a la nueva clase y podrá acceder a los miembros de la clase base que estén declarados en su

ámbito o visibilidad como public o como protected solamente.

134

Page 135: JV Conceptos Basicos

Otro ejemplo

abstract class Prestamo

{

protected float capital;protected float tasaInteres;

public Prestamo (float c, float t) // Constructor

{

:

}

abstract public int crearTablaPagos ( float[][] tabla);

}

135

Prestamo

PagoFijo PagoVariable Hipoteca

Page 136: JV Conceptos Basicos

class PagoFijo extends Prestamo

{

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 clienteprivate int numRecibos;private int recibosPor Año;

public PagoFijo (float p, int nr, int na, float c, float t); // Constructor

public int crearTablaPagos ( float[][] tabla)

{

:

}

}

136

Page 137: JV Conceptos Basicos

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 categoría 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

}

137

Page 138: JV Conceptos Basicos

Archivos y Flujos

Un archivo en general es un medio para almacenar

información por lo tanto un archivo en una computadora es

un medio electronico para almacenar información.

Un flujo (Stream), llamado tambien flujo de bits, es el medio

electronico que establece la conexión (pipe) entre las celdas

del almacenamiento primario y el archivo guardado en el

almacenamiento secundario.

138

Page 139: JV Conceptos Basicos

TIPOS DE ARCHIVOS DE ACUERDO A SU FUNCION Y ALMACENAMIENTO.

Básicamente existen tres tipos de archivos:

1. ARCHIVOS PARA MANIPULAR CARACTERES2. ARCHIVOS DE ACCESO SECUENCIAL3. ARCHIVOS DE ACCESO ALEATORIO

OPERACIONES CON ARCHIVOS1. Abrir el archivo Se establece la tuberia (pipe) para el flujo (stream) de bits.

2. Leer del archivoSe 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 archivoSe 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. Añadir al archivoSe 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 archivoSe cierra la tubería (pipe) del flujo de bits.

139

Page 140: JV Conceptos Basicos

Un flujo (stream) es una abstracción 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 conexión o

canal (pipe) por la que circulen los datos.

La apertura de un archivo establece:

La conexión 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.

140

Page 141: JV Conceptos Basicos

Abrir un archivo supone crear un objeto y quedar asociado

con el flujo. Al comenzar la ejecución de un programa

JAVA se crean automáticaticamente tres objetos flujo. Estos

son objetos definidos en la clase System:

1. System.in; Objeto entrada estándar, permite la

entrada de flujo de bytes desde el teclado.

2. System.out; Objeto de salida estándar; permite al

programa la salida de datos por pantalla.

3. System.err; Objeto de salida estándar; permite al

programa la salida de errores por pantalla.

141

Page 142: JV Conceptos Basicos

FLUJOS: JERARQUIA DE CLASES

Todo el proceso de entrada y de salida en JAVA se hace a través 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 de1. Datos2. Caracteres 3. Bytes

Se pueden clasificar en1. Flujos de entrada (Input Stream)2. Flujos de salida (Output Stream)

Para ello JAVA declara dos clases que derivan directamente de la clase Object

1. InputStream2. OutputStream

Ambas son clases abstractas que declaran métodos que deben de refinirse en sus clases derivadas:

142

Page 143: JV Conceptos Basicos

1. InputStream es la clase base de todas las clases definidas para el flujo (stream) de entrada

1. FileInputStream2. ByteArrayInputStream3. PipeInputStream4. SecuenceInputStream5. StringBufferInputStream6. FilterInputStream

2. OutputStream es la clase base de todas las clases definidas para el flujo (stream) de salida

1. FileOutputStream2. ByteOutputStream3. PipeOutputStream4. FilterOutputStream

143

Page 144: JV Conceptos Basicos

ARCHIVOS PARA MANIPULAR CARACTERES

La Clase FileInputStream

La clase FileInputStream se usan para leer bytes desde un archivo. Proporciona operaciones básicas para leer un byte ó una secuencia de bytes.

Se muestran algunos de los métodos más importantes de esta clase, todos son public, es importante tener en cuenta la excepción que puede lanzar para cuando se invoquen se haga un tratamiento de excepción.

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 número de bytes leidos.

144

Page 145: JV Conceptos Basicos

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 posición org y un máximo de len bytes.asociado. Devuelve -1 si alcanza el fin de archivo ó bien el número de bytes leidos.

145

Page 146: JV Conceptos Basicos

La Clase FileOutputStream

La clase FileOutputStream se usan para escribir bytes en un archivo. Proporciona operaciones básicas para escribir un byte ó una secuencia de bytes. Se muestran algunos de los métodos más importantes de esta clase, todos son public, es importante tener en cuenta la excepción que puede lanzar para cuando se invoquen se haga un tratamiento de excepción.

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 añaden al final del archivo.

FileOutputStream (File nombre) throws FileNotFoundException;

Crea un objeto inicializado con el objeto archivo como argumento.

FileOutputStream (File nombre, Boolean sw)) throws FileNotFoundException;

Crea un objeto inicializado con el objeto archivo como argumento. . En el caso de que sw= true los bytes escritos se añaden al final del archivo.

146

Page 147: JV Conceptos Basicos

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 posición org y un máximo de len bytes en el flujo.

147

Page 148: JV Conceptos Basicos

ARCHIVOS DE ACCESO SECUENCIAL

Son aquellos que permiten almacenar no solamente caracteres sino también datos de tipo numérico, de tipo cadena (String) y de tipo lógico (boolean).

La Clase DataInputStreamLa 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 asociación 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 leído se ha de crear un objeto FileInputStream y a continuación un objeto DataInputStream:

FileInputStream fis = new FileInputStream(“jmf.dat”);DataInputStream dis = new DataInputStream(fis);

A continuación se describen algunos de los métodos más importantes de esta clase, todos tienen visibilidad public, y además no se puede redefinir, ya que están declarados como final.

148

Page 149: JV Conceptos Basicos

Public DataInputStream (FileInputStream fis)Crea un objeto asociado con cualquier objeto de entrada pasado como argumento.

Public final bolean readBoolean () throws IOExceptionDevuelve el valor de tipo boolean leido.

Public final bolean readByte () throws IOExceptionDevuelve el valor de tipo byte leido.

Public final bolean readShort () throws IOExceptionDevuelve el valor de tipo short leido.

Public final bolean readInt () throws IOExceptionDevuelve el valor de tipo int leido.

Public final bolean readLong () throws IOExceptionDevuelve el valor de tipo long leido.

Public final bolean readFloat () throws IOExceptionDevuelve el valor de tipo float leido.

Public final bolean readDouble () throws IOExceptionDevuelve el valor de tipo double leido.

Public final bolean readChar () throws IOExceptionDevuelve el valor de tipo byte leido.

Public final bolean readUTF () throws IOExceptionDevuelve una cadena que se escribió en formato UTF.

149

Page 150: JV Conceptos Basicos

Public final bolean readLine () throws IOExceptionDevuelve la cadena leída hasta el final de la línea.

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 continuación se describen algunos de los métodos más importantes de esta clase, todos tienen visibilidad public, y además no se puede redefinir, ya que están declarados como final.

150

Page 151: JV Conceptos Basicos

Public DataOutputStream (FileOutputStream fis)Crea un objeto asociado con cualquier objeto de entrada pasado como argumento.

Public final bolean writeBoolean (boolean v) throws IOExceptionEscribe el dato boolean v.

Public final bolean writeByte (byte v) throws IOExceptionEscribe el dato byte v.

Public final bolean writeShort (short v) throws IOExceptionEscribe el dato short v.Public final bolean writeInt (int v) throws IOExceptionEscribe el dato int v.Public final bolean writeLong (long v) throws IOExceptionEscribe el dato long v.

Public final bolean readFloat (float v) throws IOExceptionEscribe el dato float v.

Public final bolean writeDouble (double v) throws IOExceptionEscribe el dato double v.

Public final bolean writeChar (char v) throws IOExceptionEscribe el dato char v.

151

Page 152: JV Conceptos Basicos

Public final bolean writeUTF (String cad) throws IOExceptionEscribe la cadena en formato UTF.

Public final int size() throws IOExceptionDevuelve el tamaño del flujo.

152

Page 153: JV Conceptos Basicos

ARCHIVOS DE ACCESO ALEATORIO

Hasta ahora, hemos trabajado con ficheros de acuerdo al siguiente esquema:

1. Abrir el archivo2. Leer del archivo3. Escribir en el archivo4. Añadir al archivo5. Cerrar el archivo

Pero no hemos leído o escrito a partir de una determinada posición 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. Además, 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 automáticamente al principio del archivo cuando se abre para leer y/o escribir. Por lo tanto, una operación de lectura o de escritura comienza en la posición donde esté el puntero dentro del fichero; finalmente, su

153

Page 154: JV Conceptos Basicos

posición coincidirá justo a continuación del último byte leído o escrito.

154

Page 155: JV Conceptos Basicos

La clase RandomAccessFile

Un flujo de esta clase permite acceder directamente a cualquier posición 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 read Solo permiten realizar operaciones de lectura.rw read/write Se pueden realizar operaciones de lectura y de

escritura sobre el fichero.

155

Page 156: JV Conceptos Basicos

Así mismo, la clase RandomAccessFile provee, además de los métodos de las interfaces DataInput y DataOutput, los métodos:

public long getFilePointer() throws IOException

Este método devuelve la posición actual en bytes del puntero L/E en el fichero. Este puntero marca siempre la posición donde se iniciará la siguiente operación de lectura o de escritura en el archivo.

public long length() throws IOException

Este método devuelve la longitude del archive en bytes.

public void seek(long pos) throws IOException

Y este método, mueve el puntero de L/E a una nueva posición desplazada pos bytes del principio del archivo. No se permiten desplazamientos negativos.

156

Page 157: JV Conceptos Basicos

Archivos y Flujos

Un flujo (stream) es una abstracción 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 conexión o canal (pipe) por la que circulen los datos.

La apertura de un archivo establece: La conexión 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.

157

Page 158: JV Conceptos Basicos

Abrir un archivo supone crear un objeto y quedar asociado con el flujo. Al comenzar la ejecución de un programa JAVA se crean automáticáticamente tres objetos flujo. Estos son

objetos definidos en la clase System:1. System.in; Objeto entrada estándar, permite la entrada de flujo de bytes

desde el teclado.2. System.out; Objeto de salida estándar; permite al programa la salida de

datos por pantalla.3. System.err; Objeto de salida estándar; permite al programa la salida de

errores por pantalla.

158

Page 159: JV Conceptos Basicos

FLUJOS: JERARQUIA DE CLASES

Todo el proceso de entrada y de salida en JAVA se hace a través 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. Datos5. Caracteres 6. Bytes

Se pueden clasificar en3. Flujos de entrada (Input Stream)4. Flujos de salida (Output Stream)

Para ello JAVA declara dos clases que derivan directamente de la clase Object3. InputStream4. OutputStream

Ambas son clases abstractas que declaran métodos que deben de refinirse en sus clases derivadas:

159

Page 160: JV Conceptos Basicos

3. InputStream es la clase base de todas las clases definidas para el flujo (stream) de entrada

1. FileInputStream2. ByteArrayInputStream3. PipeInputStream4. SecuenceInputStream5. StringBufferInputStream6. FilterInputStream

OutputStream es la clase base de todas las clases definidas para el flujo (stream) de salida

5. FileOutputStream6. ByteOutputStream7. PipeOutputStream8. FilterOutputStream

160

Page 161: JV Conceptos Basicos

TIPOS DE ARCHIVOS DE ACUERDO A SU FUNCION Y ALMACENAMIENTO.Básicamente existen tres tipos de archivos:

4. ARCHIVOS PARA MANIPULAR CARACTERES5. ARCHIVOS DE ACCESO SECUENCIAL6. ARCHIVOS DE ACCESO ALEATORIO

161

Page 162: JV Conceptos Basicos

ARCHIVOS PARA MANIPULAR CARACTERESLa Clase FileInputStreamLa clase FileInputStream se usan para leer bytes desde un archivo. Proporciona operaciones básicas para leer un byte ó una secuencia de bytes. Se muestran algunos de los métodos más importantes de esta clase, todos son public, es importante tener en cuenta la excepción que puede lanzar para cuando se invoquen se haga un tratamiento de excepción.

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 número 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 posición org y un máximo de len bytes.asociado. Devuelve -1 si alcanza el fin de archivo ó bien el número

de bytes leidos.

162

Page 163: JV Conceptos Basicos

La Clase FileOutputStreamLa clase FileOutputStream se usan para escribir bytes en un archivo. Proporciona operaciones básicas para escribir un byte ó una secuencia de bytes. Se muestran algunos de los métodos más importantes de esta clase, todos son public, es importante tener en cuenta la excepción que puede lanzar para cuando se invoquen se haga un tratamiento de excepción.

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 añaden 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 posición org y un máximo de len bytes en el flujo.

163

Page 164: JV Conceptos Basicos

ARCHIVOS DE ACCESO SECUENCIALSon aquellos que permiten almacenar no solamente caracteres sino tambien datos de tipo numerico, de tipo cadena (String) y de tipo logico (boolean).

La Clase DataInputStreamLa 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 asociación 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 leído se ha de crear un objeto FileInputStream y a continuación un objeto DataInputStream:FileInputStream fis = new FileInputStream(“jmf.dat”);DataInputStream dis = new DataInputStream(fis);A continuación se describen algunos de los métodos más importantes de esta clase, todos tienen visibilidad public, y además no se puede redefinir, ya que están declarados como final.

164

Page 165: JV Conceptos Basicos

Public DataInputStream (FileInputStream fis)Crea un objeto asociado con cualquier objeto de entrada pasado como argumento.

Public final bolean readBoolean () throws IOExceptionDevuelve el valor de tipo boolean leido.

Public final bolean readByte () throws IOExceptionDevuelve el valor de tipo byte leido.

Public final bolean readShort () throws IOExceptionDevuelve el valor de tipo short leido.

Public final bolean readInt () throws IOExceptionDevuelve el valor de tipo int leido.

Public final bolean readLong () throws IOExceptionDevuelve el valor de tipo long leido.

Public final bolean readFloat () throws IOExceptionDevuelve el valor de tipo float leido.

Public final bolean readDouble () throws IOExceptionDevuelve el valor de tipo double leido.

Public final bolean readChar () throws IOExceptionDevuelve el valor de tipo byte leido.

Public final bolean readUTF () throws IOExceptionDevuelve una cadena que se escribió en formato UTF.Public final bolean readLine () throws IOExceptionDevuelve la cadena leída 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 continuación se describen algunos de los métodos más importantes de esta clase, todos tienen visibilidad public, y además no se puede redefinir, ya que están declarados como final.

165

Page 166: JV Conceptos Basicos

Public DataOutputStream (FileOutputStream fis)Crea un objeto asociado con cualquier objeto de entrada pasado como argumento.Public final bolean writeBoolean (boolean v) throws IOExceptionEscribe el dato boolean v.Public final bolean writeByte (byte v) throws IOExceptionEscribe el dato byte v.Public final bolean writeShort (short v) throws IOExceptionEscribe el dato short v.Public final bolean writeInt (int v) throws IOExceptionEscribe el dato int v.Public final bolean writeLong (long v) throws IOExceptionEscribe el dato long v.Public final bolean writeFloat (float v) throws IOExceptionEscribe el dato float v.Public final bolean writeDouble (double v) throws IOExceptionEscribe el dato double v.Public final bolean writeChar (char v) throws IOExceptionEscribe el dato char v.

166

Page 167: JV Conceptos Basicos

Public final bolean writereadUTF (String cad) throws IOExceptionEscribe la cadena en formato UTF.

Public final int size() throws IOExceptionDevuelve el tamaño del flujo.

167

Page 168: JV Conceptos Basicos

ARCHIVOS DE ACCESO ALEATORIOHasta ahora, hemos trabajado con ficheros de acuerdo al siguiente esquema:

6. Abrir el archivo7. Leer del archivo8. Escribir en el archivo9. Añadir al archivo10. Cerrar el archivo

Pero no hemos leído o escrito a partir de una determinada posición 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. Además, 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 automáticamente al principio del archivo cuando se abre para leer y/o escribir. Por lo tanto, una operación de lectura o de escritura comienza en la posición donde esté el puntero dentro del fichero; finalmente, su posición coincidirá

justo a continuación del último byte leído o escrito.La clase RandomAccessFile

Un flujo de esta clase permite acceder directamente a cualquier posición 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 read Solo permiten realizar operaciones de lectura.rw read/write Se pueden realizar operaciones de lectura y de

escritura sobre el fichero.

168

Page 169: JV Conceptos Basicos

Así mismo, la clase RandomAccessFile provee, además de los métodos de las interfaces DataInput y DataOutput, los métodos:

public long getFilePointer() throws IOExceptionEste metódo devuelve la posicion actual en bytes del puntero L/E en el fichero. Este

puntero marca siempre la posición donde se iniciará la siguiente operación de lectura o de escritura en el archivo.

public long length() throws IOExceptionEste método devuelve la longitude del archive en bytes.

public void seek(long pos) throws IOExceptionY este método, mueve el puntero de L/E a una nueva posición desplazada pos bytes del

principio del archivo. No se permiten desplazamientos negativos.

169

Page 170: JV Conceptos Basicos

170

Page 171: JV Conceptos Basicos

Applet

¿Qué son?

Un applet es un componente de una aplicación 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 anfitrión, mediante un plugin, o en aplicaciones como teléfonos móviles que soportan el modelo de programación 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 applet’s code is transferred to your system and executed by the browser’s 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 página. Al utilizar una tecnología Java del navegador para ver una página que contiene un applet, el código 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 información gráfica y a veces interactúa con el usuario, típicamente carece de sesión y tiene privilegios de seguridad restringidos. Un applet

normalmente lleva a cabo una función muy específica que carece de uso independiente. El término 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 aplicación JAVA y un applet radica en cómo se ejecutan. Para cargar una aplicación JAVA se utiliza el intérprete 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 programación 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 características 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. 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

171

Page 172: JV Conceptos Basicos

para el usuario común, lo cual juega en contra de uno de los objetivos de los Java applets: proporcionar una forma fácil 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. Además, Java es más potente que

Java script, por lo que el número de aplicaciones de los applets podrá ser mayor.Desventajas

Como desventajas en relación con Java script cabe señalar que los applets son más lentos de procesar y que tienen espacio muy delimitado en la página donde se

ejecutan, es decir, no se mezclan con todos los componentes de la página 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.fuenteshttp://java.sun.com/applets/http://es.wikipedia.org/wiki/Applet_Javahttp://es.wikipedia.org/wiki/Applethttp://www.desarrolloweb.com/articulos/731.phphttp://www.proinf.net/curso/Java/curso2006/avanzado/m3ch3.pdf

172

Page 173: JV Conceptos Basicos

BIBLIOGRAFÍAINTRODUCCIÓN A LAS CIENCIAS COMPUTACIONALESTREMBLAYMcGRAW-HILL.METODOLOGIA DE LA PROGRAMACIÓNJOYANES AGUILARMcGRAW-HILL.FUNDAMENTOS DE PROGRAMACION (CD)LUIS JOYANES AGUILARLUIS RODRIGUEZ BAENAMC GRAW HILLPROGRAMACION ORIENTADA A OBJETOS (CD)FRANCISCO JAVIER CEBALLOSCOMPUTEC RA-MA

JAVA 2 Curso de programaciónFRANCISCO JAVIER CEBALLOSALFAOMEGA RA-MAPROGRAMACIÓN EN JAVA 5.0JAMES COHOONJACK DAVISONMC GRAW HILLPROGRAMACIÓN EN JAVA 2 (RECOMENDADO)LUIS JOYANES AGUILAR/ IGNACIO ZAHONERO MARTÍNEZMC GRAW HILL

173