Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Uch_praktika_-_4_-_zapisii_mnozhestva.doc
Скачиваний:
5
Добавлен:
19.05.2015
Размер:
92.67 Кб
Скачать

14

МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ

ГОСУДАРСТВЕННОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ

ДОНСКОЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ (ДГТУ)

КОЛЛЕДЖ ЭКОНОМИКИ, УПРАВЛЕНИЯ И ПРАВА

Шинакова С.В.

Методические рекомендации по учебной практике

для студентов 2 курса специальности 230105 ПОВТ и АС

Дисциплина: Основы алгоритмизации и программирования

Тема №4 «Работа с записями и множествами»

Ростов-на-Дону

2011

Рассмотрены на заседании Ц(П)К специальности 230105.51 Программное обеспечение вычислительной техники и автоматизированных систем

«07» апреля 2011 г. Протокол № 8

Председатель Ц(П)К _____________ Шинакова С.В.

Практическая работа № 4

    1. Тема: «Работа с записями и множествами»

1 Цель работы

    1. Изучить принципы работы с записями на языке Pascal.

2 Задачи работы

    1. Научиться основным алгоритмам решения задач с использованием записей на языке Pascal.

3 Порядок выполнения работы

3.1. В среде программирования TurboPascalилиPascalABCсоставить и отладить программу решения задачи тему «Работа с записями», согласно приложениям А, Б и В.

3.2 Проанализировать полученные результаты.

3.3 Составить отчет о проделанной работе.

4 Требования к отчету

Отчет по работе должен содержать:

-название, цель работы;

-номер варианта для выполнения задания и условие своего варианта;

-текст (листинг) программы;

-полученные при расчетах результаты;

-ответы на контрольные вопросы (по желанию).

5 Теоретические положения

Запись – это структура данных, состоящая из фиксированного числа компонент, называемых полями. Каждое поле имеет свой идентификатор и тип. К компонентам записи возможен прямой доступ и они могут выборочно обновляться. Идентификатор в самой записи должен быть уникальным. Для обращения к отдельным полям записи указываются составные имена: имя записи, после которого ставится точка и записывается идентификатор поля. Запись можно передавать в качестве параметра процедуры или функции, но значением функции запись быть не может.

В общем виде описание типа для записи можно представить: 

TYPE <идентификатор типа>= RECORD

<идентификатор 11>[,<идентификатор 12>,…]: <тип 1>;

<идентификатор 21>[,<идентификатор 22>,…]: <тип 2>; . . .                 END; 

Например,

TYPE TA= RECORD                 P1 : REAL;                 P2 : CHAR;                 P3 : BYTE                 END;

Var a: array[1..10] of ta;

Здесь описан одномерный массив, каждый элемент которого представляет собой запись, имеющую структуру типа TA.

Запись может объявляться и непосредственно в разделе описания переменных.

Var c : record p1 : real; p2 : char; p3 : byte end;

Рассмотрим пример. Дан массив записей со следующей структурой:             -         шифр группы;             -         номер зачетной книжки;             -         код дисциплины;             -         оценка.

Требуется определить средний балл студентов группы AI007. При вводе массива последняя запись имеет шифр группы «99999».

            Program srball;

            type zap=record                 shg:string[5];                 nzk:integer;                 kd:1..100;                 oc:2..5                 end;

var mas:array[1..100] of zap;                 k,n,i:byte;                 sum:real;

begin                 i:=0;                 repeat                     inc(i);                     readln (mas[i].shg, mas[i].nzk, mas[i].kd, mas[i].oc)                 until mas[i].shg='99999';                 n:=i; sum:=0; k:=0;                 for i:=1 to n do                     if mas[i].shg='AI007' then                         begin                             sum:=sum+mas[i].oc;                             inc(k)                         end;                 if k<>0 then sum:=sum/k;     writeln ('Средний балл в группе AI007=',sum)             End.

Оператор присоединения (with)

При обращении к компонентам записи используются составные имена. Для сокращения имен и повышения удобства работы с записями применяется оператор присоединения WITH.

WITH <идентификатор переменной типаRECORD> DO

< оператор>;

Тогда в операторе при ссылке на компоненты записи имя переменной можно опускать. При использовании оператора присоединения фрагмент рассмотренной ранее программы будет выглядеть: 

. . .                 i:=0;                 repeat     i:=i+1;                     WITH MAS[I] DO                         readln(shg,nzk,kd,oc)                 until mas[i].shg='99999';                 n:=i; sum:=0; k:=0;                 for i:=1 to n do                     WITH MAS[I] DO                         if shg=' AI007' then                             begin                                 sum:=sum+oc;                                 k:=k+1;                             end;                 . . .

Возможны вложенные описания записи и вложенные конструкции WITH. Рассмотрим пример вложенных описаний. Пусть запись о студентах содержит следующие поля:             -         номер по порядку;             -         фио (содержит в свою очередь поля – фамилия, имя, отчество),             -         номер зачетной книжки;             -         дата рождения (содержит поля –год, месяц, день).

Программа ввода и подсчета введенных записей для записей такой структуры может выглядеть

            type zap=record                 npp:byte;                 fio:record                     F,i,o:string[15];                     end;                 nzk:word;                 dtr:record                     g:1980..1990;                     m:string[3];                     d:1..31                     end;                 end;

            var a:zap;                 k,n:byte;

            Begin                 k:=0;                 with a do                     with fio do                         with dtr do                             repeat                                 k:=k+1;                                 writeln('ввод ');                                 readln(npp);                                 readln(f);                                 readln(i);                                 readln(o);                                 readln(nzk);                                 readln(g);                                 readln(m);                                 readln(d);                             until d=99;                 writeln(k);                 readln;             End.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]