Учебное пособие по курсу «Программирование» - shikardos.ru o_O
Главная
Поиск по ключевым словам:
Похожие работы
Название работы Кол-во страниц Размер
Учебное пособие для слушателей факультета переподготовки минск 2010 6 2926kb.
Учебное пособие по курсу «Анализ музыкальных произведений» 10 2221.98kb.
Учебное пособие. Москва, Высшая школа, 2003 12 3953.59kb.
Учебное пособие историко-культурные туристские ресурсы Северного... 2 663.73kb.
Практикум по английскому языку: учебное пособие / О. В. Гаврилова; 6 1255.42kb.
Практикум по стилистике английского языка: учебное пособие / О. 5 1432.97kb.
Учебное пособие «Радиооператор гмссб» 3 550.88kb.
Учебное пособие издательство Санкт-Петербургского государственного... 7 3709.73kb.
Учебное пособие для студентов вузов, обучающихся по спе 1 60.73kb.
Учебное пособие Третье издание, переработанное и дополненное Томск... 9 894.81kb.
Учебное пособие для студентов отделения Лечебное Дело, Сестринское... 1 312.29kb.
Академическая гребля Ф. И. О. год рожд звание женщины 1 383.33kb.
- 4 1234.94kb.
Учебное пособие по курсу «Программирование» - страница №1/9


Министерство образования Республики Беларусь

Учреждение образования

БЕЛОРУССКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ ИНФОРМАТИКИ И РАДИОЭЛЕКТРОНИКИ


c:\docume~1\admin\locals~1\temp\finereader10\media\image1.jpeg
Кафедра «Вычислительные методы и программирование»

С.В. Колосов

Программирование в среде

Delphi

Учебное пособие по курсу «Программирование»

Минск 2005



Министерство образования Республики Беларусь Учреждение образования

БЕЛОРУССКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ ИНФОРМАТИКИ И РАДИОЭЛЕКТРОНИКИ

Кафедра «Вычислительные методы и программирование»

С.В. Колосов

Программирование в среде Delphi

Допущено Министерством образования Республики Беларусь в качестве учебного пособия для студентов специальностей «Автоматизированные системы обработки информации» и «Автоматическое управление в технических системах»

Минск 2005

УДК 004.4 (075.8) ББК 32.973-018.1 я 73 К 61

Рецензенты:

и.о.зав. кафедрой «Вычислительная техника» БГАТУ, канд.техн.наук, доцент

А.И. Шакирин,

зав. кафедрой «Алгоритмики и дискретной математики» БГУ, д-р.физ.-

мат.наук., доцент В.М. Котов

Колосов С. В.

Программирование в среде Delphi. Учеб. пособие для студентов специальностей «Автоматизированные системы обработки информации» и «Автоматическое управление в технических системах» БГУИР., - Мн.:БГУИР, 2005, - 164 с.: ил. 34. ISBN 985-444-650-6

Учебное пособие раскрывает основы визуального программировагния в среде Delphi. Оно включает в себя 33 темы. Первые 16 тем посвящены освоению элементов языка Object Pascal и приемам программирования алгоритмов при решении типовых задач. В следующих 17 темах изложены основы объектно-ориентированного программирования, состав библиотек классов и компонент Delphi, возможности межпрограммного взаимодействия, COM-технологии, работа с базами данных и некоторые другие, важные для практики аспекты программирования.

УДК 004.4 (075.8) ББК 32.973-018.1 я 73

ISBN 985-444-650-6 © С.В.Колосов, 2005



© БГУИР, 2005

СОДЕРЖАНИЕ



С.В. Колосов 1

Программирование в среде 1

Delphi 1

С.В. Колосов 3

Программирование в среде Delphi 3

Z5Z 26


d, e, g, k, l - листья 77

Л 117


l|?J 154


ВВЕДЕНИЕ

Основу данного учебного пособия составляет курс лекций по программированию, читаемый автором студентам первого курса специальности «Автоматизированные системы обработки информации» БГУИР. Этот курс предполагает наличие у студентов только школьной подготовки по информатике. Он базируется на системе визуального программирования Delphi, которая работает под управлением операционной системы Windows. Основу Delphi составляет язык программирования Object Pascal, который изначально был разработан Н. Виртом в начале 60-х годов прошлого века специально как язык обучения программированию. От всех других языков программирования его отличают строгость в определении всех переменных и констант, модульность программирования, широкие возможности в создании собственных структур данных, использование объектно-ориентированного программирования, отсутствие машинно-ориентированных конструкций. Корпорация Borland, которая является родоначальником Delphi, с самого начала сделала ставку на визуальное объектно-ориентированное программирование с предоставлением возможности работы с любыми базами данных. В настоящее время система программирования Delphi ни в чем не уступает по своим возможностям таким языкам программирования, как C++, С#, Visual C++, C-Builder, Visual Basic и др.

1. ИСТОРИЯ РАЗВИТИЯ ВЫЧИСЛИТЕЛЬНОЙ ТЕХНИКИ, СИСТЕМЫ СЧИСЛЕНИЯ И ЕДИНИЦЫ ИНФОРМАЦИИ

1.1. История развития вычислительной техники

Первым счетным инструментом, который изобрел человек, был абак. Он появился еще в V веке до нашей эры. Существовали разные виды абака - греческий, римский, китайский, японский и т.д. Один из его вариантов представлял собой специальную доску с песком, по которому проводились линии и на них размещались по позиционному принципу какие-нибудь предметы, например камушки или палочки. И сегодня еще можно увидеть русские счеты, которые иногда используют пожилые бухгалтеры.

Следующий этап в развитии вычислительной техники связан с именем шотландского математика Джона Непера, который изобрел в 1614 г. логарифмы. Логарифмы позволили заменить умножение и деление сложением и вычитанием. Еще и сегодня можно найти в магазинах логарифмические линейки. Однако они обладают не очень высокой точностью вычислений - всего до третьего знака числа.

Первые идеи механизировать вычислительный процесс появились в XVII веке. Вначале такая машина была описана Вильгельмом Шикардом, потом Леонардо да Винчи. Однако первая действующая механическая суммирующая машина была построена Блезом Паскалем в 1642 г. Затем появилось много вариантов механических вычислительных машин. Они создавались Лейбницом, Еленой Якобсон из Несвижа, русским математиком П.Л. Чебышевым и др. В середине прошлого века в бухгалтериях можно было увидеть механические счетные машинки «Феликс» с колесиками для ввода чисел и боковой ручкой для выполнения арифметических операций.

Идея полностью автоматизировать вычислительный процесс принадлежит англичанину Чарльзу Бэббиджу. В 1834 г. он изобрел универсальную вычислительную машину с программным управлением, которую он назвал аналитической. Она должна была состоять из четырех блоков. В первом блоке должны были храниться исходные числа, промежуточные результаты и команды управления. Он называл этот блок складом. В современном компьютере - это оперативная память. Второй блок назывался мельницей, здесь выполнялись операции над числами, сейчас этот блок называют арифметическим устройством. Третий блок - блок управления последовательностью операций, сейчас это - блок управления. Четвертый блок - для ввода исходных данных и печати результатов. Бэббиджу не хватило средств на постройку своей машины, его идеи остались только на бумаге.

Следующим этапом было создание электромеханических машин для вычислений с помощью перфокарт, которые получили название счетно- аналитических. В 1896 г. для переписи населения США были использованы перфокарточные машины Германа Холлерита. Фирма, в которой работал Холлерит, впоследствии была преобразована в широко известную фирму ИБМ.

В 1941 г. немецкий инженер К. Цузе построил первую универсальную машину с программным управлением на базе электромагнитных реле Ц-3. Она состояла из 2600 реле, а программа вводилась с помощью двухдорожечной перфоленты. В США аналогичная машина «Марк-1» была построена по проекту Горварда Айкена только в 1944 г. Первая советская релейная машина РВМ-1 была создана в 1956 г. инженером Н.И. Бессоновым. Она содержала 5500 реле и могла выполнять 50 сложений или 20 умножений в секунду.

Появление электронных ламп в 40-х годах прошлого столетия позволило совершить огромный скачок в повышении быстродействия вычислительных машин. Первую электронную вычислительную машину (ЭВМ) построили в США под руководством Дж.В. Моучли и Д.П. Эккарта. Она называлась ЭНИАК и содержала около 18000 электронных ламп и 1500 реле. Умножение чисел выполнялось уже за 2,8 миллисекунды. Правда, такая машина потребляла 150 кВт и работала не более одного часа в сутки, так как из 18000 ламп какая- нибудь да выходила из строя и обслуживающий персонал постоянно менял блоки машины в поисках неисправности. Она занимала очень большую площадь и в ней одновременно гудели сотни вентиляторов, охлаждая ламповые блоки машины. В бывшем СССР первая малая электронно-счетная машина (МЭСМ) была создана под руководством академика С. А. Лебедева в 1950 г. Затем были разработаны ЭВМ - БЭСМ, «Стрела», «Урал» и др.

Следующим этапом стала замена ламп на полупроводниковые приборы. При этом резко сократилось потребление энергии и значительно возросла надежность ЭВМ. На Западе основным производителем таких машин стала американская фирма ИБМ. В СССР в 1963 г. появилась ЭВМ БЭСМ-6, обладающая скоростью 1 млн операций в секунду. В то время наша страна лишь незначительно отставала от США по производительности ЭВМ. На

Западе и в США в то время стала быстро развиваться микроэлектроника и на ее основе появились микросхемы.

В 1969 г. в СССР была принята концепция единой серии ЭВМ - ЕС ЭВМ, в основу которой были положены аналоги американских микросхем фирм ИБМ и ИНТЕЛ. Переход на новую технологию у нас происходил очень сложно. Например, в Минске были простроены два завода: «Интеграл» - для производства микросхем и Машиностроительный завод им. Орджоникидзе - для сборки ЭВМ. Первые ЭВМ этой серии ЕС-1020 обладали производительностью всего 20 тыс. операций в секунду. Лишь к 90-м годам прошлого века стали выпускаться ЭВМ ЕС-1060 с производительностью около 10 млн операций в секунду. Это были большие машины, они занимали целый зал и состояли из нескольких шкафов памяти, питания, процессора и т. д. В США в это время уже стали появляться персональные ЭВМ, которые располагались на столе и обладали более высокими скоростными параметрами по сравнению с ЕС ЭВМ.

Параллельно с созданием универсальных ЭВМ шла разработка суперЭВМ для военных целей. Если в прошлом веке суперЭВМ обладали скоростью порядка 1 млрд операций в секунду, то теперь скорость таких машин увеличилась на 3 порядка. Это единичные ЭВМ, которые включают в себя тысячи процессоров и стоят очень дорого - миллионы долларов, но они определяют возможности общества в прогнозировании погоды, разработке новых технологий и решении очень сложных задач.

В настоящее время персональные ЭВМ обладают тактовой частотой около 4 ГГц, оперативной памятью более 1 Гбайта и при решении линейных задач практически не уступают суперЭВМ.

1.2. Системы счисления

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



Двоичная система счисления

Для записи двоичных чисел используются только два знака 0 и 1. Все




J

U


к







1












t0

t
вычислительные машины используют двоичную систему при своей работе. На выходе любого устройства имеется или низкий потенциал (0) или высокий (1). На рис.1.1 показан процесс переключения устройства из одного состояния в другое. Ранее были попытки использования десятичной системы счисления или троичной, но устройства на их основе оказались очень ненадежными Рис.1.1 Для перевода числа из любой системысчисления в десятичную можно использовать следующую формулу:

Q0 = 2 ai -b,

i

где ai - разрядные коэффициенты; b - основание системы счисления; i - номер разряда.

Первый целый разряд числа имеет номер 0, дробные разряды нумеруются отрицательными числами. Например, следующее двоичное число можно перевести в десятичное таким образом: номера разрядов 43210

двоичное число 11011(2)



Сю=1 -20+1-21+0-22+1-23+1 -24=27(Ю>

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

Например, переведем десятичное число С10=25,35 в двоичное. Сначала целую часть этого числа будем делить на основание системы счисления - 2.


25(10)

2










1

12

2










0

6

2










0

3

2










1

1





Целая часть числа будет равна С(2)=11001(2). Дробную часть числа сначала будем умножать на основание системы счисления - 2, а затем дробные части результатов умножения опять умножать на основание системы счисления.







0,

35

*




2




0,

7

*




2




1,

4

*




2




0,

8

*




2

1,

6





Целые части результатов умножений дадут следующую двоичную дробь - 0,0101...(2).

Попробуем произвести сложение и вычитание двоичных чисел.

<=• <=» <=» <=• <=»


Сложение:



+
0 110 0 1 0 10 111





Здесь стрелочками показан перенос единицы в старший разряд числа, когда






сумма разрядных

счисления.

Вычитание:

_1 1


1 0
чисел достигает или превышает основание системы

1 0 0 1






0 0 110

Здесь стрелочкой показан заем единицы из старшего разряда, которая для данного разряда равна основанию системы счисления.



Шестнадцатеричная система счисления В шестнадцатеричной системе счисления для разрядных чисел используются не только 10 арабских цифр от 0 до 9, но и буквы латинского алфавита: A-10, B-11, C-12, D-13, E-14, F-15. Например, переведем следующее шестнадцатеричное число в десятичное. номера разрядов 2 1 0

шестнадцатеричное число 1AE(16)



СЮ=14-16°+10-161+Ы62=430(10) Теперь переведем десятичное число в шестнадцатеричное:


475п°)

16




32

29

16

155

16

1

144

13








11

В итоге последний результат деления и остатки от деления дадут следующее шестнадцатеричное число: 1DB(16).

Можно очень легко переводить шестнадцатеричные числа в двоичные и обратно, минуя десятичную систему счисления. Следует только иметь в виду, что один шестнадцатеричный разряд числа полностью соответствует четырем двоичным разрядам.

Например, переведем шестнадцатеричное число в двоичное:

A8E(16)=1010 1000 1110(2).

1.3. Единицы информации

Наименьшей единицей информации в ЭВМ является 1 бит, который соответствует одному двоичному разряду числа. Например, двоичное число 11001(2) содержит 5 бит информации, так как оно состоит из пяти двоичных разрядов и количество информации не зависит от значения разрядов числа.

При передаче информации наименьшей единицей информации является

1 байт, который соответствует 8 двоичным разрядам, или 8 битам.

В одном байте можно хранить 256 различных двоичных чисел, так как 11111111(2)=255(10) и плюс нулевая комбинация двоичных разрядов. Обычно в одном байте хранится информация об одном символе. Например, слово «студент» будут занимать в памяти ЭВМ 7 байт. Далее следуют единицы информации: 1 килобайт = 1024 байта = 1 Кбайт, 1 мегабайт = 1024 Кбайт = 1 Мбайт, 1 гигабайт = 1024 Мбайт = 1 Гбайт, 1 терабайт = 1024 Гбайт = 1 Тбайт.


2. СТРУКТУРА ПЕРСОНАЛЬНОГО КОМПЬЮТЕРА И ОПЕРАЦИОННЫЕ СИСТЕМЫ

2.1. Структура персонального компьютера.

Блок питания




Сокет

А,370,478



Ч а

h^d

Материнская плата



2

DIMM








AGP

х:


c:\docume~1\admin\locals~1\temp\finereader10\media\image2.png

Видеокарта

2

PCI1

х:


Сетевая карта

IDE,
Дисплей

Кабель локальной сети

Жесткий диск

Компакт- диск







FDD


Дискеты


х:

LPT






Принтер





COM1


PS/2

I

c:\docume~1\admin\locals~1\temp\finereader10\media\image3.png


USB1


х:

ISA


Рис.2.1 Структурная схема персонального компьютера

Здесь приняты следующие обозначения:

  1. BIOS (Basic Input-Output System) - базовая система ввода-вывода. Она поставляется в виде отдельной микросхемы с постоянным запоминающим устройством (ПЗУ), в котором хранятся стандартные программы ввода-вывода и настройки материнской платы.

  2. DIMM (Dual Inline Memory Module) - двойной встроенный модуль оперативной памяти - микросхема с 68 контактами, таких схем на материнской плате может быть несколько и объем такой памяти может достигать 2 Гбайт.

  3. AGP (Accelerated Graphic Port) - ускоренный графический порт, к которому обычно подключается дисплей.

  4. PCI (Peripheral Component Interconnect) - шина подключения внешних устройств, их обычно бывает несколько.

  5. IDE (Integrated Dual Channel Enhenced) - объединенный двойной расширенный канал, к нему могут подключаться жесткие диски и устройства управления компакт-дисками, обычно таких каналов 2.

  6. FDD (Floppy Dual Disk) - двойной канал для подключения устройств управления дискетами.

  7. LPT (Line Printer Type) - параллельный порт для подключения принтера.

  8. COM - последовательный порт для подключения внешних устройств, например мышки, таких портов обычно 2.

  9. PS/2 - порт для подклячения клавиатуры и мышки.

  10. USB (Universal Serial Bas) - универсальный последовательный порт, к нему может, например, подключаться устройство переносной памяти - Flash Drive.

  11. ISA (Industry Standard Architecture) - устаревший порт для подключения внешних устройств.

Персональные компьютеры в настоящее время бывают настольные или портативные (Notebook). Тактовая частота работы процессора может превышать 3 ГГц, оперативная память обычно превышает 256 Мбайт. Дисплеи обладают разрешением 600 на 800 точек или 1024 на 768 точек, причем видеопамять достигает 128 Мбайт и применяются специальные видеоускорители для отображения трехмерных объектов. К персональному компьютеру может быть подключено множество внешних устройств, таких как жесткие диски с объемом памяти более 100 Гбайт, компакт-диски с объемом памяти 640 Мбайт, DVD диски, дискеты с объемом памяти 1,4 Мбайт, сканеры графической информации, принтеры всевозможных типов, сетевые карты, модемы, мышь , клавиатура, цифровая видеокамера и т.д.

2.2. Операционные системы

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

ОС - это неотъемлемая часть ПО, управляющая техническими средствами компьютера. Операционная система - это комплекс программ, которые выполняют функции посредника между пользователем и компьютером. ОС, выполняя роль посредника, служит двум целям:

а) эффективно использовать компьютерные ресурсы;

б) предоставлять удобный интерфейс взаимодействия пользователя с компьютером.

В качестве ресурсов компьютера обычно рассматривают:

а) время работы процессора;

б) адресное пространство основной памяти;

в) оборудование ввода - вывода;

г) файлы, хранящиеся во внешней памяти.

Операционная система - это неотъемлемая часть вычислительного комплекса. Основными функциямя ОС являются управление:

а) процессами (распределяет ресурс — процессорное время);

б) памятью (распределяет ресурс — адресное пространство основной памяти);

в) устройствами (распределяет ресурс — оборудование ввода - вывода);

г) данными (распределяет ресурс — данные или файлы).

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


c:\docume~1\admin\locals~1\temp\finereader10\media\image4.jpeg

Рис.2.2. Схема дисковода Здесь на оси закреплено несколько дисков с магнито-чувствительным покрытием. На подвижной системе, которая может перемещаться с помощью электромагнита только в радиальном направлении вдоль поверхности дисков, закреплены магнитные головки, по одной на каждую поверхность дисков. Все диски вращаются с какой-то угловой частотой Q, и магнитные головки плавают на воздушной подушке у поверхности дисков. Каждое фиксированное радиальное положение магнитных головок образует как бы цилиндр, а каждая магнитная головка - свою дорожку на этом цилиндре. Каждая дорожка при записи информации разбивается на сектора обычно длиной 512 байт.

В ДОС была принята файловая система FAT (File Allocation Table - таблица распределения файлов). На системном диске на нулевом цилиндре на нулевой дорожке в первом секторе размещается информация о формате диска и о месте положения на диске программы первоначальной загрузки. Далее


располагаются две таблицы FAT, которые разбиваются на 12-, 16- или 32- битные ячейки, в них хранятся номера кластеров, образующих файлы. Кластер



  • это наименьший объем памяти, отводимый для файла на диске. Для дискеты размер кластера обычно равен размеру сектора, а для больших дисков размер кластера может составлять несколько секторов. Файл - это набор данных на внешнем носителе информации, например на диске. Создаются две таблицы FAT для большей надежности и обеспечения возможности восстановления случайно удаленных файлов. Обычно информация об удаленных файлов стирается только из первой таблицы.

За таблицами FAT идет корневой каталог, в котором для каждого файла отводится блок в 32 байта, куда записываются информация об имени и расширении файла, его атрибуты, размер, дата создания и номер первого кластера файла. В этой ячейке таблицы FAT записывается следующий номер кластера файла и т.д., пока не появится специальная запись, означающая последний кластер файла. Все остальные каталоги диска представляют собой обычные файлы с длиной, кратной 32 байтам, и специальным атрибутом файла

  • каталогом. За корневым каталогом до конца диска следует область данных, куда и помещаются все файлы.

Второй основной особенностью ДОС был текстовый режим работы дисплея, когда весь экран разбивался на 25 строк по 80 символов в каждой строке. В видеопамяти для каждого символа экрана отводилось два байта: один для хранения кода символа, а второй - для атрибута. В атрибуте хранилась информация о цвете символа и цвете фона. Всего могло быть 16 цветов символа и 8 цветов фона. Один бит отводился для возможного мигания символа. ДОС впрямую не поддерживала графический режим работы дисплея.

Третья особенность заключалась в том, что каждой программе можно было выделять не более 640 Кбайт оперативной памяти и вся эта память была доступна каждой программе. Это приводило к очень неустойчивой работе самой ОС. Любая прикладная программа могла нарушить работу ДОС и, как следствие, остановить работу компьютера.

Следующей широко распространенной операционной системой стала Windows той же фирмы Microsoft. Эта система изначально должна была работать в графическом режиме, хотя в ней и сохранилась поддержка текстового режима работы дисплея. Основной режим работы этой ОС - защищенный режим, когда каждой программе выделяется своя область памяти и никакая другая программа не может туда ничего записать или прочитать. Это стало возможным в связи с появлением новых процессоров Intel 386, 486 и Пентиум, которые стали поддерживать такие режимы работы.

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

Начиная с версий Windows NT/2000/XP, эта ОС стала поддерживать наряду с файловой системой FAT файловую систему NTFS, которая быларазработана для компьютеров, работающих в сети, где очень важное значение имеет защита информации от несанкционированного доступа.

Как и любая другая система, NTFS делит все просранство на кластеры. NTFS поддерживает почти любые размеры кластеров - от 512 байт до 64 Кбайт, стандартом же считается кластер размером 4 Кбайт.




c:\docume~1\admin\locals~1\temp\finereader10\media\image5.jpeg
Диск NTFS условно делится на две части. Первые 12 % диска отводятся под так называемую MFT-зону - пространство, в котором располагается метафайл MFT. Запись каких-либо данных в эту область невозможна. В свободную чать MFT-зоны ничего не записывается - это делается для того, чтобы самый главный, служебный файл (MFT) не фрагментировался при своем росте. Остальные 88 % диска представляют собой обычное пространство для хранения файлов:


IhIFT зона (оода. теоретически, рэ ттет MFT)






Место под файлы

| Место под файлы

Т 1

к

MFT Ко пня первых элпнсей MFT


Рис.2.3. Распределение дискового пространства Свободное место диска включает в себя всё физически свободное пространство - незаполненные куски MFT-зоны туда тоже включаются. Механизм использования MFT-зоны таков: когда файлы уже нельзя записывать в обычное пространство, MFT-зона просто сокращается, освобождая таким образом место для записи файлов. При освобождении места в обычной области MFT зона может снова расшириться.

Каждый элемент NTFS системы представляет собой файл - даже служебная информация. Самый главный файл на NTFS называется MFT, или Master File Table (общая таблица файлов). Именно он размещается в MFT - зоне и представляет собой централизованный каталог всех остальных файлов диска и, как ни парадоксально, себя самого. MFT поделен на записи фиксированного размера (обычно 1 Кбайт), и каждая запись соответствует какому-либо файлу (в общем смысле этого слова). Первые 16 файлов носят служебный характер и недоступны операционной системе - они называются метафайлами, причем самый первый метафайл - сам MFT. Эти первые 16 элементов MFT - единственная часть диска, имеющая фиксированное положение. Интересно, что вторая копия первых трех записей для надежности (они очень важны) хранится ровно посередине диска. Остальной MFT-файл может располагаться, как и любой другой файл, в произвольных местах диска - восстановить его положение можно с помощью его самого, «зацепившись» за самую основу - за первый элемент MFT.

Итак, у системы есть файлы - и ничего кроме файлов. Что включает в себя это понятие на NTFS? Прежде всего обязательный элемент - запись в

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

Опциональный элемент - потоки данных файла. Во-первых, файл может не иметь данных - в таком случае на него не расходуется свободное место самого диска. Во-вторых, файл может иметь не очень большой размер. Тогда идет в ход довольно удачное решение: данные файла хранятся прямо в MFT, в оставшемся от основных данных месте в пределах одной записи MFT.

Довольно интересно обстоит дело и с данными файла. Каждый файл на NTFS в общем-то имеет несколько абстрактное строение - у него нет как таковых данных, а есть потоки (streams). Один из потоков имеет привычный нам смысл - данные файла. Но большинство атрибутов файла - тоже потоки! Таким образом, получается, что базовая сущность файла только одна - номер в MFT, а всё остальное опционально.

NTFS - отказоустойчивая система, которая вполне может привести себя в корректное состояние при практически любых реальных сбоях. Любая современная файловая система основана на таком понятии, как транзакция - действие, совершаемое целиком и корректно или не совершаемое вообще.

NTFS поддерживает автоматическое сжатие и шифрование файлов и разграничивает права доступа к файлам.

Приведем простенький пример работы с потоком файлов. Наберите в командной строке оператор:



Echo Stream-NTFS > test1.pas:stream В результате будут создан файл testl с расширением pas нулевой длины. Однако, если теперь набрать команду

More < test1.pas:stream , то мы увидим на экране строчку - Stream-TNFS. Это значит, что имя потока отделяется от имени файла двоеточием.

В настоящее время идет постоянное расширение возможностей операционной системы. Это касается работы в сети Интернет, создания распределенных приложений для работы с базами данных, использования представления данных на языке XML, технологии .NET FrameWork и т.д.

3. ОСНОВЫ АЛГОРИТМИЗАЦИИ И РАБОТА В DELPHI

3.1. Основы программирования

Программирование — это процесс создания программы, который может быть представлен для реальных приложений последовательностью следующих шагов:


    1. Формулирование требований к программе.

    2. Разработка алгоритма.

    3. Кодирование (запись алгоритма на языке программирования).

    4. Отладка.

    5. Тестирование.

    6. Создание справочной системы.

    7. Создание установочного диска.

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


1. Начало и конец алгоритма

c:\docume~1\admin\locals~1\temp\finereader10\media\image6.png

2. Линейный блок

-3


Y=Sin(x)

3. Ввод - вывод информации

-4


Ввод N,X

4. Блок разветвления алгоритма

Да

•4



Нет

5. Вызов подпрограммы ■6

Gaus(A,n)
На этапе разработки алгоритма нужно определить последовательность действий, которые надо выполнить для получения результата. Если задача может быть решена несколькими способами и, следовательно, возможны различные варианты алгоритма решения, то программист, используя некоторый критерий, например скорость решения алгоритма, выбирает наиболее подходящее решение. Результатом этапа разработки алгоритма является подробное словесное описание алгоритма или его блок-схема. Для построения схемы алгоритма могут использоваться следующие графические элементы:

6. Организация циклов




-7-L


Выход ►

I=1,N


Z5Z

Тело цикла I




Рис.3.1. Графические элементы алгоритма Следует помнить, что линии передачи управления между блоками схемы могут не иметь стрелок, если управление передается сверху - вниз или справа налево.

Приведем схему алгоритма для решения следующей задачи: необходимо



n

рассчитать таблицу значений функции y = ^ sin(i x)/(i - j) для a < x < b.



i=1, i

Шаг увеличения переменной x равен hx =(b - a)/10.



c:\docume~1\admin\locals~1\temp\finereader10\media\image9.png


Рис.3.2. Пример схемы алгоритма После того как определены требования к программе и составлен алгоритм

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

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

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

Если предполагается, что программой будут пользоваться другие, то обязательно нужно создать справочную систему и обеспечить пользователю удобный доступ к справочной информации во время работы с программой. В современных программах справочная информация представляется в форме СНМ- или HLP-файлов. Помимо справочной информации, доступ к которой осуществляется из программы во время ее работы, в состав справочной системы включают инструкцию по установке (инсталляции) программы, которую оформляют в виде Readme-файла в одном из форматов: TXT, DOC или НТМ.

Для распространения программы необходимо будет создать установочный диск или CD-ROM для того, чтобы пользователь мог самостоятельно, без помощи разработчика, установить программу на свой компьютер. Обычно помимо самой программы на установочном диске находятся файлы справочной информации и инструкция по установке программы (Readme-файл). Следует учитывать, что современные программы, в том числе разработанные в Delphi, в большинстве случаев (за исключением самых простых программ) не могут быть установлены на компьютер пользователя путем простого копирования, так как для своей работы требуют специальных библиотек и компонентов, которых может и не быть у конкретного пользователя. Поэтому установку программы на компьютер пользователя должна выполнять специальная программа, которая помещается на установочный диск. Эта программа должна проверять права пользователя на установку конкретной программы или пакета программ. Как правило, установочная программа создает отдельную директорию для устанавливаемой программы, копирует в нее необходимые файлы и, если надо, выполняет настройку операционной системы путем внесения дополнений и изменений в реестр. Процесс создания установочного диска (CD-ROM) осуществляется обычно при помощи входящей в состав Delphi утилиты InstallShield Express.

3.2. Программирование в среде Delphi

Delphi - это среда визуального программирования на основе языка Object Pascal. Сам язык программирования Pascal был создан Н. Виртом в начале 60-х годов прошлого века специально как язык обучения программированию. От всех других языков программирования его отличает строгость в определении всех переменных и констант, модульность программирования, широкие возможности в создании собственных структур данных, использование объектно-ориентированного программирования, отсутствие машинно- ориентированных конструкций (например, как в Си "++i"). Корпорация Borland, которая является родоначальником Delphi, с самого начала сделала ставку на визуальное объектно-ориентированное программирование с предоставлением возможности работы с любыми базами данных и опередила всех своих конкурентов на пару лет. В настоящее время система программирования Delphi ни в чем не уступает по своим возможностям таким языкам программирования, как C++, С#, Visual C++, C-Builder, Visual Basic и др.

Среда Delphi

После запуска Delphi на экране появляются пять окон:



  • главное — Delphi 7;

  • стартовой формы — Form1;

  • редактора свойств объектов — Object Inspector;

  • просмотра списка объектов — Object TreeView;

  • редактора кода — Unitl.pas.


c:\docume~1\admin\locals~1\temp\finereader10\media\image10.jpeg

Рис. 3.3. Вид экрана после запуска Delphi: 1 - главное окно; 2 - основное меню; 3 - значки основного меню; 4 - окно просмотра дерева объектов; 5 - окно инспектора объектов; 6 - палитра




компонентов; 7 - окно пустой формы; 8 - окно текста программы

В главном окне находятся меню команд, панели инструментов и палитра компонентов.

Окно стартовой формы (Forml) представляет собой заготовку главного окна разрабатываемого приложения.

Программное обеспечение принято делить на системное и прикладное. Системное программное обеспечение - это все то, что составляет операционную систему. Остальные программы принято считать прикладными. Для краткости прикладные программы называют приложениями.

Окно Object Inspector (см рис. 3.3) - предназначено для редактирования значений свойств и событий объектов. В терминологии визуального проектирования объекты — это диалоговые окна и элементы управления (поля ввода и вывода, командные кнопки, переключатели и др.). Свойства объекта — это характеристики, определяющие вид, положение и поведение объекта. Например, свойства Width и Height задают размер (ширину и высоту) формы, свойства ^р и Left — положение формы на экране, свойство Caption — текст заголовка.

На страничке Properties перечислены свойства объекта и указаны их значения. На страничке Events перечислены события, на которые может реагировать объект, и здесь могут быть указаны методы обработки этих событий.

В окне редактора кода (Рис. 3.3), которое можно увидеть, щелкнув мышкой по этому окну, следует набирать текст программы. В начале работы над новым проектом это окно редактора кода содержит сформированный Delphi шаблон программы. При помещении любого компонента на форму текст программы автоматически дополняется описанием необходимых библиотек (раздел Uses) и типов переменных в классе TForm1. На начальном этапе обучения программированию в среде Delphi настоятельно не рекомендуется изменять имена компонентов и самому изменять содержимое классов.

Delphi для каждого приложения создает несколько файлов со следующими расширениями:


  • *.dpr - файл описания проекта, где описываются все формы проекта (Project1.dpr);

  • *.pas - файл модуля Unit, который является текстом программы для данной формы Form1 (Unit1.pas);

  • *.dfm - файл описания формы и ее компонент (Unit1.dfm). Он может храниться как в виде бинарного файла, так и в виде текстового файла;

  • *.res - ресурсный файл, где хранятся значки, картинки, меню, константы, которые будут помещаться в форму (Project1.res);

  • *.dof - файл настроек проекта (Project1.dof);

  • *.dcu - результат трансляции модуля с расширением *.pas, т.е. текст модуля в машинных кодах;

  • *.exe - результат редактирования программы, т.е. объединения всех модулей *.dcu в одну готовую к выполнению программу.

При выполнении лабораторных работ на дискете следует сохранять только файлы с расширениями *.dpr, *.pas, *.dfm и *.res. Остальные файлы являются рабочими и их можно не сохранять.

Следует иметь в виду, Delphi поддерживает совместимость только снизу вверх, но не наоборот. Другими словами, программа, написанная в системе Delphi 5, будет работать и в системе Delphi 7, но не наоборот.



Пример написания простейшей программы в среде Delphi

Допустим, нам надо рассчитать простейшее выражение y = sin^ |cos( x )|)

для любого x. Для этого мы поместим на форму следующие компоненты: Label 1 - для нанесения на форму текста "x="; Edit1 - для ввода значения x; Memo1 - для вывода названия работы и результатов вычислений; Button 1 - кнопку с текстом "Старт" для запуска процесса вычисления данной формулы.

Дважды щелкнув левой клавишей мыши по форме, мы получим обработчик события создания формы, где очистим текстовый редактор Memo1, затем запишем в него номер лабораторной работы, фамилию и номер группы студента, выполняющего работу. Здесь же очистим поле ввода значения x - Edit1.

Дважды щелкнув левой клавишей мыши по кнопке Button1, мы получим оформление обработчика нажатия этой кнопки. В нем определим переменные вещественного типа x и у, произведем вычисление y и выведем результаты вычислений в текстовый редактор Memo1.

В результате мы получим следующий текст модуля Unit 1.pas с необходимыми пояснениями: unit Unit1; interface uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type

TForm1 = class(TForm) // Класс формы Label1: TLabel; Edit1: TEdit; Memo1: TMemo; Button1: TButton;

procedure FormCreate(Sender: TObject); procedure Button1Click(Sender: TObject); private

{ Private declarations } public

{ Public declarations } end; var

Form1: TForm1;

implementation {$R *.dfm}

// Обработчик создания формы

Procedure TForm1.FormCreate(Sender: TObject);

begin


Memol.Clear; //Очистка текстового редактора

следующая страница >>