Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лаба 1.doc
Скачиваний:
42
Добавлен:
10.05.2015
Размер:
642.56 Кб
Скачать

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и указанное присвоение.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]