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

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

Lecture 4 เรคอร์ด.

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


งานนำเสนอเรื่อง: "Lecture 4 เรคอร์ด."— ใบสำเนางานนำเสนอ:

1 Lecture 4 เรคอร์ด

2 ลักษณะทั่วไปของเรคอร์ด
เป็นโครงสร้างข้อมูลที่ประกอบด้วยฟิลด์ที่ระบุชื่อและประเภทข้อมูลของแต่ละฟิลด์ แตกต่างจากอาร์เรย์ตรงที่สมาชิกทุกตัวต้องใช้ตัวชี้ในการเข้าถึงข้อมูล ขณะที่การเข้าถึงเรคอร์ดเข้าถึงโดยชื่อของฟิลด์

3 การประกาศใช้ข้อมูลแบบเรคอร์ด
รูปแบบ ชื่อเรคอร์ด = RECORD ชื่อฟิลด์ : ประเภทข้อมูล; : END; หากเป็น variant record จะมีส่วนที่เรียกว่า variant part ร่วมอยู่ เช่น: student = record name :string[30]; stcode : string[7]; sex : char; end;

4 การประกาศใช้ข้อมูลแบบเรคอร์ด
Type date = record dayname : (mon,tue,wed,thur,fri,sat,sun); day : 1..31; month : 1..12; year : integer; end; Var today,tomorrow,yesterday : date; {เรคอร์ดสามารถกำหนดช่วงข้อมูลได้}

5 การอ้างถึงฟิลด์ในเรคอร์ด
การอ้างถึงฟิลด์ในเรคอร์ด มี 2 วิธี มีการอ้างถึง ตัวแปรเรคอร์ด.ชื่อฟิลด์ อ้างถึงโดยใช้ WITH statement เป็นคำสั่งจึงต้องอยู่ระหว่าง BEGIN ….END;

6 การอ้างถึงฟิลด์ในเรคอร์ด
ตัวแปรเรคอร์ด.ชื่อฟิลด์ today.dayname= mon; today.year= 2543; today.month= 12; today.day= 15; การอ้างวิธีนี้ไม่จำเป็นต้องเรียงลำดับก็ได้ ขณะที่ with ต้องเรียงลำดับ WITH statement WITH today Do begin dayname= mon; day= 15; month= 12; year= 2543; end;

7 โครงสร้างเรคอร์ดซ้อนเรคอร์ด
หมายถึงโครงสร้างเรคอร์ดที่มีฟิลด์เป็น เรคอร์ดซ้อนอยู่ เช่น study = record course# : string[6]; grade : char; term : 1..2; year : integer; end; Student = record name : string[30]; age : integer; sex : char; take_course : study; end;

8 โครงสร้างเรคอร์ดซ้อนเรคอร์ด
มีเรคอร์ดเก็บรายละเอียดของนักศึกษาแต่ละคน โดยนักศึกษาแต่ละคนสามารถลงทะเบียนเรียนได้หลายวิชา รายละเอียดของวิชาหนึ่งๆถือเป็น 1 เรคอร์ด

9 โครงสร้างเรคอร์ดซ้อนเรคอร์ด
program recinrec; uses wincrt; type study = record course : string[6]; grade : char; term : 1..2; year : integer; end;

10 โครงสร้างเรคอร์ดซ้อนเรคอร์ด
Student = record name : string[30]; age : integer; sex : char; take_course : study; end; var st_info : student;

11 โครงสร้างเรคอร์ดซ้อนเรคอร์ด
procedure getinfo; begin write('Enter student name: '); readln(st_info.name); write('Enter student age: '); readln(st_info.age); write('Enter student sex: '); readln(st_info.sex);

12 โครงสร้างเรคอร์ดซ้อนเรคอร์ด
write('Enter student course#: '); readln(st_info.take_course.course); write('Enter student grade: '); readln(st_info.take_course.grade); write('Enter student term: '); readln(st_info.take_course.term); write('Enter student year: '); readln(st_info.take_course.year); end;

13 โครงสร้างเรคอร์ดซ้อนเรคอร์ด
procedure writeinfo; begin writeln ('Enter student name: ', st_info.name); writeln ('Enter student age: ', st_info.age); writeln ('Enter student sex: ', st_info.sex);

14 โครงสร้างเรคอร์ดซ้อนเรคอร์ด
writeln ('Enter student course#: ', st_info.take_course.course); writeln ('Enter student grade: ', st_info.take_course.grade); writeln ('Enter student term: ',st_info.take_course.term); writeln ('Enter student year: ',st_info.take_course.year); end;

15 โครงสร้างเรคอร์ดซ้อนเรคอร์ด
begin getinfo; writeln('***********************************'); writeinfo; end.

16 โครงสร้างเรคอร์ดซ้อนเรคอร์ด
เราสามารถปรับโมดูล getinfo และ writeinf ให้ใช้ WITH statement ได้ดังนี้

17 โครงสร้างเรคอร์ดซ้อนเรคอร์ด
procedure getinfo; begin with st_info do write('Enter student name: '); readln(name); write('Enter student age: '); readln(age); write('Enter student sex: '); readln(sex); with take_course do

18 โครงสร้างเรคอร์ดซ้อนเรคอร์ด
begin write('Enter student course#: '); readln(course); write('Enter student grade: '); readln(grade); write('Enter student term: '); readln(term); write('Enter student year: '); readln(year); end;

19 โครงสร้างเรคอร์ดซ้อนเรคอร์ด
procedure writeinfo; begin with st_info do { อาจใช้ with st_info,take_course} with take_course do writeln ('Enter student name: ', name); writeln ('Enter student age: ', age); writeln ('Enter student sex: ', sex);

20 โครงสร้างเรคอร์ดซ้อนเรคอร์ด
writeln ('Enter student course#: ', course); writeln ('Enter student grade: ', grade); writeln ('Enter student term: ',term); writeln ('Enter student year: ',year); end;

21 โครงสร้างเรคอร์ดที่มีฟิลด์เป็นอาร์เรย์
ในบางครั้งฟิลด์บางฟิลด์อาจมีการเกิดขึ้นซ้ำได้หลายครั้ง เช่น ใบเสร็จรับเงิน มีรายละเอียดสินค้าได้หลายรายการ หรือ การลงทะเบียนของนักเรียน 1 คน อาจเรียนได้หลายวิชา

22 โครงสร้างเรคอร์ดที่มีฟิลด์เป็นอาร์เรย์
รูปแบบ type bill = record cust_name : string[30]; address : string[30]; goods : array[1..10] of string [20]; price :array[1..10] real; end; หรือ type register = record st_name : string[20]; st_code : string[7]; subject : array [1..6] of string[7] end;

23 ตัวอย่าง โครงสร้างเรคอร์ดที่มีฟิลด์เป็นอาร์เรย์
ตัวอย่าง โครงสร้างเรคอร์ดที่มีฟิลด์เป็นอาร์เรย์ (* This program declare record and in side it has an array*) program r_w_rec2; uses wincrt; type person = record name : string[20]; id : string[7]; subj : array [1..6] of string[4]; end;

24 ตัวอย่าง โครงสร้างเรคอร์ดที่มีฟิลด์เป็นอาร์เรย์
ตัวอย่าง โครงสร้างเรคอร์ดที่มีฟิลด์เป็นอาร์เรย์ var recinfo : person; i : integer; procedure readrec; begin with recinfo do write('Enter name : '); readln (name); write('Enter id : '); readln (id);

25 ตัวอย่าง โครงสร้างเรคอร์ดที่มีฟิลด์เป็นอาร์เรย์
ตัวอย่าง โครงสร้างเรคอร์ดที่มีฟิลด์เป็นอาร์เรย์ for i:= 1 to 6 do begin writeln('Enter subject name : '); readln (subj[i]); end;

26 ตัวอย่าง โครงสร้างเรคอร์ดที่มีฟิลด์เป็นอาร์เรย์
ตัวอย่าง โครงสร้างเรคอร์ดที่มีฟิลด์เป็นอาร์เรย์ procedure writerec; begin clrscr; with recinfo do write(name:20,' ',id:10,' '); for i:= 1 to 6 do write(subj[i]:6); end;

27 ตัวอย่าง โครงสร้างเรคอร์ดที่มีฟิลด์เป็นอาร์เรย์
ตัวอย่าง โครงสร้างเรคอร์ดที่มีฟิลด์เป็นอาร์เรย์ begin readrec; writerec; end.

28 โครงสร้างอาร์เรย์ที่มีสมาชิกเป็น เรคอร์ด
ในบางครั้งเราจำเป็นต้องมีการเรียงลำดับข้อมูลที่อยู่ในเรคอร์ด ซึ้งการเรียงลำดับนี้ต้องนำเรคอร์ดเข้าไปเก็บไว้ในหน่วยความจำจึงต้องอาศัยอาร์เรย์เป็นตัวเก็บข้อมูลแบบเรคอร์ด

29 โครงสร้างอาร์เรย์ที่มีสมาชิกเป็น เรคอร์ด
รูปแบบ type phon = record phonum : string [7]; custname : string[20]; end; var custrec : array[1..max] of phon;

30 โครงสร้างอาร์เรย์ที่มีสมาชิกเป็น เรคอร์ด
การอ่านและเขียนข้อมูลจากโครงสร้างอาร์เรย์ที่มีสมาชิกเป็น เรคอร์ด ทำได้ดังนี้

31 ตัวอย่าง โครงสร้างอาร์เรย์ที่มีสมาชิกเป็น เรคอร์ด
ตัวอย่าง โครงสร้างอาร์เรย์ที่มีสมาชิกเป็น เรคอร์ด (* This program declare array in side it has a record.*) program r_w_rec3; uses wincrt; const max = 1; type person = record name : string[20]; id : string[7]; subj : string[4]; end; stlist = array [1..max] of person;

32 ตัวอย่าง โครงสร้างอาร์เรย์ที่มีสมาชิกเป็น เรคอร์ด
ตัวอย่าง โครงสร้างอาร์เรย์ที่มีสมาชิกเป็น เรคอร์ด var recinfo : stlist; i : integer; procedure readrec; begin for i:= 1 to max do

33 ตัวอย่าง โครงสร้างอาร์เรย์ที่มีสมาชิกเป็น เรคอร์ด
ตัวอย่าง โครงสร้างอาร์เรย์ที่มีสมาชิกเป็น เรคอร์ด with recinfo[i] do begin write('Enter name : '); readln (name); write('Enter id : '); readln (id); write('Enter subject name : '); readln(subj); writeln('***************') end; end; end;

34 ตัวอย่าง โครงสร้างอาร์เรย์ที่มีสมาชิกเป็น เรคอร์ด
ตัวอย่าง โครงสร้างอาร์เรย์ที่มีสมาชิกเป็น เรคอร์ด procedure writerec; begin clrscr; for i:= 1 to max do with recinfo[i] do begin write(name:20 ',id:10,' ',subj:6); writeln; end;

35 ตัวอย่าง โครงสร้างอาร์เรย์ที่มีสมาชิกเป็น เรคอร์ด
ตัวอย่าง โครงสร้างอาร์เรย์ที่มีสมาชิกเป็น เรคอร์ด begin readrec; writerec; end.

36 ตัวอย่าง การค้นหาเรคอร์ดที่อยู่ในอาร์เรย์
program searchrec; uses wincrt; const max = 100; var student: starray; size: integer; type studentrec = record id :string [7]; name:string [30]; age :integer; sex: char; end; starray = array[1..100] of studentrec;

37 ตัวอย่าง การค้นหาเรคอร์ดที่อยู่ในอาร์เรย์
procedure getrec(var i:integer); var tempid :string[7]; begin i :=0; clrscr; write('Enter id (id = for end)'); readln(tempid);

38 ตัวอย่าง การค้นหาเรคอร์ดที่อยู่ในอาร์เรย์
id := tempid; write('Enter name :'); readln(name); write('Enter age :'); readln(age); write('Enter sex:'); readln(sex); end; while (tempid <> ' ') and (i<max) do begin i := i +1; with student[i] do

39 ตัวอย่าง การค้นหาเรคอร์ดที่อยู่ในอาร์เรย์
writeln; write('Enter id (id = for end)'); readln(tempid); end;

40 ตัวอย่าง การค้นหาเรคอร์ดที่อยู่ในอาร์เรย์
procedure writerec; var i: byte; begin clrscr; for i:= 1 to size do with student[i] do begin writeln(id:10,name:35,age:5,sex:5); end;

41 ตัวอย่าง การค้นหาเรคอร์ดที่อยู่ในอาร์เรย์
procedure searching; var i:integer; shid :string[7]; flag:boolean; begin clrscr; i:=0; flag := false;

42 ตัวอย่าง การค้นหาเรคอร์ดที่อยู่ในอาร์เรย์
write('Enter student id you want to search ( for end) : '); readln(shid); while shid <> ' ' do begin i := i +1; end;

43 ตัวอย่าง การค้นหาเรคอร์ดที่อยู่ในอาร์เรย์
while (i<=size) and (flag = false) do begin if (shid = student[i].id) then flag := true else i := i+1; end; writeln;

44 ตัวอย่าง การค้นหาเรคอร์ดที่อยู่ในอาร์เรย์
with student[i] do begin if flag = true then writeln(shid:10,name:30,age:5,sex:5,' is found') else writeln(shid:10,' is not found'); end; {end with}

45 ตัวอย่าง การค้นหาเรคอร์ดที่อยู่ในอาร์เรย์
i := 0; flag := false ; writeln; write('Enter student id you want to search ( for end) : '); readln(shid); end;

46 ตัวอย่าง การค้นหาเรคอร์ดที่อยู่ในอาร์เรย์
Begin {*** MAIN ***} getrec(size); writerec; readln; searching; end.

47 Thank You…


ดาวน์โหลด ppt Lecture 4 เรคอร์ด.

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


Ads by Google