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

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

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

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

Programowanie - wykład 4

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

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

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

C++ wprowadzanie zmiennych

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

Modelowanie numeryczne w fizyce atmosfery Ćwiczenia 3

2018 Marcin Kukliński. Niesforne bity i bajty

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

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

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

Programowanie Procedurale

Programowanie komputerowe. Zajęcia 1

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

Wykład 1. Program przedmiotu. Programowanie (język C++) Literatura. Program przedmiotu c.d.:

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

SFML. (Simple and Fast Multimedia Library)

1. Wprowadzenie do C/C++

Programowanie I. Kornel Warwas. ATH Katedra Matematyki i Informatyki

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

Wstęp do programowania

Wstęp do programowania

Wykład 1. Program przedmiotu. Programowanie Obiektowe (język C++) Literatura. Program przedmiotu c.d.:

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

Programowanie proceduralne w języku C++ Pojęcia podstawowe - kod źródłowy

Wstęp do Programowania 2

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

Wprowadzenie do szablonów klas

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

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

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

Wstęp do programowania. Wykład 1

1. Wprowadzenie do C/C++

Programowanie Obiektowew języku C++ Zadania L4

Programowanie w C++ z użyciem kontenerów - parę przykładów programów Opracowanie: dr hab. Mirosław R. Dudek, prof. UZ

1 Wskaźniki. 1.1 Główne zastosowania wskaźników

Zaawansowane programowanie w języku C++ Wstęp

I - Microsoft Visual Studio C++

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

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

Podstawy Programowania.

Programowanie proceduralne w języku C++ Podstawy

Programowanie obiektowe W3

Wstęp do programowania

Pytania sprawdzające wiedzę z programowania C++

3. Instrukcje warunkowe

DYNAMICZNE PRZYDZIELANIE PAMIECI

PROGRAMOWANIE w C prolog

Podstawy języka skryptowego Lua

Programowanie obiektowe w języku

Programowanie C++ Wykład 2 - podstawy języka C++ dr inż. Jakub Możaryn. Warszawa, Instytut Automatyki i Robotyki

OPTYMALIZACJA PUBLICZNEGO TRANSPORTU ZBIOROWEGO W GMINIE ŚRODA WIELKOPOLSKA

Zakopane, plan miasta: Skala ok. 1: = City map (Polish Edition)

Programowanie obiektowe w C++ Wykład 1

public: // interfejs private: // implementacja // składowe klasy protected: // póki nie będziemy dziedziczyć, // to pole nas nie interesuje

Tychy, plan miasta: Skala 1: (Polish Edition)

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

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

Wyjątki (exceptions)

Adam Wójs <adam[shift+2]wojs.pl> git --wprowadzenie

Techniki programowania INP001002Wl rok akademicki 2018/19 semestr letni. Wykład 8. Karol Tarnowski A-1 p.

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

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

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

#include <iostream> using namespace std; void ela(int); int main( ); { Funkcja 3. return 0; }

Podstawy Programowania

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

Wstęp do Informatyki

Technologie cyfrowe semestr letni 2018/2019

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

Utworzenie pliku. Dowiesz się:

Programowanie obiektowe i C++ dla matematyków

Programowanie Komponentowe Zarządzanie obiektami: kontenery

ARNOLD. EDUKACJA KULTURYSTY (POLSKA WERSJA JEZYKOWA) BY DOUGLAS KENT HALL

Oxford PWN Polish English Dictionary (Wielki Slownik Polsko-angielski)

Podstawy Programowania Algorytmy i programowanie

Techniki Programowania wskaźniki

Podstawy Programowania. Wykład 1

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

License Certificate. Autodesk License Certificate Terms and Conditions

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

Wstęp do programowania

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

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

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

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

Grzegorz Cygan. Wstęp do programowania mikrosterowników w języku C

Wstęp do programowania

Część 4 życie programu

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

W większości języków programowania(nie we wszystkich) wymaga się, żeby użyte w programie zmienne były wcześniej zadeklarowane:

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

Wprowadzenie do języka Java

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

Transkrypt:

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

na ostatnim wykładzie... kod programu 17 18 #include <boost/math/tools/roots.hpp 19 20 int main() 21 { 22 typedef double T; 23 using namespace boost::math::tools; 24 std::pair<t,t rng = bisect( 25 f<t, // funkcja 26 0., 100., // zakres poszukiwań 27 eps_tolerance<t(3) // tolerancja: 2^(1-3) 28 ); 29 30 std::cerr << std::setprecision(2) 31 << "T_wrzenia @ Mont Blanc to ok. " 32 << (rng.first + rng.second) / 2 << " C" << std::endl; 33 }

na ostatnim wykładzie... kod programu 17 18 #include <boost/math/tools/roots.hpp 19 20 int main() 21 { 22 typedef double T; 23 using namespace boost::math::tools; 24 std::pair<t,t rng = bisect( 25 f<t, // funkcja 26 0., 100., // zakres poszukiwań 27 eps_tolerance<t(3) // tolerancja: 2^(1-3) 28 ); 29 30 std::cerr << std::setprecision(2) 31 << "T_wrzenia @ Mont Blanc to ok. " 32 << (rng.first + rng.second) / 2 << " C" << std::endl; 33 } biblioteka Boost, f-cja boost::math::tools::bisect()

na ostatnim wykładzie... kod programu 17 18 #include <boost/math/tools/roots.hpp 19 20 int main() 21 { 22 typedef double T; 23 using namespace boost::math::tools; 24 std::pair<t,t rng = bisect( 25 f<t, // funkcja 26 0., 100., // zakres poszukiwań 27 eps_tolerance<t(3) // tolerancja: 2^(1-3) 28 ); 29 30 std::cerr << std::setprecision(2) 31 << "T_wrzenia @ Mont Blanc to ok. " 32 << (rng.first + rng.second) / 2 << " C" << std::endl; 33 } biblioteka Boost, f-cja boost::math::tools::bisect() kontener std::pair<t,t

na ostatnim wykładzie... kod programu 17 18 #include <boost/math/tools/roots.hpp 19 20 int main() 21 { 22 typedef double T; 23 using namespace boost::math::tools; 24 std::pair<t,t rng = bisect( 25 f<t, // funkcja 26 0., 100., // zakres poszukiwań 27 eps_tolerance<t(3) // tolerancja: 2^(1-3) 28 ); 29 30 std::cerr << std::setprecision(2) 31 << "T_wrzenia @ Mont Blanc to ok. " 32 << (rng.first + rng.second) / 2 << " C" << std::endl; 33 } biblioteka Boost, f-cja boost::math::tools::bisect() kontener std::pair<t,t instrukcja typedef

biblioteka Boost (http://boost.org/)...one of the most highly regarded and expertly designed C++ library projects in the world. Herb Sutter and Andrei Alexandrescu, C++ Coding Standards WELCOME TO BOOST.ORG! Boost provides free peer-reviewed portable C++ source libraries. We emphasize libraries that work well with the C++ Standard Library. Boost libraries are intended to be widely useful, and usable across a broad spectrum of applications. The Boost license encourages both commercial and non-commercial use. We aim to establish "existing practice" and provide reference implementations so that Boost libraries are suitable for eventual standardization. Ten Boost libraries are included in the C++ Standards Committee's Library Technical Report (TR1) and in the new C++11 Standard. C++11 also includes several more Boost libraries in addition to those from TR1. More Boost libraries are proposed for standardization in C++17. Since 2006 an intimate week long annual conference related to Boost called C++ Now has been held in Aspen, Colorado each May. Boost has been a participant in the annual Google Summer of Code since 2007. WELCOME Search Getting Started Download Libraries Mailing Lists Reporting and Fixing Bugs Wiki INTRODUCTION

Boost.units: Zero-overhead dimensional analysis and unit/quantity manipulation and conversion zero-overhead: brak narzutu w czasie wykonania (wszystkie funkcje biblioteki realizowane są w czasie kompilacji) dimensional analysis: analiza wymiarowa kodu (sprawdzanie zgodności jednostek fizycznych) unit/quantity manipulation and conversion: wypisywanie liczb z jednostkami, konwersja pomiędzy systemami (np. SI/CGS) katalog stałych fizycznych

Boost.units: podstawy przestrzenie nazw boost::units i boost::units::si struktura (klasa) boost::units::quantity<q, T=double 1 #include <iostream 2 3 4 int main() 5 { 6 7 8 9 double l = 100e3; 10 double t = 60*60; 11 12 std::cout 13 << l << " / " << t 14 << " = " << l/t 15 << std::endl; 16 } 1 #include <boost/units/systems/si.hpp 2 #include <boost/units/io.hpp 3 4 int main() 5 { 6 namespace bu = boost::units; 7 namespace si = boost::units::si; 8 9 bu::quantity<si::length l = 100e3 * si::metres; 10 bu::quantity<si::time t = 60*60 * si::seconds; 11 12 std::cout << bu::engineering_prefix 13 << l << " / " << t 14 << " = " << l/t 15 << std::endl; 16 } 100000 / 3600 = 27.7778 100 km / 3.6 ks = 27.7778 m s^-1

Boost.units: przykład komunikatu kompilatora kompiluje się, działa błąd przy kompilacji 1 #include <iostream 2 3 int main() 4 { 5 6 7 8 double l = 100e3; 9 double t = 60*60; 10 double v = l*t; 11 } komunikat o błędzie (kompilator clang++) 1 #include <boost/units/systems/si.hpp 2 3 int main() 4 { 5 namespace bu = boost::units; 6 namespace si = boost::units::si; 7 8 bu::quantity<si::length l = 100e3 * si::metres; 9 bu::quantity<si::time t = 60*60 * si::seconds; 10 bu::quantity<si::velocity v = l*t; 11 } bug_units.cpp:10:30: error: no viable conversion from 'quantity<unit<list<[...], list<dim<[...], static_rational<1, [...], [...], [...], [...]' to 'quantity<unit<list<[...], list<dim<[...], static_rational<-1, [...], [...], [...], [...]' bu::quantity<si::velocity v = l*t; ^ ~~~

Napiszmy program wyznaczający gęstość powietrza (zakładając że składa się ono w 100% z N 2 )

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 } kompilacja na tempacu $ g++ -I/work/programs/include/ -std=c++0x rho.cpp

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 } codata::r kompilacja na tempacu $ g++ -I/work/programs/include/ -std=c++0x rho.cpp

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 } codata::r typ auto! (C++11) kompilacja na tempacu $ g++ -I/work/programs/include/ -std=c++0x rho.cpp

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 } codata::r typ auto! (C++11) ρ 1 kg /m 3 kompilacja na tempacu $ g++ -I/work/programs/include/ -std=c++0x rho.cpp

Dziękuję za uwagę!