95
1 Gentle Introduction to Programming Assaf Zaritsky Summer 2009

1 Gentle Introduction to Programming Assaf Zaritsky Summer 2009

  • View
    220

  • Download
    0

Embed Size (px)

Citation preview

1

Gentle Introduction to Programming

Assaf ZaritskySummer 2009

2

Administration

• September 6-17• Odd week days 9:00 – 13:30001דן דויד •

• No grading• Web: http://www.cs.tau.ac.il/summer2009/

Check what’s new!• My email: [email protected]

3

Course Description

This course will provide a gentle introduction to programming

using Scala for highly motivated students with little or no prior experience in programming

4

Objective

Bridge the gap for students without prior programming knowledge

5

Course Description

Lectures will be interactive featuring in-class exercises with lots of support

You are expected to work hard!

6

Course PlanSession Material

1 Basic concepts in CS and programming, basic Scala

2 Basic Scala (cont.), Functions

3 Recursion

4 Arrays, sorting algorithms

5 Lists

6 Object oriented programming

7

Course Plan – More Admin.

Faculty guests lectures

Today: pretty intense, from Tuesday – (maybe) more relaxed

Lab sessions – today!14:30-15:3015:30-16:30

8

Questions?

9

Agenda for Today

• Administration• General introduction• The Scala programming language:

• Variables and Types• Operators• Branching and Repetition

• Compiler, Interpreter• Working environment• Home work

10

Basic Terms

• Computer Science• Computer• Hardware / Software• Algorithm• Input / Output• Pseudo-Code• Programming Language• Computer Program

11

Computer Science

ענף מדעי העוסק בלימוד הבסיס התיאורטי למידע ולחישוביות, והחלתם על מערכות

מחשב

מדעי המחשב אינם עוסקים במחשב יותר משאסטרונומיה עוסקת בטלסקופ", דייקסטרה"

12

Computer

מכונה המעבדת נתונים על פי רצף פקודות נתון מראש

מחשב = חומרה + תכנה

מעבד אמצעי פלט

אמצעי קלט

זכרון

עכבר, מקלדת, )(דיסק קשיח

מדפסת, מסך, )(דיסק קשיח

13

Algorithm

סדרת פעולות סופית לביצוע משימה מסויימת

Algorithm

Input Output

14

לביצוע משימה סופיתסופיתסדרת פעולות אלגוריתם: מסוימת

תרשים זרימה

15

Pseudo Code

תיאור מצומצם ולא רשמי לאלגוריתם. מיועד לקריאה של בני אדם

16

Example

17

Programming Language

Machine-readable artificial language designed to express computations that

can be performed by a computer

18

Machine Code (Language)

• Computers understand only machine language• Basically looks like a sequence of 1’s and 0’s• Very inconvenient to work with and non intuitive

• All other computer languages were created for human convenience• The computer does not understand C/C#/Java/Scala• Must be “translated” into machine language

19

There are Many Programming Languages

Over 500 different computer languages are listed by Wikipedia

20

21

Language Selection

• Goal• Runtime vs. Development time• Operating systems• Platforms

22

Computer Program

מימוש של אלגוריתם באמצעות שפת תכנות

23

Computer Program(more technically)

• A sequence of processor instructions designed to achieve a specific purpose

• The instructions are executed sequentially. No instruction is executed before the previous has been completed

24

Agenda for Today

• Administration• General introduction• The Scala programming language:

• Variables and Types• Operators• Branching and Repetition

• Compiler, Interpreter• Working environment• Home work

25

Scala History

• Created by Martin Odersky at EPFL• Released Jan 2004• Twitter lately switched large portions of their

code to Scala (and intend to convert the rest)• Over 4000 downloads per month

26

Why Scala?

• Semester A: Scheme• Semester B: Java• Scala language has some features similar to

Scheme and some to Java• Scala is cool!

28

My First Scala Program: Hello World!

Hello.scala

29

Memory

30

Memory (Cont.)

• The computer memory is composed of a long list of bits

• Bits are grouped into bytes and words

• Every byte is numbered sequentially

• This number is called an address

31

Variables and Types

): יחידת מידע המאכסנת ערך variable (משתנה•במהלך ריצת התכנית

ניתן ל"גשת" למשתנה (לשנות או לקבל את ערכו)•ניתן לבצע פעולות חשבוניות (ואחרות) בעזרת •

משתניםשקובע אילו סוגי )type (טיפוסלכל משתנה מוגדר •

ערכים המשתנה יכול להכיל (דוגמאות: מספר שלם, מספר ממשי, תו)

32

Define Variables • Use var to declare variables:

var x : Int = 3

var y : Int = 5

var z : Int = x + y

var s1 : String = “Hello World”

define variable

variable name

type valueassignment operator

Variable x “is of type” Int and is assigned the value 3

33

Why do We Need Variables?

• Computer programs manipulate data• Data is given as input or calculated throughout

the program• To be later accessed, variables must be

remembered• Thus, variables are stored in the memory• Variable name memory address

34

Types

טיפוס של משתנה קובע:• אילו ערכים יכול המשתנה להכיל• מהן הפעולות שניתן לבצע על המשתנה•

שדורש (יחידה בסיסית של זכרון המחשב)מספר הבתים •אחסון של משתנה בזכרון תלוי בטיפוסו

35

Some Basic Types

36

Why Do We Need Different Types?

• Saving memory

• Execution speed

• Makes compiler “life” easier

37

Define Variables • Int:

var x : Int = 5

• Double:var pi : Double = 3.14

• Boolean:var term : Boolean = true

• Char:var c : Char = ‘A’

• String:var st : String = “I want a break!”

38

Arithmetic Operators

39

Example 1 var a : Int = 3var b: Int = 5var c : Int = a + bprintln(c)c = c * 2println(c)var first : Int = (a + b) * 2var second : Int = a + b * 2println(first)println(second)

40

Example 2 // Demonstrate strings additionvar s1 : String = “He”var s2 : String = “llo”var s3 : String = s1 + s2println(s3)var s4 : String = s3 + “ World ”var c : Char = ‘!’println(s4 + 2009 + c)

41

Example 3 // Reverse a 3-digits numberprintln(“Enter a 3-digit number”)var num : Int = Console.readInt() // read a number from the user

var ones : Int = num % 10var tens : Int = (num % 100) / 10var hundreds : Int = num / 100

var reverseNum : Int = (ones * 100) + (tens * 10) + hundreds println(“the reverse number is “ + reverseNum)

42

Rational Operators

Operator

Name Description

x < y Less than true if x is less than y, otherwise false.

x > y Greater than true if x is greater than y, otherwise false.

x <= y Less than or equal to

true if x is less than or equal to y, otherwise false.

x >= y Greater than or equal to

true if x is greater than or equal to y, otherwise false.

x == y Equal true if x equals y, otherwise false.

x != y Not Equal true if x is not equal to y, otherwise false.

Compares two numbers and returns a Boolean

43

Example // Demonstrate rational operatorsprintln(“Enter the first number”)var x : Int = Console.readInt()println(“Enter the second number”)var y : Int = Console.readInt()

println(“x < y is “ + (x < y))println(“x > y is “ + (x > y))println(“x <= y is “ + (x <= y))println(“x >= y is “ + (x >= y))println(“x == y is “ + (x == y))println(“x != y is “ + (x != y))

44

Logical Operators Operates on two Booleans and returns a Boolean

Operator

Name Description

x && y And True if both x and y are true, otherwise false.

x || y OrTrue if at least one of x or y are true, otherwise false.

! X Not True if x is false, otherwise false.

45

&&, ||, !=

0 1

0 0 0

1 0 1

0 1

0 0 1

1 1 1

0 1

1 0

&&

||!

46

Example

// Demonstrate logical operators println(“Enter the first number”)var x : Int = Console.readInt()println(“Enter the second number”)var y : Int = Console.readInt()

println(“(x < 10) && (y < 10) is “ + ((x < 10) && (y < 10)))println(“(x < 10) || (y < 10) is “ + ((x < 10) || (y < 10)))var state : Boolean = ((x < 10) || (y < 10) )println(“state is “ + state)

47

All Examples at BasicExamples.scala

49

Flow Control

• Usually a program is executed line after line in order

• It is reasonable to expect different execution orders on different inputs• Computer games• Illegal input

• Control structures• if-else• for loop• while loop

50

Conditional Statement: if

• Used to execute conditionally a statement (or block of code)

• Syntax: if (expression) statement

• If expression is true, statement is executed

• statement can be replaced by a block of statements, enclosed in curly braces

51

if-else Statement

if (expression) statement1

else statement2

• if expression is true, statement1 is executed. • if expression is false, statement2 is executed • both statements can be (and very often are) replaced

by blocks of statements (“compound statements”)

52

Example

// Demonstrate logical operators println(“Enter the first number”)var a : Int = Console.readInt()println(“Enter the second number”)var b : Int = Console.readInt()println(“Enter the third number”)var c : Int = Console.readInt()

if ((a + b <= c) || (a + c <= b) || (b + c <= a))println(“There is no triangle with these sides”)

elseprintln(“There is a triangle with these sides”)

53

Example

if (price > 100)

if (price < 200)

println(“reasonable price”)

if (price > 100 && price < 200)

println(“reasonable price”)

54

Loops

• Used to repeat the same instructions until a stop criterion is met

• for, while loops:• while (<condition>)

<statement>• for (<range and update>)

<statement>

55

Example - while

// factorialprintln(“Enter a non-negative number”)var n : Int = Console.readInt()

var fact : Int = 1var i : Int = 1

while (i <= n) {fact = fact * ii = i + 1

}println(n + “! = “ + fact)

56

Example - for

// factorialprintln(“Enter a non-negative number”)var n : Int = Console.readInt()

var fact : Int = 1

for (i <- 1 to n) {fact = fact * i

}println(“n! = “ + fact)

57

Examples at Factorial.scala

58

Example - Prime

// Find whether a number is a primeprintln(“Enter a non-negative number”)var n : Int = Console.readInt()

var j : Int = 2var stop : Boolean = falsewhile ((j <= n/2) && !stop) {

stop = (n%j == 0) j = j + 1

}if (!stop) {

println(n)} Prime.scala

59

When to use for/while?

• Some applications are more natural to for, and others to while

• for is more suited when something is performed a predefined number of times, or when iterating over a list of objects

• while is more suited if the number of iterations is not known in advance (e.g., asking for legal input from a user)

60

Infinite Loops

• What are they?

• Beware of them

61

Questions

• How do I write…?

• Is it legal to…?

• What happens if I write…?

Try it yourself!

62

Agenda for Today

• Administration• General introduction• The Scala programming language:

• Variables and Types• Operators• Branching and Repetition

• Compiler, Interpreter• Working environment• Home work

63

Compiler

64

Interpreter

65

Interpreter

• The Read/Evaluate/Print Loop• Read an expression• Compute its value• Print the result• Repeat the above

• The Environment

66

Compiler = Clerk"ראש קטן"

67

Runtime

69

Hello World ;-)

70

Agenda for Today

• Administration• General introduction• The Scala programming language:

• Variables and Types• Operators• Branching and Repetition

• Compiler, Interpreter• Working environment• Home work

71

Working Environment

• Interpreter vs. scripts vs. Eclipse

• Home vs. labs

VS.

72

Setting Environment @ Home • Download Java (www.java.com/getjava/ ) • Download Scala (http://www.scala-lang.org/downloads )

• Download Eclipse (http://www.eclipse.org/downloads/ )• Set Scala plugin to Eclipse (http://www.scala-lang.org/node/94 )

• Start programming

73

Download Java www.java.com/getjava/

75

Download Scala

76

Use the Interpreter Type Scala from the command prompt (linux) or using “run” (windows)

79

Set Scala Plugin to Eclipse (new)

80

Set Scala Plugin to Eclipse (new)

81

Open Eclipse – Set Workspace

82

Open Eclipse

83

Define New Project

84

If you don’t find the Scala new project…

File New Project

85

New Object

86

Write Some Code

87

Run

output

88

Agenda for Today

• Administration• General introduction• The Scala programming language:

• Variables and Types• Operators• Branching and Repetition

• Compiler, Interpreter• Working environment• Home work

89

Exercise 0

• Write your first “Hello World!” program in Scala:• Use the interpreter• In Eclipse

• Make sure it compiles and executes properly

90

Fibonacci

• Fibonacci series0, 1, 1, 2, 3, 5, 8, 13, 21, 34• Definition:

• fib(0) = 1• fib(1) = 1• fib(n) = fib(n-1) + fib(n-2)

en.wikipedia.org/wiki/Fibonacci_number

91

סלט פיבונאצ'י

92

Exercise 1

• Write a program that receives from the user an integer n > 0 and prints to the screen the n th Fibonacci number

a. Use a “for” loop

b. Use a “while” loop

93

Exercise 2

• Write a program that receives from the user two integers 0 < n1 < n2 and prints to the screen all prime numbers between n1 and n2

• Divide the problem to smaller sub-problems:• How would you traverse over all the numbers

between n1 and n2?• How would you be sure that a given number is a

prime?

94

Want More Exercises?

95

Exercise – Integer Division

• Input:• Two integers – A and B

• Output:• How many times A contains B (it is the result of

the integer division A/B)

• Do not use the operators ‘/’, ‘*’

• Solution:

96

Exercise – Power of Two

• Input: integer A

• Output: is there an integer N such that A == 2^N?

• Solution:

97

Write a program that prints an upside-down half triangle of *.

The height of the pyramid is the input.

*****

*****

****

*

Exercise – Triangle Printout