Problemi anlamaq
Kod yazmağa başlamazdan əvvəl problemi düzgün anla, hissələrə böl və həll yolunu aydın addımlara çevir.
Mövzuya giriş
Proqramlaşdırmada əsas bacarıqlardan biri qeyri-müəyyən tələbi dəqiq, icra edilə bilən və yoxlanıla bilən addımlara çevirməkdir. Kod həmin düşüncə prosesinin proqramlaşdırma dilində ifadəsidir.
Bu mövzunun sonunda sən:
- Problemin nə tələb etdiyini və hansı məlumatlarla işlədiyini müəyyənləşdirəcəksən.
- Böyük məsələni daha kiçik alt problemlərə böləcəksən.
- Həllini pseudocode və flowchart ilə ifadə edəcəksən.
- Alqoritmi kağız üzərində addım-addım icra edəcəksən.
- Sərhəd hallarını tapacaq, alternativləri müqayisə edəcək və həllinin niyə doğru olduğunu izah edəcəksən.
Bütün mərhələləri bir nümunə üzərində quraq:
Verilmiş tam ədədlər siyahısında ikinci ən böyük fərqli ədədi tapın.
Sadə görünən bu tapşırıq problemin dəqiq anlaşılmasının nə qədər vacib olduğunu göstərir.
Problemi dəqiq müəyyənləşdirmək: nəyi həll edirik?
Kod yazmazdan əvvəl dörd suala cavab verilməlidir:
| Anlayış | Əsas sual | Nümunəmizdə |
|---|---|---|
| Problem | Hansı nəticəni əldə etmək istəyirik? | İkinci ən böyük fərqli ədədi tapmaq |
| Input — giriş | Bizə hansı məlumat verilir? | Tam ədədlər siyahısı |
| Output — çıxış | Hansı formada cavab qaytarmalıyıq? | Tapılan ədəd və ya nəticənin olmadığına dair göstərici |
| Constraints — məhdudiyyətlər | Hansı sərhədlər və şərtlər daxilində işləyirik? | Siyahının ölçüsü, ədədlərin diapazonu, vaxt və yaddaş limiti |
İlk vacib məsələ “ikinci ən böyük” ifadəsinin mənasıdır.
Input: [12, 12, 9, 4]Əgər təkrarlanan qiymətlər ayrıca mövqe kimi sayılırsa, cavab 12 ola bilər. Əgər ikinci ən böyük fərqli qiymət tələb olunursa, cavab 9-dur.
Bu fərq həllin məntiqini dəyişir. Ona görə də tələbdəki qeyri-müəyyənliyi kod yazmazdan əvvəl aradan qaldırmaq lazımdır.
Tapşırıq üçün qəbul etdiyimiz müqavilə:
- Giriş tam ədədlər siyahısıdır.
- Təkrarlanan qiymətlər ola bilər.
- Mənfi ədədlər mümkündür.
- Siyahı boş ola bilər.
- Ən azı iki fərqli qiymət yoxdursa, nəticənin olmadığı aydın göstərilir.
- İlkin siyahının sırası dəyişdirilmir.
[7, 3, 9, 9, 5] → 7
[-8, -2, -5] → -5
[4, 4, 4] → Nəticə yoxdur
[] → Nəticə yoxdurBurada “Nəticə yoxdur” ayrıca nəticə vəziyyətidir. Onu 0 və ya -1 ilə əvəz etmək düzgün olmaz: həmin ədədlər özləri etibarlı cavab ola bilər.
Java-da belə nəticə OptionalInt və ya ayrıca nəticə tipi ilə ifadə oluna bilər.
Məhdudiyyətlər niyə vacibdir?
10 elementlik siyahıda işləyən həll 10 milyon element üçün uyğun olmaya bilər. Eyni zamanda, məlumatlar axın şəklində gəlirsə, bütün elementləri yaddaşda saxlamaq mümkün olmaya bilər.
Deməli, məhdudiyyətlər yalnız yoxlanılacaq qaydalar deyil; alqoritmin seçilməsinə təsir edən məlumatlardır.
Növbəti addıma hazırsan?
Kurs proqramını nəzərdən keçir və hesab yaradaraq tədris panelində davam et.
Hesab yarat və kursa keç