【技術書】独学プログラマー -第1部(1/2)-

 
はじめに
---
他の言語をある程度知っている上で、Pythonの覚えておきたいことを書いています。

目次
---
1. 第1章 イントロダクション
2. 第2章 さあ、はじめよう！
3. 第3章 プログラミング入門
4. 第4章 関数

第1章 イントロダクション
---
- 作者が、ソフトウェアエンジニアになるために学ばなければならなかったことを全て記している。
- プログラミング入門書を読み終えたあと、「次はどうすればいいのか」といった疑問に答えている。

- 本書の構成

     第一部：プログラミング(Python)入門
     第二部：オブジェクト指向プログラミング入門
     第三部：プログラミングツール入門
     第四部：コンピュータサイエンス入門（特に、データ構造とアルゴリズム）
     第五部：エンジニアとして仕事を得ること。成長すること。働くときのコツ等

- 情報系の学生は一般に、たっぷり時間をかけて理論を学ぶが、プログラミングの仕方を知らないまま卒業する。しかし、**先にプログラミングを学び、それがどんな理論で動いているのか知りたいと強く思ってから理論を学んだほうが、効率的である。**
- 独学のプログラマーの強みは、自ら「学びたい」という強い欲求。
- 継続が大切。テクニックの１つとして、友人や家族にお金を渡しておいて、ある一定期間のうちに目標を達成したら自分に戻してもらい、失敗したら自分の嫌いな組織に寄付するよう依頼しておく、というものが有効。

第2章 さあ、はじめよう!
---
- Pythonは、オランダのプログラマーが開発し、イギリスのコメディアングループ「モンティ・パイソン」から名前を採った。
- Pythonには、「IDLE(Interactive DeveLompemnt Environment)」と呼ばれる開発環境が用意されている。macOSなら、Spotlight検索でIDLE.appと検索すると、立ち上がる。
- 対話シェルでは、ちょっとしたお試しコードを少し書いては動かす、といった使い方ができるのが利点。
- Pythonでプログラムを書くことは、エディタで入力したテキストをファイルに保存し、対話シェルで実行することである。IDLEの実行中に、メニューバーの「New File」をクリックすると白いテキストエディタが現れる。ここにコードを書いて保存し、「Run Module」でそのプログラムがIDLE上の対話シェルで実行される。

```python
# 普通に入力した場合
>>> print("Hello, World!")
>> 'Hello, World!'


#保存したプログラムを実行した場合
=============== RESTART: /Users/any_path/hello_world.py ===============
>> 'Hello, World! '
```

第3章 プログラミング入門
---
- コメントは、「#」記号で始める。誰かがコードを読んだ時、そこで何をしているのか理解しやすいようなコメントを記す。コードを読めば分かる場合など、必要以上にはいらない。
- Pythonのプログラムは行単位で解釈されるため、ペースト機能などで複数行を一気貼り付けると期待通りにならない。コードが長いときは、以下のように書く。


```python

# 三重クォート（"""）で囲んだり、() {} [] で、改行して複数行に跨って書ける
print("""こんにちは。これは、とても
　　　 長いコードです。複数行にわたって、
　　　 書かれています。""")
```

- Pythonでは、スペースでコードブロックの開始と終了を意味する。インデントには、4つのスペースを用いている。
- データや性質でグループ分けしたものをデータ型と呼び、 2 や "Hello, World!"などの値はオブジェクトと呼ばれる
- Pythonのデータ型については、次のリンクが参考になる。(https://pycamp.pycon.jp/textbook/3_types.html)
- 変数定義は、非常にシンプル。代入演算子を使って値を割り当てたとき、変数は作られる。Pythonのキーワードは変数名に使えないので注意。(https://docs.python.org/ja/3/reference/lexical_analysis.html#keywords)

```python

b = 100
b
>> 100
```

- エラーには、「構文エラー（Syntax Error）と例外（Exception）の２種類がある。
- 論理演算子は、論理積なら「True and False」のように、記号のみならず英語風にも書ける。
- 条件分（if文）は、if、elif、そしてelseのキーワードを用いて書く。条件式の後の「：」を忘れずに書くこと。

```python

# Pythonでif文
x = 15
if   x % 2 == 0:
    print("数値は偶数です。")
elif x % 2 != 0:
    print("数値は奇数です。")
else:
     ...
```

- 2種類の文「単純文（１行のコードで表現）」と「複合文」がある。複合文は、1つ以上の「節」で構成される。forなどのキーワードを含む「ヘッダー」部分と、それに続く「スイート」部分からなる。

```python

# 3つの「節(ヘッダー+スイート)」からなる「複合文」
x = 100
if x == 10:      # ヘッダー行の最後は、セミコロンで終わる
    print("10")  # 1つのスイートは1行のコード
elif x == 20:
    print("20")
else
    print("分かりません")
```

第4章 関数
---
- 関数は、1つのことだけをすべき。それを徹底した方がよい。
- 関数とは、入力を受け取り、命令を実行し、出力を返す「複合文」のこと。
- <関数名>(<引数>) で呼び出す（f(x, y)のように）

```python
# def [関数名]([引数]):
#     [〜関数定義〜]

def f(x, y):
    return x * y
```

- Pythonでは、組み込み関数という最初から用意された関数があり、includeなしですぐに使用できる。例えば、print関数や、len関数など。（使いながら覚えよう）
- input関数 は、シェル内でプログラム使用者に返事（レスポンス）を要求する。
- 例外処理 tryとexcept

```python
a = input("type a number:")
b = input("type another:")
a = int(a)
b = int(b) # 0が分母にある可能性
try:
    print(a / b)
except ZeroDivisionError: # 起こりうるエラー
    print("b cannot be zero.")
```

このように書いておけば、プログラムは中断しない。

- 関数宣言の次の行に、引数や返り値のデータ型を知らせる"docstring（ドキュメンテーション文字列）"を置くと、それを読む人の手助けになる。

```python

def add(x, y):
    """
    Returns x + y.
    :param x: int.
    :param y: int.
    :return : int sum of x and y.
    """
    return x + y #本体
```


感想
---
構文は、暗記しようとせずとも、コードをたくさん書けば身に付く。
[(2)](https://qiita.com/giwasuke/items/1789c82dd65d3cc48958)はこちら。(2020/7/22:追記)