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

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

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

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

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

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

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 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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Modelowanie diagramów klas w języku UML. Łukasz Gorzel 244631@stud.umk.pl 7 marca 2014

Modelowanie diagramów klas w języku UML. Łukasz Gorzel 244631@stud.umk.pl 7 marca 2014 Modelowanie diagramów klas w języku UML Łukasz Gorzel 244631@stud.umk.pl 7 marca 2014 Czym jest UML - Unified Modeling Language - Rodzina języków modelowania graficznego - Powstanie na przełomie lat 80

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

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

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

PARADYGMATY PROGRAMOWANIA Wykład 3

PARADYGMATY PROGRAMOWANIA Wykład 3 PARADYGMATY PROGRAMOWANIA Wykład 3 Definiowanie operatorów i ich przeciążanie Przykłady zastosowania operatorów: a) operator podstawienia ( = ) obiektów o złożonej strukturze, b) operatory działania na

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

PLAN WYKŁADU OPTYMALIZACJA GLOBALNA ALGORYTM MRÓWKOWY (ANT SYSTEM) ALGORYTM MRÓWKOWY. Algorytm mrówkowy

PLAN WYKŁADU OPTYMALIZACJA GLOBALNA ALGORYTM MRÓWKOWY (ANT SYSTEM) ALGORYTM MRÓWKOWY. Algorytm mrówkowy PLAN WYKŁADU Algorytm mrówowy OPTYMALIZACJA GLOBALNA Wyład 8 dr inż. Agniesza Bołtuć (ANT SYSTEM) Inspiracja: Zachowanie mrówe podczas poszuiwania żywności, Zachowanie to polega na tym, że jeśli do żywności

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

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

Programowanie obiektowe

Programowanie obiektowe Programowanie obiektowe Laboratorium 1. Wstęp do programowania w języku Java. Narzędzia 1. Aby móc tworzyć programy w języku Java, potrzebny jest zestaw narzędzi Java Development Kit, który można ściągnąć

Bardziej szczegółowo

Elżbieta Kula - wprowadzenie do Turbo Pascala i algorytmiki

Elżbieta Kula - wprowadzenie do Turbo Pascala i algorytmiki Elżbieta Kula - wprowadzenie do Turbo Pascala i algorytmiki Turbo Pascal jest językiem wysokiego poziomu, czyli nie jest rozumiany bezpośrednio dla komputera, ale jednocześnie jest wygodny dla programisty,

Bardziej szczegółowo

Programowanie Niskopoziomowe

Programowanie Niskopoziomowe Programowanie Niskopoziomowe Wykład 11: Procedury zaawansowane Dr inż. Marek Mika Państwowa Wyższa Szkoła Zawodowa im. Jana Amosa Komeńskiego W Lesznie Plan Wstęp Ramki stosu Rekurencja INVOKE, ADDR, PROC,

Bardziej szczegółowo

Dokument Detaliczny Projektu

Dokument Detaliczny Projektu Dokument Detaliczny Projektu Dla Biblioteki miejskiej Wersja 1.0 Streszczenie Niniejszy dokument detaliczny projektu(ddp) przedstawia szczegóły pracy zespołu projektowego, nad stworzeniem aplikacji bazodanowej

Bardziej szczegółowo

Analiza i projektowanie oprogramowania. Analiza i projektowanie oprogramowania 1/32

Analiza i projektowanie oprogramowania. Analiza i projektowanie oprogramowania 1/32 Analiza i projektowanie oprogramowania Analiza i projektowanie oprogramowania 1/32 Analiza i projektowanie oprogramowania 2/32 Cel analizy Celem fazy określania wymagań jest udzielenie odpowiedzi na pytanie:

Bardziej szczegółowo

Typy klasowe (klasy) 1. Programowanie obiektowe. 2. Założenia paradygmatu obiektowego:

Typy klasowe (klasy) 1. Programowanie obiektowe. 2. Założenia paradygmatu obiektowego: Typy klasowe (klasy) 1. Programowanie obiektowe Programowanie obiektowe (ang. object-oriented programming) to metodologia tworzenia programów komputerowych, która definiuje programy za pomocą obiektów

Bardziej szczegółowo

Klasy abstrakcyjne i interfejsy

Klasy abstrakcyjne i interfejsy Klasy abstrakcyjne i interfejsy Streszczenie Celem wykładu jest omówienie klas abstrakcyjnych i interfejsów w Javie. Czas wykładu 45 minut. Rozwiązanie w miarę standardowego zadania matematycznego (i nie

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

Prognozowanie notowań pakietów akcji poprzez ortogonalizację szeregów czasowych 1

Prognozowanie notowań pakietów akcji poprzez ortogonalizację szeregów czasowych 1 Prognozowanie notowań paietów acji poprzez ortogonalizację szeregów czasowych Andrzej Kasprzyci. WSĘP Dynamię rynu finansowego opisuje się indesami agregatowymi: cen, ilości i wartości. Indes giełdowy

Bardziej szczegółowo

10. Programowanie obiektowe w PHP5

10. Programowanie obiektowe w PHP5 Ogólnie definicja klasy wygląda jak w C++. Oczywiście elementy składowe klasy są zmiennymi PHP, stąd nieśmiertelne $. Warto zauważyć, że mogą one mieć wartość HHH mgr inż. Grzegorz Kraszewski TECHNOLOGIE

Bardziej szczegółowo

Kurs WWW. Paweł Rajba. pawel@ii.uni.wroc.pl http://pawel.ii.uni.wroc.pl/

Kurs WWW. Paweł Rajba. pawel@ii.uni.wroc.pl http://pawel.ii.uni.wroc.pl/ Paweł Rajba pawel@ii.uni.wroc.pl http://pawel.ii.uni.wroc.pl/ Spis treści Wprowadzenie Automatyczne ładowanie klas Składowe klasy, widoczność składowych Konstruktory i tworzenie obiektów Destruktory i

Bardziej szczegółowo

Programowanie Strukturalne i Obiektowe Słownik podstawowych pojęć 1 z 5 Opracował Jan T. Biernat

Programowanie Strukturalne i Obiektowe Słownik podstawowych pojęć 1 z 5 Opracował Jan T. Biernat Programowanie Strukturalne i Obiektowe Słownik podstawowych pojęć 1 z 5 Program, to lista poleceń zapisana w jednym języku programowania zgodnie z obowiązującymi w nim zasadami. Celem programu jest przetwarzanie

Bardziej szczegółowo

Podstawy programowania C. dr. Krystyna Łapin http://www.mif.vu.lt/~moroz/c/

Podstawy programowania C. dr. Krystyna Łapin http://www.mif.vu.lt/~moroz/c/ Podstawy programowania C dr. Krystyna Łapin http://www.mif.vu.lt/~moroz/c/ Tematy Struktura programu w C Typy danych Operacje Instrukcja grupująca Instrukcja przypisania Instrukcja warunkowa Struktura

Bardziej szczegółowo

Programowanie obiektowe. Literatura: Autor: dr inŝ. Zofia Kruczkiewicz

Programowanie obiektowe. Literatura: Autor: dr inŝ. Zofia Kruczkiewicz Programowanie obiektowe Literatura: Autor: dr inŝ. Zofia Kruczkiewicz Java P. L. Lemay, Naughton R. Cadenhead Java Podręcznik 2 dla kaŝdego Języka Programowania Java Linki Krzysztof Boone oprogramowania

Bardziej szczegółowo

Architektura Systemu. Architektura systemu umożliwia kontrolowanie iteracyjnego i przyrostowego procesu tworzenia systemu.

Architektura Systemu. Architektura systemu umożliwia kontrolowanie iteracyjnego i przyrostowego procesu tworzenia systemu. Architektura Systemu Architektura systemu umożliwia kontrolowanie iteracyjnego i przyrostowego procesu tworzenia systemu. Architektura jest zbiorem decyzji dotyczących: organizacji systemu komputerowego,

Bardziej szczegółowo

Politechnika Krakowska im. Tadeusza Kościuszki. Karta przedmiotu. obowiązuje w roku akademickim 2012/2013. Przedmioty kierunkowe

Politechnika Krakowska im. Tadeusza Kościuszki. Karta przedmiotu. obowiązuje w roku akademickim 2012/2013. Przedmioty kierunkowe Wydział Fizyki, Matematyki i Informatyki Politechnika Krakowska im. Tadeusza Kościuszki Karta przedmiotu obowiązuje w roku akademickim 01/013 Kierunek studiów: Informatyka Forma studiów: Stacjonarne Profil:

Bardziej szczegółowo

AutoCAD 2005. Pierwsze kroki

AutoCAD 2005. Pierwsze kroki IDZ DO PRZYK ADOWY ROZDZIA SPIS TRE CI KATALOG KSI EK KATALOG ONLINE ZAMÓW DRUKOWANY KATALOG AutoCAD 2005. Pierwsze kroki Autor: Andrzej Pikoñ ISBN: 83-7361-581-4 Format: B5, stron: 216 TWÓJ KOSZYK CENNIK

Bardziej szczegółowo

C++ - [1-3] Debugowanie w Qt Creator

C++ - [1-3] Debugowanie w Qt Creator Slajd 1 z 10 C++ - [1-3] Debugowanie w Qt Creator Nysa 2004-2013. Autor: Wojciech Galiński. wersja dnia 15 maja 2013 r. Slajd 2 z 10 Pojęcia związane z debugowaniem DEBUGOWANIE (z ang. debugging odrobaczanie)

Bardziej szczegółowo

MySQL. Darmowa baza danych. Æwiczenia praktyczne

MySQL. Darmowa baza danych. Æwiczenia praktyczne IDZ DO PRZYK ADOWY ROZDZIA KATALOG KSI EK ZAMÓW DRUKOWANY KATALOG TWÓJ KOSZYK CENNIK I INFORMACJE ZAMÓW INFORMACJE ONOWOœCIACH ZAMÓW CENNIK CZYTELNIA SPIS TREœCI KATALOG ONLINE DODAJ DO KOSZYKA FRAGMENTY

Bardziej szczegółowo

Java. język programowania obiektowego. Programowanie w językach wysokiego poziomu. mgr inż. Anna Wawszczak

Java. język programowania obiektowego. Programowanie w językach wysokiego poziomu. mgr inż. Anna Wawszczak Java język programowania obiektowego Programowanie w językach wysokiego poziomu mgr inż. Anna Wawszczak 1 Język Java Język Java powstał w roku 1995 w firmie SUN Microsystems Java jest językiem: wysokiego

Bardziej szczegółowo

MS Word 2010. Długi dokument. Praca z długim dokumentem. Kinga Sorkowska 2011-12-30

MS Word 2010. Długi dokument. Praca z długim dokumentem. Kinga Sorkowska 2011-12-30 MS Word 2010 Długi dokument Praca z długim dokumentem Kinga Sorkowska 2011-12-30 Dodawanie strony tytułowej 1 W programie Microsoft Word udostępniono wygodną galerię wstępnie zdefiniowanych stron tytułowych.

Bardziej szczegółowo

Widoczność zmiennych Czy wartości każdej zmiennej można zmieniać w dowolnym miejscu kodu? Czy można zadeklarować dwie zmienne o takich samych nazwach?

Widoczność zmiennych Czy wartości każdej zmiennej można zmieniać w dowolnym miejscu kodu? Czy można zadeklarować dwie zmienne o takich samych nazwach? Część XVIII C++ Funkcje Widoczność zmiennych Czy wartości każdej zmiennej można zmieniać w dowolnym miejscu kodu? Czy można zadeklarować dwie zmienne o takich samych nazwach? Umiemy już podzielić nasz

Bardziej szczegółowo

Abstrakcyjny typ danych

Abstrakcyjny typ danych Abstrakcyjny typ danych Abstrakcyjny Typ Danych (abstract data type-adt): zbiór wartości wraz z powiązanymi z nimi operacjami; operacje są zdefiniowane w sposób niezależny od implementacji; operacje są

Bardziej szczegółowo

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

Wykład I. Programowanie. dr inż. Janusz Słupik. Gliwice, 2014. Wydział Matematyki Stosowanej Politechniki Śląskiej. c Copyright 2014 Janusz Słupik Wykład I I Wydział Matematyki Stosowanej Politechniki Śląskiej Gliwice, 2014 c Copyright 2014 Janusz Słupik Zaliczenie przedmiotu Na laboratorium można zdobyć 100 punktów. Do zaliczenia niezbędne jest

Bardziej szczegółowo

Języki i paradygmaty programowania

Języki i paradygmaty programowania Języki i paradygmaty programowania WYDZIAŁ ELEKTRONIKI i INFORMATYKI dr inż. Robert Arsoba Politechnika Koszalińska Wydział Elektroniki i Informatyki POLITECHNIKA KOSZALIŃSKA 2009/2010 Materiały do wykładu

Bardziej szczegółowo

4. Rozliczenia [ Rozliczenia ] 1

4. Rozliczenia [ Rozliczenia ] 1 4. Rozliczenia [ Rozliczenia ] 1 4. Rozliczenia Moduł Rozliczenia umożliwia: - przeglądanie listy dokumentów w wybranym rejestrze VAT - automatyczne tworzenie i zapisywanie deklaracji VAT - definiowanie

Bardziej szczegółowo

dr inż. Jarosław Forenc

dr inż. Jarosław Forenc Informatyka 2 Politechnika Białostocka - Wydział Elektryczny semestr III, studia stacjonarne I stopnia Rok akademicki 2015/2016 Pracownia nr 1 (21/23.09.2015) Rok akademicki 2015/2016, Pracownia nr 1 2/22

Bardziej szczegółowo

Dynamiczny przydział pamięci w języku C. Dynamiczne struktury danych. dr inż. Jarosław Forenc. Metoda 1 (wektor N M-elementowy)

Dynamiczny przydział pamięci w języku C. Dynamiczne struktury danych. dr inż. Jarosław Forenc. Metoda 1 (wektor N M-elementowy) Rok akademicki 2012/2013, Wykład nr 2 2/25 Plan wykładu nr 2 Informatyka 2 Politechnika Białostocka - Wydział Elektryczny Elektrotechnika, semestr III, studia niestacjonarne I stopnia Rok akademicki 2012/2013

Bardziej szczegółowo

Podstawy programowania 2. Przygotował: mgr inż. Tomasz Michno

Podstawy programowania 2. Przygotował: mgr inż. Tomasz Michno Instrukcja laboratoryjna 2 Podstawy programowania 2 Temat: Zmienne dynamiczne tablica wskaźników i stos dynamiczny Przygotował: mgr inż. Tomasz Michno 1 Wstęp teoretyczny 1.1 Tablice wskaźników Tablice

Bardziej szczegółowo

Politechnika Krakowska im. Tadeusza Kościuszki. Karta przedmiotu. obowiązuje studentów rozpoczynających studia w roku akademickim 2012/2013

Politechnika Krakowska im. Tadeusza Kościuszki. Karta przedmiotu. obowiązuje studentów rozpoczynających studia w roku akademickim 2012/2013 Politechnika Krakowska im. Tadeusza Kościuszki Karta przedmiotu obowiązuje studentów rozpoczynających studia w roku akademickim 01/013 Wydział Fizyki, Matematyki i Informatyki Kierunek studiów: Informatyka

Bardziej szczegółowo

Języki programowania zasady ich tworzenia

Języki programowania zasady ich tworzenia Strona 1 z 18 Języki programowania zasady ich tworzenia Definicja 5 Językami formalnymi nazywamy każdy system, w którym stosując dobrze określone reguły należące do ustalonego zbioru, możemy uzyskać wszystkie

Bardziej szczegółowo

Wykład nr 3. Temat: Wskaźniki i referencje. Edward Morgan Forster

Wykład nr 3. Temat: Wskaźniki i referencje. Edward Morgan Forster Wykład nr 3 Temat: Wskaźniki i referencje. Cytaty: Mylić się jest rzeczą ludzką, ale żeby coś naprawdę spaprać potrzeba komputera. Edward Morgan Forster Gdyby murarze budowali domy tak, jak programiści

Bardziej szczegółowo

INFORMATYKA, TECHNOLOGIA INFORMACYJNA ORAZ INFORMATYKA W LOGISTYCE

INFORMATYKA, TECHNOLOGIA INFORMACYJNA ORAZ INFORMATYKA W LOGISTYCE Studia podyplomowe dla nauczycieli INFORMATYKA, TECHNOLOGIA INFORMACYJNA ORAZ INFORMATYKA W LOGISTYCE Przedmiot JĘZYKI PROGRAMOWANIA DEFINICJE I PODSTAWOWE POJĘCIA Autor mgr Sławomir Ciernicki 1/7 Aby

Bardziej szczegółowo

Bazy danych. Zachodniopomorski Uniwersytet Technologiczny w Szczecinie. Wykład 3: Model związków encji.

Bazy danych. Zachodniopomorski Uniwersytet Technologiczny w Szczecinie. Wykład 3: Model związków encji. Zachodniopomorski Uniwersytet Technologiczny w Szczecinie Bazy danych Wykład 3: Model związków encji. dr inż. Magdalena Krakowiak makrakowiak@wi.zut.edu.pl Co to jest model związków encji? Model związków

Bardziej szczegółowo

Funkcje wirtualne. Wskaźniki do klas pochodnych są podstawą dla funkcji wirtualnych i polimorfizmu dynamicznego.

Funkcje wirtualne. Wskaźniki do klas pochodnych są podstawą dla funkcji wirtualnych i polimorfizmu dynamicznego. Funkcje wirtualne W C++ polimorfizm jest zrealizowany w dwa sposoby: na etapie kompilacji i na etapie wykonania. Na etapie kompilacji polimorfizm jest zrealizowany poprzez przeciążenie funkcji i operatorów.

Bardziej szczegółowo

Przypadki bez przypadków. Jak dobierać scenariusze testowe.

Przypadki bez przypadków. Jak dobierać scenariusze testowe. Przypadki bez przypadków. Jak dobierać scenariusze testowe. Konferencja SQAM 2008 Warszawa, 29. kwietnia Wojciech Pająk 29 kwietnia 2008 Warszawa Zagadnienia prezentacji 1. Wprowadzenie 2. Definicje przypadków

Bardziej szczegółowo

KARTA PRZEDMIOTU. Egzamin / zaliczenie. Egzamin / zaliczenie. ocenę*

KARTA PRZEDMIOTU. Egzamin / zaliczenie. Egzamin / zaliczenie. ocenę* WYDZIAŁ PODSTAWOWYCH PROBLEMÓW TECHNIKI Zał. nr 4 do ZW 33/01 KARTA PRZEDMIOTU Nazwa w języku polskim: Programowanie w języku C Nazwa w języku angielskim C language programming Kierunek studiów (jeśli

Bardziej szczegółowo

WYKŁAD. Jednostka prowadząca: Wydział Techniczny. Kierunek studiów: Elektronika i telekomunikacja. Nazwa przedmiotu: Język programowania C++

WYKŁAD. Jednostka prowadząca: Wydział Techniczny. Kierunek studiów: Elektronika i telekomunikacja. Nazwa przedmiotu: Język programowania C++ Jednostka prowadząca: Wydział Techniczny Kierunek studiów: Elektronika i telekomunikacja Nazwa przedmiotu: Język programowania C++ Charakter przedmiotu: podstawowy, obowiązkowy Typ studiów: inŝynierskie

Bardziej szczegółowo

Spis treści 1. Wstęp 2. Projektowanie systemów informatycznych

Spis treści 1. Wstęp 2. Projektowanie systemów informatycznych Spis treści 1. Wstęp... 9 1.1. Inżynieria oprogramowania jako proces... 10 1.1.1. Algorytm... 11 1.2. Programowanie w językach wysokiego poziomu... 11 1.3. Obiektowe podejście do programowania... 12 1.3.1.

Bardziej szczegółowo