- •5.091405 «Обслуговування комп’ютеризованих інтегрованих та робототехнічних систем»
- •Виды алгоритмов
- •Структура програми. Алфавіт. Типи даних та операції
- •Структура программы
- •Алфавит языка
- •Знаки операций
- •Комментарии
- •Типы данных и операции
- •Описание меток
- •Описание переменных
- •Var имя переменной : тип;
- •Описание типов
- •Арифметические выражения
- •Логические выражения
- •Основные операторы
- •Операторы ввода и вывода
- •Ввод с консоли
- •Вывод на консоль
- •Форматный вывод
- •Условные операторы Условный оператор if
- •Оператор выбора case
- •Циклічні розрахункові процеси
- •Оператор цикла с параметром
- •Оператор цикла с условием
- •Регулярний тип (масив)
- •Сортировка массивов
- •Улучшенные сортировки
- •Сортировка Шелла
- •Символьный тип данных
- •Тип динамічні рядки (string)
- •Типи даних, що визначаються користувачем
- •Var Имя множества:Set of базовый тип;
- •Var Имя множества:Имя типа;
- •1. Var Имя записи:record
- •Var Имя записи:Имя типа для записи;
- •Складні програми. Робота з файлами Робота з процедурами та функціями
- •Види файлів. Робота з файлами
- •Когда нужно использовать файлы
- •Разновидности файлов
- •Открытие файла
- •Закрытие файла
- •Считывание из файла
- •Запись в файл
- •Модульна структура програми. Створення інтерфейсу користувача
- •Стандартные модули языка Pascal
- •Подключение модулей
- •Секция реализации
- •Секция инициализации
- •Взаимодействие модулей
- •Компиляция модулей
- •Пример модуля
- •Передача аргументов из командной строки
- •Створення інтерфейсу користувача Текстовый режим
- •Позиционирование
- •Ожидание
- •Пример использования текстовой графики
- •Решение
- •Создание дружественного интерфейса
- •Заставка
- •Ввод информации
- •Приглашения
- •Мова Сі Основні поняття та складові частини мови Сі
- •Структура програми на мові Сі. Елементи мови Сі
- •Типи даних та їх об"явлення. Базові типи даних.
- •1.2.1 Категории типов данных
- •Типи даних, що визначаються користувачем.
- •Вирази та присвоювання
- •Програмування на мові Сі
- •Види операторів. Умовні оператори
- •Оператори циклів
- •Оператори передачі керування
- •Процедури та функції
- •Виклик функцій зі змінною кількістю параметрів. Параметри функції main
- •Структура програми та класи пам"яті. Область життя та область видимості
- •Покажчики та операції над покажчиками
- •Масиви. Робота з масивами
- •Динамічний розподіл пам"яті. Динамічне розміщення масивів
- •Директиви препроцесора
- •Лінійні списки. Робота зі списками
- •Стеки та черги
- •Сортування та злиття списків
- •Пошук в лінійних списках
- •Технологія створення програм
- •Робота з файлами та потоками
- •Открытие файла: функция fopen
- •Константа null
- •Диагностика ошибок: функция perror
- •Функции бинарного чтения и записи fread и fwrite
- •Закрытие файла: функция fclose
- •Пример: подсчет числа символов и строк в текстовом файле
- •Форматный ввод-вывод: функции fscanf и fprintf
- •Понятие потока ввода или вывода
- •Функции scanf и printf ввода и вывода в стандартные потоки
- •Функции текстового преобразования sscanf и sprintf
- •Другие полезные функции ввода-вывода
- •Робота з рядками
- •Определение типов символов
- •Пример: программа "Записная книжка"
- •Аргументы командной строки
Передача аргументов из командной строки
В лекции 8 мы уже говорили о том, что любая процедура или функция, по сути, является полноценной программой. Но если подпрограммы способны получать аргументы извне, то почему этого не могут делать сами программы?
Однако в языке Pascal нет нарушений единообразия: любая программа тоже способна получать аргументы во время начала работы. Для этого нужно лишь вызывать ее из командной строки следующим образом:
<имя_программы> <список_аргументов>
Список аргументов - это последовательность передаваемых в программу значений, разделенных пробелами или символами табуляции.
В стандартном модуле System, автоматически подключаемом к любой программе на языке Pascal, имеются две функции, позволяющие программе принимать аргументы, переданные из командной строки.
Функция paramcount: word возвращает количество аргументов, переданных в программу из командной строки при вызове.
Функция paramstr(k: word): string возвращает k-й аргумент, переданный в программу из командной строки.
Если программа модульная, то обработку поступающих из командной строки аргументов удобнее всего занести в секцию инициализации одного из модулей. Впрочем, это не обязательно.
Например:
program arguments;
var i,k,n: word;
begin
n:= paramcount;
writeln('Из командной строки поступило ',n,'
аргументов:');
for i:= 1 to n do
writeln(i,'-й аргумент = ',paramstr(i));
end.
Если теперь вызвать эту программу из командной строки, скажем, с такими аргументами:
arguments abcd -36 +25.062 -t /&
то на экране получится следующий результат:
Из командной строки поступило 5 аргументов:
1-й аргумент = abcd
2-й аргумент = -36
3-й аргумент = +25.062
4-й аргумент = -t
5-й аргумент = /&
Хорошим стилем считается включать в программу так называемый внешний help: если в нее можно передавать какие-либо аргументы из командной строки, необходимо сообщить потенциальному пользователю их возможные значения и смысл.
Чаще всего для отображения на экране внешней подсказки используются аргументы ? или /?.
Примером может служить краткая экранная подсказка хорошо известного архиватора arj.exe, которая появляется на экране в случае некорректного обращения к этой программе. Подсказка сообщает пользователю: а) имя программы; б) суть того, что именно появилось на экране; в) правила корректного вызова программы; г) примеры корректного вызова; д) краткий список возможных аргументов (команд и ключей).
ARJ 2.50a SHAREWARE Copyright (c) 1990-95 ARJ Software. Dec 12 1995
List of frequently used commands and switches. Type ARJ -? for more help.
Usage: ARJ <command> [-<sw> [-<sw>...]] <archive_name> [<file_names>...]
Examples: ARJ a -e archive, ARJ e archive, ARJ l archive *.doc
<Commands>
a: Add files to archive m: Move files to archive
d: Delete files from archive t: Test integrity of archive
e: Extract files from archive u: Update files to archive
f: Freshen files in archive v: Verbosely list contents of archive
l: List contents of archive x: eXtract files with full pathname
<Switches>
c: skip time-stamp Check r: Recurse subdirectories
e: Exclude paths from names s: set archive time-Stamp to newest
f: Freshen existing files u: Update files (new and newer)
g: Garble with password v: enable multiple Volumes
i: with no progress Indicator w: assign Work directory
m: with Method 0, 1, 2, 3, 4 x: eXclude selected files
n: only New files (not exist) y: assume Yes on all queries