O stylu programowania

Podobne dokumenty
Oczekiwania w zakresie informatyki wobec kandydatów na studia w PWr

Ile potrzeba matematyki, żeby zrozumieć prosty algorytm?

Wprowadzenie do szablonów klas

Szablony funkcji i szablony klas

Informatyka szkolna z perspektywy uczelni

Problemy studentów na I roku

Koło Naukowe Matematyki. Politechnika Wrocławska

Harmonogram dla kierunku INFORMATYKA ANALITYCZNA Rok akademicki 2014/15 semestr letni

MATEMATYKA PLAN STUDIÓW STACJONARNYCH DRUGIEGO STOPNIA

Harmonogram INFORMATYKA ANALITYCZNA Rok akademicki 2016/17 semestr letni

Opracowali: Jacek Słupianek Damian Dudek Marcin Żurawski. Katedra Informatyki

O potrzebie abstrakcyjnego myślenia

Kierunek: Matematyka - inż., rok I specjalność: informatyczna

Kierunek: Matematyka, rok I specjalność: Informatyczna, Analiza danych, Nauczycielska

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

Harmonogram INFORMATYKA ANALITYCZNA Rok akademicki 2016/17 semestr zimowy

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

Kierunek: Matematyka, rok I specjalność: Analiza danych

Harmonogram INFORMATYKA ANALITYCZNA Rok akademicki 2014/15 semestr zimowy

Wstęp do programowania

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 1

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

Spis treści JĘZYK C - PRZEKAZYWANIE PARAMETRÓW DO FUNKCJI, REKURENCJA. Informatyka 1. Instrukcja do pracowni specjalistycznej z przedmiotu

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

PLAN STUDIÓW STACJONARNYCH PIERWSZEGO STOPNIA DLA KIERUNKU MATEMATYKA

RAMOWY PROGRAM STUDIÓW NA KIERUNKU INFORMATYKA STUDIA INŻYNIERSKIE SEMESTR: I

PLAN STUDIÓW STACJONARNYCH PIERWSZEGO STOPNIA DLA KIERUNKU MATEMATYKA NA WYDZIALE MATEMATYKI, INFORMATYKI I EKONOMETRII UNIWERSYTETU ZIELONOGÓRSKIEGO

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

Uniwersytet Śląski w Katowicach WYDZIAŁ MATEMATYKI, FIZYKI I CHEMII. Kierunek Matematyka. Studia stacjonarne i niestacjonarne I i II stopnia

Kierunek i poziom studiów: Matematyka, studia I stopnia (licencjackie), rok I

Programowanie Obiektowew języku C++ Zadania L2

Plan dla studiów prowadzonych w formie niestacjonarnej 2014/2015

PROGRAMOWANIE w C prolog

Instrukcja wyboru, pętle. 2 wykład. Podstawy programowania - Paskal

Podstawy programowania w języku C++ Zadania

Informatyka na WPPT. prof. dr hab. Jacek Cichoń dr inż. Marek Klonowski

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

WYDZIAŁ NAUK EKONOMICZNYCH I INFORMATYKI Rozkład zajęć, Semestr zimowy, Kierunek INFORMATYKA PONIEDZIAŁEK

Wartości domyślne, przeciażenia funkcji

Programowanie Proceduralne

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

Kierunek: Informatyka Poziom studiów: Studia I stopnia Forma i tryb studiów: Stacjonarne. Wykład Ćwiczenia

Informacja o Możliwości Jednoczesnego Studiowania Matematyki i Informatyki w Systemie Studiów Dwustopniowych.

Matematyczne Podstawy Informatyki

Kierunek MATEMATYKA Specjalność MATEMATYKA FINANSOWO-UBEZPIECZENIOWA

Wprowadzenie do szablonów szablony funkcji

Wprowadzenie do szablonów szablony funkcji

PLAN STUDIÓW STACJONARNYCH PIERWSZEGO STOPNIA MATEMATYKA. od roku akademickiego 2013/2014 (ze zmianami zatw. 2 VII 2014)

Harmonogram INFORMATYKA ANALITYCZNA Rok akademicki 2015/16 semestr letni

Podstawy programowania w języku C++

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

PLAN STUDIÓW STACJONARNYCH PIERWSZEGO STOPNIA MATEMATYKA. od roku akademickiego 2015/2016

Kierunek:Informatyka- - inż., rok I specjalność: Grafika komputerowa i multimedia

Matematyka Stosowana na Politechnice Wrocławskiej. Komitet Matematyki PAN, luty 2017 r.

PLAN STUDIÓW STACJONARNYCH PIERWSZEGO STOPNIA DLA KIERUNKU MATEMATYKA NA WYDZIALE MATEMATYKI, INFORMATYKI I EKONOMETRII UNIWERSYTETU ZIELONOGÓRSKIEGO

Kierunek: Informatyka Poziom studiów: Studia I stopnia Forma i tryb studiów: Stacjonarne. Wykład Ćwiczenia

Wstęp do Informatyki i Programowania (kierunek matematyka stosowana)

Harmonogram INFORMATYKA ANALITYCZNA Rok akademicki 2015/16 semestr zimowy

Kierunek MATEMATYKA, Specjalność MATEMATYKA STOSOWANA

Język ludzki kod maszynowy

INSTYTUT NAUK EKONOMICZNYCH I INFORMATYKI Rozkład zajęć, Semestr zimowy, Kierunek INFORMATYKA PONIEDZIAŁEK

dr inż. Jarosław Forenc

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

Kierunek: Informatyka Poziom studiów: Studia I stopnia Forma i tryb studiów: Stacjonarne. Wykład Ćwiczenia

3. Plan studiów PLAN STUDIÓW. Faculty of Fundamental Problems of Technology Field of study: MATHEMATICS

INFORMATYKA. PLAN STUDIÓW NIESTACJONARNYCH 2-go STOPNIA (W UKŁADZIE ROCZNYM) STUDIA ROZPOCZYNAJĄCE SIĘ W ROKU AKADEMICKIM A K L S P

Kierunek Informatyka stosowana Studia stacjonarne Studia pierwszego stopnia

Kierunek: Matematyka Poziom studiów: Studia II stopnia Forma i tryb studiów: Stacjonarne

BUZI (Bez Udziwnień Zbędnych Idioto) WYKŁAD. Memento 1

PARADYGMATY PROGRAMOWANIA Wykład 4

Kierunek: Inżynieria i Analiza Danych Poziom studiów: Studia I stopnia Forma studiów: Stacjonarne. audytoryjne. Wykład Ćwiczenia

Matematyka dyskretna - wykład - część Podstawowe algorytmy kombinatoryczne

Functionalization. Funkcje w C. Marcin Makowski. 30 listopada Zak lad Chemii Teoretycznej UJ

Programowanie I C / C++ laboratorium 02 Składnia pętli, typy zmiennych, operatory

Liczba godzin w semestrze II r o k. Nazwa modułu. PLAN STUDIÓW (poziom studiów) I STOPNIA studia (forma studiów) niestacjonarne

Wskaźniki. Programowanie Proceduralne 1

INFORMATYKA PLAN STUDIÓW NIESTACJONARNYCH (W UKŁADZIE ROCZNYM) STUDIA ROZPOCZYNAJĄCE SIĘ W ROKU AKADEMICKIM

Uniwersytet Śląski w Katowicach WYDZIAŁ MATEMATYKI, FIZYKI I CHEMII. Kierunek Matematyka. Studia stacjonarne i niestacjonarne I i II stopnia

Zaawansowane programowanie w języku C++ Funkcje uogólnione - wzorce

Informatyka Zapraszamy na studia!

Kierunek:Informatyka- - inż., rok I specjalność: Grafika komputerowa

Funkcja (podprogram) void

PLAN STUDIOW. 1 Zestaw kursów i grup kursów obowiazkowych i wybieralnych w układzie semestralnym

Kierunek:Informatyka- - inż., rok I specjalność: Grafika komputerowa, Inżynieria oprogramowania, Technologie internetowe

FIZYKA. na Wydziale Podstawowych Problemów Techniki Politechniki Wrocławskiej ROZWIŃ SWÓJ POTECJAŁ!

PLAN STUDIÓW STACJONARNYCH PIERWSZEGO STOPNIA

INFORMATYKA PLAN STUDIÓW NIESTACJONARNYCH 2-GO STOPNIA (W UKŁADZIE ROCZNYM) STUDIA ROZPOCZYNAJĄCE SIĘ W ROKU AKADEMICKIM 2015/16

INFORMATYKA i FINANSE KATEDRA INFORMATYKI TEORETYCZNEJ

Repetytorium z matematyki 3,0 1,0 3,0 3,0. Analiza matematyczna 1 4,0 2,0 4,0 2,0. Analiza matematyczna 2 6,0 2,0 6,0 2,0

Podstawy i języki programowania

Wykład 1

Wskaźniki. Informatyka

PLAN STUDIÓW STACJONARNYCH PIERWSZEGO STOPNIA DLA KIERUNKU INFORMATYKA I EKONOMETRIA

ZASADY PROGRAMOWANIA KOMPUTERÓW

WSKAŹNIKI ILOŚCIOWE - Punkty ECTS w ramach zajęć: Efekty kształcenia. Wiedza Umiejętności Kompetencje społeczne (symbole) MK_1. Analiza matematyczna

Wartości domyślne, przeciażenia funkcji

Laboratorium 1 Temat: Przygotowanie środowiska programistycznego. Poznanie edytora. Kompilacja i uruchomienie prostych programów przykładowych.

Kierunek: Matematyka Poziom studiów: Studia II stopnia Forma i tryb studiów: Stacjonarne

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

Transkrypt:

O stylu programowania Jacek Cichoń Jacek.Cichon@pwr.edu.pl Katedra Informatyki Wydział Podstawowych Problemów Techniki Politechnika Wrocławska 30 listopada 2017 J. Cichoń (KI WPPT PWr) O stylu programowania 30 listopada 2017 1 / 12

O mnie Zainteresowania naukowe matematyka: teoria mnogości, topologia, teoria miary,... informatyka teoretyczna: algorytmika, algorytmy zrandomizowane, big data, sieci Ad Hoc,... Dydaktyka matematyka: analiza, algebra, matematyka dyskretna, rachunek prawdopodobieństwa,... informatyka: Big Data, WWW, grafika, automatyczna weryfikacja, kursy programowania, bazy danych,... J. Cichoń (KI WPPT PWr) O stylu programowania 30 listopada 2017 2 / 12

Studenci Informatyki WPPT - I rok Podstawowe informacje Liczba studentów: ok. 120 osób. Próg rekrutacji: około 410 punktów Maksymalny wynik: 537 pkt. Jest więc dobrze To można było wyczuć już na pierwszych wykładach. J. Cichoń (KI WPPT PWr) O stylu programowania 30 listopada 2017 3 / 12

Studenci Informatyki WPPT - I rok Podstawowe informacje Liczba studentów: ok. 120 osób. Próg rekrutacji: około 410 punktów Maksymalny wynik: 537 pkt. Jest więc dobrze To można było wyczuć już na pierwszych wykładach. J. Cichoń (KI WPPT PWr) O stylu programowania 30 listopada 2017 3 / 12

Kilka zasad poprawnego programowania DRY Do not repeat yourself KISS Keep it simple, stupid Single Responsibility Principle Do one thing and do it well J. Cichoń (KI WPPT PWr) O stylu programowania 30 listopada 2017 4 / 12

Wstęp do Informatyki i Programowania Zadanie 2.1 W Polsce używamy następujacych monet i banknotów: monety: 1 gr, 2 gr, 5 gr, 10 gr, 20 gr, 50 gr, 1 zł, 2 zł, 5 zł banknoty: 10 zł, 20 zł, 50 zł, 100 zł, 200 zł, 500 zł. Napisz w języku C program, który czyta kwotę podana w postaci całkowitej liczby złoty i całkowitej liczby groszy a następnie drukuje w jaki sposób wypłacić ja jak najmniejsza całkowita liczba banknotów i monet. J. Cichoń (KI WPPT PWr) O stylu programowania 30 listopada 2017 5 / 12

Pierwsze podejście const unsigned short CURRENCY_PRIMARY_VALUES [ ] = {500,200,100,50,20,10,5,2,1; const unsigned short CURRENCY_SECONDARY_VALUES [ ] = {50,20,10,5,2,1; i n t main ( ) { unsigned short PRIMARY_VALUE_INPUT ; unsigned short SECONDARY_VALUE_INPUT;.... for ( unsigned short i =0; i <sizeof (CURRENCY_PRIMARY_VALUES ) ; i ++){ i f (PRIMARY_VALUE_INPUT /CURRENCY_PRIMARY_VALUES[ i ]! = 0 ) { p r i n t f ( "%hd x %d \ n ",CURRENCY_PRIMARY_VALUES[ i ], PRIMARY_VALUE_INPUT /CURRENCY_PRIMARY_VALUES[ i ] ) ; PRIMARY_VALUE_INPUT =PRIMARY_VALUE_INPUT /CURRENCY_PRIMARY_VALUES[ i ] CURRENCY_PRIMARY_VALUES[ i ] ; for ( unsigned short i =0; i <sizeof (CURRENCY_SECONDARY_VALUES) ; i ++){ i f (SECONDARY_VALUE_INPUT/CURRENCY_SECONDARY_VALUES[ i ]! = 0 ) { p r i n t f ( "%hd x %d \ n ",CURRENCY_SECONDARY_VALUES[ i ], SECONDARY_VALUE_INPUT/CURRENCY_SECONDARY_VALUES[ i ] ) ; SECONDARY_VALUE_INPUT = SECONDARY_VALUE_INPUT/CURRENCY_SECONDARY_VALUES[ i ] CURRENCY_SECONDARY_VALUES[ i ] ; J. Cichoń (KI WPPT PWr) O stylu programowania 30 listopada 2017 6 / 12

Po zastosowaniu zasady DRY const unsigned short VALUES [ ] = {50000,20000,10000,5000,2000,1000,500,200,100,50,20,10,5,2,1; const unsigned int NV = sizeof (VALUES ) / sizeof (VALUES [ 0 ] ) ;..... void convert ( unsigned i n t PVal, unsigned i n t SVal ) { unsigned short counter ; SVal+=PVal 100; i f ( SVal>=M_B) { p r i n t f ( " B i l l s : \ n " ) ; for ( u i n t 1 6 _ t i =0; i <NV; i ++) { counter = SVal /VALUES[ i ] ; i f (VALUES[ i ]==M_C) { p r i n t f ( " Coins : \ n " ) ; i f ( counter! = 0 ) { i f (VALUES[ i ] <100){ p r i n t f ( "%hu %s x %hu \ n ", VALUES[ i ], SVAL_NAME, counter ) ; else { p r i n t f ( "%d %s x %hu \ n ", VALUES[ i ] / 1 0 0, PVAL_NAME, counter ) ; SVal =counter VALUES[ i ] ; J. Cichoń (KI WPPT PWr) O stylu programowania 30 listopada 2017 7 / 12

Po przepuszczeniu przez program cpplint const unsigned i n t VALUES [ ] = {50000, 20000, 10000, 5000, 2000, 1000, 500, 200, 100, 50, 20, 10, 5, 2, 1 ; const unsigned int NV = sizeof (VALUES) / sizeof (VALUES [ 0 ] ) ;.... void convert ( unsigned i n t PVal, unsigned i n t SVal ) { unsigned i n t counter ; SVal+= PVal 100; i f ( SVal >= M_B) { p r i n t f ( " B i l l s : \ n " ) ; for ( unsigned i n t i = 0; i < NV; i ++) { counter = SVal / VALUES[ i ] ; i f (VALUES[ i ] == M_C) { p r i n t f ( " Coins : \ n " ) ; i f ( counter!= 0) { i f (VALUES[ i ] < 100) { p r i n t f ( "%hu %s x %hu \ n ", VALUES[ i ], SVAL_NAME, counter ) ; else { p r i n t f ( "%d %s x %hu \ n ", VALUES[ i ] / 100, PVAL_NAME, counter ) ; SVal = counter VALUES[ i ] ; J. Cichoń (KI WPPT PWr) O stylu programowania 30 listopada 2017 8 / 12

Po zastosowaniu reguły KISS const i n t VALUES [ ] = {50000, 20000, 10000, 5000, 2000, 1000, 500, 200, 100, 50, 20, 10, 5, 2, 1 ;.... void convert ( i n t PVal, i n t SVal ) { i n t counter ; SVal+= PVal 100; i f ( SVal >= M_B) { p r i n t f ( " B i l l s : \ n " ) ; for ( i n t i = 0; i < NV; i ++) { counter = SVal / VALUES[ i ] ; i f (VALUES[ i ] == M_C) { p r i n t f ( " Coins : \ n " ) ; i f ( counter!= 0) { i f (VALUES[ i ] < 100) { p r i n t f ( "%d %s %d \ n ", VALUES[ i ], SVAL_NAME, counter ) ; else { p r i n t f ( "%d %s %d \ n ", VALUES[ i ] / 100, PVAL_NAME, counter ) ; SVal = counter VALUES[ i ] ; J. Cichoń (KI WPPT PWr) O stylu programowania 30 listopada 2017 9 / 12

Po zastosowaniu Single Resposibility Principle void Zamien ( i n t gr, i n t rozmiar, const i n t NOMINALY [ ], i n t pieniadze [ ] ) { assert ( gr >= 0 ) ; for ( i n t i = 0; i < rozmiar ; ++ i ) { pieniadze [ i ] = gr / NOMINALY[ i ] ; gr = pieniadze [ i ] NOMINALY[ i ] ; i n t main ( ) { const i n t ILE_NOMINALOW = 15; const i n t NOMINALY[ILE_NOMINALOW] = { 50000, 20000, 10000, 5000, 2000, 1000, 500, 200, 100, 50, 20, 10, 5, 2, 1 ; const i n t ZL_GR = 100; i n t zl ; i n t gr ; i n t banknoty [ILE_NOMINALOW ] ;.... Zamien ( zl ZL_GR + gr, ILE_NOMINALOW, NOMINALY, banknoty ) ;.... J. Cichoń (KI WPPT PWr) O stylu programowania 30 listopada 2017 10 / 12

Wnioski Metody polepszania umiejętności programistycznych Stosuj uniwersalne zasady programowania (KISS, DRY, SRP) Stosuj wspomagajace programowanie (np. cpplint, phplint, pylint) Stosuj, jeśli to możliwe, code analyzers Stosuj nowoczesne kompilatory (np. clang, cpplang) Korzystaj ze wszystkich możliwych opcji generowania ostrzeżeń przez kompilatory. J. Cichoń (KI WPPT PWr) O stylu programowania 30 listopada 2017 11 / 12

To już koniec Kontakt email: Jacek.Cichon@pwr.edu.pl WWW: https://www.cs.pwr.edu.pl/cichon/ Dziękuję J. Cichoń (KI WPPT PWr) O stylu programowania 30 listopada 2017 12 / 12