Отправляет email-рассылки с помощью сервиса Sendsay

Рассылка сайта Delphi coding

  Все выпуски  

Рассылка сайта Delphi coding №1


Информационный Канал Subscribe.Ru

Рассылка сайта Delphi Coding

Выпуск от 07 Сентября 2005 года. Noil.pri.ee

Приглашаються авторы статей для сотрудничества с сайтом. Подробности о том как добавить свою статью на сервер читайте здесь

На сайте Delphi Coding собрано большое количество статей, книг и различной компьютерной документации. В рассылке вы сможете увидеть последнии поступления на сайте, а также более подробно ознакомиться с некоторыми материалами.

Желаем Вам приятного чтения.


Архивы статей по различным тематикам Delphi

Delphi и XakepСкачать (Статей: 2)
Графика в DelphiСкачать (Статей: 6)
Работа с системойСкачать (Статей: 9)
Защита данныхСкачать (Статей: 2)
РазноеСкачать (Статей: 8)
Работа со звукомСкачать (Статей: 5)
АлгоритмыСкачать (Статей: 12)
WinApiСкачать (Статей: 3)
KOL и MCKСкачать (Статей: 10)
Программирование игрСкачать (Статей: 6)
Delphi и ActiveXСкачать (Статей: 4)
ОтладкаСкачать (Статей: 2)

Коллекции статей

Коллекция статей № 1Скачать (Статей: 20)
Коллекция статей № 2Скачать (Статей: 20)
Коллекция статей № 3Скачать (Статей: 20)

Последнии файлы

Формула-1 в категории Базы данных

Курсовая работа
Задание:

Разработать структуру базы данных для учета результатов гонок ФОРМУЛА-1.
В базе данных должна храниться следующая информация:
1. Команды-участники:
- название команды
- страна
- менеджер (владелец)
- пилоты
2. Спонсоры команды:
- фирма
- страна
- сумма взноса
3. Календарь гонок:
- дата
- страна
- трасса
4. Результаты гонок:
- кто какое место занял
- кто на каком круге сошел
- причина схода с трассы
5. Данные о пилотах:
- фамилия, имя, дата рождения, рост, вес
- в каких гонках участвовал раньше
- сколько гонок провел за ту или иную команду
- сколько очков набрал, какие места занимал в гонках
Построить запросы, формы и отчеты, позволяющие получать следующую информацию:
- сколько очков имеет та или иная команда по результатам гонок
- сколько раз представители команды были на подиуме
- сколько гонок провел пилот
- сколько очков набрал пилот (1 место - 10, 2 место - 6, 3 место - 4, 4 место - 3, 5 место - 2, 6 место - 1)
- фамилии и имена пилотов, не добравшихся до конца трассы с указанием причины схода. Данные должны выводиться по убыванию количества сходов с трассы. Пилоты, не имеющие сходов, выводиться не должны
ER-диаграмма:


Схема отношений:



База данных Paradox. Программа написана в среде Delphi 4.0 с использованием BDE (Borland Database Engine).

Источник:http://vt.spbgmtu.ru/

Подробнее...Скачать


Покупка-продажа товаров в категории Базы данных

Курсовая работа
Задание:
Разработать структуру базы данных для фирмы, осуществляющей посредническую деятельность, оптовую закупку товаров у других фирм и продажу товаров более мелким продавцам.
В базе данных должна храниться следующая информация:
1. Данные о сотруднике фирмы:
- ФИО
- должность
- оклад
- отдел, в котором работает сотрудник
2. Сведения о приобретаемых товарах:
- тип товара (бытовая техника, продукты, автомобили и др.)
- наименование продукции
- цена
- количество приобретаемого товара
- дата заключения контракта
- производитель
- сотрудник, оформивший заказ на приобретение товара
3. Сведения о фирмах, продающих товары:
- название фирмы
- телефон
- адрес
- директор фирмы
4. Сведения о фирмах, покупающих товары:
- название фирмы
- телефон
- адрес
- директор фирмы
5. Сведения о поставляемых товарах:
- тип товара
- наименование продукции
- цена
- количество поставляемого товара
- дата заключения контракта
- фирма-покупатель
- сотрудник, оформивший заказ на приобретение товара
- сроки оплаты по каждому заказу
Построить запросы, формы и отчеты, позволяющие получать следующую информацию:
- сведения о составе и стоимости заказов (дата оформления, сотрудник, оформивший заказ, сумма заказа, перечень товаров)
- какова средняя стоимость различных видов поставляемых товаров за весь период и за отдельные временные интервалы
ER-диаграмма:


Схема отношений:

База данных Paradox. Программа написана в среде Delphi 4.0 с использованием BDE (Borland Database Engine).

Источник:http://vt.spbgmtu.ru/

Подробнее...Скачать


Книжный магазин в категории Базы данных

Курсовая работа
Задание:

Разработать структуру базы данных для книжного магазина, содержащую информацию о складах.
В базе данных должна храниться следующая информация:
1. Данные о складах:
- название склада
- адрес
- телефон
- ФИО директора
2. Данные о книгах:
- название книги
- автор
- издательство
- год выпуска
- тираж
- область знаний
- цена издательства
3. Наличие на складе:
- количество упаковок
- количество экземпляров в упаковке
4. Информация о продажах:
- дата продажи
- название книги
- автор
- отпускная цена за экземпляр
- количество экземпляров
Построить запросы, формы и отчеты, позволяющие получать следующую информацию:
- какие книги по конкретной тематике имеются на складе
- подготовить бланк заказа на приобретение конкретной книги
- сравнить отпускные цены по конкретной книге на различных складах
- какие книги конкретного автора имеются на складе
- подготовить выручку от реализации за день, месяц
ER-диаграмма:


Схема отношений:

База данных Paradox. Программа написана в среде Delphi 4.0 с использованием BDE (Borland Database Engine).

Источник:http://vt.spbgmtu.ru/

Подробнее...Скачать


ProcessKillers в категории Система

Убивание процессов

Подробнее...Скачать


TextCode в категории Алгоритмы и математика

Замена текста набранной в другой кодеровке

Автор: Марков Сергей

Подробнее...Скачать


FormatDrv в категории Система

Пример форматирование дисков из Delphi

Подробнее...Скачать


TinWin в категории Система

Программа считает сколько секунд запущен Windows

Подробнее...Скачать


HotKeys в категории Система

Эта программа, которая позволяет вам определять горячие клавиши, чтобы: запускать приложения, посылать нажатия клавиш в другие приложения, минимизировать все окна, выходить из Win, перезагрузка Win.

Подробнее...Скачать


TVideoCapture v.1.10 в категории Видео

Компонент для захвата видео и изображений. Требует DirectShow и DX8.

Подробнее...Скачать


VideoLab v.2.1 в категории Видео

OpenWire Video Lab множество компонентов, основанные на OpenWire 2.x для быстрой обработки видео. Они позволяют быстро производить множество манипуляций с видео без единой строки кода.

Цена: 50$
Разработчик: Mitov Software

Подробнее...Скачать


Статья

Алгоритмы Сортировки. Часть 1

Все из существующих ныне способов сортировки отличаются друг от друга по скорости выполнения, понятности и длине кода, по красоте решения. Зачастую в код уже разработанного алгоритма вносятся какие-либо изменения и так возникает множество решений, некоторые и с которых мы и попробуем сейчас рассмотреть.

Однако, следует отметить что изучение алгоритмов совсем не лёгкая задача, здесь требуется внимательное рассмотрение каждой строчки. Конечно если Вы воспользуетесь кнопками Ctrl+C и Ctrl+V Ваша программа не станет хуже работать, но на мой взгляд, нет ничего хуже когда программист сам до конца не понимает, как работает его программа.

Итак, начнём.

Сортировка выбором

И начнём мы с сортировки выбором. Хотя этот алгоритм и не является самым быстрым, но я решил начать с него потому что, на мой взгляд он наиболее прост для понимания. Суть алгоритма состоит в том, что бы в исходном массиве найти наименьший элемент, а затем поменять местами первый элемент в списке с найденным. После того, находиться наименьший их оставшихся и меняется со вторым элементом. И так до тех пор пока весь список не будет отсортирован.
Таким образом понадобиться N+(N-1)+(N-2)+...+1 или N*N проходов чтобы отсортировать список.

Листинг 1. Сортировкавыбором
procedureSellectionSort(vara:arrayofinteger;min,
max:Integer);
var
i,j,best_value,best_j:longint;
begin
fori:=mintomaxdobegin
best_value:=a[i];
best_j:=i;
forj:=i+1tomaxdobegin
ifa[j]thenbegin
best_value:=a[j];
best_j:=j;
end;
end;
a[best_j]:=a[i];
a[i]:=best_value;
end;
end;

Переменными min и mах можно ограничить область списка в которой, будет выполнена сортировка. Что бы отсортировать весь массив необходимо записать следующее

Листинг 2. Код Delphi/Pascal
SellectionSort(a,0,high(a));



Сортировка вставкой

Это тоже предельно простой для понимания алгоритм. Идея в том что бы создать новый массив, а затем последовательно вставлять в новый массив элементы из старого массива, чтобы созданный массив был всё время упорядоченным.

Листинг 3. Сортировкавставкой
procedureInsertionSort(vara:arrayofinteger;N:integer);
var
B:array[0..10000]ofinteger;
i,j:integer;
begin
fori:=0toNdobegin
j:=i;
while(j>1)and(B[j-1]>A[i])dobegin
B[j]:=B[j-1];
j:=j-1;
end;
B[j]:=A[i];
end;
fori:=0toNdo
A[i]:=b[i];
end;

Если внимательно посмотреть на реализацию алгоритма, то сразу же заметим что для его выполнения необходимо больше,, чем N*N проходов, поэтому в приложениях, где скорость выполнения кода критична, подобный алгоритм использовать не актуально.

Пузырьковая сортировка

Чаще всего используется для сортировки частично упорядоченных списков, так как именно для них скорость выполнения максимальна и может равняться O(N), где N количество элементов массива, а O время одного прохода через цикл. Этот алгоритм в исходном списке ищет пары цифр, которые следуют не по порядку и затем меняет их местами.Процесс повторяется до тех пор пока весь список не будет отсортированным. На рисунке изображен пример сортировки данным методом.


На рисунке можно проследить за перемещение элемента, который изначально был ниже чем после сортировки. Во время прохода цикла, элемент изменяет свою позицию на одну позицию ближе к своему конечному месту. На рисунке элемент двигается к вершине, как пузырёк воздуха к поверхности воды. Этот эффект и дал название алгоритму пузырьковой сортировке.

Листинг 4. Пузырьковаясортировка
procedureBubbleSort(vara:arrayofinteger;min,max:Integer);
var
i,j,tmp:integer;
begin
fori:=mintomaxdo
forj:=mintomax-ido
ifA[j]>A[j+1]then
begin{Обменэлементов}
tmp:=A[j];
A[j]:=A[j+1];
A[j+1]:=tmp;
end;
end;


Быстрая сортировка.

При этом виде сортировке массив разбивается на две части, а затем рекурсивно вызывает сама себя для их сортировки. Притом элементы первой части меньше любого элемента второй части.
Рассмотрим данный вид сортировке на примере:
Если алгоритм вызывается для списка, который содержит нуль или один элемент, то подписок уже отсортирован и процедура заканчивается, в противном случае выбирается один элемент, относительно которого список разбивается на две части, в первый подписок идут элементы меньше выбранного, во второй больше. И затем, как уже было сказано, она рекурсивно вызывает сама себя для сортировки обои подсписков.

Листинг 5. Быстраясортировка
procedureQuickSort(vara:arrayofinteger;min,max:Integer);
Var
i,j,mid,tmp:integer;
Begin
ifminthenbegin
mid:=A[min];
i:=min-1;
j:=max+1;
whileidobegin
repeat
i:=i+1;
untilA[i]>=mid;
repeat
j:=j-1;
untilA[j]<=mid;
ifithenbegin
tmp:=A[i];
A[i]:=A[j];
A[j]:=tmp;
end;
end;
QuickSort(a,min,j);
QuickSort(a,j+1,max);
end;
end;


Стоит также заметить, что такой сортировкой лучше всего пользоваться для упорядочевания массивов элементы в которых следуют абсолютно, случайно. В то время как, если список практически упорядочен, разумнее будет использовать пузырьковую сортировку. К тому же если список достаточно длинный, то алгоритм вызовет глубокую рекурсию и возможно переполнение стёка и как следствие зависание или аварийный выход программы.

Сортировка методом Шелла.

Ещё один метод сортировки - это сортировка методом Шелла.Основная идея этого алгоритма заключается в том, чтобы в начале ycтpанить массовый беспорядок в массиве, сравнивая далеко стоящие друг от друга элементы. Как видно, интервал между сравниваемыми элементами постепенно уменьшается до единицы. Это означает, что на поздних стадиях сортировка сводится просто к перестановкам соседних элементов (если, конечно, такие перестановки являются необходимыми).

Листинг 6. СортировкаметодомШелла
procedureTForm1.SortShell(vara:arrayofreal;N:Integer);
var
h:Variant;
c:Boolean;
g:Integer;
i:Integer;
j:Integer;
tmp:Real;
begin
h:=1;
g:=0;
repeat
h:=3*h+1
until(h>=n);
if(h>n)thenbegin
h:=h/3;
g:=h;
end;
n:=n-1;
repeat
i:=g;
repeat
j:=i-g;
c:=True;
repeat
ifa[j]<=a[j+g]thenbegin
c:=False;
end
elsebegin
Tmp:=a[j];
a[j]:=a[j+g];
a[j+g]:=Tmp;
end;
j:=j-1
untilnot((j>=0)and(C));
i:=i+1
untilnot(i<=n);
h:=g;
h:=h/3;
g:=h;
untilnot(g>0);
end;


Заключение.

В данной статье была предпринята попытка объяснить наиболее часто применяемые алгоритмы сортировки. Однако рассказать о всех аспектах реализации различных алгоритмов в одной статье довольно сложно, и статья получается перенасыщенная информацией, поэтому я решил разбить её на две части и сейчас вторая уже готовиться к выходу. В ней планируется рассказать о более специфических алгоритмах, сортировке не только цифр, но и слов, как русского так и английского языка, а также об обратном процессе сортировки - перемешивания.

Удачи!

P.S. Замечания, пожелания и дополнения к этой статье просим оставлять на форуме. Исходный код программы, которая использует методы сортировки описанные в этой статье сожно скачать здесь.

Автор: Delist

Посетите наши форумы:

Delphi, Kylix, Pascal
Delphi - общие вопросы | WinAPI | Работа с сетью | Delphi и Multimedia | Базы данных | Работа с oc Windows | Курилка | Паскаль | Delphi.Net | Kylix

Языки программирования
C++ | Java | .NET | Ассемблер

Web Технологии
Php | Perl | Asp | Html

Програмное обеспечение
Софт для Windows | Oc Windows | Linux | BSD

Разное
Железо | Взлом и защита | Периферия | Внекомпьютерная жизнь | Объявления

Дружественные рассылки

Рассылки Subscribe.Ru
Интернет для Delphi-программиста

На этом позвольте проститься с Вами и пожелать удачи. Свои замечания и предложения отправляйте на е-майл, указанный ниже. С уважением, Виталий (NoilTeam@gmail.com)

Subscribe.Ru
Поддержка подписчиков
Другие рассылки этой тематики
Другие рассылки этого автора
Подписан адрес:
Код этой рассылки: comp.soft.prog.delphicoding
Отписаться
Вспомнить пароль

В избранное