80
1 Gentle Introduction to Programming Assaf Zaritsky Summer 2010

1 Gentle Introduction to Programming Assaf Zaritsky Summer 2010

  • View
    215

  • Download
    0

Embed Size (px)

Citation preview

Page 1: 1 Gentle Introduction to Programming Assaf Zaritsky Summer 2010

1

Gentle Introduction to Programming

Assaf ZaritskySummer 2010

Page 2: 1 Gentle Introduction to Programming Assaf Zaritsky Summer 2010

2

Administration

• August 31 - September 19• 9:00 – 13:30• Mostly at 002דן דויד

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

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

Page 3: 1 Gentle Introduction to Programming Assaf Zaritsky Summer 2010

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

Page 4: 1 Gentle Introduction to Programming Assaf Zaritsky Summer 2010

4

Objective

Bridge the gap for students without prior programming knowledge

Page 5: 1 Gentle Introduction to Programming Assaf Zaritsky Summer 2010

5

Course Description

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

You are expected to work hard!

Practical sessions in lab/class

Faculty guests lectures

Page 6: 1 Gentle Introduction to Programming Assaf Zaritsky Summer 2010

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

Page 7: 1 Gentle Introduction to Programming Assaf Zaritsky Summer 2010

7

Questions?

Page 8: 1 Gentle Introduction to Programming Assaf Zaritsky Summer 2010

8

Agenda for Today

• Administration• General introduction• The Scala programming language:

• Variables and Types• Operators• Branching and Repetition

• Compiler, Interpreter• Working environment• Home work• Guest lecture by Ohad Barzilay

Page 9: 1 Gentle Introduction to Programming Assaf Zaritsky Summer 2010

9

Basic Terms

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

Page 10: 1 Gentle Introduction to Programming Assaf Zaritsky Summer 2010

10

Computer Science

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

מחשב

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

Page 11: 1 Gentle Introduction to Programming Assaf Zaritsky Summer 2010

11

Computer

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

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

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

אמצעי קלט

זכרון

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

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

Page 12: 1 Gentle Introduction to Programming Assaf Zaritsky Summer 2010

12

Algorithm

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

Algorithm

Input Output

Page 13: 1 Gentle Introduction to Programming Assaf Zaritsky Summer 2010

13

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

תרשים זרימה

Page 14: 1 Gentle Introduction to Programming Assaf Zaritsky Summer 2010

14

Pseudo Code

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

Page 15: 1 Gentle Introduction to Programming Assaf Zaritsky Summer 2010

15

Example

Page 16: 1 Gentle Introduction to Programming Assaf Zaritsky Summer 2010

16

Programming Language

Machine-readable artificial language designed to express computations that

can be performed by a computer

Page 17: 1 Gentle Introduction to Programming Assaf Zaritsky Summer 2010

17

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

Page 18: 1 Gentle Introduction to Programming Assaf Zaritsky Summer 2010

18

There are Many Programming Languages

Over 500 different computer languages are listed by Wikipedia

Page 19: 1 Gentle Introduction to Programming Assaf Zaritsky Summer 2010

19

Page 20: 1 Gentle Introduction to Programming Assaf Zaritsky Summer 2010

20

Language Selection

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

Page 21: 1 Gentle Introduction to Programming Assaf Zaritsky Summer 2010

21

Computer Program

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

Page 22: 1 Gentle Introduction to Programming Assaf Zaritsky Summer 2010

22

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

Page 23: 1 Gentle Introduction to Programming Assaf Zaritsky Summer 2010

23

Agenda for Today

• Administration• General introduction• The Scala programming language:

• Variables and Types• Operators• Branching and Repetition

• Compiler, Interpreter• Working environment• Home work• Guest lecture by Ohad Barzilay

Page 24: 1 Gentle Introduction to Programming Assaf Zaritsky Summer 2010

24

Scala History

• Created by Martin Odersky at EPFL• Released Jan 2004

• Twitter switched large portions of their code to Scala (and intend to convert the rest)• Linkedin use it• Other companies

• Over 4000 downloads per month

Page 25: 1 Gentle Introduction to Programming Assaf Zaritsky Summer 2010

25

Why Scala?

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

Scheme and some to Java• Scala is cool!

Page 26: 1 Gentle Introduction to Programming Assaf Zaritsky Summer 2010

26

Hello World!

Page 27: 1 Gentle Introduction to Programming Assaf Zaritsky Summer 2010

27

My First Scala Program: Hello World!

Hello.scala

Page 28: 1 Gentle Introduction to Programming Assaf Zaritsky Summer 2010

28

Memory

Page 29: 1 Gentle Introduction to Programming Assaf Zaritsky Summer 2010

29

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

Page 30: 1 Gentle Introduction to Programming Assaf Zaritsky Summer 2010

30

Variables and Types

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

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

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

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

Page 31: 1 Gentle Introduction to Programming Assaf Zaritsky Summer 2010

31

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

Page 32: 1 Gentle Introduction to Programming Assaf Zaritsky Summer 2010

32

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

Page 33: 1 Gentle Introduction to Programming Assaf Zaritsky Summer 2010

33

Types

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

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

Page 34: 1 Gentle Introduction to Programming Assaf Zaritsky Summer 2010

34

Some Basic Types

Page 35: 1 Gentle Introduction to Programming Assaf Zaritsky Summer 2010

35

Why Do We Need Different Types?

• Saving memory

• Execution speed

• Makes compiler “life” easier

Page 36: 1 Gentle Introduction to Programming Assaf Zaritsky Summer 2010

36

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!”

Page 37: 1 Gentle Introduction to Programming Assaf Zaritsky Summer 2010

37

Arithmetic Operators

Page 38: 1 Gentle Introduction to Programming Assaf Zaritsky Summer 2010

38

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)

Page 39: 1 Gentle Introduction to Programming Assaf Zaritsky Summer 2010

39

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)

Page 40: 1 Gentle Introduction to Programming Assaf Zaritsky Summer 2010

40

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)

Page 41: 1 Gentle Introduction to Programming Assaf Zaritsky Summer 2010

41

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

Page 42: 1 Gentle Introduction to Programming Assaf Zaritsky Summer 2010

42

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))

Page 43: 1 Gentle Introduction to Programming Assaf Zaritsky Summer 2010

43

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.

Page 44: 1 Gentle Introduction to Programming Assaf Zaritsky Summer 2010

44

&&, ||, !=

0 1

0 0 0

1 0 1

0 1

0 0 1

1 1 1

0 1

1 0

&&

||!

Page 45: 1 Gentle Introduction to Programming Assaf Zaritsky Summer 2010

45

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)

Page 46: 1 Gentle Introduction to Programming Assaf Zaritsky Summer 2010

46

All Examples at BasicExamples.scala

Page 47: 1 Gentle Introduction to Programming Assaf Zaritsky Summer 2010

48

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

Page 48: 1 Gentle Introduction to Programming Assaf Zaritsky Summer 2010

49

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

Page 49: 1 Gentle Introduction to Programming Assaf Zaritsky Summer 2010

50

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”)

Page 50: 1 Gentle Introduction to Programming Assaf Zaritsky Summer 2010

56

Agenda for Today

• Administration• General introduction• The Scala programming language:

• Variables and Types• Operators• Branching and Repetition

• Compiler, Interpreter• Working environment• Home work• Guest lecture by Ohad Barzilay

Page 51: 1 Gentle Introduction to Programming Assaf Zaritsky Summer 2010

57

Compiler

Page 52: 1 Gentle Introduction to Programming Assaf Zaritsky Summer 2010

58

Interpreter

Page 53: 1 Gentle Introduction to Programming Assaf Zaritsky Summer 2010

59

Interpreter

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

• The Environment

Page 54: 1 Gentle Introduction to Programming Assaf Zaritsky Summer 2010

60

Compiler = Clerk"ראש קטן"

Page 55: 1 Gentle Introduction to Programming Assaf Zaritsky Summer 2010

61

Runtime

Page 56: 1 Gentle Introduction to Programming Assaf Zaritsky Summer 2010

63

Hello World ;-)

Page 57: 1 Gentle Introduction to Programming Assaf Zaritsky Summer 2010

64

Agenda for Today

• Administration• General introduction• The Scala programming language:

• Variables and Types• Operators• Branching and Repetition

• Compiler, Interpreter• Working environment• Home work• Guest lecture by Ohad Barzilay

Page 58: 1 Gentle Introduction to Programming Assaf Zaritsky Summer 2010

65

Working Environment

• Interpreter vs. scripts vs. Eclipse

• Home vs. labs

VS.

Page 59: 1 Gentle Introduction to Programming Assaf Zaritsky Summer 2010

66

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 (https://www.assembla.com/wiki/show/scala-ide/Requirements_and_Installation )

• Start programming

Page 60: 1 Gentle Introduction to Programming Assaf Zaritsky Summer 2010

67

Download Java http://www.java.com/en/download/index.jsp

Page 61: 1 Gentle Introduction to Programming Assaf Zaritsky Summer 2010

68

Download Scala http://www.scala-lang.org/downloads

Page 62: 1 Gentle Introduction to Programming Assaf Zaritsky Summer 2010

69

Download Scala

Page 63: 1 Gentle Introduction to Programming Assaf Zaritsky Summer 2010

70

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

Page 64: 1 Gentle Introduction to Programming Assaf Zaritsky Summer 2010

71

Download Eclipse

http://www.eclipse.org/downloads/

Page 65: 1 Gentle Introduction to Programming Assaf Zaritsky Summer 2010

72

Set Scala Plugin to Eclipse https://www.assembla.com/wiki/show/scala-ide/Requirements_and_Installation

Page 66: 1 Gentle Introduction to Programming Assaf Zaritsky Summer 2010

73

Set Scala Plugin to Eclipse (new)

Page 67: 1 Gentle Introduction to Programming Assaf Zaritsky Summer 2010

74

Set Scala Plugin to Eclipse (new)

Page 68: 1 Gentle Introduction to Programming Assaf Zaritsky Summer 2010

75

Open Eclipse – Set Workspace

Page 69: 1 Gentle Introduction to Programming Assaf Zaritsky Summer 2010

76

Open Eclipse

Page 70: 1 Gentle Introduction to Programming Assaf Zaritsky Summer 2010

77

Define New Project

Page 71: 1 Gentle Introduction to Programming Assaf Zaritsky Summer 2010

78

If you don’t find the Scala new project…

File New Project

Page 72: 1 Gentle Introduction to Programming Assaf Zaritsky Summer 2010

79

New Object

Page 73: 1 Gentle Introduction to Programming Assaf Zaritsky Summer 2010

80

Write Some Code

Page 74: 1 Gentle Introduction to Programming Assaf Zaritsky Summer 2010

81

Run

output

Page 75: 1 Gentle Introduction to Programming Assaf Zaritsky Summer 2010

82

Agenda for Today

• Administration• General introduction• The Scala programming language:

• Variables and Types• Operators• Branching and Repetition

• Compiler, Interpreter• Working environment• Home work• Guest lecture by Ohad Barzilay

Page 76: 1 Gentle Introduction to Programming Assaf Zaritsky Summer 2010

83

Exercise 0

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

• Make sure it compiles and executes properly

Page 77: 1 Gentle Introduction to Programming Assaf Zaritsky Summer 2010

84

Fibonacci

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

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

en.wikipedia.org/wiki/Fibonacci_number

Page 78: 1 Gentle Introduction to Programming Assaf Zaritsky Summer 2010

85

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

Page 79: 1 Gentle Introduction to Programming Assaf Zaritsky Summer 2010

86

Exercise 1

• Write a program that calculates and prints to the screen the first five Fibonacci numbers

Page 80: 1 Gentle Introduction to Programming Assaf Zaritsky Summer 2010

87

Agenda for Today

• Administration• General introduction• The Scala programming language:

• Variables and Types• Operators• Branching and Repetition

• Compiler, Interpreter• Working environment• Home work• Guest lecture by Ohad Barzilay