GeoSELECT.ru



Программирование / Реферат: Программа контроля знаний студентов по дисциплине ЭРМ и РК в процессе учебы (Программирование)

Космонавтика
Уфология
Авиация
Административное право
Арбитражный процесс
Архитектура
Астрология
Астрономия
Аудит
Банковское дело
Безопасность жизнедеятельности
Биология
Биржевое дело
Ботаника
Бухгалтерский учет
Валютные отношения
Ветеринария
Военная кафедра
География
Геодезия
Геология
Геополитика
Государство и право
Гражданское право и процесс
Делопроизводство
Деньги и кредит
Естествознание
Журналистика
Зоология
Инвестиции
Иностранные языки
Информатика
Искусство и культура
Исторические личности
История
Кибернетика
Коммуникации и связь
Компьютеры
Косметология
Криминалистика
Криминология
Криптология
Кулинария
Культурология
Литература
Литература : зарубежная
Литература : русская
Логика
Логистика
Маркетинг
Масс-медиа и реклама
Математика
Международное публичное право
Международное частное право
Международные отношения
Менеджмент
Металлургия
Мифология
Москвоведение
Музыка
Муниципальное право
Налоги
Начертательная геометрия
Оккультизм
Педагогика
Полиграфия
Политология
Право
Предпринимательство
Программирование
Психология
Радиоэлектроника
Религия
Риторика
Сельское хозяйство
Социология
Спорт
Статистика
Страхование
Строительство
Схемотехника
Таможенная система
Теория государства и права
Теория организации
Теплотехника
Технология
Товароведение
Транспорт
Трудовое право
Туризм
Уголовное право и процесс
Управление
Физика
Физкультура
Философия
Финансы
Фотография
Химия
Хозяйственное право
Цифровые устройства
Экологическое право
   

Реферат: Программа контроля знаний студентов по дисциплине ЭРМ и РК в процессе учебы (Программирование)



Министерство общего и профессионального образования РФ

Новосибирский радиотехнический колледж



ПОЯСНИТЕЛЬНАЯ ЗАПИСКА

к дипломному проекту


На тему: Программа контроля знаний студентов по
дисциплине ЭРМ и РК в процессе учебы.



Студента группы РТ-401 Специальность 2003


ДЕЖНЕВА ЕВГЕНИЯ ВЛАДИМИРОВИЧА



Выполнил: « »

Руководитель проекта: « »

Рецензент: « »

Консультант по экономиче-
ской части « »

Председатель предметной
комиссии « »

Допущен к защите « »



1998. учебный год.

СОДЕРЖАНИЕ



Введение 3



3.1 Программа для тестирования студентов
по дисциплине ЭРМ и РК 4
3.2 Основная часть:
3.2.1 Обоснование выбора языка 5
3.2.2 Блок-схема программы 7
3.2.3 Инструкция пользователя программы 10
3.2.4 Инструкция сопровождения программы 13
3.3 Формирование базы данных 16
3.4 Себестоимость разработки программного обеспечения 43
3.5 Техника безопасности при работе с компьютером 45
3.6 Программа испытаний программы 46
Заключение 47
Список литературы 48
Приложение 1(обязательное) – листинг команд 49



ВВЕДЕНИЕ

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

P.S. Надеемся, что в дальнейшем, всю бумажную документацию переведут в
машинные коды.



3.1 Программа для тестирования студентов по дисциплине ЭРМ и РК


Выполнение контрольно – зачетных работ считается обязательным в
процессе обучения. Выполнение контрольно – зачетных работ по предмету ЭРМ и
РК способствует закреплению пройденного материала, а также сближает
учащегося с компьютером.
Эта программа называется ”TEST”. Она представляет собой, как и все
тесты, набор вопросов и ответов. За каждый правильный ответ дается ”1”, в
конце складываются все единички и выводится оценка.
Преимущества и отличия программы ”Test” от других похожих:
1) Удобный интерфейс Windows’95 делает эту программы простой в
обращении;
2) Система подсказок позволяет сконцентрировать внимание на работе;
3) Программа вмещает в себе 4 темы, то есть с помощью ее можно
тестировать один курс по ЭРМ и РК;
4) Система вопросов и ответов сведена в INI-файл, что дает быструю
модернизацию программы;
5) Выдача вопросов на экран монитора, происходит совершенно случайно
(функция RANDOMIZE), что усложняет запоминание ответов и передачу их
соседу.
6) В комплект входит видео ролик, который может наглядно показать,
как нужно работать с программой;
Недостатком этой программы является то, что она идет только под
Windows’95 или выше.
Надеюсь, что эта программа полностью отразит знания учащихся по
предмету ЭРМ и РК.


3.2 ОСНОВНАЯ ЧАСТЬ

3.2.1 Обоснование выбора языка программирования
Для написания данной программы выбрана среда визуального
программирования DELPHI 3.
Раньше люди писали программы для компьютеров, используя такой
анахронизм, как перфокарты. И на это тратилось уйма времени. Требовалась
целая вечность, чтобы создать программу и запустить ее.
К счастью, мы живем с вами в то время, когда мы имеем такие
компьютерные программы, как Delphi, которые легко использовать, и мы можем
решать такие задачи, как создание базы данных в течение одного дня.
Используя Delphi, вы потратите минимум времени на программирование и запуск
программы.
Все больше и больше людей используют систему Windows, и это означает,
что программисты стали больше писать программы под Windows.
Delphi, как нельзя лучше, подходит к этому, так как в ней имеются все
необходимые инструменты, для того чтобы создать полноценное приложение.
OBJECT PASCAL
Паскаль - язык, который вы используете, когда программируете на
Delphi. На самом деле это не настоящий Паскаль. Это версия языка фирмы
Borland, которая называется Object Pascal - сверхмощная версия старого
Паскаля. Один из наиболее важных плюсов новой версии - использование
объектно-ориентированной технологии программирования.
Почему PASCAL?
Почему Паскаль, а не С++?
Да, Borland могла создать Delphi на основе С++. Но вся проблема в
том, что компании хотят использовать языки, которые используют всю мощь
объектно-ориентированной технологии программирования. Конечно, С++
объектно-ориентированный язык, но он имеет свои специфические ограничения.
Например, стандарт ANSI связывает руки фирмам- производителям компиляторов
С++, т.е. если фирма создает компилятор С++, превосходящий все остальные,
то он должен поддерживать некоторый набор возможностей, определенный
стандартом ANSI. Паскаль не имеет такого строгого стандарта, и существует
немного компаний, выпускающих компиляторы языка Паскаль. Поэтому Borland
имеет большую свободу в экспериментах по разработке языка, наиболее
отвечающего нуждам программистов. Результатом таких испытаний явился Object
Pascal, который превосходно подходит к событийно-ориентированной концепции
Windows.
Базируясь на выше сказанном, выбираем последнюю версию, DELPHI 3.



3.2.2 Блок-схема программы



3.2.3 Инструкция пользователя программы
Данная программа предназначена для выполнения контрольно – зачетных
работ по предмету ЭРМ и РК. Задача данной программы состоит в том, что бы
качественно провести тестирование учащегося. Для того, что бы начать
работать с программой, надо сделать несколько шагов.
1) Необходимо включить компьютер. Должна загореться лампочка на
системном блоке. Если она загорелась, то все в порядке, если же нет, то
следует обратиться к преподавателю.
2) На этом участке может быть несколько комбинаций. Рассмотрим самый
распространенный из них.
После включения, автоматически загружается в память компьютера
дисковая операционная система. После загрузки, в командной строке надо
набрать следующую команду ”WIN”. После того как вы ее набрали, нажмите
”ENTER”, пойдет процесс загрузки операционной системы ”WINDOWS”. Если же
этого не произошло, то следует посмотреть файл ”AUTOEXEC.BAT”, в нем должно
быть написано ”PATH=C:WINDOWS”. Если такого нет, то следует позвать
преподавателя. (Наличие операционной системы ”WINDOWS”, версии четвертой
или выше, обязательно, так как программа написана под ”WINDOWS’95”).
3) После того, как загрузилась в память операционная система
”WINDOWS’95”, надо щелкнуть левой кнопкой манипулятора(типа мышь, в
дальнейшем просто мышь) по кнопочке ”ПУСК”, в левом нижнем углу, появится
меню. Выберите ”ПОИСК” -> «Файлы и папки» и нажмите ”ENTER”. Появится окно
”НАЙТИ”, в поле ”ИМЯ” наберите с клавиатуры ”TEST.EXE” и нажмите ”ENTER”.
Пошел процесс поиска файла с именем ”TEST.EXE”. После того, как программа
поиска обнаружила данный файл, нажмите ”ENTER”, пойдет процесс загрузки в
память программы ”TEST”, если же этого не произошло, обратитесь к
преподавателю.
4) Работа с программой (ввод данных).
В появившемся окошке надо ввести номер темы от 1 до 4.
1) Полупроводники (29 вариантов);
2) Диэлектрики (5 вариантов);
3) ЭРМ и РК (5 вариантов);
4) Магнитные материалы (5 вариантов).
Дальше нажмите ”ENTER” (Если Вы ввели неправильное значение, то программа
вернется на исходную позицию, для того, чтобы Вы смогли ввести правильное
значение). Появиться окно ввода: ”Фамилии”, ”Имени” и ”номера варианта”.
После ввода «Имени» надо нажать на кнопку ”TAB”, теперь можно вводить
”Фамилию”. Опять нажмите ”TAB”, теперь нужно ввести «номер варианта» и
нажать ”ENTER”. Если же вы работали с этой программой, смело вводите свои
данные и начинайте тестирование, если же нет, то нажмите кнопочку ”?HELP” и
должен появиться видео ролик о том, как надо работать с этой программой.
5) Работа с программой (тестирование).
После того, как вы ввели свой данные и нажали на ”ENTER”, появится окно с
вопросами и ответами. В каждом варианте по 5 вопросов.
Сверху написаны ”Раздел” и ”Описание”, а также текущее время (на
вопрос дается по минуте, если Вы просрочили это время, то программа
перейдет на другой вопрос и не зачтет этот).
Ниже следует текст вопросов.
Слева нарисована картинка к вопросу, если же вопрос не требует
картинки, то вставляется стандартная картинка.
Справа ответы на вопросы. Выберите ответ, который считаете правильным.
Для этого подведите курсор мышки к этому вопросу и щелкните по правой
кнопки мышки; после того, как вопрос выделился, нажимайте по кнопке
”следующий вопрос”, появиться следующий вопрос. И так далее. После
окончания теста появиться окошко, в нем написано следующее ”Поздравляю,
ваша оценка (оценка которую вы получили) ”.
Тест завершен.



3.2.4 Инструкция сопровождения программы
Данная программа является полнофункциональным, законченным приложением
операционной системы WINDOWS`95.
Описание модулей:
Unit1 – обеспечивает выбор темы;
Unit2 – обеспечивает ввод и обработку данных введенных пользователем.
Он состоит из таких функций:
1) вызов About (сведения о программе);
2) RND (Randomize) – генератор случайных чисел, он и обеспечивает
перемешивание между собой вопросов;
3) Вычисление и вывод оценки на экран монитора;
4) Переход к окну ”Печать”;
5) Вызов Help’a;
About – содержит сведения о программе;
Prn_rez – конфигурирование таблицы данных, вызов стандартной настройки
принтера, печать таблицы, пароль на таблицу;
Pwd – нужен для того, чтобы вводить пароль на очистку таблицы;
Q_Base - нужен для обработки данных в файле base.ini;
QSort – нужен для того чтобы сортировать вопросы в base.ini;
QuestForm – он нужен для того, чтобы выдавать на экран монитора
содержимое base.ini, а так же соответствующих картинок. Формирование цвета
и размера шрифта, формирование картинки, формирование динамических кнопок;
StrLists – способствует выдачи на экран монитора содержимого base.ini;
Types – задание параметров основной формы;

1) Эта программа заключает в себе скрытые возможности, реализация
которых позволяет в течении короткого времени изменяя базу вопросов и
графических иллюстраций, добавить к существующее базе еще несколько
вариантов, состоящих из пяти вопросов. А теперь подробнее:
а) Добавление вопросов – добавляем в файл Base.ini следующее [Question
1.6.1]
Text=”Текст вопроса”
Answer1=1 ”Ответ”
Answer2=2 ”Ответ”
Answer3=3 ”Ответ”
Answer4=4 ”Ответ”
[Question 1.6.2]
Text=”Текст вопроса”
Answer1=1 ”Ответ”
Answer2=2 ”Ответ”
Answer3=3 ”Ответ”
[Question 1.6.3]
Text=”Текст вопроса”
Answer1=1 ”Ответ”
Answer2=2 ”Ответ”
Answer3=3 ”Ответ”
[Question 1.6.4]
Text=”Текст вопроса”
Answer1=1 ”Ответ”
Answer2=2 ”Ответ”
Answer3=3 ”Ответ”
Answer4=4 ”Ответ”
Answer5=5 ”Ответ”
[Question 1.6.5]
Text=”Текст вопроса”
Answer1=1 ”Ответ”
Answer2=2 ”Ответ”
Answer3=3 ”Ответ”
б) Теперь, когда мы создали шестой вариант, надо к нему ввести
правильные ответы. Добавляем в файл Base.ini еще одну строчку
AnswersSet6=4,2,3,5,1
AnswersSet6 – показывает ответы на шестой вариант;
4,2,3,5,1 – правильные ответы на пять вопросов.
в) Если в заданных вопросах есть картинки (допустим, что в 3 вопросе
график), то сделайте следующее: Нарисуйте график (с разрешением 400х300 в
bmp – формате), присвойте ей специфическое имя (для нашего варианта, это
выглядит так “q1_6_3.bmp”) и поместите ее в каталог Bitmaps.
2) Если надо добавить еще одну тему(допустим 5).
Добавляем в Base.ini следующие строчки:
[Topic 5] ”номер темы”;
Name= ”наименование темы”;
Description= ”описание темы”;
Далее проделайте туже процедуру, что и с добавлением вопросов. Далее надо
отредактировать модуль Unit1.pas. В 45 строку добавте ”or(key=’5’)” и
откомпилируйте. Это нужно для то, чтобы работала клавиша с цифрой 5. Также
в это окно надо вставить Label-метка и написать в ней, наименование темы.
3) Если какие-нибудь символы или буквы не выводятся на экран монитора,
или выводятся не так как надо, то проверьте наличие на компьютере двух
шрифтов – это ”Times New Roman Cyr” и ”Symbol”.
4) Если вы узнали, что кто знает пароль на таблицу результатов, то
загляните в модуль prn_rez.pas, в 131 строке написан пароль, измените его и
откомпилируйте.



3.3 Формирование базы данных
База данных представляет собой INI – файл. Структура файла ”BASE.INI”
представляет собой, последовательность вопросов и ответов, что дает быструю
модернизацию (добавление, редактирование) базы данных. Ниже опишем, что
представляет собой каждая строчка, данного INI-файла:

[Topic 1] – номер темы;
Name=Полупроводники – наименование темы;
Description=Физические процессы в полупроводниках– описание темы;
AnswersSet1=1,1,3,1,3 – ответы для первого варианта;
[Question 1.1.1] – 1 тема, 1 вариант, 1 вопрос;
Text=Укажите схематическое изображение зонной структуры собственного
полупроводника – текст вопроса;
Answer1=1 – 1 ответ (правильный, выбирается из AnswerSet1);
Answer2=2 – 2 ответ (неправильный);
Answer3=3 – 3 ответ (неправильный).

На следующих 26 листах, представлена вся база данных.



3.4 Себестоимость разработки программного обеспечения.
Прежде чем заняться каким либо делом, мы должны просчитать его
стоимость и выявить, будет ли это дело являться рентабельным и экономичным.
Стоимостью разработки и наладки программы учитывается:
- разработка методики наладки;
- предварительная проверка программ по частным тестам с фиксацией
регистров и индикаторов;
- контроль на соответствие формализованным правилам построения
программ, лишних участков, тупиков;
- проверка процесса вычисления по контрольным значениям в
промежуточных и крайних точках;
- обнаружение и локализация ошибок;
- обработка результатов;
- оценка времени счета программ
- сдача отдельных программ по программе и методике испытаний, в
соответствии с ГОСТами, определяющими объем и содержание испытаний.
3.4.1 Исходные данные:
1) Стоимость одного часа программиста, К = 11 рублей;
2) Время, которое потребовалось на написание программы, Т
= 51 час;
3) Мощность, потребляемая компьютером, в процессе эксплуатации W = 0,25
кВт;
4) Стоимость одного кВт, С = 0,2 рубля;
5) Амортизация А = 25% годовых;
6) Стоимость компьютера S k = 6000 рублей.

3.4.2 Расчет стоимости программы “TEST” по предмету ЭРМ и РК.
1) Расчет заработной платы программиста, пишущего программное
обеспечение Sз/п:
Sз/п = K * T = 11 * 51 = 561(рублей) 1
2) Расчет стоимости энергии, потребляемой компьютером, S w :
S w = W * T * C = 0,25 * 51 * 0,2 = 2,55(рублей) 2
Расчет стоимости амортизации вычислительной техники (в данном случае,
компьютера), S a :
Sa = (Sk * A * T)/(100 * X * Y * Z) 3
Sa = (6000*25*51)/(100*12*25*8) = 31,875(рублей)
где X = 12 месяцев в году;
Y = 25 рабочих дней в месяце;
Z = 8 часов, рабочий день.
4) Расчет общей суммы программы S;
S = Sз/п + Sw + Sa = 561+2,55+31,875=595,425(рублей) 4
Общая стоимость программы «TEST» составляет S=595,425(рублей).



3.5 Техника безопасности при работе с компьютером
3.5.1 Требования к технике электробезопасности:
а) к работе на ПЭВМ допускаются лица, прошедшие инструкцию по технике
безопасности.
б) помещения, предназначенные для размещения ПЭВМ, относятся ко второй
категории.
в) запрещается работа на ПЭВМ при отсутствии заземляющего устройства.
г) запрещается работа на ПЭВМ при снятой задней крышки монитора и
системного блока.
3.5.2 Требования по промышленной санитарии:
а) освещенность рабочего места оператора должна составлять не менее
180-230 лк при искусственном освещении;
при смешанном освещении требуется дополнительная освещенность не менее
180 лк.
б) Уровень шума в помещении не должен превышать 90дБ.
в) Площадь помещения должна выбираться из расчета 4м2 на одного
работающего.
г) Непрерывное время работы на ПЭВМ не более 2 часов, при условии, что
расстояние между монитором и глазами учащегося должно быть минимум 60 см.
Это связано с рентгеновским излучением, которое исходит от монитора.
Желательно применять защитный экран.
Если хоть один, из выше перечисленных пунктов не соответствует
действительности, то работать на компьютере запрещается.

3.6 Программа испытаний программы

Протокол приемочных испытаний ППС

Приемочная комиссия в составе:
председателя приемной комиссии Беляева Ольга Николаевна, НРТК;
и членов комиссии:
1 Селезнёв Юрий Викторович, НРТК, преподаватель;
2 Колесов Петр Кириллович, НРТК, преподаватель;
В результате приемочных испытаний комиссия установила следующее:
а) программное изделие отвечает заданным требованиям и выполняет
поставленные задачи;
б) сопроводительная документация выполнена в соответствии с ГОСТами;
в) в процессе испытаний на контрольных примерах ошибок не обнаружено;
г) общая оценка – хорошая.

Председатель комиссии: _____________________________
Члены комиссии: ___________________________________



ЗАКЛЮЧЕНИЕ
В заключении можно сказать, что программа «TEST» является законченной,
полнофункциональной программой, то есть она выполняет все, поставленные
перед ней, функции.
Эта программа разрабатывалась для того, чтобы студенты могли проверить
свои знания по предмету «ЭРМ и РК», так как она охватывает весь курс
данного предмета.
Если возникнет необходимость протестировать по другому предмету, то не
надо разрабатывать другую программу, надо добавить в ее вопросы и ответы и
вы получите программу, которая будет тестировать по другому предмету. На
этом вы экономите деньги, следовательно, экономичность этой разработки
очень велика.
Все больше и больше пользователей, используют для своей работы
операционную систему Windows’95, поэтому для удобства мы решили
использовать графический интерфейс этой операционной системы.
Все, выше приведенные параметры говорят, что разработка программы
«TEST» является экономичной и рентабельной.



СПИСОК ЛИТЕРАТУРЫ

1. Техническое описание и инструкция по эксплуатации ПЭВМ «PENTIUM».
2. Варианты заданий для контрольно - зачетных работ по предмету ЭРМ и
РК.
3. “Программирование баз данных в DELPHI 3”, Джефф Когсвелл, Минск
1997г.



ПРОГРАММА НА ЯЗЫКЕ DELPHI 3

(Приложение 1, обязательное)






Реферат на тему: Программа на Delphi

|ВВЕДЕНИЕ |
|1. Основы языка Object Pascal |
|1.1. Алфавит языка |
|1.2. Краткие сведения о структуре программы |
|1.3. Лексическая структура языка |
|1.4. Некоторые важные понятия |
|2. Система типов |
|3. Стандартные простые типы |
|3.1. Целые типы |
|3.2. Вещественные типы |
|3.3. Логический (булевский) тип |
|3.4. Символьный тип |
|3.5. Строковые типы |
|3.6. Строковый тип PChar |
|3.7. Динамические PString-строки |
|3.8. Перечислимые типы |
|3.9. Ограниченные типы |
|3.10. Вариантный тип (Variant) |
|3.11. Типы "дата – время" |
|4. Описание переменных |
|5. Описание констант |
|5.1. Обыкновенные константы |
|5.2. Типизованные константы |
|6. Описание типов |
|7. Структурные типы |
|7.1. Регулярные типы (массивы) |
|7.2. Комбинированные типы (записи) |
|7.3. Множественные типы |
|7.4. Файловые типы |
|8. Совместимость типов |
|8.1. Совместимость по вычислению |
|8.2. Совместимость по присваиванию |
|9. Выражения |
|9.1. Арифметические выражения |
|9.2. Логические выражения |
|9.3. Строковые выражения |
|10. Операторы |
|11. Простые операторы |
|11.1. Оператор присваивания |
|11.2. Оператор безусловного перехода |
|11.3. Оператор обращения к процедуре |
|11.4. Обращение к функции |
|12. Стандартные процедуры и функции |
|12.1. Строковые процедуры и функции |
|12.2. Стандартные функции |
|12.3. Арифметические процедуры и функции |
|12.4. Скалярные функции |
|12.5. Процедуры завершения |
|12.6. Процедуры и функции для работы с типами |
|"дата/время" |
|12.7. Прочие процедуры и функции |
|13. Структурные операторы |
|13.1. Составной оператор |
|13.2. Условный оператор If |
|13.3. Оператор варианта Case |
|13.4. Оператор цикла For – Do |
|13.5. Оператор цикла While – Do |
|13.6. Оператор цикла Repeat – Until |
|13.7. Операторы Break и Continue |
|13.8. Вложенные циклы |
|13.9. Оператор записи With |
|13.10. Оператор Try – Except – End |
|13.11. Оператор On – End |
|13.12. Оператор Try – Finally – End |
|14. Указатели |
|14.1. Операции с указателями |
|14.2. Стандартные процедуры и функции для работы с |
|указателями |
|14.3. Прочие процедуры и функции для работы с |
|указателями |
|14.4. Глобальные переменные AllocMemCount и |
|AllocMemSize |
|15. Подпрограммы |
|15.1. Процедуры |
|15.2. Функции |
|15.3. Параметры без типа |
|15.4. Декларации процедур и функций |
|15.5. Процедурные типы |
|15.6. Формальные и фактические параметры |
|15.7. Область действия имен |
|15.8. Рекурсивные процедуры и функции |
|15.9. Параметры и конструкторы открытых массивов |
|16. Структура программы |
|16.1. Структура модуля |
|16.2. Раздел Interface |
|16.3. Раздел Implementation |
|16.4. Инициирование и завершение модуля |
|17. Файлы |
|17.1. Файловая переменная |
|17.2. Текстовые файлы |
|17.3. Файлы с типом |
|17.4. Файлы без типа |
|17.5. Процедуры и функции для работы с файлами |
|18. Классы и объекты |
|18.1. Инкаспуляция, наследование и полиморфизм |
|18.2. Синтаксис класса |
|18.3. Поля класса |
|18.4. Методы класса |
|18.5. Свойства класса |
|18.6. Структура класса |
|18.7. Операции над классами |
|ЛИТЕРАТУРА |

1. Основы языка Object Pascal
1.1. Алфавит языка
Основными символами языка Object Pascal являются:
. символы _ + -
. 26 больших и 26 малых латинских букв A,B, …Y,Z, a,b, …, y,z
. 10 арабских цифр 0, 1, 2, 3, 4, 5, 6, 7, 8, 9,
. специальные символы * / = ^ < > ( ) [ ] { } . , : ; ' # $ @
Буквы русского алфавита не входят в состав алфавита языка. Их использование
допустимо только в строковых и символьных значениях.
Нет различий при использовании больших и малых букв в записи имен
переменных, процедур, функций и меток. Их максимальная длина ограничена 126
символами.
1.2. Краткие сведения о структуре программы
Программа, написанная в среде Delphi при помощи языка Object Pascal, всегда
состоит из нескольких модулей. Как минимум таких модулей должно быть два.
Один модуль всегда является головной программой и имеет название program.
Прочие модули играют вспомогательную и зависимую от головной программы или
от других модулей роль и называются unit. Мини-мально структурированная
программа имеет один модуль program и один модуль unit. Серьезные программы
помимо модуля program могут содержать до нескольких десятков авторских
модулей unit и большое количество ссылок на фирменные или разработанные как
самим автором, так и другими разработчиками модули unit.
Программа всегда начинает работу с модуля program, активизируя
функционирование одного или нескольких зависимых модулей unit. Те в свою
очередь могут активизировать другие модули unit и т.д.
Исходный программный текст каждого модуля составляется на языке Object
Pascal и помещается в отдельный файл, который всегда имеет расширение .pas.
Текст модуля program имеет расширение .dpr.
Полный программный текст любого модуля также имеет свою структуру, которая
может включать блоки определения констант, внутренних структур описания
типов, тексты процедур, функций и др.
1.3. Лексическая структура языка
Строительным материалом для конструирования программного текста модуля
являются лексемы – особые языковые конструкции, имеющие самостоятельный
смысл. Лексемы строятся при помощи символов алфавита языка. В Object Pascal
различают следующие основные классы лексем:
1. Зарезервированные (служебные) слова. Этот класс состоит из слов,
построенных только с помощью букв алфавита. Служебные слова можно
использовать только по прямому назначению, т. е. так, как их
назначение определил разработчик языка. Ни в каком другом виде,
например в качестве имен переменных, их использовать нельзя.
Ниже представлен список таких слов:
|And |array |as |
|asm |begin |case |
|class |const |constructor |
|destructor |dispose |div |
|do |downto |else |
|end |except |exports |
|file |finalization |finally |
|for |function |goto |
|if |implementation |in |
|inherited |initialization |line |
|interface |in |label |
|library |interface |nil |
|not |is |of |
|or |mod |packed |
|procedure |object |property |
|raise |out |repeat |
|resource |program |set |
|shl |record |string |
|then |string |to |
|try |shr |unit |
|until |threadvar |var |
|while |type |xor |
|with |uses | |


Кроме того, нельзя использовать следующие слова, не принадлежащие к
этому классу: private, protected, public, published, automated,
directives, on, virtual.
2. Идентификаторы (имена). Идентификаторы или имена предназна-чены для
обозначения констант, переменных, типов, процедур, функций, меток. Они
формируются из букв, цифр и символа "_" (подчеркивание). Длина имени
может быть произвольной, однако компилятор учитывает име-на по его
первым 63 символам. Внутри имени не должно быть пробелов.
Object Pascal в именах не различает больших и малых букв. Так
следующие имена будут идентичны:
SaveToFile, SAVETOFILE, savetofile, sAVEtOfILE.
Среди программистов установилось хорошее правило, в соответствии с
которым имена формируются таким образом, чтобы одновременно выпол-нять
роль комментария, поясняющего назначение имени. Так, в приведенном
примере имя переводится с английского как "сохранить в файле". Кроме
того, с учетом невозможности вставки внутрь такого имени пробелов,
первые буквы слов обычно пишут заглавными, а прочие строчными. Из
приведенного примера хорошо видно, что именно такой способ записи
наиболее нагляден для визуального восприятия имени. Нередко в качестве
заменителя пробела используют символ "_". Однако это удлиняет и без
того длинные имена. Преимущества длинных имен совсем не означают, что
нельзя применять короткие имена. Понятно, что проще набрать с
клавиатуры и использовать оператор
a := a + 1,
чем идентичный ему оператор
Disk_C_DirctoryCounter := Disk_C_DirctoryCounter +1.
Следует, однако, с большой осторожностью использовать короткие имена,
т. к. это нередко приводит к путанице между глобальными и локальными
переменными, обозначенными одинаковыми именами, и, как следствие, к
ошибкам в работе программы. Наиболее удобным, безопасным и желательным
можно считать локальное использование коротких имен, когда они описаны
и использованы внутри какой-нибудь сравнительно небольшой по объему
текста процедуры или функции и их действие ограничено пределами только
этой алгоритмической единицы. При подозрении на путаницу, действие
такой переменной легко проконтролировать визуально.
3. Изображения. К их числу относятся константы, символьные строки и
некоторые другие значения.
4. Знаки операций формируются из одного или нескольких символов по
определению действий, связанных с преобразованием данных.
5. Разделители используются с целью большего структурирования модуля, с
тем чтобы повысить визуальное восприятие длинных текстов. К их числу
можно отнести ; := ( .
6. Комментарии. Эти лексемы используют для пояснения отдельных фрагментов
текста программы. Они представляют собой последовательность символов,
заключенную в фигурные скобки { } или в разделители (* и *), а также
последовательность символов, расположенных в строке справа от двух
следующих друг за другом символов /.
Примеры комментариев:
{ Функция вычисления количества дней между двумя датами }
(* Функция вычисления количества дней между двумя датами *)
// Неправильный ответ
7. Пробел. Этот символ не имеет видимого изображения и служит для
отделения лексем друг от друга в тех случаях, когда это необходимо.
Обычно использование одного или нескольких рядом стоящих пробелов не
искажает смысл программы.
1.4. Некоторые важные понятия
Остановимся на этих понятиях для того, чтобы коротко определить их для
понимания большинства примеров, которыми сопровождается материал. Эти
компоненты языка имеют исключительную важность, в последующих разделах они
будут описаны более подробно.
Ячейка. Этот несколько устаревший, но весьма удобный термин обозначает
фрагмент памяти, который можно представить как некий контейнер для хранения
данных определенной структуры. Ячейка всегда имеет свое уникальное имя,
которое служит адресом, по которому расположены находящиеся в ней данные.
Примером ячейки могут служить любые разрешенные имена, например a1, Imk12,
Count и т. д. Термин "ячейка" не является языковым термином Object Pascal и
используется здесь только для большей наглядности при описании основ языка.
Значение – это постоянная величина или структурный комплекс постоянных
величин, выраженных в явном виде. Значение не имеет имени.
Примеры значений:
-55.455051 { обыкновенное вещественное число},
'Расчет посадки с натягом' {строка символов}.
Константа – это ячейка, в которой всегда хранится одно значение. Константы
не могут быть изменены в ходе выполнения программы. В этом смысле константа
отвечает общепринятому определению постоянной (неизменяемой) величины.
Всякая константа должна быть описана, т. е. должно быть явно указано ее
значение. Значение константы неявно определяет ее тип.
Необходимо отметить, что в языке существуют так называемые типизованные
константы, которые в ходе прохождения программы могут быть изменены. Тип
константы указывается в специальной языковой конструкции, начинающейся
словом Type (тип).
Переменная – это ячейка, в которой в каждый момент времени хранится одно
значение или не хранится ничего. Переменная в любой момент времени может
быть изменена программой. Всякая переменная должна быть описана. т .е.
должен быть явно указан ее тип. Тип переменной указывается в специальной
языковой конструкции, начинающейся словом Var (от английского variable –
постоянная).
Тип – это структура и описание множества значений, которые могут быть
присвоены переменной.
Оператор присваивания – это команда, предназначенная для изменения
содержимого ячейки. С его помощью происходит изменение значения переменной
(или типизованной константы).
Синтаксис оператора присваивания:
x := y; { читается "x присвоить y" }
Здесь x – переменная, y – выражение. Выражением могут быть, в частности,
переменная, константа или значение. Последовательность символов ":="
обозначает операцию присваивания, в соответствии с которой сначала
вычисляется выражение y, затем получившийся результат в виде значения
записывается в переменную x (см. подробнее гл. 9).
Примеры:
d := 5; { значение 5 записывается в переменную D },
h := d + 12.5; { выч. 5+12.5, рез. 17.5 записывается в переменную h }.
2. Система типов
В языке Object Pascal все переменные, т. е. ячейки памяти,
предназначенные для записи, чтения и хранения значений, должны быть
предварительно описаны. Это означает, что всякая переменная должна
быть явно отнесена к какому-либо типу.
Тип – это одновременно структура и описание множества значений,
которые могут быть присвоены такой переменной.
Язык Object Pascal имеет множество разнообразных типов. Более того он
позволяет самому пользователю конструировать самые разнообразные типы,
которые могут быть ему необходимы. Конструирование таких типов
производится из сравнительно ограниченного количества стандартных
типов.
Типы имеют свою иерархию. На верхнем этаже иерархии расположены
следующие типы: простые, составные, ссылочные и процедурные.
3. Стандартные простые типы
Основными типами языка являются стандартные простые типы и стандартные
структурные типы.
Простые типы делятся на скалярные и ограниченные типы. Cкалярные типы
делятся на стандартные и перечислимые. Стандартные скалярные типы делятся
на пять видов:
. целые [Integer],
. вещественные [Real],
. логический (булевский) [Boolean],
. символьные [Char],
. строковые [String].
К ним примыкает особый вариантный тип [Variant].
3.1. Целые типы
Эта группа типов охватывает множество целочисленных значений. Они
отличаются друг от друга диапазоном допустимых значений и количеством
занимаемой памяти.
Целыми типами являются ShortInt, SmallInt, LongInt, Int64, Byte, Word и
LongWord, характеристики которых приведены в табл. 1.
Таблица 1
|№ |Тип |Диапазон значений |Размер памяти |
|1. |ShortInt |–128 .. 127 |1 байт |
| |SmallInt |–32768 .. 32767 |2 байта |
|2. |LongInt |–2147483648 .. 2147483647 |4 байта |
|3. |Int64 |–2^63 .. 2^63–1 |8 байтов |
|4. |Byte |0...255 |1 байт |
|5. |Word |0...65535 |2 байта |
|6. |LongWord |0 .. 4294967295 |4 байта |
|7. | | | |


При назначении типа переменной следует исходить из оценки диапазона
возможных значений, которые она может принимать в ходе выполнения
программы.
Так если значения переменной будут только положительными, то можно ее
отнести к одному из типов Byte, Word, LongWord. Если известно также, что ее
значения никогда не выйдут за 255 (например, если переменная предназначена
для хранения номера месяца текущего года), то лучше использовать тип Byte.
При этом память будет расходоваться наиболее экономно.
Не следует, однако, стремиться к излишней экономии памяти на переменных.
Нередко экономно описанная переменная может привести к ситуации, когда
программа попытается записать в нее такую константу, которая превышает
допустимый диапазон значений. Это приведет к немедленному аварийному
завершению программы с сообщением "Range check error" (выход за допустимые
границы диапазона). Сообщения такого рода могут генерироваться самыми
разными операциями и в самых разных местах программы. По этой причине поиск
ошибки в программе, особенно если она многомодульна и сложна, может надолго
затянуться.
Не следует также злоупотреблять многообъемными типами, т.к. это может
привести к излишнему перерасходу, а иногда и нехватке памяти, с одной
стороны, и замедлению работы программы – с другой.
Примеры:
Var
A, A_Par: Integer;

T1, T2, T3: LongInt;

CircleCounter: byte;
Значения целых типов изображаются в обычном десятичном или в
шестнадцатеричном видах. Они отличаются тем, что при изображении
шестнадцатеричных значений в его начале ставится символ $ и сами значения
формируются из шестнадцатеричных цифр 0 .. 9, A ... F.
Максимально допустимый диапазон значений определяется их типом.
Примеры:
0 9877 -56 $F1 ( то же, что 241)
Над целыми значениями можно выполнять четыре обыкновенных арифметических
действия: сложение (+), вычитание (-), умножение (*), деление (/) и два
дополнительных действия: деление нацело (div) и взятие остатка от деления
(mod). При выполнении деления результатом будет вещественное значение, во
всех остальных операциях – целое.
3.2. Вещественные типы
Эта группа типов охватывает вещественные значения.
Вещественные типы не могут быть использованы:
. в качестве индексов массивов;
. в операторах For и Case;
. в качестве базисного типа при определении множеств;
. при определении подтипов.
При описании вместо Real48 можно указывать Real.
Ниже в табл. 2 приведен список типов и их характеристики.
Таблица 2
|№ |Тип |Диапазон значений |Значащих цифр |Размер |
| | | |в мантиссе |памяти |
|1. |Real48 |2.9 x 10^–39 ... 1.7 x 10^38 |11 – 12 |6 байтов |
| |Single | |7 – 8 |4 байта |
|2. |Double |1.5 x 10^–45 ... 3.4 x 10^38 |15 – 16 |8 байтов |
|3. |Extended |5.0 x 10^–324 ... 1.7 x 10^30|19 – 20 |10 байтов|
|4. |Comp | |19 – 20 | |
|5. |Currency |3.6 x 10^–4951 ... 1.1 x |19 – 20 |8 байтов |
|6. | |10^4932 | |8 байтов |
| | |-2^63+1 ... 2^63 -1 | | |
| | |-922337203685477.5808 ... | | |
| | |922337203685477.5807 | | |


Примеры:
Var
rA, rA_Par: Real;

T: Integer;
Вещественные значения можно изобразить:
. в форме с фиксированной десятичной точкой;
. в форме с плавающей десятичной точкой.
Первая форма представления вещественного значения представляет привычное
число, в котором целая и дробная части разделены десятичной точкой,
например
12.455

-988.45

-8.0
Вторая форма предназначена для записи очень больших или очень маленьких по
абсолютной величине значений, когда их представление в форме с
фиксированной точкой затруднительно или невозможно. Такое значение
изображают в виде
<значение с фиксированной точкой > E
Примеры:
-45.2E6 ( то же, что -45,2 106)

5.245E-12 ( то же, что 5,24 10-12)
Порядок таких чисел должен быть всегда целым числом.
3.3. Логический (булевский) тип
Логические переменные имеют тип boolean. Такая переменная занимает один
байт памяти и может иметь одно из двух возможных значений – True (истина)
или False (ложь).
Примеры:
Var

b : boolean;

b1, Ti : boolean;
3.4. Символьный тип
Типы AnsiChar и WideChar описывают множество отдельных символов языка,
включая буквы русского алфавита. AnsiChar описывает множество из 256 ASCII-
кодов и занимает один байт памяти, WideChar описывает мно-жество Unicode –
универсальное множество кодов и занимает два байта памя-ти. Тип AnsiChar
эквивалентен базовому типу Char прежних версий языка.
Примеры:
Var

Ch, k : AnsiChar;

Char_Massivr: array[1..100] of Char;
Символьное значение представляют в виде символа, заключенного с обеих
сторон в апострофы. Для изображения самого апострофа его удваивают
(последний пример), например:
'h' 'X' '#' '$' ''''
3.5. Строковые типы
Этот тип во многом схож с типом Array of Char, т. е. массивом символов.
Отличие состоит в том, что переменная этого типа может иметь динамическое
количество символов (от нуля до верхней границы), в то время как массив
символов всегда статичен и имеет одинаковое количество символов.
Таблица 3
|№ |Тип |Длина строки |Занимаемая память |
|1.|ShortString |0 – 256 символов |(Кол-во символов) х 1 байт |
| |AnsiString |0 – 2 Гб символов |(Кол-во символов) х 1 байт |
|2.|WideString |0 – 2 Гб символов |(Кол-во символов) х 2 байта|
| | | | |
|3.| | | |


Максимальная длина строковой переменной должна быть указана явно. Размер
строки на единицу больше ее объявленной длины, т. к. в ее нулевом байте
содержится фактическая длина строки. Длину в нулевом байте можно
принудительно менять.
Особо следует выделить тип String. Если длина String-строки не объявлена,
то при действии директивы компилятора {$H+} или без ее указания такое
объявление равносильно AnsiStrig. Если установлена директива {$H-}, то тип
String равносилен типу ShortString.
Строковое значение изображают в виде последовательности символов,
заключенной в апострофы. Пустую строку изображают двойным апострофом.
Примеры значений строковых типов:
'Иванов И.И.' '' 'Газета"ИЗВЕСТИЯ"' 'Строка символов'
Примеры описания переменных строковых типов:
Var

s1, s2 : ShortString [12];

st1, st2 : AnsiString [580];

ChMassiv: array [1..15] of String;
3.6. Строковый тип PChar
Для связи с функциями Windows в язык Object Pascal введен новый тип строк –
PChar-строки с завершающим нулем. В обычной и привычной для прежних версий
языка String-строке нулевой байт отведен для хранения реального количества
символов этой строки, а сами символы последовательно располагаются начиная
с первого байта. В PChar-строке, наоборот, символы располагаются начиная с
нулевого байта, а их последовательность заканчивается завершающим нулем.
Строки PChar можно объявлять как обычные символьные массивы. Например,
строку длины 3000 плюс один байт, зарезервированный под завершающий нуль,
можно определить следующим образом:
Var

s: array[1 .. 3000] of Char;
П р и м е ч а н и е. Без необходимости не используйте PChar-строки.
Строковые String-типы и функции для обработки таких строк хорошо отлажены,
они легче в использовании, и, как правило, надежнее PChar-строк.
3.7. Динамические PString-строки
Этот тип строк так же, как PChar, введен в язык для обращения к функциям
Windows. Подробнее PString-строки описаны далее.
3.8. Перечислимые типы
Этот тип переменных может быть сформирован самим пользователем. Он
создается простым перечислением возможных значений переменной.
Примеры перечислимых типов:
Type

MaleNames = (Ivan, Peter, Serge);

SwithOpts = (On, Off);

SostTypes = (Active, Passive, Waiting);

Sides = (Left, Right, Top, Down);
В первом примере переменная объявленного типа может принимать значение
одного из трех мужских имен. Во втором – одно из двух значений – On
(включено) или Off (выключено) и т. д.
Имена из списка перечислимого типа считаются константами соответствующего
перечислимого типа и в пределах блока не должны повторяться.

Например, описания вида
Type

Days1 = (Monday, Wednesday, Friday);

Days2 = (Tuesday, Wednesday, Saturday, Sunday);
содержат ошибку, т. к. константа Wednesday используется дважды.
3.9. Ограниченные типы
Этот тип формируется самим пользователем посредством сужения значений ранее
определенного или стандартного типов.
Примеры:
Type

Diapason = 1 .. 30;

Letters = 'a' .. 'v';

TList = (t1, t2, t3, t4, t5, t6,t7, t8, t9, t10);

TlistSmall = (t2 .. t8);
3.10. Вариантный тип (Variant)
Тип Variant – особый тип языка Object Pascal. Значение этого типа наперед
неизвестно, однако может быть определено через присваиваемое значение одним
из следующих типов: все целые, вещественные, строковые, символьные и
логические типы, за исключением Int64.
Следующие примеры демонстрируют использование типа Variant и механизм
конверсии типов при смешивании его с другими типами. Сопроводи-тельные
комментарии поясняют правила, при помощи которых операторы присваивания
меняют тип Variant-переменных в зависимости от принятого ими значения.
Var

V1, V2, V3, V4, V5: Variant; {описание Variant-переменных }

I: Integer;

D: Double;

S: string;
...

begin

V1 := 1; { integer-значение }

V2 := 1234.5678; { real-значение }

V3 := 'Иванов'; { string-значение }

V4 := '1000'; { string-значение }

V5 := V1 + V2 + V4; { real-значение 2235.5678}

I := V1; { I = 1 (integer-значение) }

D := V2; { D = 1234.5678 (real-значение) }

S := V3; { S = ' Иванов' (string-значение) }

I := V4; { I = 1000 (integer-значение) }

S := V5; { S = '2235.5678' (string-значение) }

end;
3.11. Тип "дата – время"
В языке имеется несколько типов, предназначенных для работы с датами и
временем. Они имеют вид
Type

TDateTime = Double;

TDate = TDateTime;
TTimeStamp = Record

Time: Integer; { время в миллисекундах от полуночи }

Date: Integer; { единица + число дней с 01.01.0001 г.}

end;
Тип TDateTime предназначен для хранения даты и времени.
Переменная отличается от константы или значения тем, что в процессе
работы программы она может менять содержимое своей памяти. Однако в
каждый момент времени она хранит только одно значение. Всякая перемен-
ная имеет имя, тип и свою область видимости. По сути, переменная явля-
ется контейнером для хранения значения идентичного типа. Всякая
перемен-ная в блоке описания должна быть представлена только один раз.
Описание переменной или группы переменных начинается словом Var.
Область видимости переменной будет подробно описана ниже.
Общий вид описания переменных одного типа:
: ;
Пример:
Var
t_s1, t_q1: String[255];
rt1, rt2: (Opened, Closed, Unknown);
Re1, Re2, Re3: Real;
i: Integer;
В этом примере переменные t_s1 и t_q1 описаны как строковые переменные
типа String[255]. При работе программа выделит под каждую из них с
учетом нулевого байта по 256 байтов памяти для хранения символьных
значений. Переменные rt1, rt2 объявлены как переменные, которые могут
принимать в определенный момент времени одно из перечисленных
значений: Opened, Closed, Unknown. Переменные Re1, Re2, Re3 объявлены
вещественными, а переменная i – целочисленной типа Integer.
Переменными могут быть объявлены не только переменные простых типов.
Ниже будут рассмотрены переменные более сложных – структурных – типов.
Более того, переменными могут быть объявлены структуры структур,
примером которых являются классы. Например:
type
TKdnClass = class(TObject)

End;
Var
Ts: Record
A, N: Integer;
End;
Cl: TKdnClass;

5. Описание констант
В Object Pascal различается два вида констант – обыкновенные и
типизованные. Описание констант следует после слова Const.
5.1. Обыкновенные константы
Описание константы строится по правилу
= <выражение>;
Примеры:
Const
T_Par = 12899;
M_ArrayCount = 16;
Middle_M_Array = M_ArrayCount div 2;
RealMax = 1.7e38;
StarString = '* * * * * * * * * * * * *';
Log10 = 2.302585;
Log10_Invert = 1/Log10;
LeftArrayBound = -M_ArrayCount;
Тип константы определяется автоматически по виду ее значения.
Существует несколько констант, которые заранее предопределены и не
требуют описания:
Pi = 3.1415926536E+00 (тип Real)
False, True ( Boolean)
MaxInt = 32767 ( Integer)
MaxLongInt = 2147483647 ( LongInt)
Nil ( Pointer).
Часто константы используют для определения динамических массивов,
динамических строк и других динамических структур. Следующие описания
демонстрируют пример такого определения.
Const
ArrMax = 100;
nSt = 46;
Var
IntArr: Array[1..ArrMax] of Integer;
StrArrr: Array[1..ArrMax] of String[nSt];
Такой способ описания позволяет при необходимости легко изменить
размер массивов, изменив всего лишь значение константы (в данном
случае константы ArrMax). При этом произойдут автоматические изменения
определений как в текущем, так и в других модулях, если они содержат
определения, опирающиеся на эту константу. Явное определение массивов
через значение 100 потребовало бы соответствующих явных изменений
этого значения на другое всюду, где такие описания имели бы место. Для
больших программ это могло бы стать причиной ошибок, если часть
изменений не была бы выполнена по недосмотру.
2. Типизованные константы
Это специальный тип констант, которые отличаются от обыкновенных констант
тем, что при их описании необходимо указывать тип.
1. Простые типизованные константы. Общий вид константы:
: = <значение>;
Примеры:
Const
CurrentPosition: Word = 11000;
LastLetter: Char = 'z';
HeadOfModule: String[26] = 'Начало программного модуля';
Типизованные константы нельзя использовать для описания динамических
структур. Следующий пример демонстрирует недопустимое описание
динамического массива Arr через типизованную константу ArrMax:
Const
ArrMax: Integer = 100;
Var
IntArr: Array [1..ArrMax] of Integer; { Ошибка }
Значение типизованных констант можно изменять в ходе выполнения
программы, и они могут быть использованы в качестве Var-параметра
процедуры или функции. В этой связи типизованные константы по сути
являются переменными с начальным значением.
2. Типизованные константы типа "массив". Этот тип констант позволяет
обозначить постоянной величиной целый массив однотипных значений,
например:
Type
tVotes = (Yes, No, UnDef);
tVoteArr = array [tVotes] of String [7];
Const
Votes : tVoteArr = ( 'Да', 'Нет', 'Не знаю' );
Var
V: tVoteArr;
S: String[20];

V:= Votes;
S:=V[UnDef];

Здесь в секции Type сначала описан перечислимый тип tVote из трех
значений Yes, No, Undef. Затем через этот тип определен новый тип
tVoteArr как тип-массив из трех элементов, каждый из которых является
строкой длины 7. Далее в секции Const определена типизованная
константа Votes, которая определена как массив трех строковых значений
('Да', 'Нет', 'Не знаю'). Затем в секции Var описаны переменные V и S
разных типов. Предпоследняя и последняя строки являются исполняемыми
операторами присваивания. Сначала переменной V присвоено начальное
значение – константа Votes. Затем переменной S присвоено значение
третьего элемента массива V. В результате значением строковой
переменной S будет 'Не знаю'.
1. Типизованные константы типа "запись". Это комбинированный тип
констант, основанный на конструкциях типа Record (см. параграф 7.1),
которые состоят из полей. Константы такого типа определяются по
правилу "имя поля : значение поля".
Пример:
Type
tDayOfYear = Record {день года}
Week : (Mon,Tue,Wed,Thu,Fri,Sat,Sun); {день недели}
Num : 1 .. 31; {день месяца}
Month : 1 ..12; {месяц }
Year : 1951 .. 2050; {год}
End;
Const
D1 : (Week : Sun; Num : 26; Month : 10; Year : 2001 D1, которая
представляет конкретную дату "Воскресенье, 26, октябрь);
Здесь в секции Type описана запись, состоящая из четырех полей и
характеризующая день года. Назначения этих полей понятно из
сопроводительных комментариев. Затем в секции Const описана
типизованная константа (Sun; 26; 12; 2001), т. е. " Воскресенье, 26
октября 2001 года".
2. Типизованные константы типа "множество". Эти константы могут быть
построены как подмножества базовых или производных от них типов.
Примеры:
Type
tChildNameSet = set of ['Таня', 'Валя', 'Володя', 'Гена'];
Const
Girls2Set : tGirlsNamesSet = ['Валя', 'Гена'];
Indexes: set of integer = [300 .. 500, 1777,3700];
Здесь в секции Type описано множество из четырех имен детей. Ниже в секции
Const описано две константы, каждая из которых представляет подмножества.
Первая – подмножество имен, объявленных ранее в tChildNameSet, вторая –
подмножество целых чисел типа Integer.
6. Описание типов
Ранее уже приводились примеры описания переменных, в которых их тип
указывался в Var-секции явно или на основе ранее объявленного
пользовательского типа.
Описание секции типов начинается словом Type.
В табл. 4 дан пример двух идентичных способов описания переменных t,
u, n.
Таблица 4
|Явный способ описания |Описание переменных с |
|переменных |предварительным описанием их типа|
|Var |Type |
|t,u,n:(Mon, Tue,Wed, |DaysOfWeek = (Mon, Tue,Wed, |
|Thu,Fri,Sat,Sun); |Thu,Fri,Sat,Sun); |
| |Var t,u,n: DaysOfWeek; |


В тех случаях, когда явный и типизованный способы описания переменных
конкурируют, следует всегда отдавать предпочтение способу описания
переменных с предварительным объявлением их типа в секции Type. Такой
способ позволяет:
а) конкретизировать тип;
б) четко выделить множество переменных этого типа;
в) повысить уровень структурированности программы;
г) снизить вероятность путаницы в типах, когда переменные фактически
того же типа объявлены разными способами;
д) уменьшить объем текста за счет возможности быстрой ссылки на ранее
определенный тип, особенно в тех ситуациях, когда этот тип
используется для порождения новых типов, переменных, функций и пр. в
других секциях или модулях.
В этой связи важно подчеркнуть, что даже при совпадении базовых типов
различие в пользовательских типах может привести к непредсказуемому
поведению программы. Например, в нижеследующей секции Type два
производных типа t1 и t2 имеют одинаковый базовый тип byte. Однако
объявленные ниже в Var-секции переменные p1 и p2 будут расценены
системой как переменные разных типов. Это обстоятельство может
послужить причиной недоразумений в ходе составления и/или выполнения
программы.
Type
t1 = byte;

t2 = byte;
Var
p1: t1;

p2: t2;
Корректным можно считать следующий аналог:
Type
t1 = byte;
Var
p1,p2: t1;

7. Структурные типы
Структурные типы представляют собой совокупность значений одного или

Новинки рефератов ::

Реферат: Анализ затрат на производство (Бухгалтерский учет)


Реферат: Вирусы и антивирусное программное обеспечение (Программирование)


Реферат: Анализ живописных произведений флорентийской школы конца XV - начала XVI веков (Искусство и культура)


Реферат: Экономическое развитие России при Петре I (Государство и право)


Реферат: Учет кредитов банка (Банковское дело)


Реферат: Обоняние (Биология)


Реферат: Цифровые ЭВМ (Компьютеры)


Реферат: Культура (Культурология)


Реферат: КНДР (География)


Реферат: Предмет экономической социологии как отрасли социологии. Метод социометрических измерений. Сущность и область применения (Социология)


Реферат: План счетов бухгалтерского учета (Аудит)


Реферат: Уровень жизни населения (Социология)


Реферат: Виктор Цой (биография, интервью) (Музыка)


Реферат: Неполадки при загрузке Windows и их устранение. Загрузочная дискета (Программирование)


Реферат: Физическая география СНГ (Азиатская часть) (География)


Реферат: Эффективность хозяйственной деятельности предприятия и пути их повышения (Предпринимательство)


Реферат: Коммуникативная компетентность (Психология)


Реферат: Лингвистический фон деловой корреспонденции (Linguistic Background of Business Correspondence) (Иностранные языки)


Реферат: Маркетингові комунікації у внутрішньому середовищі підприємств (Маркетинг)


Реферат: Объединение "Яблоко" (Политология)



Copyright © GeoRUS, Геологические сайты альтруист