Мегаобучалка Главная | О нас | Обратная связь


Kr08. Построение таблицы зависимости i и R от U и запись таблицы в файл VAR11.txt



2019-12-29 222 Обсуждений (0)
Kr08. Построение таблицы зависимости i и R от U и запись таблицы в файл VAR11.txt 0.00 из 5.00 0 оценок




Теперь необходимо получить таблицу. Первый столбец таблицы содержит циклически изменяемый параметр, в нашем варианте это U – показания вольтметра. U меняется от 500 до 0 с шагом 10. 500, 0, 10 – значения, которые будут вводиться с клавиатуры, и, в принципе, можно будет вводить другие. Для каждого значения U надо рассчитать значение i – сила тока через вольтметр и R – сопротивление резистора.

 

Переходим в Редактор VBA и создаем процедуру ТаблицаФайл.

С помощью стандартной функции InputBox вводится с клавиатуры начальное и конечное значение U и шаг изменения U. Введенные значения присваиваются переменным n, k, s.

С помощью стандартной функции Val текстовые значения n, k, s преобразуются в числовые.

Значения других исходных параметров (кроме U) возьмем из ячеек рабочего листа с помощью стандартной функции Range: из ячейки H7 показание амперметра Ia, из H8 сопротивление вольтметра r.

Командой Open открываем файл с именем Var11.txt для записи в него данных (режим Output). Файлу присваивается № 1, в дальнейшем по этому номеру будет осуществляться обращение к этому файлу.

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

Командой Write в 1-ый файл выводятся заголовки таблицы (текст, заключенный в кавычки).

 

Далее начинается оператор цикла типа Цикл со счетчиком. Роль счетчика здесь играет переменная U. Цикл начинается командой For и заканчивается командой Next. Между ними – тело цикла.

Буквально читаем.

Для U, изменяющегося от n до k с шагом s вычислить силу тока и сопротивление путем вызова ранее созданных функций. В скобках перечисляются фактические параметры – исходные данные для этих функций. Возвращаемые значения присваиваются переменным i и RR.

Затем по команде Write в 1-ый файл выводятся значения U, i, RR.

По команде Next U к старому значению U прибавляется шаг S.

Далее новое значение U сравнивается с k. И если U<=k, то цикл повторяется: для нового значения U рассчитываются значения i и RR и выводятся в файл – в новую строку таблицы.

По окончании цикла командой Close закрывается файл № 1 и выводится сообщение о том, что таблица записана в файл.

 

Блок-схема процедуры ТаблицаФайл на базе алгоритма цикла со счетчиком:

§ Начало процедуры § Ввод с клавиатуры n, k, s. § Ввод в программу значений Ia, r из ячеек рабочего листа. § Открыть файл. § Вывод заголовков таблицы в файл. § Начало цикла: переменной U присваивается начальное значение n, и сравнивается с конечным значение k. § Если U<=k, вычисляется i и RR и значения U, i, RR выводятся в файл. § Затем к старому значению U прибавляется шаг S. § И новое значение U опять сравнивается с k. И если U<=k, цикл повторяется. § Если U>k, выходим из цикла. § Файл закрывается. § Выдается сообщение «Таблица записана в файл». § Конец процедуры.  
Специально для обозначения на блок-схеме цикла со счетчиком предусмотрен элемент , который уже включает в себя, подразумевает: § Начальное присваивание U=n. § Проверку условия U<=k. § И переход к новому значению счетчика U=U+S. Таким образом, с этим элементов блок-схема выглядит компактней.  

 

 

Выполним процедуру ТаблицаФайл в пошаговом режиме. Этот режим используется для проверки правильности выполнения алгоритма и для поиска и исправления ошибок.

По нажатии клавиши F8 выполняется очередная команда и подсвечивается следующая.

Введем начальное значение U n=1, конечное k=3, шаг s=4.

При наведении курсора на переменные отображаются их значения.

По команде меню View – Locals Window откроется окно со списком локальных переменных (то есть всех переменных, которые используются в выполняемой процедуре) и их значениями.

Обратите внимание, значения n, k, s, принятые с клавиатуры с помощью InputBox, берутся в кавычки, то есть имеют текстовый тип.

Выполняя процедуру далее, выполняя функции Val, кавычки убираются, – значит, выполняется преобразование текстового типа в числовой тип.

Продолжаем нажимать F8. Начинаем выполнять цикл. U присваивается n=1. U<k (1<3) – поэтому выполняется тело цикла. Выполняется вызов функции СилаТока, входим в функцию, выполняем её, возвращаемся в вызывающую процедуру ТаблицаФайл. Теперь выполняется вызов функции Сопротивление, входим в функцию, выполняем её, возвращаемся в вызывающую процедуру ТаблицаФайл. Выводим значения в файл. Увеличивается значение U, становится равным 2. Возвращаемся к началу цикла, проверяем: 2<3? – Да, цикл повторяется. U становится равным 3. 3<3? – Нет. 3=3? – Да, цикл повторяется еще раз. U становится равным 4. 4<3? – Нет. 4=3? – Нет – выходим из цикла. Закрывается файл. Выдается сообщение. Выходим из процедуры.

 

Запускать процедуру на рабочем листе будем с помощью кнопки. Которую возьмем с панели инструментов Формы.

Этой кнопке назначим макрос ТаблицаФайл. И введем текст кнопки «Построение таблицы зависимости i и R от U и запись таблицы в файл VAR11.txt».

Проверяем. Щелчком по кнопке вызывается процедура. Вводим начальное значение 500, конечное 0. Поскольку U меняется от большего к меньшему, шаг надо задать отрицательным – введем –10.

Таблица записана в файл!

 

Откроем Мои документы и убедимся: файл VAR11.txt создан. Откроем его в Блокноте.

Обратите внимание:

§ Выводимые значения в файле разделяются запятой.

§ Текстовые значения берутся в кавычки (заголовки).

Закроем Блокнот.

 

Предусмотрим открытие файла с рабочего листа.

Для этого в Редакторе VBA создадим процедуру ПросмотрФайла.

Она состоит из одного оператора Shell, который позволяет выполнить из программы команду операционной системы. В нашем примере такой командой будет notepad.exe, которая запускает одноименный файл из системной папки Windows, то есть запускает Блокнот. Через пробел указывается параметр команды – имя файла VAR11.txt, который надо открыть в Блокноте. Команда операционной системы берется в кавычки: "notepad.exe VAR11.txt".

Через запятую указывается второй параметр оператора Shell – vbNormalFocus, он означает: открыть окно Блокнота не в распахнутом виде, не в свернутом, а в нормальном виде.

 

Перейдем на рабочий лист и создадим кнопку для запуска процедуры ПросмотрФайла. Назначим ей макрос ПросмотрФайла. Введем текст на кнопке «Просмотр файла VAR11.txt».

Убедимся, что щелчок по кнопке открывает Блокнот с нашим файлом.

Закроем Блокнот.

 

Kr09. Чтение файла VAR11.txt и запись на рабочий лист Таблица

Обеспечим Чтение файла VAR11.txt и запись его на рабочий лист Таблица.

Для этого создадим процедуру ЧтениеФайла.

Она начинается с открытия файла VAR11.txt в режиме Input (для чтения файла).

Переменная Nстроки будет отслеживать № текущей строки рабочего листа, в которую будет выводиться очередная прочитанная из файла строка таблицы. Таблица будет начинаться с 1-ой строки.

 

Далее начинается цикл – цикл типа Пока. Цикл начинается командой Do While, заканчивается командой Loop. Между ними – тело цикла.

Цикл типа Пока выполняется, пока выполняется истинно заданное выражение – в данном случае это Not Eof(1).

Стандартная функция Eof(1) (End jf File) возвращает логическое значение ИСТИНА, если файл закончился, и ЛОЖЬ, если нет. Логическая операция Not – логическое отрицание, логическое НЕ. Так что выражение Not Eof(1) принимает значение ИСТИНА, если файл не закончился, то есть если функция Eof(1) возвращает ЛОЖЬ.

Буквально читаем.

Выполнять, пока не End of File – пока не закончился файл.

Командой Input из 1-го файла считываются значения (в файле они разделены запятыми) и присваиваются переменным U, i, RR. Количество переменных должно быть равно количеству значений в строке файла.

Далее. На рабочем листе Таблица в ячейку на пересечении строки, заданной переменной Nстроки и 1-го столбца записывается значение переменной U.

В ячейку на этой строке во 2-ом столбце записывается значение переменной i.

В 3-ий столбец записывается значение переменной RR.

Далее увеличивается номер строки на 1.

И по команде Loop возвращаемся к началу цикла – к проверке условия Файл не закончился?

Если не закончился, из файла считывается следующая строка и записывается в очередную строку рабочего листа.

Номер строки снова увеличивается и снова – проверка условия…

Когда файл закончится, функция Eof(1) вернет значение ИСТИНА; выражение Not Eof(1) примет значение ЛОЖЬ – это признак завершения цикла.

Команда Close закрывает файл.

Команда MsgBox выдает сообщение о том, что файл прочитан и записан.

 

Блок-схема процедуры ЧтениеФайла на базе алгоритма цикла типа «Пока» (пока не конец файла):

§ Начало процедуры. § Открытие файла. § Номеру строки присваиваем 1. § Проверяем: Не конец файла? § Если не конец, идем по ветке Да. § Читаем значения из файла. § Записываем их на рабочий лист. § Увеличиваем Nстроки на 1. § И снова – Не конец файла? § Цикл повторяется, пока не завершится файл. § Когда файл будет прочитан весь, выходим из цикла. § Закрываем файл. § Выдаем сообщение. § Конец процедуры.

 

Перед выполнение процедуры ЧтениеФайла проверим наличие рабочего листа Таблица (мы его создали в самом начале курсовой работы).

Для наглядности одновременно отобразим – рабочий лист, Блокнот с файлом и текст процедуры.

Выполнять будем в пошаговом режиме, нажимая клавишу F8.

Открыть файл.

Nстроки=1.

Начало цикла.

Чтение значений из 1-ой строки файла (это заголовки таблицы) в переменные U, i, RR.

Они записываются в 1-ую строку рабочего листа.

Nстроки увеличивается на 1.

Возвращаемся к началу цикла, проверяем: Не конец файла?

Нет – читаем следующую строку файла и записываем её во 2ую строку рабочего листа.

Переходим к 3-ей строке. И цикл повторяется.

Продолжим выполнение процедуры в обычном режиме – клавиша F5.

Файл прочитан и записан на рабочий лист.

 

Перед новым выполнением процедуры ЧтениеФайла надо очистить рабочий лист Таблица от старых данных.

Для этого:

1. Переходим на лист.

2. Выделяем все ячейки листа.

3. Очищаем их – клавишей Del.

Сделаем так, чтобы эти действия выполнялись программно – при выполнении процедуры ЧтениеФайла.

Чтобы узнать, какие команды надо вставить для этого в процедуру, запустим команду меню Сервис – Макрос – Начать запись.

Согласимся с именем макроса Макрос1. Ок.

Появление панели инструментов Остановить запись говорит о том, что с этого момента все наши действия будут записываться в виде команд на VBA в макрос.

Итак.

1-ое действие – переходим на лист Таблица.

2-ое – выделяем все ячейки листа.

3-е – очищаем их клавишей Del.

Всё. Щелкаю кнопку Остановить запись.

 

Переходим в Редактор VBA. Открываем Проводник проекта – командой меню View – Project Explorer.

Обратите внимание: при записи макроса автоматичски был создан новый пользовательский модуль Module2.

Откроем его сдвоенным щелчком. И обнаружим в нем макрос Макрос1. Он состоит из трех команд, соответствующих нашим трем действиям:

1. Переход на лист Таблица.

2. Выделение ячеек листа.

3. Очистка их.

Скопируем эти три команды в буфер обмена.

Перейдем в Module1 и вставим их из буфера в начало процедуры ЧтениеФайла.

Теперь рабочий лист Таблица будет очищаться программно – при выполнении процедуры ЧтениеФайла.

 

Module2 с макросом нам больше не нужен – удалим его. В контекстном меню выберем команду Remove Module2. В ответ на вопрос: Сохранить удаляемый модуль в отдельном файле? – ответим Нет.

Закроем Проводник проекта.

 

Для выполнения процедуры ЧтениеФайла на рабочем листе создадим кнопку с панели инструментов Формы. И назначим ей макрос ЧтениеФайла.

Введем поясняющий текст кнопки «Чтение файла VAR11.txt и запись на рабочий лист Таблица».

Щелкнем по кнопке – процедура выполнилась, файл прочитан и записан на лист.

 



2019-12-29 222 Обсуждений (0)
Kr08. Построение таблицы зависимости i и R от U и запись таблицы в файл VAR11.txt 0.00 из 5.00 0 оценок









Обсуждение в статье: Kr08. Построение таблицы зависимости i и R от U и запись таблицы в файл VAR11.txt

Обсуждений еще не было, будьте первым... ↓↓↓

Отправить сообщение

Популярное:
Как построить свою речь (словесное оформление): При подготовке публичного выступления перед оратором возникает вопрос, как лучше словесно оформить свою...
Почему люди поддаются рекламе?: Только не надо искать ответы в качестве или количестве рекламы...



©2015-2024 megaobuchalka.ru Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. (222)

Почему 1285321 студент выбрали МегаОбучалку...

Система поиска информации

Мобильная версия сайта

Удобная навигация

Нет шокирующей рекламы



(0.006 сек.)