Device, Program, System, and Method

JPWO2022255365A5Pending Publication Date: 2025-06-11
View PDF 0 Cites 0 Cited by

Patent Information

Application Number
JP2023525860
Authority / Receiving Office
JP · JP
Patent Type
Applications
Priority Date
2022-05-31
Filing Date
2022-05-31
Publication Date
2025-06-11

AI Technical Summary

Technical Problem

Users face challenges in effectively learning and managing functions when using visual programming languages, particularly due to the complexity of programs and the need for improved operability when defining or using functions.

Method used

The programming learning software improves operability by implementing a layer-based system where blocks for defining functions can be arranged in multiple layers, with only the active layer accepting user operations, and the inactive layers being non-interactive, allowing users to focus on one function at a time and preventing unintentional block combinations.

Benefits of technology

This approach enhances user experience by simplifying the process of defining and using functions, improving operability, and preventing errors by clearly distinguishing active and inactive areas, thus facilitating easier learning and use of visual programming languages.

✦ Generated by Eureka AI based on patent content.
Patent Text Reader

Abstract

The present invention improves the ease of block handling when defining a plurality of functions using a visual programming language. The programming learning software according to one embodiment of the present disclosure is used for learning programming using a visual programming language, the software causing one or more computers to execute: a setting process for setting a plurality of layers where a block for defining a function can be arranged; and an acceptance process for accepting, from a user, a block operation in an active layer among the plurality of layers, and disabling acceptance, from the user, of a block operation in an inactive layer among the plurality of layers.
Need to check novelty before this filing date? Find Prior Art

Description

Programming learning software, programming learning device, and programming learning method

[0001] The present disclosure relates to programming learning software, a programming learning device, and a programming learning method.

[0002] Conventionally, visual programming languages ​​such as Scratch and Blockly have been used to help children and beginners learn programming. In these visual programming languages, blocks for defining functions are provided as program components, and users can create programs by combining the blocks using a mouse or the like on a visual programming user interface.

[0003] Japanese Patent Application Laid-Open No. 2020-166292

[0004] Since a program generally contains a large number of functions, it is required that users can learn functions effectively when learning programming using a visual programming language.

[0005] Therefore, in one embodiment of the present disclosure, the operability of blocks when defining or using a function using a visual programming language is improved.

[0006] One aspect of the present disclosure, programming learning software, is software for learning programming using a visual programming language, and causes one or more computers to execute a setting process for setting multiple layers in which blocks for defining functions can be placed, and a reception process for receiving block operations from a user in an active layer among the multiple layers and not receiving block operations from a user in an inactive layer among the multiple layers.

[0007] According to one aspect of the present disclosure, it is possible to improve the operability of blocks when defining or using a function using a visual programming language.

[0008] FIG. 1 is an overall configuration diagram showing a programming learning system according to an embodiment of the present disclosure. FIG. 2 is a block diagram showing the functional configuration of a programming learning device according to an embodiment of the present disclosure. FIG. 3 is a flowchart showing a programming learning process according to an embodiment of the present disclosure. FIG. 4 is a diagram showing an example screen (switching between active and inactive) provided by programming learning software according to an embodiment of the present disclosure. FIG. 5 is a diagram showing an example screen (block shape (example 1)) provided by programming learning software according to an embodiment of the present disclosure. FIG. 6 is a diagram showing an example screen (block shape (example 1)) provided by programming learning software according to an embodiment of the present disclosure. FIG. 7 is a diagram showing an example screen (block shape (example 2)) provided by programming learning software according to an embodiment of the present disclosure. FIG. 8 is a diagram showing an example screen (display of variables) provided by programming learning software according to an embodiment of the present disclosure. FIG. 9 is a block diagram showing the hardware configurations of a programming learning device and a server device according to an embodiment of the present disclosure.

[0009] Hereinafter, embodiments of the present disclosure will be described with reference to the drawings.

[0010] <Terminology> - "Programming learning software" is software that allows users to learn programming using a visual programming language. In programming learning software, users can create programs by combining blocks for defining functions, for example. - "Blocks for defining functions" include blocks for calling functions, blocks for defining function processing, blocks for representing arguments (formal arguments), blocks for returning return values, etc. For example, arguments are variables that can be used locally within a function (i.e., variables whose scope is local and closed within the function). Note that blocks may be different colors depending on the type of block.

[0011] <Programming Learning System> FIG. 1 is an overall configuration diagram showing a programming learning system according to an embodiment of the present disclosure.

[0012] 1, a programming learning system 10 can include a programming learning device 100 and a server device 200. The programming learning device 100 and the server device 200 can transmit and receive data via any network.

[0013] The programming learning device 100 supports a user in learning programming by utilizing programming learning software provided by the server device 200. For example, the programming learning device 100 downloads the programming learning software from the server device 200 and installs the downloaded programming learning software, thereby enabling the user to utilize various functions of the programming learning software. Alternatively, the server device 200 may function as a cloud server, and the programming learning device 100 may utilize various functions of the programming learning software stored on the cloud by operating a screen provided by the programming learning software from the server device 200. For example, the programming learning device 100 may be a personal computer, a tablet, a smartphone, or the like.

[0014] The server device 200 stores programming learning software and, in response to a download request from a user, provides the programming learning software to the programming learning device 100. Alternatively, in response to a use request or an operation instruction from a user, the server device 200 allows the programming learning device 100 to use a function provided by the programming learning software or provides a function corresponding to the operation instruction.

[0015] Here, we will explain an overview of a programming method using programming learning software. First, the user presses a button on the programming learning software screen to start programming. Next, the user can define the processing of each function and the return value of each function. Specifically, a list of blocks is displayed, and the user creates a program by dragging and dropping each block displayed in the list of blocks into a specified area (function definition area) and connecting the blocks. Note that the so-called main function can also be considered an example of a function.

[0016] In one embodiment of the present disclosure, function definition regions are managed as layers. That is, blocks for defining functions can be arranged in layers. For example, the function processing block and return value block for function 1 are on a first layer, and the function processing block and return value block for function 2 are on a second layer. While one layer can be set for one function in this manner, multiple layers may also be set for one function (e.g., a main function). Note that when the layer is switched, the blocks displayed in the list of blocks may be switched (e.g., when switching from the first layer to the second layer, the list of blocks for the first layer is switched to the list of blocks for the second layer).

[0017] <Programming Learning Device> FIG. 2 is a block diagram showing the functional configuration of the programming learning device 100 according to an embodiment of the present disclosure.

[0018] 2, the programming learning device 100 includes a reception unit 110, a display switching unit 120, and a control unit 130. The reception unit 110, the display switching unit 120, and the control unit 130 are realized by a process of causing a processor to execute one or more programs installed in the programming learning device 100.

[0019] The receiving unit 110 receives a designation of one of the functions. Specifically, the receiving unit 110 receives a designation of one of the functions selected by a user on the screen of the programming learning software (e.g., by pressing a button to select one of the functions). The multiple functions are for controlling (e.g., causing) a single object (a control object). The receiving unit 110 receives user operations on blocks corresponding to active regions, but does not receive user operations on blocks corresponding to inactive regions. The receiving unit 110 also receives a user instruction to execute a program (a control program for controlling the single object) created by the user by combining blocks on the screen (e.g., by pressing a program execution button by the user).

[0020] The receiving unit 110 can receive an operation to place blocks in the active area independently of the placement of blocks in the inactive area, and the placement of blocks in the active area does not affect the placement of blocks placed in the inactive area.

[0021] The display switching unit 120 switches an area for manipulating blocks for defining a function (function definition area) between active and inactive. This area can also be referred to as an area where blocks for defining a function are placed by a drag-and-drop operation. Specifically, the display switching unit 120 activates an area for manipulating blocks for defining one function accepted by the accepting unit 110, and deactivates areas for manipulating blocks for defining functions other than the one function accepted by the accepting unit 110. Note that an active area can accept block operations by the user and allows new blocks to be placed. On the other hand, an inactive area cannot accept block operations by the user and does not allow new blocks to be placed.

[0022] When the reception unit 110 receives a program execution button press (i.e., a program execution instruction) from the user, the control unit 130 controls the operation of the object on the screen in accordance with the control program created by the user. The control unit 130 may also display the object in operation on the screen.

[0023] <<Management of User Interface>> Here, management of the user interface (specifically, areas for manipulating blocks) will be described. In one embodiment of the present disclosure, each area can be managed as a layer. Specifically, each area for manipulating blocks (i.e., each screen) is hierarchically organized as a layer and managed.

[0024] For example, the display switching unit 120 displays an area for manipulating blocks for defining functions other than one function received by the receiving unit 110 in a lighter color than an area for manipulating blocks for defining one function received by the receiving unit 110. This display allows the user to know that the area is inactive. For example, the display switching unit 120 can lightly display the area for manipulating blocks by making the image of the area semi-transparent. The display switching unit 120 may also lightly display the area by overlaying a semi-transparent image in a dark, single color on top of the blocks arranged in the inactive area, as if a semi-transparent black film were overlaid on the area.

[0025] For example, the display switching unit 120 does not display an area for manipulating blocks for defining functions other than the one function accepted by the accepting unit 110 .

[0026] 3 is a flowchart showing a programming learning process according to an embodiment of the present disclosure. The programming learning process is executed by the above-described programming learning device 100, and can be realized, for example, by one or more processors executing programs stored in one or more memories of the programming learning device 100.

[0027] In step 1 (S1), the receiving unit 110 of the programming learning device 100 receives the designation of one of the multiple functions. Specifically, the receiving unit 110 receives the designation of one of the multiple functions selected by the user on the screen of the programming learning device 100 (e.g., by pressing a button to select one of the multiple functions). Each of the multiple functions is a function for controlling one object (a control object) (e.g., causing the object to perform an action).

[0028] In step 2 (S2), the display switching unit 120 of the programming learning device 100 activates or deactivates the area for manipulating blocks for defining functions. Specifically, the display switching unit 120 activates the area for manipulating blocks for defining one function specified in S1, and deactivates the area for manipulating blocks for defining functions other than the one function specified in S1.

[0029] For example, the display switching unit 120 displays the area for manipulating blocks for defining functions other than the one function specified in S1 in a lighter color than the area for manipulating blocks for defining the one function specified in S1.

[0030] For example, the display switching unit 120 does not display the area for manipulating blocks for defining functions other than the one function designated in S1.

[0031] For example, the display switching unit 120 may manage multiple function definition regions corresponding to multiple functions as a layer structure in which only the topmost layer is the active layer where the user can perform block operations. That is, multiple layers may be set up in which blocks for defining functions can be placed. This layer structure includes multiple layers, and does not accept block operations by the user in layers other than the topmost layer. In such a layer structure, the display switching unit 120 sets the layer of the function definition region corresponding to the function whose specification is accepted by the accepting unit 110 to the topmost layer of the layer structure (the layer closest to the user), and sets the layers of the other function definition regions below it. This layer operation can activate the layer of the function definition region corresponding to the accepted function and deactivate the layers of the other function definition regions. In this case, the display switching unit 120 may display blocks placed in the topmost layer opaquely and display blocks placed in lower layers dimmed in areas where those blocks are not placed. Alternatively, the display switching unit 120 may display blocks placed in the topmost layer opaquely and not display blocks placed in lower layers. Here, the receiving unit 110 receives user operations for blocks arranged on an active layer, but does not receive user operations for blocks arranged on an inactive layer.

[0032] <Screen Examples> Screen examples provided by the programming learning software according to an embodiment of the present disclosure will be described with reference to FIGS. 4A and 4B to 7A and 7B.

[0033] 4A and 4B are diagrams illustrating an example screen (active / inactive switching) provided by the programming learning software according to an embodiment of the present disclosure. In FIGS. 4A and 4B, the area for manipulating blocks for defining functions other than the one function specified by the user is displayed lighter than the area for manipulating blocks for defining the one function specified by the user. Note that the multiple functions are multiple functions for controlling (e.g., moving) one object (e.g., the robot character (control target) on the left side of the screen in FIGS. 4A and 4B).

[0034] 4A shows a case where the function "Plus2" is specified by the user. In this case, the area where the blocks for defining the function "Plus2" are operated is displayed in a dark color. On the other hand, the areas where the blocks for defining functions other than the function "Plus2" are operated are displayed in a light color.

[0035] 4B shows a case where the function "main" is specified by the user. In this case, the area for manipulating blocks for defining the function "main" is displayed in a dark color. On the other hand, the area for manipulating blocks for defining functions other than the function "main" is displayed in a light color.

[0036] The user can use a block representing a local variable (the "local" block in FIG. 4A) only in an area where a block for defining a function in which the local variable is valid is operated. In other words, the user can only drag and drop a block representing a local variable from a definition block for defining that local variable (for example, a definition block labeled "Define: (local) to (2)" for defining the local variable "local") to that area (an area where a block for defining a function in which the local variable is valid is operated).

[0037] In the examples of Figures 4A and 4B, the list of blocks in the center of the screen is the same in Figures 4A and 4B, but a different list of blocks may be displayed for each function (i.e., different lists of blocks are displayed in Figures 4A and 4B).

[0038] In this manner, in one embodiment of the present disclosure, the area for manipulating blocks can be switched between active and inactive, thereby expanding the range in which the user can move blocks and improving the operability of blocks when defining multiple functions (e.g., improving operability on a small screen such as a smartphone). Furthermore, it is possible to prevent blocks (e.g., a block the user wants to use in the "Main" function in FIGS. 4A and 4B ) from being unintentionally combined with other blocks (e.g., a block the user wants to use in the "Plus2" function in FIGS. 4A and 4B ). In this manner, in one embodiment of the present disclosure, when defining multiple functions, the user can manipulate blocks within each area, thereby expanding the range in which the user can move blocks and facilitating operation. Furthermore, it is possible to easily understand which blocks can be used in which functions, thereby preventing unintentional combination of blocks.

[0039] 5A and 5B, 6A and 6B, the shape of a block for calling a function corresponds to the type of the return value. Whether or not blocks can be combined is determined based on the shape.

[0040] 5A and 5B are diagrams showing an example screen (block shape (example 1)) provided by programming learning software according to an embodiment of the present disclosure.

[0041] 5A shows a screen where a user creates a block for calling a function (e.g., adds it to a list of blocks). In this example, the user creates a function whose return type is "number / character." As a result, as shown in FIG. 5B, the shape of the block for calling the function will be shaped according to the return type of "number / character."

[0042] The user can only use a block representing a variable with a local scope within a function (such as a local variable or a formal parameter) in the area where the block for defining the function is operated (for example, the block representing the formal parameter "x" in FIG. 5B). In other words, the user can only drag and drop a block representing a variable with a local scope within a function from the definition block to this area (the area where the block for defining the function is operated).

[0043] 6A and 6B are diagrams showing an example screen (block shape (example 2)) provided by the programming learning software according to an embodiment of the present disclosure.

[0044] 6A shows a screen on which a user creates a block for calling a function (e.g., adds it to a list of blocks). In this example, the user creates a function whose return type is a "True or False value (yes or no)." In this case, as shown in FIG. 6B, the shape of the block for calling the function will be a shape that corresponds to the return type of "True or False value (yes or no)."

[0045] The return value type is, for example, one of three types: "no return value," "number / character," and "true / false value (yes or no)," but is not limited to these.

[0046] In this manner, in one embodiment of the present disclosure, the shape of the block for calling a function corresponds to the type of the return value, following the process also used in static programming languages ​​(e.g., C#) in which the type of the return value is determined when the function is defined, allowing users to smoothly transition to text programming.

[0047] Furthermore, in one embodiment of the present disclosure, whether or not blocks can be combined is determined based on the block shape. For example, a round block fits into a round blank, and a square block fits into a square blank. This allows the user to visually understand the meaning of the return type.

[0048] 7A and 7B are diagrams showing example screens (displaying variables) provided by the programming learning software according to an embodiment of the present disclosure. As described above, a user can use blocks representing local variables such as formal arguments only in an area where a block for defining a function in which the local variables are valid is operated. In other words, a user can only drag and drop blocks representing local variables into that area.

[0049] 7A and 7B, it is assumed that the block "a" is a block indicating a local variable. In FIG. 7A, if the area for manipulating a block for defining a function in which the local variable ("a") is valid is inactive, the user cannot use the block "a". On the other hand, in FIG. 7B, if the area for manipulating a block for defining a function in which the local variable ("a") is valid is active, the user can use the block "a".

[0050] In this manner, in one embodiment of the present disclosure, a block representing a local variable is used only in an area where a block for defining a function in which the local variable is valid is operated. This prevents the local variable from being used outside the valid range (scope) of the local variable (i.e., in a function in which the local variable is not valid). This makes it easy for the user to understand which block can be used in which function, and prevents erroneous operations.

[0051] In the above embodiment, the area for manipulating blocks for defining a function is switched between active and inactive. However, the display switching unit 120 may also be configured to switch between active and inactive for each block group defining a function. This allows the user to activate only the block group for the function they want to define (the target function) and inactive the block groups for functions other than the target function, thereby preventing variables with local scope in the target function from being used outside their effective range (scope). When the display switching unit 120 activates a block group, it displays the block group opaquely in the function definition area. When the display switching unit 120 deactivates a block group, it displays the block group not displayed or semi-transparently in the function definition area. In other words, the display switching unit 120 makes inactive block groups less visible to the user than active block groups. Here, the reception unit 110 accepts user operations for active block groups but does not accept user operations for inactive block groups.

[0052] <Hardware Configuration> Part or all of the programming learning device 100 and server device 200 in the above-described embodiments may be configured as hardware, or may be configured as software (program) information processing executed by a CPU (Central Processing Unit) or a GPU (Graphics Processing Unit). When configured as software information processing, software that realizes at least some of the functions of each device in the above-described embodiments may be stored on a non-transitory storage medium (non-transitory computer-readable medium) such as a flexible disk, CD-ROM (Compact Disc-Read Only Memory), or USB (Universal Serial Bus) memory, and the software information processing may be executed by loading the software into a computer. Alternatively, the software may be downloaded via a communication network. Furthermore, the software may be implemented in a circuit such as an ASIC (Application Specific Integrated Circuit) or FPGA (Field Programmable Gate Array), thereby executing the information processing by hardware.

[0053] There are no limitations on the type of storage medium that stores the software. The storage medium is not limited to removable media such as magnetic disks or optical disks, but may also be fixed storage media such as hard disks or memory. Furthermore, the storage medium may be provided inside the computer or outside the computer.

[0054] 8 is a block diagram showing an example of the hardware configuration of the programming learning device 100 and the server device 200 in the above-described embodiment. As an example, the programming learning device 100 and the server device 200 may be realized as a computer 7 including a processor 71, a main storage device 72 (memory), an auxiliary storage device 73 (memory), a network interface 74, and a device interface 75, which are connected via a bus 76.

[0055] Although the computer 7 in FIG. 8 includes one of each component, it may also include multiple of the same component. Also, while FIG. 8 shows one computer 7, the software may be installed on multiple computers, with each of the multiple computers executing the same or different parts of the software. In this case, a distributed computing configuration may be used in which each computer communicates with the other computers via a network interface 74 or the like to execute the processing. In other words, the programming learning device 100 and server device 200 in the above-described embodiment may be configured as a system in which one or more computers execute instructions stored in one or more storage devices to achieve their functions. Furthermore, information transmitted from a terminal may be processed by one or more computers on a cloud, and the processing results may be transmitted to the terminal.

[0056] The various calculations of the programming learning device 100 and the server device 200 in the above-described embodiments may be executed in parallel using one or more processors, or using multiple computers connected via a network. Furthermore, the various calculations may be distributed to multiple processor cores within a processor and executed in parallel. Furthermore, some or all of the processes, means, etc. disclosed herein may be executed by at least one processor and storage device provided on a cloud that can communicate with the computer 7 via a network. Thus, each device in the above-described embodiments may be implemented in the form of parallel computing using one or more computers.

[0057] The processor 71 may be an electronic circuit (such as a processing circuit, processing circuitry, CPU, GPU, FPGA, or ASIC) including a computer control device and arithmetic device. The processor 71 may also be a semiconductor device including a dedicated processing circuit. The processor 71 is not limited to an electronic circuit using electronic logic elements, but may also be realized by an optical circuit using optical logic elements. The processor 71 may also include an arithmetic function based on quantum computing.

[0058] The processor 71 performs arithmetic processing based on data and software (programs) input from each device, etc., configured internally of the computer 7, and can output the arithmetic results and control signals to each device, etc. The processor 71 may control each component constituting the computer 7 by executing the OS (Operating System) of the computer 7, applications, etc.

[0059] The programming learning device 100 and the server device 200 in the above-described embodiments may be realized by one or more processors 71. Here, the processor 71 may refer to one or more electronic circuits arranged on one chip, or to one or more electronic circuits arranged on two or more chips or two or more devices. When multiple electronic circuits are used, the respective electronic circuits may communicate with each other via wire or wirelessly.

[0060] The main memory device 72 is a storage device that stores instructions executed by the processor 71 and various data, and information stored in the main memory device 72 is read by the processor 71. The auxiliary memory device 73 is a storage device other than the main memory device 72. Note that these storage devices refer to any electronic component capable of storing electronic information, and may be semiconductor memory. The semiconductor memory may be either volatile memory or non-volatile memory. The storage device for saving various data in the programming learning device 100 and the server device 200 in the above-described embodiments may be realized by the main memory device 72 or the auxiliary memory device 73, or may be realized by an internal memory built into the processor 71. For example, the storage unit in the above-described embodiments may be realized by the main memory device 72 or the auxiliary memory device 73.

[0061] Multiple processors may be connected (coupled) to one storage device (memory), or a single processor may be connected. Multiple storage devices (memories) may be connected (coupled) to one processor. When the programming learning device 100 and the server device 200 in the above-described embodiments are configured with at least one storage device (memory) and multiple processors connected (coupled) to this at least one storage device (memory), they may include a configuration in which at least one of the multiple processors is connected (coupled) to at least one storage device (memory). This configuration may also be realized by storage devices (memories) and processors included in multiple computers. Furthermore, they may include a configuration in which the storage device (memory) is integrated with the processor (for example, a cache memory including an L1 cache and an L2 cache).

[0062] The network interface 74 is an interface for connecting to the communication network 8 wirelessly or via a wire. The network interface 74 may be an appropriate interface, such as one that conforms to an existing communication standard. The network interface 74 may exchange information with an external device 9A connected via the communication network 8. The communication network 8 may be any one of a wide area network (WAN), a local area network (LAN), a personal area network (PAN), etc., or a combination thereof, as long as information is exchanged between the computer 7 and the external device 9A. An example of a WAN is the Internet, an example of a LAN is IEEE 802.11 or Ethernet (registered trademark), and an example of a PAN is Bluetooth (registered trademark) or NFC (Near Field Communication), etc.

[0063] The device interface 75 is an interface such as a USB that directly connects to the external device 9B.

[0064] The external device 9A is a device connected to the computer 7 via a network, and the external device 9B is a device connected directly to the computer 7.

[0065] The external device 9A or the external device 9B may be, for example, an input device. The input device is, for example, a camera, a microphone, a motion capture device, various sensors, a keyboard, a mouse, a touch panel, or the like, and provides acquired information to the computer 7. Alternatively, the external device 9A or the external device 9B may be a device including an input unit, a memory, and a processor, such as a personal computer, a tablet terminal, or a smartphone.

[0066] Furthermore, the external device 9A or the external device 9B may be, for example, an output device. The output device may be, for example, a display device such as an LCD (Liquid Crystal Display), a CRT (Cathode Ray Tube), a PDP (Plasma Display Panel), or an organic EL (Electro Luminescence) panel, or may be a speaker that outputs sound or the like. Alternatively, the output device may be a device including an output unit, a memory, and a processor, such as a personal computer, a tablet terminal, or a smartphone.

[0067] The external device 9A or the external device 9B may be a storage device (memory). For example, the external device 9A may be a network storage or the like, and the external device 9B may be a storage device such as an HDD.

[0068] Furthermore, external device 9A or external device 9B may be a device having some of the functions of the components of programming learning device 100 and server device 200 in the above-described embodiments. In other words, computer 7 may transmit or receive some or all of the processing results of external device 9A or external device 9B.

[0069] In this specification (including the claims), when the expression "at least one of a, b, and c" or "at least one of a, b, or c" (including similar expressions) is used, it includes any of a, b, c, ab, ac, bc, or abc. It may also include multiple instances of any element, such as aa, abb, aabbcc, etc. Furthermore, it also includes the addition of elements other than the enumerated elements (a, b, and c), such as having d, as in abcd.

[0070] In this specification (including the claims), when expressions such as "using data as input / based on / according to / in response to" (including similar expressions) are used, unless otherwise specified, this includes cases where various data itself is used as input, or where various data that has been processed in some way (e.g., noise-added, normalized, intermediate representation of various data, etc.) is used as input. Furthermore, when a statement is made that a result is obtained "based on / according to / in response to data," this includes cases where the result is obtained based solely on the data in question, as well as cases where the result is obtained in response to other data, factors, conditions, and / or states other than the data in question. Furthermore, when a statement is made that "data is output," this includes cases where various data itself is used as output, or where various data that has been processed in some way (e.g., noise-added, normalized, intermediate representation of various data, etc.) is output.

[0071] When the terms "connected" and "coupled" are used in this specification (including the claims), they are intended as open-ended terms that encompass any of direct connection / coupling, indirect connection / coupling, electrically connection / coupling, communicatively connection / coupling, functionally connection / coupling, and physically connection / coupling. These terms should be interpreted appropriately according to the context in which they are used, but any connection / coupling form that is not intentionally or naturally excluded should be interpreted as being included in these terms without limitation.

[0072] In this specification (including the claims), the expression "A configured to B" may include the physical structure of element A having a configuration capable of performing operation B, and the permanent or temporary setting / configuration of element A being configured / set to actually perform operation B. For example, if element A is a general-purpose processor, it is sufficient that the processor has a hardware configuration capable of performing operation B, and is configured to actually perform operation B by setting a permanent or temporary program (instruction). Also, if element A is a dedicated processor or dedicated arithmetic circuit, it is sufficient that the circuit structure of the processor is implemented to actually perform operation B, regardless of whether control instructions and data are actually attached.

[0073] When used in this specification (including the claims), terms implying containing or possessing (e.g., "comprising / including" and "having") are intended to be open-ended terms that include containing or possessing things other than the object designated by the object of the term. When the object of these containing or possessing terms does not specify a quantity or suggests a singular number (e.g., expressions using the articles "a" or "an"), the expression should be construed as not being limited to a specific number.

[0074] In this specification (including the claims), although expressions such as "one or more" or "at least one" are used in some places and expressions that do not specify a quantity or that imply a singular number (expressions using the articles "a" or "an") are used in other places, the latter expressions are not intended to mean "one." In general, expressions that do not specify a quantity or that imply a singular number (expressions using the articles "a" or "an") should be interpreted as not necessarily being limited to a specific number.

[0075] In this specification, when a particular advantage / result is described as being obtained with respect to a particular configuration of an embodiment, it should be understood that the same advantage / result can also be obtained with one or more other embodiments having the same configuration, unless otherwise stated. However, it should be understood that the presence or absence of the effect generally depends on various factors, conditions, and / or states, etc., and that the effect is not necessarily obtained with the configuration. The effect is obtained only by the configuration described in the embodiment when various factors, conditions, and / or states, etc. are satisfied, and the effect does not necessarily occur in a claimed invention that defines the same or a similar configuration.

[0076] In this specification (including claims), when multiple pieces of hardware perform a predetermined process, the pieces of hardware may cooperate to perform the predetermined process, or some of the hardware may perform all of the predetermined process. Furthermore, some of the hardware may perform part of the predetermined process, and other hardware may perform the rest of the predetermined process. In this specification (including claims), when an expression such as "one or more pieces of hardware perform a first process, and the one or more pieces of hardware perform a second process" is used, the hardware performing the first process and the hardware performing the second process may be the same or different. In other words, it is sufficient that the hardware performing the first process and the hardware performing the second process are included in the one or more pieces of hardware. Note that hardware may include an electronic circuit, a device including an electronic circuit, etc.

[0077] In this specification (including the claims), when multiple storage devices (memories) store data, each of the multiple storage devices (memories) may store only a portion of the data, or may store the entire data.

[0078] Although the embodiments of the present disclosure have been described in detail above, the present disclosure is not limited to the individual embodiments described above. Various additions, modifications, substitutions, partial deletions, etc. are possible within the scope of the conceptual idea and spirit of the present invention derived from the content defined in the claims and their equivalents. For example, in all of the above-described embodiments, when numerical values ​​or formulas are used in the description, they are shown as examples and are not limited to these. Furthermore, the order of each operation in the embodiments is shown as an example and is not limited to these.

[0079] This international application claims priority based on Japanese Patent Application No. 2021-092726 filed on June 2, 2021, the entire contents of which are hereby incorporated by reference into this international application.

Claims

1. An apparatus for learning programming using a visual programming language, comprising: one or more memories; one or more processors, and the one or more processors are configured to perform: a setting process of setting a plurality of function definition areas where blocks for defining functions can be arranged; a reception process of receiving a block operation in an active function definition area among the set plurality of function definition areas and not receiving a block operation in a non-active function definition area from a user; an arrangement process of arranging a block for calling a function defined in a first function definition area among the plurality of function definition areas in a second function definition area among the plurality of function definition areas, The apparatus that executes the above processes.

2. The one or more processors execute a display process of displaying a predetermined area where the blocks for defining functions are arranged by a drag-and-drop operation, The apparatus according to claim 1, wherein the setting process sets the plurality of function definition areas with respect to the predetermined area.

3. The apparatus according to claim 2, wherein the setting process hierarchically arranges the plurality of function definition areas as layers in the predetermined area and sets them so as to overlap each other.

4. The apparatus according to claim 1, wherein the reception process receives an operation of arranging a block in the active function definition area regardless of the arrangement of blocks in the non-active function definition area.

5. The apparatus according to claim 4, wherein the arrangement of blocks in the active function definition area does not affect the arrangement of blocks arranged in the non-active function definition area.

6. The apparatus according to claim 1, wherein the reception process does not receive an operation of arranging a variable having a local scope within a function defined in the active function definition area in the non-active function definition area.

7. The apparatus according to claim 1, wherein the functions defined by the blocks arranged in the active function definition area and the functions defined by the blocks arranged in the non-active function definition area are functions for controlling one control target. **Claim 8**: The one or more processors execute display processing to display the block arranged in the active function definition area and the block arranged in the non-active function definition area. The display processing is to display the block arranged in the non-active function definition area in such a way that it is less recognizable to the user than the block arranged in the active function definition area. The apparatus according to claim 1. **Claim 9**: The display processing is to display the block arranged in the non-active function definition area thinner than the block arranged in the active function definition area. The apparatus according to claim 8. **Claim 10**: Thinner display means making the non-active function definition area semi-transparent for display, or overlaying a semi-transparent image over the non-active function definition area for display. The apparatus according to claim 9. **Claim 11**: The one or more processors execute display processing to display the block arranged in the active function definition area and not display the block arranged in the active function definition area. The apparatus according to claim 1. **Claim 12**: The block for calling the function has a shape corresponding to the type of the return value of the function. The apparatus according to claim 1. **Claim 13**: The block for defining the function includes the block for calling the function. The apparatus according to claim 1. **Claim 14**: The block for defining the function includes the block for defining the processing of the function. The apparatus according to claim 1. **Claim 15**: The block for defining the function includes the block of the arguments of the function. The apparatus according to claim 1. **Claim 16**: The block for defining the function includes the block of the return value of the function. The apparatus according to claim 1. **Claim 17**: An apparatus for learning programming using a visual programming language, One or more memories, One or more processors, and The one or more processors Execute setting processing to set a plurality of groups of blocks for defining functions. Acceptance processing that accepts a block operation on an active block group among the plurality of set block groups from a user and does not accept a block operation on an inactive block group among the plurality of block groups from the user, Arrangement processing that arranges a block for calling a function defined by a first block group among the plurality of block groups in a second block group among the plurality of block groups, An apparatus that executes.

18. An apparatus for learning programming using a visual programming language, One or more memories, One or more processors, and has, The one or more processors, Create a function that returns a return value by arranging a plurality of blocks, Display a block for calling the created function in a shape corresponding to the type of the return value of the function, Call the created function by arranging the displayed block, An apparatus.

19. A program for causing a computer to function as the apparatus according to any one of Claims 1 to 18.

20. A system for learning programming using a visual programming language, including a programming learning apparatus and a server apparatus, One or more memories, One or more processors, and has, The one or more processors, Setting processing for setting a plurality of function definition areas in which blocks for defining functions can be arranged, Acceptance processing that accepts a block operation in an active function definition area among the plurality of set function definition areas from a user and does not accept a block operation in an inactive function definition area among the plurality of function definition areas from the user, Arrangement processing that arranges a block for calling a function defined by a first function definition area among the plurality of function definition areas in a second function definition area among the plurality of function definition areas, A system that executes.

21. A system for learning programming using a visual programming language, including a programming learning apparatus and a server apparatus, One or more memories, One or more processors, and has, The one or more processors, Setting processing for setting a plurality of block groups for defining functions, Acceptance processing that accepts from a user a block operation on an active block group among the plurality of set block groups and does not accept from the user a block operation on an inactive block group among the plurality of block groups, Arrangement processing that arranges a block for calling a function defined by a first block group among the plurality of block groups in a second block group among the plurality of block groups, A system that executes the above.

22. A method executed by an apparatus for learning programming using a visual programming language, comprising: Setting a plurality of function definition areas where blocks for defining functions can be arranged; Accepting from a user a block operation in an active function definition area among the plurality of set function definition areas and not accepting from the user a block operation in an inactive function definition area among the plurality of function definition areas; Arranging a block for calling a function defined by a first function definition area among the plurality of function definition areas in a second function definition area among the plurality of function definition areas.

23. A method executed by an apparatus for learning programming using a visual programming language, comprising: Setting a plurality of block groups for defining functions; Accepting from a user a block operation on an active block group among the plurality of set block groups and not accepting from the user a block operation on an inactive block group among the plurality of block groups; Arranging a block for calling a function defined by a first block group among the plurality of block groups in a second block group among the plurality of block groups.