Modelowanie numeryczne w fizyce atmosfery Ćwiczenia 3
|
|
- Bartosz Leśniak
- 9 lat temu
- Przeglądów:
Transkrypt
1 Modelowanie numeryczne w fizyce atmosfery Sylwester Arabas (ćwiczenia do wykładu dr. hab. inż. Lecha Łobockiego) Instytut Geofizyki, Wydział Fizyki Uniwersytetu Warszawskiego 3. listopada 2011 r.
2 Schemat całkowania leapfrog 1 #ifndef ADV_LEAPFROG_HPP 2 # define ADV_LEAPFROG_HPP 3 schematy całkowania numerycznego leapfrog 4 # include "adv.hpp" 5 6 template <class unit, typename real_t> ψi n+1 = ψi n 1 C (ψi+1 n ψn i 1 ) 7 class adv_leapfrog : public adv<unit, real_t> 8 { 9 public: const int stencil_extent() { return 3; } 10 public: const int time_levels() { return 3; } 11 public: const int num_steps() { return 1; } przykładowa implementacja public: void op(array<quantity<unit, real_t>,1>* psi[], const Range &i, 14 const int n, const quantity<si::dimensionless, real_t> &courant, const int step) 15 { 16 assert(step == 1); 17 (*psi[n+1])(i) -= courant * ( (*psi[n])(i+1) - (*psi[n])(i-1) ); 18 } 19 }; 20 #endif
3 (dla schematu leapfrog) 45 (*psi[0])(range(nx/4, nx/2)) = 1; // integration loop 48 for (int t = 0; t < nt; ++t) 49 { 50 assert(advsch->time_levels() <= 3); // FIXME: support for other values 51 bool fallback = (t == 0 && advsch->time_levels() == 3); 52 adv<si::dimensionless, real_t> *a = fallback? fllbck : advsch; 53 int n = a->time_levels() - 2; // output 56 cout << *psi[n] << endl << endl; for (int s = 1; s <= a->num_steps(); ++s) 59 { 60 // periodic boundary 61 (*psi[n])(range(-1)) = (*psi[n])(range(nx-1)); 62 (*psi[n])(range(nx)) = (*psi[n])(range(0)); // copying data from psi[0] -> psi[n+1] 65 *psi[n+1] = *psi[0]; // advection operator 68 a->op(psi, Range(0, nx-1), n, C, s); // swapping arrays 71 if (!fallback) switch (advsch->time_levels()) 72 { 73 case 2: cyclearrays(*psi[n], *psi[n+1]); break; 74 case 3: cyclearrays(*psi[n-1], *psi[n], *psi[n+1]); break; 75 default: assert(false); 76 } 77 } 78 } 79 }
4 przykładowe wykresy: upstream (C = 0,3)
5 przykładowe wykresy: leapfrog (C = 0,3)
6 przykładowe wykresy: MPDATA (C = 0,3)
7 1 # include <boost/units/systems/si.hpp> Boost.program 2 using namespace boost::units; options: obsługa arg. linii komend 3 # include <blitz/array.h> 4 using namespace blitz; 5 #include <boost/program_options.hpp> 6 namespace po = boost::program_options; 7 #include <boost/lexical_cast.hpp> 8 9 /// error reporting dokumentacja: options/ odpowiedniki w innych językach (ale bez obsługi plików konf.): Fortran: np. biblioteka KRACKEN a Python: np. moduł argparse (wbudowany w Pythona >= 2.7) b 10 #define error_macro(msg) { cerr << "-- error: " << msg << endl; throw exception(); } 11 #define warning_macro(msg) { cerr << "-- warning: " << msg << endl; } ##include "model.hpp" <boost/units/systems/si.hpp> 142 using namespace boost::units; 153 # int include main(int <blitz/array.h> ac, char* av[]) 164 using { namespace blitz; 175 #include try <boost/program_options.hpp> 186 namespace { po = boost::program_options; #include /// options <boost/lexical_cast.hpp> list 208 po::options_description desc("options"); 219 /// error desc.add_options() reporting #define("help", error_macro(msg) "print this { message") cerr << "-- error: " << msg << endl; throw exception(); } #define("bits", warning_macro(msg) po::value<int>(), { cerr "floating << "-- warning: point bits: " << msg 32, << 64, endl; 80, 128, }...") ("adv", po::value<string>(), "advection scheme: upstream, leapfrog, mpdata") #include ("nx", "model.hpp" po::value<int>(), "number of grid points") ("nt", po::value<int>(), "number of timesteps") int main(int ("dt", ac, po::value<string>(), char* av[]) "timestep length [s]") { ("dx", po::value<string>(), "gridbox length [m]") try ("u", po::value<string>(), "velocity [m/s]") { ; /// po::variables_map options list vm; po::options_description po::store(po::parse_command_line(ac, desc("options"); av, desc), vm); desc.add_options() po::notify(vm); ("help", "print this message") ///("bits", --help po::value<int>(), or no argument case "floating point bits: 32, 64, 80, 128,...") if ("adv", (vm.count("help") po::value<string>(), ac == 1) "advection scheme: upstream, leapfrog, mpdata") { ("nx", po::value<int>(), "number of grid points") ("nt", cerr << po::value<int>(), desc << endl; "number of timesteps") ("dt", exit(exit_failure); po::value<string>(), "timestep length [s]") } ("dx", po::value<string>(), "gridbox length [m]") ("u", po::value<string>(), "velocity [m/s]") /// ; --bits (floating point precision choice) if po::variables_map (!vm.count("bits")) vm; error_macro("floating point precision not specified (--bits option)") int po::store(po::parse_command_line(ac, bits = vm["bits"].as<int>(); av, desc), vm); 33 po::notify(vm); /// --help or no argument case 36 if (vm.count("help") ac == 1) 37 b { 38 cerr << desc << endl; 39 exit(exit_failure); a urbanjost/clone/kracken/krackenhelp.html
8 17 try 18 { 19 /// options list 20 po::options_description desc("options"); 21 desc.add_options() : wozrce fukcji/metod i klas 22 ("help", "print this message") 23 ("bits", po::value<int>(), "floating point bits: 32, 64, 80, 128,...") 24 ("adv", po::value<string>(), "advection scheme: upstream, leapfrog, mpdata") 25 ("nx", po::value<int>(), "number of grid points") 261 #ifndef("nt", MODEL_HPP po::value<int>(), "number of timesteps") 272 # define ("dt", MODEL_HPP po::value<string>(), "timestep length [s]") 283 ("dx", po::value<string>(), "gridbox length [m]") 294 # include ("u","blitz-gnuplot.hpp" po::value<string>(), "velocity [m/s]") 305 # include ; "adv_upstream.hpp" Fortran >= 2003: parametrised derived types (nie obsługiwane jeszcze przez GCC/GFortrana) Python: n.d. z racji kaczego typizowania 1 (w tym kontekście) 316 # include po::variables_map "adv_mpdata.hpp" vm; przykład: 32 precyzja zmiennoprzecinkowa jako parametr programu 7 # include po::store(po::parse_command_line(ac, "adv_leapfrog.hpp" av, desc), vm); 338 po::notify(vm); 349 # include <boost/lexical_cast.hpp> /// --help or no argument case template if (vm.count("help") <typename real_t> ac == 1) int model(const { po::variables_map& vm) { cerr << desc << endl; // parameters exit(exit_failure); if } (!vm.count("nx")!vm.count("nt")!vm.count("dx")!vm.count("dt")!vm.count("u")) error_macro("nx, nt, dx, dt and u options are mandatory") 17 quantity<si::length, real_t> dx = boost::lexical_cast<real_t>(vm["dx"].as<string>()) * si::metres; 42 /// --bits (floating point precision choice) 18 quantity<si::time, real_t> dt = boost::lexical_cast<real_t>(vm["dt"].as<string>()) * si::seconds; (wewnątrz if (!vm.count("bits")) quantity<si::velocity, main(), pojedyncza, error_macro("floating real_t> podwójna u = boost::lexical_cast<real_t>(vm["u"].as<string>()) lub poczwórna point precyzja) precision not specified (--bits option)") * si::metres / si:: #ifndef int bits quantity<si::dimensionless, ADV_HPP = vm["bits"].as<int>(); real_t> C = u * dt / dx; # if int define (sizeof(float) nx = vm["nx"].as<int>(); ADV_HPP * 8 == bits) model<float>(vm); 46 else if (sizeof(double) * 8 == bits) model<double>(vm); 223 int nt = vm["nt"].as<int>(); else if (sizeof(long double) * 8 == bits) model<long double>(vm); 484 # 24 // else include advection error_macro("unsupported <boost/units/systems/si.hpp> sheme "allocation" number of bits (" << bits << ")") 495 using 25 string } namespace boost::units; advscheme = vm["adv"].as<string>(); adv<si::dimensionless, catch (exception &e) real_t> *advsch, *fllbck = NULL; # if { include (advscheme <blitz/array.h> == "upstream") advsch cerr << = "-- new exception adv_upstream<si::dimensionless, cought: " << e.what() real_t>(); << endl; przykład: 8 using namespace else exit(exit_failure); wzorzec blitz; klasy if (advscheme == "leapfrog") {} } template <class unit, typename real_t> advsch = new adv_leapfrog<si::dimensionless, real_t>(); class fllbck adv= new adv_upstream<si::dimensionless, real_t>(); {} else public: if (advscheme virtual == const "mpdata") int stencil_extent() = 0; public: advsch = virtual new adv_mpdata<si::dimensionless, const int time_levels() real_t>(); = 0; 36 else error_macro("unsupported advection scheme: " << advscheme); public: virtual const int num_steps() = 0; // public: memory allocation virtual void op(array<quantity<unit, real_t>, 1> *psi[], const Range &i, assert(advsch->stencil_extent() const int n, const quantity<si::dimensionless, == 3); // FIXME: support for real_t> other values &C, int step) = 0; }; Array<quantity<si::dimensionless, real_t>, 1> **psi; 41 psi = new Array<quantity<si::dimensionless, real_t>, 1>*[advsch->time_levels()]; // FIXME: no deallocati 19 #endif 42 for (int n=0; n < advsch->time_levels(); ++n) 43 1 jeśli psi[n] chodzi = new Array<quantity<si::dimensionless, jak kaczka i kwacze jak real_t>, kaczka, 1>(Range(-1,nx)); to musi być // FIXME: kaczką ditto 44
9 18 { 19 /// options list 20 po::options_description desc("options"); : 21 desc.add_options() obsługa poprzez wyjątki 22 ("help", "print this message") 23 ("bits", po::value<int>(), "floating point bits: 32, 64, 80, 128,...") 24 ("adv", po::value<string>(), "advection scheme: upstream, leapfrog, mpdata") 25 ("nx", po::value<int>(), "number of grid points") odpowiedniki w innych językach: Fortran: brak 2 Python: analogicznie jak w 26 ("nt", po::value<int>(), "number of timesteps") 27 ("dt", po::value<string>(), "timestep length [s]") 28 ("dx", po::value<string>(), "gridbox length [m]") 29 ("u", po::value<string>(), "velocity [m/s]") 301 # include ; <boost/units/systems/si.hpp> 312 using po::variables_map namespace boost::units; vm; 323 # include po::store(po::parse_command_line(ac, <blitz/array.h> av, desc), vm); 334 using po::notify(vm); namespace blitz; 345 #include <boost/program_options.hpp> 356 namespace /// --help po = boost::program_options; or no argument case przykład 367 #include if (vm.count("help") <boost/lexical_cast.hpp> (najprostszy!) ac == 1) 378 { 389 /// error cerr reporting << desc << endl; #define exit(exit_failure); error_macro(msg) { cerr << "-- error: " << msg << endl; throw exception(); } #define } warning_macro(msg) { cerr << "-- warning: " << msg << endl; } #include /// --bits "model.hpp" (floating point precision choice) if (!vm.count("bits")) error_macro("floating point precision not specified (--bits option) int int main(int bits ac, = vm["bits"].as<int>(); char* av[]) { if (sizeof(float) * 8 == bits) model<float>(vm); try else if (sizeof(double) * 8 == bits) model<double>(vm); { else if (sizeof(long double) * 8 == bits) model<long double>(vm); /// else options error_macro("unsupported list number of bits (" << bits << ")") } po::options_description desc("options"); catch desc.add_options() (exception &e) { ("help", "print this message") cerr ("bits", << "-- po::value<int>(), exception cought: "floating " << e.what() point << bits: endl; 32, 64, 80, 128,...") exit(exit_failure); ("adv", po::value<string>(), "advection scheme: upstream, leapfrog, mpdata") } ("nx", po::value<int>(), "number of grid points") } ("nt", po::value<int>(), "number of timesteps") 27 ("dt", po::value<string>(), "timestep length [s]") 28 ("dx", po::value<string>(), "gridbox length [m]") 29 ("u", po::value<string>(), "velocity [m/s]") 30 ; 31 po::variables_map vm; 32 2 Numercial po::store(po::parse_command_line(ac, Recipes in F90 2nd ed. av,... desc), Fortran s vm); lack of in-built exception 33 po::notify(vm); handling much requested by the numerical community...
10 : pola, konstruktory i metod 1 #ifndef ADV_MPDATA_HPP 2 # define ADV_MPDATA_HPP 3 przykład: 4 # include pole "adv.hpp" eps, konstruktor, domyślna wartość eps 5 6 template <class unit, typename real_t> 7 class adv_mpdata : public adv<unit, real_t> 8 { 9 public: const int stencil_extent() { return 3; } 10 public: const int time_levels() { return 2; } 11 public: const int num_steps() { return 2; } protected: real_t eps; 14 public: adv_mpdata(real_t eps_ = 1e-6) { eps = eps_; } public: void op(array<quantity<unit, real_t>,1>* psi[], const 17 const int n, const quantity<si::dimensionless, real_t> &cour const int step) 18 { 19 # ifdef F 20 assert(false); 21 # else 22 # define F(psi_l,psi_r,U) (.5 * (U + sqrt(u*u)) * psi_l +.5
Modelowanie numeryczne w fizyce atmosfery Ćwiczenia 1
dlaczego? (1) dlaczego? (2) Modelowanie numeryczne w fizyce atmosfery Sylwester Arabas (ćwiczenia do wykładu dr. hab. inż. Lecha Łobockiego) Instytut Geofizyki, Wydział Fizyki Uniwersytetu Warszawskiego
Kurs programowania. Wykład 1. Wojciech Macyna. 3 marca 2016
Wykład 1 3 marca 2016 Słowa kluczowe języka Java abstract, break, case, catch, class, const, continue, default, do, else, enum, extends, final, finally, for, goto, if, implements, import, instanceof, interface,
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.
- - uzupełnienie notatek: dr Jerzy Białkowski - - 1-2 - - - 1 #include 2 #include 3 # include 4 using namespace std ; 5 6 class Punkt { 7 8 private : 9 double
Kurs programowania. Wykład 9. Wojciech Macyna. 28 kwiecień 2016
Wykład 9 28 kwiecień 2016 Java Collections Framework (w C++ Standard Template Library) Kolekcja (kontener) Obiekt grupujacy/przechowuj acy jakieś elementy (obiekty lub wartości). Przykładami kolekcji sa
Składnia C++ Programowanie Obiektowe, część 3 Mateusz Cicheński
Składnia C++ Programowanie Obiektowe, część 3 Mateusz Cicheński Rzutowanie Implicit/explicit cast Reinterpret cast Static cast Z wykorzystaniem Run-time Type Information Obsługa wyjątków Czym jest wyjątek
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
Programowanie Obiektowew języku C++ Zadania L4
Programowanie Obiektowew języku C++ Zadania L4 Mirosław Głowacki 1,2 1 Akademia Górniczo-Hutnicza im. Stanisława Staszica w Ktrakowie Wydział Inżynierii Metali i Informatyki Stosowanej Katedra Informatyki
Dariusz Brzeziński. Politechnika Poznańska, Instytut Informatyki
Dariusz Brzeziński Politechnika Poznańska, Instytut Informatyki int getmax (int a, int b) { return (a > b? a : b); float getmax (float a, float b) { return (a > b? a : b); long getmax (long a, long b)
Wyjątki (exceptions)
Instrukcja laboratoryjna nr 6 Programowanie w języku C 2 (C++ poziom zaawansowany) Wyjątki (exceptions) dr inż. Jacek Wilk-Jakubowski mgr inż. Maciej Lasota dr inż. Tomasz Kaczmarek Wstęp Wyjątki (ang.
FUNKCJE WZORCOWE. Wykład 10. Programowanie Obiektowe (język C++) Funkcje wzorcowe wprowadzenie (2) Funkcje wzorcowe wprowadzenie (1)
Programowanie Obiektowe (język C++) Wykład 10. FUNKCJE WZORCOWE Funkcje wzorcowe wprowadzenie (1) Funkcje wzorcowe wprowadzenie (2) int max ( int a, int b ) return a>b? a : b; Aby mieć analogiczną funkcję
Kurs programowania. Wykład 2. Wojciech Macyna. 17 marca 2016
Wykład 2 17 marca 2016 Dziedziczenie Klasy bazowe i potomne Dziedziczenie jest łatwym sposobem rozwijania oprogramowania. Majac klasę bazowa możemy ja uszczegółowić (dodać nowe pola i metody) nie przepisujac
Składnia C++ Programowanie Obiektowe Mateusz Cicheński
Składnia C++ Programowanie Obiektowe Mateusz Cicheński Klasy i modyfikatory dostępu Przesłanianie metod Polimorfizm Wskaźniki Metody wirtualne Metody abstrakcyjne i interfejsy Konstruktory i destruktory
Wprowadzenie do szablonów 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 2008-2010 Bogdan Kreczmer Niniejszy
Projektowanie klas c.d. Projektowanie klas przykład
Projektowanie klas c.d. ogólne wskazówki dotyczące projektowania klas: o wyodrębnienie klasy odpowiedź na potrzeby życia (obsługa rozwiązania konkretnego problemu) o zwykle nie uda się utworzyć idealnej
Języki programowania - podstawy
Języki programowania - podstawy Andrzej Dudek Wydział Techniczno Informatyczny W Jeleniej Górze Dudek A. Informatyka przemysłowa tendencje i wyzwania 26.10.2015 1 /24 Algorytm określony sposób rozwiązania
Podstawy języka C++ Maciej Trzebiński. Instytut Fizyki Jądrowej Polskiej Akademii Nauk. Praktyki studenckie na LHC IVedycja,2016r.
M. Trzebiński C++ 1/14 Podstawy języka C++ Maciej Trzebiński Instytut Fizyki Jądrowej Polskiej Akademii Nauk Praktyki studenckie na LHC IVedycja,2016r. IFJ PAN Przygotowanie środowiska pracy Niniejsza
Wyjątki. Wyjątki. Bogdan Kreczmer. Katedra Cybernetyki i Robotyki Politechnika Wrocławska
Bogdan Kreczmer bogdan.kreczmer@pwr.edu.pl Katedra Cybernetyki i Robotyki Politechnika Wrocławska Kurs: Copyright c 2018 Bogdan Kreczmer Niniejszy dokument zawiera materiały do wykładu dotyczącego programowania
Programowanie w C++ Wykład 6. Katarzyna Grzelak. kwiecień K.Grzelak (Wykład 6) Programowanie w C++ 1 / 40
Programowanie w C++ Wykład 6 Katarzyna Grzelak kwiecień 2019 K.Grzelak (Wykład 6) Programowanie w C++ 1 / 40 STL - powtórzenie STL Standard Template Libarary standardowa biblioteka szablonów Składowe biblioteki:
KLASA UCZEN Uczen imię, nazwisko, średnia konstruktor konstruktor Ustaw Wyswietl Lepszy Promowany
KLASA UCZEN Napisz deklarację klasy Uczen, w której przechowujemy następujące informacje o uczniu: imię, nazwisko, średnia (pola prywatne), poza tym klasa zawiera metody: konstruktor bezparametrowy (nie
Pobieranie argumentów wiersza polecenia
Pobieranie argumentów wiersza polecenia 2. Argumenty wiersza polecenia Lista argumentów Lista argumentów zawiera cały wiersz poleceń, łącznie z nazwą programu i wszystkimi dostarczonymi argumentami. Przykłady:
#include "stdafx.h" #include <iostream> #include "windows.h" using namespace std;
// W8_3.cpp : Defines the entry point for the console application. // Przeciazenie operatorow new, delete // Przeciazenie globalne: przeciazone operatory new, delete // dzialaja dla danych dowolnych //
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
Programowanie uzupełnienie notatek: dr Jerzy Białkowski 1 2 3 4 Historia C++ został zaprojektowany w 1979 przez Bjarne Stroustrupa jako rozszerzenie języka C o obiektowe mechanizmy abstrakcji danych i
Programowanie w C++ Wykład 8. Katarzyna Grzelak. 7 maja K.Grzelak (Wykład 8) Programowanie w C++ 1 / 31
Programowanie w C++ Wykład 8 Katarzyna Grzelak 7 maja 2018 K.Grzelak (Wykład 8) Programowanie w C++ 1 / 31 STL - powtórzenie STL Standard Template Libarary standardowa biblioteka szablonów Składowe biblioteki:
Programowanie obiektowe
Programowanie obiektowe Wykład 2: Wstęp do języka Java 3/4/2013 S.Deniziak: Programowanie obiektowe - Java 1 Cechy języka Java Wszystko jest obiektem Nie ma zmiennych globalnych Nie ma funkcji globalnych
Kurs programowania. Wykład 3. Wojciech Macyna. 22 marca 2019
Wykład 3 22 marca 2019 Klasy wewnętrzne Klasa wewnętrzna class A {... class B {... }... } Klasa B jest klasa wewnętrzna w klasie A. Klasa A jest klasa otaczajac a klasy B. Klasy wewnętrzne Właściwości
Kurs programowania. Wykład 9. Wojciech Macyna
Wykład 9 Java Collections Framework (w C++ Standard Template Library) Kolekcja (kontener) Obiekt grupujacy/przechowuj acy jakieś elementy (obiekty lub wartości). Przykładami kolekcji sa zbiór, lista czy
Programowanie Obiektowew języku C++ Zadania L4
Programowanie Obiektowew języku C++ Zadania L4 Mirosław Głowacki 1,2 1 Akademia Górniczo-Hutnicza im. Stanisława Staszica w Ktrakowie Wydział Inżynierii Metali i Informatyki Stosowanej Katedra Informatyki
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 wykład XIV 10. czerwca 2015 r. rozwiązanie zadań z testu:
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
Plik klasy. h deklaracje klas
Plik klasy. h deklaracje klas KLASY DLA PRZYKŁADÓW Z POLIMORFIZMEM enum dim r1 = 1, r2, r3; class figura public: static int const maxliczbafigur; = 100; static int liczbafigur; dim rn; rodzaj przestrzeni
Technologie cyfrowe semestr letni 2018/2019
Technologie cyfrowe semestr letni 2018/2019 Tomasz Kazimierczuk Wykład 7 (08.04.2019) Wikipedia Programowanie komputerów proces projektowania, tworzenia, testowania i utrzymywania kodu źródłowego programów
Składnia C++ Programowanie Obiektowe Mateusz Cicheński
Składnia C++ Programowanie Obiektowe Mateusz Cicheński Klasy i modyfikatory dostępu Przesłanianie metod Polimorfizm Wskaźniki Metody wirtualne Metody abstrakcyjne i interfejsy Przeciążanie operatorów Słowo
Programowanie w języku C++
Programowanie w języku C++ Część dziewiąta Autor Roman Simiński Kontakt siminski@us.edu.pl www.us.edu.pl/~siminski Niniejsze opracowanie zawiera skrót treści wykładu, lektura tych materiałów nie zastąpi
!!" % & $ ( # # ( ( # ( ( TalentowiSKO talenty dodajemy, mnoīymy, potċgujemy. e-mail: TalentowiSKO@bankbps.pl tel. +48 22 53 95 231 TalentowiSKO.
!!" #$ % &!! "! # $ %! "! # # # % & '( ( '( ) $ "! $ $ "! #'$ ( * ( $ # +, - ( ( ( (( (# $ (#. (. $ ( ' ( $ ( '. ' ( / ( # ( ( ( $(## ( 0 $ '( $ $ $ $ (# ( ( (# * ' / ( $ #)$ & " 0 ) ( (... (. % *. / (.()
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 wykład VIII 15. kwietnia 2015 r. na ostatnim wykładzie...
DYNAMICZNE PRZYDZIELANIE PAMIECI
DYNAMICZNE PRZYDZIELANIE PAMIECI Pamięć komputera, dostępna dla programu, dzieli się na cztery obszary: kod programu, dane statyczne ( np. stałe i zmienne globalne programu), dane automatyczne zmienne
Qt sygnały i sloty. Bogdan Kreczmer. Katedra Cybernetyki i Robotyki Wydział Elektroniki Politechnika Wrocławska
Qt sygnały i sloty Bogdan Kreczmer bogdan.kreczmer@pwr.wroc.pl Katedra Cybernetyki i Robotyki Wydział Elektroniki Politechnika Wrocławska Kurs: Copyright c 2018 Bogdan Kreczmer Niniejszy dokument zawiera
ATD. Wykład 8. Programowanie (język C++) abstrakcyjny typ danych. Abstrakcyjne typy danych (ATD) Metody czysto wirtualne. Definicje i uwagi:
Programowanie (język C++) Wykład 8. ATD abstrakcyjny typ danych Tomasz Marks - Wydział MiNI PW -1- Tomasz Marks - Wydział MiNI PW -2- Metody czysto wirtualne Metody czysto wirtualne otrzymujemy inicjalizując
Pętle while, for, do while, instrukcje break, continue, switch 1. Pętle
Pętle while, for, while, instrukcje break, continue, switch 1. Pętle Przykład 1 - Pętla while public class lab4_3 public static void main(string[] args) char ch = 'a'; String s, wynik=""; while ( ch!=
Programowanie 2. Język C++. Wykład 2.
2.1 Definicja, deklaracja, wywołanie funkcji.... 1 2.2 Funkcje inline... 4 2.3 Przekazanie do argumentu funkcji wartości, adresu zmiennej.... 5 2.4 Wskaźniki do funkcji... 8 2.5 Przeładowanie funkcji...
Wstęp do Programowania 2
Wstęp do Programowania 2 dr Bożena Woźna-Szcześniak bwozna@gmail.com Akademia im. Jana Długosza Wykład 4 Funkcje przeciażone - Idea Przeciażanie funkcji (polimorfizm funkcji), to kolejna nowość w języku
Efekty uboczne błędów
Obsługa wyjątków Efekty uboczne błędów Fragment kodu programu jest bezpieczny (ang. exception-safe) jeżeli błędy, które wystąpią w trakcie przetwarzania tego kodu nie będą powodowały niepożądanych efektów
Operatory na rzecz typu TString
Operatory na rzecz typu TString Dopiszmy w definicji klasy operator[], dzięki któremu potraktujemy obiekt jak tablicę class TString { public: char& operator[]( size_t n ); const char& operator[]( size_t
Na ekranie monitora zostaną wyświetlone w dwu liniach teksty Pierwsza linia Druga linia
Struktura programu W programach napisanych w C++ litery wielkie i małe są rozróżniane i często po nauce Pascala są przyczyną błędów. Program napisany w języku C++ składa się zazw yczaj z następujących
Wstęp do Programowania 2
Wstęp do Programowania 2 dr Bożena Woźna-Szcześniak bwozna@gmail.com Akademia im. Jana Długosza Wykład 8 Przykład realizowany na wykładzie Klasy StringBad i String. Wstępne pliki załaczone jako źródła.
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ą
Język C++ wykład VIII
Programowanie uzupełnienie notatek: dr Jerzy Białkowski 1 2 3 4 Obiektowość języka C++ ˆ Klasa (rozszerzenie struktury), obiekt instancją klasy, konstruktory i destruktory ˆ Enkapsulacja - kapsułkowanie,
Wykład 2 Wybrane konstrukcje obiektowych języków programowania (1)
MAS dr. Inż. Mariusz Trzaska Wykład 2 Wybrane konstrukcje obiektowych języków programowania (1) Zagadnienia o Podstawy o Kontrolowanie sterowania o Klasy o Interfejsy o Obsługa błędów o Pojemniki o System
Część 4 życie programu
1. Struktura programu c++ Ogólna struktura programu w C++ składa się z kilku części: część 1 część 2 część 3 część 4 #include int main(int argc, char *argv[]) /* instrukcje funkcji main */ Część
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
i obiekty Programowanie i obiekty uzupełnienie notatek: dr Jerzy Białkowski i obiekty 1 2 3 4 i obiekty Obiektowość języka C++ Na tym wykładzie poznamy: ˆ Klasa (w języku C++ rozszerzenie struktury, typ
Wstęp do Informatyki
Wstęp do Informatyki Bożena Woźna-Szcześniak bwozna@gmail.com Jan Długosz University, Poland Wykład 11 Bożena Woźna-Szcześniak (AJD) Wstęp do Informatyki Wykład 11 1 / 52 Pętla for # i n c l u d e
Wykład II. Programowanie II - semestr II Kierunek Informatyka. dr inż. Janusz Słupik. Wydział Matematyki Stosowanej Politechniki Śląskiej
Wykład II - semestr II Kierunek Informatyka Wydział Matematyki Stosowanej Politechniki Śląskiej Gliwice, 2015 c Copyright 2015 Janusz Słupik Operacje dyskowe - zapis do pliku #include #include
KLASA UCZEN Uczen imię, nazwisko, średnia konstruktor konstruktor Ustaw Wyswietl Lepszy Promowany
KLASA UCZEN Napisz deklarację klasy Uczen, w której przechowujemy następujące informacje o uczniu: imię, nazwisko, średnia (pola prywatne), poza tym klasa zawiera metody: konstruktor bezparametrowy (nie
Programowanie obiektowe w C++ Wykład 12
Programowanie obiektowe w C++ Wykład 12 dr Lidia Stępień Akademia im. Jana Długosza w Częstochowie L. Stępień (AJD) 1 / 22 Zakresowe pętle for double tab[5] {1.12,2.23,3.33,4.12,5.22 for(double x: tab)
Programowanie 2. Język C++. Wykład 3.
3.1 Programowanie zorientowane obiektowo... 1 3.2 Unie... 2 3.3 Struktury... 3 3.4 Klasy... 4 3.5 Elementy klasy... 5 3.6 Dostęp do elementów klasy... 7 3.7 Wskaźnik this... 10 3.1 Programowanie zorientowane
Qt sygnały i designer
Qt sygnały i designer Bogdan Kreczmer bogdan.kreczmer@pwr.wroc.pl Zakład Podstaw Cybernetyki i Robotyki Instytut Informatyki, Automatyki i Robotyki Politechnika Wrocławska Kurs: Copyright c 2015 Bogdan
Programowanie w C++ Wykład 8. Katarzyna Grzelak. 15 kwietnia K.Grzelak (Wykład 8) Programowanie w C++ 1 / 33
Programowanie w C++ Wykład 8 Katarzyna Grzelak 15 kwietnia 2019 K.Grzelak (Wykład 8) Programowanie w C++ 1 / 33 Klasy - powtórzenie Klasy typy definiowane przez użytkownika Klasy zawieraja dane składowe
11.1 Obsługa błędów i wyjątków Polecenia try, throw, catch CLI C++, klasa Exception... 9
11.1 Obsługa błędów i wyjątków... 1 11.2 Polecenia, throw, catch... 1 11.3 CLI C++, klasa Exception... 9 11.1 Obsługa błędów i wyjątków błąd - przyczyna, która powoduje niewłaściwe działanie programu.
Dzisiejszy wykład. Klasa string. wersja prosta wersja ze zliczaniem odwołań. Wyjątki Specyfikator volatile Semafory
Dzisiejszy wykład Klasa string wersja prosta wersja ze zliczaniem odwołań Wyjątki Specyfikator volatile Semafory 1 Klasa string Przetwarzanie tekstów jest powszechną dziedziną zastosowań komputerów W języku
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
M. Trzebiński C++ 1/16 Podstawy języka C++ Maciej Trzebiński Instytut Fizyki Jądrowej Polskiej Akademii Nauk Praktyki studenckie na LHC IFJ PAN 6lipca2015 Uruchomienie maszyny w CC1 M. Trzebiński C++ 2/16
TEMAT : KLASY POLIMORFIZM
TEMAT : KLASY POLIMORFIZM 1. Wprowadzenie do polimorfizmu i funkcji wirtualnych w języku C++ Język C++ zakłada, że w pewnych przypadkach uzasadnione jest tworzenie klas, których reprezentanci w programie
JĘZYKI PROGRAMOWANIA Z PROGRAMOWANIEM OBIEKTOWYM. Laboratorium 3. Instrukcje wyboru
JĘZYKI PROGRAMOWANIA Z PROGRAMOWANIEM OBIEKTOWYM Laboratorium 3 Instrukcje wyboru 1 INSTRUKCJE WYBORU Instrukcje sterujące to takie instrukcje, które sterują przebiegiem programu w zależności od spełnienia
public: // interfejs private: // implementacja // składowe klasy protected: // póki nie będziemy dziedziczyć, // to pole nas nie interesuje
Zbudujemy klasę Definicję klasy zapiszmy w pliku tstring.h #ifndef TSTRING_H #define TSTRING_H #include // w pliku nagłówkowym NIE // otwieramy przestrzeni std // interfejs private: // implementacja
Materiały. Języki programowania II (Java+AVR-GCC) Literatura
Języki programowania II (Java+AVR-GCC) http://abm.p.lodz.pl dr inż. Michał Ludwicki Literatura Materiały Mikrokontrolery AVR Język C Podstawy programowania Mirosław Kardaś, Atnel, Szczecin, 2011. Specyfikacja
Wstęp do Programowania 2
Wstęp do Programowania 2 dr Bożena Woźna-Szcześniak bwozna@gmail.com Akademia im. Jana Długosza Wykład 5 W programowaniu obiektowym programista koncentruje się na obiektach. Zadaje sobie pytania typu:
Dziedziczenie & W slajdach są materiały zapożyczone z https://www.ii.uni.wroc.pl/~prz/2012lato/cpp/slajdy/cpp5.
Dziedziczenie 27.04.2016 & 04.05.2016 W slajdach są materiały zapożyczone z https://www.ii.uni.wroc.pl/~prz/2012lato/cpp/slajdy/cpp5.ppt class A{ private: int x, y; public: void setvaluex(); void setvaluey();
Wykład. Materiały bazują częściowo na slajdach Marata Dukhana
Wykład Materiały bazują częściowo na slajdach Marata Dukhana Języki programowania Kompilowane np. C, C++, Pascal Interpretowane np. JavaScript, PHP, Python, VBA Pośrednie np. Java, C# Znane kompilatory
Wykład 15. Literatura. Kompilatory. Elementarne różnice. Preprocesor. Słowa kluczowe
Wykład 15 Wprowadzenie do języka na bazie a Literatura Podobieństwa i różnice Literatura B.W.Kernighan, D.M.Ritchie Język ANSI Kompilatory Elementarne różnice Turbo Delphi FP Kylix GNU (gcc) GNU ++ (g++)
Technologie cyfrowe semestr letni 2018/2019
Technologie cyfrowe semestr letni 2018/2019 Tomasz Kazimierczuk Wykład 8 (15.04.2019) Kompilacja Kompilacja programu (kodu): proces tłumaczenia kodu napisanego w wybranym języku na kod maszynowy, zrozumiały
IMIĘ i NAZWISKO: Pytania i (przykładowe) Odpowiedzi
IMIĘ i NAZWISKO: Pytania i (przykładowe) Odpowiedzi EGZAMIN PIERWSZY (25 CZERWCA 2013) JĘZYK C++ poprawiam ocenę pozytywną z egzaminu 0 (zakreśl poniżej x) 1. Wśród poniższych wskaż poprawną formę definicji
Informatyka. Wy-08 Klasy. mgr inż. Krzysztof Kołodziejczyk
Informatyka Wy-08 Klasy mgr inż. Krzysztof Kołodziejczyk krzysztof.m.kolodziejczyk@pwr.edu.pl 17.04.2019 Strona kursu http://w12.pwr.wroc.pl/inf/ Konsultacje Piątek 13:00 C2/111a Konspekt 1 Struktura a
Co nie powinno być umieszczane w plikach nagłówkowych:
Zawartość plików nagłówkowych (*.h) : #include #define ESC 27 dyrektywy dołączenia definicje stałych #define MAX(x,y) ((x)>(y)?(x):(y)) definicje makr int menu(char* tab[], int ilosc); struct
Programowanie Obiektowew języku C++ Zadania L9
Programowanie Obiektowew języku C++ Zadania L9 Mirosław Głowacki 1,2 1 Akademia Górniczo-Hutnicza im. Stanisława Staszica w Ktrakowie Wydział Inżynierii Metali i Informatyki Stosowanej Katedra Informatyki
Wykład 1. Program przedmiotu. Programowanie Obiektowe (język C++) Literatura. Program przedmiotu c.d.:
Program przedmiotu Programowanie Obiektowe (język C++) Wykład 1. Definiowanie prostych klas. Przykłady. Przypomnienie: typy referencyjne, domyślne wartości argumentów, przeciąŝanie funkcji. Konstruktory,
Obsługa wyjątków. Język C++ WW12
Obsługa wyjątków Pozwala zarządzać błędami wykonania w uporządkowany sposób. Umożliwia automatyczne wywołanie części kodu, funkcji, metod klas, który trzeba wykonać przy powstaniu błędów. try //blok try
Programowanie obiektowe i C++ dla matematyków
Programowanie obiektowe i C++ dla matematyków Bartosz Szreder szreder (at) mimuw... 10 I 2012 1 Zabronienie kopiowania Czasami nie ma sensu, żeby obiekty pewnego typu były kopiowane z innych obiektów.
Identyfikacje typu na etapie. wykonania (RTTI)
Identyfikacje typu na etapie (Run Time Type Identification) wykonania (RTTI) Może powstać taka sytuacje, gdy w trakcie kompilacji typ obiektu nie jest znany. C++ implementuje polimorfizm poprzez hierarchie
Programowanie w C++ Wykład 5. Katarzyna Grzelak. 16 kwietnia K.Grzelak (Wykład 1) Programowanie w C++ 1 / 27
Programowanie w C++ Wykład 5 Katarzyna Grzelak 16 kwietnia 2018 K.Grzelak (Wykład 1) Programowanie w C++ 1 / 27 Pojęcia z poprzednich wykładów Tablica to ciag obiektów tego samego typu, zajmujacy ciagły
The Graphics View Framework. Oprogramowanie i wykorzystanie stacji roboczych. Wykład 5. he Graphics View Framework - architektura
The Graphics View Framework Oprogramowanie i wykorzystanie stacji roboczych Dr inż. Tomasz Olas olas@icis.pcz.pl Instytut Informatyki Teoretycznej i Stosowanej Politechnika Częstochowska The Graphics View
Język C++ wykład VII. uzupełnienie notatek: dr Jerzy Białkowski. Programowanie C/C++ Język C++ wykład VII. dr Jarosław Mederski. Spis.
Programowanie uzupełnienie notatek: dr Jerzy Białkowski 1 2 3 4 Obiektowość języka C++ ˆ Klasa (rozszerzenie struktury), obiekt instancją klasy, konstruktory i destruktory ˆ Enkapsulacja - kapsułkowanie,
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
Programowanie obiektowe w języku C++ dr inż. Jarosław Forenc
Rok akademicki 2016/2017, Wykład nr 4 2/45 Plan wykładu nr 4 Informatyka 2 Politechnika Białostocka - Wydział Elektryczny Elektrotechnika, semestr III, studia stacjonarne I stopnia Rok akademicki 2016/2017
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
C++ język nie dla ludzi o słabych nerwach. Małgorzata Bieńkowska
C++ język nie dla ludzi o słabych nerwach Małgorzata Bieńkowska malgorzata.bienkowska@gmail.com 9LivesData HYDRAStor Dla NEC Japan od ponad 10 lat 1,5 miliona linii kodu większość rozwijana w Warszawie
Wartości domyślne, szablony funkcji i 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 2012 Bogdan Kreczmer Niniejszy dokument
Programowanie obiektowe język C++
Programowanie obiektowe język C++ Dr inż. Sławomir Samolej D108A, tel: 865 1486, email: ssamolej@prz-rzeszow.pl WWW: ssamolej.prz-rzeszow.pl Podziękowanie: Chcę podziękować dr inż.. Grzegorzowi Hałdasiowi
Język C++ część 9 szablony klas. Jarosław Gramacki Instytut Informatyki i Elektroniki. szablony funkcji
Język C++ część 9 szablony klas Jarosław Gramacki Instytut Informatyki i Elektroniki szablony funkcji były omawiane na wcześniejszym wykładzie nazewnictwo: szablon funkcji wzorzec funkcji 2 szablony
Programowanie obiektowe
Programowanie obiektowe 10.04.2017 W slajdach są materiały zapożyczone z https://www.ii.uni.wroc.pl/~prz/2012lato/cpp/slajdy/cpp5.ppt Przykład wykorzystania obiektu Obiekt X jest instancją klasy Y Obiekt
Programowanie w C++ Wykład 9. Katarzyna Grzelak. 14 maja K.Grzelak (Wykład 9) Programowanie w C++ 1 / 30
Programowanie w C++ Wykład 9 Katarzyna Grzelak 14 maja 2018 K.Grzelak (Wykład 9) Programowanie w C++ 1 / 30 Klasy - powtórzenie Klasy typy definiowane przez użytkownika Klasy zawieraja dane składowe plus
Programowanie Proceduralne
Programowanie Proceduralne Struktury Bożena Woźna-Szcześniak bwozna@gmail.com Jan Długosz University, Poland Wykład 10 Co dziś będzie: Definiowanie struktury Deklarowanie zmiennych bȩda cych strukturami
Zaawansowane programowanie w C++ (PCP)
Wykład 9 - powtórzenie. 11 maja 2007 Powtórzenie materiału obiekty automatyczne, statyczne, tymczasowe, dynamiczne dziedziczenie, agregacja polimorfizm, funkcje wirtualne wzorce projektowe (strukturalne,
Klasyfikacja wyjątków
Obsługa wyjątków Klasyfikacja wyjątków Błędy w eksploatacji programów np. błędy użytkowników. Niedostępność zasobów żądanie przydziału zasobów nie może być zrealizowane np. w wyniku braku dostępnej pamięci
Programowanie Komputerów
Programowanie Komputerów Łukasz Kuszner pokój 209, WETI http://www.kaims.pl/ kuszner/ kuszner@eti.pg.gda.pl Wykład 30 godzin, Laboratoria 30 godzin 2012/ Strona 1 z 28 1. Tablice w C# Indeksowane od zera
#include <stdio.h> int main( ) { int x = 10; long y = 20; double s; s = x + y; printf ( %s obliczen %d + %ld = %f, Wynik, x, y, s ); }
OPERACJE WEJŚCIA / WYJŚCIA Funkcja: printf() biblioteka: wysyła sformatowane dane do standardowego strumienia wyjściowego (stdout) int printf ( tekst_sterujący, argument_1, argument_2,... ) ;
it = 0; memset((void *)ptr, 0, items*sizeof(double)); cout << "Konstruktor sparametryzowany " << title << " adres: " << ptr << "\n";
// W7.cpp : Defines the en point for the console application. // Konstruktor kopiujacy. Funkcje zwraca obiekt klasy. // Przeciazenie operatora przypisania 1 #include "stdafx.h" #include #include
Curiously recurring template pattern
class Derived : public Base Adam Mizerski adam@mizerski.pl Warsaw C++ Users Group 13 stycznia 2015 Wstęp The Matasano Crypto Challenges The Matasano Crypto Challenges http://cryptopals.com/ Wstęp
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
Jzyk C++ cz 3. Jarosław Gramacki Instytut Informatyki i Elektroniki ( $)*)+' *, - ( ' )*'.' '',*/ *, ','*0) 1 / ) %*+ 2'' 2" ( $%%) )'20 )*0) 1 / )
Jzyk C++ cz 3 Jarosław Gramacki Instytut Informatyki i Elektroniki # $$%%& ' ( $)*)+' *, - ( ' )*'.' '',*/ *, ','*0) 1 / ) %*+ 2'' 2" ( $%%) )'20 )*0) 1 / )!" 2 # $$%%& ' ( $%%/,))3 ( %* 2 / 4 ( ( *' *''*,
Programowanie w C++ Wykład 12. Katarzyna Grzelak. 28 maja K.Grzelak (Wykład 12) Programowanie w C++ 1 / 27
Programowanie w C++ Wykład 12 Katarzyna Grzelak 28 maja 2018 K.Grzelak (Wykład 12) Programowanie w C++ 1 / 27 Klasy cd K.Grzelak (Wykład 12) Programowanie w C++ 2 / 27 Klasy - powtórzenie Klasy typy definiowane
Wykład 4: Klasy i Metody
Wykład 4: Klasy i Metody Klasa Podstawa języka. Każde pojęcie które chcemy opisać w języku musi być zawarte w definicji klasy. Klasa definiuje nowy typ danych, których wartościami są obiekty: klasa to