Open4

趣味

main = do
-- コメントだよ。
  {-
なんか
  ここに
  命令を
  いっぱい
  かくよ。
-}
  • 行頭のスペースによるインデントでプログラムの「ひとかたまり」を示す。
main = do
  putStrLn "getLine:"     -- 標準出力に文字列を出力
  l <- getLine            -- 一行の標準入力を定数`l`に代入
  putStrLn l              -- 文字列の入った定数`l`の内容を標準出力に出力

  putStrLn "getContents:"  -- 標準出力に文字列を出力
  c <- getContents        -- Ctrl+Dが押されるまでの複数行の標準入力を定数`c`に代入
  putStrLn c              -- 文字列の入った定数`c`の内容を標準出力に出力

main = putStrLn "1\n2\n3" --\nは改行コードだよ。

いま業務でやってる両替操作コードに起こしてみた。


import Foundation
import SwiftUI

/*
 これは両替金の補充を行うコード。
 
 - 両替金の引き出しにある金額は常に一定。
 - 小口現金の任意の金種のお札・硬貨が足りなくなったら、両替金の引き出しからその分もらう。その代わりに小口現金の金額を減らし、その分を両替金の引き出しのmakeGoodaBeficitフォルダに入れている。
 - 両替用に保管しているお金が少なくなったら、金庫からその分補填する。
 - 補填したら、補填額分makeGoodaBeficitは減少し、小口現金に戻る。一方で両替金の各金種の枚数は増加する。
 */

// 両替金の5000円, 1000円, 500円の各有高
struct CurrencyExchange{
    var fiveThousandYen: Int
    var thousandYen: Int
    var fivehundredYen: Int
}
// 金庫の5000円, 1000円, 500円の各有高
struct SafeMoney {
    var fiveThousandYen: Int
    var thousandYen: Int
    var fivehundredYen: Int
}

// 現在の両替金の有高を入力する
var currencyExchange: [CurrencyExchange] = [CurrencyExchange(fiveThousandYen: 60, thousandYen: 90, fivehundredYen: 20)]
// 現在の金庫の有高を入力する
var safeMoney: [SafeMoney] = [SafeMoney(fiveThousandYen: 640, thousandYen: 500, fivehundredYen: 150)]

// 現在の小口現金の額
var pettyCash: Int = 1500000
// 現在の両替金のところにある小口現金の額
var makeGoodaBeficit: Int = 225000
// 不足枚数を代入する変数
var nowBalanceDue_fiveThousandYen: Int
// 小口現金へ戻る金額を代入する変数
var returnCash: Int

print("金庫には\(safeMoney[0].fiveThousandYen)枚5000円があります")
print("現在両替可能な5000円は\(currencyExchange[0].fiveThousandYen)枚あります")
print("小口現金は\(pettyCash)円あります")
print("現在小口現金から\(makeGoodaBeficit)円両替用の引き出しにお金が移動しています。")


// 両替すべき枚数の判定を行います。
if currencyExchange[0].fiveThousandYen < 100 {

    nowBalanceDue_fiveThousandYen = 100 - currencyExchange[0].fiveThousandYen
    print("金庫から5000円を\(nowBalanceDue_fiveThousandYen)枚補充します")

    safeMoney[0].fiveThousandYen = safeMoney[0].fiveThousandYen - nowBalanceDue_fiveThousandYen
    print("金庫の5000円は\(safeMoney[0].fiveThousandYen)枚になりました")

    returnCash = nowBalanceDue_fiveThousandYen * 5000
    makeGoodaBeficit = makeGoodaBeficit - returnCash
    pettyCash = pettyCash + returnCash
    print("makeGoodaBeficitから\(makeGoodaBeficit)分小口現金に移動しました。")
    print("小口現金は現在\(pettyCash)円です。")

    currencyExchange[0].fiveThousandYen = currencyExchange[0].fiveThousandYen  + nowBalanceDue_fiveThousandYen
    print("現在両替可能な5000円は\(currencyExchange[0].fiveThousandYen)枚あります.")
} else {
    print("両替金を補充する必要はありません")
}

なんか、変数の数多くてごちゃごちゃしてる感割合あります。。ありますね。

// 1行目に1を, 2行目に2を, 3行目に3を表示.
fn main() {
  println!("1\n2\n3");
}

// 27182 を 818 で割った余り.
fn main(){
	println!("{}",27182%818);
}

// 314×(159+265)−358
fn main() {
  println!("{}", 314*(159+265)-358);
}
// `;`を忘れるとパフォーマンスが落ちるので注意.

// 1 日は何秒かを計算する.
fn main() {
  println!("{}", 24*60*60);
}

// mainはエントリーポイント. fnは関数.
fn main() {
  // 変数にString型のオブジェクトのnew関数を呼び出した結果で束縛している。
  let mut guess = String::new();
  // std::io;で標準ライブラリstdの中に存在するioライブラリを読み込む。
  // use std::io; で読み込んだioライブラリのstdin関数を呼び出す
  // io::stdin().read_line(&mut guess)で返ってきた std::io::Stdin に対してread_lineメソッドを呼び出せる
  // &mut guess は変数として参照渡し
  std::io::stdin().read_line(&mut guess).unwrap();
  // io::stdin().read_line(&mut guess) を実行するとResult型が帰ってくる
  let n: i64 = guess.trim().parse().unwrap();
  println!("{}", n*2);
}


// fn main() {
//   let ref mut n = String::new();
//   std::io::stdin().read_line(n);
//   let n: u8 = n.trim().parse().unwrap();
//   print!("{}", n*2);
// }
ログインするとコメントできます