#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 вопроса: ваши мысли по поводу генератора случайных чисел и написать программу для сортировки. Как поёт Шевчук:

За эти вопросы нам Пушкин воздаст,
Родня нас не выдаст, а Рейган не съест!
Так, что если мы не будем съедены, то следующий выпуск выйдет в понедельник. Ответы на вопросы можете слать в течении недели. Вот и всё.

[Назад] [Содержание] [Дальше]
Hosted by uCoz