Evet arkadaşlar, şimdi hesaplamanın aktarımını gösteren program örneğini inceleyelim.
Yani sol tarafta birinci varlık ve sağ tarafta ikinci varlık var.
Şimdi, önceki ders videosunda tartıştığımız gibi, birinci varlık iki değişkenin sahibidir.
Bu A ve B, değil mi?
Varlık iki ise hesaplamanın sahibidir.
Nihai amaç, birinci varlığın iki varlığın sahip olduğu hesaplamayı kullanarak iki tamsayı A ve B'nin
çarpımını hesaplamak ve sonucu varlığın sahip olduğu yerel depolamada saklamak istemesidir.
İki.
Doğru.
Yani bu, iki elması olan ve meyve suyu öğütücüsü olmayan birinin komşusuna gidip ondan bir meyve suyu öğütücüsü
ödünç almasına ve komşusunun meyve suyu öğütücüsünü kullanarak elmalarının suyunu çıkarmasına
benzer.
Ancak tek fark, o meyve suyunun sizin tarafınızdan içilmemesi, ancak sonunda bir meyve suyu partisi veren
komşunuz olmasıdır, değil mi?
Umarım öyledir.
Bu aptalca bir örnek değil.
Her neyse, şimdi birinci varlığa, yani birinci iş parçacığına ait olan bu iki tamsayının çarpımını
hesaplamak için tartışmamıza devam edelim.
Yapılması gereken ilk şey, ikinci iş parçacığı olan ikinci varlığın hesaplamasını
varlığa kaydettirmekle sorumlu olmasıdır.
Bir Şimdi burada birinci varlığın işlev işaretçisini gösteren bir değişkene sahip olduğunu görebilirsiniz.
Değil mi?
İşlev işaretçileri hiçbir şey değildir, ancak işlevlerin adresini saklayan işaretçilerdir.
Böylece bu fonksiyon işaretçisinin prototipinin çok basit olduğunu görebilirsiniz.
İki tamsayı kabul eder ve bir tamsayı döndürür.
Doğru.
Dolayısıyla bu fonksiyonun prototipi, bu hesaplama fonksiyonunun prototipi olan çarpma fonksiyonu
ile tam olarak eşleşir.
Değil mi?
Dolayısıyla, bir numaralı adım olarak, hesaplama işlevini varlığa kaydettirmek, sonunda bir
elma suyuna sahip olmak isteyen ikinci varlığın sorumluluğundadır.
Burada kayıt, hesaplama işlevinin kullanım için bir varlığa verilmesi anlamına gelir.
Değil mi?
Birinci adımdan sonra, bu fonksiyon işaretçisi değişkeni bir adrese sahip olacaktır,
diyelim ki f e, d, bu fonksiyonun adresidir.
Değil mi?
Dolayısıyla, birinci adımda, birinci varlık hesaplamayı varlıktan başarıyla ödünç aldıktan sonra
hesaplama transferini gerçekleştirin.
İki Şimdi ikinci adımda, birinci varlık hesaplamanın doğru yapılması gereken verileri
üretme sorumluluğuna sahiptir.
Dolayısıyla, veri oluşturma adımları sadece A ve B değerlerinin doğru şekilde başlatılmasını içerir.
İki sayıyı çarpmak için iki sayıya ihtiyacınız olduğu oldukça açıktır.
Başka bir deyişle, hesaplama yapabilmek için girdiye ihtiyacınız vardır.
Ve veriler bir varlık tarafından üretildikten sonra, bir varlık, iş parçacığından ödünç aldığı hesaplamayı
kullanmaktan sorumludur.
Çarpma işlemini gerçekleştirmek için iki tane, değil mi?
Varlık üzerinde mevcut olan fonksiyon çarpımı.
Biri hiçbir şey değildir, ancak basitçe varlıktan ödünç alınan hesaplamayı çağırır.
İki sağ.
Dolayısıyla bu işlev işaretçisi, A ve B girdileriyle bu belirli çarpma işlevini çağırır, doğru.
Ve bu multiply fonksiyonunun iki tamsayının çarpımını hesapladığını ve sonucu ikinci varlığın sahip olduğu
yerel depolama alanında sakladığını görebilirsiniz.
Doğru.
Dolayısıyla, bir önceki ders videosunda tartıştığımız hesaplama transferi modeli tam olarak bu programlama
örneğiyle eşleştirilmiştir.
Dolayısıyla dördüncü adım, sonuçların varlığın yerel deposunda saklanmasını içerir.
İki Burada dikkat edilmesi gereken bazı noktalar, tüm bu hesaplamada herhangi bir veri akışı olmadığıdır.
A ve B verileri hiçbir zaman bir bellek konumundan diğerine kopyalanmadı, değil mi?
Yani kesinlikle veri akışı yok.
Ve bu iletişim modeli genellikle tek yönlü bir iletişimdir, değil mi?
Bu iletişim modelinde, iki numaralı varlığın yerel deposu sonunda
sonuçla doldurulur.
Doğru.
Yani hesaplama birinci varlık tarafından yapılır, ancak sonunda sonuçlar varlığın yerel deposunda
mevcuttur.
İki.
Doğru.
İkinci varlık, sonunda tüm elma suyuna sahip olan komşunuzdur.
Ve bu örneğe bakıp düşünürseniz, bu fonksiyon olan gerçek çarpan fonksiyonu ikinci
varlığa aittir, ancak birinci varlık tarafından yürütülür, değil mi?
Neden birinci varlık tarafından bir işlev işaretçisi aracılığıyla yürütülür.
Doğru.
Bu, hesaplama transferi modeliydi ya da başka bir deyişle, hesaplama transferini uygulamak için fonksiyon
işaretçileri bu şekilde kullanılır.
Hesaplama transferini uygulamak veya aynı sürecin iki iş parçacığı arasındaki iletişimi kurmak için fonksiyon
işaretçilerinin nasıl kullanılabileceğini görmek için alıştırma olarak kısa bir ödev yapacağız.