информатика. Игнатьева Елена Александровна, Измайлова Елена Ивановна. Информатика. Электронный ресурс методические указания
Скачать 4.32 Mb.
|
Вызовы функций Оформление вызова функции зависит от того, требуется ли использовать ее значение в вызывающей процедуре. Если Вы хо- тите передать вычисляемое функцией значение в переменную или применить его в выражении правой части оператора при- своения, то вызов пользовательской функции имеет тот же вид, что и вызов встроенной функции, например, sin(x) . При вызове указывается имя функции, а после него идет заключенный в круглые скобки список фактических параметров. Например, если заголовок функции MyFunc : Function Myfunc(Name As String, Age As Integer, Newdate As Date) As Integer использовать ее значение можно с помощью вызовов: val= Myfunc("Alex",25, "10/04/97") или x = sqrt(Myfunc("Alex",25, "10/04/97")) + x Если же значение, вычисляемое функцией, нас не интересу- ет и нужно воспользоваться лишь ее побочными эффектами, вы- зов функции может иметь ту же форму, что и вызов процедуры Sub . Например: Myfunc "Alex",I, "10/04/97" или: Call Myfunc(Myson, 25, DateOfArrival) Использование именованных аргументов В предыдущих примерах фактические параметры вызова процедуры или функции располагались в том же порядке, что и 194 формальные параметры в ее заголовке. Это не всегда удобно, особенно если некоторые аргументы необязательны ( Optional ). VBA позволяет указывать значения аргументов в произвольном порядке, используя их имена. При этом после имени аргумента ставятся двоеточие и знак равенства, после которого помещается значение аргумента (фактический параметр). Например, вызов рассмотренной выше процедуры-функции MyFunc может выгля- деть так: Myfunc Age:= 25, Name:= "Alex", Newdate:= DateOfArrival Удобство такого способа особенно проявляется при вызове процедур с необязательными аргументами, которые всегда по- мещаются в конец списка аргументов в заголовке процедуры. Пусть, например, заголовок процедуры ProcEx : Sub ProcEx(Name As String, Optional Age As Integer, Optional City = "Москва") Список ее аргументов включает один обязательный аргу- мент Name и два необязательных: Age и City , – причем для по- следнего задано значение по умолчанию " Москва ". Если при вы- зове этой процедуры второй аргумент не требуется, то при вызо- ве, не использующем именованных параметров, сам параметр опускается, но, выделяющая его запятая, должна оставаться: ProcEx "Оля",,"Тверь" Вместо этого можно использовать вызов с именами аргу- ментов: ProcEx City:="Тверь", Name:="Оля" В данном случае не требуется заменять пропущенный аргу- мент запятыми и соблюдать определенный порядок следования аргументов. Если некий необязательный аргумент не задан при вызове, то вместо него подставляется значение, определенное пользователем по умолчанию, если и такое не определено, под- ставляется значение, определенное по умолчанию для соответст- вующего типа. Например, при вызове: ProcEx Name:="Оля" в качестве значения аргумента Age в процедуру передастся 0 , а в качестве аргумента City – явно заданное по умолчанию значение " Москва ". Чтобы процедура "узнала", что ей при вызове передан не- обязательный аргумент, можно воспользоваться функцией 195 IsMissing . Она по имени аргумента возвращает логическое значе- ние True , когда значение аргумента не передано в процедуру, и False , если аргумент задан. Это применимо только в том случае, если параметр имеет тип Variant . Для всех остальных типов дан- ных полагается, что в процедуру всегда передано значение пара- метра, явно или неявно заданное по умолчанию. Поэтому, если такая проверка необходима, то параметр должен иметь тип Variant . Для массива аргументов ParamArray функция IsMissing всегда возвращает False , и для установления его пустоты нужно проверять, что верхняя граница индекса меньше нижней. Рассмотрим функцию от двух аргументов, второй из кото- рых необязателен: Function TwoArgs(I As Integer, Optional X As Variant) As Va- riant If IsMissing(X) Then ' если 2-ой аргумент отсутствует, то вернуть 1-ый. TwoArgs = I Else ' если 2-ой аргумент есть, то вернуть их произведение TwoArgs = I*X End If End Function Вот результаты нескольких вызовов этой функции в окне отладки: ? TwoArgs(5,7) 35 ? TwoArgs(5.5) 6 ? TwoArgs(5, 5.5) 27,5 ? TwoArgs(5, "6") 30 Аргументы, являющиеся массивами Аргументы процедуры могут быть массивами. Процедуре передается имя массива, а размерность массива определяется встроенными функциями LBound и UBound . Приведем пример процедуры, вычисляющей скалярное произведение векторов: 196 Public Function ScalarProduct(X() As Integer, Y() As Integer) As Integer 'Вычисляет скалярное произведение двух векторов. 'Предполагается, что границы массивов совпадают. Dim i As Integer, Sum As Integer Sum = 0 For i = LBound(X) To UBound(X) Sum = Sum+X(i)*Y(i) Next i ScalarProduct = Sum End Function Оба параметра процедуры, передаваемые по ссылке, явля- ются массивами, работа с которыми в теле процедуры не пред- ставляет затруднений, благодаря тому, что функции LBound и UBound позволяют установить границы массива по любому из- мерению. Приведем программу, в которой вызывается функция ScalarProduct : Public Sub TestScalarProduct() Dim A(1 To 5) As Integer Dim B(1 To 5) As Integer Dim C As Variant Dim Res As Integer Dim i As Integer C = Array(1, 2, 3, 4, 5) For i = 1 To 5 A(i) = C(i-1) Next i C = Array(5, 4, 3, 2, 1) For i = 1 To 5 B(i) = C(i-1) Next i Res = ScalarProduct(A, B) Debug.Print Res End Sub 3. ПОРЯДОК ВЫПОЛНЕНИЯ 1. Получить задание у преподавателя. 197 2. Выполнить задание в соответствии с вариантом. 3. Ответить на контрольные вопросы. 4. ЗАДАНИЕ Выполнить сортировку одномерного массива в соответствии с заданным вариантом. Алгоритм сортировки выполнить в виде отдельной процедуры. 1. Известен список фамилий и рост учеников класса. Напечатать в порядке возрастания роста список детей, ис- пользуя метод шейкер – сортировки. 2. Известен список спортсменов и результат их прыжков в длину. Напечатать общий список в порядке возрастания результата, используя метод сортировки бинарными включениями. 3. Известен список биатлонистов и результаты их стрельбы на двух огневых рубежах (попадания). На каждом рубеже пять мишеней. Напечатать общий список биатлонистов в порядке убывания результата на втором огневом рубеже, используя метод прямого выбора. 4. Известен список студентов группы и количество пропу- щенных часов каждым из студентов. Напечатать список студентов в порядке возрастания количе- ства пропущенных часов (если пропуски имеют место), исполь- зуя сортировку прямыми включениями. 5. Известен список рабочих и их месячный заработок. Напечатать список рабочих в порядке убывания зарплаты, используя метод сортировки прямыми включениями. 6. Задан числовой массив, состоящий из J элементов. Напечатать отрицательные числа в порядке возрастания по модулю, используя шейкер – сортировку. 7. Задан числовой массив, состоящий из J элементов. Напечатать положительные числа в порядке убывания, ис- пользуя метод прямого выбора. 8. Известен список фамилий и вес студентов вашей груп- пы. 198 Напечатать в порядке возрастания список студентов, вес ко- торых не меньше среднего веса всей группы. Для этого использо- вать метод сортировки бинарными включениями. 9. Дан одномерный массив из I целых чисел. Напечатать отрицательные числа в порядке возрастания по модулю, а положительные числа в порядке убывания, используя метод прямого обмена. 10. Известен список студентов группы и количество пропу- щенных часов каждым из студентов. Напечатать в порядке возрастания тех, кто пропустил более 10 часов, используя метод сортировки прямыми включениями. 11. Известен список спортсменов и результат их прыжков в длину. Напечатать в порядке убывания тех, чей результат меньше 3 м, используя сортировку прямого выбора. 12. Известен список спортсменов и результат их прыжков в длину. Напечатать в порядке возрастания тех, чей результат больше 3 м, используя шейкер – сортировку. 13. Известен список фамилий и рост учеников класса. Напечатать в порядке убывания тех, чей рост меньше 160 см, используя сортировку бинарными включениями. 14. Известен список фамилий и рост учеников класса. Напечатать в порядке возрастания тех, чей рост больше 160 см, используя сортировку прямого обмена. 5. КОНТРОЛЬНЫЕ ВОПРОСЫ 1. Чем отличается процедура типа "Sub" от процедуры типа "Function"? 2. Что обозначают ключевые слова ByVal и ByRef при опи- сании процедур? 3. Что обозначает ключевое слово Optional при описании процедур? 4. Функции с побочным эффектом. 5. Создание новой процедуры. 6. Вызов процедуры типа "Sub". 7. Вызов процедуры типа "Function". 8. Использование именованных аргументов. 199 9. Как использовать аргументы, являющиеся массивами? Оглавление Лабораторная работа № 1 Основы позиционных систем счисления ........................................................................................... 2 1. ЦЕЛЬ РАБОТЫ ............................................................................ 2 2. ТЕОРЕТИЧЕСКИЕ ПОЛОЖЕНИЯ............................................ 2 Классификация позиционных систем счисления................ 2 Преобразование чисел .......................................................... 5 Арифметические операции .................................................. 1 Основные положения ........................................................... 4 Прямой код............................................................................ 4 Обратный код....................................................................... 6 Дополнительный код ............................................................ 7 Модифицированные обратный и дополнительный коды .. 8 ПРИЛОЖЕНИЕ............................................................................... 10 Лабораторная работа № 2 Работа с файлами и директориями в операционной системе MS DOS..................................................... 17 1. ЦЕЛЬ РАБОТЫ .......................................................................... 17 2. ТЕОРЕТИЧЕСКИЕ ПОЛОЖЕНИЯ.......................................... 17 Основные понятия.............................................................. 17 Назначение операционной системы.................................. 17 Понятие файла........................................................................... 18 Способы обращения к файлу ............................................. 19 Характеристика MS DOS.................................................. 21 Организация доступа к файлу................................................... 21 Модульная структура MS DOS................................................. 24 Загрузка MS DOS в оперативную память с диска................... 27 Технология работы в MS DOS ........................................... 28 Общие сведения о командах ...................................................... 28 Порядок действий при выполнении команды MS DOS ............ 30 Команды MS DOS общего назначения ...................................... 31 Основные команды для работы с директориями .................... 31 Основные команды для работы с файлами.............................. 35 Образец варианта задания .............................................................. 39 Лабораторная работа № 3 Основы работы в текстовом редакторе Microsoft Word................................................................................. 40 200 ЦЕЛЬ РАБОТЫ ............................................................................... 40 ТЕОРЕТИЧЕСКИЕ СВЕДЕНИЯ ................................................... 40 Работа в Microsoft Word ................................................................ 40 Создание документа .................................................................. 40 Перемещение по документу ...................................................... 42 Пользовательский интерфейс................................................... 43 Открытие документа ............................................................... 50 Сохранение документа .............................................................. 51 Выход из Microsoft Word ............................................................ 52 Работа с текстом .......................................................................... 52 Ввод текста ............................................................................... 52 Выделение фрагмента текста ................................................. 52 Редактирование текста ........................................................... 53 Отмена операций над текстом................................................ 53 Копирование текста.................................................................. 53 Перемещение текста................................................................. 54 Вставка символа ........................................................................ 54 Вставка формул ......................................................................... 54 Форматирование текста .................................................. 55 Выбор темы................................................................................ 55 Установка позиций табуляции.................................................. 55 Изменение параметров шрифта и иабзаца ............................. 56 Изменение интервала и положения символов.......................... 58 Создание и редактирование списков ........................................ 58 Оформление страниц документа ..................................... 59 Изменение и установка полей страницы.......................... 61 Изменение ориентации страниц ....................................... 61 Вставка разрывов страниц ............................................... 62 Добавление и удаление страницы...................................... 67 Вставка колонтитулов и нумерация страниц ................. 68 Колонки ............................................................................... 72 Работа с графическими объектами ................................. 75 Создание таблиц ................................................................ 75 4. ПОРЯДОК ВЫПОЛНЕНИЯ РАБОТЫ ...................................... 80 5. КОНТРОЛЬНЫЕ ВОПРОСЫ..................................................... 80 Лабораторная работа № 4 Табличный процессор MS EXCEL. Создание таблиц и диаграмм. Статистическая обработка данных 81 201 1. ЦЕЛЬ РАБОТЫ ........................................................................... 81 2. ТЕОРЕТИЧЕСКИЕ СВЕДЕНИЯ ............................................... 81 Объекты документа Excel ................................................ 81 Ввод данных ........................................................................ 85 Форматирование ячеек...................................................... 87 2.4. Ввод и использование формул ..................................... 90 Построение диаграмм ....................................................... 94 3. СОДЕРЖАНИЕ И ПОРЯДОК ВЫПОЛНЕНИЯРАБОТЫ ....... 96 Создание электронной таблицы и заполнение формулами96 3.1.1. Задание 1 ........................................................................... 96 Задание 2 ..................................................................................... 97 Задание 3 ..................................................................................... 98 Задание для защиты: редактирование таблиц ............... 99 Задание 1 ..................................................................................... 99 Задание 2 ................................................................................... 100 4. КОНТРОЛЬНЫЕ ВОПРОСЫ................................................... 100 Лабораторная работа № 5 Работа со списками данных MS EXCEL............................................................................................ 101 1. ЦЕЛЬ РАБОТЫ ........................................................................ 101 2. ТЕОРЕТИЧЕСКИЕ ПОЛОЖЕНИЯ........................................ 101 Общие сведения о списках .............................................. 101 Создание и корректировка списка................................... 102 Сортировка списка ........................................................... 104 Фильтрация списка........................................................... 106 Вычисление промежуточных и общих итогов ............... 112 1. ПОРЯДОК ВЫПОЛНЕНИЯ.................................................... 114 2. ЗАДАНИЕ................................................................................. 114 Лабораторная работа № 6 Работа с макросами в табличном процессоре MS EXCEL. ................................................................ 117 3. ЦЕЛЬ РАБОТЫ ........................................................................ 117 4. ТЕОРЕТИЧЕСКИЕ ПОЛОЖЕНИЯ........................................ 117 Запись макроса ................................................................. 118 Запуск макроса нажатием клавиши CTRL в сочетании с клавишей быстрого вызова. ..................................................... 122 Запуск макроса нажатием кнопки на панели быстрого доступа 122 Запуск макроса щелчком области графического объекта123 Запуск макроса кнопкой на рабочем листе .................... 125 202 3. ПОРЯДОК ВЫПОЛНЕНИЯ.................................................... 126 4. ЗАДАНИЕ................................................................................. 128 Лабораторная работа № 7 Массивы. Элементарные операции с матрицами...................................................................................... 129 1. ЦЕЛЬ РАБОТЫ ........................................................................ 129 2. ТЕОРЕТИЧЕСКИЕ ПОЛОЖЕНИЯ........................................ 129 3. ПОРЯДОК ВЫПОЛНЕНИЯ.................................................... 144 4. ЗАДАНИЕ................................................................................. 144 5. КОНТРОЛЬНЫЕ ВОПРОСЫ ................................................. 146 Лабораторная работа № 8 Сортировка массивов........................ 147 1. ЦЕЛЬ РАБОТЫ ........................................................................ 147 2. ТЕОРЕТИЧЕСКИЕ ПОЛОЖЕНИЯ........................................ 147 Основные положения ....................................................... 147 методом прямого включения........................................... 148 Сортировка методом прямого выбора .......................... 150 Сортировка методом прямого обмена .......................... 152 Сортировка бинарными включениями ............................ 154 Шейкер – сортировка ...................................................... 156 3. ПОРЯДОК ВЫПОЛНЕНИЯ.................................................... 159 4. ЗАДАНИЕ................................................................................. 159 5. КОНТРОЛЬНЫЕ ВОПРОСЫ ................................................. 161 Лабораторная работа № 9 Работа со стоками ............................. 162 1. ЦЕЛЬ РАБОТЫ ........................................................................ 162 2. ТЕОРЕТИЧЕСКИЕ СВЕДЕНИЯ ............................................ 162 3. ПОРЯДОК ВЫПОЛНЕНИЯ.................................................... 174 4. ЗАДАНИЕ................................................................................. 174 5. КОНТРОЛЬНЫЕ ВОПРОСЫ ................................................. 179 Лабораторная работа № 10 Пользовательские процедуры и функции ......................................................................................... 180 1. ЦЕЛЬ РАБОТЫ ........................................................................ 180 2. ТЕОРЕТИЧЕСКИЕ СВЕДЕНИЯ ............................................ 180 Описание и создание процедур ........................................ 180 Классификация процедур ................................................. 181 Синтаксис процедур и функций ...................................... 182 Функции с побочным эффектом ..................................... 186 Создание процедуры......................................................... 187 Создание процедур обработки событий ........................ 188 Вызовы процедур и функций ............................................ 189 203 Использование именованных аргументов....................... 193 Аргументы, являющиеся массивами ............................... 195 3. ПОРЯДОК ВЫПОЛНЕНИЯ.................................................... 196 4. ЗАДАНИЕ................................................................................. 197 5. КОНТРОЛЬНЫЕ ВОПРОСЫ ................................................. 198 |