Fonksiyonel Programlama – Bilgisayar Bilimleri Ödevleri – Bilgisayar Bilimleri Ödev Hazırlatma – Bilgisayar Bilimleri Alanında Tez Yazdırma – Bilgisayar Bilimleri Ödev Yaptırma Fiyatları
Fonksiyonel Programlama
Bu bölümde, daha önce gördüğümüz tarzdan oldukça farklı bir programlama stiline göz atacağız. Daha önce değişkenler üzerinde çalışan programlar yazmıştık; temel işlemlerden biri, bir ifadenin değerinin bir değişkende saklanmasına neden olan atama ifadesidir. Değişkenler tarafından yayılan durumu değiştiren tek ifadedir. Bu programlama stiline zorunlu programlama denir.
Matematikte kullanılan değişkenler tamamen farklıdır. Bazı atama ifadeleri belirtildiği için değişmezler; etki alanları olan bir aralıkta değişiklik gösterdikleri anlaşılmaktadır. Örneğin, J01 ex dx’te x değişkeni, kapalı aralıktaki tüm gerçek sayılar kümesi üzerinde değişir.
Bu bölümde, değişkenlerin atamalarla değiştirilmediği, ancak matematikte aşina olduğumuz bağlı değişkenler olduğu, işlevsel programlama adı verilen bir programlama stilini inceleyeceğiz.
Bazen bunun otomatik olarak bir avantaja işaret ettiği iddia edilir: işlevsel programlar hakkında akıl yürütme, zorunlu programlar hakkında akıl yürütmede yaygın olarak kullanılan makine yönelimli, işlemsel akıl yürütmeden daha sıkı bir şekilde matematikte kök salmıştır.
Öte yandan, işlevsel programların en az zorunlu programlar kadar operasyonel muhakeme ile geliştirildiği sıklıkla görülür. Görünüşe göre, iddia edilen avantaj otomatik değil.
LISP
Keşiflerimize LISP ile başlıyoruz. LISP (liste işleme dili) >.-calculus’a dayalıdır. Önce >.-matematiği sunmayı değil, LISP programlarını hemen tartışmayı seçiyoruz. Sonuç olarak, sağlam ama bazen sıkıcı olan temel eksiktir. (Aslında, LISP ve >.-calculus arasındaki ilişki yalnızca kabataslaktır ve genellikle gereğinden fazla vurgulanmıştır.)
Calculus, hesaplamanın temelleri hakkında bazı bilgiler verebilirken, güvenilir programların etkili tasarımına pek katkıda bulunmaz. LISP’in programlama odaklı bir açıklamasını sağlamaya çalışmıyoruz, ancak dilin bazı özelliklerinden başlayarak ve bunların nasıl kullanılabileceğini görerek aşağıdan yukarıya bir açıklama sunuyoruz.
LISP’i uzun uzadıya ele almamızın ana nedeni, pek çok ayrıntıyı göz ardı etmek zorunda kalmadan hem dili hem de onun uygulamasını incelememize izin vermektir<>. (Uyarı: LISP’nin küçük ve büyük ayrıntılarda farklılık gösteren pek çok sürümü vardır. Yalnızca bir sürümü tartışıyoruz.
İşlevsel programlar ile zorunlu programlar arasındaki farklardan biri de değişkenlerin doğasıdır. Diğer bir fark, birçok işlevsel programın alışık olduğumuzdan farklı türde değerler üzerinde çalışmasıdır.
Oldukça sık, bunlar listeler veya dizilerdir. Listeler, öğelere eşit olarak erişilmemesi anlamında dizilerden farklıdır: ilk öğeye erişilebilir ve listenin geri kalanına erişilebilir.
Bir listenin dördüncü öğesine (listenin geri kalanının geri kalanının ilk öğesi) erişmek için birkaç adım gerekir. Tüm öğelere aynı sayıda adımda erişilememesi müthiş bir asimetriye neden olur ve özellikle verimlilik söz konusu olduğunda programların tasarımında sonuçları vardır.
LISP’de bu sıradaki a, b ve c öğelerinden oluşan liste (a bc) şeklinde yazılır. a, b ve c öğelerinin hiçbir anlamı yoktur, ancak kendilerine eklenmiş başka bir yapıya sahip olmayan keyfi sabitlerdir.
Bu tür sabitlere atom denir. (Bilgisayar bilimcileri, fizikte atomların başka bir alt yapısının olmadığını düşünmüyorlar: sadece amacı için yeterince iyi bir isme ihtiyaç var.) Atomlar, tıpkı C ve C’de olduğu gibi, bir dizi harf ve rakamla gösterilir. Pascal, ancak ilk karakter bir rakam olabileceği gibi bir harf de olabilir.
Bir listenin öğeleri atomik olmakla sınırlı değildir; listeler de olabilirler. Liste listesi örneği ((a b) (c d)) ve karma liste örneği (a b (c d) e) şeklindedir. Boş liste () şeklindedir. Atom nil olarak da yazılır, bu nedenle “anlamı” olan bir atomdur.Boş liste için iki gösterim birbirinin yerine kullanılabilir.
Atomlarla çok az şey yapılabilir. Atomlar üzerindeki ana işlem, eşitlik testidir. LISP, iki atom üzerinde, iki atom eşit olduğunda değeri true, aksi takdirde false olan bir boole işlevi sağlar.
Boole değerlerinin atomlarla temsil edilmesi gerekir; dolayısıyla iki özel atoma ihtiyaç vardır. Zaten bir tane özel atomumuz var, ·rt:il ve bir tane daha ekliyoruz, t. Atom nil, hem boş liste hem de false boole değeri olarak hizmet eder. Atom t doğruya karşılık gelir.
Fonksiyonel programlama dilleri
Fonksiyonel programlama Nedir
Fonksiyonel programlama ve nesneye yönelik programlama
Fonksiyonel programlama Python
C# fonksiyonel programlama Nedir
Java fonksiyonel Programlama
Nesne yönelimli programlama dilleri
JavaScript Fonksiyonel programlama
Sonraki üç işlev, car, cdr ve cons, değerleri ayrıştırır veya oluşturur. Boş olmayan bir x listesi için, (car x) x’in ilk elemanıdır ve (cdr x), x’in ilk elemanı atılarak elde edilen listedir.
Bazen bir liste olması gerekmeyen ikinci bir bağımsız değişkene eksileri uygularız. Örneğin, x bir atom ise, yine de iki eşitliğin geçerli olduğunu varsayarız. Böyle bir eksinin sonucu bir liste değil. Bunun yerine noktalı çift olarak adlandırılır. (a.x) şeklinde basılır. Liste (abc) (a.(b.(c.nil))) ile eşdeğerdir.
(Bir kenara} car ve cdr adları biraz belirsizdir. Bu komik adlar, LISP’nin ilk uygulamasından kaynaklanmaktadır, burada x listesi, iki bölümden oluşan bir kayıt defterinde temsil edilecektir: kaydın adres alanının içeriği, tutun (araba x) ve kaydın içeriği cf azaltma alanı tutacaktır (cdr x).
Bu, LISP tarafından sağlanan tüm işlevlerin kümesini tamamlar. Program yazarken, bu beş temel işlevden daha karmaşık ve umarım daha ilginç işlevler oluştururuz. Geriye kalan tek şey, işlevleri tanımlamak için bazı sözdizimleridir. Fonksiyon tanımlarına örnekler veriyoruz.
Tanımlama adı verilen bir işlevin uygulamaları gibi görünürler, ancak benzerlik yanıltıcıdır: sözdizimi aynıdır, semantik tamamen farklıdır. Sözdizimi >’den esinlenmiştir. -hesap. Örneğin, > içinde. -hesap yazılmazdı.
>.x.x2 yapısı anonim bir işlevdir. Bu tür işlevler cebirsel işlemlerde kullanışlıdır. ( x2 bir işlev değildir: x içindeki bir ifadedir; >.x yapısı x’i “bağlar” ve ifadeyi bir işleve dönüştürür.) Argümanlarının sırasıyla ikinci ve üçüncü öğesini üreten iki işlev veriyoruz; yeterince uzun bir liste olması gerekiyordu.
Örnekler sözdizimini göstermektedir: h’yi, her biri bir işlev tanımı olan bir dizi bağımsız değişken olarak tanımlayın. Her işlev tanımı, iki öğenin bir listesidir: işlevin adı ve >. -işlevi tanımlayan ifade. >. -ifade sırayla üç öğenin bir listesidir: atom lambda, bağlı değişkenlerin listesi ifade edilir.
C# fonksiyonel programlama Nedir Fonksiyonel programlama dilleri Fonksiyonel programlama Nedir Fonksiyonel programlama Python Fonksiyonel programlama ve nesneye yönelik programlama Java fonksiyonel Programlama JavaScript Fonksiyonel programlama Nesne yönelimli programlama dilleri