MTH 261 File Management
File Management File Management จะอธิบายเกี่ยวกับการเขียน ส่วนจัดการแฟ้มข้อมูล เราสามารถที่จะเขียน โปรแกรมเพื่อเรียกใช้แฟ้มข้อมูลที่เรามี เพื่อ ทำงานต่างๆ และจัดเก็บข้อมูลต่างๆที่ได้จาก การทำงานของโปรแกรมลงในแฟ้มข้อมูลได้ ซึ่ง จะมีประโยชน์ในการเขียนโปรแกรมประเภท แฟ้มข้อมูลบุคคลหรือบัญชี ต่างๆได้ เช่น โปรแกรมฐานข้อมูลของนักศึกษา เป็นต้น File Management จะอธิบายเกี่ยวกับการเขียน ส่วนจัดการแฟ้มข้อมูล เราสามารถที่จะเขียน โปรแกรมเพื่อเรียกใช้แฟ้มข้อมูลที่เรามี เพื่อ ทำงานต่างๆ และจัดเก็บข้อมูลต่างๆที่ได้จาก การทำงานของโปรแกรมลงในแฟ้มข้อมูลได้ ซึ่ง จะมีประโยชน์ในการเขียนโปรแกรมประเภท แฟ้มข้อมูลบุคคลหรือบัญชี ต่างๆได้ เช่น โปรแกรมฐานข้อมูลของนักศึกษา เป็นต้น ตัวคำสั่งจะมี อยู่ 2 คำสั่งคือ OPEN กับ CLOSE ตัวคำสั่งจะมี อยู่ 2 คำสั่งคือ OPEN กับ CLOSE
OPEN OPEN ใช้ในการเปิดไฟล์ขึ้นมาใช้งาน OPEN ใช้ในการเปิดไฟล์ขึ้นมาใช้งาน รูปแบบ OPEN(UNIT= จำนวนเต็มตั้งแต่ 0 ขึ้นไป,FILE=’ ที่อยู่ ของไฟล์ ’, STATUS= *1,ACTION= *2,IOSTAT= *3) *1 สามารถใส่ได้ 5 ค่าคือ *1 สามารถใส่ได้ 5 ค่าคือ ‘ OLD ’ หมายถึง เปิดไฟล์ข้อมูลเก่าขึ้นมาใช้งาน ‘ OLD ’ หมายถึง เปิดไฟล์ข้อมูลเก่าขึ้นมาใช้งาน ‘ NEW ’ หมายถึง สร้างไฟล์ใหม่ โดยถ้ามี ไฟล์ข้อมูลเก่าที่มีชื่อเหมือนกันจะเกิด error ‘ NEW ’ หมายถึง สร้างไฟล์ใหม่ โดยถ้ามี ไฟล์ข้อมูลเก่าที่มีชื่อเหมือนกันจะเกิด error
‘ REPLACE ’ หมายถึง การสร้างไฟล์ใหม่โดย ลบไฟล์เก่าที่มีชื่อเดียวกันทิ้งไปก่อน ( ถ้าไม่มี ไฟล์เก่าจะทำงานเหมือน ’ OLD ’ ) ‘ REPLACE ’ หมายถึง การสร้างไฟล์ใหม่โดย ลบไฟล์เก่าที่มีชื่อเดียวกันทิ้งไปก่อน ( ถ้าไม่มี ไฟล์เก่าจะทำงานเหมือน ’ OLD ’ ) ‘ SCRATCH ’ หมายถึง สร้างไฟล์ชั่วคราวซึ่งไม่ มีชื่อเพื่อทำงาน ( เมื่อโปแกรมดำเนินการถึง CLOSE หรือ จบโปรแกรมข้อมูลไฟล์จะหายไป ดังนั้น ถ้าประกาศ STATUS= ‘ SCRATCH ’ จะ ไม่ใส่ที่อยู่ของไฟล์ ) ‘ SCRATCH ’ หมายถึง สร้างไฟล์ชั่วคราวซึ่งไม่ มีชื่อเพื่อทำงาน ( เมื่อโปแกรมดำเนินการถึง CLOSE หรือ จบโปรแกรมข้อมูลไฟล์จะหายไป ดังนั้น ถ้าประกาศ STATUS= ‘ SCRATCH ’ จะ ไม่ใส่ที่อยู่ของไฟล์ ) ‘ UNKNOWN ’ หมายถึง การจัดการจะขึ้นอยู่ กับ โปรแกรมคอมไพเลอร์ ‘ UNKNOWN ’ หมายถึง การจัดการจะขึ้นอยู่ กับ โปรแกรมคอมไพเลอร์
*2 สามารถใส่ได้ 3 ค่าคือ *2 สามารถใส่ได้ 3 ค่าคือ ‘ READ ’ หมายถึง สามารถอ่านข้อมูลจากไฟล์ ได้อย่างเดียวเท่านั้น ‘ READ ’ หมายถึง สามารถอ่านข้อมูลจากไฟล์ ได้อย่างเดียวเท่านั้น ‘ WRITE ’ หมายถึง สามารถเขียนข้อมูลลงใน ไฟล์ได้อย่างเดียวเท่านั้น ‘ WRITE ’ หมายถึง สามารถเขียนข้อมูลลงใน ไฟล์ได้อย่างเดียวเท่านั้น ‘ READWRITE ’ หมายถึง สามารถทำการอ่าน และเขียนไฟล์ได้ ‘ READWRITE ’ หมายถึง สามารถทำการอ่าน และเขียนไฟล์ได้
*3 จะใช้ตัวแปรที่มีชนิดเป็น INTEGER เก็บ ค่า error เอาไว้ โดยถ้าตัวแปรดังกล่าวเก็บค่า 0 ไว้ แสดงว่า ไม่มี error ในการใช้ OPEN *3 จะใช้ตัวแปรที่มีชนิดเป็น INTEGER เก็บ ค่า error เอาไว้ โดยถ้าตัวแปรดังกล่าวเก็บค่า 0 ไว้ แสดงว่า ไม่มี error ในการใช้ OPEN
Example Program file_example implicit none integer::ierror Open(unit=13,file=‘test.dat’,status = ‘NEW’, action = ‘WRITE’, iostat = ierror) if (ierror /= 0) then print *, ‘Failed to open test.dat’ print *, ‘Failed to open test.dat’ stop stop end if write(unit=13, fmt=*) ‘Hello World!’ close(unit=13) end program
CLOSE CLOSE ใช้ในการปิดไฟล์ที่เปิดใช้งานอยู่ CLOSE ใช้ในการปิดไฟล์ที่เปิดใช้งานอยู่ รูปแบบ CLOSE (UNIT= เลขยูนิทของไฟล์ที่จะปิด ) จงเขียนโปรแกรมรับข้อมูลชื่อ เก็บลงไฟล์ namex.txt โดยที่ไฟล์ ดังกล่าวเป็นไฟล์ที่ถูกสร้างขึ้นใหม่ จงเขียนโปรแกรมรับข้อมูลชื่อ เก็บลงไฟล์ namex.txt โดยที่ไฟล์ ดังกล่าวเป็นไฟล์ที่ถูกสร้างขึ้นใหม่ PROGRAM file_management INTEGER :: rt=0 INTEGER :: rt=0 CHARACTER(len=30) :: name CHARACTER(len=30) :: name OPEN(UNIT=1,FILE = 'c:\namex.txt',STATUS='NEW',ACTION='WRITE',IOSTATE =rt) OPEN(UNIT=1,FILE = 'c:\namex.txt',STATUS='NEW',ACTION='WRITE',IOSTATE =rt) PRINT *,'please enter name: ' PRINT *,'please enter name: ' READ (*,*) name READ (*,*) name WRITE (1,*) name ! คือ นำค่าตัวแปร name เขียนลงใน ยูนิท 1 ในที่นี้คือ ไฟล์ namex.txt นั่นเอง WRITE (1,*) name ! คือ นำค่าตัวแปร name เขียนลงใน ยูนิท 1 ในที่นี้คือ ไฟล์ namex.txt นั่นเอง CLOSE (unit=1) CLOSE (unit=1) END PROGRAM END PROGRAM
จากตัวอย่างจงเรียกไฟล์ namex.txt ออกมาใช้งาน โดยให้รับค่าข้อมูลอีกค่าหนึ่งเก็บไว้ในไฟล์เดิม จากตัวอย่างจงเรียกไฟล์ namex.txt ออกมาใช้งาน โดยให้รับค่าข้อมูลอีกค่าหนึ่งเก็บไว้ในไฟล์เดิม เขียนส่วนต่อไปนี้เพิ่มไปในตัวอย่างด้านบน ต่อจาก คำสั่งปิดไฟล์ เขียนส่วนต่อไปนี้เพิ่มไปในตัวอย่างด้านบน ต่อจาก คำสั่งปิดไฟล์ OPEN(UNIT=1,FILE ='c:\namex.txt',STATUS='OLD',ACTION='READWRITE',IOSTAT=rt) READ (1,*) name ! คือ อ่านข้อมูลจากยูนิต 1 ในที่นี้คือไฟล์ namex.txt มาเก็บไว้ในตัว แปร name PRINT *,'old data is ',name PRINT *,'old data is ',name PRINT *,'please enter name: ' PRINT *,'please enter name: ' READ (*,*) name READ (*,*) name WRITE (1,*) name WRITE (1,*) name CLOSE (UNIT=1) CLOSE (UNIT=1)
PROGRAM file_management INTEGER :: rt=0 INTEGER :: rt=0 CHARACTER(len=30) :: name CHARACTER(len=30) :: name OPEN(UNIT=1,FILE = 'c:\namex.txt',STATUS='NEW',ACTION='WRITE',IOSTATE=rt) PRINT *,'please enter name: ' PRINT *,'please enter name: ' READ (*,*) name WRITE (1,*) name CLOSE (unit=1) OPEN(UNIT=1,FILE ='c:\namex.txt',STATUS='OLD',ACTION='READWRITE',IOSTAT=rt) READ (1,*) name PRINT *,'old data is ',name PRINT *,'please enter name: ' READ (*,*) name WRITE (1,*) name CLOSE (UNIT=1) END PROGRAM
ถ้าในตัวอย่างที่แล้ว ป้อนข้อมูลไปว่า mathematics และในตัวอย่างนี้ป้อนข้อมูลไปว่า ComputerScience ถ้าในตัวอย่างที่แล้ว ป้อนข้อมูลไปว่า mathematics และในตัวอย่างนี้ป้อนข้อมูลไปว่า ComputerScience ไฟล์ข้อมูลนี้จะมีข้อมูลอะไรบ้าง ? คำตอบคือ มี ทั้ง mathematics และ ComputerScience เพราะว่า STATUS='OLD' เป็นการเปิดไฟล์เก่าขึ้นมาใช้ งาน โดยถ้ามีการเขียนข้อมูลอื่นเข้ามาในไฟล์ มันจะเขียนเพิ่มเข้าไปรวมกับข้อมูลที่มีอยู่ในไฟล์ นั้นแล้ว และ เราไม่สามารถนำค่าข้อมูลมา กระทำกับไฟล์โดยตรงได้ ดังนั้นจึงต้องใช้ตัวแปร เป็นสื่อกลาง ไฟล์ข้อมูลนี้จะมีข้อมูลอะไรบ้าง ? คำตอบคือ มี ทั้ง mathematics และ ComputerScience เพราะว่า STATUS='OLD' เป็นการเปิดไฟล์เก่าขึ้นมาใช้ งาน โดยถ้ามีการเขียนข้อมูลอื่นเข้ามาในไฟล์ มันจะเขียนเพิ่มเข้าไปรวมกับข้อมูลที่มีอยู่ในไฟล์ นั้นแล้ว และ เราไม่สามารถนำค่าข้อมูลมา กระทำกับไฟล์โดยตรงได้ ดังนั้นจึงต้องใช้ตัวแปร เป็นสื่อกลาง ( ในตัวอย่างคือ READ (1,*) name กับ WRITE (1,*) name )
LAB MTH 261 (13/09/2550) เขียนโปรแกรมสร้างแฟ้มข้อมูล มีสมาชิก ประกอบด้วยเลขจำนวนจริงสามตัว x, y, z โดย ให้ทำการหาค่าจำนวนจริงทั้งสามตัวโดยวิธีสุ่ม (Random method) ที่อยู่ระหว่าง 0 และ 1 จำนวน 10 ชุด แล้วทำการคำนวณหาค่า function โดยการแทนค่าตัวแปรทั้งสามจาก แฟ้มข้อมูลแรก จากนั้นให้ทำการเก็บผลลัพธ์ ของค่า function ที่ได้ทั้ง 10 ชุด ไว้ที่ แฟ้มข้อมูลใหม่