【コンピューター】 プログラミング言語 for文 まとめ

ICT

 昨年(2020年)から小学校でプログラミング教育が必修になった。
 拙者は小学校どころか中学、高校でも授業でコンピューターを使ったことがない。良いのか悪いのか分からないが、隔世の感。

 将来みんな使えるようになるのだろうか。
 それとも英語教育のようになるのだろうか。

 案外、日本語プログラミング言語が主流に……まあ、ないか。


 当ブログではこれまで地図に位置をプロットするのにLeaflet(言語はJavaScript)、R言語、Pythonを使っているが、
 プロット ⇒ いっぱいプロット
で、

  •  繰り返し(ループ)
  •  外部ファイル(CSVファイル)の読み込み

といった操作を行っているので、今回は繰り返しのfor文について整理しておいた。
  ※ 繰り返しは、for文の他、while文もあるが、今後使うことがあったら付け加える

 例として次のような数が入ったリスト(一次元配列)を扱ってみる。

 sample [106,82,290,100,0,14]

 要素は、
 sample[0]=106、sample[1]=82、…、sample[5]=14
で、要素数は6。

Java

 拙者のプログラミング言語の学習の土台は一応Java。今はなき(ホームページの)アプレットを作るべく『やさしいJava』という本を買って、よく分からないまま見よう見まねで使っていた。Cは『はじめてのC』という本を買ったものの早々頓挫。他にもかじっただけで頓挫したものがいくつかある。
 コンパイルするとエラーが次々出て、そのメッセージがよく分からない英語だから、ますます困るというパターン。第一の関門。

 Javaは久しく使っていないが……。

int sample[] = {106,82,290,100,0,14};

で配列の宣言。
  ※ 数(整数)の場合、int。
 for文は、

int ttl=0; 
for (int i=0;i < sample.length;i++){
        ttl = ttl + sample[i];
 }

 ttlは任意の変数。予め適当に作っておく。
 sample.lengthがsample []の要素数で6。i < 6と同じ。
 i++でiが1ずつ増加してi=5まで繰り返して終了。 

JavaScript

 JavaScriptはJavaとは別言語。コンパイル不要のスクリプト言語。
 HTMLの<script> </script>タグの中に記述して使う。

 変数、配列の宣言はintではなくvar。

var sample = [106,82,290,100,0,14];

 for文はJavaと同じ。

var ttl = 0;
for (var i=0;i < sample.length;i++){
       ttl += sample[i];
}

 ttl += sample[i]は、
 ttl = ttl + sample[i]
と同じ。

 LeafletはJavaScript。
 前回のプロットの繰り返し部分(抜粋)は、

var point = [
['大雪山' , 43.661864 , 142.833295],
['十勝岳' , 43.42 , 142.69],
・
・
・
['諏訪之瀬島' , 29.64 , 129.71],
];
for(var i=0;i < point.length;i++){
L.circle([point[i][1] , point[i][2]] , 4000 ,{
color:'green'
})
.addTo(map)
・
・
・
L.circle([point[i][1] , point[i][2]] , 1000 ,{
color:'red'
})
.addTo(map)
.bindPopup(point[i][0]);
}

 配列 []の中に配列 []がある二次元配列。

R言語

 プログラミング言語というかプログラミングできる統計ソフト。

sample <- c(106,82,290,100,0,14)

 R言語の場合、0ではなく1から始まるので、
 sample[1]=106、sample[2]=82、…、sample[6]=14。

 合計はsum(sample)で瞬時に592と出るが、for文だと

ttl <- 0
for(i in 1:length(sample))
{ttl <- ttl + sample[i]}
ttl

 length(sample)が要素数で6。i in 1:6と同じ。

 1:6は配列で、
 [1, 2, 3, 4, 5, 6]。

Python

 PythonはJavaScript同様、スクリプト言語。近頃、専らJupyterで使用。

sample = [106,82,290,100,0,14]

 合計はR言語同様、sum(sample)で592と出るが、for文だと

ttl=0
for i in range(len(sample)):
    ttl += sample[i]
ttl

 なお、

for i in range(len(sample)):
ttl += sample[i]

だとエラー。
 IndentationError: expected an indented block
 Pythonのfor文は:だけで{}がないので、繰り返し処理の部分(2行目以下)は行頭を字下げ(インデント)する必要がある。

 len(sample)が要素数で6。for i in range(6):と同じ。

for i in len(sample):

だとエラー。
 TypeError: ‘int’ object is not iterable
 イテラブル?。英和辞典に載っていない。
  ※ iterate(繰り返す)ならば載っている。
 こういったエラーが連発すると嫌になってくるが、
 for i in 6:
といった使い方は駄目というメッセージなので、あまり難しく考えず、range()を使う。 

 range(6)は配列で、
 Python 2だと[0, 1, 2, 3, 4, 5]。
 Python 3だとrange(0,6)。list(range(6))で[0, 1, 2, 3, 4, 5]。

 Python 3でlist(range(0, 12 , 3))だと[0, 3, 6, 9]。12は含まれない。

スポンサーリンク
ふシゼン
タイトルとURLをコピーしました