Upload
others
View
1
Download
0
Embed Size (px)
Citation preview
PROGRAMSKI PREVODIOCI – 9. ČAS
ŠK 2019-20 DOC. DR LJUBICA KAZI
VEŢBA ZA KOLOKVIJUM
NAPOMENA: Za pripremu kolokvijuma pogledati kompletnu listu grešaka i upozorenja za C# programski jezik koje
prijavljuje Visual Studio NET: https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/compiler-messages/
ZADATAK:
Dat je programski kod sa greškama leksičkog, sintaksnog i semantičkog tipa, objektno-orjentisana desktop
aplikacija uz primenu biblioteka klasa.
Realizovati analizu izgleda programskog koda (posebnim bojama podvučen tekst), kao i pokretanje debuggera (po potrebi korišćenje break point) radi detektovanja grešaka.
Korigovati greške. Napisati izveštaj: greška(deo koda), tip greške, poruka debuggera, objašnjenje greške, popravka greške.
Testirati rad programa. Dodati 2 PrintScreena: 1) ekrana razvojnog okruženja sa programskim kodom, nakon pokretanja debuggera sa njegovim porukama o greskama 2) ekrana razvojnog okruženja sa
programskim kodom, nakon pokretanja debuggera i popravke greške, sa porukom o uspešnom build-u.
REŠENJE:
Nakon otvaranja projekta, a pre pokretanja debuggera (Build->Build solution), mogu se videti CRVENO, PLAVO I ZELENO podvučeni delovi. Kada se stane mišem iznad, razvojno okruženje daje objašnjenje moguće
greške.
Napomene:
CRVENO – obično su to leksičke i sintaksne greške
PLAVO – obično semantičke greške ZELENO – promenljive koje su definisane ili deklarisane, ali kasnije nisu korišćene
U nastavku će biti uključene jedna po jedna greška i odmah popravljene.
IZVEŠTAJ:
Deo koda sa greškom
Tip greške (leksička,
sintaksna,
semantička)
Poruka debuggera Objašenjenje Popravka greške
txtKorisnikIme.Txt Leksička System.Windows.Forms.TextBox
does not contain definition for
Txt …
Ne postoji
osobina Txt
txtKorisnikIme.Text
Nakon pokretanja debuggera:
Nakon popravke – Build Succeeded:
Deo koda sa greškom Tip greške
(leksička, sintaksna,
semantička
)
Poruka
debuggera
Objašnjenj
e
Popravka greške
if (txbKorisnikIme.Text.Equals("")) { MessageBox.Show("Niste uneli ime korisnika!"); txbKorisnikIme.Focus(); return;
Sintaksna }
expected
Nije
zatvorena
vitičasta zagrada
if (txbKorisnikIme.Text.Equals("")) { MessageBox.Show("Niste uneli ime korisnika!"); txbKorisnikIme.Focus(); return;
}
Nakon pokretanja debuggera:
Nakon popravke – Build succeeded:
Deo koda sa
greškom
Tip greške
(leksička, sintaksna,
semantička)
Poruka
debuggera
Objašenjenje Popravka greške
//private clsSqlKonekcija objSqlKonekcija;
Semanticka The name 'objSqlKonekcija'
does not exist in the current
context
objSqlKonekcija je
postavljeno u komentar,
a kasnije se koristi u
kodu.
private clsSqlKonekcija objSqlKonekcija;
Nakon pokretanje debuggera:
Greška je obeležena i na mestu korišćenja te promenljive- plavo podvučeno, a kada se stane mišem iznad dobija se isti tekst poruke o grešci:
Napomena: Tekst greške koju prijavljuje kompajler se može kopirati:
Nakon popravke – Build succeeded
NAPOMENA: U zadatku će biti dato više grešaka različitog tipa. Pokrenuti debugger i popraviti jednu po jednu
grešku.
U ovom slučaju postoji 3 greške u isto vreme i ovo je početni izveštaj debuggera:
Napomena:
Korisno je uključiti da se vide brojevi linija u text editoru (Tools, Options, Text Editor, All Languages, General, Display - Line numbers).
Napomena: Dupli klik na gresku u Error listi moze da dovede do mesta greske, ali nekad i na pogresno mesto, kao u
ovom slucaju, na kraj bloka:
Kad se popravila jedna greska koju je prijavio, pojavile su se preostale:
U ovom slucaju dupli klik na gresku vodi direktno do mesta gde treba popraviti: