- •Введение
- •1. Общие положения
- •1.1. Понятие алгоритма. Данные в задачах и алгоритмах
- •1.2. Понятие о технологии разработки программ. Принципы и этапы разработки программ
- •1.3. Состав документации по отдельным этапам
- •1. Задача
- •9. Структурные тесты
- •1.4. Нисходящая разработка и нисходящая отладка
- •2. Процесс разработки программы на примере решения типовой задачи
- •2.1. Разработка алгоритма и программы уровня 0 с заглушками
- •2. Входные данные
- •3. Выходные данные
- •5. Функциональные тесты
- •6. Метод
- •7. Алгоритм
- •8. Программа на паскале. Диалоговый вариант
- •9. Структурные тесты
- •2.2. Отладка программы с заглушкой
- •2.3. Общая схема перехода от метода к алгоритму решения
- •2.4. Разработка алгоритма и программы для примера
- •2. Входные данные
- •5. Функциональные тесты
- •6. Метод
- •7. Алгоритм
- •8. Программа на паскале
- •9. Структурные тесты
- •2.5. Отладка полной программы
- •2.6. Список заданий
- •3. Организация хранения данных с позиций эффективности отладки и использования программы
- •3.1. Как лучше хранить, вводить и выводить данные
- •3.2. Использование текстовых файлов для хранения входных и выходных данных
- •3.3. Использование параметров в Паскаль-программах
- •3.4. Задание
- •4. Некоторые методы решения типовых задач
- •4.1. Поиск экстремальных значений (максимума, минимума) в одномерном массиве
- •2. Входные данные
- •3. Выходные данные
- •6. Метод
- •4.2. Поиск элемента, удовлетворяющего заданному условию
- •2. Входные данные
- •6. Метод
- •2. Входные данные
- •3. Выходные данные
- •6. Метод
- •4.3. Задача со сложной логикой
- •2. Входные данные
- •3. Выходные данные
- •6. Метод
- •4.4. Упорядочение одномерного массива
- •3. Выходные данные
- •6_А. Метод включения
- •6_Б. Метод пузырька
- •4.5. Список заданий
- •5. Работа с двумерными массивами (матрицами)
- •5.1. Схема обработки матриц
- •5.2. Ввод и вывод матрицы
- •5.3. Пример решения задачи
- •3. Выходные данные
- •6. Метод
- •5.4. Список заданий
- •6. Оформление алгоритмов в виде процедур
- •6.1. Основные положения
- •6.2. Кодирование процедур на языке Паскаль
- •6.3. Специфика оформления процедур ввода – вывода
- •6.4. Рекомендации по оформлению процедур
- •6.5. Примеры разработки процедур
- •3. Выходные данные
- •6. Метод
- •3 Истина, если все элементы строки больше 1, ложь, в противном случае . Выходные данные
- •7. Описание процедуры
- •8. Кодирование на паскале
- •9. Структурные тесты
- •2. Входные данные
- •3. Выходные данные
- •4. Аномалии не рассматриваем
- •6. Метод
- •7. Алгоритм
- •2. Входные данные
- •3. Выходные данные
- •6. Метод
- •8. Кодирование на паскале
- •2. Входные данные
- •3. Выходные данные
- •6. Метод
- •8. Кодирование на паскале
- •2. Входные данные
- •3. Выходные данные
- •6. Метод
- •7. Описание процедуры
- •8. Кодирование на Паскале
- •6.6. Список заданий
- •7. Внешние модули (unit) в турбо-Паскале
- •7.1. Суть и описание модуля
- •7.2. Связь модуля с другими модулями и главной программой. Область действия описаний объектов
- •7.3. Специфика оформления процедур ввода – вывода в модулях
- •7.4. Примеры оформления процедур во внешних модулях
- •7.5. Задания
- •7.6. Обработка многомодульных программ в среде турбо-Паскаль
- •8. Контрольные вопросы к главе 1
- •К главе 2
- •К главе 3
- •К главе 6
- •К главе 7
- •Заключение
- •Литература
- •Приложение 1. Базовые структуры алгоритмов
- •Приложение 2. Простые типы в Паскале
- •Приложение 3. Структура типов данных в языке Паскаль
- •Содержание
3.3. Использование параметров в Паскаль-программах
● Любая программа, запускаемая на выполнение, должна представлять собой выполняемый файл(.exe-файл). В средах турбо-Паскаля такой файл получается в результате компиляции (точнее - компиляции и редактирования связей) главной программы (program). Для операционной системы такие файлы, наряду с .com-файлами и .bat-файлами, являютсякомандами.
Любая команда может иметь параметры, которые передаются в программу, соответствующую команде, при запуске последней. Способ задания параметров зависит от системы. Например, вMS DOSкоманда набирается в командной строке в виде:
<команда> <список параметров, разделенных пробелами>
Для стандартных команд смысл параметров оговорен при описании команд. Для .exe-файлов, соответствующих пользовательским программам, смысл параметров и способ их обработки в программе определяется пользователем-программистом.
● В турбо-Паскале педусмотрены две стандартные функции для работы с параметрами (функции модуля DOS):
function paramcount:word;- возвращает (передает в программу) число параметров;
function paramstr(<№ параметра>:word):string;- возвращает значение параметра с заданным номером.
Параметры нумеруются, начиная с единицы.
Операционная система также всегда передает программе полное имя файла, где эта программа находится. Строка–значение этого имени передается как paramstr(0). Этот параметр не входит в общее число параметров.
В программе, использующей параметры, все параметры трактуются как отдельные строки (тип string).
● Обработка программы с параметрами:
а) в турбо-среде:
откомпилировать программу согласно инструкции;
задать через пробелы параметры в секции RUN/PARAMETERS;
запустить программу: RUN/RUN;
б) вне турбо-среды, в среде MS DOS:
откомпилировать программу с сохранением на диске .exe-файла согласно инструкции;
запустить на выполнение этот .exe-файл командой MS DOS с параметрами:
<имя .exe-файла> <список параметров>
● Пример
Пусть программа должна быть запущена несколько раз с разными входными данными; при этом:
данные хранятся в файлах на диске;
текст программы от запуска к запуску менять не следует;
входные файлы также не должны изменяться.
Пусть результаты каждого запуска также должны быть сохранены в отдельных файлах.
Как было сказано выше, такая организация программы удобна при многократном запуске программы с разными заранее подготовленными данными, например, при тестировании программы на нескольких тестах. Тогда целесообразно задавать имена файлов как параметры при каждом запуске программы, а в тексте программы, в операторах назначения файлов assign, использовать обращение к функцииparamstrвместо конкретных имен файлов.
Так, наша программа «Точки в круге» тестируется на двух тестах.
Пусть имя входного файла - 1-й параметр, имя выходного файла - 2-й параметр программы.
Файлы с тестовыми данными названы выше следующим образом:
points1.dat- файл входных данных для первого теста,
points1.res- файл выходных данных для первого теста,
points2.dat- файл входных данных для второго теста,
points2.res- файл выходных данных для второго теста.
Пусть prog.pas– файл с текстом программы, тогдаprog.exe–соответствующий .exe-файл.
В текст программы надо внести очень незначительные изменения: заменить в операторах назначения конкретные имена файлов обращениями к функции paramstr. Эти операторы приобретут универсальный вид:
assign(dat, paramstr(1);
assign(dat, paramstr(2);
Действия по запуску программы
Создать файлы входных данных. Выходные файлы создадутся автоматически.
Перед запуском из турбо-среды в секции RUN/PARAMETERS набрать:
prog1.dat prog1.res- для прогона первого теста,
prog2.dat prog2.res- для прогона второго теста
При запуске .exe-файла из DOS в командной строке набрать:
prog.exe prog1.dat prog1.res- для прогона первого теста,
prog.exe prog2.dat prog2.res- для прогона второго теста.
Результаты можно просматривать как в турбо-среде, так и вне ее – это обычные файлы с текстом.
● Задав вместо параметров имена стандартных внешних устройств (консоли) в виде: prog.exe сon con, получим режим диалога.
При отладке удобно вводить данные из файла, а результат просматривать на экране: prog.exe <имя входного файла> con. В таком режиме не приходится постоянно открывать окно результатов или переключаться между окнами. Когда программа отлажена, следует пропустить ее еще раз для каждого теста, но уже сохраняя результаты в файлах.
● Механизм параметров может быть использован и в приложениях, разрабатываемых в среде Delphi, поэтому знать его весьма желательно.