W Cat - Описание языка PascalABC.NET
- Название:Описание языка PascalABC.NET
- Автор:
- Жанр:
- Издательство:неизвестно
- Год:неизвестен
- ISBN:нет данных
- Рейтинг:
- Избранное:Добавить в избранное
-
Отзывы:
-
Ваша оценка:
W Cat - Описание языка PascalABC.NET краткое содержание
PascalABC.NET — это язык программирования Паскаль нового поколения, включающий классический Паскаль, большинство возможностей языка Delphi, а также ряд собственных расширений. Он реализован на платформе Microsoft.NET и содержит все современные языковые средства: классы, перегрузку операций, интерфейсы, обработку исключений, обобщенные классы и подпрограммы, сборку мусора, лямбда-выражения, средства параллельного программирования.
PascalABC.NET является мультипарадигменным языком: на нем можно программировать в структурном, объектно-ориентированном и функциональном стилях.
PascalABC.NET — это также простая и мощная интегрированная среда разработки, поддерживающая технологию IntelliSense, содержащая средства автоформатирования, встроенный отладчик и встроенный дизайнер форм.
Описание языка PascalABC.NET - читать онлайн бесплатно полную версию (весь текст целиком)
Интервал:
Закладка:
Выводит приглашение к вводу и возвращает последовательность из n строк, введенных с клавиатуры
Функции для работы с именами файлов
functionExtractFileName(fname: string): string;
Выделяет имя файла из полного имени файла fname |
functionExtractFileExt(fname: string): string; Выделяет расширение из полного имени файла fname |
functionExtractFilePath(fname: string): string; Выделяет путь из полного имени файла fname |
functionExtractFileDir(fname: string): string; Выделяет имя диска и путь из полного имени файла fname |
functionExtractFileDrive(fname: string): string; Выделяет путь из полного имени файла fname |
functionExpandFileName(fname: string): string; Возвращает полное имя файла fname |
Подпрограммы для работы с файлами, каталогами и дисками
function ReadLines(path: string): sequence of string;
Считывает строки из файла и превращает их в последовательность строк |
function ReadLines(path: string; en: Encoding): sequence of string; Считывает строки из файла с кодировкой en и превращает их в последовательность строк |
function ReadAllLines(path: string): array of string; Считывает строки из файла в массив строк |
function ReadAllLines(path: string; en: Encoding): array of string; Считывает строки из файла с кодировкой en в массив строк |
function ReadAllText(path: string): string; Считывает содержимое файла в строку |
function ReadAllText(path: string; en: Encoding): string; Считывает содержимое файла с кодировкой en в строку |
procedure WriteLines(path: string; ss: sequence of string); Создает новый файл, записывает в него строки из последовательности |
procedure WriteLines(path: string; ss: sequence of string; en: Encoding); Создает новый файл с кодировкой en, записывает в него строки из последовательности |
procedure WriteAllLines(path: string; ss: array of string); Создает новый файл, записывает в него строки из массива |
procedure WriteAllLines(path: string; ss: array of string; en: Encoding); Создает новый файл с кодировкой en, записывает в него строки из массива |
procedure WriteAllText(path: string; s: string); Создает новый файл, записывает в него содержимое строки |
procedure WriteAllText(path: string; s: string; en: Encoding); Создает новый файл с кодировкой en, записывает в него содержимое строки |
functionGetDir: string; Возвращает текущий каталог |
procedureChDir(s: string); Меняет текущий каталог |
procedureMkDir(s: string); Создает каталог |
procedureRmDir(s: string); Удаляет каталог |
functionCreateDir(s: string): boolean; Создает каталог. Возвращает True, если каталог успешно создан |
functionDeleteFile(s: string): boolean; Удаляет файл. Если файл не может быть удален, то возвращает False |
functionGetCurrentDir: string; Возвращает текущий каталог |
functionRemoveDir(s: string): boolean; Удаляет каталог. Возвращает True, если каталог успешно удален |
functionRenameFile(name, newname: string): boolean; Переименовывает файл name, давая ему новое имя newname. Возвращает True, если файл успешно переименован |
functionSetCurrentDir(s: string): boolean; Устанавивает текущий каталог. Возвращает True, если каталог успешно установлен |
functionChangeFileNameExtension(name,newext: string): string; Изменяет расширение файла с именем name на newext |
functionFileExists(name: string): boolean; Возвращает True, если файл с именем name существует |
functionDiskFree(diskname: string): int64; Возвращает свободное место в байтах на диске с именем diskname |
functionDiskSize(diskname: string): int64; Возвращает размер в байтах на диске с именем diskname |
functionDiskFree(disk: integer): int64; Возвращает свободное место в байтах на диске disk. disk=0 - текущий диск, disk=1 - диск A: , disk=2 - диск B: и т.д. |
functionDiskSize(disk: integer): int64; Возвращает размер в байтах на диске disk. disk=0 - текущий диск, disk=1 - диск A: , disk=2 - диск B: и т.д. |
OpenMP
OpenMP: обзор
OpenMP – открытый стандарт для распараллеливания программ на многопроцессорных системах с общей памятью (например, на многоядерных процессорах). OpenMP реализует параллельные вычисления с помощью многопоточности: главный поток создает набор подчиненных потоков, и задача распределяется между ними.
OpenMP представляет собой набор директив компилятора, которые управляют процессом автоматического выделения потоков и данными, требуемыми для работы этих потоков.
В системе PascalABC.NET реализованы следующие элементы OpenMP:
* Конструкции для создания и распределения работы между потоками (директивы parallel for и parallel sections)
* Конструкции для синхронизации потоков (директива critical)
Директивы имеют следующий вид:
{$omp directive-name [опция[[,] опция]...]}
Здесь $omp означает то, что это директива OpenMP, directive-name – имя директивы, например parallel, после чего могут быть опции. Директива относится к тому оператору, перед которым она находится.
Примеры использования OpenMP находятся в папке Samples/OMPSamples
Ниже приводится описание директив.
Директива parallel for
Редукция в директиве parallel for
Параллельные секции и директива parallel sections
Синхронизация и директива critical
Директива parallel for
Директива parallel for обеспечивает распараллеливание следующего за ней цикла.
{$omp parallel for}
for vari: integer:=1 to10 do
тело цикла
Здесь будет создано несколько потоков и разные итерации цикла будут распределены по этим потокам. Количество потоков, как правило, совпадает с количеством ядер процессора, но в некоторых случаях могут быть отличия, например, если поток ожидает ввод данных от пользователя, могут создаваться дополнительные потоки, чтобы по возможности задействовать все доступные ядра.
Все переменные, описанные вне параллельного цикла, будут разделяемыми, то есть, если в теле цикла есть обращение к таким переменным, все потоки будут обращаться к одной и той же ячейке памяти. Все переменные, объявленные внутри цикла, будут частными, то есть у каждого потока будет своя копия этой переменной.
Опция private позволяет переменные, описанные вне цикла, сделать частными. Опция записывается так:
{$omp parallel for private(список переменных)}
Список переменных – одна или несколько переменных через запятую.
vara,b: integer;
{$omp parallel for private(a, b)}
for vari: integer:=1 to10 do
a := ...
В этом случае переменные a и b будут частными, и присваивание этим переменным в одном потоке не будет влиять на другие потоки.
Ограничение: счетчики распараллеливаемого цикла и вложенных циклов должны быть объявлены в заголовке цикла.
Не все циклы можно распараллеливать. Если на разных итерациях происходит обращение к одной и той же переменной и при этом ее значение меняется – распараллеливание такого цикла приведет к ошибкам, при разных запусках могут получаться разные результаты в зависимости от того, в каком порядке происходили обращения к этой переменной.
Читать дальшеИнтервал:
Закладка: