いろいろな言語のfor文
NW業界は、いろいろな言語を扱うことが多いです。
サラリーマンなら、VBAやbat(バッチ)だけで日々の業務を自動化することができます。
しかし、NWだとTera TermやLinuxと携わることも多いので、シェルスクリプトやPython、JavaScriptなど様々な言語を目にすることがあります。
ご存じの通り、それぞれの言語にはそれぞれの書き方があります。
毎日触れるような言語だと、それはそれはわかるのですが、
「あれ...batだとfor文はどうやって書くんだっけ?」の時に、さっと見れるnoteがあれば、開発の手助けになると思いました。
※本当にfor文しか書かれておりません
今回は、そのようなマルチエンジニアのために各業界のfor文をまとめてみました。
C言語
/* 指定回数繰り返し */
for (int i = 0; i < 10; i++){
printf("%d回目の処理です¥n", i);
}
基本形なので、特に言うことはないですね。
\nは改行コードになります。
Python 3
#指定回数繰り返し
for i in range(10):
print(i, "回目の処理です\n")
range(5, 10) にした場合、[5, 6, 7, 8, 9]となります。
range(0, 10, 2) にした場合、[0, 2, 4, 6, 8]となります。
#配列の読み込み
arr = ['a', 'b', 'c', 'd', 'e']
for str in arr:
print("アルファベット:", str, "\n")
ファイル読み込みの場合、「with open(path) as line:」の方がが便利です。
pathは、読み込むファイル名(.txtなど)を記述してください。
VBA
'指定回数繰り返し
For i = 1 To 10
msgbox i + "回目の処理です" + vbCrLf
Next i
'セルの読み込み
Dim i As Integer
For Each str In Range("A1:A10")
msgbox i + "番目のセル:" + str + vbCrLf
i = i + 1
Next str
Excelのセルは、1から始まるのでそこが注意ですね。
vbCrLfは改行コードになります。
bat(バッチ)
:指定回数繰り返し
for /l %%i in (0,1,10) do (
echo %%i回目の処理です
)
開始値を0、増分を1、終了値を10としています。
:ファイル読み込み
setlocal enabledelayedexpansion
set i=1
for /f %%s in (path) do (
echo !i!行目:%%s
set /a i+=1
)
endlocal
pathは、読み込むファイル名(.txtなど)を記述してください。
batは、forの中で値を変化させる場合、setlocal enabledelayedexpansionとendlocalで挟む必要があります。
bash(シェルスクリプト)
#指定回数繰り返し
for ((i=0; i<10; i++)); do echo $i回目の処理です; done
ワンライナーで書けるのは、bashの魅力の一つでもあります。
#指定回数繰り返し
for i in {1..10} ; do
echo ${i}回目の処理です
done
範囲オブジェクト{1..10}を読み込ませることもできます。
${i}は、省略して$iでも構いません。
#配列の読み込み
arr=("a" "b" "c")
i=0
for str in ${arr[@]} ; do
echo ${i}番目の要素:${str}
i=$((i + 1))
done
@は配列の中身すべてを表します。
#コマンド結果の読み込み
for log_name in `ls -1 ./` ;do
echo ${log_name}
done
`ls -1 ./`は、コマンドの結果を配列としてみなし、ループさせています。
ファイルの読み込みは、`cat path`でいけそうですね。
pathは、読み込むファイル名(.txtなど)を記述してください。
Tera Term
;指定回数繰り返し
for i 1 10
sendln 'show cpu'
pause 5
next
5秒ごとにcpu使用率を確認しています。
JavaScript
//指定回数繰り返し
for (var i = 0; i < 10; i++){
console.log (i + "回目の処理です\n");
}
とてもCに近い書き方になっています。
Ruby
#指定回数繰り返し
for i in 1..10 do
print(i, "回目の処理です\n")
end
範囲オブジェクト1..10を読み込ませることもできます。
オブジェクト指向なので、繰り返しもオブジェクトとセットの考えですね。
#配列の読み込み
arr = [0, 1, 2, 3]
arr.each do |i|
puts i, "回目の処理です\n"
end
ブロックパラメーター(=|~|で囲まれた中にある変数)へ、
配列の各要素が順に渡されます。
putsも出力の一種になります。
Go(golang)
//指定回数繰り返し
for i := 0; i < 10; i++ {
fmt.Println("%d回目の処理\n", i)
}
とてもCに近い書き方になっています。
:=(コロンイコール)で初期化するところが独特ですね。
//配列の読み込み
arr := [5]string{"a", "b", "c", "d", "e"}
for i, s := range arr {
fmt.Printf("%d番目の要素:%s\n", i, s)
}
インデックス(i)を無効に場合は、_, s とアンダーバーで打ち消します。
多重代入の概念を持つため、2変数を初期化可能です。
プログラムをもっと知りたい、いろんなツールをお借りしたいと思いましたら、フォローしてくださると幸いです。
サポートしてくださるお気持ちだけで嬉しいです。