Lab Title: Review of IDE - UNL CSE

Use the Integrated Debugger to debug a simple Java program. ... of Debugging?,
http://www.duke.edu/web/cps001/notes/Debugging.pdf ... Activities/Exercises.

Part of the document


Lab 4 - Debugging Java Programs
Student Handout


1. Lab Objectives





Following the lab you should be able to:


Describe the differences between syntax, semantic (logic), and runtime
errors.

. Debug a simple program using print statements.
. Use the Integrated Debugger to debug a simple Java program.



2. Prior to the laboratory


. Review the laboratory handout
. Read "The Integrated Debugger" at
http://www.jgrasp.org/tutorials/07_Debugger.pdf
. Read an "Introduction to Program Testing & Debugging",
http://www.engin.umich.edu/class/eecs100/Assignments/introDebug.pdf
. Read "The 10 Truths of Debugging",
http://www.duke.edu/web/cps001/notes/Debugging.pdf


3. Topics


|Topics Covered in Lab |
|Types of errors: 1) syntax 2) semantic 3) runtime |
|Basic debugging techniques |
|Java compiler messages |
|source code review |
|print statements |
|debugger |


4. Activities/Exercises


1. Exploring the Integrated Debugger functionality.
2. Using print statements to debug a program.
3. Extra practice debugging Java programs.


Activity 1: Exploring the Integrated Debugger functionality

. Download CountCharacters.java from the course website.
. The CountCharacters class prints the number of vowels, blank
characters, and the number of numeric characters contained in a
string entered from the keyboard.
. Compile and execute CountCharacters.java using the string:
o Fall Semester Year 2006
. Record the results of executing CountCharacters on your worksheet
(Activity 1, Question 1).
. Set breakpoint #1 in the main() method on the line:
inputValue = count.getInput();
. Set breakpoint #2 in the main() method on the line:
count.processString(inputValue);
. Set breakpoint #3 in the processString() method on the first line of
the for loop:
currentString = inputString.substring(i,i+1);
. Make sure the debug option is selected under the Compiler command in
the CSD window.
. Run the program by clicking on the ladybug button. (Run debugger on
current file.)
. When the first breakpoint is reached, record which line will be
executed next on your worksheet. (Activity 1,Question 2) It will be
highlighted in the editor.
. You will need to enter a string in order for the program to continue.
Go to the execution console window in the bottom panel and enter the
following string: "1 fish, 2 fish, red fish, blue fish", then press
the enter key. (Don't enter the quote marks, only the string within
the quotes.)
. Now, click the Step Over button on the debug panel on the left. (The
button with the blue arrow pointing downward.) This will allow your
program to run to the next breakpoint without stepping into the
getInput() method.
. Record which line will be executed next on your worksheet. (Activity
1, Question 3). Like before, it will be highlighted in the editor.
. Click the Step Into button: (The button with the curved blue arrow
pointing to the right). This will take you into the processString()
method of the class. Notice that the string you entered at the
prompt can now be seen in the variable window by the variable named
inputString.
. To continue, click on the Resume button with the blue forward symbol
(Resume thread selected thread or thread group) to resume execution
to the next breakpoint.
. When the program reaches the third breakpoint, record the value of
the variables on your worksheet. (Activity 1, Question 4) The
variable names and values are listed under arguments and locals in
the bottom panel of the debug tab. Ignore the id and type
information also listed there. Record only the values of the
variables.
. Click on the Resume button several times. This breakpoint is inside
of a for loop so it will stop at the breakpoint each time the for
loop executes. Observe how the variable values change between
breakpoints.
. Remove the breakpoint by clicking on it and click on the Resume
button to allow the program to run to completion. The final output
should now be printed in the bottom JGrasp panel.


Activity 2: Using print statements to debug a program

. Download SimpleProgram.java and TestSimple.java from the course
website.
. Before making any code changes, review the questions for Activity 3
on your worksheet. You will need to complete these questions as you
modify your program.


. There are four syntax errors in the two programs. Use the compiling
error messages to find and correct the errors in the programs.
Record the errors on the worksheet (Activity 2, Question 1).
. The main() method is in TestSimple.java. The program needs to be run
from this class.
. There are also two semantic errors in SimpleProgram.java , so they do
not work correctly. Your next task is to correct the semantic
errors.
. What the program is supposed to do is take a string as its input from
the keyboard, and echo it back to the console with a blank character
between each character of the input string. It uses the variable:
String blank to insert the space between each character in the
string.


. Part 1: Modify SimpleProgram so that it works correctly (echoes the
input string to the console with a blank character between each
character of the input string). For example, if the input string is
"Today is Tuesday", the output string should be:
o T o d a y i s T u e s d a y
. The debugging of this program should be done with the use of
System.out.println statements. In order to understand what is wrong
with the program you need to understand the values of the variables
in the method modifyString(). Add one statement to print the value
of the variable i and one to print the value of the variable
newString.
o System.out.println(" i = " + i );
o System.out.println("newString = " + newString);
By adding these statements you should be able to correct the program.
Record the semantic errors on the worksheet (Activity 2, Question 2).


. Part 2: Once you have the original code working properly, modify
SimpleProgram so that it first capitalizes each letter of the string
and then prints the string back to the console (keeping the blank
character between each character of the input string). For example,
if the input string is "Today is Fiiday", the output string should
be:
o T O D A Y I S F R I D A Y
. Use the Java API to look at the methods that belong to the string
class.
. When you have SimpleProgram working (Part 1 & Part 2), demonstrate it
for the lab instructor (Activity 2, Question 3).


Activity 3: Extra practice debugging Java programs
. This exercise requires you to write a class that will get user input
of a string and then using methods from the string class, make
modifications to the string and output the changed string.
. You can use code from the CountCharacters class to get the user
input.
. Debug your code either by using the debugger or by using print
statements.
. The string that should be entered should be made up of at least 3
words. You will be assigning a variable to each of the words
entered, so unless you have experience using arrays you will need to
always enter the same number of words. Your program will need at
least three string variables to store each one of the individual
words after it is separated from the original string.
. You will be creating your own code by mutating each word in the
string.
. Break the original string up into the individual words using the
indexOf() method and the substring() method of the String class.
(Look up the methods on the Java API.)
. Search for the spaces in the original string with the indexOf()
method and with this information you can break out the individual
words and store them in separate variables.
o HINT: int spaceNumber = originalString.indexOf(" ");
. Make sure your program is working at this point before continuing.
You will need to check the values of your individual variables to
make sure they contain the correct words.
. Once you have broken the individual words correctly into variables
you are ready to encode the strings.
. Remove the first letter of the word and place it at the end of the
word and then add an extra sound to your word, such as "ay" or "ee".
If the first letter of the word is a vowel you should also add an 'r'
so the final sound would be "ray" or "ree".
o For example, if the string is penguin - you would change it to
enguinpay.
o If the string is elephant - you would change it to lephanteray.
Demonstrate your program for the instructor.


5. Supplemental Resources

1. TA Online: Common Java Compiler Errors,
http://www.cs.arizona.edu/people/teena/ta_online
2. Problem Solving Strategies,
http://www.tvdsb.on.ca/Montcalm/depts/comp/ICS3M1/Unit%202_Problem%20So
lving/Strategies.htm
3. Tutorial 7: Debugging, http://www.owlnet.rice.edu/~comp212/00-
spring/tutorials/07/


6. Think About


. Followi