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

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

Programowanie - wykład 4

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

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

Programowanie obiektowe, wykład nr 10. Metaprogramowanie cz.2: szablony struktur i klas

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

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.

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

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

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

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

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

Wstęp do programowania

Projektowanie klas c.d. Projektowanie klas przykład

Funkcja (podprogram) void

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

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

Programowanie i struktury danych

1 Wskaźniki i zmienne dynamiczne, instrukcja przed zajęciami

Klasa, metody, rozwijanie w linii

Klasa, metody, rozwijanie w linii

Wstęp do Programowania, laboratorium 02

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

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

Automatyczne tworzenie operatora = Integer2& operator=(const Integer& prawy) {

6 Niektóre nowe cechy standardu C++11

Prof. Danuta Makowiec Instytut Fizyki Teoretycznej i Astrofizyki pok. 353, tel danuta.makowiec at gmail.com

Przesłanianie nazw, przestrzenie nazw

Automatyczne tworzenie operatora = Integer2& operator=(const Integer& prawy) { zdefiniuje. Integer::operator=(ri);

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

Wstęp do programowania

Szablony funkcji i szablony klas

Wartości domyślne, przeciażenia funkcji

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

#include <iostream> #include <string> using namespace std; auto main() -> int { string s1; // pusty string. Klasa std::string

Programowanie komputerowe. Zajęcia 7

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

Podstawy programowania. Wykład 6 Złożone typy danych: struktury, unie. Krzysztof Banaś Podstawy programowania 1

Wstęp do programowania

Informatyka I. Klasy i obiekty. Podstawy programowania obiektowego. dr inż. Andrzej Czerepicki. Politechnika Warszawska Wydział Transportu 2018

2018 Marcin Kukliński. Niesforne bity i bajty

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

wykład II uzupełnienie notatek: dr Jerzy Białkowski Programowanie C/C++ Język C - funkcje, tablice i wskaźniki wykład II dr Jarosław Mederski Spis

Wprowadzenie do szablonów szablony funkcji

Podstawy programowania. Wykład: 5. Instrukcje sterujące c.d. Stałe, Typy zmiennych c.d. dr Artur Bartoszewski -Podstawy programowania, sem 1 - WYKŁAD

2 Przygotował: mgr inż. Maciej Lasota

Podstawy algorytmiki i programowania - wykład 4 C-struktury

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

Wprowadzenie do szablonów szablony funkcji

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

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

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

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

Pytania sprawdzające wiedzę z programowania C++

wykład III uzupełnienie notatek: dr Jerzy Białkowski Programowanie C/C++ Język C - zarządzanie pamięcią, struktury,

Programowanie Komponentowe Zarządzanie obiektami: kontenery

Programowanie w C++ - wybrane przykłady szablonów Opracowanie: dr hab. Mirosław R. Dudek, prof. UZ

Wstęp do informatyki- wykład 9 Funkcje

Hermetyzacja oraz pola i metody statyczne

ISO/ANSI C - funkcje. Funkcje. ISO/ANSI C - funkcje. ISO/ANSI C - funkcje. ISO/ANSI C - funkcje. ISO/ANSI C - funkcje

Program 22. #include <iostream> using namespace std; struct Osoba { string Imie; string Nazwisko; char Plec; int RokUr; };

Automatyczne tworzenie operatora = Integer2& operator=(const Integer& prawy) {

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

Modelowanie numeryczne w fizyce atmosfery Ćwiczenia 3

Wprowadzenie do szablonów klas

Programowanie obiektowe i C++ dla matematyków

Tablice i struktury. czyli złożone typy danych. Programowanie Proceduralne 1

Zaawansowane programowanie w języku C++ Przeciążanie operatorów

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

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

STL: Lekcja 1&2. Filozofia STL

Tablice, funkcje - wprowadzenie

RPC. Zdalne wywoływanie procedur (ang. Remote Procedure Calls )

Programowanie obiektowe W3

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

Podstawy algorytmiki i programowania - wykład 5 C-struktury cd.

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

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

Funkcje. Piotr Zierhoffer. 7 października Institute of Computer Science Poznań University of Technology

Wstęp do wiadomości teoretycznych (nie, nie jest to masło maślane ani wstęp, wstępów proszę cierpliwie czytać)

Struktury Struktura polami struct struct struct struct

Zaawansowane programowanie w C++ (PCP)

Część XVII C++ Funkcje. Funkcja bezargumentowa Najprostszym przypadkiem funkcji jest jej wersja bezargumentowa. Spójrzmy na przykład.

Wartości domyślne, przeciażenia funkcji

Wstęp do Programowania 2

Pytania dla języka C++

Wstęp do informatyki- wykład 11 Funkcje

PDF stworzony przez wersję demonstracyjną pdffactory Pro Program 15

C++ wprowadzanie zmiennych

Programowanie obiektowe, wykład nr 6. Klasy i obiekty

Klasa jest nowym typem danych zdefiniowanym przez użytkownika. Najprostsza klasa jest po prostu strukturą, np

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

Programowanie w C++ Wykład 14. Katarzyna Grzelak. 3 czerwca K.Grzelak (Wykład 14) Programowanie w C++ 1 / 27

ZASADY PROGRAMOWANIA KOMPUTERÓW

C-struktury wykład. Dorota Pylak

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

Część 4 życie programu

Transkrypt:

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

na ostatnim wykładzie... 1 #include <iostream> 2 3 struct cmplx 4 { 5 double real, imag; 6 7 // konstruktor 8 cmplx() 9 { 10 real = 0; 11 imag = 0; 12 } 13 }; 14 15 int main() 16 { 17 cmplx z; 18 std::cout << "(" 19 << z.real << "," 20 << z.imag 21 << ")" << std::endl; 22 } konstruktory

na ostatnim wykładzie... 1 #include <iostream> 2 3 struct cmplx 4 { 5 double real, imag; 6 7 // konstruktor 8 cmplx() 9 { 10 real = 0; 11 imag = 0; 12 } 13 }; 14 15 int main() 16 { 17 cmplx z; 18 std::cout << "(" 19 << z.real << "," 20 << z.imag 21 << ")" << std::endl; 22 } konstruktory metody wykonywane zaraz po zadeklarowaniu zmiennej

na ostatnim wykładzie... 1 #include <iostream> 2 3 struct cmplx 4 { 5 double real, imag; 6 7 // konstruktor 8 cmplx() 9 { 10 real = 0; 11 imag = 0; 12 } 13 }; 14 15 int main() 16 { 17 cmplx z; 18 std::cout << "(" 19 << z.real << "," 20 << z.imag 21 << ")" << std::endl; 22 } konstruktory metody wykonywane zaraz po zadeklarowaniu zmiennej definicja: metoda bez typu o nazwie takiej jak struktura/klasa

na ostatnim wykładzie... 1 #include <iostream> 2 3 struct cmplx 4 { 5 double real, imag; 6 7 // konstruktor 8 cmplx() 9 { 10 real = 0; 11 imag = 0; 12 } 13 }; 14 15 int main() 16 { 17 cmplx z; 18 std::cout << "(" 19 << z.real << "," 20 << z.imag 21 << ")" << std::endl; 22 } konstruktory metody wykonywane zaraz po zadeklarowaniu zmiennej definicja: metoda bez typu o nazwie takiej jak struktura/klasa użycie: brak arg. kod bez zmian argumenty typ etyk(arg);

na ostatnim wykładzie... 1 #include <iostream> 2 3 struct cmplx 4 { 5 double real, imag; 6 7 // konstruktor 8 cmplx() 9 { 10 real = 0; 11 imag = 0; 12 } 13 }; 14 15 int main() 16 { 17 cmplx z; 18 std::cout << "(" 19 << z.real << "," 20 << z.imag 21 << ")" << std::endl; 22 } konstruktory metody wykonywane zaraz po zadeklarowaniu zmiennej definicja: metoda bez typu o nazwie takiej jak struktura/klasa użycie: brak arg. kod bez zmian argumenty typ etyk(arg); konstruktor kopiujący: tworzony domyślnie dla każdej struktury/klasy

odwołania do wycinków tablic std::valarray

sposoby odwoływania się do elementów tablic std::valarray 1 #include <valarray> 2 #include <iostream> 3 4 template <typename T> 5 void prnt(t &a) 6 { 7 for (auto &i : a) std::cout << i << "\t"; 8 std::cout << std::endl; 9 } 10 11 int main() 12 { 13 std::valarray<double> a = {11,22,33,44}; prnt(a); 14 15 // operacja na całej tablicy 16 a *= 2; prnt(a); 17 18 // operacja na elementach 19 a[0] *= 2; prnt(a); 20 21 // pętla po elementach 22 for (auto &e : a) e *= 2; prnt(a); 23 24 // operacja na wycinku (od, ile, co ile) 25 std::slice i(1,2,1); 26 a[i] = 0; prnt(a); 27 } $./a.out 11 22 33 44 22 44 66 88 44 44 66 88 88 88 132 176 88 0 0 176

generatory liczb losowych (C++11)

generatory liczb losowych w C++11 (<random>) 1 wybrane typy generatorów std::default random engine std::knuth b std::mt19937... arg. konstruktora (unsigned int seed) (unsigned int seed) (unsigned int seed) 1 unsigned int typ int bez znaku, zakres wartości [0,... ]

generatory liczb losowych w C++11 (<random>) 1 wybrane typy generatorów std::default random engine std::knuth b std::mt19937... arg. konstruktora (unsigned int seed) (unsigned int seed) (unsigned int seed) wybrane typy rozkładów arg. konstruktora std::uniform int distribution<t> (int min, int max) std::uniform real distribution<t> (double min, double max) std::poisson distribution<t> (double mean=1) std::normal distribution<t> (double mean=0, double stdev=1)... 1 unsigned int typ int bez znaku, zakres wartości [0,... ]

generatory liczb losowych w C++11 (<random>) 1 wybrane typy generatorów std::default random engine std::knuth b std::mt19937... arg. konstruktora (unsigned int seed) (unsigned int seed) (unsigned int seed) wybrane typy rozkładów arg. konstruktora std::uniform int distribution<t> (int min, int max) std::uniform real distribution<t> (double min, double max) std::poisson distribution<t> (double mean=1) std::normal distribution<t> (double mean=0, double stdev=1)... użycie: liczba = rozkład(generator) 1 unsigned int typ int bez znaku, zakres wartości [0,... ]

generatory liczb losowych w C++11: przykład 1 #include <random> 2 #include <iostream> 3 4 int main() 5 { 6 double mean = 0, stdev = 1; 7 8 std::default_random_engine rng; 9 std::normal_distribution<double> dist(mean, stdev); 10 11 for (int i=0; i < 1000; ++i) 12 std::cout << dist(rng) << std::endl; 13 } $./a.out $ gnuplot gnuplot> plot <./a.out

generatory liczb losowych w C++11: przykład gnuplot 3 '<./a.out' 2 1 0-1 -2-3 -4 0 100 200 300 400 500 600 700 800 900 1000

napiszmy program zastępujący kostkę do gry

kostka do gry w C++ 1 #include <random> 2 3 int main() 4 { 5 6 7 8 std::default_random_engine rng; 9 std::uniform_int_distribution<int> dist(1,6); 10 11 return dist(rng); 12 } $./a.out ; echo $? 1 $./a.out ; echo $? 1

kostka do gry w C++ 1 #include <random> 2 3 int main() 4 { 5 std::random_device rdev; 6 unsigned int seed = rdev(); 7 8 std::default_random_engine rng(seed); 9 std::uniform_int_distribution<int> dist(1,6); 10 11 return dist(rng); 12 } $./a.out ; echo $? 5 $./a.out ; echo $? 4

Dziękuję za uwagę!