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.


Temas - César Krall

Páginas: [1] 2
1
1) Note in english
2) Nota en español
3) Note en anglais
4) Hinweis auf Deutsch
5) Nota in italiano
6) Uwaga w języku polskim
7) Nederlandse notitie.
8) Russian note Русская нота



1. English note

The 'Attachments' extension for Joomla! developed by Jonathan Cameron (https://github.com/jmcameron and https://extensions.joomla.org/extension/attachments/) is a great extension that allows files to be uploaded and attached to articles and other types of content in Joomla. Hundreds of websites appreciate Jonathan's work as a great work (I appreciate it too). After the Joomla 4 launch this extension turned to be not compatible with the new version of joomla and a lot of websites that used this extension tackled with a problem for the migration.

Waiting for a possible update of the extension for Joomla 5 I've developed an ad hoc solution for a specific migration. It's a dumb and artisan plugin to show a simulation of attachment in accordance with Jonathan Cameron's extension for Joomla "Attachments". Hoping it to come back... Trick or die... Trick. Its safety is not guaranteed. Its operation is not guaranteed. Its coding is not guaranteed. No support is available. Demo at: https://aprenderaprogramar.com

If someone improves it please answer here and share it.

You can download the plugin by clicking on falseattachbyapr.zip below (you need to be logged to download the file).


2
Ejercicio resuelto en C# (publicado por Dimitar Stefanov):

Citar
Fibonacci Numbers
Description

Write a program that reads a number N and prints on the console the first N members of the Fibonacci sequence (at a single line, separated by comma and space - ", ") : 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, ….

El código:

Código: [Seleccionar]
using System;

namespace FibonacciNumbers {
class Program {
static void Main() {
int cantidad = int.Parse(Console.ReadLine());
long a = 0;
long b = 1;
long aux = 0;


for(int i = 0;i<cantidad;i++) {
if(i==0) {
Console.Write("{0}", a);
}else {
aux = a;
a = b;
b = aux + a;
Console.Write(", {0}",a);
}
}
Console.WriteLine();
}
}
}

Saludos.

3
Ejercicio resuelto en C# (publicado por Dimitar Stefanov):

Citar
Sum of N Numbers
Description

Write a program that enters a number N and after that enters more N numbers and calculates and prints their sum.

    Note: You may need to use a for-loop.

El código:

Código: [Seleccionar]
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace SumOfNNumbers {
class Program {
static void Main() {
int cantidad = int.Parse(Console.ReadLine());
double result=0.0d;

for(int i = 0;i<cantidad;i++) {
result = result + double.Parse(Console.ReadLine());
}
Console.WriteLine(result);
}
}
}

4
Esto es un ejemplo básico de reemplazar un texto por otro usando innerHTML (JavaScript):

Código: [Seleccionar]
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8"/>
<script>
function myFunction() {
document.getElementById("demo").innerHTML = "<h1>Se ha cambiado con innerHTML!</h1>";
}
</script>
</head>
<body>
<h2 id="demo" onclick="myFunction()">Haz click aquí para ver cómo cambia el contenido (innerHTML).</h2>
</body>
</html>

Saludos!

5
Este es un ejemplo de cómo dibujar formas geométricas con java (círculo, cuadrado) y hacer que su color cambie cuando hagamos click sobre la figura:

Código: [Seleccionar]
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Shape;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.geom.Ellipse2D;
import java.awt.geom.Rectangle2D;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.SwingUtilities;

public class DemoShapes {
    public static final Color DEFAULT_COLOR = Color.BLUE;

    public DemoShapes() {
        List<ShapeItem> shapes = new ArrayList<ShapeItem>();
        shapes.add(new ShapeItem(new Rectangle2D.Double(110, 1, 100, 100),
                DEFAULT_COLOR));
        shapes.add(new ShapeItem(new Rectangle2D.Double(110, 110, 100, 100),
                DEFAULT_COLOR));
        shapes.add(new ShapeItem(new Ellipse2D.Double(1, 1, 100, 100),
                DEFAULT_COLOR));
        shapes.add(new ShapeItem(new Ellipse2D.Double(1, 110, 100, 100),
                DEFAULT_COLOR));

        JFrame frame = new JFrame("Shapes");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        ShapesPanel panel = new ShapesPanel(shapes);
        frame.add(panel);

        frame.setLocationByPlatform(true);
        frame.pack();
        frame.setVisible(true);
    }

    class ShapeItem {
        private Shape shape;
        private Color color;

        public ShapeItem(Shape shape, Color color) {
            super();
            this.shape = shape;
            this.color = color;
        }

        public Shape getShape() {
            return shape;
        }

        public void setShape(Shape shape) {
            this.shape = shape;
        }

        public Color getColor() {
            return color;
        }

        public void setColor(Color color) {
            this.color = color;
        }
    }

    class ShapesPanel extends JPanel {
        private List<ShapeItem> shapes;
        private Random rand = new Random();

        public ShapesPanel(List<ShapeItem> shapesList) {
            this.shapes = shapesList;

            addMouseListener(new MouseAdapter() {
                    @Override
                    public void mouseClicked(MouseEvent e) {

                        Color color = getRandomColor();
                        for (ShapeItem item : shapes) {
                            if (item.getShape().contains(e.getPoint())) {
                                item.setColor(color);
                            }
                        }
                        repaint();
                    }
                });
        }

        @Override
        protected void paintComponent(Graphics g) {
            super.paintComponent(g);

            Graphics2D g2 = (Graphics2D) g.create();

            for (ShapeItem item : shapes) {
                g2.setColor(item.getColor());
                g2.fill(item.getShape());
            }

            g2.dispose();
        }

        @Override
        public Dimension getPreferredSize() {
            return new Dimension(300, 300);
        }

        private Color getRandomColor() {
            return new Color(rand.nextFloat(), rand.nextFloat(),
                rand.nextFloat());
        }
    }

    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {
                public void run() {
                    new DemoShapes();
                }
            });
    }
}

Saludos!

6
aprenderaprogramar.com se aproxima a los 500 seguidores en FaceBook. Para celebrarlo os proponemos un pequeño concurso en el que os animamos a todos a participar. Las bases son las siguientes:




 - Puede presentarse cualquier persona que no haya publicado dibujos o artículos en la web de aprenderaprogramar.com.

- El concurso consistirá en la creación de un texto, historia, dibujo, comic, pintura... libre cuyo tema central sea "La programación". Puede ser una creación de cualquier tipo: texto humorístico, historia personal, un relato, una anécdota, un diálogo teatral, un ensayo, un cómic, historieta gráfica, etc.

- La creación debe ser completamente original, estar creada ex-profeso para este concurso y no haber sido publicada por ningún medio anteriormente.

- Se admiten un máximo de dos creaciones por persona.

- Si es un texto estará redactado sobre página con márgenes de 2 cm en todos los sentidos, y tipo de letra Arial, tamaño de letra 11 puntos e interlineado 1.5 líneas.

- La extensión máxima será de 5 páginas. No se define una extensión mínima.

- Si es un texto no se admiten fotografías o imágenes acompañando al texto, excepto si son dibujos a mano creados ex-profeso para el concurso.

- Entre las creaciones recibidas, el equipo de redacción de aprenderaprogramar.com seleccionará el ganador basándose en: originalidad, interés, calidad narrativa o gráfica.

- Si más de una creación se considera de igual calidad se podrá conceder más de un premio.

- Se podrán enviar creaciones-textos entre el 20 de agosto y el 30 de septiembre de 2015. El resultado del concurso será publicado en la web aprenderaprogramar.com y en Facebook entre el 1 y el 15 de octubre de 2015.

- Para participar deberá enviarse el texto o creación en formato word, pdf, o incluso escaneado, al correo electrónico contacto@aprenderaprogramar.com indicando "Concurso sobre la programación", nombre y apellidos, ciudad, país y correo electrónico del participante. Para dibujos, comics, etc. el formato podrá ser jpg, png ó similar. Enviaremos una confirmación de recepción al remitente.

- El ganador o ganadora tendrá como premio:

* Un libro electrónico de entre los publicados por aprenderaprogramar.com (podrá escoger el que desee).

* Publicación del texto o creación en la web de aprenderaprogramar.com, figurando que ha sido el texto o creación ganadora del concurso y la persona ganadora (o su pseudónimo si lo prefiere) como autor.

¡Esperamos vuestra participación!

7
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:


8
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


9
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


10
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


11
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

...

12
Hola, debido a la cantidad de consultas recibidas sobre el tema dejo aquí esta información.

La visualización de errores en PHP hay que activarla si no está activada y queremos visualizar los mensajes de error en vez de una pantalla en blanco. Puede intentarse de distintas maneras, aquí indico algunas:

1) Contacta con el servicio de hosting y pide que te activen la depuración de errores php (php debugging)

2) Accede al fichero php.ini en el servidor y busca en él error_reporting y display_errors y cambia sus valores. No siempre es posible acceder al fichero php.ini (los responsables del servidor puede que no te tengan habilitado el acceso)

3) Crea un fichero cuyo nombre debe ser .httaccess (tal cual he escrito, el nombre del fichero empieza con un punto), o edítalo si ya existe y añade estas líneas:

php_flag  display_errors        on
php_value error_reporting       2039

4) Accede al cPanel o equivalente del servidor, busca la opción php debugging y actívala

Saludos,

13
CONSULTA RECIBIDA: hola solo quiero decirles que esta página es una de las mejores que he encontrado y quiero felicitar a los que contribuyeron a la creación y al contenido de la pagina esta excelente. Estoy empezando a conocer toda la rama de la programación y esta pagina creo que la utilizare todos los días y mi pregunta es si tiene un costo algunos contenidos de la pagina. GRACIAS Y DESGUINCE.


RESPUESTA: Gracias por los comentarios, que agradecemos. Los contenidos de la web son gratuitos, por tanto todos los contenidos que ofrecemos se pueden usar gratuitamente. Ofrecemos algunos productos de pago como libros (en formato papel o e-book) o cursos tutorizados on-line, donde se cuenta con un material formativo para el curso y un tutor que indica el trabajo a realizar semanalmente, corrige los ejercicios planteados y resuelve dudas y asesora. Los servicios de pago son opcionales, es decir, para aquellas personas que tengan interés en ellos y su costo se encuentra indicado dentro del portal web en los apartados correspondientes. Saludos.


14
Desde Argentina nos han hecho llegar esta sugerencia:

Estoy siguiendo el curso de Java y la verdad es que está muy bien redactado y es muy didáctico. Si se me permite, quisiera hacer una sugerencia acerca del sitio. No estaría nada mal que colocaran un par de enlaces al final de cada entrega que permitan ir a la entrega anterior y a la siguiente sin tener que volver a la raíz de curso ya que existe un desfasaje de 1 entre el número de entrega que figura en el listado del curso y el número de entrega que se muestra una vez clickeado el enlace correspondiente y eso, en mi humilde opinión haría que el usuario se confunda e ingrese 2 veces a la misma entrega. En mi humilde opinión creo que mejoraría un poco la fluidez del sitio. Me despido felicitándolos nuevamente por el trabajo que han realizado con este tutorial. Saludos.


RESPUESTA: Gracias por los comentarios. Además era una cuestión que ya nos habían solicitado otros usuarios. Hemos procedido a habilitar unos enlaces al final de cada entrega de los cursos que ponen "Anterior" y "Próximo" que permiten, estando en una entrega, pasar a la entrega anterior o a la próxima sin tener que pasar por el listado de todas las entregas del curso. Esperemos que esto facilite la navegación a todos quienes estáis siguiendo cualquiera de los cursos:

Bases de la programación nivel I

Bases de la programación nivel II

Programación Visual Basic nivel I

Programación Java desde cero

Programación Java avanzada

Creación web con Joomla

HTML desde cero

CSS desde cero

PHP desde cero
 

15
Mensaje recibido: Primero, y antes que nada, felicitaros por esta iniciativa y por la calidad de vuestro curso gratuito para aprender a programar desde cero. El motivo de mi correo es que me estoy inicando en esto de la programación y en el tema 14 de Bases de programación, , habéis puesto un esquema de decisión final al que creo que falta el caso de "si no se aprueban las prácticas de campo, se tiene una cita con el profesor" Insisto, me estoy iniciando en esto, y por esa razón, lo último que querría es quedar como un listillo, apreciando un error dónde no lo hay. Os agradecería que aclaráseis mi confusión Un abrazo

Procedo a dar una respuesta: en primer lugar, gracias por tu felicitación. Sobre la entrega CU00115A del curso https://www.aprenderaprogramar.com/index.php?option=com_content&view=category&id=28&Itemid=59, confirmarte que lo hemos revisado y tu apreciación es correcta, faltaba añadir que si no se aprobaban las prácticas de campo pero sí teoría, problemas y prácticas de laboratorio, se debía proceder a citar en despacho. Hemos procedido a corregirlo. Gracias por la aportación. Saludos.


16
Consulta recibida: Buenas noches como accedo al programa java desde cero?, me gustaria aprender java, porque necesito tener base para adentrarme al jdeveloper11, me va servir el curso de java o busco un tutorial solo de jdeveloper11 para utilizar con la base de datos Oracle 11, saludos, Dianne Peralta

Respuesta: el acceso al curso se hace desde este link: https://www.aprenderaprogramar.com/index.php?option=com_content&view=category&id=68&Itemid=188.
Si no tienes conocimientos de java es preferible empezar con un curso básico como este antes que con un tutorial de jdeveloper. Lo ideal sería que adquieras primero los conocimientos básicos de java y que luego uses tutoriales específicos de herramientas como jdeveloper. Para cualquier duda me puedes responder a este mensaje. Saludos.

17
Desde México nos han hecho llegar este mensaje:

Reciban un saludo cordial. Primero quiero felicitarles por este sitio tan útil que han desarrollado. Me ha ayudado mucho, gracias por tomarse el tiempo de publicar material que explique de manera tan sencilla y tan clara cómo programar. También quiero comunicarles que he encontrado algo que me parece una inconsistencia en uno de los tutoriales. Se encuentra en la siguiente URL https://www.aprenderaprogramar.com/index.php?option=com_content&view=article&id=653:ejemplo-de-herencia-en-java-uso-de-palabras-clave-extends-y-super-constructores-con-herencia-cu00686b&catid=68:curso-aprender-programacion-java-desde-cero&Itemid=188 En la parte donde dice: Los aspectos a destacar del código son: a) La clase persona es una clase “normal” definida tal y como lo venimos haciendo habitualmente mientras que la clase Estudiante es una subclase de Persona con ciertas peculiaridades. Hace referencia a una clase llamada "Estudiante", pero en el código solamente hay dos clases, "Persona" y "Profesor". Nuevamente agradezco por su página y me despido.


RESPUESTA: Efectivamente se trata de una errata que vamos a corregir, tal y como nos indican. Gracias por los comentarios y gracias por comunicarnos cualquier inconsistencia o errata que detecten. Desde aquí les animamos a participar. ¡Este sitio está abierto a todo el mundo!


18
Se está desarrollando el VII concurso de software libre para estudiantes universitarios. Es un concurso de desarrollo de software, hardware y documentación técnica libre en el que pueden participar estudiantes universitarios de primer, segundo y tercer ciclo; así como estudiantes no universitarios de bachillerato, grado medio y superior del ámbito estatal español. Quienes estén interesados pueden ver más información aquí: http://www.concursosoftwarelibre.org


19
CONSULTA RECIBIDA: Hola buenas tardes, quisiera saber como obtener la constancia en la práctica de la programación una vez terminado el curso realizado a través de esta web.

Gracias por la atención.


RESPUESTA: Una vez se termina un curso hay que tratar de sacarle partido a todos los conocimentos adquiridos y evitar que por falta de práctica o de uso acabemos olvidando lo aprendido. Por ello recomendamos que si no se está en la práctica profesional se busquen alternativas como:

Al terminar el curso Bases de la programación nivel I: continuar con el curso bases de la programación nivel II.

Al terminar el curso Bases de la programación nivel II: continuar con el curso de programación en Visual Basic.

Al terminar el curso Programación en Visual Basic nivel I: crear programas para cosas que nos puedan ser útiles en la vida diaria. Por ejemplo, para realizar cálculos, para la contabildad familiar, etc. Además, cuando vayan saliendo nuevas versiones de visual basic instalarlas en nuestro ordenador y probarlas para conocer los cambios.

Al terminar el curso Creación y administración web con Joomla: crear páginas web periódicamente en servidores gratuitos e ir probando las diferentes extensiones disponibles en http://joomla.org

Al terminar el curso de HTML o el curso de PHP: crear páginas web en servidores gratuitos tratando de lograr cada vez páginas más complejas y atractivas.

Al terminar el curso Aprender programación Java desde cero: pasar a un entorno de desarrollo como Eclipse o Netbeans para generar aplicaciones.

En definitiva, la formación en programación no se acaba nunca. Si estamos trabajando profesionalmente en ello, la propia dinámica del trabajo nos obligará a estudiar nuevas materias y estar al día. Si no trabajamos profesionalmente en este campo, debemos de practicar y seguir formándonos.

20
CONSULTA: BUENAS TARDES INTENTE ENVIAR ESTE MENSAJE POR LOS FOROS PERO APARECE UN MENSAJE DONDE DICE QUE NO SE ENCUENTRA ESE CONTACTO no se entonces a quien lo debo dirigir.tengo una pregunta acerca del programa de diseño GIMP que peso tiene y que caracteristicas debe tener mi pc capacidad disco duro,memoria e.t.c y si debe ser muy moderna la pc para instalarlo me seria de mucha ayuda ya que trabajo con manualidades "recordatorios" y me es necesario aprender a diseñar las targetas de invitacion gracias por su colaboracion.

RESPUESTA: para poner un mensaje en el foro basta con:

a) Si es un tema nuevo, acceder con nombre de usuario y password y pulsar sobre el nombre del foro y luego elegir "Nuevo tema", escribir el asunto y el texto.

b) Si es un tema ya existente, acceder con nombre de usuario y password y pulsar sobre el tema y pulsar sobre "responder".

Sobre el gimp: el peso del archivo de instalación puede ser de unos 50 Mb y el espacio que ocupará en tu disco duro puede estar en 250 Mb.

Respecto a las características que debe tener tu pc, te indicaría lo siguiente:

Memoria ram mínimo 2 Gb
Disco duro de al menos 100 Gb con al menos 2 Gb de espacio libre.
Sistema operativo si es windows, XP, Vista, 7 u 8.

A la hora de descargar e instalar el gimp tienes que seleccionar el archivo adecuado según el sistema operativo que tengas.

Páginas: [1] 2

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".