Автор работы: Пользователь скрыл имя, 14 Февраля 2012 в 09:42, курсовая работа
Данная курсовая работа состоит из трех разделов.
Раздел первый – описание рабочего места.
Раздел второй – теоретические сведения по следующим разделам.
Системы счисления.
Логические основы.
Методы сортировок.
Введение…………………………………………………………………………………………………………………………………………… 5
1. Вводная часть………………………………………………………............................................................................ 6
1. Описание рабочего места …………………………………………………………………………………………………………… 6
1.2 Освещенность рабочего места………………………………………………………………………………………………….. 7
1.3 Нормирование шума…………………………………………………………………………………………………………………. 8
1.4 Методы защиты от шума……………………………………………………………………………………………………………. 8
1.5 Вентиляция…………………………………………………………………………………………………………………………………. 9
2. Теоретический раздел…………………………………………………………………………………………………………………. 10
2.1 Системы счисления……………………………………………………………………………………………………………………. 10
2.1.1 Правила перевода из одной системы счисления в другую…………………………………………………… 11
2.1.2 Сложение в различных системах счисления………………………………………………………………………….. 14
2.1.3 Вычитание в различных системах счисления…………………………………………………………………………. 15
2.1.4 Умножение в различных системах счисления……………………………………………………………………….. 15
2.1.5 Деление в различных системах счисления…………………………………………………………………………….. 16
2.2 Логические элементы………………………………………………………………………………………………………………… 17
2.2.1 Схема И……………………………………………………………………………………………………………………………………. 17
2.2.2 Схема ИЛИ……………………………………………………………………………………………………………………………….. 17
2.2.3 Схема НЕ…………………………………………………………………………………………………………………………………… 18
2.2.4 Схема И—НЕ…………………………………………………………………………………………………………………………….. 18
2.2.5 Схема ИЛИ—НЕ……………………………………………………………………………………………………………………….. 18
2.3 Методы сортировок…………………………………………………………………………………………………………………… 19
2.3.1 Метод "пузырька"…………………………………………………………………………………………………………………… 19
2.3.2 Сортировка вставками……………………………………………………………………………………………………………. 20
2.3.3 Сортировка посредством выбора………………………………………………………………………………………….. 21
3. Основной раздел…………………………………………………………………………………………………………………………. 22
3.1 Системы счисления……………………………………………………………………………………………………………………. 22
3.2 Логические основы……………………………………………………………………………………………………………………. 25
3.3 Проверить тождественность логических функций X и Y…………………………………………………………… 26
3.5 Сортировка массивов…………………………………………………………………………………………………………………. 27
Используемая литература…………………
Out2=ln1*ln3*ln5
Ln1 | ln3 | Ln5 | Ln1*ln3*ln5 |
0 | 0 | 0 | 0 |
0 | 0 | 1 | 0 |
0 | 1 | 0 | 0 |
0 | 1 | 1 | 0 |
1 | 0 | 0 | 0 |
1 | 0 | 1 | 0 |
1 | 1 | 0 | 0 |
1 | 1 | 1 | 1 |
3.3 Проверить тождественность логических функций X и Y
X=(^f1*f2+f2*f3)*^(f1+f2*
Y=^(f1*f3+^f2)*(f1*^f2+
Таблица – Значения функции X
f1 | f2 | f3 | (^f1*f2+f2*f3) | ^ (f1+f2*f3) | (^f1+^f3*f2) | x |
0 | 0 | 0 | (1*0+0*0)0 | (0+0*0)1 | (1+1*0)1 | 0 |
0 | 0 | 1 | (1*0+0*1)0 | (0+0*1)1 | (1+0*0)1 | 0 |
0 | 1 | 0 | (1*1+1*1)1 | (0+1*0)1 | (1+1*1)1 | 1 |
1 | 0 | 0 | (0*0+0*0)0 | (1+0*0)0 | (0+1*0)0 | 0 |
0 | 1 | 1 | (1*1+1*1)1 | (0+1*1)0 | (1+0*1)1 | 0 |
1 | 0 | 1 | (0*0+0*1)0 | (1+0*1)0 | (0+1*0)0 | 0 |
1 | 1 | 0 | (0*1+1*0)0 | (1+1*0)0 | (0+1*1)1 | 0 |
1 | 1 | 1 | (0*1+1*1)1 | (1+1*1)0 | (0+0*1)0 | 0 |
Таблица – Значения функции Y
f1 | f2 | f3 | ^(f1*f3+^f2) | (f1*^f2+f2*f3) | ^(^f1*^f2+f1*f3) | y |
0 | 0 | 0 | (0*0+1)0 | (0*1+0*0)0 | (1*1+0*0)0 | 0 |
0 | 0 | 1 | (0*1+1)0 | (0*1+0*1)0 | (1*1+0*1)0 | 0 |
0 | 1 | 0 | (0*0+0)1 | (0*0+1*0)0 | (1*0+0*0)1 | 0 |
1 | 0 | 0 | (1*0+1)0 | (1*1+0*0)1 | (0*1+1*0)1 | 0 |
0 | 1 | 1 | (0*1+0)1 | (0*0+1*1)1 | (1*0+0*1)1 | 1 |
1 | 0 | 1 | (1*1+1)0 | (1*1+0*1)1 | (0*1+1*1)0 | 0 |
1 | 1 | 0 | (1*0+0)1 | (1*0+1*0)0 | (0*0+1*0)1 | 0 |
1 | 1 | 1 | (1*1+0)0 | (1*0+1*1)1 | (0*0+1*1)0 | 0 |
3.4 Структуры данных
Имеются
данные о распределении
Сортировка
по основанию системы счисления.
Метод предполагает выделение отдельного
элемента памяти для каждой цифры, а затем
группировку чисел по цифрам в каждом
последовательном проходе.
Распределяющая
сортировка - RadixSort -
цифровая - поразрядная
Пусть
имеем максимум по k байт в каждом
ключе (хотя за элемент сортировки вполне
можно принять и что-либо другое, например
слово - двойной байт, или буквы, если сортируются
строки). k должно быть известно заранее,
до сортировки.
Разрядность
данных (количество возможных значений
элементов) - m - также должна быть известна
заранее и постоянна. Если мы сортируем
слова, то элемент сортировки - буква, m
= 33. Если в самом длинном слове 10 букв,
k = 10. Обычно мы будем сортировать данные
по ключам из k байт, m=256.
Пусть
у нас есть массив source из n элементов
по одному байту в каждом.
Составим таблицу распределения. В ней будет m (256) значений и заполняться она будет так:
for i := 0 to Pred(255) Do distr[i]:=0;
for i := 0 to Pred(n) Do distr[source[i]] := distr[[i]] + 1;
Для
нашего примера будем иметь distr =
<0, 0, 0, 0, 1, 1, 0, 3, 1, 1>, то есть i-ый элемент
distr[] - количество ключей со значением
i.
Заполним таблицу индексов:
index: array[0 .. 255] of integer;
index[0]:=0;
for
i := 1 to Pred(255) Do index[i]=index[i-1]+distr[i-1]
В index[ i ] мы поместили информацию о будущем количестве символов в отсортированном массиве до символа с ключом i.
Hапример,
index[8] = 5 : имеем <4, 5, 7, 7, 7, 8>.
А теперь заполняем новосозданный массив sorted размера n:
for i := 0 to Pred(n) Do Begin
sorted[ index[ source[i] ] ]:=source[i];
{
попутно изменяем index уже вставленных символов, чтобы
одинаковые ключи шли один за другим:
}
index[ source[i] ] := index[ source[i] ] +1;
End;
Итак,
мы научились за O(n) сортировать байты.
А от байтов до строк и чисел -
1 шаг. Пусть у нас в каждом числе
- k байт.
Будем действовать в десятичной системе и сортировать обычные числа ( m = 10 ).
Цитата
сначала они в сортируем по младшему на один
беспорядке:
разряду: выше: и еще раз:
523 523 523 088
153 153 235 153
088 554 153 235
554 235 554 523
235
088 088 554
Hу
вот мы и отсортировали за O(k*n)
шагов. Если количество
Реализация
алгоритма "распределяющей" сортировки:
program sort;
uses crt;
Const
n = 8;
Type
arrType = Array[0 .. Pred(n)] Of Byte;
Const
m = 256;
a: arrType =
(7, 6, 5, 2, 4, 3, 0, 1);
Procedure RadixSort(Var source, sorted: arrType);
Type
indexType = Array[0 .. Pred(m)] Of Byte;
Var
distr, index: indexType;
i: integer;
begin
fillchar(distr, sizeof(distr), 0);
for i := 0 to Pred(n) do
inc(distr[source[i]]);
index[0] := 0;
for i := 1 to Pred(m) do
index[i] := index[Pred(i)] + distr[Pred(i)];
for i := 0 to Pred(n) do
begin
sorted[ index[source[i]] ] := source[i];
index[source[i]] := index[source[i]] + 1;
end;
end;
var
b: arrType;
i:integer;
begin
clrscr;
for i:=0 to Pred(n) do
write(a[i]);
RadixSort(a, b);
writeln;
writeln;
for i:=0 to Pred(n) do
write(b[i]);
readln;
end.