Instituto Superior Jujuy Tecnicatura Superior en Informática con orientación en Sistemas de Información Asignatura: Técnicas de Programación FORMULARIOS. EJERCICIOS Ejercicio Nº 1 En este ejemplo vamos a crear un formulario para calcular la edad de una persona a partir de su fecha de nacimiento. Para el desarrollo de esta aplicación, proceda a ubicar los siguientes controles en el formulario: • • • 2 etiquetas 2 cajas de texto 3 botones de comando Luego, proceda a establecer las propiedades según se indica a continuación: Form1 Name Caption MaxButton MinButton FrmEdad Escriba la fecha actual .F.-Falso .F.-Falso Label1 Name Caption LblFecNac Fecha de nacimiento: Label2 Name Caption LblEdad Su edad es: Text1 Name Enabled TxtFecNac .T.-Verdadero Name Enabled TxtEdad .F.-Falso Text2 Command1 Name Caption Command2 Name Caption Command3 Name Caption 1 CmdAceptar \<Aceptar CmdLimpiar \<Limpiar CmdSalir \<Salir 2013 Instituto Superior Jujuy Tecnicatura Superior en Informática con orientación en Sistemas de Información Asignatura: Técnicas de Programación Luego de establecidas las propiedades de los controles, proceda a ingresar el siguiente código: Objeto: FrmEdad SET DATE FRENCH SET CENTURY ON Procedimiento: Load && formato dd/mm/aa && establece 4 dígitos para el año: dd/mm/aaaa Objeto: FrmEdad cNomDia cDia cMes cAnno cFecha = = = = = Procedimiento: INIT Cdow(Date()) Str(Day(Date()), 2) Cmonth(Date()) Str(Year(Date()), 4) cNomDia + “ ” + cDia + “ de ” + cMes + “ del ” + cAnno Thisform.Caption = cFecha Thisform.TxtFecNac.Setfocus Thisform.Refresh Objeto: CmdAceptar Procedimiento: Clic dFecNac = Ctod(Thisform.TxtFecNac.Value) nEdad = Int ((Date() - dFecNac) / 365) Thisform.TxtEdad.Value = Str(nEdad) + “ años” Thisform.Refresh Objeto: CmdLimpiar Thisform.TxtFecNac.Value = “” Thisform.TxtEdad.Value = “” Thisform.TxtFecNac.Setfocus Thisform.Refresh Objeto: CmdSalir ThisForm.Release 2 Procedimiento: Clic && sin espacios entre comillas.! Procedimiento: Clic 2013 Instituto Superior Jujuy Tecnicatura Superior en Informática con orientación en Sistemas de Información Asignatura: Técnicas de Programación Ejercicio Nº 2 En este ejemplo se elaborará un formulario que simule el funcionamiento de un reloj despertador digital. La aplicación debe permitir al usuario ingresar la hora a la que desea ser avisado. El diseño de la interfaz debe ser similar a la figura siguiente: Para el desarrollo de esta aplicación proceder a ubicar los siguientes controles en el formulario: • 2 etiquetas • 2 cajas de texto • 1 cronómetro • 2 botones de comandos Establezca las propiedades según se indica a continuación: Form1 Name Caption MaxButton MinButton Label1 Name Caption Label2 Name Caption FrmReloj Reloj despertador digital .F.-Falso .F.-Falso LblHora Hora LblDespertador Despertador Text1 Name FontBold FontSize TxtHora .T.-Verdadero 24 Name FontBold FontSize TxtDespertador .T.-Verdadero 24 Text2 Timer1 Name Enabled Interval Command1 Name Caption Default Command2 Name Cancel Caption 3 Timer1 .T.-Verdadero 500 CmdOnOff \<Desactivar .T.-Verdadero CmdTerminar .T.-Verdadero \<Terminar 2013 Instituto Superior Jujuy Tecnicatura Superior en Informática con orientación en Sistemas de Información Asignatura: Técnicas de Programación Una vez establecidas las propiedades, proceda a ingresar el código que se muestra: Objeto: FrmReloj PUBLIC lOnOff Procedimiento: Load Objeto: FrmReloj Procedimiento: INIT lOnOff = .F. Thisform.TxtDespertador.Value = “00:00:00” Thisform.Refresh Objeto: Timer1 Procedimiento: Timer IF Thisform.TxtHora.Value != Time() Thisform.TxtHora.Value = Time() ENDIF IF (Thisform.TxtDespertador.Value < Time()) .AND. lOnOff ? Chr(7) && emite sonido ENDIF Thisform.Refresh Objeto: CmdOnOff Procedimiento: Clic IF lOnOff lOnOff = .F. Thisform.CmdOnOff.Caption = “\<Activar” ELSE lOnOff = .T. Thisform.CmdOnOff.Caption = “\<Desactivar” ENDIF Thisform.Refresh Objeto: CmdTerminar ThisForm.Release 4 Procedimiento: Click 2013 Instituto Superior Jujuy Tecnicatura Superior en Informática con orientación en Sistemas de Información Asignatura: Técnicas de Programación 2013 Ejercicio Nº 3 El ejercicio consiste en crear una aplicación que permita leer una fracción y de como resultado la fracción simplificada. Esto es, que halle la fracción irreductible equivalente. Para el desarrollo de esta aplicación proceda a crear un nuevo formulario y luego vaya al Menú Formulario y elija la opción Crear conjunto de formularios (no se preocupe, pues no se apreciará nada en especial). Nuevamente vaya al Menú Formulario y elija la opción Agregar nuevo formulario. El Diseñador de formularios debe presentar una apariencia similar a la figura mostrada: A continuación proceda a ubicar los siguientes controles sobre el primer formulario (Form1): • • • 2 etiquetas 2 cajas de texto 2 botones de comando Seguidamente debe establecer las propiedades de los objetos según se indica: Form1 Name Caption MaxButton 5 FrmIngreso Ingreso de datos .F.-Falso Instituto Superior Jujuy Tecnicatura Superior en Informática con orientación en Sistemas de Información Asignatura: Técnicas de Programación MinButton Label1 Name Caption Label2 Name Caption .F.-Falso LblNumerador Numerador? LblDenominador Denominador? Text1 Name Value TxtNumerador 0 Text2 Name Value Command1 Name Caption Default TxtDenominador 0 CmdSimplificar Simplificar .T.-Verdadero Command2 Name Cancel Caption CmdSalir .T.-Verdadero Salir A continuación proceda a ingresar el código que se muestra: Objeto: CmdSimplificar Procedimiento: Click nNumerador = Thisformset.FrmIngreso.TxtNumerador.Value nDenominador = Thisformset.FrmIngreso.TxtDenominador.Value IF nNumerador < nDenominador nC = nNumerador ELSE nC = nDenominador ENDIF DO WHILE (nNumerador % nC != 0) .OR. (nDenominador % nC != 0) nC = nC - 1 ENDDO nNumerador = nNumerador / nC nDenominador = nDenominador / nC Thisformset.FrmIngreso.Hide Thisformset.FrmSalida.Show Thisformset.Refresh Objeto: CmdSalir Procedimiento: Click Thisformset.Release Luego proceda a ubicar los siguientes controles sobre el segundo formulario (Form2): • • 1 etiqueta 1 caja de texto 6 2013 Instituto Superior Jujuy Tecnicatura Superior en Informática con orientación en Sistemas de Información Asignatura: Técnicas de Programación • 1 botón de comando Seguidamente debe establecer las propiedades de los objetos según se indica: Form2 Name Caption MaxButton MinButton Label1 Name Caption Text1 Name Alignment Command1 Name Caption FrmSalida Salida .F.-Falso .F.-Falso LblFraccion Fracción simplificada: TxtFraccion 2-Centro CmdVolver Volver A continuación proceda a ingresar el código que se muestra: Objeto: FrmSalida Procedimiento: Activate cNumerador = Str(nNumerador) cDenominador = Str(nDenominador) cFraccion = cNumerador + “ / ” + cDenominador Thisformset.FrmSalida.TxtFraccion.Value = cFraccion Thisformset.Refresh Objeto: CmdVolver Thisformset.FrmSalida.Hide Thisformset.FrmIngreso.Show Thisformset.Refresh Procedimiento: Click Finalmente proceda a ingresar el código que se indica a continuación: Objeto: Formset1 Public nNumerador Public nDenominador Public nC Objeto: Formset1 Thisformset.FrmSalida.Hide Thisformset.Refresh 7 Procedimiento: Load Procedimiento: Init 2013 Instituto Superior Jujuy Tecnicatura Superior en Informática con orientación en Sistemas de Información Asignatura: Técnicas de Programación 2013 Ejercicio Nº 4 Este ejemplo consiste en elaborar una aplicación que acepte fechas como tres números (dd, mm, aaaa) y las visualice del modo usual. A manera de ejemplo considere lo siguiente: Cuando el usuario haga click en el botón Salir o en el botón Cerrar de la barra de título del formulario, se debe confirmar si desea terminar la aplicación, tal como se observa en la figura siguiente: En caso de que el usuario elija la opción Si, la aplicación debe terminar. Caso contrario, es decir si el usuario elige la opción No, se debe proseguir con la aplicación. Para el desarrollo de esta aplicación, proceda a ubicar los siguientes controles en el formulario: • • • • 4 etiquetas 3 controles numéricos 1 caja de texto 3 botones de comando En seguida proceda a establecer las propiedades según se indica: Form1 Name Caption MaxButton MinButton Label1 Name AutoSize Caption Label2 Name AutoSize Caption Label3 Name AutoSize Caption 8 FrmFecha Fecha en letras .F.-Falso .F.-Falso LblDia .T.-Verdadero Día: LblMes .T.-Verdadero Mes: LblAnno .T.-Verdadero Año: Instituto Superior Jujuy Tecnicatura Superior en Informática con orientación en Sistemas de Información Asignatura: Técnicas de Programación Label4 Name AutoSize Caption Spinner1 Name SpinnerHighValue SpinnerLowValue Spinner2 Name SpinnerHighValue SpinnerLowValue Spinner3 Name SpinnerHighValue SpinnerLowValue Text1 Name Alignment Command1 Name Caption Default Command2 Name Caption Command3 Name Cancel Caption 2013 LblEnLetras .T.-Verdadero En letras: SpnDia 31 1 SpnMes 12 1 SpnAnno 9999 0 TxtEnLetras 2-Centro CmdAceptar \<Aceptar .T.-Verdadero CmdLimpiar \<Limpiar CmdSalir .T.-Verdadero \<Salir Una vez establecidas las propiedades proceda a ingresar el código que se indica a continuación: Objeto: FrmFecha Procedimiento: Load SET DATE FRENCH SET CENTURY ON Objeto: FrmFecha #DEFINE vfpYesNo #DEFINE vfpYes #DEFINE vfpQuestion Procedimiento: QueryUnload 4 6 32 IF MessageBox(“¿Desea terminar la aplicación?”, ; vfpQuestion + vfpYesNo, “Pregunta”) = vfpYes ThisForm.Release ELSE NODEFAULT ENDIF 9 Instituto Superior Jujuy Tecnicatura Superior en Informática con orientación en Sistemas de Información Asignatura: Técnicas de Programación Objeto: CmdAceptar Procedimiento: Click cBarra = “/” cFecha = Thisform.SpnDia.Text + cBarra+ Thisform.SpnMes.Text ; + cBarra + Thisform.SpnAnno.Text dFecha = Ctod(cFecha) cNomDia = Cdow(dFecha) cDia = Str(Day(dFecha), 2) cMes = Cmonth(dFecha) cAnno = Str(Year(dFecha), 4) cFecha = cNomDia + “ ” + cDia + “ de ” + cMes + “ de ” + cAnno Thisform.TxtEnLetras.Value = cFecha Thisform.Refresh Objeto: CmdLimpiar Thisform.SpnDia.Value Thisform.SpnMes.Value Thisform.SpnAnno.Value Thisform.TxtEnLetras.Value Thisform.SpnDia.Setfocus Thisform.Refresh Objeto: CmdSalir Thisform.QueryUnload 10 Procedimiento: Click = = = = 0 0 0 “” Procedimiento: Click 2013 Instituto Superior Jujuy Tecnicatura Superior en Informática con orientación en Sistemas de Información Asignatura: Técnicas de Programación 2013 Ejercicio Nº 5 Este ejercicio consiste en elaborar un formulario que permita leer un número entero y visualice su tabla se multiplicar. Para construir la tabla de multiplicar vamos a utilizar un control cuadro de edición, el cual tiene propiedades similares a un cuadro de texto, pero permite escribir texto en líneas diferentes. Para el desarrollo de esta aplicación, proceda a ubicar los siguientes controles en el formulario: • 1 etiqueta • 1 caja de texto • 1 cuadro de edición • 1 botón de comandos En seguida proceda a establecer las propiedades según se indica: Form1 Name Caption MaxButton MinButton Label1 Name Caption Text1 Name Alignment Edit1 Name ScrollBars Command1 Name Caption Default FrmTabla Tabla de multiplicar .F.-Falso .F.-Falso LblNumero Ingrese un número: TxtNumero 2-Centro EdtTabla 2-Vertical CmdLimpiar \<Limpiar .T.-Verdadero Una vez diseñada la interfaz, proceda a ingresar el código que se indica a continuación: Objeto: TxtNumero Procedimiento: InteractiveChange nN = Val(Thisform.TxtNumero.Value) cS = “” FOR nI = 0 TO 12 nP = nN * nI cS = cS + Str(nN) + “ * ” + Str(nI) + “ = ” + Str(nP) + Chr(13) NEXT Thisform.EdtTabla.Value = cS Thisform.Refresh Objeto: CmdLimpiar Procedimiento: Click Thisform.TxtNumero.Value = “” Thisform.EdtTabla.Value = “” Thisform.Refresh 11 Instituto Superior Jujuy Tecnicatura Superior en Informática con orientación en Sistemas de Información Asignatura: Técnicas de Programación 2013 Ejercicio Nº 6 Este ejemplo consiste en elaborar una aplicación que permita cambiar el aspecto de una caja de texto. El usuario debe elegir el tipo de fuente a utilizar, el estilo, el color y el tamaño. El diseño de la interfaz debe ser similar a: Para el desarrollo de esta aplicación, proceda a ubicar los siguientes controles en el formulario: • • • • • • • 5 etiquetas 1 caja de texto 1 cuadro combinado 1 lista 3 casillas de verificación 1 grupo de botones de opción 1 botón de comando En seguida proceda a establecer las propiedades según se indica: Form1 Name AutoCenter Caption MaxButton MinButton Label1 Name Caption Label2 Name Caption Label3 Name Caption Label4 Name Caption 12 FrmEditor .T.-Verdadero Editor .F.-Falso .F.-Falso LblTexto Texto LblFuente Fuente LblTamaño Tamaño LblEstilo Estilo Instituto Superior Jujuy Tecnicatura Superior en Informática con orientación en Sistemas de Información Asignatura: Técnicas de Programación Label5 Name Caption Combo1 Name List1 Name 2013 LblColor Color CboFuente LstTamaño Text1 Name ForeColor TxtTexto 255, 0, 0 Check1 Name Caption FontBold Check2 Name Caption FontItalic ChkCursiva Cursiva .T.-Verdadero Check3 Name Caption FontUnderline ChkSubrayado Subrayado .T.-Verdadero OptionGroup1 ButtonCount 3 Option1 Name ForeColor Option2 Name ForeColor Option3 Name ForeColor Command1 Name Caption Default ChkNegrita Negrita .T.-Verdadero OptRojo 255, 0, 0 OptVerde 0, 255, 0 OptAzul 0, 0, 255 CmdSalir \<Salir .T.-Verdadero Una vez establecidas las propiedades de la interfaz, proceda a ingresar el código que se muestra a continuación: Objeto: FrmEditor Procedimiento: Init Thisform.CboFuente.AddItem(“Arial”) Thisform.CboFuente.AddItem(“Arial Black”) Thisform.CboFuente.AddItem(“Courier New”) Thisform.CboFuente.AddItem(“Garamond”) Thisform.CboFuente.AddItem(“Impact”) 13 Instituto Superior Jujuy Tecnicatura Superior en Informática con orientación en Sistemas de Información Asignatura: Técnicas de Programación Thisform.CboFuente.AddItem(“MS Sans Serif”) Thisform.CboFuente.AddItem(“Technical”) Thisform.CboFuente.AddItem(“Times New Roman”) FOR nI = 8 TO 20 Step 2 Thisform.LstTamaño.AddItem(Alltrim(Str(nI))) NEXT Objeto: FrmEditor Procedimiento: QueryUnload #DEFINE vfpYesNo 4 #DEFINE vfpYes 6 #DEFINE vfpQuestion 32 IF MessageBox(“¿Desea terminar la aplicación?”, ; vfpQuestion + vfpYesNo, “Pregunta”) = vfpYes ThisForm.Release ELSE NODEFAULT ENDIF Objeto: CboFuente Procedimiento: Click Thisform.TxtTexto.FontName = Thisform.CboFuente.Value Thisform.Refresh Objeto: LstTamaño Procedimiento: Click nTamaño = Val(Thisform.LstTamaño.Value) Thisform.TxtTexto.FontSize = nTamaño Thisform.Refresh Objeto: ChkNegrita Procedimiento: Click IF Thisform.ChkNegrita.Value = 1 Thisform.TxtTexto.FontBold = .T. ELSE Thisform.TxtTexto.FontBold = .F. ENDIF Thisform.Refresh Objeto: ChkCursiva Procedimiento: Click IF Thisform.ChkCursiva.Value = 1 Thisform.TxtTexto.FontItalic = .T. ELSE Thisform.TxtTexto.FontItalic = .F. ENDIF Thisform.Refresh 14 2013 Instituto Superior Jujuy Tecnicatura Superior en Informática con orientación en Sistemas de Información Asignatura: Técnicas de Programación Objeto: ChkSubrayado Procedimiento: Click IF Thisform.ChkSubrayado.Value = 1 Thisform.TxtTexto.FontUnderline = .T. ELSE Thisform.TxtTexto.FontUnderline = .F. ENDIF Thisform.Refresh Objeto: OptRojo Procedimiento: Click Thisform.TxtTexto.ForeColor = RGB(255, 0, 0) Thisform.Refresh Objeto: OptVerde Procedimiento: Click Thisform.TxtTexto.ForeColor = RGB(0, 255, 0) Thisform.Refresh Objeto: OptAzul Procedimiento: Click Thisform.TxtTexto.ForeColor = RGB(0, 0, 255) Thisform.Refresh Objeto: CmdSalir Thisform.QueryUnload 15 Procedimiento: Click 2013 Instituto Superior Jujuy Tecnicatura Superior en Informática con orientación en Sistemas de Información Asignatura: Técnicas de Programación 2013 Ejercicio Nº 7 Este ejemplo consiste en desarrollar una aplicación que permita ingresar el nombre de un curso, el cual pasa a formar parte de una lista de espera antes de ser programado para su dictado. Los cursos deben ser seleccionados de la lista de espera y trasladados a la lista de cursos programados y viceversa. El diseño de la interfaz debe ser similar a la figura mostrada: Para el desarrollo de esta aplicación proceda a ubicar los siguientes controles en el formulario: • • • • 3 etiquetas 1 cuadro de texto 2 listas 5 botones de comando En seguida proceda a establecer las propiedades según se indica: Form1 Name Caption MaxButton MinButton Label1 Name Caption Label2 Name Caption Label3 Name Caption Text1 Name FrmCursos Cursos .F.-Falso .F.-Falso LblCurso Ingrese nuevo curso: LblSeleccionar Seleccione un curso: LblProgramado Curso programado: TxtCurso List1 Name 16 LstSeleccionar Instituto Superior Jujuy Tecnicatura Superior en Informática con orientación en Sistemas de Información Asignatura: Técnicas de Programación List2 Name Command1 Name Caption Picture Command2 Name Caption Picture Command3 Name Caption Picture Command4 Name Caption Picture Command5 Name Caption LstProgramado CmdAgregar C:\TP\Bitmaps\AddItem.Bmp CmdAgregarTodo C:\TP\Bitmaps\AddAll.Bmp CmdQuitar C:\TP\Bitmaps\Remove.Bmp CmdQuitarTodo C:\TP\Bitmaps\RemoveAll.Bmp CmdAnnadir \<Añadir Luego proceda a ingresar el código que se indica: Objeto: CmdAnnadir Procedimiento: Click Thisform.LstSeleccionar.Additem(Thisform.TxtCurso.Value) Thisform.TxtCurso.Value = “” Thisform.TxtCurso.SetFocus Objeto: LstSeleccionar Procedimiento: Click IF Thisform.LstSeleccionar.ListIndex != 0 Thisform.CmdAgregar.Enabled = .T. Thisform.CmdAgregarTodo.Enabled = .T. ENDIF Thisform.Refresh Objeto: LstProgramado Procedimiento: Click IF Thisform.LstProgramado.ListIndex != 0 Thisform.CmdQuitar.Enabled = .T. Thisform.CmdQuitarTodo.Enabled = .T. ENDIF Thisform.Refresh Objeto: CmdAgregar Procedimiento: Click cCurso = Thisform.LstSeleccionar.Value nCurso = Thisform.LstSeleccionar.ListIndex IF Thisform.LstSeleccionar.ListCount > 0 Thisform.LstProgramado.AddItem(cCurso) Thisform.LstSeleccionar.RemoveItem(nCurso) Thisform.LstSeleccionar.ListIndex = 0 Thisform.CmdAgregar.Enabled = .F. Thisform.CmdAgregarTodo.Enabled = .F. ENDIF Thisform.Refresh 17 2013 Instituto Superior Jujuy Tecnicatura Superior en Informática con orientación en Sistemas de Información Asignatura: Técnicas de Programación Objeto: CmdQuitar Procedimiento: Click cCurso = Thisform.LstProgramado.Value nCurso = Thisform.LstProgramado.ListIndex IF Thisform.LstProgramado.ListCount > 0 Thisform.LstSeleccionar.AddItem(cCurso) Thisform.LstProgramado.RemoveItem(nCurso) Thisform.LstProgramado.ListIndex = 0 Thisform.CmdQuitar.Enabled = .F. Thisform.CmdQuitarTodo.Enabled = .F. ENDIF Thisform.Refresh Objeto: CmdAgregarTodo Procedimiento: Click FOR nI = 1 TO Thisform.LstSeleccionar.ListCount Thisform.LstProgramado.AddItem; (Thisform.LstSeleccionar.List(nI)) NEXT Thisform.LstSeleccionar.Clear Thisform.CmdAgregar.Enabled = .F. Thisform.CmdAgregarTodo.Enabled = .F. Thisform.Refresh Objeto: CmdQuitarTodo Procedimiento: Click FOR nI = 1 TO Thisform.LstProgramado.ListCount Thisform.LstSeleccionar.AddItem; (Thisform.LstProgramado.List(nI)) NEXT Thisform.LstProgramado.Clear Thisform.CmdQuitar.Enabled = .F. Thisform.CmdQuitarTodo.Enabled = .F. Thisform.Refresh Objeto: FrmCursos Procedimiento: QueryUnload #DEFINE vfpYesNo 4 #DEFINE vfpYes 6 #DEFINE vfpQuestion 32 IF MessageBox(“¿Desea terminar la aplicación?”, ; vfpQuestion + vfpYesNo, “Pregunta”) = vfpYes ThisForm.Release ELSE NODEFAULT ENDIF 18 2013 Instituto Superior Jujuy Tecnicatura Superior en Informática con orientación en Sistemas de Información Asignatura: Técnicas de Programación 2013 Ejercicio Nº 8 El ejemplo consiste en elaborar una aplicación que permita leer n números de tipo entero, y a continuación los visualice ordenados en forma ascendente o descendente. Utilice el método de la burbuja para realizar la ordenación. Para el desarrollo de esta aplicación, proceda a ubicar los siguientes controles en el formulario: • • • • • 3 etiquetas 1 caja de texto 1 lista 1 grupo de botones de opción 3 botones de comando En seguida proceda a establecer las propiedades según se indica: Form1 Nombre Caption MaxButton MinButton Label1 Name Caption Label2 Name Caption Label3 Name Caption Text1 Name Value List1 Name Option1 Nombre Caption Option2 19 FrmBurbuja Ordenación por burbuja .F.-Falso .F.-Falso LblNumero Ingrese un número: nuevo LblOrden Orden: LblLista Lista de números: TxtNumero 0 LstNumero OptAscendente Ascendente Instituto Superior Jujuy Tecnicatura Superior en Informática con orientación en Sistemas de Información Asignatura: Técnicas de Programación Nombre Caption Command1 Nombre Caption Default Command2 Nombre Caption Command3 Nombre Cancel Caption Picture OptDescendente Descendente CmdAnnadir \<Añadir True CmdOrdenar \<Ordenar CmdSalir .T.-Verdadero \<Salir C:\TP\ICONOS\Point04.ico Una vez establecidas las propiedades proceda a ingresar el código que se indica a continuación: Objeto: FrmBurbuja Procedimiento: QueryUnload #DEFINE vfpYesNo 4 #DEFINE vfpYes 6 #DEFINE vfpQuestion 32 IF MessageBox(“¿Desea terminar la aplicación?”, ; vfpQuestion + vfpYesNo, “Pregunta”) = vfpYes ThisForm.Release ELSE NoDefault ENDIF Objeto: CmdAnnadir Procedimiento: Clic Thisform.LstNumero.AddItem(Thisform.TxtNumero.Value) Thisform.TxtNumero.Value = “” Thisform.TxtNumero.SetFocus Objeto: CmdOrdenar nN = Thisform.LstNumero.ListCount Dimension nA(nN) As Integer Procedimiento: Clic FOR nI = 1 TO nN nA(nI) = Thisform.LstNumero.List(nI) NEXT IF Thisform.OptionGroup1.OptAscendente.Value = 1 FOR nI = 1 TO nN - 1 FOR nJ = nI + 1 TO nN IF nA(nI) > nA(nJ) nT = nA(nI) nA(nI) = nA(nJ) nA(nJ) = nT ENDIF NEXT NEXT ENDIF 20 2013 Instituto Superior Jujuy Tecnicatura Superior en Informática con orientación en Sistemas de Información Asignatura: Técnicas de Programación IF Thisform.OptionGroup1.OptDescendente.Value = 1 FOR nI = 1 TO nN - 1 FOR nJ = nI + 1 TO nN IF nA(nI) < nA(nJ) nT = nA(nI) nA(nI) = nA(nJ) nA(nJ) = nT ENDIF NEXT NEXT ENDIF Thisform.LstNumero.Clear FOR nI = 1 TO nN Thisform.LstNumero.List(nI) = nA(nI) NEXT Objeto: CmdSalir Thisform.QueryUnload 21 Procedimiento: Clic 2013 Instituto Superior Jujuy Tecnicatura Superior en Informática con orientación en Sistemas de Información Asignatura: Técnicas de Programación 2013 Ejercicio Nº 9 Este ejemplo consiste en escribir un método que reciba como argumento una cadena de caracteres y la devuelva en forma inversa. Por ejemplo si se ingresa la cadena CORAZON deberá retornar NOZAROC. Para el desarrollo de esta aplicación, proceda a ubicar los siguientes controles en el formulario: • • • 2 etiquetas 2 cajas de texto 3 botones de comando En seguida proceda a establecer las propiedades según se indica: Form1 Name Caption MaxButton MinButton FrmPrueba_Cadena Cadena invertida .F.-Falso .F.-Falso Label1 Name Caption LblCadena Ingrese una cadena: Label2 Name Caption LblInvertida Cadena invertida: Text1 Name Enabled TxtCadena .T.-Verdadero Name Enabled TxtInvertida .F.-Falso Text2 Command1 Name Caption Default 22 CmdAceptar \<Aceptar .T.-Verdadero Instituto Superior Jujuy Tecnicatura Superior en Informática con orientación en Sistemas de Información Asignatura: Técnicas de Programación Command2 Name Caption Command3 Name Cancel Caption 2013 CmdLimpiar \<Limpiar CmdSalir .T.-Verdadero \<Salir Una vez establecidas las propiedades de la interfaz, proceda a crear un nuevo método, denominado CadInvertida. Para ello vaya al Menú Formulario y elija la opción Crear nuevo método. Se debe presentar una ventana similar a la figura siguiente: Ingrese los datos que se muestran y a continuación dar click en el botón Agregar. Luego, dar doble click sobre el formulario y transcriba el siguiente código: Objeto: FrmPrueba_Cadena Procedimiento: CadInvertida PARAMETERS cCadena nN = Len(Alltrim(cCadena)) DIMENSION cTemporal(nN) FOR nI = 1 TO nN cTemporal(nI) = SubStr(cCadena, nI, 1) NEXT cCadena = “” FOR nJ = nN TO 1 Step -1 cInvertida = cInvertida + cTemporal(nJ) NEXT Return cInvertida Objeto: CmdAceptar Procedimiento: Click cCadena = Thisform.TxtCadena.Value Thisform.TxtInvertida.Value = Thisform.CadInvertida(cCadena) Thisform.Refresh 23 Instituto Superior Jujuy Tecnicatura Superior en Informática con orientación en Sistemas de Información Asignatura: Técnicas de Programación 2013 Ejercicio Nº 10 Este ejemplo consiste en crear un método que reciba como argumento los apellidos y nombres de un cliente (en ese orden) y retorne los nombres y apellidos del mismo. Para el desarrollo de esta aplicación proceda a crear un nuevo método denominado NomApe. Luego transcriba el siguiente código: Objeto: FrmPrueba_NomApe Procedimiento: NomApe PARAMETERS cApeNom nN = Len(Alltrim(cApeNom)) DIMENSION cNom(nN) DIMENSION cApe(nN) FOR nI = 1 TO nN IF SubStr(cApeNom, nI, 1) = “,” EXIT ENDIF NEXT cApe = SubStr(cApeNom, 1, nI-1) cNom = SubStr(cApeNom, nI + 1, nN - nI) cNomApe = cNom + “ ” + cApe RETURN cNomApe 24 Instituto Superior Jujuy Tecnicatura Superior en Informática con orientación en Sistemas de Información Asignatura: Técnicas de Programación 2013 Ejercicio Nº 11 m Para calcular el porcentaje de humedad de una muestra sólida primero se pesa la muestra ( 1 ), luego se le lleva a la estufa de 120 a 150 ºC por un tiempo de 2 horas aproximadamente. A continuación se deja enfriar la muestra y se pesa nuevamente ( siguiente cálculo: m − m2 % Humedad = 100 1 m1 m2 ). Finalmente se realiza el Nuestro trabajo consiste en crear un método que permita realizar el cálculo anterior. Para el desarrollo de esta aplicación proceder a crear un nuevo método denominado Humedad. Luego ingrese el siguiente código: Objeto: FrmPrueba_Humedad Procedimiento: Humedad Parameters nM1, nM2 nH = 100 * (nM1 - nM2) / nM1 Return nH Objeto: CmdAceptar Procedimiento: Click nMasa1 = Val(Thisform.TxtMasa1.Value) nMasa2 = Val(Thisform.TxtMasa2.Value) nHumedad = Thisform.Humedad(nMasa1, nMasa2) Thisform.TxtHumedad.Value = Str(nHumedad, 10, 4) Thisform.Refresh 25 Instituto Superior Jujuy Tecnicatura Superior en Informática con orientación en Sistemas de Información Asignatura: Técnicas de Programación 2013 Ejercicio de Autoevaluación Nº1 Desarrollar una aplicación que permita realizar consultas acerca de un determinado curso, los cuales se mostraran en una lista. El usuario debe seleccionar un curso y en seguida se debe presentar el nombre del profesor encargado del curso (teoría), el nombre del jefe de práctica (laboratorio), así como los horarios de teoría y de laboratorio, respectivamente. El diseño de la interfaz debe ser similar a la figura que se muestra: 26 Instituto Superior Jujuy Tecnicatura Superior en Informática con orientación en Sistemas de Información Asignatura: Técnicas de Programación 2013 Ejercicio de autoevaluación Nº 2 Escriba un método que reciba como parámetro la fecha de nacimiento del usuario. Debe retornar el signo zodiacal, el día de nacimiento y la cantidad de días vividos hasta la fecha actual. Utilice un formulario de prueba para verificar la funcionalidad del método creado. Sugerencia Retorne un único valor como una cadena de caracteres, en la cual estén incluidos los valores que se piden. A manera de ejemplo considere lo siguiente: cRpta = cZodiaco + cDiaNacimiento + cDiasVividos + cFechaHoy Return cRpta 27 Instituto Superior Jujuy Tecnicatura Superior en Informática con orientación en Sistemas de Información Asignatura: Técnicas de Programación 2013 Ejercicio de autoevaluación Nº 3 Elaborar una aplicación que acepte como entrada la reserva de agua de un depósito y los litros se consumen a la semana. La aplicación debe dar como resultado las cantidades de agua quedan al final de cada semana. El proceso finalizará cuando no quede agua suficiente para semana. Utilizar otro formulario para mostrar la salida. El diseño de la interfaz debe ser similar figura mostrada: 28 que que una a la