第三课赋值和输入输出语句课件.ppt
08信息奥赛暑假集训,8.9上午,复习,第一环节复习 1、基本知识(保留字、标识符、函数、运算符)2、基本语句(输入、输入出、赋值)3、分支(多路分支)4、循环第二环节 新课(数组),freepascal,界面与基本操作,Freepascal调试软件界面介绍,光标所在行列,关闭当前文件,当前文件名称,新建文件:方法1:单击菜单“File-New”。方法2:组合键:Alt+F,然后用方向键移动到New,再按回车键。保存文件。方法1:F2方法2:菜单“File-Save”运行:方法1:Ctrl+F9 方法2:菜单“Run-Run”查看操作结果:方法1:Alt+F5 方法 方法2:菜单“Debug-User screen”。退出:方法1:Alt+X 方法2:菜单“File-Open”打开文件:方法1:F3方法2:菜单“File-Open”,基本操作,、新建、保存、Ctrl+F9 运行、Alt+F5切换到用界面看运行结果,编辑操作,光标的移动:方向键进行左右上下移动。Home:移动到行首End:移动到行尾。删除:Delete:删除光标所在位置字符Backspace删除光标左侧的一个字符Ctrl+Y:删除光标所在行。断行:1、前空一行:将光标移动到行首回车2、后空一行:将光标移动到行末回车3、一行分两行:将光标移动至行中回车接行:将两行内容连接成一行(利用删除键接行)1、将光标移至第1行末,按Delete键2、将光标移至第2行首,按Backspace,相关概念,保留字是PASCAL选定的,具有固定意义和用法的专用单词或缩写,这些单词不允许作其它使用。我们不能再用“program”、“const”来作为其它变量、常量等的名字。标识符是标识符的定义:以字母或下划线开头的字母、数字、下划线序列,有效长度为63个字符,并且大小写等效。可以用来表示常量、变量、程序、函数等。,标准Pascal语言中的保留字一共有36个可以分为六种类型:1、程序、函数、过程的符号:program 程序 function 函数 procedure 过程 2、说明部分的专用定义符号 array 定义数组 const 常量说明 file 文件类型 lable 标号说明 packed 指令(记录)var 变量说明 record 记录类型 set 集合类型 type 类型说明 3、语句专用符号 case 分情况语句 do downto(见for)else(见if、case)for 计数循环语句 goto 语句 if then else repeat 直到型循环语句 until while 当循环语句 forward 函数指令 4、运算符号 and 与 div 整除 in 集体运算符,判断一个元素是否在集合中 mod 求余 not 非 or 或 xor异或5、分隔符号 begin 块标记,开始 end 块标记,结束 6、空指针符号 nil 空指针,常用的标准标识符有:标准常量:false true maxint maxlongint标准类型:integer boolean real char text标准文件:input output标准函数:abs actan chr cos eof elon exp ln oddord pred round sin sqr sqrt succ trunc标准过程:assign get new dispose pack put readreadln reset rewrite unpack write writeln,Maxint的值为32767,标识符的分类:标准标识符:指Pascal语言预先定义的标识符,具有特殊含义。用户字定义标识符:由用户根据需要定义,标准函数,1.abs(x)求x的绝对值(|x|);Abs(-2)=2 Abs(-2.0)=2.0000000000E+002.exp(x)求ex的值;(e为无理数2.71828)3.frac(x)求x的小数部分;4.int(x)求x的整数部分(不舍入,函数值为实型);int(3.6)=3.05.ln(x)求以e为底的x的对数(log ex);6.odd(x)判断x的奇偶数(当x为奇数时odd(x)值为true,否则为false);7.pi 值(3.1415926535897932);8.pred(x)求x(有序类型)的前趋值;9.succ(x)求x(有序类型)的后继值;10.random 随机函数,产生01的随机值;0,1)11.random(n)产生0,x)的随机数(n为word类型,先执行randomize,才能得到随机整数);12.round(x)求x的四舍五入 结果为整数;如:Round(2.8)=3 Round(-2.8)=-313.trunc(x)求x的整数部分(截掉小数部分,结果为整型);如:Trunc(3.85)=314.sqr(x)求x的平方值(x2);,15.sqrt(x)求x的开平方根值();Sqr(4.0)=1.6000000000E+01 Sqr(4)=1616.sin(x)求x的正弦函数(x为弧度);17.cox(x)求x的余弦函数(x为弧度);18.arctan(x)正切的反三角函数(x为数值);19.Ln(X)对数函数 即求x的自然对数logex20.幂运算 xy=eylnx,xy=Exp(y*ln(x)21.Ord(x)序数函数:,函数结果为整型,求字符对应的ASCII码如:Ord(A)=6522.Chr(x)字符函数,x为整型,函数结果为字符型,,求ASCII码对应得字符如:Chr(65)=A23.Upcase(x)小写字母转为大写字母,如:Upcase(a)=A24.LPcase(X)大写字母转为小写字母,如:Upcase(A)=a25.val 函数 将字符串转换为整型值,如val(123)=123,a的b次幂可表示为 exp(b*ln(a)还可能用power函数,使用此函数前,要打开数学库,方法如下,Pascal的System单元提供了两个与随机数有关的子程序:Randomize和Random。Randomize过程用于初始化随机种子,其初始值取决于当前的系统时钟。Random函数用于获取随机数,它有两种调用形式:Random,返回一个0到1之间(不包括1)的随机实数;Random(N),返回0至N之间(不包括N)的随机整数,N为Word类型整数。,可以试一下,随机产生几个一定范围内的数,变量常见类型,整型integer、实型real、字符型char、布尔型boolean、字符串型string,整型短整型 Shortint-128127 1整形 Integer-32768327672长整型 Longint-2147483648 21474836474字节型 Byte 0255 1字型 Word 065535 2,实型单精度实型 Single 1.5e-453.4e+38 4 78实型 Real 2.9e-391.7e+38 6 1112双精度实型 Double 5.0e-3241.7e+308 8 1516,Pascal的运算符,表达式是用运算符号或小括号将常量、变量、函数连接成的式子。Pascal表达式中只有小括号。运算符也称为算符,算符的操作对象称为操作数。运算符按带操作数的个数分为两类:单目运算符:对一个操作数操作。-(负号),+(正号)双目运算符:对两个操作数操作。根据运算符运算的意义不同分为算术运算、布尔运算、逻辑运算、关系运算。根据运算符的优先级可以将运算符分为单目运算、“乘”的关系运算、“和”的关系运算、关系运算。,算术运算符,一共有8个。操作数都是数值型,结果也是数值型。单目运算符有()取正、()取负。双目运算符有()加、()减、()乘、(/)除、(DIV)取商、(Mod)取模。“/”左右的操作数是数值型,结果是实型数。Div 左右的操作数是整型,结果是整型(两数之商)。Mod 左右的操作数是整型数,结果是整型数(两数相除之余)。在PASCAL只有上面8种数学运算。其它的就只能利用这8种运算的组合通过语句来实现。如a2(a的平方)可以化成a*a。XY 可写成exp(y*ln(X),例:,(实数除)得到结果为实型.如5.0/2.0=2.5,5/2=2.5,4/2=2.0而不等于2。DIV(整除)DIV它要求除数和被除数均为整型,结果也为整型。如10 DIV 2=5,10 DIV 3=3,5 DIV 10=0.-15 DIV 4=-3。DIV运算只取商的整数部分,参与DIV运算的两个对象不能为实型。mod(求余),也只能用于整数运算,结果为整数。例如:10 mod 4=2,-17 mod 4=-1,4 mod(-3)=1,-4 mod 3=-1,即 a mod b=a-(a div b)*b。,关系运算符,关系运算是指同一类型的两个数据进行比较,结果是一个布尔类型值。用小括号、=、将两个算术表达式连接起来的式子就称为关系表达式(比较式)。如:3+78,x+y10,2*7=13等都是关系表达式。关系表达式的值 true,false 23 87.5=100 Aa Falsetrue,逻辑运算,逻辑运算又叫布尔运算,这是根据英国数学家BOOLE的名字得来的,因为是他首先建立了逻辑运算代数。逻辑运算简单的说就是判断运算。比如说:你是高中生吗?、今天上课吗?等等这样的一般疑问句。逻辑运算的显著特征就是运算结果只有两种,对或错,是或者不是。,例如:AB C=D E=A 对于这样的表达式结果只有两种对或错。这样的表达式就叫做逻辑表达式,布尔常量只有两个:TRUE(真)、FALSE(假),布尔运算符,布尔运算是对布尔型数据进行运算,即操作数都是布尔型数据,结果是布尔型。布尔型运算符共有4个:not(取反)and(与)or(或)xor(异或)not:结果是与操作数相反的布尔值and:两个操作数都为真,结果为真,否则为假or:两个操作有一个为真,结果为真,否则为假Xor:两个操作数不一样为真,否则为假,1 xor 1=0 0 xor 0=0 1 xor 0=1 0 xor 1=1,运算符的优先级,1、内层小括号先计算2、函数先求值3、单目运算符(,not)4、乘的关系双目运算符(*,/,div,mod,and)5、加的关系双目运算符(,or)6、关系运算符(,=,=,)在同级运算中,按从左到右的顺序计算。,(a=0)and(a100),i mod j=0,基本语句复习,赋值语句,X:=a+b 计算机先计算赋值号右边表达式的值,然后将表达式的值赋给变量名代表的变量。,变量,a,注意:赋值语句在使用时,要注意赋值号两边的数据类型必须赋值兼容,即类型相一致或相容。,Var a:integer;,数据类型相容的,我们也可以用一个例子来帮助理解。我们都喝过功夫茶,也喝过大杯茶。把功夫茶倒在大茶杯里,一般不会出什么问题;但如果把大杯里的茶倒在功夫茶杯里呢?可能小茶杯装不下大茶杯里的茶,茶“溢出”了。在PASCAL中也会出现这种情况。当一种数据类型的取值范围包含着另一种数据类型的取值范围时,就可能出现类型相容的情况。如实型与整型,整型、字符型与它们各自的子界类型如果把整型值赋给实型变量,把整型子界值赋给整型变量,不会出错;但如果反过来,就会出现“溢出”,出错了。,read与readln的区别,输入语句,write(输出量表);输出后不换行writeln(输出量表);输出后换行writeln;输出一个回车符输出量可以是:变量。输出变量的值。write(x,y);表达式。输出的是表达式的值。Write(1+3*a)常量。直接输出常量值。,输出语句,Write(I am a student!),Write(3.56),例题回顾,已知某梯形的上底A,下底B,高H,求它的面积S,定义变量,输入已知,计算面积,输出面积,Var a,b,h,s:real;,read(a,b,h);,S:=(a+b)*h/2;,Write(s=,s);,Program zhlt;,begin,End.,逻辑结构为顺序、选择和重复(或循环),简单的分支结构程序设计,简单的IF语句,一、格式 IF 布尔表达式THEN 语句;IF 布尔表达式THEN 语句 ELSE 语句;,then,else,实例回顾,输入一个整数,判断是否为偶数。(如果是偶数输出否则输出)。,program ex_fz1;Var a:integer;begin Write(a=);readln(a);If a mod 2=0 then writeln(yes)Else writeln(no);end.,给出三角形的三个边长A,B,C,求三角形面积.,program exec2(input,output);var a,b,c,s,area:real;begin readln(a,b,c);if(a+bc)and(b+ca)and(c+ab)then begin s:=(a+b+c)/2;area:=sqrt(s*(s-a)*(s-b)*(s-c);writeln(area=,area:6:2);end else begin writeln(a:6:2,b:6:2,c:6:2);writeln(input data error);end;end.,提示:要判断是否能构成一个三角形如果s为三边和的一半,那么面积为sqrt(s*(s-a)*(s-b)*(s-c),IF语句的嵌套,在if语句中,如果then子句或else子句仍是一个if语句,则称为if语句的嵌套。,语句有三种嵌套形式:()、在部分嵌套语句,格式是:表达式表达式表达式语句语句语句语句,第三层,第二层,第一层,()、在部分嵌套语句,格式是:表达式语句表达式表达式语句语句语句,第三层,第二层,第一层,()、前面两种的综合,即在和部分都嵌套语句,格式是:表达式表达式语句语句表达式语句语句,必须要注意的一个问题是:因为结构的语句可以省略语句,这个时候就有可能出现个数少于语句的嵌套个数的情况,当出现这种情况的时候只要记住一个规则就可以了:总是与它最近的语句配对!,通过下面的这个简单的程序来理解这个规则:;:;:;上面的程序有两个语句,而且嵌套,但只有一个,属于谁呢?,写程序,根据输入的值,输出1、-1和零。,根据输入的x值,先分成x0与x0两种情况,然后对于情况x0,再区分x是小于0,还是等于0,program ex;var x:real;y:integer;begin wrtie(Input x:);readln(x);if x0 then y:=1else x0时if x=0then y:=0else y:=-1;writeln(x=,x:6:2,y=,y);end.,X0,X=0,Y:=1,Y:=-1,Y:=0,输入x,开始,结束,Y,Y,输出x、y,输入年月求天数,当多分支选择的各个条件由同一个表达式的不同结果值决定时,可以用case语句实现。,program day_case;var year,month,days:integer;beginreadln(year,month);case month of1,3,5,7,8,10,12:days:=31;4,6,9,11:days:=30;2:if(year mod 400=0)or(year mod 1000)and(year mod 4=0)then days:=29 else days:=28;end;writeln(day=,day);readln;end.,用case语句来写,31,30,29,28,case语句,当多分支选择的各个条件由同一个表达式的不同结果值决定时,可以用case语句来实现。它的选择过程,很象一个多路开关,即由case语句的选择表达式的值,决定切换至哪一语句去工作。在实现多分支控制时,用case对某些问题的处理和设计,比用if语句写程序更简洁、更清晰。,case month of,Case 表达式 of常量表1:语句1;常量表n:语句n;else 语句n+1;end;格式说明:常量表为有序类型数据。表达式要与常量类型一致。常量后的语句为一条语句。如果要完成多条语句功能,要将这些语句写成复合语句。,Case语句,输入两个实数,再输入+、-、*或/号,根据运算符输出这两个数的和、差、积或商。,Program xx;var a,b,s:real;operator:char;begin readln(a,b);read(operator);case operator of+:s:=a+b;-:s:=a-b;*:s:=a*b;/:s:=a/b;end;writeln(a,operator,b,=,s:5:4)end.,注意事项,Case语句执行表达式值相匹配的case常量所指向的那条语句,如果没有相匹配的值,则执行else后的语句n+1或什么也不做(无else语句)。Case常量必须惟一确定且必须与表达式同类型,每一个常量只能在常量表中出现一次且仅出现一次。表达式只能是序数类型。序数类型包括整型、字符型、布尔型、枚举型、子界型。,根据学生的成绩给予相应的等低,对应关系如下:以下,析:利用case语句进行程序设计,关键在于巧妙地构造情况表达式,program chengji;var n:integer;ch:char;beginwrite(input the score:);readln(s);case n div 10 of10,9:ch:=A;8:ch:=B;7,6:ch:=C;else ch:=D;end;writeln(n,-,ch);end.,n值是整型,n值是实型,表达式的值是子界型,表达式的值是子界型,判断输入的字符是大写、小写、数字还是其它,思考题,例2 根据x的值,求函数Y的值:分析:利用case语句进行程序设计,关键在于巧妙地构造情况表达式。本例中三种情况可用一个表达式区分出来:Trunc(x/100)。因为x在(0100)之间时表达式值为0;x在100,200)时表达式值为1;其余部分可用else子句表示,拓展题,期未来临了,班长小Q决定将剩余班费X元钱,用于购买若干支钢笔奖励给一些学习好、表现好的同学。已知商店里有三种钢笔,它们的单价为6元、5元和4元。小Q想买尽量多的笔(鼓励尽量多的同学),同时他又不想有剩余钱。请您编一程序,帮小Q制订出一种买笔的方案。分析:对于以上的实际问题,要买尽量多的笔,易知都买4元的笔肯定可以买最多支笔。因此最多可买的笔为x div 4支。由于小q要把钱用完,故我们可以按以下方法将钱用完:若买完x div 4支4元钱的笔,还剩1元,则4元钱的笔少买1支,换成一支5元笔即可;若买完x div 4支4元钱的笔,还剩2元,则4元钱的笔少买1支,换成一支6元笔即可;若买完x div 4支4元钱的笔,还剩3元,则4元钱的笔少买2支,换成一支5元笔和一支6元笔即可。,program pen;var a,b,c:integer;x,y:integer;beginwrite(x=);readln(x)输入xc:=x div 4;4元笔最多买的数目y:=x mod 4;求买完c支4元笔后剩余的钱数ycase y of0:begin a:=0;b:=0;end;1:begin a:=0;b:=1;c:=c-1;end;2:begin a:=1;b:=0;c:=c-1;end;3:begin a:=1;b:=1;c:=c-2;end;end;writeln(a=,a,b=,b,c=,c);end.,a,b,c分别表示在买笔方案中,6元、5元和4元钱笔的数目,x,y分别表示剩余班费和买完最多的4元笔后剩的钱,循环语句(For),前言,在Pascal语言中,循环结构程序通常由三种的循环语句来实现。FOR循环、当循环和直到循环。通常将一组重复执行的语句称为循环体,而控制重复执行或终止执行由重复终止条件决定。因此,重复语句是由循环体及重复终止条件两部分组成。,for语句的一般格式,for:=to do;递增,for:=downto do;递减,其中for、to、downto和do是Pascal保留字。表达式1 与表达式2的值也称为初值和终值。对于for循环有时也称为计数循环,因为我们用循环控制变量来控制 循环体执行的次数。循环体执行的次数是(初值和终值之差的绝对值+1),for循环的特点是我们明确知道循环体执行的次数,想一想:如果想输出6个*号,下一行输出5个#,以上动作反复3次程序应当如何改动,Program fort1;Var i:integer;Begin for i:=1 to 10 do writeln(*);End.,Program fort1_2;Var i:integer;Begin for i:=1 to 3 do begin writeln(*);writeln(#);end;End.,观察一下i的变化情况,再想一想:如果想1到100之间的所有整数,应当如何改动,Program fort2;Var i:integer;Begin for i:=1 to?do write(?);End.,反复做的事:输出整数做的次数:100,如果想a到z之间的所有字符呢,应当如何改动?,想一想:以下程序改动后对循环体有什么影响,Program fort1;Var i:integer;Begin for i:=1 to 10 do writeln(*);End.,Program fort1;Var i:integer;Begin for i:=10 downto 1 do writeln(*);End.,Num:=0;For i:=1 to 100 doNum:=num+I;,求:1+2+100的和,应用举例一,输出1100之间的所有偶数。,Program oushu(input,output);var i:integer;beginfor i:=1 to 100 do用记数形循环来实现穷举1100之间的偶数if i mod 2=0 then write(i:5);writeln;end.思考:我们还有什么方法来实现这个题目;输出100-999中所有能被3或被5整除的数字;,应用举例二,求N!123N,这里N不大于10。,分析:程序要先输入N,然后从1累乘到N。程序如下:var n,i:integer;i为循环变量S:longint;s作为累乘器/思考:为什么要把S设置成 longint类型beginwrite(Enter n=);readln(n);输入n s:=1;/赋初值 for i:=2 to n do从2到n累乘到s中s:=s*i;writeln(n,!=,s);输出n!的值end.,练习题,1.编程找出四位整数abcd中满足下述关系的数(ab+cd)(ab+cd)=abcd提醒:这题属于搜索问题,四位数,范围从1000到9999,还要考虑到如何将四位数高两位与低两位分开。,2.有一种Fibonaccl数列0,1,1,2,4,7.其规律为第一、二、三个数为0,1,1,从第四个数起,各数为其前面3个数之和,要求输出此数列中前60个数。,for j:=1 to 50 do write(*);,writeln;,begin,end;,for i:=1 to 10 do,Program ex_forsc;Var i,j:integer;begin,End.,思考,输出如下图形。,WHILE循环,格式:while do;其意义为:当布尔表达式的值为true时,执行do后面的语句。,While i=100 do begin num:=num+i;i:=i+1;End;,直到循环(REPEATuntil语句),用while语句可以实现当型循环,用repeat-until 语句可以实现直到型循环。repeat-until语句的含义是:重复执行循环,直到指定的条件为真时为止。直到循环语句的一般形式:Repeat;:;until;其中Repeat、until是Pascal保留字,repeat与until之间的所有语句称为循环体。,repeat num:=num+i;i:=i+1;until i100;,求100(包括)以内所有数之和,while i=100 do begin num:=num+i;i:=i+1;end;,for i:=1 to 100 do num:=num+i;,repeat num:=num+i;i:=i+1;until i100;,思考:从键盘输入若干数字,对它们求和,直到从键盘读入的数是#时结束,While a#do,until a=#,三种循环结构的比较,以上我们已介绍了三种循环语句。一般说来,用for 循环比较简明,只要能用for循环,就尽量作用for循环。只在无法使用for循环时才用while循环和repeat-until循环,而且 while 循环和repeat-until循环是可以互相替代的。for 循环在大多数场合也能用while和repeat-until循环来代替。一般for循环用于有确定次数循环,而while和repeat-until循环用于未确定循环次数的循环。当一个循环的循环体中又包含循环结构程序时,我们就称之为循环嵌套,补充,(1)inc(x)等同 x:=x+1;(2)inc(x,n)等同 x:=x+n;(3)dec(x)等同 x:=x-1;(4)dec(x,n)等同 x:=x-n;,题一,编写程序,求1001000之间能被7整除的数,每行输出10个。,Program ex34;Begin For x:=10 to 99 do Begin a:=x div 10;b:=x mod 10;y:=b*10+a;if y-x=36 then writeln(x);End;End.,解:用for循环列举出所有的两位数,x为循环变量;用公式a:=x div 10分离出x的十位数字;用公式b:=x mod 10分离出x的个位数字;用公式y:=b*10+a合成新数y;用式子y-x=36筛选出符合条件的数x并输出。,有个两位数x,将它的个位数字与十位数字对调后得到一个新数y,此时y恰好比x大36,请编程求出所有这样的两位数。,题二,把整数3025从中剪开分为30和25两个数,此时再将这两数之和平方,(30+25)2=3025计算结果又等于原数。求所有符合这样条件的四位数。,解:设符合条件的四位数为N,它应当是一个完全平方数,用(a*a)表示。为了确保N=(a*a)在四位数(10009999)范围内,可确定a在3299循环;计算N=a*a;将四位数N拆分为两个数n1和n2;若满足条件(n1+n2)*(n1+n2)N 就输出 N,program exam35;var n,a,x,n1,n2:integer;begin for a:=32 to 99 do begin n:=a*a;n1:=n div 100;拆取四位数的前两位数 n2:=n-n1*100;拆取四位数的后两位数 x:=n1+n2;if x*x=n then writeln(n);end;readlnend.,百钱买百鸡:今有钱100元,要买100只鸡,公鸡5元一只,母鸡1元一只,小鸡1元3只,若公鸡、母鸡和小鸡都至少要买1只,请编程求出恰好用完100元钱的所有的买鸡方案。,这是一个标准的枚举算法,分别用三个变量表示公鸡、母鸡、小鸡的只数,对各种鸡可能的只数进行检测,如果它们的总数为100只,并且总钱数是100就符合条件。,题三,求1100之间的所有素数,分析:我们可对1100之间的每一整数进行判断,判断它是否为素数,是则输出。而对于任意整数i,根据素数定义,我们从2开始,到,找i的第一个约数。若找到第一个约数,则i必然不是素数。否则i为素数。,programdasf;varn,m,i:integer;f:boolean;begin f:=true forn:=2to100do begin form:=2ton-1do ifnmodm=0then f:=false;iff=truethen write(n);end;end.,除了1与本身外再没有其它约数,varn,m,i:integer;f:boolean;begin f:=true forn:=2to100do begin form:=2totrunk(sqrt(n)do begin ifnmodm=0thenf:=false;break;end;iff=truethen write(n);end;end.,改进,参考程序,var i,x:integer;beginfor i:=1 to 100 dobeginx:=2;while(x0)dox:=x+1;if x=trunc(sqrt(i)then write(i:8);end;end.,求两个整数a与b的最大公约数,Var a,b,i,t:integer;begin readln(a,b);if ab then begin 比较A,B的大小,如果ab那么交换两个数字t:=a;a:=b;b:=t;end;for i:=b downto 1 do 从B开始判断,每次减少一个,直到找到为止 if(a mod i=0)and(b mod i=0)then begin writeln(i);break;找到了最大公约数,强行退出循环 end;end.,穷举法,program exam4;var m,n,a,b,t,r:integer;beginreadln(m,n);if m0 do begin m:=n;n:=r;r:=m mod n;end;writeln(The greatest common divide is:,n:8);end.,辗转相除判余法分别用m,n,r表示被除数、除数、余数。求m/n的余数r.若r=0,则n为最大公约数.若r0,执行第步.将n的值放在m中,将r的值放在n中.返回重新执行第步。,