рефераты конспекты курсовые дипломные лекции шпоры

Реферат Курсовая Конспект

Технологии программирования

Технологии программирования - раздел Информатика, Министерство Сельского Хозяйства Российской Федерации Красноярский Г...

Министерство сельского хозяйства Российской Федерации

Красноярский государственный аграрный университет

 

 

«Технологии программирования»

Учебно-методическое пособие к учебной практике

    Красноярск 2010

Оглавление

 

ВВЕДЕНИЕ.. 5

1. ОБЩИЕ СВЕДЕНИЯ.. 6

1.1. Цель и задачи практики. 6

1.2. Организация проведения практики. 6

2. ОТЧЕТ ПО ПРАКТИКЕ.. 9

2.1. Содержание отчета. 9

2.2. Основные требования к оформлению отчета. 9

3. ЗАДАНИЯ.. 11

3.1. Практическое задание 1. 11

3.2. Практическое задание 2. 12

3.3. Практическое задание 3. 24

4. ТЕОРЕТИЧЕСКИЕ СВЕДЕНИЯ.. 27

4.1. Модули. 27

4.1.1. Структура модулей. 28

4.1.2. Заголовок модуля и связь модулей друг с другом.. 29

4.1.3. Интерфейсная часть. 29

4.1.4. Исполняемая часть. 30

4.1.5. Инициирующая часть. 31

4.1.6. Компиляция модулей. 32

4.1.7. Доступ к объявленным в модуле объектам.. 34

4.1.8. Стандартные модули. 36

4.2. Использование библиотеки CRT.. 38

4.2.1. Программирование клавиатуры.. 39

4.2.2. Текстовый вывод на экран. 43

4.2.3. Программирование звукового генератора. 55

4.3. Использование библиотеки GRAPH.. 57

4.3.1. Переход в графический режим и возврат в текстовый. 57

4.3.2. Краткая характеристика графических режимов работы дисплейных адаптеров. 57

4.3.3. Процедуры и функции. 59

4.3.4. Координаты, окна, страницы.. 67

4.3.5. Линии и точки. 75

4.3.6. Многоугольники. 84

4.3.7. Дуги, окружности, эллипсы.. 87

4.3.8. Краски, палитры, заполнения. 93

4.3.9. Сохранение и выдача изображений. 112

4.3.10. Вывод текста. 116

4.3.11. Включение драйвера и шрифтов в тело программы.. 125

Заключение. 129

Список литературы.. 130

Глоссарий. 132

Приложения. 134

Приложение 1. Образец титульного листа. 134

Приложение 2. ГОСТ 19.002-80. 135

Приложение 3. ГОСТ 19.003-80. 149

 


ВВЕДЕНИЕ

 

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

Наибольшее распространение находят языки программирования, имеющие высокий уровень формализации и позволяющие создавать хорошо структурированные программы, предназначенные для решения достаточно обширного класса задач из самых разнообразных сфер деятельности. К таким языкам относятся Паскаль, Си, Модула, Ада и т. д.

Одним из простых для первоначального изучения, но в то же время достаточно универсальным языком программирования является Паскаль, лежащий в основе широко распространенных сред программирования, таких как Borland Pascal, Delphi, Free Pascal Compiler, Lazarus и т.п.

Паскаль является основным языком программирования на младших курсах для студентов специальности 010502.65 – «Прикладная информатика (в экономике)», и направления 080700.62 – «Бизнес - информатика» Института управления и агробизнеса Красноярского государственного аграрного университета.

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

Пособие содержит четыре раздела: в первом приводятся цель и задачи практики и сведения об организации ее проведения, во втором – требования к содержанию и оформлению отчета по практике, в третьем разделе содержатся описания практических заданий, в четвертом – сведения о модулях Паскаля, правилах их построения и описания, а также описаны стандартные модули Borland Pascal - CRT и GRAPH .

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


ОБЩИЕ СВЕДЕНИЯ

 

Цель и задачи практики

Учебная практика по технологиям программирования является а) логическим продолжением дисциплин «Информатика и программирование» и… б) основой для успешного изучения последующих дисциплин, изучаемых на втором и третьем курсах, связанных с…

Организация проведения практики

Учебная практика по технологиям программирования проводится после сдачи летней сессии первого курса (второго семестра). По ее окончании студенты,… Местом проведения данной практики являются учебные компьютерные классы… Для проведения учебной практики и принятия зачетов назначается руководитель из числа преподавателей кафедры…

ОТЧЕТ ПО ПРАКТИКЕ

 

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

 

Содержание отчета

 

Отчет по практике должен содержать:

~ титульный лист (образец приведен в приложении 1);

~ цель практики;

~ задачи практики.

Далее следуют три раздела в соответствии с темами выполненных заданий. В каждом разделе приводятся:

~ тема;

~ условие задания;

~ схема межмодульных связей программы;

~ графические схемы алгоритмов основной программы и всех процедур и функций;

~ исходные тексты программы и всех модулей, содержащие подробные комментарии;

~ «скриншоты» с результатами работы программы.

После третьего раздела приводится список использованных источников информации, включая ссылки на Internet-ресурсы.

 

Основные требования к оформлению отчета

Отчет оформляется на листах белой бумаги формата А4 (210х297 мм) с одной стороны. Шрифт: Times New Roman 14 – 16 (в схемах алгоритмов допускается… Абзацный отступ: 1,27 см., выравнивание: по ширине (за исключением исходных… Поля: слева 20 – 25 мм., справа 5 – 10 мм., сверху и снизу 15 – 20 мм.

ЗАДАНИЯ

 

Практическое задание 1

 

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

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

Процедуры решения задач должны вызавать процедуры/функции ввода исходных данных, собственно обработки и вывода результатов.

Процедуры обработки могут, в свою очередь, вызывать вспомогательные процедуры и функции.

Один из возможных вариантов организации межмодульных связей и распределения процедур и функций по модулям приведен на рисунке 3.1.

 
 

 

 


Рис. 3.1. Возможная схема межмодульных связей

программы для задания 1

A – основная программа, определяет решаемую задачу и вызывает соответствующую процедуру из модуля B;

B – содержит пять процедур решения задач, вызывающих процедуры/функции из модулей C,D,E,F,G;

C – содержит процедуры/функции ввода исходных данных, собственно обработки и вывода результатов для задачи 1;

D – содержит процедуры/функции ввода исходных данных, собственно обработки и вывода результатов для задачи 2;

E – содержит процедуры/функции ввода исходных данных, собственно обработки и вывода результатов для задачи 3;

F – содержит процедуры/функции ввода исходных данных, собственно обработки и вывода результатов для задачи 4;

G – содержит процедуры/функции ввода исходных данных, собственно обработки и вывода результатов для задачи 5.

 

При разработке процедур и функций следует руководствоваться принципами структурного и модульного программирования [4, 7, 8-12], которые, помимо всего прочего, запрещают без крайней необходимости использовать глобальные переменные.

 

Практическое задание 2

 

Данное задание основано на практическом задании 1 и предполагает исключение диалога с пользователем при определении номера рещаемой задачи и замену его на оконный пользовательский интерфейс, построенный с использованием возможностей текстового режима работы видеоадаптера. Один из возможных вариантов оформления окна приведен на рисунке 3.2.

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

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

 

 

 


Рис. 3.2. Возможное оформление окна

 

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

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

 


Таблица 3.1.

Варианты задания 1

Вариант Задача 1 Задача 2 Задача 3
z = + sin, a = sin x y = ln () - e+ , a = 0,5 Вычислить сумму ряда S =
y = sin x + y = ln + , a = 5410 Вычислить сумму ряда S = с погрешностью E>0
y = , z = Вычислить произведение ряда P =
z = e+ 4, 4810 y = - , a = 10 Вычислить сумму ряда S = c погрешностью E > 0
z = + e- 0, 3610 Вычислить сумму ряда S =

 


Продолжение табл. 3.1.

y = e+ cos(2x + 5) + y = e+(sin2x+5x), a = 0,25 Вычислить сумму ряда S =с погрешностью E > 0
y = e+ + ln(x+ 5) y = ; a = 0,4 Вычислить сумму ряда S = 1+
y = e+ cosx + + 1,15 Вычислить сумму ряда S= с погрешностью E > 0
z = + + 10y , y = ln y = Вычислить сумму S =
z =e- 0,0012 y = xln x + ; a = 2,3410 Вычислить сумму S =с погрешностью E > 0
y = (sin x)+ e- ln(x+1) y = + Вычислить сумму S = c погрешностью E > 0

Продолжение табл. 3.1.

y = e+ sinx + - 0,14 y = - ln Вычислить сумму S = с погрешностью E > 0
y = ln y = +arctg+ ; a = 3,5; b = 1,44 Вычислить сумму S = sin x + sin(sin x)+ …+ sin(sin(..sin x)…)
y = 3 sin x + + x- 0,5 y = / ln(1+x); a = 16 Вычислить сумму S = с погрешностью E > 0
y = y = ; a = 0,0034 Вычислить сумму S = (x+h)+2(x+2h)+3(x+3h)+…+N(x+Nh)
y = ln + (x + 5) y = + ; a = 0,74 Вычислить сумму S = с погрешностью E > 0

 


Продолжение табл. 3.1.

y = arctg(x + 1) + e+ ln (x+2) z = ln ; y = 10 Вычислить сумму первых N слагаемых S = 1+
z = 2 cos z = ln Вычислить сумму ряда S = с погрешностью E > 0
z = + - ln (x+4) z = ; y = 1,2 Найти сумму первых N слагаемых S =
y = + z = x+ - ; y = 6,8 ; a = 0,15 Вычислить сумму S = c погрешностью E > 0
y = e+ ln () + 14,4810 z = ; y = 0,72 Вычислить произведение P = (2 +)

 


Продолжение табл. 3.1.

y = eln + z = Вычислить произведение P =()
z = + у = Вычислить сумму S =
z = + у = Вычислить сумму S = с погрешностью E > 0
z = + - 0,02410 у = Вычислить сумму S =

 


Таблица 3.1.

Варианты задания 1 продолжение

Вариант Задача 4 Задача 5
Написать программу расчета среднего арифметического (СА) значения положительных элементов в одномерном массиве, имеющих четные индексы В квадратной матрице [Aij], i,j=заменить нулями элементы с четной суммой индексов, не превышающие некоторого числа X
Написать программу вычисления суммы отрицательных, произведения положительных и количества нулевых значений в одномерном массиве. Получить матрицу [Bij], i,j=из матрицы [Aij], i,j=1 путем перестановки столбцов -– первого с последним, второго с предпоследним и т.д.
Написать программу расчета суммы положительных элементов одномерного массива, имеющих нечетные индексы Получить новую матрицу [Вi,j], i,j=из матрицы[Aij], путем перестановки сегментов по диагонали
Упорядочить одномерный массив в порядке неубывания Получить новую матрицу [Вi,j], i,j= из матрицы[Aij], путем перестановки сегментов по часовой стрелке
Написать программу расчета СА отрицательных элементов в одномерном массиве. Заменить минимальный элемент в одномерном массиве на СА В произвольной матрице [Aij] i=; j=найти минимальный и максимальный элементы, указать номера строк и номера столбцов, на пересечении которых они находятся
Упорядочить одномерный массив в порядке невозрастания Из одномерного массива [Xi] i=получить действительную квадратную матрицу 8*8, элементами которой являются числа x,…,x, расположенные в ней по столбцам

Продолжение табл. 3.1.

В одномерном массиве поменять местами максимальный и минимальный элементы Из одномерного массива [Xi] i=получить действительную квадратную матрицу 8*8, элементами которой являются числа x,…,x, расположенные в ней по строкам
Написать программу расчета среднего геометрического (СГ) положительных элементов в одномерном массиве. Заменить максимальный элемент в одномерном массиве на СГ В произвольной матрице [Aij] i=; j=столбец, содержащий максимальный элемент, заменить на сумму всех элементов матрицы
Произвести попарные перестановки элементов одномерного массива: первый элемент поменять местами с последним, второй элемент – с предпоследним и т.д. Получить квадратную матрицу [Aij], i,j=, элементами главной диагонали которой будут числа в диапазоне от 1 до N
Отыскать последний положительный элемент в одномерном массиве и заменить его на СА элементов массива Получить квадратную матрицу [Aij], i,j=, элементами главной диагонали которой будут числа в диапазоне от N до 1
Дан одномерный массив [Ai]. Сформировать одномерный [Bi] массив из элементов массива [Ai] по закону B=Ai+j, i = ; N = M - i Получить квадратную матрицу [Aij], i,j=, элементами побочной диагонали которой будут числа, получающиеся в результате перемножения i*(i+1), где i – номер строки
Из одномерного массива [Ai] сформировать одномерный массив [Bi], записав в него сначала элементы массива А, имеющие четные индексы, потом – элементы с нечетными индексами Получить квадратную матрицу [Aij], i,j=, элементы которой будут получены следующим образом: в каждой строке матрицы первые (N-i+1) элементов заполнены номером строки, остальные – нулями

Продолжение табл. 3.1.

Отыскать последний отрицательный элемент в одномерном массиве и заменить его на СГ элементов массива Получить матрицу [Cij] i,j= из матриц [Aij] i,j= и [Bij] i,j=путем умножения элементов каждой строки матрицы [Aij] на максимальный элемент соответствующей строки матрицы [Bij]
Заменить в одномерном массиве нулевые элементы на значение минимального элемента В квадратной матрице [Aij] i,j=среди элементов, расположенных ниже главной диагонали, найти минимальный, а среди элементов выше главной диагонали – максимальный. Вывести координаты этих элементов
Сформировать массив [Xi], элементы которого равны частоте встречаемости элементов массива [Bi] среди элементов массива [Ai]. Определить, какой элемент массива [Bi] чаще всего встречается в [Ai] В квадратной матрице [Aij] i,j= среди элементов, расположенных ниже побочной диагонали, определить количество положительных элементов, а среди элементов выше побочной диагонали – количество отрицательных элементов
Сформировать массив [Xi], элементы которого равны полусумме двух соседних элементов одномерного массива [Yi] Из квадратной матрицы [Aij] i,j=сформировать одномерный массив [Xi] i=по следующему правилу: элементами одномерного массива [Xi] с нечетными индексами будут элементы главной диагонали [Aij], с четными – побочной диагонали [Aij]

 


Продолжение табл. 3.1.

Сформировать массив [Ai] из элементов одномерного массива [Bi] по закону A= (B+B)/4, i = Сформировать одномерный массив [Xi] i= из сумм положительных элементов строк матрицы [Aij] j,i=, попутно определяя номера строк матрицы [Aij] i,j=, в которых отсутствуют положительные элементы
Сформировать массив [Ai] из элементов одномерного массиваj =по закону A= Bi+BN/2+i ; i = Сформировать одномерный массив [Bi] i=из минимальных элементов строк прямоугольной матрицы[Aij] i=, j=. Подсчитать количество элементов массива [Bi], попавших в интервал (x,y)
Из одномерного массива [Bi] сформировать массив [Ai] по закону A= (B)/(j +1); j = Сформировать одномерный массив [Bi] i=из максимальных элементов столбцов прямоугольной матрицы [Aij] i=, j=. В массиве [Bi] поменять местами первый отрицательный и последний положительный элементы
Из одномерного массива [Bi] сформировать массив [Xi] по следующему закону: Xi = где y – некоторая константа В квадратной матрице [Aij] i,j=заменить элементы главной и побочной диагоналей на минимальный элемент главной диагонали
В одномерном массиве переставить местами соседние элементы с четными и нечетными индексами В произвольной матрице [Aij] i=, j=поменять местами строку, содержащую минимальный элемент, со строкой, содержащей максимальный элемент

Окончание табл. 3.1.

В одномерном массиве вычислить сумму элементов, значения которых кратны некоторому значению X В квадратной матрице [Aij] i,j=найти максимальный элемент среди элементов, стоящих на главной и побочной диагоналях, и поменять его местами с элементом, стоящим на пересечении этих диагоналей
В одномерном массиве подсчитать количество элементов, значениями которых являются простые числа (простое число – это число, делящееся нацело только на единицу и само на себя) В квадратной матрице [Aij] i,j=определить номер столбца матрицы, имеющего наибольшую сумму элементов. Поменять этот столбец со строкой, имеющей наименьшую сумму элементов
Сформировать массив [Bi], содержащий последовательность чисел Фибоначчи: B= B+ B; i = ; B=X, B=Xгде Х, Х– некоторые числа В квадратной матрице [Aij] i,j=найти наибольшее из значений элементов, расположенных в первом и третьем секторах матрицы, полученных в результате пересечения главной и побочной диагонали
Вычислить сумму правых разностей элементов одномерного массива [Bi] S = (B- B) В квадратной матрице [Aij] i,j=найти наибольшее из значений элементов, расположенных во втором и четвертом секторах матрицы, полученных в результате пересечения главной и побочной диагонали

 


 

Практическое задание 3

 

Написать программу, выполняющую четыре операции над графическим объектом («фигурой»): движение, вращение, управление движением, управление вращением.

Вид фигуры зависит от варианта и приведен в таблице 3.2.

Движение – перемещение фигуры в одном из восьми направлений, пока нажата соответствующая клавиша на клавиатуре.

Вращение – поворот фигуры вокруг своего геометрического центра вправо (по часовой стрелке) или влево (против часовой стрелки), пока нажата соответствующая клавиша на клавиатуре.

Управление движением – самостоятельное перемещение фигуры в одном из восьми направлений, задаваемых однократным нажатием соответствующих клавиш на клавиатуре.

Управление вращением – самостоятельный поворот фигуры вокруг своего геометрического центра вправо или влево в соответствии с однократным нажатием соответствующих клавиш на клавиатуре.

Программа должна иметь оконный интерфейс, аналогичный изображенному на рисунке 3.2, и модульную структуру, соответствующую требованиям задания 1.

Один из возможных вариантов организации межмодульных связей и распределения процедур и функций по модулям приведен на рисунке 3.3.

 
 

 

 


Рис. 3.3. Возможная схема межмодульных связей

программы для задания 3

A – основная программа, оформляет окно и определяет выполняемую операцию путем вызыва соответствующих процедур/функций из модуля B, для выполнения операции вызывает одну из процедур модуля C;

 

B – содержит процедуры/функции оформления окна и работы с меню, разработанные в соответствии с требованиями к аналогичным процедурам, изложенными в задании 2;

C – содержит четыре процедуры выполнения операций, вызывающих процедуры/функции из модулей D и E;

D – содержит восемь процедур перемещения фигуры на один шаг, использующих процедуры модуля F;

E – содержит процедуры поворота фигуры на элементарный угол, использующих процедуры модуля F;

F – содержит процедуры рисования и стирания фигуры.

Таблица 3.2

Варианты задания 2

Вариант Фигура[1] Вариант Фигура
         
 
 
 

 

 

 
 
 

 


 
 
 

 

 
 
 

 

 
 
 

 

Окончание таблицы 3.2

 
 

 

 
 

 

   
   
 
 
 

 

 

 
 
 

 

 

 
 
 

 

 

 
 
 

 


 
 
 

 


 
 

 

       
 
 
   

 

       
 
 
   

 

     

 


4. ТЕОРЕТИЧЕСКИЕ СВЕДЕНИЯ[2]

 

Модули

 

Стандартный Паскаль не предусматривает механизмов раздельной компиляции частей программы с последующей их сборкой перед выполнением. Более того, последовательное проведение в жизнь принципа обязательного описания любого объекта перед его использованием делает фактически невозможным разработку разнообразных библиотек прикладных программ [1-3]. Точнее, такие библиотеки в рамках стандартного Паскаля могут существовать только в виде исходных текстов, и программист должен сам включать в программу подчас весьма обширные тексты различных поддерживающих процедур, таких, как процедуры матричной алгебры, численного интегрирования, математической статистики и т.п.

Вполне понятно поэтому стремление разработчиков коммерческих компиляторов Паскаля включать в язык средства, повышающие его модульность. Чаще всего таким средством является разрешение использовать внешние процедуры и функции, тело которых заменяется стандартной директивой EXTERNAL. Разработчики Турбо Паскаля пошли в этом направлении еще дальше, включив в язык механизм так называемых модулей.

Модуль – это автономно компилируемая программная единица, включающая в себя различные компоненты раздела описаний (типы, константы, переменные, процедуры и функции) и, возможно, некоторые исполняемые операторы инициирующей части[1-3, 13, 16]. По своей организации и характеру использования в программе модули Турбо Паскаля близки к модулям-пакетам (PACKAGE) языка программирования Ада. В них так же, как в пакетах Ады, явным образом выделяется некоторая «видимая» интерфейсная часть, в которой сконцентрированы описания глобальных типов, констант и переменных, а также приводятся заголовки глобальных процедур и функций. Появление объектов в интерфейсной части делает их доступными для других модулей и основной программы. Тела процедур и функций располагаются в исполняемой части модуля, которая может быть скрыта от пользователя.

Насколько сильно изменяются свойства языка Паскаль при введении механизма модулей, свидетельствует следующее замечание его автора Н. Вирта, сделанное им по поводу более позднего языка Модула-2: «Модули – самая важная черта, отличающая язык Модула-2 от его предшественника Паскаля»[5].

Модули представляют собой прекрасный инструмент для разработки библиотек прикладных программ и мощное средство модульного программирования. Важная особенность модулей заключается в том, что компилятор Турбо Паскаля размещает их программный код в отдельном сегменте памяти. Максимальная длина сегмента не может превышать 64 Кбайта, однако количество одновременно используемых модулей ограничивается лишь доступной памятью, что дает возможность создавать весьма крупные программы.

 

Структура модулей

UNIT <имя>; INTERFACE <интерфейсная часть>

Заголовок модуля и связь модулей друг с другом

Unit Global; то исходный текст соответствующего модуля должен размещаться в дисковом файле… USES <сп. модулей> ;

Интерфейсная часть

Интерфейсная часть открывается зарезервированным словом INTERFACE. В этой части содержатся объявления всех глобальных объектов модуля (типов, констант, переменных и подпрограмм), которые должны стать доступными основной программе и/или другим модулям [1 – 3, 13 – 16]. При объявлении глобальных подпрограмм в интерфейсной части указывается только их заголовок, например:

Unit Cmplx;

Interface

tуре

complex = record

re, im : real

end;

Procedure AddC (x, у : complex; var z : complex);

Procedure MulC (x, у : complex; var z : complex);

Если теперь в основной программе написать предложение

Uses Cmplx;

то в программе станут доступными тип COMPLEX и две процедуры – ADDC и MULC из модуля CMPLX.

Отметим, что объявление подпрограмм в интерфейсной части автоматически сопровождается их компиляцией с использованием дальней модели памяти. Таким образом обеспечивается доступ к подпрограммам из основной программы и других модулей. Следует учесть, что все константы и переменные, объявленные в интерфейсной части модуля, равно как и глобальные константы и переменные основной программы, помещаются компилятором Турбо Паскаля в общий сегмент данных (максимальная длина сегмента 65536 байт). Порядок появления различных разделов объявлений и их количество могут быть произвольными. Если в интерфейсной части объявляются внешние подпрограммы или подпрограммы в машинных кодах, их тела (т.е. зарезервированное слово EXTERNAL, в первом случае, и машинные коды вместе со словом INLINE – во втором) должны следовать сразу за их заголовками в исполняемой части модуля (не в интерфейсной!). В интерфейсной части модулей нельзя использовать опережающее описание.

 

Исполняемая часть

Исполняемая часть начинается зарезервированным словом IMPLEMENTATION и содержит описания подпрограмм, объявленных в интерфейсной части. В ней могут объявляться локальные для модуля объекты – вспомогательные типы, константы, переменные и блоки, а также метки, если они используются в инициирующей части [1 – 3, 13 – 16].

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

Unit Cmplx;

Interface

type

complex = record

re, im : real

end;

Procedure AddC (x, у : complex; var z : complex);

Implementation

Procedure AddC;

begin

z.re := x.re +Y.re;

z.im := x.im +y.im

end;

end.

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

 

Инициирующая часть

Инициирующая часть завершает модуль. Она может отсутствовать вместе с начинающим ее словом BEGIN или быть пустой, тогда за BEGIN сразу следует признак конца модуля (слово END и следующая за ним точка) [1-3, 13-16].

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

Unit FileText;

Interface

Procedure Print(s : string);

Implementation

var

f: text; const

name = 'output.txt'; Procedure Print;

begin

WriteLn(f, s)

end;

{ Начало инициирующей части: }

begin

assign(f, name);

rewrite(f);

{ Конец инициирующей части }

end.

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

 

Компиляция модулей

При компиляции модуля или основной программы в режиме COMPILE все упоминающиеся в предложении USES модули должны быть предварительно откомпилированы… Uses Global; то на диске в каталоге, объявленном опцией UNIT DIRECTORIES, уже должен находиться файл GLOBAL.TPU. Файл с расширением…

Доступ к объявленным в модуле объектам

UNIT Cmplx; {---------------------} INTERFACE

Стандартные модули

Ниже приводится краткая характеристика стандартных модулей. Модуль SYSTEM. В него входят все процедуры и функции стандартного Паскаля, а… Модуль PRINTER. Делает доступным вывод текстов на матричный принтер. В нем определяется файловая переменная LST типа…

Использование библиотеки CRT

Во многих случаях стандартные для Паскаля возможности ввода/вывода данных с помощью процедур Read, ReadLn, Write, WriteLn оказываются явно… Разработчики Турбо Паскаля предусмотрели несколько подпрограмм, существенно… Аббревиатура CRT соответствует русскоязычной аббревиатуре ЭЛТ – электронная лучевая трубка. На профессиональном…

Программирование клавиатуры

Дополнительные возможности управления клавиатурой реализуются двумя функциями: KeyPressed и ReadKey.

Функция KeyPressed

В MS-DOS реализуется так называемый асинхронный буферизованный ввод с клавиатуры. По мере нажатия на клавиши соответствующие коды помещаются в…

Функция ReadKey

Пусть, например, в какой-то точке программы необходимо игнорировать все ранее нажатые клавиши, коды которых еще не прочитаны из буфера, т.е.… Uses CRT; var

Текстовый вывод на экран

Исторически первым адаптером (1981 г.), использованным на IBM PC, был так называемый монохромный адаптер (MDA). Его возможности очень скромны: он… В 1982 году фирма Hercules выпустила адаптер HGC (от англ. Hercules Graphics… Примерно в это же время IBM выпустила цветной графический адаптер CGA (Color Graphics Adapter) и впервые на экране ПК…

Процедура TextMode

Procedure TextMode(Mode: Word); Здесь Mode – код текстового режима. В качестве значения этого выражения могут… const

Процедура TextColоr

Определяет цвет выводимых символов. Заголовок процедуры:

Procedure TextColor(Color: Byte);

Процедура TextBackground

Procedure TextBackground(Color: Byte); Единственным параметром обращения к этим процедурам должно быть выражение типа… const

Процедура ClrScr

Uses CRT; var С: Char

Процедура Window

Procedure Window(XI,Y1,X2,Y2: Byte); ЗдесьX1...Y2 – координаты левого верхнего (XI,Y1) и правого нижнего (X2,Y2)… В следующем примере иллюстрируется вывод достаточно длинного сообщения в двух разных окнах.

Процедура GotoXY

Переводит курсор в нужное место экрана или текущего окна. Заголовок процедуры:

Procedure GotoXY(X,Y: Byte);

Здесь X, Y - новые координаты курсора. Координаты задаются относительно границ экрана (окна), т.е оператор

GotoXY(1,1);

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

Функции WhereX и WhereY

В следующей программе сначала в центре экрана создается окно, которое обводится рамкой, затем в окне выводится таблица из двух колонок. Uses CRT; const

Процедура ClrEOL

Стирает часть строки от текущего положения курсора до правой границы окна (экрана). Положение курсора не меняется.

Процедура DelLine

Уничтожает всю строку с курсором в текущем окне (или на экране, если окно не создано). При этом все строки ниже удаляемой (если они есть) сдвигаются вверх на одну строку.

Процедура InsLine

Вставляет строку: строка с курсором и все строки ниже ее сдвигаются вниз на одну строку; строка, вышедшая за нижнюю границу окна (экрана), безвозвратно теряется; текущее положение курсора не меняется.

Процедуры LowVideo, NormVideo и HighVideo

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

Uses CRT;

begin

LowVideo;

WriteLn('Пониженная яркость');

NormVideo;

WriteLn('Нормальная яркость');

HighVideo;

WriteLn('Повышенная яркость')

end.

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

Процедура AssignCRT

Procedure AssignCRT(F: Text); В следующей программе измеряется скорость вывода на экран с помощью… Заметим, что показания системных часов хранятся в оперативной памяти компьютера в виде четырехбайтного слова по адресу…

Программирование звукового генератора

Звуковые возможности ПК основаны на одноканальном управляемом звуковом генераторе, вырабатывающем электромагнитные колебания звуковой частоты. Колебания подаются на встроенный в ПК динамик и заставляют его звучать.

В модуль CRT включено три процедуры, с помощью которых вы сможете запрограммировать произвольную последовательность звуков.

Процедура Sound

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

Procedure Sound(F: Word);

Здесь F – выражение типа Word, определяющее частоту звука в герцах. После обращения к процедуре включается динамик и управление немедленно возвращается в основную программу, в то время как динамик будет звучать впредь до вызова процедуры NoSound.

Процедура NoSound

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

Процедура Delay

Procedure Delay(T: Word); Здесь Т – выражение типа Word, определяющее интервал времени (в… Для генерации звукового сигнала обычно используется вызов описанных процедур по схеме Sound-Delay-NoSound. Следующая…

Использование библиотеки GRAPH

 

Начиная с версии 4.0, в состав Турбо Паскаля включена мощная библиотека графических подпрограмм Graph, остающаяся практически неизменной во всех последующих версиях [1-3, 5]. Библиотека содержит в общей сложности более 50 процедур и функций, предоставляющих программисту самые разнообразные возможности управления графическим экраном. Для облегчения знакомства с библиотекой все входящие в нее процедуры и функции сгруппированы по функциональному принципу.

 

Переход в графический режим и возврат в текстовый

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

 

Краткая характеристика графических режимов работы дисплейных адаптеров

Выпускаемые в настоящее время ПК оснащаются адаптерами, разработанными фирмой IBM или совместимыми с ними. Если не учитывать уже упоминавшийся… Графические возможности конкретного адаптера определяются разрешением экрана,… Адаптер CGA (Color Graphics Adapter – цветной графический адаптер), имеет 5 графических режимов. Четыре режима…

Процедуры и функции

Процедура InitGraph

Procedure InitGraph(var Driver,Mode: Integer; Path: String); Здесь Driver – переменная типа Integer, определяет тип графического драйвера;… К моменту вызова процедуры на одном из дисковых носителей информации должен находиться файл, содержащий нужный…

Функция GraphResult

const grOk = 0;{Нет ошибок} grlnitGraph =-1;{He инициирован графический режим}

Функция GraphErrorMsg

Function GraphErrorMsg(Code: Integer): String; Здесь Code – код ошибки, возвращаемый функцией GraphResult. Например, типичная последовательность операторов для инициации графического режима с автоматическим определением типа…

Процедура CloseGraph

Завершает работу адаптера в графическом режиме и восстанавливает текстовый режим работы экрана. Заголовок:

Procedure CloseGraph;

Процедура RestoreCRTMode

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

Procedure RestoreCRTMode;

Функция GetGraphMode.

Возвращает значение типа Integer, в котором содержится код установленного режима работы графического адаптера. Заголовок:

Function GetGraphMode: Integer;

Процедура SetGraphMode

Procedure SetGraphMode(Mode: Integer); Здесь Mode – код устанавливаемого режима. Следующая программа иллюстрирует переход из графического режима в текстовый и обратно:

Процедура DetectGraph

Возвращает тип драйвера и режим его работы. Заголовок:

Procedure DetectGraph(var Driver,Mode: Integer);

Здесь Driver - тип драйвера; Mode - режим работы.

В отличие от функции GetGraphMode описываемая процедура возвращает в переменной Mode максимально возможный для данного адаптера номер графического режима.

Функция GetDriverName

Возвращает значение типа String, содержащее имя загруженного графического драйвера. Заголовок:

Function GetDriverName: String;

Функция GetMaxMode

Возвращает значение типа Integer, содержащее количество возможных режимов работы адаптера. Заголовок:

Function GetMaxMode: Integer;

Функция GetModeName

Function GetModName(ModNumber: Integer): String; Здесь ModNumber – номер режима. Следующая программа после инициации графического режима выводит на экран строку, содержащую имя загруженного драйвера,…

Процедура GetModeRange

Procedure GetModeRange(Drv: Integer; var Min, Max: Integer); Здесь Drv – тип адаптера; Min - переменная типа Integer, в которой… Если задано неправильное значение параметра Drv, процедура вернет в обеих переменных значение -1. Перед обращением к…

Координаты, окна, страницы

 

Многие графические процдуры и функции используют указатель текущей позиции на экране, который в отличие от текстового курсора невидим. Положение этого указателя, как и вообще любая координата на графическом экране, задается относительно левого верхнего угла, который, в свою очередь, имеет координаты 0,0. Таким образом, горизонтальная координата экрана увеличивается слева направо, а вертикальная – сверху вниз.

Функции GetMaxX и GetMaxY

Возвращают значения типа Word, содержащие максимальные координаты экрана в текущем режиме работы соответственно по горизонтали и вертикали. Например:

Uses Graph;

var

a,b: Integer;

begin

a := Detect; InitGraph(a, b, '');

WriteLn(GetMaxX, GetMaxY:5);

ReadLn;

CloseGraph

end.

Функции GetX и GetY

Возвращают значения типа Integer, содержащие текущие координаты указателя соответственно по горизонтали и вертикали. Координаты определяются относительно левого верхнего угла окна или, если окно не установлено, экрана.

Процедура SetViewPort

Procedure SetViewPort(XI,Y1,X2,Y2: Integer; ClipOn: Boolean); Здесь X1...Y2 – координаты левого верхнего (XI,Y1) и правого нижнего (X2,Y2)… Координаты окна всегда задаются относительно левого верхнего угла экрана. Если параметр ClipOn имеет значение True,…

Процедура GetViewSettings

Возвращает координаты и признак отсечки текущего графического окна. Заголовок:

Procedure GetViewSettings(var Viewlnfo: ViewPortType);

Здесь Viewlnfo – переменная типа ViewPortType. Этот тип в модуле Graph определен следующим образом:

type

ViewPortType = record

x1,y1,x2,y2: Integer; {Координаты окна}

Clip : Boolean {Признак отсечки}

end ;

Процедура MoveTo

Устанавливает новое текущее положение указателя. Заголовок:

Procedure MoveTo(X,Y: integer);

Здесь X, Y – новые координаты указателя соответственно по горизонтали и вертикали.

Координаты определяются относительно левого верхнего угла окна или, если окно не установлено, экрана.

Процедура MoveRel

Устанавливает новое положение указателя в относительных координатах.

Procedure MoveRel(DX,DY: Integer);

Здесь DX.DY – приращения новых координат указателя соответственно по горизонтали и вертикали.

Приращения задаются относительно того положения, которое занимал указатель к моменту обращения к процедуре.

Процедура ClearDevice

Очищает графический экран. После обращения к процедуре указатель устанавливается в левый верхний угол экрана, а сам экран заполняется цветом фона, заданным процедурой SetBkColor. Заголовок:

Procedure ClearDevice;

Процедура ClearViewPort

Procedure ClearViewPort; В следующей программе на экране создается окно, которое затем заполняется…

Процедура GetAspectRatio

Procedure GetAspectRatio(var X,Y: Word); Здесь X, Y – переменные типа Word. Значения, возвращаемые в этих переменных,… GetAspectRatio (Xasp, Yasp);

Процедура SetAspectRatio

Procedure SetAspectRatio(X,Y: Word); Здесь X, Y- устанавливаемые соотношения сторон. Следующая программа строит 20 окружностей с разными соотношениями сторон экрана (рис. 4.3).

Процедура SetActivePage

Procedure SetActivePage(PageNum: Word); Здесь PageNum – номер страницы. Процедура может использоваться только с адаптерами, поддерживающими многостраничную работу (EGA, VGA и т.п.).…

Процедура SetVisualPage

Procedure SetVisualPAge(PageNum: Word); Здесь PageNum – номер страницы. Процедура может использоваться только с адаптерами, поддерживающими многостраничную работу (EGA, VGA и т.п.).…

Линии и точки

Процедура PutPixel

Procedure PutPixel(X,Y: Integer; Color: Word); Здесь X, Y– координаты точки; Color – цвет точки. Координаты задаются относительно левого верхнего угла окна или, если окно не установлено, относительно левого верхнего…

Функция GetPixel

Возвращает значение типа Word, содержащее цвет пикселя с указанными координатами. Заголовок:

Function GetPixel(X,Y: Integer): Word;

Здесь X, Y – координаты пикселя.

Процедура Line

Procedure Line(X1,Y1,X2,Y2: Integer); Здесь XL. .Yl – координаты начала (XI, Y1) и конца (Х2, Y2) линии. Линия вычерчивается текущим стилем и текущим цветом. В следующей программе в центре экрана создается окно, которое…

Процедура LineTo

Вычерчивает линию от текущего положения указателя до положения, заданного его новыми координатами. Заголовок:

Procedure LineTo(X,Y: Integer);

Здесь X, Y – координаты нового положения указателя, они же - координаты второго конца линии.

Процедура LineRel

Вычерчивает линию от текущего положения указателя до положения, заданного приращениями его координат. Заголовок:

Procedure LineRel (DX, DY: Integer);

Здесь DX, DY – приращения координат нового положения указателя. В процедурах LineTo и LineRel линия вычерчивается текущим стилем и текущим цветом.

Процедура SetLineStyle

Procedure SetLineStyle(Type,Pattern,Thick: Word) Здесь Type, Pattern, Thick – соответственно тип, образец и толщина линии. Тип… const

Процедура GetLineSettings

Возвращает текущий стиль линий. Заголовок:

Procedure GetLineSettings(var Stylelnfo: LineSettingsType)

Здесь Stylelnfo – переменная типа LineSettingsType, в которой возвращается текущий стиль линий.

Тип LineSettingsType определен в модуле Graph следующим образом:

type

LineSettingsType = record

LineStyle: Word; {Тип линии}

Pattern : Word; {Образец}

Thickness: Word {Толщина}

end;

Процедура SetWriteMode

Procedure SetWriteMode(Mode); Здесь Mode – выражение типа Integer, задающее способ взаимодействия выводимых… Если параметр Mode имеет значение 0, выводимые линии накладываются на существующее изображение обычным образом…

Многоугольники

Процедура Rectangle

Procedure Rectangle(X1,Y1,X2,Y2: Integer); Здесь X1... Y2 – координаты левого верхнего (X1, Y1) и правого нижнего (Х2,… В следующем примере на экране вычерчиваются 10 вложенных друг в друга прямоугольников.

Процедура DrawPoly

Procedure DrawPoly(N: Word; var Points) Здесь N – количество точек излома, включая обе крайние точки; Points –… Координаты точек излома задаются парой значений типа Word: первое определяет горизонтальную, второе - вертикальную…

Дуги, окружности, эллипсы

Процедура Circle

Procedure Circle(X,Y: Integer; R: Word); ЗдесьX, Y– координаты центра; R – радиус в пикселях. Окружность выводится текущим цветом. Толщина линии устанавливается текущим стилем, вид линии всегда SolidLn…

Процедура Arc

Procedure Arc(X,Y: Integer; BegA,EndA,R: Word); Здесь X, Y – координаты центра; BegA, EndA – соответственно начальный и… Углы отсчитываются против часовой стрелки и указываются в градусах. Нулевой угол соответствует горизонтальному…

Процедура GetArcCoords

Procedure GetArcCoords(var Coords: ArcCoordsType); Здесь Coords – переменная типа ArcCoordsType, в которой процедура возвращает… Тип ArcCoordsType определен в модуле Graph следующим образом:

Процедура Ellipse

Procedure Ellipse(X,Y: Integer; BegA,EndA,RX,RY: Word); Здесь X, Y – координаты центра; BegA, EndA – соответственно начальный и… При вычерчивании дуги эллипса используются те же соглашения относительно линий, что и в процедуре Circle, и те же…

Краски, палитры, заполнения

Процедура SetColor

Устанавливает текущий цвет для выводимых линий и символов. Заголовок:

Procedure SetColor(Color: Word);

Здесь Color – текущий цвет.

В модуле Graph определены точно такие же константы для задания цвета, как и в модуле CRT.

Функция GetColor

Возвращает значение типа Word, содержащее код текущего цвета. Заголовок:

Function GetColor: Word;

Функция GetMaxColor

Возвращает значение типа Word, содержащее максимальный доступный код цвета, который можно использовать для обращения к SetColor. Заголовок:

Function GetMaxColor: Word;

Процедура SetBkColor

Procedure SetBkColor(Color: Word); Здесь Color – цвет фона. В отличие от текстового режима, в котором цвет фона может быть только темного оттенка, в графическом режиме он может…

Функция GetBkColor

Возвращает значение типа Word, содержащее текущий цвет фона. Заголовок:

Function GetBkColor: Word;

Процедура SetPalette

Procedure SetPalette(N: Word; Color: Shortlnt); Здесь N – номер цвета в палитре; Color – номер вновь устанавливаемого цвета. … Данная процедура может работать только с адаптерами EGA или VGA. Она не должна использоваться с IBM8514 или…

Процедура GetPalette

Procedure GetPalette(var Palettelnfo: PaletteType); Здесь Palettelnfo – переменная типа PaletteType, возвращающая размер и цвета… В модуле Graph определена константа

Процедура SetAllPalette

Procedure SetAllPalette(var Palette); Параметр Palette в заголовке процедуры описан как нетипизированный параметр.… В следующей программе происходит одновременная смена сразу всех цветов палитры.

Функция GetPaletteSize

Возвращает значение типа Integer, содержащее размер палитры (максимальное количество доступных цветов). Заголовок:

Function GetPaletteSize: Integer;

Процедура GetDefaultPalette

Возвращает структуру палитры, устанавливаемую по умолчанию (в режиме автонастройки). Заголовок:

Procedure GetDefaultPalette(var Palette: PaletteType);

Здесь Palette – переменная типа PaletteType (см. процедуру GetPalette), в которой возвращаются размер и цвета палитры.

Процедура SetFillStyle

Procedure SetFillStyle(Fill,Color: Word); Здесь Fill – тип заполнения; Color – цвет заполнения. С помощью заполнения можно покрывать какие-либо фрагменты изображения периодически повторяющимся узором. Для указания…

Процедура SetFillPattern

Procedure SetFillPattern(Pattern: FillPatternType;Color: Word); Здесь Pattern – выражение типа FillPatternType; устанавливает образец рисунка… Образец рисунка задается в виде матрицы из 8x8 пикселей и может быть представлен массивом из 8 байт следующего типа: …

Процедура GetFillPattern

Возвращает образец заполнения, установленный ранее процедурой SetFillPattern. Заголовок:

Procedure GetFillPattern(var Pattern: FillPatternType);

Здесь Pattern – переменная типа FillPatternType, в которой возвращается образец заполнения.

Если программа не устанавливала образец с помощью процедуры SetFillPattern, массив Pattern заполняется байтами со значением 255 ($FF).

Процедура GetFillSettings

Procedure GetFillSettings(var Pattlnfo: FillSettingsType); Здесь Pattlnfo – переменная типа FillSettingsType, в которой возвращается… В модуле Graph определен тип:

Процедура SetRGBPalette

Procedure SetRGBPalette(ColNum, RedVal,GreenVal,BlueVal:Integer); Здесь ColNum – номер цвета; RedVal, GreenVal, BlueVal – выражения типа Integer, устанавливающие интенсивность…

Процедура FloodFill

Procedure FloodFill(X,Y: Integer; Border: Word); Здесь X, Y – координаты любой точки внутри замкнутой фигуры; Border – цвет… Если фигура не замкнута, заполнение «разольется» по всему экрану.

Процедура Bar

Procedure Bar(X1,Y1,X2,Y2: Integer); Здесь XJ...Y2 – координаты левого верхнего (X1, Y1) и правого нижнего (Х2, Y2)… Процедура закрашивает (но не обводит) прямоугольник текущим образцом узора и текущим цветом, которые устанавливаются…

Процедура Ваr3D

Procedure Ваr3D (X1,Y1,X2,Y2,Depth: Integer; Top: Boolean); Здесь X1... Y2 – координаты левого верхнего (X1, Y1) и правого нижнего (Х2,… Если параметр Тор имеет значение True, верхняя грань параллелепипеда вычерчивается, в противном случае - не…

Процедура FillPoly

Procedure FillPoly(N: Word; var Coords); Здесь N – количество вершин замкнутого многоугольника; Coords – переменная… Координаты вершин задаются парой значений типа Integer: первое определяет горизонтальную, второе вертикальную…

Процедура FillEllipse

Обводит линией и заполняет эллипс. Заголовок:

Procedure FillEllipse(X,Y,RX,RY: Integer);

Здесь X, Y – координаты центра; RX, RY– горизонтальный и вертикальный радиусы эллипса в пикселях.

Эллипс обводится линией, заданной процедурами SetLineStyle и SetColor, и заполняется с использованием параметров, установленных процедурой SetFillStyle.

Процедура Sector

Здесь BegA, EndA – соответственно начальный и конечный углы эллипсного сектора. Остальные параметры обращения аналогичны параметрам процедуры… В следующей программе на экран выводятся случайные закрашенные эллипсы и… Uses Graph, CRT;

Процедура PieSlice

Procedure PieSlice(X,Y: Integer; BegA,EndA,R: Word); В отличие от процедуры Sector, указывается лишь один горизонтальный радиус R,… Сектор обводится линией, заданной процедурами SetLineStyle и SetColor, и заполняется с помощью параметров,…

Сохранение и выдача изображений

Функция ImageSize

Возвращает размер памяти в байтах, необходимый для размещения прямоугольного фрагмента изображения. Заголовок:

Function ImageSize(X1,Y1,X2,Y2: Integer): Word;

Здесь X1... Y2 – координаты левого верхнего (X1, Y1) и правого нижнего (Х2, Y2) углов фрагмента изображения.

Процедура Getlmage

Помещает в память копию прямоугольного фрагмента изображения. Заголовок:

Procedure Getlmage(X1,Y1,X2,Y2: Integer; var Buf)

Здесь X1...Y2 – координаты углов фрагмента изображения; Buf - переменная или участок кучи, куда будет помещена копия видеопамяти с фрагментом изображения.

Размер Buf должен быть не меньше значения, возвращаемого функцией ImageSize с теми же координатами X1....Y2.

Процедура PutImage

Procedure Putlmage(X,Y: Integer; var Buf; Mode: Word); Здесь X,Y– координаты левого верхнего угла того места на экране, куда будет… Как видим, координаты правого нижнего угла не указываются, так как они полностью определяются размерами вновь…

Вывод текста

С другой стороны, процедуры Write и WriteLn после загрузки в память второй половины таблицы знакогенератора (а эта операция легко реализуется в… Ниже описываются стандартные средства модуля Graph для вывода текста.

Процедура OutText

Procedure OutText(Txt: String); Здесь Txt – выводимая строка. При горизонтальном направлении вывода указатель смещается в конец выведенного текста, при вертикальном – не меняет…

Процедура OutTextXY

Выводит строку, начиная с заданного места. Заголовок:

Procedure OutTextXY (X,Y: Integer; Txt: String);

Здесь X, Y – координаты точки вывода; Txt – выводимая строка. Отличается от процедуры OutText только координатами вывода. Указатель не меняет своего положения.

Процедура SetTextStyle

Procedure SetTextStyle(Font,Direct,Size: Word); Здесь Font – код (номер) шрифта; Direct – код направления; Size – код размера… Для указания кода шрифта можно использовать следующие предварительно определенные константы:

Процедура SetTextJustify

Procedure SetTextJustify(Horiz,Vert: Word); Здесь Horiz – горизонтальное выравнивание; Vert – вертикальное выравнивание.… const

Процедура SetUserCharSize

Procedure SetUserCharSize(XI,X2,Yl,Y2: Word); Здесь X1...Y2 – выражения типа Word, определяющие пропорции по горизонтали и… Процедура применяется только по отношению к векторным шрифтам. Пропорции задают масштабный коэффициент, показывающий,…

Функция TextWidth

Возвращает длину в пикселях выводимой текстовой строки. Заголовок:

Function TextWidth (Txt: String): Word;

Учитываются текущий стиль вывода и коэффициенты изменения размеров символов, заданные соответственно процедурами SetTextStyle и SetUserCharSize.

Функция TextHeight

Возвращает высоту шрифта в пикселях. Заголовок:

Function TextHeight(Txt: String): Word;

Процедура GetTextSettings

Procedure GetTextSettins(var Textlnfo: TextSettingsType); Здесь Textlnfo – переменная типа TextSettingsType, который в модуле Graph… type

Функция InstallUserFont

Function InstallUserFont(FileName: String): Integer; Здесь FileName – имя файла, содержащего векторный шрифт. Как уже говорилось, в стандартную поставку Турбо Паскаля версий 4.0…6.0 включены три векторных шрифта, для версии 7.0…

Функция InstallUserDriver

Function InstallUserDriver(FileName: String; AutoDetectPtr: Pointer): Integer; Здесь FileName – имя файла, содержащего программу драйвера; AutoDetectPtr –… Эта функция расширяет и без того достаточно обширный набор стандартных графических драйверов и предназначена в…

Включение драйвера и шрифтов в тело программы

Включение драйвера и шрифтов осуществляется по следующей общей схеме. Сначала с помощью вспомогательной программы BINOBJ.EXE, входящей в комплект… c:tpbinobj cga.bgi cga cgadrv. В результате такого обращения из каталога ТР на диске С будет вызвана программа BINOBJ и ей будут переданы следующие…

Заключение

 

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

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

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

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


Список литературы

 

1. Фаронов В.В. Turbo Pascal 7.0: учебный курс. Учебное пособие для ВУЗов. КноРус, 2009 г

2. Фаронов В.В. Turbo Pascal 7.0. практика программирования.(изд:7). КноРус, 2009 г

3. Фаронов В.В. Turbo Pascal. Учебное пособие для ВУЗов. Питер, 2009 г

4. Ван Тассел, Д. Стиль, разработка, эффективность, отладка и испытание программ. М.: Мир, 1981

5. Перминов Р.С. Программирование на языке Паскаль. М.: Мир, 1995 г.

6. Титовская Н.В. Титовский С.Н. Программирование. Методические указания к лабораторным работам Красноярск.: КрасГАУ, 2009 г.

7. Меняев,М.Ф. Информатика и основы программирования : учеб.пособие/ Меняев,М.Ф.. -3-е изд.,стер.. -М.: Омега-Л, 2007. -458 с.

8. Вендров А.М. Проектирование программного обеспечения экономических информационных систем: Учебник. – М.: Финансы и статистика, 2000. – 352 с.

9. Вендров А.М. Практикум по проектированию программного обеспечения экономических информационных систем: Учеб. пособие. – М.: Финансы и статистика, 2002. – 192 с.

10. Орлов С.А. Технологии разработки программного обеспечения: Учебник. – СПб.: Питер, 2002. – 464 с.

11. Одинцов И.О. Профессиональное программирование. Системный подход. – СПб.: БХВ-Петербург, 2002. – 512 с.

12. М. Зелковиц А. Шоу, Дж. Гэннон Принципы разработки программного обеспечения: Пер. с англ. –М.: Мир, 1992. –368 с.

13. А.Я. Архангельский Программирование в Delphi 5 2-е изд., перераб. и дополн. – М.: ЗАО «Издательство БИНОМ», 2000г. 1072с.

14. http://www.citforum.ru/programming/

15. http://www.cyberforum.ru/programming-theory/

16. http://pascal.sources.ru/articles/


Глоссарий

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

ПРИЛОЖЕНИЯ

 
 
Приложение 1 Образец титульного листа

 


Министерство сельского хозяйства Российской Федерации

Красноярский государственный аграрный университет

Институт управления и агробизнеса

Кафедра Информационных систем и технологий в экономике

 

Отчет по учебной практике

    Выполнил(а)

ГОСУДАРСТВЕННЫЙ СТАНДАРТ СОЮЗА ССР

Единая система программной документации ГОСТ 19.002-80 Взамен ГОСТ 19427-74
 
СХЕМЫ АЛГОРИТМОВ И ПРОГРАММ. ПРАВИЛА ВЫПОЛНЕНИЯ
 
United system for program documentation. Flowcharts. Conventions for flowcharting

Постановлением Государственного комитета СССР по стандартам от 24 апреля 1980 г. № 1867 срок введения установлен

с 01.07. 1981 г.

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

Стандарт полностью соответствует МС ИСО 2636-73.

 

ПРАВИЛА ВЫПОЛНЕНИЯ СХЕМ

Схемы должны быть выполнены на форматах по ГОСТ 2.301-68. 1.2. Для облегчения вычерчивания и нахождения на схеме символов рекомендуется… 1.3. Координаты зоны проставляют: по горизонтали – арабским цифрами слева направо в верхней части листа; по…

ПРАВИЛА ПРИМЕНЕНИЯ СИМВОЛОВ

    Фрагмент схемы Содержание обозначения Правила применения   …    

ГОСУДАРСТВЕННЫЙ СТАНДАРТ СОЮЗА ССР

с 01.07 1981 г. Настоящий стандарт распространяется на условные графические обозначения… Стандарт не распространяется на записи и обозначения, помещаемые внутри символа или рядом с ним, служащие для…

ПЕРЕЧЕНЬ, НАИМЕНОВАНИЕ, ОБОЗНАЧЕНИЕ СИМВОЛОВ И ОТОБРАЖАЕМЫЕ ИМИ ФУНКЦИИ

Таблица 1. Наименование Обозначение и размеры в мм Функция 1. Процесс Выполнение операций или… 1.2. Перечень, наименование, обозначение и размеры рекомендуемых символов и… Таблица 2 Наименование Обозначение и размеры в мм Функция 1. Межстраничный…

СООТНОШЕНИЕ ГЕОМЕТРИЧЕСКИХ ЭЛЕМЕНТОВ СИМВОЛОВ

Примечание. При ручном выполнении схем алгоритмов и программ для обязательных символов 1–5, 11, 12, 16, 29 и рекомендуемых символов 3 и 4… 2.2. При выполнении условных графических обозначений автоматизированным… В справочном приложении приведены некоторые символы, выполненные с помощью печатающих устройств, где h – шаг…

СИМВОЛЫ, ВЫПОЛНЕННЫЕ С ПОМОЩЬЮ ПЕЧАТАЮЩИХ УСТРОЙСТВ

[1] Все фигуры состоят из линий, соединяющих вершины правильного многоугольника, вписанного в окружность, геометрическим центром фигуры считается… [2] В данном разделе использован материал с pascal.kansoftware.ru

– Конец работы –

Используемые теги: технологии, программирования0.058

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

Что будем делать с полученным материалом:

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

Еще рефераты, курсовые, дипломные работы на эту тему:

НАДЕЖНОЕ ПРОГРАММНОЕ СРЕДСТВО КАК ПРОДУКТ ТЕХНОЛОГИИ ПРОГРАММИРОВАНИЯ. ИСТОРИЧЕСКИЙ И СОЦИАЛЬНЫЙ КОНТЕКСТ ПРОГРАММИРОВАНИЯ. ИСТОЧНИКИ ОШИБОК В ПРОГРАММНОМ СРЕДСТВЕ
ВВЕДЕНИЕ... Лекция НАДЕЖНОЕ ПРОГРАММНОЕ СРЕДСТВО КАК ПРОДУКТ ТЕХНОЛОГИИ... Программа как формализованное описание процесса обработки данных Программное средство...

ТЕОРЕТИЧЕСКИЕ ОСНОВЫ ТЕХНОЛОГИИ СОЦИАЛЬНОЙ РАБОТЫ. ОБЩИЕ ТЕХНОЛОГИИ СОЦИАЛЬНОЙ РАБОТЫ. МЕЖДИСЦИПЛИНАРНЫЕ ТЕХНОЛОГИИ И МЕТОДИКИ СОЦИАЛЬНОЙ РАБОТЫ
Учебник подготовлен коллективом авторов... гл канд искусствовед наук проф Т В Шеляг гл д р... наук проф П Д Павленок...

В первом семестре рассматриваются основные конструкции языка Си и базовая технология программирования структурное программирование
В первом семестре рассматриваются основные конструкции языка Си и базовая технология программирования структурное программирование... Структурное программирование это технология создания программ позволяющая... Компиляторы и интерпретаторы Трансляторы бывают...

Разработка программного обеспечения для работы с базой данных с использованием технологии объектно-ориентированного программирования
Разработан алгоритм и программа.Содержание 1. Введение. 2. Постановка задачи. 3. Информационное обеспечение. 4. Алгоритм решения задачи. 5.… Данные и поведение представлены в виде классов, экземпляры которых - объекты.… Например, С не имеет чисел комплексного типа, а C позволяет добавить такой тип и объединяет ею с существующими типами…

МЕТОДИЧЕСКИЕ УКАЗАНИЯ курса “Компьютерные технологии” раздел «Визуальное программирование в С++Builder»
Национальный технический университет Украины... Киевский политехнический институт... Кафедра Автоматизация химических производств...

Лекция 1. Объектно-ориентированное программирование – это новый подход к программированию. Объектно- ориентированные языки обладают свойством
ВВЕДЕНИЕ... Приступая к изучению более сложных конструкций языка С следует прежде всего повторить тот материал который был...

Лабораторная работа №2 по "Основам теории систем" (Решение задач линейного программирования симплекс-методом. Варианты разрешимости задач линейного программирования)
Будем увеличивать , т.к. ее увеличение вызовет большее увеличение функции цели.Предположим, что , тогда Запишем новый опорный план . Все оценки… Теперь базисными переменными являются , а свободными . Для анализа этого плана… Будем увеличивать . Пусть , тогда откуда получаем Все оценки опорного плана должны бытьнеотрицательны, а значит должны…

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

Задание на курсовой проект по дисциплине Современные технологии программирования Задание. 2 Тип числа – Калькулятор р-ичных чисел . 2
Тема... Цель... Задание Общие требования Тип числа Калькулятор р ичных чисел...

Методы линейного программирования, двойственность в линейном программировании
Методы линейного программирования двойственность в линейном... Задание Задание Задание...

0.04
Хотите получать на электронную почту самые свежие новости?
Education Insider Sample
Подпишитесь на Нашу рассылку
Наша политика приватности обеспечивает 100% безопасность и анонимность Ваших E-Mail
Реклама
Соответствующий теме материал
  • Похожее
  • По категориям
  • По работам