Transcript
  • 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


Top Related