Latihan - Menggunakan perulangan

Selesai

Dalam latihan ini, Anda akan membuat setumpuk kartu untuk permainan kartu yang sedang dikembangkan. Anda akan menggunakan konstruksi perulangan untuk melakukan iterasi pada kartu, lalu mencetak kartu di layar. Rekan-rekan Anda juga telah bekerja keras, dan mereka memasukkan kode yang Anda buat pada latihan pertama ke dalam sebuah fungsi.

Membuat perancah proyek

Mulailah dengan menyusun proyek F# baru di konsol Anda. Jalankan dotnet new perintah:

dotnet new console --language F# -o Loops
cd Loops

Membuat deskripsi kartu

Rekan Anda telah mengambil kode yang Anda tulis di latihan sebelumnya dan mengubahnya menjadi sebuah fungsi, sehingga dapat digunakan kembali. Berikut tampilan kodenya sekarang:

let cardDescription (card: int) : string =
    let cardNo: int = card % 13
    if cardNo = 1 then "Ace"
    elif cardNo = 11 then "Jack"
    elif cardNo = 12 then "Queen"
    elif cardNo = 0 then "King"
    else string cardNo

Untuk membuat deskripsi kartu:

  1. Di Program.fs, ganti konten dengan kode berikut:

    open System
    
    let cardDescription (card: int) : string =
        let cardNo: int = card % 13
        if cardNo = 1 then "Ace"
        elif cardNo = 11 then "Jack"
        elif cardNo = 12 then "Queen"
        elif cardNo = 0 then "King"
        else string cardNo
    
    [<EntryPoint>]
    let main argv =
        // implement the rest
        0 // return an integer exit code
    

    Fungsi tersebut diberi nama cardDescription dan parameter input-nya adalah card. Rekan Anda memberi Anda cuplikan kode untuk dikerjakan. Mereka ingin Anda menerapkan fungsi serupa, tetapi fungsi menentukan apa yang sesuai dengan kartu tersebut. Mereka memberi Anda cuplikan kode ini:

    let suit (no:int) : string = 
        let suitNo:int = no / 13
        // add implementation here 
    

    Sekarang, gunakan pengetahuan yang Anda peroleh tentang if...else untuk menentukan kartu yang cocok. Aturannya adalah: 0 adalah hati, 1 adalah waru, 2 adalah wajik, dan 3 adalah keriting.

    Petunjuk / Saran

    Berhentilah sejenak dan pikirkan tentang bagaimana menerapkan pengetahuan Anda sebelum Anda melanjutkan.

  2. Buat perubahan berikut pada kode:

    let suit (no:int) : string = 
        let suitNo:int = no / 13
        if suitNo = 0 then "Hearts"
        elif suitNo = 1 then "Spades"
        elif suitNo = 2 then "Diamonds"
        else "Clubs" 
    

    Kode di Program.fs sekarang akan terlihat seperti contoh ini:

    open System
    
    let suit (no:int) : string = 
        let suitNo:int = no / 13
        if suitNo = 0 then "Hearts"
        elif suitNo = 1 then "Spades"
        elif suitNo = 2 then "Diamonds"
        else "Clubs" 
    
    let cardDescription (card: int) : string =
        let cardNo: int = card % 13
        if cardNo = 1 then "Ace"
        elif cardNo = 11 then "Jack"
        elif cardNo = 12 then "Queen"
        elif cardNo = 0 then "King"
        else string cardNo
    
    [<EntryPoint>]
    let main argv =
        // implement program
        0 // return an integer exit code
    

Selamat, Anda telah menyelesaikan bagian dari permainan kartu itu.

Sekali lagi, rekan Anda telah membantu Anda membuat deck kartu. Yang harus Anda lakukan adalah mencetaknya. Berikut kode untuk deck kartu:

let cards = [ 1; 10; 2; 34 ]

Untuk mencetak deck:

  1. Tambahkan definisi cards ke metode main():

     [<EntryPoint>]
     let main argv =
         let cards = [ 1; 10; 2; 34 ]
         // implement program
         0 // return an integer exit code
    

    Deck hanya berisi empat kartu. Dalam implementasi yang lebih realistis, kode akan berisi 52 kartu, tetapi daftar ini akan cukup sebagai contoh.

    Rekan-rekan Anda telah lagi menulis kode untuk Anda. Anda hanya perlu mengisi apa yang kurang. Berikut cuplikan kode:

    // add for loop
      printfn "%s of %s" (cardDescription(card)) (suit(card))
    

    Kode terdiri dari baris komentar. Tugas Anda adalah menambahkan kode untuk mengimplementasikan perulangan for...in.

  2. Tambahkan kode berikut ke metode main() untuk mengimplementasikan perulangan for...in:

    for card in cards do
      printfn "%s of %s" (cardDescription(card)) (suit(card))
    

    Metode main() kini akan terlihat seperti kode ini:

    [<EntryPoint>]
    let main argv =
        let cards = [ 1; 10; 2; 34 ]
        for card in cards do
          printfn "%s of %s" (cardDescription(card)) (suit(card))
        0 // return an integer exit code
    
  3. Jalankan proyek dengan memanggil dotnet run:

    dotnet run
    

    Anda akan menemukan output berikut:

    Ace of Hearts 
    10 of Hearts
    2 of Hearts
    8 of Diamonds 
    

Selamat. Anda bekerja dengan kode yang Anda dan rekan Anda implementasikan dan kembangkan menjadi program yang tampak lebih realistis.

Program.fs sekarang terlihat seperti kode ini:

open System

let suit (no:int) : string = 
    let suitNo:int = no / 13
    if suitNo = 0 then "Hearts"
    elif suitNo = 1 then "Spades"
    elif suitNo = 2 then "Diamonds"
    else "Clubs" 

let cardDescription (card: int) : string =
    let cardNo: int = card % 13
    if cardNo = 1 then "Ace"
    elif cardNo = 11 then "Jack"
    elif cardNo = 12 then "Queen"
    elif cardNo = 0 then "King"
    else string cardNo

[<EntryPoint>]
let main argv =

    let cards = [ 1; 10; 2; 34 ]

    for card in cards do
      printfn "%s of %s" (cardDescription(card)) (suit(card))
    0 // return an integer exit code