1 / 56

บทที่ 11 แฟ้มข้อมูล

บทที่ 11 แฟ้มข้อมูล. OUTLINE 1. ความหมายของคำว่าไฟล์ 2. ประเภทของไฟล์ 3. ขั้นตอนการทำงานกับไฟล์ 4. คำสั่งพื้นฐานเกี่ยวกับไฟล์. ความหมาย. แฟ้มข้อมูล (file) เป็นแหล่งเก็บข้อมูล ข้อมูลในไฟล์หนึ่งๆจะเก็บข้อมูลเรื่องเดียวกัน

zeshawn
Download Presentation

บทที่ 11 แฟ้มข้อมูล

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. บทที่ 11แฟ้มข้อมูล • OUTLINE 1. ความหมายของคำว่าไฟล์ 2. ประเภทของไฟล์ 3. ขั้นตอนการทำงานกับไฟล์ 4. คำสั่งพื้นฐานเกี่ยวกับไฟล์

  2. ความหมาย • แฟ้มข้อมูล(file) เป็นแหล่งเก็บข้อมูล ข้อมูลในไฟล์หนึ่งๆจะเก็บข้อมูลเรื่องเดียวกัน • ข้อมูลที่เก็บในไฟล์ อาจเป็น ข้อมูล(data file) หรือ โปรแกรม(program file)

  3. ประเภทของไฟล์ • ไฟล์ในปาสคาล มี 3 ประเภท คือ • Typed file • Text file(ไม่ลงรายละเอียด) • Untyped file (ไม่ลงรายละเอียด)

  4. ประเภทของไฟล์ • Typed file เป็นไฟล์ที่มีการระบุโครงสร้างหรือชนิดข้อมูลที่แน่นอนโดยแต่ละเรคอร์ดมีความยาวคงที่ • Text file เป็นไฟล์ที่เก็บข้อมูลชนิดข้อความมีความยาวไม่คงที่และมีตัว carriage return และ Line feed เป็นตัวบ่งบอกการจบเรคอร์ด

  5. ประเภทของไฟล์ • Untyped file เป็นไฟล์ที่ไม่มีข้อกำหนดทางโครงสร้าง หรือการจัดเรียงข้อมูลในไฟล์ จึงสามารถอ่านไฟล์ที่ไม่ได้สร้างโดยปาสคาลได้เช่น Dbase , Lotus 1-2-3

  6. ขั้นตอนการทำงานกับไฟล์ขั้นตอนการทำงานกับไฟล์ • การทำงานบนแฟ้มข้อมูลมีขั้นตอนดังนี้ 1. มีการสร้างแฟ้มข้อมูล(create file) 2. มีการเรียกใช้ข้อมูลจากแฟ้ม (retrieve file) เพื่อทำการปรับปรุงข้อมูล (ค้นหา ลบ เพิ่ม หรือ แก้ไข)

  7. ขั้นตอนการทำงานกับไฟล์ขั้นตอนการทำงานกับไฟล์ • สร้างตัวแปร เมื่อต้องการสร้างหรือเรียกใช้ไฟล์ข้อมูล ภายในโปรแกรมต้องประกาศตัวแปรที่มีชนิดเป็นแฟ้มข้อมูล VAR F: file of real; • กำหนดไฟล์ในแผ่นดิสก์(Assign)ให้ตัวแปร เนื่องจากข้อมูลมักเก็บไว้ในสื่อบันทึก เช่น แผ่นดิสก์ เพื่อให้ทราบว่าตัวแปร F เชื่อมโยงกับแฟ้มข้อมูลใดในแผ่นดิสก์ สามารถทำได้โดยคำสั่ง ASSIGN

  8. คำสั่ง ASSIGN • รูปแบบ b:\mydoc\pascal\student.dat • ชื่อไดรฟ์ ชื่อ PATH ชื่อไฟล์ ชนิดของไฟล์ ASSIGN(F,’b:mydoc\pascal\student.dat’); Assign (ตัวแปร, ชื่อไฟล์ในดิสก์)

  9. คำสั่ง ASSIGN • ชื่อไดรฟ์เป็นตัวอักษร (a-z)ตามด้วย : หากไม่ระบุชื่อไดรฟ์จะหมายถึงไดรฟ์ปัจจุบันที่กำลังใช้อยู่ • ชื่อ PATH คือชื่อไดเรกทอรีย่อยที่ใช้ขั้นโดยเครื่องหมาย \ • ชื่อไฟล์มีเป็นตัวอักษรมีความยาว 8 ตัว • นามสกุล มีความยาวไม่เกิน 3 ตัวอักษรใช้ dat เพราะเป็นแฟ้มที่ใช้เก็บข้อมูล

  10. คำสั่งพื้นฐานเกี่ยวกับไฟล์คำสั่งพื้นฐานเกี่ยวกับไฟล์ • คำสั่งพื้นฐานเกี่ยวกับไฟล์ • เปิดไฟล์ • อ่าน/บันทึก ข้อมูลจากไฟล์ • ปิดไฟล์ • คำสั่งเหล่านี้มีการใช้ต่างกันขึ้นอยู่กับประเภทของไฟล์

  11. คำสั่งพื้นฐานเกี่ยวกับไฟล์คำสั่งพื้นฐานเกี่ยวกับไฟล์ • คำสั่งเปิดไฟล์ เป็นการเปิดการสื่อสารระหว่างเครื่องคอมพิวเตอร์กับสื่อบันทึก โดยไฟล์อาจเป็น Input หรือ Output อย่างเดียว หรือเป็น Input และ Output ในขณะเดียวกัน คำสั่งเปิดไฟล์ได้แก่ rewrite , reset

  12. คำสั่งพื้นฐานเกี่ยวกับไฟล์คำสั่งพื้นฐานเกี่ยวกับไฟล์ • คำสั่ง อ่าน/บันทึก ข้อมูลบนไฟล์ คำสั่งที่ใช้อ่าน หรือ บันทึกข้อมูลมีการใช้ต่างกันข้อยุ่กับประเภทของไฟล์ เช่น read, blockread , write, writeblock

  13. คำสั่งพื้นฐานเกี่ยวกับไฟล์คำสั่งพื้นฐานเกี่ยวกับไฟล์ • คำสั่งปิดไฟล์ ทุกครั้งที่เลิกใช้ไฟล์ต้องทำการปิดไฟล์ ด้วยคำสั่ง Close เพราะ • การปิดจะนำข้อมูลที่อยู่ในบัฟเฟอร์เก็บไว้ในแผ่นดิสก์ • คำสั่งปิดจะทำการปรับปรุงไฟล์ในไดเรกเทอรี โดยจะนำชื่อไฟล์ไปเก็บไว้ในไดเรกเทอรีสำหรับการสร้างไฟล์ครั้งแรก หรือเก็บจำนวนเรคอร์ด

  14. คำสั่งเปิดไฟล์REWRITE • Rewrite (ตัวแปรไฟล์) • เปิดเพื่อบันทึกข้อมูล • ใช้กรณีที่ไม่เคยมีไฟล์ข้อมูลในแผ่นดิสก์มาก่อน • หากมีไฟล์ข้อมูลอยู่ก่อน rewrite จะทำการลบข้อมูลเดิมหมดเหลือแต่ไฟล์เปล่า • ห้ามเปิดไฟล์เก่าด้วยคำสั่ง rewrite • ใช้ได้กับไฟล์ทุกประเภท

  15. คำสั่งเปิดไฟล์RESET • Reset(ตัวแปรไฟล์) • เป็นการเปิดเพื่ออ่านข้อมูลจากดิสก์ • หากไม่มีไฟล์ในแผ่นดิสก์แล้วเปิดโดย reset จะเกิด I/O error • การเปิดไฟล์โดย rewrite หรือ reset ตัว file pointer อยู่ที่เรคอร์ดแรกของไฟล์(เรคอร์ดที่ 0) เสมอ

  16. คำสั่งเปิดไฟล์APPEND • Append (ตัวแปรไฟล์) • เป็นการเปิดไฟล์เพื่อทำการบันทึกข้อมูลเพิ่มเติม • หากไม่มีไฟล์ในแผ่นดิสก์แล้วเปิดโดย append จะเกิด I/O error • file pointer อยู่ตอนท้ายของเรคอร์ดสุดท้าย จึงสะดวกต่อการเพิ่มเรคอร์ด (add record)

  17. คำสั่งอ่าน/บันทึกข้อมูลคำสั่งอ่าน/บันทึกข้อมูล • Read และ write เป็นคำสั่งที่ใช้กับไฟล์แบบ typed file และ text file มีรูปแบบเหมือนกัน แต่การใช้มีข้อปลีกย่อยต่างกัน • Readln และ writeln เป็นคำสั่งใช้เฉพาะ text file เท่านั้น • blockread และ blockwrite ใช้กับ Untyped file

  18. คำสั่งอ่าน/บันทึกข้อมูลใน TYPED FILE • Read (F, V1,[V2,..Vn]) • F คือตัวแปรไฟล์ V เป็นตัวแปรประเภทเดียวกับไฟล์ • เมื่ออ่านข้อมูลเสร็จ file pointer จะเลื่อนไปยังเรคอร์ดถัดไป • write (F, V1,[V2,..Vn]) • บันทึกข้อมูลต้องที่ file pointer ชี้อยู่ • เมื่อบันทึกเสร็จ file pointer จะเลื่อนไปยังเรคอร์ดถัดไป

  19. ตัวอย่างโปรแกรมTyped file • ตัวอย่างต่อไปนี้แสดง • การสร้างไฟล์แบบString • การบันทึกข้อมูลลงไฟล์ • การอ่านข้อมูลจากไฟล์ • การค้นหาข้อมูลจากไฟล์

  20. ตัวอย่างโปรแกรมTyped file program createfile; uses wincrt; var ans:char; procedure buildfile; var fname: file of string; name: string;

  21. ตัวอย่างโปรแกรมTyped file begin assign(fname,'name.dat'); {link file name with file in disk} rewrite(fname); {open file} write('Enter student''s name.(xxx for end)'); readln(name);

  22. ตัวอย่างโปรแกรมTyped file while name <> 'xxx' do begin write(fname,name); {write data into file} write('Enter student''s name.(xxx for end)'); readln(name); end; close(fname); end;

  23. ตัวอย่างโปรแกรมTyped file procedure r_w_file; var fname: file of string; name: string; begin assign(fname,'name.dat'); reset(fname); clrscr;

  24. ตัวอย่างโปรแกรมTyped file writeln('List of student name'); while not eof(fname) do begin read(fname,name); writeln(name:20); end; close(fname); readln; end;

  25. ตัวอย่างโปรแกรมTyped file procedure search; var fname: file of string; name,s_name: string; flag :char; begin assign(fname,'name.dat'); reset(fname); clrscr;

  26. ตัวอย่างโปรแกรมTyped file write('Enter name you want to search(x for end): '); readln(s_name); read(fname,name); flag := 'n'; while (s_name <> 'x') do begin

  27. ตัวอย่างโปรแกรมTyped file while not eof(fname) and (flag <> 'y') do begin if name = s_name then flag := 'y' else read(fname,name) end;

  28. ตัวอย่างโปรแกรมTyped file if flag = 'y' then begin writeln(s_name,' is found '); reset(fname); end else writeln(s_name,' is not found');

  29. ตัวอย่างโปรแกรมTyped file readln; reset(fname); clrscr; write('Enter name you want to search(x for end): '); readln(s_name); read(fname,name); flag := 'n'; end; end;

  30. ตัวอย่างโปรแกรมTyped file begin ans := 'y'; repeat clrscr; writeln('Enter the following number(x to stop): '); writeln('1= create file'); writeln('2= read and display data'); writeln('3= search name');

  31. ตัวอย่างโปรแกรมTyped file readln(ans); case ans of '1': buildfile; '2': r_w_file; '3': search; end; until ans = 'x'; end.

  32. ตัวอย่างโปรแกรมTyped file • ตัวอย่างการสร้างไฟล์ ที่เก็บแบบเรคอร์ด • การสร้างและบันทึกไฟล์ • การอ่านไฟล์ • การเพิ่มเรคอร์ด • การปรับปรุงเรคอร์ด

  33. คำสั่งอ่านข้อมูลใน TEXT FILE • Read (F, V1,[V2,..Vn]) และ write (F, V1,[V2,..Vn]) • F ตัวแปรข้อมูลที่เป็น Text file เท่านั้น • V เป็นตัวแปรชนิดใดก็ได้ (char,integer,real,string) • กรณีไม่มี F แสดงว่ารับข้อมูลจากแป้นพิมพ์ (ที่หัวโปรแกรมไม่มี input) • เมื่ออ่านข้อมูลเสร็จ file pointer จะเลื่อนไปหลังตัวอักษรสุดท้ายที่อ่าน

  34. คำสั่งอ่านข้อมูลใน TEXT FILE • Readln (F, V1,[V2,..Vn]) และ writeln (F, V1,[V2,..Vn]) • เมื่ออ่านข้อมูลเสร็จ file pointer จะเลื่อนไปต้นบรรทัดถัดไปของไฟล์ โดยข้าม CR/LF

  35. คำสั่งบันทึกข้อมูลใน TEXT FILE • write (F, V1,[V2,..Vn]) • F ตัวแปรข้อมูลที่เป็น Text file เท่านั้น • V เป็นตัวแปรชนิดใดก็ได้ (char,integer,real,string) • กรณีไม่มี F แสดงว่าแสดงข้อมูลทางจอภาพ (ที่หัวโปรแกรมไม่มี output)

  36. คำสั่งบันทึกข้อมูลใน TEXT FILE • writeln (F, V1,[V2,..Vn]) • เมื่อบันทึกข้อมูลเสร็จ จะพิมพ์เครื่องหมาย CR/LF คั่นแต่ละเรคอร์ด

  37. program recfile; uses wincrt; type student = record id : string[7]; name: string[15]; mark: integer; end; var studentrec : student; fstudent: file of student; name: string[20]; finame: string[8]; ans,choice :char; ตัวอย่างโปรแกรมการสร้างและบันทึกไฟล์ แบบเรคอร์ด

  38. ตัวอย่างโปรแกรมการสร้างและบันทึกไฟล์ แบบเรคอร์ด begin clrscr; write ('Enter filename you want to create: '); readln(finame); assign(fstudent,finame); {link file name with file in disk} rewrite(fstudent); {open file } ans := 'Y';

  39. ตัวอย่างโปรแกรมการสร้างและบันทึกไฟล์ แบบเรคอร์ด repeat with studentrec do begin clrscr; writeln; write('Enter student''s id. :'); readln(id); write('Enter student''s name :'); readln(name); write('Enter student''s mark :'); readln(mark); end;

  40. ตัวอย่างโปรแกรมการสร้างและบันทึกไฟล์ แบบเรคอร์ด write(fstudent,studentrec); {write data into file} write('Enter y/n to continue: '); readln(ans); ans := upcase(ans); until ans = 'N'; close(fstudent); end.

  41. program readrec; uses wincrt; type student = record id : string[7]; name: string[15]; mark: integer; end; var studentrec : student; fstudent: file of student; name: string[20]; finame: string[8]; ans,choice :char; ตัวอย่างโปรแกรมการอ่านไฟล์แบบเรคอร์ด

  42. ตัวอย่างโปรแกรมการอ่านไฟล์แบบเรคอร์ดตัวอย่างโปรแกรมการอ่านไฟล์แบบเรคอร์ด begin clrscr; write ('Enter filename you want to read: '); readln(finame); assign(fstudent,finame); {link file name with file in disk} {$I-}reset(fstudent);{$I+} คอมไพล์ไดเรกทีฟ ใช้ป้องกัน I/O Error

  43. ตัวอย่างโปรแกรมการอ่านไฟล์แบบเรคอร์ดตัวอย่างโปรแกรมการอ่านไฟล์แบบเรคอร์ด if ioresult = 0 then begin clrscr; writeln('List of student''s score':45); writeln; writeln('id. ':10,' name ':20,' mark ':17); เป็นฟังก์ชันตรวจสอบผลของ I/O Error

  44. ตัวอย่างโปรแกรมการอ่านไฟล์แบบเรคอร์ดตัวอย่างโปรแกรมการอ่านไฟล์แบบเรคอร์ด while not eof(fstudent) do begin read(fstudent,studentrec); with studentrec do writeln(id:10,name:20,mark:15);writeln; end;

  45. ตัวอย่างโปรแกรมการอ่านไฟล์แบบเรคอร์ดตัวอย่างโปรแกรมการอ่านไฟล์แบบเรคอร์ด close(fstudent); end else writeln('file not exit'); readln; end.

  46. program addrec; uses wincrt; type student = record id : string[7]; name: string[15]; mark: integer; end; var studentrec : student; fstudent: file of student; name: string[20]; finame: string[8]; ans,choice :char; ตัวอย่างโปรแกรมการเพิ่มเรคอร์ดในไฟล์แบบเรคอร์ด

  47. ตัวอย่างโปรแกรมการเพิ่มเรคอร์ดในไฟล์แบบเรคอร์ดตัวอย่างโปรแกรมการเพิ่มเรคอร์ดในไฟล์แบบเรคอร์ด begin clrscr; write ('Enter filename you want to add record: '); readln(finame); assign(fstudent,finame); {$I-} reset(fstudent);{$I+}

  48. ตัวอย่างโปรแกรมการเพิ่มเรคอร์ดในไฟล์แบบเรคอร์ดตัวอย่างโปรแกรมการเพิ่มเรคอร์ดในไฟล์แบบเรคอร์ด if ioresult = 0 then begin seek(fstudent,filesize(fstudent)); {go to the last record} ans := 'Y'; while ans <> 'N' do begin - Seek เป็น Function ทำให้ตัวชี้ไปอยู่ ที่เรคอร์ดสุดท้าย - filesize เป็น Function ให้จำนวนเรคอร์ด ในแฟ้มข้อมูล

  49. ตัวอย่างโปรแกรมการเพิ่มเรคอร์ดในไฟล์แบบเรคอร์ดตัวอย่างโปรแกรมการเพิ่มเรคอร์ดในไฟล์แบบเรคอร์ด with studentrec do begin clrscr; writeln; write('Enter student''s id. :'); readln(id); write('Enter student''s name :'); readln(name); write('Enter student''s mark :'); readln(mark); end;

  50. ตัวอย่างโปรแกรมการเพิ่มเรคอร์ดในไฟล์แบบเรคอร์ดตัวอย่างโปรแกรมการเพิ่มเรคอร์ดในไฟล์แบบเรคอร์ด write(fstudent,studentrec); {write data into file} write('Enter y/n to continue: '); readln(ans); ans := upcase(ans); end; end else

More Related