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

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

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 begin 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 begin 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 begin 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 begin 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 begin

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 ตัวอย่าง การค้นหาเรคอร์ดที่อยู่ในอาร์เรย์ while (tempid <> ' ') and (i

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