Скачать презентацию
Идет загрузка презентации. Пожалуйста, подождите
Презентация была опубликована 11 лет назад пользователемsciyouth.ru
1 Массивы Для хранения в памяти компьютера большого числа однотипных данных используются массивы. Каждый элемент массива обладает общим именем индивидуальным номером (индексом) и значением, т. е. является переменной с индексом. Допустим, нам известна температура в каждый из дней октября. День месяца … Температура, С …012 Тогда температура - это последовательность чисел, следующих по порядку одно за другим. А день месяца – это порядковый номер элемента в этой последовательности или индекс.
2 Массивы Если обозначим последовательность температур за весь месяц, например, буквой t, тогда можно обозначить через t(l) температуру первого дня месяца, t(2) - второго,..., t(31) -последнего. Тогда под массивом можно понимать набор однотипных данных, объединенных одним именем и отличающихся индексами или последовательность фиксированного числа однотипных переменных, имеющих общее имя. Этот пример является определением одномерного массива – одномерной таблицы, а если данные можно представить в виде двумерной таблицы, то и массив можно определить как двумерный. Массивы могут быть различных типов: числовые, строковые и т. д.
3 Объявление одномерных массивов Dim t(31) As Integer Указывается максимальное значение индекса Dim t(1 To 31) As Integer Указывается диапазон значений индекса с использованием ключевого слова To Dim Year(1917 to 2000) as Integer Указывается массив с произвольными границами индексов.
4 Объявление одномерных массивов Одним из этих способов можно объявить массив, если он локальный. Если же массив предназначен для общего пользования (проект содержит несколько форм, в которых массив обрабатывается), то он должен быть описан с помощью служебного слова Public (а не Dim) и это описание помещается в раздел General Declarations стандартного модуля. Если до выполнения программы размер массива неизвестен, используется динамический массив. Он описывается в разделе General Declarations стандартного модуля в виде: Public Имя массива() As тип массива.
5 Пример использования динамического массива Public Day() As Integer Описание массива в модуле Public I As Integer Описание переменной в модуле …Программный код задачи I = Val(InputBox("Введите количество дней")) ReDim Day(I) Задание размерности массива
6 Заполнение массива с помощью функции Inputbox Dim t(1 To 31) As Integer, I As Integer For I=1 To 31 T(I)= Val(InputBox(Введите значение дневной температуры в +Str(I)+ день Next I
7 Заполнение массива с помощью датчика случайных чисел Dim A(10) As Byte, I As Integer Randomize For I = 1 To 10 A(I) = Int(Rnd*10) + 1 Next I
8 Заполнение массива из ячеек листа Excel Для заполнения массива значениями, расположенными в ячейках листа Ms Excel, например, таким образом Можно воспользоваться одним из фрагментов:
9 Заполнение массива из ячеек листа Excel Dim A(10) As Single, I As Integer For I = 1 To 10 A(I) = Cells(I + 1, 1) Next I Или Dim a(10) As Single, i As Integer i = 1 Do While Cells(i + 1, 1) "" a(i) = Cells(i + 1, 1) i = i + 1 Loop
10 Вывод элементов одномерного массива в ячейки листа Excel Dim A(10) As Single, I As Integer For I = 1 To 10 Cells(I + 1, 2) = A(I) Next I
11 Задача1 Составить алгоритм и программу заполнения элементов массива A с помощью датчика случайных чисел целыми числами от -10 до 15, массив B действительных чисел ввести с клавиатуры и получить массив C по формуле: C(i)=(A(i)+B(i))/(3+cos(i)). Вывести элементы всех массивов, содержащих по 7 элементов на Лист1.
12 Постановка задачи Исходными данными для данной задачи является массив B(7) действительных чисел, которые вводятся с клавиатуры, и массив целых чисел A(7), получаемых датчиком случайных чисел. Результатом работы программы является массив C(7) действительных чисел, вычисляемых по заданной формуле. Кроме того, в задаче предлагается вывести все массивы на лист Ms Excel.
13 Блок – схема задачи 1 Начало I=1,7,1 A(I)=-10+Int(Rnd*26) Ввод B(I) C(I)= (A(I)+B(I))/(3+Cos(I)) Вывод A(I),B(I),C(i) Конец
14 Программа задачи 1 Sub massiv() Dim A(7) As Integer, B(7) As Single, C(7) As Single Dim I As Integer Sheets("Лист1").Select Cells(1, 1) = "A(i)": Cells(1, 2) = "B(i)« Cells(1, 3) = "C(i)" For I = 1 To 7 A(I) = Int(Rnd * 26) B(I) = Val(InputBox("Введите " + Str(I) + " элемент массива B")) C(I) = (A(I) + B(I)) / (3 + Cos(I)) Cells(I + 1, 1) = A(I): Cells(I + 1, 2) = B(I) Cells(I + 1, 3) = C(I) Next I End Sub
15 Результаты работы программы задачи 1
16 Особенности алгоритмов и программ с накоплением в массивах Сумма вычисляется всегда по такой формуле : Сумма = Сумма + очередной элемент массива Произведение вычисляется всегда по такой формуле: Произведение = Произведение* очередной элемент массива Количество вычисляется по формуле: Количество = Количество+1 Примечание: д о вычисления этих величин в цикле они должны быть подготовлены таким образом: начальному значению суммы и количества надо присвоить ноль, а произведению присвоить единицу.
17 Особенности поиска экстремальных значений 1.В начале за текущий минимум (максимум) принимается значение первого элемента массива, например, min=A(1) или max= min=A(1) 2.Затем в цикле, начиная со второго элемента массива, производится его сравнение со значением переменной min (max) и если это число меньше min (больше max), то на место min (max) записывается этот элемент и он становится текущим минимумом (максимумом). Например, min=A(I)
18 Задача 2 Составить проект программы для нахождения в одномерном массиве (размерностью не более 200 элементов), состоящем из N действительных чисел, количества элементов, больших 5, произведения элементов массива, попавших в интервал (2;4), минимального элемента массива и его номера. Массив заполняется из столбца А Листа1 (начиная с ячейки А2 и до первой пустой ячейки). Результаты выдаются на лист Результатв столбец С.
19 Постановка задачи 2 Для решения задачи определим такие переменные: A(200) – массив действительных чисел; N- общее количество элементов массива, не более 200; Ct - количество элементов массива, больших 5; Mult - произведение элементов массива, попавших в интервал (2;4); Min - минимальный элемент массива, Nmin – номер минимального элемента массива. Лист2 переименуем в «Результат» и пусть числа расположены на Листе1 таким образом:
20 Блок-схема задачи 2 Да Начало Нет Cells(I,1)= I=2 Ввод значений в массив A(I-1) I=I+1 1 N=I-2;
21 Mult=1;Min=A(1);Nmin=1; Ct=0 I=1 to N Нет A(I)>2 и A(I)5 Да Ct=Ct+1 Нет A(I)
22 Программа задачи 2 Sub massiv1() Dim A(200) As Single, N As Integer, Ct As Integer, i As Integer Dim Avr As Single, Sum As Single, Min As Single, Mult As Double, Nmin As Integer Sheets("Лист1").Select i = 2 Do Until Cells(i, 1) = "" A(i - 1) = Cells(i, 1).Value i = i + 1 Loop N = i - 2: Mult = 1: Min = A(1): Nmin = 1: Ct = 0 For i = 1 To N If A(i) > 2 And A(i) < 4 Then Mult = Mult * A(i) If A(i) < Min Then Min = A(i): Nmin = i If A(i) > 5 Then Ct = Ct + 1 Next i Sheets("Результат").Select Range("c1").Value = " Минимальный элемент массива =" + Format(Min, "0.000") Range("c2").Value = " Номер минимального элемента массива =" + Format(Nmin, "0.0") Range("c3").Value = " Произвед. эл-тов массива, из инт-ла (2;4) =" + Format(Mult, "0.0") Range("c4").Value = " Количество эл-тов массива, больших 5=" + Format(Ct, "0.000") End Sub 2 And A(i) < 4 Then Mult = Mult * A(i) If A(i) < Min Then Min = A(i): Nmin = i If A(i) > 5 Then Ct = Ct + 1 Next i Sheets("Результат").Select Range("c1").Value = " Минимальный элемент массива =" + Format(Min, "0.000") Range("c2").Value = " Номер минимального элемента массива =" + Format(Nmin, "0.0") Range("c3").Value = " Произвед. эл-тов массива, из инт-ла (2;4) =" + Format(Mult, "0.0") Range("c4").Value = " Количество эл-тов массива, больших 5=" + Format(Ct, "0.000") End Sub">
23 Результаты работы программы задачи 2
24 Сортировка элементов одномерного массива Сортировка элементов одномерного массива - расположение в порядке возрастания или убывания его элементов. Существует много различных способов сортировки: Сортировка выбором, сортировка вставкой, пузырьковая сортировка и т.д. Мы рассмотрим последнюю на примере решения задачи (см. след. слайд)
25 Задача3 Для каждого из студентов группы известны фамилия и номер зачетной книжки. Составить алгоритм и проект программы вывода фамилий и номеров их зачетных книжек в порядке убывания номеров зачетных книжек.
26 Постановка задачи 3 Для решения задачи определим такие переменные: Names(30) – массив фамилий Number(30) - массив номеров зачетных книжек i, j - переменные циклов n - количество студентов в группе zk, s – промежуточные переменные. Исходные данные массив фамилий и массив номеров зачетных книжек возьмем из 1-ого и 2-ого столбцов Листа1 Ms Excel, а отсортированные данные разместим в 4- ом и 5-ом столбцах также на Листе1.
27 Блок-схема задачи 3 Да Начало I=2 Cells(I,1) I=I+1 N=I-2 Ввод номеров за четных книжек в массив Number Ввод фамилий в массив Names 1
28 Повтор по i от 1 до n -1 Повтор по j от i+1 до n Number(j) > Number(i) Да Нет zk =Number(i): s = Names(i) Number(i) =Number(j): Names(i) = Names(j) Number(j) = zk: Names(j) = s 1 2
29 Повтор по i от 1 до n Вывод фамилий и номеров зачетных книжек Конец 2
30 Программа задачи 3 Sub сортировка() Dim Names(30) As String, Number(30) As Long Dim N As Integer, zk As Long, s As String, I As Integer, J As Integer I = 2 Do While Cells(I, 1) "" Names(I - 1) = Cells(I, 1): Number(I - 1) = Cells(I, 2) I = I + 1 Loop N = I - 2 For I = 1 To N - 1 For J = I + 1 To N If Number(J) > Number(I) Then zk = Number(I): s = Names(I) Number(I) = Number(J): Names(I) = Names(J) Number(J) = zk: Names(J) = s End If Next J Next I For I = 1 To N Cells(I + 1, 4) = Names(I): Cells(I + 1, 5) = Number(I) Next I End Sub Number(I) Then zk = Number(I): s = Names(I) Number(I) = Number(J): Names(I) = Names(J) Number(J) = zk: Names(J) = s End If Next J Next I For I = 1 To N Cells(I + 1, 4) = Names(I): Cells(I + 1, 5) = Number(I) Next I End Sub">
31 Результаты работы программы задачи 3
32 Задания для подготовки к тестированию Задание 1. В приведённом фрагменте программы определяется: S=1 Цикл по i от 1 до 6 если Z(i) 0, то S= Z(i)*S Конец цикла Вывод S a.Сумма элементов массива, не равных 0 b.Произведение элементов массива, не равных 0 c.Количество элементов массива, не равных 0 d.Произведение элементов массива, равных 0
33 Правильный ответ к заданию 1 В приведённом фрагменте программы определяется: S=1 Цикл по i от 1 до 6 если Z(i) 0, то S= Z(i)*S Конец цикла Вывод S a.Сумма элементов массива, не равных 0 b.Произведение элементов массива, не равных 0 c.Количество элементов массива, не равных 0 d.Произведение элементов массива, равных 0
34 Задание 2 В приведённом фрагменте программы определяется: S=0 Цикл по i от 1 до 6 S= Z(i)+S Конец цикла S=S/6 Вывод S a.Среднее значение элементов массива b.Сумма элементов массива c.Произведение элементов массива d.Количество элементов массива
35 Правильный ответ к заданию 2 В приведённом фрагменте программы определяется: S=0 Цикл по i от 1 до 6 S= Z(i)+S Конец цикла S=S/6 Вывод S a.Среднее значение элементов массива b.Сумма элементов массива c.Произведение элементов массива d.Количество элементов массива
36 Задание 3 В приведённом фрагменте программы определяется: S=1 Цикл по i от 1 до 6 если Z(i) 0, то S= S+1 Конец цикла Вывод S a.Сумма элементов массива, не равных 0 b.Произведение элементов массива, не равных 0 c.Количество элементов массива, не равных 0 d.Произведение элементов массива, равных 0
37 Правильный ответ к заданию 3 В приведённом фрагменте программы определяется: S=1 Цикл по i от 1 до 6 если Z(i) 0, то S= S+1 Конец цикла Вывод S a.Сумма элементов массива, не равных 0 b.Произведение элементов массива, не равных 0 c.Количество элементов массива, не равных 0 d.Произведение элементов массива, равных 0
38 Задание 4 Дан фрагмент программы: M=A(1) Цикл по i от 1 до 8 если A(i) > M, то M=A(i) Конец цикла Сколько раз будет исполнен оператор M=A(i) при заданном массиве: 3, 8, 7, 9, 4, 10, 2, 12: a.2 b.4 c.8 d.1 e.3
39 Правильный ответ к заданию 4 Дан фрагмент программы: M=A(1) Цикл по i от 1 до 8 если A(i) > M, то M=A(i) Конец цикла Сколько раз будет исполнен оператор M=A(i) при заданном массиве: 3, 8, 7, 9, 4, 10, 2, 12: a.2 b.4 c.8 d.1 e.3
40 Задание 5 Задан одномерный массив: Хi: -1, -2, 3, 0, -5, 1 алг «Вычисление значения переменной m» i =1 m= Хi Цикл пока i 6 если Xi < m, то m= Хi i=i+1 Конец цикла Вывод m Какое значение получит переменная m после выполнения данного алгоритма? a.-2 b.1 c.3 d.0 e.5
41 Правильный ответ к заданию 5 Задан одномерный массив: Хi: -1, -2, 3, 0, -5, 1 алг «Вычисление значения переменной m» i =1 m= Хi Цикл пока i 6 если Xi < m, то m= Хi i=i+1 Конец цикла Вывод m Какое значение получит переменная m после выполнения данного алгоритма? a.-2 b.1 c.3 d.0 e.5
42 Задание 6 Задан одномерный массив: Хi: 1, 8, 3, 8, 5, -1 i =1: m= Хi: n=1 Цикл по i от 1 до 6 Если Xi > m, то m= Хi: n=i Конец если Конец цикла Вывод n Какое значение получит переменная n после выполнения данного алгоритма? a.2 b.1 c.3 d.4 e.6
43 Правильный ответ к заданию 6 Задан одномерный массив: Хi: 1, 8, 3, 8, 5, -1 i =1: m= Хi: n=1 Цикл по i от 1 до 6 Если Xi > m, то m= Хi: n=i Конец если Конец цикла Вывод n Какое значение получит переменная n после выполнения данного алгоритма? a.2 b.1 c.3 d.4 e.6
Еще похожие презентации в нашем архиве:
© 2024 MyShared Inc.
All rights reserved.