裏 RjpWiki

Julia ときどき R, Python によるコンピュータプログラム,コンピュータ・サイエンス,統計学

プログラムのお作法

2023年01月03日 | ブログラミング

以下のプログラムは Julia なのだけど,他の言語でも同じ。

function calc(s1, s2)
    # 消費支出 s1 円と飲食費 s2 円からエンゲル係数を計算する。
    return s2*100/s1
end

function engel()
    s1 = Base.prompt("消費支出? ")
    s2 = Base.prompt("飲食費? ")
    s1 = parse(Float64, s1)
    s2 = parse(Float64, s2)
    x1 = calc(s1, s2)
    if x1 >= 80
        println("エンゲル係数は ", round(Int, x1), 
                " です。飲食費を使いすぎです。")
    else
        println("エンゲル係数は ", round(Int, x1), " です。")
    end    
end

まあそれでもいいのですが,こなれたプログラムならこう書くべき。
つまり,同じプログラム片を何回も(2回でも)書かない。
似たプログラム片,変数名などが出てくると,前に出てきたのと同じなのか,少し違うのかが気にかかる。
同じ部分は繰り返さないようにするし,違うところはそれがはっきりわかるように書く。
ついでに,金額は整数と思うのでそのようにしておく。

function engel()
    s1 = Base.prompt("消費支出? ")
    s2 = Base.prompt("飲食費? ")
    s1 = parse(Int, s1)
    s2 = parse(Int, s2)
    x1 = calc(s1, s2)
    print("エンゲル係数は $(round(Int, x1)) です。")
    println(x1 >= 80 ? "飲食費を使いすぎです。" : "")   
end

なお,一般的に言えば,オンラインの実行時にコンソールからデータを入力するプログラムは書くべきではない。

 

更に蛇足

本来のエンゲル係数は,貧困度の測定にある。収入が少ないために,必須である食費支出の割合が多くなることを問題とする。飽食の時代では,有り余る収入に贅沢な食生活の割合を測定するものになっているのかなあ?

 

そんなこともあるので,ソースは明示しない。

 

コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

PVアクセスランキング にほんブログ村

PVアクセスランキング にほんブログ村