惠陽某中學(xué)計(jì)算機(jī)奧賽培訓(xùn)講義_第1頁
惠陽某中學(xué)計(jì)算機(jī)奧賽培訓(xùn)講義_第2頁
惠陽某中學(xué)計(jì)算機(jī)奧賽培訓(xùn)講義_第3頁
惠陽某中學(xué)計(jì)算機(jī)奧賽培訓(xùn)講義_第4頁
惠陽某中學(xué)計(jì)算機(jī)奧賽培訓(xùn)講義_第5頁
已閱讀5頁,還剩71頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論