‫Bu videoda ipuçlarını ele alacağız ve kuyrukları uygulamalarımızda nasıl kullanacağımızı göreceğiz.
‫Kuyruklar önemlidir ve işletim sistemimiz tarafından, örneğin görevler, zamanlama ve diğer birçok
‫işlem için çok kullanılır.
‫Örneğimizde göreceğimiz gibi, verilerin sırası önemli olduğunda kuyruklar kullanılmalıdır.
‫Şimdi devam edelim ve öncelikle bir kuyruk tanımlayalım.
‫Bir kuyruk tanımlamak için kuyruğu kullanabilirsiniz.
‫Anahtar sözcük kuyrukları da genel koleksiyonların bir parçasıdır, bu da bir kuyruğun hangi türü içereceğini tanımlamamız
‫gerektiği anlamına gelir.
‫Yani bu durumda bir grup tamsayı tutacaktır, ancak başka herhangi bir türü de tutabilir.
‫Telleri tutabilir, hatta bütün bir nesneyi bile tutabilir.
‫Dolayısıyla, bu öğenin tutmasını istediğiniz şeyi tanımlamakta tamamen özgürsünüz.
‫Yani kuyruk sonra daha az, sonra işaret daha büyük işarete ve sonra kuyruğun adı eşittir.
‫Ve burada yaptığımız gibi, tamsayıları tutan boş bir kuyruk oluşturarak bunu hemen başlatabilirsiniz.
‫Şimdi devam edebilir ve bu kuyruğa öğeler ekleyebiliriz.
‫Bir kuyruğa öğe eklemek için end queue yöntemini kullanabilirsiniz.
‫Kuyruk yöntemi, kuyruğun sonuna bir nesne ekler.
‫Örneğin, bir gibi bir öğe eklersem, bu öğe ilk öğe olacaktır, çünkü eklediğimiz ilk öğedir,
‫ancak aynı zamanda son öğe de olacaktır.
‫Yani bir tane daha eklediğimizde, yeni öğe kuyruktaki son öğe olacaktır.
‫İşte sipariş böyle verilir.
‫Yığına benzer, ancak aradaki fark, bir şeyden kurtulduğunuzda kuyruğa girmenizdir, bu nedenle
‫bir öğeyi çıkardığınızda, onu kuyruğun başından alacaktır.
‫Böylece ilk oluşturulan öğe alınacak veya tabiri caizse kuyruktan çıkarılacaktır.
‫Kuyruktaki öğelere bakmak için tepe yöntemini kullanabiliriz ve bu tepe yöntemi kuyruktaki ilk öğeyi, yani
‫tabiri caizse kuyruğun önünü gösterecektir.
‫Yani, örneğin kasada olduğunuz ve bir şey sipariş etmek istediğiniz bir insan kuyruğu gibi, o zaman
‫en yoğun yöntem size kuyrukta sipariş vermek üzere olan ilk kişiyi verecektir.
‫Şimdi bunu hızlıca çalıştıralım ve nasıl görüneceğini görelim.
‫Ve kuyruğun önündeki değerin bir olduğunu görüyoruz.
‫Şimdi bunun uygulamamızı nasıl etkileyeceğini görmek için birkaç değer daha ekleyelim.
‫Burada farklı Q kalemlerini toplayacağım, örneğin Q1'i Q2 ve Q3'te bitireceğim ve sadece bu sayıları bir, iki, üç
‫olarak kullanacağım.
‫Başka numaralar da olabilir.
‫Bir, iki, üç olmak zorunda değil.
‫Yani zirve yaptığımızda, kuyruğun başındaki öğeyi elde ederiz.
‫Her seferinde, Q'ya ne eklediğimizden bağımsız olarak, Q'daki ilk öğemizin bir olacağını görebilirsiniz, bu nedenle
‫tepe yöntemini kullandığımızda görüntülenen öğe olacaktır.
‫Şimdi kuyruktaki bir öğeden kurtulmak için kuyruk yöntemini kullanırsınız.
‫İşte burada.
‫Q dot rd q yani bu D q şimdi Q'muzun ilk tamsayısından kurtulacak ve aynı zamanda onu hemen saklayacaktır,
‫böylece buna örneğin bir Q öğesi diyebiliriz ve daha sonra bu dict öğesinin sonucunu
‫saklayacaktır.
‫Yani temel olarak orada bir tane saklayacaktır çünkü bu listedeki ilk öğedir.
‫Ve sonra Pekin iki tane gösterecek çünkü artık biri orada değil.
‫İlk madde gitmiş.
‫Şimdi Q'daki değer iki olacak çünkü sadece ilk öğenin kodunu çözdük.
‫Yani bir yığındaki pop'a benzer, ancak Q'nun sonu veya yığının sonu yerine Q'nun
‫başındaki öğeyi alır, nasıl bakmak isterseniz.
‫Elbette başlangıçta bir öğeyi sıraya koymayı da deneyebilirsiniz.
‫Kuyruğun içinde herhangi bir öğe yoksa, ancak geçersiz işlem istisnasıyla karşılaşırsınız.
‫Kuyruk boş olduğundan, bunu çalıştırmadan önce kuyruğun boş olup olmadığını kontrol etmeniz gerekecektir.
‫Yani burada queue yöntemini çalıştırabiliriz çünkü bir şeyi kodladığımızı biliyoruz.
‫Ancak aksi takdirde, kuyruğunuzda kaç öğe olduğunu anlamak için kuyruğunuzun count özelliğini kullanırsınız.
‫Kullanabileceğiniz özellik budur, kuyrukta bulunan öğe sayısını alır ve daha sonra,
‫örneğin kuyrukta herhangi bir şey olup olmadığını kontrol etmek için bu birin sıfırdan
‫büyük olup olmadığını kontrol edebilirsiniz.
‫Bu özel örnekte, sadece devam edeceğim ve benimkini kullanacağım.
‫Bir while döngüsünde iki kez kontrol etmek için sayıyor musunuz?
‫Ve her bir öğe için sıraya koyacağım ve aynı zamanda hala sırada olan öğelerin miktarını ve kaldırılan
‫öğeyi de yazacağım.
‫Dolayısıyla buradaki satır, kuyruk yöntemini çağırarak öğeyi kaldıracak ve aynı zamanda öğeyi tam burada
‫görüntüleyecektir çünkü burada kullandığımız şey budur.
‫Dize kullanıyoruz, değil mi?
‫Ve bu konum sıfır olduğunda, kuyruk çağrısının sonucu ne ise onu gösterecektir.
‫Burada da görebileceğiniz gibi, kuyruk yöntemi bir tamsayı döndürecektir.
‫Bu yüzden burada bir sayı göstereceğiz.
‫Tamam.
‫Bir öğenin nasıl geri çağrılacağını göstermek için burada kullandığım bu işaretten kurtulmama izin verin.
‫Ve tekrar çalıştıralım.
‫Ve ön taraftaki değeri görebilirsiniz, bu.
‫Ve sonra temel olarak burada Y döngüsünü başlatıyoruz.
‫İlginç olan da bu.
‫Böylece bir kelime kuyruktan çıkarılır.
‫Şimdi kuyruktan çıkarılacak yalnızca iki öğemiz kaldı.
‫Şimdi sadece bir öğemiz kaldı ve üç tanesi kuyruktan çıkarılmadı.
‫Şimdi sadece sıfır ürünümüz kaldı.
‫Yani temel olarak kuyruk o noktada boştur.
‫Tamam.
‫Şimdi aşağı yukarı gerçek dünyadan bir örneğe bakalım.
‫Elbette, bu basit örnekte veritabanlarıyla çalışmıyoruz, ancak diyelim ki bir e-ticaret platformumuz
‫var ve satıcı biziz ve bir sürü sipariş alıyoruz.
‫Bu siparişler, sunucunun zamanını alacak şekilde işlenmelidir.
‫Dolayısıyla müşteri için bekleme süresi minimumda tutulmalıdır.
‫Bu yüzden kuyrukları kullanacağız çünkü gelen siparişlerin sırasını
‫önemsediğimiz için çok pratikler.
‫Yani siparişlerin sırası, burada biraz tekerleme olacak ama verilerin alınma sırası ve veri
‫derken siparişlerin kendilerini kastediyorum.
‫Şimdi burada oluşturacağımız bu çok basit sınıfa bakalım ve onu burada aynı dosyanın
‫içine koyacağım.
‫Bir sipariş kimliği özelliği, sipariş miktarı özelliği ve ardından bir sipariş nesnesi oluşturduğumuzda
‫temel olarak bu iki değeri ayarlayan yapıcıya sahip olan bu sipariş sınıfı
‫ve ardından şu anda baktığımız öğenin sipariş kimliğini yazdıracak olan bu yazdırma mesajına veya bu sipariş
‫işleme yöntemine sahibiz.
‫Şimdi yapmak istediğim şey, program sınıfımın içinde metotlar oluşturmak.
‫Bu yüzden onu hala bu parantezin içine koyacağım ve farklı şubelerden gelen siparişlerle
‫ilgilenecekleri yöntemler.
‫Diyelim ki sipariş alabileceğimiz iki farklı şubemiz var.
‫Örneğin, Amazon'da ve aynı zamanda Best Buy'da satış yaptığımızı varsayalım.
‫Ve şimdi bu emirleri alacağız.
‫Şimdi, hangi dalın farklı dalların sırası olduğunu kontrol edeceğimiz yeri çok karmaşık
‫hale getirmeyeceğiz.
‫Bunu geliştirmek istiyorsanız, bu elbette kendiniz için küçük bir meydan okuma olarak görebileceğiniz
‫bir şey.
‫Ama biz sadece diyeceğiz ki, tamam, bana birinci şubeden gelen emirleri doğru sırayla verin
‫ve ikinci şubeden gelen emirleri de doğru sırayla verin.
‫Tamam.
‫Yani burada bu, bir grup siparişin bulunduğu birinci şube olacak ve ardından bir grup siparişin bulunduğu ikinci şubemiz olacak.
‫Yani verileri alıyoruz.
‫Diyelim ki bu verileri kontrol ettiğimiz bir veritabanından alıyoruz, tamam, siparişler neydi?
‫Ve muhtemelen onları tarihe göre kontrol ederdik.
‫Böylece her siparişin bir de tarihi olur.
‫Burada sipariş kimliğimiz var, ancak genellikle ne zaman sipariş edildiğini ve benzerlerini de saklamaya çalışırız.
‫Ancak bu örnek için basit tutacağız.
‫Şimdi bu örneklerin her ikisinde de bir dizi siparişimiz var.
‫Ve yöntemi çağırdığımızda, birinci ve ikinci şubeden siparişleri aldığımızda, temelde sadece yeniden dönecekler ve sipariş
‫dizisi olacaklar.
‫İşte bir dizi sipariş.
‫İşte bu ifadenin yaptığı şey, siparişleri iade etmektir.
‫Şimdi bizim özel örneğimizde, sipariş kimliği aslında iki farklı sipariş için benzersiz olacaktır.
‫Yani tabiri caizse zaten doğru sırada olacaklar.
‫Bu birinci sipariş, bu da ikinci sipariş.
‫Sonra üçüncü ve dördüncü ve beşinci şubelerimiz var.
‫Ve sonra akşam, Birinci Şube'de, başka bir sipariş geldi ve birisi on ürünümüzü satın
‫aldı.
‫Şimdi ana yöntemimizde bir kuyruk oluşturabiliriz ve aslında buradaki tüm bu şeylerden kurtulmama izin verin.
‫Ana yöntemimizde, şimdi devam edebilir ve bir sipariş kuyruğu oluşturabiliriz.
‫İşte sıra düzeni.
‫Şimdi bunun integer gibi basit bir tip olmayacağını, aslında bir grup emir tutacağını
‫görebilirsiniz.
‫Kuyruğun en güzel yanı da bu.
‫Yani sadece basit tipler değil ve bu bir sipariş kuyruğunu çağıracağım ve hemen burada
‫başlatacağım.
‫Ve bu noktada, devam edebilir ve buradaki for döngüsünü kullanarak Şube 1'den aldığımız tüm siparişlerimizi sıraya
‫koyabiliriz, bu for each döngüsü.
‫Yani arayacağım her bir siparişin üzerinden geçiyoruz.
‫Oh, bu for each döngüsünde ve bu yinelemede birinci daldan emir alıyoruz.
‫Şimdi buradaki dizi order array türünde olacaktır.
‫Dolayısıyla, bu yöntemi çağırdığımızda, burada gördüğünüz gibi bir sipariş dizisi dönecektir.
‫Yani temel olarak bu for each döngüsü, bu sipariş dizisinin içinde sahip olduğumuz siparişleri gözden geçirecek
‫ve her birine bakacaktır.
‫Yani her şey önce bu sırada olacak, sonra bu sırada olacak, sonra bu sırada olacak.
‫Ve her biri için bu emirlerin kuyruğu sona erecek.
‫İşte bu for each döngüsünün yaptığı şey bu.
‫Ve sonra diğer dal için de başka bir for each döngüsü oluşturuyoruz.
‫Evet.
‫Aynı şey burada her döngü için veya ikinci şubeden alınan siparişlerde de geçerlidir.
‫Bu ikinci şube.
‫Bu birinci şube.
‫Ve aynı şey geçerlidir.
‫Yani aynı kavram geçerlidir.
‫Bu nedenle, siparişleri işlemek için kuyruğumuzu tek tek gözden geçireceğiz ve ardından kuyruğumuzdaki öğeleri kaldıracağız
‫ve kuyruğumuz boşalana ve tüm siparişler nihayet işlenene kadar bunları işleyeceğiz.
‫Bu yüzden burada siparişleri işleyecek olan bu sipariş işleme metoduna sahibiz.
‫Şimdi devam edebilir ve ana yöntemimiz yerine, içindeki tüm öğelerle birlikte sipariş kuyruğuna
‫sahip olduğumuzda, içinden geçebilir ve sipariş kuyruğunun boş olup olmadığını kontrol edebiliriz ve boş olmadığı
‫sürece.
‫Sipariş kuyruğu sayısı sıfırdan büyük olduğu sürece, bu while döngüsünü çalıştıracağız
‫ve kuyruğun önündeki siparişi kaldıracağız.
‫Tabiri caizse, ilk gelen sırayı bulun ve bunu geçerli sıra adlı bir değişkende saklayın.
‫Dolayısıyla, Mevcut Sipariş olarak adlandırılacak olan ve temelde sipariş kuyruğumuzun ilk öğesindeki
‫kuyruğun sonucu olacak olan bu sipariş nesnesine sahibiz.
‫Yani temel olarak önce bu maddeyi, sonra bu maddeyi, sonra o maddeyi, sonra bu maddeyi, sonra onu ve sonra onu
‫alıyoruz.
‫Ve sonra her birini adım adım işleyecektir.
‫Yani işlem ve bizim durumumuz çok basit bir şey olacak.
‫Sadece konsola yazdıracaktır.
‫Ancak elbette burada arka planda çok daha karmaşık bir şey çalıştırabilirsiniz.
‫Bu, örneğin bununla ilgilenecek zamanı olan bir çalışana veya şirketinizde kullandığınız
‫herhangi bir işleme sistemine bir e-posta gönderen bazı olayları tetikleyebilir.
‫Tamam.
‫Ve evet, temelde bu kadar.
‫Şimdi sonuçları görmek için bu uygulamayı çalıştıralım.
‫Ve birinci siparişin işleme alındığını görebiliriz.
‫İkinci sipariş işlendi, sonra altıncı sipariş, sonra üç, dört, beş.
‫Bu yüzden siparişleri işleme alıyoruz.
‫Tabii ki, onları sıraya koyduğumuz sıraya göre sıralamayı bitiriyoruz.
‫Burada 1/1 şubesinden ve ardından ikinci şubeden sıraya girdiğimizi görebilirsiniz.
‫Bu nedenle, aşağıdaki senaryo için sistemde dahili olarak oluşturulan siparişlerin
‫önce kabul edilmesi ve işleme tüzel kişiliğine, bu tüzel kişilik her neyse, örneğin başka bir ofis gibi, tamamen
‫itilmesi gerektiğini hayal edin.
‫Ve bunu örneğin günün sonunda yapıyorlar.
‫Yani ilk şube mallarını bitiriyor ve diyorlar ki, tamam, bu siparişleri kabul ediyoruz.
‫Ve o günün ilerleyen saatlerinde, çünkü diyelim ki farklı bir zaman dilimindeler.
‫Örneğin, Şube 2 şöyle diyor: Evet, aynı fikirdeyiz.
‫Bu noktada da siparişlerimizi onaylanmış olarak gönderiyoruz ve ardından işleme alınmaya başlıyorlar.
‫Yani bu örnek bu şekilde değerlendirilebilir, örneğin, değil mi?
‫Aksi takdirde, elbette, bunları kimliklerine veya oluşturuldukları zamana göre hemen sipariş
‫edersiniz.
‫Tamam.
‫Artık bu siparişlerin nasıl işlediği ve kuyrukların nasıl çalıştığı hakkında belirli bir fikriniz var.
‫Bu daha önemli bir kısım.
‫Artık kendi kuyruklarınızı oluşturabilir ve bunları uygulamalarınızda kullanabilirsiniz.
‫Tamam.
‫Umarım bu videoyu beğenmişsinizdir.
‫Bir sonrakinde görüşürüz.