Lecture 8: Control Structures I

Size: px
Start display at page:

Download "Lecture 8: Control Structures I"

Transcription

1 Chair of Software Engineering Einführung in die Programmierung Introduction to Programming Prof. Dr. Bertrand Meyer Lecture 8: Control Structures I

2 Intro. to Programming, lecture 8: Control structures I 2

3 The notion of algorithm General definition: An algorithm is the specification of a process to be carried out by a computer Intro. to Programming, lecture 8: Control structures I 3

4 Not quite an algorithm Intro. to Programming, lecture 8: Control structures I 4

5 5 properties of an algorithm Defines data to which process will be applied Every elementary step taken from a set of well-specified actions Describes ordering(s) of execution of these steps 2 and 3 based on precisely defined conventions, suitable for execution by an automatic computer For any data, guaranteed to terminate after finite number of steps Intro. to Programming, lecture 8: Control structures I 5

6 Algorithm vs program Algorithm usually considered a more abstract notion, indepent d of platform, programming language etc. In practice, the distinction ts to fade: Algorithms need a precise notation Programming languages becoming more abstract However: In programs, data (objects) are just as important as algorithms A program typically contains many algorithms and object structures Intro. to Programming, lecture 8: Control structures I 6

7 What makes up an algorithm Basic steps: Feature call x.f (a ) Assignment... Sequencing of these basic steps: CONTROL STRUCTURES Intro. to Programming, lecture 8: Control structures I 7

8 Control structures Definition: program construct that describes the scheduling of basic actions Three fundamental control structures: Sequence Loop Conditional They are the Control structures of Structured Programming Intro. to Programming, lecture 8: Control structures I 8

9 Control structures as problem-solving techniques Sequence: To achieve C from A, first achieve an intermediate goal B from A, then achieve C from B Loop: solve the problem on successive approximations of its input set Conditional: solve the problem separately on two or more subsets of its input set Intro. to Programming, lecture 8: Control structures I 9

10 The sequence (or Compound) instruction 1 instruction 2... instruction n Intro. to Programming, lecture 8: Control structures I 10

11 Semicolon as optional separator instruction 1 ; instruction 2 ;... ; instruction n Intro. to Programming, lecture 8: Control structures I 11

12 Not quite an algorithm Intro. to Programming, lecture 8: Control structures I 12

13 Correctness of a Compound Precondition of instruction 1 must hold initially Postcondition of each instruction i must imply precondition of each instruction i+1 Final effect is postcondition of instruction n Intro. to Programming, lecture 8: Control structures I 13

14 Conditional instruction if Condition then Instructions else Other_instructions -- Boolean_expression -- Compound -- Compound Intro. to Programming, lecture 8: Control structures I 14

15 Computing the greater of two numbers if a > b then max else max := a := b Intro. to Programming, lecture 8: Control structures I 15

16 As a function maximum (a, b : INTEGER): INTEGER do -- The higher of a and b if a > b then Result else := a Result := b Intro. to Programming, lecture 8: Control structures I 16

17 The conditional as problem-solving technique PROBLEM SPACE Region 2 Region 1 Use technique 1 Use technique 2 Intro. to Programming, lecture 8: Control structures I 17

18 Basic form if Condition then Instructions else Other_instructions Intro. to Programming, lecture 8: Control structures I 18

19 A variant of the conditional if Condition then Instructions Intro. to Programming, lecture 8: Control structures I 19

20 A variant of the conditional if Condition then Instructions (Means the same as if Condition then Instructions else with an empty else clause) Intro. to Programming, lecture 8: Control structures I 20

21 Nesting if Condition 1 then Instructions ti 1 else if Condition 2 then Instructions 2 else if Condition 3 then else... Instructions ti 3 Intro. to Programming, lecture 8: Control structures I 21

22 Nested structure Intro. to Programming, lecture 8: Control structures I 22

23 Comb-like structure Intro. to Programming, lecture 8: Control structures I 23

24 Comb-like conditional if Condition 1 then Instructions 1 elseif Condition 2 then Instructions 2 elseif Condition 3 then Instructions 3 elseif... else Instructions 0 Intro. to Programming, lecture 8: Control structures I 24

25 Comb-like structure Intro. to Programming, lecture 8: Control structures I 25

26 On the menu for today Loops and their invariants See what it takes to ensure that a loop terminates Look at the general problem of loop termination Examine lower-level control structures: Goto and flowcharts; see rationale for the control structures of Structured Programming Prove the undecidability of the Halting Problem Intro. to Programming, lecture 8: Control structures I26

27 Loop from Initialization variant Variant_expression invariant Invariant_expression until Exit_condition loop Body -- Compound -- Integer expression -- Condition -- Boolean_expression -- Compound Intro. to Programming, lecture 8: Control structures I 27

28 Loop, full form from Initialization invariant Invariant_expression variant Variant_expression until Exit_condition loop Body -- Compound -- Boolean_expression -- Integer_expression -- Boolean_expression -- Compound Intro. to Programming, lecture 8: Control structures I 28

29 Another loop syntax Intro. to Programming, lecture 8: Control structures I 29

30 Loop, full form from Initialization invariant Invariant_expression variant Variant_expression until Exit_condition loop Body -- Compound -- Boolean_expression -- Integer_expression -- Boolean_expression -- Compound Intro. to Programming, lecture 8: Control structures I 30

31 Looping over stations of a line from fancy.start until fancy.after loop -- Do something with fancy.item fancy.forth Previously and in the textbook: fancy_line Intro. to Programming, lecture 8: Control structures I 31

32 Operations on a list before after item 1 index count startt back forth Commands (The cursor) Queries (boolean) Intro. to Programming, lecture 8: Control structures I 32

33 Operations on a list before after item 1 index count startt forth (The cursor) Intro. to Programming, lecture 8: Control structures I 33

34 Looping over stations of a line from fancy.start until fancy.after loop -- Do something with fancy.item fancy.forth Intro. to Programming, lecture 8: Control structures I 34

35 Displaying station names from until loop fancy.start fancy.after -- Display name of next station: Console.show (fancy.item)( ) fancy.forth Intro. to Programming, lecture 8: Control structures I 35

36 Computing the maximum of station names from fancy.start ; Result := "" until fancy.after loop Result := greater (Result, fancy.item.name) fancy.forth Intro. to Programming, lecture 8: Control structures I 36

37 Assignment Result := "XYZ " -- Change the value of Result to "XYZ" Intro. to Programming, lecture 8: Control structures I 37

38 Computing the maximum of station names from fancy.start ; Result := " " until fancy.after loop Result := greater (Result, fancy.item.name) fancy.forth The greater of two strings, alphabetically, e.g. greater ("ABC ", "AD ") ="AD" Intro. to Programming, lecture 8: Control structures I 38

39 In a function highest_name: STRING is do from -- Alphabetically greatest station name of line until loop fancy.start ; Result := "" fancy.after Result := greater (Result, fancy.item.name) fancy.forthforth Intro. to Programming, lecture 8: Control structures I 39

40 Postcondition? highest_name: STRING is -- Alphabetically greatest station name of line do from fancy.start ; Result := "" until fancy.after loop Result := greater (Result, fancy.item.name) fancy.forth ensure Result /= Void and then not Result.empty Intro. to Programming, lecture 8: Control structures I 40

41 Loop as approximation strategy name 1 name 2 name i name n Result = name 1 Result = Max (name 1, name 2 ) Result =Max(name 1, name 2,..., name i ) Result = Max (name 1, name 2,..., name i,..., name n ) Intro. to Programming, lecture 8: Control structures I 41

42 Computing the maximum of station names from fancy.start ; Result := " until loop fancy.afterafter Result := greater (Result, fancy.item.name) fancy.forth Intro. to Programming, lecture 8: Control structures I 42

43 The loop invariant from fancy.start t ; Result := "" invariant fancy.index >= 1 fancy.index <= fancy.count Result is the alphabetically highest of the -- names of previous stations until fancy.afterafter loop Result := greater (Result, fancy.item.name) fancy.forth Intro. to Programming, lecture 8: Control structures I 43

44 Loop invariant (Do not confuse with class invariant) Property that is: Satisfied after initialization (from clause) Preserved by every loop iteration (loop p clause) when executed with the exit condition (until clause) not satisfied Intro. to Programming, lecture 8: Control structures I 44

45 The loop invariant from fancy.start ; Result := "" invariant fancy.index >= 1 fancy.index <= fancy.count Result is the alphabetically highest of the -- names of previous stations until fancy.afterf loop Result := greater (Result, fancy.item.name) fancy.forth Intro. to Programming, lecture 8: Control structures I 45

46 The loop invariant (better) from fancy.start t ; Result := "" invariant index >= 1 index <= count If there are any previous stations, -- Result is the alphabetically highest of their names until fancy.after loop Result := greater (Result, fancy.item.name) fancy.forth Intro. to Programming, lecture 8: Control structures I 46

47 Loop as approximation strategy name 1 name 2 name i name n Result = name 1 Result = Max (name 1, name 2 ) Result =Max(name 1, name 2,..., name i ) Result = Max (name 1, name 2,..., name i,..., name n ) Intro. to Programming, lecture 8: Control structures I 47

48 In a function highest_name: STRING is do from until loop -- Alphabetically ll greatest t station ti name of line fancy.start ; Result := "" fancy.after Result := greater (Result, fancy.item.name) ) fancy.forthforth Intro. to Programming, lecture 8: Control structures I 48

49 Postcondition? highest_name: STRING is -- Alphabetically greatest station name of line do from fancy.start ; Result := "" until fancy.after loop Result := greater (Result, fancy.item.name) fancy.forth ensure Result /= Void and then not Result.empty Intro. to Programming, lecture 8: Control structures I 49

50 Loop as approximation strategy name 1 name 2 name i name n Result = name 1 Result = Max (name 1, name 2 ) Result =Max(name 1, name 2,..., name i ) Result = Max (name 1, name 2,..., name i,..., name n ) Intro. to Programming, lecture 8: Control structures I 50

51 The loop invariant from fancy.start ; Result := " invariant fancy.index >= 1 fancy.index <= fancy.count Result is the alphabetically highest of the -- names of previous stations until fancy.afterafter loop Result := greater (Result, fancy.item.name) fancy.forth Intro. to Programming, lecture 8: Control structures I 51

52 Loop invariant (Do not confuse with class invariant) Property that is: Satisfied after initialization (from clause) Preserved by every loop iteration (loop p clause) when executed with the exit condition (until clause) not satisfied Intro. to Programming, lecture 8: Control structures I 52

53 The loop invariant from fancy.start ; Result := "" invariant fancy.index >= 1 fancy.index <= fancy.count Result is highest of previous station names until fancy.after loop Result := greater (Result, fancy.item.name) fancy.forth Intro. to Programming, lecture 8: Control structures I 53

54 The loop invariant (better) from fancy.start ; Result := "" invariant index >= 1 index <= count If there are any previous stations, -- Result is the alphabetically ll highest h of their names until fancy.after loop Result := greater (Result, fancy.item.name) fancy.forth Intro. to Programming, lecture 8: Control structures I 54

55 The effect of the loop from fancy.start ; Result := "" invariant index >= 1 index <= count Result is highest of previous station names until fancy.after Exit condition loop satisfied at Result := greater (Result, fancy.item.name) Invariant satisfied after initialization Invariant satisfied after each iteration fancy.forth At : invariant and exit condition All stations visited (fancy.after ) Result is highest of their names Intro. to Programming, lecture 8: Control structures I 55

56 Quiz: what s the invariant? xxx (a, b: INTEGER): INTEGER is --????????????????????????????????? require a > 0;b b > 0 local m, n : INTEGER do from m := a ; n := b invariant --???????? variant???????? until m = n loop if m > n then m := m n else n := n m Result := m Intro. to Programming, lecture 8: Control structures I 56

57 Quiz: what s the invariant? xxx (a, b: INTEGER): INTEGER is --????????????????????????????????? require a > 0;b b > 0 local m, n : INTEGER do from m := a ; n := b invariant --???????? variant???????? until m = n loop if m > n then m := m n else n := n m Result := m Intro. to Programming, lecture 8: Control structures I 57

58 Quiz: what s the invariant? euclid (a, b: INTEGER): INTEGER is -- Greatest common divisor of a and b require a > 0;b b > 0 local m, n : INTEGER do from m := a ; n := b invariant --???????? variant???????? until m = n loop if m > n then m := m n else n := n m Result := m Intro. to Programming, lecture 8: Control structures I 58

59 What we have seen Intro. to Programming, lecture 8: Control structures I 59

60 What we have seen The notion of algorithm Basic properties Difference with program The notion of control structure Correctness of an instruction Control structure: sequence Control structure: conditional Nesting, and how to avoid it Intro. to Programming, lecture 8: Control structures I 60

61 End of lecture 8 Intro. to Programming, lecture 8: Control structures I 61

Einführung in die Programmierung Introduction to Programming

Einführung in die Programmierung Introduction to Programming Chair of Software Engineering Einführung in die Programmierung Introduction to Programming Prof. Dr. Bertrand Meyer Lecture 8: Control Structures I In this (double) lecture The notion of algorithm Basic

More information

Einführung in die Programmierung Introduction to Programming

Einführung in die Programmierung Introduction to Programming Chair of Software Engineering Einführung in die Programmierung Introduction to Programming Prof. Dr. Bertrand Meyer Exercise Session 5 Today Ø Attributes, formal arguments, and local variables Ø Control

More information

Einführung in die Programmierung Introduction to Programming

Einführung in die Programmierung Introduction to Programming Chair of Software Engineering Einführung in die Programmierung Introduction to Programming Prof. Dr. Bertrand Meyer Exercise Session 5 Today Attributes, formal arguments, and local variables Control structures

More information

Einführung in die Programmierung Introduction to Programming

Einführung in die Programmierung Introduction to Programming Chair of Software Engineering Einführung in die Programmierung Introduction to Programming Prof. Dr. Bertrand Meyer Lecture 14: Container Data Structures Topics for this lecture Containers and genericity

More information

Einführung in die Programmierung Introduction to Programming

Einführung in die Programmierung Introduction to Programming Chair of Software Engineering Einführung in die Programmierung Introduction to Programming Prof. Dr. Bertrand Meyer Exercise Session 6 Today Conditional Loop Abstractions Exporting s 2 Structured programming

More information

Einführung in die Programmierung Introduction to Programming

Einführung in die Programmierung Introduction to Programming Chair of Software Engineering Einführung in die Programmierung Introduction to Programming Prof. Dr. Bertrand Meyer Lecture 4: The Interface of a Class Client, supplier Definitions A client of a software

More information

Einführung in die Programmierung Introduction to Programming

Einführung in die Programmierung Introduction to Programming Chair of Software Engineering Einführung in die Programmierung Introduction to Programming Prof. Dr. Bertrand Meyer Exercise Session 9 Today Ø Feedback on the mock exam Ø Recursion Ø Recursion Recursion

More information

Containers and genericity. A standardized naming scheme. Cursor properties. Lists. Adding a cell. A specific implementation: (singly) linked lists

Containers and genericity. A standardized naming scheme. Cursor properties. Lists. Adding a cell. A specific implementation: (singly) linked lists Topics for this lecture Chair of Software Engineering Einführung in die Programmierung Introduction to Programming Containers and genericity Container operations Prof. Dr. Bertrand Meyer Lists October

More information

Einführung in die Programmierung Introduction to Programming

Einführung in die Programmierung Introduction to Programming Chair of Software Engineering Einführung in die Programmierung Introduction to Programming Prof. Dr. Bertrand Meyer Exercise Session 10 News Mock exam in 2 weeks (December 6 th, 7 th ) You have to be present

More information

Lecture 14: More Inheritance & Genericity

Lecture 14: More Inheritance & Genericity Chair of Software Engineering Einführung in die Programmierung Introduction to Programming Prof. Dr. Bertrand Meyer October 2006 February 2007 MP1 Lecture 14: More Inheritance & Genericity 2 Genericity:

More information

In Java, data type boolean is used to represent Boolean data. Each boolean constant or variable can contain one of two values: true or false.

In Java, data type boolean is used to represent Boolean data. Each boolean constant or variable can contain one of two values: true or false. CS101, Mock Boolean Conditions, If-Then Boolean Expressions and Conditions The physical order of a program is the order in which the statements are listed. The logical order of a program is the order in

More information

Einführung in die Programmierung Introduction to Programming

Einführung in die Programmierung Introduction to Programming Chair of Software Engineering Einführung in die Programmierung Introduction to Programming Prof. Dr. Bertrand Meyer Lecture 3: Dealing with Objects II Programming languages The programming language is

More information

Automated Fixing of Programs with Contracts

Automated Fixing of Programs with Contracts Automated Fixing of Programs with Contracts Yi Wei, Yu Pei, Carlo A. Furia, Lucas S. Silva, Stefan Buchholz, Bertrand Meyer and Andreas Zeller Chair of Software Engineering, ETH Zürich Software Engineering

More information

Outline. Computer Science 331. Three Classical Algorithms. The Sorting Problem. Classical Sorting Algorithms. Mike Jacobson. Description Analysis

Outline. Computer Science 331. Three Classical Algorithms. The Sorting Problem. Classical Sorting Algorithms. Mike Jacobson. Description Analysis Outline Computer Science 331 Classical Sorting Algorithms Mike Jacobson Department of Computer Science University of Calgary Lecture #22 1 Introduction 2 3 4 5 Comparisons Mike Jacobson (University of

More information

Fondamenti della Programmazione: Metodi Evoluti. Esercitazione 5

Fondamenti della Programmazione: Metodi Evoluti. Esercitazione 5 Fondamenti della Programmazione: Metodi Evoluti Prof. Enrico Nardelli Esercitazione 5 versione originale: http://touch.ethz.ch Today Conditional Loop Linked list ESERCITAZIONE-5 Rev. 1.1.5 (2015-16) by

More information

Lecture 13: Introduction to inheritance and genericity

Lecture 13: Introduction to inheritance and genericity Chair of Software Engineering Einführung in die Programmierung Introduction to Programming Prof. Dr. Bertrand Meyer Lecture 13: Introduction to inheritance and genericity On the menu for today (& next

More information

An example (1) - Conditional. An example (2) - Conditional. An example (3) Nested conditional

An example (1) - Conditional. An example (2) - Conditional. An example (3) Nested conditional Chair of Software Engineering Einführung in die Programmierung Introduction to Programming Prof. Dr. Bertrand Meyer Michela Pedroni October 2006 February 2007 Lecture 8: Describing the Syntax Intro. to

More information

Assertions & Verification & Example Loop Invariants Example Exam Questions

Assertions & Verification & Example Loop Invariants Example Exam Questions 2014 November 27 1. Assertions & Verification & Example Loop Invariants Example Exam Questions 2. A B C Give a general template for refining an operation into a sequence and state what questions a designer

More information

Eiffel: Analysis, Design and Programming. ETH Zurich, September-December Exception handling

Eiffel: Analysis, Design and Programming. ETH Zurich, September-December Exception handling Eiffel: Analysis, Design and Programming ETH Zurich, September-December 2008-6- Exception handling What is an exception? An abnormal event Not a very precise definition Informally: something that you don

More information

1. Lexical Analysis Phase

1. Lexical Analysis Phase 1. Lexical Analysis Phase The purpose of the lexical analyzer is to read the source program, one character at time, and to translate it into a sequence of primitive units called tokens. Keywords, identifiers,

More information

Assertions & Verification Example Exam Questions

Assertions & Verification Example Exam Questions 2009 November 23 Assertions & Verification Example Exam Questions 1. 2. A B C Give a general template for refining an operation into a sequence and state what questions a designer must answer to verify

More information

Review: Hoare Logic Rules

Review: Hoare Logic Rules Review: Hoare Logic Rules wp(x := E, P) = [E/x] P wp(s;t, Q) = wp(s, wp(t, Q)) wp(if B then S else T, Q) = B wp(s,q) && B wp(t,q) Proving loops correct First consider partial correctness The loop may not

More information

a correct statement? You need to know what the statement is supposed to do.

a correct statement? You need to know what the statement is supposed to do. Using assertions for correctness How can we know that software is correct? It is only correct if it does what it is supposed to do. But how do we know what it is supposed to do? We need a specification.

More information

Lecture Notes on Linear Search

Lecture Notes on Linear Search Lecture Notes on Linear Search 15-122: Principles of Imperative Computation Frank Pfenning Lecture 5 January 28, 2014 1 Introduction One of the fundamental and recurring problems in computer science is

More information

Outline. Introduction. 2 Proof of Correctness. 3 Final Notes. Precondition P 1 : Inputs include

Outline. Introduction. 2 Proof of Correctness. 3 Final Notes. Precondition P 1 : Inputs include Outline Computer Science 331 Correctness of Algorithms Mike Jacobson Department of Computer Science University of Calgary Lectures #2-4 1 What is a? Applications 2 Recursive Algorithms 3 Final Notes Additional

More information

Introduction to C/C++ Lecture 3 - Program Flow Control

Introduction to C/C++ Lecture 3 - Program Flow Control Introduction to C/C++ Lecture 3 - Program Flow Control Rohit Sehgal Nishit Majithia Association of Computing Activities, Indian Institute of Technology,Kanpur rsehgal@cse.iitk.ac.in nishitm@cse.iitk.ac.in

More information

CS 221 Lecture. Tuesday, 11 October 2011

CS 221 Lecture. Tuesday, 11 October 2011 CS 221 Lecture Tuesday, 11 October 2011 "Computers in the future may weigh no more than 1.5 tons." - Popular Mechanics, forecasting the relentless march of science, 1949. Today s Topics 1. Announcements

More information

Chapter 3. Describing Syntax and Semantics

Chapter 3. Describing Syntax and Semantics Chapter 3 Describing Syntax and Semantics Chapter 3 Topics Introduction The General Problem of Describing Syntax Formal Methods of Describing Syntax Attribute Grammars Describing the Meanings of Programs:

More information

Iterative Statements. Iterative Statements: Examples. Counter-Controlled Loops. ICOM 4036 Programming Languages Statement-Level Control Structure

Iterative Statements. Iterative Statements: Examples. Counter-Controlled Loops. ICOM 4036 Programming Languages Statement-Level Control Structure ICOM 4036 Programming Languages Statement-Level Control Structure Selection Statement Iterative Statements Unconditional Branching Guarded Commands This lecture covers review questions 8-16 This lecture

More information

Assertions, pre/postconditions

Assertions, pre/postconditions Programming as a contract Assertions, pre/postconditions Assertions: Section 4.2 in Savitch (p. 239) Specifying what each method does q Specify it in a comment before method's header Precondition q What

More information

Chapter 3 (part 3) Describing Syntax and Semantics

Chapter 3 (part 3) Describing Syntax and Semantics Chapter 3 (part 3) Describing Syntax and Semantics Chapter 3 Topics Introduction The General Problem of Describing Syntax Formal Methods of Describing Syntax Attribute Grammars Describing the Meanings

More information

A survey of loop invariants

A survey of loop invariants A survey of loop invariants Carlo A. Furia Bertrand Meyer Sergey Velder January 30, 2013 Abstract At the heart of every loop, and hence of all algorithms, lies a loop invariant: a property ensured by the

More information

Object Oriented Program Correctness with OOSimL

Object Oriented Program Correctness with OOSimL Kennesaw State University DigitalCommons@Kennesaw State University Faculty Publications 12-2009 Object Oriented Program Correctness with OOSimL José M. Garrido Kennesaw State University, jgarrido@kennesaw.edu

More information

Einführung in die Programmierung Introduction to Programming

Einführung in die Programmierung Introduction to Programming Chair of Software Engineering Einführung in die Programmierung Introduction to Programming Prof. Dr. Bertrand Meyer Michela Pedroni Lecture 11: Describing the Syntax Goals of today s lecture Learn about

More information

An Annotated Language

An Annotated Language Hoare Logic An Annotated Language State and Semantics Expressions are interpreted as functions from states to the corresponding domain of interpretation Operators have the obvious interpretation Free of

More information

Reasoning about programs

Reasoning about programs Reasoning about programs Last time Coming up This Thursday, Nov 30: 4 th in-class exercise sign up for group on moodle bring laptop to class Final projects: final project presentations: Tue Dec 12, in

More information

CS 199 Computer Programming. Spring 2018 Lecture 5 Control Statements

CS 199 Computer Programming. Spring 2018 Lecture 5 Control Statements CS 199 Computer Programming Spring 2018 Lecture 5 Control Statements Control Structures 3 control structures Sequence structure Programs executed sequentially by default Branch structure Unconditional

More information

Last time. Reasoning about programs. Coming up. Project Final Presentations. This Thursday, Nov 30: 4 th in-class exercise

Last time. Reasoning about programs. Coming up. Project Final Presentations. This Thursday, Nov 30: 4 th in-class exercise Last time Reasoning about programs Coming up This Thursday, Nov 30: 4 th in-class exercise sign up for group on moodle bring laptop to class Final projects: final project presentations: Tue Dec 12, in

More information

Lecture 5 Tao Wang 1

Lecture 5 Tao Wang 1 Lecture 5 Tao Wang 1 Objectives In this chapter, you will learn about: Selection criteria Relational operators Logical operators The if-else statement Nested if statements C++ for Engineers and Scientists,

More information

Lecture Notes on Contracts

Lecture Notes on Contracts Lecture Notes on Contracts 15-122: Principles of Imperative Computation Frank Pfenning Lecture 2 August 30, 2012 1 Introduction For an overview the course goals and the mechanics and schedule of the course,

More information

A control expression must evaluate to a value that can be interpreted as true or false.

A control expression must evaluate to a value that can be interpreted as true or false. Control Statements Control Expressions A control expression must evaluate to a value that can be interpreted as true or false. How a control statement behaves depends on the value of its control expression.

More information

Softwaretechnik. Lecture 08: Testing and Debugging Overview. Peter Thiemann SS University of Freiburg, Germany

Softwaretechnik. Lecture 08: Testing and Debugging Overview. Peter Thiemann SS University of Freiburg, Germany Softwaretechnik Lecture 08: Testing and Debugging Overview Peter Thiemann University of Freiburg, Germany SS 2012 Literature Essential Reading Why Programs Fail: A Guide to Systematic Debugging, A Zeller

More information

Softwaretechnik. Lecture 08: Testing and Debugging Overview. Peter Thiemann SS University of Freiburg, Germany

Softwaretechnik. Lecture 08: Testing and Debugging Overview. Peter Thiemann SS University of Freiburg, Germany Softwaretechnik Lecture 08: Testing and Debugging Overview Peter Thiemann University of Freiburg, Germany SS 2012 Literature Essential Reading Why Programs Fail: A Guide to Systematic Debugging, A Zeller

More information

Flow Control. CSC215 Lecture

Flow Control. CSC215 Lecture Flow Control CSC215 Lecture Outline Blocks and compound statements Conditional statements if - statement if-else - statement switch - statement? : opertator Nested conditional statements Repetitive statements

More information

The Eiffel language. Slides partly based on :

The Eiffel language. Slides partly based on : The Eiffel language Slides partly based on : http://se.inf.ethz.ch/courses/2015b_fall/eprog/english_index.html Eiffel, in brief Procedural, object-oriented programming language created by Bertrand Meyer

More information

1 Abstract Data Types (11 Points)

1 Abstract Data Types (11 Points) Legi-Nr.:... 1 Abstract Data Types (11 Points) In this task you will write an abstract data type for a simple tree structure that stores integers in its nodes and whose nodes always have either no children

More information

Lecture 7 Tao Wang 1

Lecture 7 Tao Wang 1 Lecture 7 Tao Wang 1 Objectives In this chapter, you will learn about: Interactive loop break and continue do-while for loop Common programming errors Scientists, Third Edition 2 while Loops while statement

More information

DATABASE AUTOMATION USING VBA (ADVANCED MICROSOFT ACCESS, X405.6)

DATABASE AUTOMATION USING VBA (ADVANCED MICROSOFT ACCESS, X405.6) Technology & Information Management Instructor: Michael Kremer, Ph.D. Database Program: Microsoft Access Series DATABASE AUTOMATION USING VBA (ADVANCED MICROSOFT ACCESS, X405.6) AGENDA 3. Executing VBA

More information

C# Types. Industrial Programming. Value Types. Signed and Unsigned. Lecture 3: C# Fundamentals

C# Types. Industrial Programming. Value Types. Signed and Unsigned. Lecture 3: C# Fundamentals C# Types Industrial Programming Lecture 3: C# Fundamentals Industrial Programming 1 Industrial Programming 2 Value Types Memory location contains the data. Integers: Signed: sbyte, int, short, long Unsigned:

More information

Discrete Mathematics Lecture 4. Harper Langston New York University

Discrete Mathematics Lecture 4. Harper Langston New York University Discrete Mathematics Lecture 4 Harper Langston New York University Sequences Sequence is a set of (usually infinite number of) ordered elements: a 1, a 2,, a n, Each individual element a k is called a

More information

Industrial Programming

Industrial Programming Industrial Programming Lecture 3: C# Fundamentals Industrial Programming 1 C# Types Industrial Programming 2 Value Types Memory location contains the data. Integers: Signed: sbyte, int, short, long Unsigned:

More information

Hoare Logic: Proving Programs Correct

Hoare Logic: Proving Programs Correct Hoare Logic: Proving Programs Correct 17-654/17-765 Analysis of Software Artifacts Jonathan Aldrich Reading: C.A.R. Hoare, An Axiomatic Basis for Computer Programming Some presentation ideas from a lecture

More information

SECTION 5: STRUCTURED PROGRAMMING IN MATLAB. ENGR 112 Introduction to Engineering Computing

SECTION 5: STRUCTURED PROGRAMMING IN MATLAB. ENGR 112 Introduction to Engineering Computing SECTION 5: STRUCTURED PROGRAMMING IN MATLAB ENGR 112 Introduction to Engineering Computing 2 Conditional Statements if statements if else statements Logical and relational operators switch case statements

More information

Information Science 1

Information Science 1 Information Science 1 Fundamental Programming Constructs (1) Week 11 College of Information Science and Engineering Ritsumeikan University Topics covered l Terms and concepts from Week 10 l Flow of control

More information

15-122: Principles of Imperative Computation (Section G)

15-122: Principles of Imperative Computation (Section G) 15-122: Principles of Imperative Computation (Section G) Document 2 Solutions 0. Contracts This lecture was mainly about contracts and ensuring correctness of code. Josh Zimmerman There are 4 types of

More information

Math Introduction to Advanced Mathematics

Math Introduction to Advanced Mathematics Math 215 - Introduction to Advanced Mathematics Number Theory Fall 2017 The following introductory guide to number theory is borrowed from Drew Shulman and is used in a couple of other Math 215 classes.

More information

CS Lecture 19: Loop invariants

CS Lecture 19: Loop invariants CS 1110 Lecture 19: Loop invariants Announcements Prelim 2 conflicts Today (April 2) is two weeks before the prelim, and the deadline for submitting prelim conflicts. Instructor travel This week and the

More information

Lecture Notes: Hoare Logic

Lecture Notes: Hoare Logic Lecture Notes: Hoare Logic 17-654/17-754: Analysis of Software Artifacts Jonathan Aldrich (jonathan.aldrich@cs.cmu.edu) Lecture 3 1 Hoare Logic The goal of Hoare logic is to provide a formal system for

More information

Problem Solving through Programming In C Prof. Anupam Basu Department of Computer Science & Engineering Indian Institute of Technology, Kharagpur

Problem Solving through Programming In C Prof. Anupam Basu Department of Computer Science & Engineering Indian Institute of Technology, Kharagpur Problem Solving through Programming In C Prof. Anupam Basu Department of Computer Science & Engineering Indian Institute of Technology, Kharagpur Lecture 15 Branching : IF ELSE Statement We are looking

More information

Computer Programming

Computer Programming Computer Programming Dr. Deepak B Phatak Dr. Supratik Chakraborty Department of Computer Science and Engineering Session: while and do while statements in C++ Dr. Deepak B. Phatak & Dr. Supratik Chakraborty,

More information

for (i=1; i<=100000; i++) { x = sqrt (y); // square root function cout << x+i << endl; }

for (i=1; i<=100000; i++) { x = sqrt (y); // square root function cout << x+i << endl; } Ex: The difference between Compiler and Interpreter The interpreter actually carries out the computations specified in the source program. In other words, the output of a compiler is a program, whereas

More information

Readability [Skrien 4.0] Programs must be written for people to read, and only incidentally for machines to execute.

Readability [Skrien 4.0] Programs must be written for people to read, and only incidentally for machines to execute. Readability [Skrien 4.0] Programs must be written for people to read, and only incidentally for machines to execute. Abelson & Sussman Use a good set of coding conventions, such as the ones given in the

More information

Iteration: Intro. Two types of loops: 1. Pretest Condition precedes body Iterates 0+ times. 2. Posttest Condition follows body Iterates 1+ times

Iteration: Intro. Two types of loops: 1. Pretest Condition precedes body Iterates 0+ times. 2. Posttest Condition follows body Iterates 1+ times Iteration: Intro Two types of loops: 1. Pretest Condition precedes body Iterates 0+ times 2. Posttest Condition follows body Iterates 1+ times 1 Iteration: While Loops Pretest loop Most general loop construct

More information

Software Architecture. Abstract Data Types

Software Architecture. Abstract Data Types Software Architecture Abstract Data Types Mathematical description An ADT is a mathematical specification Describes the properties and the behavior of instances of this type Doesn t describe implementation

More information

Mock exam 1. ETH Zurich. Date: 9./10. November 2009

Mock exam 1. ETH Zurich. Date: 9./10. November 2009 Mock exam 1 ETH Zurich Date: 9./10. November 2009 Name: Group: 1 Terminology (8 points) Put checkmarks in the checkboxes corresponding to the correct answers. Multiple correct answers are possible; there

More information

Lecture 4 Searching Arrays

Lecture 4 Searching Arrays Lecture 4 Searching Arrays 15-122: Principles of Imperative Computation (Spring 2018) Frank Pfenning One of the fundamental and recurring problems in computer science is to find elements in collections,

More information

Fachgebiet Softwaretechnik, Heinz Nixdorf Institut, Universität Paderborn. 4. Testing

Fachgebiet Softwaretechnik, Heinz Nixdorf Institut, Universität Paderborn. 4. Testing 4. vs. Model Checking (usually) means checking the correctness of source code Model Checking means verifying the properties of a model given in some formal (not program code) notation Attention: things

More information

In-Class Exercises. ETH Zurich. ETH students recently designed a special kind of oven for cooking potatoes. Here are some facts about such an oven:

In-Class Exercises. ETH Zurich. ETH students recently designed a special kind of oven for cooking potatoes. Here are some facts about such an oven: In-Class Exercises ETH Zurich 1 Contracts ETH students recently designed a special kind of oven for cooking potatoes. Here are some facts about such an oven: each oven is equipped with a door which is

More information

Overview of the Course. What is an Algorithm? .. Cal Poly CSC 349: Design and Analyis of Algorithms Alexander Dekhtyar..

Overview of the Course. What is an Algorithm? .. Cal Poly CSC 349: Design and Analyis of Algorithms Alexander Dekhtyar.. .. Cal Poly CSC 349: Design and Analyis of Algorithms Alexander Dekhtyar.. What is an Algorithm? Overview of the Course The textbook defines the notion of an algorithm as follows: An algorithm is any well-defined

More information

Syntax of Eiffel: a Brief Overview

Syntax of Eiffel: a Brief Overview Syntax of Eiffel: a Brief Overview EECS3311 A: Software Design Fall 2018 CHEN-WEI WANG Escape Sequences Escape sequences are special characters to be placed in your program text. In Java, an escape sequence

More information

Commands, and Queries, and Features. Syntax of Eiffel: a Brief Overview. Escape Sequences. Naming Conventions

Commands, and Queries, and Features. Syntax of Eiffel: a Brief Overview. Escape Sequences. Naming Conventions Commands, and Queries, and Features Syntax of Eiffel: a Brief Overview EECS3311 A: Software Design Fall 2018 CHEN-WEI WANG In a Java class: Attributes: Data Mutators: Methods that change attributes without

More information

CSE 120. Computer Science Principles

CSE 120. Computer Science Principles Adam Blank Lecture 17 Winter 2017 CSE 120 Computer Science Principles CSE 120: Computer Science Principles Proofs & Computation e w h e q 0 q 1 q 2 q 3 h,e w,e w,h w,h q garbage w,h,e CSE = Abstraction

More information

Algorithms (7A) Young Won Lim 4/10/17

Algorithms (7A) Young Won Lim 4/10/17 Algorithms (7A) Copyright (c) 2017 Young W. Lim. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version

More information

Einführung in die Programmierung Introduction to Programming

Einführung in die Programmierung Introduction to Programming Chair of Software Engineering Einführung in die Programmierung Introduction to Programming Prof. Dr. Bertrand Meyer Lecture 12: More on references and the dynamic model Purpose of this lecture Few really

More information

Loops. Repeat after me

Loops. Repeat after me Loops Repeat after me 1 Loops A loop is a control structure in which a statement or set of statements execute repeatedly How many times the statements repeat is determined by the value of a control variable,

More information

Statement level control structures

Statement level control structures 1 Statement level control structures CS 315 Programming Languages Pinar Duygulu Bilkent University Control Statements: Evolution 2 FORTRAN I control statements were based directly on IBM 704 hardware Much

More information

2.2 Syntax Definition

2.2 Syntax Definition 42 CHAPTER 2. A SIMPLE SYNTAX-DIRECTED TRANSLATOR sequence of "three-address" instructions; a more complete example appears in Fig. 2.2. This form of intermediate code takes its name from instructions

More information

Einführung in die Programmierung Introduction to Programming

Einführung in die Programmierung Introduction to Programming Chair of Software Engineering Einführung in die Programmierung Introduction to Programming Prof. Dr. Bertrand Meyer Lecture 18: Undo/Redo Further reference Chapter 21 of Bertrand Meyer, Object-Oriented

More information

STUDENT LESSON A12 Iterations

STUDENT LESSON A12 Iterations STUDENT LESSON A12 Iterations Java Curriculum for AP Computer Science, Student Lesson A12 1 STUDENT LESSON A12 Iterations INTRODUCTION: Solving problems on a computer very often requires a repetition of

More information

Lecture Notes on Liveness Analysis

Lecture Notes on Liveness Analysis Lecture Notes on Liveness Analysis 15-411: Compiler Design Frank Pfenning André Platzer Lecture 4 1 Introduction We will see different kinds of program analyses in the course, most of them for the purpose

More information

Syntactic Analysis. CS345H: Programming Languages. Lecture 3: Lexical Analysis. Outline. Lexical Analysis. What is a Token? Tokens

Syntactic Analysis. CS345H: Programming Languages. Lecture 3: Lexical Analysis. Outline. Lexical Analysis. What is a Token? Tokens Syntactic Analysis CS45H: Programming Languages Lecture : Lexical Analysis Thomas Dillig Main Question: How to give structure to strings Analogy: Understanding an English sentence First, we separate a

More information

CS 512, Spring 2017: Take-Home End-of-Term Examination

CS 512, Spring 2017: Take-Home End-of-Term Examination CS 512, Spring 2017: Take-Home End-of-Term Examination Out: Tuesday, 9 May 2017, 12:00 noon Due: Wednesday, 10 May 2017, by 11:59 am Turn in your solutions electronically, as a single PDF file, by placing

More information

Handout 9: Imperative Programs and State

Handout 9: Imperative Programs and State 06-02552 Princ. of Progr. Languages (and Extended ) The University of Birmingham Spring Semester 2016-17 School of Computer Science c Uday Reddy2016-17 Handout 9: Imperative Programs and State Imperative

More information

Information Science 1

Information Science 1 Topics covered Information Science 1 Fundamental Programming Constructs (1) Week 11 Terms and concepts from Week 10 Flow of control and conditional statements Selection structures if statement switch statement

More information

MITOCW watch?v=kz7jjltq9r4

MITOCW watch?v=kz7jjltq9r4 MITOCW watch?v=kz7jjltq9r4 PROFESSOR: We're going to look at the most fundamental of all mathematical data types, namely sets, and let's begin with the definitions. So informally, a set is a collection

More information

Chapter 4: Programming with MATLAB

Chapter 4: Programming with MATLAB Chapter 4: Programming with MATLAB Topics Covered: Programming Overview Relational Operators and Logical Variables Logical Operators and Functions Conditional Statements For Loops While Loops Debugging

More information

Static program checking and verification

Static program checking and verification Chair of Software Engineering Software Engineering Prof. Dr. Bertrand Meyer March 2007 June 2007 Slides: Based on KSE06 With kind permission of Peter Müller Static program checking and verification Correctness

More information

Quiz Determine the output of the following program:

Quiz Determine the output of the following program: Quiz Determine the output of the following program: 1 Structured Programming Using C++ Lecture 4 : Loops & Iterations Dr. Amal Khalifa Dr. Amal Khalifa - Spring 2012 1 Lecture Contents: Loops While do-while

More information

Lecture 1 Contracts. 1 A Mysterious Program : Principles of Imperative Computation (Spring 2018) Frank Pfenning

Lecture 1 Contracts. 1 A Mysterious Program : Principles of Imperative Computation (Spring 2018) Frank Pfenning Lecture 1 Contracts 15-122: Principles of Imperative Computation (Spring 2018) Frank Pfenning In these notes we review contracts, which we use to collectively denote function contracts, loop invariants,

More information

In-Class Exercises. ETH Zurich. November

In-Class Exercises. ETH Zurich. November In-Class Exercises ETH Zurich November 28 2012 1 Contracts ETH students recently designed a special kind of oven for cooking potatoes. Here are some facts about such an oven: each oven is equipped with

More information

EXAMINATIONS 2009 END-OF-YEAR. COMP 202 / SWEN 202 Formal Methods of Computer Science / Formal Foundations of Software Engineering

EXAMINATIONS 2009 END-OF-YEAR. COMP 202 / SWEN 202 Formal Methods of Computer Science / Formal Foundations of Software Engineering T E W H A R E W Ā N A N G A O T E Ū P O K O O T E I K A A M Ā U I VUW V I C T O R I A UNIVERSITY OF WELLINGTON EXAMINATIONS 2009 END-OF-YEAR COMP 202 / SWEN 202 Formal Methods of Computer Science / Formal

More information

Fondamenti della Programmazione: Metodi Evoluti. Lezione 5: Invariants and Logic

Fondamenti della Programmazione: Metodi Evoluti. Lezione 5: Invariants and Logic Fondamenti della Programmazione: Metodi Evoluti Prof. Enrico Nardelli Lezione 5: Invariants and Logic versione originale: http://touch.ethz.ch Reminder: contracts Associated with an individual feature:

More information

Last Time. University of British Columbia CPSC 111, Intro to Computation Alan J. Hu. Readings

Last Time. University of British Columbia CPSC 111, Intro to Computation Alan J. Hu. Readings University of British Columbia CPSC 111, Intro to Computation Alan J. Hu Writing a Simple Java Program Intro to Variables Readings Your textbook is Big Java (3rd Ed). This Week s Reading: Ch 2.1-2.5, Ch

More information

Mosig M1 - PLSCD Written exam

Mosig M1 - PLSCD Written exam Mosig M1 - PLSCD 0809 - Written exam 1 Exercise I : Operational semantics - a debugger In this exercise we consider program execution with the help of a debugger. This execution will be defined on an intermediate

More information

Loops! Loops! Loops! Lecture 5 COP 3014 Fall September 25, 2017

Loops! Loops! Loops! Lecture 5 COP 3014 Fall September 25, 2017 Loops! Loops! Loops! Lecture 5 COP 3014 Fall 2017 September 25, 2017 Repetition Statements Repetition statements are called loops, and are used to repeat the same code mulitple times in succession. The

More information

Lecture Transcript While and Do While Statements in C++

Lecture Transcript While and Do While Statements in C++ Lecture Transcript While and Do While Statements in C++ Hello and welcome back. In this lecture we are going to look at the while and do...while iteration statements in C++. Here is a quick recap of some

More information

Motivating Examples (1.1) Selections. Motivating Examples (1.2) Learning Outcomes. EECS1022: Programming for Mobile Computing Winter 2018

Motivating Examples (1.1) Selections. Motivating Examples (1.2) Learning Outcomes. EECS1022: Programming for Mobile Computing Winter 2018 Motivating Examples (1.1) Selections EECS1022: Programming for Mobile Computing Winter 2018 CHEN-WEI WANG 1 import java.util.scanner; 2 public class ComputeArea { 3 public static void main(string[] args)

More information

1 Elementary number theory

1 Elementary number theory Math 215 - Introduction to Advanced Mathematics Spring 2019 1 Elementary number theory We assume the existence of the natural numbers and the integers N = {1, 2, 3,...} Z = {..., 3, 2, 1, 0, 1, 2, 3,...},

More information

Reasoning About Imperative Programs. COS 441 Slides 10

Reasoning About Imperative Programs. COS 441 Slides 10 Reasoning About Imperative Programs COS 441 Slides 10 The last few weeks Agenda reasoning about functional programming It s very simple and very uniform: substitution of equal expressions for equal expressions

More information

CSCD43: Database Systems Technology. Lecture 4

CSCD43: Database Systems Technology. Lecture 4 CSCD43: Database Systems Technology Lecture 4 Wael Aboulsaadat Acknowledgment: these slides are based on Prof. Garcia-Molina & Prof. Ullman slides accompanying the course s textbook. Steps in Database

More information