37
UNIVERZITET U NOVOM SADU TEHNIČKI FAKULTET „MIHAJLO PUPIN“ ZRENJANIN NASTAVNI PREDMET: Programski prevodioci PREDMETNI NASTAVNIK: Doc. dr Ljubica Kazi ŠK. 2020/21 1. ČAS – 12.2.2021. - VEŽBE TEME: 1.1. Analiza strukture programskog razvojnog okruţenja (VS.NET, C#). Potrebne standardne biblioteke za rad. 1.2. Analiza mogućnosti detekcije elemenata programskog koda, grafičkog predstavljanja i defninsanja sopstvenog progamskog jezika (Notepad ++) 1.3. Programsko razvojno okruţenje NetBeans i Eclipse 1.4. VEŢBA 1 - Primer rada programskog razvojnog okruţenja sa kompajlerom (VS.NET i C#) generisanje EXE i DLL. 1.5. VEŢBA 2 - Primer rada interpretera (programski kod PHP povezivanje komponenti: include, require) 1.6. VEŢBA 3 - Namerne greške i ponašanje kompajlera 1.7. VEŢBA 4 – Namerne greške i ponašanje interpretera 1.1.Analiza strukture programskih razvojnih okruţenja 1.1.1.Kreiranje projekata i potrebne biblioteke za rad Visual Studio .NET 2019 Community Download: https://visualstudio.microsoft.com/downloads/ Početni ekran: Nakon izbora opcije za kreiranje novog projekta, biramo tip projekta.

1. 12.2.2021. - VEŽBE VEŢBA 1 DLL. VEŢBA 2 VEŢBA 3 VEŢBA 4

  • Upload
    others

  • View
    11

  • Download
    0

Embed Size (px)

Citation preview

Page 1: 1. 12.2.2021. - VEŽBE VEŢBA 1 DLL. VEŢBA 2 VEŢBA 3 VEŢBA 4

UNIVERZITET U NOVOM SADU TEHNIČKI FAKULTET „MIHAJLO PUPIN“ ZRENJANIN NASTAVNI PREDMET: Programski prevodioci PREDMETNI NASTAVNIK: Doc. dr Ljubica Kazi ŠK. 2020/21 1. ČAS – 12.2.2021. - VEŽBE TEME:

1.1. Analiza strukture programskog razvojnog okruţenja (VS.NET, C#). Potrebne standardne biblioteke za rad. 1.2. Analiza mogućnosti detekcije elemenata programskog koda, grafičkog predstavljanja i defninsanja sopstvenog

progamskog jezika (Notepad ++) 1.3. Programsko razvojno okruţenje NetBeans i Eclipse 1.4. VEŢBA 1 - Primer rada programskog razvojnog okruţenja sa kompajlerom (VS.NET i C#) – generisanje EXE i

DLL. 1.5. VEŢBA 2 - Primer rada interpretera (programski kod PHP – povezivanje komponenti: include, require) 1.6. VEŢBA 3 - Namerne greške i ponašanje kompajlera 1.7. VEŢBA 4 – Namerne greške i ponašanje interpretera

1.1.Analiza strukture programskih razvojnih okruţenja

1.1.1.Kreiranje projekata i potrebne biblioteke za rad

Visual Studio .NET 2019 Community Download: https://visualstudio.microsoft.com/downloads/ Početni ekran:

Nakon izbora opcije za kreiranje novog projekta, biramo tip projekta.

Page 2: 1. 12.2.2021. - VEŽBE VEŢBA 1 DLL. VEŢBA 2 VEŢBA 3 VEŢBA 4

Ključni tipovi projekata:

Windows Forms App (Net Framework, C#)

ASP.NET Web application (Net Framework, C#)

Class Library (Net Framework, C#)

Još neki zanimljivi tipovi projekata koji se mogu realizovati u savremenim tehnologijama:

- Rad sa mikroservisima

- Rad sa cloud tehnologijom

- Rad sa mobilnim aplikacijama

Page 3: 1. 12.2.2021. - VEŽBE VEŢBA 1 DLL. VEŢBA 2 VEŢBA 3 VEŢBA 4

KREIRANJE NOVOG PROJEKTA – C# desktop aplikacija:

Dobijamo:

Page 4: 1. 12.2.2021. - VEŽBE VEŢBA 1 DLL. VEŢBA 2 VEŢBA 3 VEŢBA 4

Dobijamo automatski povezane biblioteke:

DOBIJAMO FOLDER SA FAJLOVIMA PROJEKTA:

Page 5: 1. 12.2.2021. - VEŽBE VEŢBA 1 DLL. VEŢBA 2 VEŢBA 3 VEŢBA 4

KREIRAMO PROJEKAT TIPA ASP.NET WEB APLIKACIJA (.NET framework, C#):

Nakon unosa imena i izbora opcije create dobijamo:

Ako izaberemo Web forms, dobijamo:

Moţemo pogledati osnovna podešavanja u Web config:

Page 6: 1. 12.2.2021. - VEŽBE VEŢBA 1 DLL. VEŢBA 2 VEŢBA 3 VEŢBA 4

Pogledaćemo automatsko povezivanje sa komponentama u vezi front-end (u Site master):

AUTOMATSKI PRIKLJUČENE BIBLIOTEKE:

Page 7: 1. 12.2.2021. - VEŽBE VEŢBA 1 DLL. VEŢBA 2 VEŢBA 3 VEŢBA 4

DOBIJAMO FOLDER SA FAJLOVIMA PROJEKTA:

Page 8: 1. 12.2.2021. - VEŽBE VEŢBA 1 DLL. VEŢBA 2 VEŢBA 3 VEŢBA 4

BIRAMO TIP PROJEKTA c# CLASS LIBRARY:

Dobijamo:

Potrebno je priključiti neophodne biblioteke:

Dobijamo folder sa fajlovima:

Page 9: 1. 12.2.2021. - VEŽBE VEŢBA 1 DLL. VEŢBA 2 VEŢBA 3 VEŢBA 4

1.1.2.Elementi IDE (integrisanog razvojnog okruženja) VS NET 2019 Community

Page 10: 1. 12.2.2021. - VEŽBE VEŢBA 1 DLL. VEŢBA 2 VEŢBA 3 VEŢBA 4

1.2. Analiza mogućnosti detekcije elemenata programskog koda, grafičkog predstavljanja i defninsanja sopstvenog progamskog jezika (Notepad ++) Notepad ++ Ovaj alat daje mogućnost primene za razne programske jezike.

Primer PHP aplikacije:

Moguće je povezati odreĎene ekstenzije fajlova za odreĎena razvojna okruţenja, tako da kada se izaberu, automatski se otvaraju. Ovde je povezana ekstenzija PHP sa Notepad++ programom.

Page 11: 1. 12.2.2021. - VEŽBE VEŢBA 1 DLL. VEŢBA 2 VEŢBA 3 VEŢBA 4

PHP fajl moţe imati isključivo php kod ili biti napisan u kombinaciji sa HTML. Korisna osobina Notepad ++ alata je što se grafički odvaja php kod od html (php kod je na zasenčenoj podlozi, dok je html na beloj podlozi) i što se posebnim bojama označavaju odreĎeni tipovi naredbi. Na narednom primeru pokrenut je fajl index.php, gde je kombinovan php I html kod.

Interesantno je da se moţe definisati sopstveni jezik, koji bi bio na odreĎen način prihvaćen i obraĎen u ovom alatu.

Page 12: 1. 12.2.2021. - VEŽBE VEŢBA 1 DLL. VEŢBA 2 VEŢBA 3 VEŢBA 4

Dat je jedan primer XML fajla u kom se mogu definisati pravila za prepoznavanje elemenata jezika.

Page 13: 1. 12.2.2021. - VEŽBE VEŢBA 1 DLL. VEŢBA 2 VEŢBA 3 VEŢBA 4

Moguće je podesiti za svaki jezik grafički stil prikaza odreĎenih elemenata u programskom kodu:

Interesantno je da je drugačiji prikaz za razne programske jezike. Notepad ++ moţe da radi i sa JSP fajlovima. U ovom slučaju, Java kod ima svetloplavu podlogu, a include deo (uključivanje dodatnih fajlova I biblioteka) ima narandzastu podlogu.

Page 14: 1. 12.2.2021. - VEŽBE VEŢBA 1 DLL. VEŢBA 2 VEŢBA 3 VEŢBA 4
Page 15: 1. 12.2.2021. - VEŽBE VEŢBA 1 DLL. VEŢBA 2 VEŢBA 3 VEŢBA 4

1.3.Programsko razvojno okruţenje NetBeans i Eclipse Instalacija – Da bi se instalirao NetBeans IDE, prvo se mora instalirati JDK (Java Development Kit)

Različite vrste projekata koje je moguće kreirati:

Ovaj alat ima mogućnost proširenja mogućnosti, instaliranjem dodatnih Plug-in-ova:

Kada izaberemo projekat tipa Class Library, moţe se dobiti sledeći ekran:

Page 16: 1. 12.2.2021. - VEŽBE VEŢBA 1 DLL. VEŢBA 2 VEŢBA 3 VEŢBA 4

Nakon kreiranja projekta dobijamo:

Kartica Files:

Kartica Services:

Page 17: 1. 12.2.2021. - VEŽBE VEŢBA 1 DLL. VEŢBA 2 VEŢBA 3 VEŢBA 4

Glavni meni:

Page 18: 1. 12.2.2021. - VEŽBE VEŢBA 1 DLL. VEŢBA 2 VEŢBA 3 VEŢBA 4

Eclipse

Instalacija istovremeno JDK I Eclipse za javu:

Page 19: 1. 12.2.2021. - VEŽBE VEŢBA 1 DLL. VEŢBA 2 VEŢBA 3 VEŢBA 4

Pokretanje:

Različiti tipovi projekata:

Mogu se koristiti različiti projektni template:

Page 20: 1. 12.2.2021. - VEŽBE VEŢBA 1 DLL. VEŢBA 2 VEŢBA 3 VEŢBA 4
Page 21: 1. 12.2.2021. - VEŽBE VEŢBA 1 DLL. VEŢBA 2 VEŢBA 3 VEŢBA 4

ZADACI VEŢBA 1 - Primer rada programskog razvojnog okruţenja sa kompajlerom (VS.NET i C#) – generisanje EXE i DLL. Korekcije grešaka radi omogućavanja ispravnog rada. Učitaćemo gotov projekat za C# class library i C# Windows desktop aplikaciju. Pokretanjem opcije build kreiraćemo DLL (za class library) i EXE (za desktop aplikaciju). Očekuje se da kompajler prijavi greške, zbog promene verzije DLL-a, naziva i lokacije baze podataka, pa je potrebno da se greške isprave radi ispravnog rada. VEŢBA 2 - Primer rada interpretera (programski kod PHP – povezivanje komponenti: include, require. Korekcije grešaka radi omogućavanja ispravnog rada. Postavićemo programski kod u okviru XAMPP/htdocs foldera, startovati servise i pokrenuti php aplikaciju. Obratiti paţnju da se aplikacija sastoji iz više fajlova koji se integrišu u okviru run-time i ponašaju kao jedna celina. Očekuju se greške zbog postavljanja aplikacije na novu lokaciju, tako da je potrebno ispraviti greške radi ispravnog rada. VEŢBA 3 - Namerne greške i ponašanje C# kompajlera Napraviti namerne greške u okviru C# koda biblioteke klasa i desktop aplikacije. Pokrenuti build I izvršavanje i pratiti ponašanje kompajlera, tj. koje su greške prijavljene. VEŢBA 4 – Namerne greške i ponašanje interpretera Nad ispravnom PHP aplikacijom napraviti namerne greške i pokrenuti izvršavanje. Pratiti prijavu grešaka – koje greške su detektovane i na koji način su prijavljene.

Page 22: 1. 12.2.2021. - VEŽBE VEŢBA 1 DLL. VEŢBA 2 VEŢBA 3 VEŢBA 4

REŠENJE VEŽBI VEŽBA 1 Pokrećemo MS SQL Server 2008 R2 i kreiramo novu bazu podataka.

USE [master] GO CREATE DATABASE [PP2021_v1_1] GO USE [PP2021_v1_1] GO CREATE TABLE [dbo].[MESTO]( [PTT] [nvarchar](5) NOT NULL PRIMARY KEY, [Naziv] [nvarchar](40) NOT NULL, [OznakaDrzave] [nvarchar](3) NOT NULL ) GO CREATE TABLE [dbo].[DRZAVA]( [OZNAKA] [nvarchar](3) NOT NULL PRIMARY KEY, [Naziv] [nvarchar](100) NOT NULL, [UkupnoMesta] int NOT NULL ) GO ALTER TABLE [dbo].[MESTO] ADD CONSTRAINT FK_PRIPADA FOREIGN KEY (OznakaDrzave) REFERENCES [dbo].[DRZAVA] (OZNAKA) ON UPDATE CASCADE ON DELETE NO ACTION; GO

Page 23: 1. 12.2.2021. - VEŽBE VEŢBA 1 DLL. VEŢBA 2 VEŢBA 3 VEŢBA 4

Otvorićemo u okviru VS.NET 2019 Community projekat tipa Class Library - SQLDBUtils.

Sa menija pokrenućemo Build, Build solution. Dobijamo Build Suceeded.

Na ovaj način dobili smo DLL fajl.

Page 24: 1. 12.2.2021. - VEŽBE VEŢBA 1 DLL. VEŢBA 2 VEŢBA 3 VEŢBA 4

Zatvaramo projekat SQLDBUtils. Otvorićemo projekat u VS.NET iz foldera sa neispravnim korisničkim interfejsom.

Startovaćemo Build, Build solution. Dobijamo poruku o grešci.

Dodaćemo potreban DLL na projekat, opcijom Add Reference.

Page 25: 1. 12.2.2021. - VEŽBE VEŢBA 1 DLL. VEŢBA 2 VEŢBA 3 VEŢBA 4

Dijalog za pronalaţenje DLL-a (u okviru bin/debug foldera u projektu za SQLDBUtils).

Dodali samo dll i sada se nalazi na spisku referenci. Pokrećemo Build-Build solution i prijavljuje nove greške.

Očigledno je problem u parametrima konstruktora. Moramo pogledati šta se očekuje. Duplim klikom na DLL u spisku reference otvara se Object Browser, gde moţemo proveriti sadrţaj DLL-a, tj. klase, attribute i metode na raspolaganju i njihove osobine.

Page 26: 1. 12.2.2021. - VEŽBE VEŢBA 1 DLL. VEŢBA 2 VEŢBA 3 VEŢBA 4

Vidimo da je potrebno 3 parametra, a imamo samo 1. Vrednosti se čitaju iz public static klase parametri, pa je zgodno da tamo izvršimo promenu. Uskladićemo string konekcije sa novim vrednostima, ali ćemo podeliti string konekcije na delove.

Na mestu poziva konstruktora klase koja uspostavlja konekciju postavićemo 3 parametra, ne 1.

Page 27: 1. 12.2.2021. - VEŽBE VEŢBA 1 DLL. VEŢBA 2 VEŢBA 3 VEŢBA 4

Pokrećemo Build, Build solution, kako bismo još jednom proverili greške i dobili EXE fajl. S obzirom da prijavljuje istu grešku na još 2 mesta, korigovaćemo i tamo (mada nam to ukazuje da je loše napisan kod – trebalo bi da se konekcija otvara samo jednom, a copy-paste se ne radi).

Duplim klikom na stavku Error liste pozicioniramo se na lokaciju gde je greška. Ispravljamo na svim mestima. Dobijamo konačno da je sve u redu, Build succeeded.

Page 28: 1. 12.2.2021. - VEŽBE VEŢBA 1 DLL. VEŢBA 2 VEŢBA 3 VEŢBA 4

Dobijamo EXE fajl u Bin/debug folderu projekta desktop aplikacije.

Startujemo aplikaciju iz razvojnog okruţenja na simbolu . Dobijamo i testiramo, uspešno radi aplikacija:

VEŽBA 2 Instalirali smo XAMPP paket. Startovali smo XAMPP control panel.

Page 29: 1. 12.2.2021. - VEŽBE VEŢBA 1 DLL. VEŢBA 2 VEŢBA 3 VEŢBA 4

Ukoliko se neuspešno startuju servisi, treba konfigurisati portove(tasteri config). Apache: 80, 88, 96 MySQL: 3306, 3307, 3308, 3309. U odgovarajući folder XAMPP/htdocs kopiramo folder sa projektom.

Otvaramo SQL script: CREATE DATABASE `PP2021_v1_2` CHARACTER SET utf8 COLLATE utf8_general_ci; create table `PP2021_v1_2`.`VOZILO` ( ID int NOT NULL AUTO_INCREMENT PRIMARY KEY, REGISTARSKIBROJ varchar(10) not null, BROJPREDJENIHKILOMETARA INT not null, NAZIVMODELA varchar(50) not null, NAZIVPROIZVODJACA varchar(50) not null ); create table `PP2021_v1_2`.`KORISNIK` ( IDKORISNIKA int NOT NULL AUTO_INCREMENT PRIMARY KEY, PREZIME varchar(50) not null, IME varchar(40) not null, EMAIL varchar(60) not null, KORISNICKOIME varchar(30) not null, SIFRA varchar(30) not null, URLSLike varchar(250) null, statusucesca varchar(30) not null );

Page 30: 1. 12.2.2021. - VEŽBE VEŢBA 1 DLL. VEŢBA 2 VEŢBA 3 VEŢBA 4

INSERT INTO `PP2021_v1_2`.`VOZILO` (REGISTARSKIBROJ, BROJPREDJENIHKILOMETARA, NAZIVMODELA, NAZIVPROIZVODJACA) VALUES ('ZR019-FD', 14000, 'Logan', 'Dacia'); INSERT INTO `PP2021_v1_2`.`VOZILO` (REGISTARSKIBROJ, BROJPREDJENIHKILOMETARA, NAZIVMODELA, NAZIVPROIZVODJACA) VALUES ('ZR054-JK', 56000, 'i30', 'Hjundai'); INSERT INTO `PP2021_v1_2`.`KORISNIK` (PREZIME, IME, EMAIL, KORISNICKOIME, SIFRA, URLSLIKE, STATUSUCESCA) VALUES ('Kazi', 'Ljubica', '[email protected]', 'lkazi', 'lk', 'Ljubica.jpg', 'admin'); INSERT INTO `PP2021_v1_2`.`KORISNIK` (PREZIME, IME, EMAIL, KORISNICKOIME, SIFRA, URLSLIKE, STATUSUCESCA) VALUES ('Markovic', 'Marko', '[email protected]', 'marko', 'mk', 'Marko.jpg', 'korisnik'); Startujemo aplikaciju za rad sa MySQL bazom podataka iz XAMPP control panela.

Otvara se alat PHPMyAdmin. Ubacujemo SQL script u okviru kartice SQL. Biramo opciju GO.

Kreirana je baza podataka:

Page 31: 1. 12.2.2021. - VEŽBE VEŢBA 1 DLL. VEŢBA 2 VEŢBA 3 VEŢBA 4

Moţemo pogledati strukturu baze podataka:

STartujemo aplikaciju (pokreće se index.php fajl) sa foldera koji smo postavili I local host porta koji je prethodno podešen.

Problem je u mySQL sintaksi, jer je na računaru PHP7 podrška, a kod je napisan u starijoj verziji PHP-a. Zato ova naredba nije podrţana i ne moţe se prepoznati. Potrebno je preraditi kod. Potreban kod za korekciju (detekcija verzije i kod za obe verzije - verzija PHP 5 I PHP 7) dat je u prilogu. VEŽBA 3 Korektan korisnički interfejs C#, otvaramo progamski kod i stavljamo pojedine naredbe u komentar ili stavljamo namerne greške:

1. Uklanjamo “using SQLDBUtils” – na ovo je kompajler reagovao.

Page 32: 1. 12.2.2021. - VEŽBE VEŢBA 1 DLL. VEŢBA 2 VEŢBA 3 VEŢBA 4

2. Dodajemo slovo u okviru naziva DBMS instance, da bismo napravili nepostojeci naziv. Na ovo kompajler nije reagovao.

Greška je prijavljena nakon pokretanja aplikacije, na tasteru SNIMI. S obzirom da je istovremeno aktivno razvojno okruţenje, prikazana je sledeća greška:

Page 33: 1. 12.2.2021. - VEŽBE VEŢBA 1 DLL. VEŢBA 2 VEŢBA 3 VEŢBA 4

Istu grešku prijavljuje i kada se pokrene EXE fajl, nezavisno od razvojnog okruţenja. ZAKLJUČUJEMO da postoje greške koje kompajler moţe na vreme da otkrije pre pokretanja (u toku razvoja, u okviru razvojnog okruţenja) i run-time greške koje se mogu otkriti tek prilikom pokretanja – testiranja rada. VEŽBA 4 Korektan rad PHP .v7 aplikacije – tabelarni prikaz

Štampa

Page 34: 1. 12.2.2021. - VEŽBE VEŢBA 1 DLL. VEŢBA 2 VEŢBA 3 VEŢBA 4

Login

Dodavanje:

Lista za brisanje i izmenu:

Izmena:

Page 35: 1. 12.2.2021. - VEŽBE VEŢBA 1 DLL. VEŢBA 2 VEŢBA 3 VEŢBA 4

Namerno ćemo napraviti neke greške u kodu i pratiti ponašanje interpretera. Namerno dodajemo slovo A u okviru naziva metode I tako dobijamo naziv metode koji ne postoji:

Sklonjen je simbol $ kod promenljive baza podataka.

Sklonjena je zatvorena zagrada oko uslova:

Page 36: 1. 12.2.2021. - VEŽBE VEŢBA 1 DLL. VEŢBA 2 VEŢBA 3 VEŢBA 4

Konačno, postavićemo sve 3 greške zajedno:

Prijava greške – samo 1 i to ne prva:

Kada imamo 2 greške, opet prijavljuje samo drugu:

Page 37: 1. 12.2.2021. - VEŽBE VEŢBA 1 DLL. VEŢBA 2 VEŢBA 3 VEŢBA 4

Kada imamo samo prvu grešku, tek onda je prijavljuje:

ZAKLJUČUJEMO da interpreter prijavljuje manji broj grešaka nego što ih ima i to po odreĎenom redosledu, prioritetu. Očigledno, prijavljuje prvo sintaksne greške…