-
PRIMERI ZADATAKA ZA KOLOKVIJUM NA PAPIRU
1. TIP ZADATKA (4 poena) – Dat je izgled korisničkog interfejsa
i programski kod. Detektovati delove koda sa greškama (1), odrediti
vrstu greške (leksička, sintaksna, semantička, run-time) (1),
objasniti problem (1) i ispraviti greške (1).
2. TIP ZADATKA (3 poena) - Dat je izgled korisničkog interfejsa
i programski kod. Dat je kompletan Error list sa spiskom
detektovanih grešaka od strane kompajlera. Odrediti vrstu greške
(leksička, sintaksna, semantička, run-time) (1), objasniti problem
(1) i ispraviti greške (1). 3. TIP ZADATKA
(3 poena) - Dat je ispravan segment koda. Napraviti namerne
greške tako da bude jedna leksička (1), jedna sintaksna (1) i jedna
semantička (1) greška. Napisati segment koda koji uključuje te
greške. 4. TIP ZADATKA
(4 poena) – Dat je segment programskog koda sa greškama.
Odrediti deo segmenta sa greškom (1), vrstu greške (leksička,
sintaksna, semantička, run-time) (1), objasniti problem (1) i
ispraviti greške (1).
5. TIP ZADATKA Dat je segment programskog koda sa konkretnom
jednom vrstom greške (leksička, sintaksna, semantička, run-time)
koja je navedena. Detektovati delove koda sa greškama (1),
objasniti problem (1) i ispraviti greške (1).
-
1. TIP ZADATKA (4 poena) – Dat je izgled korisničkog interfejsa
i programski kod. Detektovati delove koda sa greškama (1), odrediti
vrstu greške (leksička, sintaksna, semantička, run-time) (1),
objasniti problem (1) i ispraviti greške (1).
(Primer aplikacije: DesktopNa3Nacina – stranica za rad sa
SQLDBUtils)
KOD SA GREŠKAMA
using System; using System.Collections.Generic; using
System.ComponentModel; using System.Data; using System.Drawing;
using System.Linq; using System.Text; using System.Windows.Forms;
// using System.Data; using SqlDBUtils; namespace
KorisnickiInterfejs { public partial class
frmSaSopstvenomBibliotekomDBUtils : Form { // ------------ ATRIBUTI
// ################################################# private
DataTable podaciTabelarni; // ------------ METODE //
################################################# //
-----------------NASE PROCEDURE private void IsprazniKontrole() {
txtOznaka.Text = 0; txtNaziv.Text = ""; } private void
AktivirajKontrole()
-
{ txtOznaka.Enabled = not true; txtNaziv.Enabled = true; }
private void DeaktivirajKontrole() { txtOznaka.Enabled = false;
txtNaziv.Enabled = false; } private int SnimiPodatke() { int
brojslogova = 0; // preuzimanje iz korisnickog interfejsa // radi
preglednosti koda postavljamo promenljive string Oznaka =
txtOznaka.Text; string Naziv = txtNaziv.Text; string UkupnoMesta =
"0"; clsSqlKonekcija objKonekcija = new
clsSqlKonekcija(Parametri.stringKonekcije);
objKonekcija.OtvoriKonekciju(); clsSqlTabela objTabela = new
clsSqlTabela(objKonekcija, "Drzava"); string SQLNaredba = "Insert
into Drzava (Oznaka, Naziv, UkupnoMesta) Values ('" + Oznaka + "',
'" + Naziv + "'," + UkupnoMesta + ")"; bool uspeh =
objTabela.IzvrsiAzuriranje(SQLNaredba); if (uspeh) { brojslogova =
""; } else { brojslogova = Ž; } objKonekcija.ZatvoriKonekciju();
return brojslogova; } private DataTable UcitajSve() { DataTable
TabelaPodataka = new DataTable(); clsSqlKonekcija objKonekcija =
new clsSqlKonekcija(Parametri.stringKonekcije);
objKonekcija.OtvoriKonekciju(); clsSqlTabela objTabela = new
clsSqlTabela(objKonekcija, "Drzava"); string SQLNaredba = "select *
from Drzava"; DataSet dsPodaci = objTabela.DajPodatke(SQLNaredba);
TabelaPodataka = dsPodaci.Tables[0];
objKonekcija.ZatvoriKonekciju(); return TabelaPodataka; } private
DataTable UcitajFiltrirano(string Filter) { DataTable
TabelaPodataka = new DataTable(); clsSqlKonekcija objKonekcija =
new clsSqlKonekcija(Parametri.stringKonekcije);
objKonekcija.OtvoriKonekciju(); clsSqlTabela objTabela = new
clsSqlTabela(objKonekcija, "Drzava");
-
string SQLNaredba = "select ! frm Drzav where Oznake='" + Filter
+ "'"; DataSet dsPodaci = objTabela.DajPodatke(SQLNaredba);
TabelaPodataka = dsPodaci.Tables[0];
objKonekcija.ZatvoriKonekciju(); return TabelaPodataka; } private
void PrikaziTabeluPodataka(DataTable TabelaPodataka) {
dgvSpisakDrzava.DataSource = TabelaPodataka;
dgvSpisakDrzava.Refesh(); } private void SnimiXML(DataTable podaci,
string putanja) { DataSet dsPodaciEksport = new DataSet1(); // s
obzirom da smo dobili kroz parametar poziva ove procedure "podaci"
// zapravo samo promenljivu koja sadrzi memorijsku lokaciju,
pokazivac // ka podacima, javlja se problem kada ovaj isti
DataTable "podaci" // vezemo sa drugim datasetom "dsPodaciExport"
jer je taj DataTable // vec povezan sa dsPodaci u okviru procedure
UcitajSve i UcitajTabelarno. // Zato moramo da radimo Copy, da
kopiramo strukturu i podatke u NOVI DataTable. DataTable
podaciZaEksport = new DataTable(); podaciZaEksport = podaci.Copy();
dsPodaciEksport.Tables.Add(podaciZaEksport);
dsPodaciEksport.WriteXml(putanja); } // KONSTRUKTOR public
frmSaSopstvenomBibliotekomDBUtils() { InitializeComponent(); } //
DOGADJAJI private void btnUnos_Click(object sender, EventArgs e) {
IsprazniKontrole(); AktivirajKontrole; txtOznaka.Focus(); } private
void btnSnimi_Click(object sender, EventArgs e) { string poruka =
""; int ukupnoSnimljeno = SnimiPodatke(); if (ukupnoSnimljeno >
poruka) { poruka = "Uspesno snimljeno!"; } else { poruka = "Nije
uspesno snimljeno!"; } DeaktivirajKontrole(); MessageBox.Show(); }
private void btnOdustani_Click(object sender, EventArgs e) {
IsprazniKontrole(); DeaktivirajKontrole(); } private void
btnFiltriraj_Click(object sender, EventArgs e) { podaciTabelarni =
UcitajFiltrirano(txtFilter.Text);
PrikaziTabeluPodataka(podaciTabelarni);
-
} private void btnSve_Click(object sender, EventArgs e) {
podaciTabelarni = UcitajSve();
PrikaziTabeluPodataka(podaciTabelarni); } private void
btnExportXML_Click(object sender, EventArgs e) {
SnimiXML(podaciTabelarni, Parametri.putanjaXML);
MessageBox.Show("Uspesno realizovan eksport podataka!"); } private
void frmSaSopstvenomBibliotekomDBUtils_Load(object sender,
EventArgs e) { } } }
SQL script baze podataka (POTREBAN ZA PROVERU RUN-TIME GREŠAKA)
CREATE DATABASE [GEOGRAFIJASE1] GO USE [GEOGRAFIJASE1] 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
REŠENJE
DEO KODA SA GREŠKOM VRSTA GREŠKE OBJAŠNJENJE PROBLEMA KOREKCIJA
GREŠKE
-
2. TIP ZADATKA (3 poena) - Dat je izgled korisničkog interfejsa
i programski kod. Dat je kompletan Error list sa spiskom
detektovanih grešaka od strane kompajlera. Odrediti vrstu greške
(leksička, sintaksna, semantička, run-time) (1), objasniti problem
(1) i ispraviti greške (1). Pored prethodno datog materijala
dodatno bi bilo dato I ovo:
REŠENJE
DEO KODA SA GREŠKOM VRSTA GREŠKE OBJAŠNJENJE PROBLEMA KOREKCIJA
GREŠKE
-
3. TIP ZADATKA
(3 poena) - Dat je ispravan segment koda. Napraviti namerne
greške tako da bude jedna leksička, jedna sintaksna i jedna
semantička greška. Napisati segment koda koji uključuje te greške.
ISPRAVAN SEGMENT KODA: if (ukupnoSnimljeno > 0) { poruka =
"Uspesno snimljeno!"; } else { poruka = "Nije uspesno snimljeno!";
}
KOD SA LEKSIČKOM GREŠKOM KOD SA SINTAKSNOM GREŠKOM
KOD SA SEMANTIČKOM GREŠKOM
-
4. TIP ZADATKA
(4 poena) – Dat je segment programskog koda sa greškama.
Odrediti deo segmenta sa greškom (1), vrstu greške (leksička,
sintaksna, semantička, run-time) (1), objasniti problem (1) i
ispraviti greške (1).
private void btnSnimi_Click(object sender, EventArgs e) { string
poruka = ""; int ukupnoSnimljeno = SnimiPodatke(); if
(ukupnoSnimljeno > poruka { poruka = "Uspesno snimljeno!"; }
else { poruka = "Nije uspesno snimljeno!"; } DeaktivirajKontrole();
MessageBx.Show(); }
DEO KODA SA GREŠKOM VRSTA GREŠKE OBJAŠNJENJE PROBLEMA KOREKCIJA
GREŠKE
5. TIP ZADATKA Dat je segment programskog koda sa konkretnom
jednom vrstom greške (leksička, sintaksna, semantička, run-time)
koja je navedena. Detektovati delove koda sa greškama (1),
objasniti problem (1) i ispraviti greške (1).
LEKSIČKA private void btnSnimi_Click(object sender, EventArgs e)
{ string poruka = ""; int ukupnoSnimljeno = SnimiPodatke(); if
(ukupnoSnimljeno > O) { poruka = "Uspesno snimljeno!"; } else {
poruka = "Nije uspesno snimljeno!"; } DeaktivirajKontrole();
MessageBx.Show(); }
DEO KODA SA GREŠKOM OBJAŠNJENJE PROBLEMA KOREKCIJA GREŠKE
-
SINTAKSNA private void btnSnimi_Click(object sender, EventArgs
e) { string poruka = ""; int ukupnoSnimljeno = SnimiPodatke(); if
(ukupnoSnimljeno > 0 { poruka = "Uspesno snimljeno!"; } else {
poruka = "Nije uspesno snimljeno!"; } DeaktivirajKontrole();
MessageBox.Show(); }
DEO KODA SA GREŠKOM OBJAŠNJENJE PROBLEMA KOREKCIJA GREŠKE
SEMANTIČKA private void btnSnimi_Click(object sender, EventArgs
e) { string poruka = ""; int ukupnoSnimljeno = SnimiPodatke(); if
(ukupnoSnimljeno > poruka) { poruka = "Uspesno snimljeno!"; }
else { poruka = "Nije uspesno snimljeno!"; } DeaktivirajKontrole();
MessageBox.Show(); }
DEO KODA SA GREŠKOM OBJAŠNJENJE PROBLEMA KOREKCIJA GREŠKE