1.1 Alqoritm nədir

Alqoritm – müəyyən bir problemi həll etmək ya da spesifik bir tapşırığı yerinə yetirmək üçün nəzərdə tutulan aydın və dəqiq şəkildə müəyyən edilmiş addımlar və ya təlimatlar ardıcıllığıdır. Alqoritmin hər bir addımı anlaşılan və dəqiq olmalıdır, və alqoritmin icrası məhdud zaman ərzində müəyyən nəticəyə gətirməlidir.
Alqoritm nə üçün lazımdır:
- Problemlərin həlli: Alqoritmlər müxtəlif məsələlərin sistematik şəkildə həll edilməsi üçün imkan yaradır, sadə riyazi əməliyyatlardan tutmuş mürəkkəb hesablamalara qədər.
- Proseslərin avtomatlaşdırılması: Alqoritmlər proqram təminatında tapşırıqların avtomatlaşdırılması üçün zəruridir, bu insan müdaxiləsi olmadan təkrarlanan əməliyyatların yerinə yetirilməsinə imkan yaradır.
- Resursların optimallaşdırılması: Düzgün dizayn edilmiş alqoritmlər icra müddəti və yaddaş kimi resursların effektiv istifadəsinə kömək edir.
- Təkrarlılıq və etibarlılıq: Alqoritmlər nəticələrin təkrarlanmasını və proqnozlaşmasını təmin edir ki, bu da etibarlı proqram təminatının inkişafı üçün vacibdir.
Nümunələr:
- Gündəlik işlər: Məsələn, səhər rutini alqoritmi – oyanmaq, dişləri yumaq, səhər yeməyi hazırlamaq və sair.
- Riyazi əməliyyatlar: İki ədədin ən böyük ortaq bölənini (ƏOB) tapmaq üçün alqoritm.
- Kompüter proqramları: Sıralama alqoritmləri (məsələn, bubble sort) və axtarış alqoritmləri (məsələn, binary search).
1.2 Məlumat strukturu nədir
Məlumat strukturu – bu, məlumatların təşkil və saxlanma üsuludur, hansı ki onların səmərəli istifadə və emal edilməsinə imkan verir. Müxtəlif məlumat strukturları fərqli tip tapşırıqlar və əməliyyatlar üçün nəzərdə tutulub.

Məlumat strukturları niyə lazımdır:
- Məlumatların səmərəli idarə olunması: Məlumat strukturları məlumatları elə təşkil etməyə imkan verir ki, onlara tez və səmərəli şəkildə giriş əldə edilsin, dəyişdirilsin və ya silinsin.
- Alqoritmlərin optimallaşdırılması: Müxtəlif məlumat strukturları fərqli alqoritmlər üçün uyğundur və düzgün məlumat strukturunun seçilməsi alqoritmin səmərəliliyini xeyli artıra bilər.
- Proqramlaşdırma rahatlığı: Düzgün məlumat strukturlarından istifadə kodu daha aydın, dəstəklənən və genişləndirilə bilən edir.
- Spesifik tapşırıqların həlli: Bəzi məlumat strukturları xüsusi tapşırıqların həlli üçün nəzərdə tutulub, məsələn, sürətli axtarış üçün hash-cədvəllər və ya ierarxik məlumatlar üçün ağaclar.
Nümunələr:
- Massivlər: Eyni tip elementlərdən ibarət dəst, hansı ki, onlara indeks üzrə giriş əldə etmək mümkündür.
- Bağlı siyahılar: Hər biri növbəti elementə istinad edən elementlər kolleksiyası.
- Stack (yığın):
LIFO (Last In, First Out)
prinsipinə əsaslanan elementlər kolleksiyası. - Queue (növbə):
FIFO (First In, First Out)
prinsipinə əsaslanan elementlər kolleksiyası.
1.3 Proqramlaşdırmada alqoritmlərin və məlumat strukturlarının önəmi
Vacibdir! Hətta sadə bir sayt və ya mobil tətbiq yazarkən belə, mürəkkəb alqoritmlər və məlumat strukturlarından istifadə edirsiniz. Tətbiq əməliyyat sistemi üzərində işləyir, sayt isə brauzer daxilində işləyir və bu şeylərin sürətli və etibarlı işləməsi üçün orada standartlaşdırılmış alqoritmlər və məlumat strukturlarından istifadə edilir.
Alqoritmlərin önəmi:
- Proqramlaşdırmanın əsas prinsipi: Alqoritmlər istənilən proqramın təməlidir, məlumatların istənilən nəticəni əldə etmək üçün necə işlənəcəyini müəyyən edir.
- Səmərəlilik və məhsuldarlıq: Optimal alqoritmlər proqramların daha sürətli işləməsini və resursların səmərəli istifadə edilməsini təmin edir.
- Mürəkkəb problemlərin həlli: Alqoritmlər əl ilə həll etmək mümkün olmayan mürəkkəb hesablama məsələlərini həll etməyə imkan verir.
- Universallıq: Bir çox alqoritmi fərqli sahələrdə, məsələn sıralama, axtarış, məlumatların sıxılması və kriptoqrafiyada tətbiq etmək olar.
Məlumat strukturlarının önəmi:
- Məlumatların təşkil edilməsi: Məlumat strukturları məlumatları səmərəli təşkil etmək və idarə etmək üçün imkan yaradır ki, bu da effektiv proqramların yaradılması üçün vacibdir.
- Alqoritmlərin dəstəklənməsi: Fərqli məlumat strukturları fərqli alqoritmlər üçün optimaldır və düzgün məlumat strukturu seçimi proqramın performansını əhəmiyyətli dərəcədə yaxşılaşdıra bilər.
- Miqyaslanabilirlik: Yaxşı planlaşdırılmış məlumat strukturları proqramları asanlıqla genişləndirməyə və dəyişdirməyə imkan verir.
1.4 Sadə alqoritmlər nümunələri
Massivdə maksimumu tapmaq alqoritmi:
Bu alqoritm verilmiş rəqəmlər massivində ən böyük dəyəri tapır.
Addım-addım alqoritm:
- Massivin ilk elementini maksimum dəyər kimi qəbul edin.
- Massivin bütün digər elementlərini bir-bir yoxlayın:
- Əgər cari element cari maksimum dəyərdən böyükdürsə, maksimum dəyəri yeniləyin.
- Bütün elementlər yoxlandıqdan sonra tapılmış maksimum dəyəri qaytarın.
Python ilə həyata keçirilməsi:
def find_max(arr):
# İlk elementin maksimum olduğunu qəbul edirik
max_val = arr[0]
# Massivin bütün elementlərini yoxlayırıq
for num in arr:
# Əgər cari element max_val-dan böyükdürsə, max_val-ı yeniləyirik
if num > max_val:
max_val = num
# Tapılmış maksimum dəyəri qaytarırıq
return max_val
# İstifadə nümunəsi:
# numbers = [4, 2, 9, 7, 5, 1]
# result = find_max(numbers)
# Çıxış: 9
Bubble Sort (Baloncuklu sıralama) alqoritmi:
Bu alqoritm massivdəki elementləri ardıcıl şəkildə müqayisə edərək və qonşu elementləri düzgün olmayan sırada olduqda yerlərini dəyişərək sıralayır.
Addım-addım alqoritm:
- Massivin ilk elementindən başlayın.
- Cari elementi növbəti elementlə müqayisə edin.
- Əgər cari element növbəti elementdən böyükdürsə, onların yerlərini dəyişin.
- Növbəti elementə keçin və 2-3-cü addımları təkrarlayın, massiv sonuna qədər gedin.
- Bir keçidlə heç bir dəyişiklik edilmədiyi müddətə qədər 1-4-cü addımları təkrarlayın.
Python ilə həyata keçirilməsi:
def bubble_sort(arr):
n = len(arr)
# Massivin bütün elementlərini yoxlayırıq
for i in range(n):
# Sonuncu i element artıq sıralanıb
for j in range(0, n - i - 1):
# Qonşu elementləri müqayisə edirik
if arr[j] > arr[j + 1]:
# Əgər düzgün sırada deyillərsə, yerlərini dəyişirik
arr[j], arr[j + 1] = arr[j + 1], arr[j]
return arr
# İstifadə nümunəsi:
# numbers = [64, 34, 25, 12, 22, 11, 90]
# sorted_numbers = bubble_sort(numbers)
# Çıxış: [11, 12, 22, 25, 34, 64, 90]
GO TO FULL VERSION