1 / 87

Programiranje

Programiranje. Neja Zupan. Uvod 2. Skripta : Srečko Zorman: Programiranje, gradivo za interno uporabo. Knjige (na primer): Donald Knuth : Umetnost računalniškega programiranja ( The Art of Computer Programming )

Download Presentation

Programiranje

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Programiranje Neja Zupan

  2. Uvod 2 Skripta: • Srečko Zorman: Programiranje, gradivo za interno uporabo. Knjige (na primer): • Donald Knuth: Umetnost računalniškega programiranja (The Art of Computer Programming ) • Viljem Žumer, Janez Brest: Uvod v programiranje in programski jezik C++, Maribor, FERI 2004. • Martin Juvan, Matjaž Zaveršnik: Vaje iz programiranja: C, C++ in Mathematica, Ljubljana, Študentska založba, 2000. • http://marcel.uni-mb.si/janez/cpp/ • http://www.islovar.org/iskanje_enostavno.asp

  3. Namen • Spoznati procese v izgradnji programske opreme • Spoznati osnovne sestavine programiranja • Spoznati osnove dela s podatki • Spoznati elemente algoritmov za pisanje programov

  4. Cilj Slušatelj naj bi bil sposoben: Kodirati postopke za obdelavo podatkov med uporabnikom, notranjim in zunanjim pomnilnikom

  5. Vsebina • Uvod (Osnovne in značilnosti programiranja, objektno usmerjen pristop, …) • Osnove (gradniki, spremenljivke, konstante, podatkovni tipi, …) • Osnovne krmilne strukture (pogojni in ponavljalni stavek, podprogrami) • Kazalci in funkcije • Tabele • Dinamični pomnilnik

  6. Znanost in umetnost Snovanje programov vsebuje elemente: znanosti, umetnosti, matematike in tehnike.

  7. Programiranje je dejavnost, katere cilj je ustvarjanje novih računalniških programov ali njihovih sestavnih delov na temelju določenih pravil.

  8. Vrste programiranja • Proceduralno programiranje • Potek izvajanja je v naprej določen • START ... KONEC • Bližje računalniškemu jeziku • Dogodkovno - objektno programiranje • Potek programa je odvisen od dogodkov npr.: • Na kateri gumbek klikne uporabnik • Bližje človeškemu razmišljanju

  9. Računalniški programi Računalniški programi so napisani v izvorni kodi določenega programskega jezika, pri delu pa si programer lahko pomaga z ustreznimi razvojnimi orodji zanj.

  10. Programski jezik • skupek pravil, podatkovnih struktur in vmesnikov, ki programerju služijo kot orodje za izdelavo programa. • zbirka ukazov, ki jih razume računalnik, s katerimi mu določimo katera opravila naj opravi in po katerem vrstnem redu

  11. Programski jezik Izbira programskega jezika odvisna od: • Vrsta problema • Naše znanje programskih jezikov • Delovno okolje • Karakteristike računalnika • Finančne omejitve

  12. Programski jeziki • Strojni jezik • Zaporedje cifer 1 in 0, edino kar rač. razume • Odvisen od procesorja • Počasno in nepregledno programiranje • Zbirni jezik (assembler) • 1 in 0 zamenjajo črkovne kode, lažje si zapomnimo • Samo za časovno kritične elemente (rač. igre) • Višji programski jeziki: Pascal, C++, Basic,… • Prenosljivost – neodvisnost od procesorja • Prevajalniki prevajajo kodo v zbirni jezik • Jeziki 4. Generacije: SQL, … • Neprilagodljivi in potratni • Za hitro reševanje ozkih problemov več dela za človeka večja pomoč računalnika

  13. Programski jezik Programski jezikise uporabljajo zato, ker sta človekova in računalnikova »govorica« tako različni, da je pisati programe v jeziku računalnika (strojni kodi) nepregledno in nasploh mukotrpno.

  14. Računalnik razume le strojni jezik Obstajata dva načina pretvorbe kode: • Prevajanje opravi prevajalnik (compiler) • Prevede preden program poženemo • Prevedemo 1x, poženemo večkrat • Za različne platforme prevedemo na vsaki (razen Jave) • Tolmačenje opravi tolmač (interpreter) • Postopno korak za korakom tolmači vrstico izvorne kode med izvajanjem • Lažje odkrivanje napak, npr. v katerem koraku • Počasnejše izvajanje programa

  15. Zbirni jezik • Zbirni jezik (assembler) (angleško assemble - zbirati) je programski jezik, ki je napisan z mnemoniki. • Mnemoniki predstavljajo kodo v strojnem zapisu (ničle in enice).

  16. Primer programa v zbirniku

  17. Zbirni jezik • povezano s strojno opremo • programi neprenosljivi na drugačno strojno opremo • zavzamejo manj prostora v pomnilniku • izvajajo se hitreje

  18. C++ • konec ’70ih: Bjarne Stroustrup (takrat inženir pri Bell Labs) • razširitev zelo razširjenega programskega jezika C • dodatki iz Simula67 ter Algol68 • prvotno se je jezik imenoval »C with Classes« (C z razredi) • ime C++ se prvič pojavi v letu 1983 • v drugi polovici osemdesetih let C++ doživi korenite spremembe

  19. Zgodovina imena »C++« • Ime jezika pripisujejo Ricku Mascittiju in so ga prvič uporabili decembra 1983. • Kombinacijo C+ je tedaj že tudi zasedel drug nesoroden jezik. Pripono ++ je po Stroustrupovih besedah dal zaradi evolucijske/revolucionarne narave razširitve C. C++ je tudi pogosteje kot npr. raba ++C. Ker C++ v bistvu ni spremenil C-ja, bi bilo še pravilnejše ime »C+1«. • Ko so leta 1992 vprašali Mascittija zakaj je dal takšno ime, je navedel, da je bilo ime le neuradno in da si ni nikoli mislil da bo postalo tudi uradno ime.

  20. C++ standardizacija • Leta 1989 pod okriljem ANSI (American National Standards Institution) organizacije ustanovljen oddelek za standardizacijo programskega jezika C++ (J16) • zatem ISO (International Standardization Organization) oddelek za mednarodno standardizacijo • Specifikacije standarda so tudi zamrznili za naslednjih pet let, dovoljene spremembe so le popravki morebitnih napak • Leta 1998 so sprejeli tudi ISO standard za jezik C++ kot ISO/IEC 14882:1998. Trenutna različica standarda je ISO/IEC 14882:2003. • Razvijajo tudi novo različico z neuradnim imenom C++0x.

  21. C++ • C++ (C plus plus) [ce plus plus] je splošnonamenski programski jezik. • V C++ so podatkovni tipi statični, zapis kode je prost. • Jezik podpira: • večparadigmatično proceduralno programiranje • podatkovno abstrakcijo • objektno usmerjeno • generično programiranje

  22. Proceduralno programiranje • uporablja procedure • zaporedje programskih stavkov s svojim imenom • lahko izvedena večkrat med delovanjem programa • zaključen del programa, ki ga lahko izvajanje naloge celotnega programa potrebuje večkrat

  23. Abstrakcija podatkov

  24. Abstraktni podatkovni tip

  25. Objektno orientirano programiranje • lažja in bolj neposredno predstavitev realnega problema v programu z objekti • svoje lastnosti (podatkovni del programiranja) • svoje obnašanje (funkcionalni del programiranja)

  26. OOP: objektno orientirano programiranje • Razred – abstrakna predstavitev – vsebuje definicije lastnosti in metod • Objekt– konkretna instanca (primerek) razreda – vsebuje vrednosti • Lastnost(property) – označuje neko lastnost objekta, npr. velikost črk • Metoda(methode) – funkcija, ki prebere ali spremeni neko lastnost objekta • Pri tiskanju bi bila matrica razred, vsak tiskan list pa svoj objekt tega razreda

  27. OOP • Gumbek na ekranu je svoj objekt • Objekti izhajajo iz razredov • Vsi objekti, ki izhajajo iz istega razreda, imajo skupne lastnosti in metode: • Napis • Pozicija na ekranu • Lahko je (ne)aktiven • Zazna, ko ga uporabnik pritisne • ... • Objektom uporabniškega vmesnika pravimo tudi gradniki uporabniškega vmesnika

  28. OOP • Lastnosti razreda so zavarovane – do njih lahko dostopamo (beremo, spremeninjamo) le preko metod (object-based programming) • Pomemben element so dogodki (events), npr: • Ko uporabnik klikne na gumbek • Ko uporabnik premakne miško • Ko uporabnik spremeni besedilo v vnosnem polju

  29. OOP • Vsak razred lahko sprejme sporočila o določenih dogodkih (event-driven programming, event procedure) • Program dogodke zazna in takrat lahko program izvede del programske kode imenovan

  30. Primer C++ #include <iostream> int main() { std::cout << "Pozdravljen svet!" << std::endl; return 0; // ni potrebno po ISO standardu }

  31. Zakaj C++ • objektno orientirano programiranje • prenosljivost • zgoščenost, jedrnatost • modularno programiranje • združljivost s C • hitrost

  32. Povzetek • Programiranje: pisanje (oblikovanje, ...) zaporedja ukazov • Programski jezik: skupek pravil, zbirka ukazov • Program: Natančen opis zaporednih korakov (ukazov, akcij, ...), ki naj jih izvede računalnik • Prevajalnik: računalniški program, ki prevede izvorno kodo napisano v višjem programskem jeziku v strojni jezik • Aplikativni programi (aplikacije, uporabniške rešitve)

  33. Algoritem • navodilo, s katerim rešujemo določen problem • seznam korakov, ki nas pripeljejo do rešitve problema • primer algoritma iz vsakdanjega življenja je kuharski recept • zaporedje operacij, ki nas v končnem številu korakov vodijo do rešitve problema

  34. X ZAČNI ZAČNI VSOTA =A + B PREBERIŠTEVILO A IZPIŠIVSOTA PREBERIŠTEVILO B KONEC KONEC X Značilnosti algoritma • (lahko) ima podatke, • (običajno) vrne rezultat, • je natančno določen, • je končen, • je izvedljiv. • zajemanje podatkov • obdelava podatkov • izpis rezultatov

  35. Kategorije algoritmov • Obstajajo različne kategorije algoritmov, bolje rečeno strategij, ki jih uporabljamo za reševanje problemov. Poznane strategije so: • deli in vladaj • dinamično programiranje • požrešna metoda • linearno programiranje • verjetnostni algoritmi • Pri analizi algoritma nas običajno zanimata njegova prostorska in časovna zahtevnost.

  36. Deli in vladaj • Deli in vladaj (angleško Divide and Conquer) predstavlja strategijo delitve problema na manjše probleme, ki so prvotnemu problemu enaki (enakega tipa). Tak postopek ponavljamo, dokler nismo sposobni rešiti podproblemov. • Strategija temelji na rekurziji.

  37. Deli in vladaj

  38. Dinamično programiranje • sistematično pregledovanje možnih poti v reševanju problema in zato tudi pride do optimalne rešitve • potencialne rešitve na tekočem koraku določamo na osnovi potencialnih rešitev iz prejšnjega koraka • Poznamo dva pristopa za reševanje: • pristop naprej • pristop nazaj

  39. Požrešna metoda • lažji del prepustimo računalniku, težji del pa izvedemo sami • neko dejanje privede na preprost način do cilja • Princip delovanja: iščemo optimum funkcije (minimum ali maksimum), tako da sproti gradimo rešitev. • Graditev rešitev: dodajamo najboljše dopustne dele rešitev.

  40. Zapis algoritma Algoritem lahko zapišemo na več načinov: • v naravnem jeziku • hierarhični diagram • s pomočjo odločitvene tabele • s pomočjo psevdokode • grafično s pomočjo diagrama poteka • programskem jeziku

  41. Hierarhični strukturni (drevesni) diagram Korake za strukturo programa dobimo iz hierarhične strukture, npr. že obstoječe, kjer spreminjamo predvsem spodnji del MAIN INICIALIZACIJA PROCES ZAKLJUČEK Deklaracijespremenljivk Izpis glaveporočila Preberi enzapis Računaj Seštejvsote Izpis vrsticetabele Izračunpovprečja Izpis skupnih vsot in povrp. Izračunbruto Izračundavka Izračunneto

  42. C A D B E Odločitvena tabela • Delno zamenja oz. dopolnjuje diagram poteka • Razdeljena je na 5 enot: • A – vprašanja, ki jih lahkoodgovorimo z True ali False, ter različnost odgovorov vpliva na odločitev • B – možne odločitve • C, D in E – stolpci, kjer je vsak stolpec svoje pravilo

  43. Pravila C 1 2 3 4 Stranka ima račun     A D Na računu je dovolj denarja    Vodstvo odobri   Izvedi transakcijo   B E Zavrni transakcijo   Odločitvena tabela - primer • Pravila: • Če ima stranka pri nas odprt račun na katerem je dovolj denarja, izvedi transakcijo • Če ima stranka pri nas odprt račun s premalo denarja izvedi transakcijo le, če se strinja vodstvo • V vseh drugih primerih zavrni transakcijo

  44. Strukturirano programiranje Programiramo samo z naslednjimi strukturami: zaporedje če-potem-drugače ponavljaj-dokler True False False Rutina 1 Pogoj Pogoj True Rutina 2 Rutina 1 Rutina 2 Rutina 1

  45. Strukturirano programiranje

  46. Psevdokoda • Opisujemo opravila delno s programskimi ukazi: • DO WHILE imamo še zapise v datoteki IF zaloga je manjša od 10% načrtovane THEN izpolni naročilo pošlji naročilo po e-pošti ENDIF zapiši logLOOP

  47. * Glavni program Prikaži naslove Za i = 1 do 100 Vnesi podatke If (podatek ni numeričen) If (vsaj en podatek) Izračun Prikaži rezultat Else Prikaži “Ni podatkov” Akcijski diagram • Podbno psevdokodi • Grafično označimo: • zanke (debelo) • pogojne stavke (tanke) • prekinitev zanke (puščica) • Kodo sestavljata: • * (naslov) • (akcija)

  48. Dogodkovni diagram • Opisujejo opravila, ki sledijo npr. enemenu dogodku (za vse dogodke): Uporabnik pritisnegumbek za konec Izpiši,da zaključuješ Zapiši podatkev datoteko Sprazni podatkev pomnilniku Izpiši “Konec”

  49. Dogodkovni diagram

  50. Diagram poteka • Grafično opisuje pravila po katerih pridemo do rešitve • Diagram poteka je eden izmed načinov zapisa algoritma

More Related