Download Lecture 13

Survey
yes no Was this document useful for you?
   Thank you for your participation!

* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project

Document related concepts
no text concepts found
Transcript
CIT 590
Intro to Programming
Lecture 13
Topics for midterm
• Lecture notes
• Chapters 1 through 9
• The book is really good. Do not worry about reading from
any place else
• Some concepts like recursion are explained in greater
detail in slides
• Read the unit testing page at
http://www.cis.upenn.edu/~matuszek/cit5902013/Pages/unit-testing-in-python.html
• In the files chapter, the concepts of reading from a URL
and persistence and pickle can be safely ignored
Topics for midterm
• Ignore the starred portions of the Classes chapter
(chapter 7)
• Functional programming – skip the last 2 pages
• Pay special attention to list comprehensions
• If you want a more detailed example of classes
http://code.activestate.com/recipes/286239-binary-orderedtree/
• Today’s lecture is included in the midterm
• While studying, if you have questions please post on
Piazza
• Turn to the internet only as a last resort – mainly because
unless you are an experienced programmer the internet
tends to confound more than explain
Agenda
• Intro to Eclipse
• Java
• Python to Java translation
• http://www.cis.upenn.edu/~matuszek/cit590-
2013/Pages/python-to-java.html has most of the content
of today’s lecture
Java reference books
• No need to purchase any book
• I will use Dr Dave’s slides from this point forth and they
have most/all required content
• Unlike the Python book, there isn’t a compact Java book
• Popular books
• Head first Java
• Java in a nutshell (O’Reilly book) is a good desktop reference
• http://docs.oracle.com/javase/7/docs/api/ (Javadocs)
• Do not buy ‘Java – the complete reference’. It is rarely
used ….
Eclipse
• IDE (integrated development environment) – way more
fully featured than Python IDLE
• Installation involves installing Java and then installing
Eclipse
• Remember to have either only 32 bit installs or only 64 bit
installs
Java
• Been around for over 15 years
• Class-based, object-oriented
• Named after the large amounts of Java coffee consumed
by the creators
• Portability was a big goal when Java was made.
• Computer programs written in the Java language must run
similarly on any hardware/operating-system platform
• Achieved by compiling down to Java bytecode as opposed to
machine specific bytecode
Making the transition from Python
• Every variable has a type
• int x = 0;
• Statements end with a semi colon
• Everything is within a class!
• Statements are written within a method and a method is
written within a class
• Braces used instead of indentation
for (int x =0; x<10; x++){
//do something
}
Style (please follow these)
• While indentation will not make the program fail the way it
•
•
•
•
does in Python, do not stop indenting your programs
Variables and method names begin with a lower case
letter, and are camelCase.
Names of classes and interfaces begin with a capital
letter, and are CamelCase
Constants (final variables) are written
in ALL_CAPS_WITH_UNDERSCORES.
Opening braces, {, go at the end of a line, not on a line by
themselves. This differs from the C/C++ convention
General program outline
package myPackage;
import java.util.*;
// optional package declaration
// imports go here; util is needed for ArrayList, HashSet
public class MyClass { // file must be named myPackage/MyClass.java (note
capitalization!)
int myInstanceVar; // declare instance variables here
public static void main(String[] args) {
new MyClass().myStartingMethod();
}
void myStartingMethod() {
// declare local variables here
// statements go here; can call other methods
}
}
Strings and comments
• “arvind” is a string
• ‘a’ is a character
• There is a difference between a single character and a
single character string. Unlike Python, please be careful
about when you are using single versus double quotes
• String concat still works via the + operator
• docStrings – just use Eclipse to generate the template
and you will never make a mistake
• Single line comments are made with //
Variables and types
double distance;
String firstName;
int count = 0;
char[][] letters = new char[5][5];
declares an array of arrays AND creates it
ArrayList<String> students;
declares but does NOT create an ArrayList
final int CLASS_LIMIT = 38;
// constant
Python lists = java arrays
• int[] numbers = {1, 2, 3, 4};
• new int[] {1, 2, 3, 4}
• Indexing works in the same manner as Python
• However there is no slicing
Python lists = java ArrayList
• ArrayList<String> languages = new ArrayList<String>();
• languages.add("Python");
• languages.set(0, "Java");
• You do not have to declare the size of an ArrayList
• You can append to an existing ArrayList
• More flexible but if you have use cases where you have
specific dimensions you will use an array.
Sets in python = java hashset
• When making a new HashSet you will start getting
warning messages if you declare it without a type.
• What do these angle brackets actually really mean?
• These correspond to Java Generics
• More detailed discussion at
http://www.angelikalanger.com/GenericsFAQ/JavaGenerics
FAQ.html
Dictionaries in python = Hashmap
• Hashmap<String,Integer> map = new
Hashmap<String,Integer>()
• Put (key, value)
• Get(key)