- プログラミングのお題スレ Part16
312 :デフォルトの名無しさん[]:2019/12/14(土) 22:12:52.90 ID:8CJijD11 - >>309
この手の処理はPowerShellが得意だな。 function WaitingTime($now, $alarm) { $wait = [DateTime]$alarm - [DateTime]$now if ($wait -lt 0) {$wait += [TimeSpan]"12:00" + [TimeSpan]"12:00"} "現在時刻 = $now" "アラーム時刻 = $alarm" "待機時刻 = $wait" "" } WaitingTime 10:00 16:00 WaitingTime 22:00 4:00 WaitingTime 12:34:56 1:23:45 --- 実行結果 --- 現在時刻 = 10:00 アラーム時刻 = 16:00 待機時刻 = 06:00:00 現在時刻 = 22:00 アラーム時刻 = 4:00 待機時刻 = 06:00:00 現在時刻 = 12:34:56 アラーム時刻 = 1:23:45 待機時刻 = 12:48:49
| - C言語の設計ミスった危険な関数トップ10決めようぜ
57 :デフォルトの名無しさん[]:2019/12/14(土) 22:43:29.04 ID:8CJijD11 - gotoはラベルのスコープが広いから使いにくい。ループごとに別のラベル名を
付けないといけないし、ラベル名を別のループ用のものと書き間違えると 意図しない所へ飛んで行ってしまう。スパゲッティでバグの元。 ループにラベルを付ければ、スコープがそのループ内に限定され、そのループの 外にある別のループに同じラベル名を付けることができるから、書きやすく 読みやすい。例えば、こんな感じ。 for @outer (i = 1; i <= 3; i++) { for (j = 1; j <= 3; j++) { printf("%d, %d\n", i, j); if (i * j > 3) break @outer; } } for @outer (i = 1; i <= 5; i++) { for (j = 1; j <= 5; j++) { printf("%d, %d\n", i, j); if (i * j > 5) break @outer; } }
|
|