Представление переменной типа запись в памяти — КиберПедия 

Поперечные профили набережных и береговой полосы: На городских территориях берегоукрепление проектируют с учетом технических и экономических требований, но особое значение придают эстетическим...

История развития хранилищ для нефти: Первые склады нефти появились в XVII веке. Они представляли собой землянные ямы-амбара глубиной 4…5 м...

Представление переменной типа запись в памяти

2021-04-18 79
Представление переменной типа запись в памяти 0.00 из 5.00 0 оценок
Заказать работу

Переменная R для представления точки на плоскости

   
x y

Переменная S типа Tsession

             
Fam

marke

Переменная Е типа Temploye

  day month year City Street NumHouse NumRoom
               
Fam

Date

Adress

Доступ к значению поля в записи

Для доступа к значению поля используется уточненное имя. Уточненное имя формируется по правилу: имя переменной. имя поля. Если имя поля в свою очередь представляет переменную типа запись, то правило распостраняется на имя этого поля.

Примеры формирования имени.

1) Имя поля переменной R.

R.x или R.y

2) Доступ к значению оценки по третьему экзамену в сессию.

S.marke[3]

3) Доступ к значению поля City переменной E.

E.Adress.City

Расчет объема памяти, выделяемого переменной типа запись

Количесво байтов памяти, выделяемой полям фиксированной части плюс количество байтов для самой длинной альтернативы вариантной части.

Требования к выполнению лабораторной работы

Требуется создать сначала консольное одномодульное приложение, затем из одномодульного создать многомодульное приложение.

Создание одномодульного приложения

1. Разработать структуру данных массив, элементами которой являются записи. Структура одной записи определена вариантом.

2. Разработать подпрограммы:

· заполнение отдельной записи;

· вывод записи;

· добавление нового элемента в динамический массив;

· сортировка мАссива (методом, указанным в варианте);

· подзадач, которые будут выявлены вами при разработке дополнительной операции;

· вывод массива записей;

· вывод результатов операций.

Примечание. Обмен данными с подпрограммами обеспечить через механизм параметров.

3. Разработать консольное приложение, управляемое пользовательским интерфейсом и продемонстрируйте работу всех операций.

Создание многомодульного приложения.

1.  Создайте модуль Unit_Def и разместите в нем:

· определение типа записи;

· определение типа массива записей.

2. Создайте модуль Unit_Input_Output, включите в него модуль Unit_Def и разместите в нем подпрограммы

· заполнение отдельной записи;

· вывод записи;

· добавление нового элемента в динамический массив;

· вывод массива записей;

· вывод результатов операций.

3. Создайте модуль Unit_Operation и включите в него:

· модуль Unit_Def;

· подпрограммы по сортировке массива и дополнительным операциям.

4. Разработайте новое многомодульное приложение, демонстрирующее выполнение операций над массивом записей и использующее, разработанные подпрограммы. Для демонстрации всех операций разработайте пользовательский интерфейс. План создания приложения:

· создать консольное приложение;

· подключить к нему модули;

· разработать интерфейс на основе текстового меню;

· отладить проект, включая операции последовательно, а не все сразу.

Таблица 5

Варианты заданий

  Структура записи Метод сортировки Дополнительная операция
1 Сведения о студенте: Номер зачетной книжки, Фамилия, Имя, Дата рождения, Номер телефона, Дата поступления, Признак удаления записи Метод прямого выбора. Отсортировать массив по дате рождения(перевести ее сначала в число исчисляя начало 1900 годом) Найти и удалить всех окончивших институт (т.е. более срок обучения более 6 лет)
2 Сведения о спортсмене:Фамилия, Имя, Дата рождения, Вес, Рост, Пол Метод “Пузырька”. Отсортировать массив по полю Вес. Сформировать список спортсменов мужчин не старше 22 лет
3 Сведения о расписании занятий: Номер группы, название дисциплины, вид занятия (лек, лаб, практ), номер аудитории, день недели, номер пары, фамилия преподавателя.. Отсортировать массив по номеру группы, используя алгоритм Шейкер сортировки. Сформировать список групп, у которых лекция проходит в потоке.
4 Сведения о жителе: Фамилия, Город, Адрес: улица, дом, квартира. Отсортировать массив методом вставки, упорядочивая по возрастанию по городам Вывести фамилии двух жителей, живущих в разных городах по одному адресу.
5 Сведения о книге: Автор, Название, Инвентарный номер, Издательство, Количество страниц, Цена Отсортировать массив по по Автору, используя метод улучшенного Пузырька.  Вставить новую книгу в упорядочен -ный массив.
6 Сведения об успеваемости одного студента по одной дисциплине: Номер зачетной книжки, Шифр группы, Название дисциплины, Дата получения оценки, Оценка, Фамилия преподавателя[1]. Отсортировать массив методом Вставки по Названию дисциплины Сформировать ведомость успеваемости группы по определенной дисциплине (Шифр группы и Название дисциплины вводятся). Найти средний балл группы по Дисциплине.
7 Учет выдачи книг пользователям библиотеки. Карточка пользователя библиотеки содержит сведения, о выданной книге: Инвентарный номер, Автор, Название, Дата выдачи, Дата возврата Отсортировать по дате выдачи методом прямого выбора Сформировать список книг, которые не возвращены вовремя.
8 Успеваемость группы студентов. Сведения по одному экзамену одного студента: Номер зачетной книжки, Название дисциплины, Дата получения оценки, Оценка, Фамилия преподавателя. (по каждому студенту будет столько записей сколько экзаменов он сдал). При вводе данных в строковые поля предусмотреть преобразование их к формату: первая буква большая, остальные маленькие Отсортировать в хронологическом порядке по дате получения оценки. Найти студентов с наибольшим баллом и вывести их фамилии.
9 Список экспортируемых товаров. Об отдельном товаре хранятся данные: Наименование товара, Страна импортирующая товар, Количество(в штуках). Отсортировать список методом Пузырька по Стране Сформировать массив стран, в которые импортируется указанный товар(название товара вводит пользователь)
10 Магазин игрушек. Сведения об игрушке: Название(например: кукла, конструктор и т.д.), стоимость в копейках(вводится может дробное число, содержащее рубли и копейки), возрастные границы детей, для кого игрушка предназначена(два поля – начальный возраст и конечный) Отсортировать методом улучшенного пузырька по возрастным группам Сформировать список игрушек для детей указанного возраста и определенной стоимости.
11 Служба знакомств. Структура данных хранит сведения о претендентах. Об отдельном претенденте: Фамилия, Имя Отчество, Возраст, Рост, Цвет глаз, Цвет волос, Зарплату, Наличие квартиры, Наличие машины. Отсортировать список претендентов по возрасту методом прямой вставки. Сформировать список пар, которые можно построить на основе некоторого критерия. Критерий определите сами
12 Продажа квартир. Сведения о продаваемой квартире: Общая площадь, Жилая площадь, Площадь кухни, Наличие лоджии, Наличие санузла и его характеристики(совмещенный или нет), Панельный или кирпичный дом, Этаж, Общее количество этажей, Адрес, Стоимость, Район города Отсортировать по убыванию методом Пузырька по общей площади и по району Сформировать список квартир по заданному критерию. Критерий составить самим. Отбор должен осуществляться минимум по трем параметрам.
13 Поликлиника. Структура содержит данные о жителях, обслуживаемых данной поликлиникой. О жителе хранятся сведения: Фамилия, Имя, Отчество, Адрес, Место работы, Наличие прививки от гриппа, Дата последней флюорографии Отсортировать методом прямой вставки по дате флюорографии. Сформировать список не сделавших прививку от гриппа.
14 ГИБДД. Структура хранит данные об автомашинах, О каждой машине: Модель, Номер(код региона, цифровой код, буквенный код), Цвет, Сведения о владельце(Фамилия, Имя, Адрес), дата последнего техосмотра. Отсортировать по моделям методом бинарной сортировки Сформировать список номеров машин модели “Волга” не прошедших техосмотр в этом году.
15 Справочник владельца видеотеки. О каждом видеофильме хранятся данные: Название, Студия, Жанр, Год выпуска, Режиссер, Исполнители главных ролей(не более 10): фамилия. Отсортировать по возрастанию методом прямого выбора по жанру. Сформировать список видеофильмов данного режиссера, за данный год и указанного жанра
16 Справочник фаната. Содержит данные о спортсменах: Анкетные и антропологические данные, Гражданство, Вид спорта, Клуб, Данные о личном рекорде(дата, призовое место) Отсортировать по призовому месту методом улучшенного пузырька. Сформировать список спортсменов различных стран, по одному виду спорта, принадлежащих одному клубу
17 Справочник коммерческих банков. Об отдельном банке хранятся данные: Наименование, Адрес, Статус(форма собственности), условия хранения средств на личном счету(годовые проценты на различных видах вкладов)   Отсортировать в порядке убывания по годовым процентам методом прямого выбора.     Выбрать банк с наибольшим процентом для заданного вида вклада
18 Автосалон. Об отдельном автомобиле: Марка, Год выпуска, Мощность двигателя, Количество цилиндров, Запрашиваемая цена. Сведения о покупателях: контактный телефон, Марка, Технические характеристики, Финансовые возможности. Отсортировать по марке и году выпуска методом Пузырька Выполнить подбор вариантов для покупателя (подбор по всем поля покупателя, кроме контактного телефона)
19 Справочник туриста. Турагенство предлагает услуги: Страна, Город, Условия проживания(Отель-звезды, Автобус и т. д.), Условия проезда, Экскурсионное обслуживание, Сервис принимающей стороны, Стоимость путевки. Выполнить сортировку методом прямой вставки по стране и стоимости Сформировать список туров по стране и стоимости

Пример разработки одномодульного приложения.

Разработать приложение, выполняющее арифметические операции с обыкновенной дробью, состоящей из числителя и знаменателя. Числитель и знаменатель представлены целыми числами.

Пример кода одномодульного приложения

Program PrimRec;

Uses

  sysutils;

type

TDroby=record

a:integer;

b:integer;

end;

TDar=array of Tdroby;

//Добавление записи в массив

procedure Add_to_Array(var Mass:TDar;r:TDroby);

var

i:word;

begin

i:=high(Mass);

setlength(Mass,i+1);

Mass[i]:=r;

end;

//Сложение двух дробей

function ADD(r1,r2:TDroby):TDroby;

begin

result.a:=r1.a*r2.b+r1.b*r2.a;

result.b:=r1.b*r2.b;

sokrashenye_droby(result);

end;

//наибольший общий делитель числителя и знаменателя дроби //для сокращения дроби

function NOD_a_b(r:TDroby):integer;

var

n,m,modr:integer;

begin

n:=r.a;

m:=r.b;

modr:= n mod m;

while modr<>0 do

  begin

   n:=m;

   m:=modr;

   modr:=n mod m;

  end;

result:=m;

end;

//Сокращение дроби

 procedure sokrashenye_droby(var r:Tdroby);

 var

 del:integer;

 begin

del:=NOD_a_b(r);

r.a:=r.a div del;

r.b:=r.b div del;

 end;

//Нахождение суммы дробей массива

 function Add_Mass(Var Mass:TDar):Tdroby;

 var

 i:integer;

 sum:Tdroby;

 begin

if length(Mass)=0 then showMessage('Массив дробей не создан')

else

begin

sum.a:=Mass[0].a;

sum.b:=Mass[0].b;

for i:=1 to high(Mass) do

begin

  sum:=ADD(sum,Mass[i])

end;

end;

 result:=sum;

end;

//Ввод дроби

procedure input_record(var r:Tdroby;var p:boolean);

 begin

p:=true;

MY_writeln('Введите дробь');

MY_writeln('Числитель');readln(r.a);

MY_writeln('Знаменатель');readln(r.b);

if (r.a=0) or (r.b=0) then p:=false

else

sokrashenye_droby(r);

 end;

//Ввод данных в массив записей (дробей)

procedure input_Array(var mass:Tdar;var p:boolean);

 var

otvet:char;

r:TDroby;

i:integer;

 begin

 i:=0;

 MY_writeln('Создание массива завершается по требованию пользователя');

     repeat

        input_record(r); p:=true;

        Add_to_Array(Mass,r);

        MY_writeln('Продолжить ввод дробей Y/N');

        readln(otvet)

     until (otvet='N') or (otvet='n');

 end;

//вывод записи

 procedure out_record(var r:Tdroby);

begin

  my_write('Дробь=');

  writeln(r.a,'/',r.b);

end;

//Вывод массива записей

procedure out_Array(var mass:Tdar);

var

i:integer;

begin

for i:=0 to high(mass) do

with mass[i] do

    write(a,'/', b,' ');

end;

procedure my_writeln(const s:string);

begin

writeln(RUSANSI1251_ASCII866(s));

end;

procedure my_write(const s:string);

begin

writeln(RUSANSI1251_ASCII866(s));

end;

//ОСНОВНАЯ ПРОГРАММА

var

r1,r2:TDroby;

mass:TDar;

n,num:byte;

p1,p2:boolean;         //признаки заполнения массива

otvet:char;

sum:Tdroby;

begin

P1:=false;P2:=false;

while true do

begin

My_writeln('Набор операций');

My_writeln('1.Формирование одной дроби');

My_writeln('2.Вывод дроби');

My_writeln('3.Создание массива дробей');

MY_writeln('4.Вывод массива');

MY_writeln('5.Сложение всех дробей массива');

MY_writeln('6.Выход');

MY_writeln('Введите номер операции');

Readln(num);

case num of

1: begin

     input_record(r1,p1); //p1 - признак заполнения записи

     end;

              2: begin

          if p1 then

                             out_record(r1)

                else

         My_writeln('Дробь не введена');

    end;

  3: begin

     input_Array(mass,p2);

     end;

  4:

     if p2 then

     out_Array(mass)

     else

       MY_writeln('Масcив не создан');

  5:if p2 then

     begin

      sum:=ADD_Mass(mass);

       MY_write(' Сумма=');

      out_record(sum);

     end

     else

       MY_writeln('Масcив не создан');

   6:halt(0);

end

end;

end.


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

Наброски и зарисовки растений, плодов, цветов: Освоить конструктивное построение структуры дерева через зарисовки отдельных деревьев, группы деревьев...

Семя – орган полового размножения и расселения растений: наружи у семян имеется плотный покров – кожура...

Адаптации растений и животных к жизни в горах: Большое значение для жизни организмов в горах имеют степень расчленения, крутизна и экспозиционные различия склонов...

Автоматическое растормаживание колес: Тормозные устройства колес предназначены для уменьше­ния длины пробега и улучшения маневрирования ВС при...



© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!

0.109 с.