見出し画像

Swiftで行こう!-ちょっと練習。

カレンダーを作ってみます。

月の日数は31日とします。

let days = 31

1日の曜日を指定します。日曜日が0で順番に数が増えて土曜日が6になります。今回は火曜日とします。日、月、火なので0,1,2ですね

let firstDay = 2

そして週を定義します。週の頭、日曜日を"0"とします。

var w = 0

火曜日が1日なので、日、月と空白を入れたいので、

while w < firstDay{
print("     ", terminator:"")
w += 1
}

要するに、"w"が0,1のときに、空白「"     "」をいれます。, terminator:""は改行しないという命令です。そして、w += 1 として1づつ増やしてループします。

次に続くのが日付です。1から31までを表示させていきます。

var d = 1

として変数"d"に数字を入れて"print()"関数でコンソールに出力します。

while w < 7{  }

で一列、1週間ずつ出力します。

1から9までは一桁なので、見栄えを良くするために、数字の前に空白を入れて2桁と同じ幅にして表示するときにキレイに並ぶようにします。

let pad = d < 10 ? " " : ""

そして1から31までを1週間単位でループして表示させていきます。

print(pad + " \(d)", terminator:"")
w += 1
d += 1

7日ごとにループを抜けて、

print()
w = 0

改行してw0に戻します。この繰り返しで0から6のk折り返しを行います。そしてd31を超えると、

if d > days{
print()
break loop

break loop でループを抜けます。

全体のコードです。

let days = 31
let firstDay = 2
var w = 0
while w < firstDay{
   print("    ", terminator:"")
   w += 1
}
var d = 1
loop: while true{
   while w < 7{
   let pad = d < 10 ? " " : ""
   print(pad + "  \(d)", terminator:"")
   w += 1
   d += 1
   
   if d > days{
       print()
       break loop
   }
}
print()
w = 0
}

こんな感じで出力されます。

画像1


この記事が気に入ったらサポートをしてみませんか?