Upload
utp-ta
View
8.323
Download
13
Embed Size (px)
Citation preview
VB II, UNIDAD II MANEJO DE ARCHIVOS
LSC María Alejandra Alva SánchezMtra. Verónica Perla Romero Fdz.
2.1Archivos de datos Un archivo es un conjunto de datos
estructurados en unidades lógicas con características comunes.
En VB tiene la extensión .DAT Las acciones que se pueden realizar son:
abrir, agregar información, dar de baja, cambiar, modificar, leer y cerrar.
Existen tres tipos que son: aleatorios, secuenciales y binarios.
Guardan información en forma consecutiva separados por un carácter especial. Permiten ahorrar espacio en disco. No se pueden guardar datos intermedios y para leer un dato es necesario leer todos los anteriores hasta encontrarlo.
2.2 Archivos Secuenciales
Explicación Recuerda que los archivos secuenciales guardan la información
en forma consecutiva.
Mientras que en los archivos aleatorios se guardan todos los registros de igual tamaño, se utilicen o no todos los lugares.
Datos guardados
Monterrey, Guadalajara, México, Veracruz, Monclova, Saltillo,
Caracteres utilizados
9 y 1 11 y 1 6 y 1 8 y 1 8 y 1 8 y 1
Total de caracteres:56
MonterreyGuadalajara
MéxicoVeracruzMonclova
Saltillo
10 caracteres para cada Registro hacen un total de
60 caracteres
2.3 Archivos aleatorios Guardan todos los registros de igual
tamaño se utilicen o no todos los lugares, se pueden hacer lecturas y guardar datos de forma directa. Se pueden producir lugares vacíos y si los datos son más grandes que lo previsto se pueden guardar incompletos.
Actividades Realiza un mapa conceptual sobre
archivos aleatorios.
Realiza un mapa conceptual sobre archivos secuenciales.
Actividades: Indica si se trata de archivo secuencial (AS) o aleatorio (AA).
Guardan información en forma consecutiva separados por un carácter especial.
Se pueden hacer lecturas y guardar datos en forma directa.
Se pueden producir lugares vacíos y si los datos son más grandes se guardan incompletos.
No se pueden guardar datos intermedios. Para leer un dato es necesario leer todos los anteriores
hasta encontrarlo. Guardan todos los registros de igual tamaño se utilicen o
no todos lo lugares. Permiten ahorrar espacio en disco.
Instrucciones en el manejo de archivos Open.-Abre un archivo de datos que ya existe o
bien para crearlo tanto de forma secuencial como aleatoria.
Número de canal.-LÍNEA DE COMUNICACIÓN entre la computadora y el disco.
Modo.-Palabra clave que indica la forma o manera en que vamos a acceder a los datos del archivo.
Append.-ABRE (si existe) o CREA (si no existe) un archivo de datos PARA ESCRIBIR INFORMACIÓN AL FINAL DEL ARCHIVO.
Instrucciones en el manejo de archivos Input.- Abre un archivo para LEER DATOS en
forma secuencial y en orden, a partir del primer dato. ¡Ojo! Si no existe se genera un error al tratar de abrirlo.
Output.-Abre un archivo POR PRIMER VEZ para guardar datos en forma secuencial y siempre lo hace desde el inicio del archivo. ¡Ojo! SI EXISTE EL ARCHIVO SOBRESCRIBE EN ÉL.
Random.- Abre un archivo para acceso aleatorio el cual permite LEER Y ESCRIBIR EN ÉL EN CUALQUIER ORDEN. ¡Recuerda definir el tamaño de los registros!, mediante la instrucción Len, n representa el número de caracteres.
FreeFile.- Permite dejar a VB ASIGNAR EL CANAL DEL ARCHIVO DESOCUPADO.
Close.- CIERRA el archivo para que los datos guardados en él no se borren o alteren.
EOF.- Fin del archivo. EOF (número de canal) Se utiliza regularmente para leer información de la instrucción INPUT acompañado de un ciclo.
On Error Goto <etiqueta>.- Rutina que nos permite MANEJAR
LOS ERRORES que se pudieran producir EN TIEMPO DE EJECUCIÓN. Cuando se comete el error al ejecutar algún programa, la ejecución no se interrumpe y el control pasa alas instrucciones que se encuentran en la etiqueta, la cual deberá terminar con la instrucción Resume.En el ejemplo si todo sale bien con Exit Sub se evita entrar en la caja de dialogo de salida MsgBox. Si en tiempo de ejecución se produce un error nos enviará a la etiqueta Tipo Error: donde reportaremos el error gracias a la variable reservada Err que nos indicará el número de error que se cometió.
Type…EndType.- Especifica CUÁNTOS CAMPOS TIENE CADA REGISTRO, cuáles son los nombres de los campos, que tipos de datos se guardará en él y de qué longitud es cada uno de ellos. ¡RECUERDA QUE DEBERÁ DECLARARSE EN UN MÓDULO!
Instrucciones en los Archivos Secuencial y AleatorioINSTRUCCIÓN SECUENCIAL ALEATORIO
Open Open “A:ARCHIVO.DAT”, for modo as numero de canal
Open “A:ARCHIVO.DAT”, for modo as numero de canal Len= m
Número de canal Varía entre 1 y 511.
Modo Los tipos de modo son: append, input, output; es decir para añadir, leer, guardar.
For Random, get y put indican para leer o para guardar datos.
Append NT = FreeFileOpen “C:HOLA.DAT” for append as #
NT Write #NT, “cadenas”, “números”Close #NT
No existe una instrucción directa por ello es necesario determinar el número de registros +1. Por ejemplo W= LOF(1)/42
La posición actual será Reg=W+1
Input Open “C:HOLA.DAT” for input as #5Input #5, variable de lectura
Output NT = FreeFileOpen “C:HOLA.DAT” for output as #
NT Write #NT, “cadenas”, “números”Close #NT
Random Open “A:ARCHIVO.DAT” for Random as #1 Len=n
Instrucciones en los Archivos Secuencial y Aleatorio
INSTRUCCIÓN SECUENCIAL ALEATORIO
FreeFile VariableNumCanal= FreeFile
Close Close # canal
EOF Dim DatSalida as stringOpen “C:HOLA.DAT” for input as #5 Do While Not EOF (5) Input #5, DatSalida PicSalida.Print DatSalida LoopClose # 5
On Error Goto <etiqueta>
Dim DatSalida as stringOn Error Goto Tipo ErrorOpen “A:ARCHIVO.DAT” for input as
#5 Do While Not EOF (5) Input #5, DatSalida LoopClose #5Exit SubTipoError: MsgBox “Se produje el error: ” &
ErrResume Next
Instrucciones en los Archivos Secuencial y Aleatorio
INSTRUCCIÓN SECUENCIAL ALEATORIO
Type…EndType Type Expediente Nombre as String * 30 Apellido as String * 30 Edad as integerEnd Type
Put Dim RegExp as ExpedienteOpen “A:ARCHIVO.DAT” for Random as # 3 Len
= 62 RegExp.Nombre=”Vero” RegExp.Apellido=”Romero” RegExp.Edad= 33 Put, 3, 1, RegExp.NombreClose # 3
Get Open “A:ARCHIVO.DAT” for Random as # 3 Len 62
W= LOF (3) / 42 For I=1 to W Get 3, I, RegExp Picsal.Print RegExp.Nombre,
RegExo.Apellido, RegExp.Edad Next IClose # 3
Instrucciones en los Archivos Secuencial y Aleatorio Put.- Guarda en el disco los datos acomodados en el buffer
del registro. En el ejemplo en el canal 3 con el que se abrió el archivo, el 1 va a ser el número de renglón o registro donde guardaremos los datos.
Get.- Instrucción para leer y traer un registro específico. Con LOF se indica la cantidad de bytes que se han utilizado en el disco para un archivo de datos que se ha abierto. A= LOF(número de canal). En A se guardan el número de caracteres utilizados por el archivo. Para saber el número de registros sería W= A/ número de bytes para cada registro. ¡Recuerda que se utiliza un Byte por carácter!. Por ello para edad considerando entre 0 y 99 es de dos + 60 de nombre y apellido.
Actividad
Reproduce la siguiente interfaz Introduce el código para archivo
secuencial y aleatorio. Explica cada instrucción.
Archivo secuencialPrivate Sub Crear_secuencial_Click() Dim nombre As String, tel, NT As Integer NT = FreeFile Open "C:\ejemplo.txt" For Output As #NT Write #NT, InputBox("deme un nombre") Write #NT, InputBox("deme su telefono") Close #NTEnd Sub
Private Sub Agregar_secuencial_Click() Dim nombre As String, tel, NT As Integer NT = FreeFile Open "C:\ejemplo.txt" For Append As #NT Write #NT, InputBox("deme un nombre") Write #NT, InputBox("deme su telefono") Close #NTEnd Sub
Private Sub Consulta_secuencial_Click()Dim nombre As String, tel, #NT As Integer NT = FreeFile Open "C:\ejemplo.txt" For Input As #NT Do While Not EOF(NT) Input #NT, nombre, tel Picture1.Print "nombre: " & nombre, "tel: " & tel Loop Close #NTEnd Sub
Private Sub Limpiar_secuencial_Click() Picture1.ClsEnd Sub
Archivo Aleatorio
REM a nivel móduloType amigos Nombre as string *10 Tel as string *7End type
Dim regamigos as amigos
Private Sub Crear_aleatorio_Click() Dim nombre As String, tel, NT As Integer NT = FreeFile Open "C:\ejemplo2.txt" For Random As #NT Len = 17 REgamigos.nombre = InputBox("deme su nombre") REgamigos.tel = InputBox("deme su telefono") Put #NT, 1, REgamigosClose #NTEnd Sub
Private Sub Agregar_aleatorio_Click()Dim nombre As String, tel, NT, W, Ultimoreg As Integer NT = FreeFile Open "C:\ejemplo2.txt" For Random As #NT Len = 17 W = LOF(NT) / 17 REgamigos.nombre = InputBox("deme su nombre") REgamigos.tel = InputBox("deme su telefono") Ultimoreg = W + 1 Put #NT, Ultimoreg, REgamigosClose #NTEnd Sub
Private Sub Consulta_aleatorio_Click()Dim nombre As String, tel, NT, W, Ultimoreg As Integer NT = FreeFile Open "C:\ejemplo2.txt" For Random As #NT Len = 17 W = LOF(NT) / 17 cualreg = Int(InputBox("qué registro")) If cualreg > 0 And cualreg <= W Then Get #NT, cualreg, REgamigos Picture2.Print REgamigos.nombre, REgamigos.tel Else MsgBox "Solo tengo " & W & " registros" End If Close #NTEnd Sub
Private Sub Limpiar_aleatorio_Click() Picture2.ClsEnd Sub
Explicación sobre Archivos Aleatorios: Es necesario crear estructura de datos compuestas
de datos simples:
Type nombre_estructuranombre as string *10edad as integer
End type
El total de bytes para la estructura de datos llamada nombre_estructura es 12, los caracteres ocupan un byte por carácter.
10 bytes para nombre
2 para edad
Explicación sobre Archivos Aleatorios continuación…
Después se debe declarar el registro a utilizarDim registro as nombre_registro
Registro tiene la misma estructura de nombre_registro, la diferencia es que éste último es la estructura de datos que creamos y registro es una variable de la naturaleza de la estructura creada.
10 bytes para nombre
2 para edad
10 bytes para nombre
2 para edad
Nombre_registro registro
Explicación sobre Archivos Aleatorios continuación…
Después se debe declarar el registro a utilizarDim registro as nombre_registro
Una vez abierto el archivo guardas los datos de la siguiente:
Registro.nombre=inputbox(“Su nombre”)Registro.edad=inputbox(“Su edad”)Put #canal, N0registro, registro
Registro.nombre guarda el nombre en la posición del registro llamada nombre. Quiere decir que se debe obtener c/elemento del registro.
Cuando guardamos la información en el archivo lo hacemos mandando todo el registro.
Explicación sobre Archivos Aleatorios continuación…
Cuando se lee la información:Get #Canal, N0registro, registro
Leemos todo el registro, para saber que hay en él:Pic.print registro.nombrePic.print registro.edad
Para saber cuantos registros tenemos en total hacemos:W=LOF(#canal)/total_de_bytes
LOF regresa el tamaño del archivo y como sabemos lo que mide en bytes cada registro, podemos saber el total de registros.
Bibliografía
Álvarez(2001). Computación 2, programación. México, Universidad Autónoma de Nuevo León. Publicaciones Cultural
Segunda actividad para parcial uno 20 %
INSTRUCCIÓN DESCRIPCION ARCHIVOSECUENCIAL
ARCHIVOALEATORIO
Open
Número de canal
Modo
Append
Input
Output
Random
FreeFile
Close
28 al 31 de enero
Continuación…
INSTRUCCIÓN DESCRIPCION ARCHIVOSECUENCIAL
ARCHIVOALEATORIO
EOF
On Error Goto <etiqueta>
Type…EndType
Put
Get
TIPO DE ARCHIVO
DEFINICIÓN VENTAJAS DESVENTAJAS
Secuencial
Aleatorio
Criterio para evaluar el cuadro comparativoCRITERIO EXCELENTE
10SATISFACTORIO
5NECESITA MEJORAR
0
1.Descripción de la instrucción de los Archivos Secuenciales
Se muestra correctamente la funcionalidad de los Archivos Secuenciales.
No es del todo correcta la descripción de los Archivos Secuenciales pero se aprecia la finalidad de la misma.
Omitió este punto.
2.Descripción de la instrucción de los Archivos Aleatorios
Se muestra correctamente la funcionalidad de los Archivos Aleatorios.
No es del todo correcta la descripción de los Archivos Aleatorios pero se aprecia la finalidad de la misma.
Omitió este punto.
3.Definición de los Archivos Secuenciales
Se muestra correctamente la definición de los Archivos Secuenciales.
No es del todo correcta la definición de Archivos Secuenciales pero se aprecia la finalidad de la misma.
Omitió este punto.
4.Definición de los Archivos Aleatorios
Se muestra correctamente la definición de los Archivos Aleatorios.
No es del todo correcta la definición de los Archivos Aleatorios pero se aprecia la finalidad de la misma.
Omitió este punto.
5.Ventajas de los Archivos Secuenciales
Se muestran todas las ventajas de los Archivos Secuenciales.
No se muestran todas las Ventajas de los Archivos Secuenciales.
Omitió este punto.
6.Ventajas de los Archivos Aleatorios
Se muestran todas las ventajas de los Archivos Aleatorios.
No se muestran todas las ventajas de los Archivos Secuenciales.
Omitió este punto.
Continuación…
CRITERIO EXCELENTE10
SATISFACTORIO5
NECESITA MEJORAR0
7.Desventajas de los Archivos Secuenciales
Se muestran todas las desventajas de los Archivos Secuenciales.
No se muestran todas las desventajas de los Archivos Secuenciales.
Omitió este punto.
8.Desventajas de los ArchivosAleatorios
Se muestran todas las desventajas de los Archivos Aleatorios.
No se muestran todas las desventajas de los Archivos Aleatorios.
Omitió este punto.
9.Liderazgo Intelectual
Realización efectiva del cuadro comparativo con los puntos señalados del uno al ocho.
Realización más o menos efectiva del cuadro comparativo con los puntos señalados del uno al ocho.
Realización no efectiva del cuadro comparativo con los puntos señalados del uno al ocho.
10.Comunicación La coherencia de la redacción de las categorías solicitadas impecable y sin faltas ortográficas.
Presenta algunos detalles en la coherencia de la redacción de las categorías solicitadas y/o presentan algunas faltas ortográficas y/o no es impecable.
Presenta muchos detalles en la coherencia de la redacción de las categorías solicitadas y/o presentan muchas faltas ortográficas y/o no es impecable.
Proyecto uno 20 % para segundo parcial Adapta el código de las páginas 166 a la 169 de
tú libro o en su defecto el que se muestra en la diapositiva siguiente para resolver un problema X por archivos secuenciales.
Describe el problema Explica cada instrucción
18 al 22 de febrero
Código archivos secuencialesPrivate Sub Crear_Click()Open "C:\Documents and Settings\veronica\Mis documentos\archivo.dat" For Output As #3 nombre = InputBox("deme su nombre") precio = InputBox("deme su fecha") pasillo=InputBox(“deme el pasillo”) Write #3, nombre, precio, pasilloClose #3End Sub
Private Sub Agregar_Click()Open "C:\Documents and Settings\veronica\Mis documentos\archivo.dat" For Append As #4 nombre = InputBox("deme su nombre") precio = InputBox("deme su fecha") pasillo=InputBox(“deme el pasillo”) Write #4, nombre, precio, pasilloClose #4End Sub
Private Sub Listar_Click()Open "C:\Documents and Settings\veronica\Mis documentos\archivo.dat" For Input As #5dat = 0 Do While Not EOF(5) Input #4, nombre, precio, pasillo Picture1.Print nombre Picture1.Print precio Picture1.Print pasillo dat = dat + 3 LoopClose #5End Sub
Private Sub Limpiar_Click() Picture1.ClsEnd Sub
Criterio para evaluar el proyecto uno del parcial dos
Criterios de valoración
puntaje10
puntaje5
puntaje0
1. Descripción La descripción es clara, concisa y congruente a lo solicitado.
La descripción no es del todo clara o concisa o congruente a lo solicitado.
Se omitió este punto
2. Adaptación La adaptación es congruente con la descripción del problema y con lo solicitado
La adaptación no es del todo congruente con la descripción del problema o con lo solicitado
Se omitió este punto
3. Explicación Se explican claramente todas las líneas del código
No se explican claramente todas las líneas del código
Se omitió este punto
4. Presentación y funcionamiento
Es puntual, funciona correctamente y no requirieron ayuda para realizarlo.
Se omitió algún (os) puntos señalados
Se omitió este punto
5. Entrega * En díadas o tríadas No aplica
Proyecto dos 20 % para segundo parcial Adapta el código de las páginas 178 a la 183 de
tú libro o en su defecto el que se muestra en la diapositiva siguiente para resolver un problema X por archivos aleatorios.
Describe el problema Explica cada instrucción
10 al 14 de marzo
Código sugeridoCantidad de bytes total 90
35 para nombre
35 para dirección
15 para teléfono
5 para fecha de cumpleaños
Código sugerido continuación
Código sugerido continuación
Criterio para evaluar el proyecto dos del parcial dos
Criterios de valoración
puntaje10
puntaje5
puntaje0
1. Descripción La descripción es clara, concisa y congruente a lo solicitado.
La descripción no es del todo clara o concisa o congruente a lo solicitado.
Se omitió este punto
2. Adaptación La adaptación es congruente con la descripción del problema y con lo solicitado
La adaptación no es del todo congruente con la descripción del problema o con lo solicitado
Se omitió este punto
3. Explicación Se explican claramente todas las líneas del código
No se explican claramente todas las líneas del código
Se omitió este punto
4. Presentación y funcionamiento
Es puntual, funciona correctamente y no requirieron ayuda para realizarlo.
Se omitió algún (os) puntos señalados
Se omitió este punto
5. Entrega * En díadas o tríadas No aplica