- •Федеральное агентство по образованию
- •1. Общие положения
- •1.1. Выполнение и сдача работы
- •1.1.1. Рейтинговая система
- •1.1.2. Требования к отчету
- •1.1.3. Языки программирования
- •1.2. Входные и выходные данные
- •1.2.1. Формат чисел и строк
- •1.2.2. Работа с функциями, заданными в аналитическом виде
- •1.2.3. Использование стандартных потоков ввода-вывода
- •1.2.4. Размещение файлов лабораторной работы
- •1.3. Результаты вычислений. Погрешность
- •2. Лабораторные работы
- •2.1. Лабораторная работа №1 «Решение уравнений с одной переменной»
- •2.1.1. Методы решения
- •2.1.1.1. Интервальные методы
- •2.1.1.2. Итерационные методы
- •2.1.1.2. Комбинированный метод
- •2.1.2. Формат входных данных
- •Приложение b. Листинг модуля polutils.Pas
1.2.2. Работа с функциями, заданными в аналитическом виде
Функции, заданные в аналитическом виде, представляют собой текстовые строки, содержащие:
математические операции (сложение, вычитание, умножение, деление, возведение в степень);
функции (sin, cos, tg, ctg, exp, ln, lg);
константы (числовые, pi, e);
унарный плюс и минус;
неизвестные переменные (x– если переменная является скаляром иx1,x2, …,xn– если вектором длинойn);
круглые скобки.
Для вычисления функций предоставляется специальный модуль. Для языков C/C++ это заголовочный и объектный файлы (polstr.hиpolstr.obj). Данные файлы находятся в директорииR:\Romanenko\BM\polstr.cpp. Для их использования в рамках среды программированияBorlandC++ необходимо создать новый проект и включить в него модуль с программой, реализующей задание по лабораторной работе и два перечисленных выше файла. Для примера, в указанной директории помещен проектps.prj, который включает в себя главный модульuseps.cppи файлыpolstr.hиpolstr.obj. Можно не создавать новый проект, а просто удалить из указанного проекта главный модуль (CPP) и вставить вместо него другой модуль, реализующий лабораторное задание, сам же проект переименовать (если это необходимо). В средахBorlandC++BuilderиMicrosoftVisualC++ проект создается автоматически, необходимо только добавить в него требуемые файлы.
Для языка Pascalпредставлены модулиpolstr.tpuиpolutils.pas. Они находятся в директорииR:\Romanenko\ BM\polstr.pas. Второй модуль используется в качестве интерфейса, т.к. заголовочных файловPascalне имеет. В файлеuseps.pasнаходится пример программы, использующей данный модуль. Как вBorlandPascal, так и вBorlandDelphi, для использования дополнительного модуля достаточно подключить его к главному при помощи директивыuses.
Листинги модулей polstr.hиpolutils.pasприведены вприложениях Б и В.
В указанных директориях представлены версии объектных файлов для компиляторов BorlandC++,BorlandPascal,BorlandC++Builder,BorlandDelphiиMicrosoftVisualC++.
1.2.3. Использование стандартных потоков ввода-вывода
Чаще всего, при тестировании программы удобно, когда данные (все или некоторые) вводятся с клавиатуры, а выводятся на экран. При защите же программы ввод и вывод осуществляется через файлы. Поэтому необходимо максимально упростить переключение программы из режима тестирования в режим сдачи и обратно.
В языке Pascalэто достигается использованием файловых переменныхinputиoutput. Они соответствуют стандартным виртуальным файлам, отвечающим за ввод и вывод. По умолчанию ввод осуществляется с клавиатуры, а вывод – на экран. Т.е., следующие записи эквивалентны:
write(output, ...)≡write(...),
read(input, ...)≡read(...).
Поэтому весь ввод и вывод в программе можно осуществлять функциями readиwriteбез указания файловой переменной. Когда нужно для ввода и вывода использовать файлы, то достаточно связать с требуемыми файлами переменныеinputиoutput. Когда такая надобность отпадает, то это связывание помещается в комментарий.
В языке Cстандартные файловые переменныеstdinиstdoutзащищены от изменения. Поэтому, для примера, вывод в программе можно осуществлять при помощи функцииfprintfв некоторый файлf. Когда необходимо осуществить вывод в файл, то переменнаяfсвязывается с требуемым файлом. Когда на экран – использовать следующую запись:f=stdout. Аналогично для ввода.
Достаточно просто это можно проделать и в C++. В некоторых классах ввода-вывода (istream_withassign,ostream_withassignиiostream_withassign) переопределена операция присвоения. Стандартный ввод осуществляется черезcin(это определенный в библиотекеiostream.hэкземпляр классаistream_withassign), вывод – черезcout(экземплярostream_withassign). Поэтому достаточно присвоить переменнымcinиcoutэкземпляры классов файлового ввода и вывода соответственно (например,cin=f, гдеf– экземпляр классаifstream, связанный с входным файлом). Когда необходимо перейти в режим тестирования, достаточно поместить в комментарий создание экземпляра классаfи указанное присвоение.