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

Modelowanie numeryczne w fizyce atmosfery Ćwiczenia 3

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

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

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

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

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

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

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

Testy jednostkowe - zastosowanie oprogramowania JUNIT 4.0 Zofia Kruczkiewicz

Podstawy Programowania.

Języki programowania - podstawy

Wstęp do programowania

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

Wykład 2 Wybrane konstrukcje obiektowych języków programowania (1)

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

Podstawy Programowania

Programowanie - wykład 4

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

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

DYNAMICZNE PRZYDZIELANIE PAMIECI

Operatory na rzecz typu TString

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

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

Składnia C++ Programowanie Obiektowe, część 3 Mateusz Cicheński

Programowanie Komputerów

Wprowadzenie do szablonów klas

2018 Marcin Kukliński. Niesforne bity i bajty

Pobieranie argumentów wiersza polecenia

Informatyka. Wy-02 Tablice, wskaźniki, warunki i pętle. mgr inż. Krzysztof Kołodziejczyk

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

Platforma.NET. Laboratorium nr 1 Podstawy języka C#

Sieciowa komunikacja procesów - XDR i RPC

Projektowanie klas c.d. Projektowanie klas przykład

Microsoft IT Academy kurs programowania

Wstęp do Programowania 2

Zaawansowane programowanie w języku C++ Wyjątki


Pytania dla języka C++

Programowanie w C++ Wykład 2. Katarzyna Grzelak. 4 marca K.Grzelak (Wykład 1) Programowanie w C++ 1 / 44

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

Wstęp do programowania

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

Co nie powinno być umieszczane w plikach nagłówkowych:

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

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

Język JAVA podstawy. Wykład 3, część 3. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna

I - Microsoft Visual Studio C++

Kurs programowania. Wykład 3. Wojciech Macyna. 22 marca 2019

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

Część 4 życie programu

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

Wprowadzenie do języka Java

Podstawy Informatyki sem. I 2014/2015 studia zaoczne Elektronika i Telekomunikacja!

Wstęp do Programowania 2

ECLIPSE wnioski z dwóch pierwszych laboratoriów

Modulacja i kodowanie. Labolatorium. Kodowanie źródłowe Kod Huffman a

Laboratorium 03: Podstawowe konstrukcje w języku Java [2h]

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

Scenariusz Web Design DHTML na 10 sesji. - Strony statyczne I dynamiczne. - Dodawanie kodu VBScript do strony HTML. Rysunek nie jest potrzebny

y = The Chain Rule Show all work. No calculator unless otherwise stated. If asked to Explain your answer, write in complete sentences.

Programowanie obiektowe

Wstęp do programowania

Python. Wprowadzenie. Jolanta Bachan

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

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

Programowanie Obiektowe i C++

Programowanie w C++ Wykład 2. Katarzyna Grzelak. 5 marca K.Grzelak (Wykład 1) Programowanie w C++ 1 / 41

1 Podstawy c++ w pigułce.

Funkcje w PL/SQL Funkcja to nazwany blok języka PL/SQL. Jest przechowywana w bazie i musi zwracać wynik. Z reguły, funkcji utworzonych w PL/SQL-u

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

JĘZYKI PROGRAMOWANIA Z PROGRAMOWANIEM OBIEKTOWYM. Laboratorium 3. Instrukcje wyboru

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

Technologie cyfrowe semestr letni 2018/2019

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

Rozpoznawanie twarzy metodą PCA Michał Bereta 1. Testowanie statystycznej istotności różnic między jakością klasyfikatorów

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

Pytania sprawdzające wiedzę z programowania C++


Installation of EuroCert software for qualified electronic signature

C++ wprowadzanie zmiennych

1 Podstawy c++ w pigułce.

Zmiany techniczne wprowadzone w wersji Comarch ERP Altum

Słowa kluczowe i nazwy

Pola i metody statyczne

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

Technologie cyfrowe semestr letni 2018/2019

Kurs programowania. Wykład 9. Wojciech Macyna

Programowanie Komputerów

Programowanie w C++ Wykład 12. Katarzyna Grzelak. 28 maja K.Grzelak (Wykład 12) Programowanie w C++ 1 / 27

Operatory cd. Relacyjne: ==!= < > <= >= bool b; int i =10, j =20; dzielenie całkowitych wynik jest całkowity! Łączenie tekstu: + string s = "Ala ma ";

WYKŁAD 8. Funkcje i algorytmy rekurencyjne Proste przykłady. Programy: c3_1.c..., c3_6.c. Tomasz Zieliński

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

Podstawy Programowania ELEMENTY PROGRAMU i TYPY DANYCH

Zad.30. Czy można utworzyć klasę, która implementuje oba interfejsy?

PROGRAMOWANIE SYSTEMÓW CZASU RZECZYWISTEGO

Java Programowanie Obiektowe Ćwiczenie 1- wprowadzenie

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

Transkrypt:

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: zad. 1/6 Połącz typy z wyrażeniami std::istream std::cin int 1/2 char a double 1/2. bool true float.5f std::ostream std::cout

rozwiązanie zadań z testu: zad. 2/6 Wpisz w pole poniżej to co poniższy program wypisze na standardowe wyjście #include <iostream> #include <stdexcept> + + - - + + int main() { std::cout << "a"; try { std::cout << "b"; throw std::runtime_error("c"); std::cout << "d"; } catch (...) { std::cout << "e"; } std::cout << "f"; }

rozwiązanie zadań z testu: zad. 3/6 Zaznacz, które z poniższych linijek są poprawnym (zaznacz OK), a które niepoprawnym (zaznacz KO) kodem C++ OK / KO /* /* */ */ OK / KO bool main() { return false; } OK / KO int main() { return sizeof(int); } OK / KO int main() { return sizeof(double); } OK / KO // f-cja main()

rozwiązanie zadań z testu: zad. 4/6 Połącz wyrażenia z ich wartościami (sizeof(float) > sizeof(double)) 0 0+4/2 2 2+4/3 3 sizeof(char) 1 e - a 4 abs(std::complex<float>(3,4)) 5

rozwiązanie zadań z testu: zad. 5/6 Zaznacz poniżej które spośród poniższych funkcji mogą posłużyć do podwajania wartości liczb w tablicy zdefiniowanej poza funkcją, a przekazanej jako argument void fun1(std::vector<double> &tab) { tab *= 2; } void fun2(std::valarray<double> tab) { tab *= 2; } template <typename T> void fun3(std::valarray<t> &tab) { tab *= 2; } KO KO OK

rozwiązanie zadań z testu: zad. 6/6 Wypisz w których liniach (żadnej wpisz kreskę, jednej lub wielu podaj numer każdej z linii) znajdują się odp. części programu 1 #include <boost/units/systems/si.hpp> 2 #include <iostream> 3 4 int main() 5 { 6 namespace bu = boost::units; 7 namespace si = boost::units::si; 8 9 bu::quantity<si::pressure> 10 p(1e5 * si::pascals); 11 bu::quantity<si::temperature> 12 T(300 * si::kelvins); 13 bu::quantity<si::mass_density> 14 rho(1 * si::kilograms / si::cubic_metres); 15 16 auto R = p / rho / T; 17 std::cout << R.value() << std::endl; 18 }

rozwiązanie zadań z testu: zad. 6/6 Wypisz w których liniach (żadnej wpisz kreskę, jednej lub wielu podaj numer każdej z linii) znajdują się odp. części programu 1 #include <boost/units/systems/si.hpp> 2 #include <iostream> 3 4 int main() 5 { 6 namespace bu = boost::units; 7 namespace si = boost::units::si; 8 9 bu::quantity<si::pressure> 10 p(1e5 * si::pascals); 11 bu::quantity<si::temperature> 12 T(300 * si::kelvins); 13 bu::quantity<si::mass_density> 14 rho(1 * si::kilograms / si::cubic_metres); 15 16 auto R = p / rho / T; 17 std::cout << R.value() << std::endl; 18 } instrukcja warunkowa:

rozwiązanie zadań z testu: zad. 6/6 Wypisz w których liniach (żadnej wpisz kreskę, jednej lub wielu podaj numer każdej z linii) znajdują się odp. części programu 1 #include <boost/units/systems/si.hpp> 2 #include <iostream> 3 4 int main() 5 { 6 namespace bu = boost::units; 7 namespace si = boost::units::si; 8 9 bu::quantity<si::pressure> 10 p(1e5 * si::pascals); 11 bu::quantity<si::temperature> 12 T(300 * si::kelvins); 13 bu::quantity<si::mass_density> 14 rho(1 * si::kilograms / si::cubic_metres); 15 16 auto R = p / rho / T; 17 std::cout << R.value() << std::endl; 18 } instrukcja warunkowa: deklaracja funkcji: 4

rozwiązanie zadań z testu: zad. 6/6 Wypisz w których liniach (żadnej wpisz kreskę, jednej lub wielu podaj numer każdej z linii) znajdują się odp. części programu 1 #include <boost/units/systems/si.hpp> 2 #include <iostream> 3 4 int main() 5 { 6 namespace bu = boost::units; 7 namespace si = boost::units::si; 8 9 bu::quantity<si::pressure> 10 p(1e5 * si::pascals); 11 bu::quantity<si::temperature> 12 T(300 * si::kelvins); 13 bu::quantity<si::mass_density> 14 rho(1 * si::kilograms / si::cubic_metres); 15 16 auto R = p / rho / T; 17 std::cout << R.value() << std::endl; 18 } instrukcja warunkowa: deklaracja funkcji: 4 instrukcje preprocesora: 1,2

rozwiązanie zadań z testu: zad. 6/6 Wypisz w których liniach (żadnej wpisz kreskę, jednej lub wielu podaj numer każdej z linii) znajdują się odp. części programu 1 #include <boost/units/systems/si.hpp> 2 #include <iostream> 3 4 int main() 5 { 6 namespace bu = boost::units; 7 namespace si = boost::units::si; 8 9 bu::quantity<si::pressure> 10 p(1e5 * si::pascals); 11 bu::quantity<si::temperature> 12 T(300 * si::kelvins); 13 bu::quantity<si::mass_density> 14 rho(1 * si::kilograms / si::cubic_metres); 15 16 auto R = p / rho / T; 17 std::cout << R.value() << std::endl; 18 } instrukcja warunkowa: deklaracja funkcji: 4 instrukcje preprocesora: 1,2 jawne wywołanie konstruktora: 10,12,14

rozwiązanie zadań z testu: zad. 6/6 Wypisz w których liniach (żadnej wpisz kreskę, jednej lub wielu podaj numer każdej z linii) znajdują się odp. części programu 1 #include <boost/units/systems/si.hpp> 2 #include <iostream> 3 4 int main() 5 { 6 namespace bu = boost::units; 7 namespace si = boost::units::si; 8 9 bu::quantity<si::pressure> 10 p(1e5 * si::pascals); 11 bu::quantity<si::temperature> 12 T(300 * si::kelvins); 13 bu::quantity<si::mass_density> 14 rho(1 * si::kilograms / si::cubic_metres); 15 16 auto R = p / rho / T; 17 std::cout << R.value() << std::endl; 18 } instrukcja warunkowa: deklaracja funkcji: 4 instrukcje preprocesora: 1,2 jawne wywołanie konstruktora: 10,12,14 odwołanie do metody (nie konstruktora): 17

rozwiązanie zadań z testu: zad. 6/6 Wypisz w których liniach (żadnej wpisz kreskę, jednej lub wielu podaj numer każdej z linii) znajdują się odp. części programu 1 #include <boost/units/systems/si.hpp> 2 #include <iostream> 3 4 int main() 5 { 6 namespace bu = boost::units; 7 namespace si = boost::units::si; 8 9 bu::quantity<si::pressure> 10 p(1e5 * si::pascals); 11 bu::quantity<si::temperature> 12 T(300 * si::kelvins); 13 bu::quantity<si::mass_density> 14 rho(1 * si::kilograms / si::cubic_metres); 15 16 auto R = p / rho / T; 17 std::cout << R.value() << std::endl; 18 } instrukcja warunkowa: deklaracja funkcji: 4 instrukcje preprocesora: 1,2 jawne wywołanie konstruktora: 10,12,14 odwołanie do metody (nie konstruktora): 17 deklaracja i inicjalizacja zmiennej: 9/10, 11/12, 13/14, 16

rozwiązanie zadań z testu: zad. 6/6 Wypisz w których liniach (żadnej wpisz kreskę, jednej lub wielu podaj numer każdej z linii) znajdują się odp. części programu 1 #include <boost/units/systems/si.hpp> 2 #include <iostream> 3 4 int main() 5 { 6 namespace bu = boost::units; 7 namespace si = boost::units::si; 8 9 bu::quantity<si::pressure> 10 p(1e5 * si::pascals); 11 bu::quantity<si::temperature> 12 T(300 * si::kelvins); 13 bu::quantity<si::mass_density> 14 rho(1 * si::kilograms / si::cubic_metres); 15 16 auto R = p / rho / T; 17 std::cout << R.value() << std::endl; 18 } instrukcja warunkowa: deklaracja funkcji: 4 instrukcje preprocesora: 1,2 jawne wywołanie konstruktora: 10,12,14 odwołanie do metody (nie konstruktora): 17 deklaracja i inicjalizacja zmiennej: 9/10, 11/12, 13/14, 16 deklaracja bez inicjalizacji zmiennej:

standardy/style/konwencje kodowania w C++

Wybrane źródła Google C++ Style Guide (2014) http://google-styleguide.googlecode.com/svn/trunk/cppguide.html JSF Air Vehicle - C++ Coding Standards (2005) http://www.jsf.mil/downloads/documents/jsf_av_c++_coding_ Standards_Rev_C.doc CERN C++ Coding Standard Specification (2000) http://pst.web.cern.ch/pst/handbookworkbook/handbook/programming/ CodingStandard/c++standard.pdf

miejsce deklaracji / zasięg widoczności zmiennych Google Place a function s variables in the narrowest scope possible, and initialize variables in the declaration JSF Declarations should be at the smallest feasible scope CERN Declare each variable with the smallest possible scope and initialise it at the same time

długość funkcji Google If a function exceeds about 40 lines, think about whether it can be broken up without harming the structure of the program JSF Any one function (or method) will contain no more than 200 logical source lines of code CERN As a rule of thumb, remember the 7±2 rule: typically methods should not be longer than 7±2 statements

długość linii Google Each line of text in your code should be at most 80 characters long JSF Source lines will be kept to a length of 120 characters or less

wcięcia tabulator czy spacje (i ile spacji) Google Use only spaces, and indent 2 spaces at a time JSF All indentations will be at least two spaces and be consistent within the same source file CERN The code must be properly indented for readability reasons.

nawiasy klamrowe w blokach kodu z jedną instrukcją Google In general, curly braces are not required for single-line statements... JSF The statements forming the body of an if, else if, else, while, do...while or for statement shall always be enclosed in braces, even if the braces form an empty block CERN Follow all flow control primitives (if, else, while, for, do, switch, and case) by a block, even if it is empty 1 #include <random> 2 #include <iostream> 3 4 int main() 5 { 6 std::random_device rdev; 7 std::default_random_engine rng(rdev()); 8 std::uniform_int_distribution<int> dist(1, 6); 9 10 int n = dist(rng); 11 if (n == 6) 12 { 13 std::cout << "Brawo!\n"; 14 } 15 return n; 16 } 1 #include <random> 2 #include <iostream> 3 4 int main() 5 { 6 std::random_device rdev; 7 std::default_random_engine rng(rdev()); 8 std::uniform_int_distribution<int> dist(1, 6); 9 10 int n = dist(rng); 11 if (n == 6) std::cout << "Brawo!\n"; 12 return n; 13 }

zmienne globalne Google global variables of class type are forbidden... global variables [...] should be rare in any case JSF Unencapsulated global data will be avoided CERN Do not declare global variables 1 #include <sstream> 2 #include <iostream> 3 4 int main() 5 { 6 std::ostringstream tmp; 7 8 tmp << "Hello"; 9 tmp << ", world!"; 10 tmp << "\n"; 11 std::cout << tmp.str(); 12 } 1 #include <sstream> 2 #include <iostream> 3 4 std::ostringstream tmp; 5 6 int main() 7 { 8 tmp << "Hello"; 9 tmp << ", world!"; 10 tmp << "\n"; 11 std::cout << tmp.str(); 12 }

formatowanie tekstu Google Do not use streams, except where required by a logging interface. Use printf-like routines instead CERN Use the iostream functions rather than those defined in stdio 1 #include <iostream> 2 3 int main() 4 { 5 std::cout << "Hello, world!\n"; 6 } 1 #include <cstdio> 2 3 int main() 4 { 5 printf("hello, world!\n"); 6 }

wyjątki Google We do not use C++ exceptions... Things would probably be different if we had to do it all over again from scratch. JSF C++ exceptions shall not be used (i.e. throw, catch and try shall not be used.) CERN Use exception handling instead of status values and error codes.

Dziękuję za uwagę!