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

Пример выполнения лабораторного задания на языке c#

В имеющемся рабочем пространстве NMM_PetrovIS сгенерируем (добавим) новый проект LabTask_09с консольного приложения на языке программирования C#, которому зададим тип конфигурации – Release, и который сделаем стартовым проектом.

После инициализации проекта LabTask_09с зададим новое имя файлу ProgramProgram_09.

Скопируем файл данных LabTask_09_00.txt в директорию проекта LabTask_09с.

Включим файл в LabTask_09_00.txt проект LabTask_09с и зададим значение «Copy always» для свойства «Copy to Output Directory» этого файла:

Это действие позволит среде разработки автоматически учитывать изменения, производимые пользователем с файлом LabTask_09_00.txt, при загрузке данной программы на выполнение.

При разработке кода основной программной единицы будем руководствоваться порядком действий, представленных в варианте данной лабораторной работы, выполненной на Fortran.

Напомним, что для работы с файлами потокового ввода-вывода необходимо подключить к проекту пространство имен System.IO.

Никаких принципиально новых элементов программирования на C# мы здесь не применяем, поэтому код программы приводится без комментариев. Вам следует самостоятельно разобраться в функциональном предназначении блоков программы.

Для достижения большего эффекта с точки зрения обучения Вам следует поэтапно разрабатывать данную программу и тестировать каждый из таких этапов.

Например, в качестве первого этапа можно принять этап, завершающийся формированием файла sort.txt. Если выполнение программы завершается успешно – файл sort.txt создается и его содержимое эквивалентно данным из аналогичного файла sort.txt предыдущего проекта, то можно переходить к программированию следующего этапа и т.д.

Следите за соблюдением форматов ввода–вывода. Чтение первичных данных из файла LabTask_09_00.txt, выполняемое в строках 50–51, производится с учетом того, что общее количество символов (включая пробелы), отведенное на каждое из чисел в строке, равно 20.

Поскольку нумерация символов в строке начинается от 0, то первое число, т.е. – размещено в символах от 0-го до 19-го, а второе число, т.е. – от 20-го до 39-го.

Внимательно изучите форматы данных в вашем варианте файла LabTask_09_№№.txt.

Особое внимание следует уделить синтаксису циклов с отрицательным шагом переменной цикла. Сравните, например, строку 56 данного кода и строку 23 программы на Fortran.

Рассчитанная таблица разностей оказывается идентичной таковой из предыдущего проекта:

0 2,43973721 -0,70685700 -0,23437559 0,23510511 -0,00052944 -0,05741317 0,01418656

1 1,73288021 -0,94123259 0,00072952 0,23457567 -0,05794260 -0,04322661 0,02476968

2 0,79164763 -0,94050307 0,23530519 0,17663307 -0,10116921 -0,01845692 0,02928836

3 -0,14885544 -0,70519787 0,41193826 0,07546386 -0,11962613 0,01083144 0,02663627

4 -0,85405331 -0,29325961 0,48740212 -0,04416227 -0,10879469 0,03746772 0,01746273

5 -1,14731292 0,19414251 0,44323985 -0,15295696 -0,07132698 0,05493045 0,00401374

6 -0,95317040 0,63738236 0,29028289 -0,22428394 -0,01639653 0,05894419 -0,01041793

7 -0,31578804 0,92766525 0,06599895 -0,24068047 0,04254766 0,04852625 -0,02229890

8 0,61187721 0,99366420 -0,17468152 -0,19813281 0,09107391 0,02622735 -0,02872030

9 1,60554141 0,81898267 -0,37281434 -0,10705890 0,11730126 -0,00249295 -0,02810995

10 2,42452408 0,44616834 -0,47987324 0,01024236 0,11480831 -0,03060291 -0,02061729

11 2,87069242 -0,03370490 -0,46963088 0,12505067 0,08420540 -0,05122020 -0,00807679

12 2,83698752 -0,50333578 -0,34458021 0,20925607 0,03298520 -0,05929699 0,00644120

13 2,33365174 -0,84791599 -0,13532414 0,24224126 -0,02631179 -0,05285579 0,01938217

14 1,48573575 -0,98324013 0,10691712 0,21592947 -0,07916758 -0,03347361 0,02757772

15 0,50249561 -0,87632302 0,32284659 0,13676189 -0,11264119 -0,00589590 0,00000000

16 -0,37382740 -0,55347643 0,45960848 0,02412070 -0,11853709 0,00000000 0,00000000

17 -0,92730383 -0,09386795 0,48372918 -0,09441639 0,00000000 0,00000000 0,00000000

18 -1,02117178 0,38986123 0,38931278 0,00000000 0,00000000 0,00000000 0,00000000

19 -0,63131055 0,77917401 0,00000000 0,00000000 0,00000000 0,00000000 0,00000000

20 0,14786346 0,00000000 0,00000000 0,00000000 0,00000000 0,00000000 0,00000000

Отличие заключается лишь в том, что в текстовых файлах разделителем целой и дробной частей десятичного числа в Fortran всегда является точка, а в C# – это символ, принятый ОС для данного компьютера (в данном случае это оказалась запятая).

Для корректного завершения данного консольного приложения реализован выход «по условию», см. строку 116. В том случае, если пользователь введет в качестве аргумента значение, выходящее за пределы интервала интерполирования, переменная flag получит значение false и программа «выйдет» из цикла while(flag) {…}.

В этом случае файл RezTask_09_00.txt результатов будет сохранен в директории данного проекта. В противном случае – когда завершение программы будет принудительным, например, через Ctrl+C, данные для файла RezTask_09_00.txt будут утеряны.

После компиляции проекта выполним ввод данных, идентично тому, как это делалось в предыдущем проекте:

Сопоставим файлы результатов двух проектов и убедимся в их идентичности.

Последнее свидетельствует в пользу того, что цель данной лабораторной работы достигнута.

Разработанное консольное приложение можно квалифицировать как «Калькулятор неизвестной функции», поскольку нам неизвестен функциональный вид той зависимости, по таблице которой мы программным путем строили интерполяционный многочлен, а затем использовали этот полином для вычислений.

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