ÖNYÜKLEME 2 -Ünite Listesi

Ünite 3: Gerçek Nesnelerin Verilerle Temsili

Geçen derste hazır yapılmış veri yapıları (Kekler) ile çalışan öğrenciler bu kez kendi veri yapılarını tanımlayarak, alanlarına erişerek, ve onları ğreten fonksiyonlar tanımlayarak anlayışlarını genelleştiriler.

Gözden geçirme: Party yapısı (Süre: 15 dakika)

Geçen derste Cake isimli yeni bir veri yapısı öğrendiniz. Ancak Cake tek yapı cinsi değil: istediğimizi yaratabiliriz. Şimdi başka bir tane yaratalım. Bu egzersizde siz bir parti planlayıcı olacaksınız. Veri yapıları planlamakta olduğunuz her partiyi temsil etmek, yerini, temasını, ve misafir sayısını takip etmek için önemli olacak.

İşkitabınızın 13. sayfasında Party yapısının tanımını doldurun:

# a Party is a location, theme, and number of guests
data Party:
  | party(location :: String,
      theme    :: String,
      guests   :: Number)
end

Bir kez Party yapısı tanımlandığında yeni bazı kod parçalarına erişiminiz olur: party oluşturacak bir fonksiyon, ve yer, tema, davetli sayısı bilgilerine erişim için 3 tane nokta-erişimcisi.

Sizin Fırın (Süre: 80 dakika)

Geçenderste Cake isimli yeni bir veri yapısı öğrenmiştiniz.

Bir fırın işletmenin parçası olarak Cake'ler için sipariş alacağız ve müşterilere bu siparişe uygun hazırlayacağız. Bunu yapmak için gerekli fonksiyonları nasıl yazacağımıza bakalım.

İşkitabınızda sayfa 14'e gidin. change-flavor isimli bir fonksiyon yazın.Bir Cake ve bir metin alsın ve verilenle aynı ancak sadece çeşidi istenilene uygun değiştirilmiş bir Cake döndürsün.

Örnek:

# change-flavor: Cake String -> Cake:
# consumes a Cake and produces a Cake that is the same as the original, but has the given flavor.

İlk örneğinizde orijinal cake1]{.title-ref}*‘i kullanın ve ınu çilekli yapın. Biliyoruz ki müşterimiz geriye bir Cake dönmesini bekler: yanlış çeşitte yapılmış bir Cake'i fırına geri götürüp karşılığında bir hata mesajı almayı beklemezsiniz! Ama fonksiyonumuzdan aynı Cake'i de geri döndürmeyeceğiz. rengi, mesajı, kat sayısı aynı, ama sadece çeşidi farklı bir Cake yapmalıyız.

Bir fonksiyonun çıktı alanı olarak Cake yazdığınız anda bilirsiniz ki cake oluşturucusunu çağırmanız ve ona beş şey vermeniz gerekecek: çeşit, renk, mesaj, kat sayısı, ve dondurmalı-mı bilgileri:

examples:
    change-flavor(cake1, "strawberry") is cake(....)
end

Cake uyapısın son alanın unutmayın: is-iceCream! change-flavor için verilen amaç ifadesi Cake'in içinin değişmesine ilişkin birşey söylemiyor, o halde orijinal is-iceCream'i cake1'den nasıl alacaksınız?:

examples:
    change-flavor(cake1, "strawberry") is cake("strawberry",
                                 cake1.color,
                                 cake1.message,
                                 cake1.layers,
                                 cake1.is-iceCream)
end

Değişen şeyleri değişkenlerle yer değiştirince tanımınız şöyle görünecektir:

fun change-flavor(a-cake, new-flavor):
    cake(new-flavor,
        a-cake.color,
        a-cake.message,
        a-cake.layers,
        a-cake.is-iceCream)
      end

İşkitabınızda 15. sayfaya gidin. Fırınınızın bazı Cake'lerin dondurulup dondurulmayacağını bilmesi gerekiyor. Eğer sıcaklık 32 dereceden yüksek ve verilen pasta dondurmalı ise fonksiyon doğru değerini döndürmelidir.

Kapanış (Süre: 5 dakika)

Şimdiye kadar üç veri yapısıyla çalıştık: Coord, Party, ve Cake. Sonraki derste bir oyunu ayrıştırırken yeni bir veri yapısına bakacaksınız, ve onu kendi oyununuzda kullanmanız gerekecek.