Lecture slides

wakecabbagepatchΛογισμικό & κατασκευή λογ/κού

18 Νοε 2013 (πριν από 3 χρόνια και 10 μήνες)

73 εμφανίσεις

Intro to CS


Honors I

Programming Basics

GEORGI OS
PORTOKALI DI S

GPORTOKA@STEVENS.EDU


Overview


Object
-
oriented programming basics


Algorithms


Java fundamentals


Variables


Data types


Arithmetic operators


Operator precedence


Object
-
Oriented Programming


Objects


They are all around us


Cars, people, trees…


Each object can perform certain actions


Independently or interacting with other objects


These actions are called
methods


Each objects has characteristics or
attributes


Example: a car has static attributes like its color and dynamic attributes like its speed


A class defines the type or kind of object


Example: all car objects could belong to the automobile class



Objects belonging to a particular class have similar attributes, but are not the same!

Object
-
Oriented Languages


What other OOP languages do you know?

OOP Design Principles


Encapsulation


Putting things into a capsule


The capsule hides what’s inside


AKA information hiding


Part of the capsule is exposed


Applies to all programming


OOP languages help you enforce the separation


Polymorphism


Means “many forms”


For Java it means that the same method can cause
differently actions based on the object it is used with


Example: the accelerate method of all objects in the automobile class,
will accelerate the vehicle, but may do so in a very different way


Inheritance


A way of organizing classes



Capsule

Implementation

Attributes

Methods

Ferrari

Tesla

accelerate

accelerate

The user knows he just
wants to accelerate

Inheritance

Generic class

More specialized

classes

Even more

Specialized classes

Algorithms


An algorithm is a set of directions for solving a problem


How can you express an algorithm?


In English


In a programming language


In
pseudocode


A combination of the above


Come up with an algorithm for ordering N numbers from lowest to highest and write it in
pseudocode

Variables

public class
EggBasket

{


public
static void main(String[]
args
)


{



int

numberOfBaskets
,
eggsPerBasket
,
totalEggs
;






numberOfBaskets

= 10;



eggsPerBasket

= 6;



totalEggs

=
numberOfBaskets

*
eggsPerBasket
;




System.out.println
("If you have");



System.out.println
(
eggsPerBasket

+ " eggs per basket and");



System.out.println
(
numberOfBaskets

+ " baskets, then");



System.out.println
("the total number of eggs is " +
totalEggs
);


}

}

Variables are used to store data

Values can be assigned to
variables

Variables are of a
type

SYNTAX


Type
Variable_Name_1
,
Variable_Name_2
, ...;

Data Types


Determine how much memory will be required for the data and how the data are stored in
memory


Java has two main types


Primitive types


Classes




Identifiers


Identifier is the technical term for a name


In Java it can contain:


Letters


Digits


The underscore character (_)


Cannot begin with a digit


Case sensitive


Cannot be keywords?


public
static void main(String[]
args
)


{



int

1st_number,
secondNumber
,




secondnumber
;

Example

An identifier cannot
begin with a digit

Naming Conventions


Avoid words frequently used with other meanings


Example:
println

and
main


Multiple conventions


Pick one and be consistent


Example:


Variables should begin with a lowercase letter,


Names composed by multiple words should have the first letter of every word besides the first capitalized


numberOfBaskets
,
eggsPerBasket
,
totalEggs


Constants


Constants or literals are data that, unlike variables, cannot change






numberOfBaskets

= 10;


p
i
=
3.14159;


firstInitial

= 'B
';

Constants also have a type.
What is the type of these?

Floating
-
Point Numbers


Scientific notation: number 865000000.0 can
be written as 8.65
×

10
8


Java’s
e notation

or
floating
-
point notation:
8.65e8


Example:


0.000483


4.83x10
-
4



3.83e
-
4






Is
5.0

the same as
5?


Floating point numbers are stored with limited precision


0.3333 …
-
> Is stored as exactly 0.3333333333





Includes decimal point

Single digit before decimal point

Exponent cannot
include decimal point

Named Constants


Variables with a constant value


public static final Type Variable = Constant
;


Examples:


public
static
final double
PI

= 3.14159
;


public static final
int

DAYS_PER_WEEK
=
7;

Assignments


SYNTAX


Variable_name

=

Expression
;




EXAMPLE


score = goals


errors;


interest = rate * balance;


number = number + 5;

An expression can be many things.


We will learn many different expressions as we go.

Arithmetic expressions.

Assignment Compatibilities


“You can’t put a square peg in a round
hole”




byte
→ short →
int

→ long → float →
double




Where is
char
?

Type Casting


What happens here?


double
distance =
9.56;


int

points = distance
;


How about now?


double distance = 9.56;


int

points =
(
int
)distance;


System.out.println
(points);




Numbers are not rounded!

Assignment is illegal

The typecast transforms the
value to the type: double
-
>
int

Arithmetic Operators


Five binary operators (between two operands)


Addition +


Can also be used as an unary operator to negate a
number


Subtraction



Can also be used as an unary operator to negate a number


Multiplication *


Division /


Integer division does not produce a floating
-
point result
later being cast to an integer


Remainder %


When performing an integer division


The type of the result is the same as the
“largest” of the two operands


byte → short →
int

→ long → float →
double



b
alance + deposit




balance
*
rate




11 / 3




11 % 3





Other Unary Operators


Increment/decrement operators: ++,
--


Increase/decrease value of variable by one


Can be used as a prefix or suffix


As prefix

to a variable it first applies the operator to it, and then returns its value


As
suffix
to
a variable it
returns its value, and then operator on it


Can also be used independently:
++n
;


What is the value of
d

and
n
?


n = 10; d = 5 + ++n;


What is the value of
n
,
b
, and
d
;


n = 3; b = 5; d = ++b
-

n
--
;





Operator Precedence


From highest to lowest


Unary operators ++,
--
, +,
-


Binary operators *, /, %


Binary operators + and



Parentheses can be used to change the priority of operations


Example: d = (n + 10) * 2




What is the result of this d = 5; d = ++d + (
--
d * 4); ?



Special
Operators II


You can precede the = assignment operator with arithmetic operators


Example:
d += 10; is the same as d = d + 10;


Are these the same?


d = 5;


d
= d * 5 + 5;


d *= 5 + 5
;


Operator precedence
from highest
to lowest


Unary operators ++,
--
, +,
-


Binary operators *, /, %


Binary operators + and



Special operators +=, *=, etc.



Bitwise Operators


Bitwise operators:


AND


&


OR


|


XOR


^



Operator precedence from
highest to lowest


Unary operators ++,
--
, +,
-


Binary operators *, /, %


Binary operators + and



Bitwise &, ^, |

Shift Operations


Java has no unsigned numbers


Numerical shift


Left <<


Right >>


Logical shift is still possible


Left <<<


Right >>>


Operator precedence from highest to lowest


Unary operators ++,
--
, +,
-


Binary operators *, /, %


Binary operators + and



Shift operators


Bitwise &, ^, |