งานนำเสนอกำลังจะดาวน์โหลด โปรดรอ

งานนำเสนอกำลังจะดาวน์โหลด โปรดรอ

BC322 ครั้งที่ 6 Text file BC322 : computer Programming (Week6)

งานนำเสนอที่คล้ายกัน


งานนำเสนอเรื่อง: "BC322 ครั้งที่ 6 Text file BC322 : computer Programming (Week6)"— ใบสำเนางานนำเสนอ:

1 BC322 ครั้งที่ 6 Text file BC322 : computer Programming (Week6)

2 สิ่งที่จะเรียนในวันนี้
- การอ่านข้อมูลจากไฟล์ - การบันทึกข้อมูลลงไฟล์ BC322 : computer Programming (Week6)

3 แฟ้มข้อมูล (Data File)
การรวบรวมข้อมูลที่สัมพันธ์กัน, เกี่ยวข้องกันมาไว้ที่เดียวกัน เพื่อสะดวกในการเรียกใช้ ค้นหาข้อมูล ข้อมูลในไฟล์ – แบ่งเป็น Record 1 Field Name Age Major Year Level Sara 20 BC 3 Vevee 18 MK 1 Ken 22 IB 4 1 File 1 Record BC322 : computer Programming (Week6)

4 ขั้นตอนการบันทึกข้อมูลลงไฟล์
เปิดแฟ้มข้อมูล (Open File) บันทึกข้อมูลลงแฟ้มข้อมูล (Write File) ปิดแฟ้มข้อมูล (Close File) BC322 : computer Programming (Week6)

5 ขั้นตอนการอ่านข้อมูลจากไฟล์
เปิดแฟ้มข้อมูล (Open File) อ่านข้อมูลจากแฟ้มข้อมูล (Read File) ปิดแฟ้มข้อมูล (Close File) BC322 : computer Programming (Week6)

6 สิ่งที่จะต้องรู้ก่อน
ชื่อแฟ้มข้อมูล  ชื่ออะไร นามสกุลอะไร จะทำอะไรกับแฟ้มข้อมูล  อ่าน หรือ บันทึก BC322 : computer Programming (Week6)

7 ชนิดของแฟ้มข้อมูล Text file  ข้อความที่อ่านรู้เรื่อง
Binary file  binary data 0,1 BC322 : computer Programming (Week6)

8 การเปิดแฟ้มข้อมูล (Open File)
รูปแบบ FILE *pointer-name; pointer-name = fopen(“filename”, “mode”); Pointer-name  ชื่อตัวแปร ที่ชี้ตำแหน่งแรกของข้อมูลในไฟล์ filename  ชื่อแฟ้มข้อมูล อยู่ภายใต้เครื่องหมาย “ ” mode  เปิดเพื่อวัตถุประสงค์ใด  อ่านหรือบันทึก BC322 : computer Programming (Week6)

9 mode Mode วัตถุประสงค์ r เปิดแฟ้มข้อมูลสำหรับอ่านข้อมูล w
สร้างแฟ้มข้อมูลสำหรับบันทึกข้อมูล a เปิดแฟ้มข้อมูลสำหรับบันทึกข้อมูลต่อจากแฟ้มเดิม ถ้าไม่มีแฟ้มนี้ –สร้างแฟ้มใหม่ r+ เปิดแฟ้มข้อมูลสำหรับการอ่านและบันทึกข้อมูล w+ สร้างแฟ้มข้อมูลสำหรับการอ่านและบันทึกข้อมูล ถ้ามีอยู่แล้วจะเขียนทับข้อมูลเดิม a+ เปิดแฟ้มข้อมูลสำหรับอ่านและบันทึกข้อมูลต่อท้ายจากแฟ้มข้อมูลเดิม BC322 : computer Programming (Week6)

10 ข้อผิดพลาดของการเปิดแฟ้ม  เปิดไม่ได้ Write protect Disk full
ตัวอย่าง FILE *fp; fp = fopen(“d:/test.dat”, “w”); เปิดแฟ้มข้อมูลชื่อ test.dat เพื่อบันทึก โดยมี fp – เป็นตัวชี้ตำแหน่งข้อมูล หรือใช้ d:\\test.dat ข้อผิดพลาดของการเปิดแฟ้ม  เปิดไม่ได้ Write protect Disk full ไม่มีแฟ้มข้อมูล BC322 : computer Programming (Week6)

11 เทคนิคการตรวจสอบข้อผิดพลาดในการเปิดไฟล์ข้อมูล
FILE *fp; fp = fopen(“test.dat”,”r”); if(fp== NULL) { printf(“Cannot open file\n”); exit(0); } โปรแกรมจบการทำงาน คำสั่ง exit(0); จะใช้ได้ ต้องเพิ่ม #include <stdlib.h> ที่ต้นโปรแกรม BC322 : computer Programming (Week6)

12 การปิดแฟ้มข้อมูล รูปแบบ fclose(Pointer-name);
การปิดแฟ้มข้อมูล (Close File) หลังจากสิ้นสุดการใช้งานของแฟ้มข้อมูล ต้องปิดแฟ้มข้อมูล รูปแบบ fclose(Pointer-name); Pointer-name  ชื่อตัวแปร ที่ชี้ตำแหน่งของข้อมูลในไฟล์ BC322 : computer Programming (Week6)

13 การบันทึกข้อมูลลงแฟ้มข้อมูล

14 คำสั่ง fprintf เหมือน printf แต่จะแสดงผลในไฟล์
แสดงผลข้อมูลได้ทุกอย่าง เช่น เลขจำนวนเต็ม ทศนิยม ตัวอักษร หรือข้อความ ต้องระบุตัวแปรไฟล์ที่ต้องการจะแสดงผลลงในนั้น ใช้คู่กับการเปิดไฟล์แบบ w BC322 : computer Programming (Week6)

15 การบันทึกข้อมูลลงแฟ้มข้อมูล
รูปแบบ fprintf(fp, “format”, arg-list); fp คือ ชื่อ pointer ที่ทำหน้าที่ในการชี้ข้อมูลในแฟ้ม format คือ format code ตามชนิดของข้อมูล arg-list คือ กลุ่มของตัวแปรที่ใช้มีข้อมูลและต้องการบันทึกข้อมูลลงในแฟ้มแฟ้มข้อมูล เช่น fprintf(fp, “%s %d %d”, address, a, b); BC322 : computer Programming (Week6)

16 printf(“Enter Age%d: “,i); scanf(“%d”,&Age); fprintf(fp, “%d\n”,Age);
Ex1 จงเขียนโปรแกรมเพื่อรับอายุของเพื่อนทางหน้าจอ แล้วเก็บอายุของเพื่อน ๆ ในห้อง 20 คน ลงในไฟล์ชื่อ Student.dat for(i = 1;i <= 20;i++) { printf(“Enter Age%d: “,i); scanf(“%d”,&Age); fprintf(fp, “%d\n”,Age); } fclose(fp); #include <stdio.h> #include <stdlib.h> void main() { FILE *fp; int Age,i; fp = fopen(“Stduent.dat”,”w”); if(fp == NULL) { printf(“Cannot open file\n”); exit(0); } BC322 : computer Programming (Week6)

17 Ex2 จงเขียนโปรแกรมเพื่อเปลี่ยนค่าองศาเซลเซียส (C) เป็นองศาโรเมอร์และองศาฟาเรนไฮต์(F) ตั้งแต่ 1 – 10 องศาเซลเซียส ผลลัพธ์การเปลี่ยนค่าให้เก็บไว้ในแฟ้มข้อมูลชื่อ temp.dat C R F 1 0.00 32.00 2 1.00 3 2.00 4 3.00 5 4.00 41.00 6 5.00 7 6.00 8 7.00 9 8.00 10 9.00 50.00 BC322 : computer Programming (Week6)

18 Solution BC322 : computer Programming (Week6)

19 Ex3 : จงเขียนโปรแกรมเพื่อรับ Name,Score ของนักศึกษา 30 คน เพื่อคำนวณเกรด โดยบันทึกข้อมูลทั้งหมดลงไฟล์ Test.txt ดังนี้ Anny A Peter F Michael B ... เงื่อนไขการคิดเกรด ดังนี้ 71 – A 51 – B F BC322 : computer Programming (Week6)

20 ตัวอย่าง Data ที่ถูกเก็บลงในไฟล์
BC322 : computer Programming (Week6)

21 Solution เฉลย Ex3 BC322 : computer Programming (Week6)

22 การอ่านข้อมูลจากแฟ้มข้อมูล

23 คำสั่ง fscanf เหมือนคำสั่ง scanf แต่จะไปอ่านค่ามาจากไฟล์แทน
อ่านค่าได้เหมือนปกติ ใช้คู่กับการเปิดไฟล์แบบ r จะอ่านข้อมูลจนกว่าจะหมดไฟล์ BC322 : computer Programming (Week6)

24 การอ่านข้อมูลจากแฟ้มข้อมูล
fscanf(fp, “format”, arg-list); รูปแบบ fp คือ ชื่อ pointer ที่ทำหน้าที่ในการชี้ข้อมูลในแฟ้ม format คือ format code ตามชนิดของข้อมูล arg-list คือ กลุ่มของตัวแปรที่ใช้สำหรับเก็บข้อมูลที่ได้ จากแฟ้มข้อมูล ต้องมีเครื่องหมาย & นำหน้า (ข้อมูลหมดได้ EOF) เช่น fscanf(fp, “%s”, address); fscanf(fp, “%d %d”, &a, &b); BC322 : computer Programming (Week6)

25 การตรวจสอบข้อมูลในแฟ้มข้อมูล ข้อมูลหมดหรือยัง ?
รูปแบบ result = feof(fp); fp คือ ชื่อ pointer ที่ทำหน้าที่ในการชี้ข้อมูลในแฟ้ม ผลลัพธ์ result <> 0  ข้อมูลหมด result =  ข้อมูลยังไม่หมด BC322 : computer Programming (Week6)

26 #include <stdio.h> #include <stdlib.h> void main() {
Ex4 จงเขียนโปรแกรมเพื่ออ่านข้อมูลองศาเซลเซียส (C) องศาโรเมอร์และองศาฟาเรนไฮต์(F) จากแฟ้มข้อมูลชื่อ temp.dat แล้วแสดงผลทางจอภาพ while(!feof(fp)) { fscanf(fp,"%d%f%f", &c, &r, &f); printf("%3d%6.2f%8.2f\n", c, r, f); } fclose(fp); #include <stdio.h> #include <stdlib.h> void main() { FILE *fp; float r, f; int c; clrscr(); fp = fopen("temp.dat","r"); if(fp == NULL) printf("Cannot open file\n"); exit(0); } BC322 : computer Programming (Week6)

27 Ex5 : จงเขียนโปรแกรมอ่านข้อมูลหลาย ๆ ค่าจากไฟล์
#include <stdio.h> void main() { FILE *fi; char st1[10],st2[10],st3[10]; fi=fopen(“C:/data/contents.txt”, “r”); if(fi==NULL) printf(“can not open file”); exit(0); } fscanf(fi,”%s%s%s”,st1,st2,st3); fclose(fi); printf(“%s\n”,st1); printf(“%s\n”,st2); BC322 : computer Programming (Week6)

28 Ex6 : จงเขียนโปรแกรมเพื่ออ่านข้อมูล 3 ค่าจากไฟล์Number
Ex6 : จงเขียนโปรแกรมเพื่ออ่านข้อมูล 3 ค่าจากไฟล์Number.dat แล้วหาค่าผลรวมในแต่ละบรรทัดแล้วแสดงผลทางหน้าจอ Number.dat ผลลัพธ์ทางหน้าจอ Answer 60 40 33 39 BC322 : computer Programming (Week6)

29 Solution เฉลย Ex6 BC322 : computer Programming (Week6)

30 การอ่านข้อมูลจากไฟล์หนึ่ง เพื่อแสดงผลในอีกไฟล์หนึ่ง
จะต้องเปิดไฟล์ 2 ไฟล์ ไฟล์แรก เปิดเพื่ออ่านข้อมูลจากไฟล์ (เปิดแบบ r) ไฟล์ที่สอง เปิดเพื่อแสดงผลข้อมูลลงไฟล์ (เปิดแบบ w) เมื่อสิ้นสุดการทำงานจะต้องปิดไฟล์ทั้ง 2 ไฟล์ BC322 : computer Programming (Week6)

31 จำนวนแผนก Employee.dat 4 Marketing 15 Personnel 20 Finance 6
Ex7 บริษัทแห่งหนึ่งต้องการเขียนโปรแกรมเพื่ออ่านชื่อแผนก และจำนวนพนักงานจากไฟล์ Exployee.dat และเพื่อคิดค่าแรงให้กับพนักงาน โดยพนักงานแต่ละคนจะได้ค่าแรงวันละ 250 บาท แล้วจัดเก็บข้อมูลลงในไฟล์ Wage_emp.dat Wage_emp.dat Employee.dat จำนวนแผนก Department Employee Wage = = = = = = = = = = = = = = = = = = Marketing Personnel Finance Computer 4 Marketing 15 Personnel 20 Finance Computer 7 BC322 : computer Programming (Week6)

32 #include <stdlib.h> void main() { FILE *fin,*fout;
Solution #include <stdio.h> #include <stdlib.h> void main() { FILE *fin,*fout; int Num,Max,i,Wage; char Dep[10]; clrscr(); if(fin == NULL) { printf("Cannot open file\n"); exit(0); } เฉลย Ex7 BC322 : computer Programming (Week6)

33 เฉลย Ex7(ต่อ) BC322 : computer Programming (Week6)

34 Quiz โรงแรมแห่งหนึ่ง ต้องการเขียนโปรแกรมเพื่ออ่านค่าจากไฟล์ Hotel.dat โดยอ่าน รหัสพนักงาน(ID),จำนวนชั่วโมงทำงาน(Hour) , อัตราค่าแรง(Rate) เพื่อคิดค่าแรงของพนักงาน(Wage) โดยมีเงื่อนไขดังนี้ ถ้าทำงาน ไม่เกิน 10 ชั่วโมง คิดตามอัตราค่าแรงปกติ ถ้า ชั่วโมง คิดค่าแรง 8 ชั่วโมงแรกเป็นอัตราปกติ ส่วนที่เกิน คิด 1.5 เท่าของค่าแรงปกติ ถ้า มากกว่า 15 ชั่วโมง คิดค่าแรง 8 ชั่วโมงแรกเป็นอัตราปกติ ส่วนที่เกินคิด 2 เท่าของค่าแรงปกติ ต่อจากนั้นเก็บ ID และ Wage ลงในไฟล์ Salary.dat BC322 : computer Programming (Week6)

35 ตัวอย่าง input และ output
Salary.dat Hotel.dat A A A A A A ตัวอย่าง input และ output BC322 : computer Programming (Week6)


ดาวน์โหลด ppt BC322 ครั้งที่ 6 Text file BC322 : computer Programming (Week6)

งานนำเสนอที่คล้ายกัน


Ads by Google