IDZ DO KATALOG KSI EK TWÓJ KOSZYK CENNIK I INFORMACJE CZYTELNIA PRZYK ADOWY ROZDZIA SPIS TRE CI KATALOG ONLINE ZAMÓW DRUKOWANY KATALOG

Wielkość: px
Rozpocząć pokaz od strony:

Download "IDZ DO KATALOG KSI EK TWÓJ KOSZYK CENNIK I INFORMACJE CZYTELNIA PRZYK ADOWY ROZDZIA SPIS TRE CI KATALOG ONLINE ZAMÓW DRUKOWANY KATALOG"

Transkrypt

1 IDZ DO PRZYK ADOWY ROZDZIA KATALOG KSI EK ZAMÓW DRUKOWANY KATALOG Wydawnictwo Helion ul. Chopina Gliwice tel. (32) TWÓJ KOSZYK CENNIK I INFORMACJE ZAMÓW INFORMACJE O NOWOCIACH ZAMÓW CENNIK CZYTELNIA SPIS TRECI KATALOG ONLINE DODAJ DO KOSZYKA FRAGMENTY KSI EK ONLINE C++. Projetowanie systemów informatycznych. Vademecum profesjonalisty Autor: John Laos T³umaczenie: Wojciech Moch (rozdz. 1 4), Micha³ Dadan (rozdz. 5, 6), Rados³aw Mery (rozdz. 7 10, dod. A C) ISBN: Tytu³ orygina³u: Large-Scale C++ Software Design Format: B5, stron: 688 Przy³ady na ftp: 52 B C++ nie jest tylo rozszerzeniem jêzya C, ale wprowadza zupe³nie nowy model programowania. Stopieñ sompliowania C++ mo e byæ przyt³aczaj¹cy nawet dla dowiadczonych programistów C, jedna zazwyczaj nie sprawia im problemów napisanie i uruchomienie ma³ego, niebanalnego programu w C++. Niestety, bra dyscypliny dopuszczalny przy tworzeniu ma³ych programów, zupe³nie nie sprawdza siê w du ych projetach. Podstawowe u ycie technologii C++ nie wystarczy do budowy du ych projetów. Na niezorientowanych czea wiele pu³ape. Ksi¹ a ta opisuje metody projetowania du ych systemów wysoiej jaoci. Adresowana jest do dowiadczonych programistów C++ próbuj¹cych stworzyæ architeturê ³atw¹ w obs³udze i mo liw¹ do ponownego wyorzystania. Nie zawarto w niej teoretycznego podejcia do programowania. W tej si¹ ce znajduj¹ siê pratyczne wsazówi wyp³ywaj¹ce z wieloletnich dowiadczeñ espertów C++ tworz¹cych ogromne systemy wielostanowisowe. Autor poazuje, ja nale y projetowaæ systemy, nad tórymi pracuj¹ seti programistów, s³adaj¹ce siê z tysiêcy las i prawdopodobnie milionów linii odu. W si¹ ce opisano: Tworzenie programów wielopliowych w C++ Konstruowanie omponentów Podzia³ projetu fizycznego na poziomy Ca³owit¹ i czêciow¹ izolacjê, regu³y jej stosowania Tworzenie paietów i ich podzia³ na poziomy Projetowanie funcji Implementowanie metod Dodati do si¹ i opisuj¹ przydatny wzorzec projetowy hierarchiê protoo³ów, implementowanie interfejsu C++ zgodnego ze standardem ANSI C oraz paiet s³u ¹cy do orelania i analizowania zale noci.

2 W.1. Od C do C W.2. Ja używać C++ do tworzenia dużych projetów W.2.1. Zależności cyliczne W.2.2. Nadmierne zależności na etapie onsolidacji...18 W.2.3. Nadmierne zależności na etapie ompilacji W.2.4. Globalna przestrzeń nazw W.2.5. Projet logiczny i fizyczny W.3. Ponowne użycie W.4. Jaość W.4.1. Kontrola jaości W.4.2. Zapewnienie jaości W.5. Narzędzia W.6. Podsumowanie Programy wielopliowe w C Delaracja a definicja Konsolidacja (łączenie) wewnętrzna a zewnętrzna Plii nagłówowe (.h) Plii implementacji (.c) Delaracje typedef Instrucje sprawdzające Kila słów na temat stylu Identyfiatory Nazwy typów Nazwy identyfiatorów sładające się z wielu słów Nazwy sładowych las Kolejność ułożenia sładowych w lasie Iteratory Logiczna notacja projetu Relacja Jest Relacja Używa-W-Interfejsie Relacja Używa-W-Implementacji Relacja Używa Relacje Ma i Trzyma Relacja Był

3 6 C++. Projetowanie systemów informatycznych. Vademecum profesjonalisty 1.7. Dziedziczenie i warstwy Minimalizacja Podsumowanie Przegląd Dostęp do pól lasy Globalna przestrzeń nazw Dane globalne Wolne funcje Wyliczenia, stałe i delaracje typedef Mara preprocesora Nazwy w pliach nagłówowych Kontrola dołączeń Dodatowa ontrola dołączeń Doumentacja Sposoby nazywania identyfiatorów Podsumowanie Komponenty a lasy Reguły projetów fizycznych Relacja ZależyOd Zależności impliowane Wydobywanie rzeczywistych zależności Przyjaźń Przyjaźń na odległość i zależności impliowane Przyjaźń i oszustwo Podsumowanie Metafora dla testowania oprogramowania Złożony podsystem Problemy z testowaniem dobrych interfejsów Projetowanie zorientowane na testowalność Testowanie pojedynczych modułów Acyliczne zależności fizyczne Numery poziomów Źródła numeracji poziomów Używanie numerów poziomów w oprogramowaniu Testowanie hierarchiczne i przyrostowe Testowanie złożonych podsystemów Testowalność ontra testowanie Cyliczne zależności fizyczne Suma zależności omponentów Jaość projetu fizycznego Podsumowanie Nietóre przyczyny cylicznych zależności fizycznych Rozszerzenie Wygoda Wewnętrzna zależność

4 Spis treści Wyniesienie Obniżenie Nieprzezroczyste wsaźnii Głupie dane Redundancja Wywołania zwrotne Klasa-menedżer Fatoring Wynoszenie enapsulacji Podsumowanie Od enapsulacji do izolacji Koszty powiązań na etapie ompilacji Konstrucje w języu C++ a zależności na etapie ompilacji Dziedziczenie (Jest) a zależności na etapie ompilacji Podział na warstwy (Ma/Trzyma) a zależności na etapie ompilacji Funcje inline a zależności na etapie ompilacji Sładowe prywatne a zależności na etapie ompilacji Sładowe chronione a zależności na etapie ompilacji Funcje sładowe generowane przez ompilator a zależności na etapie ompilacji Dyretywy include a zależności na etapie ompilacji Argumenty domyślne a zależności na etapie ompilacji Wyliczenia a zależności na etapie ompilacji Technii częściowej izolacji Rezygnacja z dziedziczenia prywatnego Usuwanie osadzonych danych sładowych Usuwanie prywatnych funcji sładowych Usuwanie sładowych chronionych Usuwanie prywatnych danych sładowych Usuwanie funcji generowanych przez ompilator Usuwanie dyretyw include Usuwanie argumentów domyślnych Usuwanie wyliczeń Technii całowitej izolacji Klasa protoołu W pełni izolująca lasa onretna Izolujące omponenty otaczające Pojedyncze omponenty otaczające Wieloomponentowe warstwy otaczające Interfejs proceduralny Architetura interfejsu proceduralnego Tworzenie i usuwanie nieprzezroczystych obietów Uchwyty Uzysiwanie dostępu do nieprzezroczystych obietów i manipulowanie nimi Dziedziczenie a nieprzezroczyste obiety Izolować czy nie izolować Koszt izolacji Kiedy nie należy izolować Ja izolować Do jaiego stopnia należy izolować Podsumowanie

5 8 C++. Projetowanie systemów informatycznych. Vademecum profesjonalisty 7.1. Od omponentów do paietów Zarejestrowane prefisy paietów Potrzeba stosowania prefisów Przestrzenie nazw Zachowanie integralności paietu Podział paietów na poziomy Znaczenie podziału paietów na poziomy Technii podziału paietów na poziomy Podział systemu Wytwarzanie oprogramowania w wielu ośrodach Izolacja paietów Grupy paietów Proces wydawania oprogramowania Strutura wydania Łaty Program main Faza startu Strategie inicjalizacji Technia przebudzenia w stanie zainicjowania Technia jawnego wywoływania funcji init Technia wyorzystania specjalnego licznia Technia sprawdzania za ażdym razem Porządowanie Przegląd Podsumowanie Abstracje i omponenty Projet interfejsu omponentu Poziomy enapsulacji Pomocnicze lasy implementacyjne Podsumowanie Specyfiacja interfejsu funcji Operator czy metoda? Wolny operator czy sładowa lasy? Metoda wirtualna czy niewirtualna? Metoda czysto wirtualna czy nie czysto wirtualna? Metoda statyczna czy niestatyczna? Metody stałe czy modyfiowalne? Metody publiczne, chronione czy prywatne Zwracanie wyniu przez wartość, referencję czy wsaźni? Zwracanie wartości typu const czy nie-const? Argument opcjonalny czy obowiązowy? Przeazywanie argumentów przez wartość, referencję lub wsaźni Przeazywanie argumentów jao const lub nie-const Funcja zaprzyjaźniona czy niezaprzyjaźniona? Funcja inline czy nie inline?

6 Spis treści Typy podstawowe użyte w interfejsie Użycie typu short w interfejsie Użycie walifiatora unsigned w interfejsie Zastosowanie typu long w interfejsie Zastosowanie typów float, double oraz long double w interfejsie Funcje specjalnego przeznaczenia Operatory onwersji Semantya wartości generowanych przez ompilator Destrutor Podsumowanie Pola Wyrównanie naturalne Użycie typów podstawowych w implementacji Użycie onstrucji typedef w implementacji Definicje funcji Samoontrola Unianie przypadów szczególnych Podział zamiast powielania Zbytnia przebiegłość nie popłaca Zarządzanie pamięcią Wartości stanu logicznego i fizycznego Parametry fizyczne Systemy przydziału pamięci Zarządzanie pamięcią na poziomie lasy Dodawanie własnych mechanizmów zarządzania pamięcią Zabloowana pamięć Zarządzanie pamięcią na poziomie obietu Użycie szablonów w dużych projetach Implementacje szablonów Zarządzanie pamięcią w szablonach Wzorce a szablony Podsumowanie Protocol Hierarchy strutury las Cel Znany też jao Motywacja Zares zastosowania Strutura Elementy sładowe Współpraca Konsewencje Implementacja Przyładowy od Znane zastosowania Porewne wzorce

7 10 C++. Projetowanie systemów informatycznych. Vademecum profesjonalisty B.1. Wyrywanie błędu aloacji pamięci B.2. Definiowanie procedury main (tylo ANSI C) C.1. Korzystanie z poleceń adep, cdep i ldep C.2. Doumentacja wiersza polecenia C.3. Architetura paietu idep C.4. Kod źródłowy D.1. Definicje D.2. Główne reguły projetowe D.3. Poboczne reguły projetowe D.4. Wsazówi D.5. Zasady

8 Rozdział 9. Celem projetowania funcji jest zapewnienie łatwego i wydajnego dostępu do operacji zdefiniowanych przez abstrację. Języ C++ zapewnia swobodę definiowania interfejsu na poziomie funcji. Czy funcja ma być operatorem, metodą lub wolnym operatorem, w jai sposób będą przeazywane argumenty oraz w jai sposób będą przeazywane wynii to elementy należące do tego etapu procesu projetowania. Styl programowania to tylo jeden z elementów, tóre odgrywają rolę w podejmowaniu tego typu decyzji projetowych. Wiele z nich zostanie omówionych w niniejszym rozdziale. W języu C++ mamy do dyspozycji wiele odmian podstawowych typów reprezentujących liczby całowite (ja np.,, itp.). Typy te zapewniają dodatową swobodę. Nierozważne ich wyorzystanie może sompliować lub nawet osłabić interfejs. Operator onwersji dla typów definiowanych przez użytownia umożliwia ompilatorowi wyonywanie niejawnej onwersji na lub z typu definiowanego przez użytownia. Uważne projetowanie wymaga przeanalizowania możliwych zalet niejawnej onwersji w zestawieniu z niejednoznacznościami oraz możliwością powstania błędów w związu z obniżeniem bezpieczeństwa typów. Nietóre inne funcje, w przypadu gdy nie zostaną oreślone jawnie, gdy zajdzie taa potrzeba mogą być zdefiniowane automatycznie przez ompilator. Podjęcie decyzji dotyczących dopuszczalności generowania definicji funcji przez ompilator wymaga uważnej analizy. W tym rozdziale opiszemy szielet projetowania interfejsu omponentu na poziomie pojedynczej funcji. Omówimy obszerną przestrzeń projetową dostępną dla autorów omponentów i wsażemy decyzje projetowe, tóre są orzystne lub nieorzystne. Przeonamy się, ile poziomów swobody w przestrzeni projetu interfejsu funcji można wyeliminować bez strat w suteczności. Uzysany szielet pomoże nam opracowywać interfejsy prostsze, bardziej jednolite i łatwiejsze do utrzymania.

9 462 Część III Zagadnienia dotyczące projetu logicznego Zgodnie z podstawowymi zasadami przedstawionymi w rozdziale 2., podczas oreślania interfejsu funcji w języu C++ należy zwrócić uwagę na ila aspetów: Czy funcja jest operatorem, czy nim nie jest? Czy jest wolnym operatorem, czy elementem sładowym lasy? Czy jest to metoda wirtualna, czy niewirtualna? Czy jest to metoda czysto wirtualna, czy też nie czysto wirtualna? Metoda stała czy modyfiowalna? Metoda typu czy nie-? Metoda publiczna (), chroniona () czy prywatna ()? Wyni zwracany przez wartość, referencję czy wsaźni? Zwracany wyni typu czy nie-? Argument opcjonalny czy obowiązowy? Argumenty przeazywane przez wartość, referencję czy wsaźni? Przeazywane argumenty typu czy nie-? Istnieją taże dwa aspety dotyczące organizacji, tóre należy wziąć pod uwagę, pomimo tego, że nie są one częścią logicznego interfejsu: Czy jest to funcja zaprzyjaźniona, czy też nie? Funcja typu inline, czy nie typu inline? Pomiędzy tymi aspetami istnieje wiele wzajemnych zależności. Zazwyczaj odpowiedź na jedno z pytań ma wpływ na odpowiedź na inne. W dalszej części niniejszego rozdziału omówimy wymienione zagadnienia osobno i podamy wsazówi umożliwiające podjęcie optymalnych decyzji projetowych 1. Oprócz operatorów generowanych przez ompilator (np. przypisania), jedynym powodem utworzenia z funcji operatora jest wygodna notacja wewnątrz lientów. Zwróćmy uwagę, że inaczej niż w przypadu notacji typowej dla funcji, notacja operatorowa nie zależy od ontestu wywołanie funcji w wyniu interpretacji operatora wywołanego przez metodę będzie taie samo ja w przypadu wywołania w zasięgu pliu 2. Rozważne wyorzystywanie przeciążania operatorów ma naturalną i oczywistą przewagę nad notacją funcyjną w szczególności w przypadu typów logicznych i arytmetycznych definiowanych przez użytownia. 1 Zobacz też meyers, pozycja 19, str ellis, punt , str. 332.

10 Rozdział 9. Projetowanie funcji 463 Przeanalizujmy dwa różne modele sładni poazane na listingu 9.1 odpowiadające dwóm różnym interfejsom dla omponentu zbioru liczb całowitych. Na listingu 9.1a poazano suteczny sposób zastosowania notacji operatorowej. Natura abstracji zbioru powoduje, że znaczenie tych operatorów staje się intuicyjne nawet dla tych programistów, tórzy nie znają poazywanego omponentu. Na listingu 9.1b poazano odpowiedni sładni z zastosowaniem bardziej nieporęcznej notacji funcyjnej 3. Dwa modele sładni dla abstracji zbioru liczb całowitych (a) z przeciążaniem operatorów (b) bez przeciążania operatorów Podstawowym powodem stosowania mechanizmu przeciążania operatorów powinna być czytelność (w więszym stopniu niż łatwość używania). 3 Nietóre metody zdefiniowano jao statyczne, aby umożliwić tę samą symetryczną niejawną onwersję argumentów, ja w przypadu odpowiadających im operatorów (patrz punt 9.1.5). Styl aapitów głęboo zagnieżdżonych wywołań funcji na rysunu 9.1b zapożyczono z taich języów, ja LISP i CLOS, gdzie taie onstrucje występują bardzo często.

11 464 Część III Zagadnienia dotyczące projetu logicznego W omawianej apliacji obsługi zbioru liczb całowitych notacja operatorowa w oczywisty sposób poprawia zarówno czytelność, ja też łatwość używania. Przez czytelność rozumiemy zdolność inżyniera oprogramowania do rozróżniania w szybi i precyzyjny sposób znanego odu treści funcji od nieznanego odu źródłowego. Łatwość używania dotyczy tego, ja łatwo programista może sutecznie wyorzystać obiet w celu utworzenia nowego oprogramowania. Zazwyczaj od źródłowy odczytuje się więcej razy, niż się go zapisuje ( w przypadu więszości dużych, wyorzystywanych przez długi ores czasu systemów oprogramowania, oszty utrzymania przeraczają oszty wytwarzania od 2 do 4 razy 4 ). Semantya przeciążonych operatorów powinna być naturalna, oczywista i intuicyjna dla lientów. Podczas projetowania często można otrzymać zgrabne i łatwe w użyciu apliacje operatorów, tóre nie mają intuicyjnego znaczenia dla programistów, nie znających naszego omponentu. Nierozsądne stare przyzwyczajenia, ja np. zdefiniowanie jednoargumentowego operatora jao sładowej lasy w celu odwrócenia olejności znaów w ciągu, jest nie na miejscu w środowisu projetowym dużej sali. Papieriem lamusowym odpowiadającym na pytanie czy zastosować notację operatorową powinno być stwierdzenie, czy istnieje naturalne i intuicyjne znaczenie natychmiast zrozumiałe dla nowych lientów, tóre poprawia poziom czytelności (lub przynajmniej go nie pogarsza) 5. Syntatyczne właściwości przeciążonych operatorów dla typów definiowanych przez użytownia powinny być lustrzaną opią właściwości zdefiniowanych dla typów podstawowych. Na poziomie semantycznym dość trudno dostarczyć szczegółowych wsazówe odnośnie tego co jest, a co nie jest intuicyjne. Jedna na poziomie syntatycznym, biorąc za podstawę implementację podstawowych typów języa, można sformułować ila zdecydowanych i dobrze zdefiniowanych stwierdzeń. Wzorowanie syntatycznych właściwości operatorów zdefiniowanych przez użytownia na predefiniowanych operatorach C++ pozwala na uninięcie niespodziane i sprawia, że sposób ich używania jest łatwiejszy do przewidzenia. W języu C++ ażde wyrażenie ma wartość. Istnieją dwa podstawowe typy wartości tzw. lwartości (ang. lvalue) oraz pwartości (ang. rvalue) 6. Lwartość to taa wartość, dla tórej można wyznaczyć adres. Jeżeli lwartość może się znaleźć po lewej stronie wyrażenia przypisania, mówi się o niej, że jest modyfiowalna, w innym przypadu oreśla się ją jao lwartość niemodyfiowalną 7. Do pwartości nie można przypisać wartości, ani 4 sommerville, punt 1.2.1, str Patrz też cargill, rozdział 5., str Pojęcia te pochodzą z lasycznego języa C: pojęcie lwartość oznacza, że wartość wyrażenia może się znaleźć po lewej stronie instrucji przypisania, natomiast pwartość może się znaleźć wyłącznie po jej prawej stronie. Wraz z pojawieniem się onstrucji w języu C++ i ANSI C, lwartości dzieli się teraz na dwie odmiany: modyfiowalne i niemodyfiowalne (patrz stroustrup, punt 2.1.2, str ). 7 ellis, podrozdział 3.7, str

12 Rozdział 9. Projetowanie funcji 465 nie można pobrać jej adresu 8. Najprostszą lwartością jest identyfiator zmiennej. Jeżeli zmienna nie jest zadelarowana jao, jest to lwartość modyfiowalna. Nietóre operatory, ja np. operator przypisania () i jego odmiany ( ), preinrementacji () i prederementacji () zastosowane do typów podstawowych, zwracają modyfiowalne lwartości. Operatory te zawsze zwracają zapisywalną referencję do modyfiowanego argumentu. Np. hipotetyczna definicja operatorów dla podstawowego typu (w przypadu jego implementacji jao lasy C++) może mieć postać taą, ja poazano na listingu 9.2. Hipotetyczna implementacja podstawowego typu double 8 Pola bitowe są wyjątiem w tym sensie, że mogą się znaleźć po lewej stronie wyrażenia przypisania, ale zgodnie z ARM (ellis, podrozdział 9.6, str. 184) nie można wyznaczyć ich adresu. Zasada ta dotyczy taże zmiennych tymczasowych typów zdefiniowanych przez użytownia, tóre nie posiadają nazwy (patrz punt 9.1.2).

13 466 Część III Zagadnienia dotyczące projetu logicznego Inne operatory poazane na listingu 9.2 zwracają pwartość, ponieważ nie ma możliwości zwrócenia odpowiedniej lwartości. W przypadu symetrycznych operatorów binarnych (ja np. oraz ) wartość do zwrócenia nie jest ani argumentem lewym, ani prawym, ale nową wartością uzysaną na podstawie obydwu, a zatem wyni musi być zwrócony przez wartość 9. Operatory równości (, ) oraz operatory relacyjne (,,, ) zawsze zwracają pwartość typu o wartości 0 lub 1, a zatem i w tym przypadu żaden z argumentów wejściowych nie jest odpowiednią wartością do zwrócenia. Operatory postinrementacji i postderementacji to interesujący przypade specjalny w tym sensie, że są to jedyne operatory, tóre modyfiują obiet, a zatem nie ma odpowiedniej lwartości do zwrócenia: Jao bardziej subtelny przyład przeanalizujmy dwa modele sładni odpowiadające abstracji ogólnej tabeli symboli, poazane na listingu 9.3. W obu przypadach na podstawie parametru typu tworzona jest tabela symboli, dodawane są dwa symbole, a następnie poszuuje się parametru foo według nazwy. Ponieważ możliwe jest, że w tabeli nie ma symbolu o oreślonej nazwie, zatem funcja wyszuująca nie powinna zwracać wyniu przez wartość, ani przez referencję ta więc wyni jest zwracany przez wsaźni (zwróćmy uwagę na to, w jai sposób i do jaiego stopnia wyorzystano zalety enapsulacji). Porównajmy tę sytuację z zastosowaniem operatora w odniesieniu do tablicy wartości. Spodziewamy się uzysać referencję do poindesowanej wartości, nie zaś wsaźni, tóry może mieć wartość. Ta różnica w sładni pomiędzy zastosowaniem operatora na listingu 9.3a oraz zastosowaniem operatora dla typów podstawowych powoduje, że notacja z wywołaniem funcji poazana na listingu 9.3b jest w tym przypadu lepsza. Zarezerwowanie notacji operatorowej dla tych przypadów, iedy sładnia stanowi lustrzane odbicie odpowiadającej jej sładni dla typów podstawowych, wzmacnia suteczność przeciążania operatorów. Dwa modele sładni dla abstracji ogólnej tabeli symboli (a) z przeciążaniem operatorów (b) bez przeciążania operatorów Na listingu 9.4. zestawiono delaracje więszości operatorów języa C++ w postaci, w jaiej użyto by ich w odniesieniu do podstawowych typów języa (podstawowe operatory nie dają zbyt wielu informacji). 9 Bardziej szczegółowe objaśnienie znajduje się w meyers, pozycja 23, str

14 Rozdział 9. Projetowanie funcji 467 Podsumowanie właściwości nietórych podstawowych operatorów Zwróćmy uwagę, że operatory jednoargumentowe, tóre nie modyfiują argumentów, nie muszą być sładowymi. Przyładowo, jednoargumentowy operator z powodzeniem działa dla typu zdefiniowanego przez użytownia, ja np., pomimo tego, że dla tego typu nie zdefiniowano operatora : Kod poazany powyżej działa dlatego, ponieważ typ wie, w jai sposób ma się przeształcić na podstawowy typ (), dla tórego zdefiniowano operator. Gdyby operator potratowano jao sładową hipotetycznej definicji lasy, nie można byłoby wyonać zdefiniowanej przez użytownia onwersji, a wyonanie poazanego powyżej odu zaończyłoby się błędem ompilacji. Aby wyłączyć możliwość niejawnej onwersji argumentów wolnego jednoargumentowego operatora, należy zdefiniować operację jao metodę np. zamiast operatora Patrz też murray, podrozdział 2.5, str. 44.

15 468 Część III Zagadnienia dotyczące projetu logicznego Decyzja dotycząca tego, czy funcja definiująca operator ma być sładową lasy, czy wolną funcją, zależy od tego, czy pożądana jest niejawna onwersja typu srajnego lewego operandu. Jeżeli operator modyfiuje ten operand, wówczas taa onwersja nie jest pożądana. Języ C++ sam w sobie jest obietywnym i właściwym standardem, według tórego należy modelować operatory definiowane przez użytownia. Efet implementacji operator+= jao wolnej funcji Zastanówmy się nad tym, co mogłoby się zdarzyć, gdybyśmy zdefiniowali operator onatenacji () dla lasy jao wolną funcję, zamiast emulacji podejścia zapożyczonego z typów podstawowych. Zgodnie z tym, co poazano na rysunu 9.1, utworzenie operatora jao wolnej funcji umożliwiło niejawną onwersję jego lewego operandu na tymczasowy obiet (oznaczony tu jao ) o wartości foo. Chociaż w przypadu typów podstawowych ta zmienna tymczasowa byłaby pwartością, to właśnie do tymczasowego obietu dołączono wartość bar (bez powstania błędu ompilacji) 11. Ponieważ taie działanie zasoczyłoby i zdenerwowało użytowniów, dobrze byłoby, aby je wyłączyć. 11 Obecnie w języu C++ dozwolone jest modyfiowanie nienazwanych tymczasowych zmiennych typu zdefiniowanego przez użytownia nieposiadających nazwy. Patrz murray, punt 2.7.3, str

16 Rozdział 9. Projetowanie funcji 469 Z drugiej strony spodziewamy się, że nietóre operatory (np. oraz ) będą działać bez względu na olejność ich argumentów. Przeanalizujmy operator, tóry służy do onatenacji dwóch ciągów znaów i zwraca wyni swojego działania przez wartość. Języ C++ pozwala na zdefiniowanie operatora jao sładowej lub niesładowej. To samo dotyczy operatora. Jeżeli zdecydujemy się na zdefiniowanie tych operatorów jao sładowych, wówczas narazimy się na możliwość następującego, nienormalnego działania naszych lientów: Problem polega na tym, że delaracje: oraz umożliwiają niejawną onwersję typu na po prawej stronie za pomocą onstrutora następującej postaci: natomiast taa onwersja dla argumentu po lewej stronie nie jest możliwa 12. Jeżeli operatory te będą wolne, problem symetrii dla lasy zostanie rozwiązany, do czasu dodania operatora onwersji: Na listingu 9.5 poazano problem powstały w wyniu dodania operatora onwersji (rzutowania) z typu na. Co jest dość dziwne, dwa niewątpliwie podobne operatory oraz nie są identyczne pod względem przeciążania, w co (niestety naiwnie) chcielibyśmy wierzyć. Różnica polega na tym, że teraz istnieją dwa sposoby interpretacji operatora : Jawna onwersja typu na i porównanie za pomocą. Niejawna onwersja typu na i porównanie za pomocą wbudowanego operatora dla typów wsaźniowych. Tai problem nie istnieje dla operatora, ponieważ w języu C++ nie ma sposobu dodania dwóch typów wsaźniowych i dlatego w tym przypadu nie ma niejednoznaczności. 12 ellis, punt , str. 333.

17 470 Część III Zagadnienia dotyczące projetu logicznego Niejednoznaczności wyniające z zastosowania dwóch operatorów onwersji W przypadu lasy wyorzystywanej w pratyce nie będziemy polegać na niejawnej onwersji w celu uzysania wartości znaowej, ze względu na obawę, że taa dodatowa onstrucja i destrucja spowoduje zbytni spade wydajności. Zamiast tego zdefiniujemy osobne przeciążone wersje operatora, tórych zadaniem będzie ja najbardziej wydajna obsługa ażdej z trzech możliwości, a tym samym rozwiązanie problemów niejednoznaczności. Niespójności powstałe w wyniu przeciążania operatorów mogą być oczywiste, denerwujące i osztowne dla użytowniów. Zgodnie z tym, co poazano na listingu 9.6, dla umożliwienia zaaceptowania wartości po lewej stronie operatora jesteśmy zmuszeni do zdefiniowania co najmniej jednej z funcji operatorów porównania jao wolnej funcji. Wyni zaimplementowania operatora == jao funcji sładowej

18 Rozdział 9. Projetowanie funcji 471 Na czym polega problem zdefiniowania jednej wersji funcji jao sładowej w przypadu, gdy zdefiniowano wszystie trzy wersje tego operatora? Otóż problem polega na tym, że bra symetrii mógłby zasoczyć użytowniów. W przypadu gdy jeden obiet może być niejawnie przeształcony na, a drugi na, spodziewamy się, że porząde porównania jest nieistotny. Jeżeli zatem onstrucja ompiluje się bez problemów, podobnie powinno być w przypadu zapisu (wynii wyonania obu onstrucji powinny być identyczne). Jedna jeżeli wersja: nie będzie dostępna jao wolna funcja, wówczas nie będzie sposobu przeprowadzenia następującej onwersji:

19 472 Część III Zagadnienia dotyczące projetu logicznego Wniose jest tai, że operator zawsze powinien być zdefiniowany jao wolna funcja niezależnie od zastosowania innych funcji. Te same powody dotyczą innych operatorów dwuargumentowych, tóre nie modyfiują żadnego z operandów i zwracają swój wyni przez wartość. Przyład, jai daje sam języ, jest bezstronnym i użytecznym modelem, tóry może służyć lientom do tworzenia podstawowych syntatycznych i asjomatycznych właściwości operatorów. Celem modelowania podstawowych operacji nie jest umożliwianie niejawnych onwersji samo w sobie, ale raczej zapewnienie symetrii po to, by uninąć niespodziane. W przypadu zastosowania przeciążania operatorów w szeroim zaresie należy się spodziewać, że abstracja może być wyorzystywana wielorotnie w wielu sytuacjach. Użytownicy omponentów wielorotnego użytu docenią spójny i profesjonalny interfejs niezależnie od syntatycznych niespodziane. Zwróćmy uwagę na to, że w języu C++ wymagane jest, aby zdefiniować jao sładowe następujące operatory 13 : przypisania, indesu, dostępu do sładowej lasy, wywołania funcji, onwersji, przydział pamięci (statyczny), zwolnienie pamięci (statyczne). Dynamiczne wiązanie umożliwia definiowanie metod, do tórych dostęp odbywa się za pomocą lasy podstawowej, przez rzeczywisty podtyp obietu, w odróżnieniu do typu wsaźnia lub referencji użytej w wywołaniu. W celu zapewnienia dynamicznego wiązania funcję należy zadelarować jao wirtualną (). W języu C++ wirtualne mogą być tylo metody. Jedna wniose, że polimorficzne działanie operatora wymaga, aby stał się funcją sładową, gdy w innym przypadu byłby wolną funcją, jest błędny. W celu osiągnięcia polimorficznego działania operatorów nie trzeba naruszać zagadnień syntatycznych, ja np. symetrycznej niejawnej onwersji operatorów dwuargumentowych. Na rysunu 9.2 poazano, w jai sposób operatory symetryczne mogą i powinny pozostać operatorami wolnymi pomimo zastosowania poliformizmu. Zamiast przeształcania ażdego z sześciu operatorów porównań i relacji na wirtualne metody lasy, opracowano jedną wirtualną metodę porównawczą. Te sześć operatorów w dalszym ciągu będzie działać symetrycznie bez względu na niejawną onwersję dowolnego typu. 13 ellis, podrozdział 12.3c, str. 306; stroustrup94, punt 3.6.2, str

20 Rozdział 9. Projetowanie funcji 473 Polimorficzne porównanie figur geometrycznych za pomocą wolnych operatorów Operatory porównań często mają sens nawet wtedy, gdy operatory relacji nie mają sensu (weźmy pod uwagę abstrację puntu). Czasami sortowanie heterogenicznych olecji pozwala na uzysanie wydajniejszego dostępu. W taich przypadach przydaje się wyorzystanie porządowania (dowolnego typu). Wirtualna metoda poazana na rysunu 9.2 pozwala na zdefiniowanie własnego identyfiatora typu fazy wyonania 14. Dzięi wyorzystaniu tego identyfiatora można sortować figury tego samego typu wyorzystując zdefiniowany dla nich indywidualny porząde, natomiast sortowanie innych typów można zdefiniować za pomocą innego (zupełnie dowolnego) porównania. Implementację lasy wyorzystywanej do porządowania figur poazano na listingu 9.7. Metody wirtualne implementują różnice w działaniu, natomiast pola różnice w wartościach. 14 Patrz ellis, podrozdział 10.2, str

MODYFIKACJA KOSZTOWA ALGORYTMU JOHNSONA DO SZEREGOWANIA ZADAŃ BUDOWLANYCH

MODYFIKACJA KOSZTOWA ALGORYTMU JOHNSONA DO SZEREGOWANIA ZADAŃ BUDOWLANYCH MODYFICJ OSZTOW LGORYTMU JOHNSON DO SZEREGOWNI ZDŃ UDOWLNYCH Michał RZEMIŃSI, Paweł NOW a a Wydział Inżynierii Lądowej, Załad Inżynierii Producji i Zarządzania w udownictwie, ul. rmii Ludowej 6, -67 Warszawa

Bardziej szczegółowo

Smarty PHP. Leksykon kieszonkowy

Smarty PHP. Leksykon kieszonkowy IDZ DO PRZYK ADOWY ROZDZIA SPIS TREœCI KATALOG KSI EK KATALOG ONLINE ZAMÓW DRUKOWANY KATALOG Smarty PHP. Leksykon kieszonkowy Autor: Daniel Bargie³ ISBN: 83-246-0676-9 Format: B6, stron: 112 TWÓJ KOSZYK

Bardziej szczegółowo

A i A j lub A j A i. Operator γ : 2 X 2 X jest ciągły gdy

A i A j lub A j A i. Operator γ : 2 X 2 X jest ciągły gdy 3. Wyład 7: Inducja i reursja struturalna. Termy i podstawianie termów. Dla uninięcia nieporozumień notacyjnych wprowadzimy rozróżnienie między funcjami i operatorami. Operatorem γ w zbiorze X jest funcja

Bardziej szczegółowo

Strona główna. Strona tytułowa. Programowanie. Spis treści. Sobera Jolanta 16.09.2006. Strona 1 z 26. Powrót. Full Screen. Zamknij.

Strona główna. Strona tytułowa. Programowanie. Spis treści. Sobera Jolanta 16.09.2006. Strona 1 z 26. Powrót. Full Screen. Zamknij. Programowanie Sobera Jolanta 16.09.2006 Strona 1 z 26 1 Wprowadzenie do programowania 4 2 Pierwsza aplikacja 5 3 Typy danych 6 4 Operatory 9 Strona 2 z 26 5 Instrukcje sterujące 12 6 Podprogramy 15 7 Tablice

Bardziej szczegółowo

TEORIA OBWODÓW I SYGNAŁÓW LABORATORIUM

TEORIA OBWODÓW I SYGNAŁÓW LABORATORIUM EORI OBWODÓW I SYGNŁÓW LBORORIUM KDEMI MORSK Katedra eleomuniacji Morsiej Ćwiczenie nr 2: eoria obwodów i sygnałów laboratorium ĆWICZENIE 2 BDNIE WIDM SYGNŁÓW OKRESOWYCH. Cel ćwiczenia Celem ćwiczenia

Bardziej szczegółowo

Język C++ Programowanie obiektowe

Język C++ Programowanie obiektowe Język C++ Programowanie obiektowe Cechy programowania obiektowego abstrakcyjne typy danych hermetyczność obiektów (kapsułkowanie) dziedziczenie polimorfizm Programowanie proceduralne vs. programowanie

Bardziej szczegółowo

PROE wykład 3 klasa string, przeciążanie funkcji, operatory. dr inż. Jacek Naruniec

PROE wykład 3 klasa string, przeciążanie funkcji, operatory. dr inż. Jacek Naruniec PROE wykład 3 klasa string, przeciążanie funkcji, operatory dr inż. Jacek Naruniec Przypomnienie z ostatnich wykładów Konstruktory/destruktory i kolejność ich wywołania w złożonej klasie. Referencja Obiekty

Bardziej szczegółowo

TEMAT : KLASY DZIEDZICZENIE

TEMAT : KLASY DZIEDZICZENIE TEMAT : KLASY DZIEDZICZENIE Wprowadzenie do dziedziczenia w języku C++ Język C++ możliwa tworzenie nowej klasy (nazywanej klasą pochodną) w oparciu o pewną wcześniej zdefiniowaną klasę (nazywaną klasą

Bardziej szczegółowo

Szablony klas, zastosowanie szablonów w programach

Szablony klas, zastosowanie szablonów w programach Szablony klas, zastosowanie szablonów w programach 1. Szablony klas i funkcji 2. Szablon klasy obsługującej uniwersalną tablicę wskaźników 3. Zastosowanie metody zwracającej przez return referencję do

Bardziej szczegółowo

PRZEWODNIK PO PRZEDMIOCIE

PRZEWODNIK PO PRZEDMIOCIE Nazwa przedmiotu: Kierunek: Informatyka Rodzaj przedmiotu: obowiązkowy w ramach treści kierunkowych, moduł kierunkowy ogólny Rodzaj zajęć: wykład, laboratorium I KARTA PRZEDMIOTU CEL PRZEDMIOTU METODY

Bardziej szczegółowo

1. Wartość, jaką odczytuje się z obszaru przydzielonego obiektowi to: a) I - wartość b) definicja obiektu c) typ oboektu d) p - wartość

1. Wartość, jaką odczytuje się z obszaru przydzielonego obiektowi to: a) I - wartość b) definicja obiektu c) typ oboektu d) p - wartość 1. Wartość, jaką odczytuje się z obszaru przydzielonego obiektowi to: a) I - wartość b) definicja obiektu c) typ oboektu d) p - wartość 2. Poprawna definicja wskażnika b to: a) float *a, **b = &a; b) float

Bardziej szczegółowo

Dr inż. Grażyna KRUPIŃSKA. D-10 pokój 227 WYKŁAD 7 WSTĘP DO INFORMATYKI

Dr inż. Grażyna KRUPIŃSKA. D-10 pokój 227 WYKŁAD 7 WSTĘP DO INFORMATYKI Dr inż. Grażyna KRUPIŃSKA Grazyna.Krupinska@fis.agh.edu.pl D-10 pokój 227 WYKŁAD 7 WSTĘP DO INFORMATYKI Wyrażenia 2 Wyrażenia w języku C są bardziej elastyczne niż wyrażenia w jakimkolwiek innym języku

Bardziej szczegółowo

Podstawy Programowania

Podstawy Programowania Podstawy Programowania dr Elżbieta Gawrońska gawronska@icis.pcz.pl Instytut Informatyki Teoretycznej i Stosowanej dr Elżbieta Gawrońska (ICIS) Podstawy Programowania 01 1 / 9 Plan wykładu 1 Informacje

Bardziej szczegółowo

Programowanie obiektowe - 1.

Programowanie obiektowe - 1. Programowanie obiektowe - 1 Mariusz.Masewicz@cs.put.poznan.pl Programowanie obiektowe Programowanie obiektowe (ang. object-oriented programming) to metodologia tworzenia programów komputerowych, która

Bardziej szczegółowo

Obszar statyczny dane dostępne w dowolnym momencie podczas pracy programu (wprowadzone słowem kluczowym static),

Obszar statyczny dane dostępne w dowolnym momencie podczas pracy programu (wprowadzone słowem kluczowym static), Tworzenie obiektów Dostęp do obiektów jest realizowany przez referencje. Obiekty w języku Java są tworzone poprzez użycie słowa kluczowego new. String lan = new String( Lancuch ); Obszary pamięci w których

Bardziej szczegółowo

Jak napisać program obliczający pola powierzchni różnych figur płaskich?

Jak napisać program obliczający pola powierzchni różnych figur płaskich? Część IX C++ Jak napisać program obliczający pola powierzchni różnych figur płaskich? Na początku, przed stworzeniem właściwego kodu programu zaprojektujemy naszą aplikację i stworzymy schemat blokowy

Bardziej szczegółowo

Języki i techniki programowania Ćwiczenia 2

Języki i techniki programowania Ćwiczenia 2 Języki i techniki programowania Ćwiczenia 2 Autor: Marcin Orchel Spis treści: Język C++... 5 Przekazywanie parametrów do funkcji... 5 Przekazywanie parametrów w Javie.... 5 Przekazywanie parametrów w c++...

Bardziej szczegółowo

Style programowania - krótki przeglad

Style programowania - krótki przeglad Bogdan Kreczmer ZPCiR IIAiR PWr pokój 307 budynek C3 bogdan.kreczmer@pwr.wroc.pl Copyright c 2005 2008 Bogdan Kreczmer Niniejszy dokument zawiera materiały do wykładu na temat programowania obiektowego.

Bardziej szczegółowo

1 Podstawy c++ w pigułce.

1 Podstawy c++ w pigułce. 1 Podstawy c++ w pigułce. 1.1 Struktura dokumentu. Kod programu c++ jest zwykłym tekstem napisanym w dowolnym edytorze. Plikowi takiemu nadaje się zwykle rozszerzenie.cpp i kompiluje za pomocą kompilatora,

Bardziej szczegółowo

Konstruktory. Streszczenie Celem wykładu jest zaprezentowanie konstruktorów w Javie, syntaktyki oraz zalet ich stosowania. Czas wykładu 45 minut.

Konstruktory. Streszczenie Celem wykładu jest zaprezentowanie konstruktorów w Javie, syntaktyki oraz zalet ich stosowania. Czas wykładu 45 minut. Konstruktory Streszczenie Celem wykładu jest zaprezentowanie konstruktorów w Javie, syntaktyki oraz zalet ich stosowania. Czas wykładu 45 minut. Rozpatrzmy przykład przedstawiający klasę Prostokat: class

Bardziej szczegółowo

Podstawy Programowania

Podstawy Programowania Podstawy Programowania dr Elżbieta Gawrońska gawronska@icis.pcz.pl Instytut Informatyki Teoretycznej i Stosowanej dr Elżbieta Gawrońska (ICIS) Podstawy Programowania 14 1 / 9 Plan wykładu 1 Sesja egzaminacyjna

Bardziej szczegółowo

Pytania sprawdzające wiedzę z programowania C++

Pytania sprawdzające wiedzę z programowania C++ Pytania sprawdzające wiedzę z programowania C++ Wstęp 1. Zaprezentuj mechanikę tworzenia programu napisanego w języku C++. 2. Co to jest kompilacja? 3. Co to jest konsolidacja? 4. Co to jest kod wykonywalny?

Bardziej szczegółowo

PARADYGMATY PROGRAMOWANIA Wykład 4

PARADYGMATY PROGRAMOWANIA Wykład 4 PARADYGMATY PROGRAMOWANIA Wykład 4 Metody wirtualne i polimorfizm Metoda wirualna - metoda używana w identyczny sposób w całej hierarchii klas. Wybór funkcji, którą należy wykonać po wywołaniu metody wirtualnej

Bardziej szczegółowo

znajdowały się różne instrukcje) to tak naprawdę definicja funkcji main.

znajdowały się różne instrukcje) to tak naprawdę definicja funkcji main. Część XVI C++ Funkcje Jeśli nasz program rozrósł się już do kilkudziesięciu linijek, warto pomyśleć o jego podziale na mniejsze części. Poznajmy więc funkcje. Szybko się przekonamy, że funkcja to bardzo

Bardziej szczegółowo

C# 6.0 : kompletny przewodnik dla praktyków / Mark Michaelis, Eric Lippert. Gliwice, cop Spis treści

C# 6.0 : kompletny przewodnik dla praktyków / Mark Michaelis, Eric Lippert. Gliwice, cop Spis treści C# 6.0 : kompletny przewodnik dla praktyków / Mark Michaelis, Eric Lippert. Gliwice, cop. 2016 Spis treści Spis rysunków 11 Spis tabel 13 Przedmowa 15 Wprowadzenie 17 Podziękowania 27 O autorach 29 1 Wprowadzenie

Bardziej szczegółowo

METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE. Wykład 02

METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE. Wykład 02 METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE Wykład 02 NAJPROSTSZY PROGRAM /* (Prawie) najprostszy przykład programu w C */ /*==================*/ /* Między tymi znaczkami można pisać, co się

Bardziej szczegółowo

Programowanie obiektowe

Programowanie obiektowe Laboratorium z przedmiotu Programowanie obiektowe - zestaw 02 Cel zajęć. Celem zajęć jest zapoznanie z praktycznymi aspektami projektowania oraz implementacji klas i obiektów z wykorzystaniem dziedziczenia.

Bardziej szczegółowo

MySQL. Æwiczenia praktyczne

MySQL. Æwiczenia praktyczne IDZ DO PRZYK ADOWY ROZDZIA SPIS TRE CI KATALOG KSI EK KATALOG ONLINE ZAMÓW DRUKOWANY KATALOG MySQL. Æwiczenia praktyczne Autor: Marek Nowakowski ISBN: 83-7197-884-7 Format: B5, stron: 114 TWÓJ KOSZYK DODAJ

Bardziej szczegółowo

Modelowanie i Programowanie Obiektowe

Modelowanie i Programowanie Obiektowe Modelowanie i Programowanie Obiektowe Wykład I: Wstęp 20 październik 2012 Programowanie obiektowe Metodyka wytwarzania oprogramowania Metodyka Metodyka ustandaryzowane dla wybranego obszaru podejście do

Bardziej szczegółowo

Wpływ zamiany typów elektrowni wiatrowych o porównywalnych parametrach na współpracę z węzłem sieciowym

Wpływ zamiany typów elektrowni wiatrowych o porównywalnych parametrach na współpracę z węzłem sieciowym Wpływ zamiany typów eletrowni wiatrowych o porównywalnych parametrach na współpracę z węzłem sieciowym Grzegorz Barzy Paweł Szwed Instytut Eletrotechnii Politechnia Szczecińsa 1. Wstęp Ostatnie ila lat,

Bardziej szczegółowo

Szablony funkcji i szablony klas

Szablony funkcji i szablony klas Bogdan Kreczmer bogdan.kreczmer@pwr.wroc.pl Zakład Podstaw Cybernetyki i Robotyki Instytut Informatyki, Automatyki i Robotyki Politechnika Wrocławska Kurs: Copyright c 2011 Bogdan Kreczmer Niniejszy dokument

Bardziej szczegółowo

ZASADY PROGRAMOWANIA KOMPUTERÓW

ZASADY PROGRAMOWANIA KOMPUTERÓW POLITECHNIKA WARSZAWSKA Instytut Automatyki i i Robotyki ZASADY PROGRAMOWANIA KOMPUTERÓW Język Język programowania: C/C++ Środowisko programistyczne: C++Builder 6 Wykład 9.. Wskaźniki i i zmienne dynamiczne.

Bardziej szczegółowo

AiSD zadanie trzecie

AiSD zadanie trzecie AiSD zadanie trzecie Gliwiński Jarosław Marek Kruczyński Konrad Marek Grupa dziekańska I5 5 czerwca 2008 1 Wstęp Celem postawionym przez zadanie trzecie było tzw. sortowanie topologiczne. Jest to typ sortowania

Bardziej szczegółowo

Programowanie (C++) NI 5

Programowanie (C++) NI 5 Forma kształcenia i sposób weryfikacji efektów kształcenia Efekty kształcenia WYDZIAŁ FIZYKI UwB kierunek studiów: FIZYKA specjalność: FIZYKA KOD USOS: 0900 FS1 2 PRO Karta przedmiotu Przedmiot moduł ECTS

Bardziej szczegółowo

Dziedziczenie jednobazowe, poliformizm, tablice wskaźników na obiekty

Dziedziczenie jednobazowe, poliformizm, tablice wskaźników na obiekty Dziedziczenie jednobazowe, poliformizm, tablice wskaźników na obiekty 1. Polimorfizm (1) tablice wskaźników na obiekty 2. Polimorfizm (2) tablice wskaźników na obiekty 3. Polimorfizm (3) tablice wskaźników

Bardziej szczegółowo

Dziedziczenie. Tomasz Borzyszkowski

Dziedziczenie. Tomasz Borzyszkowski Dziedziczenie Tomasz Borzyszkowski Podstawy Zobacz: Dziedzictwo1.java Dziedzictwo2.java Dziedziczenie jest jedną z podstawowych cech OOP ponieważ umożliwia łatwe implementowanie klasyfikacji hierarchicznych.

Bardziej szczegółowo

Część I Programowanie niskiego poziomu w języku C 19

Część I Programowanie niskiego poziomu w języku C 19 Spis treści Przedmowa 13 Wstęp 15 Część I Programowanie niskiego poziomu w języku C 19 Wprowadzenie 21 1 Typy 23 1.1 Fundamentalne typy danych...................... 23 1.2 Typy pochodne.............................

Bardziej szczegółowo

Definicje klas i obiektów. Tomasz Borzyszkowski

Definicje klas i obiektów. Tomasz Borzyszkowski Definicje klas i obiektów Tomasz Borzyszkowski Podstawy Do tej pory używaliśmy klas jedynie po to, by zdefiniować metodę main(). Klasy mają znacznie szersze zastosowanie w Java. W OOP (także w Java) klasy

Bardziej szczegółowo

1 Podstawy c++ w pigułce.

1 Podstawy c++ w pigułce. 1 Podstawy c++ w pigułce. 1.1 Struktura dokumentu. Kod programu c++ jest zwykłym tekstem napisanym w dowolnym edytorze. Plikowi takiemu nadaje się zwykle rozszerzenie.cpp i kompiluje za pomocą kompilatora,

Bardziej szczegółowo

Temat 1: Podstawowe pojęcia: program, kompilacja, kod

Temat 1: Podstawowe pojęcia: program, kompilacja, kod Temat 1: Podstawowe pojęcia: program, kompilacja, kod wynikowy. Przykłady najprostszych programów. Definiowanie zmiennych. Typy proste. Operatory: arytmetyczne, przypisania, inkrementacji, dekrementacji,

Bardziej szczegółowo

Wykład I. Programowanie II - semestr II Kierunek Informatyka. dr inż. Janusz Słupik. Wydział Matematyki Stosowanej Politechniki Śląskiej

Wykład I. Programowanie II - semestr II Kierunek Informatyka. dr inż. Janusz Słupik. Wydział Matematyki Stosowanej Politechniki Śląskiej Wykład I - semestr II Kierunek Informatyka Wydział Matematyki Stosowanej Politechniki Śląskiej Gliwice, 2015 c Copyright 2015 Janusz Słupik Zaliczenie przedmiotu Do zaliczenia przedmiotu niezbędne jest

Bardziej szczegółowo

Spis treści. Wprowadzenie 15

Spis treści. Wprowadzenie 15 Spis treści Wprowadzenie 15 1. Mechanizmy języka C++ 19 1.1. Struktura programu jednostki translacji.................. 21 1.1.1. Składnia tekstu źródłowego...................... 22 1.1.2. Preprocesor...

Bardziej szczegółowo

0 + 0 = 0, = 1, = 1, = 0.

0 + 0 = 0, = 1, = 1, = 0. 5 Kody liniowe Jak już wiemy, w celu przesłania zakodowanego tekstu dzielimy go na bloki i do każdego z bloków dodajemy tak zwane bity sprawdzające. Bity te są w ścisłej zależności z bitami informacyjnymi,

Bardziej szczegółowo

Zaawansowane programowanie w C++ (PCP)

Zaawansowane programowanie w C++ (PCP) Zaawansowane programowanie w C++ (PCP) Wykład 3 - polimorfizm. dr inż. Robert Nowak - p. 1/14 Powtórzenie Powtórzenie: klasy autonomiczne: konstruktor, konstruktor kopiujacy, operator przypisania, destruktor

Bardziej szczegółowo

ROZDZIAŁ 10 METODA KOMPONOWANIA ZESPOŁU CZYNNIKI EFEKTYWNOŚCI SKŁADU ZESPOŁU

ROZDZIAŁ 10 METODA KOMPONOWANIA ZESPOŁU CZYNNIKI EFEKTYWNOŚCI SKŁADU ZESPOŁU Agniesza Dziurzańsa ROZDZIAŁ 10 METODA KOMPONOWANIA ZESPOŁU 10.1. CZYNNIKI EFEKTYWNOŚCI SKŁADU ZESPOŁU Przeprowadzona analiza formacji, jaą jest zespół (zobacz rozdział 5), wyazała, że cechy tóre powstają

Bardziej szczegółowo

Faza Określania Wymagań

Faza Określania Wymagań Faza Określania Wymagań Celem tej fazy jest dokładne określenie wymagań klienta wobec tworzonego systemu. W tej fazie dokonywana jest zamiana celów klienta na konkretne wymagania zapewniające osiągnięcie

Bardziej szczegółowo

Język Java część 2 (przykładowa aplikacja)

Język Java część 2 (przykładowa aplikacja) Programowanie obiektowe Język Java część 2 (przykładowa aplikacja) Paweł Rogaliński Instytut Informatyki, Automatyki i Robotyki Politechniki Wrocławskiej pawel.rogalinski @ pwr.wroc.pl Java Java przykładowa

Bardziej szczegółowo

Komputerowa reprezentacja oraz prezentacja i graficzna edycja krzywoliniowych obiektów 3d

Komputerowa reprezentacja oraz prezentacja i graficzna edycja krzywoliniowych obiektów 3d Komputerowa reprezentacja oraz prezentacja i graficzna edycja rzywoliniowych obietów 3d Jan Prusaowsi 1), Ryszard Winiarczy 1,2), Krzysztof Sabe 2) 1) Politechnia Śląsa w Gliwicach, 2) Instytut Informatyi

Bardziej szczegółowo

Programowanie Obiektowe i C++

Programowanie Obiektowe i C++ Programowanie Obiektowe i C++ Marcin Benke Instytut Informatyki UW 30.10.2006 Marcin Benke (IIUW) Programowanie Obiektowe i C++ 30.10.2006 85 / 112 Zgodność typów Rozważmy klasy class A { //... }; class

Bardziej szczegółowo

Obiektowy PHP. Czym jest obiekt? Definicja klasy. Składowe klasy pola i metody

Obiektowy PHP. Czym jest obiekt? Definicja klasy. Składowe klasy pola i metody Obiektowy PHP Czym jest obiekt? W programowaniu obiektem można nazwać każdy abstrakcyjny byt, który programista utworzy w pamięci komputera. Jeszcze bardziej upraszczając to zagadnienie, można powiedzieć,

Bardziej szczegółowo

Wprowadzenie w dziedziczenie. Klasa D dziedziczy klasę B: Klasa B klasa bazowa (base class), klasa D klasa pochodna (derived class).

Wprowadzenie w dziedziczenie. Klasa D dziedziczy klasę B: Klasa B klasa bazowa (base class), klasa D klasa pochodna (derived class). Wprowadzenie w dziedziczenie Klasa D dziedziczy klasę B: B klasa bazowa D klasa pochodna Klasa B klasa bazowa (base class), klasa D klasa pochodna (derived class). Najpierw jest tworzona klasa bazowa,

Bardziej szczegółowo

Zaawansowane programowanie w języku C++ Klasy w C++

Zaawansowane programowanie w języku C++ Klasy w C++ Zaawansowane programowanie w języku C++ Klasy w C++ Prezentacja jest współfinansowana przez Unię Europejską w ramach Europejskiego Funduszu Społecznego w projekcie pt. Innowacyjna dydaktyka bez ograniczeń

Bardziej szczegółowo

2. Klasy cz. 2 - Konstruktor kopiujący. Pola tworzone statycznie i dynamicznie - Funkcje zaprzyjaźnione - Składowe statyczne

2. Klasy cz. 2 - Konstruktor kopiujący. Pola tworzone statycznie i dynamicznie - Funkcje zaprzyjaźnione - Składowe statyczne Tematyka wykładów 1. Wprowadzenie. Klasy cz. 1 - Język C++. Programowanie obiektowe - Klasy i obiekty - Budowa i deklaracja klasy. Prawa dostępu - Pola i funkcje składowe - Konstruktor i destruktor - Tworzenie

Bardziej szczegółowo

Multimedia JAVA. Historia

Multimedia JAVA. Historia Multimedia JAVA mgr inż. Piotr Odya piotrod@sound.eti.pg.gda.pl Historia 1990 rozpoczęcie prac nad nowym systemem operacyjnym w firmie SUN, do jego tworzenia postanowiono wykorzystać nowy język programowania

Bardziej szczegółowo

Klasa jest nowym typem danych zdefiniowanym przez użytkownika. Najprostsza klasa jest po prostu strukturą, np

Klasa jest nowym typem danych zdefiniowanym przez użytkownika. Najprostsza klasa jest po prostu strukturą, np Klasy Klasa jest nowym typem danych zdefiniowanym przez użytkownika Wartości takiego typu nazywamy obiektami Najprostsza klasa jest po prostu strukturą, np struct Zespolona { Klasy jako struktury z operacjami

Bardziej szczegółowo

Język C zajęcia nr 11. Funkcje

Język C zajęcia nr 11. Funkcje Język C zajęcia nr 11 Funkcje W języku C idea podprogramów realizowana jest wyłącznie poprzez definiowanie i wywołanie funkcji. Każda funkcja musi być przed wywołaniem zadeklarowana. Deklaracja funkcji

Bardziej szczegółowo

Układ równań liniowych

Układ równań liniowych Układ równań liniowych 1 Cel zadania Wykształcenie umiejętności projektowania własnych klas modelujących pojęcia niezbędne do rozwiązania postawionego problemu. Rozwinięcie umiejętności przeciążania operatorów

Bardziej szczegółowo

Programowanie, część I

Programowanie, część I 11 marca 2010 Kontakt Wstęp Informacje organizacyjne Materiał na ćwiczenia Plan wykładu http://www.fuw.edu.pl/~rwys/prog rwys@fuw.edu.pl tel. 22 55 32 263 Materiał na ćwiczenia Informacje organizacyjne

Bardziej szczegółowo

Java Język programowania

Java Język programowania Java Język programowania Język Java Bazuje i jest zbliżony do C/C++ Porosty zbiór typów danych (podział na typy prymitywne i obiektowe) Zarządzanie pamięcią i Garbage Collection Zintegrowana synchronizacja

Bardziej szczegółowo

Kurs programowania. Wstęp - wykład 0. Wojciech Macyna. 22 lutego 2016

Kurs programowania. Wstęp - wykład 0. Wojciech Macyna. 22 lutego 2016 Wstęp - wykład 0 22 lutego 2016 Historia Simula 67 język zaprojektowany do zastosowan symulacyjnych; Smalltalk 80 pierwszy język w pełni obiektowy; Dodawanie obiektowości do języków imperatywnych: Pascal

Bardziej szczegółowo

Teoretyczne podstawy informatyki

Teoretyczne podstawy informatyki Teoretyczne podstawy informatyki Wykład 8b: Algebra relacyjna http://hibiscus.if.uj.edu.pl/~erichter/dydaktyka2009/tpi-2009 Prof. dr hab. Elżbieta Richter-Wąs 1 Algebra relacyjna Algebra relacyjna (ang.

Bardziej szczegółowo

Paradygmaty programowania

Paradygmaty programowania Paradygmaty programowania Jacek Michałowski, Piotr Latanowicz 15 kwietnia 2014 Jacek Michałowski, Piotr Latanowicz () Paradygmaty programowania 15 kwietnia 2014 1 / 12 Zadanie 1 Zadanie 1 Rachunek predykatów

Bardziej szczegółowo

Wzorce projektowe i refaktoryzacja

Wzorce projektowe i refaktoryzacja Wzorce projektowe i refaktoryzacja Paweł Kozioł p.koziol@students.mimuw.edu.pl 18.01.2005 Moja praca magisterska Narzędzie dla środowiska Eclipse wspierające stosowanie wzorców projektowych J2EE Prowadzący:

Bardziej szczegółowo

HIERARCHICZNY SYSTEM ZARZĄDZANIA RUCHEM LOTNICZYM - ASPEKTY OCENY BEZPIECZEŃSTWA

HIERARCHICZNY SYSTEM ZARZĄDZANIA RUCHEM LOTNICZYM - ASPEKTY OCENY BEZPIECZEŃSTWA Jace Sorupsi Hierarchiczny system Zarządzania ruchem lotniczym aspety oceny bezpieczeństwa, Logistya (ISSN 1231-5478) No 6, Instytut Logistyi i HIERARCHICZNY SYSTEM ZARZĄDZANIA RUCHEM LOTNICZYM - ASPEKTY

Bardziej szczegółowo

Typy, klasy typów, składnie w funkcji

Typy, klasy typów, składnie w funkcji Typy, klasy typów, składnie w funkcji Typy w Haskell Każde wyrażenie w Haskell posiada zdefiniowany typ. Dzięki temu już na etapie kompilacji kodu następuje sprawdzenie poprawności kodu i zabezpiecza nas

Bardziej szczegółowo

Wykład VII. Programowanie. dr inż. Janusz Słupik. Gliwice, 2014. Wydział Matematyki Stosowanej Politechniki Śląskiej. c Copyright 2014 Janusz Słupik

Wykład VII. Programowanie. dr inż. Janusz Słupik. Gliwice, 2014. Wydział Matematyki Stosowanej Politechniki Śląskiej. c Copyright 2014 Janusz Słupik Wykład VII Wydział Matematyki Stosowanej Politechniki Śląskiej Gliwice, 2014 c Copyright 2014 Janusz Słupik Kompilacja Kompilator C program do tłumaczenia kodu źródłowego na język maszynowy. Preprocesor

Bardziej szczegółowo

Programowanie komputerów

Programowanie komputerów Programowanie komputerów Wykład 1-2. Podstawowe pojęcia Plan wykładu Omówienie programu wykładów, laboratoriów oraz egzaminu Etapy rozwiązywania problemów dr Helena Dudycz Katedra Technologii Informacyjnych

Bardziej szczegółowo

Matematyka z komputerem dla gimnazjum

Matematyka z komputerem dla gimnazjum IDZ DO PRZYK ADOWY ROZDZIA KATALOG KSI EK ZAMÓW DRUKOWANY KATALOG 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

Bardziej szczegółowo

Metody komputerowe i obliczeniowe Metoda Elementów Skoczonych. Element jednowymiarowy i jednoparametrowy : spryna

Metody komputerowe i obliczeniowe Metoda Elementów Skoczonych. Element jednowymiarowy i jednoparametrowy : spryna Metody omputerowe i obliczeniowe Metoda Elementów Soczonych Element jednowymiarowy i jednoparametrowy : spryna Jest to najprostszy element: współrzdne loalne i globalne jego wzłów s taie same nie potrzeba

Bardziej szczegółowo

PRZEWODNIK PO PRZEDMIOCIE

PRZEWODNIK PO PRZEDMIOCIE Nazwa przedmiotu: Algorytmy i programowanie Algorithms and Programming Kierunek: Zarządzanie i Inżynieria Produkcji Rodzaj przedmiotu: kierunkowy Poziom studiów: studia I stopnia forma studiów: studia

Bardziej szczegółowo

Język ludzki kod maszynowy

Język ludzki kod maszynowy Język ludzki kod maszynowy poziom wysoki Język ludzki (mowa) Język programowania wysokiego poziomu Jeśli liczba punktów jest większa niż 50, test zostaje zaliczony; w przeciwnym razie testu nie zalicza

Bardziej szczegółowo

Zaawansowane programowanie w C++ (PCP)

Zaawansowane programowanie w C++ (PCP) Zaawansowane programowanie w C++ (PCP) Wykład 6 - szablony. dr inż. Robert Nowak - p. 1/15 Kolekcje i algorytmy» Deklaracja szablonu y Pojęcia niezależne od typu: kolekcje (np. listy) algorytmy (np. znajdowania

Bardziej szczegółowo

Podstawy programowania w języku C++

Podstawy programowania w języku C++ Podstawy programowania w języku C++ Część ósma Zmienne wskaźnikowe koncepcja, podstawowe zastosowania Wersja skrócona, tylko C++ Autor Roman Simiński Kontakt roman.siminski@us.edu.pl www.us.edu.pl/~siminski

Bardziej szczegółowo

Wstęp do programowania

Wstęp do programowania Wstęp do programowania wykład 2 Piotr Cybula Wydział Matematyki i Informatyki UŁ 2012/2013 http://www.math.uni.lodz.pl/~cybula Język programowania Każdy język ma swoją składnię: słowa kluczowe instrukcje

Bardziej szczegółowo

EGZAMIN PROGRAMOWANIE II (10 czerwca 2010) pytania i odpowiedzi

EGZAMIN PROGRAMOWANIE II (10 czerwca 2010) pytania i odpowiedzi EGZAMIN PROGRAMOWANIE II (10 czerwca 2010) pytania i odpowiedzi 1. Napisz wskaźnik do funkcji fun tak zdeklarowanej: T* fun( int, double const& ) const; definicja wskaźnika musi być precyzyjna, inaczej

Bardziej szczegółowo

JAVA. Java jest wszechstronnym językiem programowania, zorientowanym. apletów oraz samodzielnych aplikacji.

JAVA. Java jest wszechstronnym językiem programowania, zorientowanym. apletów oraz samodzielnych aplikacji. JAVA Java jest wszechstronnym językiem programowania, zorientowanym obiektowo, dostarczającym możliwość uruchamiania apletów oraz samodzielnych aplikacji. Java nie jest typowym kompilatorem. Źródłowy kod

Bardziej szczegółowo

Programowanie obiektowe, wykład nr 6. Klasy i obiekty

Programowanie obiektowe, wykład nr 6. Klasy i obiekty Dr hab. inż. Lucyna Leniowska, prof. UR, Zakład Mechatroniki, Automatyki i Optoelektroniki, IT Programowanie obiektowe, wykład nr 6 Klasy i obiekty W programowaniu strukturalnym rozwój oprogramowania oparto

Bardziej szczegółowo

Java - tablice, konstruktory, dziedziczenie i hermetyzacja

Java - tablice, konstruktory, dziedziczenie i hermetyzacja Java - tablice, konstruktory, dziedziczenie i hermetyzacja Programowanie w językach wysokiego poziomu mgr inż. Anna Wawszczak PLAN WYKŁADU zmienne tablicowe konstruktory klas dziedziczenie hermetyzacja

Bardziej szczegółowo

Matematyka dyskretna. Wykład 2: Kombinatoryka. Gniewomir Sarbicki

Matematyka dyskretna. Wykład 2: Kombinatoryka. Gniewomir Sarbicki Matematya dysretna Wyład 2: Kombinatorya Gniewomir Sarbici Kombinatorya Definicja Kombinatorya zajmuje się oreślaniem mocy zbiorów sończonych, w szczególności mocy zbiorów odwzorowań jednego zbioru w drugi

Bardziej szczegółowo

2 Przygotował: mgr inż. Maciej Lasota

2 Przygotował: mgr inż. Maciej Lasota Laboratorium nr 2 1/7 Język C Instrukcja laboratoryjna Temat: Wprowadzenie do języka C 2 Przygotował: mgr inż. Maciej Lasota 1) Wprowadzenie do języka C. Język C jest językiem programowania ogólnego zastosowania

Bardziej szczegółowo

Optymalizacja harmonogramów budowlanych - problem szeregowania zadań

Optymalizacja harmonogramów budowlanych - problem szeregowania zadań Mieczysław OŁOŃSI Wydział Budownictwa i Inżynierii Środowisa, Szoła Główna Gospodarstwa Wiejsiego, Warszawa, ul. Nowoursynowsa 159 e-mail: mieczyslaw_polonsi@sggw.pl Założenia Optymalizacja harmonogramów

Bardziej szczegółowo

Zaawansowane programowanie w języku C++ Programowanie obiektowe

Zaawansowane programowanie w języku C++ Programowanie obiektowe Zaawansowane programowanie w języku C++ Programowanie obiektowe Prezentacja jest współfinansowana przez Unię Europejską w ramach Europejskiego Funduszu Społecznego w projekcie pt. Innowacyjna dydaktyka

Bardziej szczegółowo

Język programowania DELPHI / Andrzej Marciniak. Poznań, Spis treści

Język programowania DELPHI / Andrzej Marciniak. Poznań, Spis treści Język programowania DELPHI / Andrzej Marciniak. Poznań, 2012 Spis treści Przedmowa 11 Przyjęta notacja 13 Rozdział 1. Wprowadzenie 15 1.1. Ogólne zasady programowania zorientowanego obiektowo 15 1.2. Historia

Bardziej szczegółowo

KARTA KURSU. Programowanie obiektowe

KARTA KURSU. Programowanie obiektowe KARTA KURSU Nazwa Nazwa w j. ang. Programowanie obiektowe Object oriented programming Kod Punktacja ECTS* Stacjonarne 6 Niestacjonarne 4 Koordynator dr Dariusz Pałka Zespół dydaktyczny: dr Dariusz Pałka

Bardziej szczegółowo

Programowanie obiektowe. Materiały przygotował: mgr inż. Wojciech Frohmberg

Programowanie obiektowe. Materiały przygotował: mgr inż. Wojciech Frohmberg Programowanie obiektowe Materiały przygotował: mgr inż. Wojciech Frohmberg Konstruktor Konstruktor w językach zorientowanych obiektowo pełni podwójną rolę: przydziela pamięć na obiekt, zdefiniowany klasą

Bardziej szczegółowo

zmienne stanowią abstrakcję komórek pamięci: programista może przechowywać dane w pamięci, nie martwiąc się o techniczne szczegóły (np.

zmienne stanowią abstrakcję komórek pamięci: programista może przechowywać dane w pamięci, nie martwiąc się o techniczne szczegóły (np. ZMIENNE 39 zmienne stanowią abstrakcję komórek pamięci: programista może przechowywać dane w pamięci, nie martwiąc się o techniczne szczegóły (np. przydział pamięci). 40 Nazewnictwo zmiennych Dozwolone

Bardziej szczegółowo

Symfonia C++ standard : programowanie w języku C++ orientowane obiektowo. T. 2 / Jerzy Grębosz. Wyd. 3 C popr. Kraków, 2015.

Symfonia C++ standard : programowanie w języku C++ orientowane obiektowo. T. 2 / Jerzy Grębosz. Wyd. 3 C popr. Kraków, 2015. Symfonia C++ standard : programowanie w języku C++ orientowane obiektowo. T. 2 / Jerzy Grębosz. Wyd. 3 C popr. Kraków, 2015 Spis treści 20 Struktury, Unie, Pola bitowe 613 20.1 Struktura 613 20.2 Unia

Bardziej szczegółowo

Informatyka I. Dziedziczenie. Nadpisanie metod. Klasy abstrakcyjne. Wskaźnik this. Metody i pola statyczne. dr inż. Andrzej Czerepicki

Informatyka I. Dziedziczenie. Nadpisanie metod. Klasy abstrakcyjne. Wskaźnik this. Metody i pola statyczne. dr inż. Andrzej Czerepicki Informatyka I Dziedziczenie. Nadpisanie metod. Klasy abstrakcyjne. Wskaźnik this. Metody i pola statyczne. dr inż. Andrzej Czerepicki Politechnika Warszawska Wydział Transportu 2017 Dziedziczenie klas

Bardziej szczegółowo

C++. Leksykon kieszonkowy

C++. Leksykon kieszonkowy IDZ DO PRZYK ADOWY ROZDZIA KATALOG KSI EK ZAMÓW DRUKOWANY KATALOG TWÓJ KOSZYK CENNIK I INFORMACJE ZAMÓW INFORMACJE O NOWOCIACH ZAMÓW CENNIK CZYTELNIA SPIS TRECI KATALOG ONLINE DODAJ DO KOSZYKA FRAGMENTY

Bardziej szczegółowo

Podstawowe elementy proceduralne w C++ Program i wyjście. Zmienne i arytmetyka. Wskaźniki i tablice. Testy i pętle. Funkcje.

Podstawowe elementy proceduralne w C++ Program i wyjście. Zmienne i arytmetyka. Wskaźniki i tablice. Testy i pętle. Funkcje. Podstawowe elementy proceduralne w C++ Program i wyjście Zmienne i arytmetyka Wskaźniki i tablice Testy i pętle Funkcje Pierwszy program // Niezbędne zaklęcia przygotowawcze ;-) #include using

Bardziej szczegółowo

Podstawy programowania skrót z wykładów:

Podstawy programowania skrót z wykładów: Podstawy programowania skrót z wykładów: // komentarz jednowierszowy. /* */ komentarz wielowierszowy. # include dyrektywa preprocesora, załączająca biblioteki (pliki nagłówkowe). using namespace

Bardziej szczegółowo

Temat: Dynamiczne przydzielanie i zwalnianie pamięci. Struktura listy operacje wstawiania, wyszukiwania oraz usuwania danych.

Temat: Dynamiczne przydzielanie i zwalnianie pamięci. Struktura listy operacje wstawiania, wyszukiwania oraz usuwania danych. Temat: Dynamiczne przydzielanie i zwalnianie pamięci. Struktura listy operacje wstawiania, wyszukiwania oraz usuwania danych. 1. Rodzaje pamięci używanej w programach Pamięć komputera, dostępna dla programu,

Bardziej szczegółowo

Języki i paradygmaty programowania

Języki i paradygmaty programowania Języki i paradygmaty programowania Instytut Teleinformatyki ITI PK Kraków marzec 2012 Spis rzeczy 1 Operatory w C/C++ Operatory Operatory w C/C++ operator - rodzaj funkcji wbudowanej w język; różnica notacja

Bardziej szczegółowo

Typy danych, zmienne i tablice. Tomasz Borzyszkowski

Typy danych, zmienne i tablice. Tomasz Borzyszkowski Typy danych, zmienne i tablice Tomasz Borzyszkowski Silne typy Javy Java jest językiem wyposażonym w silny system typów. Wywodzi się stąd siła i bezpieczeństwo tego języka. Co to znaczy silny system typów?

Bardziej szczegółowo

Język programowania. Andrzej Bobyk http://www.alfabeta.lublin.pl. www.alfabeta.lublin.pl/jp/

Język programowania. Andrzej Bobyk http://www.alfabeta.lublin.pl. www.alfabeta.lublin.pl/jp/ Język programowania Andrzej Bobyk http://www.alfabeta.lublin.pl www.alfabeta.lublin.pl/jp/ Literatura K. Reisdorph: Delphi 6 dla każdego. Helion, Gliwice 2001 A. Grażyński, Z. Zarzycki: Delphi 7 dla każdego.

Bardziej szczegółowo

Kodowanie informacji w systemach cyfrowych

Kodowanie informacji w systemach cyfrowych Wprowadzenie do inżynierii przetwarzania informacji. Ćwiczenie 2. Kodowanie informacji w systemach cyfrowych Cel dydatyczny: Nabycie umiejętności posługiwania się różnymi odami wyorzystywanymi w systemach

Bardziej szczegółowo

Wyliczanie wyrażenia obiekty tymczasowe

Wyliczanie wyrażenia obiekty tymczasowe Wyliczanie wyrażenia obiekty tymczasowe Bogdan Kreczmer ZPCiR IIAiR PWr pokój 307 budynek C3 bogdan.kreczmer@pwr.wroc.pl Copyright c 2013 Bogdan Kreczmer Niniejszy dokument zawiera materiały do wykładu

Bardziej szczegółowo

Delphi Laboratorium 3

Delphi Laboratorium 3 Delphi Laboratorium 3 1. Procedury i funkcje Funkcja jest to wydzielony blok kodu, który wykonuje określoną czynność i zwraca wynik. Procedura jest to wydzielony blok kodu, który wykonuje określoną czynność,

Bardziej szczegółowo

Etapy życia oprogramowania. Modele cyklu życia projektu. Etapy życia oprogramowania. Etapy życia oprogramowania

Etapy życia oprogramowania. Modele cyklu życia projektu. Etapy życia oprogramowania. Etapy życia oprogramowania Etapy życia oprogramowania Modele cyklu życia projektu informatycznego Organizacja i Zarządzanie Projektem Informatycznym Jarosław Francik marzec 23 Określenie wymagań Testowanie Pielęgnacja Faza strategiczna

Bardziej szczegółowo

DRGANIA WŁASNE RAM OBLICZANIE CZĘSTOŚCI KOŁOWYCH DRGAŃ WŁASNYCH

DRGANIA WŁASNE RAM OBLICZANIE CZĘSTOŚCI KOŁOWYCH DRGAŃ WŁASNYCH Część 5. DRGANIA WŁASNE RAM OBLICZANIE CZĘSTOŚCI KOŁOWYCH... 5. 5. DRGANIA WŁASNE RAM OBLICZANIE CZĘSTOŚCI KOŁOWYCH DRGAŃ WŁASNYCH 5.. Wprowadzenie Rozwiązywanie zadań z zaresu dynamii budowli sprowadza

Bardziej szczegółowo