Se ha denunciado esta presentación.
Se está descargando tu SlideShare. ×

S2-EDD-1.2 Paso de estructuras y punteros a funciones, recursividad

Anuncio
Anuncio
Anuncio
Anuncio
Anuncio
Anuncio
Anuncio
Anuncio
Anuncio
Anuncio
Anuncio
Anuncio
Próximo SlideShare
Flujos de bytes y cadenas
Flujos de bytes y cadenas
Cargando en…3
×

Eche un vistazo a continuación

1 de 34 Anuncio
Anuncio

Más Contenido Relacionado

Presentaciones para usted (20)

Similares a S2-EDD-1.2 Paso de estructuras y punteros a funciones, recursividad (20)

Anuncio

Más de Luis Fernando Aguas Bucheli (20)

Más reciente (20)

Anuncio

S2-EDD-1.2 Paso de estructuras y punteros a funciones, recursividad

  1. 1. Estructuras de Datos Tema: 1 Estructuras de datos estáticas Docente: Mg. Luis Fernando Aguas B
  2. 2. Un pequeño cuerpo de espíritu decidido iluminado por una fe insaciable en su misión puede alterar el curso de la historia. Mahatma Gandhi .
  3. 3. Objetivo 1. Adquirir los conceptos básicos relacionados con las EDD 2. Reconocer las características de las EDD ● 1.2 Paso de estructuras y punteros a funciones, recursividad Contenido
  4. 4. 1.2 Paso de estructuras y punteros a funciones, recursividad
  5. 5. Recursividad Definición: Recursividad es cuando un método (función) se llama a si mismo JAVA es un lenguaje recursivo. Condiciones para recursividad: Una condición base o de salida Llamada a si mismo en una instancia menor Ejemplos: Factorial de n :: 6! = 6*5*4*3*2*1 = 720 Fractales: Curva de Koch , Curva de Peano. En física: El oscilador armónico cuántico, Polinomios de Hermite.
  6. 6. Factorial de n
  7. 7. Recursividad : Fractales DEFINICION Un fractal es una figura que se repite varias veces en sus extremos. Condición: 1. Definir una figura 2. Solicitar el número de repeticiones. 3. Representar el fractal.
  8. 8. Cuidado con la recursividad Asuma que la recursividad funciona adecuadamente, no la cuestione. La recursión utiliza un TDA (PILA) para su funcionamiento No utilice recursión en reemplazo de un bucle simple. No repita trabajo de forma recursiva, se volverá excesivamente ineficiente.
  9. 9. E/S Definición Normalmente: Programa debe obtener información desde un origen. Programa debe enviar información hacia un destino Programa Destino Origen
  10. 10. Flujo (stream) Flujo (“Stream”) es un Objeto. Transporta información (cualquier tipo de dato) El programa lee desde el flujo; o, escribe en él. El programa no necesita saber características del origen o destino  ABSTRACCION El dispositivo no necesita conocer el tipo de información  ABSTRACCION Un stream es una secuencia ordenada de datos •Se requiere importar el paquete java.io
  11. 11. Algoritmos E/S Algoritmo de Lectura: Abrir un flujo desde el origen Mientras haya información Leer información Cerrar el flujo Algoritmo de Escritura Abrir un flujo hacia un destino Mientras haya información Escribir información Cerrar el flujo
  12. 12. El paquete java.io Es el más grande de los paquetes de Java(9 clases). Permite a los programas leer datos del teclado y exhibirlos en la pantalla, así como datos desde/hacia archivos. Define la entrada/salida en términos de streams una fuente = stream de entrada o un destino = stream de salida java.io permite dos tipos de flujos Stream de caracteres (caracteres Unicode de 16 bits) Stream de bytes (8 bits)
  13. 13. Paquete java.io E/S puede estar basada: En texto: streams de caracteres legibles Ejemplo: el código fuente de un programa En datos: streams de datos binarios Ejemplo: patrón de bits de una imagen Los streams de caracteres se utilizan en la E/S basada en texto. Se denominan lectores (reader) y escritores (writer) Los streams de bytes se utilizan en la E/S basada en datos. Se denominan streams de entrada y streams de salida
  14. 14. Clases principales de java.io Clases de flujo de entrada: Para leer datos de una fuente(archivo, cadena o memoria) Flujo de bytes: InputStream, BufferedInputStream, DataInputStream, FileInputStream Flujo de caracteres: Reader, BufferReader, FileReader Clases de flujo de salida: Se utilizan para enviar flujos de datos a dispositivos de salida Flujo de bytes: OutputStream, PrintStream, BufferedOutputStream, DataOutputStream y FileOutputStream Flujo de caracteres : Writer, PrintWriter, FileWriter Clases de archivo: File y RandomAccesFile (mayor control sobre los archivos)
  15. 15. Jerarquía de clases de java.io (parcial) Object OutputStream RandomAccessFile FileInputStream FileOutputStream InputStream DataInputStream FilterInputStream BufferedInputStream DataOutputStream FilterOutputStream BufferedOutputStream Reader BufferedReader Writer BufferedWriter InputStreamReader File OutputStreamwriter FileReader FileWriter PrintWriter
  16. 16. Visión de E/S desde Java Aplicación Disco Internet
  17. 17. InputStream Método Descripción read() Lee el siguiente byte del flujo de entrada y lo devuelve como un entero. Cuando alcanza el final del flujo de datos, devuelve -1. read(byte b[]) Lee múltiples bytes y los almacena en la matriz b. Devuelve el número de bytes leídos o -1 cuando se alcanza el final del flujo de datos. read(byte b[], int off, int long) Lee hasta len bytes de datos del flujo de entrada, empezando desde la posición indicada por el desplazamiento off, y los almacena en una matriz. available() Devuelve el número de bytes que se pueden leer de un flujo de entrada sin que se produzca un bloqueo por causa de una llamada a otro método que utiliza el mismo flujo de entrada. skip(long n) Omite la lectura de n bytes de datos de un flujo de entrada y los descarta. close() Cierra un flujo de entrada y libera los recursos del sistema utilizados por el flujo de datos. EOF
  18. 18. OutputStream Método Descripción write(int b) Escribe b en un flujo de datos de salida. write(byte b[]) Escribe la matriz b en un flujo de datos de salida. write(byte b[], int off, int long) Escribe len bytes de la matriz de bytes en el flujo de datos de salida, empezando en la posición dada por el desplazamiento off flush() Vacía el flujo de datos y fuerza la salida de cualquier dato almacenado en el búfer. close() Cierra el flujo de datos de salida y libera cualquier recurso del sistema asociado con él.
  19. 19. Streams sobre archivos FileInputStream: Similar a la clase InputStream, diseñada para leer archivos. FileInputStream(String name) FileInputStream(File name) FileOutputStream: Similar a la clase OutputStream, diseñada para escribir en archivos. FileOutputStream(String name) FileOutputStream(String name, boolean append) Si append==true queremos añadir al final del archivo FileOutputStream(File name)
  20. 20. Ejemplo: copia de archivo
  21. 21. Reader y Writer Da soporte a Unicode en todas las operaciones de E/S. En ocasiones hay que combinar streams de caracteres y de bytes: InputStreamReader: convierte un InputStream en un Reader OutputStreamWriter: convierte un OutputStream en un Writer Casi todas las clases de la jerarquía de streams de bytes tienen su correspondiente clase Reader o Writer con interfaces casi idénticas. BufferedReader y BufferedWriter: almacenamiento temporal en un buffer, para no actuar directamente sobre el stream. Igual que los streams de bytes se deben cerrar explícitamente para liberar sus recursos asociados (close).
  22. 22. archivo PrintWriter print(…) println(…) write(String) write(char[]) bytes Escribir en archivo FileOutputStream write(int) write(byte[]) FileOutputStream fos = new FileOutputStream(“archivo.txt”); PrintWriter pr = new PrintWriter(fos); … pr.println(“Escribimos texto”);
  23. 23. Ejemplo: Escribir en archivo public class Escribirarchivo { public static void main(String[] args) { try{ FileOutputStream fos=new FileOutputStream("salida.txt"); PrintWriter pw = new PrintWriter(fos); pw.println("Imprimimos una cadena y un entero " + 5); pw.flush(); pw.close(); fos.close(); }catch (FileNotFoundException e){ } catch (IOException e2){ } } } NOTA: El flujo de salida se convierte en un PrintWriter para hacerlo legible como un archivo de texto normal.
  24. 24. archivo PrintWriter print(…) println(…) write(String) write(char[]) caract. Escribir en archivo (2) FileWriter write(int) write(char[]) write(String) FileWriter fw = new FileWriter(“archivo.txt”); PrintWriter pr = new PrintWriter(fw); … pr.println(“Escribimos texto”);
  25. 25. InputStream archivo InputStreamReader int read() read(char[]) Lectura de líneas BufferedReader readLine() read() read(byte[]) FileInputStream fis = new FileInputStream(“archivo.txt”); InputStreamReader isr = new InputStreamReader(fis); BufferedReader buffer = new BufferedReader(isr); … String linea = buffer.readLine(); bytes 
  26. 26. Ejemplo: Lector de archivo NOTA: Podemos cambiar FileInputStream por FileReader en cuyo caso el buffer sería un char[].
  27. 27. archivo FileReader int read() read(char[]) carac. Leer de archivo BufferedReader readLine() FileReader fr = new FileReader(“archivo.txt”); BufferedReader buffer = new BufferedReader(fr); … String linea = buffer.readLine();
  28. 28. DataInputStream / DataOutputStream Permiten transmitir tipos primitivos por un stream. Lectura Escritura Tipo readBoolean writeBoolean boolean readChar writeChar char readByte writeByte byte readShort writeShort short readInt writeInt int readLong writeLong long readFloat writeFloat float readDouble writeDouble double readUTF writeUTF String
  29. 29. Escritura en modo “dato” archivo DataOutputStreamwriteBoolean writeChar writeByte writeShort writeInt writeLong writeFloat writeDouble writeUTF bytes FileOutputStream write(int) write(byte[]) FileOutputStream fos = new FileOutputStream("salida.dat"); DataOutputStream dos = new DataOutputStream(fos); dos.writeInt(5);
  30. 30. Lectura en modo “dato” archivo FileInputStream int read() read(byte[]) bytes DataInputStream readBoolean readChar readByte readShort readInt readLong readFloat readDouble readUTF FileInputStream fis = new FileInputStream("salida.dat"); DataInputStream dis = new DataInputStream(fis); int entero = dis.readInt();
  31. 31. Entrada/Salida estándar System.out Stream de salida estándar: Objeto PrintStream (es un tipo de OutputStream) Métodos de escritura print(valor) y println(valor) para los siguientes tipos: System.in Stream de entrada estándar: Objeto InputStream System.err Salida de error “estándar”: Objeto PrintStream Mostrar mensajes de error o cualquier otra información que requiera la atención inmediata del usuario char int float Object boolean char[] long double String
  32. 32. lectura desde teclado BufferedReader teclado = new BufferedReader(new InputStreamReader(System.in)); String entrada = teclado.readLine(); System.in (InputStream) InputStreamReader int read() read(char[]) bytes BufferedReader readLine() read() read(byte[]) 
  33. 33. Dos Entradas y una Salida Aplicación Disco FileInputStream InputStreamReader Algun InputStream System.in InputStreamReader BufferedReader BufferedReader PrintStream FileOutputStream
  34. 34. Gracias Responsabilidad con pensamiento positivo

×