Методические указания по выполнению Упражнения 3 п.2
Лабораторная работа №4. Циклы
Циклы предназначены для многократного выполнения группы инструкций. В VBA для организации циклов используются инструкции For... Next, While…Wend, Do …Loop и For Each…Next.
Инструкция For... Next повторяет выполнение группы инструкций указанное число раз.
Инструкция While…Wend выполняет некоторую последовательность инструкций до тех пор, пока заданное условие имеет значение True (Истина).
Существует два типа инструкции Do…Loop: Do While и Do Until. Первый из них повторяет выполнение блока инструкции до тех пор, пока заданное логическое условие истинно. Второй инструкция, Do Until выполняет циклические вычисления до тех пор, пока изначально ложное логическое условие не станет истинным.
Упражнение 1
1. Изучите п.2.12.3.1. из файла Теория_к_лаб_4.doc Инструкция For… Next.
2. Скопируйте в модуль процедуры Sub TestFor,TestFor1 и TestFor2 из пособия (Пример1 п.2.12.3.1.)и выполните их c различными количествами нечётных чисел.
Упражнение 2
1. Составьте процедуру заполнения таблицы Excel с m строками и n столбцами числами натурального ряда: 1, 2 , 3…и т.д., начиная с ячейки A1 по столбцам аналогично тому, как это показано ниже.
Значения m и n ввести при помощи функции InputBox.
2. Составьте процедуру подсчёта суммы чисел, находящихся в ячейках таблицы Excel на главной диагонали квадратной матрицы, полученной в процедуре Упражнения 10 при m=n.
3. Составьте процедуру определения максимального значения среди n чисел, находящихся в строке 1 таблицы Excel. Для этого предварительно заполните несколько (больше n) ячеек первой строки листа Excel. Значение n ввести с клавиатуры в процессе выполнения процедуры.
Упражнение 3
1. Изучите п.2.12.3.1. ИнструкцияWhile…Wend
2. Ознакомьтесь с инструкцией While…Wend п. 2.12..3.2. Инструкция While…Wend и процедурой Sub TWW для подсчёта S чётных чисел L натурального ряда, находящихся в пределах 0<L<10.
3. Составьте процедуру подсчёта суммы S нечётных чисел L натурального ряда, находящихся в пределах 0<L<10, используя инструкцию While…Wend.
4. Составьте процедуру определения максимального и минимального значения числа в заданной строке листа Excel. Концом последовательности просматриваемых ячеек является пустая ячейка (значение =””). При выполнении этой процедуры использовать свойство рабочего листа Cells (см.п. 4. Адресация ячеек в VBA Excel в лаб. Работе №2) .
Инструкция Do…Loop
Для выполнения инструкции For необходимо задать параметры. Эти параметры могут вычисляться или задаваться во время выполнения программы, как в последней процедуре, которые точно определяют, сколько раз должен выполняться инструкция цикла. Иногда это свойство инструкции For является ограничительным, и в этом случае VBA предлагает другую инструкцию - Do... Loop, которая также может организовать повторяющиеся вычисления, но момент прекращения вычислений здесь определяется с помощью логических условий.
Существует два типа инструкции Do…Loop: Do Whileи Do Until. Первый из них повторяет выполнение блока инструкции до тех пор, пока заданное логическое условие истинно. Вторая инструкция, Do Until, выполняет циклические вычисления до тех пор, пока изначально ложное логическое условие не станет истинным.
Упражнение 3
1. Изучите п. 2.12.3.3. Инструкция Do... Loop из файла Теория_к_лаб_4. Скопируйте в модуль Excel процедуры Sub DWU и Sub DUN, проанализируйте и выполните их.
2. Разработайте процедуру с использованием инструкции Do Until для решения следующей задачи.
3. В таблице Excel, приведённой ниже, требуется определить фамилии студентов, получивших на экзамене хотя бы одну оценку “Неуд”.
СВОДНАЯ ЭКЗАМЕНАЦИОННАЯ ВЕДОМОСТЬ | |||
ИВАНОВ | ХОР | ОТЛ | НЕУД |
ПЕТРОВ | ХОР | НЕУД | ХОР |
СИДОРОВ | ОТЛ | НЕУД | ОТЛ |
Результаты представить в виде следующей таблицы:
Неудовлетворительные оценки получили |
ИВАНОВ |
ПЕТРОВ |
СИДОРОВ |
Методические указания по выполнению Упражнения 3 п.2.
1. Скопируйте таблицу СВОДНАЯ ЭКЗАМЕНАЦИОННАЯ ВЕДОМОСТЬ из настоящего файла на Лист1, начиная с ячейки A1. Эта таблица является примером её реализации; количество фамилий в общем случае =< 40.
2. Составьте алгоритм решения задачи в виде блок-схемы, лучше – с комментариями. Реализация алгоритма в среде VBA можно осуществить одной или несколькими процедурами, используя инструкцию Call для их взаимодействия. Например, оформление результатной таблицы можно выполнить отдельной процедурой.
3. Явно объявите переменные, которые вы предполагаете использовать в процедуре, в том числе переменные циклов.
4. Переменные, представляющие значения фамилий, являются строковыми размером до 20 символов и должны объявляться как String * 20.
5. Результатную таблицу рекомендуется разместить на том же листе, на котором помещается СВОДНАЯ ЭКЗАМЕНАЦИОННАЯ ВЕДОМОСТЬ, начиная с ячейки H1.
6. Решение задачи можно осуществлять двумя способами: помещать фамилии студентов, получивших неудовлетворительную оценку сразу в результатную таблицу или сначала создать массив фамилий двоечников, а затем скопировать их в результатную таблицу.
7. Концом списка фамилий является “пустая” строка, имеющая значение “”. Это значение можно использовать для определения конца списка в таблице Excel. Поскольку ячейка таблицы Excel может содержать невидимые пробелы, для определения того, что строка является “пустой”, следует использовать функцию VBA Trim, возвращающая значение ячейки или переменной без начальных и конечных пробелов, например, Trim(Cells(k, 1)), Trim(Фамилия).
8. Для просмотра исходного списка значений ячеек или массива фамилий следует использовать инструкцию Do Until, проверяющую, заполнена ли очередная ячейка таблицы или соответствующая ей переменная.