- •0Министерство образования тверской области
- •Практическое занятие 1
- •Теоретический материал
- •Порядок выполнения работы
- •Задания
- •Контрольные вопросы
- •Список использованной литературы
- •Практическое занятие 2
- •Теоретический материал
- •Порядок выполнения работы
- •Задания
- •Контрольные вопросы
- •Список использованной литературы
- •Практическое занятие 3
- •Теоретический материал
- •Порядок выполнения работы
- •Контрольные вопросы
- •Список использованной литературы
- •Практическое занятие 4
- •Порядок выполнения работы
- •Контрольные вопросы
- •Список использованной литературы
- •Практическое занятие 5
- •Теоретический материал
- •Порядок выполнения работы
- •Варианты прикладных задач:
- •Контрольные вопросы
- •Список использованной литературы
- •Практическое занятие 6
- •Теоретический материал
- •Порядок выполнения работы
- •Контрольные вопросы
- •Список использованной литературы
- •Практическое занятие 7
- •Теоретический материал
- •Порядок выполнения работы
- •Контрольные вопросы
- •Список использованной литературы
- •Практическое занятие 8
- •Порядок выполнения работы
- •Контрольные вопросы
- •Список использованной литературы
- •Практическое занятие 9
- •Теоретический материал
- •Порядок выполнения работы
- •Контрольные вопросы
- •Список использованной литературы
- •Практическое занятие 10
- •Теоретический материал
- •Порядок выполнения работы
- •Контрольные вопросы
- •Список использованной литературы
- •Практическое занятие 11
- •Порядок выполнения работы
- •Контрольные вопросы
- •Список использованной литературы
- •Практическое занятие 12
- •Теоретический материал
- •Порядок выполнения работы
- •Контрольные вопросы
- •Список использованной литературы
- •Практическое занятие 13
- •Теоретический материал
- •1.1. Эквивалентное разбиение
- •Порядок выполнения работы
- •Варианты заданий:
- •Контрольные вопросы
- •Список использованной литературы
- •Практическое занятие 14
- •Теоретический материал
- •Общие характеристики качества программного средства
- •Длина программы
- •4. Объем программы
- •Потенциальный объем V*
- •Порядок выполнения работы
- •Практическое занятие 15
- •Порядок выполнения работы
- •Контрольные вопросы
- •Список использованной литературы
- •Практическое занятие 16
- •Порядок выполнения работы
- •Контрольные вопросы
- •Список использованной литературы
- •Практическое занятие 17
- •Порядок выполнения работы
- •Контрольные вопросы
- •Список использованной литературы
- •Практическое занятие 18
- •Порядок выполнения работы
- •Контрольные вопросы
- •Список использованной литературы
- •Практическое занятие 22
- •Теоретический материал
- •Теоретический материал
- •Порядок выполнения работы
- •Порядок выполнения работы
- •Одномерные массивы
- •Контрольные вопросы
- •Список использованной литературы
- •Практическое занятие 23
- •Теоретический материал
- •Двумерные массивы (матрицы)
- •Контрольные вопросы
- •Список использованной литературы
- •Практическое занятие 24
- •Теоретический материал
- •Порядок выполнения работы
- •Контрольные вопросы
- •Список использованной литературы
- •Практическое занятие 25
- •Теоретический материал
- •Карандаш и кисть
- •Вывод текста
- •Методы вычерчивания графических примитивов
- •Ломаная линия
- •Окружность и эллипс
- •Прямоугольник
- •Многоугольник
- •Вывод иллюстраций
- •Битовые образы
- •Мультипликация
- •Метод базовой точки
- •Использование битовых образов
- •Загрузка битового образа из ресурса программы
- •Создание файла ресурсов
- •Подключение файла ресурсов
- •Просмотр "мультика"
- •Порядок выполнения
- •Контрольные вопросы
- •Список использованной литературы
- •Практическое занятие 26
- •Теоретический материал порядок выполнения
- •Контрольные вопросы
- •Список использованной литературы
Порядок выполнения работы
Изучите теоретический материал.
Запустите систему Delphi и выберите в меню команду File | New | Other... . В диалоговом окне, которое откроется на экране, выберите значок с подписью DLL Wizard и нажмите кнопку OK:
Рисунок.
Окно выбора нового проекта, в котором
выделен пункт DLL Wizard
Среда Delphi создаст новый проект со следующей заготовкой библиотеки:
library Project1;
{ Important note about DLL memory management ... }
uses
SysUtils,
Classes;
begin
end.
С помощью команды File | New | Unit создайте в проекте новый программный модуль. Его заготовка будет выглядеть следующим образом:
unit Unit1;
interface
implementation
end.
Сохраните модуль под именем SortUtils.pas, а проект — под именем SortLib.dpr. Прейдите к главному файлу проекта и удалите из секции uses модули SysUtils и Classes (они сейчас не нужны). Главный программный модуль должен стать следующим:
library SortLib;
{ Important note about DLL memory management ... }
uses
SortUtils in 'SortUtils.pas';
begin
end.
Наберите исходный текст модуля SortUtils:
unit SortUtils;
interface
procedure BubleSort(var Arr: array of Integer); stdcall;
procedure QuickSort(var Arr: array of Integer); stdcall;
exports
BubleSort name 'BubleSortIntegers',
QuickSort name 'QuickSortIntegers';
implementation
procedure BubleSort(var Arr: array of Integer);
var
I, J, T: Integer;
begin
for I := Low(Arr) to High(Arr) - 1 do
for J := I + 1 to High(Arr) do
if Arr[I] > Arr[J] then
begin
T := Arr[I];
Arr[I] := Arr[J];
Arr[J] := T;
end;
end;
procedure QuickSortRange(var Arr: array of Integer; Low, High: Integer);
var
L, H, M: Integer;
T: Integer;
begin
L := Low;
H := High;
M := (L + H) div 2;
repeat
while Arr[L] < Arr[M] do
L := L + 1;
while Arr[H] > Arr[M] do
H := H - 1;
if L <= H then
begin
T := Arr[L];
Arr[L] := Arr[H];
Arr[H] := T;
if M = L then
M := H
else if M = H then
M := L;
L := L + 1;
H := H - 1;
end;
until L > H;
if H > Low then QuickSortRange(Arr, Low, H);
if L < High then QuickSortRange(Arr, L, High);
end;
procedure QuickSort(var Arr: array of Integer);
begin
if Length(Arr) > 1 then
QuickSortRange(Arr, Low(Arr), High(Arr));
end;
end.
В этом модуле процедуры BubleSort и QuickSort сортируют массив чисел двумя способами: методом «пузырька» и методом «быстрой» сортировки соответственно
Директива stdcall, использованная при объявлении процедур BubleSort и QuickSort,
procedure BubleSort(var Arr: array of Integer); stdcall;
procedure QuickSort(var Arr: array of Integer); stdcall;
позволяет вызывать процедуры не только из программ на языке Delphi, но и из программ на языках C/C++ (далее мы покажем, как это сделать).
Благодаря присутствию в модуле секции exports,
exports
BubleSort name 'BubleSortIntegers',
QuickSort name 'QuickSortIntegers';
подключение модуля в главном файле библиотеки автоматически приводит к экспорту процедур.
Сохраните все файлы проекта и выполните компиляцию. В результате вы получите на диске в своем рабочем каталоге двоичный файл библиотеки SortLib.dll. Соответствующее расширение назначается файлу автоматически, но если вы желаете, чтобы компилятор назначал другое расширение, воспользуйтесь командой меню Project | Options… и в появившемся окне Project Options на вкладке Application впишите расширение файла в поле Target file extension (рисунок).
Рисунок.
Окно настройки параметров проекта
С помощью полей LIB Prefix, LIB Suffix и LIB Version этого окна вы можете задать правило формирования имени файла, который получается при сборке библиотеки. Имя файла составляется по формуле:
<LIB Prefix> + <имя проекта> + <LIB Suffix> + ’.’ + <Target file extention> + [ ’.’ + <LIB Version> ]
Создайте новую консольную программу. Для этого выберите в меню команду File | New | Other... и в открывшемся диалоговом окне выделите значок Console Application. Затем нажмите кнопку OK.
Добавьте в программу external-объявления процедур BubleSort и QuickSort, а также наберите приведенный ниже текст программы. Сохраните проект под именем TestStaticImport.dpr.
program TestStaticImport;
{$APPTYPE CONSOLE}
procedure BubleSort(var Arr: array of Integer); stdcall;
external 'SortLib.dll' name 'BubleSortIntegers';
procedure QuickSort(var Arr: array of Integer); stdcall;
external 'SortLib.dll' name 'QuickSortIntegers';
var
Arr: array [0..9] of Integer;
I: Integer;
begin
// Метод «пузырька»
Randomize;
for I := Low(Arr) to High(Arr) do
Arr[I] := Random(100); // Заполнение массива случайными числами
BubleSort(Arr);
for I := Low(Arr) to High(Arr) do
Write(Arr[I], ' ');
Writeln;
// Метод быстрой сортировки
for I := Low(Arr) to High(Arr) do
Arr[I] := Random(100); // Заполнение массива случайными числами
QuickSort(Arr);
for I := Low(Arr) to High(Arr) do
Write(Arr[I], ' ');
Writeln;
Writeln('Press Enter to exit...');
Readln;
end.
Выполните компиляцию и запустите программу. Если числа печатаются на экране по возрастанию, то сортировка работает правильно.
Варианты заданий:
Форма отчёта: Отчет выполняется в тетрадях по практическим работам в письменном виде. Программа отлаживается в IDE Delphi и в виде файлов копируется на сетевой диск.
Содержание отчета:
Тема работы.
Цель работы.
По каждому из заданий:
Условие задачи.
Постановка задачи.
Текст программного кода на языке OBJECT PASCAL.
Результаты расчетов (входные и выходные данные).
Система оценки: двухбалльная.
