Ejercicio1 - Página Personal: Julio Huber Peña Reyes

Anuncio
CEBA DEL IPEC
CENTRO DE EDUCACIÓN BÁSICA ALTERNATIVA
PARA JÓVENES Y ADULTOS
DEL INSTITUTO PERUANO DE LA CIENCIA Y LA CULTURA CEBA DEL IPEC
R.D. Nº 002655-2010/DREC31-08-2010
PRACTICA 1 VISUAL FOXPRO PROGRAMACIÓN LINEAL
FUENTE: Libro “Diseño de Aplicaciones de Escritorio en Visual Foxpro 6.0”, de César A. Bustamante Gtz., Editorial GrapPerú Editores
1. Crear un programa que permita convertir una fecha en formato texto con la referencia de día de la semana. Modificar este programa para
que se pida el ingreso de la fecha por teclado.
Fecha.PRG
Fecha2.PRG
?cDia({12/05/98})
clear
FUNCTION cDia
cDia=space(8)
PARAMETERS dFecha
@5,1 say "Ingrese una fecha: (MM/DD/AA) " get cDia
cRpta=”Lima, ”+CDOW(dFecha)+STR(DAY(dFecha),2)+;
read
“ de ”+CMONTH(dFecha)+;
dFecha=(ctod(cDia))
“ de ”+STR(YEAR(dFecha,4)
cRpta="Lima,"+CDOW(dFecha)+STR(DAY(dFecha),2)+;
RETURN cRpta
" de "+CMONTH(dFecha)+;
" de "+STR(YEAR(dFecha),4)
@7,1 say cRpta
2. Crear un programa que convierta un número entero en letras.
?Monto2Letra(256925)
laUnidades(10) = "DIEZ
laDecenas(4) = "CUARENTA"
laUnidades(11) = "ONCE"
laDecenas(5) = "CINCUENTA"
FUNCTION Monto2Letra
laUnidades(12) = "DOCE"
laDecenas(6) = "SESENTA"
LPARAMETERS tyMonto, tlDolares
laUnidades(13) = "TRECE"
laDecenas(7) = "SETENTA"
LOCAL lyEntero, lyCentavos, lnNumeroBloques, ;
laUnidades(14) = "CATORCE"
laDecenas(8) = "OCHENTA"
lnPrimerDigito, lnSegundoDigito, lnTercerDigito, ; laUnidades(15) = "QUINCE"
laDecenas(9) = "NOVENTA
lcBloque, lnBloqueCero, lcLetra
laUnidades(16) = "DIECISEIS"
laCentenas(1) = "CIENTO"
laUnidades(17) = "DIECISIETE"
laCentenas(2) = "DOSCIENTOS"
DIMENSION laUnidades(29), laDecenas(9), laCentenas(9) laUnidades(18) = "DIECIOCHO"
laCentenas(3) = "TRESCIENTOS"
laUnidades(19) = "DIECINUEVE" laCentenas(4) = "CUATROCIENTOS"
tyMonto = ROUND(tyMonto, 2)
laUnidades(20) = "VEINTE"
laCentenas(5) = "QUINIENTOS"
lyEntero = INT(tyMonto)
laUnidades(21) = "VENTIUN"
laCentenas(6) = "SEISCIENTOS"
lcLetra = IIF(lyEntero = 0, "CERO", "")
laUnidades(22) = "VEINTIDOS"
laCentenas(7) = "SETECIENTOS"
lyCentavos = (tyMonto - lyEntero) * 100
laUnidades(23) = "VEINTITRES"
laCentenas(8) = "OCHOCIENTOS"
laUnidades(24) = "VEINTICUATRO" laCentenas(9) = "NOVECIENTOS"
laUnidades(1) = "UN"
laUnidades(25) = "VEINTICINCO"
laUnidades(2) = "DOS"
laUnidades(26) = "VEINTISEIS"
lnNumeroBloques = 1
laUnidades(3) = "TRES"
laUnidades(27) = "VEINTISIETE"
laUnidades(4) = "CUATRO"
laUnidades(28) = "VEINTIOCHO" DO WHILE lyEntero > 0
laUnidades(5) = "CINCO"
laUnidades(29) = "VEINTINUEVE"
lnPrimerDigito = 0
laUnidades(6) = "SEIS"
lnSegundoDigito = 0
laUnidades(7) = "SIETE"
laDecenas(1) = "DIEZ"
lnTercerDigito = 0
laUnidades(8) = "OCHO""
laDecenas(2) = "VEINTE"
lcBloque = ""
laUnidades(9) = "NUEVE"
laDecenas(3) = "TREINTA""
lnBloqueCero = 0
FOR i = 1 TO 3
lnDigito = MOD(lyEntero, 10)
IF lnDigito <> 0 THEN
DO CASE
CASE i = 1
lcBloque = " " + laUnidades(lnDigito)
lnPrimerDigito = lnDigito
CASE i = 2
IF lnDigito <= 2 THEN
lcBloque = " " + laUnidades((lnDigito * 10) + lnPrimerDigito)
ELSE
lcBloque = " " + laDecenas(lnDigito) + IIF(lnPrimerDigito <> 0, " Y", "") + lcBloque
ENDIF
lnSegundoDigito = lnDigito
CASE i = 3
lcBloque = " " + IIF(lnDigito = 1 AND lnPrimerDigito = 0 AND lnSegundoDigito = 0, "CIEN", ;
laCentenas(lnDigito)) + lcBloque
lnTercerDigito = lnDigito
ENDCASE
ELSE
lnBloqueCero = lnBloqueCero + 1
ENDIF
lyEntero = INT(lyEntero / 10)
Página 1 de 2
Prof. Julio H PEÑA REYES
CEBA DEL IPEC
CENTRO DE EDUCACIÓN BÁSICA ALTERNATIVA
PARA JÓVENES Y ADULTOS
DEL INSTITUTO PERUANO DE LA CIENCIA Y LA CULTURA CEBA DEL IPEC
R.D. Nº 002655-2010/DREC31-08-2010
IF lyentero = 0 THEN
EXIT FOR
ENDIF
ENDFOR
DO CASE
CASE lnNumeroBloques = 1
lcLetra = lcBloque
CASE lnNumeroBloques = 2
lcLetra = lcBloque + IIF(lnBloqueCero <> 3, " MIL", "") + lcLetra
CASE lnNumeroBloques = 3
lcLetra = lcBloque + IIF(lnPrimerDigito = 1 AND lnSegundoDigito = 0 AND lnTercerDigito = 0, ;
" MILLON", " MILLONES") + lcLetra
ENDCASE
lnNumeroBloques = lnNumeroBloques + 1
ENDDO
lcLetra = ALLTRIM(lcLetra)
3.
RETURN lcLetra
ENDFUNC
Crear el siguiente programa y analizar su funcionamiento.
*Programa basado en el uso de objetos
*Crea un formulario
frmNumeros=CREATEOBJECT("Form")
*Agrega controles basados en clases personalizadas
frmNumeros.AddObject("lblTitulo1","miLblTitulo")
frmNumeros.AddObject("lblTitulo2","miLblTitulo")
frmNumeros.AddObject("txtValor","miTxtValor")
frmNumeros.AddObject("txtRpta","miTxtValor")
frmNumeros.AddObject("cmdCalcular","miBtnCalcular")
frmNumeros.AddObject("cmdSalir","miBtnSalir")
*Hacer visibles los controles
frmNumeros.lblTitulo1.Visible=.T.
frmNumeros.lblTitulo1.Caption="Numero:"
frmNumeros.lblTitulo1.Top=10
&& Fila de la etiqueta
frmNumeros.lblTitulo2.Visible=.T.
frmNumeros.lblTitulo2.Caption="Seno:"
frmNumeros.lblTitulo2.Top=50
&& Fila de la etiqueta
frmNumeros.txtValor.Visible=.T.
frmNumeros.txtValor.Top=10
&& Fila de la etiqueta
frmNumeros.txtRpta.Visible=.T.
frmNumeros.txtRpta.Top=50
frmNumeros.cmdCalcular.Visible=.T. &&Muestrael formulario
frmNumeros.cmdSalir.Visible=.T.
&& Inicia procedimiento de
eventos
frmNumeros.SHOW
READ EVENTS
DEFINE CLASS miLblTitulo AS label
Left=50
& Columna de la etiqueta
Height=25
&& Altura de la etiqueta
AutoSize=.T.
ENDDEFINE
Página 2 de 2
DEFINE CLASS miTxtValor AS TextBox
Left=170
Height=25
Value=0
&& Valor inicial
ENDDEFINE
* Crea un boton de comando
DEFINE CLASS miBtnCalcular AS COMMANDBUTTON
Caption="Calcular"
&& Titulo del boton
Left=50
Top=100
Height=25
PROCEDURE Click
nValor=Seno(frmNumeros.txtValor.Value)
frmNumeros.txtRpta.Value=nValor
frmNumeros.Refresh
ENDDEFINE
* Crea un boton de comando
DEFINE CLASS miBtnSalir AS COMMANDBUTTON
Caption="Salir"
Left=150
Top=100
Height=25
PROCEDURE Click
* cierra el formulario
CLEAR EVENTS
ENDDEFINE
FUNCTION Seno
PARAMETER nGrados
nRad=nGrados*PI()/180
nSen=nRad
nDif=nRad
nRep=1
DO WHILE ABS(nDif)>=0.000000000001
nDif=(nDif*-(nRad^2))/((2.0*nRep)*((2.0*nRep)+1.0))
nSen=nSen+nDif
nRep=nRep+1
ENDDO
RETURN nSen
Prof. Julio H PEÑA REYES
Descargar