eolymp
bolt
Try our new interface for solving problems
Məsələlər

Sintaksis UML

Sintaksis UML

\includegraphics{https://static.e-olymp.com/content/b6/b6ced5447c477b50a7cc6cd8a6ad2f4b486e8a9c.jpg} \textbf{UML} (Unified Modelling Language) - obyek-yönümlü proqram layihələrinin işlənilib hazırlanmasında tətbiq olunan vahid şəklə salınmış modelləşdirmə dilidir. UML-n elementlərindən biri qarşılıqlı əlaqədə olan paralel proseslərin alqoritmlərinin hərəkət tərzini təsvir etmək üçün istifadə olunan fəaliyyət diaqramıdır. Sadə halda fəaliyyət diaqramını təpə və qövslərdən ibarət olan sxem kimi də təsvir etmək olar. Hər bir təpə dilin hər hansı müvafiq fəaliyyətinə, qövs isə idarəetmənin iki təpə arasında ötürülməsinə uyğundur. Əgər sxem aşağıdakı 5 növ təpələrdən ibarətdirsə, onda onu düzgün sxem adlandıracağıq: \begin{enumerate} \item \textbf{Vəziyyət}. Belə təpələrdə bəzi fəaliyyətlər icra edilir. O birdən çox olmayan giriş qövsünə və birdən çox olmayan çıxış qövsünə malik olur. \item \textbf{Budaqlanma}. Bu növ təpə bir giriş qövsünə və iki və ya daha çox çıxış qövsünə malik olur. Hər bir çıxış qövsü bütün şərtlərdən yalnız biri doğru olan bir neçə şərtə uyğundur. İdarəetmə doğru şərtə uyğun olan qövsə verilir. \item \textbf{Qovuşma}. Bu növ təpə iki və ya daha çox giriş qövsünə və bir çıxış qövsünə malik olur. Qovuşma uyğun budaqlanmada başlanan şərt tərzinin bir neçə variantının sonunu bildirir. \item \textbf{Bölünmə}. Bu növ təpə bir giriş qövsünə və ikidən az olmayan çıxış qövsünə malik olur. Onlar sistemin paralel davranışını təsvir etmək üçündür. Bölünmə icra edilərkən idarəetmə bütün çıxış qövslərinə verilir. \item \textbf{Birləşmə}. Bu növ təpə iki və ya daha çox giriş qövsünə və bir çıxış qövsünə malik olur. Əgər bütün giriş qövslərinin hamısı idarəetməni alırsa, onda birləşmə icra olunur. \end{enumerate} Beləliklə, şərti davranışlar budaqlanma və qovuşma, paralel davranışlar isə bölünmə və birləşmənin köməyi ilə göstərilir. UML-sxemlərdə təpələrin iki cür vəziyyəti tanınır: başlanğıc və son. Diaqramlar fəaliyyətə başlanğıc vəziyyətlə başlayır və son vəziyyətlə qurtarır. Hər bir təpə başlanğıc vəziyyətə və son vəziyyətə nail ola bilir. Diaqramda təpələr ardıcıllığı yoldur. Çıxış qövsünün daxil olduğu təpəni təpələrin girişi adlandıracağıq. Giriş qövsünün çıxdığı təpəni təpələrin çıxışı adlandıracağıq. Bəzi budaqlanmaların birləşmələri və bölünmələri dolaşıqdır və ya hətta ənənəvi fon-neyman hesablama sistemində onu izah etmək mümkün deyil. Səbəblərdən biri də budur ki, onlar potensial sonsuz sayda paralel yollar əmələ gətirirlər. Ona görə də həm \textbf{UML} standartı, həm də onun əksər reallaşdırmaları diaqramın strukturunda müxtəlif məhdudiyyətlər müəyyənləşdirir. Sizin tapşırıq-diaqramın təsvirini gözdən keçirən və aşağıdakı məhdudiyyətlərə uyğun olaraq onun düzgünlüyünü yoxlayan proqramı yazmaqdır: * Bölünmələrdən çıxan icra yolu eyni vəziyyətdən, budaqlanmadan və ya qovuşmadan keçə bilməz. * Hər bir budaqlanma bu budaqlanmadan başlayan və bütün mümkün icra yollarında qurtaran ayrıca qovuşmaya uyğundur. * Hər bir bölünmə bu bölünmədən başlayan və bütün icra yollarında qurtaran bir birləşməyə uyğundur. * Budaqlanma, bölünmə, qovuşma və birləşmə növündə olan təpələrin giriş və çıxışı yalnız vəziyyət ola bilər. *Vəziyyətin giriş və çıxışı istənilən təpə ola bilər. * Diaqramın sadələşdirilməsi üçün bir neçə bölünmələr üçün uyğun bölünmələrin bütün yollarını birləşdirən bir birləşməni göstərməyə icazə verilir. *Analoji olaraq, bir neçə budaqlanma üçün də bir ümumi qovuşmanı göstərmək olar. UML dilinin fəaliyyət diaqramı aşağıdakı şəkildə verilir. Diaqramın hər təpəsi təpənin nömrəsi olan tam ədədlə nişanlanır. Təpənin növü latın əlifbasının böyük hərfləri ilə işarə olunur: \textbf{S} -- vəziyyət (State), \textbf{D} -- budaqlanma (Decision Activity), \textbf{M} - qovuşma (Merge), \textbf{B} -- bölünmə (Synchronization Bar), \textbf{J} -- birləşmə(Join). UML dilində sadə fəaliyyət diaqramına nümunə şəkildə verilmişdir. Orada \textbf{0 -} başlanğıc vəziyyət, \textbf{17} -- yekun vəziyyət, \textbf{2}, \textbf{10} -- bölünmələr, \textbf{14} -- birləşmə, \textbf{5} - budaqlanma, \textbf{8} -- qovuşmadır. Diaqramda qalan bütün təpələr-vəziyyətdir. \InputFile Giriş faylının birinci sətrində tam\textbf{ N} (\textbf{N} <= \textbf{10000}) ədədi-diaqram elementlərinin sayı göstərilmişdir. Diaqramın təpələri \textbf{0}-dan (\textbf{N-1})-dək olan ədədlərlə nömrələnmişdir. Başlanğıc vəziyyət \textbf{0} nömrəsinə, yekun vəziyyət isə \textbf{N-1} nömrəsinə malikdir. Sonrakı \textbf{N} sayda sətrin hər birində diaqramın təpələri ardıcıllıqla bir sətirdə təsvir edilir. Bir təpənin təsvirində sətrin birinci mövqeyində bir simvol - təpənin növü, sonra isə(növündən asılı olaraq) giriş və çıxış haqqında informasiya gələ bilər. İlkin vəziyyət üçün yalnız çıxışın nömrəsi, yekun üçünsə yalnız girişin nömrəsi göstərilir. İlkin və sondan başqa, qalan bütün vəziyyətlər üçün əvvəlcə girişin nömrəsi, sonra isə çıxışın nömrəsi göstərilir. Təpələrin qalan növləri üçün əlavə informasiya yoxdur. \OutputFile Yekun faylda diaqram düzgündürsə və razılaşdırılmış bütün məhdudiyyətlərə uyğundursa, \textbf{CORRECT} sətrini verməlisiniz. Əks halda\textbf{ INCORRECT} sətrini vermək zəruridir.
Zaman məhdudiyyəti 1 saniyə
Yaddaşı istafadə məhdudiyyəti 64 MiB
Giriş verilənləri #1
18
S 1
S 0 2
B
S 2 9
S 2 5
D
S 5 8
S 5 8
M
S 3 10
B
S 10 14
S 10 14
S 10 14
J
S 14 17
S 8 14
S 15
Çıxış verilənləri #1
CORRECT