Реферат Курсовая Конспект
Задача № 1 - раздел Информатика, ИНФОРМАТИКА Составить Программу Табулирования Функций ...
|
Составить программу табулирования функций и для , меняющимся от до с шагом . В нечетных вариантах задачи использовать цикл Do While – Loop с параметром х, счет оформить в виде процедуры, а счет оформить в виде подпрограммы-функции. Для четных вариантов использовать цикл Do Until – Loop с параметром х , счет оформить в виде подпрограммы-функции, а счет – в виде процедуры.
1. ; ;
2. ; ;
3. ; ;
4. ; ;
5. ; ;
6. ; ;
7. ; ;
8. ; ;
9. ; ;
10. ; ;
Используя приведенные в образцах процедуры ввода и вывода векторов и матриц, сортировки векторов в порядке возрастания (убывания) как «стандартные», составить программы нижеследующих задач.
Для каждой задачи подготовить числовой материал, состоящий из чисел, которые имеют одну цифру, отличную от нуля, до десятичной запятой и одну цифру, отличную от нуля, после десятичной запятой (например: -7,4; 3,8). Примерно треть чисел взять так, чтобы они были отрицательными. Если по условию задачи нужны нулевые элементы, то их необходимо включить в исходные данные. Исходные данные подбирать так, чтобы условию задачи удовлетворяло 3 - 6 элемента массива или ряда матрицы.
Задача 2
1. Даны векторы и . Для каждого из них найти сумму абсолютных величин элементов с нечетным индексом.
2. Даны векторы и . Для каждого из них найти произведение квадратных корней из положительных элементов.
3. Даны векторы и . Для каждого из них найти число отрицательных элементов.
4. Даны векторы и . Для каждого из них найти число элементов, которые меньше или равны -1,4 .
5. Даны векторы и . Для каждого из них найти число элементов, которые больше или равны 2,66.
6. Даны векторы и . Для каждого из них найти произведение абсолютных величин ненулевых элементов.
7. Даны векторы и . Для каждого из них найти число элементов, абсолютная величина которых меньше 3,7.
8. Даны векторы и . Для каждого из них найти сумму элементов, принадлежащих [-1,3; 2,6),
9. Даны векторы и . Для каждого из них найти число элементов, принадлежащих (-2,7; 3,3].
10. Даны векторы и . Для каждого из них найти среднее арифметическое положительных элементов.
Задача 3
1. Из двух массивов a(9) и b(12) получить новый массив c , состоящий из неотрицательных элементов исходных массивов. Полученный массив расположить в порядке возрастания.
2. Из двух массивов a(11) и b(14) получить новый массив c , состоящий из отрицательных элементов исходных массивов. Полученный массив расположить в порядке убывания.
3. Из двух массивов a(10) и b(16) получить новый массив c , состоящий из элементов исходных массивов, которые больше или равны -1,87. Полученный массив расположить в порядке возрастания.
4. Из двух массивов a(13) и b(8) получить новый массив c , состоящий из элементов исходных массивов, которые по модулю больше 2,37. Полученный массив расположить в порядке убывания.
5. Из двух массивов a(11) и b(16) получить новый массив c , состоящий из элементов исходных массивов, которые по модулю меньше или равны 4,33. Полученный массив расположить в порядке возрастания.
6. Из двух массивов a(12) и b(9) получить новый массив c , состоящий из модулей отрицательных элементов исходных массивов. Полученный массив расположить в порядке убывания.
7. Из двух массивов a(7) и b(16) получить новый массив c , состоящий из квадратов положительных элементов исходных массивов. Полученный массив расположить в порядке возрастания.
8. Из двух массивов a(9) и b(16) получить новый массив c , состоящий из логарифмов элементов исходных массивов, которые больше или равны 1,7. Полученный массив расположить в порядке убывания.
9. Из двух массивов a(13) и b(10) получить новый массив c , состоящий из квадратных корней неотрицательных элементов исходных массивов. Полученный массив расположить в порядке возрастания.
10. Из двух массивов a(8) и b(17) получить новый массив c , состоящий из синусов элементов исходных массивов, которые меньше или равны нулю. Полученный массив расположить в порядке убывания.
Задача 4
1. Для матрицы найти сумму элементов, которые меньше 2,33.
2. Для матрицы найти произведение элементов, которые лежат в (1,1; 4,8).
3. Для матрицы найти среднее арифметическое ее элементов.
4. Для матрицы найти сумму ее элементов, лежащих на нечетных столбцах.
5. Для матрицы найти сумму абсолютных величин ее элементов, лежащих на четных строках.
6. Для матрицы найти сумму ее элементов, для которых .
7. Для матрицы найти сумму абсолютных величин ее отрицательных элементов.
8. Для матрицы найти число отрицательных элементов.
9. Для матрицы найти число ее элементов, принадлежащих .
10. Для матрицы найти среднее арифметическое ее положительных элементов.
Задача 5
1. Получить вектор , координаты которого равны суммам элементов соответствующих строк матрицы .
2. Получить вектор , координаты которого равны суммам положительных элементов соответствующих колонок матрицы .
3. Получить вектор , координаты которого равны произведению отрицательных элементов соответствующих строк матрицы .
4. Получить вектор , координаты которого равны среднему арифметическому элементов соответствующих колонок матрицы .
5. Получить вектор , координаты которого равны произведению элементов соответствующих строк матрицы , удовлетворяющих условию: .
6. Получить вектор , координаты которого равны суммам абсолютных величин отрицательных элементов соответствующих колонок матрицы .
7. Получить вектор , координаты которого равны суммам логарифмов элементов соответствующих строк матрицы , удовлетворяющих условию: .
8. Получить вектор , координаты которого равны произведению элементов соответствующих колонок матрицы , удовлетворяющих условию: .
9. Получить вектор , координаты которого равны среднему геометрическому положительных элементов соответствующих строк матрицы .
10. Получить вектор , координаты которого равны среднему геомет-рическому модулей отрицательных элементов соответствующих колонок матрицы .
Задача 6
1. Из матрицы А получить матрицу В , элементы которой состоят из абсолютных величин соответствующих элементов матрицы А.
2. Из матрицы А получить матрицу В , элементы которой состоят из косинусов соответствующих элементов матрицы А.
3. Из матрицы А получить транспонированную матрицу .
4. Из матрицы А получить матрицу В , элементы которой состоят из квадратов соответствующих элементов матрицы А.
5. Из матрицы А получить матрицу В , элементы которой состоят из синусов соответствующих элементов матрицы А.
6. Из матрицы А получить матрицу В , элементы которой состоят из соответствующих элементов матрицы А, умноженных на 1,5 .
7. Из матрицы А получить матрицу В , элементы которой вычисляются по формуле: .
8. Из матрицы А получить матрицу В , элементы которой вычисляются по формуле: .
9. Из матрицы А получить матрицу В , элементы которой состоят из арктангенсов соответствующих элементов матрицы А.
10. Из матрицы А получить матрицу В , элементы которой в два раза меньше соответствующих элементов матрицы А.
Замечания к задаче 6
1. Размерность и числовые значения элементов матрицы А взять из задачи 5.
2. Задачи 5 и 6 можно объединить в одной программе.
Образец выполнения контрольной работы № 2
Задача 1
Составить программу табулирования функций
;
для x от -0,5 до 1,5 с шагом 0,1 . Счет функции оформить в виде процедуры, а счет оформить в виде подпрограммы-функции. Использовать цикл Do – Loop Until .
Предположим, что результаты счета будем выводить в Excel – таблицу в следующем виде: заголовок таблицы-символы x , y и z – разместим соответственно в ячейках A1 , С1 , E1 , а результаты счета будем помещать в соответствующие колонки, начиная с третьей строки.
Тогда рассматриваемую задачу можно представить в виде
Private Sub Workbook_Open()
Const a = -0.5, b = 1.5, h = 0.1
Dim x As Single
Dim y As Single
Dim z As Single
Dim i As Integer
Range("A1").Value = "x"
Range("C1").Value = "y"
Range("E1").Value = "z"
x = a
i = 3
Do
Call f(x, y)
z = g(x, y)
Cells(i, 1).Value = x
Cells(i, 3).Value = y
Cells(i, 5).Value = z
x = x + h
i = i + 1
Loop Until x > b + h / 2
End Sub
Public Sub f(ByVal x As Single, _
ByRef y As Single)
If x < 0.77 Then
y = 12 * x ^ 2 - 3.6
Else
y = Log(3 * x)
End If
End Sub
Public Function g(ByVal x, y As Single) As Single
g = Atn(x * y)
End Function
Заметим, что при наборе в редакторе VBA текста программ, подпрограммы желательно отделять друг от друга пустой строкой. При этом, программа легче читается на распечатках. Отметим, что в окне редактора подпрограммы будут разделены серой линией.
При запуске программ, имеющих подпрограммы, курсор должен находиться в основной программе.
Результаты счета предложенной программы имеют вид:
x | y | Z | ||
-0,5 | -0,6 | 0,291457 | ||
-0,4 | -1,68 | 0,591686 | ||
-0,3 | -2,52 | 0,64733 | ||
-0,2 | -3,12 | 0,55788 | ||
-0,1 | -3,48 | 0,334892 | ||
-1,6E-08 | -3,6 | 5,9E-08 | ||
0,1 | -3,48 | -0,33489 | ||
0,2 | -3,12 | -0,55788 | ||
0,3 | -2,52 | -0,64733 | ||
0,4 | -1,68 | -0,59169 | ||
0,5 | -0,6 | -0,29146 | ||
0,6 | 0,719999 | 0,407784 | ||
0,7 | 2,28 | 1,011071 | ||
0,8 | 0,875469 | 0,610978 | ||
0,9 | 0,993252 | 0,72945 | ||
1,098612 | 0,832353 | |||
1,1 | 1,193923 | 0,920019 | ||
1,2 | 1,280934 | 0,994023 | ||
1,3 | 1,360977 | 1,056354 | ||
1,4 | 1,435085 | 1,108966 | ||
1,5 | 1,504077 | 1,153579 |
Студентам следует обратить внимание на то, что при табулировании функций одно из промежуточных значений вычислено не при , а при, что соответствует . Эта величина с достаточно высокой степенью точности близка к нулю. Полученный результат связан с тем, что шаг табулирования оказался переведенным в машинный двоичный код с недостатком.
Задача 2
Даны векторы и . Для каждого из векторов найти среднее арифметическое его координат. Будем считать, что предлагаемая программа может использовать векторы длиною . Обозначим элементы вектора через массив a , элементы вектора через массив b, а среднее арифметическое координат соответствующих векторов через sa и sb. Предположим, что исходные данные координат векторов и мы расположили в таблице Excel по пять элементов в строке следующим образом:
Предположим, что результаты счета мы будем выводить в ячейки G3-H3 и G10-H10. Воспользуемся “стандартной” процедурой ввода векторов. Тогда программа может иметь вид:
Private Sub Workbook_Open()
Const n = 50, na = 13, nb = 14
Dim a(1 To n) As Single
Dim b(1 To n) As Single
Dim sa As Single
Dim sb As Single
Call wwodvec(3, 1, 5, na, a())
Call wwodvec(10, 1, 5, nb, b())
Call aa(na, sa, a())
Call aa(nb, sb, b())
Range("G3").Value = "sa="
Range("G10").Value = "sb="
Range("h3").Value = sa
Range("h10").Value = sb
End Sub
Public Sub wwodvec(ByVal i0, j0, k0, n As Integer, _
ByRef X() As Single)
Dim i1, j1, i As Integer
i1 = i0
j1 = j0
For i = 1 To n
X(i) = Cells(i1, j1).Value
If i Mod k0 = 0 Then
i1 = i1 + 1
j1 = j0
Else
j1 = j1 + 1
End If
Next i
End Sub
Public Sub aa(ByVal n As Integer, _
ByRef w, X() As Single)
Dim i As Integer
Dim s As Single
s = 0
For i = 1 To n
s = s + X(i)
Next i
w = s / n
End Sub
Отметим, что в процедуре ввода вектора wwodvec параметры i0 и j0 указывают номер строки и столбца, начиная с которых вводится первый элемент вектора. Параметр k0 означает, сколько элементов вводимого вектора записывалось в одну строку Excel – таблицы. Если записывать по 10 элементов вектора в строку, то обращение к этой процедуре должно быть
Call wwodvec(3, 1, 10, na, a())
Результат счета по предложенной программе представляется в виде:
Задача 3
Из двух массивов a (12) и b (10) получить новый массив, состоящий из логарифмов всех элементов исходных массивов больших 1,3. Полученный массив расположить в порядке возрастания его элементов.
Будем считать, что предлагаемая программа может использовать исходные массивы длиною до 30 элементов. Тогда новый массив может содержать до 60 элементов. Предположим, что исходные данные элементов массивов a и в расположили в таблице Excel по пять элементов в строке следующим образом:
Private Sub Workbook_Open()
Const n = 60, na = 12, nb = 10
Dim a(1 To n) As Single
Dim b(1 To n) As Single
Dim c(1 To n) As Single
Dim nc As Integer
Call wwodvec(3, 1, 5, na, a())
Call wwodvec(10, 1, 5, nb, b())
Call aa(na, nb, nc, a(), b(), c())
Call sort(nc, c())
Call wywodvec(15, 1, 5, nc, "Массив с", c())
End Sub
Public Sub wwodvec(ByVal i0, j0, k0, n As Integer, _
ByRef x() As Single)
Dim i1, j1, i As Integer
i1 = i0
j1 = j0
For i = 1 To n
x(i) = Cells(i1, j1).Value
If i Mod k0 = 0 Then
i1 = i1 + 1
j1 = j0
Else
j1 = j1 + 1
End If
Next i
End Sub
Public Sub wywodvec(ByVal i0, j0, k0, n As Integer, _
ByRef ww As String, x() As Single)
Dim i1, j1, i As Integer
i1 = i0
j1 = j0
Cells(i1, j1).Value = ww
i1 = i0 + 2
j1 = j0
For i = 1 To n
Cells(i1, j1).Value = x(i)
If i Mod k0 = 0 Then
i1 = i1 + 1
j1 = j0
Else
j1 = j1 + 1
End If
Next i
End Sub
Public Sub aa(ByVal nx, ny As Integer, _
ByRef nz As Integer, _
x() As Single, y() As Single, _
z() As Single)
Dim i As Integer
nz = 0
For i = 1 To nx
If x(i) > 1.3 Then
nz = nz + 1
z(nz) = Log(x(i))
End If
Next i
For i = 1 To ny
If y(i) > 1.3 Then
nz = nz + 1
z(nz) = Log(y(i))
End If
Next i
End Sub
Public Sub sort(ByVal n As Integer, _
ByRef x() As Single)
Dim i, k, m As Integer
Dim r As Single
For k = n To 2 Step -1
m = 1
For i = 2 To k
If x(i) > x(m) Then
m = i
End If
Next i
r = x(k)
x(k) = x(m)
x(m) = r
Next k
End Sub
Результат счета по предлагаемой программе имеет вид:
Если необходимо элементы массива расположить в порядке убывания, то в операторе:
If x(i) > x(m) Then
процедуры сортировки sort необходимо смысл неравенства заменить на противоположный:
If x(i) < x(m) Then .
Работу процедуры вывода вектора wywodvec студенту предлагается разобрать самостоятельно.
Задача 4
Для матрицы найти сумму квадратов ее элементов, лежащих на четных колонках.
Предположим, что исходные данные элементов матрицы расположены в таблице Excel следующим образом:
Результат счета будем выводить в ячейки A12 и B12. Тогда программа может иметь следующий вид:
Private Sub Workbook_Open()
Const m = 8, n = 5
Dim s As Single
Dim a(1 To m, 1 To n) As Single
Call wwodmatr(3, 1, m, n, a())
Call aa(m, n, s, a())
Cells(12, 1).Value = "S="
Cells(12, 2).Value = s
End Sub
Public Sub wwodmatr(ByVal i0, j0, m, n As Integer, _
ByRef X() As Single)
Dim i, j, ii, jj As Integer
Dim ww As Single
For i = 1 To m
For j = 1 To n
ii = i0 + i – 1
jj = j0 + j – 1
ww = Cells(ii, jj).Value
X(i, j) = ww
Next j
Next i
End Sub
Public Sub aa(ByVal m, n As Integer, _
ByRef s, X() As Single)
Dim i, j As Integer
Dim ss As Single
ss = 0
For i = 1 To m
For j = 2 To n Step 2
ss = ss + X(i, j) ^ 2
Next j
Next i
s = ss
End Sub
Результат счета программы при предложенных исходных данных имеет вид:
В процедуре ввода матрицы: wwodmatr параметры i0 и j0 указывают на адрес ячейки Excel – таблицы , в которой записывается левый верхний элемент матрицы. Алгоритм процедуры ввода матрицы студенту предлагается разобрать самостоятельно.
Задача 5
Из матрицы получить вектор , координаты которого равны среднему геометрическому положительных элементов соответствующих строк матрицы .
Предположим, что исходные данные элементов матрицы расположены в таблице Excel следующим образом:
Результат счета – вектор – попытаемся расположить в одну колонку, начиная с ячейки I1 (с первой строки, с девятой колонки и по одному элементу вектора в строку). Тогда программа может иметь следующий вид:
Private Sub Workbook_Open()
Const m = 9, n = 7
Dim a(1 To m, 1 To n) As Single
Dim b(1 To m) As Single
Call wwodmatr(3, 1, m, n, a())
Call aa(m, n, a(), b())
Call wywodvec(1, 9, 1, m, "Вектор b", b())
End Sub
Public Sub wywodvec(ByVal i0, j0, k0, n _
As Integer, ByRef ww As String, _
x() As Single)
Dim i1, j1, i As Integer
i1 = i0
j1 = j0
Cells(i1, j1).Value = ww
i1 = i0 + 2
j1 = j0
For i = 1 To n
Cells(i1, j1).Value = x(i)
If i Mod k0 = 0 Then
i1 = i1 + 1
j1 = j0
Else
j1 = j1 + 1
End If
Next i
End Sub
Public Sub wwodmatr(ByVal i0, j0, m, n As Integer, _
ByRef X() As Single)
Dim i, j, ii, jj As Integer
Dim ww As Single
For i = 1 To m
For j = 1 To n
ii = i0 + i – 1
jj = j0 + j – 1
ww = Cells(ii, jj).Value
X(i, j) = ww
Next j
Next i
End Sub
Public Sub aa(ByVal m, n As Integer, ByRef x() _
As Single, ByRef y() As Single)
Dim i, j, k As Integer
Dim p As Single
For i = 1 To m
p = 1
k = 0
For j = 1 To n
If x(i, j) > 0 Then
k = k + 1
p = p * x(i, j)
End If
Next j
p = p ^ (1 / k)
y(i) = p
Next i
End Sub
Результаты счета программы при рассмотренных исходных данных имеют вид:
Задача 6
Из матрицы получить матрицу , элементы которой равны корням квадратным из модулей соответствующих элемент матрицы .
Предположим, что исходные данные элементов матрицы А располо-жены в таблице Excel как и в задаче 5. Результаты счета – матрицу В будем располагать с ячейки А15 (пятнадцатая строка и первая колонка). Тогда программу можно представить в следующем виде:
Private Sub Workbook_Open()
Const m = 9, n = 7
Dim a(1 To m, 1 To n) As Single
Dim b(1 To m, 1 To n) As Single
Call wwodmatr(3, 1, m, n, a())
Call aa(m, n, a(), b())
Call wywodmatr(15, 1, m, n, "Матрица В", b())
End Sub
Public Sub wywodmatr(ByVal i0, j0, m, n As Integer, _
ByRef ww As String, x() As Single)
Dim i1, j1, i, j As Integer
i1 = i0
j1 = j0
Cells(i1, j1).Value = ww
For i = 1 To m
i1 = i0 + i + 1
For j = 1 To n
j1 = j0 + j – 1
Cells(i1, j1).Value = x(i, j)
Next j
Next i
End Sub
Public Sub wwodmatr(ByVal i0, j0, m, n As Integer, _
ByRef x() As Single)
Dim i1, j1, i, j As Integer
For i = 1 To m
For j = 1 To n
i1 = i0 + i – 1
j1 = j0 + j – 1
x(i, j) = Cells(i1, j1).Value
Next j
Next i
End Sub
Public Sub aa(ByVal m, n As Integer, _
ByRef x() As Single, ByRef y() As Single)
Dim i, j As Integer
For i = 1 To m
For j = 1 To n
y(i, j) = Abs(x(i, j)) ^ 0.5
Next j
Next i
End Sub
Результат счета задачи имеет вид:
Распечатка программ, исходных данных и результатов счета
В контрольных работах исходные данные и результаты счета необходимо распечатать. В Excel – таблицах выбираем в Меню: Вид Масштаб Произвольный и устанавливаем с точностью до 1% такой масштаб, при котором исходные данные или результаты счета видны на весь экран монитора. На клавиатуре щелкаем клавишей Print Screen. При этом, рисунок, имеющийся на экране монитора пересылается, в буфер обмена. Сворачиваем или закрываем Excel и на Рабочем столе Windows в последовательности Пуск Программы Стандартные Графический редактор Paint входим в графический редактор, в Меню которого выбираем: Правка Вставить. На экране графического редактора появится изображение перенесенной таблицы Excel. В Меню выбираем: Рисунок Растянуть / наклонить По горизонтали и По вертикали устанавливаем масштаб с точностью до 1% так, чтобы нужная часть рисунка таблицы Excel была видна в поле экрана. На панели инструментов выбираем вначале произвольную клавишу, затем клавишу выделить. Выделяем прямоугольным пунктиром необходимый фрагмент рисунка таблицы и отправляем его в буфер обмена, используя: Меню: Правка Копировать. В редакторе Word вставляем из буфера обмена рисунок (Меню: Правка Вставить) и распечатываем его. Простейший же способ распечатки результатов счета состоит в том, что, находясь в Excel – таблицах, выделяем необходимую область и переходим в Меню. Выполняем: Файл Предварительный просмотр Поля. Выбираем поля страницы и запускаем Печать.
При распечатках программ входим в редактор VBA. Затем в Меню выбираем: Файл Печать . Полученные распечатки вклеиваем в контрольную работу.
При наличии навыков у студента контрольную работу можно оформить в редакторе Word.
Запись программ и результатов счета на дискету
Находясь в Excel – таблице, в которой расположены исходные данные, результаты счета (предполагается, что под эту таблицу в редакторе VBA составлена работающая программа), входим в Меню . Выполняем: Файл Сохранить как. В появившемся окне в поле Имя файла записываем: A:Задача 1 . Для других задач меняем ее номер. При этом предполагается, что чистая дискета вставлена в дисковод A.
Библиографический список
1. Санно Пол. Visual Basic для приложений в подлиннике. – СПб.: БХВ-Петербург, 1997.
2. Гарнаев А.Ю. Самоучитель VBA. - СПб.: БХВ-Петербург, 2003.
3. Стив Каммингс. VBA для «чайников», 3-е издание. – М.: Изд. дом «Вильямс», 2001.
[1] Это справедливо в системах Windows 95, 98, 2000. В других системах Windows аналогично.
– Конец работы –
Эта тема принадлежит разделу:
СТРОИТЕЛЬНЫЙ УНИВЕРСИТЕТ... ИНФОРМАТИКА работ для студентов... Ростовский государственный...
Если Вам нужно дополнительный материал на эту тему, или Вы не нашли то, что искали, рекомендуем воспользоваться поиском по нашей базе работ: Задача № 1
Если этот материал оказался полезным ля Вас, Вы можете сохранить его на свою страничку в социальных сетях:
Твитнуть |
Новости и инфо для студентов