Jzyk C++ cz 2. Jarosław Gramacki Instytut Informatyki i Elektroniki

Podobne dokumenty
Słowa kluczowe i nazwy

Materiały. Języki programowania II (Java+AVR-GCC) Literatura

Podstawy programowaniu. Wykład: 3. Budowa programu Operacje we/wy Instrukcje wyboru. dr Artur Bartoszewski - Podstawy programowania, sem.

Języki C i C++ Wykład: 1. Wstęp Budowa programu Operacje we/wy Instrukcje wyboru. dr Artur Bartoszewski - Języki C i C++, sem.

Podstawy języka C++ Marek Pudełko

Techniki Programowania

Na ekranie monitora zostaną wyświetlone w dwu liniach teksty Pierwsza linia Druga linia

Kurs programowania. Wykład 1. Wojciech Macyna. 3 marca 2016

Języki programowania - podstawy

Jzyk C++ cz 3. Jarosław Gramacki Instytut Informatyki i Elektroniki ( $)*)+' *, - ( ' )*'.' '',*/ *, ','*0) 1 / ) %*+ 2'' 2" ( $%%) )'20 )*0) 1 / )

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

Wykład 15. Literatura. Kompilatory. Elementarne różnice. Preprocesor. Słowa kluczowe

ECLIPSE wnioski z dwóch pierwszych laboratoriów

Programowanie obiektowe

IMIĘ i NAZWISKO: Pytania i (przykładowe) Odpowiedzi

Wstęp do programowania 1

Podstawy informatyki. Prowadzący cz. 2 (C++) wykładu: dr inż. Sylwester Przybył Instytut Fizyki WFT tel. (0-61) ;

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

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

Język ludzki kod maszynowy

wykład IV uzupełnienie notatek: dr Jerzy Białkowski Programowanie C/C++ Język C, a C++. wykład IV dr Jarosław Mederski Spis Język C++ - wstęp

EGZAMIN 2 (14 WRZEŚNIA 2015) JĘZYK C++

EGZAMIN PROGRAMOWANIE II (10 czerwca 2010) pytania i odpowiedzi

DYNAMICZNE PRZYDZIELANIE PAMIECI

Język C++ wykład VIII

Język C++ wykład VI. uzupełnienie notatek: dr Jerzy Białkowski. Programowanie C/C++ Język C++ wykład VI. dr Jarosław Mederski.

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

Dariusz Brzeziński. Politechnika Poznańska, Instytut Informatyki

Modelowanie numeryczne w fizyce atmosfery Ćwiczenia 3

Programowanie obiektowe - Przykładowe zadania egzaminacyjne (2005/2006)

Projektowanie klas c.d. Projektowanie klas przykład

Spis treści

Programowanie Procedurale

Wstęp do programowania

Część 4 życie programu

Programowanie w C++ Wykład 5. Katarzyna Grzelak. 16 kwietnia K.Grzelak (Wykład 1) Programowanie w C++ 1 / 27

Operatory na rzecz typu TString

ROZDZIAŁ 2. Operatory

Programowanie Proceduralne

Programowanie i struktury danych

Kurs programowania. Wykład 9. Wojciech Macyna. 28 kwiecień 2016

Podstawy języka C++ Maciej Trzebiński. Instytut Fizyki Jądrowej Polskiej Akademii Nauk. Praktyki studenckie na LHC IVedycja,2016r.

13.1 Standardowa biblioteka C Klasa string... 3

PROGRAMOWANIE w C prolog

Język C++ Różnice między C a C++

Wstęp do programowania obiektowego. WYKŁAD 3 Dziedziczenie Pola i funkcje statyczne Funkcje zaprzyjaźnione, this

Język C - podstawowe informacje

Typy złożone. Struktury, pola bitowe i unie. Programowanie Proceduralne 1

Wstęp do programowania

Informatyka. Wy-08 Klasy. mgr inż. Krzysztof Kołodziejczyk

Kurs programowania. Wykład 9. Wojciech Macyna

Wstęp do Programowania 2

Programowanie w języku C++

Globalne / Lokalne. Wykład 15. Podstawy programowania (język C) Zmienne globalne / lokalne (1) Zmienne globalne / lokalne (2)

Wykład :37 PP2_W9

obiekty funkcyjne - funktory

Dzisiejszy wykład. Klasa string. wersja prosta wersja ze zliczaniem odwołań. Wyjątki Specyfikator volatile Semafory

I - Microsoft Visual Studio C++

Operacje wejścia/wyjścia odsłona pierwsza

Wstęp do informatyki- wykład 12 Funkcje (przekazywanie parametrów przez wartość i zmienną)

Programowanie Komputerów

Podstawy Informatyki. Kompilacja. Historia. Metalurgia, I rok. Kompilatory C++ Pierwszy program. Dyrektywy preprocesora. Darmowe:

Identyfikacje typu na etapie. wykonania (RTTI)

Paradygmaty programowania. Paradygmaty programowania

Programowanie 2. Język C++. Wykład 1.

Podstawy Informatyki. Metalurgia, I rok. Wykład 6 Krótki kurs C++

dr Gabriela Omiecińska pokój 274 piątek: sobota PDF stworzony przez wersję demonstracyjną pdffactory

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

Programowanie obiektowe

Wstęp do programowania

wykład V uzupełnienie notatek: dr Jerzy Białkowski Programowanie C/C++ Język C++ klasy i obiekty wykład V dr Jarosław Mederski Spis Język C++ - klasy

Obsługa wyjątków. Język C++ WW12

Programowanie strukturalne i obiektowe

Wstęp do Informatyki

Microsoft IT Academy kurs programowania

Składnia C++ Programowanie Obiektowe Mateusz Cicheński

Przekazywanie argumentów wskaźniki

Podstawy języka C++ Maciej Trzebiński. Praktyki studenckie na LHC IFJ PAN. Instytut Fizyki Jądrowej Polskiej Akademii Nauk. M. Trzebiński C++ 1/16

Wstęp do programowania obiektowego, wykład 7

Rzutowanie i konwersje

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

referencje Wykład 2. Programowanie (język C++) Referencje (1) int Num = 50; zdefiniowano zmienną Num (typu int) nadając jej wartość początkową 50.

Wyjątki. Wyjątki. Bogdan Kreczmer. Katedra Cybernetyki i Robotyki Politechnika Wrocławska

MATERIAŁY DO ZAJĘĆ II

Podstawy Programowania

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

Dziedziczenie & W slajdach są materiały zapożyczone z

Programowanie obiektowe w języku C++ dr inż. Jarosław Forenc

Paradygmaty programowania

1 P roste e t ypy p d a d n a ych c - c ąg ą g d a d l a szy 2 T y T py p z ł z o ł żo ż ne e d a d n a ych c : T BLICE

Nowe słowa kluczowe. Komentarze. Wskaźniki typu void. class, delete, new, friend,... /* Komentarz w C i C++ */ // Komentarz w C++ (do końca wiersza)

Pętle while, for, do while, instrukcje break, continue, switch 1. Pętle

Wstęp do Programowania 2

Wskaźniki. nie są konieczne, ale dają językowi siłę i elastyczność są języki w których nie używa się wskaźników typ wskaźnikowy typ pochodny:

Plik klasy. h deklaracje klas

JĘZYKI PROGRAMOWANIA Z PROGRAMOWANIEM OBIEKTOWYM. Wykład 5

Wykład 1

Podstawy Programowania Podstawowa składnia języka C++

Wstęp do programowania obiektowego. Przekazywanie parametrów do funkcji w C++ Metody i funkcje operatorowe Strumienie: standardowe, plikowe, napisowe

Programowanie 2. Język C++. Wykład 2.

Transkrypt:

Jzyk C++ cz 2 Jarosław Gramacki Instytut Informatyki i Elektroniki * +!, -#!. #., #define /!!# 0-1!-0-1 2 34!5getchar() #678, - - #1! #. --/., -! 9!! :- ;/! "# $%& '() 2

* +! #define POCZATEK 3 #define KONIEC 6 #define ROZMIAR KONIEC - POCZATEK int tab1[ ROZMIAR ]; // OK int tab2[ 2 * ROZMIAR ]; // BLAD np: (2*6)-3 zamiast 2*(6-3) int i; for( i = 0; i < ROZMIAR; i++ ) // OK tab1[ i ] = i; for( i = 0; i < 2 * ROZMIAR; i++ ) // BLAD tab2[ i ] = i; cout << "ROZMIAR = " << ROZMIAR << endl; cout << "2 * ROZMIAR = " << 2 * ROZMIAR << endl;! "# $%& '() 3 * #!,- #-- 1# 9;-- const, const - ##! #7;const - #, -# - #const-- -;, -# - 9 0;--, -# # 9const - 1 7# ;char tab1[ ROZMIAR ];, -# # 9 const - 1 :# ;char tab1[ ROZMIAR ];,3, const #define.97# ;., const - 09#define! "# $%& '() 4

* #! const int POCZATEK = 2; // Uwaga na znak = oraz ; const int KONIEC = 6; // przy #define ich nie było const int ROZMIAR = KONIEC - POCZATEK; char tab1[ ROZMIAR ]; char tab2[ 2 * ROZMIAR ]; int i; for( i = 0; i < ROZMIAR; i++ ) tab1[ i ] = i; // OK // Teraz OK! // OK for( i = 0; i < 2 * ROZMIAR; i++ ) // Teraz OK! tab2[ i ] = i; cout << "ROZMIAR = " << ROZMIAR << endl; cout << "2 * ROZMIAR = " << 2 * ROZMIAR << endl;! "# $%& '() 5 * #!, #const, 1<!%-- 1 - -9!97 1/-.- 0;=->>?- - 1,-# /678 -const. 2 /!@! "# $%& '() 6

* #! int strlen(const char* napis); char* strcpy(char* dest, const char* src); // nie modyfikuj ródła const char* pobierz_bufor(); // tylko obejrzyj, // modyfikacja zabroniona const int rozmiar = 50; int* pi; rozmiar = 25; // BLAD: modyfikacja zmiennej (const int). rozmiar++; // BLAD: jak wyzej. pi = &rozmiar; // BLAD: konwersja (const int*) -> (int*). *pi = 25; //!A! "# $%& '() 7 *!# +!, #define - /!.#.! -#@, -#@-0 1, 9#define 01- -/<1-!- - -, 9#define > >#010# -BC 1 BC -- 1 #1, 9#define 19-;/1 >!>- 1- # # 1/! "# $%& '() 8

*!# +!, 9inline > >-# 1 -!.@9;, -# 1 ;inline #!/ 9A, inline #!, inline # - 1!inline 9 #.! "# $%& '() 9 #define ABS( a ) (((a)>0)? (a) : (-(a))) int i = -3; *!# +! cout << "i = " << i << endl; cout << "ABS( i ) = " << ABS( i ) << endl; cout << "ABS( i++ ) = " << ABS( i++ ) << endl; // BLAD cout << "i = " << i << endl; 1a - DE6 i = -3 ABS(i) = 3 ABS(i++) = 2 i = -1 inline abs( int a ) if( a > 0 ) return a; return -a; int i = -3; cout << "i = " << i << endl; cout << "abs( i ) = " << abs( i ) << endl; cout << "abs( i++ ) = " << abs( i++ ) << endl; // OK cout << "i = " << i << endl; i = -3 abs(i) = 3 abs(i++) = 2 i = -2! "# $%& '() 10

* - -- #,# #malloc() i free(), new delete, new > >malloc()<#-, - - sizeof - new F- new #- 9#/, - 1 - -malloc(), malloc() - -!"" new #$%#&,<0 - #NULL 678 int *Tab new int[10]; if (Tab == 0) OBSLUGA BLEDU! "# $%& '() 11 * - -- #, - delete #- #new,jak free();delete # -- #- malloc() 678?! 0#, - delete ##, D#1-3 F1/#->;>% -# --!_set_new_handler(). -# 9-9 http://h30097.www3.hp.com/cplus/new_handler_3c std.htm! "# $%& '() 12

* - -- # char *ch1, *ch40; ch1 = (char*)malloc (1); ch1 = new char; // dyskusyjna uyteczno? ch40 = (char*)malloc (40); ch40 = new char[40]; // pamina łacuch 40 znaków double *d1, *d50; d1 = (double*)malloc (sizeof(double)); d1 = new double; d50 = (double*)malloc (50 * sizeof(double)); d50 = new double[50]; - sizeof - -# struct wezel int wartosc;!%1- struct wezel* lewy; 1-- 0; struct wezel* prawy; - 1 A ; wezel *wezel1 *wezeln; //C++ bez struct wezel1 = (wezel*)malloc (sizeof(wezel)); wezel1 = new wezel; // pamina jeden wzeł int N; cout << podaj liczbe wezlow: ; cin >> N; wezeln = (wezel*)malloc (N * sizeof(wezel)); wezeln = new wezel[n]; // pami dla N wzłów! "# $%& '() 13 * - -- # double* d; d = new double; *d = 12.34; delete d; // Zwolnienie pamici przydzielonej // jednemu obiektowi. d = new double[ 10 ]; // Przydzielenie pamici dla tablicy obiektów. for( int i = 0; i < 10; i++ ) d[ i ] = double( i ) // rzutowanie w notacji funkcyjnej delete [] d; // Zwolnienie pamici przydzielonej // dla tablicy obiektów. ##0# DEGH -/'( - delete 0# ##;-new delete 0#9 9! F- new delete - - 9;#2#9 - # #91#- 2F - #-# 1I/;A! "# $%& '() 14

*! -!,-#- ;! 19- - 0;, # 3 int i=3, j=2; int* pi; pi = &i; // inicjalizacja wskanika int& ri = i; // inicjalizacja referencji (obowizkowa), - @<! :$8 ; ##,-#! - ##! /!, <pi 1 0; 99!;?! )*J#; -9;99 (*pi)++; // OK: i = 4 ri++; // OK: i = 5, inkrementacja zmiennej i z uyciem aliasu pi = &j; // OK ri = &j; // BLAD: i = &j???! "# $%& '() 15 *! -!,! - ##0#!? 1 <. 0,-..!$- 9+! struct zespolona double r, i; ; void wyswietlaj1( zespolona c ) // Przekazanie przez wartosc. cout << c.r << " + i*" << c.i << endl; void wyswietlaj2( const zespolona* pc ) // Przekazanie przez wskaznik. cout << pc->r << " + i*" << pc->i << endl; void wyswietlaj3( const zespolona& rc ) // Przekazanie przez referencje. cout << rc.r << " + i*" << rc.i << endl; zespolona c; c.r = 1.0; c.i = -1.0; wyswietlaj1( c ); wyswietlaj2( &c ); wyswietlaj3( c ); 0;!A! "# $%& '() 16

*! -!,! ; 0!, - 1:.- - - - - 9- / # int glob = 3; int& refglob() return glob; int i; i = refglob(); // i = 3. // Zmienna globalna. refglob() = 7; // teraz glob = 7. Przypisanie nowej wartoci // obiektowi zwracanemu przez funkcj // Co to za skladnia!!! i = refglob(); // i = 7. Jeeli funkcja zwraca powizanie z obiektem (referencj), to istnieje moliwo jego zmodyfikowania przez przypisanie nowej wartoci obiektowi zwracanemu przez funkcj! "# $%& '() 17 *! -!, -#!,! -#/ - -# int i = 3; int& ri = i // Równowane: int *const pi = &i; ri = ri + 5; // Równowane: (*pi) = (*pi) + 5; ri++; // Równowane: (*pi)++; // referncja do stałej wymaga wczeniejszego utworzenia // zmiennej pomocniczej const int& ri = 5; // Równowane: const int tmp = 3; // const int *const pi = &tmp;! "# $%& '() 18

*! -!, - @.A#-;! 1/-.-! D19<A, 0#!! 1? - - <, 0#>- >!? const void fun (const int& ri)... int oblicz2( int* pa ) *pa *= 2; return (*pa) * (*pa); int oblicz3( int& ra ) // po ew. const kompilator nie pozwoli na ra *= 2; ra *= 2; // PULAPKA: modyfikowanie zmiennej referencyjnej. return ra * ra; int i = 2, j2, j3; j2 = oblicz2( &i ); // OK : zmienna i zmodyfikowana, lecz ryzyko // to jest od razu widoczne, gdyz argument // przekazywany jest przez adres. (i = 4) j3 = oblicz3( i ); // UWAGA: zmienna i zmodyfikowana, // lecz nie jest to widoczne w wywolaniu funkcji. (i = 8)! "# $%& '() 19 *! -!, $1-3,!# 1!- - <, 7 "?!# 1!- - 0;, 7 "?!# 1!- -!. -3void fun (const int& aref)! "# $%& '() 20

*! -! // inny przykład pokazujcy zasad using namespace std; int main() int val = 1; int &rval = val; cout << "val is " << val << endl; cout << "rval is " << rval << endl; cout << "Setting val to 2" << endl; val = 2; cout << "val is " << val << endl; cout << "rval is " << rval << endl; cout << "Setting rval to 3" << endl; rval = 3; cout << "val is " << val << endl; cout << "rval is " << rval << endl; return 0;!!! "# $%& '() 21 * 00# 1/!, # 00#. 1/-# - -!, #-; 1#; 00#. #-- 1 0#,"-. // Zwró uwag na wartoci domylne: void petla( int poczatek = 1, int koniec = 10, int krok = 1) cout << "--- Petla od " << poczatek << " do " << koniec << " z krokiem co " << krok << " ---" << endl; for( int i = poczatek; i <= koniec; i += krok ) cout << "i = " << i << endl; petla( 15, -10, -5 ); // OK petla( 10, 15 ); // OK : petla( 10, 15, 1 ); petla( 5 ); // OK : petla( 5, 10, 1 ); petla(); // OK : petla( 1, 10, 1 ); // błdy na etapie wywołania funkcji petla( -10,,2 ); // BLAD 1 petla(,,2 ); // BLAD petla(, 33, 2 ); // BLAD petla(, 44, 2 ); // BLAD! "# $%& '() 22

* 00# 1/!, #! 00#19;- -# 1 9 - #- /... // błdy na etapie deklaracji funkcji void petla( int poczatek = 1, int koniec, int krok); // BLAD void petla( int poczatek = 1, int koniec, int krok = 1); // BLAD void petla( int poczatek = 1, int koniec = 10, int krok); // BLAD... void petla( int poczatek = 1, int koniec = 10, int krok = 1); // OK void petla( int poczatek, int koniec = 10, int krok = 1); // OK void petla( int poczatek, int koniec, int krok = 1); // OK! "# $%& '() 23 * - 9!,.A, 678 ;.>-?- 9># 9!#! static1 9-/ 0;!-#/ #,!/- 91-9# /.-#, -# 0#/ 9!;#0-#0 1// 96# 1!, E# 1!7 " 9-1 0 -!A$1 1! void fun (int); void fun (int&); // BLAD. Kompilator nie odróni (int) od (int&) int fun (int); // BLAD. Kompilator nie odróni tej funkcji // od void fun (int),.!- 9.#;0#- 9 #!9;!/ 09 #.-..! "# $%& '() 24

* - 9! void wyswietlaj_int( int i ) cout << "(int) = " << i << endl; void wyswietlaj_double( double d ) cout << "(double) = " << d << endl; const int rozmiar = 10; typedef long tablica[ rozmiar ]; void wyswietlaj_tablica( tablica t ) cout << "(tablica) = " << endl; for( int i = 0; i < rozmiar; i++ ) cout << "[ " << i << " ] = " << t[ i ] << endl; int i = 3; wyswietlaj_int( i ); double d = 123.456; wyswietlaj_double( d ); tablica t; for( int j = 0; j < rozmiar; j++ ) t[j] = j*j; wyswietlaj_tablica( t );.- 9! "# $%& '() 25 * - 9! void wyswietlaj( int i ) cout << "(int) = " << i << endl; void wyswietlaj( double d ) cout << "(double) = " << d << endl; const int rozmiar = 10; typedef long tablica[ rozmiar ]; void wyswietlaj( tablica t ) cout << "(tablica) = " << endl; for( int i = 0; i < rozmiar; i++ ) cout << "[ " << i << " ] = " << t[ i ] << endl; int i = 3; wyswietlaj( i ); double d = 123.456; wyswietlaj( d ); tablica t; for( int j = 0; j < rozmiar; j++ ) t[ j ] = j*j; wyswietlaj( t );.- 9! "# $%& '() 26

*!#!,. #..! #.##F-/<,!- 99#- - -. @19. /#1# /.-.., ##1#1-.1; /!, ;K,- 1 --9!! - - 1, -/ 1/.!-# 1 #! $-! 8##I -. I/;A! "# $%& '() 27 *!#! // Dla typu int. int min( int a, int b ) if( a <= b ) return a; return b; // Dla typu long. long min( long a, long b ) if( a <= b ) return a; return b; // Dla typu char. char min( char a, char b ) if( a <= b ) return a; return b; // Dla typu double. double min( double a, double b ) if( a <= b ) return a; return b; int ia = 1, ib = 5; cout << "(int) : " << min( ia, ib ) << endl; long la = 10000, lb = 5000; cout << "(long) : " << min( la, lb ) << endl; char ca = 'a', cb = 'z'; cout << "(char) : " << min( ca, cb ) << endl; double da = 123.456, db = 789.10; cout << "(double) : " << min( da, db ) << endl; >>! < /1 2 - ;A3? E#- 9.!! "# $%& '() 28

*!#! template <class T> T min( T a, T b ) if( a <= b ) return a; return b; int ia = 1, ib = 5; cout << "(int) : " << min( ia, ib ) << endl; long la = 10000, lb = 5000; cout << "(long) : " << min( la, lb ) << endl; char ca = 'a', cb = 'z'; cout << "(char) : " << min( ca, cb ) << endl; double da = 123.456, db = 789.10; cout << "(double) : " << min( da, db ) << endl; =# E # -! #1-=! "# $%& '() 29 *!#! // inne przykłady szablonów // Prototype (Declaration): void ConvertFToC (float f, float &c); // Definition: void ConvertFToC (float f, float &c) c = (f - 32.) * 5./9.; // porównaj z: template <class Type> void ConvertFToC (Type f, Type &c); template <class Type> void ConvertFToC (Type f, Type &c) c = (f - 32.) * 5./9.;, L-# 1/#0 >;>-- /-! 1--! 1-#! "# $%& '() 30

*!#! // inne przykłady szablonów template <class type1, class type2> type1 SomeFunction(type1 a, type2 b, type2 c); int result; int k = 1; float y = 4.5, z = 3.9;... result = SomeFunction (k, y, z);, - 1#-;E! 1#9-9 result = SomeFunction<int, float>(k, y, z);, # typename ;class template <typename type1, typename type2> type1 SomeFunction (type1 a, type2 b, type2 c);! "# $%& '() 31 *!#!, ### 1/!-!- - -!9; / 1- String s1("napis"); double da = 123.456; // "jaki" typ String cout << "(???) : " << min( da, s1 ) << endl; // BLAD // nie mona skonkretyzowa funkcji min(double, String), ; 1/ /.-/-- - 0# template <class T> double fun( int a, T b, T c, double d ) T temp = b + c; return a + d * temp; int b1 = 1, c1 = 7; cout << fun(8, b1, c1, 5.3); double b2 = 1.23, c2 = 7.3665; cout << fun(8, b2, c2, 5.3); String s1("napis1"); String s2("napis2"); cout << fun(8, s1, s2, 235.3); //BLAD. Ile wynosi a + d * temp?! "# $%& '() 32

*!#!, ; 1/-. /.-/ template <class T class U> U fun( T a, U b ) return a + b; fun (19, 44); // konkretyzacja fun (int, int) fun (23.55, 45); fun (78, "Napis"); int Tab[10]; fun (3.54, Tab); // konkretyzacja fun (double, int) // konkretyzacja fun (int, char*) // konkretyzacja fun (double, int*), 0#0 0!fun 9- - -#,- --9#-#. ;-1/#,- 3;double i int*k! "# $%& '() 33 * 1-33,-.#>9>=- - 1, 1 /1##. 1##.., 2 1####91-###0 - const double PI = 3.14159265358979; int main() const float PI = static_cast< float >( ::PI ); cout << setprecision(20) << "Lokalna wartosc typu float liczby PI = " << PI << "Globalna wartosc typu double liczby PI = " << ::PI << endl; return 0; Wynik: Lokalna wartosc typu float liczby PI = 3.14159 Globalna wartosc typu double liczby PI = 3.14159265358979 #;.# /.#/ - 1 2 - - -/A! "# $%& '() 34

* #!- 1., -- -1-1, -#!- -.# : #1-- >>.- 9!, >>- /0! - 1/!, /-# /97>1/#0>101-1 1;.## 1 - -#, 678 7 "!#- #, extern "C" 9- #%!#1 // --#- 1 / 2 - extern "C" #include "moje.h" // kompilowane w ANSI C moje_fun (); #ifdef _cplusplus extern "C" #endif... deklaracje funkcji #ifdef _cplusplus #endif extern "C" void fun(double);! "# $%& '() 35 * <7$MM<C, 09C, 92 - < 07$MM, # 0C /</-..;7$MM #91-, wskanik 0 pełni w C++ taka sama role co stała NULL w ANSI C int *Tab new int[10]; if (Tab == 0) OBSLUGA BLEDU * +!NN-#-#, -# - 911678 8F! # cplusplus, -#< /.- #define cplusplus! "# $%& '() 36

*!#, #!!0 struct point int x; int y; void draw(void); ; point a; point b; a.x = 0; a.y = 10; a.draw(); b = a; b.y = 20; b.draw(); 1!!K struct Person char name[80], char address[80]; void print(); ; void Person::print() cout << "Name: analogicznie bdzie przy definicji metod bdcych elementem klas " << name << endl "Address: " << address<< endl; Person p; strcpy(p.name, "xyz"); strcpy(p.address, "abc"); p.print();! "# $%& '() 37 * -. bool typ całkowity, który moe przyjmowa wartoci true lub false. Rozmiar typu nie jest okrelony // relacje pomidzy wartociami!false == true!true == false wchar_t The wchar_t type is an extension of the char basic type, to accomodate wide character values, such as the Unicode character set. The g++ compiler (version 2.95 or beyond) reports sizeof(wchar_t) as 4, which easily accomodates all 65,536 different Unicode character values.! "# $%& '() 38

* -, / - /- - /, - - /-!.#this, delete and const float operator static_cast using and_eq const_cast for or struct virtual asm continue friend or_eq switch void auto default goto private template volatile bitand delete if protected this wchar_t bitor do inline public throw while bool double int register true xor break dynamic_cast long reinterpret_cast try xor_eq case else mutable return typedef catch enum namespace short typeid char explicit new signed typename class extern not sizeof union compl false not_eq static unsigned and, and_eq, bitand, bitor, compl, not, not_eq, or, or_eq, xor, xor_eq ## #3 &&, &=, &,, ~,!,!=,, =, ^, ^=! "# $%& '() 39 * 1/, =.B(#...#'O8..-#!.# nowe nazewnictwo nagłówków ANSI C <algorithm> <bitset> <cassert> <cctype> <cerrno> <cfloat> <ciso646> <climits> <clocale> <cmath> <complex> <csetjmp> <csignal> <cstdarg> <cstddef> <cstdio> <cstdlib> <cstring> <ctime> <cwchar> <cwctype> <deque> <exception> <fstream> <functional> <hash_map> <hash_set> <iomanip> <ios> <iosfwd> <iostream> <istream> <iterator> <limits> <list> <locale> <map> <memory> <new> <numeric> <ostream> <queue> <set> <sstream> <stack> <stdexcept> <streambuf> <string> <strstream> <utility> <valarray> -3http://msdn.microsoft.com/library/default.asp?url=/library/ en-us/vcstdlib/html/vclrfcpluspluslibraryoverview.asp! "# $%& '() 40