manejo de visual fox, basie y pyton Público

manejo de visual fox, basie y pyton

Nelson Forero
Curso por Nelson Forero, actualizado hace más de 1 año Colaboradores

Descripción

manejo de los programas pyton, basie y visual fox

Información de los módulos

Sin etiquetas
En este manual daremos a conocer el lenguaje de programación Visual Fox Pro 6.0. Visual Fox Pro es un gestor de base de datos, orientado a la programación de objetos. Visual Fox Pro pertenece a la familia xbase lo que hace que su programación sea sencilla, estructurada y mas fácil de entender tanto para programadores principiantes como programadores expertos. Nos enfocaremos en cinco áreas principales: Base de datos: Trata sobre el diseño, creación y manipulación de tablas libres o tablas con integridad referencial (base de datos) Programción: En esta parte seremos capaces de identificar y aplicar las estructuras básicas de programación y conocer aspectos sobre la programación orientada a objetos. Formularios: Aplicaremos conocimientos para la integración de una interfaz con el usuario y base de datos. Informes: Aprenderemos a diseñar las salidas de los sistemas de información, haciendo uso de las herramientas que el programa ofrece. SQL: En esta sección haremos uso del lenguaje SQL para manipular datos, creando así diferentes consultas o vistas. En este manual mostraremos lo básico pero también puedes consultar algún libro de Visual FoxPro pues todo será para tu desarrollo, en las bibliotecas o en las librerías. FoxPro es un lenguaje de mucha rapidez, esto lo convierte en un lenguaje de los más rápidos en el mercado, FoxPro es también uno de los lenguajes de programación que contiene mucha potencia en el manejo de las bases de datos. Conceptos Básicos Base de datos es un conjunto de datos almacenados en campos y registros, es decir que la base de datos esta conformada por estos dos elementos. Así, por ejemplo: Base de datos (Campos) (Nombre de las variables) Nombre Edad Sueldo (Registros) José Mendoza 19 2,568.52 Omar Mendoza 20 3,759.45 Los campos son los que están en vertical y los registros llamados también datos, son los que están en horizontal. Componentes de Interfaz Algunas herramientas más utilizadas son: Ventana Examinar: una vista, tipo hoja de cálculo, de una tabla. Ventana Código: para desplegar código asociado a varios eventos en los formularios y controles. Cuando un evento se dispara el código se ejecuta. Ventana Depuración: permite examinar variables de memoria o valores campos y establecer puntos de interrupción. La ejecución del programa se detiene cuando una variable de memoria o una expresión con un punto de interrupción cambian de valor. Comando Opciones (Menú de Herramientas): permite controlar la configuración de docenas de características en el entorno FoxPro, incluidos todos los comandos SET, así como planillas y bibliotecas de clases. Ventana Propiedades: permite establecer propiedades en una buena cantidad de generadores, incluidos los generadores de formularios, informes etiquetas y de las bases de datos, también proporciona acceso a propiedades, métodos y código de eventos. Administrador de Proyectos: un diseño completamente novedoso de FoxPro para Windows, este administrador de proyectos administra todos los componentes de un proyecto en cinco grupos: Bases de datos (con extensión .DBC), tablas libres (con extensión .DBF), vistas locales y remotas, conexiones, etc.
Mostrar menos
Sin etiquetas
Generadores Los generadores son entornos de trabajo en los que se construyen componentes de una aplicación de FoxPro. En la siguiente lista te mostrare algunos generadores: Generador de clases Para construir objetos reutilizables. Generador de Bases de Datos Para organizar los datos en tablas y documentar las relaciones entre tablas. Generador de formularios Para diseñar las pantallas de la aplicación. Generador de consulta Para construir conjuntos de datos utilizados en reportes y en pantallas de sólo lectura. Generador de informes Para construir informes para la pantalla o la impresora. Generador de menús Construye el sistema de menús que ejecuta una aplicación. Generador de tablas Administra el formato de las tablas utilizadas en la aplicación. Generador de cuadrículas Permite aprender cómo las configuraciones de la propiedad de cuadrícula del objeto controlan la operación de la cuadrícula. Asistentes Son conjunto de cuadro de diálogos que te ayudan paso a paso a crear una determinada aplicación, por ejemplo un formulario, etc. Asistente para formularios: Construye "Pantallas instantáneas" con la estructura de las tablas basándose en clases prediseñadas, incluidos efectos especiales en las pantallas y botones de navegación ínter construidos. Asistente para documentación: Documenta la aplicación. Asistente para informes: Diseña informes, sencillos o complejos, utilizando un poco más que la estructura de las tablas. Asistente para tablas: Útil para hacer tablas sencillas Barras de Herramientas El propósito de que hayan estas barras es para hacerte un poco más fácil el trabajo, es decir que el uso que le dará a la ventana de comandos será un poquito reducido. Paleta de colores creo que te imaginas que es la barra de los colores en función RGB. Bueno RGB significa (Rojo, Verde y Azul) Generador de bases de datos en esta barra se manejan el entorno de datos, iconos para: crear, agregar, y quitar una tabla así, como también modificar, vista remota o local, examinar una tabla o editar procedimientos almacenados en el contenedor de la base de datos. Generador de formularios esta barra te permite el paso rápido de uno a otro entre varios elementos usados en el diseño de pantallas: el entorno de los datos, la ventana propiedades, la ventana código la barra Controles de formularios, la paleta de colores, la barra de herramientas. Distribución, entre otros. Presentación Preliminar para que una vez diseñado un informe puedas apreciarlo como te quedará y si no te gusta pues lo podrás modificar. Estándar Este lo verás cuando inicies FoxPro, proporciona acceso al generador de formularios y al Generador de informes, a bases de datos de impresión consultan tablas, conexiones, vistas, etiquetas, programas, clases, archivos de texto y menús. Administrador de Proyectos Estos proyectos están integrados por el Administrador de proyectos, quien mantiene la pista de los componentes de la aplicación. Conforme se agregan componentes a un proyecto, (Estas son las carpetas o nombre de los menús del Administrador) FoxPro los colecta bajo alguno de los siguientes encabezados: Datos: las bases de datos (y todos los elementos que pueden describir), incluidas las tablas, vistas locales y remotas, conexiones y procedimientos almacenados, así como tablas libres y consultas. Documentos: formularios, etiquetas e informes. Bibliotecas de clases: repositorios de objetos usados en la aplicación. Código: los archivos con extensión .PRG que contienen código que no está asociado con un formulario, así como bibliotecas API y archivos llamados por la aplicación. Otros: menús, archivos de texto y otros, incluyendo mapas de bits. La barra de herramientas En FoxPro hay muchos botones, estos botones pertenecen a la barra de herramientas de VFP. También existen otras barras de herramientas. Se hace clic en el menú Ver, aparece una sola opción de barras de herramientas. Sólo haz clic en la barra que quieres activar y aparecerá al igual que la estándar. Algunas de estas barras ya las vimos anteriormente, ¿recuerdas?.
Mostrar menos
Sin etiquetas
Programación. Conceptos. Usualmente se agrupa el código fuente en archivos de programa. Un archivo de programa esta compuesto de varias sentencias, que incluyen comandos, funciones y estructuras de control de flujo. El compilador traduce el contenido de estos archivos de texto ASCII a código interpretado. En cuanto el compilador ha traducido el código fuente crea un archivo con extensión .FXP que es el que va a utilizar a partir de ese momento. Cada vez que el programador introduce algún cambio en el archivo .PRG el compilador compara la fecha de ambos archivos y crea una nueva versión compilada del programa. Haciendo el código legible: Espacios en blanco: Significan áreas vacías dentro del código de programa, también espacios, tabulaciones o líneas vacías. Sangrado: Sangrar es la mejor manera de optimizar el código. Es una práctica común sangrar dentro de comandos pares anidados, por ejemplo: DO… ENDDO IF… ENDIF SCAN..ENDSCAN DOCASE...ENDCASE WITH…ENDWITH Mayúsculas y minúsculas: Muchos programadores utilizan mayúsculas y minúsculas para distinguir entre los elementos del programa; mayúsculas para los comandos y minúsculas para las variables. Comentarios: Los comentarios pueden existir en una línea precedidos por un asterisco y después de una línea de código, si están separados de && consecutivos. Continuar líneas largas de código: Puede continuar líneas largas de código en la siguiente línea insertando un ";" al final de la línea. Una de las técnicas más útiles en la programación son los encabezados de programa, por ejemplo: * Nombre del programa : nombre * Autor : Héctor Hernández * Propósito : Dibujar cuadros en la pantalla * Fecha : 12/12/2001 Comandos de Asignación Para crear variables de memoria y darles valores al mismo tiempo, escriba lo siguiente: X=3 STORE "lunes" TO día Para solamente crearlas: PUBLIC a, b, c PRIVATE x, y, z LOCAL nombre, trabaja DIMENSION nombres(3) Declaración de Variables. Las variables temporales se pueden declarar utilizando los comandos anteriores, únicamente, hay que tomar en cuenta la forma en que se van a declarar o escribir, como ejemplo: Nom_Empleado; NomEmpleado, si son variables de memoria se le puede anteponer una ‘m ó x’ de la forma siguiente, mNom_Empleado; xNom_Empleado, también se pueden declarar variables haciendo saber el tipo de datos que maneja por ejemplo: cNom_Empleado, nSueldo_Empleado; dFecha_Ingreso, etc.
Mostrar menos
Sin etiquetas
Programación. Conceptos. Usualmente se agrupa el código fuente en archivos de programa. Un archivo de programa esta compuesto de varias sentencias, que incluyen comandos, funciones y estructuras de control de flujo. El compilador traduce el contenido de estos archivos de texto ASCII a código interpretado. En cuanto el compilador ha traducido el código fuente crea un archivo con extensión .FXP que es el que va a utilizar a partir de ese momento. Cada vez que el programador introduce algún cambio en el archivo .PRG el compilador compara la fecha de ambos archivos y crea una nueva versión compilada del programa. Haciendo el código legible: Espacios en blanco: Significan áreas vacías dentro del código de programa, también espacios, tabulaciones o líneas vacías. Sangrado: Sangrar es la mejor manera de optimizar el código. Es una práctica común sangrar dentro de comandos pares anidados, por ejemplo: DO… ENDDO IF… ENDIF SCAN..ENDSCAN DOCASE...ENDCASE WITH…ENDWITH Mayúsculas y minúsculas: Muchos programadores utilizan mayúsculas y minúsculas para distinguir entre los elementos del programa; mayúsculas para los comandos y minúsculas para las variables. Comentarios: Los comentarios pueden existir en una línea precedidos por un asterisco y después de una línea de código, si están separados de && consecutivos. Continuar líneas largas de código: Puede continuar líneas largas de código en la siguiente línea insertando un ";" al final de la línea. Una de las técnicas más útiles en la programación son los encabezados de programa, por ejemplo: * Nombre del programa : nombre * Autor : Héctor Hernández * Propósito : Dibujar cuadros en la pantalla * Fecha : 12/12/2001 Comandos de Asignación Para crear variables de memoria y darles valores al mismo tiempo, escriba lo siguiente: X=3 STORE "lunes" TO día Para solamente crearlas: PUBLIC a, b, c PRIVATE x, y, z LOCAL nombre, trabaja DIMENSION nombres(3) Declaración de Variables. Las variables temporales se pueden declarar utilizando los comandos anteriores, únicamente, hay que tomar en cuenta la forma en que se van a declarar o escribir, como ejemplo: Nom_Empleado; NomEmpleado, si son variables de memoria se le puede anteponer una ‘m ó x’ de la forma siguiente, mNom_Empleado; xNom_Empleado, también se pueden declarar variables haciendo saber el tipo de datos que maneja por ejemplo: cNom_Empleado, nSueldo_Empleado; dFecha_Ingreso, etc. Operadores. Los operadores + y – son, por supuesto, usados para añadir y substraer números, pero también se pueden usar en campos de caracteres. El operador más eslabona dos expresiones de caracteres, campos o variables de memoria, de forma que Fred + Smith; producirá: FredSmith. El operador menos quita espacio rezagado. Operadores cíclicos y ramificaciones. Las operaciones cíclicas y de ramificación son los mecanismos para crear la lógica de un programa, ejemplo: FOR I=1 TO 10 ? I && Imprime los números del 1 al 10 ENDFOR SELECT clientes SCAN ? Clientes.nombre&&Lee un archivo desde el inicio hasta el final ENDSCAN SELECT clientes GO TOP DO WHILE NOT EOF() ? Clientes.nombre&& Lee un archivo desde el inicio hasta el final SKIP ENNDO Puede salir de estas construcciones cíclicas en cualquier momento mediante el comando: EXIT. La ramificación en VF es controlada con la construcción IF.. ENDIF, por ejemplo: IF I >10 ? [El contador excedió 10] ENDIF Los contadores se utilizan a menudo para salir de operaciones cíclicas: L=1 DO WHILE L=LEN(nombrelista) IF [CRUZ]$ nombrelista(L) SEEK nombrelista(L) IF nombre= [John] DO prgnombre LOOP ENDIF ENDIF ENDDO Se recomienda que cuando se utiliza un operador cíclico, un operador condicional, o cualquier otro operador que abra y cierre una estructura se escriba el comando primero y luego se realice el proceso, esto para no perderse en la programación.
Mostrar menos
Sin etiquetas
introducción En esta sección se ve un repaso básico de las tres formas de trabajar con diferentes tipos de archivos en visual basic: Archivos secuenciales, archivos aleatorios y archivos binarios. Por último en el final de la sección, se describe como utilizar sentencias y funciones propias de visual basic para trabajar con archivos y directorios del sistema operativo, como por ejemplo la sentencia Dir para buscar ficheros, Filecopy para copiar , ChDir, Mkdir para crear carpetas y algunas otras funciones relacionadas. Sentencia Open Esta sentencia es la encargada de abrir o crear un archivo, ya sea para leer datos del mismo, sobre escribirlos y/o para agregarle datos. Esta sentencia tiene una serie de parámetros que varían de acuerdo a lo que queramos hacer. Por ejemplo :   Open "c:\prueba.txt" For Input As #1   Este ejemplo abre un archivo para poder acceder a los datos que contenga en su interior. cuando decimos abrir, estamos diciendo que se encuentra actualmente abierto y alojado en la memoria ram para poder manipularlo. En el primer parámetro indicamos el path del archivo en el que queremos trabajar. Luego la palabra "As #1" indica el número de archivo que estamos utilizando. Este número lo asignamos nosotros y va desde el rango 1 al 511. El "número de archivo" se utiliza para poder diferenciar al archivo en el código. Cada archivo que se encuentra abierto no se puede asignar un número de archivo igual, ya que nos daría un error en tiempo de ejecución. Por ejemplo no podríamos hacer esto:   Open "archivo1.txt" For Input As #1 Open "otroarchivo1.txt" For Input As #1   Una vez que terminamos de trabajar con un archivo que se encuentra abierto y que no lo vamos a utilizar mas, debemos cerrarlo. para ello se utiliza la sentencia Close seguido del número de archivo que lo identifica. Por ejemplo: Close #2   Esto cerrará al archivo abierto que anteriormente le asignamos el número de archivo 2. También si tengo 3 archivos abiertos podría hacer lo siguiente: Close #1, #2, #3   Si utilizamos la sentencia Close sin ningún parámetro, o mejor dicho ningún número de archivo, se cerrarán todos los archivos cargados en memoria por nuestra aplicación (los que nosotros abrimos con Open). Por lo general, si trabajamos con varios archivos abiertos simultáneamente, es aconsejable utilizar la sentencia Close sin ningún parámetro, de este modo cuando termine de ejecutarse el procedimiento se cerrarán todos los archivos abiertos. Hay una función en Visual basic llamada FreeFile. Esta función lo que hace es darnos un número de archivo que esté libre y que se pueda usar, para que de este modo no intentamos abrir uno esté siendo utilizado, y evitar un error en tiempo de ejecución. Para usar la función es muy fácil, por ejemplo: Dim NumeroArchivo As Integer NumeroArchivo = FreeFile Open "La ruta de un archivo" For Input As #NumeroArchivo   3 - Archivos secuenciales Los archivos secuenciales se denominan de esta manera por que la forma de escribir y leer los datos en un archivo es, desde el principio hasta el fin del archivo, es decir, si yo quisiera acceder a un determinado dato del archivo y este dato se encuentra en la mitad del archivo, para llegar a ese dato necesito pasar por todos los demás datos, de forma secuencial. Por lo general se suelen utilizar los archivos secuenciales, para trabajar con archivos que contengan una estructura de datos no muy compleja. por que por ejemplo, si utilizáramos un archivo para almacenar 50000 nombres con sus respectivos datos (apellido, teléfono, dirección etc...) , este mecanismo resultaría ineficiente, ya que si quisiera recuperar por ejemplo el registro n° 3650, para leer este dato tendría que pasar previamente por los 3649 registros anteriores a este, haciendo mas lento el acceso y por lo tanto desperdiciando recursos del sistema.   4 - Diferentes tipos de acceso Append: esta sentencia se utiliza para agregar información a un archivo de texto. Ejemplo : Open "c:\miarchivo.txt" For Append As #1   Si el archivo ya contiene datos, se le agregarán al mismo al final del archivo, si no contenía datos los agrega igual. Si el archivo no existe, lo crea y le agrega los datos. Input: la sentencia Input se utiliza para leer datos de un archivo de texto, ejemplo: Open "c:\miarchivo.txt" For Input As #2   Este ejemplo abre un archivo para leer los datos del mismo. En las próximas líneas veremos ejemplos de como leer los datos , escribir y guardar. Una cosa importante con respecto a leer datos de un archivo con Input es que, si el archivo que queremos abrir, no existe, se producirá un error en tiempo de ejecución al intentar abrir un archivo que no existe, por eso debemos verificar la ruta del mismo siempre que esté bien escrita en la sentencia Open y evitarnos dolores de cabeza, y simpre añadir algún manejador de error para este caso Output: esta sentencia se utiliaza para crear un archivo de texto y grabar datos. Esta es igual que Append salvo por un gran detalle: Output crea el archivo y le agrega información, pero si el archivo existía y contenía información previa, sobre escribe todos los datos del archivo por los datos nuevos, perdiendo los anteriores datos. Si accedemos con Output a un archivo que no existe, no se produce un error, si no que se crea dicho archivo. Conclusión : si vamos a añadir datos a un archivo existente (para actualizarlo por ejemplo) hay que utilizar la sentencia Append. si vamos a crear un archivo vacío y nuevo para grabar nuevos datos, hay que utilizar la sentencia Output. si vamos a abrir un archivo para leer datos utilizamos la sentencia Input.
Mostrar menos
Sin etiquetas
Leer datos de un archivo utilizando Line Input C omo se comentó antes , para leer datos de un archivo se utiliza la sentencia Input. pero para leer los datos del archivo y poder utilizarlos en nuestro programa se utilizan 2 sentencias o instrucciones: Line Input e Input. Ejemplo:   Dim mivariable As String Open "c:\nombres.txt" For Input As #1 While Not EOF(1) Line Input #1, mivariable Wend Close #1   En el ejemplo anterior aparece una función nueva llamada EOF. Esta función significa End Of File o fin de archivo. Cuando abrimos un archivo para leer información con Input, debemos saber en que momento llegamos al final del archivo, por que de lo contrario la sentencia Line Input o Input seguiría leyendo líneas donde no existen datos después del fin del archivo, y por lo tanto se produciría un error en tiempo de ejecución por querer leer un dato que no existe. Mediante la condición Not Eof(1) leeremos los datos hasta que llegue al final del archivo, y en cada pasada del bucle While se almacenará en la variable mivariable, línea por línea los datos del mismo. Es evidente que como está planteado el ejemplo habría que manipular los datos leídos y agregar otras instrucciones, por que en este ejemplo la variable mivariable solo almacenaría los datos de la línea que está leyendo y borrando los datos de las líneas que almacenó anteriormente. Mas adelante veremos como solucionar esto. conclusión : para leer datos de un archivo se utiliza la sentencia Line Input y luego de la coma debemos poner una variable nuestra para almacenar los datos que se van leyendo de la línea actual
Mostrar menos
Sin etiquetas
Ejemplo para leer un archivo de texto utilizando Line Input   Lo siguiente, lee un archivo de texto línea por línea, y carga el contenido en un control ListBox. colocar un control List1, un Command1 y un Text1 para indicar el path del archivo a leer:   Option Explicit Private Sub Command1_Click() On Error GoTo errSub Dim n_File As Integer Dim Linea As String 'Elimina el contenido del listbox List1.Clear 'Número de archivo libre n_File = FreeFile 'Abre el archivo para leer los datos Open text1.Text For Input As n_File 'Recorre linea a linea el mismo y añade las lineas al control List Do While Not EOF(n_File) 'Lee la linea Line Input #n_File, Linea List1.AddItem Linea Loop Exit Sub errSub: 'error MsgBox "Número de error: " & Err.Number & vbNewLine & _ "Descripción del error: " & Err.Description, vbCritical End Sub Private Sub Form_Load() Command1.Caption = " Cargar en Listbox " End Sub     Este otro ejemplo, lo que hace es leer un archivo de texto para contar las líneas del mismo Colocar un command1 en el formulario y pegar el siguiente código fuente   Public Function Contar_Lineas(ByVal strTextFile As String) As Long Dim F As Integer Dim Lineas As Long Dim str_Linea As String ' Número de archivo libre F = FreeFile ' Abre el archivo de texto Open strTextFile For Input As #F 'Recorre todo el archivo de texto _ linea por linea hasta el final Do 'Lee una línea Line Input #F, str_Linea ' Incrementa la cantidad de lineas leidas Lineas = Lineas + 1 ' Leerá hasta que llegue al fin de archivo Loop While Not EOF(F) ' Cierra el archivo de texto abierto Close #F ' Retorna a la función el número de lineas del fichero Contar_Lineas = Lineas End Function Private Sub Command1_Click() Dim Path As String Path = InputBox(" Ingrese la ruta de un archivo de texto ", _ " Contar líneas ") If Path = vbNullString Then Exit Sub MsgBox " Cantidad de lineas: " & Contar_Lineas(Path) End Sub   7 - Leer el contenido de un archivo de texto con la función Input La función input, a diferencia de Line Input que Lee por línea, Input lee todo el contenido del archivo de una sola ves, es decir no necesitamos, como en el ejemplo anterior, utilizar un bucle. El modo de usarlo es el siguiente: Primero se abre el archivo con Open, por ejemplo: Open Path_Archivo For Input As #1   Luego se asigna a una variable, el contenido que devolverá la función Input: Contenido = Input(LOF(1), #1) Un ejemplo: Lo siguiente lee el contenido de un archivo txt y lo carga en un textBox multilínea Colocar un TextBox llamado txt_Path ( para especificar la ruta del archivo ). El Textbox que mostrará los datos del fichero, colocarle el nombre txt_Contenido Código en un botón: On Error GoTo Err_Sub Dim n_File As Integer Dim Contenido As String 'Número de archivo libre n_File = FreeFile 'Abre el archivo indicado Open txt_Path For Input As n_File 'Lee todo los datos del archivo y lo almacena en la variable Contenido = Input$(LOF(n_File), #n_File) 'Cierra el archivo abierto Close n_File 'Carga el contenido de la variable en el TextBox txt_Contenido = Contenido Exit Sub Err_Sub: MsgBox Err.Description, vbCritical
Mostrar menos
Sin etiquetas
Escribir datos en archivos de texto Para escribir datos en archivos de texto se utiliza la sentencia Print y Write. Ejemplo:   Dim nombre As String Dim edad As Integer Dim telefono As String Open "c:\miarchivo.txt" For Append As #1 Print #1, "esta es una línea" Print #1, "esta es otra línea" Print #1, nombre, edad, telefono Close #1     En este ejemplo agregamos datos a un archivo existente llamado miArchivo.txt con la sentencia Print. Primero abrimos el archivo con Open. luego la sentencia Print lleva 2 parámetros. el primero indica el archivo que estamos manipulando (el archivo n°1, dentro del código), el segundo parámetro indica los datos que se agregarán en el mismo. En el segundo parámetro podemos poner un dato directamente (una cadena, número, etc...),, por último cerramos el archivo.   Escribir datos con la sentencia Write A diferencia de Print, la sentencia Write escribe datos en un archivo separados por comas. Ejemplo:   Dim nombre As String Dim apellido As String apellido = "Peres" nombre = "Carlos" Open App.Path & "\Archivo.txt" For Output As #1 Write #1, nombre, apellido Close #1     Como podemos ver la sentencia Write escribe los datos en el archivo separados por coma. En la primera línea escribirá el contenido de las variables nombre y apellido . También se pueden pasar los datos directamente a Write sin usar variables, por ejemplo:   Write #1, "Un dato", "Otro dato", "Otro mas"   Nota importante: cuando escribimos datos con la sentencia Print se utiliza la sentencia Line Input para leer los datos del archivo. En cambio cuando escribimos datos separados por comas con la sentencia Write debemos utilizar la sencia Input Para que esta página no sea tan extensa, he armado 10 ejercicios que utilizan todo lo visto hasta aquí, o sea el tema relacionado a los archivos secuenciales. Dentro del código se encuentra detallado cada paso y lo podés descargar al final de esta página.   9 - Archivos aleatorios o directos A diferencia de los archivos secuenciales, los archivos aleatorios almacenan datos en forma de registros. Como habíamos dicho en el capítulo anterior para leer datos de un archivo secuencial había que leer todo el archivo, es decir que no podíamos leer por ejemplo los datos que estuviesen en la línea 35 del mismo sin antes pasar por todos los datos anteriores, por eso su nombre de archivo secuencial. En cambio los archivos aleatorios, también llamados archivos directos, almacenan los datos con una estructura diferente. Los datos se guardan en registros mediante una estructura definida de tipo Type (estructura definida por nosotros) también llamada UDT Por ejemplo si tuviesemos 25 registros, cada uno con datos (apellido, email, telefono,etc..), y quisiera acceder al registro 17, puedo leer los datos del registro 17 sin tener que leer los 16 registros anteriores, ganando con ello mas velocidad y teniendo una estructura de datos definida. Para abrir un archivo aleatorio para trabajar con él, se utiliza la sentencia Open con algunos cambios en lo que se refiere a los archivos secuenciales Ejemplo: open "elarchivo.dat" for random as #1 len = len(mivariable)   Como podemos ver para abrir un archivo de acceso aleatorio se utiliza la palabra Random (aleatorio). Luego debemos indicar el número de archivo para identificarlo, y por último una opción nueva : Len. cada registro en el archivo, que es una estructura de datos Type, tiene que tener una longitud fija. Mediante la función Len de visual Basic debemos indicar el tamaño de la estructura de datos que vamos a utilizar. para que quede mas claro un ejemplo: Primero definimos una estructura de datos:   Private Type t_clientes nombre As String * 20 apellido As String * 15 dirección As String * 30 edad As Integer End Type   Después creamos una variable llamada clientes de tipo t_clientes Dim clientes As t_clientes   ahora abrimos nuestro archivo, y en el parámetro de la función Len le pasamos la variable para que visual basic calcule el tamaño de la estructura t_clientes   Open "datos.dat" For Random As #1 Len = Len(clientes)   La estructura de datos debe tener un tamaño fijo, no datos variables como en el caso de los archivos secuenciales, de ahí que se indicara en el Type en las variables mediante el asterisco en el caso de los String. En cada campo de la estructura de datos debemos indicar el tamaño de la variable. En el caso del campo nombre de tipo string le hemos asignado una longitud fija de 20 bytes, en el apellido 15 y en la dirección 30 bytes. La variable o el campo edad que es de tipo integer, no debemos indicar el tamaño de la variable, ya que sabemos que un número integer ocupa 2 bytes. En total esta estructura t_clientes tiene una longitud de 67 bytes (30 + 20 + 15 + 2 ). Si no indicáramos en la sentencia Open el tamaño de la estructura, visual basic, por defecto asumiría la estructura de un tamaño de 128 bytes, y si nuestra estructura tendría mayor tamaño ocurriría un error en tiempo de ejecución, por lo cual siempre debemos utilizar la función len para calcular el tamaño de la misma.
Mostrar menos
Sin etiquetas
Sin etiquetas
Python es un lenguaje de programación interpretado cuya filosofía hace hincapié en una sintaxis que favorezca un código legible. Se trata de un lenguaje de programación multiparadigma, ya que soporta orientación a objetos, programación imperativa y, en menor medida, programación funcional. Es un lenguaje interpretado, usa tipado dinámico y es multiplataforma. Es administrado por la Python Software Foundation. Posee una licencia de código abierto, denominada Python Software Foundation License,1​ que es compatible con la Licencia pública general de GNU a partir de la versión 2.1.1, e incompatible en ciertas versiones anteriores. Python fue creado a finales de los ochenta2​ por Guido van Rossum en el Centro para las Matemáticas y la Informática (CWI, Centrum Wiskunde & Informatica), en los Países Bajos, como un sucesor del lenguaje de programación ABC, capaz de manejar excepciones e interactuar con el sistema operativo Amoeba.3​ El nombre del lenguaje proviene de la afición de su creador por los humoristas británicos Monty Python.4​ Van Rossum es el principal autor de Python, y su continuo rol central en decidir la dirección de Python es reconocido, refiriéndose a él como Benevolente Dictador Vitalicio (en inglés: Benevolent Dictator for Life, BDFL). En 1991, van Rossum publicó el código de la versión 0.9.0 en alt.sources.5​ En esta etapa del desarrollo ya estaban presentes clases con herencia, manejo de excepciones, funciones y los tipos modulares, como: str, list, dict, entre otros. Además en este lanzamiento inicial aparecía un sistema de módulos adoptado de Modula-3; van Rossum describe el módulo como “una de las mayores unidades de programación de Python”.2​ El modelo de excepciones en Python es parecido al de Modula-3, con la adición de una cláusula else.3​ En el año 1994 se formó comp.lang.python, el foro de discusión principal de Python, marcando un hito en el crecimiento del grupo de usuarios de este lenguaje. Python alcanzó la versión 1.0 en enero de 1994. Una característica de este lanzamiento fueron las herramientas de la programación funcional: lambda, reduce, filter y map. Van Rossum explicó que “hace 12 años, Python adquirió lambda, reduce(), filter() y map(), cortesía de un hacker informático de Lisp que las extrañaba y que envió parches”.6​ El donante fue Amrit Prem; no se hace ninguna mención específica de cualquier herencia de Lisp en las notas de lanzamiento. La última versión liberada proveniente de CWI fue Python 1.2. En 1995, van Rossum continuó su trabajo en Python en la Corporation for National Research Initiatives (CNRI) en Reston, Virginia, donde lanzó varias versiones del software. Durante su estancia en CNRI, van Rossum lanzó la iniciativa Computer Programming for Everybody (CP4E), con el fin de hacer la programación más accesible a más gente, con un nivel de 'alfabetización' básico en lenguajes de programación, similar a la alfabetización básica en inglés y habilidades matemáticas necesarias por muchos trabajadores. Python tuvo un papel crucial en este proceso: debido a su orientación hacia una sintaxis limpia, ya era idóneo, y las metas de CP4E presentaban similitudes con su predecesor, ABC. El proyecto fue patrocinado por DARPA.7​ En el año 2007, el proyecto CP4E está inactivo, y mientras Python intenta ser fácil de aprender y no muy arcano en su sintaxis y semántica, alcanzando a los no-programadores, no es una preocupación activa.8​ En el año 2000, el equipo principal de desarrolladores de Python se cambió a BeOpen.com para formar el equipo BeOpen PythonLabs. CNRI pidió que la versión 1.6 fuera pública, continuando su desarrollo hasta que el equipo de desarrollo abandonó CNRI; su programa de lanzamiento y el de la versión 2.0 tenían una significativa cantidad de traslapo.9​ Python 2.0 fue el primer y único lanzamiento de BeOpen.com. Después que Python 2.0 fuera publicado por BeOpen.com, Guido van Rossum y los otros desarrolladores de PythonLabs se unieron en Digital Creations. Python 2.0 tomó una característica mayor del lenguaje de programación funcional Haskell: listas por comprensión. La sintaxis de Python para esta construcción es muy similar a la de Haskell, salvo por la preferencia de los caracteres de puntuación en Haskell, y la preferencia de Python por palabras claves alfabéticas. Python 2.0 introdujo además un sistema de recolección de basura capaz de recolectar referencias cíclicas.9​
Mostrar menos
Sin etiquetas
Posterior a este doble lanzamiento, y después que van Rossum dejó CNRI para trabajar con desarrolladores de software comercial, quedó claro que la opción de usar Python con software disponible bajo GNU GPL era muy deseable. La licencia usada entonces, la Python License, incluía una cláusula estipulando que la licencia estaba gobernada por el estado de Virginia, por lo que, bajo la óptica de los abogados de Free Software Foundation (FSF), se hacía incompatible con GPL. CNRI y FSF se relacionaron para cambiar la licencia de software libre de Python para hacerla compatible con GPL. En el año 2001, van Rossum fue premiado con FSF Award for the Advancement of Free Software. Python 1.6.1 es esencialmente el mismo que Python 1.6, con unos pocos arreglos de bugs, y con una nueva licencia compatible con GPL.1​   Código Python con coloreado de sintaxis. Python 2.1 fue un trabajo derivado de Python 1.6.1, así como también de Python 2.0. Su licencia fue renombrada a: Python Software Foundation License. Todo el código, documentación y especificaciones añadidas, desde la fecha del lanzamiento de la versión alfa de Python 2.1, tiene como dueño a Python Software Foundation (PSF), una organización sin ánimo de lucro fundada en el año 2001, tomando como modelo la Apache Software Foundation.1​ Incluido en este lanzamiento fue una implementación del scoping más parecida a las reglas de static scoping (del cual Scheme es el originador).10​ Una innovación mayor en Python 2.2 fue la unificación de los tipos en Python (tipos escritos en C), y clases (tipos escritos en Python) dentro de una jerarquía. Esa unificación logró un modelo de objetos de Python puro y consistente.11​ También fueron agregados los generadores que fueron inspirados por el lenguaje Icon.12​ Las adiciones a la biblioteca estándar de Python y las decisiones sintácticas fueron influenciadas fuertemente por Java en algunos casos: el package logging,13​ introducido en la versión 2.3, está basado en log4j; el parser SAX, introducido en 2.0; el package threading,14​ cuya clase Thread expone un subconjunto de la interfaz de la clase homónima en Java.
Mostrar menos
Sin etiquetas
Características y paradigmas[editar] Python es un lenguaje de programación multiparadigma. Esto significa que más que forzar a los programadores a adoptar un estilo particular de programación, permite varios estilos: programación orientada a objetos, programación imperativa y programación funcional. Otros paradigmas están soportados mediante el uso de extensiones. Python usa tipado dinámico y conteo de referencias para la administración de memoria. Una característica importante de Python es la resolución dinámica de nombres; es decir, lo que enlaza un método y un nombre de variable durante la ejecución del programa (también llamado enlace dinámico de métodos). Otro objetivo del diseño del lenguaje es la facilidad de extensión. Se pueden escribir nuevos módulos fácilmente en C o C++. Python puede incluirse en aplicaciones que necesitan una interfaz programable. Aunque la programación en Python podría considerarse en algunas situaciones hostil a la programación funcional tradicional del Lisp, existen bastantes analogías entre Python y los lenguajes minimalistas de la familia Lisp como puede ser Scheme. Filosofía[editar] Los usuarios de Python se refieren a menudo a la Filosofía Python que es bastante análoga a la filosofía de Unix. El código que sigue los principios de Python de legibilidad y transparencia se dice que es "pythonico". Contrariamente, el código opaco u ofuscado es bautizado como "no pythonico" ("unpythonic" en inglés). Estos principios fueron famosamente descritos por el desarrollador de Python Tim Peters en El Zen de Python Bello es mejor que feo. Explícito es mejor que implícito. Simple es mejor que complejo. Complejo es mejor que complicado. Plano es mejor que anidado. Disperso es mejor que denso. La legibilidad cuenta. Los casos especiales no son tan especiales como para quebrantar las reglas. Lo práctico gana a lo puro. Los errores nunca deberían dejarse pasar silenciosamente. A menos que hayan sido silenciados explícitamente. Frente a la ambigüedad, rechaza la tentación de adivinar. Debería haber una -y preferiblemente sólo una- manera obvia de hacerlo. Aunque esa manera puede no ser obvia al principio a menos que usted sea holandés.15​ Ahora es mejor que nunca. Aunque nunca es a menudo mejor que ya mismo. Si la implementación es difícil de explicar, es una mala idea. Si la implementación es fácil de explicar, puede que sea una buena idea. Los espacios de nombres (namespaces) son una gran idea ¡Hagamos más de esas cosas! Tim Peters, El Zen de Python Desde la versión 2.1.2, Python incluye estos puntos (en su versión original en inglés) como un huevo de pascua que se muestra al ejecutar import this.16​   La LAMP comprende Python (aquí con Squid) Modo interactivo[editar] El intérprete de Python estándar incluye un modo interactivo en el cual se escriben las instrucciones en una especie de intérprete de comandos: las expresiones pueden ser introducidas una a una, pudiendo verse el resultado de su evaluación inmediatamente, lo que da la posibilidad de probar porciones de código en el modo interactivo antes de integrarlo como parte de un programa. Esto resulta útil tanto para las personas que se están familiarizando con el lenguaje como para los programadores más avanzados. Existen otros programas, tales como IDLE, bpython o IPython,17​ que añaden funcionalidades extra al modo interactivo, como el autocompletado de código y el coloreado de la sintaxis del lenguaje. Ejemplo del modo interactivo: >>> 1 + 1 2 >>> a = range(10) >>> print a [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] Filosofía[editar] Los usuarios de Python se refieren a menudo a la Filosofía Python que es bastante análoga a la filosofía de Unix. El código que sigue los principios de Python de legibilidad y transparencia se dice que es "pythonico". Contrariamente, el código opaco u ofuscado es bautizado como "no pythonico" ("unpythonic" en inglés). Estos principios fueron famosamente descritos por el desarrollador de Python Tim Peters en El Zen de Python Bello es mejor que feo. Explícito es mejor que implícito. Simple es mejor que complejo. Complejo es mejor que complicado. Plano es mejor que anidado. Disperso es mejor que denso. La legibilidad cuenta. Los casos especiales no son tan especiales como para quebrantar las reglas. Lo práctico gana a lo puro. Los errores nunca deberían dejarse pasar silenciosamente. A menos que hayan sido silenciados explícitamente. Frente a la ambigüedad, rechaza la tentación de adivinar. Debería haber una -y preferiblemente sólo una- manera obvia de hacerlo. Aunque esa manera puede no ser obvia al principio a menos que usted sea holandés.15​ Ahora es mejor que nunca. Aunque nunca es a menudo mejor que ya mismo. Si la implementación es difícil de explicar, es una mala idea. Si la implementación es fácil de explicar, puede que sea una buena idea. Los espacios de nombres (namespaces) son una gran idea ¡Hagamos más de esas cosas! Tim Peters, El Zen de Python Desde la versión 2.1.2, Python incluye estos puntos (en su versión original en inglés) como un huevo de pascua que se muestra al ejecutar import this.16​   La LAMP comprende Python (aquí con Squid) Modo interactivo[editar] El intérprete de Python estándar incluye un modo interactivo en el cual se escriben las instrucciones en una especie de intérprete de comandos: las expresiones pueden ser introducidas una a una, pudiendo verse el resultado de su evaluación inmediatamente, lo que da la posibilidad de probar porciones de código en el modo interactivo antes de integrarlo como parte de un programa. Esto resulta útil tanto para las personas que se están familiarizando con el lenguaje como para los programadores más avanzados. Existen otros programas, tales como IDLE, bpython o IPython,17​ que añaden funcionalidades extra al modo interactivo, como el autocompletado de código y el coloreado de la sintaxis del lenguaje. Ejemplo del modo interactivo: >>> 1 + 1 2 >>> a = range(10) >>> print a [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]v Filosofía[editar] Los usuarios de Python se refieren a menudo a la Filosofía Python que es bastante análoga a la filosofía de Unix. El código que sigue los principios de Python de legibilidad y transparencia se dice que es "pythonico". Contrariamente, el código opaco u ofuscado es bautizado como "no pythonico" ("unpythonic" en inglés). Estos principios fueron famosamente descritos por el desarrollador de Python Tim Peters en El Zen de Python Bello es mejor que feo. Explícito es mejor que implícito. Simple es mejor que complejo. Complejo es mejor que complicado. Plano es mejor que anidado. Disperso es mejor que denso. La legibilidad cuenta. Los casos especiales no son tan especiales como para quebrantar las reglas. Lo práctico gana a lo puro. Los errores nunca deberían dejarse pasar silenciosamente. A menos que hayan sido silenciados explícitamente. Frente a la ambigüedad, rechaza la tentación de adivinar. Debería haber una -y preferiblemente sólo una- manera obvia de hacerlo. Aunque esa manera puede no ser obvia al principio a menos que usted sea holandés.15​ Ahora es mejor que nunca. Aunque nunca es a menudo mejor que ya mismo. Si la implementación es difícil de explicar, es una mala idea. Si la implementación es fácil de explicar, puede que sea una buena idea. Los espacios de nombres (namespaces) son una gran idea ¡Hagamos más de esas cosas! Tim Peters, El Zen de Python Desde la versión 2.1.2, Python incluye estos puntos (en su versión original en inglés) como un huevo de pascua que se muestra al ejecutar import this.16​   La LAMP comprende Python (aquí con Squid) Modo interactivo[editar] El intérprete de Python estándar incluye un modo interactivo en el cual se escriben las instrucciones en una especie de intérprete de comandos: las expresiones pueden ser introducidas una a una, pudiendo verse el resultado de su evaluación inmediatamente, lo que da la posibilidad de probar porciones de código en el modo interactivo antes de integrarlo como parte de un programa. Esto resulta útil tanto para las personas que se están familiarizando con el lenguaje como para los programadores más avanzados. Existen otros programas, tales como IDLE, bpython o IPython,17​ que añaden funcionalidades extra al modo interactivo, como el autocompletado de código y el coloreado de la sintaxis del lenguaje. Ejemplo del modo interactivo: >>> 1 + 1 2 >>> a = range(10) >>> print a [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] Filosofía[editar] Los usuarios de Python se refieren a menudo a la Filosofía Python que es bastante análoga a la filosofía de Unix. El código que sigue los principios de Python de legibilidad y transparencia se dice que es "pythonico". Contrariamente, el código opaco u ofuscado es bautizado como "no pythonico" ("unpythonic" en inglés). Estos principios fueron famosamente descritos por el desarrollador de Python Tim Peters en El Zen de Python Bello es mejor que feo. Explícito es mejor que implícito. Simple es mejor que complejo. Complejo es mejor que complicado. Plano es mejor que anidado. Disperso es mejor que denso. La legibilidad cuenta. Los casos especiales no son tan especiales como para quebrantar las reglas. Lo práctico gana a lo puro. Los errores nunca deberían dejarse pasar silenciosamente. A menos que hayan sido silenciados explícitamente. Frente a la ambigüedad, rechaza la tentación de adivinar. Debería haber una -y preferiblemente sólo una- manera obvia de hacerlo. Aunque esa manera puede no ser obvia al principio a menos que usted sea holandés.15​ Ahora es mejor que nunca. Aunque nunca es a menudo mejor que ya mismo. Si la implementación es difícil de explicar, es una mala idea. Si la implementación es fácil de explicar, puede que sea una buena idea. Los espacios de nombres (namespaces) son una gran idea ¡Hagamos más de esas cosas! Tim Peters, El Zen de Python Desde la versión 2.1.2, Python incluye estos puntos (en su versión original en inglés) como un huevo de pascua que se muestra al ejecutar import this.16​   La LAMP comprende Python (aquí con Squid) Modo interactivo[editar] El intérprete de Python estándar incluye un modo interactivo en el cual se escriben las instrucciones en una especie de intérprete de comandos: las expresiones pueden ser introducidas una a una, pudiendo verse el resultado de su evaluación inmediatamente, lo que da la posibilidad de probar porciones de código en el modo interactivo antes de integrarlo como parte de un programa. Esto resulta útil tanto para las personas que se están familiarizando con el lenguaje como para los programadores más avanzados. Existen otros programas, tales como IDLE, bpython o IPython,17​ que añaden funcionalidades extra al modo interactivo, como el autocompletado de código y el coloreado de la sintaxis del lenguaje. Ejemplo del modo interactivo: >>> 1 + 1 2 >>> a = range(10) >>> print a [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] Filosofía[editar] Los usuarios de Python se refieren a menudo a la Filosofía Python que es bastante análoga a la filosofía de Unix. El código que sigue los principios de Python de legibilidad y transparencia se dice que es "pythonico". Contrariamente, el código opaco u ofuscado es bautizado como "no pythonico" ("unpythonic" en inglés). Estos principios fueron famosamente descritos por el desarrollador de Python Tim Peters en El Zen de Python Bello es mejor que feo. Explícito es mejor que implícito. Simple es mejor que complejo. Complejo es mejor que complicado. Plano es mejor que anidado. Disperso es mejor que denso. La legibilidad cuenta. Los casos especiales no son tan especiales como para quebrantar las reglas. Lo práctico gana a lo puro. Los errores nunca deberían dejarse pasar silenciosamente. A menos que hayan sido silenciados explícitamente. Frente a la ambigüedad, rechaza la tentación de adivinar. Debería haber una -y preferiblemente sólo una- manera obvia de hacerlo. Aunque esa manera puede no ser obvia al principio a menos que usted sea holandés.15​ Ahora es mejor que nunca. Aunque nunca es a menudo mejor que ya mismo. Si la implementación es difícil de explicar, es una mala idea. Si la implementación es fácil de explicar, puede que sea una buena idea. Los espacios de nombres (namespaces) son una gran idea ¡Hagamos más de esas cosas! Tim Peters, El Zen de Python Desde la versión 2.1.2, Python incluye estos puntos (en su versión original en inglés) como un huevo de pascua que se muestra al ejecutar import this.16​   La LAMP comprende Python (aquí con Squid) Modo interactivo[editar] El intérprete de Python estándar incluye un modo interactivo en el cual se escriben las instrucciones en una especie de intérprete de comandos: las expresiones pueden ser introducidas una a una, pudiendo verse el resultado de su evaluación inmediatamente, lo que da la posibilidad de probar porciones de código en el modo interactivo antes de integrarlo como parte de un programa. Esto resulta útil tanto para las personas que se están familiarizando con el lenguaje como para los programadores más avanzados. Existen otros programas, tales como IDLE, bpython o IPython,17​ que añaden funcionalidades extra al modo interactivo, como el autocompletado de código y el coloreado de la sintaxis del lenguaje. Ejemplo del modo interactivo: >>> 1 + 1 2 >>> a = range(10) >>> print a [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
Mostrar menos
Sin etiquetas
inglés) como un huevo de pascua que se muestra al ejecutar import this.16​   La LAMP comprende Python (aquí con Squid) Modo interactivo[editar] El intérprete de Python estándar incluye un modo interactivo en el cual se escriben las instrucciones en una especie de intérprete de comandos: las expresiones pueden ser introducidas una a una, pudiendo verse el resultado de su evaluación inmediatamente, lo que da la posibilidad de probar porciones de código en el modo interactivo antes de integrarlo como parte de un programa. Esto resulta útil tanto para las personas que se están familiarizando con el lenguaje como para los programadores más avanzados. Existen otros programas, tales como IDLE, bpython o IPython,17​ que añaden funcionalidades extra al modo interactivo, como el autocompletado de código y el coloreado de la sintaxis del lenguaje. Ejemplo del modo interactivo: >>> 1 + 1 2 >>> a = range(10) >>> print a [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
Mostrar menos
Sin etiquetas
Sin etiquetas
Sin etiquetas
Mostrar resumen completo Ocultar resumen completo