2024./2025. m.g.
Eksāmens pārpublicēts no SKOLO.lv mājaslapas.
1. daļa Programmatūras dzīvescikls
Šajā eksāmena daļā būs jāizplāno programmrisinājuma izstrāde atbilstoši dzīvescikla posmiem. Izlasi un izpēti problēmsituācijas aprakstu, izpildi 1. daļas uzdevumus. Sniedzot savas atbildes, ievēro norādītos piemērus.
Kāda novada bibliotēka ir pieņēmusi lēmumu paplašināt un padarīt daudzveidīgāku bibliotēkas pašreizējo darbību. Tā plāno deviņu mēnešu laikā izveidot digitālo bibliotēku ar visām jauno tehnoloģiju priekšrocībām, ievērojot normatīvo aktu prasības par informācijas sistēmu un datu drošību.
Grāmatu digitalizāciju veiks trešā puse – ārpakalpojumu sniedzējs. Plānots izveidot pilnībā digitalizētu bibliotēku ar iespēju lasīt grāmatas tīmekļvietnē un mobilajā lietotnē, nosakot piekļuves ierobežojumus, tostarp lietošanas laiku un kopēšanas aizliegumu. Paredzēts arī ieviest bibliotēkā sadaļas ar maksas piekļuvi un nākotnē izveidot sadaļas šauru nozaru speciālistiem ar iespēju piekļūt ļoti retām grāmatām.
Plānots pievienot digitālajai versijai gan pašreizējos lietotājus, pārnesot uz jauno sistēmu nepieciešamos datus no vecās datorizētās lietotāju uzskaites sistēmas un papildinot tos, gan piedāvāt pievienoties jauniem lietotājiem, kā arī uzturēt grāmatu lasīšanas statistiku, pārvaldīt lietotāju piekļuvi utt.
Pašreizējā informācijas sistēma izmanto:
lietotāju datus (vārds, uzvārds, nodarbošanās, dzimšanas datums, tālruņa numurs un dzīvesvietas adrese);
grāmatu sarakstu ar datiem par katru grāmatu (autors, nosaukums, izdevniecība un izdošanas gads);
tabulu ar datiem par bibliotēkas pakalpojumu izmantošanu.
Par programmrisinājuma izstrādes koncepciju atbild viens bibliotēkas vadītājs un četri darbinieki (krātuves speciālists un bibliotekāres).
1. uzdevums (2 punkti).
Analizē problēmsituācijas aprakstu un uzraksti vienu vispiemērotāko izpētes metodi, ar kuru var noskaidrot programmrisinājuma prasības. Pamato izpētes metodes izvēli.
Atbildes sniegšanas piemērs:
Izpētes metode: ...
Pamatojums: ...
2. uzdevums (2 punkti).
Definē trīs dažādas mērķauditorijas, kas tiks iesaistītas izpētes procesā un kas nākotnē izmantos izstrādāto programmrisinājumu. Pamato mērķauditoriju izvēli.
Atbildes sniegšanas piemērs:
- mērķauditorija: ...
Pamatojums: ...
- mērķauditorija: ...
Pamatojums: ...
- mērķauditorija: ...
Pamatojums: ...
3. uzdevums (2 punkti).
Izvēlies no 2. uzdevumā definētajām mērķauditorijām divas un katrai norādi vienu pārstāvi. Noformulē katram pārstāvim jautājumu, uz kuru izpētes procesā vēlētos saņemt atbildi.
Atbildes sniegšanas piemērs:
- izvēlētā mērķauditorija: ...
Šīs mērķauditorijas pārstāvis: ...
Jautājums šim pārstāvim: ...
- izvēlētā mērķauditorija: ...
Šīs mērķauditorijas pārstāvis: ...
Jautājums šim pārstāvim: ...
4. uzdevums (2 punkti).
Ņemot vērā problēmsituācijas aprakstu, uzraksti, kādus datus ir nepieciešams īpaši aizsargāt un kādos divos dažādos veidos to var īstenot.
Atbildes sniegšanas piemērs:
Īpaši aizsargājamie dati: ...
datu aizsardzības veids: ...
datu aizsardzības veids: ...
5. uzdevums (4 punkti).
Atbilstoši problēmsituācijas aprakstam piedāvā iespējamās divas funkcionālās un divas nefunkcionālās prasības (izņemot datu drošību) plānotajam programmrisinājumam. Pamato piedāvāto prasību nepieciešamību.
Atbildes sniegšanas piemērs:
- funkcionālā prasība: ...
Pamatojums: ...
- funkcionālā prasība: ...
Pamatojums: ...
- nefunkcionālā prasība: ...
Pamatojums: ...
- nefunkcionālā prasība: ...
Pamatojums: ...
6. uzdevums (2 punkti).
Atbilstoši problēmsituācijas aprakstam uzraksti, kurš programmatūras izstrādes modelis būtu piemērotākais konkrētā programmrisinājuma izstrādei. Pamato izstrādes modeļa izvēli.
Atbildes sniegšanas piemērs:
Programmatūras izstrādes modelis: ...
Pamatojums: ...
7. uzdevums (3 punkti).
Uzraksti trīs programmatūras dzīvescikla posmus un apraksti, ko darīsi katrā no tiem. Savu atbildi sasaisti ar problēmsituācijas aprakstu.
Atbildes sniegšanas piemērs:
- posms: ...
Apraksts: ...
- posms: ...
Apraksts: ...
- posms: ...
Apraksts: ...
8. uzdevums (3 punkti).
Uzraksti trīs testu aprakstus ar veicamajiem soļiem, kas pārbaudītu programmrisinājuma atbilstību problēmsituācijas aprakstam.
Atbildes sniegšanas piemērs:
testa apraksts: ...
testa apraksts: ...
testa apraksts: ...
2. daļa Datubāzes izstrāde un izmantošana
Šajā eksāmena daļā būs jāizstrādā datubāze un jāizveido vaicājumi. Izlasi un izpēti problēmsituācijas aprakstu, izpildi 2. daļas uzdevumus.
Kāda novada bibliotēka ir pieņēmusi lēmumu paplašināt un padarīt daudzveidīgāku bibliotēkas pašreizējo darbību. Tā plāno deviņu mēnešu laikā izveidot digitālo bibliotēku ar visām jauno tehnoloģiju priekšrocībām, ievērojot normatīvo aktu prasības par informācijas sistēmu un datu drošību.
Plānots pievienot digitālajai versijai gan pašreizējos lietotājus, pārnesot uz jauno sistēmu nepieciešamos datus no vecās datorizētās lietotāju uzskaites sistēmas un papildinot tos, gan piedāvāt pievienoties jauniem lietotājiem, kā arī uzturēt grāmatu lasīšanas statistiku, pārvaldīt lietotāju piekļuvi utt.
Programmētāju komandai, kura strādā ar digitālās bibliotēkas izstrādes projektu, ir dots uzdevums izveidot jaunu datubāzi. Darba veikšanai no pasūtītāja tika saņemta CSV datne ar bibliotēkas lietotāju datiem – „lietotaji.csv”.
1. uzdevums (12 punkti).
Izvēlētajā datubāzu vadības sistēmā izstrādā datubāzi, kas realizē turpmāk norādītos uzdevumus. Ievēro tabulu un lauku nosaukumu, kā arī datu tipu atbilstību labās prakses principiem.
Pievieno datubāzes datni vai SQL kodā eksportēto datubāzi un uzraksti izvēlētās datubāzu vadības sistēmas nosaukumu un versiju. Datnes nosaukuma veidošanas principu sk. attēlā zemāk.

1.1. uzdevums (2 punkti).
Izveido tabulu „GRAMATAS”, lai tā atbilstu norādītajam aprakstam (iekavās ir norādīti datu piemēri):
nosaukums („Epifānijas”); autors (Imants Ziedonis); žanrs (dzeja); izdošanas gads (2022); lappušu skaits (304).
1.2. uzdevums (3 punkti).
Pamatojoties uz datnes „lietotaji.csv” saturu, pievieno datubāzei tabulu „LIETOTAJI”, kurā glabāsies informācija par bibliotēkas lietotājiem. Ja nepieciešams, pievieno tabulai „LIETOTAJI” papildu laukus, lai būtu iespēja strādāt ar piedāvātajiem datiem.
1.3. uzdevums (4 punkti).
Saplāno un pievieno datubāzei tabulu „STATISTIKA”, kurā glabāsies statistiskā informācija par lietotājiem un grāmatām, kuras viņi ir lasījuši, tostarp, kad un cik ilgu laiku.
1.4. uzdevums (3 punkti).
Saplāno un apraksti divas relācijas starp iepriekš izveidotajām tabulām, lai nodrošinātu datu nedublēšanos un integritāti. Atbilstoši piemēram norādi relāciju tipus un katrā relācijā iesaistītās tabulas un laukus. Sniedzot savu atbildi, ievēro norādīto piemēru.
Atbildes sniegšanas piemērs:
- relācija
Pirmā sasaistītā tabula, lauks: ...
Otrā sasaistītā tabula, lauks: ...
Tips: ...
- relācija
Pirmā sasaistītā tabula, lauks: ...
Otrā sasaistītā tabula, lauks: ...
Tips: ...
2. uzdevums (8 punkti).
Izmantojot kāda cita novada bibliotēku datubāzes ER modeli (sk. attēlu zemāk), izveido četrus SQL vaicājumus, kas sniedz norādīto informāciju.

2.1. uzdevums (2 punkti).
Visu bibliotēku unikālie identifikatori (ID), nosaukumi un adreses.
2.2. uzdevums (2 punkti).
Grāmatu, kas izdotas 2006. gadā, nosaukumi un autori.
2.3. uzdevums (2 punkti).
Grāmatu, kuru autora lauks satur teksta virkni „Eglītis”, vidējā cena.
2.4. uzdevums (2 punkti).
Bibliotēku adreses, kur vismaz piecos eksemplāros ir pieejama Imanta Ziedoņa grāmata „Epifānijas”.
3. daļa Objektorientētā programmēšana un ārējās bibliotēkas
Šajā eksāmena daļā būs jāstrādā ar objektorientēto programmēšanu un ārējām bibliotēkām. Izlasi un izpēti problēmsituācijas aprakstu, izpildi 3. daļas uzdevumu.
Bibliotēkas digitalizācijas laikā nepieciešams izveidot sistēmu, kurā uzglabāt informāciju par grāmatām. Sistēma ar laiku tiks papildināta, taču sākotnēji ir nepieciešama iespēja ievadīt informāciju par grāmatām un izveidot digitālu grāmatu katalogu.
1. uzdevums (38 punkti).
Izvēlētajā programmēšanas valodā izstrādā programmu, kas realizē turpmāk norādītos uzdevumus. Savu programmu raksti vienā datnē. Ievēro norādītos izvades piemērus un norādītos klašu, metožu un objektu nosaukumus. Tāpat ievēro klašu, metožu, procedūru, funkciju, atribūtu, objektu, mainīgo nosaukumu un datu tipu atbilstību labās prakses principiem.
Pievieno savas programmas pirmkoda datni un uzraksti izvēlētās programmēšanas valodas nosaukumu un versiju. Datnes nosaukuma veidošanas principu sk. attēlā zemāk.

1.1. uzdevums.
Izveido klasi „Gramata” (1 punkts), kurai ir šādi atribūti (iekavās ir norādīti datu piemēri objektam, kas turpmāk būs jāveido) (1 punkts):
- nosaukums – obligātais atribūts („Epifānijas”);
- lappušu skaits – obligātais atribūts (304);
- ISBN jeb starptautisks grāmatas identifikators – obligātais atribūts (9789934036101);
- autors (Imants Ziedonis);
- žanrs (dzeja);
- izdošanas gads (2022);
- pieejamības statuss (pieejama).
1.2. uzdevums.
Izveido klasei „Gramata” konstruktoru, kas, ja visi klases atribūti ir norādīti, izveido konkrētas grāmatas objektu (1 punkts) un izvada atbilstošu ziņojumu (1 punkts). Ja objektam netiek norādīts kāds no obligātajiem atribūtiem, tam(tiem) tiek piešķirtas noklusētās vērtības (iekavās ir norādīti datu piemēri) (2 punkti):
- nosaukums (Nav norādīts);
- lappušu skaits (0);
- ISBN (Nav norādīts).
Izvades piemērs:
Grāmata "Epifānijas" ir veiksmīgi izveidota.
1.3. uzdevums.
Izveido klases „Gramata” objektu „epifanijas”, kas satur norādīto informāciju (1 punkts):
- nosaukums: „Epifānijas”;
- lappušu skaits: 304;
- ISBN: 9789934036101;
- autors: Imants Ziedonis;
- žanrs: dzeja;
- izdošanas gads: 2022;
- pieejamības statuss: pieejama.
1.4. uzdevums.
Izveido klasei „Gramata” metodi „izvadit()”, kas izvada konkrētās grāmatas autoru, nosaukumu un izdošanas gadu atbilstoši izvades piemēram (1 punkts). Izmantojot šo metodi, atbilstoši piemēram izvadi grāmatas „epifanijas” datus (1 punkts).
Izvades piemērs:
Grāmatas autors: Imants Ziedonis Grāmatas nosaukums: "Epifānijas" Grāmatas izdošanas gads: 2022
1.5. uzdevums.
Izveido klasei „Gramata” metodi „aprekinat(kaveto_dienu_skaits)”, kas aprēķina un atgriež grāmatas nodošanas termiņa kavējuma maksu pēc šādas formulas (2 punkti): "kavējuma maksa = [lappušu skaits] * 0,01 * [kavēto dienu skaits]". Rezultātu noapaļo līdz diviem cipariem aiz komata (1 punkts). Izmantojot šo metodi, aprēķini un atbilstoši piemēram izvadi grāmatas „epifanijas” kavējuma maksu, ja tā ir nodota piecas dienas pēc termiņa (1 punkts).
Izvades piemērs:
Grāmatas "Epifānijas" kavējuma maksa ir 15,20 EUR.
1.6. uzdevums.
Izveido klases „Gramata” apakšklasi „Fantazija” fantāzijas žanra grāmatām (1 punkts).
1.7. uzdevums.
Izveido apakšklases „Fantazija” objektu „harijs”, kas satur norādīto informāciju (1 punkts)
nosaukums: „Harijs Poters un Filozofu akmens”; lappušu skaits: 223; ISBN: 9780747532699; autors: Dž. K. Roulinga; žanrs: fantāzija; izdošanas gads: 1997; pieejamības statuss: pieejama. 1.8. uzdevums.
Apakšklasē „Fantazija” pārraksti virsklases metodi „aprekinat”, kas aprēķina un atgriež fantāzijas žanra grāmatas nodošanas termiņa kavējuma maksu pēc šādas formulas (2 punkti): "kavējuma maksa fantāzijas žanra grāmatām = [kavējuma maksa kā parastajai grāmatai] + [1 % no kavējuma maksas kā parastajai grāmatai]". Rezultātu noapaļo līdz diviem cipariem aiz komata (1 punkts). Izmantojot šo metodi, aprēķini un atbilstoši piemēram izvadi grāmatas „harijs” kavējuma maksu, ja tā ir nodota desmit dienas pēc termiņa (1 punkts).
Izvades piemērs:
Grāmatas "Harijs Poters un Filozofu akmens" kavējuma maksa ir 22,52 EUR.
1.9. uzdevums.
Izveido klasi „GramatuKatalogs” (1 punkts), kuras konstruktorā ir viens atribūts „gramatas”, kas paredzēts vairāku dažādu grāmatu objektu uzglabāšanai (2 punkti).
1.10. uzdevums.
Izveido klases „GramatuKatalogs” objektu „katalogs” (1 punkts).
1.11. uzdevums.
Izveido klasei „GramatuKatalogs” metodi „pievienot(gramata)” (1 punkts), kas pievieno jaunu grāmatu katalogā (1 punkts) un izvada atbilstošu ziņojumu, ja grāmata ir veiksmīgi pievienota (1 punkts). Izmantojot šo metodi, pievieno katalogam grāmatu objektus „epifanijas” un „harijs” (2 punkti).
Izvades piemērs, ja grāmata ir veiksmīgi pievienota:
Grāmata "Harijs Poters un Filozofu akmens" ir veiksmīgi pievienota.
1.12. uzdevums.
Izveido klasei „GramatuKatalogs” metodi „atjauninat_statusu(ISBN, jauns_statuss)” (1 punkts), kas pēc norādītā ISBN atjaunina grāmatas pieejamības statusu (1 punkts) un izvada atbilstošu ziņojumu, ja statuss ir veiksmīgi atjaunināts (1 punkts) vai ja prasītā grāmata nav atrasta katalogā (1 punkts). Izmantojot šo metodi, atjaunini grāmatas „harijs” pieejamības statusu uz „nav pieejama” (1 punkts).
Izvades piemērs, ja statuss ir veiksmīgi atjaunināts:
Grāmatai ar ISBN "9780747532699" statuss ir atjaunināts uz "nav pieejama". Izvades piemērs, ja prasītā grāmata nav atrasta katalogā:
Grāmata ar ISBN "9780747532698" nav atrasta katalogā.
1.13. uzdevums.
Izveido klasei „GramatuKatalogs” metodi „nonemt(ISBN)” (1 punkts), kas pēc norādītā ISBN dzēš grāmatu no kataloga (1 punkts) un izvada atbilstošu ziņojumu, ja grāmata ir veiksmīgi nodzēsta no kataloga (1 punkts) vai ja prasītā grāmata nav atrasta katalogā (1 punkts). Izmantojot šo metodi, dzēš grāmatu „epifanijas” no kataloga (1 punkts).
Izvades piemērs, ja grāmata ir veiksmīgi nodzēsta no kataloga:
Grāmata ar ISBN "9789934036101" ir veiksmīgi nodzēsta no kataloga. Izvades piemērs, ja prasītā grāmata nav atrasta katalogā:
Grāmata ar ISBN "9789934036100" nav atrasta katalogā.
4. daļa Datu struktūras un programmsaskarnes
Šajā eksāmena daļā būs jāstrādā ar datu struktūrām un piedāvāto programmsaskarni jeb API. Aplūko datus par dažādām grāmatām un žurnāliem, kas pieejami pēc URL saites „https://pro2025.azurewebsites.net”. Izpēti API dokumentāciju pēc URL saites „https://pro2025.azurewebsites.net/docs” vai „https://pro2025.azurewebsites.net/redoc”. Izpildi norādītos uzdevumus.
1. uzdevums (1 punkts).
Uzraksti URL saiti, kuru ievadot adreses joslā tiktu attēloti dati tikai par žurnāliem.
2. uzdevums (1 punkts).
Uzraksti URL saiti, kuru ievadot adreses joslā tiktu attēloti dati tikai par 2000. gadā dibinātajiem žurnāliem.
3. uzdevums (1 punkts).
Uzraksti URL saiti, kuru ievadot adreses joslā tiktu attēloti dati tikai par 2020. gadā izdotajām grāmatām, kuru žanrs ir „Fantasy”.
4. uzdevums (25 punkti).
Izvēlētajā programmēšanas valodā izstrādā programmu, kas realizē turpmāk norādītos uzdevumus. Savu programmu raksti vienā datnē. Ja nav norādīts citādi, izmanto URL saiti „https://pro2025.azurewebsites.net/books”. Ievēro norādītos izvades piemērus un norādītos funkciju nosaukumus. Tāpat ievēro klašu, metožu, procedūru, funkciju, atribūtu, objektu, mainīgo nosaukumu un datu tipu atbilstību labās prakses principiem.
Pievieno savas programmas pirmkoda datni un uzraksti izvēlētās programmēšanas valodas nosaukumu un versiju. Datnes nosaukuma veidošanas principu sk. attēlā zemāk.

4.1. uzdevums.
Izveido pieprasījumu uz norādīto URL saiti (1 punkts). Pārbaudi, vai iegūtās atbildes statusa kods ir „200”, un izvadi atbilstošu paziņojumu (1 punkts).
4.2. uzdevums.
Atbilstoši piemēram (1 punkts) izvadi datus par visām grāmatām, datus par katru grāmatu izvadot jaunajā rindā (1 punkts).
Vienas grāmatas datu izvades piemērs:
Grāmata "nosaukums" (gads), lappušu skaits lpp.
4.3. uzdevums.
Iegūsti visu grāmatu nosaukumus (1 punkts) un ieraksti tos JSON datnē „nosaukumi.json” (1 punkts). Pievieno eksāmena vidē šo izveidoto datni.
4.4. uzdevums.
Atrodi visvecāko grāmatu un izvadi tās nosaukumu (1 punkts).
4.5. uzdevums.
Aprēķini un izvadi visu grāmatu kopējo lappušu skaitu un vidējo aritmētisko cenu visām grāmatām (3 punkti).
4.6. uzdevums.
Izveido funkciju „garakais_nosaukums”, kas atgriež grāmatu ar garāko nosaukumu (1 punkts). Izmantojot izveidotās funkcijas atgriezto vērtību, izvadi atbilstošās grāmatas autoru un gadu (1 punkts).
4.7. uzdevums.
Izveido datu struktūru ar visiem datiem par visām grāmatām (1 punkts). Tām grāmatām, kurām nav norādīts autors, autora laukā ieraksti „Nav norādīts” (1 punkts).
4.8. uzdevums.
Izmantojot 4.7. apakšuzdevumā izveidoto datu struktūru, izvadi visu grāmatu autorus alfabētiskā secībā (A–Z) (1 punkts), turklāt nodrošinot, ka autori neatkārtojas (1 punkts).
4.9. uzdevums.
Izmantojot 4.7. apakšuzdevumā izveidoto datu struktūru, atrodi un atbilstoši piemēram izvadi autoru, kuram ir visvairāk grāmatu (1 punkts), šī autora grāmatu nosaukumus (1 punkts) un šo grāmatu skaitu (1 punkts).
Izvades piemērs:
Autors, kuram ir visvairāk grāmatu (grāmatu skaits), - autors:
"nosaukums"
"nosaukums"
...
4.10. uzdevums.
Izveido sarakstu ar 10 žurnāliem, kas ir nejauši izvēlēti no visiem žurnāliem, kas ir pieejami pēc URL saites „https://pro2025.azurewebsites.net/journals” (1 punkts), sarakstā iekļaujot tikai žurnālu nosaukumus un izdevējus (1 punkts). Izveido funkciju, kas pievieno jaunu žurnālu saraksta sākumā (2 punkti), ievērojot, ka jaunā žurnāla nosaukumu un izdevēju ievada lietotājs (1 punkts). Izveido funkciju, kas dzēš sarakstā pēdējo žurnālu (1 punkts).
.
Changelog
13ae5-on