Размещение файлов практической работы
Желательно, чтобы все файлы практической работы (исходные, исполняемые, входные, выходные и т.п.) располагались в одной директории. Для этого нужно сделать следующее. Во-первых, при запуске компилятора текущей должна быть та директория, в которой расположены файлы практической работы. Особенно это касается компиляторов Borland C++/Pascal (компиляторы для Windows автоматически делают текущей директорию, в которой расположен проект). Этого можно добиться двумя способами. Первый – зайти в диалог смены текущей директории (File/Change dir…) и указать на место расположения исходных файлов. Второй способ – запускать исполняемый файл компилятора (BC.EXE и BP.EXE соответственно) непосредственно из той директории, в которой расположены исходные файлы. Т.е., например, набрать в командной строке r: \bp\bin\bp 1.pas При этом файл 1.pas сразу будет открыт в редакторе, и текущим будет тот каталог, в котором он расположен. Чтобы указанную строку не вводить каждый раз, можно написать пакетный (batch) файл. Назовем его, например, BP.BAT и поместим в него следующую строку r: \bp\bin\bp %1 Тогда достаточно будет в командной строке написать bp.bat 1.pas В целом, работать с программами для ОС MS DOS удобнее всего в консольных файловых менеджерах типа FAR. В них же достаточно удобно можно просматривать и редактировать входные и выходные файлы (а можно для этих целей воспользоваться средствами просмотра и редактирования самих компиляторов – достаточно в диалоге открытия файлов указать требуемое расширение). Для быстрого ввода указанной строки в FAR можно воспользоваться сочетанием клавиш Ctrl-Enter, которое добавляет имя текущего выделенного файла в командную строку. Для создания файла следует нажать комбинацию клавиш Shift-F4. Таким же образом поступаем и для программ на ЯП C++, только пакетный файл логичнее назвать BC.BAT, а спецификация исполняемого файла среды программирования следующая: r: \bc\bin\bc. Убедиться, что именно та директория, в которой расположен исходный файл, является текущей, в Borland C++/Pascal очень просто – в заголовке окна должно быть только имя файла, без ссылок на родительские или дочерние каталоги или на другие диски. Во-вторых, при открытии входных и выходных файлов также не следует указывать никаких ссылок на каталоги и диски. Т.е. если при чтении файла указать имя «S: \LAB1\INPUT.TXT», это будет неверно. При запуске программы из другой директории может возникнуть ошибка (если указанная директория не существует или указанный диск отсутствует), или входные и выходные данные не будут соответствовать ожидаемым (т.к. в текущей директории файлы обрабатываться не будут). Если никакие диск и директория при указании спецификации файла не используются, то подразумевается, что он расположен в текущей директории активного диска. В-третьих, компилятор Borland C++/Pascal может быть настроен так, что его выходные файлы (исполняемые, объектные и т.п.) также не попадают в текущую директорию. Проверить это можно, зайдя в диалог «Options/Directories…». В поле «Output directory» (для C++) или «EXE & TPU Directory» (для Pascal) должно быть пусто, чтобы перечисленные файлы создавались в текущем каталоге. Однако, при следующем запуске будут восстановлены предыдущие значения опций компилятора. Это происходит потому, что файлы с настройками опций и рабочего стола компилятора по умолчанию хранятся на диске R:, в тех же директориях, в которых расположены их исполняемые файлы, а прав на запись обычные пользователи на этот диск не имеют (о чем компилятор Borland C++ и напоминает регулярно). Однако, достаточно скопировать эти файлы в ту же директорию, в которой находятся другие файлы практической работы, и компилятор будет работать с ними в первую очередь. Для Borland C++ настройки рабочего стола хранятся в файле TCDEF.DSK, а опции компилятора – в файле TCDEF.DPR. Для Borland Pascal это, соответственно, файлы BP.DSK и BP.TP. Последний из них можно создать, выбрав пункт меню «Options/Save». Если работать с проектом в среде Borland C++, то файл с настройками рабочего стола создается автоматически, его имя соответствует имени проекта, а расширение остается прежним (DSK). А опции компилятора, в большинстве своем, хранятся непосредственно в файле проекта (PRJ). 1.3. Результаты вычислений. Погрешность Если говорить о приближенных числах, то ошибочно было бы считать, что, скажем, 1.00 = 1. Приближенное число 1.00 соответствует точному числу в диапазоне от 0.995 до 1.005, тогда как 1 – от 0.5 до 1.5. При этом первое число указано с точностью в три десятичных знака, а второе – в один знак. Следовательно, если при решении задачи численным методом задана погрешность, то ответ должен быть дан так, чтобы было видно, что решение в данную погрешность укладывается. К примеру, если для результата указана абсолютная погрешность ε = 0.001, то результат должен быть представлен в виде 2.912, 0.100 и т.д., но не 4 или 0.52. Зная абсолютную погрешность, можно определить количество знаков после запятой для вывода результата: N = –lg ε. (1.1) Предполагается, что 0 < ε < 1. Если число N получается нецелым, то оно округляется до большего целого числа. Затем N используется для форматирования результата. Если задана относительная погрешность δ, то для определения N можно воспользоваться следующей формулой [1]: N = 1 – lg(am·δ), (1.2) где am – первая значащая цифра результата. Далее, все результаты практических работ требуют проверки. Т.е., помимо самого результата, в выходном файле необходимо поместить доказательство того, что результат верный. Обычно доказательством является тот факт, что погрешность решения меньше заданной погрешности, либо что она близка к нулю. Как именно определяется погрешность решения для каждой практической работы, поясняется в п. 2.1 – 2.9. В зависимости от типа результата, погрешность (невязка) может являться скаляром, вектором либо матрицей. При выводе погрешности в файл необходимо использовать экспоненциальный формат (т.е. ±X.XXXXXE±XX), чтобы, по возможности, избежать округлений. Иначе вместо числа –1.12E–15 (–1.12·10–15) на экране можно увидеть малоинформативную надпись «–0.000», ничего не говорящую о порядке погрешности. Если x – это результат вычислений, а y – точный ответ, то невязка вычисляется по формуле ε = x – y. (1.3) Для получения дополнительной информации о погрешности (невязке), представленной в виде матрицы ε A размерности n× m или вектора ε b размерности n используется норма [1]. Чаще всего она определяется так: (1.4) Для скалярной величины s понятие нормы является аналогичным понятию модуля, т.е. || ε s || = | ε s |. (1.5) В качестве меры отклонения двух величин друг от друга также используется среднеквадратичное отклонение (СКО). Для матриц A и B размерности n× m и векторов a и b размерности n СКО определяется следующим образом: (1.6) Очевидно, что для скалярных величин x и y (1.7) Видно, что СКО – это норма невязки, дополнительно нормированная на количество элементов исследуемого объекта, т.е. (1.8)
|