Навигация
Главная
Поиск
Форум
FAQ's
Ссылки
Карта сайта
Чат программистов

Статьи
-Delphi
-C/C++
-Turbo Pascal
-Assembler
-Java/JS
-PHP
-Perl
-DHTML
-Prolog
-GPSS
-Сайтостроительство
-CMS: PHP Fusion
-Инвестирование

Файлы
-Для программистов
-Компонеты для Delphi
-Исходники на Delphi
-Исходники на C/C++
-Книги по Delphi
-Книги по С/С++
-Книги по JAVA/JS
-Книги по Basic/VB/.NET
-Книги по PHP/MySQL
-Книги по Assembler
-PHP Fusion MOD'ы
-by Kest
Professional Download System
Реклама
Услуги

Автоматическое добавление статей на сайты на Wordpress, Joomla, DLE
Заказать продвижение сайта
Программа для рисования блок-схем
Инженерный калькулятор онлайн
Таблица сложения онлайн
Популярные статьи
OpenGL и Delphi... 65535
Форум на вашем ... 65535
21 ошибка прогр... 65535
HACK F.A.Q 65535
Бип из системно... 65535
Гостевая книга ... 65535
Invision Power ... 65535
Пример работы с... 65535
Содержание сайт... 65535
ТЕХНОЛОГИИ ДОСТ... 65535
Организация зап... 65535
Вызов хранимых ... 65535
Создание отчето... 65535
Имитационное мо... 65535
Программируемая... 65535
Эмулятор микроп... 65535
Подключение Mic... 65535
Создание потоко... 65535
Приложение «Про... 65535
Оператор выбора... 65535
Реклама
Сейчас на сайте
Гостей: 9
Пользователь: NigthStar

Пользователей: 13,365
новичок: ceexuwu
Новости
Реклама
Выполняем курсовые и лабораторные по разным языкам программирования
Подробнее - курсовые и лабораторные на заказ
Delphi, Turbo Pascal, Assembler, C, C++, C#, Visual Basic, Java, GPSS, Prolog, 3D MAX, Компас 3D
Заказать программу для Windows Mobile, Symbian

Моделирование вычислительного центра на GPSS + Отчет + Блок схема
Моделирование информационно-поисковой библиографической системы на gpss ...
Двунаправленный динамический список на Delphi + Блок схемы

Шаг к реализации списка


Остановимся лишь на принципиальных моментах реализации класса списков и связанных с ним TInfo и TSelect. Класс TItem и неупомянутые в этом параграфе методы полностью приведены в Приложении.
В TInfo мало интересного, ведь это абстрактный класс. Почему же его метод Print не объявлен как abstract? Ответ ясен из следующих четырех строк.
Шаг к реализации списка
Класс TRList довольно сложен в реализации, а потому поучителен. Попробуйте разобраться как работает метод Copy. В нем определен указатель на ссылку, и это типичный прием работы со связными списками.
Шаг к реализации списка
Ещё один нюанс реализации заключается в строке
Ещё один нюанс реализации заключается в строке
Здесь не используется оператор as для приведения типа, как это сделано в ряде других случаев. Основанием для такой “смелости” служит то, что Result проинициализирована в предыдущей строке, и дополнительная проверка совместимости типов будет лишней тратой времени.
Метод Insert может служить иллюстрацией к ссылочной семантике эквивалентности.
Метод Insert может служить иллюстрацией к ссылочной семантике эквивалентности
Эквивалентность в смысле равенства физических адресов устанавливается в цикле
Эквивалентность в смысле равенства физических адресов устанавливается в цикле
Вторая часть условия проверяет неравнство ссылки before и информационной части текущего пункта списка. Таким образом, если ссылки совпадут, это будет означать, что найден элемент, перед которым следует вставить новый пункт списка.
Кстати, с оператором while связан ещё один тонкий момент — вычисление булевского выражения. В программировании принято два способа вычисления сложных булевских выражений, их можно назвать “полным” и “до результата”. Полная схема вычисления состоит в том, что определяются значения каждого из простых выражений и к ним в порядке приоритета применяются булевские операции.
Вторая схема заключается в выполнении вычислений до тех пор пока не окажется возможным установить окончательный результат. Так если в нашем выражении левый операнд окажется равным False, то значение правого не играет роли, окончательный результат будет False. Следовательно, вычисления можно прекратить.
Последняя схема принята в языке C. В Pascal разрешены оба варианта вычислений и они определяются опцией компилятора. По умолчанию принято полное вычисление. В Delphi кажется наоборот, полное вычисление логических выражений нужно указывать в опциях компилятора.
В зависимости от принятой схемы вычисления логических выражений наше условие может оказаться правильным или нет. В самом деле, пусть вычисления выполняются полностью, тогда вторая часть будет вычисляться независимо от результатов первой. Если pCur^ равно Nil, то обращение к pCur^.FInfo окажется за пределами памяти нашей программы и возникнет ошибка доступа к памяти.
Пожалуй самым интересным в реализации класса TSelect, является конструктор. Обратите внимание как он избегает создания объекта, если ему передан нулевой указатель. К объекту применяется деструктор, а ссылка Self устанавливается в Nil.
TSelect
Для правильного применения селекторов разберитесь с методом Next, реализация которого приведена в Приложении.
Опубликовал Kest August 14 2011 20:56:21 · 0 Комментариев · 4882 Прочтений · Для печати

• Не нашли ответ на свой вопрос? Тогда задайте вопрос в комментариях или на форуме! •


Комментарии
Нет комментариев.
Добавить комментарий
Имя:



smiley smiley smiley smiley smiley smiley smiley smiley smiley
Запретить смайлики в комментариях

Введите проверочный код:* =
Рейтинги
Рейтинг доступен только для пользователей.

Пожалуйста, залогиньтесь или зарегистрируйтесь для голосования.

Нет данных для оценки.
Гость
Имя

Пароль



Вы не зарегистрированны?
Нажмите здесь для регистрации.

Забыли пароль?
Запросите новый здесь.
Поделиться ссылкой
Фолловь меня в Твиттере! • Смотрите канал о путешествияхКак приготовить мидии в тайланде?
Загрузки
Новые загрузки
iChat v.7.0 Final...
iComm v.6.1 - выв...
Visual Studio 200...
CodeGear RAD Stud...
Шаблон для новост...

Случайные загрузки
ShadelLabel
Turbo Pascal for ...
WinPopup
DFileDeleter
Delphi 2005 Учимс...
Пятнашки и крести...
Приложение Клиент...
Обучение Borland ...
Современное проек...
База Allsubmitter...
Calendar
Мод "проверочный ...
RxLIB
Иллюстрированный ...
Delphi 6 программ...
Импорт новостей ...
RSS Feeds
Заставка. Изображ...
Мониторинг сервер...
PHP, MySQL и Drea...

Топ загрузок
Приложение Клие... 100774
Delphi 7 Enterp... 97832
Converter AMR<-... 20268
GPSS World Stud... 17014
Borland C++Buil... 14191
Borland Delphi ... 10290
Turbo Pascal fo... 7373
Калькулятор [Ис... 5984
Visual Studio 2... 5207
Microsoft SQL S... 3661
Случайные статьи
Бесплатные игровые...
Разработка сайтов
Аппаратные IP-теле...
Об этой книге
Схема двухступенч...
Двусвязные списки
расположенному в ч...
Игры. Интернет-пон...
Автомобильные брыз...
Занятие 4. Проекти...
5.5. Объявление о...
Информационные и с...
Пары «имя-значение»
Подготовка удаленн...
Простейший констру...
Эмуляция классов
Программирование: ...
Листинг 12.2. Прог...
Этапы сборки
Регитсрация сигнал...
Найти среднее ариф...
чтобы определить, ...
Решение для случая...
Работа с Outlook к...
Если поискать в Ин...
Статистика



Друзья сайта
Программы, игры


Полезно
В какую объединенную сеть входит классовая сеть? Суммирование маршрутов Занимают ли таблицы память маршрутизатора?