Teorija

Uzdevums, kurā var izmantot Case...Of
Svarīgi!
Programmas mērķis:
1) Visas īsā gada dienas ir sanumurētas (1. janvāris ir 1. diena, 2. janvāris ir 2. diena, ..., 31. decembris ir 365. diena) un lietotājs ievada kādas dienas numuru.
2) Programma izvada, kurā mēnesī ir šī diena.
 
Mainīgie lielumi un ievade.
Būs tikai viens mainīgais - DienasNumurs ar tipu integer.
Tāpēc kopā ar ievadi sanāk šāda nepabeigta programma.
programmapiemeers4;usescrt;varDienasNumurs:integer;beginclrscr;write('Ievadietdienasnumuru:');readln(DienasNumurs);readkey;end.
 
Pareizā mēneša atrašana un izvade
Vispirms ir jānoskaidro, cik katrā mēnesī ir dienu. Tas ir parādīts šai tabulā:
Jan
Feb
Mar
Apr
Mai
Jūn
Jūl
Aug
Sep
Okt
Nov
Dec
31
28
31
30
31
30
31
31
30
31
30
31
 
Janvārim sanāk numuri no 1 līdz 31.
Februārim sanāk numuri no 31+1=32 līdz 31+28=59.
Martam - no 59+1=60 līdz 59+31=90.
Utt., rezultātā iegūstot šādu sarakstu:
Mēnesis
Pirmās dienas numurs
Pēdējās dienas numurs
Janvāris
1
31
Februāris
32
59
Marts
60
90
Aprīlis
91
120
Maijs
121
151
Jūnijs
152
181
Jūlijs
182
212
Augusts
213
243
Septembris
244
273
Oktobris
274
304
Novembris
305
334
Decembris
335
365
 
Ar Case...Of palīdzību katram no šiem variantiem piešķir pareizo komandu:
caseDienasNumursof1..31:writeln('Sjiiirjanvaaradiena');32..59:writeln('Sjiiirfebruaaradiena');60..90:writeln('Sjiiirmartadiena');91..120:writeln('Sjiiirapriiljadiena');121..151:writeln('Sjiiirmaijadiena');152..181:writeln('Sjiiirjuunijadiena');182..212:writeln('Sjiiirjuulijadiena');213..243:writeln('Sjiiiraugustadiena');244..273:writeln('Sjiiirseptembradiena');274..304:writeln('Sjiiiroktobradiena');305..334:writeln('Sjiiirnovembradiena');335..365:writeln('Sjiiirdecembradiena');elsewriteln('Nepareizsdienasnumurs');end;
 
Rezultāts
To visu saliekot kopā, sanāk šāda programma:
programmapiemeers4;usescrt;varDienasNumurs:integer;beginclrscr;{Ievade}write('Ievadietdienasnumuru:');readln(DienasNumurs);{Pareizāsatbildesizvēle}caseDienasNumursof1..31:writeln('Sjiiirjanvaaradiena');32..59:writeln('Sjiiirfebruaaradiena');60..90:writeln('Sjiiirmartadiena');91..120:writeln('Sjiiirapriiljadiena');121..151:writeln('Sjiiirmaijadiena');152..181:writeln('Sjiiirjuunijadiena');182..212:writeln('Sjiiirjuulijadiena');213..243:writeln('Sjiiiraugustadiena');244..273:writeln('Sjiiirseptembradiena');274..304:writeln('Sjiiiroktobradiena');305..334:writeln('Sjiiirnovembradiena');335..365:writeln('Sjiiirdecembradiena');elsewriteln('Nepareizsdienasnumurs');end;readkey;end.