IDZ DO PRZYK ADOWY ROZDZIA KATALOG KSI EK ZAMÓW DRUKOWANY KATALOG Wydawnictwo Helion ul. Chopina 6 44-100 Gliwice tel. (32)230-98-63 e-mail: helion@helion.pl TWÓJ KOSZYK CENNIK I INFORMACJE ZAMÓW INFORMACJE O NOWOŒCIACH ZAMÓW CENNIK CZYTELNIA SPIS TREŒCI KATALOG ONLINE DODAJ DO KOSZYKA FRAGMENTY KSI EK ONLINE Delphi 6. Nowe narzêdzia obliczeniowe Autor: Andrzej Daniluk ISBN: 83-7197-766-2 Format: B5, stron: 189 Zawiera CD-ROM Delphi 6 jest kolejn¹ wersj¹ najpopularniejszego zintegrowanego œrodowiska programowania typu RAD dla platformy Windows. Dodatkowo wspó³pracuj¹c z Borland Kylixem pierwszym œrodowiskiem programistycznym RAD dla Linuksa powoduje, i obszary wykorzystania nowego Delphi przez osoby znaj¹ce jêzyk Object Pascal znacznie siê rozszerzy³y. Niniejsza ksi¹ ka jest tak pomyœlana, aby pokazaæ Czytelnikowi mo liwoœci nowej wersji Delphi. Poza zilustrowaniem, jak mo na sprawnie u ywaæ zasobów kompilatora zawartych w modu³ach StdConvs, ConvUtils, VarConv, Math, VarCmplx wszêdzie gdzie by³o to mo liwe autor stara³ siê przedstawiæ po yteczne przyk³ady i algorytmy ilustruj¹ce praktyczne aspekty wykorzystania opisanych elementów œrodowiska Delphi 6. Omawiane w tej ksi¹ ce typy danych, sta³e, zmienne, funkcje i procedury nie s¹ czêœci¹ standardowego jêzyka Object Pascal. Zosta³y w³¹czone do œrodowiska programowania w celu uczynienia go jeszcze bardziej przyjaznym u ytkownikowi, powoduj¹c jednoczeœnie, i nowe Delphi wykona³o kolejny krok w przybli eniu swojej funkcjonalnoœci do takich narzêdzi obliczeniowych jakimi s¹ Excel, C++ Builder czy Matlab. Pod wzglêdem tematycznym ksi¹ ka zosta³a podzielona na trzy g³ówne dzia³y. Procedury przeliczania wielkoœci fizycznych. Modu³y StdConvs, ConvUtils oraz VarConv, opisuj¹ mo liwoœci nowego Delphi w zakresie pos³ugiwania siê wielkoœciami fizycznymi oraz manipulowania ich jednostkami. Przedstawiono dostêpne z poziomu kompilatora predefiniowane uk³ady jednostek, funkcje przeliczaj¹ce wybrane wielkoœci fizyczne oraz sposoby tworzenia zarówno w³asnych uk³adów jednostek, jak i metody definiowania samodzielnie skonstruowanych funkcji przeliczaj¹cych. Wiêkszoœæ z prezentowanych zasobów Delphi 6 jest czêœci¹ standardowej biblioteki VCL, niektóre z nich, oparte na typach wariantowych, nale ¹ ju do biblioteki CLX mog¹ byæ wiêc z powodzeniem u yte w aplikacjach miêdzyplatformowych. Rozdzia³ zawiera opis wy szego poziomu procedur oraz funkcji arytmetycznych, trygonometrycznych, hiperbolicznych, cyklometrycznych, logarytmicznych, statystycznych, funkcji generatora liczb pseudolosowych, funkcji s³u ¹cych do przeprowadzania ró nego rodzaju obliczeñ finansowych oraz funkcji FPU. Przedstawione funkcje i procedury nale y traktowaæ jako uzupe³nienie zasobów standardowego jêzyka Object Pascal znajduj¹cych siê w module System. W wiêkszoœci stanowi¹c czêœæ biblioteki CLX z powodzeniem mog¹ byæ u ywane podczas projektowania aplikacji miêdzyplatformowych. Wielkoœci fizyczne Modu³ Math Modu³ VarCmplx zastosowañ coraz popularniejszych typów wariantowych na potrzeby dzia³añ.
Rozdział 1. Rozdział 2. Rozdział 3. Wstęp...z...5 Wielkości fizyczne. Procedury przeliczania wielkości fizycznych. Moduły StdConvs, ConvUtils oraz VarConv...7 Predefiniowane układy jednostek oraz funkcje przeliczające...11 Samodzielne definiowanie układów jednostek...a...54 Moduł VarConv...a...a...6 2 Podsumowanie...a...a...6 7 Moduł Math...z...69 Funkcje miary kąta...a...a...6 9 Funkcje trygonometryczne zmiennej rzeczywistej...a...73 Odwrotne funkcje trygonometryczne...a...78 Funkcje hiperboliczne...a...a.85 Odwrotne funkcje hiperboliczne...a...87 Funkcje wykładnicze...a...a...92 Funkcje potęgowe...a...a...93 Funkcje logarytmiczne...a...a96 Funkcje, procedury oraz stałe arytmetyczne i konwersji typów...98 Funkcje oraz procedury FPU...a...120 Funkcje generatora liczb pseudolosowych...a...124 Funkcje służące do wykonywania obliczeń statystycznych...133 Funkcje finansowe...a...a...145 Podsumowanie...a...a...154 Moduł VarCmplx...z...155 Liczby zespolone, płaszczyzna liczbowa, moduł i argument liczby...155 Podstawowe funkcje zmiennej zespolonej...a...157 Funkcje trygonometryczne zmiennej zespolonej...a...172 Odwrotne funkcje trygonometryczne zmiennej zespolonej...175 Funkcje hiperboliczne zmiennej zespolonej...a...179 Odwrotne funkcje hiperboliczne zmiennej zespolonej...a183 Podsumowanie...a...a...186 Literatura uzupełniająca...z...187
Rozdział 1. Wielkością fizyczną (wielkością mierzalną) nazywamy każdą mierzalną cechę zjawiska lub ciała, którą można porównać ilościowo z takimi samymi cechami innych zjawisk lub ciał. Aby móc w sposób właściwy posługiwać się wybraną wielkością fizyczną, (i nie tylko) należy wielkość taką w odpowiedni sposób zdefiniować, tzn. wyrazić wielkość nieznaną za pomocą wielkości wcześniej określonych, tzn. wielkości podstawowych. Wielkościami podstawowymi nazywamy także wielkości, którymi łatwo posługujemy się w życiu codziennym i przez to są one dla nas intuicyjnie jasne. Wszystkie inne zdefiniowane na podstawie wielkości podstawowej będą wielkościami pochodnymi. Aby uzyskać ilościową informację o jakiejś wielkości należy porównać ją z wielkością tego samego rodzaju przyjętą za jednostkę. Wartość liczbowa otrzymana w wyniku takiego porównania zawsze zależeć będzie od wyboru jednostki podstawowej. Wszystkie wyniki pomiarów różnych wielkości fizycznych zawsze podawane są w ogólnie akceptowanych jednostkach. Wszystkie jednostki, w których wyrażamy daną wielkość, muszą wywodzić się (być określoną wielokrotnością lub podwielokrotnością) z pewnej podstawowej jednostki danego układu. Jeżeli np. zechcemy zdefiniować wielkość zwaną prędkością, wówczas jako wielkości podstawowe przyjmiemy długość oraz czas, ogólnie przyjętymi jednostkami tych wielkości będą metr oraz sekunda, zatem jednostka dugości jednostka prędkości, jednostka czasu
8 Delphi 6. Nowe narz dzia obliczeniowe zaś jednostką pochodną prędkości będzie jednostka dugości jednostka przyśpieszenia, 2 (jednostka czasu) Powiemy ogólnie: jeżeli jakąś wybraną wielkość ; określimy za pomocą innych wielkości ;;2, wówczas ; będzie pewną funkcją ;2: w f(w1,..., wn ). Funkcja 0jednoznacznieokreśla wymiar wielkości ;, zatem zgodnie z powyższymi zapisami wymiarem prędkości będzie 7, zaś przyśpieszenia 7. Zbiór wszystkich jednostek podstawowych oraz określonych za ich pomocą jednostek pochodnych tworzy pewien zbiór (układ) jednostek. Na potrzeby dalszych rozważań należy rozróżniać dwa pojęcia: czynnik przeliczeniowy oraz mnożnik. Mnożnikiem jest konkretna liczba służąca do opisania wartości pewnej wielkości w obrębie tej samej jednostki. Podstawową jednostką długości jest 1 metr (1 m). Wartość 100 m otrzymamy wykonując prostą operację mnożenia: 100 m 100 * 1m. Liczba 100 jest przykładem niemianowanego mnożnika. W odróżnieniu od mnożników czynniki przeliczeniowe mogą być wielkościami mianowanymi lub niemianowanymi. Jeżeli zechcielibyśmy odległość 1 m wyrazić w centymetrach, łatwo możemy dokonać odpowiedniego przypisania: 1m 100cm, dzieląc z kolei obie strony powyższej równości przez 100 cm: 1m 100 cm 1, po lewej stronie równości otrzymamy postać czynnika przeliczeniowego przeliczającego wielkości wyrażane w metrach na inne wielkości tego samego układu jednostek wyrażane w centymetrach, np.: 1m 1000 cm * 10 m, 100 cm wynika stąd, iż: 1000 cm 10 m. Czynniki przeliczeniowe mogą być też wielkościami niemianowanymi. Równie dobrze przykład, w którym przeliczaliśmy metry na centymetry, można zapisać następująco: 1 10 m * 0,1m 10 cm 10 m 1000 cm, 100 gdzie wykorzystano fakt, iż 1 metr liczy 100 centymetrów. Zatem w tym konkretnym przypadku wartość czynnika przeliczeniowego równa będzi e.
Rozdział 1. Wielkolci fizyczne. Procedury przeliczania wielkolci fizycznych. Moduły... 9 W przeszłości w użyciu było wiele mniej lub bardziej równouprawnionych układów jednostek, takich jak: CGS (centymetr-gram-sekunda), elektromagnetyczny CGS, elektrostatyczny CGS, MKS (metr-kilogram-sekunda) czy brytyjski techniczny układ jednostek fps (stopa-funt-sekunda) 1. Reguły definiujące poszczególne wielkości miały różną postać, różne też były stosowane w obrębie danego układu czynniki przeliczeniowe pomocne w przeliczaniu jednostki podstawowej na jednostki pochodne. W 1960 roku podczas XI Generalnej Konferencji Miar podjęto próbę zunifikowania jednostek miar, w ten sposób powstał jednolity międzynarodowy układ jednostek miar SI (International System of Units). Nie będziemy tutaj szczegółowo omawiać układu SI, gdyż każdy z nas musiał się z nim spotkać na pierwszej lekcji fizyki w szkole. Ważniejszą rzeczą jest zaprezentowanie mnożników stosowanych w jego obrębie. Sprawa jest o tyle ciekawa, iż występują pewne różnice w nazewnictwie używanym w USA oraz Europie. Cały problem wynika z nieco innego stosowania na obu kontynentach systemu dziesiętnego w odniesieniu do liczb bardzo małych i bardzo dużych. W USA podstawą liczenia jest system, w którym liczby grupuje się po trzy, np. bilion to tysiąc do potęgi trzeciej, zaś trylion to tysiąc do potęgi czwartej, itd. W Europie pozostano przy starszej wersji tego systemu, mianowicie liczby grupuje się następująco: milion to tysiąc tysięcy, miliard to tysiąc tysięcy tysięcy, itd. Innymi słowy, nasz bilion to amerykański trylion, zaś nasz miliard to amerykański bilion (słowo miliard w USA nie jest używane). Jeżeli kiedyś będziemy chcieli tworzyć aplikacje o zasięgu międzynarodowym, warto zdawać sobie sprawę z obowiązujących reguł nazewnictwa. Tabela 1.1 prezentuje obowiązujące obecnie reguły stosowane w nazewnictwie liczb. Przedstawione reguły nazewnictwa oraz odpowiednie mnożniki mogą być pomocne nie tylko w poprawnym konstruowaniu aplikacji wykorzystywanych w różnych dziedzinach nauki czy techniki. Trzeba pamiętać, iż nowe Delphi 6 udostępnia programistom również szereg technologii biznesowych, takich jak BizSnap (wspierającą integrację działań B2B Business-to-Bussines poprzez tworzenie połączeń XML/SOAP Web Services), WebSnap oraz DataSnap, które pomogą użytkownikom tworzyć internetowe aplikacje typu Web Services, zarówno po stronie serwera jak i klienta. Tworząc tego typu aplikacje należy zawsze pamiętać o poprawnym stosowaniu nazewnictwa oraz właściwym doborze zarówno mnożników, jak i czynników przeliczających dane wielkości. Ze względu na to, iż przedstawione w tabeli 1.1 mnożniki dla układu SI bazują na kolejnych całkowitych potęgach liczby 10, nie mogą one być używane do dokładnego reprezentowania dwójkowego rozwinięcia liczb, tzn. liczb w postaci binarnej. Ma to szczególne znaczenie w zagadnieniach związanych z transmisją danych oraz opisami różnych protokołów komunikacyjnych. 1 W układzie fps funt jest jednostką siły.
10 Delphi 6. Nowe narz dzia obliczeniowe Tabela 1.1. Obowiązujące reguły nazewnictwa wybranych wartościo będących niemianowanymi mnożnikami (określających podwielokrotności oraz wioelokrotności) dla jednostek układu SI Nazwa w USA Nazwa w Europie Wartolć mnornika Numeryczna postać wykładnicza mnornika Przedrostek okrellaj cy wielokrotnolci i podwielokrotnolci metrycznego układu jednostek septylionowa kwadrylionowa yocto y sekstylionowa tryliardowa zepto z kwintyljonowa trylionowa atto a kwadrylionowa biliardowa femto f trylionowa bilionowa piko p bilionowa miliardowa nano n milionowa mikro tysięczna tysięczna mili m setna setna centy c dziesiąta dziesiąta decy d jeden jeden dziesięć dziesięć deka da sto sto hekto h tysiąc tysiąc kilo k milion mega M bilion miliard giga G trylion bilion tera T kwadrylion biliard peta P kwintylion trylion exa E sekstylion tryliard zetta Z septylion kwadrylion yotta Y Symbol przedrostka W celu uniknięcia tych niedogodności w 1998 roku Międzynarodowa Komisja Elektrotechniczna (International Electrotechnical Commission IEC) jako zalecany przyjęła odrębny standard nazewnictwa symboli i przedrostków dla mnożników wielkości reprezentujących liczby zapisane w systemie dwójkowym. Tabele 1.2 oraz 1.3 przedstawiają odpowiednio system nazewnictwa, przedrostki, mnożniki wielkości reprezentujących liczby zapisane w systemie dwójkowym oraz przykłady ich porównania z wybranymi jednostkami wywodzącymi się z układu SI.
Rozdział 1. Wielkolci fizyczne. Procedury przeliczania wielkolci fizycznych. Moduły... 11 Tabela 1.2. System nazewnictwa liczb (binarnych) reprezentowanyoch w systemie dwójkowym a nazewnictwo stosowane w układzie SI Przedrostek Wartolć mnornika Symbol Przedrostek stosowany w układzie SI Wartolć mnornika w układzie SI kibi Ki kilo mebi Mi mega gibi G i giga tebi Ti tera pebi Pi peta exbi Ei exa Tabela 1.3. Porównanie nazewnictwa wielkości reprezentowanych wo systemie dwójkowym i układzie dziesiętnym oraz wartości ich mnożników. W nawiasach opodano nazwy angielskie Pełna nazwa (nazwa angielska) Skrót nazwy oraz mnornik 1 kibibit (kibibit) 1 kibit = bitów = 1 024 bitów 1 kilobit (kilobit) 1 kbit = bitów = 1 000 bitów 1 mebibajt (mebibyte) 1 MiB = bajtów = 1 048 576 B 1 megabajt (megabyte) 1 MB = bajtów = 1 000 000 B 1 gibibajt (gibibyte) 1 GiB = bajtów = 1 073 741 824 B 1 gigabajt (gigabyte) 1 GB = bajtów = 1 000 000 000 B 1 tebibajt (tebibyte) 1 TiB = bajtów = 1 099 511 627 776 B 1 terabajt (terabyte) 1 TB = bajtów = 1 000 000 000 000 B Z powyższych zestawień możemy odczytać, iż dość powszechne utożsamianie np. wielkości reprezentującej 1 kilobit (1 kbit) z wartością 1 024 bitów jest sporym błędem, niestety tego typu nieścisłości nader często występują nie tylko w rodzimej literaturze. Niekonsekwentne stosowanie określonych mnożników dla wielkości reprezentowanych w zapisie binarnym jest częstym powodem nie w pełni poprawnego działania algorytmów obsługujących protokoły transmisji danych. Błędy takie są nieraz bardzo trudne do przechwycenia i zdiagnozowania. Predefiniowane układy jednostek oraz funkcje przeliczające Niniejszy podrozdział zawiera kompletny opis predefiniowanych jednostek oraz układów jednostek, typów, klas, funkcji oraz procedur przeliczających wielkości fizyczne. Omówione elementy nie są wbudowane w kompilator Delphi 6, są natomiast zdefiniowane w modułach StdConvs oraz ConvUtilsbędących częścią standardowej biblioteki VCL.
12 Delphi 6. Nowe narz dzia obliczeniowe Należy zwrócić uwagę na to, iż nie wszystkie przedstawione poniżej jednostki należą do układu SI, część z nich właściwa jest układowi fps, jeszcze inne są już tylko sporadycznie używane w krajach anglosaskich. Dla wygody wszystkie prezentowane jednostki zostały pogrupowane w zbiory, za pomocą których można wyrazić i przeliczyć bardzo wiele interesujących nas wielkości. cbarea predefiniowana zmienna :+6-,6/+ $32:+ -,6/+ tworzy zbiór predefiniowanych jednostek należących do szerokiego układu jednostek pola powierzchni. Zbiór aktualnie dostępnych jednostek przedstawia tabela 1.4. Tabela 1.4. Predefiniowane jednostki należące do zbioru cbarea oreprezentującego układ jednostek pola powierzchni (przedrostek au jest skrótem od area unoits). Jednostką podstawową w tym zbiorze jest jeden metr kwadratowy (1 m 2 ) Literał Liczbowy identyfikator +9#59+6/ /8/67 32 Milimetr kwadratowy +9#59+6//28 /8/67 33 Centymetr kwadratowy +9#59+6//- /8/67 34 Decymetr kwadratowy, czyli dziesięć centymetrów kwadratowych +9#59+6/ /8/67 35 Metr kwadratowy +9#59+6//-+ /8/67 36 Dekametr kwadratowy, czyli dziesięć metrów kwadratowych +9#59+6/ /-83 /8/67 37 Hektometr kwadratowy, czyli sto metrów kwadratowych +9#59+6/ 3 /8/67 38 Kilometr kwadratowy +9#59+6/ 2- /7 39 Cal kwadratowy (ang. square inch) +9#59+6///8 40 Stopa kwadratowa (ang. square foot) +9#59+6/ +6.7 41 Jard kwadratowy (ang. square yard) +9#59+6/ /7 42 Lądowa mila kwadratowa +9-6/7 43 Akr. Jednostka powierzchni gruntów używana w krajach anglosaskich +9/28+6/7 44 Centar +96/7 45 Ar. Jednostka powierzchni gruntów odpowiadająca 100 metrom kwadratowym +9 /-8+6/7 46 Hektar. Jednostka powierzchni stosowana do pomiarów gruntów +9#59+6/"3.7 47 Pręt kwadratowy (ang. square rod)
Rozdział 1. Wielkolci fizyczne. Procedury przeliczania wielkolci fizycznych. Moduły... 13 32:/68, 32:$ 4/$3/7-6 48 32, /7-6 48 32$332:+, /7-6 48 32$332:$ 4/, /832:$ 4/7, $-32:+ cbdistance predefiniowana zmienna :+6-, 78+2-/ $-32:+ -, 78+2-/ tworzy zbiór predefiniowanych jednostek należących do szerokiego układu jednostek odległości oraz długości. Zbiór aktualnie dostępnych jednostek przedstawia tabela 1.5. Tabela 1.5. Predefiniowane jednostki należące do zbioru cbdistaonce reprezentującego układ jednostek długości oraz odległości (przedrostek du jest skrótem od distance units). Jednostką podstawową w tym zbiorze jest jeden metr (1 m) Literał Liczbowy identyfikator.9-63 -6327 1 Mikromikrometr. W układzie SI jednostka ta nazywana jest pikometrem. Reprezentuje skalę pośrednią pomiędzy wieelkością promienia atomu a promieniem jądra atomowego.9217863 7 2 Angström. Jednostka stosowana głównie w krystalografii do wyrażania odległości międzyatomowych.9-6327 3 Milimikrometr. Jednostka ta w układzie SI nazywana jest nanometrem. Reprezentuje skalę wyrażającą średnie rozemiary cząsteczek.9-6327 4 Mikrometr. Skala odpowiadająca rozmiarom typowej bakterii.9 /8/67 5 Milimetr.9/28 /8/67 6 Centymetr.9/- /8/67 7 Decymetr.9 /8/67 8 Metr. Podstawowa jednostka długości w układzie SI.9/-+ /8/67 9 Dziesięć metrów.9 /-83 /8/67 10 Sto metrów.9 3 /8/67 11 Kilometr.9 /1+ /8/67 12 Odpowiada milionowi metrów.9 1+ /8/67 13 Odpowiada miliardowi metrów.9 2- /7 14 Cal
14 Delphi 6. Nowe narz dzia obliczeniowe Tabela 1.5. Predefiniowane jednostki należące do zbioru cbdistaonce reprezentującego układ jednostek długości oraz odległości (przedrostek du jest skrótem od distance units). Jednostką podstawową w tym zbiorze jest jeden metr (1 m) ciąg dalszy Literał Liczbowy identyfikator.9//8 15 Stopa. Stopa jest całkowitą wielokrotnością cali. Trzy stopy tworzą jeden jard.9 +6.7 16 Jard. Jard może być wielokrotnością stóp lub cali.9 /7 17 Mila lądowa. Anglosaska jednostka miary odległości na lądzie. Tzw. mila statutowa może dzielić się na jardy, stopy elub furolongi (staje).9+98 -+ /7 18 Mila morska. Jednostka miary odległości na morzu. Dzieli się na 10 kabli.9786323 -+ %2 87 19 Jednostka astronomiczna stosowana w obrębie Układu Słonecznego. Odpowiada średniej odległości Ziemi od Słoeńca.9 1 8 /+67 20 Rok świetlny. Odległość, jaką przebywa światło w próżni w ciągu jednego roku zwrotnikowego.9 +67/-7 21 Parsek. Z definicji 1 ps to odległość, z jakiej połowa wielkiej osi orbity ziemskiej (tj. jednostka astronomiczna) jeest widoczna jako łuk o długości 1 sekundy.99, 87 22 Odpowiednik 0,5 jarda.9+8 3 7 23 Sążeń. Jednostka długości oparta na systemie calowym równa rozpiętości rozstawionych ramion dorosłego mężczyznye. Sążeń może być wielokrotnością jardów, stóp lub cali.996 3217 24 Staje. Dawna miara odległości będąca wielokrotnością jardów lub łokci.9 +2.7 25 Piędź. Odpowiednik 4 cali.9 +-/7 26 Krok. Odpowiednik 30 cali lub 2,5 stopy.9"3.7 27 Pręt. Jednostka długości odpowiadająca ok. 5,029 m.9 + 27 28 Łańcuch mierniczy. Jednostka długości odpowiadająca ok. 20,117 m.9 2 7 29 Link. Jednostka długości odpowiadająca 1/100 łańcucha mierniczego.9 -+7 30 Jednostka miary drukarskiej opartej na calu.9 3 287 31 Punkt typograficzny. Jest jednostką miary w poligrafii. Stopień pisma drukarskiego posiada z reguły wielkość 12 punkteów typograficznych 32:/68, 32:$ 4/$3/7-6 48 32, /7-6 48 32$332:+, /7-6 48 32$332:$ 4/, /832:$ 4/7, $32:+
Rozdział 1. Wielkolci fizyczne. Procedury przeliczania wielkolci fizycznych. Moduły... 15 cbmass predefiniowana zmienna :+6-, +77 $32:+ -, +77 tworzy zbiór predefiniowanych jednostek należących do szerokiego układu jednostek masy. Zbiór aktualnie dostępnych jednostek przedstawia tabela 1.6. Tabela 1.6. Predefiniowane jednostki należące do zbioru cbmass reprezentującego układ jednostek masy (przedrostek mu jest skrótem od mass units). Jednostką podstawową w tym zbiorze jest jeden gram (1 g) Literał Liczbowy identyfikator 9+2316+ 7 96 Nanogram 9-6316+ 7 97 Mikrogram 9 16+ 7 98 Miligram 9/28 16+ 7 99 Odpowiednik 0,01 grama 9/- 16+ 7 100 Odpowiednik 0,1 grama 96+ 7 101 Gram 9/-+16+ 7 102 Dekagram 9 /-8316+ 7 103 Odpowiada 100 gramom 9 316+ 7 104 Kilogram. Podstawowa jednostka masy w układzie SI 9 /86 -$327 105 Tona metryczna 96+ 7 106 Drachma. Jednostka masy handlowej równa ok. 1,772 g lub aptekarska jednostka masy stosowana w krajach anglosaskich rówena ok. 3,888 g 96+ 27 107 Grain. Aptekarska jednostka masy stosowana w krajach anglosaskich, równa ok. 0,0648 g 9 321$327 109 Anglosaska jednostka masy, tzw. tona angielska 9$327 108 Tona. Jednostka masy stosowana w technice 992-/7 110 Uncja. Anglosaska jednostka masy 9 392.7 111 Funt. Brytyjska jednostka masy 9#832/7 0 Kamień. Anglosaska jednostka masy równa ok. 6,35 kg 32:/68, 32:$ 4/$3/7-6 48 32, /7-6 48 32$332:+, /7-6 48 32$332:$ 4/, /832:$ 4/7, $32:+, $32:$ 4/
16 Delphi 6. Nowe narz dzia obliczeniowe cbtemperature predefiniowana zmienna :+6-,$/ 4/6+896/ $32:+ -,$/ 4/6+896/ tworzy zbiór predefiniowanych jednostek należących do szerokiego układu jednostek temperatury. Zbiór aktualnie dostępnych jedn ostek przedstawia tabela 1.7. Tabela 1.7. Predefiniowane jednostki należące do zbioru cbtempeorature reprezentującego układ jednostek temperatury (przedrostek tu jest skrótem ood temperature units). Jednostką podstawową w tym zbiorze jest jeden stopień Celsjusza (1 C) Literał Liczbowy identyfikator 89/ 7 97 112 Skala temperatur Celsjusza C. Temperaturę wrzenia wody pod normalnym ciśnieniem określa się jako 100 C, zaś 0 C jeste temperaturą zamarzania wody pod tym samym ciśnienieem 89 / : 2 113 Bezwzględna termodynamiczna skala temperatur Kelvina K. Jednostka temperatury termodynamicznej stanowi 1/273,16 części temperatury punktu potrójnego wody. Temperaturea zera bezwzględnego T = 0 K odpowiada stanowi materii o najneiższej możliwej energii. Przyjmuje się, iż średnia energia kienetyczna ruchu cieplnego molekuł jest wprost proporcjonalna edo tzw. czynnika Boltzmana k B T, gdzie T jest bezwzględną temperaturą. Jednostka temperatury termodynamicznej jest podstawową jednosetką temperatury w układzie SI 89+ 6/2 / 8 114 Skala temperatur Fahrenheita F używana w krajach anglosaskich. Punktem zerowym jest temperatura zamarzania mieszaneiny salamiaku (chlorku amonu) z lodem. Przeliczenia skalie temperatur Celsjusza na Fahrenheita odbywa się zgodnie z zależnoeścią $ $ 89"+2 2/ 115 Skala temperatur Rankine a Rank. Modyfikacja skali Fahrenheita poprzez przesunięcie punktu zerowego do temperaturye zera bezwzględnego 89"/+9 96 116 Obecnie już nie używana skala temperatur Reaumura. W skali Reaumura temperatura topnienia lodu (zamarzania wodye) odpowiada 0 C, zaś wrzenia wody 80 R (100 C), dlatego 1 C odpowiada 0,8 R w skali Reaumura 32:/68, 32:$ 4/$3/7-6 48 32, /7-6 48 32$332:+, /7-6 48 32$332:$ 4/, /832:$ 4/7, $32:+, $32:$ 4/
Rozdział 1. Wielkolci fizyczne. Procedury przeliczania wielkolci fizycznych. Moduły... 17 cbtime predefiniowana zmienna :+6-,$ / $-32:+ -,$ / tworzy zbiór predefiniowanych jednostek należących do szerokiego układu jednostek daty oraz czasu. Zbiór aktualnie dostępnych jednostek przedstawia tabela 1.8. Tabela 1.8. Predefiniowane jednostki należące do zbioru cbtime reprezentującego układ jednostek daty i czasu (przedrostek tu jest skrótem od time units). Jednostką podstawową w tym zbiorze jest jeden dzień (1 d) Literał Liczbowy identyfikator 89 #/-32.7 117 Milisekunda 89#/-32.7 118 Sekunda. Sekunda jest podstawową jednostką odstępu czasu w układzie SI 89 298/7 119 Minuta 89 3967 120 Godzina 89+ 7 121 Dzień 89'// 7 122 Tydzień. Kalendarzowa jednostka rachuby czasu składająca się z 7 dni. W USA jako pierwszy dzień tygodnia traktowana jest niedziela. Zgodnie ze standardem ISO 8601 pierwszyme dniem tygodnia jest poniedziałek 893682 1 87 123 Dwa tygodnie 89 328 7 124 Miesiąc. Kalendarzowa jednostka rachuby czasu związana z cyklem faz Księżyca. Miesiąc może liczyć od 28 do 31 deni 89 /+67 125 Rok. Jednostka rachuby czasu związana z okresem obiegu Ziemi wokół Słońca 89/-+./7 126 Dekada. Dekada liczy 10 lat 89/2896 /7 127 Wiek. Okres trwający 100 lat (stulecie) 89 /22 + 128 Milenium. Okres trwający 1 000 lat 89+8/$ / 129 Jeden dzień 89 9 +2+8/ 130 Data związana z kalendarzem juliańskim obowiązującym od 46 roku p.n.e. do roku 1582 89 3. 0 /. 9 +2+8/ 131 Modyfikacja daty związanej z kalendarzem juliańskim 32:/68, 32:$ 4/$3/7-6 48 32, /7-6 48 32$332:+, /7-6 48 32$332:$ 4/, /832:$ 4/7, $32:+, $32:$ 4/
18 Delphi 6. Nowe narz dzia obliczeniowe cbvolume predefiniowana zmienna :+6-,&3 9 / $32:+ -,&3 9 / tworzy zbiór predefiniowanych jednostek należących do szerokiego układu jednostek objętości. Zbiór aktualnie dostępnych jednostek przeliczeniowych przedstawia tabela 1.9. Tabela 1.9. Predefiniowane jednostki należące do zbioru cbvolumoe reprezentującego układ jednostek objętości (przedrostek vu jest skrótem od volume unitos). Jednostką podstawową w tym zbiorze jest jeden metr sześcienny (1 m 3 ) Literał Liczbowy identyfikator :99, - /8/67 48 Milimetry sześcienne :99, -/28 /8/67 49 Centymetry sześcienne :99, -/- /8/67 50 Decymetry sześcienne :99, - /8/67 51 Metry sześcienne :99, -/-+ /8/67 52 Tysiąc metrów sześciennych :99, - /-83 /8/67 53 Milion metrów sześciennych :99, - 3 /8/67 54 Kilometr sześcienny :99, - 2- /7 55 Cal sześcienny :99, -//8 56 Stopa sześcienna :99, - +6.7 57 Jard sześcienny :99, - /7 58 Mila sześcienna :9 8/67 59 Mililitr :9/28 8/67 60 1/100 część litra :9/- 8/67 61 1/10 część litra :9 8/67 62 Litr. Jednostka objętości stosowana jako miara ilości płynu (cieczy) lub ciał sypkich :9/-+ 8/67 63 Dziesięć litrów :9 /-83 8/67 64 Sto litrów :9 3 8/67 65 Tysiąc litrów kilolitr :9-6///8 66 Acre foot. Jednostka objętości stosowana w melioracji. Określa objętość cieczy w warstwie o grubości jednej stopy ie powierzchni jednego akra
Rozdział 1. Wielkolci fizyczne. Procedury przeliczania wielkolci fizycznych. Moduły... 19 Tabela 1.9. Predefiniowane jednostki należące do zbioru cbvolumoe reprezentującego układ jednostek objętości (przedrostek vu jest skrótem od volume unitos). Jednostką podstawową w tym zbiorze jest jeden metr sześcienny (1 m 3 ) ciąg dalszy Literał Liczbowy identyfikator :9-6/ 2- /7 67 Acre inch. Jednostka objętości stosowana w melioracji. Określa objętość cieczy w warstwie o grubości jednego ecala i powierzchni jednego akra :936.7 68 Cord. Anglosaska jednostka objętości odpowiadająca 128 stopom sześciennym :936.//8 69 Jednostka objętości odpowiadająca 453,06 litrom, tj. ok. 6,25 tony rejestrowej :9/- 78/6/7 70 Decystere. Jednostka objętości ciał płynnych odpowiadająca stu litrom :9#8/6/7 71 Stere. Jednostka objętości ciał płynnych odpowiadająca metrowi sześciennemu :9/-+78/6/7 72 Decastere. Jednostka objętości ciał płynnych odpowiadająca dziesięciu tysiącom litrów :9 9.+ 327 73 Galon (U.S. gal). Jednostka objętości cieczy używana w USA :9 9.!9+687 74 Kwarta (U.S. fl qt), (U.S. liq qt). Jednostka objętości cieczy używana w USA :9 9. 287 75 Pinta (U.S. fl pt), (U.S. liq pt). Jednostka objętości cieczy używana w USA. Odpowiada objętości ok. 0,473 litra :9 9.947 76 Miska lub miseczka jako kulinarna jednostka objętości cieczy :9 9. 7 77 Gill (U.S. fl gi), (U.S. liq gi). Jednostka objętości cieczy równa 0,125 amerykańskiej kwarty, czyli połowie ćwiartkie kwarty :9 9.92-/7 78 Uncja (U.S. fl oz). Amerykańska jednostka objętości cieczy :9 9.$+, /743327 79 Łyżka stołowa jako jednostka objętości cieczy. Miara wprowadzona w celu zachowania norm kulinarnyceh :9 9.$/+743327 80 Mała łyżka stołowa jako jednostka objętości cieczy. Miara wprowadzona w celu zachowania norm kulinarnyceh :96 + 327 81 Galon (U.S. dry gal). Jednostka objętości ciał sypkich używana w krajach anglosaskich :96!9+687 82 Kwarta (U.S. dry qt). Jednostka objętości ciał sypkich używana w krajach anglosaskich :96 287 83 Pinta (U.S. dry pt). Jednostka objętości (1/8 galona) ciał sypkich używana w krajach anglosaskich :96 /- 7 84 Amerykańska jednostka objętości ciał sypkich używana w krajach anglosaskich. Odpowiada ok. 8,81 litra
20 Delphi 6. Nowe narz dzia obliczeniowe Tabela 1.9. Predefiniowane jednostki należące do zbioru cbvolumoe reprezentującego układ jednostek objętości (przedrostek vu jest skrótem od volume unitos). Jednostką podstawową w tym zbiorze jest jeden metr sześcienny (1 m 3 ) ciąg dalszy Literał Liczbowy identyfikator :96 9- /87 85 Bucket. Czerpak lub wiadro (urządzenia załadowcze stosowane w koparkach ziemnych). Jednostka objętości eciał sypkich używana w krajach anglosaskich. Odpowiada obejętości znormalizowanego wiadra, ok. 17,6 litra :96 97 / 7 86 Buszel (U.S. bu) jako jednostka objętości ciał sypkich :9% + 327 87 Imperialny brytyjski galon (U.K. gal) :9% 388 /7 88 Imperialny brytyjski garniec :9%!9+687 89 Imperialna brytyjska kwarta (U.K. qt) :9% 287 90 Imperialna brytyjska pinta (U.K. pt). Odpowiada objętości ok. 0,568 litra :9% 7 91 Imperialna brytyjska ćwierć kwarty (U.K. gi) :9% 92-/7 92 Imperialna brytyjska uncja (U.K. oz) :9% /- 7 93 Imperialna brytyjska jednostka objętości odpowiadająca ok. 9,092 litra :9% 9- /87 94 Imperialna brytyjska jednostka objętości. Odpowiada objętości znormalizowanego wiadra, ok. 18,1 litra :9% 97 / 7 95 Imperialny brytyjski buszel (U.K. bu) 32:/68, 32:$ 4/$3/7-6 48 32, /7-6 48 32$332:+, /7-6 48 32$332:$ 4/, /832:$ 4/7, $32:+, $32:$ 4/ CelsiusToFahrenheit() funkcja 092-8 32/ 7 97$3+ 6/2 / 8-3278&+ 9/ 39, / 39, / Funkcja umożliwia przeliczenie temperatury wyrażonej w skali Celsjusza i reprezentowanej przez parametr &+ 9/ na temperaturę wyrażoną w skali Fahrenheita. 32:/68, + 6/2 / 8$3/ 7 97
Rozdział 1. Wielkolci fizyczne. Procedury przeliczania wielkolci fizycznych. Moduły... 21 CompatibleConversionType() funkcja 092-8 323 4+8, /32:/67 32$ 4/ -3278$ 4/ $32:$ 4/ -3278 + $32:+ 33 /+2 Funkcja sprawdza, czy wyspecyfikowany typ jednostki zarejestrowany jest w układzie określonych jednostek. 3 4+8, /32:/67 32$ 4/ w wyniku działania zwraca wartość prawdziwą ($69/), jeżeli stała $ 4/ reprezentuje element zbioru określonego przez +. W przeciwnym wypadku funkcja zwraca fałsz (+ 7/). Przykład Poniższy przykład przedstawia główny moduł projektu Kody\Rozdzial1\Compatible ConversionType\p_CompatibleConversionType.dpr. Określenie prawidłowości wyboru danego typu literału dokonane zostało w oparciu o ich liczbowe identyfikatory oraz odpowiednie rzutowanie na typy $32:$ 4/ oraz $32:+. 92 8%2 8)3 4+8, /32:/67 32$ 4/ 28/60+-/ 97/7 ' 2.3;7Г /77+1/7Г# 7%8 7Г&+6 +287Г +77/7Г 6+4-7Г32863 7Г36 7Г + 317Г#8.86 7Г32:%8 7Г#8.32:7 8 4/ $36 - +77 $36 783 $ 783 783 $ 783 98832 $98832 463-/.96/36 6/+8/ #/2./6 $, /-8 463-/.96/98832 - #/2./6 $, /-8 46 :+8/ 6 :+8/./- +6+8 327 49, - 9, -./- +6+8 327 :+6 36 $36 4 / /28+8 32 ".0 463-/.96/$36 36 6/+8/ #/2./6 $, /-8 783 8/ 2./ 783 8/ 7 89/ 7 97
22 Delphi 6. Nowe narz dzia obliczeniowe 783 8/ 7 89 / : 2 783 8/ 7 89+ 6/2 / 8 783 8/ 7 89"+2 2/ 783 8/ 7 89"/+9 96 783 8/ 2./ 783 8/ 7 -, 78+2-/ 783 8/ 7 -,6/+ 783 8/ 7 -,&3 9 / 783 8/ 7 -, +77 783 8/ 7 -,$/ 4/6+896/ 783 8/ 7 -,$ / 463-/.96/$36 98832 - #/2./6 $, /-8 0 3 4+8, /32:/67 32$ 4/ $32:$ 4/ 783 8/ 2./ Г $32:+ 783 8/ 2./ 8 /2 # 3; /77+1/ 36 +8 777 Г 783 8/ 7 783 8/ 2./ Г 2+ /.39 o+.9 /.2378/ Г 783 8/ 7 783 8/ 2./ / 7/ # 3; /77+1/ 36 +8 777 Г 783 8/ 7 783 8/ 2./ Г 2 /2+ /.39 o+.9 /.2378/ Г 783 8/ 7 783 8/ 2./ /2. 32:/68, 32:$ 4/$3+, "/1 78/632:/67 32$ 4/, $6 32:$ 4/$3+, $32:+, $32:$ 4/ CompatibleConversionTypes() funkcja 092-8 323 4+8, /32:/67 32$ 4/7-327863 Г$3 $32:$ 4/ 33 /+2 Użycie 3 4+8, /32:/67 32$ 4/7 określa, czy funkcja 32:/68 może dokonać przeliczenia dwóch wielkości wyrażonych w wybranych jednostkach. 3 4+8, / 32:/67 32$ 4/7 zwraca prawdę jeżeli 63 oraz $3 należą do tego samego układu jednostek. Funkcji używamy wówczas, jeżeli chcemy mieć pewność, że w trakcie działania aplikacja nie podejmie próby przeliczenia np. długości ciała na jego masę czy temperatury ciała na jego objętość.
Rozdział 1. Wielkolci fizyczne. Procedury przeliczania wielkolci fizycznych. Moduły... 23 32:/68, 3 4+8, /32:/67 32$ 4/7, 32:$ 4/$3+, "/1 78/632:/67 32$ 4/, $6 32:$ 4/$3+,$32:+, $32:$ 4/ Convert() funkcja 092-8 3232:/68-3278&+ 9/ 39, / -327863 Г$3 $32 :$ 4/ 39, / 3:/6 3+. 092-8 3232:/68-3278&+ 9/ 39, / -327863 Г63 Г $3Г $3 $32:$ 4/ 39, / 3:/6 3+. Funkcja 32:/68 dokonuje przeliczenia wielkości wyrażanych poprzez dwie różne jednostki. Parametr &+ 9/ jest wartością, którą chcemy przeliczyć. W pierwszej postaci funkcji parametr 63 określa bieżący układ jednostek. Funkcja 32:/68 poprzez parametr $3 zwraca przeliczoną wartość &+ 9/. Używając drugiej postaci funkcji można dokonać bardziej skomplikowanej konwersji danych. Parametry 63 oraz 63 określają aktualne jednostki, w których wyrażone są wartości &+ 9/, gdzie &+ 9/ posiada wymiar [63 63 ], np. [ 1+ ]. Funkcja zwraca wartość &+ 9/ przeliczoną na wymiar [$3$3], np. [ ]. Jeżeli pojazd zużywa ilość paliwa &+ 9/ podaną w galonach na mile, my zaś chcemy przeliczyć to na wielkość zużycia wyrażoną w litrach na kilometr, wówczas wystarczy napisać. 32:/68 &+ 9/Г.9 /7Г:9+ 327Г.9 3 /8/67Г:9 8/67 Bł dy 63 i $3, 63 i $3 oraz 63 i $3muszą należeć do tych samych układów jednostek. Określenia zgodności wybranych jednostek można dokonać poprzez wywołanie funkcji 3 4+8, /32:/67 32$ 4/7. Jeżeli jednostki nie należą do tego samego układu jednostek, funkcja 32:/68 generuje wyjątek 32:/67 326636. Przykład Poniższy przykład przedstawia aplikację reprezentowaną przez projekt znajdujący się na dołączonej do książki płycie CD-ROM w katalogu Kody\Rozdzial1\Convert\p_ Convert.dpr, dzięki której można dokonać wzajemnej konwersji wielkości opisujących długość lub odległość oraz pole powierzchni. W przykładzie tym nie zastosowano funkcji 3 4+8, /32:/67 32$ 4/7 oraz 3 4+8, /32:/67 32$ 4/ do określenia zgodności typów podanych jednostek. Zamiast wykorzystania tych funkcji zastosowano nowoczesne komponenty biznesowe będące reprezentantami klasy $6+ /. Posługiwanie się tego typu komponentami w znacznym stopniu upraszcza budowę aplikacji oraz minimalizuje prawdopodobieństwo popełnienia błędu przez programistę. Wzajemne przeliczanie jednostek długości (odległości) dokonywane jest w module cbdistance.pas (komponent
24 Delphi 6. Nowe narz dzia obliczeniowe 6+ /), zaś jednostek, w których wyrażane jest pole powierzchni w module cbarea.pas (komponent 6+ /). Rozróżnianie odpowiednich jednostek następuje dzięki przypisaniu odpowiadających im indeksów (liczbowych identy fikatorów). 92 8-, 78+2-/ 28/60+-/ 97/7 ' 2.3;7Г /77+1/7Г# 7%8 7Г +77/7Г 6+4-7Г32863 7Г36 7Г + 317Г #8.86 7Г32:%8 7Г#8.32:7Г 886 7 8 4/ $6+ / - +77 $6+ / "+. 36394 $"+. 36394 "+. 36394 $"+. 36394. 8 $. 8. 8 $. 8 98832 $98832 463-/.96/98832 - #/2./6 $, /-8 46 :+8/ 6 :+8/./- +6+8 327 092-8 3232:/68$3#86 21 786 21 49, - 9, -./- +6+8 327 :+6 32:/6863 Г32:/68$3 28 4 / /28+8 32 ".0 092-8 32$6+ /32:/68$3#86 21 786 21 "/79 8 36 +8 17 Г 32:/68,7 #86$3 3+8. 8$/ 8 Г $32:$ 4/ 32:/6863 Г $32:$ 4/ 32:/68$3 Г 463-/.96/$6+ /98832 - #/2./6 $, /-8 32:/6863 "+. 36394 8/ 2./ 32:/68$3 "+. 36394 8/ 2./. 8$/ 8 32:/68$3#86 21 /2. 92 8-,6/+ 28/60+-/ 97/7 ' 2.3;7Г /77+1/7Г# 7%8 7Г +77/7Г6+4-7Г 32863 7Г36 7Г + 317Г#8.86 7Г 886 7Г 32:%8 7Г#8.32:7 8 4/
Rozdział 1. Wielkolci fizyczne. Procedury przeliczania wielkolci fizycznych. Moduły... 25 $6+ / - +77 $6+ / "+. 36394 $"+. 36394 "+. 36394 $"+. 36394 98832 $98832. 8 $. 8. 8 $. 8 463-/.96/98832 - #/2./6 $, /-8 46 :+8/ 6 :+8/./- +6+8 327 092-8 3232:/68$3#86 21 786 21 49, - 9, -./- +6+8 327 :+6 32:/6863 Г32:/68$3 28 4 / /28+8 32 ".0 092-8 32$6+ /32:/68$3#86 21 786 21 "/79 8 36 +8 17 Г 32:/68,7 #86$3 3+8. 8$/ 8 Г $32:$ 4/ 32:/6863 Г $32:$ 4/ 32:/68$3 Г 463-/.96/$6+ /98832 - #/2./6 $, /-8 32:/6863 "+. 36394 8/ 2./ 32:/68$3 "+. 36394 8/ 2./. 8$/ 8 32:/68$3#86 21 /2. 1o ;2 3.9o463 / 894)32:/68.46 92 8%2 8)32:/68 28/60+-/ 97/7 ' 2.3;7Г /77+1/7Г# 7%8 7Г&+6 +287Г +77/7Г6+4-7Г32863 7Г36 7Г + 317Г-,6/+Г /297Г-, 78+2-/ 8 4/ $36 - +77 $36 6+ / $6+ / + 2 /29 $ + 2 /29 / $ /29 8/ 8 $ /29 8/ 6+ / $6+ / % 6 $ /29 8/ -,6/+./ $ /29 8/ -, 78+2-/./ $ /29 8/ $ /29 8/ -,6/+# 3; $ /29 8/ -, 78+2-/# 3; $ /29 8/ 463-/.96/ 8 - #/2./6 $, /-8 463-/.96/-,6/+# 3; - #/2./6 $, /-8 463-/.96/-, 78+2-/# 3; - #/2./6 $, /-8
26 Delphi 6. Nowe narz dzia obliczeniowe 463-/.96/-,6/+./ - #/2./6 $, /-8 463-/.96/-, 78+2-/./ - #/2./6 $, /-8 463-/.96/36 6/+8/ #/2./6 $, /-8 463-/.96/6+ /98832 - #/2./6 $, /-8 46 :+8/ 6 :+8/./- +6+8 327 49, - 9, -./- +6+8 327 :+6 36 $36 4 / /28+8 32 ".0 463-/.96/$36 36 6/+8/ #/2./6 $, /-8 6+ /"+. 36394 8/ 2./ 6+ /"+. 36394 8/ 2./ 6+ /"+. 36394 8/ 2./ 6+ /"+. 36394 8/ 2./ 6+ /6+1 3./. 983 +8-6+ /6+1 2.. 3-6+ /6+1 3./. 983 +8-6+ /6+1 2.. 3-463-/.96/$36 8 - #/2./6 $, /-8 44 -+8 32$/6 2+8/ 463-/.96/$36 -,6/+# 3; - #/2./6 $, /-8 6+ /# 3; 463-/.96/$36 -, 78+2-/# 3; - #/2./6 $, /-8 6+ /# 3; 463-/.96/$36 -,6/+./ - #/2./6 $, /-8 6+ /./ 463-/.96/$36 -, 78+2-/./ - #/2./6 $, /-8 6+ /./ 463-/.96/$36 6+ /98832 - #/2./6 $, /-8 6+ /98832 - #/2./6 /2.
Rozdział 1. Wielkolci fizyczne. Procedury przeliczania wielkolci fizycznych. Moduły... 27 Alternatywny sposób rozwiązania przedstawionego zagadnienia można znaleźć w plikach pomocy Delphi 6. 3 4+8, /32:/67 32$ 4/7, 3 4+8, /32:/67 32$ 4/7, 32:/6863, 32:/68$3, 32:$ 4/$3+, "/1 78/632:/67 32$ 4/, $6 32:$ 4/$3+, $32:+, $32:$ 4/ ConvertFrom() funkcja 092-8 3232:/6863-327863 $32:$ 4/ -3278&+ 9/ 39, / 39, / Funkcja 32:/6863 przelicza wartość reprezentowaną przez &+ 9/ do wartości reprezentowanej w jednostkach układu 63. Parametr &+ 9/ przyjmowany jest jako jednostka podstawowa zbioru wielkości (np. dla -, 78+2-/ jest to 1 m). Jeżeli parametr 63 określa jedynie nazwę układu jednostek, przeliczenie zostanie wykonane w taki sposób, iż parametrowi &+ 9/ zostanie przypisana pierwsza jednostka występująca w tym zbiorze. Jeżeli 63 jawnie określa typ jednostki należącej do danego układu jednostek, przeliczenie zostanie wykonane zgodnie z podanym typem jednostki. W przypadku, gdy 63 nie jest zarejestrowanym typem jednostki, 32:/6863 generuje wyjątek 32:/67 326636. Przykład 463-/.96/$36 98832 - #/2./6 $, /-8. 8$/ 8 3+8$3#86 32:/6863.9/- /8/67Г #86$3 3+8. 8$/ 8. 8$/ 8 3+8$3#86 32:/6863 -, 78+2-/Г #86$3 3+8. 8$/ 8 32:/68, 32:/68$3, "/1 78/632:/67 32$ 4/, $32:+ ConvertTo() funkcja 092-8 3232:/68$3-3278&+ 9/ 39, / -3278$3 $32:$ 4/ 39, /
28 Delphi 6. Nowe narz dzia obliczeniowe Funkcja 32:/68$3 przelicza wartość reprezentowaną przez &+ 9/ do wartości reprezentowanej przez wielkość wyrażoną w jednostkach $3. Parametr &+ 9/ przyjmowany jest jako jednostka podstawowa układu jednostek (np. dla -, 78+2-/ jest to 1 m). Jeżeli parametr $3 określa jedynie nazwę zbioru jednostek, parametr &+ 9/ zostanie potraktowany jako najmniejsza jednostka danego zbioru, zaś przeliczenie wartości nastąpi do jednostki podstawowej układu jednostek. Jeżeli $3 jawnie określa konkretną jednostkę należącą do danego zbioru, przeliczenie zostanie wykonane zgodnie z podaną wartością. W przypadku, gdy $3 nie jest zarejestrowanym typem jednostki, 32:/68$3 generuje wyjątek 32:/67 326636. Przykład 463-/.96/$36 98832 - #/2./6 $, /-8. 8$/ 8 3+8$3#86 32:/68$3 #86$3 3+8. 8$/ 8 Г.9/- /8/67. 8$/ 8 3+8$3#86 32:/68$3 #86$3 3+8. 8$/ 8 Г -, 78+2-/ 32:/68, 32:/6863, "/1 78/632:/67 32$ 4/, $32:+ ConvFamilyToDescription() funkcja 092-8 3232:+ $3/7-6 48 32-3278+ $32:+ 786 21 Funkcja zwraca łańcuch znaków reprezentujący pełną naz wę (bez przedrostka) układu predefiniowanych jednostek, którego elementy podlegają przeliczaniu. Jeżeli + reprezentuje nazwę pojedynczej jednostki należącej do danego zbioru (np. 89+ 6/2 / 8), funkcja zwraca odpowiadający jej numer w postaci hek sadecymalnej. Przykład 463-/.96/$36 98832 - #/2./6 $, /-8. 8$/ 8 32:+ $3/7-6 48 32 -, +77 32:$ 4/$3/7-6 48 32, /7-6 48 32$332:+, "/1 78/632:/67 32+
Rozdział 1. Wielkolci fizyczne. Procedury przeliczania wielkolci fizycznych. Moduły... 29 ConvTypeToDescription() funkcja 092-8 3232:$ 4/$3/7-6 48 32-3278$ 4/ $32:$ 4/ 786 21 Funkcja zwraca łańcuch znaków reprezentujący pełną nazwę (bez przedrostka) określonej jednostki. Wyszczególniona jednostka musi być elementem zarejestrowanego układu jednostek. Przykład 463-/.96/$36 98832 - #/2./6 $, /-8. 8$/ 8 32:$ 4/$3/7-6 48 32 89+ 6/2 / 8 32:+ $3/7-6 48 32, 32:$ 4/$3+, 32:%2 8$3#86, /7-6 48 32$332:$ 4/, "/1 78/632:/67 32$ 4/ ConvTypeToFamily() funkcja 092-8 3232:$ 4/$3+ -3278$ 4/ $32:$ 4/ $32:+ 3:/6 3+. 092-8 3232:$ 4/$3+ -327863 Г$3 $32:$ 4/ $3 2:+ 3:/6 3+. Funkcja 32:$ 4/$3+ zwraca identyfikator układu jednostek, którego elementy podlegają przeliczaniu. Parametr $ 4/ jest zarejestrowanym typem jednostki. Jeżeli istnieje potrzeba sprawdzenia, czy dwie jednostki należą do tego samego układu, należy skorzystać z drugiej postaci funkcji. Jeżeli parametr $ 4/ nie jest zarejestrowany lub 63 oraz $3 nie są zarejestrowane w tym samym układzie jednostek, funkcja 32:$ 4/$3 + generuje wyjątek 32:/67 326636. Przykład 463-/.96/$36 98832 - #/2./6 $, /-8. 8$/ 8 &+6$3#86 32:$ 4/$3+ :99, -//8. 8$/ 8 &+6$3#86 32:$ 4/$3+ :99, - +6.7Г89"+2 2/
30 Delphi 6. Nowe narz dzia obliczeniowe 3 4+8, /32:/67 32$ 4/, 32:$ 4/$3/7-6 48 32, /7-6 48 32$332:+, "/1 78/632:/67 32$ 4/, $6 32:$ 4/$3+ ConvUnitAdd() funkcja 092-8 3232:%2 8.. -3278&+ 9/ 39, / -3278$ 4/ $32:$ 4/ -3278&+ 9/ 39, / -3278$ 4/Г "/79 8$ 4/ $32:$ 4/ 39, / Funkcja 32:%2 8.. dodaje dwie wartości &+ 9/ oraz &+ 9/. Parametry $ 4/ oraz $ 4/ reprezentują czynniki przeliczeniowe należące do układu jednostek, w których wyrażone są odpowiednio wartości &+ 9/ oraz &+ 9/. "/79 8$ 4/ jest jednostką, w której chcemy otrzymać wynik. Trzeba zwrócić uwagę na to, iż korzystając z przedstawionej funkcji należy rozsądnie wybierać czynniki przeliczeniowe wielkości, które mają być dodane (np. nie można otrzymać sensownego wyniku z dodania 1 litra do 1 kilograma), oraz jednostkę, w której chcemy otrzymać wynik. Funkcja ta nie działa poprawnie przy próbie dodania do siebie dwóch wielkości posiadających identyczne czynniki przeliczeniowe (jednostki). Wyjątkiem są podstawowe jednostki danego zbioru wielkości, np. metr, stopień Kelvina, itp. Dokładniej z tym zagadnieniem Czytelnik może zapoznać się testując projekt Kody\Rozdzial1\ConvUniAdd\p_ConvUniAdd.dpr, którego główny moduł został przedstawiony w poniższym przykład zie. Przykład 3.+2 /.; - 6 2 - ; / 3-6/46/ /289 - - 6 2/7 + /8/ 4/6+896 92 8%2 8)32:%2 8.. 28/60+-/ 97/7 ' 2.3;7Г /77+1/7Г# 7%8 7Г&+6 +287Г +77/7Г 6+4-7Г32863 7Г36 7Г + 317Г#8.86 7Г32:%8 7Г#8.32:7 8 4/ $36 - +77 $36 783 $ 783 783 $ 783 98832 $98832. 8 $. 8. 8 $. 8. 8 $. 8 783 $ 783 +,/ $ +,/ +,/ $ +,/
Rozdział 1. Wielkolci fizyczne. Procedury przeliczania wielkolci fizycznych. Moduły... 31 +,/ $ +,/ 463-/.96/36 6/+8/ #/2./6 $, /-8 463-/.96/98832 - #/2./6 $, /-8 46 :+8/ 6 :+8/./- +6+8 327 49, - 9, -./- +6+8 327 :+6 36 $36 4 / /28+8 32 ".0 463-/.96/$36 36 6/+8/ #/2./6 $, /-8 783 8/ 2./ 783 8/ 7 / 7 97 783 8/ 7 / : 2 783 8/ 7 + 6/2 / 8 783 8/ 7 "+2 2/ 783 8/ 7 "/+ 96 783 8/ 2./ 783 8/ 7 / 7 97 783 8/ 7 / : 2 783 8/ 7 + 6/2 / 8 783 8/ 7 "+2 2/ 783 8/ 7 "/+ 96 783 8/ 2./ 783 8/ 7 / 7 97 783 8/ 7 / : 2 783 8/ 7 + 6/2 / 8 783 8/ 7 "+2 2/ 783 8/ 7 "/+ 96 463-/.96/$36 98832 - #/2./6 $, /-8. 8$/ 8 3+8$3#86 32:%2 8.. #86$3 3+8. 8$/ 8 Г $32:$ 4/ 783 8/ 2./ Г#86$3 3+8. 8$/ 8 Г $32:$ 4/ 783 8/ 2./ Г $32:$ 4/ 783 8/ 2./ /2. 32:%2 8/-, 32:%2 8 00, 32:%2 8 2-
32 Delphi 6. Nowe narz dzia obliczeniowe ConvUnitCompareValue() funkcja 092-8 3232:%2 83 4+6/&+ 9/ -3278&+ 9/ 39, / -3278$ 4/ $32:$ 4/ -3278&+ 9/ 39, / -3278 $ 4/ $32:$ 4/ $&+ 9/"/ +8 327 4 Funkcja 32:%2 83 4+6/&+ 9/ porównuje dwie wartości ze względu na ich aktualne jednostki. Testowane wartości muszą reprezentować wyniki pomiarów tych samych wielkości należących do tego samego układu jednostek. &+ 9/ oraz &+ 9/ są wartościami, które poddawane są operacji porównania. $ 4/ oraz $ 4/ są jednostkami odpowiednio dla &+ 9/ oraz &+ 9/. Funkcja 32:%2 83 4+6/&+ 9/ zwraca wartość: /77$ +2&+ 9/ ( ) jeżeli &+ 9/ jest mniejsze niż &+ 9/; 59+ 7&+ 9/ () jeżeli &+ 9/ jest równe &+ 9/; 6/+8/6$ +2&+ 9/ () jeżeli &+ 9/ jest większe niż &+ 9/. Jeżeli zechcemy jawnie korzystać z przedstawionych predefiniowanych stałych, w deklaracji 97/7 głównego modułu aplikacji należy włączyć moduł $ 4/7. Przykład Aplikacja projektu Kody\Rozdzial1\ConvUnitComparevalue\p_ConvUnitComparmevalue.dpr przedstawia jeden ze sposobów porównania długości mier zonego czasu. 92 8%2 8)32:%2 83 4+6/:+ 9/ 28/60+-/ 97/7 ' 2.3;7Г /77+1/7Г# 7%8 7Г&+6 +287Г +77/7Г 6+4-7Г32863 7Г36 7Г$ 4/7Г + 317Г#8.86 7Г32:%8 7Г#8.32:7 8 4/ $36 - +77 $36 783 $ 783 783 $ 783 98832 $98832. 8 $. 8. 8 $. 8 463-/.96/36 6/+8/ #/2./6 $, /-8 463-/.96/98832 - #/2./6 $, /-8 46 :+8/ 6 :+8/./- +6+8 327 49, - 9, -./- +6+8 327
Rozdział 1. Wielkolci fizyczne. Procedury przeliczania wielkolci fizycznych. Moduły... 33 :+6 36 $36 4 / /28+8 32 ".0 463-/.96/$36 36 6/+8/ #/2./6 $, /-8 783 8/ 2./ 783 8/ 7 #/-32.7 783 8/ 7 #/-32.7 783 8/ 7 298/7 783 8/ 7 3967 783 8/ 7 + 7 783 8/ 7 '// 7 783 8/ 7 3682 1 87 783 8/ 7 328 7 783 8/ 2./ 783 8/ 7 #/-32.7 783 8/ 7 #/-32.7 783 8/ 7 298/7 783 8/ 7 3967 783 8/ 7 + 7 783 8/ 7 '// 7 783 8/ 7 3682 1 87 783 8/ 7 328 7 463-/.96/$36 98832 - #/2./6 $, /-8 -+7/ 32:%2 83 4+6/&+ 9/,7 #86$3 3+8. 8$/ 8 Г $32:$ 4/ 783 8/ 2./ Г,7 #86$3 3+8. 8$/ 8 Г $32:+ 783 8/ 2./ 30 /77$ +2&+ 9/ # 3; /77+1/ 36 +8 17717 Г,7 #86$3 3+8. 8$/ 8 Г 783 8/ 7 783 8/ 2./ Г +;+683 2 / 7 2 Г,7 #86$3 3+8. 8$/ 8 Г 783 8/ 7 783 8/ 2./ 59+ 7&+ 9/ # 3; /77+1/ 36 +8 17717 Г,7 #86$3 3+8. 8$/ 8 Г 783 8/ 7 783 8/ 2./ Г /786 ;2/ Г,7 #86$3 3+8. 8$/ 8 Г 783 8/ 7 783 8/ 2./ 6/+8/6$ +2&+ 9/ # 3; /77+1/ 36 +8 17717 Г,7 #86$3 3+8. 8$/ 8 Г 783 8/ 7 783 8/ 2./ Г +;+683 ; 7 2 Г
34 Delphi 6. Nowe narz dzia obliczeniowe,7 #86$3 3+8. 8$/ 8 Г 783 8/ 7 783 8/ 2./ /2. 3 4+6/&+ 9/, 32:%2 8#+ /&+ 9/, $&+ 9/"/ +8 327 4 ConvUnitDec() funkcja 092-8 3232:%2 8/- -3278&+ 9/ 39, / -3278$ 4/ $32:$ 4/ -3278 3928 39, / -3278 3928$ 4/ $32:$ 4/ 39, / 3:/6 3+. 092-8 3232:%2 8/- -3278&+ 9/ 39, / -3278$ 4/Г 3928$ 4/ $32:$ 4/ 39, / 3:/6 3+. Funkcja 32:%2 8/- zmniejsza wartość wyspecyfikowanej wielkości o zadaną liczbę. Parametry &+ 9/ oraz $ 4/ są odpowiednio oryginalną wyjściową wartością wielkości oraz jej jednostką. 3928jest wartością, którą odejmujemy od wartości wyjściowej. W przypadku, gdy nie została ona ustalona domyślnie pr zyjmuje się 1. 3928$ 4/ jest typem jednostki, w której wyrażany jest paramet r 3928. Przykład Poniższy fragment kodu obrazuje prosty sposób manipulac ji czasem. 463-/.96/$36 36 6/+8/ #/2./6 $, /-8 783 8/ 2./ 783 8/ 7 298/7 783 8/ 7 3967 783 8/ 7 + 7 783 8/ 7 '// 7 783 8/ 7 3682 1 87 783 8/ 7 328 7 783 8/ 7 /+67 783 8/ 7 /-+./7 783 8/ 7 /2896 /7 783 8/ 7 /22 + 783 8/ 7 +8/$ / 783 8/ 2./ 783 8/ 7 298/7 783 8/ 7 3967
Rozdział 1. Wielkolci fizyczne. Procedury przeliczania wielkolci fizycznych. Moduły... 35 783 8/ 7 + 7 783 8/ 7 '// 7 783 8/ 7 3682 1 87 783 8/ 7 328 7 783 8/ 7 /+67 783 8/ 7 /-+./7 783 8/ 7 /2896 /7 783 8/ 7 /22 + 783 8/ 7 +8/$ / 463-/.96/$36 #4 2. 8 +21/ #/2./6 $, /-8. 8$/ 8 3+8$3#86 32:%2 8/-,7 #86$3 3+8. 8$/ 8 Г $32:$ 4/ 783 8/ 2./ Г #4 2. 8&+ 9/Г $32:+ 783 8/ 2./ 32:%2 8.., 32:%2 8 00, 32:%2 8 2- ConvUnitDiff() funkcja 092-8 3232:%2 8 00-3278&+ 9/ 39, / -3278$ 4/ $32:$ 4/ -3278&+ 9/ 39, / -3278$ 4/Г "/79 8$ 4/ $32:$ 4/ 39, / Funkcja 32:%2 8 00 wylicza różnicę pomiędzy dwiema wartościami. &+ 9/ oraz $ 4/ są odpowiednio wartością wyjściową oraz jej jednostką, zaś &+ 9/ jest wartością, którą odejmujemy od parametru wyjściowego. $ 4/ jest aktualną jednostką, w której wyrażamy &+ 9/. "/79 8$ 4/ jest jednostką, w której chcemy otrzymać wynik operacji odejmowania dwóch wartości. Przykład Kolejny przykład manipulacji przedziałami czasu. 463-/.96/$36 #4 2. 8 +21/ #/2./6 $, /-8. 8$/ 8 3+8$3#86 32:%2 8 00,7 #86$3 3+8. 8$/ 8 Г $32:$ 4/ 783 8/ 2./ Г #4 2. 8&+ 9/Г $32:+ 783 8/ 2./ Г $32:+ 783 8/ 2./
36 Delphi 6. Nowe narz dzia obliczeniowe 32:%2 8.., 32:%2 8/-, 32:%2 8 2-, 32:%2 8' 8 2/ 8, 32:%2 8' 8 2 6/: 397 ConvUnitInc() funkcja 092-8 3232:%2 8 2- -3278&+ 9/ 39, / -3278$ 4/ $32:$ 4/ -3278 3928 39, /Г-3278 3928$ 4/ $32:$ 4/ 39, / 3:/6 3+. 092-8 3232:%2 8 2- -3278&+ 9/ 39, / -3278$ 4/Г 3928$ 4/ $32:$ 4/ 39, / 3:/6 3+. Funkcja 32:%2 8 2- zwiększa wartość &+ 9/ wyrażoną w jednostkach $ 4/ o zadaną liczbę. 3928jest wartością, którą odejmujemy od wartości wyjściowej. W przypadku, gdy nie została ona ustalona domyślnie, przyjmuje się 1. 3928$ 4/ jest jednostką, w której wyrażany jest parametr 3928. Funkcja zwraca rezultat wyrażony w jednostkach wartości wyjściowej. Przykład Patrz przykład do opisu funkcji 32:%2 8/-. 32:%2 8.., 32:%2 8/-, 32:%2 8 00 ConvUnitSameValue() funkcja 092-8 3232:%2 8#+ /&+ 9/ -3278&+ 9/ 39, / -3278$ 4/ $32:$ 4/ -3278&+ 9/ 39, / -3278 $ 4/ $32:$ 4/ 33 /+2 Funkcja służy do sprawdzania zamienności używania dw óch różnych wartości. Dwie porównywane wartości &+ 9/ oraz &+ 9/ mogą być wyrażone poprzez różne jednostki, niemniej jednak muszą należeć do tego samego układu jednostek. $ 4/ oraz $ 4/ są odpowiednio jednostkami, poprzez które wyrażone są wartości &+ 9/ oraz &+ 9/. Funkcja 32:%2 8#+ /&+ 9/ zwraca prawdę, jeżeli dwie wartości mogą być używane zamiennie, w przeciwnym wypadku zwraca fa łsz.
Rozdział 1. Wielkolci fizyczne. Procedury przeliczania wielkolci fizycznych. Moduły... 37 Przykład Poniższy fragment kodu głównego modułu projektu Kody\Rozdzial1\ConvUnitSame Value\p_ConvUnitSameValue.dpr sprawdza, czy wybrane wartości określające objętości ciał są sobie równoważne. Testując algorytm łatwo przekonamy się, iż np. w odniesieniu do ciał płynnych 4 kwarty amerykańskie są równoważne jednemu amerykańskiemu galonowi (1 galon U.S. = 4 kwarty U.S.), oraz że jedna połowa ćwiartki kwarty (fl gi) równa jest 0,125 części kwarty (fl gi). Nie będzie to oczywiście prawdą, jeżeli zechcemy zamiennie użyć np. 1 galonu U.S. (fl gal) oraz 4 kwart U.S. (dry qt) w odniesieniu do ciał sypkich. 463-/.96/$36 36 6/+8/ #/2./6 $, /-8 783 8/ 2./ 783 8/ 7 9.+ 327 783 8/ 7 9.!9+687 783 8/ 7 9. 287 783 8/ 7 9.947 783 8/ 7 9. 7 783 8/ 7 9.92-/7 783 8/ 7 9.$+, /743327 783 8/ 7 9.$/+743327 783 8/ 7 6 + 327 783 8/ 7 6!9+687 783 8/ 7 6 287 783 8/ 7 6 /- 7 783 8/ 7 6 9- /87 783 8/ 7 6 97 / 7 783 8/ 2./ 783 8/ 7 9.+ 327 783 8/ 7 9.!9+687 783 8/ 7 9. 287 783 8/ 7 9.947 783 8/ 7 9. 7 783 8/ 7 9.92-/7 783 8/ 7 9.$+, /743327 783 8/ 7 9.$/+743327 783 8/ 7 6 + 327 783 8/ 7 6!9+687 783 8/ 7 6 287 783 8/ 7 6 /- 7 783 8/ 7 6 9- /87 783 8/ 7 6 97 / 7 463-/.96/$36 98832 - #/2./6 $, /-8 0 32:%2 8#+ /&+ 9/,7 #86$3 3+8. 8$/ 8 Г $32:$ 4/ 783 8/ 2./ Г,7 #86$3 3+8. 8$/ 8 Г $32:+ 783 8/ 2./ 8 /2 # 3; /77+1/ 36 +8 777 Г 783 8/ 7 783 8/ 2./ Г 3 2+9 ;+ + /22 / Г 783 8/ 7 783 8/ 2./