Робота із записами на мові Turbo Paskal

Інформація про навчальний заклад

ВУЗ:
Національний університет Львівська політехніка
Інститут:
Не вказано
Факультет:
Не вказано
Кафедра:
Кафедра ЕОМ

Інформація про роботу

Рік:
2003
Тип роботи:
Звіт про виконання лабораторної роботи
Предмет:
Інші
Група:
КІ

Частина тексту файла (без зображень, графіків і формул):

Міністерство освіти і науки України НУ „Львівська політехніка” Кафедра ЕОМ ЗВІТ Про виконання лабораторної роботи №6 Робота із записами на мові Turbo Paskal Кохалик Р.В. (Студент) ІКТА КІ-17 (Група) Мітьков В.С. (Керівник лаб. Занятть) Львів 2003 Робота із записами на мові Turbo Pascal Мета роботи: вивчення способів оголошення та алгоритмів опрацювання даних структурних типів . Теоретичний вступ: 1. Оголошення та доступ до полів Запис - це структура даних, що складаїться із кінцевої кількості логічно зв'язаних компонентів, які називаються полями запису. Від масивів записи відрізняються тим, що їх поля можуть бути різного типу. Поля запису мають імена для посилання на них. Структура оголошення типу запису: type ім'я_типу=record ім'я_поля1: тип_поля1; ім'я_поля2,...,ім'я_поляj: тип_полів2_j; {........................} ім'я_поляn: тип_поляn end; Імена полів запису ї правильними ідентифікаторами Турбо-Паскаля. В межах одного типу запису вони повинні бути унікальними, але можуть співпадати з іншими ідентифікаторами поточного блоку програми, або з полями інших записів. Ім'я поля від типу поля відділяїться двокрапкою. Якщо декілька полів мають одинаковий тип, то вони можуть задаватися через кому. В якості типу поля може використовуватися довільний допустимий тип. Список полів охоплюїться ключовими словами record-end. Після останнього опису поля перед end можна не ставити крапку з комою. Якщо поле запису в свою чергуї записом, то такі записи називаються вкладеними. Слід звернути увагу на те, що тип запису описуїться в блоці type, а сам запис оголошуїться в блоці var. Приклад оголошення запису: type rozm=record x,y,z:real end; var size1:rozm; var product:record name:string[20]; count:word; size:rozm; price:real end; Доступ до полів запису здійснюїться шляхом вказання імені запису та імені поля, розділених крапкою, наприклад: product.name:='Вирiб 001'; product.count:=1; Для вкладених записів необхідне уточнення: product.size.x; product.size.y; Імена полів запису можуть повторюватися на різних рівнях їх вкладеності. 2. Оператор дії над записами Для спрощення доступу до полів запису використовуїться оператор with-do: with ім'я_запису do оператор; Ім'я запису ї правильним ідентифікатором і повинно бути попередньо оголошене в блоці var. Ім'я запису може визначати елемент масиву записів. В якості оперетора може використовуватися довільний оператор Турбо-Паскаля, в тому числі складений. Приклад використання оператора with: var date: record month:byte; year :word end; {........} with date do if month=12 then begin month:=1; year:=year+1 end else month:=month+1; Приведений приклад еквівалентний наступному: if date.month=12 then begin date.month:=1; date.year:=date.year+1 end else date.month:=date.month+1; Оператор with може бути вкладеним: with V1 do with V2 do {........} with Vn do оператор; де V1,...,Vn - імена записів. Цей оператор еквівалентний наступному: with V1,V2,...,Vn do оператор; На i-му рівні вкладеності операторів with дії наступне правило: ідентифікатор x вважаїться іменем поля запису Vi, потім - (i-1)-го запису і т.д.; Імена записів перевіряються на вкладеність. Тому ідентифікатор x буде в першу чергу полем вкладених записів. Якщо це не так, то x перевіряїться на належність до окремих записів знизу вгору. Якщо ідентифікатор x не входить ні в один із записів, то він повинен бути описаний як елемент іншого типу даних. 3. Ініціалізація записів Початкова ініціалізація записів може бути виконана одним із наступних способів: 1) оголошенням типованих констант; 2) шляхом присвоїння значень полям в операторній частині програми; 3) при вводі значень полів з клавіатури. При оголошенні типованих констант типу запис у круглих дужках вказуються назви полів та їх значення. Назва поля від його значення відокремлюїться символом "двокрапка", а одне поле від іншого - символом "крапка з комою". Приклад оголошення типованої константи: Const m:product=(name:'Вирiб 001'; count:1; size:(x:20;y:50;z:40); price:890); Полям змінної типу запис можна присвоїти значення в операторній частині програми, наприклад: Var m:product; begin with m,size do begin name:='Вирiб 001'; count:=1; x:=20; y:=50; z:=40; price:=890 end {...} end. Ввід записів з клавіатури та вивід на екран або на принтер здійснюїться по окремих полях. При вводі різнотипних полів необхідно пам'ятати, що: 1) числові поля одне від одного та від полів іншого типу відділяються пропусками, символом табуляції або переходу на новий рядок; 2) в символьне поле (char або string) будуть прочитані один або декілька символів розділення, розміщених зразу після останнього прочитаного поля; 3) рядки символів читаються до вичерпання оголошеної довжини або до символу EOLN, який формуїться при натисканні клавіші Enter. Символ EOLN у рядок не потрапляї і може бути прочитаний наступним вводом символьних даних. Приклад вводу та виводу полів запису: Var m:product; begin writeln('Введіть поля запису: string[20] word real real real real'); with m,size do readln(name,count,x,y,z,price); with m,size do writeln(name,count,x,y,z,price); {...} end. 4. Операції над записами Для тотожніх записів дозволяїться виконання операції присвоїння, наприклад: Type rec=record move:(Right,Left,Ahead,Back,Stop); x,y:real end; Const a:rec=(move:Ahead;x:2.0;y:5.0); Var b:rec; Begin b:=a; with b do begin case move of Right: write('Right':-10); Left: write('Left':-10); Ahead: write('Ahead':-10); Back: write('Back'):-10; Stop: write('Stop':-10) end; writeln(x:5:2,y:5:2); end End. Порівняння двох записів здійснюїться окремо по кожному полю, наприклад: if (a.move=b.move) and (a.x=b.x) and (a.y=b.y) then writeln('Записи співпадають'); 5. Масиви записів Записи можуть бути елементами масивів, наприклад: var x:array[1..5] of product; Тоді доступ до окремих полів здійснюїться вказанням індексів елемента масиву, наприклад: x[1].name:='Вирiб 001'; x[1].count:=1; with x[1] do price:=890; Ввід або вивід елементів масиву записів здійснюїться у циклі: for i:=1 to 5 do with x[i], size do begin readln(name,count,x,y,z,price); writeln(name,count,x,y,z,price) end; Текст програми: Program tovar; Uses crt; type Tnomencl = record name: string; code: longint; price: longint; end; type Torder = record code, quantity: longint; end; type Tcheque = record name:string; cost:longint; end; const Goods: array [1..5] of Tnomencl = ((name: 'Parasol'; code: 1; price: 50), (name: 'cricket'; code: 2; price:1), (name: 'Sound card'; code: 3; price: 20), (name: 'jeans'; code: 4; price: 60), (name: 'disk'; code: 5; price: 15)); Var Cheque: Array [1..5] of Tcheque; Order:Array [1..5] of Torder; i:integer; e:string; Begin Repeat Writeln ('Enter quantity'); For i:=1 to 5 do With order[i] do Begin Write ('Code:',i,' Quantity:'); code:=i; Read (quantity); End; Writeln ('---------------'); For i:=1 to 5 do With cheque [i] do Begin name:=Goods[i].name; cost :=Goods[i].price*order[i].quantity; Writeln ('Name:',name); Writeln ('Cost:',cost); Writeln ('---------------'); End; Writeln ('For exit press "Q"'); e:= readkey; Until e ='q'; readln; readln; end.
Антиботан аватар за замовчуванням

25.12.2011 10:12-

Коментарі

Ви не можете залишити коментар. Для цього, будь ласка, увійдіть або зареєструйтесь.

Ділись своїми роботами та отримуй миттєві бонуси!

Маєш корисні навчальні матеріали, які припадають пилом на твоєму комп'ютері? Розрахункові, лабораторні, практичні чи контрольні роботи — завантажуй їх прямо зараз і одразу отримуй бали на свій рахунок! Заархівуй всі файли в один .zip (до 100 МБ) або завантажуй кожен файл окремо. Внесок у спільноту – це легкий спосіб допомогти іншим та отримати додаткові можливості на сайті. Твої старі роботи можуть приносити тобі нові нагороди!
Нічого не вибрано
0%

Оголошення від адміністратора

Антиботан аватар за замовчуванням

Подякувати Студентському архіву довільною сумою

Admin

26.02.2023 12:38

Дякуємо, що користуєтесь нашим архівом!