Chapter 10 Data Files.

Slides:



Advertisements
งานนำเสนอที่คล้ายกัน
Lecture no. 10 Files System
Advertisements

System Requirement Collection (2)
Array ธนวัฒน์ แซ่ เอียบ. The concept of array อาเรย์ : กลุ่มของข้อมูลที่มีชนิดเดียวกันและถูก จัดเก็บเรียงลำดับต่อเนื่องกัน ตัวแปร x สามารถจัดเก็บค่ามากกว่า.
การเขียนคำสั่งควบคุม การทำงานขั้นพื้นฐาน
จัดทำโดย น. ส. ดวงกมล งามอยู่เจริญ เลขที่ 8 น. ส. ณัชชา เชื้อตา เลขที่ 6 เตรียมบริหารธุรกิจปี 1.
Operator of String Data Type
LAB ตัวแปร : Variables ในการเขียนโปรแกรมเราต้องการให้โปรแกรม จดจำค่าต่างๆ ไว้ เช่นเมื่อรับค่าข้อมูลจาก ผู้ใช้ หรือค่าที่ได้จากการคำนวณใดๆ ค่า.
Chapter 10 Arrays Dept of Computer Engineering Khon Kaen University.
หน่วยการเรียนรู้ที่ 2 หลักการแก้ปัญหาด้วยคอมพิวเตอร์
กาญจนา ทองบุญนาค สาขาวิชาคอมพิวเตอร์ คณะวิทยาศาสตร์และเทคโนโลยี
ซอฟต์แวร์และการเลือกใช้
หน่วยที่ 6 แถวลำดับ (Array)
การใช้งาน Microsoft Excel
ครั้งที่ 7 รีจิสเตอร์ (REGISTER). รีจิสเตอร์ (Register) รีจิสเตอร์เป็นวงจรความจำที่ใช้ในการเก็บค่า ทางไบนารี่ ใช้ในการเก็บค่าในระหว่างการ ประมวลผลโดยใช้ฟลิป.
โปรแกรมคำนวณคะแนน สหกรณ์ ตามเกณฑ์ดีเด่นแห่งชาติ กรมส่งเสริม สหกรณ์ กองพัฒนาสหกรณ์ด้านการเงิน และร้านค้า วิธีการใ ช้
การจัดเก็บข้อมูลในแฟ้มข้อมูลธรรมดา นั้น อาจจำเป็นที่ใช้แต่ละคน จะต้องมีแฟ้มข้อมูลของตนไว้เป็นส่วนตัว จึง อาจเป็นเหตุให้มีการเก็บข้อมูล ชนิดเดียวกันไว้หลาย.
การเลือกข้อมูลจาก List การกำหนดเงื่อนไขการป้อนข้อมูลด้วย Data Validation การใส่ Comment / แสดง / แก้ไข / ลบ.
MTH 261 File Management. File Management File Management จะอธิบายเกี่ยวกับการเขียน ส่วนจัดการแฟ้มข้อมูล เราสามารถที่จะเขียน โปรแกรมเพื่อเรียกใช้แฟ้มข้อมูลที่เรามี
LOGO ภาษาซี 1.1 อ. กฤติเดช จินดาภัทร์. LOGO ตัวอย่างโค้ดภาษาซี
Project Management by Gantt Chart & PERT Diagram
เกม คณิตคิดเร็ว.
stack #2 ผู้สอน อาจารย์ ยืนยง กันทะเนตร
บทที่ 5 อินพุตและเอาต์พุต
Chapter 3 More on Input & Output.
บทสรุป ความรู้พื้นฐานเกี่ยวกับระบบฐานข้อมูล
ครูวีรธรรม เทศประสิทธิ์ แผนกวิชาคอมพิวเตอร์ธุรกิจ
การประยุกต์ Logic Gates ภาค 2
บทที่ 1 สถาปัตยกรรมของระบบฐานข้อมูล (Database Architecture)
บริษัท พัฒนาวิชาการ (2535) จำกัด
การรับและแสดงผลข้อมูลของภาษา C
การบริหารโครงการ Project Management
แล้วทำการเรียงลำดับข้อมูลใหม่โดยเรียงจากน้อยไปหามาก
รายการ(List) [3] ผู้สอน อาจารย์ ยืนยง กันทะเนตร
BC320 Introduction to Computer Programming
ระบบตัวแทนจำหน่าย/ ตัวแทนขายอิสระ
คุณลักษณะของสัญญาณไฟฟ้าแบบต่าง ๆ
โครงสร้างภาษา C Arduino
การบัญชีต้นทุนช่วง (Process Costing).
บทที่ 1 โครงสร้างคอมพิวเตอร์พื้นฐาน
Vernier เวอร์เนียร์ คือเครื่องมือที่ใช้วัดระยะ (distance) หรือ ความยาว (length) ให้ได้ค่าอย่างละเอียด เวอร์เนียร์ต่างจากไม้บรรทัดทั่วๆไป เพราะมี 2 สเกล.
stack #1 ผู้สอน อาจารย์ ยืนยง กันทะเนตร
Basic Input Output System
บทที่ 13 การจัดการไฟล์ (File Management)
บทที่ 3 แฟ้มข้อมูลและฐานข้อมูล
ขอแนะนำ PowerPoint 2007 การแนะนำคุณลักษณะใหม่ๆ.
ขั้นตอนการออกแบบ ผังงาน (Flow Chart)
การเขียนโปรแกรมแบบวนซ้ำ: คำสั่ง while คำสั่ง do….while
กำหนดกรอบระยะเวลาการขึ้นทะเบียนปี2556/57 1. ข้าว
การสร้างโมเดลจำลองความสัมพันธ์ ระหว่างข้อมูล E-R Model
บริษัท พัฒนาวิชาการ (2535) จำกัด
Week 5 C Programming.
SMS News Distribute Service
สาขาวิชาคอมพิวเตอร์ธุรกิจ โดย อาจารย์กิตติพงษ์ ภู่พัฒน์วิบูลย์
หน่วยที่ 6 อะเรย์ของอักขระ
บทที่ 9 การเรียงลำดับข้อมูล (Sorting)
บทที่ 7 การประมวลผลอาร์เรย์
2 โครงสร้างข้อมูลแบบสแตก (STACK).
กิจกรรมที่ 7 นายปรีชา ขอวางกลาง
3 โครงสร้างข้อมูลแบบคิว (QUEUE).
บทที่ 2 โครงสร้างข้อมูลแบบแถวลำดับหรืออาร์เรย์ (Array)
Chapter 3 : Array.
การจัดบล๊อคและบัฟเฟอร์ (Blocking and Buffering)
Array: One Dimension Programming I 9.
ฟังก์ชันของโปรแกรม Computer Game Programming
บทที่ 4 การจำลองข้อมูลและกระบวนการ (Data and Process Modeling)
การเขียนโปรแกรมด้วยภาษาไพทอน การเขียนโปรแกรมแบบทางเลือก
Chapter 7: File แฟ้มข้อมูล Source of slides
การสรุปผลข้อมูล และ Action Query
กิจกรรมที่ 12 รวบรวมข้อมูลอย่างไรกันดี
กระดาษทำการ (หลักการและภาคปฏิบัติ)
ใบสำเนางานนำเสนอ:

Chapter 10 Data Files

ประเภทของแฟ้มข้อมูล Types of data files Stream-oriented (standard) data files ใช้งานง่าย เป็นที่นิยม Text files ประกอบด้วยอักขระเรียงต่อกัน สามารถแยกเป็นข้อมูลแต่ละค่าได้ เช่น อาจจะเป็น ตัวเลข หรือข้อความ Unformatted data files แบ่งข้อมูลเป็นบล็อก แต่ละบล็อกประกอบด้วยโครงสร้างข้อมูลที่ซับซ้อน เป็นไบต์ข้อมูลที่เรียงต่อกันได้แก่ แถวลำดับ โครงสร้าง System-oriented (low-level) data files มีความเกี่ยวข้องกับระบบปฏิบัติการมากกว่า Stream-oriented มีความซับซ้อนมากกว่า

Stream-oriented (standard) data files Text files เป็น text stream ประกอบด้วยอักขระเรียงต่อกันหลายๆบรรทัด แต่ละบรรทัดยาวไม่เกิน 255 อักขระ อาจประกอบด้วยข้อมูลที่เป็น สายอักขระ หรือตัวเลข จบด้วย end-of-line (แต่ละบรรทัดไม่ใช่ string เพราะไม่ได้จบด้วย \0) เมื่อ stream อยู่ใน text-mode จะมีการแปลเกิดขึ้นระหว่าง อักขระ newline (\n) และอักขระที่ระบบปฏิบัติการใช้ทำเป็นเครื่องหมาย end-of-line ในแฟ้มข้อมูล ซึ่งใน PC ใช้เป็น cariage-return + linefeed (CR-LF) คือ อักขระขึ้นต้นบรรทัด + เลื่อนไปบรรทัดใหม่ เมื่อบันทึกข้อมูล จะมีการแปล \n ไปเป็น CR-LF เมื่ออ่านข้อมูลจากแฟ้ม CR-LF จะถูกแปลเป็น \n

Stream-oriented (standard) data files Unforamatted data files จัดข้อมูลเป็นบล็อก แต่ละบล็อกประกอบด้วยอักขระที่เรียงต่อกัน บล็อกเหล่านี้ใช้เก็บโครงสร้างข้อมูลที่ซับซ้อน อาทิ แถวลำดับ และ โครงสร้าง ใช้ไลบรารีฟังก์ชันเพื่อประมวลผลข้อมูลประเภทนี้ ไลบรารีฟังก์ชันมีคำสั่งที่สามารถถ่ายโอนแถวลำดับหรือโครงสร้างทั้งหมดจากหรือไปสู่แฟ้มข้อมูล

Opening a file for use การเปิดแฟ้ม ทำเพื่อให้สามารถอ่านหรือบันทึกข้อมูลในแฟ้ม อ่านข้อมูลจากแฟ้มเข้าสู่โปรแกรม นำข้อมูลจากโปรแกรมบันทึกลงในแฟ้ม เมื่อใช้งานเสร็จ ต้องปิดแฟ้ม

Buffer area การเปิดแฟ้ม เมื่อทำงานกับ stream-oriented data files จะต้องมี buffer area เพื่อใช้เก็บข้อมูลที่ถ่ายโอนไปมาระหว่าง ความจำและแฟ้ม ซึ่ง buffer area จะช่วยให้การถ่ายโอนเร็วขึ้น buffer area

Buffer area การเปิดแฟ้ม FILE *f f FILE เป็นประเภทโครงสร้างพิเศษ ที่ใช้ในการสร้าง buffer area มีรายละเอียดกำหนดไว้ในแฟ้มระบบ stdio.h f เป็นตัวแปรตัวชี้ ที่ชี้จุดเริ่มต้นของ buffer area บางครั้งเรียกว่า stream pointer หรือ stream

Opening a data file การเปิดแฟ้ม ต้องเปิดแฟ้มข้อมูลก่อนที่จะสร้างหรือประมวลผลแฟ้ม เพื่อกำหนดว่า จะตั้งชื่อและใช้งานแฟ้มข้อมูลอย่างไร เช่น read-only file write-only file read/write file

Library function fopen filename 1200 1200 f FILE *f f = fopen(filename, filetype) f เป็นตัวแปรตัวชี้ ที่ชี้จุดเริ่มต้นของ buffer area filename เป็นชื่อของแฟ้มข้อมูล ตั้งตามกฎของระบบปฏิบัติการ filetype เป็นค่าใดค่าหนึ่ง ดังนี้ Buffer area “r”, “w”, “a”, “r+”, “w+”, “a+”

File Type “r” เปิดแฟ้มที่มีอยู่แล้ว เพื่ออ่านเท่านั้น “w” เปิดแฟ้มใหม่เพื่อบันทึกเท่านั้น “a” เปิดแฟ้มที่มีอยู่แล้ว เพื่อบันทึกต่อท้าย “r+” เปิดแฟ้มที่มีอยู่แล้ว เพื่ออ่านและบันทึก “w+” เปิดแฟ้มใหม่เพื่ออ่านและบันทึก “a+” เปิดแฟ้มที่มีอยู่แล้ว เพื่อบันทึกต่อท้ายและอ่าน

fopen () เมื่อมีการเรียกใช้ fopen function จะมีการส่งคืนค่าต่อไปนี้ ตัวชี้หรือที่อยู่ของจุดเริ่มต้นของ buffer area ของแฟ้ม NULL ถ้าไม่สามารถเปิดแฟ้มได้ หรือหาแฟ้มไม่พบ

fclose () ปิดแฟ้มได้ 2 วิธี โดยเรียกใช้ fclose(f) เพื่อสั่งให้ปิดแฟ้มที่มีตัวชี้คือ f fcloseall() สั่งให้ปิดทุกแฟ้ม เมื่อโปรแกรมสิ้นสุดการทำงาน จะปิดแฟ้มข้อมูลโดยอัตโนมัติ ถ้าไม่พบ fclose ก่อนปิดแฟ้ม จะคัดลอกข้อมูลจาก buffer บันทึกลงในแฟ้ม

fflush () คัดลอกข้อมูลจาก buffer บันทึกลงในแฟ้ม fflush(f) เพื่อสั่งให้บันทึกที่แฟ้มที่มีตัวชี้คือ f flushall() สั่งให้บันทึกลงทุกแฟ้ม

#include <stdio.h> FILE *f; f = fopen(“data.dat”, “w”); … fclose(f); 2000 f 2000 Buffer area f เป็นตัวแปรที่เก็บที่อยู่ของจุดเริ่มต้นของ buffer area ของแฟ้ม เปิดแฟ้มใหม่ชื่อ data.dat เพื่อบันทึกข้อมูล แล้วส่งที่อยู่ของจุดเริ่มต้นของ buffer area ของแฟ้มไปไว้ใน f

#include <stdio.h> #define NULL 0 main () { FILE *f; f = fopen(“data.dat”, “r+”); if (f == NULL) printf (“\nERROR – cannot open file\n”); else { … fclose (f); } data.dat 2000 2000 f Buffer area เปิดแฟ้มที่มีอยู่แล้วชื่อ data.dat เพื่ออ่านและบันทึกข้อมูล ถ้าไม่พบแฟ้มนี้ จะแสดงข้อความเพื่อแจ้งความผิดพลาด

ตัวอย่าง #include <stdio.h> #define NULL 0 main () { FILE *f; if (f = fopen(“data.dat”, “r+”)) == NULL) printf (“\nERROR – cannot open file\n”); else { … fclose (f); } เปิดแฟ้มที่มีอยู่แล้วชื่อ data.dat เพื่ออ่านและบันทึกข้อมูล ถ้าไม่พบแฟ้มนี้ จะแสดงข้อความเพื่อแจ้งความผิดพลาด

การบันทึกและอ่านแฟ้มข้อมูล มี 3 วิธี formatted output ใช้ได้เฉพาะกับ text-mode stream เพื่อบันทึก formatted data ลงในแฟ้ม เพื่อให้โปรแกรมอื่น อาทิ spreadsheet, database สามารถอ่านได้ ใช้ character output เพื่อบันทึก อักขระเดียว หรือ บรรทัดของอักขระ ลงในแฟ้ม ใช้ direct output เพื่อบันทึกข้อมูลจากความจำลงสู่แฟ้มโดยตรง วิธีนี้ใช้กับแฟ้มไบนารีเท่านั้น

Formatted file output ใช้ fprintf() ในการบันทึกลงในแฟ้ม fprintf() เหมือน printf() ต่างกันเพียง fprintf() ส่ง output ไปที่ stream ที่กำหนดไว้ใน argument list ของ fprintf() ถ้ากำหนดให้ stream argument เป็น stdout แล้ว fprintf() และ printf() จะทำงานเหมือนกัน ตัวอย่าง FILE *f fprint(f, “\n%d %f”, count, data[count]) fprint(stdout, “\n%d %f”, count, data[count])

Formatted file input ใช้ fscanf() ในการอ่านข้อมูลจากแฟ้ม fscanf() เหมือน scanf() ต่างกันเพียง fscanf() ส่ง input ไปที่ stream ที่กำหนดไว้ใน argument list ของ fscanf() ถ้ากำหนดให้ stream argument เป็น stdin จะมีผลทำให้fscanf() และ scanf() ทำงานเหมือนกัน

character input character input function มี 3 function getc () fgetc () fgets ()

getc () & fgetc () getc () f เป็นตัวชี้ เก็บที่อยู่ของแฟ้มที่ถูกเปิด int getc(FILE *f) อ่านอักขระจาก stream ที่กำหนด f เป็นตัวชี้ เก็บที่อยู่ของแฟ้มที่ถูกเปิด (fopen() คืนค่าที่อยู่ของแฟ้มที่เปิด) fgetc () เหมือน getc() สามารถใช้แทนกันได้

character output character output function putc () int putc (int c, FILE *f); บันทึกอักขระเดียว(lower-order byte)ลงใน stream fputs () char fputs (char *s, FILE *f); string ที่ถูกชี้โดย s ถูกบันทึกลงในแฟ้มที่ถูกชี้โดย f บันทึกอักขระ 1 บรรทัดลงใน stream

การสร้างแฟ้มข้อมูล Creating a Data File

fgets () char *fgets(char *s, int n, FILE *f) s 3000 3000 char *fgets(char *s, int n, FILE *f) s เก็บที่อยู่ของ input (buffer ที่ป้อนข้อมูล) n หมายถึง จำนวนสูงสุดของอักขระที่จะป้อนเข้า f เก็บที่อยู่ของแฟ้มที่ถูกเปิด อ่านอักขระทีละบรรทัดจากแฟ้มที่ f ชี้ แล้วนำไปเก็บในความจำเริ่มจากตำแหน่งที่ถูกชี้โดย S อักขระถูกอ่านจนกระทั่งพบอักขระ new line (หรืออ่านไปได้ n-1 อักขระ) f 6000 6000

Direct file input Unformatted Data Files อ่านข้อมูลจากแฟ้ม(ดิสก์) ไปเก็บในความจำ

Unformatted Data Files ใช้ในการเก็บข้อมูลที่มีลักษณะเป็นบล็อก แต่ละบล็อกมีขนาดแน่นอน ใช้แทนโครงสร้างที่ซับซ้อน อาทิ แถวลำดับ หรือ โครงสร้าง โดยที่แฟ้มข้อมูลอาจประกอบด้วย หลายโครงสร้างที่มีส่วนประกอบเหมือนกัน หรือ อาจประกอบด้วยหลายแถวลำดับที่เป็นประเภทและมีขนาดเดียวกัน บางครั้งอาจไม่ต้องการอ่านหรือบันทึกข้อมูลที่อยู่ภายในบล็อก ทีละค่า แต่ต้องการอ่านข้อมูลทั้งบล็อกจากแฟ้มข้อมูลและบันทึกทั้งบล็อกลงในแฟ้ม ใช้ fread, fwrite

fwrite รูปแบบ fwrite (ตัวแปร, sizeof(ข้อมูล), จำนวนข้อมูลที่จะบันทึก, f)

fread รูปแบบ fread (ตัวแปร, sizeof(ข้อมูล), จำนวนข้อมูลที่จะอ่าน, f) s 3000 3000 f 6000 6000

การสร้างแฟ้มข้อมูล Creating a data file ต้องสร้างแฟ้ม ก่อนที่จะนำไปประมวลผล การสร้างแฟ้ม Stream-oriented ชนิด text file ทำได้ 2 วิธี ใช้โปรแกรมประมวลผลคำ (word processor) สร้างโดยตรง เขียนโปรแกรมเพื่อป้อนข้อมูลเข้าไป แล้วให้บันทึกลงแฟ้ม การสร้างแฟ้ม Stream-oriented ชนิด Unformatted data files ทำได้วิธีเดียวโดยการเขียนโปรแกรม การเขียนโปรแกรมรับข้อมูลจากแป้นพิมพ์แล้วบันทึกข้อมูลลงในแฟ้ม ถ้าข้อมูลแยกกันเป็นแต่ละค่า ใช้ getchar เพื่อป้อนข้อมูล putc เพื่อบันทึกข้อมูลลงแฟ้ม

การอ่านแฟ้มข้อมูล Reading a Data File

gets ใช้อ่าน string จากอุปกรณ์มาตรฐาน puts ใช้บันทึก string ลงในอุปกรณ์มาตรฐาน fgetc ใช้อ่าน character จากแฟ้มข้อมูล fputc ใช้บันทึก character ลงแฟ้มข้อมูล fgets ใช้อ่าน string จากแฟ้มข้อมูล fputs ใช้บันทึก string ลงในแฟ้มข้อมูล fscanf ใช้อ่าน formatted data จากแฟ้มข้อมูล fprintf ใช้บันทึก formatted data ลงในแฟ้มข้อมูล fread ใช้อ่าน unformatted data จากแฟ้มข้อมูล fwrite ใช้บันทึก unformatted data ลงในแฟ้มข้อมูล

Sequential file ftell() หาตำแหน่งปัจจุบันของตัวชี้ rewind() ตำแหน่งปัจจุบันของตัวชี้ ไปอยู่ที่จุดเริ่มต้นของแฟ้ม (ไบต์ )

fseek() รูปแบบ fseek (*f, ระยะทางที่เคลื่อนที่ offset, ระยะทางเคลื่อนที่สัมพัทธ์) SEEK_SET ต้นแฟ้ม SEEK_CUR ตำแหน่งปัจจุบัน SEEK_END ท้ายแฟ้ม