Goals

In this lab, we will learn the following computer science concepts:

Computer Science Principles Curriculum

Common Core Standards

Vocabulary

Hotkeys

A list of Hotkeys can be found on the Getting Started with NetBeans page.

Overview

For this lab, you will learn a different type of library and how to use it. You will also learn how to use the debugger to test your code.

Goal 1: Introducing the DateTime Library

Before you start writing any code, let's understand some of the DateTime class. The DateTime class is used to get the date/time information from the computer.


Example: Use the DateTime Library to output today�s date.

//Lab3_3 Date and Time
use Libraries.System.DateTime
DateTime timeDate
output timeDate:GetMonth() + "/" + timeDate:GetDayOfMonth() + "/" + timeDate:GetYear()

On the second line, the DateTime object is used to get the month, day of month, and year. All three methods return an integer value from the system.

In addition to GetMonth(), GetDayOfMonth() and GetYear() the DateTime Library also have actions to get the time that are: GetHour(), GetMinute() and GetSecond(). All three of these methods are used to get the time information from the system.

Use a library to output the current time

The output should be in hour:minute:second format. For more information about the DateTime class, check out the documentation for the DateTimeclass.

Goal 2: Use the Debugger

It�s time to try out the Sodbeans debugger! Our goal is to help you become familiar with the functionality of the debugger in Sodbeans. The debugger has controls, such as pause, continue, breakpoints, and step over, to navigate through the code in debugger mode.

The debugger is a tool in Quorum that helps you solve complicated logic problems in your code, also known as a bug. It executes the program line by line so that you can keep track of what is going on at runtime and observe the behavior of your code. The debugger issues steps to check the current state of a program and the value of variables. Steps are commands that execute one line of code or part of the program. Quorum's debugger offers different types of functionality to help you debug your code.

This section of the lab was divided into smaller parts to help you accomplish a specific task with the debugger. For your reference, the debugger keyboard shortcuts are in the beginning of this lab and can also be found in Lab 1.1.


Start and stop debugger

First, you need to start the debugger. To start the debugger, do one of the three following options:

To finish the debugger session, either click on the Finish Debugger Session button, go to the menu, or use the keyboard shortcuts.


Setting breakpoints

Now, let�s try setting breakpoints. Set at least three breakpoints in the editor, preferably at the start of each conditional and loop. To set a breakpoint, click on the line number on the side of the editor or use the shortcut. For the sighted users, a colored line will appear on the line where a breakpoint has been set. When you start debugging, the program will run until it hits a breakpoint that you set in the editor by using continue.

Start the debugger. Tell the debugger to continue and the program will then halt at the first breakpoint you just set.


Step controls

Use the Step Over to move the active line to the next line. Use the step controls, such as Step Back Over, Step Back Into, Step Over, and so on, to move the active line around in the editor. Watch and/or listen to how the active line moves into the part of the code. For instance, notice how it jumps into the proper conditional. It only skips a block of the code in the conditional because it was checked as false, and it only enters a block of the code in the conditional that returns true. In the case of a loop, notice that the active line keeps moving around until the proper action in the program has been taken.


Variables window

You can also use the Variables window to observe the use of variables in the case of lexical scoping. Open the Variables window and use any of the step controls in the debugger to observe variables and their respective values. The Variables window can be helpful in some cases; for example, keeping track of each time the program goes through a loop. Try this in the loop to see what happens in the Variables window.

Step through all lines in the editor to finish the debugger, even though you could just simply stop the debugger without taking steps. The step controls in the debugger should be finished when the active line reaches the end of the program.

Below is an example of code that has a few logic errors. The program is supposed to take in four numbers as inputs, convert them to integers, and then call an action to perform a series of computations. The variables of userInput1-4 are supposed to correspond to integers w-z and the function parameters a-d, as you would likely expect. You may be able to see the logic errors just by reading through the code, but pretend that you cannot so you can practice using the debugger.

class Main

    action Main
        text userInput1 = input("Input the first number:")
        text userInput2 = input("Input the second number:")
        text userInput3 = input("Input the third number:")
        text userInput4 = input("Input the fourth number:")

        integer w = cast(integer, userInput1)
        integer x = cast(integer, userInput2)
        integer y = cast(integer, userInput2)
        integer z = cast(integer, userInput4)

        output "The final result is " + Computation(w, x, y, z) + "."
    end

    action Computation(integer a, integer d, integer c, integer b) returns integer
        integer temp1 = a + b
        integer temp2 = c * d
        integer temp3 = a / d
        integer temp4 = b - c

        integer result = temp1 * (temp2 - temp3) / temp4

        return result
    end
end

Hopefully you were able to spot at least the first two logic errors in this code using the debugger. The first is that integer y is assigned userInput2, but it should have been assigned userInput3. The second is that the parameters of the action are out of order: integers b and d should be swapped. The last logic error is not quite as obvious, but rather depends on the inputs you provide. For instance, try inputting 2 as both the second and fourth number (without fixing the other two logic errors). This will result in temp4 = 0, which will cause a runtime error because the final result computation tries to divide by zero.

Optionally, if there is enough time and if more practice is needed, you can practice more with the debugger by going through the Debugging Programs tutorial in the Sodbeans Tutorials.

Next Tutorial

In the next tutorial, we will discuss Lab 3.4, which describes how work Control the Audio in Quorum..