[本][改訂新版] これからはじめるプログラミング基礎の基礎
いきなりソースを読み書きすることへの不安
各言語入門書を読めばそりゃ丁寧な解説で変数やら配列から始まり関数の説明があり、何か作ってみようぜーって流れになって…、と今まで少しでもプログラムに触れてたり、プログラマ的な考え方が出来る人ならそれで大丈夫だと思います。
が、しかし、本当に今までプログラミングとかまったく触ってこなかった人にいきなりあの英数字の羅列を見せるのは無理だろう、途中まではいい、だが「あの壁」の向こう側へはいきなりいけないだろう、という勝手な思い込み(おせっかい)で、入門の入門の入門くらいの本はないんかなと思い、探しだした至高の1冊。それがこちら。
正直、私がもっと早くにこの本に出会いたかった
以前「PHPを勉強する事についてデザイナが思う事。」という記事を書いたのですが、この段階の前にこの本を読んでいたら無駄に回り道がなかったんじゃないかと思います。
上記記事内でも書いているんですが、作りたいものがないまま勉強を進めてしまったばかりに「で、その次は?」という壁が出てくる。やっぱりこれが作りたいから作り方を調べる=勉強するっていう段取りでいかんと、なかなかうまくいかないんですよね。その壁の事を私は「あの壁」と呼んでいるのですが、私のように作りたいものが決まってないまま「勉強する」ってことだけに執着していると本当に「あの壁」を超えるのは大変でした。
この本の魅力
実はこの本は改訂版なのですが、それでも発売日は2008年なんですね。古くて内容的に心配という方もいらっしゃるかもしれないですが、大丈夫です。なぜならソースコードってものはほとんど書かれていないから。本当に「入門の入門の入門」って感じの内容なので、ほとんどの部分はプログラミングをするにあたっての基本的な考え方の本なんです。だから基本的に古くなるものがない。
具体的な内容は下記に目次を掲載しますが、言語に沿った解説本ではないです。特定の言語に対しての知識を深めたいんや~って人向けの本ではないです。ほんとにこれからプログラミングを1から始めたい人、1度挑戦したけれども挫折してしまった人、「あの壁」が越えられない人…そんな人に読んでほしい1冊です。
プログラミングを挫折した人へ
特に1度挑戦したけれども挫折してしまった人には「Chapter 3 日本語でプログラムを書こう」をおすすめします。自分もそうだったんですけれども、挫折してしまったのは多分この章に書かれている考え方が出来てなかったから。
さっきの記事内にも書いたのですが、難しく考え過ぎず、日本語で処理の道筋を考えるということがめっちゃくちゃ詳しく書かれています。その考え方さえ出来れば、その日本語で考えた筋道をプログラミングの言語に翻訳してあげるだけっていうのがよくわかる章です。
その後は自分が作りたいものを決めて、書かれている通り、日本語でどういう順序で命令を出したらいいかを考える、あとはそれを翻訳するだけ。ほんとにやってみるとなんで悩んでいたんだろうって思います。
目次
Chapter 1 コンピュータと仲良くなろう
- コンピュータのある暮らし
- 携帯できるコンピュータ
- 姿を隠したコンピュータ
- 街角にあるコンピュータ
- 家庭の中のコンピュータ
- コンピュータと仲良くなろう
- プログラミングって何のこと?
- そもそも,コンピュータとは?
- いろいろなコンピュータ
- コンピュータとプログラム
- プログラムには何が書かれているのか?
- プログラムを書くコツ
- 心の準備
- 新しいことに興味はありますか?
- 細かなことは得意ですか?
- “もしも”のときの備えがありますか?
- 負けず嫌いですか?
- 「こだわり」はありますか?
Chapter 2 コンピュータが動く仕組み
- コンピュータ徹底解剖
- ハードウェアとソフトウェア
- パソコンを構成する装置たち
- パソコン本体を構成する部品たち
- パソコンが動く仕組み
- コンピュータの仕事ぶり
- コンピュータにできること
- コンピュータの得意分野と苦手分野
- コンピュータが数を数える方法
- コンピュータが扱う大きさの単位
- コンピュータも計算を間違える
- プログラム徹底解剖
- いろいろなプログラム
- パソコンはプログラムを読めない?
- プログラミング言語の生い立ち
- プログラミング言語と機械語の溝を埋めるプログラム
- プログラマーへの道
Chapter 3 日本語でプログラムを書こう
- プログラムができるまで
- プログラミングの7つのステップ
- テーマを決める
- あらすじを作る
- シナリオを書く
- プログラミング言語に翻訳する
- 動かしてみる
- 確認する
- バージョンアップ
- あらすじとシナリオを書くためのヒント
- データの変化を考える
- 処理の流れを考える
- 掃除は頼んだよ
- お掃除ロボットがやってきた
- マムの仕事内容を決める
- 掃除の順番を決める
- マムのお掃除プログラム
- プログラムの考え方を身に付けるには?
Chapter 4 「1+1」のプログラム
- 値を入れる箱 ――変数
- 変数とは?
- 変数名の付け方
- 変数を利用する方法
- 箱の大きさ ――データ型
- データ型とは?
- 整数型/実数型
- 文字型/文字列型
- 論理型
- 箱の使い方 ――初期化
- 箱を満たす ――代入/代入演算子
- イコール(=)の役割
- 「a=a+1」の意味
- Q&A
- Q1 変数って本当に必要なの?
- Q2 変数を宣言しないとどうなるの?
- Q3 データ型を間違うとどうなるの?
- Q4 初期化せずに変数を計算に使うとどうなるの?
- Q5 変数に次々に値を入れたらどうなるの?
Chapter 5 計算間違いの正体
- 計算に使う記号 ――算術演算/算術演算子
- 塵も積もれば山となる ――計算誤差
- 計算誤差が生じるワケ
- 計算誤差を減らす工夫
- 式の書き方で答えが変わる ――優先順位
- 1+2×3の答え
- 算術演算子の優先順位
- 計算の順番を変更する方法
- 原因は入れ物にあり? ――データ型
- オーバーフロー
- 型変換
- 答えが見つからない割り算 ――ゼロ除算
- Q&A
- Q1 「( )」は1つしか使えないの?
- Q2 1つの式に複数の「( )」があったらどうなるの?
- Q3 「( )」の中に「( )」があったらどうなるの?
- Q4 割り算の答えがおかしいんだけど?
- Q5 データ型が違う2つの値で計算するとどうなるの?
Chapter 6 プログラムの流れを作る
- 流れ方は3種類 ――制御構造
- わかりにくいプログラム
- 構造化プログラミング
- “もしも”のときのプログラム ――条件判断構造
- もしも~なら
- もしも~なら……,それ以外なら
- “もしも”がたくさんあるとき
- 条件判断構造を作るときに注意すること
- 条件判断のネスト
- 同じことの繰り返し ――繰り返し構造
- 回数を決めて繰り返す
- 回数がわからないけれど繰り返す
- 前判断と後判断の違い
- 繰り返し構造を作るときに注意すること
- 無限ループ
- 繰り返しのネスト
- 流れを変えるきっかけ ――比較演算/比較演算子
- 2つの値を比較する
- 「以上」と「より大きい」の違い
- 条件式を判断した結果
- きっかけを用意する
- あれもこれも一緒に比較 ――論理演算/論理演算子
- 論理積
- 論理和
- 論理否定
- 真理値表
- Q&A
- Q1 TrueとFalseってどんな値?
- Q2 条件判断構造を利用するときは,どこに注意すればいいの?
- Q3 繰り返し処理をするときは,どこに注意すればいいの?
- Q4 繰り返しを途中でやめることはできるの?
- Q5 カウンタの初期値は「0」,それとも「1」?
Chapter 7 データの入れ物
- 同じ種類の箱を並べて使う ――配列
- 配列とは?
- 配列に入れられるデータ
- 配列を利用する方法
- れぞれの箱を識別する方法
- 配列を使うと便利になること
- 配列を使うときに注意すること
- 箱を縦横に並べて使う ――2次元配列
- 配列の限界
- 2次元配列とは?
- それぞれの箱を識別する方法
- 2次元配列の扱い方
- 関連する情報をまとめて扱う ――構造体/レコード
- 構造体とは?
- 構造体のメンバーを参照する方法
- 構造体を使うと便利になること
- 構造体と配列の違い
- 構造体を利用する方法
- メモリの番地を利用する ――ポインタ/アドレス
- アドレスとは?
- ポインタの仕組み
- ポインタを利用する方法
- ポインタを使うと便利になること
- ポインタを使うときに注意すること
- 値に名前を付けて使う ――定数
- 定数の使い方
- 定数を使うと便利になること
- 変数と定数の違い
- 大事なデータを入れる場所 ――ファイル
- ファイルの構造
- シーケンシャルアクセス
- ランダムアクセス
- ファイルを利用する方法
- Q&A
- Q1 変数と配列は,どのように使い分けるの?
- Q2 用意した配列の要素数よりも,データ数が少ないとどうなるの?
- Q3 用意した配列の要素数よりも,データ数が多いとどうなるの?
- Q4 配列と構造体は,どのように使い分けるの?
- Q5 ポインタを初期化せずに使うとどうなるの?
Chapter 8 プログラムを部品化する
- 部品になったプログラム ――関数
- 関数とは?
- 関数徹底解剖
- 関数を使うと便利になること
- プログラムの流れ
- 関数の定義
- 関数の呼び出し
- 標準関数
- 情報の受け渡し ――引数
- 引数とは?
- 仮引数と実引数
- 引数の受け渡しで注意すること
- 引数の渡し方
- 引数と変数の違い
- 結果の受け取り ――戻り値/リターン値
- 戻り値とは?
- 結果を受け取るときに注意すること
- 情報を共有する方法 ――ローカル変数/グローバル変数
- ローカル変数
- グローバル変数
- 変数を使うときに注意すること
- Q&A
- Q1 どんなときに関数にするの?
- Q2 引数の個数や順番を間違うとどうなるの?
- Q3 戻り値の受け取り方を間違うとどうなるの?
- Q4 引数や戻り値のない関数もあるの?
- Q5 同じ名前の変数を使ってもいいの?
Chapter 9 何を作るか考えよう
- コンソールアプリケーションとウィンドウアプリケーション
- プログラムが動くきっかけ
- イベントとは?
- イベントの種類
- イベント駆動型
- イベントの監視
- プログラムの作り方
- コンソールアプリケーション
- ウィンドウアプリケーション
- Webのプログラム
- Webのプログラムが動く仕組み
- Webページの種類
- クライアント側でプログラムを動かす
- サーバー側でプログラムを動かす
- Webのプログラムを作る前に
Chapter 10 道具を揃えよう
- プログラミング言語の種類
- 低水準言語
- 高水準言語
- いろいろなプログラミング言語
- 教育用
- 一般アプリケーション用
- Windowsアプリケーション用
- Webページ作成用
- Webアプリケーション用
- その他
- Cプログラミングに必要な道具
- プログラムの開発手順
- エディタ
- コンパイラ
- リンカ
- オブジェクト指向プログラミング
- オブジェクトとは?
- オブジェクト指向とは?
- オブジェクトとクラスの違い
- プロパティとメソッド
- オブジェクト指向でプログラミング
- 再び,クラスとは?
Chapter 11 一歩前へ踏み出そう
- プログラムが思いどおりに動かないとき
- エラーの種類
- バグの見つけ方 ――日本語のプログラムを利用する
- バグの見つけ方 ――スピーカーやモニタを利用する
- エラートラップ
- プログラマーの心得
- 「どうして?」を口癖にしよう
- 紙と鉛筆を持ち歩こう
- ポイントをはっきりさせよう
- プログラムの先にいる人の顔を思い浮かべよう
- 人の意見に耳を傾けよう