版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
惠陽中山中學(xué)奧賽培訓(xùn)講義
目錄
01-算法和流程圖1
02-PASCAL簡(jiǎn)介4
03-TP70的使用8
04-順序結(jié)構(gòu)19
05-順序結(jié)構(gòu)211
06一選擇結(jié)構(gòu)113
07-選擇結(jié)構(gòu)216
08一循環(huán)結(jié)構(gòu)119
09一循環(huán)結(jié)構(gòu)222
10一循環(huán)結(jié)構(gòu)324
H-循環(huán)綜合練習(xí)28
12-字符類型數(shù)據(jù)處理30
13-枚舉類型34
14-子界類型38
15-一維數(shù)組的建立、輸入輸出、計(jì)算41
16-一維數(shù)組的移動(dòng)、插入、刪除44
17-一維數(shù)組的查找、排序47
18-二維數(shù)組的建立、輸入輸出、計(jì)算50
19-二維數(shù)組的應(yīng)用、矩陣53
20-字符數(shù)組與字符串類型56
21-函數(shù)59
22一過程63
23一遞歸67
24-集合70
25-記錄72
算法和流程圖
一、學(xué)習(xí)目的和學(xué)習(xí)內(nèi)容
學(xué)習(xí)各種軟件的使用——>讓計(jì)算機(jī)按照我們的意圖去完成一件事——>編程序(軟件)給別人用;
國(guó)際信息學(xué)(計(jì)算機(jī))奧林匹克競(jìng)賽——全國(guó)中學(xué)生信息學(xué)奧賽——廣東省中學(xué)生信息學(xué)奧賽;
比賽的內(nèi)容就是編程比賽;這也是我們的學(xué)習(xí)目的和內(nèi)容;
計(jì)算機(jī)程序設(shè)計(jì)語言:人類語言>用程序設(shè)計(jì)語言(如Pascal語言)表示——>再翻譯成機(jī)器語言;
二、計(jì)算機(jī)解決問題的步驟
做任何一件事都要有一定的的步驟,如求1+2+3+4+5+6+7+8+9+10;
計(jì)算機(jī)解題步驟:分析問題
——>確定解決問題的方法和步驟(即算法)
——>選擇一種計(jì)算機(jī)語言,根據(jù)算法編寫計(jì)算機(jī)程序
——>讓計(jì)算機(jī)執(zhí)行這個(gè)程序獲得結(jié)果
三、算法的概念
1、為解決某一個(gè)問題而采取的方法和步驟,稱為算法?;蛘哒f算法是解決一個(gè)問題的方法的精確描述。
如:已知半徑,計(jì)算圓的面積的算法。
算法讀入半徑R的值——>計(jì)算圓的面枳S=頁*R*R——>輸出圓的面積So
注意:算法不一定唯一,如求1+2+3+4+5+6+7+8+9+10的算法。
2、算法的特點(diǎn):
①有窮性:必須在執(zhí)行了有窮個(gè)計(jì)算步驟后終止;
②確定性:每個(gè)步驟必須是精確的、無二義性的:
③可行性:可以用計(jì)算機(jī)解決、能在有限步、有限時(shí)間內(nèi)完成;
④有輸入:
⑤有輸出:
四、算法舉例
例一:交換兩個(gè)大小相同的杯子中的液體(A水、B酒)。
算法1:
1、再找一個(gè)大小與A相同的空杯子C;
2、A>C;
3、B>A;
4、C——>B;結(jié)束。
或(B——>C、A——>B、C——>A)
算法2
1、再找兩個(gè)空杯子C和D;
2、A——>C、B——>D;
3、C——>B、D——>A;結(jié)束。
注意:?個(gè)算法往往具有代表性,能解決一類問題,如例-可以引申為:交換兩個(gè)變量的值。
例二:輸入1個(gè)數(shù)給計(jì)算機(jī),若為正數(shù)則打印出來。
算法:①輸入1個(gè)數(shù)——>X;
②判斷X>0?;
③若X>0,則打印X;結(jié)束。
例三:分別輸入10個(gè)數(shù),打印出其中的正數(shù)。
算法1:設(shè)T為計(jì)數(shù)器。
①輸入第一個(gè)數(shù)——>X,1——>T;
②判斷X>0?;
③若XX),則打印輸出;
④判斷T>10?
⑤若T>10,則表示10個(gè)數(shù)已經(jīng)處理完,結(jié)束。
否則,再輸入下一個(gè)數(shù)——>X,且T+1——>T,然后轉(zhuǎn)②繼續(xù)執(zhí)行。
例四:從10個(gè)數(shù)中挑選出最大的一個(gè)數(shù),打印輸出。
誘導(dǎo):以從10個(gè)人中挑出最高的人為例,讓學(xué)生發(fā)揮想象。
算法1:“打擂臺(tái)”或“比武招親”,設(shè)MAX為大力士,T為計(jì)數(shù)器。
①先輸入1個(gè)數(shù)——>MAX,1——>T;(擂主)
②再輸入下一個(gè)數(shù)——>X,T+1——>T;(上一個(gè)挑戰(zhàn)者)
&比較X>MAX?;(比武)
④若X>MAX成立,X——>MAX;(打敗擂主,即新的大力士產(chǎn)生)
否則,MAX仍然是最厲害,即值不變;(敗下陣來)
⑤判斷T=10?;(看看還有沒有挑戰(zhàn)者)
⑥若T=10成立,則說明10個(gè)數(shù)已比較玩,最大的數(shù)在MAX中,輸出MAX即可;(頒獎(jiǎng))
否則,轉(zhuǎn)②繼續(xù)找下一個(gè)挑戰(zhàn)者比武。(下一個(gè))
算法2:兩個(gè)兩個(gè)打(淘汰賽)。
例五:計(jì)算1*2*3*4*5*6*7*8*9*10。
描述:階乘10!
算法1:找兩個(gè)容器T和I;T為累乘器,初值為1;I為計(jì)數(shù)器,初值為1。
①1——>T,1——>1;
②T*I——>T;
(3)1+1>1;
④判斷1>10?
⑤成立,則輸出T,結(jié)束。
否則,轉(zhuǎn)②繼續(xù)乘。
提問:1、T的初值可不可以為0?不能
2、I的初值可不可以放0?不能
3、I的初值可不可以放2?可以
4、I可不可以放10?可以,怎么改算法?讓學(xué)生完成。
5、可不可以先判斷后執(zhí)行?
6、現(xiàn)在要求1+2+3+4+5+6+7+8+9+10,如何辦?讓學(xué)生完成。
五、算法的表示形式
1、文字描述:二義性,如:甲叫乙把他的書拿來;小明連王剛都不認(rèn)識(shí);
2、偽代碼:用符號(hào),不直觀;
3、流程圖:簡(jiǎn)潔、直觀、無二義性。有很多種,我們學(xué)N-S流程圖。
六、結(jié)構(gòu)化程序設(shè)計(jì)和N-S流程圖
經(jīng)過證明:任何一個(gè)算法都可以用以下3種基本結(jié)構(gòu)表示:
1、順序結(jié)構(gòu):例一;
2、分支結(jié)構(gòu):例二、例三中的②③、例四中的③④;
3、循環(huán)結(jié)構(gòu):例三中的④⑤、例四中的⑤⑥、例五;
兩種循環(huán):直到型和當(dāng)型。
相應(yīng)的N-S圖:
讓學(xué)生將直到型循環(huán)和當(dāng)型循環(huán)相互轉(zhuǎn)換:關(guān)鍵是條件的取反。
七、課后作業(yè)
1、求1+1/2+1/3+1/4++l/10o
2、求兩個(gè)自然數(shù)的最大公約數(shù)。
要求:寫出算法,畫出相應(yīng)的N-S流程圖.
Pascal程序設(shè)計(jì)語言簡(jiǎn)介
Pascal語言是學(xué)習(xí)計(jì)算機(jī)程序設(shè)計(jì)首選的語言,它的數(shù)據(jù)類型豐富、程序結(jié)構(gòu)清晰,對(duì)培訓(xùn)邏輯思維能力和結(jié)
構(gòu)化程序設(shè)計(jì)思想很有益。是國(guó)際、國(guó)內(nèi)比賽的首選語言,也是大學(xué)計(jì)算機(jī)專業(yè)的必修課程。
Pascal種類、版本較多。我們學(xué)習(xí)的是TurboPascal7.0,即TP7.0。
計(jì)算機(jī)程序是什么:程序是一些計(jì)算機(jī)能夠讀懂的命令或指令的有序集合,它的作用是按照編寫者的意圖完成
一定的功能,編寫這樣的程序叫程序設(shè)計(jì)。
如:下面是一個(gè)最簡(jiǎn)單的Pascal程序,它的作用是在屏幕上顯示“HOWDOYOUDO!”
PROGRAMEXI(INPUT,OUTPUT);
BEGIN
WRITELN(lHOWDOYOUDO!');
END.
下面我們就開始講解Pascal程序設(shè)計(jì)的基礎(chǔ)知識(shí)。
一、一個(gè)完整的PASCAL程序的組成
再看一個(gè)簡(jiǎn)單的例子:PROGRAMEXI(INPUT,OUTPUT);
constp=3.1415926;
varr:integer;
s:real;
BEGIN
Readln(r);
S:=p*r*r;
Write(s);
END.
從上面兩個(gè)簡(jiǎn)單例子,我們歸納出:
Z(PROGRAM表示一個(gè)程序的開始
空格——不能省,但可以有多個(gè)
程序首部J程序名——任意,但一般要有意義
(可以省略)](INPUT,OUTPUT)——參數(shù),表示需要從鍵盤輸入數(shù)據(jù),在顯示
器上顯示結(jié)果
I;——不能省,表示一個(gè)語句結(jié)束
說明部分:說明程序中用到的標(biāo)識(shí)符(如符號(hào)常量、變量)。
y標(biāo)識(shí)符必須以字母開頭,后跟字母或數(shù)字,不許有空格。
PASCAL程序組成\如:B,TWO,XI,MY」是正確的;
3X,MYFUNCTION,ABC.123是麓誤的。
用const說明常量;如:constp=3.1415926;
用var說明變量;如:varr:integer;
BEGIN
語句;個(gè)語句一般表示一個(gè)動(dòng)作,語句之間要用“;”分割
END
{句號(hào)“”一表示一個(gè)程序的結(jié)束,不能省。
例二、已知梯形的上底、下底和高,求梯形的面積。
PROGRAMAREA(INPUT,OUTPUT);
VARRI,R2,H,S:REAL;說明:
BEGIN
1、標(biāo)識(shí)符要先定義后使用,并且先說明常量再說明變量;
RI:=4.5;
2、數(shù)據(jù)類型:相同類型可以一起定義,用逗號(hào)割開:
:;
R2=8.13、賦值號(hào):不是等于號(hào),是“:=”
H:=6;4、乘號(hào):“*”,不能省略,如AB-?定要寫成A*B
S:=(R1+R2)*H/2;5、除引號(hào)里面的字符外,程序中的字母不分大小寫;
WRITEIN(S);6、按造格式寫,注意對(duì)齊。
END.
二、關(guān)鍵字
又稱保留字,是指PASCAL中具有固定意義的一批英文單詞或其縮寫,有專門的用途,
用在固定的位置,不能作為它用。
1、程序的起始符號(hào):PROGRAM>FUNCTION.PROCEDURE
2、說明部分的專用符號(hào):CONST、VAR、ARRAY,FILE、LABEL、TYPE、SET、RECORD,PACKED
3、專用語句:CASE、DO、DOWNTO、ELSE、FOR、GOTO,IF、OF、REPEAT、THEN、TO,UNTIL,
WHILE.WITH
4、運(yùn)算符號(hào):AND、DIV、IN、MOD、NOT、OR
5、分隔符:BEGIN、END
6、空指針變量:NIL
注意:?jiǎn)卧~不要寫錯(cuò),不分大小寫。
三、標(biāo)識(shí)符
用來標(biāo)識(shí)(表示)程序、符號(hào)常量、變量、過程、函數(shù)等的名字的符號(hào)。分為兩類:
1、標(biāo)準(zhǔn)標(biāo)識(shí)符:PASCAL已經(jīng)預(yù)先定義好的,有特定含義。
常量名:FALSE,TRUE,MAXINT(系統(tǒng)中的最大整數(shù),32767),
類型名:BOOLEAN,CHAR,INTEGER,REAL,TEXT
文件名:INPUT,OUTPUT
函數(shù)名:ABS,ARCTAN,CHR,COS,EOF,ELON,EXP,LN,ODD,
ORD,PRED,ROUND,SIN,SQR,SQRT,SUCC,TRUNC
過程名:DISPOSE,GET,NEW,PACK,PAGE,PUT,READ,READLN,
RESET,REWRITE,UNPACK,WRITE,WRITELN
注意:注意:?jiǎn)卧~不要寫錯(cuò),不分大小寫。
2、自定義標(biāo)識(shí)符:在程序中需要,由用戶自己定義的,要注意以下幾個(gè)問題:
①禁止使用關(guān)鍵字、標(biāo)準(zhǔn)標(biāo)識(shí)符作標(biāo)識(shí)符;
②盡量做到“見名知義”;
③標(biāo)識(shí)符要先說明后使用。
四、數(shù)據(jù)類型
1、計(jì)算機(jī)處理的對(duì)象就是數(shù)據(jù),數(shù)據(jù)的一個(gè)重要特征就是它的類型,類型決定了它可以進(jìn)行的運(yùn)算、它可能取值
的范圍、它需要占用的計(jì)算機(jī)空間。
2、四種簡(jiǎn)單的標(biāo)準(zhǔn)數(shù)據(jù)類型:
①INTEGER:整形,一32768~32767;占用2個(gè)字節(jié);
②REAL:實(shí)形,10°8~1038,1038~_10-38.關(guān)于“溢出”;占用4個(gè)字節(jié);
③CHAR:字符型,能顯示和打印輸出的字符,如“A”,"=",“a”;
占用1個(gè)字節(jié);
?BOOLEAN:布爾型(邏輯型),TRUE(真)、FALSE(假);占用1個(gè)字節(jié);
五、常量
在程序運(yùn)行過程中,其值不能被改變的量,稱為“常量”。
如:MAXINT(32767),PI=3.1415926,“A”,TRUE,FALSE?
1、整形常量:MAXINT--MAXINT—1
2、實(shí)形常量:
表示方法:十進(jìn)制表示法,如一123456.789,7.55,-0.012
科學(xué)計(jì)數(shù)法,ia120000000,即1.2*—應(yīng)寫成1.2E+8
—0.000000012,即一1.2*10—:應(yīng)寫成一1.2E—8
3、字符常量:ASCH碼字符集,256個(gè),記住幾個(gè)關(guān)鍵的。
4、布爾常量:FALSE<TRUE
5、符號(hào)常量:CONST標(biāo)識(shí)符=值;"先說明后使用”,“見名知義”;
六、變量
在程序的運(yùn)行過程中,它的值可以改變的量。變量有“三要素”:
1、變量名:標(biāo)識(shí)符,要正確、有意義;
2、變量的類型:INTEGER,REAL,CHAR,BOOLEAN:
3、變量的值:可變,在某一時(shí)刻是一個(gè)確定的值;
也要“先說明后使用”,說明方法:
VAR變量名:類型名;
注意1:一個(gè)程序只要一個(gè)VAR,相同類型的變量用逗號(hào)隔開一起定義。
2:變量在定義的同時(shí)就確定了類型,也就確定了取值范圍和可以進(jìn)行的運(yùn)算,
同時(shí)計(jì)算機(jī)也會(huì)為它開辟一個(gè)存儲(chǔ)空間存放值。解釋T+1->T的含義。
七、標(biāo)準(zhǔn)函數(shù)
PASCAL預(yù)先寫好的一些有用的小程序,供用戶直接調(diào)用,稱為標(biāo)準(zhǔn)函數(shù)。
函數(shù)的作用:得到一個(gè)值;
調(diào)用方法:函數(shù)名(參數(shù));
函數(shù)的兩個(gè)注意問題:自變量的類型,函數(shù)值的類型;
1、算術(shù)函數(shù):8個(gè)
ABS(X):X可以為INTEGER或REAL,作用求X的絕對(duì)值;
SQR(X):X可以為INTEGER或REAL,作用求X的平方值;
SQRT(X):X可以為非負(fù)整數(shù)或非負(fù)實(shí)數(shù),作用求X的絕對(duì)值;
SIN(X):正弦;
COS(X):余弦;
ARCTAN(X):反正切;
EXP(X):指數(shù),X可以為INTEGER或REAL,作用求e的X次方;
e=2.71828
LN(X):自然對(duì)數(shù),X為正整數(shù)或正實(shí)數(shù),作用求X的自然對(duì)數(shù);
2、轉(zhuǎn)換函數(shù):4個(gè)
TRUNC(X):截尾,X為REAL,作用去掉X的小數(shù)部分;
ROUND(X):舍入,X為REAL,作用為小數(shù)部分四舍五入;
ORD(X):序號(hào),X為INTEGER、CHAR、BOOLEAN,作用求X的序號(hào);
CHR(X):字符,X為INTEGER,作用求以X為序號(hào)的字符,是ORD函數(shù)的反函數(shù);
ASCII碼:見表
將字符轉(zhuǎn)換為數(shù)字:ORD('X')—ORD('0');
記住“A”、"a”、“0”的ASCII碼便行,其它可計(jì)算出。
3、順序函數(shù):2個(gè)
PRED(X):前驅(qū),X為INTEGER、CHAR、BOOLEAN,作用取X的前一個(gè)數(shù)據(jù)。
SUCC(X):后繼,X為INTEGER、CHAR、BOOLEAN,作用取X的后一個(gè)數(shù)據(jù)。
注意:第一個(gè)數(shù)沒有前驅(qū),最后一個(gè)數(shù)沒有后繼。
4、邏輯判斷函數(shù):3個(gè)
ODD(X):奇函數(shù),X為INTEGER,判斷X是奇數(shù)還是偶數(shù),
若X為奇數(shù)則值為TRUE(1),否則值為FALSE(0);
OLN(X):行結(jié)束函數(shù),判斷一換是否結(jié)束;
EOF(X):文件結(jié)束函數(shù),判斷文件是否結(jié)束;
八、算術(shù)運(yùn)算符
加(+)減(-)乘(*)除(/):運(yùn)算數(shù)都可以是INTEGER或REAL:
結(jié)果為INTERGER或REAL("/”的結(jié)果必為REAL)
整數(shù)除DIV:運(yùn)算數(shù)都是INTEGER,結(jié)果也是INTEGER;
如:16DIV3=5;-21DIV2=-10;
求余MOD:運(yùn)算數(shù)都是INTEGER,結(jié)果也是INTEGER;
如:16MOD3=1;-21MOD2=-1;
九、表達(dá)式
1、數(shù)學(xué)表達(dá)式:
運(yùn)算順序:圓括號(hào)()一>函數(shù)一>*、/、DIV、MOD—>+、—;內(nèi)層括號(hào)優(yōu)先。
X+2Y(X+2*Y)/(3*X—5*Y)
3X-5Y
COSX+4
(COS(X)+4)/(X*X*X)
2
AX+BX+CA*X*X+B*X+C
VP(P-A)(P-B)(P-C)SQRT(P*(P-A)*(P-B)*(P-C))
X-Y
ABS((X—Y)/3)
2、關(guān)系表達(dá)式:兩個(gè)數(shù)據(jù)的比較運(yùn)算,其結(jié)果為布爾值(真或假)
關(guān)系運(yùn)算符:大于(>)、等于(=)、小于(<)、大于等于(>=)、
小于等于(<=)、不等于(o)
如:15>6結(jié)果為真(TRUE);
7.6>8.9結(jié)果為假(FALSE);
'A'>B結(jié)果為假;
TRUE>FALSE結(jié)果為真;
注意:3.1415926=3.1415927?不一定,因?yàn)閷?shí)數(shù)在計(jì)算機(jī)內(nèi)是按照近似值存放的,所以是否相等取
決于題目(你)的要求。一般要比較兩個(gè)實(shí)數(shù)X,Y是否相等,可假設(shè)一個(gè)很小的數(shù)MIN(根據(jù)題目
(自己)的要求定),如果ABS(X-Y)<MIN,則認(rèn)為X,Y相等,否則不等。
3、邏輯運(yùn)算:布爾運(yùn)算,只有3個(gè)運(yùn)算符:
邏輯與(AND)、邏輯或(OR)>邏輯非(NOT)
ABAANDBAORBNOTA
TRUETRUETRUETRUEFALSE
TRUEFALSEFALSETRUEFALSE
FALSETRUEFALSETRUETRUE
FALSEFALSEFALSEFALSETRUE
如:A>0;NOT(A>0):取反;
(X>0)AND(Y>0):而且;
(X>0)OR(Y>0):或者;
舉例:已知X=4,Y=5,Z=6,B1=TRUE,B2=FALSE,B3=TRUE,
求下列表達(dá)式的值。
①X+3*Y>-6*Z:TRUE;
②(X<Y)ANDB3:TRUE;
③(X>6)OR(Y<3)ANDBl:FALSE;
@(B1=B2)ANDNOT(B2ORB3):FALSE:
⑤NOTB2ANDNOT(XoY):FALSE;
TURBOPASCAL7.0的使用
1、TP7.0的安裝:
雙擊tp7.0>一直按"Y"+回車>就會(huì)出現(xiàn)Tp目錄Tp目錄>"右鍵單擊"Turbo.exe圖標(biāo)
>選擇“屬性”——>再單擊“程序”標(biāo)簽——>單擊“高級(jí)”按扭一一>選擇“必要時(shí)建議MS-DOS方式”——>還可以
修改“屏幕”的大小——>全部改好后按“確定”就可以用TP了。注意其它一些選項(xiàng)不要修改。
2、啟動(dòng)和退出:
雙擊C:——>雙擊TP子目錄——>雙擊快捷方式圖標(biāo)TURBO——>進(jìn)入TP;也可以在桌面上建立一個(gè)TURBO快
捷方式;退出時(shí)單擊“FILE”——>“EXIT”——>關(guān)閉TP窗口;
3、TP的使用:
①輸入源程序;
②存盤:?jiǎn)螕簟癋ILE”——>選擇“SAVE”——>C:'文件名(或A:)——>回車(單擊0K);
或按"F2”鍵。
③編譯:檢查程序有無語法和邏輯上的錯(cuò)誤。
單擊“COMPILE”——>“COMPILE”——>出現(xiàn)錯(cuò)誤提示就修改光標(biāo)附近的錯(cuò)誤,直至出現(xiàn)“success”
的窗口,表示你的程序在語法和邏輯上完全正確,再次保存;但是否滿足題目的要求,即功能上是否正確
還不知道。
或按“ALT”+“F6”。
④運(yùn)行:?jiǎn)螕?RUN">"RUN”>輸入數(shù)據(jù)后回車確認(rèn);
或按“CTRL"+"F9"o
⑤看結(jié)果:?jiǎn)螕簟癉EBUG”——>“USERSCREEN”,看結(jié)果是否正確——>按任意鍵返回TP窗口(有錯(cuò)誤,則
修改源程序再編譯、運(yùn)行、保存,直至結(jié)果正確);
注意:一個(gè)輸入數(shù)據(jù)得到的結(jié)果正確并不能說明你的程序?qū)θ魏屋斎氲臄?shù)據(jù)都對(duì),
所以要多用一些數(shù)據(jù)去測(cè)試程序的正確性。
⑥再編一個(gè)新程序:一定要單擊“FILE”——>“NEW”;千萬不能把兒個(gè)程序保存在一個(gè)文件中,一個(gè)程序就對(duì)
應(yīng)著一個(gè)文件?;蛳汝P(guān)閉前程序(WINDOW——>CLOSE);
⑦打開已有程序:?jiǎn)螕簟癋ILE”>“OPEN”——>文件名(路徑結(jié)合OPEN按鈕);
⑧“CTRL”+“C”或“CTRL”+“BREAK”終止程序的運(yùn)行(因?yàn)檫壿嬪e(cuò)誤出現(xiàn)黑屏或死循環(huán)),退到編輯狀
態(tài)。
⑨增加觀察窗口:“DEBUG”——>“WATCH”;
增加輸出屏幕窗口:“DEBUG——>OUTPUT”;
改變各個(gè)窗口的大小和位置:拖動(dòng)鼠標(biāo)(右下角、上端等);
⑩增加跟蹤變量:先激活觀察窗口(WATCH窗口):按“INSERT”鍵——>輸入變量名或數(shù)組名等——>單步跟蹤
(用F7或F8鍵,區(qū)別是F7連子程序也一起跟蹤,而F8只跟蹤主程序,把子程序當(dāng)一個(gè)語句調(diào)用執(zhí)行。)——>出現(xiàn)錯(cuò)
誤,按F9鍵回到編輯窗口修改——>保存后再跟蹤。
順序結(jié)構(gòu)(一)
一、程序:是由若干條語句組成的。一條語句完成一個(gè)動(dòng)作或功能,若干條語句組合在一起便可以完成一個(gè)任務(wù),
實(shí)現(xiàn)用戶的意圖。因此,能否正確利用語句的功能來達(dá)到預(yù)定的要求,是程序設(shè)計(jì)的關(guān)鍵。
二、程序的三種基本結(jié)構(gòu)
1、順序結(jié)構(gòu):按照語句的書寫順序,依次執(zhí)行。
2、選擇結(jié)構(gòu)(分支結(jié)構(gòu)):根據(jù)給定的條件,判斷成立與否,成立做?件事,
不成立做另外一件事。兩件事必須做一件且只能做一件。
3、循環(huán)結(jié)構(gòu)(重復(fù)結(jié)構(gòu)):重復(fù)做某件事。3利I
①計(jì)數(shù)循環(huán):重復(fù)執(zhí)行的次數(shù)確定;
②當(dāng)型循環(huán):當(dāng)條件成立時(shí),反復(fù)做某件事;
③直到型循環(huán):反復(fù)做某件事,直到條件成立時(shí)為止。
三、補(bǔ)充介紹TP70系統(tǒng)的使用:以用WRITELN語句打印0K圖形為例,也可以讓學(xué)生自由發(fā)揮,調(diào)動(dòng)學(xué)生的積極
性。
*******
****
****
******
****
****
*******
四、輸出語句:寫語句
1、命令:WRITE(輸出項(xiàng));
或WRITELN(輸出項(xiàng));
2、說明:①輸出項(xiàng)可以是字符串:用單引號(hào)引起來的一串字符,如WRTIE(,***,):
數(shù)值常量:$11WRITE(8);
變量:輸出變量的值,注意變量必須要先定義再賦值,然后才可以輸出值,如
WRITE(A);
表達(dá)式:輸出表達(dá)式的值,表達(dá)式必須正確,如WRITE(A+B);
②可以有多個(gè)不同類型的輸出項(xiàng),之間用逗號(hào)隔開。
如WRITE('A=',A);WRITE(X,X+2,Y,Z);
3、兩者區(qū)別:①:WRITE連續(xù)輸出;而WRITELN輸出完后會(huì)自動(dòng)換行;
②:WRITE至少有1個(gè)輸出項(xiàng);而WRITELN可以無,表示換一行;
③:WRITE(X,Y)=WRITE(X);WRITE(Y);
而WRITELN(X,Y)=WRITE(X);WRITELN(Y);
<>WRITELN(X);WRITELN(Y);
五、賦值語句
1、語句格式:變量名:=表達(dá)式;
2、語句作用:先計(jì)算右邊表達(dá)式的值,然后賦給左邊的變量;賦值號(hào):=
3、變量要遵循“先說明后使用”的原則;
說明方法:VAR變量名:類型名;
注意:說明必須在VAR之前,一個(gè)程序中只要1個(gè)VAR,相同類型的變量可以一起說明,多個(gè)變量
之間用逗號(hào)隔開就行了;
4、右邊表達(dá)式必須有確定的值,且類型必須與左邊的變量一致;
例:已知梯形的上底、下底和高,編程求梯形的面積。
PROGRAMTIXINGMIANJI(INPUT,OUTPUT);
VARA,B,H,S:REAL;
BEGIN
A:=5;
B:=8;
H:二9;
S:=(A+B)*H/2;
WRITELN(4TIXINGMIANJIWEI:',S);
END.
屏幕顯示為:TIXINGMIANJIWEI:5.8500000000E+01
為什么結(jié)果不是58.5呢?因?yàn)橛?jì)算機(jī)內(nèi)部以科學(xué)計(jì)數(shù)法表示實(shí)數(shù),要想以小數(shù)形式表示,需要用到場(chǎng)寬。
場(chǎng)寬:數(shù)據(jù)輸出時(shí)所占據(jù)的列數(shù),稱為場(chǎng)寬;
單場(chǎng)寬:對(duì)于INTEGER、CIIAR.BOOLEAN、字符串,一般用一個(gè)數(shù)值限定數(shù)據(jù)輸出的場(chǎng)寬,如WRITELN(X:
N);N要不小于數(shù)據(jù)的長(zhǎng)度。N大時(shí)左邊補(bǔ)空格;
雙場(chǎng)寬:用來控制REAL數(shù)據(jù)的輸出格式,如WRITELN(X:Nl:N2);N1表示輸出X的總列數(shù)(包括符號(hào)位、
整數(shù)部分、小數(shù)點(diǎn)、小數(shù)部分),N2表示小數(shù)部分的列數(shù)。輸出時(shí),先把小數(shù)位數(shù)右邊補(bǔ)0,再在整個(gè)數(shù)的左
邊補(bǔ)空格。
例:寫出下面程序的運(yùn)行結(jié)果
VARA:INTEGER;B:REAL;C:CHAR;D:BOOLEAN;
BEGIN
A:=1357;
B:=1234.5678;
C:='%';
D:=TRUE;
WRITELN(A,A:5,A:3);
WRITELN(B,B:12:5,B:10:2);
WRITELN(C,C:5);
WRITELN(D,D:5,D:2);
WRITELN('END.');
END.
屏幕顯示為:
1357O13571357
□1.2345678000E+03Dni234.56780
%□□□□%
TRUEOTRUETRUE
END.
作業(yè):1、J知一個(gè)學(xué)生的語文成績(jī)?yōu)?9,數(shù)學(xué)成績(jī)?yōu)?6,外語成績(jī)?yōu)?9,編程求他的總分和平均成績(jī)。
2、已知直角三角形的兩個(gè)直角邊分別為10、15,編程計(jì)算它的面積。
順序結(jié)構(gòu)(二)
一、輸入語句:讀語句
引出:在程序中為了變量獲得一個(gè)確切的值,可以用賦值語句。但有時(shí)候,程序中需要賦值的變量很多或變量
的值經(jīng)常變化。這時(shí),我們往往要修改源程序,這樣的程序通用性就不好。一個(gè)好的程序應(yīng)該是在程序運(yùn)行需要的
時(shí)候,提示用戶從鍵盤輸入原始數(shù)據(jù),然后程序繼續(xù)運(yùn)行求得結(jié)果,而不需要修改源程序。
1,語句格式:READ(輸入項(xiàng));
或READLN(輸入項(xiàng));
如:READ(A);
READ(A,B,C);
READLN(A);
2、語義:程序執(zhí)行到這個(gè)語句時(shí),就等待用戶從鍵盤輸入數(shù)據(jù),并依次賦給相應(yīng)的變量。
3、說明:①輸入的數(shù)據(jù)個(gè)數(shù)要與需要的一致;(整型和實(shí)型數(shù)據(jù)之間用空格或回車鍵隔開,
最后要用回車表示數(shù)據(jù)輸入完畢,讓程序繼續(xù)運(yùn)行)
②輸入的數(shù)據(jù)類型要與需要的相對(duì)應(yīng);(整數(shù)可以給實(shí)數(shù))
③READ和READLN的區(qū)別:幾個(gè)READ語句連續(xù)讀,中間不換行,只有當(dāng)一行數(shù)據(jù)個(gè)數(shù)不夠時(shí)才換到下
一行繼續(xù)讀;而每個(gè)READLN語句讀完后都自動(dòng)換行。而且READ語句一定要有輸入,而READLN可以沒有輸入,
表示讀入一個(gè)回車換行符(換行)。
所以,建議用READLN,輸入時(shí)一行對(duì)應(yīng)個(gè)READLN語句。并且在READ或READLN語句前最好加上個(gè)WRITE
或WRITELN提示用戶輸入數(shù)據(jù)的名稱、個(gè)數(shù)、類型。
4、舉例:
例:設(shè)程序中有兩個(gè)語句(ERAD(A,B,C);READ(D,E,F,G);),當(dāng)從鍵盤分別輸入以下兩批數(shù)據(jù)時(shí),各
變量的值分別為多少?
①6口7口8口9口10
5口4口3口2
②6口7
8D9D10
5口4口3口2口1
若語句改為READLN(A,B,C);READLN(D,E,F,G);呢?
例:設(shè)有下列語句:READ(A,B,C);
READLN(D,E);
READLN;
READLN(F,G);
其中變量都是INTEGER,輸入數(shù)據(jù)如下:
1口2
3口4口5口6口7口8
9010
11
12Q13
問:各變量值為多少?
將上一節(jié)課的例題全部用讀入語句改寫:
1、已知梯形的上底、下底和高,編程求梯形的面積。
2、已知一個(gè)學(xué)生的語文成績(jī)89,數(shù)學(xué)成績(jī)96,外語成績(jī)99,編程求他的總分和平均成績(jī)。
注意:一定要強(qiáng)調(diào)分析題目,找出已知什么,輸出什么,如何做,用什么語句,按什么程序。
例:讀入一個(gè)四位數(shù),分別求它的個(gè)位、十位、百位、千位。
VARA,G,S,B,Q:INTEGER;
BEGIN
WRITELN('PLEASEINPUTASIWEIINTEGER:');
READLN(A);
G:=AMOD10;
S:=((A-G)DIV10)MOD10;
Q:=ADIV1000;
B:=(A-1000*Q)DIV100;
WRITELN('G:',G,S',S,'B:',B,'Q:Q);
END.
(或者:在G,Q,B后面加上S:=(A-G-B*100-Q*1000)DIV10;也行)
例:輸入一個(gè)三位自然數(shù),把這個(gè)數(shù)的百位數(shù)與個(gè)位數(shù)對(duì)調(diào),輸出對(duì)調(diào)后的數(shù)。
分析:設(shè)輸入的數(shù)為M,對(duì)調(diào)后的數(shù)為N,則:
A:=MDIV100;(百位)
B:=(MDIV10)MOD10;(十位)
C:二MMOD10;(個(gè)位)
N:=C*100+B*10+A;
作業(yè):完成程序。
選擇結(jié)構(gòu)的程序設(shè)計(jì)(一)
引言:
在II常生活中,我們經(jīng)常遇到根據(jù)具體情況的不同而去做具體的事,比如:若星期天下雨,我就在家看書,否
則我就去踢足球。我們可以畫出這個(gè)語句的N-S圖(見圖I):
A>0
YN
在家踢足球打印A打印一A
看書
圖1圖2
在我們的程序設(shè)計(jì)過程中,我們也會(huì)經(jīng)常遇到這種情況,即判斷某一個(gè)條件是否成立,如果成立做一件事(執(zhí)
行一個(gè)/些語句),如果條件不成立就做另一件事(執(zhí)行另外一個(gè)/些語句)。
比如:若A為正數(shù),則打印A,否則打印-A。
我們也可以模仿上個(gè)例子畫出這件事的N-S圖(見圖2)。
再如:如果X>Y,則交換X,Y的值,讓學(xué)生完成。
要完成這些程序就要用到選擇結(jié)構(gòu)。
下面先學(xué)習(xí)一些選擇結(jié)構(gòu)的基礎(chǔ)知識(shí):
一、布爾(邏輯)常量和變量
1、布爾(邏輯型)常量:真(TRUE)、假(FALSE);
也可:CONSTT=TRUE;F=FALSE;
2、布爾變量:變量的類型為布爾型,即存放布爾型數(shù)值的變量;
定義:VARA,B:BOOLEAN;
A:=ODD(3);
3、布爾型數(shù)據(jù)是順序型數(shù)據(jù):FALSE——0;TRUE——1,
可以使用函數(shù)ORD、PRED、SUCC;
二、關(guān)系表達(dá)式:比較大小
1、關(guān)系表達(dá)式是山一個(gè)關(guān)系運(yùn)算符將兩個(gè)相容(有序)類型的表達(dá)式聯(lián)結(jié)起來的式子。
2、PASCAL中的運(yùn)算符有6個(gè):<、<=、>、>=、=、<>;舉例判斷真假。
3、數(shù)值型數(shù)據(jù)的比較按其大小、其它類型數(shù)據(jù)按照其序號(hào)大小進(jìn)行比較。山于實(shí)型數(shù)據(jù)在計(jì)算機(jī)中是近似存儲(chǔ)
的,所以比較大小時(shí)不能直接比。如:0.666666等不等于0.666667呢?不一定,若要求誤差在0.001范圍內(nèi)則
等,若要求在0.00000001范圍內(nèi)則不相等。此時(shí),應(yīng)改用下列式子判斷X是否等于Y:ABS(X-Y)<1e-3
4、關(guān)系表達(dá)式的值是一個(gè)布爾量(TRUE、FALSE)o
三、布爾(邏輯)運(yùn)算符
1、運(yùn)算符:NOT(邏輯非)、AND(邏輯與)、OR(邏輯或)
2、設(shè)A、B為布爾型數(shù)據(jù),則“真值表”如下:
ABNOTAAANDBAORB
TTFTT
TFFFT
FTTFT
FFTFF
四、關(guān)系(邏輯)表達(dá)式:用邏輯運(yùn)算符連接起來的式子
設(shè)X為整數(shù),則
1、表示:正奇數(shù):(X>0)AND(ODD(X))
1到10之間的整數(shù):(X>=1)AND(X<=10)
大于100或小于10的整數(shù):(X>100)OR(X<10)
2、運(yùn)算符的運(yùn)算次序(優(yōu)先級(jí))
從高到低如下:
括號(hào)(內(nèi)層優(yōu)先)>函數(shù)——>NOT——>*、/、DIV、MOD、AND——>+、-、OR——>關(guān)系(邏輯)運(yùn)算
符;
運(yùn)算規(guī)律:先高級(jí)后低級(jí),同級(jí)自左向右運(yùn)算。
3、例子:
?TRUEANDNOT(1<-1)值為TRUE;
②設(shè)X=6,1=4,J=6,貝ij:
TRUEANDNOT(X>5)AND(I>J+5)ORTRUE>FALSEANDFALSE值為TRUE。
③設(shè)X=5(6),求以下表達(dá)式的值:(X+5)*ODD(X)+XDIV2值為12(3)。
④已知X,Y,Z均為1,求值:
TRUEAND(X>0)AND(Y>0)OR(Z<0)值為TRUE。
4^布爾變量的輸入、輸出:
輸入:只能用賦值語句(A:=TRUE),不能用讀語句。
輸出:WRITELN('A=',A);則輸出A=TRUE
么,如何用計(jì)算機(jī)語言完成以上的例子呢?下面我們就學(xué)習(xí)PASCAL中的條件語句。
五、選擇語句:IF語句
1、格式:1F條件表達(dá)式THEN語句1
{ELSE語句2);
比如:①若A為正數(shù),則打印A,否則打印-A:
語句如下:IFA>0THENWRITELN(A)
ELSEWRITELN(-A);
改用ABS函數(shù)做:WRITELN(ABS(A))。
②若X>R,則輸出X:
語句如下:IFX>=0THENWRITELN(X);
③學(xué)生練習(xí):若X>0,則求X的平方根,否則求X的平方。
2、例題:
例一:將③編寫成程序,學(xué)生練習(xí)自己編。
例二:超市購物:假設(shè)超市購物不超過100元時(shí)按九折付款,如超過100元,則超過部分按七折收費(fèi)。編程幫助超
市完成這一轉(zhuǎn)化工作。
VARW,X:REAL;
BEGIN
READLN(W);
IFW<=100THENX:=0.9*W
ELSEX:=0,9*100+0.7*(W-100);
WRITELN(X);
END.
例三:輸入A,B兩個(gè)數(shù),若A>B則交換A,Bo
IFA>BTHENT:=B;B:=A:A:=T;對(duì)嗎?上機(jī)測(cè)試!
結(jié)論:在條件成立的情況下應(yīng)該做一件事(3條語句),而現(xiàn)在只做了1個(gè)語句。怎么辦?
K、復(fù)合語句:
BEGIN語句組END;
例三應(yīng)改為IFA>BTHEN
BEGIN
T:=B;
B:=A;
A:=T;
END.
例四:給出三角形的三個(gè)邊長(zhǎng)A,B,C,求三角形的面積。
1、面積公式:S=(A+B+C)/2;AREA=SQRT(S*(S-A)*(S-B)*(S-C))
2、構(gòu)成三角形的條件:A+B>C且A+C>B且B+C>A
3、畫出N-S流程圖:
4、程序:
例五:從鍵盤輸入兩個(gè)數(shù),按從小到大輸出。
例六:從鍵盤輸入3個(gè)數(shù),按從小到大輸出。
家庭作業(yè):1、某運(yùn)輸公司的收費(fèi)公式如下:
運(yùn)費(fèi)=里程(公里)*貨重(噸)*單價(jià)(每公里每噸運(yùn)費(fèi)),
例外按以下方法打折:
貨重WW<2W>=2且W<4W>=4且W<6W>=6
距離S>=3002%4%6%8%
距離S<30002%4%6%
請(qǐng)編制?個(gè)程序幫助算運(yùn)費(fèi)。
2、輸入一個(gè)字符,輸出它的ASCII碼值和它的前驅(qū)、后繼字符。
選擇結(jié)構(gòu)的程序設(shè)計(jì)(二)
一、IF語句的嵌套:有時(shí)一個(gè)IF語句解決不了問題,如:
'+1(X>0)
例一:計(jì)算符號(hào)函數(shù)的值。(已知Y={0(X=0))
.-I(X<0)
方法1:BEGIN
WRITE('INPUTX:');
READLN(X);
IFX>OTHENY:=1;
IFX=OTHENY:=0;
IFX<0THENY:=-l;
WRITE(Y);
END.
方法2:BEGIN①IF語句的第一種嵌套格式:套在ELSE語句后面;
WRITE(INPUTX:);②ELSE與最近的IF語句配對(duì);
READLN(X);③盡量采用縮進(jìn)格式,增強(qiáng)程序的可讀性;
IFX>0THENY:=1
ELSEIFX=0THENY:=0
ELSEY:=-l;
WRITE(Y);
END.
方法3:BEGINIF語句的第二種嵌套格式:套在THEN
WRITE(INPUTX:);語句后面;少用為妙!
READLN(X);
Y:=-l;
IFX>=0THENIFX>0THENY:=1
ELSEY:=0;
WRITE(Y);
END.
例二、輸入三角形的三邊,判斷它是否是直角三角形。
分析:先輸入三邊(a,b,c),
再判斷是否能構(gòu)成三角形(a+b>c且a+c>b且b+c>a),
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024有債務(wù)離婚協(xié)議書
- 2024攝影工作室影視制作項(xiàng)目拍攝執(zhí)行合同范本3篇
- 中國(guó)地質(zhì)大學(xué)(武漢)《管理型財(cái)會(huì)仿真實(shí)訓(xùn)》2023-2024學(xué)年第一學(xué)期期末試卷
- 浙江萬里學(xué)院《金屬塑性成形工藝與模具設(shè)計(jì)》2023-2024學(xué)年第一學(xué)期期末試卷
- 長(zhǎng)江師范學(xué)院《定量分析化學(xué)實(shí)驗(yàn)》2023-2024學(xué)年第一學(xué)期期末試卷
- 2025年度新材料研發(fā)及產(chǎn)業(yè)化合作協(xié)議3篇
- 銀行工作總結(jié)人才培養(yǎng)鑄就輝煌
- 2025年度精密儀器設(shè)備安裝與承包裝卸協(xié)議3篇
- 教育培訓(xùn)行業(yè)話務(wù)員工作內(nèi)容
- 互聯(lián)網(wǎng)行業(yè)前臺(tái)工作總結(jié)
- 醫(yī)療美容服務(wù)風(fēng)險(xiǎn)免責(zé)協(xié)議書
- 寒假散學(xué)典禮上校長(zhǎng)講話稿:老校長(zhǎng)叮囑!6個(gè)堅(jiān)持+5個(gè)珍惜字字戳心
- 2024年鋁錠購銷的合同雙方信息登記表
- 貴州省遵義市播州區(qū)2023-2024學(xué)年二年級(jí)上學(xué)期數(shù)學(xué)期末質(zhì)量監(jiān)測(cè)試卷
- 2024版智能硬件產(chǎn)品研發(fā)合作協(xié)議3篇
- 巖土工程勘察課件0巖土工程勘察
- 《乘用車越野性能主觀評(píng)價(jià)方法》
- 國(guó)家電網(wǎng)招聘之財(cái)務(wù)會(huì)計(jì)類題庫含完整答案(必刷)
- 幼師個(gè)人成長(zhǎng)發(fā)展規(guī)劃
- 2024-2025學(xué)年北師大版高二上學(xué)期期末英語試題及解答參考
- 2024年手術(shù)室?guī)Ы坦ぷ饔?jì)劃樣本(5篇)
評(píng)論
0/150
提交評(píng)論