520 likes | 649 Views
CSCI 51 Introduction to Programming. Dr. Joshua Stough January 27, 2009. Announcements. Problem Set 1 due Monday. Building access request. PS 1. It may well serve you better to type the code yourself, even if it’s just copying code from another program.
E N D
CSCI 51Introduction to Programming Dr. Joshua Stough January 27, 2009
Announcements • Problem Set 1 due Monday. • Building access request
PS 1 • It may well serve you better to type the code yourself, even if it’s just copying code from another program. • That way, you make mistakes that you know how to fix, and hopefully fewer mistakes later.
Last Time in CSCI 51 • Parts of a Computer • Binary Numbers • Algorithms • PS 1 assigned • due Monday, Feb 2
Review, Hardware vs. Software A computer is made up of hardware and software Software Hardware • CPU • ex: 1.8 GHz Core 2 Duo • input/output • keyboard • 15.4” wide screen LCD • network card • main memory • ex: 2 GB RAM • secondary memory • ex: 160 GB hard drive • operating systems • Windows XP • Mac OS X • applications • games • Microsoft Word • Mozilla Firefox
ReviewHardware Organization CPU memory motherboard hard drive
ReviewMain Memory (with 100 cells) Each memory cell has a numeric address, which uniquely identifies it
QuestionsBinary Numbers • What’s the maximum value a 6-bit number can represent? • What’s the decimal representation of 111010? • What’s the binary representation of 35? 63 58 = 32+16+8+2 100011
Storage Capacity • Every memory device has a storage capacity, indicating the number of bytes (8 bits) it can hold • Various units: Unit Symbol Number of Bytes KB 210 = 1024 kilobyte megabyte gigabyte terabyte MB 220 (over 1 million) GB 230 (over 1 billion) TB 240 (over 1 trillion)
Questions • - computer components including the CPU, main memory, I/O devices, and secondary storage • - the brain of the computer, containing the PC, IR, ALU, and ACC • - computer instructions to solve a problem • The digits 0 and 1 are called or the shortened term
From Java to Machine Language • Computers understand only 0 and 1 (machine language) • Compiler translates source code into machine code • Java compiler translates source code (file ending in .java) into bytecode (file ending in .class) • bytecode is portable (not machine-specific) • Java interpreter reads and executes bytecode • different Java interpreters for different types of CPUs and operating systems (OS) • Intel/Windows, Motorola/Mac OS X, Intel/Linux
Problem Solving • The purpose of writing a program is to have the computer solve a problem • But: • “Computers do not solve problems; they implement solutions.” – Laurent Gasser • The general steps in problem solving are: • understand the problem • dissect the problem into manageable pieces • design a solution • consider alternatives to the solution and refine it • implement the solution • test the solution and fix any problems that exist
Algorithm • Sequence of instructions used to carry out a task or solve a problem • May be written in either English or pseudocode • outline of a program that could be translated into actual code • May need refinement as you work Always write/think out your algorithm before you begin programming
Problem-Analysis-Coding-Execution most important step without computer with computer
Algorithm Design Example Problem: Convert change in cents to number of half-dollars, quarters, dimes, nickels, and pennies to be returned. Example: • given 646 cents • number of half-dollars: divide 646 by 50 • quotient is 12 (number of half-dollars) • remainder is 46 (change left over) • number of quarters: divide 46 by 25 • quotient is 1 (number of quarters) • remainder is 21 (change left over) • number of dimes, nickels, pennies • result: 12 half-dollars, 1 quarter, 2 dimes, 0 nickels, 1 penny
Resulting Algorithm • Get the change in cents • Find the number of half-dollars • Calculate the remaining change • Find the number of quarters • Calculate the remaining change • Find the number of dimes • Calculate the remaining change • Find the number of nickels • Calculate the remaining change • The remaining change is the number of pennies.
ReviewBinary Numbers • N bits to represent 2N values • N bits represent values 0 to 2N-1 • Example: 5 bits • 32 unique values (0-31) • 00000 = 0 • 11111 = 31 24 23 22 21 20 16 + 8 + 4 + 2 + 1
ReviewProblem Solving • Steps: • understand the problem • how would you solve the problem (as a human, without a computer) • dissect the problem into manageable pieces • design a solution • consider alternatives to the solution and refine it • implement the solution • test the solution and fix any problems that exist
Review Questions • What is the maximum decimal value that a 4-bit binary number can represent? • What is the binary number for 17? • Before the CPU can execute instructions, they must first be loaded from • What is the first and most important step in writing a program? 15 10001 main memory analysis, or understanding the problem
Today in CSCI 51 • Basic elements of a Java program • special symbols • identifiers • data types • operators • expressions • Strings • Textbook Ref: Ch 2 and 3
Reading Check-Up • The rules of a language determine which instructions are valid. • True or False? Hello! is an example of a legal Java identifier. • If an operator has an integer and a floating-point operand, the result of the operation is a number. • The expression (int) (9.2) evaluates to syntax False floating-point 9
Introduction • Computer program: a sequence of statements to accomplish a task • Programming:process of planning and creating a program • Programming language: a set of rules, symbols, and special words
Sample Java Program public class Hello { public static void main (String[] args) { System.out.println ("Hi There!"); } } Upon execution, this program displays Hi There!
Programming Languages • Programming languages have rules of grammar just as English does • syntax rules - which statements are legal and which are not • semantic rules - determine the meaning of the instructions • token - smallest individual unit of a program • special symbols • word symbols • identifiers
Special Symbols + - * / . ; ? , <= != == >=
int float double char void public static throws return Word Symbolsaka reserved words, or keywords • reserved words are always all lowercase • each word symbol is considered to be a single symbol • cannot be used for anything other than their intended • purpose in a program
Identifiers • Names of things (variables, constants, methods) in your programs • Can be composed of any combination of letters, digits, underscore (_), and dollar sign ($) • Cannot begin with a digit • May be any length • Java is case-sensitive • Total, total, and TOTAL are different identifiers
Questions Classify the following as legal or illegal identifiers: • My First Program • my1stProgram • 1stProgram • $money • an_identifier • Jane'sProgram illegal legal illegal legal legal illegal
Primitive Data TypesWhat’s A Data Type? • A set of values and the operations that can be performed on those values • Primitive data are fundamental values such as numbers and characters • Operations are performed on primitive types using built-in operators
Primitive Data Types • 8 primitive data types in Java • 4 represent integers • byte, short, int, long • 2 represent floating point numbers • float, double • 1 represents characters • char • 1 represents boolean values • boolean
Primitive Data TypesNumeric Types • The difference between the various numeric primitive types is their size, and therefore the values they can store: Type byte short int long float double Storage 8 bits 16 bits 32 bits 64 bits 32 bits 64 bits Min Value -128 -32,768 -2,147,483,648 < -9 x 1018 +/- 3.4 x 1038 with 7 significant digits +/- 1.7 x 10308 with 15 significant digits Max Value 127 32,767 2,147,483,647 > 9 x 1018
Integers • Examples: -6728, -67, 0, 78, 36782 • Positive integers do not have a '+' sign in front of them (but they can) • No commas are used in an integer • commas in Java are used to separate items in a list
Primitive Data TypesCharacters • A char stores a single character from the Unicode character set • an ordered list of characters, and each character corresponds to a unique number • uses 16 bits per character, allowing for 65,536 unique characters • Character literals are delimited by single quotes: 'a' 'X' '7' ' ' '$' ',' '\n' newline character (we'll discuss later)
Primitive Data TypesBooleans • Only two valid values • true or false • uses 1 bit for storage • Represent any situation that has 2 states • on - off • true - false • true and false are reserved words
Arithmetic Expressions • Expression - a combination of one or more operands and their operators • Arithmetic expressions compute numeric results and make use of the arithmetic operators: • If either or both operands associated with an arithmetic operator are floating point, the result is a floating point Addition + Subtraction - Multiplication * Division / Remainder %
Division and Remainder • If both operands to the division operator (/) are integers, the result is an integer (the fractional part is discarded) • The remainder, or modulus, operator (%) returns the remainder after dividing the second operand into the first (only works with integer types) 14 / 3equals? 4 8 / 12equals? 0 14 % 3equals? 2 8 % 12equals? 8
Unary vs. Binary Operators • Unary operators • has only one operand • example: - (negative, not subtraction) -5 • Binary operators • has two operands • example: - (subtraction) 5 - 3
Operator Precedence • Determines the order in which operators are evaluated: • multiplication, division, and remainder • addition, subtraction, and string concatenation • arithmetic operators with the same precedence are evaluated from left to right • Parentheses can be used to force the evaluation order (just like in math)
Operator Precedence • What is the order of evaluation in the following expressions? a + b + c + d + e a + b * c - d / e 1 2 3 4 3 1 4 2 a / (b + c) - d % e 2 1 4 3 a / (b * (c + (d - e))) 4 3 2 1
Integral Expressions • All operands are integers • Result is an integer • Examples: 2 + 3 * 5 3 + x – y / 7 x + 2 * (y – z) + 18
Floating-point Expressions • All operands are floating-point numbers • Result is a floating-point • Examples: 12.8 * 17.5 – 34.50 x * 10.5 + y - 16.2 7.0 / 3.5
Mixed Expressions • Operands of different types • Examples: 2 + 3.5 6 / 4 + 3.9 • Integer operands yield an integer result • Floating-point operands yield a floating-point result • If both types of operands are present, the result is a floating-point number • implicit type coercion • Precedence rules are followed 2.0 + 3.5 1 + 3.9 1.0 + 3.9
Type Conversion (Casting) • Used to avoid implicit type coercion • Syntax (dataTypeName) expression • Expression evaluated first, then type converted to dataTypeName • Examples: (int) (7.9 + 6.7) = 14 (int) (7.9) + (int)(6.7) = 13
QuestionsEvaluate These Expressions 9 % 6 3 • (5 + 4) % 6 • (5 + 6) % 3.5 • (double) (13) / 2 • (double) (13 / 2) 11 % 3.5 not possible 13.0 / 2 6.5 (double) (6) 6.0
The class String • String • sequence of zero or more characters • enclosed in double quotation marks • null or empty strings have no characters • numeric strings consist of integers or decimal numbers • length is the number of characters in a string • The class String is used to manipulate strings • Examples: • "Hello World" • "1234" • "45.67" • ""
Strings • Every character has a position in the string (starting with 0) "Hello World" • The length of the string is the number of characters in it • what's the length of "Hello World"? 0123456789... 11 (count the space)
Parsing Numeric Strings • In Java, input from the user comes in the form of a string • we need to know how to get the number values out of the string • Numeric String • a string with only integers or decimal numbers • "6723", "-823", "345.76"
Parsing Numeric Strings • We will use Scanner and nextInt, next, nextDouble, etc. • String to int Integer.parseInt(strExpression) Integer.parseInt("6723") 6723 • String to float Float.parseFloat(strExpression) Float.parseFloat("345.76") 345.76 • String to double Double.parseDouble(strExpression) Double.parseDouble("1234.56") 1234.56
Summary • Identifiers • can be composed of any combination of letters, digits, underscore (_), and dollar sign ($) • cannot begin with a digit • Java is case-sensitive • Data Types • main integer type: int • main floating-point type: double • others: char, boolean