Survey
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
Chapter 1 INTRO TO JAVA © Bobby Hoggard, Department of Computer Science, East Carolina University / These slides may not be used or duplicated without permission Computer Basics CPU (Central Processing Unit / Processor) ◦ Executes instructions in a computer program ◦ Moves data from place to place ◦ Performs arithmetic and logic operations on the data Primary memory (main memory / RAM) ◦ Working memory ◦ Holds the currently executing program and the data used by that program ◦ Is volatile (loses contents when power is removed) Secondary memory (Hard drive, USB drive, CD/DVD, magnetic tape, etc.) ◦ Non-volatile (retains contens without power) ◦ Used for backing up contents of main memory RAM Memory Structure RAM is a linear list of memory cells Address – location of the memory cell 0 5 1 R 2 7 3 M 4 … 154 Data - contents of the memory cell 1 memory cell = 1 byte of memory 1 byte = 8 bits 1 0 0 1 1 0 1 0 1 bit = a single 0 or 1 1 A bit is the smallest unit of storage A byte is the smallest unit of addressable storage Creating Programs Type your program into the computer using the computer’s keyboard The program is stored immediately and directly into RAM as you type SAVE The program is copied onto the hard drive for more permanent storage Executing Programs The program is stored on the hard drive The program is loaded into RAM so it can execute LOAD Program may be designed to save output back to the hard drive Program input is usually supplied from the keyboard Program output is usually displayed on the screen Algorithms ◦ A set of steps to solve a problem ◦ Should be unambiguous ◦ Can be written in any language ◦ English Algorithms ◦ A set of steps to solve a problem ◦ Should be unambiguous ◦ Can be written in any language ◦ English ◦ Pictures Algorithms ◦ A set of steps to solve a problem ◦ Should be unambiguous ◦ Can be written in any language ◦ English ◦ Pictures ◦ Flowchart Calculate the sum of a list of numbers. If the sum is greater than zero, output “it’s positive”, otherwise output “it’s zero or less”. set total to zero get list of numbers loop through each number in the list add each number to total end loop if number more than zero print “it’s positive” message else print “it’s zero or less” message end if Algorithms ◦ A set of steps to solve a problem ◦ Should be unambiguous ◦ Can be written in any language ◦ English ◦ Pictures ◦ Flowchart ◦ Pseudocode Algorithms vs. Programs ALGORITHM COMPUTER PROGRAM A set of steps to solve a problem An algorithm translated into a language understood by the computer Should be unambiguous Can be written in any language ◦ ◦ ◦ ◦ English Pictures Flowchart Pseudocode ◦ ◦ ◦ ◦ ◦ ◦ ◦ Java C, C++, C# Visual Basic Prolog Pascal Python Etc. Algorithm Computer Program public class Numbers { public static void main(String [] args) { set total to zero int total = 0; get list of numbers int [] numbers = getNumbers(); loop through each number in the list add each number to total end loop for (int x = 0; x < numbers.length; x++) total = total + numbers[x]; if total more than zero print “it’s positive” message else print “it’s zero or less” message end if if (total > 0) System.out.println(“It’s positive”); else System.out.println(“It’s zero or less”); } } Levels of Languages Easy for Computer Hard for Computer Hard for Humans Easy for Humans 1st Generation Machine Language Consists of only 0s and 1s Ex: Intel Machine Language 2nd Generation 3rd Generation 4th Generation 5th Generation st 1 Generation Example Program 000010100010 Notes: 000010110101 • Easy to make a mistake in writing / copying 001110101011 • Don’t really know what this program does 001011111010 • Only way to read this is to refer to a chart to determine the commands and their structure Levels of Languages Easy for Computer Hard for Computer Hard for Humans Easy for Humans 1st Generation 2nd Generation Machine Language Assembly Language Consists of only 0s and 1s Uses words to represent commands and memory locations, and also uses numbers Ex: Intel Machine Language Ex: Intel x86 Assembly 3rd Generation 4th Generation 5th Generation st 1 Generation vs 1st Generation nd 2 2nd Generation 000010100010 Generation Notes: LOAD AX, 2 000010110101 LOAD BX, 5 001110101011 ADD AX, BX 001011111010 STORE Y, AX • Easier to figure out what the program is doing • Still need a reference chart for command structure, and certain named locations • Must be translated to 1st generation by a program called an assembler Assembler • One-to-one translation Levels of Languages Low-Level Languages High-Level Languages Machine Dependent Machine Independent 1st Generation 2nd Generation 3rd Generation Machine Language Assembly Language Uses structure and grammar to infer commands Consists of only 0s and 1s Uses words to represent commands and memory locations, and also uses numbers Ex: Intel Machine Language Ex: Intel x86 Assembly You say what you want to do and specify exactly how it will be done Ex: Java, C, C++, BASIC, Pascal, etc. 4th Generation 5th Generation st 1 vs nd 2 vs rd 3 1st Generation Generation Notes: 2nd Generation 000010100010 LOAD AX, 2 000010110101 LOAD BX, 5 001110101011 ADD AX, BX • Can usually understand the program without a chart Java 3rd Generation 001011111010 STORE Y, AX Assembler Compiler / Interpreter Y=2+5 • Must be translated to 1st generation by a compiler or an interpreter • One 3rd generation line is often equivalent to several 1st gen lines Levels of Languages Low-Level Languages High-Level Languages Machine Dependent Machine Independent 1st Generation 2nd Generation 3rd Generation 4th Generation Machine Language Assembly Language Uses structure and grammar to infer commands Uses structure and grammar to infer commands Consists of only 0s and 1s Uses words to represent commands and memory locations, and also uses numbers You say what you want to do and specify exactly how it will be done You say what you want to do (but how how) The language figures out how it will be done Ex: Intel Machine Language Ex: Intel x86 Assembly Ex: Java, C, C++, BASIC, Pascal, etc. Ex: Prolog, SQL 5th Generation th 4 Generation Example: Find the names of all customers with an outstanding balance SELECT Name FROM Customers WHERE Balance > 0 Notes: • Extremely easy to read • The program describes what needs to be done, but does not specify how to do it • Notice that you don’t get to specify how the results will be displayed • An equivalent 3rd generation program would be fairly long rd 3 vs th 4 Generation 4th Generation SELECT Name FROM Customers WHERE Balance > 0 Example: Find the names of all customers with an outstanding balance 3rd Generation Pseudocode 1. 2. 3. 4. 5. 6. 7. 8. Create and empty list to hold the results Open the customers file Read the first customer name and balance If the balance > 0, add customer name to result list Read the next customer Repeat steps 4 – 6 until the end of file is encountered Close the customers file For each name in the results list: a. Print the name on the screen b. Print a line break Levels of Languages Low-Level Languages High-Level Languages Machine Dependent Machine Independent 1st Generation 2nd Generation 3rd Generation 4th Generation 5th Generation Machine Language Assembly Language Uses structure and grammar to infer commands Uses structure and grammar to infer commands Natural Language Consists of only 0s and 1s Uses words to represent commands and memory locations, and also uses numbers Ex: Intel Machine Language Ex: Intel x86 Assembly You say what you want to do and specify exactly how it will be done Ex: Java, C, C++, BASIC, Pascal, etc. You say what you want to do (but how how) The language figures out how it will be done Ex: Prolog, SQL Just speak naturally, and the computer figures out what you want & how to do it Ex: English, Spanish th 4 vs th 5 4th Generation SELECT Name FROM Customers WHERE Balance > 0 Generation Example: Find the names of all customers with an outstanding balance 5th Generation Display the names of all customers with an outstanding balance. Compilers vs. Interpreters COMPILER INTERPRETER Translates your program into ML once Translates your source code every time the program executes When finished, you will have two copies of your program: ◦ One in the original language (source code) ◦ A copy in machine code (executable code) Will need to retranslate again only if the source code changes Your client does not need a compiler You never receive a machine language copy You must distribute your source code Your client needs a copy of the interpreter, in addition to a copy of your source code Program Development with Compilers Data C++ (Source Code) Compiler Machine Language Computer (Executable Code) Output Program Development Program Execution Program Distribution with Interpreters Interpreter for Mac Interpreter for Windows BASIC BASIC (Source Code) (Source Code) Windows Computer Output Data Mac Computer Output Program Development Program Execution Program Execution Data Program Distribution with Compilers C++ Code Compiler for Windows Windows Machine Code Compiler for Mac Mac Machine Code Compiler for Linux Linux Machine Code Program Development Program Execution Java Is Both Compiled And Interpreted Java Interpreter JRE Java Runtime Environment Java (Source Code) Java Compiler Java Bytecode JDK Java Development Kit Computer Output Program Development Program Execution Data Types of Java Programs Applications Applets Stand-alone desktop programs Programs designed to execute inside a web browser Java is an Object-Oriented Language Objects are “things” ◦ Objects hold data ◦ The contain blocks of code to manipulate the data Objects are abstract ◦ Do not have to know how they work in order to use them ◦ Can be reused in other programs Variables Named memory locations ◦ We choose an appropriate name ◦ We specify the type of data it will store Must be declared before we use them ◦ This lets the system know about your variable name and type of data Java is a strongly-typed language ◦ The type of data you put into a variable must match the variable’s declared type Variable Types Primitives Objects Store only one piece of data Store one or more pieces of data Contains methods to operate on the data hours student 40 Name John GPA 3.7 Hours 32 Java Program Format // Your Name import statements Comment: the compiler ignores everything after the // Optional. Used to include other code to help you. Example keyboard processing public class NameOfProgram { NameOfProgram must match the filename NameOfProgram.java public static void main( String [] args ) { Starting section of your program code. This is the piece that begins executing first. your code goes here } } Everything inside brackets should be indented with a TAB character Closing brackets should align with the section of code that they close Items Found in a Typical Java Program Variable Declaration dataType variableName; Using Objects objectName.fieldname references data value inside objectName dataType = what type of data will will you be storing variableName = most any name of your choosing Typical Objects System.out object used to represent the screen System.in object used to represent the keyboard objectName.methodName() references code block inside objectName Storing Values into Variables variableName = value; stores value into variableName always works right to left // Author: Bobby Hoggard Add your name at the top of every program import java.util.*; Include code to help make keyboard input easier public class FirstProgram { Must be stored in a file called FirstProgram.java public static void main(String[] args) { } } Declares the starting section of code Scanner kbd = new Scanner(System.in); int n1, n2, answ; Initialize the keyboard / call it “kbd” Declare variables to hold 3 whole numbers System.out.println("I will add two numbers"); System.out.println("Enter two numbers:"); Print words to the screen Print a second line of words to the screen n1 = kbd.nextInt(); n2 = kbd.nextInt(); answ = n1 + n2; Get a whole number from keyboard / store into n1 Get a whole number from keyboard / store into n2 Calculate n1 + n2 / Store answer into answ System.out.println("The sum is:"); System.out.println( answ ); Print words to the screen Print the value in the variable answ, to the screen kbd.close(); Close the keyboard connection