• No results found

Debugging. Common Semantic Errors ESE112. Java Library. It is highly unlikely that you will write code that will work on the first go

N/A
N/A
Protected

Academic year: 2021

Share "Debugging. Common Semantic Errors ESE112. Java Library. It is highly unlikely that you will write code that will work on the first go"

Copied!
7
0
0

Loading.... (view fulltext now)

Full text

(1)

ESE112

Java Programming:

API, Psuedo-Code, Scope

Debugging

„ It is highly unlikely that you will write code that will work on the first go

„ Bugs or errors

„ Syntax

¾Fixable if you learn to read compiler error messages

¾Lines number should take to erroneous section

„ Semantic

ESE112 1

„ Semantic

¾No easy fix

Use print statements to our advantage

Common Semantic Errors

„ No re-initialization condition that will eventually halt the loop

F f d hil d th t f t

„ For preferred over while due the nature of syntax

„ Condition starting out to be false initially

„ Wrong initialization value or end-test condition

„ So be careful of < vs. <=

ESE112 2

Java Library

„ Java provides a library or collection of useful programs A gold mine of well tested code that can save you

„ A gold mine of well-tested code that can save you countless hours of development time

„ This huge library information is provided in API - Application Programming Interface

ESE112 3

(2)

General Class Interface

„ A class' public interface (notice the four headings):

„ Field Summary

¾Has information about public variablesp

„ Constructor and Method summaries

¾Describe the public constructors and methods

¾We will cover constructors soon …

„ Method Detail

¾Provides detail on method inputs (parameter(s))and output (return type) and some extra details

Th ll i f ll f l ' bli fi ld d

ESE112 4

„ The collection of all of a class' public fields, constructors, and methods constitute its "interface", that is, the public face that it shows the world.

„ If method/variable is private, then it will be not a part of its interface

Example Math Class

„ Notice the phrase java.langat the top of the main panel above the word Math

„ This means that the Math class is part of the core Java language and hence can be used directly

language and hence can be used directly

„ Unlike the CPU class

„ Math Class Interface

„ Field Summary: none

„ Constructor Summary: has no public constructor

„ Methods Summary: the methods implemented (all which are

ESE112 5

„ Methods Summary: the methods implemented (all which are static)

„ Method Details: e.g. abs(int a) Find the absolute value of a value

Example CPU class

„ If a class is not part of java language i.e. java.lang, you'll see package name

Wh t i k ?

„ What is a package?

„ Basically it's a directory that has a collection of related classes

„ E.g. CPU class – stamp.core.CPU

¾Indicating that the CPU class program is stored in the folder stamp/core/ (within the Javelin folder)

„ Since CPU is not part of Java Language we need to tell Java where to find it by saying

where to find it by saying

„ import stamp.core.CPU;

„ Another way is to use the asterisk "wildcard character“.

¾E.g. stamp.core.*; which allows any classes in core folder to be accessed

Psuedo-Code

„ Pseudo-codeis a informal high-level description of a algorithm

„ It uses the structural conventions of a programming language

„ Intended for human reading vs. machine reading

„ Pseudo-code typically omits details that are not essential for human understanding of the algorithm

„ E.g. variable declarations,system-specific code and subroutines.

(3)

Psuedo-Code Rules

„ Can use words such as while, if else-if

„ E.g. for 1 to n

„ Do not specify data declarations or types

„ Use Words that specify an action such as set, reset, increment, compute, calculate, add, sum, multiply, print, getinput

„ Use indentation for block of code i.e. {}

Example: Fibonacci sequences

„ A Fibonacci sequence is an infinite list of integers

„ The first two numbers are given

„ Usually (but not necessarily) these are 1 and 1

„ Each subsequent number is the sum of the two preceding numbers:

1 1 2 3 5 8 13 21 34 55 89 144 ...

L t’ it t t h t

ESE112 9

„ Let’s write a program to compute sequence when we get to a number that is 1000 or bigger

Starting the Fibonacci sequence

„ We need to initialize two numbers in the sequence

Set first to 1 Set second to 1

„ We need to print these out:

Print first and second

„ We need to compute and print the next number:

Set next to sum of first & second;

ESE112 10

print next

Taking the next step

„ Now what?

„ Need to add secondand next

¾setnextnextto sum of second & next

¾set nextnext to sum of second & next

„ What if the sequence is to long

¾Do you want to make 100s of storage to hold each item

„ The sequence so far is: first second next

„ Do I see a pattern emerging ?

ESE112 11

(4)

Preparing to make many steps

„ We need to make these moves:

first second next

„ We can do it like this:

Set first to second

first second next first second next

1 1 2 1 2 3 2 3 5 3 5 8

ESE112 12

Set first to second Set second to next

„ We can put these statements in a loop and do them as many times as we please

3 5 8

Complete Psuedocode

Set first to 1 Set second to 1 Set second to 1

Print first and second while next < 1000

Set next to sum of first & second;

print next

Set first to second

ESE112 13

Set first to second Set second to next

Scope

„ Scopemeans the area of code in which an entity is known (or alive)

„ Mainly concerned with variablesand methods

Whi h t f th th ?

„ Which parts of the program can access them?

„ Sometimes scope is explicitlydesignated with a keyword

„ private: known only within the class

„ public: known outside of (and within) the class

„ Note that Methods have explicit scope

ESE112 14

„ Note that Methods have explicit scope

„ Other times it is implicitlydesignated by location

Implicit Scope: Method Parameters

„A method parameter is an “input variable”

„Scope: the method in which it is defined

„No other method can access (read/write) it public int absoluteValue(int n) {

if (n < 0) { return -n;

f

ESE112 15

} else {

return n;

} }

scope of n

(5)

Implicit Scope: Local Variables

„A “local variable” is defined within a method body { }

„They are inherently private to the method in which they are definedy

„We don’t use public/private for local variables

„It may be defined in a block { } within a method body

„Scope: point of declaration to end of closest enclosing

ESE112 16

„Scope: point of declaration to end of closest enclosing block

Local Variable Scope: Example 1

public static int isLarger(int x, int y){

if (x > y) { int larger = x;

}

scope of larger

} else {

int larger = y;

}

return larger;

}

scope of a differentlarger

Ill l d l d i

ESE112 17

Illegal: not declared in current scope

Local Variable Scope: Example 2

void fibonacci(int limit) { int first = 1;

int second = 1;

hil (fi li i ) { while (first < limit) {

System.out.print(first + " ");

int next = first + second;

first = second;

second = next;

}

System out println( );

next

ESE112 18

System.out.println( );

} second first limit

Global Variable

„ Is variable declared outside of all methods within class

„ Written at beginning of class

„ Syntax

„ Syntax

public static data-typevariableName E.g. public static int count;

„ Scope

„ Is accessible (read and modified) by all methods within the class

¾Unless it is declared final

Ideally used as constants i.e. public static final int MAX;

„ To access global variable outside of the class it is declared in

„ To access global variable outside of the class it is declared in (as long as it is declared public)

¾Classname.globalVariableName

E.g. CPU.pin10

(6)

Code Tracing

„ A form of algorithm analysis in which you (the analyst) simulate computer operation i.e. you are evaluating the logic

are evaluating the logic

„ You step through each line of code, determining what the execution of that line causes to happen

Scope & Code Tracing Example

„ By default, copies of parameter are sent to a method public static void main(){

int x = 0; Output:

System.out.println("In main: x = " + x);

foo(x);

System.out.println("In main: x = " + x);

}

public static void foo(int x){

Output:

In main: x = 0 In foo: x = 0 In foo: x = 5 In main: x = 0

ESE112

21

public static void foo(int x){

System.out.println("In foo: x = " + x);

x = 5;

System.out.println(“In foo: x = "+ x);

}

Call by Value

„

We call a method like this:

result = add( 3 , 5 ) ;

Actual parameter values are copied into formally

int add ( int number1, int number2 ) { int sum = number1 + number2 ; return sum ;

}

defined parameters

ESE112 22

}

Frame for method calls

„ Whenever a method is called, some memory is set aside to contain information related to the call

„ Example: parameter values, current statement being executed etc

„ This is called the framefor the method call

„ The frame is discarded when the method returns

„ This implies parameters and local variables (variables declared within method) are discarded

„ Hence, this explains the reasoning for scope rules

ESE112 23

„ The frames are destroyed in the order in which they were created

„ Follows first-in-last-out principle and the section of memory that allocates memory during method calls is known as stack

(7)

Scope and for loops

„ The forloop is a special case

„ You can declare variables in the forstatement

„ The scope of those variables is the entire forloop

„ This is true even if the loop is not a block i.e. { } void multiplicationTable() {

for (int i = 1; i <= 10; i++) { for (int j = 1; j <= 10; j++){

System.out.print(" " + i * j);

}System.out.println(" " );

}} }

ESE112 24

References

Related documents

We performed a wind tunnel study at Politecnico di Milano to measure the drag force on handbikers in different layouts to investigate the effect of the athlete position and

Request approval to 1) accept a grant award from, and enter into a grant agreement with, the American Psychological Association Board of Educational Affairs to pursue accreditation

If you’re a beer buff, take a guided tour at Deschutes Brewery to learn more about how the craft beer scene got its start in Central Oregon, then visit a few.. of the city’s

Combining Properties and Evidence to Support Overall Confor- mance Claims: Safety-critical system development increasingly relies on using a diverse set of verification

Coastal Carolina University’s Sport Management program is positioned to offer a professional curriculum to students in a dynamic and growing industry, and in a geographic region

Based on the findings of the survey, it is recommended that the private sector should adopt the following health care measures for the employers: conduct health audit of all

The history of international human rights activism reveals that, historically, much of this work has involved transnational activist alliances working to define and

New §8.208(c) requires operators to repair or replace any compression coupling used to 13. mechanically join steel pipe that is exposed during operation and maintenance