
- •Система Pascal abc
- •Редактор
- •Горячие клавиши
- •Окно вывода
- •Окно ввода
- •Запуск и остановка программы
- •Программа прервана пользователем
- •Пошаговое выполнение программы
- •Окно отладки
- •Pascal abc Язык Pascal abc Структура программы
- •Идентификаторы и служебные слова
- •Выражения и операции
- •Арифметические операции
- •Операция @
- •Операции с указателями
- •Операции с множествами
- •Приоритет операций
- •Описание переменных и констант
- •Описание типов
- •Обзор типов
- •Все порядковые типы, а также типы boolean, real и complex называются простыми типами. Порядковые типы
- •Типы boolean, real и complex
- •Строковый тип
- •Массивы
- •Множества
- •Указатели
- •Процедурный тип
- •Эквивалентность типов
- •Неявное приведение типов
- •Явное приведение типов
- •Область действия идентификатора
- •Ввод и вывод. Форматы вывода
- •Оператор присваивания
- •Условный оператор
- •Составной и пустой операторы
- •Оператор выбора
- •Оператор цикла for
- •Оператор цикла repeat
- •Оператор вызова процедуры
- •Операторы break, continue и exit
- •Оператор with
- •Оператор безусловного перехода goto
- •Оператор try ... Except
- •Оператор try ... Finally
- •Оператор raise
- •Описание процедур и функций
- •Параметры процедур и функций
- •Локальные и глобальные переменные
- •Общие стандартные процедуры и функции
- •Стандартные процедуры и функции для работы со строками
- •Стандартные процедуры и функции для работы с файлами
- •Стандартные процедуры и функции для работы с памятью
- •Системные процедуры и функции
- •Стандартные константы
- •Обзор классов и объектов
- •Конструкторы и деструкторы
- •Свойства
- •Переменная Self
- •Наследование
- •Видимость членов класса
- •Переопределение методов
- •Приведение типов объектов
- •Операции is и as
- •Виртуальные методы и полиморфизм
- •Модуль crt
- •Модуль Timers
- •Модуль Sounds
- •Модуль Utils
- •Модуль PointRect
- •Модуль GraphAbc
- •Графические примитивы
- •Цветовые константы и функции для работы с цветом
- •Действия с пером
- •Действия с кистью
- •Действия со шрифтом
- •Действия с рисунками
- •Действия с графическим окном
- •Задание режимов вывода
- •Класс Picture
- •Описатели рисунков и класс Picture
- •Исполнитель Робот
- •Алгоритмизация
- •Алгоритм и его свойства
- •Способы описания алгоритмов
- •Линейные алгоритмы
- •Разветвляющиеся алгоритмы
- •Алгоритмы циклической структуры
- •Подчиненные алгоритмы
- •Системы программирования
- •Лабораторная работа № 1 Программирование линейных алгоритмов
- •Лабораторная работа № 2 Программирование разветвляющихся алгоритмов
- •Лабораторная работа № 4 Одномерные массивы - вектора
- •Литература Основная литература:
- •Дополнительная литература:
- •Лабораторная работа № 3 Программирование циклических алгоритмов
Модуль Sounds
Модуль Sounds содержит процедуры и функции для работы со звуком:
n:=LoadSound(fname) – загружает звук из файла с именем fname в оперативную память и возвращает описатель звука в целую переменную n (звуковой файл должен иметь формат .wav);
PlaySound(n) – начинает проигрывание звука с описателем n;
StopSound(n) – останавливает проигрывание звука с описателем n;
RewindSound(n) – "перематывает" звук с описателем n на начало;
DestroySound(n) – удаляет звук с описателем n из оперативной памяти, описатель звука при этом становится недействительным;
SoundIsPlaying(n) – возвращает True если звук с описателем n проигрывается и False в противном случае;
SoundLength(n) – возвращает длительность звука с описателем n в миллисекундах.
Модуль Sounds содержит также класс Sound, имеющий следующий интефейс:
type Sound=class public constructor Create(fname: string); destructor Destroy; procedure Load(fname: string); procedure Play; procedure Stop; procedure Rewind; property IsPlaying: boolean; function Length: integer; end;
Конструкторы и деструкторы |
constructor Create(fname: string);
Создает объект класса Sound и загружает в него звук из файла fname (звуковой файл должен иметь формат .wav). Звук с именем fname ищется вначале в текущем каталоге, а затем в подкаталоге Media\Sounds\ каталога программы PascalABC.exe.
destructor Destroy;
Разрушает объект и содержащийся в нем звук.
Свойства |
property IsPlaying: boolean;
Проигрывается ли звук. Присваивание IsPlaying=False эквивалентно вызову Stop, а присваивание IsPlaying=True - вызову Play.
Методы |
procedure Load(fname: string);
Загружает звук из файла с именем fname. Звук с именем fname ищется вначале в текущем каталоге, а затем в подкаталоге Media\Sounds\ каталога программы PascalABC.exe. Звук, до этого содержащийся в объекте, разрушается.
procedure Play;
Начинает проигрывание звука.
procedure Stop;
Останавливаетает проигрывание звука.
procedure Rewind;
"Перематывает" звук на начало.
function Length: integer;
Возвращает длительность звука в миллисекундах.
Звуки удобнее рассматривать как объекты класса Sound, в котором собраны все основные действия со звуками. Такой подход является более удобным и современным, чем подход с описателями звуков. Единственный его недостаток - необходимость вводить основные понятия, связанные с классами. Подход с описателями позволяет работать со звуками сразу после рассмотрения темы "Процедуры и функции" или даже раньше, если подпрограммы рассматривать просто как команды.
Пример работы со звуком с использованием описателей
uses Sounds;
var n: integer;
begin n:=LoadSound('b.wav'); PlaySound(n); Sleep(SoundTime(n)); DestroySound(n); end.
Пример работы со звуком с использованием класса Sound
uses Sounds;
var s: Sound;
begin s:=Sound.Create('b.wav'); s.Play; Sleep(s.Length); s.Destroy; end.
Модуль Utils
Модуль Utils содержит различные вспомогательные процедуры и функции (работа с файлами и каталогами, с датой, форматирование строк и пр.). Ниже приводится интерфейс модуля Utils:
type DateTime = record Day, Month, Year, Hour, Minute, Second, Milliseconds: integer; end; LongSize = record Megabytes, Bytes: integer; end; SearchRec = record name: string; size: integer; end; function CreateDir(name: string): boolean; function DeleteFile(name: string): boolean; function DirectoryExists(name: string): boolean; function GetCurrentDir: string; function RemoveDir(name: string): boolean; function RenameFile(OldName,NewName: string): boolean; function SetCurrentDir(name: string): boolean; procedure ChDir(name: string); function Milliseconds: integer; function CompileTime: integer; function CurrentDateTime: DateTime; function CompareMem(p1,p2: pointer; len: integer): boolean; function DiskSize(Drive: integer): LongSize; function DiskFree(Drive: integer): LongSize; procedure ShowMessage(s: string); function PascalABCPath: string; procedure FreeAndNil(var o: Object); procedure Move(p1,p2: pointer; size: integer); function FindFirstFile(path: string; var sr: SearchRec): boolean; function FindFirstDirectory(path: string; var sr: SearchRec): boolean; function FindNext(var sr: SearchRec): boolean; procedure FindClose(var sr: SearchRec); function ExtractFileName(fname: string): string; function ExtractFileExt(fname: string): string; function ExtractFilePath(fname: string): string; function ChangeFileExt(fname,ext: string): string;
CreateDir(name) - функция, создающая новый каталог с именем name и возвращающая True, если создание прошло успешно, и False в противном случае;
DeleteFile(name) - функция, удаляющая файл с именем name и возвращающая True, если удаление прошло успешно, и False в противном случае;
DirectoryExists(name) - функция, возвращающая True, если каталог с именем name существует, и False в противном случае;
GetCurrentDir - функция, возвращающая имя текущего каталога;
RemoveDir(name) - функция, удаляющая каталог с именем name и возвращающая True, если удаление прошло успешно, и False в противном случае;
RenameFile(OldName,NewName) - функция, переименовывающая файл с именем OldName в файл с именем NewName и возвращающая True, если создание прошло успешно, и False в противном случае;
SetCurrentDir(name) - функция, устанавливающая каталог с именем name текущим и возвращающая True, если текущий каталог был установлен, и False в противном случае;
ChDir(name) - процедура, меняющая текущий каталог на name;
Milliseconds - функция, возвращающая количество миллисекунд с момента начала выполнения программы;
CompileTime - функция, возвращающая количество миллисекунд, затраченное на компиляцию программы;
CurrentDateTime - функция, возвращающая текущие дату и время;
CompareMem(p1,p2,len) - функция, возвращающая True, если два участка памяти длины len байт, на которые указывают p1 и p2, идентичны, и False в противном случае;
DiskSize(Drive) - функция, возвращающая размер диска Drive (1 - диск A:, 2 - диск B:, 3 - диск C: и т.д.); если диск не существует, то в поле Megabytes возвращается 0, а в поле Bytes возвращается -1;
DiskFree(Drive) - функция, возвращающая размер свободного пространства на диске Drive.
PascalABCPath - функция, возвращающая полный путь к файлу PascalABC.exe.
ShowMessage(s) - процедура, показывающая окно с кнопкой OK и сообщением, задаваемым строкой s. Выполнение программы приостанавливается до нажатия кнопки OK.
FreeAndNil(o) - процедура, вызывающая деструктор объекта o в случае если o<>nil и присваивающая o значение nil.
FindFirstFile - функция, инициализирующая поиск файлов в каталоге path, помещающая в переменную sr первый найденный файл и возвращающая True, если поиск оказался успешным, и False в противном случае.
FindFirstDirectory - функция, инициализирующая поиск файлов в каталоге path, помещающая в переменную sr первый найденный каталог и возвращающая True, если поиск оказался успешным, и False в противном случае.
FindNext - функция, помещающая в переменную sr следующий найденный файл (если до этого вызвана функция FindFirstFile) или каталог (если до этого вызвана функция FindFirstDirectory), и возвращающая True, если поиск оказался успешным, и False в противном случае.
FindClose - процедура, освобождающая память, выделенную при поиске файлов или каталогов.
Приведем типичный пример использования FindFirstFile, FindNext, FindClose для поиска всех файлов в текущем каталоге:
uses Utils; var sr: SearchRec; begin if FindFirstFile('*.*',sr) then begin writeln(sr.Name); while FindNext(sr) do writeln(sr.Name); end; FindClose(sr); end.
ExtractFileName(fname) - функция, выделяющающая имя и расширение файла из полного имени файла.
ExtractFileExt(fname) - функция, выделяющающая расширение файла из полного имени файла.
ExtractFilePath(fname) - функция, выделяющающая путь из полного имени файла.
ChangeFileExt(fname,ext) - функция, заменяющающая расширение файла на ext.