Presentation is loading. Please wait.

Presentation is loading. Please wait.

CMP 131 Introduction to Computer Programming Violetta Cavalli-Sforza Week 6, Lecture 1 (Monday)

Similar presentations


Presentation on theme: "CMP 131 Introduction to Computer Programming Violetta Cavalli-Sforza Week 6, Lecture 1 (Monday)"— Presentation transcript:

1 CMP 131 Introduction to Computer Programming Violetta Cavalli-Sforza Week 6, Lecture 1 (Monday)

2 TODAY Flow of control and flow charts Conditional statements Boolean expressions Go over Homework #2 programming part

3 TOMORROW (Lab) Exercises on the computer with I/O and simple conditional statements. Review of topics for Midterm Exam

4 Syntax Graphs, Flowcharts, & Structure Charts Syntax graph –To define the language syntax Structure chart –To show the relationship between program modules and the data transfer between the modules (Example)Example CONST = Identifier ; value Compute mean of 3 numbers Read 3 numbers Compute mean of inputs Display mean to screen

5 Flowchart –A form of visual control-flow specification employing arrows and balloons of various shapes. –Shows flow of actions (algorithm) in a program

6 How the locus (location) of execution changes as the program executes. Example. Let Height = 3 and Width = 5 FOR I := 1 to Height BEGIN FOR J := 1 TO Width DO write(‘*’); writeln; END What is Flow of Control?

7 007… 008I := 1 009IF I > 3 GOTO 018 010J := 1 011IF J > 5 GOTO 015 012write(‘*’) 013J := J + 1 014GOTO 011 015writeln 016I := I + 1 017GOTO 009 018 … DATA MEMORY I = ? J = ?

8 007… 008I := 1 009IF I > 3 GOTO 018 010J := 1 011IF J > 5 GOTO 015 012write(‘*’) 013J := J + 1 014GOTO 011 015writeln 016I := I + 1 017GOTO 009 018 … DATA MEMORY I = 1 J = ?

9 007… 008I := 1 009IF I > 3 GOTO 018 010J := 1 011IF J > 5 GOTO 015 012write(‘*’) 013J := J + 1 014GOTO 011 015writeln 016I := I + 1 017GOTO 009 018 … DATA MEMORY I = 1 J = ?

10 007… 008I := 1 009IF I > 3 GOTO 018 010J := 1 011IF J > 5 GOTO 015 012write(‘*’) 013J := J + 1 014GOTO 011 015writeln 016I := I + 1 017GOTO 009 018 … DATA MEMORY I = 1 J = 1

11 007… 008I := 1 009IF I > 3 GOTO 018 010J := 1 011IF J > 5 GOTO 015 012write(‘*’) 013J := J + 1 014GOTO 011 015writeln 016I := I + 1 017GOTO 009 018 … DATA MEMORY I = 1 J = 1

12 007… 008I := 1 009IF I > 3 GOTO 018 010J := 1 011IF J > 5 GOTO 015 012write(‘*’) 013J := J + 1 014GOTO 011 015writeln 016I := I + 1 017GOTO 009 018 … DATA MEMORY I = 1 J = 1

13 007… 008I := 1 009IF I > 3 GOTO 018 010J := 1 011IF J > 5 GOTO 015 012write(‘*’) 013J := J + 1 014GOTO 011 015writeln 016I := I + 1 017GOTO 009 018 … DATA MEMORY I = 1 J = 2

14 007… 008I := 1 009IF I > 3 GOTO 018 010J := 1 011IF J > 5 GOTO 015 012write(‘*’) 013J := J + 1 014GOTO 011 015writeln 016I := I + 1 017GOTO 009 018 … DATA MEMORY I = 1 J = 2

15 007… 008I := 1 009IF I > 3 GOTO 018 010J := 1 011IF J > 5 GOTO 015 012write(‘*’) 013J := J + 1 014GOTO 011 015writeln 016I := I + 1 017GOTO 009 018 … DATA MEMORY I = 1 J = 2

16 A few steps later …

17 007… 008I := 1 009IF I > 3 GOTO 018 010J := 1 011IF J > 5 GOTO 015 012write(‘*’) 013J := J + 1 014GOTO 011 015writeln 016I := I + 1 017GOTO 009 018 … DATA MEMORY I = 1 J = 6

18 007… 008I := 1 009IF I > 3 GOTO 018 010J := 1 011IF J > 5 GOTO 015 012write(‘*’) 013J := J + 1 014GOTO 011 015writeln 016I := I + 1 017GOTO 009 018 … DATA MEMORY I = 1 J = 6

19 007… 008I := 1 009IF I > 3 GOTO 018 010J := 1 011IF J > 5 GOTO 015 012write(‘*’) 013J := J + 1 014GOTO 011 015writeln 016I := I + 1 017GOTO 009 018 … DATA MEMORY I = 1 J = 6

20 007… 008I := 1 009IF I > 3 GOTO 018 010J := 1 011IF J > 5 GOTO 015 012write(‘*’) 013J := J + 1 014GOTO 011 015writeln 016I := I + 1 017GOTO 009 018 … DATA MEMORY I = 2 J = 6

21 007… 008I := 1 009IF I > 3 GOTO 018 010J := 1 011IF J > 5 GOTO 015 012write(‘*’) 013J := J + 1 014GOTO 011 015writeln 016I := I + 1 017GOTO 009 018 … DATA MEMORY I = 2 J = 6

22 007… 008I := 1 009IF I > 3 GOTO 018 010J := 1 011IF J > 5 GOTO 015 012write(‘*’) 013J := J + 1 014GOTO 011 015writeln 016I := I + 1 017GOTO 009 018 … DATA MEMORY I = 2 J = 6

23 007… 008I := 1 009IF I > 3 GOTO 018 010J := 1 011IF J > 5 GOTO 015 012write(‘*’) 013J := J + 1 014GOTO 011 015writeln 016I := I + 1 017GOTO 009 018 … DATA MEMORY I = 2 J = 1

24 007… 008I := 1 009IF I > 3 GOTO 018 010J := 1 011IF J > 5 GOTO 015 012write(‘*’) 013J := J + 1 014GOTO 011 015writeln 016I := I + 1 017GOTO 009 018 … DATA MEMORY I = 2 J = 1

25 A few steps later …

26 007… 008I := 1 009IF I > 3 GOTO 018 010J := 1 011IF J > 5 GOTO 015 012write(‘*’) 013J := J + 1 014GOTO 011 015writeln 016I := I + 1 017GOTO 009 018 … DATA MEMORY I = 3 J = 6

27 007… 008I := 1 009IF I > 3 GOTO 018 010J := 1 011IF J > 5 GOTO 015 012write(‘*’) 013J := J + 1 014GOTO 011 015writeln 016I := I + 1 017GOTO 009 018 … DATA MEMORY I = 4 J = 6

28 007… 008I := 1 009IF I > 3 GOTO 018 010J := 1 011IF J > 5 GOTO 015 012write(‘*’) 013J := J + 1 014GOTO 011 015writeln 016I := I + 1 017GOTO 009 018 … DATA MEMORY I = 4 J = 6

29 007… 008I := 1 009IF I > 3 GOTO 018 010J := 1 011IF J > 5 GOTO 015 012write(‘*’) 013J := J + 1 014GOTO 011 015writeln 016I := I + 1 017GOTO 009 018 … DATA MEMORY I = 4 J = 6

30 Flow of Control You can show it by animation for the simplest programs or You can show it much more succinctly with Flow Charts A graphical formalism for showing how control flows through a program Standard Flowchart Symbols (later) from http://www.wiley.com/legacy/college/busin/ icmis/oakman/outline/chap05/slides/symbo ls.htm

31 Flowchart Symbols

32 Rectangle Flow Chart I := 1 write(‘*’)J := 1 J := J+1 I := I+1 I > 3 J > 5 writeln no yes no yes BEGIN END

33 Yes/No Choice The logic: IF some condition or test is TRUE THEN perform some action [ ELSE do nothing ] Examples: –If the car is running out of gas, put in gasoline. –If you are failing your class and you cannot drop it, study more. –If someone says hello and you don’t want to seem impolite, say hello back.

34 Yes/No Choice: The IF-THEN Statement Syntax: IF THEN Syntax graph: Flowchart: IF condition THEN statement statement 1 condition yes no statement 3statement 2

35 Either/Or Choice The logic: IF some condition or test is TRUE THEN perform some action ELSE perform a different action Examples: –If the weather is hot wear light clothes, else wear warm clothes. –If a number is odd increment OddCount else increment EvenCount –If a noun starts with a capital letter categorize it as a proper noun (name) else as a common noun.

36 Either/Or Choice : The IF-THEN-ELSE Statement Syntax: IF THEN ELSE Syntax graph: Flowchart: IF condition THEN statement ELSE statement statement 1 condition yes statement 4 statement 2 no statement 3

37 What is ? A single statement: –An input or output statement –An assignment –Another IF … THEN … ELSE statement –A looping statement (FOR, WHILE, REPEAT) A compound statement: BEGIN ; ; …. END

38 What is ? A boolean expression Named after the mathematician George Boole who invented logic. Boolean expressions –Evaluate to TRUE or FALSE –Include different types of operands different types of operators

39 Boolean Expressions Boolean constants –TRUE –FALSE Boolean variables –Declared as type “boolean” CONST Debug = TRUE; { or FALSE } VAR SaveDebug : BOOLEAN;

40 Relational expressions: Arithmetic, character, or strings acted upon by relational operators: –Relational operators are: <=less than or equal to <less than >=greater than or equal to >greater than =equal <>not equal –Relational operators compare two compatible values Two characters Two strings Real and integer Two Booleans –Relational operators return a Boolean value

41 Examples: new < old ‘B’ < ‘A’ value <> -99999 3.0 < 4 MiddleInitial = ‘L’ 1.0 = 1.0/ 3.0 * 3.0 { Implementation dependent}

42 Logical expressions: Boolean values acted upon by logical operators –Logical operators are: AND OR NOT –Logical operators take Boolean operands and return Boolean values. –Examples: IF NeedMoney AND (NOT HaveMoneyInHand) AND HAVE MoneyInBank THEN {Go get money at the bank} ELSE {Ask parents for money} IF Value MaxValue THEN writeln (‘Value ‘, Value, ‘ is out of range.’)

43 Truth Tables for Boolean Operators Op1Op2Op1 AND Op2Op1 OR Op2NOT Op1 truetruetruetruefalse truefalsefalsetruefalse falsetruefalsetruetrue falsefalsefalsefalsetrue binary operators unary operator

44 Operator Precedence: Arithmetic, Relational and Logical OperatorPrecedence ( )parenthesesHighest (evaluated first) - + NOT (unary operators) * / DIV MOD AND + - OR >= > Lowest (evaluated last)

45 (4.2 >= 5.0) AND (8 = (3 + 5)) (4.2 >= 5.0) OR (8 = (3 + 5)) writeln('Value of (-2 = 10) is : ', (-2 = 10) ); writeln('Value of (-2 = 10) is : ', (-2 = 10) ); writeln('Value of (3 > 5) AND (14.1 = 0.0) is : ', (3 > 5) AND (14.1 = 0.0) ); writeln('Value of (3 > 5) OR (14.1 = 0.0) is : ', (3 > 5) OR (14.1 = 0.0) ); writeln('Value of NOT (18 = 10 + 8) is : ', NOT (18 = 10 + 8) ); writeln('Value of NOT (-4 > 0) is : ', NOT (-4 > 0) ); writeln('Value of ''a'' < ''b'' is : ', 'a' < 'b' ); writeln('Value of ''a'' < ''A'' is : ', 'a' < 'A' );

46 Summary of Operations on Boolean Values Logical operations (AND, OR, NOT) –Relational operators act on non-Boolean values but return Boolean values Assignment VAR Debug, SaveDebug : BOOLEAN; Debug := TRUE; SaveDebug := Debug; {Save the value of Debug} Output (in Turbo Pascal) writeln (‘The value of Debug is ‘, Debug); (Not Input – can’t read/readln a Boolean value)

47 Boolean expressions Appear primarily in control structures Used to determine the sequence in which Pascal statement are executed. Boolean variables are often called Boolean ‘flags’ : var Debug, SaveDebug : Boolean; … BEGIN … SaveDebug := Debug; Debug := TRUE; IF Debug THEN {print out the value of several variables} Debug := SaveDebug;... END

48 Example Expressions See program BOOLEXPR.PAS

49 Go Over Homework #2, Programming Part

50 Exercises 1.5, #13 Write a complete program that produces the following table: WIDTH LENGTH AREA 4 2 8 21 5 105

51 Task Decomposition (1) Write table header: WIDTH LENGTH AREA Write table contents: 4 2 8 21 5 105 Simplest code writeln(‘WIDTH LENGTH AREA’); writeln(‘ 4 2 8’); writeln(‘ 21 5 105’);

52 Using formatting Assume table header starts in first column 1: Write header as –WIDTH, 8 spaces, LENGTH, 8 spaces, AREA Write columns of numbers as –First number fits in field of width 3 –Second number fits in field 2+8+4 = 14 –Third column fits in field of 2+8+4 = 14 Code will be writeln(‘WIDTH’,‘ ’:8,‘LENGTH’,‘ ’:8,‘AREA’); writeln(4:3,2:14,8:14); writeln(21:3,5:14,105:14);

53 Exercises 1.5, #8 Assume the hourly wages of five students are: 3.65, 4.10, 2.89, 5.00, 4.50. Write a program that produces the following output, where the “E” in Employees is in column 20.

54 Desired Output 12345678901234567890123456789012345678901234 ------------------------- Employees Hourly Wage ------------------------- 1 $ 3.65 2 $ 4.10 3 $ 2.89 4 $ 5.00 5 $ 4.50 -------------------------

55 Task Decomposition (1) Write table header: ------------------------- Employees Hourly Wage ------------------------- Write table contents: 1 $ 3.65 …. Write table footer: -------------------------

56 Task Decomposition (2) Write table header: –Write line starting at column 20 –Write column headings starting at column 20 –Write line starting at column 20 ------------------------- Employees Hourly Wage ------------------------- Write table contents: –Write 5 lines each with: Employee number starting at column 23 Employee wage starting at column 36 1 $ 3.65 …. Write table footer: –Write line starting at column 20 -------------------------

57 Task Decomposition (2) Write table header: –Write line starting at column 20 –Write column headings starting at column 20 –Write line starting at column 20 ------------------------- Employees Hourly Wage ------------------------- Write table contents: –Write 5 lines each with: Employee number starting at column 23 Employee wage starting at column 36 1 $ 3.65 …. Write table footer: –Write line starting at column 20 -------------------------

58 Task Decomposition (3) Write table header: –Write line starting at column 20 –Write column headings starting at column 20 –Write line starting at column 20 ------------------------- Employees Hourly Wage ------------------------- Pascal code: –CONST Line = ‘-------------------------’ –BEGIN writeln(‘ ’:19,Line); writeln(‘ ’:19,‘Employee’,‘ ’:5,‘Hourly Wage’); writeln(‘ ’:19,Line); … END.

59 Task Decomposition (4) Write table contents: –Write 5 lines each with: Employee number starting at column 23 Employee wage starting at column 36 1 $ 3.65 …. Pascal code: –BEGIN … writeln(1:23,‘$’:13,3.65:5:2); writeln(2:23,‘$’:13,4.10:5:2); writeln(3:23,‘$’:13,2.89:5:2); writeln(4:23,‘$’:13,5.00:5:2); writeln(5:23,‘$’:13,4.50:5:2); … END.

60 Task Decomposition (5) Write table footer: –Write line starting at column 20 ------------------------- Pascal code: –CONST Line = ‘-------------------------’ –BEGIN... writeln(‘ ’:19,Line); END.


Download ppt "CMP 131 Introduction to Computer Programming Violetta Cavalli-Sforza Week 6, Lecture 1 (Monday)"

Similar presentations


Ads by Google