04/19/23 cosc236/intro 1
Overview of the Computer
• Definition: a programmable device that can store, retrieve, and process data.
• Hardware = physical components of a computer
• Software = computer programs (the set of all programs available on a computer). – application software and system software.
04/19/23 cosc236/intro 2
Computer components:
04/19/23 cosc236/intro 3
Programming Language
• Definition: languages with strict grammar rules, symbols, and special words used to construct a computer program
04/19/23 cosc236/intro 4
Machine language
• the language that can be directly used and understood by the computer
• operations are very low-level, specific to the architecture (not portable)
• made up of binary-coded instructions (strings of 0s and 1s)
• exa: 110011 - add instruction
04/19/23 cosc236/intro 5
Assembly Language
•A low-level programming language in which a mnemonic is used to represent each of the machine language instructions for a particular computer•Requires assembler
04/19/23 cosc236/intro 6
COMP$PAY PROC PUBLIC;; COMP$PAY - procedure to compute gross pay ; (PAY = HOURS * RATE)MOV AX,HOURS ; multiplicandMUL RATE+2 ; X second word of multiplierMOV PAY+2,AX ; store the product in PAY;MOV AX,HOURS ; multiplicandMUL RATE ; times first word of multiplierADD PAY+2,AX ; add the product to PAYADD PAY,DX ; add the carry, if anyRET ; end procedure
04/19/23 cosc236/intro 7
High-level languages
• Basic, C++, Pascal, Java, Ada, Modula-2, Cobol, Fortran…
• Similar to natural language (easier to use and debug)
• standardized description of the language exists
04/19/23 cosc236/intro 8
High-level languages cont’d
• Not understood directly by a computer, must be converted to machine language: – Compilers: whole program is translated into
another language (machine language or bytecode) and then executed
– Interpreters: program is translated and executed one line at a time
• portable (machine-independent) – Program is written for any platform– compiler translates to each platform
04/19/23 cosc236/intro 9
• C++ compiled to machine language– Requires translating to many different
machine languages
• Java compiled to Java bytecodes– One set of bytecodes can execute on many
different machines– intermediate level– machine language for theoretical computer:
Java Virtual Machine (JVM)
04/19/23 cosc236/intro 10
Java
• Class– Unit of code that is the basic building block
of Java programs
• Java runtime– JRE– Executes compiled Java class files– Most computers have Java runtimes on
their computer
04/19/23 cosc236/intro 11
Background
• Released by Sun in 1995
• Object-oriented
• Rich libraries – pre-written software
• Active programmer community
• API Specification– Application Programming Interface
• Extremely platform-independent
3/28/2003 Columbia University JETT 12
Java Advantages
• Platform independence
• Reuse of code
• Security
• Automatic garbage collection
• Stronger typing of objects and variables
04/19/23 cosc236/intro 13
Java Programming Environment
1. Type program as Java class =>.java2. Compile => .class (bytecode)3. Loader – connects bytecode from
various classes and loads bytecode into main memory
4. Interpreter – translate and run
04/19/23 cosc236/intro 14
Sample program
public class Hello { public static void main(String[] args) { System.out.println("Hello World!“); }
}
04/19/23 cosc236/intro 15
Java programs
• class Hello
• Class names begin with capital letter
• file Hello.java
• Class name and file name must match
04/19/23 cosc236/intro 16
class• Unit of code that is the basic building block of
java programspublic class <name> //class header{ <method> <method> … <method>}main method is required public static void main(String[] args)
04/19/23 cosc236/intro 17
methods• particular action or calculation
• main method is required
• Method header public static void main(String[] args)
{
statements
}
statements
• Command
• Statements end with ;
04/19/23 cosc236/intro 18
04/19/23 cosc236/intro 19
System.out.println
• Line of output sent to console window• System.out.println("Hello World!");• System.out.println();• System.out.print("Hello");• //does not move to next line of output
04/19/23 cosc236/intro 20
Literal string
• Surrounded by quotes• One line• Escape sequences
\t tab
\n new line
\” quotation
\\ backslash• System.out.println(" \"Slick\" Willy"); "Slick" Willy
04/19/23 cosc236/intro 21
Example
System.out.println("This\nyields three lines\nof output\n");
This
yields three lines
of output
04/19/23 cosc236/intro 22
Identifiers • used to name variables, constants,
methods, classes, and data types • Rules:
– must start with letter or underscore or $– Composed of letters, digits, $, or
underscore (better to start with a letter)
• Using Meaningful, Readable Identifiers!• Java is case sensitive• Don't use reserved words
04/19/23 cosc236/intro 23
Identifiers
• Legal:
firstName
conversion
lengthOfRoom
payRate
counter1
x
• Illegal
first name
Hello!
5th
one+two
04/19/23 cosc236/intro 24
Identifiers - Style Class name
Begin with capital letter Method
Begin with lowercase Exa: calcPay,getInfo, sum
• Constants: all caps• PI, MAX_HOURS, UNIV_NAME
04/19/23 cosc236/intro 25
Comments• Compiler ignores comments
• /* */ everything between pair is ignored
• // - everything after the two slashes to the end of line is ignored
• header comment:• //Project number• //Student's name Date project is due• //Course number• //Purpose of the program
04/19/23 cosc236/intro 26
When to use comments
• Comment variable and constant declarations.
• Precede blocks of code with an explanatory comment.
• Explain statements that are not obvious.• Precede each class with a brief header
comment
04/19/23 cosc236/intro 27
Readability
• Class and method headers on lines by themselves
• One statement per line• Indent• Use whitespace liberally in the form of
blank lines and spaces.• Include at least one blank line between
methods
04/19/23 cosc236/intro 28
Syntax
• Syntax - formal set of rules governing how valid instructions are written in a programming language
04/19/23 cosc236/intro 29
Program Errors
• Syntax error – error in using Java, indicated by compiler– Cannot execute– Exa: File name does not match class name
• Logic error (bug) – code doesn't perform the intended task– debugging
04/19/23 cosc236/intro 30
Structured Programming
• Control structures1. sequence
2. selection
3. Loop
• Modularity/Top-Down Design
– Decomposition – separation into parts
– Functions, procedures => methods
04/19/23 cosc236/intro 31
Static method
• A block of statements that is given a name• Static
– allows non object-oriented invocation– Use no instance variable of any object they are
declared in
• Method call– Transfers control
• Methods can call other methods
04/19/23 cosc236/intro 32
public class Memo { public static void main(String[] args) { printLogo(); //method call System.out.println("Reminder:" ); System.out.println("Company Meeting"); System.out.println("Thursday at 9:00!!!!"); printLogo(); } /* end main */ public static void printLogo() // method header { System.out.println("*************************************"); System.out.println("**********YOUR COMPANY********"); System.out.println("*************************************"); }}
04/19/23 cosc236/intro 33
Design/Plan the solution
• Algorithm – a step by step procedure for solving a problem, ordered set of instructions such that:
• programs are implementations of algorithms, emphasis on writing algorithms.
• the computer is a fast and flexible tool for implementing algorithms.
• tools– flowcharts – Pseudocode– subtasks - hierarchy chart
• test solution for correctness - trace