見出し画像

プログラム入門(⑪関数)

次からは顧客管理を一旦離れて、プログラムの基礎に戻り「関数」について学んでいきましょう

まずはやってみる

ファイル ➔ 新しいテキストファイル ➔ test11.js

function sum(a, b){
    c = a + b
    return c
}

d = sum(1, 2)

console.log(d)

以下のように表示されます。

3

解説

function=関数とは
 ① 何かを入れて
 ② 何かをして
 ③ 何かを返す
ものです

今回の例では
① 1と2を入れ(カンマ区切り)
② 1と2を足して
③ 3を返す(returnを使います)
になります

基本的にこのように「入れる➔する➔返す」の形ですが
「呼ぶ」だけの関数もあります

function test(){
    console.log("こんにちわ")
}
test()

↑この testという関数を実行するには何も渡さず何も返ってきません
こんにちわと表示されるだけです

応用

前回の顧客リストの性別でファイルを分ける処理に関数を使ってみましょう

まずはやってみる test11.js を修正していきます。
できそうであれば正解を見ないでヒントを参考に作成してみましょう。
ヒント
関数名はsaveData
・関数に入れるものは リスト、性別、出力ファイル名
・関数は何も返さないでOKです

fs = require("fs")

function saveData(list, sex, file_name) {

    text = "名前,年齢,性別"
    text += "\n"

    for(d of list){
        if(d.sex == sex){
            text += d.name
            text += ","
            text += d.age
            text += ","
            text += d.sex
            text += "\n"
        }
    }

    fs.writeFileSync(file_name, text)
}

a = {}
a.name = "山田太郎",
a.age = 20,
a.sex = "男性"

b = {}
b.name = "鈴木花子",
b.age = 19,
b.sex = "女性"

c = {}
c.name = "磯村隆",
c.age = 21,
c.sex = "男性"

list = [a, b, c]

saveData(list, "男性", "test11_output_man.csv")
saveData(list, "女性", "test11_output_woman.csv")

できましたか?
正解は1つでは無いのでプログラムが違っても問題ありません。

例の解説

プログラムの始まりは↓からになります

a = {}
a.name = "山田太郎",
a.age = 20,
a.sex = "男性"

b = {}
b.name = "鈴木花子",
b.age = 19,
b.sex = "女性"

c = {}
c.name = "磯村隆",
c.age = 21,
c.sex = "男性"

list = [a, b, c]

↑ここまででリストが作成されます。

↓作成したリストと抽出したい性別と出力するファイル名を渡して

saveData(list, "男性", "test11_output_man.csv")

↓渡された変数を元に顧客リストを保存する処理を関数が行います

function saveData(list, sex, file_name) {

    text = "名前,年齢,性別"
    text += "\n"

    for(d of list){
        if(d.sex == sex){
            text += d.name
            text += ","
            text += d.age
            text += ","
            text += d.sex
            text += "\n"
        }
    }

    fs.writeFileSync(file_name, text)
}


応用問題

saveData関数を編集して 出力名を指定なしで自動で男性、女性のファイルを出力するように作成しなおしてみてください。

saveData(list, "男性")
saveData(list, "女性")

正解例

fs = require("fs")

function saveData(list, sex) {

    text = "名前,年齢,性別"
    text += "\n"

    for(d of list){
        if(d.sex == sex){
            text += d.name
            text += ","
            text += d.age
            text += ","
            text += d.sex
            text += "\n"
        }
    }

    file_name = "test11_output_" + sex +".csv"
    fs.writeFileSync(file_name, text)
}

a = {}
a.name = "山田太郎",
a.age = 20,
a.sex = "男性"

b = {}
b.name = "鈴木花子",
b.age = 19,
b.sex = "女性"

c = {}
c.name = "磯村隆",
c.age = 21,
c.sex = "男性"

list = [a, b, c]

saveData(list, "男性")
saveData(list, "女性")

できましたか?
正解は1つでは無いのでプログラムが違っても問題ありません。

さらに簡略できなか考える事が良いプログラムの本質になります

おまけ

コンソールにログを残す console.log これも関数になります
これらは最初から Node.js(javascript)に用意されている関数になります

  • Math.pow(2, 2)=累乗

  • Math.random()=ランダム値

  • Math.round(4.6)=四捨五入

などなどあります

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