close

Вход

Забыли?

вход по аккаунту

?

86.Учебная практика

код для вставкиСкачать
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
Министерство образования и науки Российской Федерации
Федеральное государственное бюджетное образовательное учреждение
высшего профессионального образования
«Оренбургский государственный университет»
Колледж электроники и бизнеса
Л.А. Дель, Н.А.Уйманова
УЧЕБНАЯ ПРАКТИКА
Рекомендовано к изданию Редакционно–издательским советом
федерального государственного бюджетного образовательного учреждения
высшего профессионального образования
«Оренбургский государственный университет»
в качестве методических указаний к лабораторным работам для студентов,
обучающихся по программе среднего профессионального образования
по специальности 230115 Программирование в компьютерных системах и
комплексах
Оренбург
2013
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
УДК 681.3.06 (075.32)
ББК 22.18я723
Д 29
Рецензент – заведующая отделением информационных технологий
леджа электроники и бизнеса Т.И.Иштерякова
Д 29
кол
Дель, Л.А.
Учебная практика: методические указания / Л.А. Дель, Н.А.Уйманова;
Оренбургский гос.ун-т – Оренбург : ОГУ, 2013. - 135 с.
Методические указания предназначены для выполнения работ по учебной практике, обеспечивающих учебный процесс первого
учебного профессионального модуля «Разработка программных модулей программного обеспечения для компьютерных систем», специальности 230115 «Программирование в компьютерных системах» в
колледже электроники и бизнеса ОГУ для студентов 2 курса очной
формы обучения.
Методические указания составлены с учетом федерального государственного образовательного стандарта среднего профессионального образования по направлению подготовки специальности
230115 «Программирование в компьютерных системах и комплексах»,
утвержденного приказом № 696 от 23 июня 2010 года Министерства образования и науки Российской Федерации.
УДК 681.3.06 (075.32)
ББК 22.18я723
 Дель Л.А.,
Уйманова Н.А., 2013
 ОГУ, 2013
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
Содержание
Общие положения ............................................................................................................ 6
1 Обязанности студента ................................................................................................... 7
2 Теоретические занятия и производственные экскурсии ............................................ 7
3 Отчет о практике .......................................................................................................... 7
4 Цель и задачи практики, ее место в учебном процессе............................................... 8
5 Содержание учебной практики ................................................................................... 9
5.1 Ход выполнения заданий по учебной практике ..................................................... 11
6 Организационно-методические данные практики .................................................... 12
6.1 Этапы выполнения учебной практики ................................................................... 12
7 Требования к построению отчета по практике .......................................................... 16
7.1 Структурные элементы отчета по практике ......................................................... 16
7.2 Титульный лист ....................................................................................................... 16
7.3 Задание .................................................................................................................... 16
7.4 Содержание.............................................................................................................. 17
7.5 Введение. Заключение ............................................................................................. 17
7.6 Список использованных источников...................................................................... 17
7.7 Приложения ............................................................................................................. 18
7.8 Оформление текстовой части .................................................................................. 18
7.8.1 Оформление таблиц и рисунков ........................................................................... 19
7.8.2 Оформление списков (перечислений) .................................................................. 20
8 Методические указания .............................................................................................. 21
8.1. Этапы создания программного продукта............................................................... 22
8.2 Структура программного продукта......................................................................... 24
8.3 Модульное программирование................................................................................ 25
8.4. Модульная структура программного продукта .................................................... 26
8.5 Процедуры и функции ............................................................................................. 27
8.6 Файловый тип данных ............................................................................................. 29
8.6.1 Процедуры и функции для работы с файлами..................................................... 32
3
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
8.7 Тестирование программного продукта ................................................................... 34
8.8 Модуль CRT. Текстовый режим использования экрана ....................................... 37
8.8.1 Управление звуком................................................................................................ 39
8.8.2 Процедура WINDOW. Процедуры, действующие в окнах ................................ 40
8.9 Модуль GRAPH....................................................................................................... 41
8.9.1 Перевод экрана в графический режим ................................................................. 41
8.9.2. Обработка ошибок при инициализации графического режима......................... 43
8.9.3. Переключение между текстовым и графическим режимами ............................ 45
8.10 Описание графических процедур и функций ....................................................... 46
8.10.1. Система координат............................................................................................. 46
8.10.2. Текущий указатель ............................................................................................. 47
8.10.4. Цвета, палитры, заполнения .............................................................................. 50
8.10.5 Отображение точки на экране ............................................................................ 54
8.10.6 Отображение отрезков прямых линий, построение прямоугольников ............ 55
8.10.7. Незаполненные и заполненные фигуры............................................................ 60
8.10.8 Работа с текстом в графическом режиме .......................................................... 74
8.11 Работа с памятью.................................................................................................... 76
8.11.1 Распределение памяти......................................................................................... 77
8.11.2 Массив указателей............................................................................................... 80
8.12 Динамические изображения .................................................................................. 84
8.13 Модуль Mouse ........................................................................................................ 87
9 Возможные варианты индивидуальных заданий на учебную практику................ 89
10 Эскизы индивидуальных заданий по теме «модуль Graph» ................................. 94
11 Вопросы для подготовки к зачету по практике .................................................... 112
11.1 Вопросы по теме «Работа с памятью» ............................................................... 112
11.2 Вопросы по теме «Управление экраном и звуком компьютера» ...................... 113
11.3 Вопросы по теме «модуль Graph» ...................................................................... 114
Список использованных источников .......................................................................... 116
Приложение А - Пример оформления графика прохождения практики .................. 117
Приложение Б - Пример оформления титульного листа ........................................... 119
4
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
Приложение В - Пример оформления бланка задания .............................................. 120
Приложение Г - Пример оформления содержания .................................................... 121
Приложение Д - Пример оформления списка использованных источников............ 122
Приложение Ж - Пример оформления рисунков и таблиц........................................ 123
Приложение И - Справочная информация ................................................................. 124
Приложение К - Аттестационные листы к заданиям учебной практики .................. 128
5
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
Общие положения
Практика является одной из основных форм учебного процесса, направленная на формирование и воспитание высококвалифицированного специалиста.
Определяющим учебно-методическим документом практики, регламентирующим учебную деятельность студента и деятельность преподавателя на практиках, являются методические указания по учебной практике.
Организация практики осуществляется
цикловой комиссией специальных
дисциплин. Общая координация работ по организации учебной практики осуществляется учебным отделом колледжа.
Непосредственное участие в подготовке и проведении практики принимает заведующий отделением информационных технологий через своего ответственного, назначаемого
из числа преподавателей цикловой комиссией специ-
альных дисциплин.
Руководители практики от цикловой комиссии специальных дисциплин:
 обеспечивают проведение всех организационных мероприятий перед началом практики (инструктаж о порядке прохождения практики, по технике безопасности и т.д.);
 обеспечивают высокое качество прохождения практики студентами и
строгое соответствие ее учебным планам и программам;
 рассматривают отчеты студентов по практике, дают отзывы по их работе
и представляют и предложениями по совершенствованию практической подготовки
студентов; председателю цикловой комиссии письменный отчет о
практики вместе с замечаниями;

обучают студентов-практикантов безопасным методам работ.
6
проведении
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
1 Обязанности студента
Студент при прохождении практики обязан:
 полностью выполнять задания, предусмотренные программой практики;
 подчиняться действующим в колледже правилам внутреннего трудового
распорядка;
 изучить и строго соблюдать правила охраны труда, техники безопасности
и производственной санитарии;
 вести дневник, в который записывать необходимые сведения, содержание
лекций и бесед, делать эскиз, зарисовки и т. д.;
 представить руководителю практики письменный отчет о выполнении
всех заданий и сдать зачет по практике.
2 Теоретические занятия и производственные экскурсии
В дни теоретических занятий студенты слушают лекции и беседы, участвуют
в экскурсиях, получают консультации, собирают материал по программе практики,
выполняют индивидуальные задания всех разделов практики, работают с технической документацией
3 Отчет о практике
По окончании практики студент составляет письменный отчет и сдает его
руководителю практики от цикловой комиссии.
Содержание отчета определяется видом проходимой студентом практики, в
данном случае он должен включать итоги и выполнения индивидуального задания и
специальных вопросов.
Перечень этих вопросов указывается и пункте «Требова-
ния к построению отчета по практике». Кроме того, в отчете должен быть краткий
7
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
анализ работы, выводы и предложения по совершенствованию этой работы. В отчете должна быть использована
необходимая производственная документация.
Общий объем отчета 20-25 страниц. Для оформления отчета студенту выделяется
в конце практики 2-3 дня.
По окончании практики студент сдает зачет (защищает отчет) с дифференцированной оценкой.
4 Цель и задачи практики, ее место в учебном процессе
Целью практики является приобретение студентами опыта алгоритмизации,
конструирования и практической реализации программ на ПК с использованием современных технологий программирования.
В процессе
учебной практики «Разработки программных модулей про-
граммного обеспечения для компьютерных систем » студенты должны:
1) разработать обобщенную
схему алгоритма по словесному описанию
задачи;
2) провести детализацию отдельных блоков обобщенной схемы, выделить
необходимые процедуры и функции, определить наборы логически связанных
между собой данных (потоки данных), ввести различные дополнительные средства для обеспечения наглядности и повышения уровня сервиса проектируемой программы;
3) разработать и отладить программу, реализующую спроектированный алгоритм, выполнить на ПК сконструированную программу;
4) провести тестирование программы и оформить программные документы
в соответствии с требования ЕСПД.
Для успешного выполнения учебной практики студент должен обладать
подробными сведениями о работе в операционной системе, уметь пользоваться библиотеками Турбо Паскаля, владеть знаниями особенностей алгоритмического языка.
Практика базируется на курсах «Информатика», «Информационные техно8
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
логии», «Теория алгоритмов», «Основы программирования», «Операционные системы»,
«Системное программирование», «Прикладное программирование» и про-
водится на 2-ом курсе в 4 семестре - по завершению указанных предметов и междисциплинарных курсов.
5 Содержание учебной практики
В ходе практики студент должен закрепить материал по предмету «Системное программирование», «Прикладное программирование » по темам: модули CRT,
GRAPH, работа с периферийными устройствами ПК, распределение памяти и выполнить индивидуальные задания по данным темам, а именно:
1) разработать программу по теме «Внешние и внутренние файлы» с использованием модулей, процедур и функций, а также оформить программу в текстовом режиме стандартного модуля CRT используя возможности интегрированной среды программирования Turbo Pascal а именно:
а) множество накладывающихся окон;
б) поддержка мыши, меню, диалоговых окон;
в) расширенные возможности отладки;
г) полное восстановление и сохранение среды разработки;
д) множество стандартных модулей.
Для выполнения первого задания по практике студентами необходимо:
реализовать модуль для работы с базой данных определенной структуры (задать
самостоятельно), хранящейся в файле. Предусмотреть следующие действия:
 добавление записи в конец файла;
 удаление записи (записей) из базы по определенному критерию
(заданному значению одного из полей);
 сортировку записей в базе по одному из полей и запись результата
сортировки в новый файл;
9
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
 выборку записей из базы по определенному критерию (заданному
значению одного из полей) и запись их в другой файл;
 добавление
записи
в
отсортированную
базу
с
сохранением
упорядоченности по выбранному критерию.
Используя разработанный модуль, решить следующие задачи:

имеется две базы данных заданной структуры, упорядоченные по одному
и тому же признаку. Добавить все компоненты второй базы в первую, сохранить ее
упорядоченность;
 выбрать и поместить в текстовый файл записи, отвечающие двум-трем
критериям одновременно.
2) изучить процедуры и функции модуля GRAPH;
3) разработать эскиз графического объекта и программу к этому эскизу, используя все возможности модуля GRAPH. Создать сложное графическое изображение, используя процедуры и функции модуля Graph;
4) осуществить динамическое изменение положения графического объекта
посредством:
а) перемещения мыши, используя процедуры и функции модуля Mouse;
б) управления объектом с клавиатуры, используя процедуры получения
отклика клавиатуры;
в) использования спрайтов.
5) разработать техническую документацию на программу;
6) оформить документацию в текстовом редакторе Microsoft Word:
а) отчет по практике оформляется в виде пояснительной записки;
б) завершается практика защитой отчета.
10
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
5.1 Ход выполнения заданий по учебной практике
На учебной практике по профессиональному модулю « Разработка
программных модулей программного обеспечения для компьютерных систем»
необходимо реализовать следующую последовательность работ:
1)
продумать реализацию проекта. Программный продукт может быть
реализован с использованием типизированных файлов, массива типа записи и
занесение его в текстовый файл, работа с файлами может осуществляться через
массивы указателей и распределение динамической памяти;
2)
для конкретного варианта реализовать в виде модуля или модулей набор
подпрограмм для выполнения заданных в варианте операций;
3)
предусмотреть в модулях подпрограммы проверки корректности
вводимых данных;
4)
определить структуру модулей;
5)
набрать и оттранслировать программу;
6)
продумать и реализовать интерфейс к программному модулю (модулям),
позволяющий с помощью клавиатуры или мыши выполнить выбор операции над
данными файла;
7)
продумать индивидуальное задание по графике или воспользоваться
вариантами, предложенными в данных указаниях;
8)
создать эскиз индивидуального задания на миллиметровой бумаге,
утвердить у руководителя практики;
9)
реализовать в виде отдельной программы или модуля задание на
графику, предусмотреть осуществление динамического движения графического
объекта;
10) объединить задание на работу с файлами и графикой в единый проект с
помощью общего интерфейса;
11) оформить отчет по учебной практике;
12) подготовить доклад к защите практики.
11
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
6 Организационно-методические данные практики
Организационно методические мероприятия практики указаны в таблице 1
они предусматривают лабораторно – практические занятия, самоподготовку, общая
трудоемкость практики 144 часа.
Таблица 1 – Структура учебной практики
Вид работы
Общая трудоёмкость
Аудиторная работа
Вид итогового контроля
Трудоемкость, ч
4 семестр
144
144
зачет
Всего
144
144
6.1 Этапы выполнения учебной практики
В таблице 2 календарно-тематический
план, который содержит этапы
практики, наменование разделов и тем лекционных и лабораторно- практических
занятий.
12
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
Таблица 2 - Календарно-тематический план
№
заня
тия
1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
Наименование разделов, тем и занятий
учебной практики
2
Коды формируемых компетенций
ОК
ПК
3
4
Вводное занятие. Инструктаж по технике безопасности.
1; 2
1.3;1.4
Постановка задачи. Стандартизация документации.
1-3
1.6
Содержание и структура отчета по практике.
1;9
1.6
Ознакомление с устройством ВТ. Технические характери2;8-10
1.6
стики и параметры
Выдача задания на практику. Выбор метода решения зада1-10
1.6
чи
Подготовка библиографии.
4;5;9
1.6
Этапы создания программного продукта
2;4;5 1.1; 1.6
Составление технического задания на программирование.
1; 2
1.1; 1.6
Выбор метода решения задачи, разработка обобщенного
алгоритма
Составление спецификаций и требований к техническим
1-10 1.1; 1.6
средствам системы обработки информации
Разработка технического проекта индивидуального ком1-10 1.1; 1.6
плекса
Разработка детального алгоритма обработки данных
1-10
1.1
Разработка состава модулей процедур и функций
1-10 1.1; 1.2
Составление алгоритма и программы индивидуального за1-10 1.1; 1.2
дания №1 с использованием внешних и внутренних файлов
Инициализация файла. Процедуры работы с файлами.
1-10 1.1; 1.2
Организация проверки на корректность данных.
1-10 1.1; 1.2
Запись данных в файл. Процедуры перезаписи и добавле1-10 1.1; 1.2
ния данных.
Организация структуры файла
1-10 1.1; 1.2
Процедуры записи и добавления данных в файл
1-10 1.1-1.3
Чтение данных из файла. Проверка ошибок ввода/вывода
1-10 1.1-1.3
Вывод данных из файла
1-10 1.1-1.3
Процедуры обработки файлов
1-10
1.3;1.5
Разработка интерфейса к индивидуальному заданию №1 с
1-10 1.1-1.3
использованием стандартного модуля CRT
Работа с окнами. Оформление программы
1-10 1.1-1.3
Текстовый вывод в окна
1-10 1.1-1.3
Установка цветом символа.
1-10
1.1Процедуры, действующие в окнах (Window)
1.3;1.5
13
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
Продолжение таблицы 2
1
2
3
4
26
1-10
1-10
1.4;1.5
1.4;1.5
1-10
1-10
1.4;1.5
1.4;1.5
1-10
1-10
1-10
1.4;1.5
1.1;1.6
1.1;1.6
1-10
1.1;1.6
3;8
1-10
1.1
1-10
1-10
1.1
1.1
44
45
Тестирование программы индивидуального задания №1
Модульное тестирование. Поиск ошибок с помощью отладчика
Интеграционное тестирование
Системное тестирование с целью проверки соответствия
системы исходным требованиям
Выходное тестирование. Тестирование выходных модулей
Оформление выполненной работы
Проектирование пунктов отчета к индивидуальному заданию №1
Описание технических требований к проекту задания № 1
Контрольный просмотр выполненной работы
Защита проекта индивидуального задания № 1
Выдача индивидуального задания № 2. Обсуждение проекта
Разработка эскиза индивидуального задания № 2
Разработка обобщенного алгоритма индивидуального задания
Разработка алгоритма задания №2, используя стандартные
процедуры и функции модуля Graph
Разработка детального алгоритма индивидуального задания №2
Описание алгоритма индивидуального задания №2
Разработка модулей программы индивидуального задания
№2
Работа с процедурами и функциями модуля Graph.
Создание объектов
Работа с цветом и контуром фигур
Заливка и прорисовка отдельных деталей изображения
46
Разработка программы индивидуального задания №2
47
Переключение между текстовым и графическим режимом.
48
Отладка и редактирование программы
49
50
Контрольный просмотр выполненной работы
Проектирование движения изображения
Определение размера изображения. Сохранение в переменной части изображения
Процедуры динамического распределения памяти
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
51
52
14
1.1;1.2
1-10
1.1;
1-10
1-10
1.1; 1.6
1.1-1.3
1-10
1.1-1.3
1-10
1-10
1-10
1.1-1.3
1.1-1.3
1.11.3;1.5
1.11.3;1.5
1.11.3;1.5
1-10
1-10
3
1-10
1-10
1.1
1.1;1.2
1-10
1.1;1.2
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
Продолжение таблицы 2
1
2
3
4
1-10
1-10
1.1;1.2
1.1;1.2;
1.5
1.1;1.2;
1.5
53
Функции динамического распределения памяти
54
Сохранение и выдача изображений на экране
1-10
55
Использование процедур GetImage/PutImage. Вывод изображений.
56
Управление изображением с клавиатуры. Использование
кодов таблицы символов
1-10
1.1;1.2
57
Отладка программного модуля
1-10
58
59
60
61
62
63
Управление изображением с помощью мыши
Использование процедур и функций модуля mouse
Проектирование содержания отчета к заданию №2
Описание технических требований к проекту задания №2
Контрольный просмотр выполненной работы
Интеграция программных модулей в единый проект
Модульное и интеграционное тестирование проекта задания по практике
Поиск ошибок и их отладка. Внесение коррективов в проект
1.11.3;1.5
1.1;1.2
1.1;1.2
1.1;1.6
1.6
64
65
66
Отладка проекта. Подготовка к выходному тестированию
67
Выходное тестирование итогового проекта по практике
Оформление отчета по практике. Описание характеристик
проекта
Оформление приложений к отчету по практике
Стандартизация документации по практике
Подготовка доклада к защите практики
Защита учебной практики
68
69
70
71
72
15
1-10
1-10
1-10
1-10
3
1-10
1-10
1-10
1-10
1-10
1-10
1-10
1-10
1-10
3
1.2
1.4
1.3;1.4;
1.5
1.3;1.4;
1.5
1.4;1.5
1.6
1.6
1.6
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
7 Требования к построению отчета по практики
7.1 Структурные элементы отчета по практике
Отчет по учебной практике должен содержать:
 титульный лист;
 задание;
 содержание;
 введение,
 основную часть (пояснительную записку);
 список использованных источников;
 заключение;
 приложения.
7.2 Титульный лист
Титульный лист является первым листом отчета. Переносы слов в надписях
титульного листа не допускаются. На титульном листе указывают классификационный код. Титульный лист оформляют в соответствии с приложением Б.
7.3 Задание
Задания на учебную практику
могут быть
индивидуальными или
комплексными, но примерно одинаковы по объему и степени сложности
поставленных перед студентами задач. Тематика заданий практики рассматривается
и принимается цикловой комиссией, а утверждается заместителем директора по
учебной работе. Бланк задания оформляют в соответствии с приложением В.
16
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
7.4 Содержание
Содержание включает введение, порядковые номера и наименование разделов и подразделов с указанием номеров листов, список использованных источников и приложение.
Слово «Содержание», записывают посередине страницы с прописной буквы.
Пример оформления содержания приведён в приложении Г.
7.5 Введение. Заключение
Введение - вступительный раздел основного текста отчета по практики.
Цель введения - познакомить с существом вопроса. В этом разделе указывают цель
и задачи практики, наименование, краткую характеристику области применения
программы или программного изделия и объекта, в котором используют программу
или программное изделие. Введение не включается в общую нумерацию разделов и
размещается на отдельном листе. Введение - обязательный структурный элемент. В
заключении содержатся выводы о достигнутых целях и выполненных задачах, описываются рекомендации относительно возможностей практического применения материалов проекта.
Слова «Введение» и «Заключение» записывают посередине страницы с прописной буквы.
7.6 Список использованных источников
Список должен содержать сведения об источниках, использованных при составлении программного продукта и отчета по учебной практике.
Наименование структурного элемента «Список использованных источников»
записывают посередине страницы с прописной буквы.
Ссылки на источники следует указывать порядковым номером по списку ис17
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
точников, выделенным двумя косыми чертами.
Использованные источники нумеруют арабскими цифрами и располагают в
порядке появления ссылок на источники в тексте.
Пример оформления списка использованных источников в приложении Д.
7.7 Приложения
Материал, дополняющий текст отчета по практике, допускается помещать в
приложениях. Приложениями могут быть, например, таблицы большого формата,
графический материал, структурные схемы и т.д.
Приложения оформляют как продолжение данной работы на последующих
его листах.
Каждое приложение следует начинать с нового листа с указанием наверху
посередине страницы слова «Приложение» и его обозначение.
Приложения обозначают заглавными буквами русского алфавита, начиная с
А, за исключением Е, 3, Й, О, Ч, Ь, Ы, Ъ.
В тексте отчета по практике должны быть ссылки на все приложения.
7.8 Оформление текстовой части
Текст отчета должен быть напечатан через одинарный междустрочный интервал на одной стороне стандартного листа белой бумаги (A4). Текст и другие отпечатанные и вписанные элементы работы должны быть черными, контуры букв и
знаков – четкими, без ореола и затенения.
Шрифт Times New Roman, кегель 14. Курсив и подчеркивание в работе не
допускаются. Названия глав и параграфов выделяются полужирным шрифтом. Выравнивание всего текста отчета по ширине.
Лист с текстом должен иметь поля: слева – 25 мм, справа – 10 мм, сверху – 20
мм, снизу – 20 мм. Абзацный отступ 10 мм.
18
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
Нумерация страниц текста делается в правом нижнем углу листа. Проставлять номер страницы необходимо со страницы, где «Введение». После этого нумеруются все страницы, включая приложения.
Основной текст отчета заключается в угловые рамки. Приложения оформляются без рамок.
Между заголовком и текстом ставится пробел равный двум интервалам (или
24 кегля). Заголовок отделяются от предыдущего текста пробелом (равным двум
интервалам или 24 кегля).
Каждый пункт отчета, а также список использованных источников, приложения начинаются с новой страницы. Заголовки теоретической части имеют порядковые номера в пределах всей работы, обозначаемые арабскими цифрами (например:
1,2,3), после которых не ставится точка. Подзаголовки имеют порядковые номера в
пределах своей части, обозначаемые арабскими цифрами (например: 1.1. и 1.2.).
Заголовки в тексте работы должны располагаться по правому краю (выравнивание по ширине), точку в конце названия не ставят. Не допускается переносить
часть слова в заголовке.
7.8.1 Оформление таблиц и рисунков
Важнейшие требования к таблице состоят в том, чтобы она содержала весь
необходимый материал и была легко читаема. Небольшие таблицы желательно помещать в тексте по ходу изложения материала, а большие таблицы, занимающие целую страницу и более, желательно выносить в приложения.
Все таблицы должны иметь порядковый номер и название, отражающее содержание. Слово «таблица» и ее порядковый номер (без знака №) пишутся в левом
верхнем углу; через тире должно быть название таблицы. Рисунок подписывается
снизу по центру «Рисунок 1 – Модель RGB». Пример оформления рисунков и таблиц представлен в приложении Ж.
Нумерация таблиц и рисунков может быть сквозной или соотноситься с номером параграфа, в котором описана таблица или рисунок. Например, если таблица
19
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
или рисунок включены в текст первого параграфа второго пункта текстового материала, нумерация следующая: Таблица 2.1.1., Рисунок 2.1.1. Последняя цифра означает порядковый номер таблицы (или рисунка) в данном параграфе. Таблица помещается в качестве следующей страницы после первого упоминания о ней в тексте.
В таблицах нужно использовать одинарный интервал, а размер шрифта можно сократить до 12 – 10.
Каждому документу, таблице, схеме, представленным в приложении, присваивается соответствующий номер, обозначаемый буквами русского алфавита (например: Приложение А, Приложение Б и т.д.).
Таким образом, таблицы в приложениях (если таковые имеются) не нумеруются, и ссылки на них делаются так: «по данным таблицы, представленной в Приложении Г …» и т.д.
7.8.2 Оформление списков (перечислений)
Все перечисления по тексту отчета оформляются в виде списков (вкладка
«Главная» - панель «Абзац» - Списки, см. рис.1).
Рисунок 1 – Панель «Абзац»
Список оформляется арабскими цифрами или знаком «–».
Пример формирования списка:
1. Поддержка InterBase версий 4.х, 5.х, 6.х, 7.х; Firebird 1.х; Yaffil 1.х;
2. Работа одновременно с несколькими базами данных;
20
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
3. Отдельные редакторы для всех объектов БД с синтаксической подсветкой;
4. Мощный SQL редактор с историей запросов и возможностью фонового
выполнения запросов.
Или иная нумерация:
1) отладчик хранимых процедур и триггеров;
2) поиск в метаданных;
3) полное и частичное извлечение данных и метаданных;
4) анализатор зависимостей объектов баз данных.
Маркированные списки:
 отчеты по метаданным;
 менеджеры пользователей и пользовательских привилегий;

экспорт данных в различные форматы.
Вложенные списки:
1) условие решения задачи с использованием средств вычислительной техники: программный продукт разработан в среде Delphi 7 на персональном компьютере, имеющем следующие технические данные:
 имя ОС - Microsoft Windows XP;
 версия - 6.0 Сборка 7100;
 тип - Компьютер на базе Х86;
 процессор - Intel Pentium 42.66 GHz;
 полный объем физической памяти - 120 Гб;
 ОЗУ - 1,00 Гб;
8 Методические указания
Система программирования Turbo Pascal называется интегрированной средой
программирования, так как она объединяет в себе возможности ранее разрозненных
средств, используемых при разработке программ: редактора текста, компилятора,
21
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
компоновщика, отладчика, и при этом обеспечивает программисту великолепные
сервисные возможности.
Интегрированная среда программирования Turbo Pascal имеет следующие
возможности:
1)
множество накладывающихся окон;
2)
поддержка мыши, меню, диалоговых окон;
3)
много файловый редактор, который может редактировать файлы до
4)
расширенные возможности отладки;
5)
полное восстановление и сохранение среды разработки;
6)
множество стандартных модулей.
1Мб;
8.1. Этапы создания программного продукта
При традиционном не автоматизированном программировании независимо
от принятого метода проектирования и используемого инструментария выполняют
следующие работы:
1. Составление технического задания на программирования – это этап анализа и спецификации программ.
При составлении технического задания требуется:
 определить платформу разрабатываемой программы – тип операционной
системы;
 на этом же этапе выбираем метод решения задачи, разрабатываем обобщенный алгоритм, функциональную структуру, составление объектов, требования к
техническим средствам системы обработки информации и интерфейс конечного
пользователя.
2. Технический проект выполняет комплекс наиболее важных работ, а
именно:
22
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
 с учетом принятого подхода разрабатывают детальный алгоритм обработки данных, уточняется состав объектов и их свойства методов обработки, событий запуска методов обработки;
 определяется состав общесистемного программного обеспечения, включая базовые средства;
 разрабатывается внутренняя структура программного продукта образованная отдельными программными модулями;
 осуществляется выбор инструментальных средств разрабатываемого программного модуля.
3. Рабочая документация состоит:
 описания применения – общая характеристика программного изделия с
указанием сферой его применения, преобразование к базовым программным обеспечением и комплекс технических средств;
 руководство пользователя – это детальное описание функциональных
возможностей и технической работы с программным продуктом. Этот документ
ориентирован на конечного пользователя, содержит необходимую информацию для
самостоятельного освоения и нормальной работы (с учетом квалификации пользователя);
 руководство программистом (оператором) – указывает особенности установки (инсталляция) программного продукта, его внутренняя структура, состав и
назначение модулей, правило эксплуатации, обеспечение надежной и качественной
работы.
4. Ввод действия (защита) программного продукта с начало проходит опытную эксплуатацию (пробный рынок продаж), а затем сдается в промышленную эксплуатацию (тиражирование и распространение ПП).
23
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
8.2 Структура программного продукта
Программные продукты имеют конструкцию (архитектуру) построения - состав и взаимосвязь программных модулей
Модуль — это самостоятельная часть программы, имеющая определенное
назначение и обеспечивающая заданные функции обработки автономном от других
программных модулей.
Таким образом, программный продукт обладает внутренней структурой, образованной взаимосвязанными программными модулями.
Структуризация программ выполняется для удобства разработки программирования, отладки и внесения изменений в программный, продукт.
Структурное «разбиение» программ служит основой для выбора инструментальных средств их создания, При создании программных продуктов выделяются
многократно используемые модули, проводится их типизация и унификация.
Головной модуль
Модуль 1
Модуль 2
Библиотеки процедур, объектов и методов обработки
Модуль N
Модуль 1
Объект А
Метод 1
Модуль 2
Объект В
Метод 2
Модуль n
Объект D
Метод m
Рисунок 2 - Структурная схема программного продукта
Некоторые программные продукты используют модули из готовых библиотек стандартных подпрограмм, процедур, функций, объектов, методов обработки
данных
На рисунке 2 приведена типовая структура программного продукта, состоя24
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
щего из отдельных программных модулей и библиотек процедур, встроенных функций, объектов.
Среди множества модулей различают:
 головной модуль - управляет запуском программного продукта (существует в единственном числе);
 управляющий модуль — обеспечивает вызов других модулей на обработку;
 рабочие модули — выполняют функции обработки;
 сервисные модули и библиотеки, утилиты — осуществляют обслуживающие функции.
В работе программного продукта активизируются необходимые программные
модули. Управляющие модули задают последовательность вызова на выполнение
очередного модуля. Информационная связь модулей обеспечивается за счет использования общей базы данных либо межмодульной передачи данных через переменные обмена.
Каждый модуль может оформляться как самостоятельно хранимый файл; для
функционирования программного продукта необходимо наличие программных модулей в полном составе.
8.3 Модульное программирование
Модульное программирование – это логически взаимосвязанная совокупность функциональных элементов, оформленных в виде отдельных программных
моду-лей.
Модуль характеризуют:
 один вход и один выход, на входе модуль получает набор исходных данных выполняет обработку и возвращает один набор результатных данных т.е. реализует стандартную функцию Input-Process-Output.
25
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
 функциональная завершенность – модуль выполняет перечень операций
для реализации каждой отдельной функции с полном составе.
 логическая независимость – результат работы программного модуля зависит от исходных данных и не зависит от работы других модулей.
 слабые информационные связи с другими программными модулями – обмен информацией между модулями должен быть минимальным.
 обозримый по размеру сложности программный элемент.
Каждый модуль состоит из спецификации и тела. Спецификации определяют
правила использования модуля, а тело – способ реализации процесса обработки.
8.4. Модульная структура программного продукта
Принципы модульного программирования во многом схожи с нисходящим
проектированием, сначала определяется состав и подчиненность функции, а затем
набор программных модулей реализующих эти функции. Функции верхнего уровня
обеспечиваются главным модулем, он управляет выполнением нижестоящих функций, которым соответствуют подчиненные модули. При определении набора модулей необходимо учитывать:
 каждый модуль вызывается на выполнение вышестоящим и закончив работу , возвращает управление вызвавшему его модулю;
 принятие основных решений в алгоритме выносится на максимально высокий уровень по иерархии уровней.
 для использования одной и той же функции в разных шестах создается
один модуль, который вызывается на выполнение по мере необходимости.
В результате дальнейшей детализации алгоритма создается функциональная
модульная схема (ФМС), которая является основой для программирования.
26
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
Рисунок 3 - Функционально-модульная структура приложения
Некоторые функции могут выполняться с помощью одного и того же программного модуля (например, функции Ф1 и Ф2).
 функция Ф3 последовательности выполнения программных модулей;
 Фm реализуется функция с помощью иерархии связанных модулей.;
 модуль n управляет выбором на выполнение подчиненных модулей.
 функция Фх реализуется одним программным модулем.
8.5 Процедуры и функции
Процедурой в Турбо Паскале называется оформленный фрагмент программы, имеющий собственное имя.
Procedure<имя>(список формальных параметров: тип)
<Раздел описаний>
begin
<Раздел операторов>
End;
На рисунке 4 представлена Схема взаимодействия основной программы и
процедуры
27
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
основная программа
вызов процедуры
работа процедуры
реализуется в виде продолжение основной
программы
Рисунок 4 - Схема взаимодействия основной программы и процедуры
Все данные, описанные в разделе описания процедуры, называются локальными переменными по отношению к основной программе. Данные, описанные вне
процедуры, называются глобальными. Допускается использование процедуры без
параметров, описанные в основной программе.
Procedure ALRHA(x:Integer, y:Real, z:Char)
Любой из формальных параметров может быть либо параметром значения,
либо параметром переменной, либо параметром константы const.
Пример: Procedure M(x,y:Real, b:Integer)
Procedure N(Var x,y:Real)
Procedure P(Const a:String)
Вызов процедуры осуществляется по имени с указанием фактических параметров. Между фактическими и формальными параметрами должно быть соответствие по количеству, по типу, по порядку следования.
Описание функций происходит до исполняемой части и является маленькой
программой внутри большой.
Function<имя>(<список формальных параметров>: тип):<тип результата>
<раздел описания>
Begin <тело>
End.
28
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
Формальные параметры бывают двух видов: параметры значений и параметры переменных. В теле функции должен присутствовать оператор присваивания, в
левой части которого стоит имя функции, а в правой выражение для возвращаемого
значения.
Вызов функции осуществляется следующим образом: Переменной присваивается имя функции с указанием фактических параметров.
8.6 Файловый тип данных
Для долговременного хранения информация из оперативной памяти переносится в файлы.
Файл – это именованная область внешней памяти, содержащая какую-либо
информацию (физический файл).
Файл – это структура данных, используемая в программировании.
Логический файл т.е. существует только в логическом представлении при
написании программ.
В программах файлы представляются файловыми переменами определенного
типа. В качестве внешнего носителя информации могут служить разного рода диски
(жестки, гибкие, магнитооптические, компакт-диски, zip- и jaz-диски и т.д.), а также
магнитные ленты. Также, в качестве этого «условного» внешнего носителя могут
рассматриваться виртуальные диски, которые можно создавать (с помощью команды VDISK) в оперативной памяти компьютеров, работающих под управлением операционной системы MSDOS.
Кроме «долговременности» у файлов имеется ещё одна отличительная особенность: их неограниченный объём (или длина). Если для каждого из прочих
структурированных типов всегда точно определенно, сколько элементов содержит,
то или иное значение, то, сколько элементов должно быть в файле, при объявлении
файлового типа не указывается. Максимальная длина файла ограничивается только
свободным местом на диске, и это является основным отличием файлов от массивов.
29
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
Целесообразность применения файлов:
Ввод больших объёмов данных, подлежащих обработке. Очень удобно создать отдельный файл данных, который подготавливается заранее и применяется неоднократно.
Файл данных может быть подготовлен другой программой, затем связывать
между собой разные задачи, а также связывать программу с внешними средствами.
Программа, использующая данные из файлов, не требует присутствия пользователя на момент фактического исполнения.
Каждый файл на диске имеет обозначение, которое состоит из двух частей:
имени и расширения. В имени файла может быть от 1 до 8 символов. Расширение
начинается с точки, за которой следует от 1 до 3 символов.
Имя файла – это любое выражение строкового типа, которое строится по
правилам определения имени в MSDOS.
Любой файл имеет три характерных особенности:
У него есть имя, что даёт возможность программе работать сразу с несколькими файлами.
Файл содержит компоненты одного типа. Таким компонентом может быть
любой тип Т.Р., кроме файлового. Например, допускается файл записи или файл
строк, но нельзя создать «файл файлов».
Длина вновь создаваемого файла никак не оговаривается при его объявлении
и ограничивается только емкостью устройств внешней памяти.
Всё это позволяет считать файлы одной из фундаментальных структур данных в Т.Р.
Существует три способа определения файлового типа (или файловой переменной (Ф.П.))
Var < Имя Ф.П. > :text; - текстовый файл.
Var < Имя Ф.П. > :file of <Тип компонентов>; - типизированный файл.
Var < Имя Ф.П. > :file; - не типизированный файл.
File и of - зарезервированные слова, имеющие смысл файл и из.
Text – это не зарезервированное слово, а идентификатор стандартного типа
30
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
данных, как Real или Integer.
В файле в каждый момент может быть доступен только один элемент. Доступ
к элементам файла обычно осуществляется последовательно, путём их поочерёдного перебора. Иными словами, для того чтобы “добраться” до последнего элемента,
прежде придётся обработать (считать или записать) все предыдущие. Для типизированных и не типизированных файлов возможен переход к определённому элементу.
Файл можно представить как потенциально бесконечный список значений
одного и того же (базового) типа. Все элементы файла считаются пронумерованными, начальный элемент имеет нулевой номер.
В любой момент времени программе доступен только один элемент файла, на
который ссылается текущий указатель.
Как правило, все действия с файлом (чтение из файла, запись в файл) производятся поэлементно, причём в этих действиях участвует тот элемент файла, который обозначает текущим показателем. В результате совершения операции текущий
указатель может перемещаться, настраиваясь на тот или иной элемент файла.
По способу доступа различают:
Файл последовательного доступа – доступ к элементам обеспечивается в такой же последовательности, в какой они записывались.
Файл прямого доступа – доступ к элементу осуществляется по адресу элемента.
Для работы с физическим файлом необходимо связать его с файловой переменной, с помощью которой будет осуществляться доступ к этому физическому
файлу. Такое связывание осуществляется с помощью процедуры Assign (var f;
filename:string);
f – имя файловой переменной любого типа.
filename – полное имя файла.
Процедура Assign всегда предшествует другим процедурам работы с файлами т.к. ставит в соответствие конкретному файлу файловую переменную, к которой
в последствии будут обращаться все другие файловые процедуры. Недопустимо использовать Assign для уже открытого файла. Прежде чем использовать эту процеду31
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
ру файл необходимо закрыть.
Для работы с файлом, прежде всего, необходимо его открыть. Открыть файл
в Т.Р. можно для чтения, для записи или одновременно. До открытия файл должен
быть связан с файловой переменной. При открытии файла ищется уже существующий файл на диске либо создаётся новый (если файл открывается для записи).
8.6.1 Процедуры и функции для работы с файлами
Для открытия файлов предназначены процедуры Reset, Rewrite и Append
Первые две предназначены для открытия файла любого вида. Третья для открытия
текстового файла.
Процедура Reset (var F:file ; RecSize:word);
Если эта процедура применяется к текстовому файлу, то он будет открыт для
чтения при последовательном доступе к элементам файла. Если применяется к типизированным или нетипизированным. Файлам, то такой файл будет открыт как для
чтения, так и для записи. При открытии указатель текущей позиции файла устанавливается в его начало. Эта процедура применяется для уже существующих файлов.
Если она применяется для файлов отсутствующих на диске, будет ошибка при выполнении программы. F – файловая переменная. RecSize – необязательный параметр
(только для нетипизированных файлов) устанавливает длину записи для функций
обмена с файлом.
Процедура Rewrite (var F:file; RecSize:word);
Если эта процедура применяется к текстовому файлу, то она открывает его
только для записи. Если применяем для типизированных или нетипизированных
файлов, то они открываются, как для чтения, так и для записи.
Использование этой процедуры требует особого внимания. При попытке создать и открыть новый файл с именем уже существующим на диске набора данных
эта процедура удалит этот набор и создаст новый пустой файл с тем же именем.
Процедура Close (var f:file); - закрывает файл.
Процедура Rename (var F; NewName: string); - переименовывает неоткрытый
32
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
внешний файла любого типа. F – файловая переменная. NewName – новое имя файла. Файлу, ассоциированному с переменной F, присваивается новое имя, которое
указывается при вызове процедуры как, например NewName. С этого момента с
файловой переменной ассоциируется файл с новым именем.
Процедура Erase (var F); - удаляет неоткрытый внешний файл любого типа
Для того чтобы файловые операции выполнялись чётко и без ошибок используют специальную функцию.
IOResult : integer; (без параметров)
Используется эта функция в программах в том случае, если на время выполнения файловых операций отключена стандартная проверка операций ввода – вывода. Для этих целей используется либо специальная опция в интегрированной системе, либо директива компилятора {$I}, которая может задаваться внутри текста программы.
Функция Eof (var f) :Boolean; - для типизированных и нетипизированных
файлов.
Eof (var f: Text) : Boolean; - для текстовых файлов.
Данная функция возвращает значение TRUE, если указатель текущей позиции находится за последним элементом файла, либо если файл пуст. В противном
случае функция возвращает значение False.
Процедура Seek (var f; n: longInt);
Эта процедура позиционирует указатель на определённый элемент в файле.
Файл должен быть открыт. F – файловая переменная любого типа, за исключением
Text. N – номер элемента в файле.
Процедура Truncate (var f);
Применяется к открытому файлу и удаляет его содержимое от текущий позиции и до конца. F – файловая переменная любого типа кроме Text.
Функция FileSize (var f): Londint;
Возвращает значение текущей длине файла (т.е. числу содержащихся в нём
элементов). Файл должен быть открыт. Если файл пуст (в нём нет ни одного элемента), функция вернёт значение равное нулю. f – файловая переменная за исключени33
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
ем Text.
Функция FilePos (var f): longint;
Возвращает значение, соответствующее положению указателя текущей позиции в файле. Файл должен быть открыт.
Процедура ChDir (St:Strung);
Изменяет текущий каталог на каталог, который указывается в данной процедуре. St – выражение типа String, содержащее путь к новому каталогу.
Процедура MkDir (St:String);
Создаёт новый подкаталог. Имя должно быть индивидуальное, т.е. не совпадать с именем других существующих каталогов. St – содержит путь и имя нового
каталога.
Процедура RmDir (St:String);
Удаляет пустой каталог. St – содержит путь и имя удаляемого каталога. Каталог должен быть пустым, должен существовать и не быть текущим.
Процедура GetDir (d:Byte; var S:String);
Выясняет, какой каталог на указанном диске текущий. D – выражение типа
Word, определяющее диск. Если D=0 => подразумевается устройство по умолчанию,
если D=1 – диск А, D=2 – диск B, D=3 – диск C и т.д.
8.7 Тестирование программного продукта
Тестирование представляет собой деятельность по проверке программного
кода и документации. Она должна заранее планироваться и систематически проводиться специально назначенным независимым тестировщиком. Работа тестировщика начинается до утверждения спецификаций требований. Он проверяет требования
к ПП на полноту и возможность тестирования, определяет методы тестирования.
Одновременно с началом этапа планирования и создания спецификаций требований тестировщик разрабатывает стратегию тестирования. После утверждения
спецификаций требований им разрабатывается и детализируется план тестирования.
34
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
Тогда же тестировщик создает наборы тестов для проведения интеграционного и
системного тестирований. Тестирование завершается созданием отчета о тестировании, в котором представляются все результаты его проведения.
Для каждого программного изделия должен существовать набор тестов, проверяющий его корректность. Существует несколько уровней тестирования, позволяющих полностью проверить программное изделие. Каждый уровень имеет свои
цели и компоненты. Можно выделить пять уровней тестирования: модульное; интеграционное; системное; выходное; приемочное.
Тестирование первого уровня осуществляет сам разработчик на этапе разработки, за остальные уровни отвечает независимый тестировшик.
Циклом тестирования называется совокупность действий, выполняемых тестировшиком с момента передачи базовой версии ПП тестировщику для интеграционного, системного или приемочного тестирования до момента успешного завершения тестирования. На рисунке 5 представлен цикл тестирования.
Создание базовой версии ПП
Проведение тестирования
Исправление ошибок
Анализ результатов
Создание отчета
Да
Выявлены ли ошибки?
Нет
Рисунок 5 - Цикл тестирования
Модульное тестирование. Этот вид тестирования представляет собой процесс проверки отдельных программных процедур и подпрограмм, входящих в состав программ или программных систем. Этот вид тестирования является частью
этапа разработки. При модульном тестировании выполняется набор тестов, опреде35
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
ляемый разработчиком
Элементами модульного тестирование являются:
 синтаксическая проверка — проверка с использованием некоторого инструментального средства для выявления синтаксических ошибок в программном коде;
 проверка соответствия стандартам кодирования — проверка кода на соответствие стандартам кодирования компании;
 технический обзор программного кода.
После успешного завершения модульного тестирования все измененные модули и наборы тестов сохраняются в базе данных проекта.
Интеграционное тестирование. Этот вид тестирования проводится для проверки совместной работы отдельных модулей и предшествует тестированию всей
системы как единого целого. В ходе интеграционного тестирования проверяются
связи между модулями, их совместимость и функциональность.
Элементами интеграционного тестирования являются:
 проверка функциональности - проверка соответствия отдельных функций,
выполняемых совокупностями модулей, функциям, заданным в спецификациях требований;
 проверка промежуточных результатов - проверка всех промежуточных
результатов и файлов на наличие и корректность;
 проверка интеграции — проверка того, что модули передают друг другу
информацию корректно.
Ошибки, выявленные в ходе интеграционного тестирования, заносятся в базу
данных ошибок. Результаты интеграционного тестирования включаются в отчет о
ходе тестирования при завершении цикла тестирования.
Системное тестирование. Этот вид тестирования предназначен для проверки программной системы в целом, ее организации и функционирования на соответствие спецификациям требований заказчика.
Элементами системного тестирования являются:
 граничное тестирование — тестирование в граничных условиях;
36
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
 прогоночное тестирование — тестирование всех функциональных характеристик реальной работы системы;
 целевое тестирование — тестирование на целевой платформе (по возможности);
 проверка документации — проверка пользовательской документации на
корректность;
 другие тесты, определяемые тестиррвщиком.
Ошибки, выявленные при системном тестировании, заносятся в базу данных
проекта. Результаты системного тестирования включаются в отчет о ходе тестирования.
Выходное тестирование. Это завершающий этап тестирования, на котором
проверяется готовность ПП к поставке заказчику.. Элементами выходного тестирования являются:
 проверка инсталляции — проверка на ясность и корректность инструкций
по инсталляции;
 проверка документации — проверка того, что вся необходимая документация полностью подготовлена и готова к передаче заказчику.
Ошибки, выявленные при выходном тестировании, заносятся в базу данных
проекта.
Приемочное тестирование. Этот вид тестирования проводится организацией, отвечающей за инсталляцию, сопровождение программной системы и обучение
конечного пользователя.
8.8 Модуль CRT. Текстовый режим использования экрана
Стандартный модуль CRT
является важнейшей частью интегрированной
среды Turbo Pascal. Он устанавливает режим работы адаптера дисплея, организует
прямой вывод в буфер экрана, регулирует яркость свечения символов, выполняет
многие другие жизненно важные функции, необходимые для нормальной работы
37
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
компьютера. Курсор в этом режиме можно переводить в любую позицию (знакоместо) экрана.
Можно выделять цветные прямоугольники (поля, окна)
Активным всегда является одно окно:
 но содержание других окон может сохраняться на экране;
 созданное прежде окно может вновь стать активным.
По умолчанию окном является весь экран. Наглядность может дополняться
«музыкальным сопровождением».
Процедуры, входящие в эту группу, позволяют программисту управлять состоянием строк на экране и выполнять другие действия, относящиеся к работе с экраном:
 Clrscr - полностью очищает экран и помещает курсор в левый верхний
угол экрана (координаты 1;1) выполняется только в текстовом режиме работы экрана;
 Deline - полностью стирает содержимое строки, в которой расположен
курсор;
 Delay - выполняет задержку на заданное число миллисекунд;
 GotoXY(x,y) - позиционирует курсор в точку с заданными координатами
X,Y;
 Keypressed - возвращает значение True, если на клавиатуре нажата клавиша и False в противном случае;
 Sound(x) - включает внутренний динамик, (X) указывает частоту звучания
в герцах;
 Nosound - выключает внутренний динамик;
 ReadKey - считывает символ с клавиатуры;
 TextBackGround - устанавливает фоновый цвет;
 TextColor - выбирает цвет символа;
 Window(x1,y1,x2,y2)определяет на экране текстовое окно.
38
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
8.8.1 Управление звуком
Для создания звуковых эффектов в Турбо Паскале используются стандартные процедуры Sound, NoSound и Delay модуля CRT.
Sound(I: word) — активизирует звуковые средства персонального компьютера. Целочисленное значение I указывает частоту звучания звука в герцах. Звук указанной частоты будет генерироваться до тех пор, пока не будет отменен процедурой
NoSound.
NoSound -отмена звука. Отменяет звуковой режим, заданный процедурой
Sound.
На некоторых типах персональных компьютеров процедура Sound аппаратно
не поддерживается и реализация звуковых эффектов невозможна.
Для указания времени, в течение которого будет продолжаться звучание, используется процедура Delay.
С помощью процедур Sound, NoSound, Delay и операторов цикла можно создать самые разнообразные звуковые эффекты: звучание сирены, метро-нома, будильника, пение птиц, фрагменты музыкальных произведений и т.д. Для этого используется набор частот или элементы массива, соответствующие нотам различных
октав В таблице 3 представлены набор частот соответствующие нотам различных
октав.
39
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
Таблица 3 – Набор частот соответствующие нотам различных октав
До
130.81
Малая
октава
261.63
Ре
146.83
293.66
587.33
1174.07
Ми
164.81
329.63
659.26
1318.05
Фа
174.61
349.23
698.46
1396.09
Соль
196.00
392.00
784.99
1568.00
Ля
220.00
440.00
880.00
1760.00
Си
246.94
493.88
987.77
1975.00
Нота
Большая октава
Первая
октава
523.25.
Вторая
октава
1046.50
Для использования в процедуре Sound все указанные в таблице значения частот округляются.
8.8.2 Процедура WINDOW. Процедуры, действующие в окнах
1. Процедура Window активирует окно, определяя его границы.
Формат записи процедуры - Window(x1,y1,x2,y2)
Параметры процедуры х2>x1, y2>=y1
2. Цвет фона задает процедура TextBackGround(<Цвет>)
Чтобы получить на экране цветное поле, нужно обратиться к двум процедурам и вслед выполнить очистку окна.
3. Цвет символа задает процедура TextColor(<Цвет символа>);
Функция
Where X – возвращает относительную горизонтальную координату текущей
позиции курсора.
Where Y – возвращает относительную вертикальную координату текущей позиции курсора.
40
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
8.9 Модуль GRAPH
Модуль Graph реализует библиотеку более чем 50 графических программ.
Поддерживает несколько типов и стилей заполнения. Существует несколько типов
шрифтов, которые можно увеличивать, выравнивать и ориентировать горизонтально
и вертикально. Экран представляет собой прямоугольное поле из точек. Цвет каждой точки можно изменять. Экран может находиться либо в текстовом, либо в графическом режиме. Видеопамять, контроллер лучевой трубки, порты ввода/вывода и
т.д., располагаются на печатной плате – адаптере.
Существует несколько типов адаптеров:
1. С разрешающей способностью экрана, которую они в состоянии поддерживать.
2. С максимальным количеством цветов одновременно на экране.
Для запуска графической системы необходимо подключить модуль Graph
(Uses Graph;) и установить графический режим.
Графическую настройку выполняют графические драйверы, которые располагаются в файлах с расширением .BGI (Borland Graphics Interrface).
Выпускаемые в настоящее время ПК оснащаются адаптерами, разработанными фирмой IBM, или совместимыми с ними. Они имеют возможность работы в
графическом режиме. В этом режиме экран дисплея рассматривается как совокупность очень близко расположенных точек – пикселей, светимостью которых можно
управлять с помощью программы. Графические возможности конкретного адаптера определяются разрешением экрана, т.е. общим количеством пикселей, а также
количеством цветов (оттенков), которыми может светиться любой из них.
8.9.1 Перевод экрана в графический режим
Для этого используется процедура модуля Graph InitGraph; Она определяет
графическое устройство, загружает и инициализирует соответствующий графический драйвер, переводит систему в графический режим и возвращает управление
41
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
вызывающей программе.
Симметричной процедурой к InitGraph является процедура Closegraph – выгружающая драйвер из памяти и восстанавливает исходный видеорежим.
InitGraph(GD,GM,Path); {Перевести экран в графический режим}
GD – номер драйвера
GM – номер режима
Path – путь доступа к файлу, содержащему нужный драйвер.
Если Path содержит просто пустую строку (Path:=’’), то драйвер ищется в
текущем каталоге.
GD и GM – являются переменными параметрами.
Если при запуске InitGraph переменная GD равна 0, то драйвер и оптимальный графический режим для этого драйвера определяется автоматически.
Пример 1:
Program gr1;
Uses Graph, Crt;
Var Gd, Gm: Integer;
Begin
Gd:= Detect; {автоматическое определение драйвера}
Initgraph (Gd,Gm,’ Path’ );{инициализация графического режима}
………
Readln;
{ждать нажатия клавиши}
Closegraph; {процедура выгружает графический режим}
End.
MoveTo(x,y:Integer) – перемещает указатель в точку с координатами x,y
Moverel(dx,dy:Integer) – перемещает CP на dx точек по горизонтали и на dy
точек по вертикали относительно последнего положения текущего указателя «+» увеличивает; «-» уменьшает.
42
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
8.9.2 Обработка ошибок при инициализации графического режима
Графическая программа, как и любая другая, может содержать ошибки. Программист должен предусмотреть всё возможное для их своевременного обнаружения и нейтрализации. Для этого в модуле Graph имеются функция GraphResult.
Заголовок функции: Function GraphResult: Integer
Эта функция, при обращении к ней, возвращает специальный код ошибки
(целое число), в зависимости от того, как прошло выполнение любой графической
процедуры или функции. Если ошибка не обнаружена, то значением функции будет
ноль, в противном случае - отрицательное число. Все возможные ошибки и их коды
приведены в таблице 4.
Для того чтобы выводить сообщение об ошибке используется функция GraphErrorMsg.
Заголовок функции: Function GraphErrorMsg(Code: Integer): String
Данная функция возвращает значение типа String, в котором по указанному
коду дается соответствующее текстовое сообщение об ошибке (по-английски). Здесь
Code - код ошибки, возвращаемый функцией GraphResult.
43
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
Таблица 4 - Константы и коды ошибок графических операций
Имя константы
Код
Соответствующее сообщение об ошибке (перевод)
ошибки
grOk
0
Нет ошибок
grNoInitGraph
-1
Не инициализирован графический режим
grNotDetected
-2
Не удалось определить тип адаптера
grFileNotFound
-3
Не обнаружен файл с драйвером
grInvalidDriver
-4
Неправильный тип драйвера
grNoLoadMem
-5
Нет памяти для размещения драйвера
grNoScanMem
-6
Нет памяти для просмотра областей
grNoFloodMem
-7
Нет памяти для закраски областей
grFontNotFound
-8
Не найден файл со шрифтом
grNoFontMem
-9
Нет памяти для размещения шрифта
grInvalidMode
-10
Неправильный графический режим
grError
-11
Общая ошибка
grIOError
-12
Ошибка ввода-вывода
grInvalidFont
-13
Неправильный формат шрифта
grInvalidFontNum
-14
Неправильный номер шрифта
Пример 2: программы, которая производит инициализацию графического
режима и проверку возможных ошибок:
uses graph;
{Подключение модуля Graph}
var gd,gm,error:integer;
{Раздел описания переменных}
begin
{Начало программы}
gd:=detect;
{Автоматическое определение драйвера}
InitGraph (gd,gm,");
{Инициируем графику}
error:=GraphResult;
{Получаем результат}
if error<>grok then
{Проверяем ошибку}
WriteLn (GraphErrorMsg(Error))
{Выводим сообщение}
44
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
else
{Нет ошибки}
begin
{Начало основной части программы}
.......
Readln;
{Основная часть программы}
{Ожидание нажатия клавиши Enter}
CloseGraph;
{Закрытие графического режима}
end;
end.
{Конец основной части программы}
{Конец программы}
Такая проверка должна проводиться в каждой программе, в которой используется графический режим (именно для этого предназначена функция GraphResult).
8.9.3 Переключение между текстовым и графическим режимами
Иногда требуется периодически переходить из текстового режима в графический и наоборот. Для того, что бы из текстового режима перейти в графический режим работы нужно использовать процедуру SetGraphMode.
Заголовок процедуры: Procedure SetGraphMode (Mode: Integer)
Эта процедура устанавливает новый графический режим работы адаптера.
Здесь Mode - код устанавливаемого режима.
Для того, что бы перейти из графического режима работы в текстовый режим работы необходимо использовать процедуру RestoreCRTMode.
Заголовок процедуры: Procedure RestoreCRTMode
Эта процедура восстанавливает видеорежим, который был до инициализации
графического режима. Данная процедура не освобождает память и не сбрасывает
параметры графического режима. Процедуру RestoreCRTMode можно использовать
совместно с процедурой SetGraphMode, чтобы временно (и быстро) переходить в
программе из графического режима в текстовый и обратно.
Пример 3: Программа иллюстрирует переход из графического режима в текстовый и обратно:
Uses graph;
45
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
Var gd, gm, error: integer;
Begin
gd:=detect;
InitGraph (gd,gm,");
Error:=GraphResult;
If error<>grok then WriteLn (GraphErrorMsg(Error))
Else
begin WriteLn ('Это графический режим работы');
WriteLn ('Нажмите клавишу "Enter"...':20);
ReadLn;
RestoreCRTMode; {Переходим в текстовый режим}
WriteLn (' А это текстовый режим работы');
WriteLn ('Нажмите клавишу "Enter"...':20);
ReadLn;
SetGraphMode (GetGraphMode); {Возвращаемся в графический режим}
WriteLn ('Опять графический режим...');
ReadLn;
CloseGraph;
End; End.
8.10 Описание графических процедур и функций
8.10.1 Система координат
Для того чтобы мы могли что-либо изобразить на экране, мы должны использовать систему координат (см. рисунок 6). Отсчёт начинается от верхнего левого угла экрана, который имеет координаты (0,0). Привычная для нас система координат "перевёрнута". Каждая точка на экране на самом деле представляет собой
очень маленький прямоугольник (и поскольку это не совсем точка, то иногда используют специальный термин - "пиксель"). Количество точек (пикселей), умещающихся на экране по вертикали и горизонтали, называют разрешающей способностью. Разрешающая способность экрана в режиме VGAhi - 640x480. Это означает,
что по горизонтали на экране умещается 640 точек, а по вертикали - 480.
46
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
0,0
640,0
x
y
0,480
640,480
Рисунок 6 – Координаты экрана в режиме VGAhi
8.10.2 Текущий указатель
Чтобы строить изображение, необходимо указывать точку начала вывода. В
текстовом режиме эту точку указывает курсор, который виден на экране, если его
конечно не убрать. В графическом режиме видимого курсора нет, но есть невидимый текущий указатель СР(Current Pointer). Фактически это тот же курсор только он
невидим.
Рассмотрим процедуры и функции позволяющие перемещать указатель текущей позиции в любую точку экрана и определяющие где указатель в данный момент находиться.
Заголовок процедуры: Procedure MoveTo(x, у: Integer)
Эта процедура перемещает указатель текущей позиции в точку с заданными
координатами, где х,у - координаты точки на экране, в которую будет перемещен
указатель. Точка на экране не высвечивается.
Отсчет координат ведётся относительно верхнего левого угла экрана или если есть окно, то относительно верхнего левого угла окна.
Заголовок процедуры: Procedure MoveRel (dx, dy: Integer)
Данная процедура перемещает указатель на заданное расстояние относительно его текущего местоположения, где dx, dy - приращения текущих координат х
и у.
Например, если первоначальное положение текущего указателя было в точке
47
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
с координатами (0,0), то процедура MoveTo(100,300) переместит указатель в точку с
координатами 100, 300, а процедура MoveRel(5,10) переместит указатель из точки с
координатами 100, 300 в точку с координатами 105, 310.
В некоторых программах приходиться выполнять постоянный контроль местоположения текущего указателя. Для этого используются следующие функции.
Заголовок функции: Function GetX:Integer
Эта функция возвращает координаты по горизонтали указателя текущей позиции.
Заголовок функции: Function GetY:Integer
Эта функция возвращает координаты по вертикали указателя текущей позиции.
Координаты GetX и GetY отсчитываются относительно левого верхнего угла
активного окна, или, если окно не установлено, экрана.
Для того чтобы узнать максимально возможные для установленного режима
значения координат X и Y используют функции.
Заголовки функций: Function GetMaxX:Integer
Function GetMaxY:Integer
Данные функции возвращают текущие координаты разрешений (т.е. число
пикселей) по горизонтали и вертикали соответственно. Также с помощью этих
функций можно определить координаты центра экрана.
Xcenter:=GetMaxX div 2;
Ycenter:=GetMaxY div 2;
Такой способ определения центра экрана избавляет от настройки на конкретный тип монитора.
8.10.3 Окно в графическом режиме
Также как в текстовом режиме графический экран можно рассматривать как
одно большое окно или несколько маленьких окон. Вывод можно осуществ-лять не
только на весь экран, но и в пределах одного окна. Напомним что окно - это прямо48
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
угольная область экрана, выполняющая все функции полного экрана. Если окон несколько, то в каждый отдельный момент может быть активно только одно окно. Рассмотрим несколько процедур предназначенные для работы с окнами в графическом
режиме.
Для того чтобы создать окно в графическом режиме следует воспользоваться
процедурой: Procedure SetViewPort(x1, у1, х2, у2: Integer; Clip: Boolean)
Где (x1,y1) - координаты, левого верхнего угла, (х2,у2) - координаты правого нижнего угла окна. Параметр Clip определяет, должно ли отображаться на экране то, что не помещается в окне. Параметр Clip может принимать два значения True и False. Эти значения можно задавать, используя две определенные в модуле
константы:
Const
ClipOn = True; {Включить отсечку}
ClipOff = False; {He включать отсечку}
Если параметр Clip имеет значение ClipOn, то часть изображения не помещающаяся в окне, обрезается по его краю. Если параметр Clip имеет значение ClipOff, то изображение будет представлено на экране полностью на рисунке 7.
Рисунок 7 - Действие параметра Clip
На рисунке изображены два окна с разными значениями параметра Clip. Для
левого окна Clip равен ClipOff, а для правого ClipOn. Изображение прямоугольника
49
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
начинается в окне и заканчивается за его пределами. Для первого окнa(ClipOff) прямоугольник отображается полностью, для второго(СliрОn) - обрезается по его краю.
После того как окно создано, координаты его верхнего левого угла становятся равны (0,0).
Для процедур и функций, что-либо отображающих, перемещающих текущий
указатель или выясняющих местоположение указателя координаты отсчитываются
относительно активного окна.
Чтобы стереть все изображения на экране, т.е. очистить его, используется
процедура ClearDevice.
Заголовок процедуры: Procedure ClearDevice
Данная процедура не имеет параметров. Она очищает экран и перемещает
текущий указатель позиции в левый верхний угол, т.е. в точку с координатами (0,0).
При очистке экран заполняется цветом фона, установленным процедурой SetBkColor(cм ниже).
Для очистки окна используется процедура ClearViewPort.
Заголовок процедуры: Procedure ClearViewPort
Данная процедура не имеет параметров. Она очищает активное окно. Если на
экране окна не создавались, то очищается весь экран. При этом фон заполняется
цветом из текущей палитры, код которого равен нулю, а текущий указатель помещается в верхний левый угол
8.10.4 Цвета, палитры, заполнения
Вывод изображений на экран в Turbo Pascal может осуществляться с использованием различных цветов. Набор цветов, доступных в том или ином режиме, называется палитрой. Кроме того, если речь идёт о заполнении экрана или какой-либо
замкнутой фигуры, то это можно осуществить как сплошным фоном, так и некоторым узором. Рассмотрим процедуры и функции, предназначенные для выше описанных видов действий.
Установить текущий цвет позволяет процедура SetColor.
50
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
Заголовок процедуры: Procedure SetColor (Color: Word)
Данная процедура устанавливает текущий цвет - один из цветов используемой палитры. Color - новый текущий цвет. Значения, которые может принимать
параметр Color, определяется набором определённых в модуле Graph констант. Перечень этих констант, а также соответствующих кодов можно посмотреть в таблице
5.
Таблица 5 - Константы и коды цветов в графическом режиме.
Имя константы
Код
Цвет
Black
0
Чёрный
Blue
1
Синий
Green
2
Зелёный
Cyan
3
Голубой
Red
4
Красный
Magenta
5
Фиолетовый
Brown
6
Коричневый
LightGray
7
Светло-серый
DarkGray
8
Тёмно-серый
LightBlue
9
Светло-синий
LightGreen
10
Светло-зелёный
LightCyan
11
Светло-голубой
LightRed
12
Розовый
LightMagenta
13
Малиновый
Yellow
14
Жёлтый
White
15
Белый
Blink
color + 128
Мерцание символа
Например, обращение SetColor(Yellow) сделает текущим цвет жёлтый, или
SetColor(2) сделает текущим цвет зелёный. Обращение можно осуществлять как через имя константы, так и через код.
Для того чтобы установить цвет фона для своего изображения необходимо
51
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
применить процедуру SetBkColor.
Заголовок процедуры: Procedure SetBkColor (Color: Word)
Данная процедура устанавливает цвет фона изображения - один из цветов
используемой палитры. Параметр Color - определяет новый цвет фона.
Цвет фона определяется не для окна, а для всего экрана. Коды цветов фона
могут находиться в диапазоне от 0 до 15, в зависимости от используемых драйвера и
графического режима. Напомним, что в текстовом режиме для фона можно использовать только первую половину набора доступных цветов. Например, обращение
SetBkColor(red) окрасит фон в красный цвет, или SetBkColor(5) - окрасит фон в фиолетовый цвет. Допускается использование в качестве параметра Color как имя константы, так и код.
В ряде случаев порядок следования цветов в стандартных палитрах может не
удовлетворять программиста. Если требуется изменить расположение одного или
нескольких цветов, можно воспользоваться процедурой SetPalette.
Заголовок процедуры: Procedure SetPalette (Cut: Word; Paste: Shortint)
Данная процедура заменяет один из цветов в палитре новым цветом. Параметр Cut - код цвета в палитре (т.е. тот цвет, который будем менять), Paste - код нового цвета (т.е. тот цвет, на который меняют старый).
Процедура заменяет цвет, ассоциированный с кодом Cut, на цвет, код которого Paste. Например, обращение SetPalette(9,11) (или SetPalette(9,LightCyan), что то
же самое) меняет цвет в палитре с кодом 9 (синий) на цвет с кодом 11 (светло - бирюзовый). После этого все, что было изображено на экране синим цветом, изменит
свой цвет на светло-бирюзовый.
При построении изображения различные замкнутые области можно закрасить либо сплошным цветом, либо некоторым узором. Для этого используют процедуру SetFillStyle.
Заголовок процедуры: Procedure SetFillStyle (Pattern: Word; Color: Word)
Данная процедура определяет шаблон и цвет заполнения. Параметр Pattern определяет шаблон заполнения (см. таблицу), Color - цвет заполнения .
Заполнение - операция, позволяющая некоторый замкнутый контур закра52
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
сить сплошным цветом (например, цветом фона или текущим цветом) либо заполнить его некоторым узором. В модуле Graph имеется несколько готовых (стандартных) шаблонов заполнения, с каждым их которых ассоциирована мнемоническая
константа. Перечень этих шаблонов представлен в таблице 6.
Таблица 6 - Константы, коды и образцы заполнений
Имя константы Код
Заполнение
EmptyFill
0
Сплошное заполнение цветом фона (без узора)
SolidFill
1
Сплошное заполнение текущим цветом
LineFill
2
Заполнение символами --, цвет - color
LtSlashFill
3
Заполнение символами // нормальной толщины, цвет - color
SlashFill
4
Заполнение символами // удвоенной толщины, цвет - color
BkSlashFill
5
Заполнение символами \\ удвоенной толщины, цвет - color
LtBkSlashFill
6
Заполнение символами \\ нормальной толщины, цвет - color
HatchFill
7
Заполнение вертикально-горизонтальной штриховкой тонкими линиями, цвет - color
XHatchFill
8
Заполнение штриховкой крест-накрест по диагонали «редкими» тонкими линиями, цвет -color
InterLeaveFill
9
Заполнение штриховкой крест-накрест по диагонали "частыми" тонкими линиями, цвет -color
WideDotFill
10
Заполнение "редкими" точками
CloseDotFill
11
Заполнение "частыми" точками
UserFill
12
Шаблон заполнения, определённый пользователем
По умолчанию используются константа SolidFill(код 1) и цвет с максимальным номером из текущей палитры. Шаблон и цвет, определённые процедурой SetFillStyle, применяется всеми процедурами и функциями, в которых используется
операция заполнения.
53
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
8.10.5 Отображение точки на экране
До сих пор речь шла о процедурах и функциях модуля Graph, настраивающих экран нужным образом перед выводом графических изображений. Теперь познакомимся со средствами, позволяющими что-то отображать на экране. В этом разделе мы рассмотрим процедуры и функции, выводящие на экран самые простые
изображения - точки и линии.
Какие бы изображения не выводились на экран, все они построены из точек.
Имея средство построения точки определённого цвета в нужном месте экрана, теоретически можно создать любое изображение. В библиотеке Graph вывод точки
осуществляется процедурой PutPixel
PutPixel(x,y:Integer;Color:Word),
где x,y – экранные координаты точки.
Color – ее цвет берется из установленной палитры
Пример 4: В приведённом примере на экране изображаются 5000 точек. Координаты рисования точки и цвет точки выбирается случайным образом. Запустите
интегрированную среду программирования, введите текст программы и запишите на
диск, затем откомпилируйте его и проверьте действие программы.
program tochki;
uses crt,graph;
var i,x,y,c:integer; gd,gm:integer;
begin
clrscr;
gd:=detect;
initgraph(gd,gm,");
randomize;
for i:=1 to 5000 do
begin x:=random(640); y:=random(480);c:=random(15);Putpixel(x,y,c);
delay(50);
end;
readln;
Closegraph;
end.
54
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
8.10.6 Отображение отрезков прямых линий, построение прямоугольников
Процедура Line(x1,y1,x2,y2:Integer)
Где x1,y1 – координаты начальной точки линии
x2,y2 – координаты конечной точки линии.
Для построения отрезка применяются еще две процедуры:
LineTo – строит отрезок из точки текущего положения указателя до точки с
координатами (x,y)
LineRel(dx,dy) - проводит отрезок от точки текущего положения указателя до
точки (CPx+dx,CPy+dy), где Cpx,Cpy – текущее положение CP.
Пример 5: В приведённом примере на экране изображается последовательность вертикальных линий. Чтобы получилась именно последовательность линий, а
не сплошной прямоугольник, местоположение очередной линии относительно предыдущей сдвигается вправо на десять пикселей. В конце программы осуществляется
задержка (чтобы можно было увидеть результат - ReadLn) и выход из графического
режима(closegraph). Запустите интегрированную среду программирования, введите
текст программы и запишите на диск, затем откомпилируйте его и проверьте действие программы.
program linii;
uses crt,graph;
var i: integer; gd,gm:integer;
begin
clrscr; gd:=detect; Initgraph (gd, gm,");
For i:=1 to 50 do Line (50+i*10, 50, 50+i*10,400);
readln;
closegraph;
end.
Пример 6: Цветные линии из центра экрана.
Program lin3;
Uses graph, crt;
55
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
Var x,y,c,gd,gm:integer;
Begin
gd:= detect;
Initgraph(gd,gm,’
’);
SetBkcolor(15)
Repeat
x:=round(random(640)); y:= round(random(470)); c:=
round(random(16));
setcolor(c); Line(320,235,x,y);
Until keypressed;
Readln;
Closegraph;
End.
Для черчения линий применяются ещё две процедуры LineTo и LineRel.
Заголовок процедуры: Procedure LineTo (x, у: integer)
Эта процедура отображает прямую линию от текущей позиции (точки, в которой находится указатель) до точки с заданными координатами. Параметры х и у координаты точки. Например, если текущий указатель находиться в точке с координатами (100,100), то процедура LineTo(250,150) начертит линию, у которой начало
будет в точке с координатами (100,100) а конец в точке с координатами (250,150).
С помощью процедуры LineTo линия отображается с использованием стиля и
толщины, определённых процедурой SetLineStyle(cм. далее); при этом используется
цвет, заданный с помощью процедуры SetColor. Процедура LineTo очень удобна для
вычерчивания различных многоугольников или ломаных линий.
Пример 7. программы использования процедуры LineTo:
program primer;
uses crt,graph;
var gd,gm:integer;
begin clrscr; gd:=detect;
initgraph(gd,gm,");
MoveTo(50,50);
LineTo(200,100); LineTo(250,150); LineTo(150,250);
56
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
LineTo(50,150); LineTo(50,50);
readln;
closegraph;
end.
В приведённом примере на экране изображается многоугольник. Первой в
данной программе вызывается процедура MoveTo, которая перемещает указатель
текущей позиции в заданную точку экрана. Затем последовательно пять раз вызывается процедура LineTo, которая каждый раз отображает очередную сторону нашего
многоугольника. В конце программы осуществляется задержка (чтобы можно было
увидеть результат - ReadLn) и выход из графического peжимa (CloseGraph). Чтобы
многоугольник получился замкнутым, при вычерчивании последней стороны многоугольника процедуре LineTo должны быть переданы те же координаты, которые
вначале были сообщены процедуре MoveTo. Запустите интегрированную среду программирования, введите текст программы и запишите на диск, затем откомпилируйте его и проверьте действие программы.
Другая процедура LineRel.
Заголовок процедуры: Procedure LineRel (Dx, Dy: integer)
Данная процедура отображает прямую линию от текущей позиции и до точки, координаты которой определены относительно положения указателя (т.е. текущей позиции). Параметры Dx и Dy - приращения координат текущей позиции х и у.
Например, если указатель находиться в точке с координатами (100,50), то процедура
LineRel(250,100) переместит его в точку с координатами (350,150) и при этом между
двумя точками будет вычерчена линия. Процедура LineRel, так же как и процедура
LineTo(см. выше) хорошо подходит для вычерчивания различных многоугольников
или ломаных линий.
Пример 8 программы использования процедуры LineRel:
program primer;
uses crt,graph;
var i,j:integer;
gd,gm:integer;
57
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
begin
clrscr; gd:=detect; initgraph(gd,gm,");
moveto(50,50);
for i:=1 to 10 do
begin
if i mod 2=0 then j :=-150 else j :=200; LineRel(i+40,j); end;
readln;
closegraph;
end.
В приведённом примере на экране изображается ломаная линия. Первой
здесь вызывается процедура MoveTo, которая перемещает указатель текущей позиции в заданную точку экрана. Затем организуется цикл, в теле которого вызывается
процедура LineRel, вычерчивающая на экране очередной участок ломаной линии. В
конце программы осуществляется задержка (чтобы можно было увидеть результат ReadLn) и выход из графического режима(closegraph). В какую сторону направить
очередной участок - вверх или вниз - определяется с помощью условного оператора
If. Запустите интегрированную среду программирования, введите текст программы
и запишите на диск, затем откомпилируйте его и проверьте действие программы.
Turbo Pascal позволяет вычерчивать линии различного стиля: тонкие, широкие, штриховые, пунктирные и т.д. Для того чтобы установить стиль вычерчиваемой
линии необходимо воспользоваться процедурой SetLineStyle.
Заголовок процедуры: Procedure SetLineStyle (Type, Pattern, Thick: Word)
Эта процедура задаёт новый стиль линии. Параметр Туре - устанавливает тип
линии, Pattern - шаблон линии, Thick - толщина линии. Тип линии задаётся с помощью набора определённых в модуле Graph констант. Перечень этих констант, соответствующие им числовые коды и образцы линий представлены в таблице 7.
58
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
Таблица 7 - Константы, коды и образцы типов линий
Имя константы
SolidLn
Код
0
Образец
Сплошная линия
DottedLn
1
Линия из точек
CenterLn
2
Штрихпунктирная линия
DashedLn
3
Пунктирная линия
UserBitLn
4
Узор линии определяет пользователь
Что же касается параметра Thick, то он может принимать только два значения представленные в таблице 8.
Таблица 8 - Константы и коды толщины линии
Имя константы
NormWidth
Код
1
Комментарий
Толщина линии 1 пиксель
ThickWidth
3
Толщина линии 3 пикселя
Стиль линии, определённый с помощью процедуры SetLineStyle, в дальнейшем используется различными процедурами, отображающими на экране разного
рода линии, дуги и фигуры.
Пример 9 программы использования процедуры SetLineStyle:
program primer;
uses crt,graph;
var i,x,y:integer;
gd,gm:integer;
begin
clrscr; gd:=detect; Initgraph (gd,gm,");
randomize;
SetBkColor(15); SetColor(random(14)); SetLineStyle(0,0,l); Line(50,50,400,50);
59
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
SetColor(random(14)); SetLineStyle(1,0,1); Line(50,75,400,75);
SetColor(random(14));SetLineStyle(2,0,l); Line(50,100,400,100);
SetColor(random(14));SetLineStyle(3,0,l); Line(50,125,400,125);
SetColor(random(14));SetLineStyle(0,0,3);Line(50,150,400,150);
SetColor(random(14));SetLineStyle(1,0,3);Line(50,175,400,175);
SetColor(random(14));SetLineStyle(2,0,3);Line(50,200,400,200);
SetColor(random(14));SetLineStyle(3,0,3);Line(50,225,400,225);
readln;
closegraph;
end.
В приведённом примере на экране изображаются горизонтальные линии.
Первой здесь вызывается процедура SetBkColor, которая устанавливает цвет фона, в
данном случае белый. Затем случайным образом выбирается цвет вычерчиваемой
линии - процедура SetColor. После этого устанавливается стиль линии - процедура
SetLineStyle. В конце программы осуществляется задержка (чтобы можно было увидеть результат - ReadLn) и выход из графического режима(closegraph). В данном
примере показаны все типы линий. Запустите интегрированную среду программирования, введите текст программы и запишите на диск, затем откомпилируйте его и
проверьте действие программы.
8.10.7 Незаполненные и заполненные фигуры
Без построения различных графических фигур не обходиться ни одна серьёзная графическая система. Например, при построении меню используются прямоугольники, в которые помещаются названия режимов; круговые диаграммы строятся из окружностей и секторов и т.д. Библиотека Graph содержит ряд проце-дур, которые формируют различные фигуры на основе задаваемых параметров. Цвет, стиль
и толщина линии для вычерчивания берутся по умолчанию или устанавливаются
соответственно процедурами SetColor и SetFillStyle.
1.
Для построения прямоугольных фигур применяется процедура Rectan60
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
gle.
Заголовок процедуры: Procedure Rectangle (x1, y1, x2, y2: integer)
Данная процедура отображает прямоугольник с использованием текущего
стиля и цвета линии. Параметры (x1,y1) и (х2,у2) - координаты соответственно
верхнего левого и нижнего правого углов прямоугольника.
Процедура Bar рисует прямоугольник, область внутри его залита по те-
2.
кущему шаблону.
Еще более наглядное представление информации при рисовании диаграмм
позволяет получить процедура
Bar3D(x1,y1,x2,y2:Integer; D3:Word;Top:Boolean)
Где параметр Top задает режим отображения верхней плоскости.
True – отображать, TopOn
False – не отображать, TopOff
Пример 10 программы использования процедуры Rectangle:
program primer;
uses graph;
var gd,gm: integer;
begin
gd:=detect; initgraph(gd,gm,");
SetBkColor(15);SetColor(red);SetLineStyle(0,0,3);Rectangle(100,100,3
00,200);
SetColor(green);SetLineStyle(1,0,1);Rectangle(350,100,550,200);
SetColor(blue);SetLineStyle(2,0,l);Rectangle(100,250,300,350);
SetColor(yellow);SetLineStyle(3,0,3);Rectangle(350,250,550,350);
readln;
closegraph;
end.
В приведённом примере на экране изображаются четыре прямоугольника.
Перед рисованием каждого прямоугольника устанавливается цвет рисования (процедура SetColor) и стиль линии (процедура SetLineStyle), затем с помощью процеду61
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
ры Rectangle рисуется прямоугольник заданного размера. В конце программы осуществляется задержка (чтобы можно было увидеть результат - ReadLn) и выход из
графического режима(closegraph). Запустите интегрированную среду программирования, введите текст программы и запишите на диск, затем откомпилируйте его и
проверьте действие программы.
Пример 11 построения двух прямоугольников, используя процедуры - Rectangle, Bar, соединенных прямыми линиями.
Program lin1;
Uses graph, crt;
Begin
Var gd,gm:integer;
gd:= detect; Initgraph(gd,gm,’’);
Line(20,100,40,100); Rectangle(40,60,80,120);
Line(80,100,140,100); Bar(140,80,200,120);
Readln; Closegraph;
End.
Для того чтобы нарисовать окружность применяется процедура Circle.
Заголовок процедуры: Procedure Circle (x, у: integer; Rad: Word)
Данная процедура вычерчивает окружность. Параметры x и y-определяют
координаты центра окружности, Rad - радиус окружности (в пикселях, по горизонтали). Например, процедура Circle(150,200,100) нарисует окружность с цент-ром
в точке с координатами (150,200) и радиусом равным 100. Окружность вычерчивается текущим цветом, установленным с помощью процедуры SetColor. При
этом используется стиль линии, определённый процедурой SetLineStyle с единственным исключением: каким бы ни был текущий тип линии (точечная или пунктирная), окружность всегда рисуется сплошной линией.
Пример 12 программы использования процедуры Circle:
program okrugnost;
uses graph;
var gd,gm:integer;
begin
gd:=detect; initgraph(gd,gm,");
62
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
SetBkColor(yellow);SetColor(red);SetLineStyle(0,0,3); Circle(100,100,50);
SetColor(green);SetLineStyle(0,0,3); Circle(400,l 00,75);
SetColor(blue);SetLineStyle(0,0,l);
Circle(250,300,90);
readln;
closegraph;
end.
В приведённом примере на экране на жёлтом фоне изображаются три окружности разного радиуса, цвета и толщины линии. Цвет устанавливает процедура SetColor, а толщину линии процедура SetLineStyle. В конце программы осуществляется
задержка (чтобы можно было увидеть результат - ReadLn) и выход из графического
режима(closegraph). Запустите интегрированную среду программирования, введите
текст программы и запишите на диск, затем откомпилируйте его и проверьте действие программы.
Пример 13 использования процедуры Circle:
program krugi2;
uses graph;
var gd,gm: integer; x,y:real;
begin
randomize;
gd:=detect;
initgraph(gd,gm,");
while x<=200 do
begin setcolor(random(15)); circle(random(600),random(400),random(50));
x:=x+1;
Delay(700);
end;
readln;
Closegraph;
end.
В этой программе на экран выводятся 200 окружностей разного радиуса и
цвета. Цвет окружности выбирается случайным образом с помощью процедуры SetColor. Также случайным образом определяется координаты центра окружности и
радиус. Запустите интегрированную среду программирования, введите текст про63
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
граммы и запишите на диск, затем откомпилируйте его и проверьте действие программы.
Пример 14 построения четырех внутренних с радиусом 10 и четырех внешних окружностей с радиусом 20 .
Program krug;
Uses graph, crt;
Var Gd,gm,I,x:integer;
Begin
Gd:= detect; Initgraph(gd,gm,’ ’);
x=x+60;
For I:=1 to 4 do begin circle (x,80,20); circle(x,80,10); x:=x+40;
end;
readln;
closegraph; end.
Для имитации объемных фигур, используются дуги. Они вычерчиваются с
помощью процедуры:
Arc(x,y:Integer; StAngle, EndAngle, Radius:Word),
где x,y – центр окружности;
StAngle – начальный угол;
EndAngle – конечный угол, отсчитывается от горизонтальной оси против часовой стрелки.
Radius – радиус.
Если StAngle=0 EndAngle=359, то вычерчивается полная окружность.
Построение круговой диаграммы показано на рисунке 7.
y
вращение против часовой стрелки
конечный угол
начальный угол
x
Рисунок 7 - Круговая диаграмма
64
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
Процедура Arc(x,y:Integer; StAngle, EndAngle, Radius:Word),рисует дугу окружности: Углы отчитываются против часовой стрелки и указываются в градусах.
Нулевой угол соответствует горизонтальному направлению вектора слева направо.
Если задать значения начального угла 0 и конечного 359, то будет выведена полная
окружность.
Пример 15 построения дуги через процедуру Arc(x,y, StAngle, EndAngle, Radius).
Program arg1;
Uses graph, crt; Var Gd,Gm, Integer;
Begin
Gd:=detect; Initgraph(Gd,Gm, ‘ ’);
Arc (80,100,45.180,30);
Readln; Closegr
End.
Рисунок 8 - Построения дуги с координатами центра 80,100
Вот как выглядят две дуги: одна с углами 0 и 100, вторая 300 и 540 (рисунок
9)
Рисунок 9 - Пример дуг с разными начальными и конечными углами
65
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
Пример 16 программы использования процедуры Arc:
program primer;
uses graph;
var gd,gm,i:integer;
begin gd:=detect; initgraph(gd,gm,''); Randomize;
SetBkColor(15); SetLineStyle(0,0,1);
For i:=1 to 20 do
Begin
SetColor(random(15));Arc(300,200,90+i*10,350+i*10,50+i*5); end;
readln; closegraph;
end.
В этой программе на экран выводятся 20 дуг окружностей разного радиуса и
цвета. В начале программы после инициализации графики(initgraph) устанавливаем
цвет фона с помощью процедуры SetBkColor. Затем с помощью процедуры SetLineStyle устанавливаем стиль линии, которыми будут вычерчиваться дуги. После
этих установок с помощью цикла рисуются 20 дуг, у которых одинаковый центр
(точка с координатами 300 и 200) но разные начальные и конечные углы, а также
разные радиусы. Цвет дуги выбирается случайным образом с помощью процедуры
SetColor. Запустите интегрированную среду программирования, введите текст программы и запишите на диск, затем откомпилируйте его и проверьте действие программы.
Если существует необходимость нарисовать эллипс, то применяется процедура Ellipse.
Заголовок процедуры:
Procedure Ellipse (x,y:integer; BegA, EndA, RX,
RY:Word);
Эта процедура вычерчивает эллипсную дугу. Параметры х и у – коорди-наты
центра эллипса, BegA и EndA – соответственно начальный и конечный углы дуги,
RX и RY – горизонтальный и вертикальный радиусы эллипса в пикселях (рисунок
10).
66
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
Рисунок 10 - Пример эллипса
Эллипс вычерчивается текущим цветом, установленным с помощью процедуры SetColor. При этом используется стиль линии, определённый процедурой SetLineStyle с единственным исключением: каким бы ни был текущий тип линии (точечная или пунктирная), эллипс всегда рисуется сплошной линией.
Пример 17 программы использования процедуры Ellipse:
uses graph;
var gd,gm,i:integer;
begin
gd:=detect;
initgraph(gd,gm,'');
SetBkColor(7); SetLineStyle(0,0,1);SetColor(4);
Ellipse(100,150,0,360,30,80);
SetColor(1);
Ellipse(300,150,0,180,30,80);
SetLineStyle(0,0,3);SetColor(8);
Ellipse(200,300,90,360,30,80);
SetLineStyle(0,0,1); SetColor(13);
Ellipse(500,150,90,270,30,80);
SetLineStyle(0,0,3);SetColor(2);
Ellipse(400,300,30,340,30,80);
readln;
closegraph;
67
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
end.
В этой программе на экран выводятся 5 дуг эллипсов. Каждая дуга эллипса
имеет свой центр свои начальный и конечный радиусы и начальные и конечные углы. Перед вычерчиванием каждой дуги эллипса устанавливается стиль линии (процедура SetLineStyle) и цвет (процедура SetColor). Запустите интегрированную среду
программирования, введите текст программы и запишите на диск, затем откомпилируйте его и проверьте действие программы.
Помимо незаполненных фигур, средства модуля Graph позволяют выводить
на экран также заполненные фигуры. С использованием заполнений мы познакомились в разделе «Цвета, палитры, заполнения» (см. выше). Далее мы рассмотрим
процедуры, которые выводят на экран уже заполненные фигуры.
Для того, чтобы заполнить замкнутую область экрана, необходимо применить процедуру FloodFill.
Заголовок процедуры:
Procedure FloodFill(x,y:integer; Border:word);
Данная процедура заполняет произвольную замкнутую область используя
стиль заполнения (шаблон и цвет).
Параметры х и у – координаты произвольной точки в области, которую требуется заполнить, Border – код цвета линии, ограничивающий заполняемую область.
Нужный стиль заполнения должен быть предварительно задан процедурой SetFillStyle. Если точка с координатами (х,у) находится внутри замкнутой области, заполненной окажется эта область. Если точка находится снаружи замкнутой области, заполняется все пространство вне области. Если же область окажется незамкнута, заполненным окажется весь экран.
Пример18 программы использования процедуры FloodFill:
program primer;
uses graph;
var gd,gm,i:integer;
begin
gd:=detect;
68
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
initgraph(gd,gm,'');
SetBkColor(7);SetLineStyle(0,0,3);SetFillStyle(8,5);SetColor(4);
Circle(GetMaxX div 2,GetMaxY div 2,200);
SetColor(1);
Line(320,45,490,333);
Line(147,333,490,333);
Line(147,333,320,45);
SetColor(2);
Rectangle(250,180,390,290);
FloodFill(GetMaxX div 2,GetMaxY div 2,2);
readln;
closegraph;
end.
В приведённом примере показано как применяется процедура FloodFill.
Прежде чем закрашивать замкнутую область нарисуем следующий рисунок.
Сначала установим цвет фона с помощью процедуры SetBkColor. Потом с помощью
процедуры SetLineStyle установим стиль линии, которой будет вычерчиваться
рисунок. И, наконец, процедура SetFillStyle позволит нам определить шаблон и цвет
заполнения замкнутой области. После этого установив цвет рисования (процедура
SetColor) нарисуем окружность красным цветом. Внутри окружности нарисуем
линиями
треугольник
синим
цветом,
а
внутри
треугольника
нарисуем
прямоугольник синим цветом (см. рисунок 11).
Весь рисунок сделаем таким образом, чтобы центр окружности попал в
треугольник и в прямоугольник. После построения такого рисунка применим
процедуру FloodFill. В качестве первых двух параметров этой процедуры возьмём
координаты центра окружности. Третий параметр процедуры FloodFill будем
менять. Если в качестве третьего параметра возьмём число 2 (что соответствует
цвету
нарисованного
прямоугольника)
то
на
рисунке
закраситься
только
прямоугольник (см. рисунок 11). Если вместо числа два мы поставим число 1 (что
соответствует цвету нарисованного треугольника) то закраситься треугольник и всё
69
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
что находиться внутри него (см. рисунок 11). Ну и, наконец, если в качестве
третьего параметра процедуры FloodFill возьмём число 4 (что соответствует цвету
нарисованной окружности) то произойдет закраска этой окружности и всего того,
что находиться внутри неё (см. рисунок 11).
Запустите
интегрированную
среду
программирования,
введите
текст
программы и запишите на диск, затем откомпилируйте его и проверьте действие
программы.
а
б
в
г
Рисунок 11 - Пример работы процедуры FloodFill
Пример 19 построения 5 внутренних эллипсов
Program ellips;
Uses graph, crt;
Var gd,gm,x,I :integer;
Begin
Gd:= detect;
Initgraph(gd,gm,’’);
X:=0;
For I:=1 to 5 do
Begin
Ellipse(180,200,0,360,50,89+x);
X:=x+10;
readln;
closegraph;
end.
70
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
Закрашенный многоугольник
FillPoly(число вершин,двумерный массив координат вершин);
В строке массива записывавют координаты Х, У одной вершины.
Эта процедура по своему действию очень похожа на процедуру DrawPoly.
Фрагмент программы рисования закрашенного треугольника :
Const T:array[1..3,1.2] of Integer= ((20,50),(10,30),(50,10));
Begin
SetFillStyle(1,2); {1- Сплошная закраска зеленым цветом- 2}
SetPoly(3,T); {Рисуется закрашенный треугольник}
Процедуры, которые используются для заполнения секторов окружностей и
эллипсов. Рисование сектора эллипса, который будет залит цветом по текущему
шаблону.
Sector (X,Y:Intejer; StAngle, EndAngle,XR,YR:Word) параметры этой процедуры аналогичны Arc,Ellipse.
Чтобы разделить окружность на несколько секторов
PieSlice (X,Y: Intejer; StAngle, EndAngle, Radius: Word) вычеркивает и заполняет текущим узором сектора круга, где X,Y – центр окружности.
Высота сектора задается значением 2 углов StAngle, EndAngle.
1. FillEllipse (X,Y:Integer; XR,YR:Word) Процедура служит для вычеркивания
контура эллипса текущим цветом и заполнение ограниченной контурами области
экрана текущим узором.
Если чередовать операторы SetFillStyle и PieSlice можно изобразить круговую диаграмму.
2. Заполнение более сложной фигуры
Floodfill – заполнение области расположенной в нутрии замкнутого контура,
либо вне его.
Floodfill(X,Y:Integer;Border:Word)
X,Y – координаты в нутрии или вне замкнутого контура.
Border – задает цвет контура.
71
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
Пример 20 рисования окружностей и их закрашивание.
Program krug2;
Uses graph, crt;
Var Gd,gm,i :integer;
Begin
gd:= detect;
Initgraph(gd,gm,’ ’);
i:=0
Repeat
Setcolor(15); circle (320,235,230); setfillstyle(1,i); floodfill(320,235,15);
readln; i:=i+1;
until i>15;
closegraph;
end.
Примеры 21:
Program krug3;
Uses graph, crt;
Var gd,gm :integer;
Begin
gd:= detect;
Initgraph(gd,gm,’ ’);
Ellipse(220,150,180,90,100,100); Line(220,150,120,150);
Line(220,150,220,50);
Circle(170,100,50);
Ellipse(170,100,0,360,50,10);
readln;
closegraph;
end.
72
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
Пример 22:
Program krug4;{ рисование эллиптических дуг}
Uses graph, crt;
Var gd,gm,x,y :integer;
Begin
gd:= detect;
Initgraph(gd,gm,’ ’);
setBkcolor(Blue)
x:=getmaxx div 2;
y:= getmaxy div 2;
repeat
if random(100)=1 then setcolor(random(16));
x:=x+ random(5)-2;
y:=y+ random(5)-2;
ellipse(x,y,340,200,50,40);
until keypressed;
readln;
closegraph;
end.
Пример 23:
Program krug5; {красная окружность разделенная на несколько секторов и
сектора залиты синей клеткой}
Uses graph, crt;
Var gd,gm :integer;
Begin
gd:= detect;
Initgraph(gd,gm,’ ’);
Setfillstyle(8, lightblue);
Setcokolor(12;
Setlinestyle(2,0,3);
73
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
Circle(320,235,230);
Pieslice(320,235,30,90,230);{деление окружности на несколько секторов}
readln;
closegraph;
end.
8.10.8 Работа с текстом в графическом режиме
Процедуры:
OutText – вывод на экран строки текста, начиная с текущего положения СР.
OutText(TextString:String)
OutTextXY – по умолчанию СР совмещен с левым верхним левым углом поля,
если текст по горизонтали и с правым верхним углом, если текст идет по вертикали.
OutTexXY(x,y,Text:String);
Где x,y – координаты точки начала вывода текста.
SetTextStyle(<шрифт>,<Направление>,<Размер шрифта>);
Где
- <шрифт> -значение 0-4
0-
Матричный
1-
триплекс
2- мелкий
3- прямой
4- готический
<Направление>-0 текст идет слева- направо
- 1 текст идет снизу-вверх, по вертикали символы на боку
<Размер шрифта> - коэффициент увеличения от 1-10. Стандартный 8*8
пиксел
Для явного указания положения текста по отношению с СР используется
процедура.
74
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
SetTextJustify(<гор>,<вер>)Записывается до оператора OutText, OutTextXY.
Параметр <гор> позволяет смещать поле текста по горизонтали, а параметр
<вер> по вертикали.
<гор>
<вер>
0 – текст справа от СР
0 – текст сверху от СР
1 – текст центрирован
1 – текст центрирован
2 – текст слева от СР
2 – текст снизу от СР
Установить, изменить толщину линий можно используя процедуру.
SetLineStyle(<Вид линий>, образец, толщина линий)
Где :
Параметр <Вид линий>:
SolidLn – 0 Сплошная линия
DottedLn – 1 Точечная линия
CenterLn – 2 Штрих пунктирная линия
DosheadLn – 3 пунктирная линия
UserBitLn – 4 Пользовательское определение линии
Параметр <образец> учитывается для случая UserBitLn в других случаях
учитывается 0.
Параметр <толщина>=1 для обычной толщины
= 3 для тройной толщины
Пример 24 вывода текста в графическом режиме по горизонтали и вертикали.
Program text1;
Uses graph, crt;
Var gd,gm :integer;
Begin
gd:= detect;
Initgraph(gd,gm,’ ’);
Settextstyle(0,0,1);{горизонтальный вывод}
Outtext(‘Горизонтально’);
Settextstyle(0,1,2);{вертикальный вывод с большим размером символов}
75
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
OuttextXY(getmaxX div 2, getmaxY div 2, ‘вертикально’);
readln;
closegraph;
end.
8.11 Работа с памятью
Под памятью (memory) здесь подразумевается оперативная память компьютера. В отличие от памяти жесткого диска, которую называют внешней памятью
(storage), оперативной памяти для сохранения информации требуется постоянное
электропитание.
Память является важнейшим ресурсом, требующим тщательного управления
со стороны мультипрограммной операционной системы. Особая роль памяти объясняется тем, что процессор может выполнять инструкции протравы только в том случае, если они находятся в памяти. Память распределяется как между модулями прикладных программ, так и между модулями самой операционной системы.
Оперативная память содержит миллионы байтовых ячеек.
Каждой ячейке назначен уникальный номер, иначе говоря – адрес. Уникальный – это значит, что все адреса разные, – так нумеруют дома на улицах и квартиры
в домах. Первой ячейке памяти присвоен адрес 0, второй – 1 и так далее. Подобно
тому, как почтальон находит дом по его номеру, процессор обращается к данным по
адресу ячейки, где они помещаются.
Указатель – это переменная, которая содержит адрес другой переменной
(байта памяти).
В ТР имеется два вида указателей:
 указатель на объект некоторого типа (типизированный);
 указатель, не связанный с типом.
Описание указателей. Для объявления типизированных указателей используется значок ^, который помещается перед соответствующим типом:
76
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
Type T = ^T1;
VarA :T;
где: T – имятипа;
T 1 - базовый тип (любой в т.ч. указатель);
^ - указатель.
Примеры:
Var
a :byte; {выделение памяти для переменной где хранится ее значение}
a ;^byte; {выделение памяти для переменной где хранится ее адрес}
Var
p1 :^integer;
p2, p3 :^real;
Для объявления переменных не связывая их, с каким либо типом данных
можно использовать указатель без типа (pointer).
Var p :pointer;
где: pointer - не типизированный указатель, который занимает в памяти 4
байт (2-байта сегмент, 2байта смещение).
8.11.1 Распределение памяти
Управление динамической памятью – это способность определять размер
объекта и выделять для его хранения соответствующую область памяти в процессе
исполнения программы
Выделение памяти
Поскольку кучей«заведует»операционная система, за памятью обращаются к
ней. Для этого в Паскале предусмотрено несколько процедур и функций, две изкоторых – New и Dispose.
Для получения«кусочка» памяти из кучи, вызывают процедуру New (что значит«новый»). Этой процедуре нужен лишь один параметр –указатель некоторого
типа. Процедура «бронирует» в куче кусок соответствующего размера, и адрес этого
77
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
куска помещает в указатель. Так рождается новая переменная в куче.
Пример.
varYork : ^Integer; { указатель на целое }
begin
New(York); { выделено два байта из кучи, адрес в переменной York }
York^:=123;
Writeln(York^); { 123 }
end.
Здесь объявлен указатель на целое число по имени York. При выполнении
процедуры New(York) из кучи выделяется 2 байта (для целого числа), и адрес этого«кусочка»попадает в указатель York. Чтобы воспользоваться выделенным участком как обычной переменной, указатель разыменовывают.
Освобождение памяти
Поработав с выделенным участком памяти, со временем можно отказаться от
него – за ненадобностью. Тогда следует освободить его и вернуть в кучу.
Освобождение
кусочка
памяти
выполняется
процедурой
Dispose
–
«освободить». Ей, как и процедуре выделения памяти, нужен лишь один параметр–
указатель на ранее выделенный участок памяти.
Пример:
varps : ^string; { указатель на строку }
begin
New(ps); { выделено 256 байтов из кучи }
ps^:=’Hello !’;
Writeln(ps^); { Hello ! }
Dispose(ps); { возвращено в кучу 256 байтов }
end.
Здесь получаем из кучи 256 байтов под строковую переменную. А после –за
ненадобностью – освободили эту память.
Процедуры GetMem и FreeMem
Иногда нежелательно выделять память тем способом, как это делает New.
78
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
Вам может потребоваться выделить больше или меньше памяти, чем это делает
New по умолчанию, либо до начала выполнения можно просто не знать, сколько
памяти нужно использовать. Pascal выполняет такое распределение с помощью процедуры GetMem.
Процедура GetMem воспринимает два параметра: переменную-указатель, для
которой вы хотите распределить память, и число распределяемых байт.
Например: GetMem(ThisGheck, 50);
Каждая запись типа TCheck занимает 50 байт, поэтому, если есть переменная
ThisCheck типа PCheck, можно распределить динамическую запись представленным
образом.
Использование с процедурой GetMem функции SizeOf
Аналогично тому, как требуется освобождать память, выделенную с помощью New, нужно освобождать память, распределенную с помощью процедуры
GetMem. Это можно сделать с помощью процедуры FreeMem. Аналогично тому,
как каждому вызову New должен соответствовать парный вызов Dispose, каждому
вызову процедуры GetMem должен соответствовать вызов FreeMem.
Убедиться, что каждый раз выделяется и освобождается один и тот же объем
памяти, недостаточно. Нужно обеспечить распределение правильного объема памяти. Например, если переопределили TCheck.Pay ee как 50-символьную строку
вместо 39-символьной, то не возможно будет получить и освободить достаточно
памяти. Надежнее всего использовать в программе функцию SizeOf, например:
GetMem(ThisCheck, SizeOf(TCheck));
…
FreeMem(ThisCheck, SizeOf(TCheck));
Это не только обеспечивает, выделение и освобождение одного и того же
объема памяти, но и гарантирует, что при изменении размера типа программа все
равно будет выделять нужную память.
Обычно данные процедуры используются для работы с нетипизированными указателями
GETMEM (P, SIZE) - резервирование памяти;
79
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
FREEMEM(P, SIZE) - освобождение памяти.
Здесь Р - нетипизированный указатель;
SIZE - размер в байтах требуемой или освобождаемой части кучи.
За одно обращение к куче процедурой GETMEM можно зарезервировать до
65521 байта динамической памяти.
Использование процедур GETMEM-FREEMEM, как и вообще вся работа с
динамической памятью, требует особой осторожности и тщательного соблюдения
простого правила: освобождать нужно ровно столько памяти, сколько ее было зарезервировано, и именно с того адреса, с которого она была зарезервирована.
8.11.2 Массив указателей
Размещая в куче «мелкие» переменные, никакой экономии статической памяти не получится. Но чем «крупнее» переменная, тем выгоднее «выселять» её в кучу.
Рассмотрим пример создания массива указателей:
type
TRec = record { структура записи о владельце автомобиля }
mNum : integer; { номер авто – 2 байта }
mFam : string[31]; { фамилия владельца – 32 байта }
mAddr: string[63]; { адрес – 64 байта }
mTel : integer; { телефон – 2 байта }
end;
Объявим массив из тысячи таких записей.
type TBase = array [1...1000] of TRec;
Посчитаем его размер, который составит 100 x 1000 = 100000 байтов. Если
такой массив и поместится в памяти, немалая его часть по понятным причинам будет пустовать.
Если разместить эти «увесистые» записи в куче, тогда в статической памяти
потребуется место лишь под массив указателей на эти переменные. Массив указате80
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
лей займет в памяти 4 x 1000 = 4000 байтов, что вполне приемлемо.
Её вместимость сопоставима с объемом памяти компьютера (сейчас он исчисляется мегабайтами).
type
PRec = ^TRec;
Тогда база данных в памяти программы будет представлена массивом.
type
TBase = array [1..1000] of PRec;
Пример 25: Чтение из файла данных. Помещение в массив указателей
const CSize = 1000; { Емкость базы данных }
type
TRec = record { Тип записи для базы данных }
mNumber : integer; { Номер авто }
mFam : string[31]; { Фамилия владельца }
end;
PRec = ^TRec; { Тип указатель на запись }
TBase = array[1..CSize] of PRec; { Тип массив указателей }
var
DataBase : TBase; { База данных – это массив указателей }
Count: integer; { Фактическое количество записей в базе }
{ Чтение данных из текстового файла в базу данных }
function ReadData(var F : text): integer;
var
N : integer; { номер авто }
S : string; { фамилия }
P : PRec; { временный указатель на запись }
i : integer; { счетчик записей }
begin
Reset(F); i:=0;
while not Eof(F) and (i<CSize) do begin
81
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
Inc(i); { i+1 }
{ Читаем строку с номером и фамилией }
Read(F, N); Readln(F, S);
{ Удаляем пробелы в начале строки с фамилией }
while (S[1]=' ') do Delete(S,1,1);
New(P); { Создаем новую запись в куче }
{ Заполняем поля записи }
P^.mNumber := N; P^.mFam := S;
{ Указатель на запись помещаем в массив }
DataBase[i]:= P;
end;
Close(F);
ReadData:= i;
end;
procedure ExpoDataBase; { Распечатка базы данных }
var i : integer;
begin
i:=1;
{ Пока индекс в пределах массива и указатель не пуст }
while (i<=CSize) and Assigned(DataBase[i]) do begin
{ Печатаем номер, четыре пробела и фамилию }
Writeln(DataBase[i]^.mNumber :6, '':4, DataBase[i]^.mFam);
Inc(i); { i+1 }
end;
end;
var
F : text; i : integer;
begin {--- Главная программа ---}
for i:= 1 to CSize do DataBase[i]:= nil;
Assign(F,'P_50_1.in');
82
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
Count:= ReadData(F);
Writeln ('Всего записей: ',Count);
ExpoDataBase;
Readln;
end.
Функция ReadData читает строки текстового файла и помещает данные в кучу. После ввода номера автомобиля оператором Read(F,N) указатель чтения в файле
остановится на первом пробеле за числом. Следующий оператор Readln(F,S) дочитает остаток строки. Так в переменной S окажется фамилия с пробелами в начале
строки, – они затем удаляются.
Последующие операторы внутри функции ReadData создают динамическую
переменную (запись), адрес которой сохраняется в указателе P. Затем поля записи
заполняются номером автомобиля и фамилией владельца, после чего указатель P
копируется в очередной элемент массива указателей. Эти действия можно записать
короче – без вспомогательного указателя P:
New(DataBase[i]); { создаем переменную-запись, указатель в массиве }
DataBase[i]^.mNumber := N; { копируем номер }
DataBase[i]^.mFam := S; { и фамилию }
Но при пошаговой отладке программ удобнее пользоваться промежуточными
переменными
ExpoDataBase – она распечатывает данные, размещенные в куче. Выражение
Assigned(DataBase[i])
в
условии
цикла
WHILE
равнозначно
выражению
DataBase[i]<>NIL и проверяет, ссылается ли указатель на динамическую переменную. Такая проверка исключает ошибку обращения через пустой указатель.
В главной программе заслуживает внимание строка, заполняющая пустым
значением NIL все указатели массива. Ведь пока динамические переменные не созданы, указатели на них следует «заглушить» константой NIL.
for i:= 1 to CSize do DataBase[i]:= nil;
83
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
8.12 Динамические изображения
Иллюзию движущегося изображения создает просмотр последовательности
неподвижных изображений (кадров), показывающих разные фазы движения. Смена
этих изображений должна происходить достаточно быстро. Хорошей скоростью
считается показ 30 кадров в секунду.
Чтобы вывести на экран дисплея динамическое изображение, надо запрограммировать вывод последовательности кадров.
В Паскале имеется возможность вывода динамически движущегося изображения несколькими способами:
1)
перерисовка графического экрана. Но в этом случае глаз замечает мер-
цание изображения и его «подергивание» при перерисовке. Используется процедура
ClearViewPort для очистки всего экрана. Вся картинка перерисовывается заново с
новыми координатами движущегося объекта.
….
Repeat
<Рисование объектов>
X:=X+2; {возможное изменение координаты}
DELAY (5000); {задержка перед очисткой экрана}
CLEARVIEWPORT;
Until keypressed;
…
2)
имитация движения объекта на экране за счет многократного выполне-
ния программой набора действий: нарисовать - пауза - стереть (нарисовать в том же
месте цветом фона) - изменить координаты положения рисунка.
Перед началом составления программы надо продумать описание «двигающегося» объекта, характер изменения координат, определяющих текущее положение объекта, диапазон изменения и шаг.
3)
сохранение и выдача изображений
function ImageSize(x1, y1, x2, y2 : integer) : word;
84
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
Возвращает число байт, требуемое для сохранения прямоугольной области
экрана
Параметры X1, Y1, X2 и Y2 определяют прямоугольную область на экране.
Функция ImageSize возвращает число байт, необходимых для сохранения заданной
области экрана. Размер изображения также включает три значения типа Word. Первое - ширина области, второе - высота области, а третье зарезервировано.
Если количество памяти, требуемое для сохранение области больше или равно 64Кб, то возвращается значение равное нулю, и функция GraphResult возвращает
значение -11 (grError).
procedure GetImage(x1, y1, x2, y2 : integer; var BitMap);
Сохраняет участок изображения в буфер.
Параметры X1, Y1, X2 и Y2 определяют прямоугольную область на экране.
BitMap - нетипизированный параметр, который должен быть больше или равен 6
плюс количество памяти, занимамой изображением в данной области. Первые два
слова в BitMap содержат ширину и высоту области. Третье слово зарезервировано.
Оставшаяся часть памяти в BitMap используется для хранения двоичного образа данного участка изображения. Используйте функцию ImageSize, чтобы определить необходимый размер параметра BitMap.
procedure PutImage(X, Y : Integer; var BitMap; BitBlt : Word);
Точка с координатами (X, Y) - верхний левый угол прямоугольной области
на экране. BitMap - нетипизированный параметр, в котором содержится высота, ширина и двоичный образ изображения, которое будет помещено на экран. BitBlt определяет, какая двоичная операция будет использована при выводе изображения на
экран.
Каждой двоичной операции соответствует константа. Например:
PutImage (X, Y, BitMap, NormalPut) помещает на экран изображение, сохраненное в BitMap с позиции (X, Y) используя команду ассемблера MOV для каждого
байта в изображении.
PutImage (X, Y, BitMap, XORPut) помещает на экран изображение, сохраненное в BitMap с позиции (X, Y) используя команду ассемблера XOR для каждого бай85
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
та в изображении. Это часто используемая методика в анимации для перемещения
изображения по экрану.
PutImage (X, Y, Растр, NotPut) инвертирует биты в BitMap и затем помещает
на экран изображение, сохраненное в BitMap с позиции (X, Y) используя команду
ассемблера MOV для каждого байта в изображении. Таким образом, изображение
появляется в инвертированном виде по отношению к первоначальному.
Для операций с битами используются логические операции (not, and, or и xor)
и операции сдвига влево и вправо (shl и shr). В операции shl вышедшие за пределы
поля влево разряды заполняются нулями. В операции shr вышедшие за пределы поля вправо разряды теряются. При выполнении битовых операций необходимо учитывать внутреннее представление данных.
Пример сохранения и выдачи изображения
…
var
s:integer; sauc:pointer;
begin
….
s:=imagesize(180,170,430,270);
getmem(sauc,s);
getimage(180,170,430,270,sauc^);
putimage(180,170,sauc^,xorput);
x:=400;y:=220;
repeat
putimage(x,y,sauc^,xorput);
delay(1000);
putimage(x,y,sauc^,xorput);
x:=x-3;
if x<0 then x:=400;
until keypressed;
86
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
…
End.
8.13 Модуль Mouse
Назначение этого модуля - применение мыши в работе основной программы.
Все операции, связанные с мышью, в программах выполняются посредством
функций прерывания int $33.
Существует несколько вариаций содержимого модуля, это необходимо учитывать при работе и подключении к основной программе.
Интерфейсная секция модуля Mouse
unit Mouse;
interface
{Признак наличия мыши}
var MousePresent: Boolean;
function MouseInit(var nb:word): Boolean;
{Инициализация мыши}
{nb - количество клавиш мыши;
значение функции:
True - инициализация прошла успешно,
False - в противном случае }
procedure MouseShow;
{Показать курсор мыши}
procedure MouseHide;
{Спрятать курсор мыши}
procedure MouseRead(var X, Y, bMask: Word);
{Определить текущие координаты курсора и состояние клавиш мыши}
{X,Y - координаты курсора мыши;
bMask - маска клавиш:
0-й байт - левая клавиша (1 - если нажата),
1-й байт - правая клавиша (1 - если нажата),
2-й байт - центральная клавиша, если она присутствует (1 - если
87
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
нажата) }
procedure MouseSetPos(X, Y: Word);
{Установить координаты мыши}
{X,Y - задаваемые координаты мыши }
function MouseGetb(bMask: Word;
var Count,LastX,LastY: Word): Word;
{Определить состояние клавиши}
{bMask - маска клавиш - то же, }
implementation
…
End.
Пример 26. Получение отклика от левой и правой кнопок мыши
uses Crt, Mouse;
var X, Y, BN, NB: Word;
begin
TextBackGround(Blue);
ClrScr;
TextColor(Red);
if MouseInit(NB) then
begin
MouseShow;
repeat
MouseRead(X, Y, BN);
if BN and 1 <> 0 then
begin
{Нажата левая клавиша}
X := X div BN + 1;
Y := Y div BN + 1;
GotoXY(X, Y);
Write(' * ')
88
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
end
until Bn and 2 <> 0;
{Выход при нажатой правой клавише}
end;
end.
9 Возможные варианты индивидуальных заданий на учебную
практику
1.
В поликлинику поступили сведения о проживающих на обслуживаемой
улице в виде таблиц, каждая из которых содержит номер дома, общее число жильцов дома, число детей, число пенсионеров. Всего поступили три такие таблицы.
Требуется сформировать одну линейную таблицу, содержащую сведения о трех домах.
2.
В расписании движения поездов по станции Масловка указаны: номера
поездов, пункты следования, время прибытия и отправления, направления следования (южное, северное, западное, восточное). Сколько поездов следует в каждом из
направлений?
3.
Даны список футбольных команд высшей лиги России и количество оч-
ков, набранных каждой командой в чемпионате России. Известно, что нет команд с
равным числом очков. Какая из команд стала чемпионом? Составьте список команд,
набравших более 15 очков.
4.
Задана таблица названий товаров, выпускаемых заводом. Определите,
повторяется ли в этой таблице название первого товара, и, если повторяется, удалите название первого товара из таблицы.
5.
Ведомость на зарплату представлена как две таблицы. Одна содержит фа-
милии работников цеха, а вторая — их зарплату за текущий месяц.
6.
Найдите фамилию работника, зарплата которого наименее отклоняется от
средней зарплаты всех работников за текущий месяц.
7.
Найдите фамилии двух работников с наибольшей зарплатой
89
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
8.
Удалите из ведомости на зарплату сведения о работнике, зарплата которого
минимальна
9.
Заданы три таблицы: две линейные таблицы А и В и прямоугольная таб-
лица С. В линейной таблице А содержатся фамилии учеников 11 класса, в прямоугольной — их оценки по 10 предметам за первое полугодие, в линейной таблице В
— названия этих предметов.
10. Составьте список неуспевающих учеников. Удалите из таблицы С все
оценки ученика, имеющего больше трех двоек, а из списка А его фамилию.
11. Считая список учеников упорядоченным по алфавиту, внести в него
строку:
12. Иванов Николай
5435424535 Определите по какому предмету самый
высокий средний балл. Найдите любых трех учеников с наибольшим средним баллом по всем предметам. Составьте список учеников в порядке убывания их среднего
балла.
13. В доме проживают 70 семей. Найдите номер квартиры, в которой проживает самая многочисленная семья.
14. Дан список учеников класса и отметки каждого из учеников за выполнение двух контрольных работ. Требуется:
а) подсчитать число учеников, выполнивших первую работу на 5;
б) подсчитать число учеников, выполнивших хотя бы одну работу на 5;
в) подсчитать число учеников, выполнивших обе работы на 5;
г) подсчитать число учеников, выполнивших вторую работу на 4 и 5;
д) подсчитать число учеников, выполнивших обе работы на 4 и 5;
е) найти число учеников, выполнивших обе работы на 5, число учеников, выполнивших обе работы на 4, и число учеников, не выполнивших обе
работы;
ж) найти число учеников, написавших хотя бы одну из двух работ на 5, и
число учеников, не написавших хотя бы одну работу;
з) вывести список учеников, выполнивших первую работу на 5;
и) вывести список учеников, не выполнивших ни одной работы;
90
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
к) вывести список учеников, не выполнивших хотя бы одну работу.
15. Опишите запись с именем типа Karta, содержащую следующие поля:
номер измерения (тип integer) и значение (тип Real). Переменную, определяющую
запись, назовите Z
16. Опишите запись с именем типа Tovar, содержащую следующую информацию о хранящемся на складе товаре: код товара (тип integer), наименование товара (тип string), цену (тип Real). Переменную, определяющую запись, назовите Tov.
17. Опишите запись с именем типа Graf, содержащую следующие данные
необходимые для построения графика из 40 точек: название графика (тип string), 40
значений (тип integer). Переменную, определяющую запись, назовите X.
18. Опишите запись с именем типа Baza, содержащую информацию для
школьной базы данных: личный номер ученика (тип integer), ФИО (тип string), год
рождения (тип integer), адрес (тип string). Переменную, определяющую запись, назовите Inf.
19. Опишите запись с именем типа Systema, содержащую информацию о
планетах солнечной системы: номер планеты по удалению от солнца (тип integer),
название планеты (тип string), объём (тип Real), диаметр (тип Real), удалённость от
земли (тип Real). Переменную, определяющую запись, назовите Planeta.
20. Опишите запись с именем типа Sport, содержащую информацию о лучших спортивных достижениях школы по лёгкой атлетике: название вида (тип string),
фамилия рекордсмена (тип string), дата установления рекорда (запись Dat, состоящая из полей Day, Month, Year), сообщение о результате (тип Real). Переменную,
определяющую запись, назовите Rec.
21. Опишите запись с именем типа Geometr, содержащую информацию об
оценках учеников вашего класса по геометрии: ФИО (тип string), оценки за девять
месяцев max по 20 оценок в месяц. Переменную, определяющую запись, назовите
Dig.
22. Опишите запись с именем типа Rasp, содержащую информацию о движении электропоездов из вашего города: направление (тип string), время отправления электропоездов (тип real). Переменную, определяющую запись, назовите R.
91
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
23. Опишите запись с именем типа Post, содержащую информацию в почтовой базе данных о подписчиках на газеты и журналы: ФИО (тип string), адрес (тип
string), 10 строк с названиями газет и журналов. Переменную, определяющую запись, назовите G.
24. Опишите запись с именем типа Boln, содержащую информацию в больничной базе данных о стационарных больных: ФИО (тип string), возраст (тип
integer), адрес (тип string), дата поступления (тип string), диагноз (тип string), ФИО
лечащего врача(тип string). Переменную, определяющую запись, назовите В.
25. Опишите запись с именем типа Tovar, содержащую информацию о хранящемся на складе товаре: код товара (тип integer), наименование товара (тип string),
дата поступления (тип string), цену (тип real). Переменную, определяющую запись,
назовите Tov. Без помощи with присвойте значение (10, ‘туфли женские’, 45200.00)
полям одной из записей.
26. Опишите запись с именем типа Data, содержащую информацию о средней температуре в хранилище за 30 дней: номер месяца (тип integer), температура
(тип real). Переменную, определяющую запись, назовите Zamer. Без помощи with
Присвойте записи начальное значение: месяц «июль» и температура для первого дня
9,5.
27. Опишите запись с именем типа Graf, содержащую данные, необходимые
для построения графика из 40 точек: название графика (тип string), 40 значений (тип
integer). Переменную, определяющую запись, назовите X. Без помощи with присвойте записи начальное значение: название графика «Y=f(T)», значения первых трёх
точек: 5, 7, 9.
28. Опишите запись с именем типа Post, содержащую информацию в почтовой базе данных о подписчиках на газеты и журналы: ФИО (тип string), адрес (тип
string), 10 строк с названиями газет и журналов. Переменную, определяющую запись, назовите G. Без помощи with присвойте записи начальное значение: ‘Петров
И.В.’,’г.Москва, ул.Горького, 5’,’Московский Комсомолец’,’Спорт’.
29. Опишите запись с именем типа Chempion, содержащую информацию о
чемпионах по разным видам спорта в разное время: ФИО (тип string), вид спорта
92
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
(тип string), год завоевания медали (тип word), призовой фонд (тип real). Переменную, определяющую запись, назовите W.
30. Опишите запись с именем типа Recept, содержащую информацию о рецепте приготовления блюда: название блюда (тип string), инструменты (тип string),
когда подаётся (запись Vremya, состоящая из полей Zavtrak, Obed, Ugin). Переменную, определяющую запись, назовите Eda.
31. Даны список футбольных команд высшей лиги России и количество очков, набранных каждой командой в чемпионате России. Известно, что нет команд с
равным числом очков. Какая из команд стала чемпионом? Составьте список команд,
набравших более 15 очков.
32.
Задана таблица названий товаров, выпускаемых заводом. Определите,
повторяется ли в этой таблице название первого товара, и, если повторяется, удалите название первого товара из таблицы.
33. Задан список фамилий брокеров товарной биржи из N человек. Обменяйте
местами фамилии брокеров: первого и последнего, второго и предпоследнего, третьего
от начала и третьего от конца и т.д.
34. Заданы две таблицы. Одна содержит наименование услуг, выполняемых в
доме быта, а другая — расценки за эти услуги. Удалите из обеих таблиц все, что предшествует услуге, цена которой Р руб.
35. В линейном массиве найдите индексы тех двух элементов, сумма которых
максимальна среди сумм всевозможных пар. Удалите все элементы массива, предшествующие тому элементу, индекс которого наибольший из двух найденных. Преобразованный массив выведите на экран.
36. Заданы стоимость различных деталей, выпускаемых мастерской, и их названия. Отсортируйте их по стоимости и по алфавиту.
37.
Даны список футбольных команд высшей лиги России и количество очков,
набранных каждой командой в чемпионате России. Известно, что нет команд с равным
числом очков, а две команды, набравшие наименьшее число очков, покинут высшую
лигу. Какие это команды?
38. Ведомость на зарплату представлена как две таблицы. Одна содержит фа93
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
милии работников цеха, а вторая — их зарплату за текущий месяц.
а) найдите фамилию работника, зарплата которого наименее отклоняется
от средней зарплаты всех работников за текущий месяц.
б) найдите фамилии двух работников с наибольшей зарплатой
в) удалите из ведомости на зарплату сведения о работнике, зарплата которого минимальна.
10 Эскизы индивидуальных заданий по теме «модуль Graph»
В разделе представлены примерные варианты графических индивидуальных
заданий по теме модуль Graph
Рисунок 12 – Вариант 1
94
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
Рисунок 13 – Вариант 2
Рисунок 14 – Вариант 3
95
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
Рисунок 15 – Вариант 4
Рисунок 16 – Вариант 5
96
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
Рисунок 17 – Вариант 6
Рисунок 18 – Вариант 7
97
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
Рисунок 19 – Вариант 8
Рисунок 20 – Вариант 9
98
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
Рисунок 21 – Вариант 10
Рисунок 22 – Вариант 11
99
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
Рисунок 23 – Вариант 12
Рисунок 24 – Вариант 13
100
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
Рисунок 25 – Вариант 14
Рисунок 26 – Вариант 15
101
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
Рисунок 27 – Вариант 16
Рисунок 28 – Вариант 17
102
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
Рисунок 29 – Вариант 18
Рисунок 30 – Вариант 19
103
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
Рисунок 31 – Вариант 20
Рисунок 32 – Вариант 21
104
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
Рисунок 33 – Вариант 22
Рисунок 34 – Вариант 23
105
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
Рисунок 35 – Вариант 24
Рисунок 36 – Вариант 25
106
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
Рисунок 37 – Вариант 26
107
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
Рисунок 38 – Вариант 27
108
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
Рисунок 39 – Вариант 28
109
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
Рисунок 40 – Вариант 29
110
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
Рисунок 41 – Вариант 30
111
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
11 Вопросы для подготовки к зачету по практике
11.1 Вопросы по теме «Работа с памятью»
1.
Что подразумевается под понятием «память»?
2.
Что представляет собой адресное пространство и адрес?
3.
Охарактеризуйте распределение оперативной памяти.
4.
Какие переменные называются статическими, в каких случаях они при-
меняются, почему их предварительно нужно описывать?
5.
Что такое динамические переменные, каковы причины их использова-
6.
Чем отличаются статические и динамические переменные?
7.
Что такое куча? В какой области памяти компьютера она располагается?
8.
Что называют указателем, базовым типом? Чем отличаются типизиро-
ния?
ванный и нетипизированный указатели?
9.
Назначение указателя Nil.
10. Как объявляются ссылочные типы и ссылочные переменные?
11. С помощью каких процедур происходит распределение памяти под динамические переменные?
12. Какие значения может принимать ссылочная переменная?
13. Какие действия выполняют процедуры new и dispose?
14. Какие действия выполняют процедуры GetMem и FreeMem?
15. Что называется спрайтом?
16. Какие действия выполняет функция ImageSize? Какие параметры у данной функции? Зачем определять размер спрайта?
17. Назначение процедур PutImage и GetImage. Параметры процедур.
18. Способы задания динамического движения графическому объекту в среде Turbo Pascal.
19. Массивы указателей. Объявление, выделение памяти.
112
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
11.2 Вопросы по теме «Управление экраном и звуком компьютера»
1. Каково назначение модуля CRT? Как подключить данный модуль к программе?
2. Какой стандартной процедурой осуществляется установка текстовых режимов?
3. Общие и отличительные черты процедур ClrScr, ClrEol, DelLine и InsLine.
4. Назначение процедуры GoToXY, функций WhereX и WhereY.
5. Какова структура байта атрибута цветности для цветных текстовых режимов?
6. Каково назначение переменной TextAttr? Как влияют на ее значение процедуры TextColor и TextBackGround?
7. Как задается эффект мерцания выводимых символов?
8. Какие процедуры используются для управления яркостью?
9. Какой эффект дает использование буфера дисплея для вывода информации?
10. Какая процедура используется для организации окон в Турбо Паскале?
Каково назначение специальных переменных WindMin и WindMax?
11. Перечислите назначение стандартных процедур Sound, NoSound и Delay
модуля CRT?
12. Какая типичная конструкция используется при организации звуковых
эффектов?
13. Каков будет результат выполнения следующей программы:
program -music; uses Crt;
begin
Sound(12300);
Delay(SOO) ;
NoSound;
end.
113
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
11.3 Вопросы по теме «модуль Graph»
1.
Чем объяснить разные возможности текстового и графического режи-
мов видеомонитора?
2.
За счет каких элементов компьютера обеспечивается аппаратная под-
держка
3.
Какие основные типы видеомониторов персональных компьютеров типа
IBM PC вы знаете? Их отличия.
4.
Что такое видеоадаптер, каково его назначение, из каких основных час-
тей он состоит?
5.
Каково назначение графических драйверов? В каких файлах они нахо-
дятся? Назначение процедуры RegisterBGIDriver?
6.
Назначение стандартного библиотечного модуля GRAPH? Как запустить
графическую систему?
7.
Как включить графический режим? Назначение процедуры InitGraph и
ее параметров: DriverVar, ModeVar, PathToDriver? Как перейти в текстовый режим и
обратно? Как закрыть графический режим?
8.
Какие стандартные функции можно использовать для своевременного
обнаружения и нейтрализации ошибок в графическом режиме?
9.
Какова система координат, используемая при построении графических
изображений на экране?
10. Какую роль выполняет в графическом режиме невидимый текущий указатель СР (Current Pointer)? Как его переместить?
11. Что такое окно? Как создать окно в графическом режиме? Как установить фон графического окна?
12. Какие процедуры используются для работы с графическим примитивом
точкой?
13. Какие процедуры используются для работы с графическим примитивом
— линией?
14. Какие процедуры используются для вывода текста в графическом режи114
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
ме? Каковы особенности вывода численных данных в графическом режиме?
15. Каково отличие растровых и векторных шрифтов?
Как установить
шрифт, задать его размер, ориентацию?
16. Как можно получить информацию о текущей палитре? Как задать цвет
фона, рисунка? Как изменить всю палитру?
17. Какие процедуры используются при рисовании прямоугольников и многоугольников?
18. Опишите полярную систему координат. Какие стандартные процедуры
используются при рисовании окружностей, дуг, эллипсов, секторов?
19. Какие процедуры используются для установки цвета и стиля геометрических фигур?
115
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
Список использованных источников
1.
Дель, Л.А., Практика для получения первичных профессиональных на-
выков: методические указания часть 1 /Л.А.Дель, А.А.Гурьянов; – Оренбург ГОУ
ОГУ, 2007. - 73 с.
2.
Рапаков, Г.Г. Turbo Pascal для студентов и школьников /Г.Г.Рапаков,
С.Ю. Ржеуцкая. - СПб.:БХВ - Петербург,2011. - 252 с.
3.
Семакин, И.Г. Основы программирования /И.Г.Семакин, А.П.Шестаков.
–М.: Академия, 2011. – 400 c.
4.
Фаронов, В.В. TURBO PASCAL 7.0 Практика программирования:
учеб.пособие /В.В.Фаронов. – М.: КНОРУС, 2012. - 414 с.
5.
Деревенец, О.В. Песни о Паскале [Электронный ресурс] / О.В. Дереве-
нец. – Режим доступа : http://oleg-derevenets.narod.ru.
6.
Указатели на Паскале. Динамическая память [Электронный ресурс]. –
Режим доступа :http://life-prog.ru/view_algoritmleng.php?id=122
116
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
Приложение А
(справочная)
Пример оформления графика прохождения практики
Таблица А.1 – График прохождения учебной практики студентов II курса
№
п/п
1
2
3
4
5
6
7
8
9
10
11
12
13
Наименование тем
Вводное занятие. Инструктаж по технике безопасности. Постановка задачи. Содержание и структура отчета по практике.
Ознакомление с устройством ВТ. Выбор метода решения задачи.
Подготовка библиографии.
Составление технического задания на программирование.
Разработка технического проекта индивидуального комплекса, детального алгоритма, состава модулей процедур и функций.
Составление алгоритма и программы индивидуального задания №1
с использование внешних и внутренних файлов.
Процедуры работы с файлами (запись, перезапись, добавления
данных в файл).
Процедуры работы с файлами (чтение, проверка ошибок ввода
(вывода) данных) .
Разработка интерфейса к индивидуальному заданию №1 с использованием стандартного модуля СRT.
Тестирование программы индивидуального задания №1. Модульное тестирование. Поиск ошибок с помощью отладчика.
Интеграционное тестирование программы. Системное тестирование программы. Выходное тестирование программы.
Контрольный просмотр выполненной работы.
Защита проекта.
Разработка эскиза, обобщенного алгоритма индивидуального задания №2, используя процедуры и функции модуля Graph.
Работа с процедурами и функциями модуля Graph. Создание объектов. Работа с цветом изображения.
Разработка программы индивидуального задания №2. Переключение между текстовым и графическим режимом. Отладка и редактирование программы.
Контрольный просмотр выполненной работы.
Проектирование движения изображения.
Процедуры и функции динамического распределения памяти. Сохранение и выдача изображений на экране.
Управление изображением с помощью клавиатуры. Отладка программного модуля.
117
Недели
1неделя
2 неделя
3 неделя
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
Продолжение таблицы А.1
14
15
16
17
18
Процедуры и функции модуля Mouse. Проектирование содержания
отчета к заданию №2. Описание технических требований.
Контрольный просмотр выполненной работы.
Интеграция программных модулей в единый проект.
Отладка проекта. Подготовка к выходному тестированию.
Оформление отчета по практике. Описание характеристик проекта.
Оформление приложений к отчету по практике.
Стандартизация документов по практике.
Зачет по учебной практики.
Экзамен квалификационный
118
4 неделя
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
Приложение Б
(обязательное)
Пример оформления титульного листа
МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ
Федеральное государственное бюджетное образовательное учреждение
высшего профессионального образования
«Оренбургский государственный университет»
КОЛЛЕДЖ ЭЛЕКТРОНИКИ И БИЗНЕСА
ОТЧЕТ ПО УЧЕБНОЙ ПРАКТИКЕ
по профессиональному модулю
«Разработка программных модулей программного обеспечения
для компьютерных систем»
КОГУ 230115.5013. П__
Три последних цифры номера зачетной книжки
Руководитель
__________Фамилия рук.И.О.
«___»___________ 2013 г.
Исполнитель
Студент группы № ПКС-2
_____________Фамилия И.О.
«___»_____________ 2013 г
Оренбург 2013
119
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
Приложения В
(обязательное)
Пример оформления бланка задания
МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ
Федеральное государственное бюджетное образовательное учреждение
высшего профессионального образования
«Оренбургский государственный университет»
КОЛЛЕДЖ ЭЛЕКТРОНИКИ И БИЗНЕСА
Задание на учебную практику
1.
Реализовать модуль для работы с базой данных хранящейся в файле. Оформить задание используя модуль CRT.
2.
Создать сложное графическое изображение, осуществить движение графического объекта, используя спрайты.
Дата выдачи задания: «__ »________ 2013 г.
Руководитель:_____________Фамилия рук.И.О.
Исполнитель:
студент группы № … ПКС-2 _________Фамилия И.О.
Срок защиты работы: «___»__________ 2013 г.
Оренбург 2013
120
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
Приложения Г
(справочное)
Пример оформления содержания
Содержание
Введение ................................................................................................................ 4
1 Инструкция по технике безопасности ............................................................... 5
2 Технические характеристики ПК установленного на практике ....................... 7
3 Структура ОС установленной на ПК ................................................................ 8
4 Используемые профессиональные библиотеки Turbo Pascal ......................... 10
4.1 Модуль Graph ................................................................................................ 10
4.2 Модуль Crt ..................................................................................................... 12
4.3 Модуль Mouse................................................................................................. 14
5 Практическая часть .......................................................................................... 15
5.1 Постановка задачи №1 ................................................................................... 15
5.1.1 Технические требования к выполнению задачи ....................................... 15
5.1.2 Структурная схема программы ................................................................. 16
5.1.3 Функциональное назначение программных модулей .............................. 17
5.1.4 Разработка алгоритма отдельных модулей .............................................. 18
5.1.5 Тестирование и отладка программных модулей ...................................... 20
5.1.6 Листинг программных модулей ................................................................. 21
5.2 Постановка задачи №2 ................................................................................... 36
5.2.1 Технические требования к выполнению задачи ....................................... 36
5.2.2 Тестирование и отладка программы ......................................................... 36
5.2.3 Листинг программы .................................................................................... 37
Заключение ........................................................................................................... 42
Список использованных источников .................................................................. 43
Приложение А – График прохождения практики
Приложение Б – Эскиз изображения (на миллиметровке)
Приложение В – Диск с выполненной работой
Пояснительная записка
Изм. Лист
№ докум.
Разраб.
Провер.
Фамилия рук.
Реценз.
Н. Контр.
Утверд.
Подпись Дата
Лит.
ОТЧЕТ ПО ПРАКТИКЕ
Лист
Листов
3
КОГУ № …ПКС-2
121
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
Приложение Д
(справочное)
Пример оформления списка использованных источников
1. Фаронов В.В. TURBO PASCAL 7.0. Практика программирования : учеб.
пособие / В.В.Фаронов. – М.: КНОРУС, 2012. – 414 с.
2. Семакин И.Г. Основы алгоритмизации и программирования : учебное пособие для спо / И.Г.Семакин, А.П.Шестаков. – 2-е изд., стер. – М.: Академия,
2011. – 400 c.
3. КомпьютерПресс / учредитель ООО «КомпьютерПресс». – 1989, янв.- .
– Финляндия: ScanWeb, 1989 - . – 1 электрон. опт. диск (CD-ROM). – Ежемес.
4. 2007, №1 - 12; 2008, №1 - 12; 2009, №1 - 12; 2010, №1 - 12; 2011, №1 - 12;
5. 2012, №1 - 12;
6. Управление оперативной памятью в ОС [Электронный ресурс] : статьи по
операционным системам. – Режим доступа: http://www.joyous-life.ru/cgibin/index.cgi?&id=50;
122
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
Приложение Ж
(справочное)
Пример оформления рисунков и таблиц
Схема взаимодействия программных модулей представлена на рисунке Ж.1.
Agenstvo
Crt
MenuUnit
Dz
Tabl
BBMenu
Dob
VvodData
Рисунок Ж.1 – Схема взаимодействия модулей
В ходе тестирования были выявлены ошибки, представленные в таблице Ж.1.
Таблица Ж.1 - Ошибки обнаруженные в ходе тестирования
Код ошибки
15
Ошибка
File not found(DZ.TPU).
3
85
Unknown identifier(Vivod;).
“;” expected.
10
Unexpected end of file
55
Interface expected.
123
Исправлено
Указал путь к модулю в
Options/Directories.
Подключил модуль
«Vz».
Добавил ; после оператора End;
Добавил в конец программы оператор End.
Указал Interface после
uses.
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
Приложение И
(справочное)
Справочная информация
Таблица И.1 -Процедуры модуля Graph
Процедура
1
Arc
Bar
Bar3D
Circle
ClearDevice
ClearViewPort
CloscGraph
DetectGraph
DrawPolу
Ellipse
FillEllipse
FillPoty
FloodFill
GetArcCoords
GetAspectRatio
GetFill Pattern
GetFillSettings
Getlmage
GetLineSettings
GetModeRange
GctPalette
GctTcxtSettings
GetViewSettings
Graph Defaults
Действия
2
Рисует дугу от начального угла к конечном;используя (X,Y) как
центр
Рисует полосу, используя текущий стиль и цвет
Рисует трехмерную полосу, используя текущие стиль и цвет
Рисует окружность, используя (X,Y) как центр
Очищает экран и устанавливает текущий указатель (СР) начало
Очишаст окно
Закрывает графическую сисгему
проверяст аппаратуру и определяет, какой графический драйвер и в
каком режиме используется
Рисует многоугольник текущими цветом и типом линии
Рисует эллиптическую дугу от начального угла к конечному, используя (X,Y) как центр
Рисуег заполненный зллипс, используя (X,Y) как центр и XRachus и
YRadius как горизонтальные и вертикальные оси
Заполняет многоугольник, используя сканирование
Заполняет ограниченную область, используя текущий шаблон и цвет
заполнения
Позволяст запросить координаты команды Arc
Возвращает разрешение экрана, из которого может быть вычислен
относительный аспект (Xasp/Yasp)
Возвращает шаблон заполнения, установленный последним вызовом SetFil1Pattern
Позволяет запросить текущие шаблон и цвет, установленные SetFillStyle или SetFil1Pattern
Сохраняет битовый образ указанной части экрана в буфере
Возвращает текущие стиль, шаблон и толщину линии, установленные SetLineStyle
Возвращает минимальный и максимальный графические режимы для
данного драйвера
Возвращает текущую палитру и ее размер
BosBpamaer текущие шрифт, направление, размер и выравнивание
текста, установленные SetTcxtStyle и SetTexUustiry
Позноляет запросить текущие параметры окна и отсечения
Устанавливает текущий указатель (СР) в начало и переустанавливает
графическую систему
124
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
Продолжение таблицы И.1
1
InitGraph
Line
LineRel
LincTo
Move Rel
MovcTo
OutText
OutTextXY
PieSlice
Puf Image
PutPixel
Rectangle
RestoreCRTMode
Sector
SetAcnvcPagc
SetAllPalette
SetAspectRatio
SctBkColor
SetColor
SetFillPattern
SctFillStyle
SetGraphBufSize
SciGraphMode
SefLineStyle
SetPatette
SetTextJustiry
SetTextStyte
SetUserChatSize
SetViewPort
SetVisualPage
SetWriteMode
2
Инициализирует графическую систему и устанавливает устройство в
графический режим
Рисует линию от (X1.Y1) к (X2.Y2)
Рисует линию от текущего указателя (СР) к точке, лежащей
на заданном расстоянии
Рисует линию от текущего указателя к (X,Y)
Передвигает текущий указатель (СР) на заданное расстояние от
его текущей позиции
Передвигает текущий указатель (СР) в (X,Y)
Выводит текст на экран от текущего указателя
Выводит текст на экран
Рисует и заполняет сектор, используя (X,Y) как центр и рисуя от
начального угла к конечному
Выводил битовый образ на экран
Рисует точку (пиксел) в (X,Y)
Рисует прямоугольник, используя текущие цвет и тип линии
Восстанавливает видеорежим, который был до инициализации графики
Рисует и заполняет сектор эллипса
Устанавливает актвиную страницу для графического вывода
Изменяет цвет палитры
Изменяет значение относительного аспекта
Устанавливает цвет фона
Устанавливает основной цвет, которым будет осуществляться рисование
Выбирает шабяон заполнения, определенный пользователем
Устанавливает шаблон -заполнения и цвет
Позволяет изменить размер буферадля функций заполнения
Переводит систему в графический режим и очищает экран
Устанавливает текущие толщину и стиль линии
Изменяет один пнет палитры, указанный через ColorNum и Color
Устанавливает ныравнивание текста, используемое OutText и OutTextXY
Устанавливает текущие шрифт, стиль и размер текста
Поззоляст изменить ширину и высоту символа для штрихового
шрифта
Устанавливает текущее окно для графического вывода
Устанавливает номер видимой графической страницы
Устанавливает режим вывода (копирование илиXOR) для линий, рисуемых с DrawPoly, Line, LineRel, LineTo, Rectangle
125
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
Таблица И.2 – Функции модуля Graph
Функция
GetBkColor
Действие
Возвращает текущий фоновый цвет
GetColor
Возвращает текущий цвет
GetDefauItPalette
Возвращает аппаратную палитру в записи PalettcType
GetDriverNams
Возвращает строку с именем текущего драйвера
GetGraphMode
SetMaxColor
Возвращает текущий графический режим
GetMaxMode
GctMaxX
GctMaxY
GetModeName;
GctPaletteSize
GctPixel
GelX
GetY
GraphErrorMsg
GraphResult
ImageSize
InstallUserFont
RegisterBGIdriver
RegisterBGIfont
TextHeight
TextWidth
Bозращает максимальный цвет, который можно задать в SetColor
Возвращает номер максимального режима текущего загруженного драйвера
Возвращает максимальный X (разрешение по горизонтали)
для текущею гpaфического драйвера и режима
Возвращает максимальный Y (разрешение но вертикали) , текущего графического драйвера и режима
Возращиет строку с именем указанного графического режима
Boзращает размер таблицы палитры
Воэвращаег цвет точки в (X,Y)
Возвращает координату X текущей позиции (СР)
Возращает координату Y текущей позиции (СР)
Возвращает строку сообщения об ошибке для заданного кода
ErrorCode
Возвращает код ошибки для последней графической операции
Возвращает число байтов, требуемое для заполнения прямоугольной области экрана InstallUserDriver.Устанавливает
пользовательский драйвер устройства в BGI-таблицу драйверов устройств
Устанавливает новый шрифт который не встроен и BGI-систему
Регистрирует драйвер ВС1 для графической системы
Регистрирует шрифт BGI для графической системы
Возвращает высоту строки в пикселях
Возвращает ширину строки в пикселях
126
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
Таблица И.3 – Работа с текстовыми блоками
Основные команды
Ctrl+K,B
Ctrl+К,K
Ctrl+K,T
Ctrl+K,L
Shift+End
Shift+ Home
CtrI+K,P
Ctrl+K,V
Ctrl+K,C
Ctrl+K,Y
Ctrl+К,I
Ctrl+K,U
CtrI+K,H
CtrI+K,W
Ctrl+K,R
Ctrl+Q,L
Функции
B отметить начало блока в позиции курсора
отметить конец блока в позиции курсора (новой).
отметить в качестве блока слово слева от курсора.
отметить в качестве блока строку, в которой курсор.
- отметить блок от курсора до конца строки.
отметить блок от курсора до начала строки.
отпечатать текстовый блок (включите принтер).
переместить блок в новую позицию, заданную курсором.
копировать блок в позицию, заданную курсорам.
удалить текстовый блок (или Ctrl+Del)
сместить блок вправо на одну позицию
сместить блок влево на одну позицию
снять световое выделение блока/вновь высветить блок
записать блок на диск (будет запрос, как назвать файл).
вставить текстовый файл, хранимый на диске, в позицию курсора
восстановить испорченную или стертую строку (если курсор не перево-дился на другую строку).
Из одного окна редактора в другое можно переносить:
Ctrl+Ins
F6
Shift+Ins
Shift+Del
копировать блок в так называемый "карман".
перейти в другое окно (или New - открыть другое окно).
копировать блок из "кармана" в окно
поместить блок в "карман", удалив его из окна
Команды, используемые при отладке программы:
F9
Ctrl+F9
F4
F7
F8
Ctrl+F2
Ctrl+F7
Ctrl+F8
Ctrl+F5
F6Alt+F3
Del
запускает компиляцию программы в активном окне.
запускает программу на автоматическое выполнение
запускает программу на выполнение до строки с курсором.
выполняет строку программы с заходом в блоки
выполняет строку программы без захода в блоки
начальная установка программы после прерванного выполнения
добавляет выражение в окно просмотра (окно будет создано).
устанавливает или уничтожает точку прерывания в строке с курсором
открывает экран пользователя (там данные и результаты).
переходит к другому окну, становящимуся активным
закрывает активное окно
уничтожает строки в окне просмотра, когда оно активно.
127
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
Приложение К
(обязательное)
Аттестационные листы к заданиям учебной практики
Аттестационный лист по учебной практике
профессионального модуля Разработка программных модулей
программного обеспечения для компьютерных систем
наименование модуля
Контрольный просмотр задания: Разработка кода программного продукта
на основе готовых спецификаций на уровне модуля
наименование задания
Специальность:
Группа:
Дата:
230115 Программирование в компьютерных системах
.
«____»_____________201__г.
Виды и объем работ, проверяемые у обучающихся:
№
п/п
1.
2.
3.
4.
5.
6.
7.
Вид работ
Описание массива записей.
Чтение данных из файла, вывод массива данных на экран
Добавление данных в созданный файл
Удаление выбранной записи из массива данных
Сортировка записей в базе по одному из полей
Выборка записей из массива данных по заданному критерию
Организация связи с другим файлом (выборка данных из двух
файлов, запись данных в другой файл)
Всего
Руководитель практики:
_______________/______________
подпись
ФИО
_______________/______________
подпись
128
ФИО
Кол-во
часов
5
5
5
10
5
10
10
50
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
Список обучающихся
ФИО студента
1
2
Виды работ (№ п/п)
3
4
5
Средняя оценка по группе
129
6
7
Итоговая
оценка
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
Аттестационный лист по учебной практике
профессионального модуля Разработка программных модулей
программного обеспечения для компьютерных систем
наименование модуля
Контрольный просмотр задания: Проектирование пользовательского
интерфейса
наименование задания
Специальность:
Группа:
Дата:
230115 Программирование в компьютерных системах
.
«____»_____________201__г.
Виды и объем работ, проверяемые у обучающихся:
№
п/п
8.
9.
10.
11.
12.
Вид работ
Организация меню
Управление элементами интерфейса с клавиатуры
Управление элементами интерфейса с помощью мыши
Организация окон
Прорисовка рамок в окнах проекта
Всего
Руководитель практики:
_______________/_____________
подпись
ФИО
_______________/_____________
подпись
130
ФИО
Кол-во
часов
10
8
6
8
4
36
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
Список обучающихся
Виды работ (№ п/п)
Итоговая
оценка
ФИО студента
1
2
3
Средняя оценка по группе
131
4
5
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
Аттестационный лист по учебной практике
профессионального модуля Разработка программных модулей
программного обеспечения для компьютерных систем
наименование модуля
Контрольный просмотр задания: Проектирование программного модуля
работы с графикой
наименование задания
Специальность:
Группа:
Дата:
230115 Программирование в компьютерных системах
.
«____»_____________201__г.
Виды и объем работ, проверяемые у обучающихся:
№
п/п
13.
14.
15.
16.
17.
Вид работ
Создание сложного графического фона
Организация движения графического объекта путем сохранения и
вывода спрайта из памяти
Управление графическим объектом с клавиатуры
Управление графическим объектом с помощью мыши
Подключение программного модуля к основному меню проекта
Всего
Руководитель практики:
_______________/______________
подпись
ФИО
_______________/______________
подпись
132
ФИО
Кол-во
часов
15
10
10
10
3
48
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
Список обучающихся
Виды работ (№ п/п)
Итоговая
оценка
ФИО студента
1
2
3
Средняя оценка по группе
133
4
5
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
Аттестационный лист по учебной практике
профессионального модуля Разработка программных модулей
программного обеспечения для компьютерных систем
наименование модуля
Контрольный просмотр задания: Ведение проектной и технической
документации. Зашита практики
наименование задания
Специальность:
Группа:
Дата:
230115 Программирование в компьютерных системах
.
«____»_____________201__г.
Виды и объем работ, проверяемые у обучающихся:
№
п/п
18.
19.
20.
Вид работ
Тестирование проекта. Поиск ошибок и их отладка
Создание компонент проектной и технической документации
Оформление проектной и технической документации в соответствии со стандартами
Всего
Кол-во
часов
5
3
2
10
Дополнительные критерии, проверяемые у обучающихся:
- точность, правильность, полнота и своевременность выполнения профессиональных задач;
- демонстрация способности принимать решения в стандартных и нестандартных ситуациях и нести за них ответственность;
- обоснованность выбора информационных источников для решения профессиональных задач.
Руководитель практики:
_______________/______________
подпись
ФИО
_______________/______________
подпись
134
ФИО
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
Список обучающихся
виды работ
(№ п/п)
ФИО студента
1
2
3
Средняя оценка по группе
135
итоговые оценки за
контрольные просмотры
КП1 КП2 КП3
зачет по
практике
Документ
Категория
Информатика
Просмотров
175
Размер файла
10 626 Кб
Теги
практике, учебная
1/--страниц
Пожаловаться на содержимое документа