ALGORITMI UN PROGRAMMĒŠANA. LABORATORIJAS DARBI Kursa ietvaros katram studentam ir jāieskaita 4 laboratorijas darbi (A,B,C,D). Nododot programmu, jāatrāda: · komentēts programmas teksts (sk. aprakstu zemāk) pirmie divi uzdevumi gan C++, gan JavaScript, otrie divi tikai C++, · sagatavots testa plāns un testēšanas rezultāti, · programma darbībā (sk. Ierobežojumi un veicamās pārbaudes zemāk).
Programmas izpilde atkārtoti (tikai C++) Veidojot programmu, jānodrošina iespēja uzdevumu izpildīt atkārtoti, neizejot no programmas. Piemēram, ja mana programma māk rēķināt kvadrātsakni un es gribu izrēķināt kvadrātsakni diviem skaitļiem, tad programmai jānodrošina, lai man tā nebūtu jāpalaiž 2 reizes, bet pēc pirmā rezultāta saņemšanas lietotājam tiktu uzprasīts, vai turpināt, vai beigt: Ievadi skaitli: 9 Kvadrātsakne ir 3 Vai turpināt (1) vai beigt (0)? 1 Ievadi skaitli: 2 Kvadrātsakne ir 1.414 Vai turpināt (1) vai beigt (0)? 0 Tālākajā piemērā ir parādīts vienkāršs variants, kā šo īpašību realizēt, respektīvi, esošajam programmas kodam jāpieraksta klāt 6 papildus rindiņas: int ok; do { /********************************* *** Programmas daļa, *** kuru vajag atkārtot *********************************/ cout << " Vai turpināt (1) vai beigt (0)?" << endl; cin >> ok; } while (ok == 1);
Testa plāns un rezultāti Tipiska testa plāna forma ir tabula ar divām kolonnām, kur vienā doti programmas ieejas dati, bet otrā programmas reakcijas (izejas dati vai kļūdas paziņojums). Testa nosacījumiem (rindiņas testa plānā) jāatspoguļo visi ieejas datu loģiskie apgabali (piemēram, ja programma velk kvadrātsakni, tad testa plānā kā ieejas vērtībai būtu jābūt gan negatīvam skaitlim, uz kuru tā dotu kļūdas paziņojumu, gan pozitīvam skaitlim, uz kuru tā dotu normālu izejas vērtību). Tālāk vienkāršas programmas testa plāna paraugs (programma rēķina kvadrātsakni no vesela skaitļa):
Testa plāns: · IR dokuments, kas atspoguļo programmas vēlamo reakciju uz ievades datiem, · NEATSPOGUĻO lietotāja saskarnes īpatnības. Papildus plānam ir jādod arī testēšanas rezultāts, kas apliecina testa nosacījumu izpildīšanos iesniegtajā programmā. Testēšanas rezultātu var atspoguļot divos veidos: · kā 3. (un, iespējams, 4., ja arī JavaScript) kolonnu blakus testa plānam (sk. piemēru zemāk), · kā testa plāna izpildi apliecinošu apgalvojumu pēc testa plāna. Piemērs testa plānam kopā ar testēšanas rezultātiem:
Testa plāns kopā ar rezultātiem lielā mērā atspoguļo paša programmas autora ieguldījumu programmas kvalitātes pārbaudē. Testa plānu un rezultātus var iesniegt jebkurā no šiem variantiem: · atsevišķā failā (teksta, Word, Excel utt.), · uzrakstītus ar roku vai izdrukātā variantā, · speciālā komentētā blokā pirmkoda failā (vēlams, faila beigās).
Programmas komentēšana Programmas tekstam jābūt labi komentētam, t.i., jābūt aprakstītiem vismaz galvenajiem konceptuālajiem blokiem programmā, kā arī jābūt pietiekošai informācijai, lai saprastu algoritmu. Komentāriem ir jābūt veidotiem nevis pēc principa kā (tas parasti ir tieši redzams no attiecīgas komandas), bet gan kas, respektīvi, komentāram ir jābūt vismaz vienu abstrakcijas līmeni augstāk par pašu programmas tekstu.
Piemēram, šādi komentēt ir slikti (nevis vienkārši lieki, bet kaitīgi, jo informācijas dublēšana ir pretrunā ar labo strukturētas programmēšanas praksi): a = 5; // mainīgajam a tiek piešķirta vērtība 5
Tā varētu būt labi (bet, protams, atkarīgs no konteksta, kas šeit nav redzams; jāuzmanās, lai komentāru detalizācijas pakāpe nav pārāk smalka): a = 5; // sākam uzreiz ar 5. elementu // jo pirmie 4 tiek aizpildīti automātiski
Bez tam programmas sākuma daļā jābūt komentāram, kas satur vismaz šādu informāciju: · Autora vārds, uzvārds un apliecības numurs. · Uzdevuma numurs un teksts. · Uzdevuma veikšanas datums. Piemēram, /******************************************* Jānis Bērziņš, jb99999 A99. Izveidot programmu, kas rēķina kvadrātsakni no vesela skaitļa. Rezultāts var būt skaitlis ar peldošo komatu. Programma izveidota: 2017/09/28 *******************************************/
Uzdevumu tēmas · A zarošanās un cikli, · B cikli un funkcijas, · C masīvi un funkcijas, · D objektorientētā programmēšana.
Ierobežojumi un veicamās pārbaudes Ja, nododot programmu, tajā tiek atrasta kļūda, kļūda jāizlabo, un programma jānodod atkārtoti. Ievadot nepareizus ievaddatus, programmai ir jāizdod atbilstošs paziņojums. Precizējums. Uzdevumos, kuros ir teikts, ka doti veseli (vai naturāli) skaitļi, nav jāpārbauda, vai ievadītie simboli nav burti (pārbaudot tiks ievadīti tikai skaitļi). Reāli tas nozīmē, ka ieejas dati jāpārbauda uz loģiski nepieļaujamām vērtībām (dalīšana ar 0, kvadrātsakne no negatīva skaitļa, utt.), bet nevis uz to, vai tie atbilst mainīgā tipam, kurā tie jāieraksta. Dažādas bibliotēku un citas iebūvētās iespējas var izmantot tik, cik tas nedegradē uzdevuma būtību (piemēram, nedrīkst kādas, no uzdevuma viedokļa svarīgas, apakšproblēmas risināšanu reducēt uz kādas, paša neveidotas, funkcijas izsaukumu).
Darbu vērtēšana Par katru nodoto laboratorijas darbu saņem 100%, ja ievēroti visi nosacījumi. Ja programma tiks nodota bez komentāriem, var atņemt līdz 10%. Ja programma nodota bez testa piemēriem, arī var atņemt līdz 10%. Par atkārtotu programmas nodošanu var atņemt līdz 20%.
Uzdevumu saņemšanas un ieskaitīšanas kārtība · Uzdevumu formulējumus izsniedz pasniedzējs individuāli katram studentam. · Uzdevumu nodošanai noteikts termiņš, turklāt katram uzdevumam tas ir citāds. Uzdevumu nodošanas beigu termiņi (semestra nedēļas formā) ir šādi: 1. A 6. nedēļa (gan C++, gan JavaScript) 2. B 8. nedēļa (gan C++, gan JavaScript) 3. C 12. nedēļa (C++) 4. D 14. nedēļa (C++) Ja uzdevums tiek nodots pēc norādītā termiņa, par katru nokavēto nedēļu var tikt atņemti līdz 10%, bet tā, lai gala vērtējums nebūtu zemāks par 40%, kas ir zemākais ieskaitītais vērtējums.
Iespējas iegūt papildpunktus Studentiem ir iespēja nopelnīt papildpunktus. Papildpunkti laboratorijas darbos ir viens no ceļiem uz gala atzīmi 10. Papildpunktus var nopelnīt, uzrakstot netriviālu C++ programmu un to atrādot. Tā varētu būt kāda algoritma realizācija vai izveidota spēle. Tas var būt kādas regulārās iesniegtās programmas paplašinājums sarežģītības vai lietotāja saskarnes virzienā. Papildprogrammas tēma un realizācija iepriekš jāsaskaņo ar pasniedzēju. |