Programski jeziki. Od problema do programa. Od problema do programa

Podobné dokumenty
Državni izpitni center. Osnovna raven MATEMATIKA. Izpitna pola 1. Torek, 26. avgust 2008 / 120 minut

Matija Lokar: PODATKOVNE STRUKTURE VRSTA. List za mlade matematike, fizike, astronome in računalnikarje

Delo z datotekami v C#

Navodila za uporabo Garmin Nüvi 1200

Računalniške delavnice FMF: Delavnica MPI

INFORMATIKA. Uvod v HTML - 2. del

Skripta za Programiranje 2 Rekurzija Delo z datotekami

Intervalna ocena parametra

Vaja 2 Iskanje z razvijanjem v širino

Državni izpitni center *M * SPOMLADANSKI IZPITNI ROK RAČUNALNIŠTVO NAVODILA ZA OCENJEVANJE. Petek, 10. junij 2011 SPLOŠNA MATURA

Priimek in ime: Vpisna številka: Letnik vaj Obkroži smer študija:

zlatarna E.LECLERC Po ok Od 1O. januarja do 31. decembra 2O18

Zahtevnejši nivo Kazalo:

Ocena požarnih nevarnosti, tveganj, ogroženosti in obremenitev. Ciril Tomše VKGČ II. stopnje

Analiza naravne svetlobe

1 GIF Animator. 1.1 Opis programa Lastnosti zmogljivosti programa. Active GIF Creator 2.18 je program za obdelavo GIF datotek.

KVIZ Osnove elektrotehnike II magnetostatika

evropskega emblema v povezavi s programi EU

Računalništvo in informatika Računalniška omrežja. Računalniška omrežja. Osnovni pojmi. prof. Andrej Krajnc univ. dipl.inž.

Vytváření a použití knihoven tříd

PRILOGA ŠT. 1: Gasilski znak

POSEBNI POGOJI ZA PROMOCIJE PAKETOV KOMBO FEBRUAR (v nadaljevanju: Posebni pogoji promocije Kombo Februar)

DTP Základy programování Úvod do předmětu

Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007

MIFID_FORMS_LIST_SLV

PRIROČNIK ZA NADALJEVALNI TEČAJ MICROSOFT WORD-A

MATEMATIKA PRIPRAVA NA NACIONALNO PREVERJANJE ZNANJA. Jana Draksler in Marjana Robič

Java Cvičení 01. CHARLES UNIVERSITY IN PRAGUE faculty of mathematics and physics

3 Vývojová prostředí, základní prvky jazyka Java, konvence jazyka Java

Programování v Javě I. Únor 2009

LEKSIKOGRAFOVI ZAPISKI O KORPUSNEM SLOVARJU

Spajanje dokumentov v Word-u 2007

ZÁKLADY PROGRAMOVÁNÍ. Mgr. Vladislav BEDNÁŘ /14

Programování v Javě I. Leden 2008

Uporabniški priročnik. Kosovni management. Hermes d.o.o. Prušnikova Ljubljana-Šentvid.

Principy objektově orientovaného programování

1. Téma 12 - Textové soubory a výjimky

Programovací jazyky. Obsah. Proč používáme programovací jazyky? Programovací jazyk

INFORMACIJSKO-KOMUNIKACIJSKA PODPORA V PISARNI RAČUNALNIŠTVO IN INFORMATIKA MARKO KOMPARE TOMAŢ DULAR

Java - výjimky. private void vstup() throws IOException {... }

RMI Remote Method Invocation

Po vrsti z leve proti desni so obrazi Blaž, Erik, Dane, Andrej, Andraž, Bor.

Úvod do programování - Java. Cvičení č.4

Algoritmizace. Cíle předmětu

ANT. Aplikační programování v Javě (BI-APJ) - 1 Ing. Jiří Daněček Katedra softwarového inženýrství Fakulta informačních technologií ČVUT Praha

Datotečni (zbirčni) sistem - File Management System

KTE / ZPE Informační technologie

Zend Framework Object Relation Model. Dr Nenad Kojić Marko M Spasojević inž. spec

Podmínky na zápočet. Java, zimní semestr

Základní pojmy. Matice(řádky, sloupce) Matice(4,6) sloupce

SEZNAM ŠOLSKIH POTREBŠČIN ZA 1. RAZRED SOLČAVA

Objektově orientované programování

Algoritmizace a programování

Ekonomska šola Kidričeva Kranj. FrontPage 2003 ZA INTERNO UPORABO. Pripravil: Tomo Grahek. Kranj, maj 07

Závěrečná zkouška z informatiky 2011

Cone 1 & 2, 21 & 7 Razsvetljava

NiceForm uporabniški priročnik

IZDELAVA FOTOKNJIGE. ali pa na

PRIROČNIK CELOSTNE GRAFIČNE PODOBE

Računalništvo in informatika (vaje)

Anotace. Pointery. Martin Pergel,

Obsah přednášky 7. Základy programování (IZAPR) Přednáška 7. Parametry metod. Parametry, argumenty. Parametry metod.

Navodila za vnos in kontrolo podatkov iz letnih poročil na poenotenih obrazcih gospodarskih družb v Excelovo preglednico

PRIROČNIK O IZVAJANJU PROJEKTOV ZA UPRAVIČENCE 6. DEL INFORMIRANJE IN OBVEŠČANJE

B-panel. C-panel. S-panel. Osnovni enobarvni paneli. Zasteklitve. strani strani strani

Střední škola pedagogická, hotelnictví a služeb, Litoměříce, příspěvková organizace

Seminář Java II p.1/43

Algoritmizace a programování

Generování vnitřní reprezentace programu

Datové abstrakce v programovacích jazycích

PROGRAMOVACÍ JAZYKY A PŘEKLADAČE STRUKTURA PŘEKLADAČE

public class Karel { private int position; public boolean issmiling; public int getposition() { return position;

OSNOVNE KOMPONENTE BU OSNOVNE KOMPONENTE BARVNEGA UPRAVLJANJA. Tadeja Muck govorilne ure: ponedeljek 12:00 13:00

Počítačové laboratoře bez tajemství aneb naučme se učit algoritmizaci a programování s využitím robotů CZ.1.07/1.3.12/

UČNA URA: Spoznavanje prometnih znakov

Abstraktní datové typy: zásobník

3D SKENIRANJE in 3D TISKANJE

ÚVODNÍ ZNALOSTI. datové struktury. správnost programů. analýza algoritmů

1. Konstruiranje napajalnika

Poslední nenulová číslice faktoriálu

PRAVILNIK O OCENJEVANJU KAKOVOSTI TRAJNIH MESNIH IZDELKOV NA RAZSTAVI»DOBROTE SLOVENSKIH KMETIJ«NA PTUJU

Prodaja, servis, svetovanje za KRIO SAVNO in izvajanje KRIO TERAPIJE CRYO SAUNA SPACE CABIN BY CRYOMED

Digitální učební materiál

POROČILO PRAKTIČNEGA IZOBRAŽEVANJA

EGT6343 CS VARNÁ DESKA NÁVOD K POUŽITÍ 2 SL KUHALNA PLOŠČA NAVODILA ZA UPORABO 17

BREZ ELEKTRONSKE POŠTE NE GRE!

Paměť počítače. alg2 1

Vyučovací hodina. 1vyučovací hodina: 2vyučovací hodiny: Opakování z minulé hodiny. Procvičení nové látky

Projekty pro výuku programování v jazyce Java

CENIK OSTALIH STORITEV

9. přednáška - třídy, objekty

Navodila za uporabo. Za upravljavca. Navodila za uporabo. calormatic 370. Sobni regulator temperature

dovolují dělení velkých úloh na menší = dekompozice

IBAN plačnika. Referenca plačnika. Janez Novak Maribor. Znesek ***14,71 Datum plačila EUR. Namen plačila SI

OOPR_05. Případové studie

IAJCE Přednáška č. 8. double tprumer = (t1 + t2 + t3 + t4 + t5 + t6 + t7) / 7; Console.Write("\nPrumerna teplota je {0}", tprumer);

Okolje Okna 2000NT (Windows 2000NT) se pri običajnih nastavitvah računalnika aktivira ob vklopu računalnika.

Program a životní cyklus programu

Úvod do programovacích jazyků (Java)

Transkript:

Programski jeziki Od problema do programa Od problema do programa Problem Algoritem (postopek reševanja problema) Zapis v programskem jeziku uporaba ukazov, ki jih znamo izvesti Prevajanje v obliko, ki jo razume procesor (izvajalec ukazov) Izvajanje Ali rešitev ustreza problemu? Od problema do programa opredelitev problema določitev tega, kaj vemo - katere podatke poznamo, in tega, kaj želimo dobiti - rezultat; načrtovanje postopka rešitve - algoritem; zapis postopka rešitve v programskem jeziku; Prevajanje v obliko, ki jo razume procesor izvršitev programa na računalniku; preverjanje programa (preverjanje pravilnosti rešitve) 1

Zakaj programski jeziki? Oseba A govori LE jezik blable, oseba B pa LE jezik blublu. Kako naj se A sporazume z B? Lahko se A nauči jezika blublu in se potem pogovarjata v blublujščini. Procesor govori le strojni jezik: 0000110101 in ne kaže nobene želje, da bi se naučil naš jezik Torej se moramo mi naučiti strojni jezik Programiranje v strojnem jeziku: zapleteno, polno napak, specifično za vsak procesor Zapleten jezik: pogovor omogoči posebej izučen stokovnjak prevajalec Ta jezik blable prevede v jezik blublu Zakaj programski jeziki? Strokovnjakov, ki bi znali strojni jezik, je (razmeroma) malo, želja po ukazovanju procesorju (pogovarjanju z njim) (zelo) veliko Avtomatsko prevajanje prevajanje iz našega jezika v strojni jezik naj opravi program Kaj je naš jezik? Posebni programski jezik Govorjeni jeziki Zakaj programski jeziki? Zakaj pa bi potrebovali poseben programski jezik? Navodila napišimo v pogovornem jeziku program pa naj jih prevede v strojni jezik Sestaviti tak prevajalnik: Izjemno kompleksna (trenutno praktično nemogoča) naloga naravni jeziki so preveč ohlapni, da bi bilo avtomatsko prevajanje mogoče. Ste že videli dva slavista, ki bi se strinjala glede tega, kako kaj napisati? 2

Zakaj programski jeziki? Vse kar se dogaja v računalniku, opravi procesor tako, da bere in piše po pomnilniku ter izvaja preproste aritmetične operacije. Ustrezni ukazi: zbirna koda (angl. assembly code). Težavno pisanje pravilna uporaba pomnilniških lokacij, zapomniti kaj je shranjeno na posameznih lokacijah, Preveč elementarne opearcije http://haka.fmf.uni-lj.si/pra-racunalnistvo- 1/lekcija01/index.html Vmesni člen: višji programski jeziki Nam se je enostavneje izražati v njih (pisati programe zapise algoritmov) Dovolj natančni (stroga sintaksa), zato mogoče sestaviti avtomatske prevajalnike Programski jeziki Služijo za zapis algoritma Najrazličnejši Morajo omogočati avtomatsko pretvorbo v strojni jezik (jezik, ki ga razume procesor) Programski jeziki Ogromno jezikov: pascal, basic, cobol, Smalltalk, C#, ada,... Različne zvrsti Generacije jezikov Objektni (predmetni) jeziki, funkcijski jeziki,... Programski jezik Java Prevajalniki Avtomatska pretvorba iz zapisa v jezik procesorja Programi Podatki: izvorna koda Rezultati: prevedena koda Kot za pripravo besedil obstajajo različni urejevalniki, tudi tu obstajajo različni prevajalniki JAVAC, JBUILDER, VisualCafe, IBM Visual Age for Java,... Vsi zapis v programskem jeziku Java prevedejo v obliko, ki jo razume procesor (ni čisto res, a...) 3

Primer Preberi stranico kvadrata in ga nariši Algoritem: Preberi število in si ga zapomni kot celo število v spremenljivko a Nariši pravokotnik s stranicama a in a Včasih bo potrebno korake algoritma še razgraditi, če posameznega koraka ni moč neposredno zapisati v programskem jeziku JAVA: 1.korak: podatek preberemo kot niz Pretvorimo niz v število pascal: 2.korak Sam jezik ne pozna ukazov za risanje! Program v jeziku Java različica 1 import java.awt.*; import java.applet.*; import javax.swing.joptionpane; public class KvadratBeri extends Applet { /* Narisali bomo kvadrat s stranico a */ public void paint (Graphics g) { int a; // Stranica kvadrata String str; // stranica prebrana kot niz str = JOptionPane.showInputDialog("Vnesi stranico kvadrata"); // V str preberemo stranico kvadrata a = Integer.parseInt(str); // iz str naredimo celo število // in ga shranimo v a // Narisemo kvadrat g.drawrect(10, 10, a, a); Program v jeziku Java - različica 2 import java.awt.*; import javax.swing.*; class Kvadrat_Okno extends JFrame { /* Narisali bomo kvadrat s stranico a */ public void paint (Graphics g) { int a; // Stranica kvadrata String str; // stranica prebrana kot niz str = JOptionPane.showInputDialog("Vnesi stranico kvadrata"); // V str preberemo stranico kvadrata a = Integer.parseInt(str); // iz str naredimo celo število // in ga shranimo v a // Narisemo kvadrat g.translate(getinsets().left, getinsets().top); // da se "znebimo" zg. vrstice g.setcolor(color.black); // risemo s crno barvo g.drawrect(10, 10, a, a); public class KvadratOkno { public static void main(string[] s){ Kvadrat_Okno o = new Kvadrat_Okno(); o.resize(200, 200); // velikost okna o.show(); // prikaz 4

Kako? Priprava izvorne datoteke (source code) TextPad, NotePad KvadratBeri.java Prevajanje (compile) V DOS oknu se postavimo v imenik, kjer je datoteka KvadratBeri.java JAVAC KvadratBeri.java Izvedemo program Priprava ustrezne datoteke s HTML,kjer kličemo ta program(ček) APPLETVIEWER kvadrat.htm Narišimo trikotnik podatki: velikost trikotnika (število vrstic) rezultat: narisan polni trikotnik, sestavljen iz zvezdic (za n=3) * *** ***** Postopek izpišemo prvo vrstico, izpišemo drugo vrstico, izpisujemo i-to vrstico izpišemo ustrezno presledkov v 1. vrstici n - 1, v 2. vrstici n - 2, v i-ti vrstici n - i izpišemo ustrezno število * v 1. vrstici 1, v 2. vrstici 3, v 3. vrstici 5, v i-ti vrstici 2 * i - 1 5

Program v jeziku C /* trikot. c */ #include <stdio.h> int main(void) { int i, j, velikost; printf("\n\n Velikost trikotnika: "); scanf("%d",&velikost); printf("\n\n\n"); for (i = 1; i <= velikost; i = i + 1) { /* izpis i - te vrstice */ for (j = 1; j <= velikost - i; j = j + 1) printf(" "); /* presledki */ for (j = 1; j <= 2 * i - 1; j = j + 1) printf("*"); /* zvezdice */ printf("\n"); /* v novo vrsto */ return 0; Program v pascalu program trikot; var i, j, velikost: integer; begin writeln; writeln; write( Velikost trikotnika: ); read(velikost); writeln; writeln; writeln; for i := 1 to velikost do begin { izpis i - te vrstice for j := 1 to velikost i do write(" "); { presledki for j := 1 to 2 * i 1 do write("*"); { zvezdice writeln { v novo vrsto end end. Program v jeziku Java import javax.swing.*; public class Trikot { public static void main(string[] args) { int i, j, velikost; String vel_s; // Preberimo velikost vel_s = JOptionPane.showInputDialog("Velikost trikotnika:"); velikost = Integer.parseInt(vel_s); System.out.print("\n\n\n"); for (i = 1; i <= velikost; i = i + 1) { // izpis i-te vrstice for (j = 1; j <= velikost - i; j = j + 1) System.out.print(" "); /* presledki */ for (j = 1; j <= 2 * i - 1; j = j + 1) System.out.print("*"); /* zvezdice */ System.out.println(""); /* v novo vrsto */ 6

Od problema do programa Problem Ideja Rešitev Od problema do programa Problem Ideja == algoritem Rešitev == program v programskem jeziku Kaj je algoritem? Algoritem je postopek, ki nam korak za korakom pove, kako rešiti dani problem Za dani problem v splošnem obstaja veliko algoritmov, ki določijo postopek, s katerim rešimo problem Npr. obstaja veliko algoritmov za izračun produkta dveh števil: Tabela poštevanke (primerno le za majhna števila) Pisno množenje Množenje z uporabo logaritmov. Uporaba računala. Uporaba postopkov vgrajenih v računalnik. Leibnitzov "računalnik"... 7

Kaj je algoritem navodilo, kako opraviti določen postopek KAJ storiti, KAKO to storiti Končno zaporedje ukazov, ki, če jih ubogamo, opravijo neko nalogo Značilnosti algoritma ima podatke vrne rezultat (število, risba na zaslonu, izdelan izdelek,...) je natančno določen se vedno konča mogoče gajeopraviti Značilnosti algoritma Algoritem moramo izraziti z jezikom, ki ga izvajalec "razume" (A postopek ni odvisen od izbora konkretnega jezika.) Postavljeni problem mora biti rešljiv torej tak, da se ga da rešiti na način korak za korakom. (npr. sestavi postopek, ki bo povedal, kateri je najlepši človek med navzočimi) 8

Značilnosti algoritma Algoritem je postopek, ki ga izvajamo korak za korakom in s katerim rešimo dani problem. Algoritem izvede izvajalec (ki je bodisi človek, stroj, elektronska naprava). Algoritem mora biti izražen v korakih, ki jih je izvajalec sposoben izvesti. Algoritem se mora končati. Primer 1: razpoloviti ravno palico (1) Splošneje: Poiskati srednjo točko daljice AB. Algoritem: Srednjo točko daljice AB poiščeš takole: 1. Nariši dva sekajoča se kroga z enakim polmerom. Prvi naj ima središče v točki A in drugi v točki B. 2. Naj bosta C in D točki, kjer se kroga sekata. 3. Nariši ravno črto skozi C in D. 4. Naj bo E točka, kjer CD seka AB. 5. Končaj z odgovorom E. Algoritem lahko izvede človek, če ima na voljo ustrezna orodja za risanje (npr. šestilo, ravnilo in pisalo). Primer 1 (2) 1. Nariši dva sekajoča se kroga z enakim polmerom. Prvi naj ima središče v točki A in drugi v točki B. 2. Naj bosta C in D točki, kjer se kroga sekata. 3. Nariši ravno črto skozi C in D. 4. Naj bo E točka, kjer CD seka AB. 5. Končaj z odgovorom E. A C E D B 9

Primer 2: NSD (1) Največji skupni delitelj dveh pozitivnih celih števil je največje celo število, ki deli obe števili, npr. NSD 77 in 21 je 7. Evklidov algoritm za izračun NSD: Da izračunaš NSD pozitivnih števil m in n: 1. Naj bo p enak m in q enak n. 2. Dokler q ne deli točno (brez ostanka) p, ponavljaj: 2.1. Naj bo p enak q in q enak ostanku pri deljenju p s q (p modulo q). 3. Končaj z odgovorom q. Algoritem lahko izvede vsak, ki pozna osnovne operacije deljenja. Primer 2 (2) Implementacija v pascalu: function nsd (m, n: integer): integer; var p, r, q: integer; begin p := m; q := n; while (p mod q <> 0) do begin r := p mod q; p := q; q := r end; nsd := q end; razume ga "izvajalec, ki razume pascal" npr."pascalski stroj" Primer 2 (3) Naj bo p enak m in q enak n. Dokler q ne deli točno (brez ostanka) p, ponavljaj: Naj bo p enak q in q enak ostanku pri deljenju p s q (p modulo q). Končaj z odgovorom q. function nsd (m, n: integer): integer; var p, r, q: integer; begin p := m; q := n; while (p mod q <> 0) do begin r := p mod q; p := q; q := r end; nsd := q end; Dva zapisa istega algoritma 10

Primer 2 (5) Obstaja seveda tudi drugačen algoritem: npr: Naj bo p manjše od obeh števil m in n Dokler p ne deli m in p Zmanjšaj p za 1 Končaj z odgovorom p Vprašanja Kako zasnovati algoritem metode, strategije Kako preveriti algoritem dokaz pravilnosti Kako analizirati algoritem prostorska in časovna zahtevnost Kako izraziti algoritem enoličnost, komu je namenjen, kaj so osnovna navodila, komentarji Učenje programskih jezikov Učenje izražanja določenega algoritma Zasnova algoritma: enostavna, enostavni problemi,... Učenje zapisovanja algoritma v dan jezik 11

Jezik Sintaksa Kako je sestavljen jezik stavek, imeti napak polno. Naravni jeziki: dokaj ohlapna sintaksa, z leti spreminjajoča se Semantika Kaj sintaktično pravilen stavek pomeni Sintaktično pravilni stavki lahko povejo nesmisel. Vsota števil 2 in 3 je 7. Danes je zelo vroče vreme. Konj ima zeleno nabrušen rep. Sintaksa Pravila, kako mora biti sestavljen program stroga pravila omogočajo avtomatično prevajanje prevajalnik odkrije sintaktične napake Napake v sintaksi: javi prevajalnik zgled Semantika Sintaktično pravilen, a drugače napačen program public class Narobe_semantika { // Sintaktično pravilen, a semantično napačen program public static void main(string[] g){ System.out.println("Vsota stevil 2 + 3 = " + 2 * 3); public class Narobe_semantika2 { // Sintaktično pravilen, a semantično napačen program public static void main(string[] g) { System.out.println("Vsota stevil 2 + 3 = " + 2 + 3); 12

Semantika Napake v semantiki: razumevanje problema Tehnike priprave programov Strukturirano programiranje Problem razgrajujemo na zaključene podprobleme, ki jih razgrajujemo naprej Ekstremno programiranje Najprej pripravimo testne primere in pričakovane odgovore... Preverjanje, preverjanje, preverjanje Ne moremo preveriti, ali program dela prav, lahko pa ugotovimo, da ne dela prav 13