Cyfroteka.pl

klikaj i czytaj online

Cyfro
Czytomierz
00438 010349 11037648 na godz. na dobę w sumie
C++. Sztuka programowania - książka
C++. Sztuka programowania - książka
Autor: Liczba stron: 384
Wydawca: Helion Język publikacji: polski
ISBN: 83-7361-679-9 Data wydania:
Lektor:
Kategoria: ebooki >> komputery i informatyka >> programowanie >> c++ - programowanie
Porównaj ceny (książka, ebook, audiobook).

Poznaj profesjonalne techniki programistyczne

C++ to jeden z najpopularniejszych języków programowania. Ma zwięzłą i elegancką składnię, czytelny i logiczny model obiektów i starannie opracowane biblioteki. Jego możliwości dają programiście niemal nieograniczoną kontrolę nad komputerem. Jednak sprawne i efektywne programowanie w C++ to prawdziwa sztuka. Wymaga staranności, dokładnego zaplanowania tworzonej aplikacji oraz wiedzy o funkcjach i mechanizmach, jakie można zastosować.

Książka 'C++. Sztuka programowania' przedstawia profesjonalne sposoby tworzenia aplikacji w języku C++. Nie opisuje podstaw języka - skupia się na tworzeniu praktycznych aplikacji z wykorzystaniem profesjonalnych technik programistycznych. Wykonując zawarte w książce przykłady, rozwiążesz różne zadania programistyczne i osiągniesz biegłość w posługiwaniu się językiem C++.

O autorze:
Herb Schildt jest autorytetem w sprawach języków C, C++, Java i C#, a także doskonałym programistą systemu Windows. [więcej...\

Znajdź podobne książki Ostatnio czytane w tej kategorii

Darmowy fragment publikacji:

C++. Sztuka programowania Autor: Herbert Schildt T³umaczenie: Ma³gorzata Koziej (rozdz. 2), Marcin Miklas (rozdz. 2, 7, 9), Marcin Samodulski (rozdz. 1, 3 – 6, 8) ISBN: 83-7361-679-9 Tytu³ orygina³u: The Art of C++ Format: B5, stron: 384 Poznaj profesjonalne techniki programistyczne Ksi¹¿ka „C++. Sztuka programowania” przedstawia profesjonalne sposoby tworzenia aplikacji w jêzyku C++. Nie opisuje podstaw jêzyka — skupia siê na tworzeniu praktycznych aplikacji z wykorzystaniem profesjonalnych technik programistycznych. Wykonuj¹c zawarte w ksi¹¿ce przyk³ady, rozwi¹¿esz ró¿ne zadania programistyczne i osi¹gniesz bieg³oġæ w pos³ugiwaniu siê jêzykiem C++. • Szablony STL, biblioteki i model obiektowy jêzyka C++ • Mechanizm odzyskiwania pamiêci • Wykorzystanie wielow¹tkowoġci w aplikacjach • Eksperymentalne elementy jêzyka C++ • Aplikacje internetowe w C++ • Techniki sztucznej inteligencji • Tworzenie w³asnego interpretera C++ O Autorze: Herbert Schildt jest jednym z najpoczytniejszych autorów ksi¹¿ek poġwiêconych programowaniu, konkretnie jêzykom C, C++, Java i C#. By³ cz³onkiem komitetu ANSI/ISO, który dokona³ standaryzacji jêzyka C++. Jego ksi¹¿ki poġwiêcone programowaniu zosta³y sprzedane w 3 milionach egzemplarzy na ca³ym ġwiecie i przet³umaczone na kilkanaġcie jêzyków. IDZ DO IDZ DO PRZYK£ADOWY ROZDZIA£ PRZYK£ADOWY ROZDZIA£ SPIS TREĎCI SPIS TREĎCI KATALOG KSI¥¯EK KATALOG KSI¥¯EK KATALOG ONLINE KATALOG ONLINE ZAMÓW DRUKOWANY KATALOG ZAMÓW DRUKOWANY KATALOG TWÓJ KOSZYK TWÓJ KOSZYK DODAJ DO KOSZYKA DODAJ DO KOSZYKA CENNIK I INFORMACJE CENNIK I INFORMACJE ZAMÓW INFORMACJE ZAMÓW INFORMACJE O NOWOĎCIACH O NOWOĎCIACH ZAMÓW CENNIK ZAMÓW CENNIK CZYTELNIA CZYTELNIA FRAGMENTY KSI¥¯EK ONLINE FRAGMENTY KSI¥¯EK ONLINE Wydawnictwo Helion ul. Chopina 6 44-100 Gliwice tel. (32)230-98-63 e-mail: helion@helion.pl Spis treści O Autorze ........................................................................................... 9 Wstęp .............................................................................................. 11 Rozdział 1. Potęga C++ ...................................................................................... 13 Zwięzła, lecz bogata składnia...................................................l....................................... 14 Potężne biblioteki ...................................................l...................................................l...... 14 Biblioteka szablonów STL ...................................................l........................................... 15 Programista ma władzę...................................................l................................................. 16 Precyzyjne sterowanie ...................................................l.................................................. 17 Przeciążanie operatorów...................................................l............................................... 17 Przejrzysty, zwięzły model obiektowy ...................................................l......................... 18 Dziedzictwo C++..................................................l...................................................l........ 18 Rozdział 2. Prosty mechanizm odzyskiwania pamięci dla języka C++................... 21 Porównanie dwóch metod zarządzania pamięcią...................................................l.......... 22 Plusy i minusy ręcznego zarządzania pamięcią...................................................l...... 23 Plusy i minusy mechanizmu odzyskiwania pamięci.................................................. 24 Możesz mieć obie metody...................................................l...................................... 25 Tworzenie mechanizmu odzyskiwania pamięci w języku C++ ....................................... 25 Zrozumienie problemu ...................................................l........................................... 26 Wybór algorytmu odzyskiwania pamięci ...................................................l..................... 26 Zliczanie referencji...................................................l................................................. 27 Znacz i zamiataj ...................................................l...................................................l.. 27 Kopiowanie ...................................................l...................................................l......... 27 Który algorytm wybrać?...................................................l......................................... 28 Implementowanie mechanizmu odzyskiwania pamięci............................................. 28 Wielowątkowy czy nie? ...................................................l......................................... 29 Kiedy odzyskiwać pamięć? ...................................................l.................................... 29 Co z auto_ptr? ...................................................l...................................................l..... 30 Prosty mechanizm odzyskiwania pamięci w C++ ...................................................l........ 31 Omówienie klas mechanizmu odzyskiwania pamięci ............................................... 41 GCPtr szczegółowo ...................................................l...................................................l... 42 Zmienne składowe klasy GCPtr ...................................................l............................. 43 Funkcja findPtrInfo() ...................................................l............................................. 44 Definicja typu GCiterator...................................................l....................................... 44 Konstruktor klasy GCPtr...................................................l........................................ 44 Destruktor klasy GCPtr ...................................................l.......................................... 46 4 C++. Sztuka programowania Odzyskiwanie pamięci za pomocą funkcji collect() .................................................. 46 Przeciążone operatory przypisania ...................................................l......................... 48 Konstruktor kopiujący klasy GCPtr ...................................................l....................... 50 Operatory wskaźnikowe i funkcja konwertująca...................................................l.... 51 Funkcje begin() i end()...................................................l........................................... 52 Funkcja shutdown()...................................................l................................................ 53 Dwie funkcje pomocnicze ...................................................l...................................... 53 Klasa GCInfo...................................................l...................................................l.............54 Klasa Iter ...........................................l...................................................l........................... 55 Jak używać klasy GCPtr? ...................................................l............................................. 57 Obsługa wyjątków alokacji pamięci...................................................l....................... 58 Bardziej interesujący przykład ...................................................l............................... 59 Alokowanie i porzucanie obiektów ...................................................l........................ 61 Alokowanie tablic ...................................................l.................................................. 63 Użycie GCPtr z typami klasowymi ...................................................l........................ 65 Większy program demonstracyjny ...................................................l......................... 67 Testowanie obciążenia ...................................................l........................................... 72 Kilka ograniczeń ...................................................l...................................................l. 74 Pomysły do wypróbowania ...................................................l.......................................... 75 Rozdział 3. Wielowątkowość w C++.................................................................... 77 Czym jest wielowątkowość? ...................................................l........................................ 78 Wielowątkowość zmienia architekturę programu ...................................................l.. 78 Dlaczego język C++ nie ma wbudowanej obsługi mechanizmu wielowątkowości? ....... 79 Jaki system operacyjny i kompilator wybrać? ...................................................l.............. 80 Przegląd funkcji obsługi wątków w Windows...................................................l.............. 81 Tworzenie i zatrzymywanie wątku...................................................l......................... 81 Inne funkcje obsługi wątków dostępne w Visual C++ .............................................. 82 Wstrzymywanie i wznawianie wątku ...................................................l..................... 84 Zmiana priorytetu wątku ...................................................l........................................ 84 Pobieranie uchwytu głównego wątku...................................................l..................... 86 Zagadnienie synchronizacji...................................................l.................................... 86 Tworzenie panelu kontrolnego wątków...................................................l........................ 90 Panel kontrolny wątku...................................................l............................................ 91 Panel kontrolny wątku pod lupą...................................................l............................. 95 Prezentacja działania panelu kontrolnego ...................................................l............ 101 Wielowątkowy mechanizm odzyskiwania pamięci ...................................................l.... 106 Dodatkowe zmienne składowe ...................................................l............................. 107 Konstruktor wielowątkowej klasy GCPtr...................................................l............. 107 Wyjątek TimeOutExc...................................................l........................................... 109 Wielowątkowy destruktor klasy GCPtr...................................................l................ 110 Funkcja gc() ...................................................l...................................................l...... 110 Funkcja isRunning()...................................................l............................................. 111 Synchronizacja dostępu do listy gclist ...................................................l................. 111 Dwie inne zmiany ...................................................l................................................ 112 Kompletny kod wielowątkowego mechanizmu odzyskiwania pamięci .................. 112 Użycie wielowątkowego mechanizmu odzyskiwania pamięci ................................ 123 Pomysły do wypróbowania ...................................................l........................................ 128 Rozdział 4. Rozszerzanie języka C++ ................................................................. 129 Dlaczego należy użyć translatora?...................................................l.............................. 129 Eksperymentalne słowa kluczowe...................................................l.............................. 131 Pętla foreach...................................................l...................................................l...... 131 Wyrażenie cases ...................................................l...................................................l 132 Spis treści 5 Operator typeof ...................................................l...................................................l. 133 Pętla repeat-until ...................................................l.................................................. 134 Translator eksperymentalnych elementów języka C++ ................................................. 135 Użycie translatora...................................................l...................................................l.... 143 Jak działa translator? ...................................................l.................................................. 144 Deklaracje globalne...................................................l.............................................. 144 Funkcja main() ...................................................l...................................................l.. 145 Funkcje gettoken() i skipspaces()...................................................l......................... 146 Przekształcanie pętli foreach ...................................................l................................ 149 Przekształcanie wyrażenia cases ...................................................l.......................... 152 Przekształcanie operatora typeof...................................................l.......................... 154 Przekształcanie pętli repeat-until...................................................l.......................... 155 Program demonstracyjny...................................................l............................................ 157 Pomysły do wypróbowania ...................................................l........................................ 163 Rozdział 5. Program do ściągania plików z internetu ........................................ 165 Biblioteka WinINet ...................................................l...................................................l. 166 Podsystem programu do ściągania pliku z internetu...................................................l... 167 Ogólny opis działania...................................................l........................................... 171 Funkcja download() ...................................................l............................................. 172 Funkcja ishttp() ...................................................l...................................................l. 177 Funkcja httpverOK() ...................................................l............................................ 178 Funkcja getfname() ...................................................l.............................................. 179 Funkcja openfile() ...................................................l................................................ 179 Funkcja update() ...................................................l.................................................. 180 Plik nagłówkowy podsystemu do ściągania plików ...................................................l... 181 Program prezentujący działanie podsystemu do ściągania plików ................................ 181 Program do ściągania plików z graficznym interfejsem użytkownika........................... 183 Kod programu WinDL ...................................................l......................................... 183 Jak działa program WinDL?...................................................l................................. 188 Pomysły do wypróbowania ...................................................l........................................ 190 Rozdział 6. Obliczenia finansowe w C++............................................................ 191 Plan spłaty pożyczki ...................................................l...................................................l 192 Obliczanie przyszłej wartości lokaty ...................................................l.......................... 193 Obliczanie początkowej wartości inwestycji wymaganej do otrzymania pożądanej przyszłej wartości............................................ 195 Obliczanie początkowej wartości inwestycji wymaganej do otrzymania określonych wypłat ...................................................l....... 196 Obliczanie maksymalnej wielkości regularnej wypłaty z danej lokaty.......................... 198 Obliczanie wartości pozostałego kredytu ...................................................l................... 200 Pomysły do wypróbowania ...................................................l........................................ 201 Rozdział 7. Rozwiązywanie problemów metodami sztucznej inteligencji ............. 203 Reprezentacja i terminologia ...................................................l...................................... 204 Eksplozje kombinatoryczne...................................................l........................................ 205 Strategie przeszukiwania ...................................................l............................................ 207 Ocenianie strategii przeszukiwania ...................................................l...................... 207 Problem ...................................................l...................................................l................... 208 Reprezentacja graficzna ...................................................l....................................... 208 Struktura FlightInfo i klasa Search ...................................................l............................. 209 Przeszukiwanie w głąb ...................................................l............................................... 211 Funkcja match() ...................................................l...................................................l 216 Funkcja find()...................................................l...................................................l.... 217 Funkcja findroute() ...................................................l.............................................. 218 6 C++. Sztuka programowania Wyświetlanie trasy ...................................................l............................................... 219 Analiza przeszukiwania w głąb ...................................................l............................ 220 Przeszukiwanie wszerz...................................................l............................................... 220 Analiza przeszukiwania wszerz...................................................l............................ 223 Dodawanie heurystyk ...................................................l................................................. 223 Przeszukiwania wspinaczkowe ...................................................l............................ 224 Analiza przeszukiwania wspinaczkowego ...................................................l........... 228 Przeszukiwanie najmniejszego kosztu...................................................l........................ 229 Analiza przeszukiwania najmniejszego kosztu ...................................................l.... 231 Znajdowanie wielu rozwiązań ...................................................l.................................... 231 Usuwanie ścieżki...................................................l.................................................. 231 Usuwanie wierzchołków ...................................................l...................................... 232 Szukanie optymalnego rozwiązania ...................................................l........................... 238 Wracamy do zgubionych kluczy ...................................................l................................ 244 Pomysły do wypróbowania ...................................................l........................................ 247 Rozdział 8. Tworzenie własnego kontenera STL ................................................ 249 Krótkie omówienie biblioteki STL...................................................l............................. 250 Kontenery...................................................l...................................................l.......... 250 Algorytmy ...................................................l...................................................l......... 251 Iteratory...................................................l...................................................l............. 251 Inne składniki biblioteki STL ...................................................l..................................... 251 Wymagania stawiane definiowanemu kontenerowi ...................................................l... 252 Wymagania ogólne ...................................................l.............................................. 252 Dodatkowe wymagania dla kontenerów sekwencyjnych ........................................ 254 Dodatkowe wymagania dla kontenerów asocjacyjnych .......................................... 254 Tworzenie kontenera tablicy dynamicznej ze zmiennymi indeksami............................ 255 Jak działa tablica RangeArray? ...................................................l............................ 255 Kompletna klasa RangeArray ...................................................l.............................. 257 Klasa RangeArray pod lupą ...................................................l................................. 266 Kilka programów wykorzystujących tablicę RangeArray ....................................... 279 Pomysły do wypróbowania ...................................................l.................................. 288 Rozdział 9. Miniinterpreter języka C++ .............................................................. 289 Interpretery kontra kompilatory...................................................l.................................. 289 Opis ogólny interpretera Mini C++ ...................................................l............................ 290 Charakterystyka interpretera Mini C++...................................................l...................... 291 Ograniczenia interpretera Mini C++ ...................................................l.................... 293 Nieformalna teoria języka C++ ...................................................l.................................. 294 Wyrażenia języka C++ ...................................................l......................................... 295 Definiowanie wyrażenia...................................................l....................................... 295 Parser wyrażeń ...................................................l...................................................l........ 297 Kod źródłowy parsera ...................................................l.......................................... 297 Wyodrębnianie elementów leksykalnych z kodu źródłowego................................. 309 Wyświetlanie błędów składniowych ...................................................l.................... 314 Obliczanie wyrażenia ...................................................l........................................... 315 Interpreter Mini C++ ...................................................l.................................................. 317 Funkcja main() ...................................................l...................................................l.. 334 Wstępny przegląd kodu...................................................l........................................ 335 Funkcja interp()...................................................l...................................................l. 339 Obsługa zmiennych lokalnych ...................................................l............................. 341 Wywoływanie funkcji zdefiniowanych przez użytkownika .................................... 343 Przypisywanie wartości zmiennym ...................................................l...................... 345 Wykonywanie instrukcji if ...................................................l................................... 347 Spis treści 7 Instrukcje switch i break ...................................................l...................................... 348 Przetwarzanie pętli while ...................................................l..................................... 350 Przetwarzanie pętli do-while ...................................................l................................ 351 Pętla for...................................................l...................................................l............. 353 Obsługa instrukcji cin i cout...................................................l................................. 354 Biblioteka funkcji interpretera Mini C++ ...................................................l................... 356 Plik nagłówkowy mccommon.h ...................................................l................................. 358 Kompilacja i konsolidacja interpretera Mini C++ ...................................................l...... 360 Demonstrowanie działania interpretera Mini C++ ...................................................l..... 360 Udoskonalanie interpretera Mini C++ ...................................................l........................ 368 Rozszerzanie interpretera Mini C++...................................................l........................... 369 Dodawanie nowych elementów języka C++ ...................................................l........ 369 Dodawanie elementów pomocniczych ...................................................l................. 370 Skorowidz ...................................................................................... 371 Rozdział 6. Obliczenia finansowe w C++ Poza wszystkimi dużymi i skomplikowanymi aplikacjami, takimi jak: kompilatory, prze- glądarki internetowe, edytory tekstów, bazy danych i programy księgowe, które zdomi- nowały świat komputerów, istnieje pewna grupa programów będących zarówno poży- tecznymi, jak i nieskomplikowanymi. Programy te wykonują różne obliczenia finansowe, na przykład wyznaczają wysokość raty kredytu, przyszłą wartość lokaty, pozostałą war- tość kredytu. Żadne z wymienionych obliczeń nie są bardzo skomplikowane ani nie wy- magają obszernego kodu, lecz uzyskujemy dzięki nim całkiem użyteczne informacje. Ponieważ język C++ najlepiej nadaje się do tworzenia potężnych aplikacji systemo- wych, często nie docenia się jego możliwości w dziedzinie obliczeń finansowych. Jest to oczywiście błąd. Język C++ charakteryzuje się doskonałymi właściwościami w tym zakresie, gdyż oferuje szeroki zakres funkcji matematycznych i wydajny mechanizm arytmetycznych operacji zmiennoprzecinkowych. Ponadto, ze względu na fakt, że kod wykonywalny generowany na podstawie kodu C++ jest ekstremalnie wydajny, język C++ stanowi doskonały wybór dla programów wykonujących złożone analizy finan- sowe i modelowanie. Aby pokazać, z jaką łatwością można wykonywać obliczenia finansowe posługując się językiem C++, w tym rozdziale stworzonych zostanie kilka małych programów, które obliczają: 1. Wysokość raty; 2. Przyszłą wartość lokaty; 3. Początkową wartość inwestycji wymaganą do otrzymania pożądanej przyszłej wartości; 4. Początkową wartość inwestycji wymaganą do otrzymania określonych wypłat; 5. Maksymalną wielkość regularnej wypłaty z danej lokaty; 6. Pozostałą kwotę kredytu. 192 C++. Sztuka programowania Programy te mogą być wykorzystywane w niezmienionej postaci lub można je przy- stosować do konkretnych potrzeb. Pomimo tego, że są to najprostsze programy w tej książce, może się okazać, że będziesz ich używał najczęściej. Plan spłaty pożyczki Prawdopodobnie najczęściej wykonywanym obliczeniem finansowym jest wyznacze- nie rat kredytu, przeznaczonego na przykład na samochód lub dom. Raty kredytu ob- licza się za pomocą następującego wzoru: Rata = (oproc ∗ (kwota / liczbaRatRocznie)) / (1 – ((oproc / liczbaRatRocznie) + 1) –liczbaRatRocznie ∗ liczbaLat) gdzie oproc określa oprocentowanie kredytu, kwota — wysokość kredytu, liczbaRat- Rocznie oznacza liczbę rat przypadającą na jeden rok, a liczbaLat określa długość spłaty kredytu w latach. W poniższym programie w celu obliczenia wysokości rat przedstawiony wzór został użyty w ciele funkcji TGIRC[ . Do funkcji tej przekazujemy oprocentowanie, wiel- kość pierwszej raty, długość spłaty kredytu w latach oraz liczbę rat przypadających na jeden rok. Funkcja zwraca wysokość raty. KPENWFGKQUVTGCO KPENWFGEOCVJ KPENWFGKQOCPKR KPENWFGNQECNG WUKPIPCOGURCEGUVF // Obliczanie jednakowych rat kredytu. FQWDNGTGIRC[ FQWDNGRTKPEKRCNFQWDNGKPV4CVG KPVPWO;GCTUKPVRC[2GT;GCT ] FQWDNGPWOGT FQWDNGFGPQO FQWDNGDG KPV4CVG// przekształć procenty na ułamki PWOGTKPV4CVG RTKPEKRCNRC[2GT;GCT G RC[2GT;GCT PWO;GCTU  D KPV4CVGRC[2GT;GCT   FGPQORQY DG  TGVWTPPWOGTFGPQO _ KPVOCKP ] FQWDNGRT KPV[RR[ Rozdział 6. ♦ Obliczenia finansowe w C++ 193 EQWVKODWG NQECNG RQNKUJ  EKPKODWG NQECNG RQNKUJ  EQWV9RTQYCFļMYQVúMTGF[VW EKP R EQWV9RTQYCFļY[UQMQħèQRTQEGPVQYCPKC Y[TCľQPæYRTQEGPVCEJ  EKP T EQWV9RTQYCFļNKEDúNCV EKP [ EQWV9RTQYCFļNKEDúURđCVYTQMW EKP RR[ EQWV P4CVCHKZGFUGVRTGEKUKQP  TGIRC[ RT[RR[ GPFN TGVWTP _ Aby obliczyć wysokość raty kredytu, wprowadź wymagane dane. Oto przykładowy przebieg programu: 9RTQYCFļY[UQMQħèMTGF[VW 9RTQYCFļY[UQMQħèQRTQEGPVQYCPKC Y[TCľQPæYRTQEGPVCEJ  9RTQYCFļNKEDúNCV 9RTQYCFļNKEDúURđCVYTQMW 4CVC Zwróć uwagę na kilka elementów w ciele funkcji OCKP . Po pierwsze, obiekt NQECNG związany ze strumieniem EQWV został ustawiony na Polish. Wykonano to przez wy- wołanie metody KODWG i przekazanie obiektu NQECNG dla Polski. Dzięki temu zapew- nione jest prawidłowe wyświetlanie sum pieniężnych zgodnie z zasadami obowiązu- jącymi w języku polskim, przez co rozumiemy oddzielanie poszczególnych członów tysięcznych za pomocą znaku spacji oraz stosowanie przecinka do oddzielania części całkowitej liczby od jej części ułamkowej. Po drugie, przed wyświetleniem obliczonej wysokości raty, format liczby został zmieniony na HKZGF (stały) z precyzją 2 miejsc po przecinku z odpowiednim zaokrąglaniem. Jeśli to konieczne, do części ułamkowej dodawane są zera. We wszystkich prezentowanych w tym rozdziale programach do obliczeń finansowych zastosowane jest to samo podejście. Aby zmienić format liczb w celu dopasowania go do innego języka lub regionu, wystarczy zmienić język lub region obiektu NQECNG przekazywanego do funkcji KODWG . Obliczanie przyszłej wartości lokaty Inną często obliczaną wartością jest przyszła wartość lokaty na podstawie początko- wej wielkości lokaty, oprocentowania, rocznej częstotliwości kapitalizacji odsetek oraz długości lokaty wyrażonej w latach. Na przykład możesz chcieć się dowiedzieć, ile będziesz miał na koncie za 12 lat, jeżeli obecny stan Twego konta to 98 000 zł, 194 C++. Sztuka programowania a średnie oprocentowanie roczne wynosi 6 procent. Przedstawiony tutaj program od- powie na to pytanie. Aby obliczyć przyszłą wartość inwestycji, użyj następującego wzoru: Przyszła wartość = lokata ∗ ((oproc / rocznaCzęstKapit) + 1) rocznaCzęstKapit ∗ liczbaLat gdzie oproc określa oprocentowanie lokaty, lokata to początkowa wysokość wkładu, rocznaCzęstKapit oznacza częstotliwość kapitalizacji odsetek w roku, a liczbaLat to długość lokaty wyrażona w latach. W przypadku naliczania odsetek raz do roku, czę- stotliwość kapitalizacji odsetek w roku wynosi oczywiście 1. W poniższym programie w celu obliczenia przyszłej wartości inwestycji przedstawiony wzór został użyty w ciele funkcji HWVXCN . Do funkcji tej przekazujemy oprocento- wanie lokaty, długość lokaty w latach oraz roczną częstotliwość kapitalizacji odsetek. Funkcja zwraca przyszłą wartość lokaty. KPENWFGKQUVTGCO KPENWFGEOCVJ KPENWFGKQOCPKR KPENWFGNQECNG WUKPIPCOGURCEGUVF // Obliczanie przyszłej wartości lokaty. FQWDNGHWVXCN FQWDNGRTKPEKRCNFQWDNGTCVG1H4GV KPVPWO;GCTUKPVEQOR2GT;GCT ] FQWDNGDG TCVG1H4GV// przekształć procenty na ułamki D  TCVG1H4GVEQOR2GT;GCT  GEQOR2GT;GCT PWO;GCTU TGVWTPRTKPEKRCN RQY DG  _ KPVOCKP ] FQWDNGRT KPV[ER[ EQWVKODWG NQECNG RQNKUJ  EQWV9RTQYCFļYKGNMQħèNQMCV[ EKP R EQWV9RTQYCFļY[UQMQħèQRTQEGPVQYCPKCNQMCV[ Y[TCľQPæYRTQEGPVCEJ  EKP T EQWV9RTQYCFļNKEDúNCV EKP [ EQWV9RTQYCFļTQEPæEúUVQVNKYQħèMCRKVCNKCELKQFUGVGM EKP ER[ EQWV P2T[UđCYCTVQħèHKZGFUGVRTGEKUKQP  HWVXCN RT[ER[ GPFN Rozdział 6. ♦ Obliczenia finansowe w C++ 195 TGVWTP _ Oto przykładowy przebieg programu: 9RTQYCFļYKGNMQħèNQMCV[ 9RTQYCFļY[UQMQħèQRTQEGPVQYCPKCNQMCV[ Y[TCľQPæYRTQEGPVCEJ  9RTQYCFļNKEDúNCV 9RTQYCFļTQEPæEúUVQVNKYQħèMCRKVCNKCELKQFUGVGM 2T[UđCYCTVQħè Obliczanie początkowej wartości inwestycji wymaganej do otrzymania pożądanej przyszłej wartości Czasami chcemy wiedzieć, ile musimy zainwestować, aby otrzymać w przyszłości jakąś określoną wartość. Na przykład jeżeli zbierasz pieniądze na prywatną szkołę dla dziecka i wiesz, że za 5 lat będziesz potrzebował 75 000 zł, zadasz pytanie: ile pieniędzy muszę przeznaczyć na lokatę oprocentowaną na 7 procent w skali roku, aby uzyskać założoną kwotę. Wykorzystując program zaprezentowany w tym podrozdziale, możesz znaleźć odpowiedź na to pytanie. Wzór, na podstawie którego można obliczyć początkową wartość lokaty, wygląda na- stępująco: Początkowa wartość = = wartośćDocelowa / (((oproc / rocznaCzęstKapit) + 1) rocznaCzęstKapit ∗ liczbaLat) gdzie oproc określa oprocentowanie lokaty, wartośćDocelowa to założona przyszła wartość, którą chcemy uzyskać, rocznaCzęstKapit oznacza częstotliwość kapitalizacji odsetek w roku, a liczbaLat to długość lokaty wyrażona w latach. Jeżeli odsetki nali- czane są raz do roku, częstotliwość kapitalizacji odsetek w roku wynosi oczywiście 1. W poniższym programie w celu obliczenia początkowej wysokości lokaty przedsta- wiony wzór został użyty w ciele funkcji KPKVXCN . Do funkcji tej przekazujemy zało- żoną wartość docelową, oprocentowanie lokaty, długość lokaty w latach oraz roczną częstotliwość kapitalizacji odsetek. Funkcja zwraca początkową wartość lokaty. KPENWFGKQUVTGCO KPENWFGEOCVJ KPENWFGKQOCPKR KPENWFGNQECNG WUKPIPCOGURCEGUVF // Obliczanie początkowej wartości lokaty // wymaganej do uzyskania założonej przyszłej wartości. FQWDNGKPKVXCN FQWDNGVCTIGV8CNWGFQWDNGTCVG1H4GV KPVPWO;GCTUKPVEQOR2GT;GCT ] 196 C++. Sztuka programowania FQWDNGDG TCVG1H4GV// przekształć procenty na ułamki D  TCVG1H4GVEQOR2GT;GCT  GEQOR2GT;GCT PWO;GCTU TGVWTPVCTIGV8CNWGRQY DG  _ KPVOCKP ] FQWDNGRT KPV[ER[ EQWVKODWG NQECNG RQNKUJ  EQWV9RTQYCFļRQľæFCPæYCTVQħè EKP R EQWV9RTQYCFļY[UQMQħèQRTQEGPVQYCPKCNQMCV[ Y[TCľQPæYRTQEGPVCEJ  EKP T EQWV9RTQYCFļNKEDúNCV EKP [ EQWV9RTQYCFļTQEPæEúUVQVNKYQħèMCRKVCNKCELKQFUGVGM EKP ER[ EQWV P9[OCICPCRQEæVMQYCYCTVQħèNQMCV[ HKZGFUGVRTGEKUKQP  KPKVXCN RT[ER[ GPFN TGVWTP _ Oto przykładowy przebieg programu: 9RTQYCFļRQľæFCPæYCTVQħè 9RTQYCFļY[UQMQħèQRTQEGPVQYCPKCNQMCV[ Y[TCľQPæYRTQEGPVCEJ  9RTQYCFļNKEDúNCV 9RTQYCFļTQEPæEúUVQVNKYQħèMCRKVCNKCELKQFUGVGM 9[OCICPCRQEæVMQYCYCTVQħèNQMCV[ Obliczanie początkowej wartości inwestycji wymaganej do otrzymania określonych wypłat Kolejną często obliczaną wielkością jest początkowa wartość lokaty, która zapewnia regularne wypłaty określonej sumy. Na przykład możesz zaplanować, że będziesz potrzebował w przyszłości 5 000 zł miesięcznie w charakterze emerytury wypłacanej Rozdział 6. ♦ Obliczenia finansowe w C++ 197 przez 20 lat. Pytanie, które powinieneś sobie zadać, brzmi: jak dużo muszę zgroma- dzić, aby zapewnić sobie taką emeryturę. Odpowiedź znajdziesz, wykorzystując na- stępujący wzór: Początkowa wartość = ((wysWyp ∗ liczbaWypRocznie) / oproc) ∗ (1 – (1 / (oproc / liczbaWypRocznie + 1) liczbaWypRocznie ∗ liczbaLat)) gdzie oproc określa wysokość oprocentowania lokaty, wysWyp to pożądana wysokość regularnych wypłat, liczbaWypRocznie oznacza zakładaną liczbę wypłat na rok, a licz- baLat to okres wypłacania wyrażony w latach. W poniższym programie w celu obliczenia początkowej wysokości lokaty przedsta- wiony wzór został użyty w ciele funkcji CPPWKV[ . Do funkcji tej przekazujemy zało- żoną wartość docelową regularnej wypłaty, oprocentowanie lokaty, okres wypłacania wyrażony w latach oraz roczną liczbę wypłat. Funkcja zwraca początkową wymaganą wartość lokaty. KPENWFGKQUVTGCO KPENWFGEOCVJ KPENWFGKQOCPKR KPENWFGNQECNG WUKPIPCOGURCEGUVF // Obliczanie początkowej wartości inwestycji // wymaganej do otrzymania określonych regularnych wypłat. FQWDNGCPPWKV[ FQWDNGTGI9 FQWDNGTCVG1H4GV KPVPWO;GCTUKPVPWO2GT;GCT ] FQWDNGDG FQWDNGVV TCVG1H4GV// przekształć procenty na ułamki V TGI9  PWO2GT;GCT TCVG1H4GV D  TCVG1H4GVPWO2GT;GCT  GPWO2GT;GCT PWO;GCTU V RQY DG  TGVWTPV V _ KPVOCKP ] FQWDNGYFT KPV[YR[ EQWVKODWG NQECNG RQNKUJ  EQWV9RTQYCFļRQľæFCPæMYQVúY[RđCV[ EKP YF EQWV9RTQYCFļY[UQMQħèQRTQEGPVQYCPKCNQMCV[ Y[TCľQPæYRTQEGPVCEJ  EKP T 198 C++. Sztuka programowania EQWV9RTQYCFļNKEDúNCV EKP [ EQWV9RTQYCFļNKEDúY[RđCVYTQMW EKP YR[ EQWV P9[OCICPCRQEæVMQYCY[UQMQħèNQMCV[ HKZGFUGVRTGEKUKQP  CPPWKV[ YFT[YR[ GPFN TGVWTP _ Oto przykładowy przebieg programu: 9RTQYCFļRQľæFCPæMYQVúY[RđCV[ 9RTQYCFļY[UQMQħèQRTQEGPVQYCPKCNQMCV[ Y[TCľQPæYRTQEGPVCEJ  9RTQYCFļNKEDúNCV 9RTQYCFļNKEDúY[RđCVYTQMW 9[OCICPCRQEæVMQYCY[UQMQħèNQMCV[ Obliczanie maksymalnej wielkości regularnej wypłaty z danej lokaty Innym rodzajem obliczeń finansowych jest wyznaczanie maksymalnej kwoty wypłaty (w sensie regularnych wypłat), jaką można otrzymywać przez określony czas, na pod- stawie danej lokaty. Załóżmy, że masz 500 000 zł na koncie i chciałbyś wiedzieć, ile możesz podejmować każdego miesiąca przez 20 lat, zakładając, że oprocentowanie lokaty wynosi 6 procent. Wzór do obliczania poszukiwanej wartości jest następujący: Maksymalna wysokość wypłaty = lokata ∗ (((oproc / liczbaWypRocznie) / (–1 + ((oproc / liczbaWypRocznie) + 1) liczbaWypRocznie ∗ liczbaLat)) + (oproc / liczbaWypRocznie)) gdzie oproc określa wysokość oprocentowania lokaty, liczbaWypRocznie to zakładana liczba wypłat na rok, liczbaLat oznacza okres wypłacania wyrażony w latach, a lokata wskazuje początkową wysokość lokaty. W poniższym programie w celu obliczenia maksymalnej wysokości wypłaty przed- stawiony wzór został użyty w ciele funkcji OCZYF . Do funkcji tej przekazujemy po- czątkową wartość lokaty, oprocentowanie lokaty, okres wypłacania wyrażony w la- tach oraz roczną liczbę wypłat. Funkcja zwraca maksymalną wartość wypłaty. KPENWFGKQUVTGCO KPENWFGEOCVJ KPENWFGKQOCPKR KPENWFGNQECNG WUKPIPCOGURCEGUVF Rozdział 6. ♦ Obliczenia finansowe w C++ 199 // Obliczanie maksymalnej wielkości regularnej wypłaty // podejmowanej przez określony czas z lokaty o podanej wartości początkowej. FQWDNGOCZYF FQWDNGRTKPEKRCNFQWDNGTCVG1H4GV KPVPWO;GCTUKPVPWO2GT;GCT ] FQWDNGDG FQWDNGVV TCVG1H4GV// przekształć procenty na ułamki VTCVG1H4GVPWO2GT;GCT D  V  GPWO2GT;GCT PWO;GCTU VRQY DG  TGVWTPRTKPEKRCN  VV V  _ KPVOCKP ] FQWDNGRT KPV[YR[ EQWVKODWG NQECNG RQNKUJ  EQWV9RTQYCFļRQEæVMQYæYCTVQħèNQMCV[ EKP R EQWV9RTQYCFļY[UQMQħèQRTQEGPVQYCPKCNQMCV[ Y[TCľQPæYRTQEGPVCEJ  EKP T EQWV9RTQYCFļNKEDúNCV EKP [ EQWV9RTQYCFļNKEDúY[RđCVYTQMW EKP YR[ EQWV P/CMU[OCNPCMYQVCY[RđCV[HKZGFUGVRTGEKUKQP  OCZYF RT[YR[ GPFN TGVWTP _ Oto przykładowy przebieg programu: 9RTQYCFļRQEæVMQYæYCTVQħèNQMCV[ 9RTQYCFļY[UQMQħèQRTQEGPVQYCPKCNQMCV[ Y[TCľQPæYRTQEGPVCEJ  9RTQYCFļNKEDúNCV 9RTQYCFļNKEDúY[RđCVYTQMW /CMU[OCNPCMYQVCY[RđCV[ 200 C++. Sztuka programowania Obliczanie wartości pozostałego kredytu Często potrzebna jest informacja dotycząca tego, ile kredytu zostało do spłacenia. Można to łatwo obliczyć, znając początkową kwotę kredytu, jego oprocentowanie, wysokość raty oraz liczbę dokonanych wpłat. Aby poznać pozostałą kwotę kredytu, trzeba zsumować dokonane wpłaty, odejmując od każdej wpłaty odsetki, a następnie odjąć tak otrzymaną liczbę od początkowej kwoty kredytu. Przedstawiona tutaj funkcja DCNCPEG oblicza pozostałą do spłacenia kwotę kredytu. Do funkcji tej przekazujemy początkową wartość kredytu, oprocentowanie lokaty, wielkość raty, liczbę spłat w roku i liczbę dokonanych wpłat. Funkcja zwraca pozo- stałą kwotę kredytu. KPENWFGKQUVTGCO KPENWFGEOCVJ KPENWFGKQOCPKR KPENWFGNQECNG WUKPIPCOGURCEGUVF // Oblicza pozostałą kwotę kredytu. FQWDNGDCNCPEG FQWDNGRTKPEKRCNFQWDNGKPV4CVG FQWDNGRC[OGPVKPVRC[2GT;GCT KPVPWO2C[OGPVU ] FQWDNGDCNRTKPEKRCN FQWDNGTCVGKPV4CVGRC[2GT;GCT TCVG// przekształć procenty na ułamki HQT KPVKKPWO2C[OGPVUK DCNRC[OGPV DCN TCVG  TGVWTPDCN _ KPVOCKP ] FQWDNGRTROV KPVRR[PROV EQWVKODWG NQECNG RQNKUJ  EQWV9RTQYCFļRQEæVMQYæMYQVúMTGF[VW EKP R EQWV9RTQYCFļY[UQMQħèQRTQEGPVQYCPKCNQMCV[ Y[TCľQPæYRTQEGPVCEJ  EKP T EQWV9RTQYCFļYKGNMQħèTCV[ EKP ROV Rozdział 6. ♦ Obliczenia finansowe w C++ 201 EQWV9RTQYCFļNKEDúURđCVYTQMW EKP RR[ EQWV9RTQYCFļNKEDúFQMQPCP[EJYRđCV EKP PROV EQWV2QQUVCđCMYQVCMTGF[VWHKZGFUGVRTGEKUKQP  DCNCPEG RTROVRR[PROV GPFN TGVWTP _ Oto przykładowy przebieg programu: 9RTQYCFļRQEæVMQYæMYQVúMTGF[VW 9RTQYCFļY[UQMQħèQRTQEGPVQYCPKCNQMCV[ Y[TCľQPæYRTQEGPVCEJ  9RTQYCFļYKGNMQħèTCV[ 9RTQYCFļNKEDúURđCVYTQMW 9RTQYCFļNKEDúFQMQPCP[EJYRđCV 2QQUVCđCMYQVCMTGF[VW Pomysły do wypróbowania Istnieje wiele innych obliczeń finansowych, które mogą Ci się przydać, jak choćby obliczanie stopy oprocentowania lokaty lub wysokość regularnych wpłat prowadzą- cych do uzyskania określonej przyszłej wartości. Możesz także wygenerować plan amortyzacji kredytu. Być może zechcesz stworzyć większą aplikację obejmującą wszystkie przedstawione w tym rozdziale obliczenia. Użytkownik mógłby wybierać odpowiednią opcję z menu.
Pobierz darmowy fragment (pdf)

Gdzie kupić całą publikację:

C++. Sztuka programowania
Autor:

Opinie na temat publikacji:


Inne popularne pozycje z tej kategorii:


Czytaj również:


Prowadzisz stronę lub blog? Wstaw link do fragmentu tej książki i współpracuj z Cyfroteką: