Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Теоретические сведения. К выполнению лабораторной работы №8




Лабораторная работа №8

К выполнению лабораторной работы №8

МЕТОДИЧЕСКИЕ УКАЗАНИЯ

по дисциплине «Информатика»

специальностей инженерно-технического факультета

для дневной формы обучения

(для внутривузовского пользования)

 

 

 

 

г. Павлодар, 2000г.

 

 

«СОГЛАСОВАНО» Декан ИТФ к.т.н., доцент В.А.Козионов   «____» ____________ 2001г.   «УТВЕРЖДАЮ» Проректор по УМи ВР Пфейфер Н.Э.___________   “____“ __________2000 г.

 

Составитель старший преподаватель Третьякова Т.И.

 

Кафедра “Автоматизированные системы обработки информации и управления”

 

Утверждено на заседании кафедры “АСОИиУ” протокол № __ от _________ 200__г.

 

 

Зав. кафедрой “ АСОИиУ ” к.т.н., доцент Еслямов С.Г.

 

Одобрено УМО ПаУ

 

Нач. УМО к.т.н., доцент Мустафина Р.М.

 

Тема: применение записей в составлении программ.

Цель работы: познакомиться с понятием «запись», научиться применять записи в составлении программ.

 

В настоящее время вычислительная техника находит широкое применение в различного рода информационных системах. Они имеются в больших библиотеках, торговле, производстве, адресных бюро и т.д. В информационных системах довольно часто приходится иметь дело с комбинациями разнотипных объектов. В Паскале комбинациями разного типа являются записи. Составляющие запись объекты называются полями. В записи каждое поле имеет своё собственное имя. Упрощённая форма определения записи включает указание имени записи, имён отдельных компонентов (полей) и соответствующих им типов данных.

TYPE

< имя записи >=

RECORD

< имя поля 1 >: < тип >

< имя поля 2 >: < тип >

…………………………

< имя поля N >: < тип >

END;

Например, для решения задачи определения среднего балла, имея данные по пяти дисциплинам для конкретного студента, запись может иметь вид:

TYPE

STR =

RECORD

FAM: STRING[20];

B1, B2, B3, B4, B5:1..5;

SB: REAL;

END;

Здесь FAM обозначает строку символов для хранения фамилии студента, В1, B2, B3, B4, B5 – баллы по соответствующим дисциплинам, SB – средний балл. Переменная типа STR имеет смысл записи, содержащей информацию об одном студенте. Организация этой структуры показана на рис.1.

 
 
STR


Запись

 

FAM    

Массив Отрезки типов Веществен-

символов ный тип

Рис.1.

Если требуется хранить информацию не по одному студенту, а по 25, то можно ввести массив записей TBL:

VAR

TBL: ARRAY [1..25] OF STR;

Обращение к полям записи осуществляется посредством составного имени:

< имя переменной-записи >.< имя поля >

Возможны, например, такие операторы присваивания:

TBL[ 3 ].FAM:= “Иванов”;

TBL[ 20 ].B2:=5;

TBL[ K+1 ].SB:=4.666;

Имена компонент внутри записи не должны повторяться. Значения записи можно пересылать в другие переменные – записи с помощью операторов присваивания. Возвращаясь к рассмотренному примеру, можно записать:

TYPE

STR=

RECORD

FAM: STRING[20]; B1, B2, B3, B4, B5:2..5;

SB: REAL

END;

VAR Z1, Z2: STR;

BEGIN

- - - - - - - -

Z1:=Z2;

Указанный в программе оператор присваивания эквивалентен следующим операторам:

Z1.FAM:= Z2.FAM;

Z1.B1:= Z2.B2;

Z1.B2:= Z2.B2;

Z1.B3:= Z2.B3;

Z1.B4:= Z2.B4;

Z1.B5:= Z2.B5;

Z1.SB:= Z2.SB;

 

Составим программу для нахождения среднего балла для каждого студента группы, состоящей из 25 человек.

PROGRAM BAL;

TYPE STR=

RECORD

FAM: STRING[20];

B1, B2, B3, B4, B5: 1..5;

SB: REAL;

END;

VAR

TBL: ARRAY [ 1..25 ] OF STR;

I: INTEGER;

BEGIN

FOR I:=1 TO 25 DO { Цикл для ввода фамилий всех 25

BEGIN студентов и их оценок по 5

READLN (TB < [ I ].FAM); дисциплинам}

READLN (TBL [ I ],B1;

READLN TBL [ I ],B2;

READLN TBL [ I ],B3;

READLN TBL [ I ],B4;

READLN TBL [ I ],B5);

END;

FOR I:= 1 TO 25 DO { Цикл для выч-я и вывода сред.балла }

BEGIN {Вычисление среднего балла}

TBL [ I ].SB:=(TBL [ I ].B1+TBL [ I ].B2+

TBL [ I ].B3+TBL[ I ].B4+TBL[ I ].B5;

{Вывод среднего балла}

WRITELN (TBL[ I ].SB)

END;

END.

При обращении к компонентам записи мы сталкиваемся с необходимостью указать в отдельных операторах составных имён, что приводит к удлинению программы и излишней громоздкости. Для устранения этого неудобства в языке Паскаль используется оператор WITH, который позволяет осуществлять доступ к компонентам записи таким образом, как если бы они были простыми переменными.

Общий вид оператора:

With < имя записи > do

< оператор >;

Внутри оператора к компонентам записи можно обращаться только с помощью имени компоненты. Например, ввод исходных данных для отдельных компонент записи TBL в предыдущей программе может быть организован следующим образом:

FOR I:=1 TO 25 DO

WITH TBL [ I ] DO

READ (FAM,B1,B2,B3,B4,B5);

Рассмотрим более сложную задачу, в которой требуется не только определить средний балл, но и упорядочить список студентов по убыванию среднего балла. Блок-схема алгоритма приведена на рисунке 2. Содержание 1,2,3, блоков не требует пояснений. В блоках с 4 по 9 осуществляется упорядочивание массива по убыванию среднего балла.

Идея алгоритма заключается в том, что в цикле (блок 4) берётся каждый i-тый компонент массива (по которому осуществляется упорядочивание) и его номер (блок 5). Далее в цикле (блок 6) происходит сравнение (блок 7) этого элемента со всеми последующими элементами массива. Если очередной элемент меньше выбранного то цикл повторяется, в противном случае меняются значения переменных K и X, X получает большее из сравниваемых значение, а K – его номер.

Таким образом, после окончания его цикла переменная X содержит наибольшее из просмотренных значений, а переменная K – его номер. В блоке 9 осуществляется замена очередного i-го элемента на найденный максимальный, а i-ый элемент занимает место максимального и процесс повторяется. Смысл блоков 10 и 11 понятен из блок – схемы.

PROGRAM SBAL;

TYPE

STR=

RECORD

FAM: STRING [ 15 ];

B1, B2, B3, B4, B5: 2..5;

SB: REAL;

END;

VAR TBL: ARRAY [ 1..25 ] OF STR;

Y:STR;

I,Y,K,M: INTEGER;

X: REAL;

BEGIN

READLN (M); {Ввод числа записей в массиве}

FOR I:= 1 TO M DO

WITH TBL [ I ] DO

BEGIN

READLN (FAM);

READLN (B1, B2, B3, B4, B5);

END;

FOR I:=1 TO M DO

WITH TBL [ I ] DO

SB:=(B1+B2+B3+B4+B5)/5; {Вычисление сред. балла}

FOR I:=1 TO M-1 DO

Рис. 2.

 
 


BEGIN

K:=1;

X:=TBL [ I ].SB;

FOR J:= I+1 TO M DO

IF TBL [J].SB>X

THEN BEGIN

K:=J;

X:=TBL [ J].SB

END

Y:=TBL [ K ]; TBL [ K ]:=TBL [ I ]; TBL [ I ]:=Y

END;

END.

Для иллюстраций более сложной записи рассмотри пример, в котором в памяти ЭВМ требуется сохранить анкетные данные представленные в виде таблицы на рис.

 

 

Анкета
П/ П Ф.И.О. Дата рождения Пол
Фамилия Имя Отчество Год Месяц Число
               

Рис.3.

 

Обозначим запись через идентификатор ANKETA, который определим в разделе описания переменных следующим образом:




Поделиться с друзьями:


Дата добавления: 2015-05-10; Просмотров: 225; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.008 сек.