Содержание

Алгоритм добавления ПЕРЕД заданным элементом:

• проверка возможности добавления

• если добавление возможно — поиск заданного элемента

• если заданный элемент найден в ячейке с номером i, то для вставки нового элемента в эту ячейку i надо ее освободить, сдвинув все элементы с i до последнего вправо на одну ячейку, опять же начиная с последней ячейки

• в освободившуюся ячейку i заносится новый элемент

• увеличивается счетчик числа элементов

Алгоритм удаления заданного элемента:

• проверка возможности удаления (есть ли в списке элементы)

• если список не пустой — поиск удаляемого элемента

• если удаляемый элемент найден в ячейке с номером i, то он извлекается из этой ячейки и обрабатывается необходимым образом

• для сохранения естественного порядка элементов надо сдвинуть все элементы с (i+1) до последнего ВЛЕВО на одну ячейку, используя обычный цикл с шагом (+1)

• уменьшить счетчик числа элементов

Как видно из приведенных алгоритмов, добавление и удаление требуют выполнения сдвиговых операций. Особенно существенным это становится при частом добавлении или удалении элементов в начале массива-списка. Если элементы списка являются большими блоками данных и число элементов достаточно велико (сотни тысяч и миллионы), выполнение сдвиговых операций может привести к замедлению работы программы. Поэтому на практике необходимо выполнить оценку трудоемкости данной реализации, исходя из имеющихся вычислительных ресурсов. Возможное улучшение — использование не массива записей, а массива указателей на записи.

Листинги всех подпрограмм

//—————————————————————————

{ Модуль Unit1 (Демо-модуль)}

//—————————————————————————

unit Unit1;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls, Menus, Process, InfObj, SubTaskManager, ComCtrls,

Buttons;

type

TForm1 = class(TForm)

lbl1: TLabel;

btn1: TButton;

lbl2: TLabel;

btn2: TButton;

btn3: TButton;

btn4: TButton;

lbl4: TLabel;

btn5: TButton;

btn6: TButton;

mm1: TMainMenu;

N1: TMenuItem;

N2: TMenuItem;

N3: TMenuItem;

edt1: TEdit;

edt2: TEdit;

edt3: TEdit;

lbl3: TLabel;

btn7: TBitBtn;

lst1: TListBox;

lst2: TListBox;

dlgOpen1: TOpenDialog;

dlgSave1: TSaveDialog;

lbl5: TLabel;

lbl6: TLabel;

edt4: TEdit;

lbl7: TLabel;

lbl8: TLabel;

lbl9: TLabel;

lbl10: TLabel;

lbl11: TLabel;

procedure FormCreate(Sender: TObject);

procedure btn6Click(Sender: TObject);

procedure N3Click(Sender: TObject);

procedure N2Click(Sender: TObject);

procedure edt2KeyPress(Sender: TObject; var Key: Char);

procedure edt3KeyPress(Sender: TObject; var Key: Char);

procedure btn5Click(Sender: TObject);

procedure btn1Click(Sender: TObject);

procedure btn2Click(Sender: TObject);

Выдержка из текста

1. Постановка задачи

1.1. Цель курсовой работы

Создать набор собственных взаимосвязанных классов, реализующий динамический стек массивов-списков в объектной реализации. Контейнер предназначен для хранения и обработки данных информационной задачи “Процессы и потоки” и представляет собой двухуровневую структуру данных, в которой уровни реализуются разными способами –

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

Объекты задачи “Процессы и потоки”:

• Информационные объекты: потоки выполнения процессов в ОС (свойства: НомерПотока, СостояниеПотока);

• Потоки объединяются в рамках объекта Процесс (свойство: НомерПроцесса);

• Процессы объединяются в рамках объекта-контейнера ПодсистемаУправленияЗадачами (свойство – тип ОС).

1.2. Требования к реализации:

• полная объектная реализация с определением классов для всех элементов; реализуемой структуры: информационные объекты, объекты- массивы-списки, объект-контейнер;

• соблюдение принципа инкапсуляции – использование в классах только закрытых свойств и реализация необходимого набора методов доступа;

• реализация в классах всех необходимых методов: конструкторы, методы доступа к свойствам, методы добавления и удаления на каждом из двух уровней;

• возможность сохранения всей структуры во внешнем файле с обратной загрузкой;

• наличие модуля, демонстрирующего все возможности созданной библиотеки классов и обладающего удобным оконным пользовательским интерфейсом;

• язык и среда разработки: Delphi.

Список использованной литературы

Список используемой литературы

1. Бабушкина И.А., Окулов С.М. Практикум по объектно-ориентированному программированию. – М: Бином, 2012.

2. Гамма Э., Хелм Р., Джонсон Р., Влиссидес Дж. Приемы объектно-ориентированного проектирования. Паттерны проектирования. – СПб.: Питер, 2001.

3. Иванова Г.С. и др. Объектно-ориентированное программирование. – М.: МГТУ им. Баумана, 2007.

4. Козин А.Н., Таренко Л.Б. Структуры и алгоритмы обработки данных. Учебное пособие. – Изд. Академии управления «ТИСБИ», 2010

5. Кьоу Дж., Джеанини М. Объектно-ориентированное программирование. Учебный курс. – СПб.: Питер, 2005.

6. Пышкин Е.В. Основные концепции и механизмы объектно-ориентированного программирования. – СПб.: БХВ-Петербург, 2005.

Похожие записи