Latihan - Menggunakan perulangan
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:
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 codeFungsi tersebut diberi nama
cardDescriptiondan parameter input-nya adalahcard. 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 hereSekarang, gunakan pengetahuan yang Anda peroleh tentang
if...elseuntuk menentukan kartu yang cocok. Aturannya adalah:0adalah hati,1adalah waru,2adalah wajik, dan3adalah keriting.Petunjuk / Saran
Berhentilah sejenak dan pikirkan tentang bagaimana menerapkan pengetahuan Anda sebelum Anda melanjutkan.
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.
Mencetak deck
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:
Tambahkan definisi
cardske metodemain():[<EntryPoint>] let main argv = let cards = [ 1; 10; 2; 34 ] // implement program 0 // return an integer exit codeDeck 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.Tambahkan kode berikut ke metode
main()untuk mengimplementasikan perulanganfor...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 codeJalankan proyek dengan memanggil
dotnet run:dotnet runAnda 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