| #0A Массивы надежды |
|
|
Вступление
Добрый день!
Данный выпуск юбилейный - 10 !!!! Можете поздравить нас лично или анонимно. Так же в разделе Голосование - новый опрос.
Ещё один праздник - на рассылку подписался 1000-ый подписчик!!!!! К сожалению его личность не установленна :( Общее число подписчиков составляет 1010 человек.
|
Теория
Давайте представим, что нам необходимо создать картинку в памяти. Если описывать каждую точку координатами (x, y) , то понадобится очень много переменных. Однако задачу как всегда можно упростить. В этом нам помогут массивы! Массив - объединение нескольких однотипных объектов. Массивы объявляются в разделе переменных (var) вот так:
ИМЯ : array [ диапозон ] of ТИП;
Диапозон определяет число элементов массива, а тип - тип элементов массива. Например:
A : array [0 .. 50] of real;
B : array [ -3 .. 4] of integer;
С : array [1 .. 10] of byte;
Как видно в квадратных скобках указывается минимальный и максимальный номер элемента массива. В примере массив А содержит 51 элемент, массив В - 8 элементов, С - 10. К каждому элементу массива осуществляется отдельный доступ по его индексу (он колеблется в диапозоне, например для В это от -3 до 4, для А от 0 до 50). Индекс элемента указывается в квадратных скобках :
a [0] := 5; - присвоить первому элементу массива А значение 5
a[1] := a[0]; - присвоить второму элементу массива А значение первого
b[-3] := b[4]; - присвоить первому элементу массива В значение последнего
c[5] := 5; присвоить 5 элементу массива С значение 5
Из этого примера видно, что номер элемента массива соответствует индексу при способе задания массива как-то так array [1 ..
С элементом массива допустимы любые операции (естественно, если они допустимы для типа). Т.е. вы спокойно обращаетесь с элементом массива как с переменной.
Давайте рассмотрим простенькую программку - заполняем массив случайными числами и выводим его на экран.
Program Test;
uses CRT;
const N = 10;
var
A : array [1..N] of integer;
i : integer;
begin
ClrScr;
randomize;
for i := 1 to N do
begin
A[i] := random (256);
writeLn ('A[', i, '] = ', A[i])
end
end.
В качестве верхней границы массива мы везде используем константу, что очень удобно (если на понадобится массив скажем от 1 до 100, то мы просто её поменяем).
После очистки экрана мы вызываем функцию randomize - инициализация генератора случайных чисел. После этого мы можем использовать функцию random (X), которая возвращает случайное число в границах [0, X), т.е. больше или равно 0 и меньше Х. Про то, как этот генератор работает, вернее откуда они берутся эти случайные числа, если в компьютере всё построено на чётких и явных командах, мы ждём ваших соображений - ibp7@yandex.ru (это типа вопроса на догадку :).
|
Программа
Сегодня мы поговорим об ужасно (аж страшно стало :) важной вещи: сортировка массива! Сортировка - это упорядочивание элементов массива по какому-то признаку, например по возрастанию, убыванию. Сортировка - это довольно большая тема и сегодня мы лишь слегка коснёмся её. В обозримом будущем несколько выпусков, по этой теме. Так вот мы поговорим об "пузырьковой" сортировке, помните - вся сила в волшебных пузырьках :)))
При пузырьковой сортировке упорядоченный массив получается из исходного путём многократного обменом пары рядом стоящих элементов, не отвечающих требуемому порядку, пока такие пары существуют.
Наиболее простой метод обмена соседних элементов с неправильным порядком при просмотре всего списка слева на право определяет пузырьковую сортировку: максимальные элементы как бы всплывают (как пузырьки) в конце списка.
Например:
B=20,-5,10,8,7, исходный список.
B1=-5,10,8,7,20, первый просмотр. (Поменяли -5 и 20, потом 20 и 10, потом 20 и 8, потом 20 и 7)
B2=-5,8,7,10,20, второй просмотр. (Протащили 10.)
B3=-5,7,8,10,20, третий просмотр. (Протащили 8, остальные элементы встали на свои места.)
цитата iVs 02.11.2002
А почему бы тебе не попробывать проводить какие нибудь конкурсы связанные с рассылкой, задавать какие нибудь домашние
задания (написать наиболее эфективный алгоритм и тд.), затем можно будет обсуждать это на форуме. Так ведь будет гораздо
веселее и эфективность усвоения материала от этого тоьлко увеличится.
А посему мы решили рискнуть и дать первое домашнее задание (мороз по коже от этих слов :( - написать программу, которая сортирует массив пузырьковой сортировкой. Ответы принемаются в виде исходников. Если во время решения этой задачки возникнут вопросы - you are welcomed here - ibp7@yandex.ru
Сразу отвечу на один вопрос, который может возникнуть при решении этой задачки - как поменять значения 2-х переменных ? Например а = 5, b = 6 - нужно a = 5, b = 6. Тут нужно всё провернуть через третью переменную :)
.....
a, b, c : integer;
.......
a := 5;
b := 6;
.........
{ Меняем А с В }
с := a;
a := b;
b := c;
.........
|
Голосование
Итак юбилей надеюсь состоялся :) Можете анонимно оценить нашу работу в голосовании - http://narod.yandex.ru/survey/?id=79839.
|
Новости сайта
Теперь на сайте можно подписаться на рассылку "Turbo Pascal. Исходники, программы, ответы на Ваши вопросы" с сайта http://www.borlpasc.narod.ru/.
К сожалению по техническим причинам этот выпуск пока не попадёт в архив http://www.ibp7.narod.ru/arxiv.chm. Так что там по прежнему 9 выпусков :(
|
Послесловие
Итак сегодня мы задали с ходу целых 2 вопроса: ваши мысли по поводу генератора случайных чисел и написать программу для сортировки. Как поёт Шевчук:
За эти вопросы нам Пушкин воздаст,
Родня нас не выдаст, а Рейган не съест!
Так, что если мы не будем съедены, то следующий выпуск выйдет в понедельник. Ответы на вопросы можете слать в течении недели. Вот и всё.
|
[ Назад ] [ содержание ] [ дальшЕ ]
Если, что надо - мыльте ibp7@yandex.ru. © 2002 Использование материалов без согласия авторов запрещено. |
|