Добрый день!
Данный выпуск юбилейный - 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 dobegin
A[i] := random (256);
writeLn ('A[', i, '] = ', A[i])
endend.
В качестве верхней границы массива мы
везде используем константу, что очень
удобно (если на понадобится массив
скажем от 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;
.........
Теперь на сайте можно подписаться на
рассылку "Turbo Pascal. Исходники,
программы, ответы на Ваши вопросы" с
сайта http://www.borlpasc.narod.ru/.
К сожалению по техническим причинам
этот выпуск пока не попадёт в архивhttp://www.ibp7.narod.ru/arxiv.chm.
Так что там по прежнему 9 выпусков :(
Послесловие
Итак сегодня мы задали с ходу целых 2
вопроса: ваши мысли по поводу генератора
случайных чисел и написать программу
для сортировки. Как поёт Шевчук:
За эти вопросы нам Пушкин воздаст,
Родня нас не выдаст, а Рейган не съест!
Так, что если мы не будем съедены, то
следующий выпуск выйдет в понедельник.
Ответы на вопросы можете слать в течении
недели. Вот и всё.