Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

информатика.методичка

.pdf
Скачиваний:
36
Добавлен:
29.03.2015
Размер:
2.63 Mб
Скачать

Министерство образования и науки Российской Федерации

Санкт-Петербургский государственный архитектурно-строительный университет

C. Н. НИКИФОРОВ

ИНФОРМАТИКА для I курса

Часть I

Учебное пособие

Санкт-Петербург

2011

1

УДК 681.3

Рецензент д-р физ.-мат. наук, профессор Б. Г. Вагер

Никифоров, С. Н.

Информатика для I курса. Ч. I: учеб. пособие по выполнению лабораторных работ по курсу «Информатика» / С. Н. Никифоров;

СПбГАСУ. – СПб., 2011. – 100 с.

ISBN

Учебное пособие предназначено для помощи студентам при выполнении лабораторных работ в среде Excel и VBA. Комментируются некоторые особенности программирования, приводятся и поясняются варианты программ.

Предназначено для студентов всех специальностей.

Ил. 51. Библиогр.: 2 назв.

Рекомендовано Редакционно-издательским советом СПбГАСУ в качестве учебного пособия.

ISBN

© С. Н. Никифоров, 2011

 

© Санкт-Петербургский государственный

 

архитектурно-строительный университет, 2011

ВВЕДЕНИЕ

Настоящее издание предназначено для студентов первого курса, выполняющих лабораторные работы по курсу «Информатика».

Осознавая масштабность курса, автор не претендует на всеобъемлемость материала, а наоборот, даже не рассматривает некоторые разделы вообще, полагая, что при необходимости с ними можно ознакомиться в любом из фундаментальных учебников, изданных в последнее время.

Основная задача – оказать помощь студентам при выполнении лабораторных работ в среде EXCEL и VBA.

Вместе с тем автор считает целесообразным отметить обязательность посещения лекций по курсу «Информатика», в соответствии с которым и формируются тексты программ, усложняющиеся по мере освоения средств и возможностей VBA.

1. ТАБУЛИРОВАНИЕ ФУНКЦИИ

Выполнение лабораторной работы «Табулирование функции» состоит из двух частей:

табулирование функции в Excel;табулирование функции в VBA.

Критерием правильности является совпадение полученных таблиц.

Процесс табулирования функции в Excel описан во многих монографиях, однойизкоторыхявляетсякнигаА. Гарнаева«Использование MS Excel и VBA в экономике и финансах». Но на некоторые моменты хотелось бы обратить внимание.

Значение первой ячейки таблицы в принципе может быть любым, но, как правило, оно выбирается в соответствии с вариантом задания.

2

3

Главное – оно задается КОНСТАНТОЙ!

Врассматриваемом примере (рис. 1.1) такой ячейкой является А6, а значение константы -2 (минус два).

Адрес и значение ячейки, в которой хранится величина шага изменения аргумента табулируемой функции, также произвольны, но значение обязательно – КОНСТАНТА.

Врассматриваемом примере такой ячейкой является B4, а значение константы 0,25. (Если константа задается дробью, то она должна «прижаться» к правой стенке ячейки, иначе она воспринимается как символьная константа, а не как цифровая. Достигается это заменой неправильно выбранного знака-разделителя дробной части от целой – точки на запятую.)

Обязательным является получение графика в виде, представленном на рис. 1.1, когда кривая графика начинается от оси Y, а маркерыкривойграфика(еслищелкнутьпокривой) совпадаютсрисками

иподписями оси X (сравните с графиком рис. 1.2).

Чтобы от графика рис. 1.2 перейти к графику рис. 1.1, необходимо в Excel дважды щелкнуть по оси X, в появившемся окне «Формат оси» (рис. 1.3) убрать флажок в разделе «пересечение с осью Y (значений) между категориями» и нажать OK.

Программа табулирования функции в VВА

Private Sub CommandButton1_Click() Dim i As Integer

Dim j As Integer

Dim x As Single Dim xn As Single Dim xk As Single Dim dx As Single Dim y As Single

xn = InputBox("Xn = ", "Ввод начального значения x", -2, 8000, 2000) xk = InputBox("Xk = ", "Ввод конечного значения x", 2, 8000, 1000) dx = InputBox("dX = ", "Ввод значения шага x”, 0.25, 8000, 2000)

i = InputBox("i = ", "Вводзначенияначалатаблицы, строкаi", 5, 8000, 1000) j = InputBox("j = ", "Вводзначенияначалатаблицы, столбецj", 3, 8000, 2000) x = xn: Cells(i, j) = "X(vba)": Cells(i, j + 1) = "Y(vba)"

Рис. 1.1 Рис. 1.1

4

5

Рис. 1.2

Рис. 1.3

10 y = Exp(x - 2) * (1 + x ^ 2 + 2 * x) ^ 0.5 Cells(i + 1, j) = x

Cells(i + 1, j + 1) = y x = x + dx

i = i + 1

If x > xk Then GoTo 20 Else GoTo 10 20 End Sub

Некоторые комментарии к программе:

объявление простых переменных, строго говоря, в VBA не требуется, но бывают случаи, когда именно из-за этого программа работает неправильно или не работает вообще;

воператореInputBox используютсяпятьпараметров. Первые два – символьные константы, их использование объясняется при появлении окна InputBox. Третий параметр – предлагаемое значение, которое можно изменить, четвертый и пятый параметры – координаты левого верхнего угла окна InputBox на экране;

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

2. ТАБУЛИРОВАНИЕ РАЗВЕТВЛЯЮЩЕЙСЯ ФУНКЦИИ

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

СКОПИРОВАТЬ ВЕСЬ ЛИСТ С ЛАБОРАТОРНОЙ РАБОТОЙ «ТАБУЛИРОВАНИЕ ФУНКЦИИ» НА ЧИСТЫЙ ЛИСТ И НА НЕМ ПРОИЗВЕСТИ НЕОБХОДИМЫЕ ИЗМЕНЕНИЯ.

6

7

Лабораторная работа «Табулирование разветвляющейся функции» также состоит из двух частей:

табулирование функции в Excel;табулирование функции в VBA.

Критерием правильности является совпадение полученных таблиц.

ОднаковсвязисусловиемзадачиспектрзначенийфункцииG(x) формируется не как раньше – в одном столбце, а в двух (рис. 2.1).

ПриэтомвячейкиВ6:B12 вноситсяарифметическоевыражение, соответствующее первой формуле задания, а в ячейки С13:C26 – арифметическое выражение, соответствующее второй формуле задания. Можно отобразить их разным цветом.

Именно эти два столбца ПОЛНОСТЬЮ используются для построения графика.

В ячейках D6:D26 записывается логическая функция ЕСЛИ с помощью мастера функций fx .

Выполняется это следующим образом:выбрать ячейку D6;

включить мастер функций fx;

в появившемся окне рис. 2.2 мастера функций fx выбрать логическую функцию ЕСЛИ;

в окне «Аргументы функции» (рис. 2.3) в первом окне записать логическое выражение, соответствующее заданию, при этом справа, если выражение написано грамматически правильно, появляется результат «= истина».

В самом деле, значение ячейки А6 равно -3, что меньше нуля. Во второе окно записывается арифметическое выражение, соответствующее первой формуле задания, в третье – арифметическое выражение, соответствующее второй формуле задания. Грамматическаяправильностьзаписиарифметическихвыражений подтверждается числовыми результатами, сформированными на основании вычислений арифметических выражений при значении ячейки А6, равном -3. Эти результаты появляются справа от окон:

нажать ОК;

скопировать формулу ячейки D6 в диапазон D6:D26.

Рис. 2.1 Рис. 2.1

8

9

Рис. 2.2

Рис. 2.3

Числовые значения ячеек диапазона D6:D26 должны совпадать с числовыми значениями ячеек диапазонов B6:B12 и C13:C26.

Можно не обращаться к мастеру функций fx, а просто записать в ячейку D6 выражение

=ЕСЛИ(A6<=0;SIN(A6);EXP(-A6))

а затем скопировать от D6 до D26 включительно.

ПРОГРАММНЫЙ МОДУЛЬ VBA ИЗ ЛАБОРАТОРНОЙ РАБОТЫ «ТАБУЛИРОВАНИЕ ФУНКЦИИ» СКОПИРОВАТЬ В МОДУЛЬ ОБЪЕКТА CommandButton ЛАБОРАТОРНОЙ РАБОТЫ «ТАБУЛИРОВАНИЕ РАЗВЕТВЛЯЮЩЕЙСЯ ФУНКЦИИ».

Внести соответствующие изменения.

Программа табулирования разветвляющейся функции вVВА

Private Sub CommandButton1_Click() Dim i As Integer

Dim j As Integer

Dim x As Single Dim xn As Single Dim xk As Single Dim dx As Single Dim g As Single

xn = InputBox("Xn = ", "Ввод начального значения x", -3, 8000, 2000) xk = InputBox("Xk = ", "Ввод конечного значения x", 7, 8000, 1000) dx = InputBox("dX = ", "Ввод значения шага x", 0.5, 8000, 2000)

i = InputBox("i = ", "Вводзначенияначалатаблицы, строкаi", 5, 8000, 1000) j = InputBox("j = ", "Вводзначенияначалатаблицы, столбецj", 5, 8000, 2000) x = xn: Cells(i, j) = "X(vba)": Cells(i, j + 1) = "G1(vba)": Cells(i, j + 2) = "G2(vba)" 10 Cells(i + 1, j) = x

If x <= 0 Then g = Sin(x)

Cells(i + 1, j + 1) = g Else

g = Exp(-x)

Cells(i + 1, j + 2) = g End If

x = x + dx i = i + 1

If x > xk Then GoTo 20 Else GoTo 10 20 End Sub

10

11

Некоторые комментарии к программе:

применен условный оператор, у которого в частях Then и Else находится по два оператора, поэтому по грамматическим требованиям необходим переход на другую строку, и завершается оператор

End If.

3. ТАБУЛИРОВАНИЕ ФУНКЦИИ, РАЗВЕТВЛЯЮЩЕЙСЯ БОЛЬШЕ ЧЕМ ОДИН РАЗ

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

СКОПИРОВАТЬ ВЕСЬ ЛИСТ С ЛАБОРАТОРНОЙ РАБОТОЙ «ТАБУЛИРОВАНИЕ РАЗВЕТВЛЯЮЩЕЙСЯ ФУНКЦИИ» НА ЧИСТЫЙ ЛИСТ И НА НЕМ ПРОИЗВЕСТИ НЕОБХОДИМЫЕ ИЗМЕНЕНИЯ.

Лабораторная работа «Табулирование функции, разветвляющейся больше чем один раз» также состоит из двух частей:

табулирование функции в Excel;табулирование функции в VBA.

Критерием правильности является совпадение полученных таблиц.

Однако в связи с условием задачи спектр значений функции Z(x) формируется не как раньше – в одном или в двух столбцах, а в трех (рис. 3.1).

При этом в ячейки В6:B12 вносится арифметическое выражение, соответствующее первой формуле задания, в ячейки С13:C19 вносится арифметическое выражение, соответствующее второй формуле задания, а в ячейки D20:D26 вносится арифметическое выражение, соответствующее третьей формуле задания. Можно отобразить их разным цветом.

Именно эти три столбца ПОЛНОСТЬЮ используются для построения графика.

Рис. 3.1 Рис. 3.1

12

13

Вячейках E6:E26 записывается логическая функция ЕСЛИ

спомощью мастера функций fx.

Выполняется это следующим образом:выбрать ячейку E6;

включить мастер функций fx;

в появившемся окне (рис. 3.2) мастера функций fx выбрать логическую функцию ЕСЛИ;

Рис. 3.2

в окне «Аргументы функции» (рис. 3.3) в первом окне записать логическое выражение, соответствующее заданию, при этом справа, если выражение написано грамматически правильно, появляется результат «= истина».

В самом деле, значение ячейки А6 равно -3, что меньше нуля. Во второе окно записывается арифметическое выражение, соответствующее первой формуле задания, в третье – логическая функция

Если(И(A6>0;A6<=3,5);exp(-A6);ln(A6)),

Рис. 3.3

соответствующаявторойитретьейчастямзадания. Грамматическая правильность записи арифметических выражений подтверждается числовыми результатами, сформированными на основании вычислений арифметических выражений при значении ячейки А6, рав-

ном -3. Эти результаты появляются справа от окон;нажать ОК;

скопировать формулу ячейки E6 в диапазон E6:E26. Числовые значения ячеек диапазона E6:E26 должны совпа-

дать с числовыми значениями ячеек диапазонов B6:B12, C13:C19

и D20:D26.

Можно не обращаться к мастеру функций fx, а просто записать в ячейку E6 выражение

=ЕСЛИ(A6<=0;SIN(A6);ЕСЛИ(И(A6>0;A6<=3,5);EXP(-A6);LN(A6))),

а затем скопировать от E6 до E26 включительно.

14

15

ПРОГРАММНЫЙМОДУЛЬVBA ИЗЛАБОРАТОРНОЙРАБОТЫ «ТАБУЛИРОВАНИЕ РАЗВЕТВЛЯЮЩЕЙСЯ ФУНКЦИИ» СКОПИРОВАТЬ В МОДУЛЬ ОБЪЕКТА CommandButton ЛАБОРАТОРНОЙ РАБОТЫ «ТАБУЛИРОВАНИЕ ФУНКЦИИ, РАЗВЕТВЛЯЮЩЕЙСЯ БОЛЬШЕ ЧЕМ ОДИН РАЗ».

Внести соответствующие изменения.

Программа табулирования в VВА функции, разветвляющейся больше чем один раз

Private Sub CommandButton1_Click() Dim i As Integer

Dim j As Integer

Dim x As Single Dim xn As Single Dim xk As Single Dim dx As Single

xn = InputBox("Xn = ", "Ввод начального значения x", -3, 8000, 2000) xk = InputBox("Xk = ", "Ввод конечного значения x", 7, 8000, 1000) dx = InputBox("dX = ", "Ввод значения шага x", 0.5, 8000, 2000)

i = InputBox("i = ", "Вводзначенияначалатаблицы, строкаi", 5, 8000, 1000) j = InputBox("j = ", "Вводзначенияначалатаблицы, столбецj", 6, 8000, 2000) x = xn: Cells(i, j) = "X(vba)": Cells(i, j + 1) = "Z1(vba)": Cells(i, j + 2) = "Z2(vba)": Cells(i, j + 3) = "Z3(vba)"

10 Cells(i + 1, j) = x If x <= 0 Then

z = Sin(x)

Cells(i + 1, j + 1) = z End If

If (x > 0) And (x <= 3.5) Then z = Exp(-x)

Cells(i + 1, j + 2) = z End If

If x > 3.5 Then

z = Application.Ln(x)

Cells(i + 1, j + 3) = z End If

x = x + dx i = i + 1

16

If x > xk Then GoTo 20 Else GoTo 10 20 End Sub

Некоторые комментарии к программе:

по количеству условий задания применены три неполных условных оператора. Так как у каждого оператора в частях Then находятся по два оператора, то по грамматическим требованиям необходим переход на другую строку, и завершается каждый оператор End If;

можно было воспользоваться вложенными условными операторами, но очень часто возникают логические ошибки при оценке уровня вложенности после части ELSE; считается целесообразным при решении подобных задач использовать грамматическую конструкцию, в которой количество неполных условных операторов соответствует числу логических условий решаемой задачи;

в программе используется сложное логическое выражение

(x > 0) And (x <= 3.5),

состоящее из двух простых, объединенных логической функциейAnd.

4. ТАБУЛИРОВАНИЕ ДВУХ ФУНКЦИЙ

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

СКОПИРОВАТЬ ВЕСЬ ЛИСТ С ЛАБОРАТОРНОЙ РАБОТОЙ «ТАБУЛИРОВАНИЕ ФУНКЦИИ» НА ЧИСТЫЙ ЛИСТ И НА НЕМ ПРОИЗВЕСТИ НЕОБХОДИМЫЕ ИЗМЕНЕНИЯ.

Лабораторная работа «Табулирование двух функций» также состоит из двух частей:

17

табулирование функции в Excel;табулирование функции в VBA.

Критерием правильности является совпадение полученных таблиц.

Поэтому в соответствии с условием задачи спектр значений функции Y(x) необходимо заменить на спектр значений функции V(x), диапазон B6:B32 (рис. 4.1), и рядом, в диапазоне С6:С32, сформировать спектр значений функции W(x) (см. рис. 4.1).

Именно эти два столбца ПОЛНОСТЬЮ используются для построения графика.

ПРОГРАММНЫЙ МОДУЛЬ VBA ИЗ ЛАБОРАТОРНОЙ РАБОТЫ «ТАБУЛИРОВАНИЕ ФУНКЦИИ» СКОПИРОВАТЬ В МОДУЛЬ ОБЪЕКТА CommandButton ЛАБОРАТОРНОЙ РАБОТЫ «ТАБУЛИРОВАНИЕ ДВУХ ФУНКЦИЙ».

Внести соответствующие изменения.

Программа табулирования двух функций в VВА

Private Sub CommandButton1_Click() Dim i As Integer

Dim j As Integer

Dim x As Single Dim xn As Single Dim xk As Single Dim dx As Single e = 0.001

xn = InputBox("Xn = ", "Ввод начального значения x", -1, 8000, 2000) xk = InputBox("Xk = ", "Ввод конечного значения x", 0.3, 8000, 1000) dx = InputBox("dX = ", "Ввод значения шага x", 0.05, 8000, 2000)

i = InputBox("i = ", "Вводзначенияначалатаблицы, строкаi", 5, 8000, 1000) j = InputBox("j = ", "Вводзначенияначалатаблицы, столбецj", 4, 8000, 2000) x = xn: Cells(i, j) = "X(vba)": Cells(i, j + 1) = "V(vba)": Cells(i, j + 2) = "W(vba)" 10 Cells(i + 1, j) = x

v = Sin(x ^ 2) + Cos(Application.WorksheetFunction.Pi * x) ^ 3 Cells(i + 1, j + 1) = v

w = Cos(x ^ 3) ^ 2 - Sin(Application.WorksheetFunction.Pi * x ^ 2) Cells(i + 1, j + 2) = w

18

19

Рис. 4.1