Pdstawy Prgramwania Michał Bujacz bujaczm@p.ldz.pl B9 Ldex 207 gdziny przyjęć: śrdy i czwartki 10:00-11:00 http://www.eletel.p.ldz.pl/bujacz/ 1
Pdział zajęć karta ECTS: http://www.prgramy.p.ldz.pl/ 40 gdzin labratriów (13 x 3h) 20 gdzin wykładów (10 x 2h) Zaliczenie wykładu: - dpytywanie na labratriach (pytania na kniec wykładu) - prezentacje w parach Pdniesie ceny: - becnści - egzamin ustny 2
Ankieta wstępna: systemy peracyjne Używam i/lub znam się: Chcę się nauczyć: 20 20 20 15 15 10 10 5 5 6 5 6 4 2 1 0 Windws Mac Linux 0 Windws Mac Linux Nic 3
Ankieta wstępna: języki prgramwania 19/20 uważa że zna się na Pythnie Języki które chcielibyście panwać: 20 15 13 12 10 5 2 3 1 1 1 0 Pythn Java C++ C Ruby Java script Żadneg 4
Ankieta wstępna: języki prgramwania Języki które uważacie że pwinien znać prgramista: 20 18 15 14 10 5 4 1 2 0 Pythn Java C++ C Ruby 5
Ankieta wstępna: plany kariery / zaintereswania Praca naukwa Sprzedaż/marketing sprzętów bimed. Biidentyfikacja (prgramista) Analiza brazów bimed.(prgramista) Analiza sygnałów bimed.(prgramista) Serwiswanie elektr.med.(prgramista) Prjektwanie elektr. med.(prgramista) Serwiswanie elektr. med.(elektrnik) Prjektwanie elektr.med.(elektrnik) 0 1 2 3 4 5 Materiały bimed. Implanty. Sztuczne tkanki. 6
Pszukiwani prgramiści (głszenia z indeed.cm) 7
Pszukiwani prgramiści (głszenia z praca.pl) SQL JAVA C#.net C++ php C Pythn ruby Java Script bash QT Delphi Matlab 0 100 200 300 400 500 600 700 800 8
Myśleć jak prgramista Wiedza deklaratywna pierwiastek z x t liczba która spełnia równanie y * y = x Wiedza imperatywna (prceduralna/praktyczna) zgadujemy jakieś g < x sprawdzamy czy g * g x < limit jeżeli nie t nwe g = ( g + x/g ) / 2 zgadujemy aż uzyskamy zadwalające g 9
6 krków pracy prgramisty 1. Specyfikacja / definicja prblemu 2. Prjekt prgramu (design) 3. Prgramwanie (cding) 4. Testwanie (debugging) 5. Dkumentacja (dcumentatin) 6. Pielęgnacja (maintenance) 10
Spsby prjektwania prgramów Pseudkd Schemat blkwy (Flwchart) Schemat mdularny (Tp-dwn) Prgramwanie rganiczne (Bttm-up) 11
Zadanie z algrytmów 1 Napisz prsty algrytm w pseudkdzie lub schemacie blkwym wyliczający jak wydać resztę za pmcą najmniejszej liczby mnet. D dyspzycji mamy mnety: 1,2,5,10,20,50 gr 1,2,5 zł 12
Zadanie z algrytmów 2 Zaprpnuj jak ułżyć 4 liczby a,b,c,d w rsnącej klejnści: - sprawdzić wszystkie mżliwe kmbinacje ( a b c d? a c b d etc.) - znaleźć najmniejszą/największą, przerzucić na pczątek/kniec - prównywać p dwie sąsiadujące i zamieniać jeżeli są w złej klejnści 13
Klasyfikacje języków prgramwania: pzim/generacja (bliskść d maszyny/człwieka) kmpilatr/interpreter (spsób wyknywania prgramów) paradygmat prgramwania (np. imperatywne / biektwe) 14
Generacje języków prgramistycznych I pzim maszynwy 0100111 II pzim niski (assemblerwy) MOV A1, A2 III języki wyskieg pzimu fr(int i=0;i<n;i++) IV języki zadaniwe (SQL, Excel, LabView) SELECT id FROM bjects WHERE x = TRUE V języki naturalne / graficzne (czy już istnieją? czy są tylk interfejsami d 3G and 4G?) Audi input1 Filter.HP(100) Speaker1 Filter this audi input fr me. Remve all frequencies belw 100Hz. 15
Kmpilatr vs. interpreter Interpreter tłumaczy jedną instrukcję na język maszynwy, czeka aż prcesr ją wykna, tłumaczy następną (np. BASIC, języki skryptwe) - pwlne, wymaga interpretera na danym kmputerze + duża przenśnść i wykrywalnść błędów Kmpilatr tłumaczy cały prgram, zazwyczaj twrząc plik wyknywalny (np. C, C++) + szybsze i nie wymagają kmpilatra d uruchmienia - słaba przenśnść, większe ryzyk błędów Hybryda: JAVA psiada zarówn interpreter i kmpilatr wszystkie prgramy kmpiluje się na wirtualną maszynę JAVA która zainstalwana na dwlnym kmputerze służy za interpreter skmpilwaneg już kdu (efektem jest nieprównywalna przenśnść i względnie dbra szybkść) 16
Paradygmaty prgramwania (1) Imperatywne Skupienie na instrukcjach, ddzielnie definiwane dane Prgram wyknuje klejn kmendy manipulujące danymi Obiektwe Płączenie stanów (danych) i zachwań (instrukcji, prcedur, metd) Większść instrukcji plega na kmunikacji między biektami 17
Paradygmaty prgramwania (2) Strukturalne łączenie instrukcji w hierarchiczne blki Prceduralne - grupwanie instrukcji w prcedury Mdularne nadrzędnść mdułów nad blkami i prcedurami Funkcyjne - skupienie na funkcjach, nie instrukcjach Ugólnine (generic) nie wymaga twardeg definiwania typów danych Sterwane zdarzeniami (event based) mcn związene z wielprceswścią i biektwymi GUI Deklaratywne (lgiczne) liczy się wynik kńcwy nie instrukcje ptrzebne by g siągnąć (języki 4G) Agentwe wyższy pzim abstrakcji d biektweg niezależnie działające ale współpracujące mini-prgramy (sftware agents) Hybrydwe większść istniejących języków prgramistycznych t płączenia pwyższych paradygmatów 18
Pytania weryfikacyjne: Wiedza deklaratywna vs imperatywna 6 krków pracy prgramisty Spsby prjektwania prgramów Klasyfikacje języków prgramwania Pzim/generacja języka prgramwania Kmpilatr vs. interpreter Paradygmaty prgramwania 19