TURBO PASCAL

Новости           

Программы

Turbo Pascal

Игры

Документация

"Странности"

FAQ

Ссылки

Гостевая книга

Рассылка

Благодарности

От автора

 

 

 

Массивы надежды

Вступление
Теория
Программа
Голосование
Новости сайта
Послесловие

Вступление

Добрый день!
Данный выпуск юбилейный - 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 Использование материалов без согласия авторов запрещено.
 

На первую страницу

 

Rambler's Top100 PROext: Top 1000 Rambler's Top100
(с)Все права защищены

По всем интересующим вопросам прошу писать на электронный адрес

Hosted by uCoz