Mostrar Mensajes

Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.


Mensajes - César Krall

Páginas: 1 ... 30 31 32 33 34 [35] 36 37 38 39 40 ... 68
681
Hola no veo el código donde haces la apertura del excel, creo que no lo has pegado. ¿Estás usando Visual Basic 6? Para evitar que excel continue corriendo tienes que cerrar todo en orden inverso a como lo fuiste abriendo.

He encontrado este ejemplo que usa dos textbox y dos command buttons

Código: [Seleccionar]
'Para declarar estas variables antes hay que añadir una referencia
'a microsoft excel 'xx' object library utilizando los menús.

'you need two text boxes and two command buttons
'on the form, an excel file in c:\book1.xls

Dim xl As New Excel.Application
Dim xlsheet As Excel.Worksheet
Dim xlwbook As Excel.Workbook

Private Sub Command1_Click()
'the benifit of placing numbers in (row, col) is that you
'can loop through different directions if required. I could
'have used column names like "A1" 'etc.

    Text1.Text = xlsheet.Cells(2, 1) ' row 2 col 1
    Text2.Text = xlsheet.Cells(2, 2) ' row 2 col 2

'No olvidar hacer esto o no será posible volver a abrir
'book1.xls de nuevo hasta que se reinicie el computador.
    xl.ActiveWorkbook.Close False, "c:\book1.xls"
    xl.Quit
End Sub

Private Sub Command2_Click()
    xlsheet.Cells(2, 1) = Text1.Text
    xlsheet.Cells(2, 2) = Text2.Text
    xlwbook.Save

'No olvidar hacer esto o no será posible volver a abrir
'book1.xls de nuevo hasta que se reinicie el computador.
    xl.ActiveWorkbook.Close False, "c:\book1.xls"
    xl.Quit
End Sub

Private Sub Form_Load()
    Set xlwbook = xl.Workbooks.Open("c:\book1.xls")
    Set xlsheet = xlwbook.Sheets.Item(1)
End Sub

Private Sub Form_Unload(Cancel As Integer)
    Set xlwbook = Nothing
    Set xl = Nothing
End Sub

682
Hola ponclo! Para revisar el problema es necesario saber con qué versión de Visual Basic estás trabajando y qué código estás utilizando. En https://www.aprenderaprogramar.com/foros/index.php?topic=1460.0 tienes las instrucciones que indican cómo pegar código en los foros. Saludos!

683
Hola! Es curioso he hecho pruebas con el código que has presentado frente al original y he obtenido esto:

Con el programa original del curso:


Tiempo invertido en insertar una persona en listaarray (en nanosegundos): 37644
Tiempo invertido en insertar una persona en listalinked (en nanosegundos): 8031


Con el programa modificado:

Tiempo invertido en insertar una persona en listalinked (en nanosegundos): 17530
Tiempo invertido en insertar una persona en listaarray (en nanosegundos): 15784



Efectivamente llama la atención, a mí también me ha sorprendido y no tengo la respuesta de por qué ocurre así. Puedo hacer un intento de explicación, pero es solo un intento. La explicación pasaría porque el tiempo de inserción se compone de dos partes, por un lado la recuperación desde memoria de la lista y por otro lado la inserción en sí. Cuando se accede a memoria, es posible que se esté recuperando un bloque entero de memoria donde están las dos listas. De este modo traer el bloque tendría un coste digamos que en torno a 15000, insertar en linkedlist en torno a 2000, saltar dentro de un bloque desde la posición de una lista a otra en torno a 6000 e insertar en arrayList en torno a 15000.

De este modo para el programa original tendríamos:

Recuperar bloque 15000 + insertar en arrayList 15000 = aprox. 30000

Saltar a otra lista 6000 + insertar en linked list 2000 = aprox. 8000


Para el programa modificado

Recuperar bloque 15000 + insertar en linked list 2000 = 17000

Saltar a otra lista 6000 + insertar en ArrayList 6000 = 12000

Los números no cuadran exactamente y seguramente la explicación es más compleja   :-X

Saludos!

684
Hola! En BlueJ normalmente se dibujan flechas para indicar las relaciones entre clases. No obstante, a veces ese dibujado falla o no se actualiza correctamente. No debes preocuparte por ello (no significa que falte nada en el código). Lo importante es que el código compile y funcione correctamente. Si se quiere lograr el dibujado de las líneas, intentarlo así: cerrar el programa, abrirlo de nuevo, crear un proyecto nuevo vacío e ir introduciendo el código de las clases de nuevo una a una. Saludos!


685
De todo un poco... / Re:AYUDA PASCAL
« en: 13 de Mayo 2015, 09:00 »
Hola! En el foro siempre tratamos de ayudar a partir del punto hasta donde haya podido llegarse intentándolo uno mismo. Por tanto el primer paso debe ser intentar generar el programa y pegar el código que se tenga siguiendo las instrucciones que hay en https://www.aprenderaprogramar.com/foros/index.php?topic=1460.0

Una vez pegado el código, indicar en qué punto concreto surge un error o no se sabe cómo continuar.

Orientación: modularizar en Pascal significa crear módulos (procedures y functions) que se encarguen de distintas tareas. En este programa se podrían tener como módulos "Introducir datos" y "Mostrar información"

Para resolver este ejercicio hay que saber plantear un programa (condicionales, bucles, etc.). Si no se sabe plantear esto mirar el curso de fundamentos de programación a partir de la entrega CU00123A en http://aprenderaprogramar.com/index.php?option=com_content&view=category&id=28&Itemid=59

Ejemplo de Pascal usando procedures: https://www.aprenderaprogramar.com/foros/index.php?topic=1381

Ejemplo usando procedures y functions con menú: https://www.aprenderaprogramar.com/foros/index.php?topic=1075

Ejemplo de cómo obtener datos estadísticos (esto es planteamiento en pseudocódigo): http://aprenderaprogramar.com/index.php?option=com_content&view=article&id=388:ejercicios-ejemplos-resueltos-con-desde-siguiente-for-next-y-arrays-arreglos-en-pseudocodigo-cu00154a&catid=28:curso-bases-programacion-nivel-i&Itemid=59

Saludos!

686
Comunidad / Re:BUENAS... ME PRESENTO!!!
« en: 13 de Mayo 2015, 08:27 »
Hola Nelson! Bienvenido al foro, siempre se puede empezar algo nuevo y si es la primera vez que participas en uno esperamos que la experiencia sea buena. Aquí participamos personas de muchos países hispanohablantes incluido España, Suramérica y también desde otros países como USA y otros. Las presentaciones las hace cada persona como quiere, la tuya me ha llevado a preguntarme ¿cómo se vivirá en Paraguay? (yo vivo en España y supongo que tú te harás la misma pregunta).

Para aprender a programar en Java y hacerlo bien recomendamos seguir el curso de Programación Java desde cero disponible en http://aprenderaprogramar.com/index.php?option=com_content&view=category&id=68&Itemid=188 e ir mostrando en los foros las soluciones dadas a cada uno de los ejercicios para obtener comentarios de otros usuarios y así poder detectar dónde se falla e ir mejorando.

Sobre la música si quieres poner algún link donde podamos oir la música que haces pues seguro que también puede ser interesante, aquí se habla mucho de programación pero aparte de eso cada cual hace más cosas, hace poco un usuario presentó sus dibujos y me han resultado muy interesantes.

Vamos hablando por los foros!

687
Hola Cabanota lo veo todo bien.

Creo que estás haciendo uso de cosas que todavía no se han explicado en el curso como addEventListener.

Estas etiquetas <title></title> podrías omitirlas ya que al no tener contenido realmente no son útiles.

Hay unos punto y coma que no generan ningún error pero se podrían quitar:

  if (cont == 2) {
               dos.textContent = "poder";   
            };

El punto y coma se puede quitar.

Aquí en cambio sí falta un punto y coma:

cuatro.innerHTML = "<div style=' background-color:yellow'>

cuatro.innerHTML = "<div style=' background-color:yellow;'>

color:white'>El<div/>";

color:white;'>El<div/>";

Saludos!

689
Hola, adjunta el código como lo tengas ahora para poder verlo, viendo ese fragmento no acierto a orientarme  :-\

Saludos

690
Hola, para mostrar sólo números pares debes utilizar el operador de módulo que es % (en otros lenguajes se escribe mod)


Ejemplo (este ejemplo está en java pero en C++ es parecido):
Código: [Seleccionar]
       for (int i=40; i>0; i--) {
            if (i%2 == 0){
            System.out.println ("Numero: "+i);
        }
        }

Este código cuenta hacia atrás:

Numero: 40
Numero: 38
Numero: 36
Numero: 34
Numero: 32
Numero: 30

...

if (i%2 == 0) significa "si el resto de dividir i entre 2 es cero... (es decir, si el número es par...)"

Explicación del operador módulo:

http://aprenderaprogramar.com/index.php?option=com_content&view=article&id=268:operadores-matematicos-en-programacion-prelacion-ejemplos-y-ejercicio-resuelto-cu00131a&catid=28:curso-bases-programacion-nivel-i&Itemid=59

http://aprenderaprogramar.com/index.php?option=com_content&view=article&id=462:operadores-aritmeticos-en-java-y-operador-mod-o-resto-de-una-division-entre-enteros-cu00633b&catid=68:curso-aprender-programacion-java-desde-cero&Itemid=188


Crea el código y pégalo de la forma que se explica en https://www.aprenderaprogramar.com/foros/index.php?topic=1460.0 para irlo revisando. Si tienes alguna duda o problema donde no sepas avanzar, pega el código que tengas e intentaremos ayudarte.

Saludos!

691
Hola, me alegro que lo hayas conseguido! Lo primero pedirte que para pegar código lo hagas como indica en https://www.aprenderaprogramar.com/foros/index.php?topic=1460.0

Tu código lo veo bien, no sé si lo verá más gente porque como te comentaba esto ya prácticamente no se usa, aunque siempre hay alguien por ahí que todavía lo sigue usando.

Saludos!

692
La cuenta en facebook se la abres con el correo que él vaya a usar en facebook, no tiene por qué ser el mismo correo que use en joomla. Lo que sí debes tener en cuenta es que ese correo será el que le permita acceder a su facebook. Saludos.

693
Hola jupertivo, tu código funciona a la perfección y es interesante ver cómo se pueden hacer otros planteamientos. Tal y como planteas podemos dividir una serie como 1,5,3,7,5,9,7,11,9,13 en dos series.

Por ejemplo

1 - 3 - 5 - 7 - 9

5 - 7 - 9 - 11 -13


Después podemos mezclar ambas series y nos devuelve la serie deseada...

Hay muchas variantes para resolver este problema. Buen aporte!

Saludos

694
Hola! He creado varios temas con código:

QBasic Menú simple de texto con QuickBasic con select case y gosub: https://www.aprenderaprogramar.com/foros/index.php?topic=2546.0

Qbasic menú desplegable gráfico simple con QuickBasic elegible con cursor: https://www.aprenderaprogramar.com/foros/index.php?topic=2547.0

Qbasic menú multicolumnas en QuickBasic elegir opciones con cursor: https://www.aprenderaprogramar.com/foros/index.php?topic=2548.0

Qbasic menú desplegable con teclas de acceso rápido QuickBasic: https://www.aprenderaprogramar.com/foros/index.php?topic=2549.0

Qbasic menú horizontal o vertical scroll mostrar items que no caben en pantalla: https://www.aprenderaprogramar.com/foros/index.php?topic=2550.0

Saludos

695
Este código sirve para mostrar un menú donde se puede hacer scroll para mostrar opciones que no caben en pantalla en QuickBasic:

Código: [Seleccionar]
'HMenu          Ray Thomas      March 2002

'A horizontally scrolling menu

OPTION BASE 1

DIM MenuArray(100) AS STRING * 15       'Contains the menu items
DIM Colmns AS INTEGER                   'Number of columns in the menu
DIM Rows AS INTEGER                     'Number of rows in the menu
DIM TotColmns AS INTEGER                'Total number of columns that can be made
DIM ColmnWid AS INTEGER                 'Column width = Menu item width
DIM Gap AS INTEGER                      'Gap between columns
DIM MenuItems AS INTEGER                'Number of items in the ManuArray
DIM MaxDisplay AS INTEGER               'Max number of menu items that can be displayed
DIM FirstItem AS INTEGER                'First menu item to be diplayed
DIM HiLiteItem AS INTEGER               'Menu item that is highlighted
DIM XMenuPosn AS INTEGER                'X position of the first menu item
DIM YMenuPosn AS INTEGER                'Y position of the first menu item
DIM XItemPosn AS INTEGER                'X position of columns
DIM UserIn AS STRING                    'User input
DIM Count AS INTEGER                    'Loop counter

'*** Although MenuArray has been dimensioned with 100 elements ***
'*** not all of them need be filled ***
'*** A standard length was chosen to make the columns of equal width
'*** 53 was chosen as it is a prime number, which should test the calculations ***

'*** Fill the array ***

'*** The CHR$(Count + 32) is here because I want a unique character in ***
'*** the menu items - it's another aid to navigation around the menu ***

FOR Count = 1 TO 53
        MenuArray$(Count) = CHR$(Count + 32) + " Menu Item " + STR$(Count)
NEXT Count

'*** Inititialise the other variables ***

Rows = 10
Colmns = 3
MenuItems = 53
FirstItem = 1
HiLiteItem = 1
MaxDisplay = Rows * Colmns
XMenuPosn = 5
YMenuPosn = 5
TotColmns = FIX((MenuItems + (Rows - 1)) / Rows)
Gap = 5
ColmnDist = LEN(MenuArray$(1)) + Gap

CLS

DO
        GOSUB DrawMenu          '*** Draw the menu ***
        GOSUB UserInput         '*** Get the user input ***

LOOP UNTIL UserIn$ = CHR$(27) OR UserIn$ = CHR$(13)

LOCATE YMenuPosn + Rows + 3, XMenuPosn

IF UserIn$ = CHR$(27) THEN PRINT "ESC pressed"
IF UserIn$ = CHR$(13) THEN PRINT "Selected menu item = "; MenuArray(HiLiteItem)

END

DrawMenu:

'*** Draw the menu - obviously ***
       
XItemPosn = XMenuPosn
LOCATE YMenuPosn, XItemPosn

FOR Count = FirstItem TO FirstItem + MaxDisplay - 1
        PRINT SPACE$(ColmnDist);
        LOCATE CSRLIN + 1, XMenuPosn
        IF Count MOD Rows = 0 THEN
                XItemPosn = XItemPosn + ColmnDist
                LOCATE YMenuPosn, XItemPosn
        END IF
NEXT Count

XItemPosn = XMenuPosn
LOCATE YMenuPosn, XItemPosn

FOR Count = FirstItem TO FirstItem + MaxDisplay - 1
        PRINT MenuArray$(Count);
        LOCATE CSRLIN + 1, XItemPosn
        IF Count MOD Rows = 0 THEN
                XItemPosn = XItemPosn + ColmnDist
                LOCATE YMenuPosn, XItemPosn
        END IF
NEXT Count

IF HiLiteItem > FirstItem + MaxDisplay - 1 THEN
        DO
                FirstItem = FirstItem + Rows
        LOOP UNTIL HiLiteItem < FirstItem + MaxDisplay
END IF

IF HiLiteItem < FirstItem THEN
        DO
                FirstItem = FirstItem - Rows
        LOOP UNTIL HiLiteItem >= FirstItem
END IF

XItemPosn = XMenuPosn
LOCATE YMenuPosn, XItemPosn

FOR Count = FirstItem TO FirstItem + MaxDisplay - 1
        PRINT MenuArray$(Count);
        LOCATE CSRLIN + 1, XItemPosn
        IF Count MOD Rows = 0 THEN
                XItemPosn = XItemPosn + ColmnDist
                LOCATE YMenuPosn, XItemPosn
        END IF
NEXT Count
XItemPosn = XMenuPosn

XItemPosn = XMenuPosn
IF HiLiteItem > 1 THEN LOCATE YMenuPosn + ((HiLiteItem - FirstItem) MOD Rows), XItemPosn + (FIX((HiLiteItem - FirstItem) / Rows) * ColmnDist)
IF HiLiteItem = 1 THEN LOCATE YMenuPosn, XItemPosn
COLOR 0, 7
PRINT MenuArray$(HiLiteItem);
COLOR 7, 0

'*** Print the << and / or the >> ***

LOCATE YMenuPosn - 2, XMenuPosn
PRINT "  "
LOCATE YMenuPosn - 2, XMenuPosn + ((Colmns * ColmnDist) - Gap - 2)
PRINT "  "

IF FirstItem > Rows THEN
        LOCATE YMenuPosn - 2, XMenuPosn
        PRINT "<<"
END IF

IF FirstItem < MenuItems - MaxDisplay THEN
        LOCATE YMenuPosn - 2, XMenuPosn + ((Colmns * ColmnDist) - Gap - 2)
        PRINT ">>"
END IF


RETURN

UserInput:

'*** Get and process the user input ***

UserIn$ = ""    '*** Reset UserIn$ ***

DO
        UserIn$ = INKEY$
LOOP UNTIL UserIn$ <> ""

SELECT CASE UserIn$

        CASE CHR$(0) + CHR$(80) '*** Down arrow pressed ***

                IF HiLiteItem < MenuItems THEN HiLiteItem = HiLiteItem + 1
       
        CASE CHR$(0) + CHR$(72) '*** Up arrow pressed ***

                IF HiLiteItem - 1 <> 0 THEN HiLiteItem = HiLiteItem - 1

        CASE CHR$(0) + CHR$(75) '*** Left arrow pressed ***
       
                IF HiLiteItem > Rows THEN HiLiteItem = HiLiteItem - Rows

        CASE CHR$(0) + CHR$(77) '*** Right arrow pressed ***

                IF HiLiteItem < (TotColmns - 1) * Rows + 1 THEN HiLiteItem = HiLiteItem + Rows
                IF HiLiteItem > MenuItems THEN HiLiteItem = MenuItems

        CASE CHR$(0) + CHR$(71) '*** Home pressed ***

                HiLiteItem = 1

        CASE CHR$(0) + CHR$(79) '*** End pressed ***

                HiLiteItem = MenuItems

        CASE CHR$(0) + CHR$(73) '*** Page Up pressed ***

                IF HiLiteItem > MaxDisplay THEN
                        HiLiteItem = HiLiteItem - MaxDisplay
                ELSE
                        HiLiteItem = 1
                END IF

        CASE CHR$(0) + CHR$(81) '*** Page Down pressed ***
               
                IF HiLiteItem < MenuItems - MaxDisplay THEN
                        HiLiteItem = HiLiteItem + MaxDisplay
                ELSE
                        HiLiteItem = MenuItems
                END IF

        CASE ELSE

                '*** For any other key press find the first menu item ***
                '*** starting with that key ***

                FOR Count = 1 TO MenuItems
                        IF LEFT$(MenuArray$(Count), 1) = UserIn$ THEN
                                HiLiteItem = Count
                                EXIT FOR
                        END IF
                NEXT Count
END SELECT

RETURN


El aspecto del menú puede cambiarse a scroll vertical haciendo el número de filas mayor y disminuyendo el número de columnas a 1 ó 2. En vez de mostrar << y >> puede hacerse que se muestren flechas verticales usando PRINT CHR$(24);CHR$(24) y PRINT CHR$(25);CHR$(25) para reemplazar << y >> lo que permitiría ver:


696
Este código sirve para que el usuario pueda elegir opciones en un menú desplegable con opción a usar teclas de acceso rápido:

Código: [Seleccionar]
'Menualt.bas    Ray Thomas      February 2002

OPTION BASE 1

DIM MenuItem(7) AS STRING * 25  'Define the menu item array
DIM ChooseItem AS INTEGER       'Currently chosen menu item
DIM XMenuposn AS INTEGER        'Controls the menu item X positions
DIM YMenuPosn AS INTEGER        'Controls the menu item Y positions
DIM Count AS INTEGER            'Array counter
DIM EndMenu AS INTEGER          'F, Enter or Alt keys pressed

DATA F1 - Add a record, F2 - Remove a record, F3 - Modify a record
DATA F4 - Search database, F5 - Print a report, F6 - Display all records
DATA F7 - Quit the program

ChooseItem = 1          'Starting point of highlighted menu item
XMenuposn = 20          'X starting point of menu
YMenuPosn = 6           'Y starting point of menu


'*** Fill the MenuItme Array ***

FOR Count = 1 TO UBOUND(MenuItem$)
        READ MenuItem(Count)
NEXT Count


CLS

PRINT
PRINT "   Use the Enter key to choose the highlighted menu item or"
PRINT "   Press the F number key associated with the menu item or"
PRINT "   Press the Alt key and the capitalised letter of the menu item"

GOSUB DrawMenu

'*** get cursor key movements and redraw menu ***
DO
        Cmmnd$ = (INKEY$)
        IF LEN(Cmmnd$) = 2 THEN Cmmnd$ = RIGHT$(Cmmnd$, 1)
       
        IF Cmmnd$ = "8" OR Cmmnd$ = CHR$(72) THEN GOSUB MoveUp
        IF Cmmnd$ = "2" OR Cmmnd$ = CHR$(80) THEN GOSUB MoveDown
        IF Cmmnd$ = "7" OR Cmmnd$ = CHR$(71) THEN ChooseItem = 1
        IF Cmmnd$ = "1" OR Cmmnd$ = CHR$(79) THEN ChooseItem = UBOUND(MenuItem)

        IF Cmmnd$ = CHR$(13) THEN EndMenu = 1
        IF Cmmnd$ = CHR$(59) OR Cmmnd$ = CHR$(30) THEN
                ChooseItem = 1
                EndMenu = 1
        END IF
        IF Cmmnd$ = CHR$(60) OR Cmmnd$ = CHR$(19) THEN
                ChooseItem = 2
                EndMenu = 1
        END IF
        IF Cmmnd$ = CHR$(61) OR Cmmnd$ = CHR$(50) THEN
                ChooseItem = 3
                EndMenu = 1
        END IF
        IF Cmmnd$ = CHR$(62) OR Cmmnd$ = CHR$(31) THEN
                ChooseItem = 4
                EndMenu = 1
        END IF
        IF Cmmnd$ = CHR$(63) OR Cmmnd$ = CHR$(25) THEN
                ChooseItem = 5
                EndMenu = 1
        END IF
        IF Cmmnd$ = CHR$(64) OR Cmmnd$ = CHR$(32) THEN
                ChooseItem = 6
                EndMenu = 1
        END IF
        IF Cmmnd$ = CHR$(65) OR Cmmnd$ = CHR$(16) THEN
                ChooseItem = 7
                EndMenu = 1
        END IF

        GOSUB DrawMenu

LOOP UNTIL EndMenu = 1

PRINT
COLOR 16, 10
PRINT "Item chosen = "; MenuItem(ChooseItem)

END

DrawMenu:
'Draw the menu
LOCATE YMenuPosn, XMenuposn
FOR Count = 1 TO UBOUND(MenuItem$)
        IF Count = ChooseItem THEN COLOR 4, 2 ELSE COLOR 2, 4
        LOCATE CSRLIN, XMenuposn
        PRINT MenuItem$(Count)

NEXT Count
RETURN

MoveUp:
IF ChooseItem = 1 THEN
        ChooseItem = UBOUND(MenuItem$)
ELSE
        ChooseItem = ChooseItem - 1
END IF
RETURN

MoveDown:
IF ChooseItem = UBOUND(MenuItem$) THEN
        ChooseItem = 1
ELSE
        ChooseItem = ChooseItem + 1
END IF
RETURN


697
Este código sirve para elegir opciones con el cursor en un menú multicolumna:

Código: [Seleccionar]
'Menucol.bas    Ray Thomas      January 2002

OPTION BASE 1

DIM MenuItem(60) AS STRING * 15 'Define the menu item array
DIM ChooseItem AS INTEGER       'Currently chosen menu item
DIM XMenuPosn AS INTEGER        'Controls the menu item X positions
DIM YMenuPosn AS INTEGER        'Controls the menu item Y positions
DIM Count AS INTEGER            'Array counter
DIM MenuLine AS INTEGER         'Number of menu items per line
DIM Temp AS STRING              'Used to centre text in the space

DATA Choice 1, Choice 2, Choice 3, Choice 4, Choice 5
DATA Choice 6, Choice 7, Choice 8, Choice 9, Choice 10
DATA Choice 11, Choice 12, Choice 13, Choice 14, Choice 15
DATA Choice 16, Choice 17, Choice 18, Choice 19, Choice 20
DATA Choice 21, Choice 22, Choice 23, Choice 24, Choice 25
DATA Choice 26, Choice 27, Choice 28, Choice 29, Choice 30
DATA Choice 31, Choice 32, Choice 33, Choice 34, Choice 35
DATA Choice 36, Choice 37, Choice 38, Choice 39, Choice 40
DATA Choice 41, Choice 42, Choice 43, Choice 44, Choice 45
DATA Choice 46, Choice 47, Choice 48, Choice 49, Choice 50
DATA Choice 51, Choice 52, Choice 53, Choice 54, Choice 55
DATA Choice 56, Choice 57, Choice 58, Choice 59, Choice 60

ChooseItem = 1          'Starting point of highlighted menu item
XMenuPosn = 10          'X starting point of menu
YMenuPosn = 3           'Y starting point of menu
MenuLine = 4            'Number of columns in the menu


'*** Fill the MenuItme Array ***

FOR Count = 1 TO UBOUND(MenuItem$)
        READ Temp$
        '*** Centre the Text ***
        Temp$ = SPACE$((15 - LEN(Temp$)) / 2) + Temp$
        MenuItem(Count) = Temp$
NEXT Count


CLS


GOSUB DrawMenu

'*** get cursor key movements and redraw menu ***
DO
        Cmmnd$ = INKEY$
        IF LEN(Cmmnd$) = 2 THEN Cmmnd$ = RIGHT$(Cmmnd$, 1)
       
        IF Cmmnd$ = "8" OR Cmmnd$ = CHR$(72) THEN GOSUB MoveUp
        IF Cmmnd$ = "2" OR Cmmnd$ = CHR$(80) THEN GOSUB MoveDown
        IF Cmmnd$ = "4" OR Cmmnd$ = CHR$(75) THEN GOSUB Moveleft
        IF Cmmnd$ = "6" OR Cmmnd$ = CHR$(77) THEN GOSUB MoveRight
        IF Cmmnd$ = "9" OR Cmmnd$ = CHR$(73) THEN GOSUB TopCol
        IF Cmmnd$ = "3" OR Cmmnd$ = CHR$(81) THEN GOSUB BottomCol
        IF Cmmnd$ = "7" OR Cmmnd$ = CHR$(71) THEN ChooseItem = 1
        IF Cmmnd$ = "1" OR Cmmnd$ = CHR$(79) THEN ChooseItem = UBOUND(MenuItem$)


        GOSUB DrawMenu

LOOP UNTIL Cmmnd$ = CHR$(13)

PRINT
COLOR 16, 10
PRINT "Item chosen ="; MenuItem(ChooseItem)

END:

DrawMenu:
'Draw the menu
LOCATE YMenuPosn, XMenuPosn
FOR Count = 1 TO UBOUND(MenuItem$)
        IF Count = ChooseItem THEN COLOR 4, 2 ELSE COLOR 2, 4
        PRINT MenuItem$(Count);
        IF Count MOD MenuLine = 0 THEN
                PRINT
                LOCATE CSRLIN, XMenuPosn
        END IF
        NEXT Count
RETURN

MoveUp:
IF ChooseItem <= MenuLine THEN
        ChooseItem = UBOUND(MenuItem$) - (MenuItem MOD MenuLine)
ELSE
        ChooseItem = ChooseItem - MenuLine
END IF
RETURN

MoveDown:
IF ChooseItem > UBOUND(MenuItem$) - MenuLine THEN
        ChooseItem = ChooseItem MOD MenuLine
ELSE
        ChooseItem = ChooseItem + MenuLine
END IF
IF ChooseItem = 0 THEN ChooseItem = MenuLine
RETURN

Moveleft:
ChooseItem = ChooseItem - 1
IF ChooseItem = 0 THEN ChooseItem = UBOUND(MenuItem$)
RETURN

MoveRight:
ChooseItem = ChooseItem + 1
IF ChooseItem = UBOUND(MenuItem$) + 1 THEN ChooseItem = 1
RETURN

TopCol:
ChooseItem = ChooseItem MOD MenuLine
IF ChooseItem = 0 THEN ChooseItem = MenuLine
RETURN

BottomCol:
ChooseItem = UBOUND(MenuItem$) - (MenuLine - (ChooseItem MOD MenuLine))
IF MenuLine - (ChooseItem MOD MenuLine) = MenuLine THEN ChooseItem = UBOUND(MenuItem$)
RETURN


698
Este código permite elegir opciones de un menú con el cursor para QuickBasic:

Código: [Seleccionar]
'Menu.bas       Ray Thomas      February 2002

OPTION BASE 1

DIM MenuItem(3) AS STRING       'Define the menu item array
DIM ChooseItem AS INTEGER       'Currently chosen menu item
DIM XMenuPosn AS INTEGER        'Controls the menu item X positions
DIM YMenuPosn AS INTEGER        'Controls the menu item Y positions

MenuItem$(1) = "  Alpha  "
MenuItem$(2) = "  Bravo  "
MenuItem$(3) = " Charlie "

CLS

ChooseItem = 1
XMenuPosn = 10
YMenuPosn = 3

GOSUB DrawMenu

'get cursor key movements and redraw menu
DO
        Cmmnd$ = INKEY$

        IF LEN(Cmmnd$) = 2 THEN Cmmnd$ = RIGHT$(Cmmnd$, 1)
     
        IF Cmmnd$ = "8" OR Cmmnd$ = CHR$(72) THEN GOSUB MoveUp
        IF Cmmnd$ = "2" OR Cmmnd$ = CHR$(80) THEN GOSUB MoveDown
        IF Cmmnd$ = "7" OR Cmmnd$ = CHR$(71) THEN ChooseItem = 1
        IF Cmmnd$ = "1" OR Cmmnd$ = CHR$(79) THEN ChooseItem = UBOUND(MenuItem)

        GOSUB DrawMenu
LOOP UNTIL Cmmnd$ = CHR$(13)

PRINT
COLOR 16, 10
PRINT "Item chosen ="; MenuItem(ChooseItem)

END

DrawMenu:
'Draw the menu
LOCATE YMenuPosn, XMenuPosn
FOR Count = 1 TO UBOUND(MenuItem$)
        IF Count = ChooseItem THEN COLOR 4, 2 ELSE COLOR 2, 4
        PRINT MenuItem$(Count)
        LOCATE CSRLIN, XMenuPosn
NEXT Count
RETURN

MoveUp:
IF ChooseItem = 1 THEN
        ChooseItem = UBOUND(MenuItem$)
ELSE
        ChooseItem = ChooseItem - 1
END IF
RETURN

MoveDown:
IF ChooseItem = UBOUND(MenuItem$) THEN
        ChooseItem = 1
ELSE
        ChooseItem = ChooseItem + 1
END IF
RETURN


699
Este código es un ejemplo de menú simple de texto con QuickBasic:

Código: [Seleccionar]
'TxtMenu.bas       Ray Thomas     February 2002

'Declarar las variables (no es estrictamente necesario para INTEGERS or STRINGS)

DIM MenuIn AS INTEGER    'Número que el usuario ha de elegir


DO
        GOSUB MainMenu          'Llamar al menu  principal
        SELECT CASE MenuIn
        CASE 1
                GOSUB AddRec    'Añadir un dato
        CASE 2
                GOSUB DelRec    'Borrar un dato
        CASE 3
                GOSUB ModRec    'Modificar un dato
        CASE 4
                GOSUB SrchRec   'Buscar un dato
        CASE 5
                GOSUB PrnRec    'Mostrar un dato
        CASE 6
                GOSUB ShwRec    'Mostrar los datos
        END SELECT

LOOP UNTIL MenuIn = 7

CLOSE                   'Cerrar archivos abiertos
END                     'Final del programa

MainMenu:
CLS
PRINT
PRINT "Indica que quieres hacer"
PRINT "**********************"
PRINT "1. Añadir un dato"
PRINT "2. Borrar un dato"
PRINT "3. Modificar un dato"
PRINT "4. Buscar un dato"
PRINT "5. Mostrar un dato"
PRINT "6. Mostrar todos los datos"
PRINT "7. Salir"
PRINT
PRINT "Por favor elige un numero..."
PRINT
PRINT "(7 hara que se salga del programa)"
PRINT
INPUT "Que eliges?  ", MenuIn
RETURN

AddRec:
RETURN

DelRec:
RETURN

ModRec:
RETURN

SrchRec:
RETURN

PrnRec:
RETURN

ShwRec:
RETURN

...

700
Hola 5378453 (has elegido un nombre de usuario un poco extraño). Igualmente darte la bienvenida y pedirte que por favor en el nombre del tema que crees incluyas la referencia del ejercicio, por ejemplo CU00636B

Este constructor sirve para este ejercicio:

    public Rueda(){
       tipo = "circular";
       grosor = .2;
       diametro = 5.1;
       marca = "Llanta";
    }

pero ten en cuenta que en general debes inicializar los atributos a "", 0 ó false por ejemplo

    public Rueda(){
       tipo = "";
       grosor = 0;
       diametro = 0;
       marca = "";
    }


Saludos

Páginas: 1 ... 30 31 32 33 34 [35] 36 37 38 39 40 ... 68

Sobre la educación, sólo puedo decir que es el tema más importante en el que nosotros, como pueblo, debemos involucrarnos.

Abraham Lincoln (1808-1865) Presidente estadounidense.

aprenderaprogramar.com: Desde 2006 comprometidos con la didáctica y divulgación de la programación

Preguntas y respuestas

¿Cómo establecer o cambiar la imagen asociada (avatar) de usuario?
  1. Inicia sesión con tu nombre de usuario y contraseña.
  2. Pulsa en perfil --> perfil del foro
  3. Elige la imagen personalizada que quieras usar. Puedes escogerla de una galería de imágenes o subirla desde tu ordenador.
  4. En la parte final de la página pulsa el botón "cambiar perfil".