علاقمندان به زبان های برنامه نویسی روزتون بخیر. با آموزش زبان برنامه نویسی پاسکال (Pascal) از وب سایت آموزشی پی وی لرن همراهتون خواهیم بود. در این بخش از آموزش به بررسی رکوردها یا Records در زبان پاسکال (Pascal) خواهیم پرداخت. با ادامه ی آموزش ها همراه باشید.
آرایه های پاسکال به شما امکان تعریف نوع متغیرهایی را می دهد که می توانند چندین آیتم داده را از همان نوع نگه دارند اما یک رکورد نوع دیگری از داده تعریف شده توسط کاربر است که در Pascal موجود است و به شما امکان می دهد موارد مختلفی را در انواع مختلف ترکیب کنید.
رکوردها شامل فیلدهای مختلف است. فرض کنید می خواهید کتاب های خود را در یک کتابخانه پیگیری کنید ، ممکن است بخواهید ویژگی های زیر را درباره هر کتاب ردیابی کنید.
برای تعریف یک نوع رکورد ، می توانید از عبارت اعلان type استفاده کنید. رکورد type به صورت زیر تعریف می شود.
1 2 3 4 5 6 7 | type record-name = record field-1: field-type1; field-2: field-type2; ... field-n: field-typen; end; |
در این جا روشی که شما می توانید رکورد Book را اعلام کنید آمده است.
1 2 3 4 5 6 7 | type Books = record title: packed array [1..50] of char; author: packed array [1..50] of char; subject: packed array [1..100] of char; book_id: integer; end; |
متغیرهای رکورد به روش معمول تعریف می شوند.
1 2 | var r1, r2, ... : record-name; |
از طرف دیگر ، شما می توانید مستقیماً متغیری از نوع رکورد را به صورت زیر تعریف کنید.
1 2 3 4 5 6 7 | var Books : record title: packed array [1..50] of char; author: packed array [1..50] of char; subject: packed array [1..100] of char; book_id: integer; end; |
برای استفاده از رکورد باید متغییری از نوع رکورد معرفی کنید. برای دستیابی به فیلدهای یک رکورد ، از علامت نقطه به صورت زیر استفاده می شود. . در زیر مثالی برای توضیح استفاده از ساختار آورده شده است.
برای اعلان یک رکورد باید از کلمه ی رزرو شده ی Type و سپس نام رکورد استفاده کنید.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 | program exRecords; type Books = record title: packed array [1..50] of char; author: packed array [1..50] of char; subject: packed array [1..100] of char; book_id: longint; end; var Book1, Book2: Books; (* Declare Book1 and Book2 of type Books *) begin (* book 1 specification *) Book1.title := 'C Programming'; Book1.author := 'Nuha Ali '; Book1.subject := 'C Programming Tutorial'; Book1.book_id := 6495407; (* book 2 specification *) Book2.title := 'Telecom Billing'; Book2.author := 'Zara Ali'; Book2.subject := 'Telecom Billing Tutorial'; Book2.book_id := 6495700; (* print Book1 info *) writeln ('Book 1 title : ', Book1.title); writeln('Book 1 author : ', Book1.author); writeln( 'Book 1 subject : ', Book1.subject); writeln( 'Book 1 book_id : ', Book1.book_id); writeln; (* print Book2 info *) writeln ('Book 2 title : ', Book2.title); writeln('Book 2 author : ', Book2.author); writeln( 'Book 2 subject : ', Book2.subject); writeln( 'Book 2 book_id : ', Book2.book_id); end. |
هنگامی که کد فوق کامپایل و اجرا می شود ، نتیجه ی زیر را ایجاد می کند.
1 2 3 4 5 6 7 8 9 | Book 1 title : C Programming Book 1 author : Nuha Ali Book 1 subject : C Programming Tutorial Book 1 book_id : 6495407 Book 2 title : Telecom Billing Book 2 author : Zara Ali Book 2 subject : Telecom Billing Tutorial Book 2 book_id : 6495700 |
به همان روشی که هر متغیر یا اشاره گر دیگری را منتقل می کنید ، می توانید یک رکورد را به عنوان یک آرگومان زیر برنامه منتقل کنید. شما می توانید به فیلدهای رکورد به همان روشی که در مثال فوق دسترسی داشتید دسترسی پیدا کنید.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 | program exRecords; type Books = record title: packed array [1..50] of char; author: packed array [1..50] of char; subject: packed array [1..100] of char; book_id: longint; end; var Book1, Book2: Books; (* Declare Book1 and Book2 of type Books *) (* procedure declaration *) procedure printBook( var book: Books ); begin (* print Book info *) writeln ('Book title : ', book.title); writeln('Book author : ', book.author); writeln( 'Book subject : ', book.subject); writeln( 'Book book_id : ', book.book_id); end; begin (* book 1 specification *) Book1.title := 'C Programming'; Book1.author := 'Nuha Ali '; Book1.subject := 'C Programming Tutorial'; Book1.book_id := 6495407; (* book 2 specification *) Book2.title := 'Telecom Billing'; Book2.author := 'Zara Ali'; Book2.subject := 'Telecom Billing Tutorial'; Book2.book_id := 6495700; (* print Book1 info *) printbook(Book1); writeln; (* print Book2 info *) printbook(Book2); end. |
هنگامی که کد فوق کامپایل و اجرا می شود ، نتیجه ی زیر را ایجاد می کند.
1 2 3 4 5 6 7 8 9 | Book 1 title : C Programming Book 1 author : Nuha Ali Book 1 subject : C Programming Tutorial Book 1 book_id : 6495407 Book 2 title : Telecom Billing Book 2 author : Zara Ali Book 2 subject : Telecom Billing Tutorial Book 2 book_id : 6495700 |
مبحث رکوردها یا Records در زبان پاسکال (Pascal) را با موضوع اشاره گرها به رکوردها ادامه خواهیم داد.
شما می توانید اشاره گرها را به رکوردها به روشی مشابه تعریف کنید ، همان طور که اشاره گر را به هر متغیر دیگر به شرح زیر تعریف می کنید.
1 2 3 4 5 6 7 8 | type record-ptr = ^ record-name; record-name = record field-1: field-type1; field-2: field-type2; ... field-n: field-typen; end; |
اکنون می توانید آدرس متغیر نوع رکورد را در متغیر اشاره گر تعریف شده فوق ذخیره کنید. برای اعلام متغیر از نوع اشاره گر ایجاد شده ، از کلمه کلیدی var استفاده می کنید.
1 2 | var r1, r2, ... : record-ptr; |
قبل از استفاده از این اشاره گرها ، باید مکانی برای یک متغیر از نوع record-name ایجاد کنید ، که توسط این اشاره گرها دستکاری می شود.
1 2 | new(r1); new(r2); |
برای دسترسی به اعضای یک رکورد با استفاده از یک اشاره گر به آن رکورد ، باید از ^ استفاده کنید. عملگر به شرح زیر است.
1 2 3 4 | r1^.feild1 := value1; r1^.feild2 := value2; ... r1^fieldn := valuen; |
سرانجام ، زمانی که به مدت طولانی از آن استفاده نشده است ، فضای استفاده شده را dispose کنید.
1 2 | dispose(r1); dispose(r2); |
بگذارید اولین مثال را با استفاده از یک اشاره گر به رکورد Books دوباره بنویسیم. امیدوارم که درک این مفهوم برای شما آسان باشد.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 | program exRecords; type BooksPtr = ^ Books; Books = record title: packed array [1..50] of char; author: packed array [1..50] of char; subject: packed array [1..100] of char; book_id: longint; end; var (* Declare Book1 and Book2 of pointer type that refers to Book type *) Book1, Book2: BooksPtr; begin new(Book1); new(book2); (* book 1 specification *) Book1^.title := 'C Programming'; Book1^.author := 'Nuha Ali '; Book1^.subject := 'C Programming Tutorial'; Book1^.book_id := 6495407; (* book 2 specification *) Book2^.title := 'Telecom Billing'; Book2^.author := 'Zara Ali'; Book2^.subject := 'Telecom Billing Tutorial'; Book2^.book_id := 6495700; (* print Book1 info *) writeln ('Book 1 title : ', Book1^.title); writeln('Book 1 author : ', Book1^.author); writeln( 'Book 1 subject : ', Book1^.subject); writeln( 'Book 1 book_id : ', Book1^.book_id); (* print Book2 info *) writeln ('Book 2 title : ', Book2^.title); writeln('Book 2 author : ', Book2^.author); writeln( 'Book 2 subject : ', Book2^.subject); writeln( 'Book 2 book_id : ', Book2^.book_id); dispose(Book1); dispose(Book2); end. |
هنگامی که کد فوق کامپایل و اجرا می شود ، نتیجه ی زیر را ایجاد می کند.
1 2 3 4 5 6 7 8 9 | Book 1 title : C Programming Book 1 author : Nuha Ali Book 1 subject : C Programming Tutorial Book 1 book_id : 6495407 Book 2 title : Telecom Billing Book 2 author : Zara Ali Book 2 subject : Telecom Billing Tutorial Book 2 book_id : 6495700 |
ما قبلا بحث کرده ایم که با استفاده از (.) اعضای یک رکورد قابل دسترسی هستند. به این ترتیب نام متغیر رکورد باید هر بار نوشته شود. جمله With یک راه جایگزین برای انجام این کار را ارائه می دهد.
به قطعه کد زیر که از اولین مثال مان گرفته شده است نگاه کنید.
1 2 3 4 5 | (* book 1 specification *) Book1.title := 'C Programming'; Book1.author := 'Nuha Ali '; Book1.subject := 'C Programming Tutorial'; Book1.book_id := 6495407; |
همان تکلیف را می توان با استفاده از جمله With به صورت زیر نوشت:
1 2 3 4 5 6 7 8 | (* book 1 specification *) With Book1 do begin title := 'C Programming'; author := 'Nuha Ali '; subject := 'C Programming Tutorial'; book_id := 6495407; end; |
مبحث رکوردها یا Record ها در زبان پاسکال (Pascal) را در این بخش به پایان می رسانیم.
رکوردها یا Records در زبان پاسکال (Pascal) را در این بخش از آموزش مورد بررسی قرار دادیم. در بخش بعدی با مبحث Variant ها در خدمتتون خواهیم بود. با ادامه ی آموزش زبان برنامه نویسی پاسکال (Pascal) از وب سایت آموزشی پی وی لرن همراه باشید.