begin
assign(input,'***.in');;
reset(input);
assign(output,'***.out');
rewrite(output);
程式的主體部分}
close(input);
close(output);
end.
ex:從檔案中讀入兩個加數,把它們的和寫入輸出檔案中。
program mm;
var a,b,c:integer;
begin
assign(input,'data.in');
rewrite(output);
readln(a,b);
c:=a+b;
write(c);
close(input);
close(output);
一、檔案的概念
檔案是按照其內在的邏輯聯絡分別組織在一起,構成不同的資料集合。它的名字就是檔名。使用檔案有以下幾點好處:
(1)檔案可以永久儲存,其中的資料不會因為應用程式的結束或關機而消失。
(2)檔案中的資料可以為多個應用程式所共享。
(3)檔案中的資料可以多次重複使用。
(4)檔案中的存放資料的數量在理論上沒有限制。
在turbo pascal語言中,檔案是由一系列基本資料元素排列而成的,這些資料元素的資料型別是相同的,但通常有不同的取值。檔案的基本資料元素的資料型別稱為檔案的基型別。檔案中所含的資料元素的個數稱為檔案的長度。
檔案的長度和檔案所占有的位元組數可能不同。檔案中元素的個數即檔案的長度不是固定不變的。
用於暫時存放檔案中的資料的記憶體區稱為檔案緩衝區。對於檔案的操作至少要由以下三個過程:
(1)開啟乙個檔案
(2)對檔案進行操作(讀或寫)
(3)關閉檔案
按照對檔案的讀寫方式,可以把檔案分為順序檔案和隨機檔案。順序檔案的特點是對檔案的讀或寫操作都只能按檔案中元素的順序,所以順序檔案的讀和寫不能交叉進行。隨機檔案的特點是可以直接對檔案中某個元素進行讀或寫,而不需要先對它前面的元素作相同的操作。
對於隨機檔案的讀和寫可以交叉進行。
turbo pascal語言中,按照檔案的儲存方式可以把檔案分為文字檔案和型別檔案。若檔案中的資料都是以ascii碼形式儲存的,則這種檔案稱為文字檔案。若檔案中的資料都是以非ascii碼形式儲存的,則這種檔案稱為型別檔案。
turbo pascal中文字檔案都是順序檔案,型別檔案都是隨機檔案。
二、型別檔案
按資料的二進位制**形式存放時的檔案稱為型別檔案。如果再按照組成型別檔案的元素資料結構分,又可以分為有型別檔案和無型別檔案。其定義為:
type 型別名=file of 基型別;
型別名=file;
例如:var f:file of integer;
說明f為名的變數對應檔案將用於存放整數。
var g:file;
說明g為名的變數對應檔案的資料無任何規定。
turbo pascal有關型別檔案的函式和過程
(1)assign過程
形式:assign(f,str);
功能:將檔名字串str賦給檔案變數f,程式對檔案變數f的操作代替對檔案str的操作。
(2)rewrite過程
形式:rewrite(f);
功能:建立並開啟乙個新的允許寫磁碟檔案,其檔名必須先由assign過程賦給變數f。這時,指向檔案元素的指標指向第乙個元素,rewrite過程所建立的檔案為空檔案。
(3)reset過程
形式:reset(f);
功能:開啟乙個已經存在的磁碟檔案,其檔名必須先由assign過程賦給變數f,該檔案只能讀,指向檔案元素的指標指向第乙個元素。
(4)read過程
形式:read(f,var表);
功能:從磁碟檔案f中,將資料依次讀到var表表示的各個變數中。
(5)write過程
形式:write(f,var表);
功能:將var表所表示的各個變數的值依次寫到磁碟檔案f上。
(6)close過程
形式:close(f);
功能:關閉和f關聯的磁碟檔案,在寫操作時自動產生乙個檔案結束標誌。
(7)seek過程
形式:seek(f,n);
功能:把檔案指標移到f指明檔案的第n個元素。
(8)eof函式
形式:eof(f);
功能:若檔案指向檔案尾,則返回true,否則返回false。
對有型別檔案的寫操作步驟為:
assign(f,str);
rewrite(f);
write(f,var表);
close(f);
對有型別檔案的讀操作步驟為:
assign(f,str);
reset(f);
read(f,var表);
close(f);
例:在磁碟上建立乙個1~50的平方數的資料檔案zhoufei.dat。要求以乙個數,這個數的平方數的格式寫入。
program zhoufei;
var f:file of integer;
i:integer;
begin
assign(f,'zhoufei.dat');
rewrite(f);
for i:=1 to 50 do write(f,i,sqr(i));
close(f)
end.
三、文字檔案
文字檔案的內容有ascii字符集中的字元組成,因此文字檔案也稱ascii碼檔案,它可以用dos中的type命令列出內容。文字檔案具體是由一系列行組成,每一行可以包括0個或多個字元型成分,並以也行結束符結尾,文字檔案型別txt和型別檔案file of char區別在於後者不包含行結束符。
文字檔案和型別檔案在讀寫上的差別在於前者只能按次序順序讀寫,而後者可以不按照次序讀寫。適用文字檔案的函式和過程除了用於型別檔案操作的過程和函式外主要還有:
(1)readln過程
形式:readln(f,var表);或readln(f);
功能:從磁碟檔案f中,將資料依次讀到var表表示的各變數中(其中readln(f)唯讀資料),並將檔案指標移到行結束符後,就是下一行開頭。
(2)writeln過程
形式:writeln(f,var表)或writeln(f);
功能:將var表所表示的各個變數的值依次寫到磁碟檔案f上去(writeln(f)不寫值),然後再寫乙個行結束符。
(3)append過程
形式:append(f);
功能:開啟乙個已經存在的磁碟檔案,其檔名必須和assign過程中的變數名f相對應,該檔案只能寫,此時檔案指標指向檔案尾。
(4)eoln函式
形式:eoln(f);
功能:若檔案指標指向行結束符或檔案結束符,則返回true,否則返回false。
對文字檔案的寫操作步驟:
assign(f,str);
rewrite(f); 或append(f);
write(f,var表);或writeln(f);
close(f);
對文字檔案的讀操作步驟:
assign(f,str);
reset(f);
readln(f,var表);或readln(f);
close(f);
2009-10-29 18:38:00 附陶陶摘蘋果
program apple;
var a:array[1..10] of integer;
n,i,total:integer;
begin
assign(input,'apple.in');reset(input);
assign(output,'apple.out');rewrite(output);
for i:=1 to 10 do read(a[i]);
readln(n);
n:=n+30;
for i:=1 to 10 do
if n>=a[i] then inc(total);
writeln(total);
close(intput);
close(output);
end.
步驟如下:
1。在pascal系統資料夾下建立乙個輸入檔案,如「apple.in"
注:在申明變數時要寫
fin,fout:text;
資訊學奧賽選拔賽題目
對於乙個四位數a來說,它的前兩位我們可以這樣來表示a div 100,例如a 3456,a的前兩位是34與a div 100 結果相同,那麼a的後兩位可以怎麼表示 這樣我們想表示整數a是偶數可以這樣表示 a mod 2 0,那麼我們想表示整數a能被整數b整除應該如何表示已知整數a,那麼a的十位數如何...
資訊學奧賽初賽程序填空
1.下列程式計算1000以內能被3整除的自然數之和,請完成程式。include void main cout 2.下面的函式fun未使用中間變數實現對兩個數的交換,請完成下列函式的定義。void fun int x,int y 3.下面的函式bubble 是對整數陣列a按公升序排序的冒泡演算法,其中...
資訊學奧賽輔導 排列與組合基礎知識
排列與組合基礎知識 有關排列與組合的基本理論和公式 加法原理 做一件事,完成它可以有n類辦法,在第一類辦法中有m1種不同的方法,在第二類中辦法中有m2種不同的方法,在第n類辦法中有mn種不同方法。那麼完成這件事共有n m1 m2 mn種不同的方法,這一原理叫做加法原理。乘法原理 做一件事,完成它需要...