Fehler: in 000nav.txt ist nicht "delphi2.php" aufgeführt!
Die Programmiersprache Seite 2 |
|
|
* | abcd | abdc | acbd | acdb | adbc | adcb | bacd | badc | bcad | bcda | bdac | bdca | cabd | cadb | cbad | cbda | cdab | cdba | dabc | dacb | dbac | dbca | dcab |
abcd | abcd | abdc | acbd | acdb | adbc | adcb | bacd | badc | bcad | bcda | bdac | bdca | cabd | cadb | cbad | cbda | cdab | cdba | dabc | dacb | dbac | dbca | dcab |
abdc | abdc | abcd | adbc | adcb | acbd | acdb | badc | bacd | bdac | bdca | bcad | bcda | dabc | dacb | dbac | dbca | dcab | dcba | cabd | cadb | cbad | cbda | cdab |
acbd | acbd | acdb | abcd | abdc | adcb | adbc | cabd | cadb | cbad | cbda | cdab | cdba | bacd | badc | bcad | bcda | bdac | bdca | dacb | dabc | dcab | dcba | dbac |
acdb | acdb | acbd | adcb | adbc | abcd | abdc | cadb | cabd | cdab | cdba | cbad | cbda | dacb | dabc | dcab | dcba | dbac | dbca | bacd | badc | bcad | bcda | bdac |
adbc | adbc | adcb | abdc | abcd | acdb | acbd | dabc | dacb | dbac | dbca | dcab | dcba | badc | bacd | bdac | bdca | bcad | bcda | cadb | cabd | cdab | cdba | cbad |
adcb | adcb | adbc | acdb | acbd | abdc | abcd | dacb | dabc | dcab | dcba | dbac | dbca | cadb | cabd | cdab | cdba | cbad | cbda | badc | bacd | bdac | bdca | bcad |
bacd | bacd | badc | bcad | bcda | bdac | bdca | abcd | abdc | acbd | acdb | adbc | adcb | cbad | cbda | cabd | cadb | cdba | cdab | dbac | dbca | dabc | dacb | dcba |
badc | badc | bacd | bdac | bdca | bcad | bcda | abdc | abcd | adbc | adcb | acbd | acdb | dbac | dbca | dabc | dacb | dcba | dcab | cbad | cbda | cabd | cadb | cdba |
bcad | bcad | bcda | bacd | badc | bdca | bdac | cbad | cbda | cabd | cadb | cdba | cdab | abcd | abdc | acbd | acdb | adbc | adcb | dbca | dbac | dcba | dcab | dabc |
bcda | bcda | bcad | bdca | bdac | bacd | badc | cbda | cbad | cdba | cdab | cabd | cadb | dbca | dbac | dcba | dcab | dabc | dacb | abcd | abdc | acbd | acdb | adbc |
bdac | bdac | bdca | badc | bacd | bcda | bcad | dbac | dbca | dabc | dacb | dcba | dcab | abdc | abcd | adbc | adcb | acbd | acdb | cbda | cbad | cdba | cdab | cabd |
bdca | bdca | bdac | bcda | bcad | badc | bacd | dbca | dbac | dcba | dcab | dabc | dacb | cbda | cbad | cdba | cdab | cabd | cadb | abdc | abcd | adbc | adcb | acbd |
cabd | cabd | cadb | cbad | cbda | cdab | cdba | acbd | acdb | abcd | abdc | adcb | adbc | bcad | bcda | bacd | badc | bdca | bdac | dcab | dcba | dacb | dabc | dbca |
cadb | cadb | cabd | cdab | cdba | cbad | cbda | acdb | acbd | adcb | adbc | abcd | abdc | dcab | dcba | dacb | dabc | dbca | dbac | bcad | bcda | bacd | badc | bdca |
cbad | cbad | cbda | cabd | cadb | cdba | cdab | bcad | bcda | bacd | badc | bdca | bdac | acbd | acdb | abcd | abdc | adcb | adbc | dcba | dcab | dbca | dbac | dacb |
cbda | cbda | cbad | cdba | cdab | cabd | cadb | bcda | bcad | bdca | bdac | bacd | badc | dcba | dcab | dbca | dbac | dacb | dabc | acbd | acdb | abcd | abdc | adcb |
cdab | cdab | cdba | cadb | cabd | cbda | cbad | dcab | dcba | dacb | dabc | dbca | dbac | acdb | acbd | adcb | adbc | abcd | abdc | bcda | bcad | bdca | bdac | bacd |
cdba | cdba | cdab | cbda | cbad | cadb | cabd | dcba | dcab | dbca | dbac | dacb | dabc | bcda | bcad | bdca | bdac | bacd | badc | acdb | acbd | adcb | adbc | abcd |
dabc | dabc | dacb | dbac | dbca | dcab | dcba | adbc | adcb | abdc | abcd | acdb | acbd | bdac | bdca | badc | bacd | bcda | bcad | cdab | cdba | cadb | cabd | cbda |
dacb | dacb | dabc | dcab | dcba | dbac | dbca | adcb | adbc | acdb | acbd | abdc | abcd | cdab | cdba | cadb | cabd | cbda | cbad | bdac | bdca | badc | bacd | bcda |
dbac | dbac | dbca | dabc | dacb | dcba | dcab | bdac | bdca | badc | bacd | bcda | bcad | adbc | adcb | abdc | abcd | acdb | acbd | cdba | cdab | cbda | cbad | cadb |
dbca | dbca | dbac | dcba | dcab | dabc | dacb | bdca | bdac | bcda | bcad | badc | bacd | cdba | cdab | cbda | cbad | cadb | cabd | adbc | adcb | abdc | abcd | acdb |
dcab | dcab | dcba | dacb | dabc | dbca | dbac | cdab | cdba | cadb | cabd | cbda | cbad | adcb | adbc | acdb | acbd | abdc | abcd | bdca | bdac | bcda | bcad | badc |
x | abcd | abdc | acbd | acdb | adbc | adcb | bacd | badc | bcad | bcda | bdac | bdca | cabd | cadb | cbad | cbda | cdab | cdba | dabc | dacb | dbac | dbca | dcab |
Inverses | abcd | abdc | acbd | adbc | acdb | adcb | bacd | badc | cabd | dabc | cadb | dacb | bcad | bdac | cbad | dbac | cdab | dcab | bcda | bdca | cbda | dbca | cdba |
* | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 |
1 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 |
2 | 2 | 1 | 5 | 6 | 3 | 4 | 8 | 7 | 11 | 12 | 9 | 10 | 19 | 20 | 21 | 22 | 23 | 24 | 13 | 14 | 15 | 16 | 17 |
3 | 3 | 4 | 1 | 2 | 6 | 5 | 13 | 14 | 15 | 16 | 17 | 18 | 7 | 8 | 9 | 10 | 11 | 12 | 20 | 19 | 23 | 24 | 21 |
4 | 4 | 3 | 6 | 5 | 1 | 2 | 14 | 13 | 17 | 18 | 15 | 16 | 20 | 19 | 23 | 24 | 21 | 22 | 7 | 8 | 9 | 10 | 11 |
5 | 5 | 6 | 2 | 1 | 4 | 3 | 19 | 20 | 21 | 22 | 23 | 24 | 8 | 7 | 11 | 12 | 9 | 10 | 14 | 13 | 17 | 18 | 15 |
6 | 6 | 5 | 4 | 3 | 2 | 1 | 20 | 19 | 23 | 24 | 21 | 22 | 14 | 13 | 17 | 18 | 15 | 16 | 8 | 7 | 11 | 12 | 9 |
7 | 7 | 8 | 9 | 10 | 11 | 12 | 1 | 2 | 3 | 4 | 5 | 6 | 15 | 16 | 13 | 14 | 18 | 17 | 21 | 22 | 19 | 20 | 24 |
8 | 8 | 7 | 11 | 12 | 9 | 10 | 2 | 1 | 5 | 6 | 3 | 4 | 21 | 22 | 19 | 20 | 24 | 23 | 15 | 16 | 13 | 14 | 18 |
9 | 9 | 10 | 7 | 8 | 12 | 11 | 15 | 16 | 13 | 14 | 18 | 17 | 1 | 2 | 3 | 4 | 5 | 6 | 22 | 21 | 24 | 23 | 19 |
10 | 10 | 9 | 12 | 11 | 7 | 8 | 16 | 15 | 18 | 17 | 13 | 14 | 22 | 21 | 24 | 23 | 19 | 20 | 1 | 2 | 3 | 4 | 5 |
11 | 11 | 12 | 8 | 7 | 10 | 9 | 21 | 22 | 19 | 20 | 24 | 23 | 2 | 1 | 5 | 6 | 3 | 4 | 16 | 15 | 18 | 17 | 13 |
12 | 12 | 11 | 10 | 9 | 8 | 7 | 22 | 21 | 24 | 23 | 19 | 20 | 16 | 15 | 18 | 17 | 13 | 14 | 2 | 1 | 5 | 6 | 3 |
13 | 13 | 14 | 15 | 16 | 17 | 18 | 3 | 4 | 1 | 2 | 6 | 5 | 9 | 10 | 7 | 8 | 12 | 11 | 23 | 24 | 20 | 19 | 22 |
14 | 14 | 13 | 17 | 18 | 15 | 16 | 4 | 3 | 6 | 5 | 1 | 2 | 23 | 24 | 20 | 19 | 22 | 21 | 9 | 10 | 7 | 8 | 12 |
15 | 15 | 16 | 13 | 14 | 18 | 17 | 9 | 10 | 7 | 8 | 12 | 11 | 3 | 4 | 1 | 2 | 6 | 5 | 24 | 23 | 22 | 21 | 20 |
16 | 16 | 15 | 18 | 17 | 13 | 14 | 10 | 9 | 12 | 11 | 7 | 8 | 24 | 23 | 22 | 21 | 20 | 19 | 3 | 4 | 1 | 2 | 6 |
17 | 17 | 18 | 14 | 13 | 16 | 15 | 23 | 24 | 20 | 19 | 22 | 21 | 4 | 3 | 6 | 5 | 1 | 2 | 10 | 9 | 12 | 11 | 7 |
18 | 18 | 17 | 16 | 15 | 14 | 13 | 24 | 23 | 22 | 21 | 20 | 19 | 10 | 9 | 12 | 11 | 7 | 8 | 4 | 3 | 6 | 5 | 1 |
19 | 19 | 20 | 21 | 22 | 23 | 24 | 5 | 6 | 2 | 1 | 4 | 3 | 11 | 12 | 8 | 7 | 10 | 9 | 17 | 18 | 14 | 13 | 16 |
20 | 20 | 19 | 23 | 24 | 21 | 22 | 6 | 5 | 4 | 3 | 2 | 1 | 17 | 18 | 14 | 13 | 16 | 15 | 11 | 12 | 8 | 7 | 10 |
21 | 21 | 22 | 19 | 20 | 24 | 23 | 11 | 12 | 8 | 7 | 10 | 9 | 5 | 6 | 2 | 1 | 4 | 3 | 18 | 17 | 16 | 15 | 14 |
22 | 22 | 21 | 24 | 23 | 19 | 20 | 12 | 11 | 10 | 9 | 8 | 7 | 18 | 17 | 16 | 15 | 14 | 13 | 5 | 6 | 2 | 1 | 4 |
23 | 23 | 24 | 20 | 19 | 22 | 21 | 17 | 18 | 14 | 13 | 16 | 15 | 6 | 5 | 4 | 3 | 2 | 1 | 12 | 11 | 10 | 9 | 8 |
x | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 |
x -1 | 1 | 2 | 3 | 5 | 4 | 6 | 7 | 8 | 13 | 19 | 14 | 20 | 9 | 11 | 15 | 21 | 17 | 23 | 10 | 12 | 16 | 22 | 18 |
d e c f b a
Drehung: | a->b | b->c | c->d | d->e | e->f | f->a | Bezeichnung: ( bcdefa ) |
Spiegelung: | a->a | b<->f | c<->e | d->d | Bezeichnung: ( afedcb ) |
Gruppe wird definiert durch erzeugende Elemente: G = [bcdefa, afedcb]
Es wird berechnet: G = {abcdef, afedcb, bafedc, bcdefa, cbafed, cdefab, dcbafe, defabc, edcbaf, efabcd, fabcde fedcba}
* | abcdef | afedcb | bafedc | bcdefa | cbafed | cdefab | dcbafe | defabc | edcbaf | efabcd | fabcde | fedcba |
abcdef | abcdef | afedcb | bafedc | bcdefa | cbafed | cdefab | dcbafe | defabc | edcbaf | efabcd | fabcde | fedcba |
afedcb | afedcb | abcdef | fabcde | fedcba | efabcd | edcbaf | defabc | dcbafe | cdefab | cbafed | bafedc | bcdefa |
bafedc | bafedc | bcdefa | abcdef | afedcb | fabcde | fedcba | efabcd | edcbaf | defabc | dcbafe | cbafed | cdefab |
bcdefa | bcdefa | bafedc | cbafed | cdefab | dcbafe | defabc | edcbaf | efabcd | fedcba | fabcde | abcdef | afedcb |
cbafed | cbafed | cdefab | bcdefa | bafedc | abcdef | afedcb | fabcde | fedcba | efabcd | edcbaf | dcbafe | defabc |
cdefab | cdefab | cbafed | dcbafe | defabc | edcbaf | efabcd | fedcba | fabcde | afedcb | abcdef | bcdefa | bafedc |
dcbafe | dcbafe | defabc | cdefab | cbafed | bcdefa | bafedc | abcdef | afedcb | fabcde | fedcba | edcbaf | efabcd |
defabc | defabc | dcbafe | edcbaf | efabcd | fedcba | fabcde | afedcb | abcdef | bafedc | bcdefa | cdefab | cbafed |
edcbaf | edcbaf | efabcd | defabc | dcbafe | cdefab | cbafed | bcdefa | bafedc | abcdef | afedcb | fedcba | fabcde |
efabcd | efabcd | edcbaf | fedcba | fabcde | afedcb | abcdef | bafedc | bcdefa | cbafed | cdefab | defabc | dcbafe |
fabcde | fabcde | fedcba | afedcb | abcdef | bafedc | bcdefa | cbafed | cdefab | dcbafe | defabc | efabcd | edcbaf |
fedcba | fedcba | fabcde | efabcd | edcbaf | defabc | dcbafe | cdefab | cbafed | bcdefa | bafedc | afedcb | abcdef |
x | abcdef | afedcb | bafedc | bcdefa | cbafed | cdefab | dcbafe | defabc | edcbaf | efabcd | fabcde | fedcba |
invers | abcdef | afedcb | bafedc | fabcde | cbafed | efabcd | dcbafe | defabc | edcbaf | cdefab | bcdefa | fedcba |
{abcdef} =[abcdef] {abcdef afedcb} =[afedcb] {abcdef bafedc} =[bafedc] {abcdef cbafed} =[cbafed] {abcdef dcbafe} =[dcbafe] {abcdef defabc} =[defabc] {abcdef edcbaf} =[edcbaf] {abcdef fedcba} =[fedcba] {abcdef cdefab efabcd} =[cdefab] = [efabcd] {abcdef bcdefa cdefab defabc efabcd fabcde} =[bcdefa] = [fabcde] (bisher alle zyklisch, daher kommutativ) {abcdef afedcb dcbafe defabc, kommutativ} =[afedcb dcbafe] = [afedcb defabc] = [dcbafe defabc] {abcdef bafedc defabc edcbaf, kommutativ} =[bafedc defabc] = [bafedc edcbaf] = [defabc edcbaf] {abcdef cbafed defabc fedcba, kommutativ} =[cbafed defabc] = [cbafed fedcba] = [defabc fedcba] {abcdef afedcb cbafed cdefab edcbaf efabcd, nicht komm.} =[afedcb cbafed] = [afedcb cdefab] = [afedcb edcbaf] = [afedcb efabcd] = [cbafed cdefab] = [cbafed edcbaf] = [cbafed efabcd] = [cdefab edcbaf] = [edcbaf efabcd] {abcdef bafedc cdefab dcbafe efabcd fedcba, nicht komm.} =[bafedc cdefab] = [bafedc dcbafe] = [bafedc efabcd] = [bafedc fedcba] = [cdefab dcbafe] = [cdefab fedcba] = [dcbafe efabcd] = [dcbafe fedcba] = [efabcd fedcba] {Ganze Gruppe, nicht komm.} =[afedcb bafedc] = [afedcb bcdefa] = [afedcb fabcde] = [afedcb fedcba] = [bafedc bcdefa] = [bafedc cbafed] = [bafedc fabcde] = [bcdefa cbafed] = [bcdefa dcbafe] = [bcdefa edcbaf] = [bcdefa fedcba] = [cbafed dcbafe] = [cbafed fabcde] = [dcbafe edcbaf] = [dcbafe fabcde] = [edcbaf fabcde] = [edcbaf fedcba] = [fabcde fedcba] Schließlich noch die Kommutatorgruppen Kommutatorenuntergruppen: Ganze Gruppe { abcdef cdefab efabcd } { abcdef } Die Gruppe ist also auflösbar.Mit durchnummerierten Permutationen:
* | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 |
1 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 |
2 | 2 | 1 | 11 | 12 | 10 | 9 | 8 | 7 | 6 | 5 | 3 | 4 |
3 | 3 | 4 | 1 | 2 | 11 | 12 | 10 | 9 | 8 | 7 | 5 | 6 |
4 | 4 | 3 | 5 | 6 | 7 | 8 | 9 | 10 | 12 | 11 | 1 | 2 |
5 | 5 | 6 | 4 | 3 | 1 | 2 | 11 | 12 | 10 | 9 | 7 | 8 |
6 | 6 | 5 | 7 | 8 | 9 | 10 | 12 | 11 | 2 | 1 | 4 | 3 |
7 | 7 | 8 | 6 | 5 | 4 | 3 | 1 | 2 | 11 | 12 | 9 | 10 |
8 | 8 | 7 | 9 | 10 | 12 | 11 | 2 | 1 | 3 | 4 | 6 | 5 |
9 | 9 | 10 | 8 | 7 | 6 | 5 | 4 | 3 | 1 | 2 | 12 | 11 |
10 | 10 | 9 | 12 | 11 | 2 | 1 | 3 | 4 | 5 | 6 | 8 | 7 |
11 | 11 | 12 | 2 | 1 | 3 | 4 | 5 | 6 | 7 | 8 | 10 | 9 |
12 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 |
x | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 |
invers | 1 | 2 | 3 | 11 | 5 | 10 | 7 | 8 | 9 | 6 | 4 | 12 |
{1} =[1] {1 2} =[2] {1 3} =[3] {1 5} =[5] {1 7} =[7] {1 8} =[8] {1 9} =[9] {1 12}=[12] {1 6 10} =[6] = [10] {1 4 6 8 10 11} =[4] = [11] (bisher alle zyklisch, also kommutativ) {1 2 7 8, kommutativ} =[2 7] = [2 8] = [7 8] {1 3 8 9, kommutativ} =[3 8] = [3 9] = [8 9] {1 5 8 12, kommutativ} =[5 8] = [5 12] = [8 12] {1 2 5 6 9 10, nicht komm.} =[2 5] = [2 6] = [2 9] = [2 10] = [5 6] = [5 9] = [5 10] = [6 9] = [9 10] {1 3 6 7 10 12, nicht komm.} =[3 6] = [3 7] = [3 10] = [3 12] = [6 7] = [6 12] = [7 10] = [7 12] = [10 12] {Ganze Gruppe, nicht komm.} =[2 3] = [2 4] = [2 11] = [2 12] = [3 4] = [3 5] = [3 11] = [4 5] = [4 7] = [4 9] = [4 12] = [5 7] = [5 11] = [7 9] = [7 11] = [9 11] = [9 12] = [11 12] Schließlich noch die Kommutatorgruppen Kommutatorenuntergruppen: Ganze Gruppe { 1 6 10 } { 1 } Die Gruppe ist also auflösbar.
koeff *x0 + koeff *x1 + koeff * x2 = koeff 00 01 02 03 koeff *x0 + koeff *x1 + koeff * x2 = koeff 10 11 12 13 koeff *x0 + koeff *x1 + koeff * x2 = koeff 20 21 22 23Siehe Lektion 15
1^0 + 2^0 + 3^0 ... + n^0 = n 1^1 + 2^1 + 3^1 ... + n^1 = 1/2n^2 + 1/2n 1^2 + 2^2 + 3^2 ... + n^2 = 1/3n^3 + 1/2n^2 + 1/6n 1^3 + 2^3 + 3^3 ... + n^3 = 1/4n^4 + 1/2n^3 + 1/4n^2 1^4 + 2^4 + 3^4 ... + n^4 = 1/5n^5 + 1/2n^4 + 1/3n^3 - 1/30n 1^5 + 2^5 + 3^5 ... + n^5 = 1/6n^6 + 1/2n^5 + 5/12n^4 - 1/12n^2 1^6 + 2^6 + 3^6 ... + n^6 = 1/7n^7 + 1/2n^6 + 1/2n^5 - 1/6n^3 + 1/42n 1^7 + 2^7 + 3^7 ... + n^7 = 1/8n^8 + 1/2n^7 + 7/12n^6 - 7/24n^4 + 1/12n^2 1^8 + 2^8 + 3^8 ... + n^8 = 1/9n^9 + 1/2n^8 + 2/3n^7 - 7/15n^5 + 2/9n^3 - 1/30n 1^9 + 2^9 + 3^9 ... + n^9 = 1/10n^10 + 1/2n^9 + 3/4n^8 - 7/10n^6 + 1/2n^4 - 3/20n^2 1^10 + 2^10 + 3^10 ... + n^10 = 1/11n^11 + 1/2n^10 + 5/6n^9 - 1n^7 + 1n^5 - 1/2n^3 + 5/66n 1^11 + 2^11 + 3^11 ... + n^11 = 1/12n^12 + 1/2n^11 + 11/12n^10 - 11/8n^8 + 11/6n^6 - 11/8n^4 + 5/12n^2Programm dazu: Berechnung der Formel S(n,k)=1k + 2k + ... nk
Das Programm TTMusik
(Downloadseite)
spielt Akkorde und berechnet dazu
genauen Frequenzen, Frequenzverhältnisse und
die Intervalle.
Der Unterschied der reinen Stimmung zur gleichschwebenden Stimmung
wird hörbar.
(Tonerzeugung nicht über Midi oder Synthesizer sondern
als WAV-Datei.)
Mathematisch wird dabei der Logarithmus zur
"Tripelbasis" (2,3,5) berechnet. z.B.wird aus
dem Frequenzverhältnis q=1,4222222222 der "Tripellogarithmus" (auch "Sigel" genannt)
[x,y,z]=[2,-2,-1] ermittelt, der die Gleichung
q=2x·(3/2)y·(5/4)z ganzzahlig erfüllt, d.h.
unit tt_wav; {Ausgerichtete Recordfelder aus!!!} {$A-} interface uses Classes, mmsystem, WinProcs; const sampl441 = 441; //für eine 1/100-Sekunde sampl22050 = 50*sampl441; //22050 type TRiffHeader = record riff: Array[0..3] OF Char; filesize: LongInt; typeStr: Array[0..3] OF Char; end; TChunkRec = record id: Array[0..3] OF Char; size: LongInt; end; TWaveFormatRec = record tag: Word; channels: Word; samplesPerSec: LongInt; bytesPerSec: LongInt; blockAlign: Word; end; TPCMWaveFormatRec = record wf: TWaveFormatRec; bitsPerSample: Word; end; TWAVHeader = record { WAV Format } riffHdr: TRiffHeader; fmtChunk: TChunkRec; fmt: TPCMWaveFormatRec; dataChunk: TChunkRec; { data follows here } end; var lautstaerke: integer = 3200; //wird bei tondauer gesetzt WAVDauerEinmalig: single = 0; function tondauer: integer; procedure spiele(fr1, fr2, fr3, fr4, fr5, fr6, fr7, fr8: double); procedure spieleton(fr: double); procedure tontief; procedure ton; procedure tonhoch; procedure alarmton; implementation procedure HeadInit(var Header: TWAVHeader); begin with Header do begin with riffHdr do begin //Schreibe 'RIFF' in die ersten 4 bytes riff[0] := char($52); riff[1] := char($49); riff[2] := char($46); riff[3] := char($46); // wird spaeter gesetzt; filesize := 0; //Schreibe 'WAVE' in die naechsten 4 bytes typeStr[0] := char($57); typeStr[1] := char($41); typeStr[2] := char($56); typeStr[3] := char($45); end; with fmtChunk do begin //Schreibe 'fmt' + char($20) in die naechsten 4 bytes id[0] := char($66); id[1] := char($6D); id[2] := char($74); id[3] := char($20); size := $10; end; with fmt.wf do begin //its 16 bit, 44kHz Stereo tag := 1; channels := 2; samplesPerSec := $AC44; bytesPerSec := MakeLong($B110, $2); blockAlign := 4; fmt.bitsPerSample := $10; end; with dataChunk do begin //Schreibe 'data' in die naechsten 4 bytes id[0] := char($64); id[1] := char($61); id[2] := char($74); id[3] := char($61); size := 0; end; end; end; function f0(const k: double): SmallInt; begin {Hier Frequenzen ganz exakt. Üblich sind Tabellen (wesentlich schneller, da nur einmal berechnet wird} //result := Round(sin(k*Pi/sampl22050)*lautstaerke); //reiner sinus result := Round(sin((k * Pi) / sampl22050) * lautstaerke) div 2 + Round(sin((2 * k * Pi) / sampl22050) * lautstaerke) div 4 + //1.Oberton Round(sin((3 * k * Pi) / sampl22050) * lautstaerke) div 6; //2.Oberton} end; function Abtastwert(const k1,k2,k3,k4,k5,k6,k7,k8: double): SmallInt; // var f:Smallint; begin //z.B. k=i*frw1 (für i=441*500(5Sek) frw1=100)=max=sampl220500000 //Longword=0..4294967295 if k1=0 then Begin result:=0; exit End else f:=f0(k1); result:=f; if k2=0 then exit; if k2<>k1 then f:=f0(k2); //else f=f0(k1) result:=result+f; if k3=0 then exit; if k3<>k2 then f:=f0(k3); //else f=f0(k2) result:=result+f; if k4=0 then exit; if k4<>k3 then f:=f0(k4); //else f=f0(k3) result:=result+f; if k5=0 then exit; if k5<>k4 then f:=f0(k5); //else f=f0(k4) result:=result+f; if k6=0 then exit; if k6<>k5 then f:=f0(k6); //else f=f0(k5) result:=result+f; if k7=0 then exit; if k7<>k6 then f:=f0(k7); //else f=f0(k6) result:=result+f; if k8=0 then exit; if k8<>k7 then result:=result+f0(k8) else result:=result+f; end; procedure spiele(fr1, fr2, fr3, fr4, fr5, fr6, fr7, fr8: double); var ms: TMemoryStream; Header: TWavHeader; i: integer; //z.B. i=0 to 441*500=441500 (5 Sekunden) s: SmallInt; begin HeadInit(Header); Header.Datachunk.size := sampl441 * tondauer * 2 * 2; //441*cs Samples pro sekunde, //2 Channels, 2Bytes (16bit) //FileSize = DataSize + HeaderSize Header.riffHdr.FileSize := Header.Datachunk.size + 24; ms := TMemoryStream.Create; try ms.Seek(0, 0); //Write Header to Stream ms.Write(Header, sizeof(header)); //form here: just data chunks. in this case (16bit stereo): // 16bit LeftValue, 16bit Right Value, 16bit LeftValue, 16bit Right Value ... // in the range of a SmallInt if tondauer <= 0 then exit; //kein Ton. Sollte nicht vorkommen for i := 0 to sampl441 * tondauer - 2 do BEgin //Writing left channel s := Abtastwert(i * fr1, i * fr2, i * fr3, i * fr4, i * fr5, i * fr6, i * fr7, i * fr8); ms.Write(s, 2); //Writing to right channel ms.Write(s, 2); ENd; Finally if not PlaySound(ms.Memory,SND_FILENAME, SND_MEMORY or SND_SYNC) then PlaySound(Nil,SND_FILENAME, SND_MEMORY or SND_SYNC); ms.Free; End; end; procedure spieleton(fr: double); begin spiele(fr, fr, fr, fr, fr, fr, fr, fr); end; function tondauer: integer; //standard 10 Centisekunten var parameterlautstaerke: integer; begin result := 100; parameterlautstaerke := 100; lautstaerke := parameterlautstaerke*32; end; procedure tontief; begin spieleTon(220); end; procedure ton; begin spieleTon(440); end; procedure tonhoch; begin spieleTon(880); end; procedure alarmton; begin WAVDauerEinmalig := 1/4; spieleTon(440); WAVDauerEinmalig := 1/4; spieleTon(528); WAVDauerEinmalig := 1/2; spieleTon(660); end; end.
———————————— Quellcode schnipp ————————— setlength(Mybutton,10); for i:=0 to 9 do Begin Mybutton[i]:=TButton.Create(Form1); Mybutton[i].Parent:=Form1; Mybutton[i].width:=45; Mybutton[i].caption:='Nr.'+intToStr(i); Mybutton[i].top:=0; Mybutton[i].left:=50*i; Mybutton[i].OnClick:=Form1.MybuttonClick; End;—————————————— schnapp —————————————————
—————————— Quellcode schnipp ———————————————— procedure TForm1.FormCreate(Sender: TObject); var myimage: TImage; //uses extctrls einfügen begin zeichne := false; myimage := Timage.create(application); //Damit beim Beenden automatisch free with myimage do Begin parent := Form1; onMousedown :=ImageonMousedown; onmousemove := ImageOnMousemove; onmouseup := ImageOnMouseUp; left := 10; top := 10; width := Form1.Clientwidth-20; height := Form1.clientheight-20; Canvas.Rectangle(0,0,width,height); show; End; end; procedure TForm1.ImageonMousedown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin with (sender as Timage).canvas do moveto(x,y); Zeichne := True; end; procedure TForm1.ImageOnMousemove(Sender: TObject; Shift: TShiftState; X, Y: Integer); begin if zeichne then with (sender as Timage).canvas do lineto(x,y); end; procedure TForm1.ImageOnMouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin Zeichne := false; end; ———————————————— schnapp ———————————————
procedure tausche(var a,b:real); var x:real; begin x:=a; a:=b; b:=x; end; procedure bubblesort(var aa:array of real; n1,n2:integer); //sortiert von n1 bis n2 var i:integer; fertig: Boolean; begin repeat fertig:=true; for i:=n1 to n2-1 do Begin if aa[i]>aa[i+1] then BEgin tausche(aa[i],aa[i+1]); fertig:=false; ENd; End; until fertig; end; Häufig sieht man auch folgende Variante for i := n1 to n2-1 do for j := i+1 to n2 do if aa[i]>aa[j] then tausche(aa[i],aa[j]);
MomentaufnahmeDie ersten beiden Stapel der vier Stapel sind bereits sortiert und richtig zusammengemischt worden. (1 bis 23 mit Lücken rot)Der dritte Stapel ist bereits sortiert. (7, 11, 16, 18, 19, 20) Der vierte Stapel wird gerade sortiert. (4, 10, 14, 3, 24 ,0) Jetzt fehlt noch: (i) Der vierte Stapel muss noch fertig sortiert werden. (ii) Der dritte und vierte Stapel müssen dann richtig zusammen gemischt werden. (iii) Der rote (Stapel 1 und 2 zusammen) und der blaue (Stapel 3 und 4) müssen dann noch richtig zusammengemischt werden. Mit dem Programm Sortieren.exe werden die verschieden Sortierverfahren anschaulich gemacht. Beeindruckend ist der Geschwindigkeitsvergleich. |
procedure Einsortieren(var aa:array of real; n1,m,n2:integer); //aa[n1]<=aa[n1+1]<=..<=aa[m] aa[m+1]<=aa[m+2]<=...<=aa[n2] // i1——————————————————> i2——————————————————————> // k—————————— füllt Hilfsfeld———————————————————————> var i1,i2,k,n:integer; hilf: array of real; begin n:=n2-n1+1; //Anzahl von aa[n1] ... aa[n2] setlength(hilf,n); //Platz für hilf[0] ... hilf[n-1] i1:=n1; i2:=m+1; for k:=0 to n-1 do //i1>m und i2>n2; auch abfangen! if (i1>m) or ((i2<=n2) and (aa[i1]>aa[i2])) then Begin hilf[k]:=aa[i2]; inc(i2); End else Begin hilf[k]:=aa[i1]; inc(i1); End; for k:=0 to n-1 do aa[n1+k]:=hilf[k]; end; procedure sortieren(var aa:array of real;n1,n2:integer); var m:integer; begin if n1=n2 then exit; //Bei einem Element ist nichts zu sortieren m:=(n1+n2) div 2; //Mitte sortieren(aa,n1,m); //Rekursiv sortieren(aa,m+1,n2); //Rekursiv Einsortieren(aa,n1,m,n2); end;Effizienz ist von der Ordnung(n*lbn), wobei lb der Zweierlogarithmus ist
Effizienz n Bublesort n^2 Hier n*lb n 10 100 33 20 400 86 100 10000 664 1000 1 000 000 9 965 10000 100 000 000 132 877
Quicksort wurde 1960 von C.A.R.Hoare vorgestellt.
Dieser - wahrscheinlich - am häufigsten verwendete Ordnungsalgorithmus ist der schnellste. Er benötigt keinen (vor allem bei Array of string) zeitraubenden Hilfarray.
Das Grundprinzip des Sortierverfahrens ist "teile und herrsche". Es wird ein Vergleichswert gewählt, dann das Feld in zwei Teile zerlegt mit allen Elementen größer oder gleich dem Vergleichswert auf einer Seite und alle kleiner als der Vergleichswert auf der anderen Seite. Dieser Vorgang wird für beide entstandenen Teile wiederholt bis die Datei sortiert ist.
Die wichtigen Funktionen aus der unit sind folgende:procedure sortieren(var aa: array of real; von,bis:integer); //Quicksort rekursiv var i,j: integer; //vor dem 13.02.2002 fälschlicherweise byte wertDerMitte:real; begin i:=von; j:=bis; wertDerMitte:=aa[(von+bis) div 2]; //Die Mitte repeat while aa[i]j; if von i then sortieren(aa,i,bis); end;
Ein einfacher Browser. Besonderheit:
Man kann leicht in lokal gespeicherten HTML-Seiten blättern. Hinweis: TTweb wurde in TTText integriert. Downloadseite |
Dieses Programm ermöglicht Ihnen, den ganzen Bildschirm oder einen Teil davon "abzufotografieren" und als JPG-Datei
zu speichern.
MenüpunkteBildschirm (Str+B): Der ganze Bildschirm wird abfotografiert und kann dann als JPG-Datei abgespeichert werden.Teilausschnitt (Str+S): Ein Teil des Bildschirms wird abfotografiert und kann dann als JPG-Datei abgespeichert werden (nochmal Str+S). Das Rechteck des Bereichs wird bestimmt durch die linke obere Ecke von "links oben" und die rechte untere Ecke von "rechts unten". Timer: Der Bildschirmausschnitt wird erst nach 10, 20, ... Sekunden aufgenommen. Das Programm wartet im Hintergrund. Solange haben Sie die Möglichkeit, Menüs aufzuklappen und Fenster sichtbar zu machen u.s.w., so dass auch dies aufs Bild kommt. Das Problem, dass Fenster verschwinden, wenn Sie dieses Programm aktivieren ,ist damit gelöst. Markierungen: Die Markierungen werden in die Nähe des Hauptfensters von Bildschirmausschnitt bewegt. Die Markierungen können Sie an die richtige Stelle ziehen. |
Einfacher zu bedienen als das Startmenüprogramm von Windows.
Downloadseite |
Galton-BrettKugeln fallen über ein Nagelbrett, werden bei jedem Nagel nach links oder nach rechts abgelenkt und landen schließlich unten in Sammelbehältern.Eine schöne Veranschaulichung der Binomialverteilung. |
Downloadseite |
Download |