中五級電腦科 PASCAL檔案處理
重溫檔案的結構名稱: 檔案 記錄 欄 5A 陳大文 10 135.5 201.2 5A 李小娟 21 120.2 98.5 班別 (字符串) 學生姓名(字符串) 學號 (整數) 身高 (實數) 體重 (實數) 5A 陳大文 10 135.5 201.2 5A 李小娟 21 120.2 98.5 5D 常歡樂 40 129.7 105.3 : 欄
跟據PASCAL的定義,檔案可分為 Untyped file (記錄只接受單一數據類型,但可對文字類數據的記錄,作出記錄長度的設定) Text file (文字檔,每個記錄皆可存放不同長度及類型的數據-對所有記錄並無任何限制)
Untyped file 每個記錄只裝載 單一資料 每個記錄的類型及 長度皆為相同 貨品甲 貨品甲 貨品甲 貨品甲 貨品甲 貨品甲
Typed file 每個記錄可裝載 多種類型資料 但每個記錄所包括 的數據類型、次序 及長度皆為相同 貨品甲、乙、丙.... 每個記錄可裝載 多種類型資料 但每個記錄所包括 的數據類型、次序 及長度皆為相同 貨品甲、乙、丙.... 貨品甲、乙、丙.... 貨品甲、乙、丙.... 貨品甲、乙、丙....
Text file 文字檔 每個記錄可裝載 不同類型、長度 及次序的資料 對記錄的結構並 無任何特別限制 貨品甲、乙、丙 貨品甲 貨品乙、甲 每個記錄可裝載 不同類型、長度 及次序的資料 對記錄的結構並 無任何特別限制 貨品甲 貨品乙、甲 貨品丙、甲、乙 貨品丙
記錄 文字檔的優點與缺點: 結構簡單 因所有數據(包括字符及數字)皆以ASCII 方式逐個字符寫入檔案,故可用任何文 書處理軟件翻閱檔案內容 保密不足 從檔案輸入資料時,往往發生結構性錯誤 1, 2, 3 記錄 123, 0, 0 123
如何利用PASCAL開啟電腦檔案 所需檔案的類型(文字檔) 該檔案是用作輸入還是輸出 了解或決定個別記錄的欄位結構(欄的設定) 貯於磁碟或硬磁碟的確實檔案名稱 決定該檔案於PASCAL內的對應檔案名稱
如何利用PASCAL開啟電腦檔案 於說明部份定意對應檔案名稱 var infile : text; 就叫‘infile’吧!
如何利用PASCAL開啟電腦檔案 PASCAL 於說明部份定意對應檔案名稱 var infile : text; 於語句部份把檔案的的確實名稱和對應名稱 連繫起來 assign (infile, ’c:\datafile.txt’); PASCAL
如何利用PASCAL開啟電腦檔案 於說明部份定意對應檔案名稱 var infile : text; 於語句部份把檔案的的確實名稱和對應名稱 連繫起來 assign (infile, ’c:\datafile.txt’); 開啟該檔作輸入或輸出用途 輸入:reset (infile); 輸出:rewrite (infile);
如何利用PASCAL開啟電腦檔案 於說明部份定意對應檔案名稱 var infile : text; 於語句部份把檔案的的確實名稱和對應名稱 連繫起來 assign (infile, ’c:\datafile.txt’); 開啟該檔作輸入或輸出用途 輸入:reset (infile); 輸出:rewrite (infile); 逐一輸入或輸出記錄 輸入:read (infile, data); 輸出:write (infile, data);
如何利用PASCAL開啟電腦檔案 於說明部份定意對應檔案名稱 var infile : text; 於語句部份把檔案的的確實名稱和對應名稱 連繫起來 assign (infile, ’c:\datafile.txt’); 開啟該檔作輸入或輸出用途 輸入:reset (infile); 輸出:rewrite (infile); 逐一輸入或輸出記錄 輸入:read (infile, data); 輸出:write (infile, data); 關閉檔案連結 close (infile)
可使用WRITE或WRITELN 但建議使用WRITELN 實例一:將1至10寫入檔案 PROGRAM INPUT_DEMO; VAR I : INTEGER; INFILE : TEXT; BEGIN ASSIGN ( INFILE, ’C:\DATA.TXT’ ); REWRITE ( INFILE ); FOR I := 1 TO 10 DO WRITELN ( INFILE, I ); CLOSE ( INFILE ); END. 可使用WRITE或WRITELN 但建議使用WRITELN
輸出數據時要注意的地方: 避免將多個數字類數據放在一起 例:102030 10 20 30 避免將多個數字類數據放在一起 例:102030 10 20 30 字符串後不應再擺放任何類型的數據 (包括另一字符串) 建議每一記錄只貯存單一數據 例子 將123及10 May 2003寫入同一記錄 輸出時變成12310及May 2003
輸入數據時要注意的地方: 必須先了解所輸入數據的類型 依照輸入數據時的結構而選擇 READ 或 READLN 錯用READ可能會讀入不必要的數據 CR 和 LF
實例二:列印已寫入的數據 PROGRAM OUTPUT_DEMO; VAR I, J : INTEGER; INFILE : TEXT; BEGIN ASSIGN ( INFILE, ’C:\DATA.TXT’ ); RESET ( INFILE ); FOR I := 1 TO 10 DO BEGIN READLN ( INFILE, J ); WRITELN ( J ) END; CLOSE ( INFILE ); END.
實例三:列印已寫入的數據 PROGRAM OUTPUT_DEMO; VAR I : INTEGER; INFILE : TEXT; BEGIN ASSIGN ( INFILE, ’C:\DATA.TXT’ ); RESET ( INFILE ); REPEAT READLN ( INFILE, I ); WRITELN ( I ) UNTIL EOF ( INFILE); CLOSE ( INFILE ); END.
重溫: VAR INFILE : TEXT; ASSIGN (INFILE, ’C:\DATA.TXT’); RESET (INFILE); REWEITR (INFILE); READLN (INFILE, XXXXX); WRITELN (INFILE, XXXXX); EOF (INFILE); CLOSE (INFILE);