50
1 Algoritmos y Programación Algoritmos y Programación Clase 7 Clase 7 TDU (Tipos de datos Definidos por el Usuario) Manejo de Archivos

Algoritmos y Programación Clase 7 - · PDF fileAlgoritmos y Programación Clase 7 TDU (Tipos de datos Definidos por el Usuario) ... en las variables, puede estipular que Visual Basic

  • Upload
    vuminh

  • View
    223

  • Download
    1

Embed Size (px)

Citation preview

Page 1: Algoritmos y Programación Clase 7 - · PDF fileAlgoritmos y Programación Clase 7 TDU (Tipos de datos Definidos por el Usuario) ... en las variables, puede estipular que Visual Basic

1

Algoritmos y ProgramaciónAlgoritmos y ProgramaciónClase 7Clase 7

TDU (Tipos de datos Definidos por el Usuario)

Manejo de Archivos

Page 2: Algoritmos y Programación Clase 7 - · PDF fileAlgoritmos y Programación Clase 7 TDU (Tipos de datos Definidos por el Usuario) ... en las variables, puede estipular que Visual Basic

Clase 72

Las variables son marcadores de posición que se utilizan para almacenar valores; tienen un nombre y un tipo de dato.El tipo de dato determina la clase de datos que pueden almacenar las variables: numéricos (Byte, Integer, Long, Single, Double, Currency), alfanuméricos (String), lógicos (Boolean), otros (Variant, Date, Object, etc.). Una variable VariantVariant es capaz de almacenar todos los tipos de datos definidos en el sistema.

Repaso: Tipos de DatosRepaso: Tipos de Datos

Page 3: Algoritmos y Programación Clase 7 - · PDF fileAlgoritmos y Programación Clase 7 TDU (Tipos de datos Definidos por el Usuario) ... en las variables, puede estipular que Visual Basic

Clase 73

De forma predeterminada, si no se proporciona un tipo de dato o no se declara, la variable toma el tipo de dato VariantVariant. El valor por defecto de una variable del tipo VariantVariant es EmptyEmptyLas variables de tipo StringString pueden ser de longitud variable o de longitud fija:

DimDim variable As As StringString Longitud variableDimDim variable As As StringString**tamaño Longitud fija

Repaso: Tipos de DatosRepaso: Tipos de Datos

Page 4: Algoritmos y Programación Clase 7 - · PDF fileAlgoritmos y Programación Clase 7 TDU (Tipos de datos Definidos por el Usuario) ... en las variables, puede estipular que Visual Basic

Clase 74

Para evitar problemas al equivocarse de nombre en las variables, puede estipular que Visual Basic le avise siempre que encuentre un nombre que no se haya declarado explícitamente como una variable incluyendo en la sección Declaraciones del módulo de formulario o estándar la instrucción:

OptionOption ExplicitExplicit

Es este caso, VB generará un error cuando encuentre una variable no declarada.

Repaso: Tipos de DatosRepaso: Tipos de Datos

Page 5: Algoritmos y Programación Clase 7 - · PDF fileAlgoritmos y Programación Clase 7 TDU (Tipos de datos Definidos por el Usuario) ... en las variables, puede estipular que Visual Basic

Clase 75

La asignación de datos a variables se realiza mediante el operador de asignación (=):

DimDim A A As As IntegerIntegerA = 20A = 20

Si la variable es un objeto, se debe anteponer la palabra clave SetSet antes de la asignación:

DimDim txttxt As As TextBoxTextBoxSetSet txttxt = Text1= Text1

Repaso: Tipos de DatosRepaso: Tipos de Datos

Text1Text1 es un objeto en la

interfaz gráfica

Page 6: Algoritmos y Programación Clase 7 - · PDF fileAlgoritmos y Programación Clase 7 TDU (Tipos de datos Definidos por el Usuario) ... en las variables, puede estipular que Visual Basic

Clase 76

Se pueden combinar variables de varios tipos diferentes para crear tipos definidos por el usuario (conocidos como TDU). Los tipos definidos por el usuario son útiles si se quiere crear una única variable que registre varias unidades de información relacionadas.Para crear un TDU se utiliza la instrucción TypeTypeen la sección Declaraciones del módulo.

Crear tipos de datos: TDUCrear tipos de datos: TDU

Page 7: Algoritmos y Programación Clase 7 - · PDF fileAlgoritmos y Programación Clase 7 TDU (Tipos de datos Definidos por el Usuario) ... en las variables, puede estipular que Visual Basic

Clase 77

La sintaxis de la instrucción TypeType es:Alcance TypeType NombreTDU

Elemento1 AsAs TipoElemento2 AsAs Tipo......ElementoN AsAs Tipo

EndEnd TypeType

Alcance: Opcional. Es el alcance del tipo de dato. Puede ser PrivatePrivate o PublicPublic. Si no se especifica se asume PublicPublic.

Crear tipos de datos: TDUCrear tipos de datos: TDU

Page 8: Algoritmos y Programación Clase 7 - · PDF fileAlgoritmos y Programación Clase 7 TDU (Tipos de datos Definidos por el Usuario) ... en las variables, puede estipular que Visual Basic

Clase 78

NombreTDU: Requerido. Es el nombre del tipo de dato.

Elemento1, Elemento2, …, ElementoN: Son los nombres de los elementos del TDU. Debe existir al menos uno.

Tipo: Corresponde a un tipo de dato del sistema u otro TDU previamente definido.

Si un TDU tiene un alcance privado (PrivatePrivate), sólo se puede utilizar en el módulo donde está definido.

Crear tipos de datos: TDUCrear tipos de datos: TDU

Page 9: Algoritmos y Programación Clase 7 - · PDF fileAlgoritmos y Programación Clase 7 TDU (Tipos de datos Definidos por el Usuario) ... en las variables, puede estipular que Visual Basic

Clase 79

Si un TDU tiene un alcance público (PublicPublic), se puede utilizar en cualquier parte.

Los módulos de formulario (archivos *.frm) sólo pueden tener declaraciones TDU y variables TDU privadas.

Los módulos estándar (archivos *.bas) pueden tener declaraciones TDU y variables TDU privadas o públicas.

Los elementos del TDU pueden ser “variables normales”, arreglos u otro TDU.

Crear tipos de datos: TDUCrear tipos de datos: TDU

Page 10: Algoritmos y Programación Clase 7 - · PDF fileAlgoritmos y Programación Clase 7 TDU (Tipos de datos Definidos por el Usuario) ... en las variables, puede estipular que Visual Basic

Clase 710

Para acceder a un elemento de un TDU se usa el operador punto:

variableTDU.elementovariableTDU.elemento

Asignar y recuperar los valores de los elementos de una variable TDU es similar a establecer y obtener propiedades:

variableTDU.elementovariableTDU.elemento = valor= valor

También puede asignar una variable a otra si ambas son del mismo TDU:

variable1TDUvariable1TDU = = variable2TDUvariable2TDU

Crear tipos de datos: TDUCrear tipos de datos: TDU

Page 11: Algoritmos y Programación Clase 7 - · PDF fileAlgoritmos y Programación Clase 7 TDU (Tipos de datos Definidos por el Usuario) ... en las variables, puede estipular que Visual Basic

Clase 711

Una vez que se define un TDU, éste entra a formar parte de los tipos de datos disponibles en el proyecto:

Crear tipos de datos: TDUCrear tipos de datos: TDU

Page 12: Algoritmos y Programación Clase 7 - · PDF fileAlgoritmos y Programación Clase 7 TDU (Tipos de datos Definidos por el Usuario) ... en las variables, puede estipular que Visual Basic

Clase 712

Ejemplo 1Ejemplo 1Para un conjunto de puntos (x, y), contar cuántos están sobre el origen, el eje x, el eje y, el primer cuadrante, el segundo cuadrante, el tercer cuadrante y el cuarto cuadrante.

Page 13: Algoritmos y Programación Clase 7 - · PDF fileAlgoritmos y Programación Clase 7 TDU (Tipos de datos Definidos por el Usuario) ... en las variables, puede estipular que Visual Basic

Clase 713

Ejemplo 1: Ejemplo 1: Definición de variablesDefinición de variables

Datos de entrada:N Número de puntosPi Elemento i-ésimo del vector de puntos.

Cada punto tiene un valor X y un valor YDatos de salida:

Origen Número de puntos sobre el origenEjeX Número de puntos sobre el eje XEjeY Número de puntos sobre el eje Y

Page 14: Algoritmos y Programación Clase 7 - · PDF fileAlgoritmos y Programación Clase 7 TDU (Tipos de datos Definidos por el Usuario) ... en las variables, puede estipular que Visual Basic

Clase 714

Ejemplo 1: Ejemplo 1: Definición de variablesDefinición de variables

Cuad1 Número de puntos sobre el primercuadrante

Cuad2 Número de puntos sobre el segundo cuadrante

Cuad3 Número de puntos sobre el tercercuadrante

Cuad4 Número de puntos sobre el cuartocuadrante

Page 15: Algoritmos y Programación Clase 7 - · PDF fileAlgoritmos y Programación Clase 7 TDU (Tipos de datos Definidos por el Usuario) ... en las variables, puede estipular que Visual Basic

Clase 715

'(en General-Declaraciones)Option Explicit 'Requerir declaración de variables'Declaración del TDU PuntoPrivate Type Punto

X As SingleY As Single

End Type'Declaración de variablesDim N As Integer, P() As PuntoDim I As Integer, Origen As IntegerDim EjeX As Integer, EjeY As IntegerDim Cuad1 As Integer, Cuad2 As IntegerDim Cuad3 As Integer, Cuad4 As Integer

Ejemplo 1:Ejemplo 1: Código fuenteCódigo fuente

Page 16: Algoritmos y Programación Clase 7 - · PDF fileAlgoritmos y Programación Clase 7 TDU (Tipos de datos Definidos por el Usuario) ... en las variables, puede estipular que Visual Basic

Clase 716

'(en el evento Click de un CommandButton)'Inicialización de variablesOrigen = 0EjeX = 0: EjeY = 0Cuad1 = 0: Cuad2 = 0Cuad3 = 0: Cuad4 = 0'Lectura de datosN = Val(InputBox("Ingrese el número de Puntos:"))ReDim P(1 To N)For I = 1 To N

P(I).X = Val(InputBox("X(" & I & ") ="))P(I).Y = Val(InputBox("Y(" & I & ") ="))

Next I

Ejemplo 1:Ejemplo 1: Código fuenteCódigo fuente

Page 17: Algoritmos y Programación Clase 7 - · PDF fileAlgoritmos y Programación Clase 7 TDU (Tipos de datos Definidos por el Usuario) ... en las variables, puede estipular que Visual Basic

Clase 717

'CálculosFor I = 1 To N

If P(I).X = 0 And P(I).Y = 0 ThenOrigen = Origen + 1

ElseIf P(I).Y = 0 ThenEjeX = EjeX + 1

ElseIf P(I).X = 0 ThenEjeY = EjeY + 1

ElseIf P(I).X > 0 And P(I).Y > 0 ThenCuad1 = Cuad1 + 1

ElseIf P(I).X < 0 And P(I).Y > 0 ThenCuad2 = Cuad2 + 1

ElseIf P(I).X < 0 And P(I).Y < 0 ThenCuad3 = Cuad3 + 1

ElseCuad4 = Cuad4 + 1

End IfNext I

Ejemplo 1:Ejemplo 1: Código fuenteCódigo fuente

Page 18: Algoritmos y Programación Clase 7 - · PDF fileAlgoritmos y Programación Clase 7 TDU (Tipos de datos Definidos por el Usuario) ... en las variables, puede estipular que Visual Basic

Clase 718

'Mostrar resultadosDim Aux As StringAux = Aux & "Origen = " & Origen & vbCrLfAux = Aux & "EjeX = " & EjeX & vbCrLfAux = Aux & "EjeY = " & EjeY & vbCrLfAux = Aux & "Cuad1 = " & Cuad1 & vbCrLfAux = Aux & "Cuad2 = " & Cuad2 & vbCrLfAux = Aux & "Cuad3 = " & Cuad3 & vbCrLfAux = Aux & "Cuad4 = " & Cuad4 & vbCrLfText1.Text = Aux

Ejemplo 1:Ejemplo 1: Código fuenteCódigo fuente

Page 19: Algoritmos y Programación Clase 7 - · PDF fileAlgoritmos y Programación Clase 7 TDU (Tipos de datos Definidos por el Usuario) ... en las variables, puede estipular que Visual Basic

Clase 719

Un archivoarchivo es un conjunto de datos relacionados ubicados en un disco.Dependiendo del tipo de datos que contiene el archivo, se usa el tipo de acceso apropiado. En VB hay tres tipos de acceso a archivos:

SecuencialSecuencial: para leer y escribir archivos de texto en bloques continuos.AleatorioAleatorio: para leer y escribir archivos binarios de texto o estructurados como registros de longitud fija.BinarioBinario: para leer y escribir archivos estructurados de forma arbitraria.

Manejo de ArchivosManejo de Archivos

Page 20: Algoritmos y Programación Clase 7 - · PDF fileAlgoritmos y Programación Clase 7 TDU (Tipos de datos Definidos por el Usuario) ... en las variables, puede estipular que Visual Basic

Clase 720

El tipo de acceso a archivos que se utilizará en este curso es el tipo de acceso secuencialsecuencial.El acceso secuencial está diseñado para usarlo con archivos de texto normales como los archivos creados con un editor de textos típico (como el Bloc de Notas).Un archivo abierto para acceso secuencial permite:

Leer datos desde el archivo (Input)Escribir datos en el archivo (Output)Anexar datos en el archivo (Append)

Manejo de ArchivosManejo de Archivos

Page 21: Algoritmos y Programación Clase 7 - · PDF fileAlgoritmos y Programación Clase 7 TDU (Tipos de datos Definidos por el Usuario) ... en las variables, puede estipular que Visual Basic

Clase 721

Para abrir un archivo para acceso secuencial, se usa la instrucción OpenOpen.Sintaxis:

OpenOpen archivoarchivo ForFor modomodo As As #numArchivo#numArchivoarchivoarchivo: Requerido. Expresión de cadena que especifica un nombre de archivo; puede incluir el directorio o carpeta y la unidad de disco. modomodo: Requerido. Palabra clave que especifica el modo de archivo: InputInput (Lectura), OutputOutput (Escritura), AppendAppend(Escritura, agregando datos)

Instrucción Instrucción OpenOpen

Page 22: Algoritmos y Programación Clase 7 - · PDF fileAlgoritmos y Programación Clase 7 TDU (Tipos de datos Definidos por el Usuario) ... en las variables, puede estipular que Visual Basic

Clase 722

#numArchivo#numArchivo: Requerido. Un número de archivo válido entre 1 y 511 inclusive. El carácter # es opcional. Para obtener el siguiente número de archivo disponible se utiliza la función FreeFileFreeFile.

Si la ruta del archivo no se incluye en archivoarchivo, VB buscará el archivo en el directorio actual.El directorio actual, inicialmente, es la carpeta desde donde se ejecuta la aplicación.Para cambiar el directorio actual se utiliza la instrucción ChDirChDir.

Instrucción Instrucción OpenOpen

Page 23: Algoritmos y Programación Clase 7 - · PDF fileAlgoritmos y Programación Clase 7 TDU (Tipos de datos Definidos por el Usuario) ... en las variables, puede estipular que Visual Basic

Clase 723

Cuando se abre un archivo secuencial en modo InputInput, el archivo ya debe existir; de lo contrario se produce un error.

Cuando se abre un archivo que no existe en modo OutputOutput o AppendAppend, la instrucción OpenOpen primero crea el archivo y luego lo abre.

Para cerrar un archivo abierto con la instrucción OpenOpen se utiliza la instrucción CloseClose.

Instrucción Instrucción OpenOpen

Page 24: Algoritmos y Programación Clase 7 - · PDF fileAlgoritmos y Programación Clase 7 TDU (Tipos de datos Definidos por el Usuario) ... en las variables, puede estipular que Visual Basic

Clase 724

Devuelve un tipo Integer que indica el siguiente número de archivo disponible para su uso en la instrucción OpenOpen.Sintaxis:

FreeFile(FreeFile(numIntervalonumIntervalo))numIntervalonumIntervalo: Opcional. Un valor entero 0 o 1.

Si numIntervalonumIntervalo es 0 (predeterminado), FreeFileFreeFiledevuelve un número de archivo entre 1 y 255, inclusive. Si numIntervalonumIntervalo es 1, FreeFileFreeFile devuelve un número de archivo entre 256 y 511.

Función Función FreeFileFreeFile

Page 25: Algoritmos y Programación Clase 7 - · PDF fileAlgoritmos y Programación Clase 7 TDU (Tipos de datos Definidos por el Usuario) ... en las variables, puede estipular que Visual Basic

Clase 725

Cierra un archivo secuencial abierto con la instrucción OpenOpen.Sintaxis:

CloseClose #numArchivo#numArchivo#numArchivo#numArchivo: Opcional. Es cualquier número de archivo válido. El carácter # es opcional. Si se omite, CloseClose cierra todos los archivos abiertos con la instrucción OpenOpen.

Se pueden cerrar varios archivos separando cada numero de archivo con una coma en la misma instrucción CloseClose.

Instrucción Instrucción CloseClose

Page 26: Algoritmos y Programación Clase 7 - · PDF fileAlgoritmos y Programación Clase 7 TDU (Tipos de datos Definidos por el Usuario) ... en las variables, puede estipular que Visual Basic

Clase 726

Cambia el directorio o carpeta actual.Sintaxis:

ChDirChDir rutaruta

rutaruta: Requerido. Un String que identifica el directorio o carpeta que va a ser el nuevo directorio o carpeta actual. Si no existe se genera un error.

La rutaruta puede incluir la unidad de disco. Si no se especifica la unidad, la instrucción ChDirChDir cambia el directorio de la unidad actual.

Instrucción Instrucción ChDirChDir

Page 27: Algoritmos y Programación Clase 7 - · PDF fileAlgoritmos y Programación Clase 7 TDU (Tipos de datos Definidos por el Usuario) ... en las variables, puede estipular que Visual Basic

Clase 727

Cambia la unidad de disco actual.Sintaxis:

ChDriveChDrive unidadunidad

unidadunidad: Requerido. Un String que especifica una unidad de disco existente.

Si unidadunidad es una cadena de longitud cero (""), la unidad de disco actual no cambia. Si unidadunidad no existe se genera un error.

Instrucción Instrucción ChDriveChDrive

Page 28: Algoritmos y Programación Clase 7 - · PDF fileAlgoritmos y Programación Clase 7 TDU (Tipos de datos Definidos por el Usuario) ... en las variables, puede estipular que Visual Basic

Clase 728

La propiedad PathPath del objeto AppApp (objeto global que guarda información de la aplicación) devuelve un Stringcon la ruta de acceso desde donde se está ejecutando la aplicación.App.PathApp.Path especifica la ruta de acceso del archivo .vbp de proyecto cuando se ejecuta la aplicación desde el entorno de desarrollo, o la ruta de acceso del archivo .exe cuando se ejecuta la aplicación como un archivo ejecutable. Utilice la instrucción ChDirChDir App.PathApp.Path para cambiar la carpeta actual al directorio de ejecución de la aplicación.

App.PathApp.Path

Page 29: Algoritmos y Programación Clase 7 - · PDF fileAlgoritmos y Programación Clase 7 TDU (Tipos de datos Definidos por el Usuario) ... en las variables, puede estipular que Visual Basic

Clase 729

Para leer datos desde un archivo secuencial se puede utilizar:

La instrucción Input #La instrucción Line Input #La función Input()

Para escribir datos en un archivo secuencial se puede utilizar:

La instrucción Print #La instrucción Write #

Lectura y escritura de datosLectura y escritura de datos

Page 30: Algoritmos y Programación Clase 7 - · PDF fileAlgoritmos y Programación Clase 7 TDU (Tipos de datos Definidos por el Usuario) ... en las variables, puede estipular que Visual Basic

Clase 730

Lee datos de un archivo secuencial abierto y asigna esos datos a variables. Sintaxis:

InputInput ##numArchivonumArchivo, , listaVariableslistaVariables

numArchivonumArchivo: Requerido. Cualquier número de archivo válido.listaVariableslistaVariables: Requerido. Lista de variables delimitada por comas que se le asignan los valores que se leen del archivo.

Instrucción Instrucción InputInput ##

Page 31: Algoritmos y Programación Clase 7 - · PDF fileAlgoritmos y Programación Clase 7 TDU (Tipos de datos Definidos por el Usuario) ... en las variables, puede estipular que Visual Basic

Clase 731

Las variables a leer con la instrucción InputInput ## no pueden ser una matriz o una variable de objeto. Sin embargo, es posible usar variables que describen elementos de una matriz o de un tipo definido por el usuario.

Los elementos de datos de un archivo deben aparecer en el mismo orden que tienen las variables en listavariableslistavariables y deben coincidir con variables del mismo tipo de datos.

Instrucción Instrucción InputInput ##

Page 32: Algoritmos y Programación Clase 7 - · PDF fileAlgoritmos y Programación Clase 7 TDU (Tipos de datos Definidos por el Usuario) ... en las variables, puede estipular que Visual Basic

Clase 732

Si una variable es numérica y los datos no lo son, se asigna un valor cero a esa variable.Si se llega al fin del archivo cuando se está leyendo un elemento de datos, se da por terminada la entrada y se produce un error. La instrucción InputInput ## ignora las comillas dobles ("") en la entrada de datos. Esta instrucción reconoce como separador válido de datos a la coma (,) y al Enter. Otro separador puede producir resultados inesperados.

Instrucción Instrucción InputInput ##

Page 33: Algoritmos y Programación Clase 7 - · PDF fileAlgoritmos y Programación Clase 7 TDU (Tipos de datos Definidos por el Usuario) ... en las variables, puede estipular que Visual Basic

Clase 733

Devuelve un tipo Boolean que indica si se llegó al final de un archivo abierto.Sintaxis:

EOF(EOF(numArchivonumArchivo))

numArchivonumArchivo: Requerido. Un número de archivo válido.

La función EOF devuelve TrueTrue cuando se llega al final del archivo en caso contrario devuelve FalseFalse.

Función EOFFunción EOF

Page 34: Algoritmos y Programación Clase 7 - · PDF fileAlgoritmos y Programación Clase 7 TDU (Tipos de datos Definidos por el Usuario) ... en las variables, puede estipular que Visual Basic

Clase 734

Escribe datos en un archivo secuencial.Sintaxis:

PrintPrint ##numArchivonumArchivo, , expexp poscarposcar

#numArchivo#numArchivo: Requerido. Un número de archivo válido. El carácter # es obligatorio.expexp: Opcional. La expresión a escribir en el archivo.poscarposcar: Opcional. Especifica el punto de inserción del carácter siguiente. Si se omite, el siguiente carácter se imprime en la línea siguiente.

Instrucción Instrucción PrintPrint ##

Page 35: Algoritmos y Programación Clase 7 - · PDF fileAlgoritmos y Programación Clase 7 TDU (Tipos de datos Definidos por el Usuario) ... en las variables, puede estipular que Visual Basic

Clase 735

Utilice un punto y coma (;) en poscarposcar para situar el punto de inserción inmediatamente a continuación del último carácter mostrado. Utilice una coma (,) ó TabTab para situar el punto de inserción al principio de la siguiente zona de impresión.

La instrucción PrintPrint ## no escribe comillas dobles alrededor de una expresión de tipo String.

Instrucción Instrucción PrintPrint ##

Page 36: Algoritmos y Programación Clase 7 - · PDF fileAlgoritmos y Programación Clase 7 TDU (Tipos de datos Definidos por el Usuario) ... en las variables, puede estipular que Visual Basic

Clase 736

Ejemplo 2Ejemplo 2El archivo “Datos.txt” contiene varios registros con los siguientes datos de estudiantes: sexo (“M”, “F”), edad ([14, 35]), código de la comuna donde vive ([1, 16]).Elaborar un programa en VB que efectúe los siguientes procesos:

Leer todos los registros de datos.Calcular el total y el porcentaje de mujeres y de hombres.Calcular el total y el porcentaje de los mayores de edad y de los menores de edad.Determinar el porcentaje de los estudiantes que viven en las comunas de código impar pero distinto de 3.

Page 37: Algoritmos y Programación Clase 7 - · PDF fileAlgoritmos y Programación Clase 7 TDU (Tipos de datos Definidos por el Usuario) ... en las variables, puede estipular que Visual Basic

Clase 737

Ejemplo 2: Ejemplo 2: Definición de variablesDefinición de variablesDatos de entrada:

Ei Registro i-ésimo de un estudiante.Cada registro tiene:- Un elemento Sexo de tipo String- Un elemento Edad de tipo Integer- Un elemento CodComuna de tipo Integer

Datos de salida:NumH Número total de HombresNumM Número total de Mujeres PorcH Porcentaje de HombresPorcM Porcentaje de Mujeres

Page 38: Algoritmos y Programación Clase 7 - · PDF fileAlgoritmos y Programación Clase 7 TDU (Tipos de datos Definidos por el Usuario) ... en las variables, puede estipular que Visual Basic

Clase 738

Ejemplo 2: Ejemplo 2: Definición de variablesDefinición de variables

MenE Número de menores de edadMayE Número de mayores de edad PorcMenE Porcentaje de menores de edadPorcMayE Porcentaje de mayores de edad PorcImpar Porcentaje de estudiantes que viven en comunas de código impar y distinto de 3.

Variables auxiliares:N Contador de estudiantesNumImpar Número de estudiantes que viven en comunas de código impar y distinto de 3.

Page 39: Algoritmos y Programación Clase 7 - · PDF fileAlgoritmos y Programación Clase 7 TDU (Tipos de datos Definidos por el Usuario) ... en las variables, puede estipular que Visual Basic

Clase 739

'(en un módulo estándar)'Requerir declaración de variablesOption Explicit'Declaración del TDU EstudiantePublic Type Estudiante

Sexo As String * 1Edad As IntegerCodComuna As Integer

End Type'Declaración de variables globalesDim N As Integer, E() As Estudiante, NumH As IntegerDim NumM As Integer, PorcH As Single, PorcM As SingleDim MenE As Integer, MayE As IntegerDim PorcMenE As Single, PorcMayE As SingleDim PorcImpar As Single, NumImpar As Integer

Ejemplo 2:Ejemplo 2: Código fuenteCódigo fuente

Page 40: Algoritmos y Programación Clase 7 - · PDF fileAlgoritmos y Programación Clase 7 TDU (Tipos de datos Definidos por el Usuario) ... en las variables, puede estipular que Visual Basic

Clase 740

'(en el evento Click de un CommandButton)ChDrive App.Path 'Cambiamos el drive actualChDir App.Path 'Cambiamos el directorio actual'Abrimos el archivoDim NumArch As IntegerNumArch = FreeFile()Open "Datos.txt" For Input As #NumArch'Leer datos mientras no sea el final del archivoN = 0Do While Not EOF(NumArch)

N = N + 1ReDim Preserve E(1 To N)Input #NumArch, E(N).Sexo, E(N).Edad, E(N).CodComuna

LoopClose #NumArch

Ejemplo 2:Ejemplo 2: Código fuenteCódigo fuente

Page 41: Algoritmos y Programación Clase 7 - · PDF fileAlgoritmos y Programación Clase 7 TDU (Tipos de datos Definidos por el Usuario) ... en las variables, puede estipular que Visual Basic

Clase 741

'CálculosNumH = 0: NumM = 0: MenE = 0: MayE = 0: NumImpar = 0Dim I As IntegerFor I = 1 To N

If E(I).Sexo = "M" Then: NumH = NumH + 1Else: NumM = NumM + 1: End IfIf E(I).Edad < 18 Then: MenE = MenE + 1Else: MayE = MayE + 1: End IfIf E(I).CodComuna Mod 2 = 1 And _

E(I).CodComuna <> 3 Then NumImpar = NumImpar + 1Next IPorcH = NumH / N: PorcM = NumM / NPorcMenE = MenE / N: PorcMayE = MayE / NPorcImpar = NumImpar / N

Ejemplo 2:Ejemplo 2: Código fuenteCódigo fuente

Page 42: Algoritmos y Programación Clase 7 - · PDF fileAlgoritmos y Programación Clase 7 TDU (Tipos de datos Definidos por el Usuario) ... en las variables, puede estipular que Visual Basic

Clase 742

'Mostrar resultadosDim Aux As StringAux = Aux & "NumH = " & NumH & vbCrLfAux = Aux & "NumM = " & NumM & vbCrLfAux = Aux & "PorcH = " & PorcH & vbCrLfAux = Aux & "PorcM = " & PorcM & vbCrLfAux = Aux & "MenE = " & MenE & vbCrLfAux = Aux & "MayE = " & MayE & vbCrLfAux = Aux & "PorcMenE = " & PorcMenE & vbCrLfAux = Aux & "PorcMayE = " & PorcMayE & vbCrLfAux = Aux & "PorcImpar = " & PorcImpar & vbCrLfI = FreeFile()Open "Resultados.txt" For Output As #IPrint #I, AuxClose #I

Ejemplo 2:Ejemplo 2: Código fuenteCódigo fuente

Page 43: Algoritmos y Programación Clase 7 - · PDF fileAlgoritmos y Programación Clase 7 TDU (Tipos de datos Definidos por el Usuario) ... en las variables, puede estipular que Visual Basic

Clase 743

TareaTareaTomar el primer punto del parcial pasado, realizar el algoritmo usando TDU y programarlo, utilizando un conjunto de datos creados por ustedes.

Page 44: Algoritmos y Programación Clase 7 - · PDF fileAlgoritmos y Programación Clase 7 TDU (Tipos de datos Definidos por el Usuario) ... en las variables, puede estipular que Visual Basic

44

Algoritmos y ProgramaciónAlgoritmos y ProgramaciónClase 7Clase 7

TDU (Tipos de datos Definidos por el Usuario)

Manejo de Archivos

Page 45: Algoritmos y Programación Clase 7 - · PDF fileAlgoritmos y Programación Clase 7 TDU (Tipos de datos Definidos por el Usuario) ... en las variables, puede estipular que Visual Basic

Clase 745

Lee una línea de un archivo secuencial abierto y la asigna a una variable String. Sintaxis:

LineLine InputInput ##numArchivonumArchivo, , variablevariable

numArchivonumArchivo: Requerido. Cualquier número de archivo válido. El carácter # es obligatorio.variablevariable: Requerido. Una variable de tipo String.

Instrucción Instrucción LineLine InputInput ##

Page 46: Algoritmos y Programación Clase 7 - · PDF fileAlgoritmos y Programación Clase 7 TDU (Tipos de datos Definidos por el Usuario) ... en las variables, puede estipular que Visual Basic

Clase 746

La instrucción LineLine InputInput # lee un carácter en el archivo hasta que encuentra un retorno de carro (ASCII 13) o una secuencia retorno de carro-avance de línea (ASCII 13 –ASCII 10) y luego almacena en variablevariable los caracteres leídos.

Las secuencias de retorno de carro-avance de línea no se tienen en cuenta y no se añaden a la cadena de caracteres.

Instrucción Instrucción LineLine InputInput ##

Page 47: Algoritmos y Programación Clase 7 - · PDF fileAlgoritmos y Programación Clase 7 TDU (Tipos de datos Definidos por el Usuario) ... en las variables, puede estipular que Visual Basic

Clase 747

Devuelve un tipo String que contiene caracteres de un archivo abierto en modo InputInput.

Sintaxis:Input(Input(numCarnumCar, , ##numArchivonumArchivo))

numCarnumCar: Requerido. Un entero correspondiente al número de caracteres a leer.#numArchivo#numArchivo: Requerido. Un número de archivo válido. El carácter # es opcional.

Función Función InputInput

Page 48: Algoritmos y Programación Clase 7 - · PDF fileAlgoritmos y Programación Clase 7 TDU (Tipos de datos Definidos por el Usuario) ... en las variables, puede estipular que Visual Basic

Clase 748

A diferencia de la instrucción InputInput ##, la función InputInputdevuelve todos los caracteres que lee, incluyendo puntos y coma, retornos de carro, avances de línea, comillas y espacios iniciales.Para leer todo el contenido del archivo, utilice la función LOF para determinar el número de caracteres que tiene el archivo.LOF(LOF(numArchivonumArchivo) Devuelve un tipo Long que indica el número de caracteres de un archivo abierto mediante la instrucción OpenOpen.

Función Función InputInput

Page 49: Algoritmos y Programación Clase 7 - · PDF fileAlgoritmos y Programación Clase 7 TDU (Tipos de datos Definidos por el Usuario) ... en las variables, puede estipular que Visual Basic

Clase 749

Escribe datos en un archivo secuencial.Sintaxis:

WriteWrite ##numArchivonumArchivo, , listaExplistaExp poscarposcar

#numArchivo#numArchivo: Requerido. Un número de archivo válido. El carácter # es obligatorio.listaExplistaExp: Opcional. Una o varias expresiones delimitadas por comas, espacios o puntos y comas (;) que se desean escribir en el archivo. La instrucción WriteWrite ##imprime una coma en el archivo por cada expresión que se escriba en el archivo y comillas dobles alrededor de expresiones de tipo String.

Instrucción Instrucción WriteWrite ##

Page 50: Algoritmos y Programación Clase 7 - · PDF fileAlgoritmos y Programación Clase 7 TDU (Tipos de datos Definidos por el Usuario) ... en las variables, puede estipular que Visual Basic

Clase 750

poscarposcar: Opcional. Especifica el punto de inserción del carácter siguiente. Puede ser una coma (,) o un punto y coma (;). Si se omite, el siguiente carácter se imprime en la línea siguiente.

poscarposcar igual a una coma (,) tiene el mismo efecto que poscarposcar igual a un punto y coma (;): situar el punto de inserción inmediatamente a continuación del último carácter mostrado, separando los datos por una coma en el archivo.

Instrucción Instrucción WriteWrite ##