Programowanie. Sylwester Arabas. prowadzący ćwiczenia: Magdalena Kuich, Krzysztof Piasecki, Łukasz Dulny. Wydział Fizyki Uniwersytetu Warszawskiego



Podobne dokumenty
Programowanie. Sylwester Arabas. prowadzący ćwiczenia: Magdalena Kuich, Krzysztof Piasecki, Łukasz Dulny. Wydział Fizyki Uniwersytetu Warszawskiego

Programowanie. Sylwester Arabas. prowadzący ćwiczenia: Magdalena Kuich, Krzysztof Piasecki, Łukasz Dulny. Wydział Fizyki Uniwersytetu Warszawskiego

Programowanie. Sylwester Arabas. prowadzący ćwiczenia: Magdalena Kuich, Krzysztof Piasecki, Łukasz Dulny. Wydział Fizyki Uniwersytetu Warszawskiego

Programowanie - wykład 4

Zajęcia nr 1 Podstawy programowania. dr inż. Łukasz Graczykowski mgr inż. Leszek Kosarzewski Wydział Fizyki Politechniki Warszawskiej

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

Programowanie w C++ Wykład 3. Katarzyna Grzelak. 12 marca K.Grzelak (Wykład 1) Programowanie w C++ 1 / 35

Modelowanie numeryczne w fizyce atmosfery Ćwiczenia 3

Wstęp do Programowania, laboratorium 02

Programowanie w C++ Wykład 1. Katarzyna Grzelak. 25 luty K.Grzelak (Wykład 1) Programowanie w C++ 1 / 38

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

Programowanie w C++ Wykład 1. Katarzyna Grzelak. 26 luty K.Grzelak (Wykład 1) Programowanie w C++ 1 / 28

Wstęp do programowania

1,3,4,2,3,4,0,1,4,5,0. Wówczas największa suma trzech kolejnych liczb (zaznaczone na czerwono) wynosi:

Programowanie w C++ Wykład 8. Katarzyna Grzelak. 7 maja K.Grzelak (Wykład 8) Programowanie w C++ 1 / 31

Podstawy Programowania Algorytmy i programowanie

Programowanie Procedurale

Przesłanianie nazw, przestrzenie nazw

private - oznacza, że wszystkie elementy klasy bazowej zmieniają się w prywatne.

Referencje do zmiennych i obiektów

Zadanie 2: Arytmetyka symboli

Projektowanie klas c.d. Projektowanie klas przykład

Technologie cyfrowe semestr letni 2018/2019

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

Wstęp do Programowania 2

Laboratorium nr 10. Temat: Funkcje cz.2.

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

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

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

Paostwowa Wyższa Szkoła Zawodowa w Płocku Dariusz Wardowski

Wskaźnik może wskazywać na jakąś zmienną, strukturę, tablicę a nawet funkcję. Oto podstawowe operatory niezbędne do operowania wskaźnikami:

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

Szablon klasy std::vector

Wykład. Materiały bazują częściowo na slajdach Marata Dukhana

Kontrola przebiegu programu

Programowanie Niskopoziomowe

Zajęcia nr 5 Algorytmy i wskaźniki. dr inż. Łukasz Graczykowski mgr inż. Leszek Kosarzewski Wydział Fizyki Politechniki Warszawskiej

Programowanie obiektowe, wykład nr 7. Przegląd typów strukturalnych - klasy i obiekty - c.d.

Podstawy i języki programowania

Programowanie w C++ Wykład 6. Katarzyna Grzelak. kwiecień K.Grzelak (Wykład 6) Programowanie w C++ 1 / 40

Programowanie obiektowe i C++ dla matematyków

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

Wstęp do programowania INP001213Wcl rok akademicki 2017/18 semestr zimowy. Wykład 6. Karol Tarnowski A-1 p.

Programowanie Obiektowo Zorientowane w języku c++ Przestrzenie nazw

Wstęp do programowania

Wskaznik. Przekazywanie wyniku funkcji przez return. Typy i zmienne wskaznikowe. Zmienna wskazywana. typ * nazwa_wkaznika

Wstęp do programowania. Wykład 1

Techniki programowania INP001002Wl rok akademicki 2017/18 semestr letni. Wykład 4. Karol Tarnowski A-1 p.

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

Język C++ zajęcia nr 2

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

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

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

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

Wstęp do Programowania 2

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

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

Programowanie Obiektowe i C++

Technologie cyfrowe semestr letni 2018/2019

JĘZYKI PROGRAMOWANIA Z PROGRAMOWANIEM OBIEKTOWYM. Laboratorium 1. Wprowadzenie, środowisko programistyczne, pierwsze programy

Podstawy Programowania

Zajęcia nr 2 Programowanie strukturalne. dr inż. Łukasz Graczykowski mgr inż. Leszek Kosarzewski Wydział Fizyki Politechniki Warszawskiej

Qt sygnały i sloty. Bogdan Kreczmer. Katedra Cybernetyki i Robotyki Wydział Elektroniki Politechnika Wrocławska

Ćwiczenie nr 3. Temat: Definicje i wykorzystanie funkcji, parametry funkcji

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

Wprowadzenie do szablonów klas

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

Programowanie obiektowe i C++ dla matematykó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.

Programowanie Obiektowew języku C++ Zadania L9

Podstawy Informatyki. Inżynieria Ciepła, I rok. Wykład 10 Kurs C++

JĘZYKI PROGRAMOWANIA Z PROGRAMOWANIEM OBIEKTOWYM

typ y y p y z łoż o on o e n - tab a lice c e w iel e owym m ar a o r we, e stru r kt k ury

Funkcja (podprogram) void

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

Wstęp do programowania

PDF stworzony przez wersję demonstracyjną pdffactory Pro Program 15

Owad():waga(1),jadowitosc(false) {cout<<"konstruktor domyslny owada\n";}

Podstawy programowania. Wykład Funkcje. Krzysztof Banaś Podstawy programowania 1

Opis zagadnieo 1-3. Iteracja, rekurencja i ich realizacja

Podstawy Programowania

Paradygmaty programowania

Podstawy informatyki. Elektrotechnika I rok. Język C++ Operacje na danych - wskaźniki Instrukcja do ćwiczenia

Programowanie proceduralne w języku C++ Pętle, tablice

Podstawy programowania. Wykład: 7. Funkcje Przekazywanie argumentów do funkcji. dr Artur Bartoszewski -Podstawy programowania, sem 1 - WYKŁAD

Katedra Elektrotechniki Teoretycznej i Informatyki. wykład 12 - sem.iii. M. Czyżak

Przekazywanie argumentów wskaźniki

1. Wprowadzenie do C/C++

W2 Wprowadzenie do klas C++ Klasa najważniejsze pojęcie C++. To jest mechanizm do tworzenia obiektów. Deklaracje klasy :

Techniki Programowania wskaźniki 2

Wstęp do programowania

Wstęp do Programowania 2

Wstęp do Informatyki i Programowania Laboratorium: Lista 0 Środowisko programowania

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

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.

Algorytmika i programowanie. Wykład 2 inż. Barbara Fryc Wyższa Szkoła Informatyki i Zarządzania w Rzeszowie

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

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:

1. Pierwszy program. Kompilator ignoruje komentarze; zadaniem komentarza jest bowiem wyjaśnienie programu człowiekowi.

Transkrypt:

Programowanie Sylwester Arabas prowadzący ćwiczenia: Magdalena Kuich, Krzysztof Piasecki, Łukasz Dulny Wydział Fizyki Uniwersytetu Warszawskiego wykład VIII 15. kwietnia 2015 r.

na ostatnim wykładzie... 1 #include <boost/units/systems/si.hpp> 2 #include <boost/units/systems/si/codata_constants.hpp> 3 #include <boost/units/io.hpp> 4 5 namespace bu = boost::units; 6 namespace si = boost::units::si; 7 8 // p = rho R_N2 T 9 bu::quantity<si::mass_density> rho( 10 bu::quantity<si::temperature> T, 11 bu::quantity<si::pressure> p 12 ) 13 { 14 auto M_N2 = 28 * 1e-3 * si::kilograms / si::moles; 15 auto R_N2 = si::constants::codata::r / M_N2; 16 return p / R_N2 / T; 17 } 18 19 int main() 20 { 21 std::cerr << "rho = " << rho( 22 300 * si::kelvins, 23 1000e2 * si::pascals 24 ) << std::endl; 25 }

na ostatnim wykładzie... 1 #include <boost/units/systems/si.hpp> 2 #include <boost/units/systems/si/codata_constants.hpp> 3 #include <boost/units/io.hpp> 4 5 namespace bu = boost::units; 6 namespace si = boost::units::si; 7 8 // p = rho R_N2 T 9 bu::quantity<si::mass_density> rho( 10 bu::quantity<si::temperature> T, 11 bu::quantity<si::pressure> p 12 ) 13 { 14 auto M_N2 = 28 * 1e-3 * si::kilograms / si::moles; 15 auto R_N2 = si::constants::codata::r / M_N2; 16 return p / R_N2 / T; 17 } 18 19 int main() 20 { 21 std::cerr << "rho = " << rho( 22 300 * si::kelvins, 23 1000e2 * si::pascals 24 ) << std::endl; 25 } Boost.units

na ostatnim wykładzie... 1 #include <boost/units/systems/si.hpp> 2 #include <boost/units/systems/si/codata_constants.hpp> 3 #include <boost/units/io.hpp> 4 5 namespace bu = boost::units; 6 namespace si = boost::units::si; 7 8 // p = rho R_N2 T 9 bu::quantity<si::mass_density> rho( 10 bu::quantity<si::temperature> T, 11 bu::quantity<si::pressure> p 12 ) 13 { 14 auto M_N2 = 28 * 1e-3 * si::kilograms / si::moles; 15 auto R_N2 = si::constants::codata::r / M_N2; 16 return p / R_N2 / T; 17 } 18 19 int main() 20 { 21 std::cerr << "rho = " << rho( 22 300 * si::kelvins, 23 1000e2 * si::pascals 24 ) << std::endl; 25 } Boost.units quantity<q,t> si::kilograms,...

na ostatnim wykładzie... 1 #include <boost/units/systems/si.hpp> 2 #include <boost/units/systems/si/codata_constants.hpp> 3 #include <boost/units/io.hpp> 4 5 namespace bu = boost::units; 6 namespace si = boost::units::si; 7 8 // p = rho R_N2 T 9 bu::quantity<si::mass_density> rho( 10 bu::quantity<si::temperature> T, 11 bu::quantity<si::pressure> p 12 ) 13 { 14 auto M_N2 = 28 * 1e-3 * si::kilograms / si::moles; 15 auto R_N2 = si::constants::codata::r / M_N2; 16 return p / R_N2 / T; 17 } 18 19 int main() 20 { 21 std::cerr << "rho = " << rho( 22 300 * si::kelvins, 23 1000e2 * si::pascals 24 ) << std::endl; 25 } Boost.units quantity<q,t> si::kilograms,... typ auto

na ostatnim wykładzie... 1 #include <boost/units/systems/si.hpp> 2 #include <boost/units/systems/si/codata_constants.hpp> 3 #include <boost/units/io.hpp> 4 5 namespace bu = boost::units; 6 namespace si = boost::units::si; 7 8 // p = rho R_N2 T 9 bu::quantity<si::mass_density> rho( 10 bu::quantity<si::temperature> T, 11 bu::quantity<si::pressure> p 12 ) 13 { 14 auto M_N2 = 28 * 1e-3 * si::kilograms / si::moles; 15 auto R_N2 = si::constants::codata::r / M_N2; 16 return p / R_N2 / T; 17 } 18 19 int main() 20 { 21 std::cerr << "rho = " << rho( 22 300 * si::kelvins, 23 1000e2 * si::pascals 24 ) << std::endl; 25 } Boost.units quantity<q,t> si::kilograms,... typ auto C++11

na ostatnim wykładzie... 1 #include <boost/units/systems/si.hpp> 2 #include <boost/units/systems/si/codata_constants.hpp> 3 #include <boost/units/io.hpp> 4 5 namespace bu = boost::units; 6 namespace si = boost::units::si; 7 8 // p = rho R_N2 T 9 bu::quantity<si::mass_density> rho( 10 bu::quantity<si::temperature> T, 11 bu::quantity<si::pressure> p 12 ) 13 { 14 auto M_N2 = 28 * 1e-3 * si::kilograms / si::moles; 15 auto R_N2 = si::constants::codata::r / M_N2; 16 return p / R_N2 / T; 17 } 18 19 int main() 20 { 21 std::cerr << "rho = " << rho( 22 300 * si::kelvins, 23 1000e2 * si::pascals 24 ) << std::endl; 25 } Boost.units quantity<q,t> si::kilograms,... typ auto C++11 ρ powietrza 1 kg m 3

temat na dziś & referencje

referencje: najprostszy przykład hello.cpp 1 int main() 2 { 3 int a = 2; 4 int &b = a; 5 b = 44; 6 return a; 7 } polecenia $ g++ ref.cpp $./a.out $ echo $? 44

referencje: najprostszy przykład hello.cpp 1 int main() 2 { 3 int a = 2; 4 int &b = a; 5 b = 44; 6 return a; 7 } polecenia $ g++ ref.cpp $./a.out $ echo $? 44 referencja nowa etykieta dla istniejącej zmiennej

referencje: najprostszy przykład hello.cpp 1 int main() 2 { 3 int a = 2; 4 int &b = a; 5 b = 44; 6 return a; 7 } polecenia $ g++ ref.cpp $./a.out $ echo $? 44 referencja nowa etykieta dla istniejącej zmiennej... gdzie to się może przydać???

referencje: zastosowania poprawienie czytelności kodu (np. lokalne referencje do elementów złożonych typów danych)

referencje: przykład (x, r, g, b) 1 #include <valarray> 2 #include <iostream> 3 4 int main() 5 { 6 std::valarray<int> rgb; 7 rgb.resize(3); 8 9 for (auto &x : rgb) // C++11 10 std::cin >> x; 11 12 int 13 &r = rgb[0], 14 &g = rgb[1], 15 &b = rgb[2]; 16 17 // por. Wikipedia: Luma (video) 18 std::cout 19 <<.2126*r +.7152*g +.0722*b 20 << std::endl; 21 } $./a.out 110 12 201 46.4806

referencje: przykład (x, r, g, b) 1 #include <valarray> 2 #include <iostream> 3 4 int main() 5 { 6 std::valarray<int> rgb; 7 rgb.resize(3); 8 9 for (auto &x : rgb) // C++11 10 std::cin >> x; 11 12 int 13 &r = rgb[0], 14 &g = rgb[1], 15 &b = rgb[2]; 16 17 // por. Wikipedia: Luma (video) 18 std::cout 19 <<.2126*r +.7152*g +.0722*b 20 << std::endl; 21 } $./a.out 110 12 201 46.4806 C++11 nowa składnia for!

referencje: zastosowania poprawienie czytelności kodu (np. lokalne referencje do elementów złożonych typów danych)

referencje: zastosowania poprawienie czytelności kodu (np. lokalne referencje do elementów złożonych typów danych) umożliwienie modyfikacji argumentów funkcji

referencje: przykład (arg) 1 #include <iostream> 2 3 void func_val(int arg) 4 { 5 arg += 44; 6 } 7 8 void func_ref(int &arg) 9 { 10 arg += 44; 11 } 12 13 int main() 14 { 15 int a = 0; 16 17 func_val(a); 18 std::cout << a << std::endl; 19 20 func_ref(a); 21 std::cout << a << std::endl; 22 23 // func_ref(44); // błąd! 24 } $./a.out 0 44

referencje: przykład (arg) 1 #include <iostream> 2 3 void func_val(int arg) 4 { 5 arg += 44; 6 } 7 8 void func_ref(int &arg) 9 { 10 arg += 44; 11 } 12 13 int main() 14 { 15 int a = 0; 16 17 func_val(a); 18 std::cout << a << std::endl; 19 20 func_ref(a); 21 std::cout << a << std::endl; 22 23 // func_ref(44); // błąd! 24 } $./a.out 0 44 po odkomentowaniu l. 23 func.cpp:23:3: error: no matching function for call to 'func_ref' func_ref(44); // błąd! ^~~~~~~~ func.cpp:8:6: note: candidate function not viable: expects an l-value for 1st argument void func_ref(int &arg) ^ 1 error generated.

referencje: zastosowania poprawienie czytelności kodu (np. lokalne referencje do elementów złożonych typów danych) umożliwienie modyfikacji argumentów funkcji

referencje: zastosowania poprawienie czytelności kodu (np. lokalne referencje do elementów złożonych typów danych) umożliwienie modyfikacji argumentów funkcji uniknięcie tworzenia kopii argumentów funkcji (wydajność!)

Dziękuję za uwagę!