Head First はじめてのプログラミング
頭とからだで覚えるPythonプログラミング入門
- Eric Freeman 著、嶋田 健志 監訳、木下 哲也 訳
- 2019年04月 発行
- 636ページ
- ISBN978-4-87311-874-1
- フォーマット Print PDF
- 原書: Head First Learn to Code
3,300円
書籍のご注文はオーム社サイトへ
内容
脳の働きに注目し、脳を活性化させる学習効果の高い独自のスタイルで人気の高いHead Firstシリーズにプログラミング初心者向けバージョンが登場。Pythonを使ったプログラミングの基本について、イラストや写真を多用して直感的な理解を促します。やさしい切り口ながらも、データ型、データ構造、抽象化、再帰、モジュールなど、プログラミングの基本を段階的に学び、後半では複雑で大規模なアプリケーションの作成にも取り組みます。認知科学と教育心理学に基づいたアプローチで、プログラミングのテクニックだけではなく、論理的思考やプログラミング的な考え方を、楽しみながら身に付けられるように工夫されています。
無料 お試し版
関連書籍
目次
はじめに 1章 コンピュータ的に考える:始めよう 分解する コーディングの手順 同じ言語で話している? プログラミング言語の世界 Pythonを使ったコードの記述と実行 Pythonのざっくりした歴史 Pythonを試す 作業を保存する おめでとう! 最初のPythonプログラムが書けました! フレーズ・オ・マチック コンピュータにコードを読ませる 2章 単純な値、変数、型:値を知る 犬年齢計算機のコーディング 擬似コードからPythonのコードに変換する 手順1:入力してもらう input 関数の動作 ユーザの入力を変数に代入する 手順2:さらに入力してもらう そろそろコードを実行してみよう コードの入力 変数をさらに詳しく学ぶ 式の追加 変数が「変」数と呼ばれる理由 演算子の優先順位をよく理解する 演算子の優先順位を使った計算 寄り道をする! 手順3:犬の年齢を計算する ヒューストン、問題が発生した! 誤りは(人)コードの常 デバッグをもう少しだけ Pythonの型とは? コードの修正 ヒューストン、発射した! 手順4:ユーザフレンドリーな出力 3章 ブール型、判定、ループ:判定コード ゲームをしない? まずは骨組みの設計 コンピュータの手 乱数の使い方 ブール型って? 判定する 判定、そしてまた判定 じゃんけんに戻る ユーザの手を取得する ユーザの手を調べる あいこを判定するコードを追加する 誰が勝った? ゲームロジックの実装 ブール演算子の詳細 説明を入れる コードにコメントを追加する ゲームを完成させる! ユーザの手が無効かどうかをどのように判断する? ユーザに尋ね続ける方法 何度も行う while ループの動作 whileを使って有効な手を選ぶまでユーザに尋ねる方法 初めてのゲームのコードが書けました。おめでとう! 4章 リストと反復:構造を用意する バブルザらス社を助けられる? Pythonで複数の値を表現する方法 リストの動作 ところで、そのリストの大きさって? リストの末尾の要素にアクセスする Pythonではずっと簡単 負のインデックスを使う 一方、バブルザらス社では リストを反復処理する 出力の問題を修正する 出力の問題を実際に修正する for ループ、それはリストの反復処理に最適な方法 数値の範囲に対するforループの動作 範囲をもっと使う すべてをまとめる ゼロからリストを作成する リストをさらに使う 最終レポートの試運転 最高スコアの溶液は? 最も費用対効果の高い溶液はどれ? 5章 関数と抽象化:関数にする このコードのどこがいけないの? コードブロックを関数に変換する 関数が作成できました。さてどう使う? 実際にはどのように機能しているの? 関数は結果を返すこともできる 戻り値のある関数を呼び出す 少しだけリファクタリングしてみる コードの実行 アバターコードの抽象化方法 get_attribute 関数の本体を書く get_attribute を呼び出す 変数についてもう少しお話しします 変数スコープを理解する 変数が関数に渡されるとき drink_me関数を呼び出す 関数でグローバル変数を使うということ パラメータを深く理解する:デフォルト値とキーワード デフォルトパラメータ値の使い方 必ず必須パラメータを最初に指定する! キーワード引数を使う キーワード引数とデフォルト値について おまけの章 ソートと入れ子の反復:データを整理する バブルソートを理解する 走査1から始める バブルソートの擬似コード Pythonでバブルソートを実装する 溶液番号を割り出す 6章 テキスト、文字列、ヒューリスティック:すべてを組み合わせる データサイエンスにようこそ 読みやすさはどのように計算する? 実行計画 擬似コードを書く 分析するテキストが必要 関数を用意する 優先事項:テキスト内の単語の総数が必要 文の総数を求める 関数count_sentencesを書く 音節の数を求める。つまり、ヒューリスティックを好きになる ヒューリスティックの作成 ヒューリスティックを書く 母音をカウントする 連続する母音を無視する 連続する母音を無視するコードを書く 末尾のe、y、句読記号を取り除く スライス(部分文字列)を利用する ヒューリスティックコードを完成させる 読みやすさ公式の実装 さらに進める 7章 モジュール、メソッド、クラス、オブジェクト:モジュール化する 簡単なモジュールの復習 グローバル変数__name__ オフィスにおける会話の続き analyze.py をモジュールとして使う analyze.py にdocstringを追加する 他のPythonモジュールを調べる 待って、誰か「タートル」って言った?! 自分だけのタートルを作成する タートル研究所 2つ目のタートルを追加する ところで、タートルって? オブジェクトって何者? わかった。じゃあ、クラスって? オブジェクトとクラスの使い方 メソッドと属性 クラスとオブジェクトはどこにでもある タートルレースの準備をする ゲームを設計する コーディングを始めよう ゲームの準備をする セットアップコードを書く 落ち着いて! レースを開始する 8章 再帰と辞書:反復とインデックスを超えて 異なる計算方法 別の方法を考える 2つの場合のコードを書く さらに練習しよう 再帰を使って回文を探し出す 再帰回文検出器を書く アンチソーシャルネットワーク 辞書とは 辞書を作成する キーと値は文字列でなくても大丈夫 もちろん、キーは削除できる まず存在するかどうかを調べる 辞書の反復処理はどうなる? アンチソーシャルネットワークで辞書を活用する 属性を追加するにはどうすればいい? アンチソーシャルネットワークの目玉機能 最も非社交的なユーザを探す 関数呼び出しの結果を記憶しておける? 辞書を使ってフィボナッチ結果を記憶する 「メモ化」と呼ばれます koch関数を詳しく調べる コッホフラクタルを本格的に調べる 9章 ファイルの保存と取得:永続性 クレイジーリブを始める準備はいい? クレイジーリブの動作 手順1:ファイルから文章のテキストを読み込む ファイルパスの使い方 絶対パス 終わったら後片付けを忘れずに! ファイルをコードに読み込む もう勘弁して クレイジーリブゲームを完成させる! 最終行をどのように判断するの? クレイジーリブのテンプレートを読み込む テンプレートテキストを処理する 新たな文字列メソッドを使ってバグを修正する 実際にバグを修正する 本当に問題があるコードもある 例外処理 明示的に例外を処理する 例外を処理するようにクレイジーリブを更新する 最後の手順:クレイジーリブを保存する 残りのコードを更新する 10章 Web API の利用:もっと外に目を向ける Web APIを使って範囲を広げる Web API の仕組み すべてのWeb APIにはWebアドレスがある 簡単なアップグレードをする アップグレードする あとは優れたWeb APIが必要なだけ API を詳しく調べる Web API はJSONを使ってデータを返す リクエストモジュールをもう一度詳しく 全体をまとめる:Open Notifyにリクエストする JSONの使い方 ISSデータにJSONモジュールを使う グラフィックスを加える Screenオブジェクトを使う タートルを追加してISSを描画 タートルは宇宙ステーションのようにも見える ISSを忘れる−どこにいるの? ISSのコードを仕上げる 11章 ウィジェット、イベント、創発的な振る舞い:インタラクティブにする 人工生命の不思議な世界へようこそ ライフゲームを詳しく調べる 作成するもの 設計は適切ですか? データモデルの作成 グリッドを表す ライフゲームの世代を計算する セルの運命を計算する モデルのコードを完成させる ビューの作成 最初のウィジェットを作成する 残りのウィジェットを追加する レイアウトを修正する グリッドレイアウトにウィジェットを配置する グリッドレイアウトをコードに変換する コントローラの作成 update 関数の追加 新しい計算方式に取り組む 開始/ 一時停止ボタンの動作 別の種類のイベント 一定間隔で何度も呼び出す方法:afterメソッド セルを直接入力する、そして編集する grid_viewのハンドラを書く パターンを追加する オプションメニューのハンドラを書く パターンローダを書く ライフゲームシミュレータをさらに進化させる! 12章 オブジェクト指向プログラミング:オブジェクト村への旅 別の方法で分割する 要するにオブジェクト指向プログラミングって? クラスを設計する 最初のクラスを書く コンストラクタの動作 barkメソッドを書く メソッドの動作 継承する ServiceDog クラスの実装 サブクラスとは ServiceDog はDog である(IS-A) IS-A関係を調べる 振る舞いのオーバーライドと拡張 専門用語の街へようこそ オブジェクトは別のオブジェクトを含む(HAS-A) 犬用ホテルの設計 犬用ホテルの実装 ホテルでのアクティビティを追加する 可能なことは何でもできる(ポリモーフィズム) 他の犬に歩き方を教える 継承の威力(と役割) 付録 未収録事項:(取り上げなかった)上位10 個のトピック 1. リスト内包表記 2. 日付と時刻 3. 正規表現 4. その他のデータ型:タプル 5. その他のデータ型:集合 6. サーバサイドプログラミング 7. 遅延評価 8. デコレータ 9. 高階関数と第一級関数 10. 多数のライブラリ 索引