1、Click to edit Master title style,Click to edit Master text styles,Second level,Third level,Fourth level,Fifth level,*,国外C语言程序设计英文lecture,*,国外C语言程序设计英文lecture,Lecture 3:Outline,Program Looping Kochan chap.5,The,for,Statement,Relational Operators,Nested,for,Loops,Increment Operator,Program Input,for,L
2、oop Variants,The,while,Statement,The,do,Statement,The,break,Statement,The,continue,Statement,2,国外C语言程序设计英文lecture,Executing a program,Program=list of statements,Entrypoint,:the point where the execution starts,Control flow,:the order in which the individual statements are executed,Statement1,Stateme
3、nt2,Statement3,Statement4,Statement5,Statement6,Statement7,Statement8,3,国外C语言程序设计英文lecture,Structure of a C program,#include,int main(void),int value1,value2,sum;,value1=50;,value2=25;,sum=value1+value2;,printf(The sum of%i and%i is%in,value1,value2,sum);,return 0;,Entry point of a C program,Sequent
4、ial,flow of control,4,国外C语言程序设计英文lecture,Controlling the program flow,Forms of controlling the program flow:,Executing a sequence of statements,Repeating a sequence of statements(until some condition is met)(looping),Using a test to decide between alternative sequences(branching),Statement1,Statemen
5、t2,Statement3,Statement4,Statement5,Statement6,Statement7,Statement8,5,国外C语言程序设计英文lecture,Program Looping,Looping:doing one thing over and over,Program loop:a set of statements that is executed repetitively for a number of times,Simple example:displaying a message 100 times,:,printf(“hello!n”);,prin
6、tf(“hello!n”);,printf(“hello!n”);,printf(“hello!n”);,printf(“hello!n”);,Repeat 100 times,printf(“hello!n”);,Program looping:,enables you to develop concise programs containing,repetitive processes that could otherwise require many lines of code!,6,国外C语言程序设计英文lecture,The need for program looping,#inc
7、lude,int main(void),int triangularNumber;,triangularNumber=1+2+3+4+5+6+7+8;,printf(The eighth triangular number is%in,triangularNumber);,return 0;,What if we have to compute the 200-th(1000-th,etc)triangular number?,Example problem:computing triangular numbers.,(The n-th triangular number is the sum
8、 of the integers from 1 through,n),In C:3 different statements for looping:for,while,do,7,国外C语言程序设计英文lecture,Example 200,th,triangular number,n=1,triangularNumber=,triangularNumber+n,n=200,n=n+1,yes,no,triangularNumber=0,Print triangularNumber,Statement,before,loop,init_expression,loop_condition,sta
9、tement,loop_expression,Statement,after,loop,8,国外C语言程序设计英文lecture,Example-,for,/*Program to calculate the 200th triangular number,Introduction of the for statement*/,#include,int main(void),int n,triangularNumber;,triangularNumber=0;,for(n=1;n=200;n=n+1),triangularNumber=triangularNumber+n;,printf(Th
10、e 200th triangular number is%in,triangularNumber);,return 0;,9,国外C语言程序设计英文lecture,The,for,statement,for(,init_expression;loop_condition;loop_expression,),program statement,init_expression,Program statement,loop_condition,Loop expression,yes,no,1,2,3,4,5,10,国外C语言程序设计英文lecture,The,for,statement,for(n=
11、1;n=200;n=n+1),triangularNumber=triangularNumber+n;,1,2,3,4,5,yes,no,11,国外C语言程序设计英文lecture,How,for,works,The execution of a for statement proceeds as follows:,1.The initial expression is evaluated first.This expression usually sets a variable that will be used inside the loop,generally referred to a
12、s an,index,variable,to some initial value.,2.The looping condition is evaluated.If the condition is not satisfied(the expression is false has value 0),the loop is immediately terminated.Execution continues with the program statement that immediately follows the loop.,3.The program statement that con
13、stitutes the body of the loop is executed.,4.The looping expression is evaluated.This expression is generally used to change the value of the index variable,5.Return to step 2.,12,国外C语言程序设计英文lecture,Infinite loops,Its the task of the programmer to design correctly the algorithms so that loops end at
14、 some moment!,/Program to count 1+2+3+4+5,#include,int main(void),int i,n=5,sum=0;,for(i=1;i=n;n=n+1),sum=sum+i;,printf(“%i%i%in,i,sum,n);,return 0;,What is wrong here?,Does the loop end?,13,国外C语言程序设计英文lecture,Relational operators,Operator,Meaning,=,Is equal to,!=,Is not equal to,Is less than,Is gre
15、ater than,=,Is greater or equal,The relational operators have lower precedence than all arithmetic operators:,a b+c,is evaluated as,a (b+c),ATTENTION!Do not confuse:,the“is equal to”operator=and the “assignment”operator=,ATTENTION when comparing floating-point values!,Only comparisons make sense!,14
16、国外C语言程序设计英文lecture,Example,for,with a body of 2,/Program to generate a table of triangular numbers,#include,int main(void),int n,triangularNumber;,printf(TABLE OF TRIANGULAR NUMBERSnn);,printf(n Sum from 1 to nn);,printf(-n);,triangularNumber=0;,for(n=1;n=10;+n),triangularNumber+=n;,printf(%i%in,n,
17、triangularNumber);,return 0;,The,body,of the loop consists in a,block,of 2 statements,15,国外C语言程序设计英文lecture,Increment operator,Because addition by 1 is a very common operation in programs,a special operator was created in C for this.,Increment operator,:the expression+n is equivalent to the expressi
18、on n=n+1.,Decrement operator,:the expression-n is equivalent to the expression n=n 1,Increment and decrement operators can be placed in front(,prefix,)or after(,postfix,)their operand.,The,difference between prefix and postfix,:,Example:if n=4:,a=n+leads to a=4,n=5,a=+n leads to a=5,n=5,16,国外C语言程序设计
19、英文lecture,Nested loops,#include,int main(void),int n,number,triangularNumber,counter;,for(counter=1;counter=5;+counter),printf(What triangular number do you want?);,scanf(%i,triangularNumber=0;,for(n=1;n=number;+n),triangularNumber+=n;,printf(Triangular number%i is%inn,number,triangularNumber);,retu
20、rn 0;,Remember indentations!,18,国外C语言程序设计英文lecture,for,loop variants,Multiple expressions,(comma between),for(i=0,j=10;ij;i+,j-),Omitting fields,(semicolon have to be still),i=0;,for(;i10;i+),Declaring variables,for(int i=0;i=10 ;i+),19,国外C语言程序设计英文lecture,The,while,statement,while(,expression,),prog
21、ram statement,while(number 0“);,printf(“Give a new number:“);,scanf(“%i“,20,国外C语言程序设计英文lecture,The,while,statement,while(,expression,),program statement,statement,Loop_expression,yes,no,Loop with the test in the beginning!,Body might never be executed!,21,国外C语言程序设计英文lecture,Example:,A program to fin
22、d the greatest common divisor of two nonnegative integer values ,22,国外C语言程序设计英文lecture,Example-,while,/*Program to find the greatest common divisor,of two nonnegative integer values*/,#include,int main(void),int u,v,temp;,printf(Please type in two nonnegative integers.n);,scanf(%i%i,while(v!=0),temp
23、u%v;,u=v;,v=temp;,printf(Their greatest common divisor is%in,u);,return 0;,23,国外C语言程序设计英文lecture,Example:,A program to print out the digits of a number in reverse order,24,国外C语言程序设计英文lecture,Example-,while,/Program to reverse the digits of a number,#include,int main(void),int number,right_digit;,pr
24、intf(Enter your number.n);,scanf(%i,while(number!=0),right_digit=number%10;,printf(%i,right_digit);,number=number/10;,printf(n);,return 0;,25,国外C语言程序设计英文lecture,Example,while,not quite OK!,/Program to reverse the digits of a number,#include,int main(void),int number,right_digit;,printf(Enter your nu
25、mber.n);,scanf(%i,while(number!=0),right_digit=number%10;,printf(%i,right_digit);,number=number/10;,printf(n);,return 0;,What happens if you enter number=0?,26,国外C语言程序设计英文lecture,The,do,statement,do,program statement,while(,loop_expression,);,statement,loop_expression,yes,no,Loop with the test at th
26、e end!,Body is executed at least once!,27,国外C语言程序设计英文lecture,Example,do while,/Program to reverse the digits of a number,#include,int main(),int number,right_digit;,printf(Enter your number.n);,scanf(%i,do,right_digit=number%10;,printf(%i,right_digit);,number=number/10;,while(number!=0);,printf(n);,
27、return 0;,28,国外C语言程序设计英文lecture,Which loop to choose?,Criteria:Who determines looping,Entry-condition loop-for,while,Exit-condition loop-do,Criteria:Number of repetitions:,Indefinite loops-while,Counting loops-for,In C,you can actually rewrite any while as a for and viceversa !,29,国外C语言程序设计英文lecture
28、Example:,while,vs,for,#include,int main(void),int count=1;,while(count=5),printf(%in,count);,+count;,return 0;,#include,int main(void),int count;,for(count=1;count=5;,count+),printf(%in,count);,return 0;,30,国外C语言程序设计英文lecture,The,break,Statement,Can be used in order to immediately exiting from a lo
29、op,After a break,following statements in the loop body are skipped and execution continues with the first statement after the loop,If a break is executed from within nested loops,only the innermost loop is terminated,31,国外C语言程序设计英文lecture,The,break,statement,Programming style:dont abuse break!,.,whi
30、le(number!=0),/Statements to do something in loop,printf(Stop,answer 1:);,scanf(%i,if(answer=1),break;,/very bad idea to do this,32,国外C语言程序设计英文lecture,Similar to the break statement,but it does not make the loop terminate,just skips to the next iteration,The,continue,statement,33,国外C语言程序设计英文lecture,
31、The,continue,statement,Continue also not so good style!,.,while(number!=0),/Statements to do something in loop,printf(“Skip next statements answer 1:);,scanf(%i,if(answer=1),continue;,/not so good idea,/Statements to do something in loop,/If answer was 1 these statements are,/not executed.They are skipped.,/Go straight to the beginning of while,34,国外C语言程序设计英文lecture,






