Spring 2005, Gülcihan Özdemir Dağ Lecture 3, Page 1 BIL104E: Introduction to Scientific and...

26
Spring 2005, Gülcihan Özdemir Dağ Lecture 3, Page 1 BIL104E: Introduction to Scientific and Engineering Computing, Spring 2005. Lecture 3 Outline 3.1 Introduction 3.2 Algorithms 3.3 Pseudocode 3.4 Control Structures 3.5 Decision Making: Equality and Relational Operators 3.6 The if Selection Structure 3.7 The if/else Selection Structure 3.8 Nested control structures 3.9 Switch-Case (and break) 3.10 Assignment Operators 3.11 Increment and Decrement Operators

Transcript of Spring 2005, Gülcihan Özdemir Dağ Lecture 3, Page 1 BIL104E: Introduction to Scientific and...

Spring 2005, Gülcihan Özdemir Dağ Lecture 3, Page 1

BIL104E: Introduction to Scientific and Engineering Computing, Spring 2005.

Lecture 3Outline

3.1 Introduction3.2 Algorithms3.3 Pseudocode3.4 Control Structures3.5 Decision Making: Equality and Relational Operators3.6 The if Selection Structure 3.7 The if/else Selection Structure 3.8 Nested control structures3.9 Switch-Case (and break)3.10 Assignment Operators3.11 Increment and Decrement Operators

Spring 2005, Gülcihan Özdemir Dağ Lecture 3, Page 2

3.1 Introduction

• Before writing a program:– Have a thorough understanding of the problem

– Carefully plan an approach for solving it

• While writing a program: – Know what “building blocks” are available

– Use good programming principles

Spring 2005, Gülcihan Özdemir Dağ Lecture 3, Page 3

3.2 Algorithms

• Computing problems – All can be solved by executing a series of actions in a

specific order

• Algorithm: procedure in terms of– Actions to be executed

– The order in which these actions are to be executed

• Program control – Specify order in which statements are to executed

Spring 2005, Gülcihan Özdemir Dağ Lecture 3, Page 4

3.3 Pseudocode

• Pseudocode– Artificial, informal language that helps us develop

algorithms

– Similar to everyday English

– Not actually executed on computers

– Helps us “think out” a program before writing it • Easy to convert into a corresponding C program

• Consists only of executable statements

Spring 2005, Gülcihan Özdemir Dağ Lecture 3, Page 5

3.4 Control Structures

• Sequential execution – Statements executed one after the other in the order written

• Transfer of control– When the next statement executed is not the next one in

sequence

• Bohm and Jacopini– All programs written in terms of 3 control structures

• Sequence structures: Built into C. Programs executed sequentially by default

• Selection structures: C has three types: if, if/else, and switch (this week’s materail)

• Repetition structures: C has three types: while, do/while and for (next week’s materail)

Spring 2005, Gülcihan Özdemir Dağ Lecture 3, Page 6

3.4 Control Structures

• Flowchart – Graphical representation of an algorithm

– Drawn using certain special-purpose symbols connected by arrows called flowlines

– Rectangle symbol (action symbol):• Indicates any type of action

– Oval symbol:• Indicates the beginning or end of a program or a section of code

• Single-entry/single-exit control structures – Connect exit point of one control structure to entry point of

the next (control-structure stacking)

– Makes programs easy to build

Spring 2005, Gülcihan Özdemir Dağ Lecture 3, Page 7

3.5 Decision Making: Equality and Relational Operators

• Executable statements– Perform actions (calculations, input/output of data)

– Perform decisions• May want to print "pass" or "fail" given the value of a

test grade

• if control structure– If a condition is true, then the body of the if statement

executed• 0 is false, non-zero is true

– Control always resumes after the if structure

Spring 2005, Gülcihan Özdemir Dağ Lecture 3, Page 8

3.5 Decision Making: Equality and Relational Operators

Standard algebraic equality operator or relational operator

C equality or relational operator

Example of C condition

Meaning of C condition

Equality Operators = == x == y x is equal to y

not = != x != y x is not equal to y Relational Operators > > x > y x is greater than y

< < x < y x is less than y

>= >= x >= y x is greater than or equal to y

<= <= x <= y x is less than or equal to y

Fall 2003, Gülcihan Özdemir Dağ

OutlineOutline

Lecture 3, Page 9

1. Declare variables

2. Input

2.1 if statements

3. Print

1 /* Fig. 2.13: fig02_13.c

2 Using if statements, relational

3 operators, and equality operators */

4 #include <stdio.h>

5

6 int main()

7 {

8 int num1, num2;

9

10 printf( "Enter two integers, and I will tell you\n" );

11 printf( "the relationships they satisfy: " );

12 scanf( "%d", &num1, &num2 ); /* read two integers */

13

14 if ( num1 == num2 )

15 printf( "%d is equal to %d\n", num1, num2 );

16

17 if ( num1 != num2 )

18 printf( "%d is not equal to %d\n", num1, num2 );

19

20 if ( num1 < num2 )

21 printf( "%d is less than %d\n", num1, num2 );

22

23 if ( num1 > num2 )

24 printf( "%d is greater than %d\n", num1, num2 );

25

26 if ( num1 <= num2 )

27 printf( "%d is less than or equal to %d\n",

28 num1, num2 );

Fall 2003, Gülcihan Özdemir Dağ

OutlineOutline

Lecture 3, Page 10

3.1 Exit main

Program Output

29

30 if ( num1 >= num2 )

31 printf( "%d is greater than or equal to %d\n",

32 num1, num2 );

33

34 return 0; /* indicate program ended successfully */

35 }

Enter two integers, and I will tell you the relationships they satisfy: 3 73 is not equal to 73 is less than 73 is less than or equal to 7

Enter two integers, and I will tell you the relationships they satisfy: 22 1222 is not equal to 1222 is greater than 1222 is greater than or equal to 12

Spring 2005, Gülcihan Özdemir Dağ Lecture 3, Page 11

3.6 The if Selection Structure

• Selection structure: – Used to choose among alternative courses of action

– Pseudocode:If student’s grade is greater than or equal to 60

Print “Passed”

• If condition true – Print statement executed and program goes on to next

statement

– If false, print statement is ignored and the program goes onto the next statement

– Indenting makes programs easier to read• C ignores whitespace characters

Spring 2005, Gülcihan Özdemir Dağ Lecture 3, Page 12

3.6 The if Selection Structure

• Pseudocode statement in C:if ( grade >= 60 ) printf( "Passed\n" );

– C code corresponds closely to the pseudocode

• Diamond symbol (decision symbol)– Indicates decision is to be made

– Contains an expression that can be true or false– Test the condition, follow appropriate path

Spring 2005, Gülcihan Özdemir Dağ Lecture 3, Page 13

3.6 The if Selection Structure

• if structure is a single-entry/single-exit structure

true

false

grade >= 60

print “Passed” 

A decision can be made on any expression.

zero - false

nonzero - true

Example:

3 - 4 is true

Spring 2005, Gülcihan Özdemir Dağ Lecture 3, Page 14

3.7 The if/else Selection Structure

• if– Only performs an action if the condition is true

• if/else– Specifies an action to be performed both when the condition

is true and when it is false

• Psuedocode:If student’s grade is greater than or equal to 60

Print “Passed”

elsePrint “Failed”

– Note spacing/indentation conventions

 

Spring 2005, Gülcihan Özdemir Dağ Lecture 3, Page 15

3.7 The if/else Selection Structure

• C code:if ( grade >= 60 )

printf( "Passed\n");

else

printf( "Failed\n");

• Ternary conditional operator (?:) – Takes three arguments (condition, value if true, value if false)

– Our pseudocode could be written:printf( "%s\n", grade >= 60 ? "Passed" : "Failed" );

– Or it could have been written:grade >= 60 ? printf( “Passed\n” ) : printf( “Failed\n” );

Spring 2005, Gülcihan Özdemir Dağ Lecture 3, Page 16

3.7 The if/else Selection Structure

• Flow chart of the if/else selection structure

• Nested if/else structures – Test for multiple cases by placing if/else selection

structures inside if/else selection structures

– Once condition is met, rest of statements skipped

– Deep indentation usually not used in practice

truefalse

print “Failed” print “Passed”

grade >= 60

Spring 2005, Gülcihan Özdemir Dağ Lecture 3, Page 17

3.7 The if/else Selection Structure

– Pseudocode for a nested if/else structure

If student’s grade is greater than or equal to 90Print “A”

else If student’s grade is greater than or equal to 80 Print “B”else If student’s grade is greater than or equal to 70 Print “C” else If student’s grade is greater than or equal to 60

Print “D” else Print “F”

Spring 2005, Gülcihan Özdemir Dağ Lecture 3, Page 18

3.7 The if/else Selection Structure

• Compound statement: – Set of statements within a pair of braces

– Example:if ( grade >= 60 )

printf( "Passed.\n" );

else {

printf( "Failed.\n" );

printf( "You must take this course again.\n" );}

– Without the braces, the statementprintf( "You must take this course again.\n" );

would be executed automatically

Spring 2005, Gülcihan Özdemir Dağ Lecture 3, Page 19

3.7 The if/else Selection Structure

• Block:– Compound statements with declarations

• Syntax errors– Caught by compiler

• Logic errors: – Have their effect at execution time

– Non-fatal: program runs, but has incorrect output

– Fatal: program exits prematurely

Spring 2005, Gülcihan Özdemir Dağ Lecture 3, Page 20

3.8 Nested control structures1: /* 10L03.c Using nested if statements */2: #include <stdio.h>3:4: main() {5: int i;6: printf(“Enter an integer number \n”);7: scanf(“%d”,&i);9: if (i > 0)10: if (i%2 == 0)11: printf("%d is an even number.\n", i);12: else13: printf("%d is an odd number.\n", i);14: else if (i == 0)15: printf("The number is zero.\n");16: else17: printf("Negative number: %d\n", i);19: return 0;20: }

Spring 2005, Gülcihan Özdemir Dağ Lecture 3, Page 21

3.9 Switch-Case

• The nested if statements will become very complex if there are many decisions that need to be made, however. Sometimes, the programmer will have problems following the complex if statements.

• Fortunately there is another statement in C, the switch statement, that you can use to make unlimited decisions or choices based on the value of a conditional expression and specified cases.

• The general form of the switch statement is

switch (expression) { case expression1: statement1; case expression2: statement2;

. . . default: statement-default; }

Spring 2005, Gülcihan Özdemir Dağ Lecture 3, Page 22

Example: Using the switch statement

#include <stdio.h>

main(){int day;printf("Please enter a single digit for a day\n");printf("(within the range of 1 to 3):\n");day = getchar();switch (day){

case `1':printf("Day 1\n");

case `2':printf("Day 2\n");

case `3':printf("Day 3\n");

default:;

}return 0;

} /* End of main */

Spring 2005, Gülcihan Özdemir Dağ Lecture 3, Page 23

Use the switch-break statement#include <stdio.h>main(){ int day; printf("Please enter a single digit for a day\n"); printf("(within the range of 1 to 7):\n"); day = getchar(); switch (day){ case '1': printf("Day 1 is Sunday.\n"); break; case '2': printf("Day 2 is Monday.\n"); break; case '3': printf("Day 3 is Tuesday.\n"); break; case '4': printf("Day 4 is Wednesday.\n"); break; case '5': printf("Day 5 is Thursday.\n"); break; case '6': printf("Day 6 is Friday.\n"); break; case '7': printf("Day 7 is Saturday.\n"); break; default: printf("The digit is not within the range of 1 to 7.\n");

break; } return 0;}

Spring 2005, Gülcihan Özdemir Dağ Lecture 3, Page 24

3.10Assignment Operators

• Assignment operators abbreviate assignment expressions

c = c + 3;

can be abbreviated as c += 3; using the addition assignment operator

• Statements of the formvariable = variable operator expression;

can be rewritten asvariable operator= expression;

• Examples of other assignment operators:d -= 4 (d = d - 4)e *= 5 (e = e * 5)f /= 3 (f = f / 3)g %= 9 (g = g % 9)

Spring 2005, Gülcihan Özdemir Dağ Lecture 3, Page 25

3.11Increment and Decrement Operators

• Increment operator (++)– Can be used instead of c+=1

• Decrement operator (--)– Can be used instead of c-=1

• Preincrement– Operator is used before the variable (++c or --c)

– Variable is changed before the expression it is in is evaluated

• Postincrement– Operator is used after the variable (c++ or c--)

– Expression executes before the variable is changed

Spring 2005, Gülcihan Özdemir Dağ Lecture 3, Page 26

3.11Increment and Decrement Operators

• If c equals 5, then printf( "%d", ++c );

– Prints 6 printf( "%d", c++ );

– Prints 5 – In either case, c now has the value of 6

• When variable not in an expression– Pre-incrementing and post-incrementing have the same effect

++c;

printf( “%d”, c );

– Has the same effect asc++;

printf( “%d”, c );