DIM M1(N1 TO N2), M2(K1 TO K2)
ГдеM1, M2 – идентификаторы описываемых массивов N1, N2, K1, K2 - целые числа, определяющие нижнее и верхнее значение индекса массивами, следовательно, определяющие максимальное количество элементов массива. Если массив одномерный, то указывается одно число, если двумерный (матрица), то указываются два числа, определяющие максимальное число строк и столбцов соответственно. Допускается указывать только верхнюю границу массивов DIM M1(N2), M2(K2) В этом случае, по умолчанию, нижняя граница индекса принимается равной 0.То есть если задан массив DIM М (17), то резервируется в памяти место не для 17, а для 18 элементов. Статические и динамические массивы При описании массивов можно использовать суффиксы типов данных для задания типа данных элементов массива. DIM B $(15), C%(7,20) Где B$ - массив, содержащий 16 символьных значений C% - целочисленная матрица. 8 строк, 21 столбец. Можно задавать тип данных массива также следующим образом DIM A(N1 TO N2) AS [тип], Тип - integer- целый; Long- длинное целое; Single- 32-битовая переменная одинарной точности с плавающей запятой; Double single - 64-битовая переменная двойной точности с плавающей запятой.; String- строковая переменная переменной длины; String *n%- строковая переменная фиксированной (n - символов) длины; Таким образом, оператор DIM: - определяет имя массива - определяет тип элементов массива - резервирует ячейки памяти для массива - заполняет нулевыми значениями массивы числового типа или пустыми строками текстовые массивы Оператор DIM должен для конкретного массива задаваться один раз, до первого обращения к массиву. Обычно все DIM помещают в начало программы, чтобы облегчить процесс ее отладки. С элементами массива можно выполнять все те же действия, что и с обычными переменными. Преимущество массивов в том, что эти действия можно сделать массовыми, распространив их на все элементы массива, оперируя индексами элементов массива. Оператор OPTION BASE Синтаксис: OPTION BASE {0|1}, Где 0 или 1 - № начального элемента массива. Пример: OPTION BASE 1 DIM M%(25) Здесь целочисленный массив М% состоит из 25 элементов, а не из 26. Способы ввода значений элементов массива 1. Оператором присваивания B(1) = 3 B(2) = 5 B(3) = 7 2. Оператором цикла, с клавиатуры FOR I=1 TO 10 INPUT B(I) NEXT I 3. Оператором цикла, с применением операторов DATA и READ DATA 10, 20, 30, 40, 50, 60 FOR I=1 TO 6 READ B(I) NEXT I
4. При помощи датчика случайных чисел: FOR I=1 TO 10 B(I) = RND NEXT I Это наиболее удобный способ задания массивов при отладке различных примеров обработки элементов массивов. Остановимся на этом способе подробнее. Оператор RND RND – возвращает случайное число одинарной точности, вырабатываемое датчиком случайных чисел, равномерно распределенных на интервале [0; 1]. Поясним свойства псевдослучайной последовательности. Чтобы случайные числа не повторялись при повторном обращении к датчику надо применять в начале программы оператор RANDOMIZE [число]. [Число] –это число, используемое для инициализации генератора случайных чисел. Если оно не указано, то RANDOMIZE его запрашивает. Рекомендуется в качестве такого числа брать показания таймера. В этом случае в программе (до применения оператора RND, обычно в начале программы)следует записать – RANDOMIZE TIMER Если надо, чтобы вырабатываемые числа лежали в интервале [-N; N], то можно применить выражение 2*N*RND - N Если надо, чтобы вырабатываемые числа лежали в интервале [0; N], то надо применить выражение N*RND Если надо, чтобы вырабатываемые числа лежали в интервале [-N; N-1] и были целыми, то можно применить выражение INT(2*N*RND - N) и т. д.
Алгоритм формирования и печати исходного массива CLS RANDOMIZE TIMER PRINT “Введите размер массива “; INPUT N DIM S(N) PRINT “Исходный массив:” FOR I=0 TO N S (I) = INT(200*RND - 100) PRINT S (I), NEXT I Алгоритм поиска максимального и минимального значений в массиве S(N) MAX = S (0): J = 0 MIN = MAX: K = 0 FOR I=1 TO N IF S (I) > MAX THEN MAX = S (I): J = I IF S (I) < MIN THEN MIN = S (I): K = I NEXT I PRINT “ MAX =”; S (J), “MIN =”; S (K) END Таким образом, максимальный элемент массива - S (J), минимальный - S (K ). Минимальные и максимальные значения массива можно получить, отсортировав массив. Например, в случае сортировки массива по возрастанию первый элемент массива – минимальный, а последний – максимальный. Алгоритмы сортировки массива Сортировка выбором МАХ (или МIN) Сортировка массива – это упорядочение по возрастанию или убыванию значений его элементов в соответствии с их индексом. Алгоритм основан на определении и выборе минимального элемента вначале из всего массива, потом – из оставшегося и так последовательно до исчерпания всего массива. Выбираемые элементы вставляются по порядку в начало массива: сначала самый малый, затем минимум, найденный вторым и т. д. В итоге мы получаем отсортированный по возрастанию массив. Если мы хотим иметь массив, отсортированный по убыванию, то соответственно находим и ставим последовательно в начало массива элементы с максимальными значениями.
FOR I = 1 TO N-1 MIN = S(N) K=N FOR J = N TO I STEP –1 IF S(J) < MIN THEN MIN= S(J): K=J NEXT J SWAP S(K), S(I) NEXT I ‘Вывод отсортированного массива FOR I = 1 TO N PRINT S(I); “ “; NEXT I END Сортировка вставками Идея сортировки вставками в том, что начинают формировать новый отсортированный массив. И когда там помещено i элементов, то i + 1 элемент размещают среди них так, чтобы не нарушить порядок последовательности. . . . . . . . . . . . . . . . FOR J = 2 TO N I = J – 1 DO IF A(I + 1) < A(I) THEN SWAP A(I + 1), A(I): I = I - 1 ELSE I = 0 END IF LOOP WHILE I <> 0 NEXT J ‘Вывод отсортированного массива FOR I = 1 TO N PRINT S(I); “ “; NEXT I END Метод «пузырька» FOR I = 1 TO N-1 FOR J = 1 TO N-1 IF A(J + 1) < A(J) THEN SWAP A(J + 1), A(J) NEXT J NEXT I ‘Вывод отсортированного массива FOR I = 1 TO N PRINT S(I); “ “; NEXT I END Приведенные алгоритмы называются квадратичными – т. к. они требуют порядка n*n действий. Существуют ряд алгоритмов сортировки, требующих выполнения меньшего числа операций. Но программы, реализующие эти алгоритмы, содержат большее количество операторов, чем в приведенных примерах.
Лекция 10
Популярное: Почему двоичная система счисления так распространена?: Каждая цифра должна быть как-то представлена на физическом носителе... Как построить свою речь (словесное оформление):
При подготовке публичного выступления перед оратором возникает вопрос, как лучше словесно оформить свою... ©2015-2024 megaobuchalka.ru Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. (747)
|
Почему 1285321 студент выбрали МегаОбучалку... Система поиска информации Мобильная версия сайта Удобная навигация Нет шокирующей рекламы |