Juliaで学ぶプログラミング入門 制御／ループ

# For文
For文は、Julia言語におけるループ文の1つです。For文は、指定した範囲内の整数を順番に取り出し、それを使って処理を行うものです。

例えば、以下のようなコードでは、For文が使用されています。

```julia
for i in 1:10
    println(i)
end
# 1
# 2
# (3から８まで省略)
# 9
# 10
```

For文は何を行っているのでしょうか？
カウントではありません。データの取り出しです。
まずは以下を見てみましょう。

## Forとはデータの取り出し
以下のようなコードでは、配列の文字を1つずつ取り出すことができます。
```julia
# 配列を定義
words = ["apple", "banana", "cherry"]

# for文を使用して配列の文字を1つずつ取り出す
for word in words
    # 取り出したた文字を表示
    println(word)
end

```
このコードを実行すると、次のような出力が得られます。
```julia
apple
banana
cherry
```
このように、for文を使用することで、配列の中身を1つずつ取り出すことができます。

では、for i in 1:10 〜endでは何をおこなっていたのでしょうか？

1. データ列の生成　＞＞　1:10が1,2,3,4,5,6,7,8,9,10のデータの列を生成
1. 代入 　　　　　　＞＞ iに代入
1. 表示　　　　　　＞＞  println(i) 

先のコードでは、1から10までの整数を生成し、順番に取り出し、それをiという変数に代入します。その後、println(i)という処理を行います。

## Tupleの場合
タプルをfor文で取り出すには、次のようにします。
```julia
# タプルを定義
tuple = (1, 2, 3, 4, 5)

# for文を使用してタプルの値を1つずつ取り出す
for value in tuple
    # 取り出した値を表示
    println(value)
end

```
このコードを実行すると、次のような出力が得られます。
```julia
1
2
3
4
5

```
このように、for文を使用することで、タプルの値を1つずつ取り出すことができます。なお、タプルはイミュータブルなので、取り出した値を更新することはできません。

## Dictの場合
以上は順序のある配列型とTuple型の場合の説明でした。
ではDictの場合はどうなのでしょう。Dictには順序がありません。
なお順序がないDictの場合、読み出す順番は保証されなくなりますが呼び出すことができます。
Dict（辞書型）をfor文を使用して取り出す場合は以下になります。


例えば、以下のようなコードでは、Dictのキーと値を1つずつ取り出すことができます。

```julia
# Dictを定義
d = Dict("apple" => 100, "banana" => 200, "cherry" => 300)

# for文を使用してDictのキーと値を1つずつ取り出す
for (key, value) in d
    # 取り出したキーと値を表示
    println("$key: $value")
end

```
```julia
apple: 100
banana: 200
cherry: 300

```
このように、for文を使用することで、Dictのキーと値を1つずつ取り出すことができます。


## 二重データの場合
では、二重の形を取るデータの場合はどうなるのでしょうか？
Dictを内包した配列をfor文で取り出す場合を試してみましょう。

Dictを内包した配列をfor文で取り出すには、以下のようなコードを書くことができます。
```julia
# Dictを内包した配列を定義
dicts = [
    {"name": "Alice", "age": 20},
    {"name": "Bob", "age": 25},
    {"name": "Charlie", "age": 30},
]

# for文を使用してDictを内包した配列から1つずつDictを取り出す
for dict in dicts
    # 取り出したDictから名前と年齢を取り出す
    name = dict["name"]
    age = dict["age"]

    # 名前と年齢を表示
    println("$name is $age years old.")
end

```
このコードを実行すると、次のような出力が得られます。
```julia
Alice is 20 years old.
Bob is 25 years old.
Charlie is 30 years old.

```

このように、for文を使用することで、Dictを内包した配列から1つずつDictを取り出すことができます。また、Dictから特定のキーの値を取り出すこともできます。

二重以上の場合は外側のデータ構造に従い、一つ内側のデータを取り出す作業を行います。

## 参考図書
[１から始めるプログラミング](https://amzn.to/3HHR7Yv)
<a href="https://www.amazon.co.jp/1%E3%81%8B%E3%82%89%E5%A7%8B%E3%82%81%E3%82%8B-Julia%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0-%E9%80%B2%E8%97%A4-%E8%A3%95%E4%B9%8B/dp/433902905X?crid=2JGVUDQSK5GJQ&keywords=julia+%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0%E8%A8%80%E8%AA%9E&qid=1671346628&sprefix=julia+%2Caps%2C224&sr=8-1&linkCode=li3&tag=buzz06-22&linkId=8f7deba521f52f812d35ecdbe756cc10&language=ja_JP&ref_=as_li_ss_il" target="_blank"><img border="0" src="//ws-fe.amazon-adsystem.com/widgets/q?_encoding=UTF8&ASIN=433902905X&Format=_SL250_&ID=AsinImage&MarketPlace=JP&ServiceVersion=20070822&WS=1&tag=buzz06-22&language=ja_JP" ></a><img src="https://ir-jp.amazon-adsystem.com/e/ir?t=buzz06-22&language=ja_JP&l=li3&o=9&a=433902905X" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" />

[Juliaプログラミングクックブック](https://amzn.to/3PFfb0a)
<a href="https://www.amazon.co.jp/Julia%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0%E3%82%AF%E3%83%83%E3%82%AF%E3%83%96%E3%83%83%E3%82%AF-%E2%80%95%E8%A8%80%E8%AA%9E%E4%BB%95%E6%A7%98%E3%81%8B%E3%82%89%E3%83%87%E3%83%BC%E3%82%BF%E5%88%86%E6%9E%90%E3%80%81%E6%A9%9F%E6%A2%B0%E5%AD%A6%E7%BF%92%E3%80%81%E6%95%B0%E5%80%A4%E8%A8%88%E7%AE%97%E3%81%BE%E3%81%A7-Bogumi%C5%82-Kami%C5%84ski/dp/4873118891?crid=2JGVUDQSK5GJQ&keywords=julia+%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0%E8%A8%80%E8%AA%9E&qid=1671346628&sprefix=julia+%2Caps%2C224&sr=8-2&linkCode=li3&tag=buzz06-22&linkId=4e34b4b620932164412ec18acff914a8&language=ja_JP&ref_=as_li_ss_il" target="_blank"><img border="0" src="//ws-fe.amazon-adsystem.com/widgets/q?_encoding=UTF8&ASIN=4873118891&Format=_SL250_&ID=AsinImage&MarketPlace=JP&ServiceVersion=20070822&WS=1&tag=buzz06-22&language=ja_JP" ></a><img src="https://ir-jp.amazon-adsystem.com/e/ir?t=buzz06-22&language=ja_JP&l=li3&o=9&a=4873118891" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" />

[天才プログラマー タンメイが教える Julia超入門](https://amzn.to/3FJRpeW)
<a href="https://www.amazon.co.jp/%E5%A4%A9%E6%89%8D%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9E%E3%83%BC-%E3%82%BF%E3%83%B3%E3%83%A1%E3%82%A4%E3%81%8C%E6%95%99%E3%81%88%E3%82%8B-Julia%E8%B6%85%E5%85%A5%E9%96%80-Tanmay-Bakshi/dp/4807920219?crid=2JGVUDQSK5GJQ&keywords=julia+%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0%E8%A8%80%E8%AA%9E&qid=1671346628&sprefix=julia+%2Caps%2C224&sr=8-10&linkCode=li3&tag=buzz06-22&linkId=bf79aa67b5c5956c8fd26f9436401dc6&language=ja_JP&ref_=as_li_ss_il" target="_blank"><img border="0" src="//ws-fe.amazon-adsystem.com/widgets/q?_encoding=UTF8&ASIN=4807920219&Format=_SL250_&ID=AsinImage&MarketPlace=JP&ServiceVersion=20070822&WS=1&tag=buzz06-22&language=ja_JP" ></a><img src="https://ir-jp.amazon-adsystem.com/e/ir?t=buzz06-22&language=ja_JP&l=li3&o=9&a=4807920219" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" />