【プログラミング入門】現役エンジニアが解説するプログラミングの基礎

PROGRAM

プログラミングの基礎を知りたい方へ。

この記事を読まれている方は、

  • プログラミングの基礎を知りたい
  • プログラミングのコツや効率的に学ぶ方法があれば知りたい

このように考えている方が多いと思います。

この記事を書いている私は、
プログラミング未経験から転職を果たした現役のWeb系エンジニアです。
エンジニア歴は3年ですが、本業とは別にフリーランスの副業で月10万円ほど、多いときで20万円ほどの収入があります。

この記事では、現役のエンジニアが、プログラミングの基礎の話をしたいと思います。

【プログラミング入門】プログラミングの基礎

【プログラミング入門】プログラミングの基礎

プログラミングとはコンピュータのソフトウェアを作ることです。
プログラミング言語はそういったソフトウェアを作るための言語になります。

ここではPHPを例に挙げながら、簡単に大まかなイメージを掴むことを目的とします。

プログラミングを習得するために理解しなければならないことは主に以下の2つです。

  • プログラミングにおけるデータ構造
  • プログラミングにおけるアルゴリズム

この2つを理解しておけば、プログラミングでできることを理解することができ、
これから習得するために何を学べば良いかがわかります。

まずはプログラミングのデータ構造を理解しよう

まずはプログラミングのデータ構造を理解しよう

まず、プログラミングにおけるデータ構造ですが、

  • 変数
  • 配列
  • 構造体(多次元連想配列)

基本的に上記3つの種類があると思ってください。

最近の言語はオブジェクト指向型の言語が中心なので、本当はオブジェクト(クラスなど)の概念があるのですが、ここでは省略します。
初心者はそれ以前のデータ構造をきちんと理解してからオブジェクト指向の概念の学習に進むことをお勧めします。

さて、データ構造を一つひとつ解説していきます。

変数

変数は簡単に言えば、値(文字列や数値など)を格納するための箱(入れ物)です。
PHPでは以下のように定義します。

<?php
    $str = "Hello Wordl!";
?>

これはstrという変数に「Hello World!」という文字列を格納しています。
入れ物に入れておくことで、この後の処理でいちいちながたらしい文字列を書く必要がなくなったり、分岐処理などで箱の中身を自由に入れ替えたりすることができます。

配列

変数は一つの変数に対して一つの値しか入れられませんでしたが、
配列は一つの配列に対して複数の値を入れることができます。
PHPでは例えば、以下のように使います。

<?php
    $students = array("佐藤","田中","小林");
    echo $students[1]; // 田中
?>

佐藤と田中と小林という文字列を配列studentsに格納しているのがわかると思います。
配列は入れた順番で0から番号が振られていくので、取り出す時は、[]をつけて添字で番号を指定します。
上の例では田中を取り出したい場合は、0から数えて1番目の要素のため、$students[1]で取り出すことができます。
複数のデータを入れられるというのは便利ですね。

構造体

配列の中に配列を持たせたいことがありますよね?身近な例で言えば、エクセルのような構造にしたい時です。
例えば、1行目のA列とか2行目のB列といった具合です。
これもPHPで例示しましょう。

<?php
    $first_row = array("A"=>"佐藤","B"=>"男性");
    $second_row = array("A"=>"田中","B"=>"女性");
    $third_row = array("A"=>"小林","B"=>"女性");
    $excel_data = array($first_row, $second_row, $third_row);
?>

上の例ではA列に名前、B列に性別の項目があり、3人分(3行)のデータが入っています。
$first_row、$second_row、$third_rowは連想配列というもので、簡単に言えば、ただの配列が各要素を0からの番号で定義・取り出していたのに対し、連想配列ではキー(名前などの文字列)で定義・取り出すというものです。
これをさらにexcel_dataという配列に順番に入れていくことで、n行目A列といったようにデータを持たせることができます。SQLなどのデータベースでデータを取得するときなどは基本的にはこの形式になります。

以上3つがプログラミング言語における主要なデータ構造です。
続いて、プログラミングのアルゴリズムを解説します。

アルゴリズム(プログラミングの3大要素)を理解しよう

アルゴリズム(プログラミングの3大要素)を理解しよう

アルゴリズム、プログラミングの3大要素は超重要なので、確実に理解しておきましょう。

プログラミングにおいて処理の種類は3つしかありません。コンピュータで組まれたプログラムは全てこれらの組み合わせで書かれています。

  • 順次処理
  • 分岐処理
  • 繰返処理

順番に解説していきます。

順次処理

順次処理というのは、ただ単に、上から下に書き記した命令文が実行されますよ、という話なだけです。

具体的にPHPのソースコードで説明しておくと、

<?php
    $str = "Hello World!";
    echo $str;
?>

上記コードの場合、まずstrという名前の変数に”Hello World!”という文字列が格納され、
次の行に進み、変数strの文字列をechoする(出力する)という順番で処理されます。

そのため、処理結果としては、画面上に以下が表示されます。

Hello World!

上から下に命令文が実行されているだけです。簡単ですね。

分岐処理

次に分岐処理というのは、判断分岐、すなわち場合分けの処理のことです。
例えば、AがBならC、そうでないならDというような処理です。

これもPHPの具体的なコードで説明します。

<?php
    $age = 19;
    if ($age >= 20) {
        echo "成人";
    } else {
        echo "未成人";
    }
?>

上記のコードの実行結果は以下の通りです。

未成人

まず順次処理の原則から上から下に命令文が実行されていくことはわかると思います。

そうするとまずageという変数に19という数値が格納されます。

次にif文の条件式である「$age >= 20(変数ageの数値が20以上であること)」という条件に満たさないため、直下のカッコ内の処理は実行されず、代わりに「else(それ以外であること)」のカッコ内の処理が実行され、未成人という文字列がecho(出力)されます。

どうですか?
分岐ができれば、コンピュータに色々な判断を伴う処理を任せられる気がしてきませんか?

繰返処理

最後に繰返処理について。
これはその名のとおり、とある命令を繰り返しで実行したいときに利用されます。
これもPHPのソースコードを例に出して、動きを説明します。

<?php
    $students = array("佐藤","田中","小林");
    for ($i=0; $i<count($students); $i++ ) {
        echo $students[$i];
        if ( $i < count($students)-1 ) {
            echo ",";
        }
    }
?>

このコードの実行結果は以下のとおりです。

佐藤,田中,小林

まず順次処理に従って、上から下へと命令文が実行されていきます。
studentsという名前の配列が定義され、中身に佐藤、田中、小林の3人の名前が格納されています。
次にfor文により、カウンタ変数iがはじめ0に設定され、students配列の要素の数の分を満たすまでfor文のカッコ内の処理が実行されます。$i++なので一度カッコ内が処理されたらカウンタ変数iの数値は1ずつプラスされます。

念のため、for文の使い方を載せておきます。

for (カウンタ初期値; ループ条件式; カウント方法) {
    繰り返したい処理内容
}

配列studentsの要素の分だけ実行されるので、
$students[0]、$students[1]、$students[2]が順番にecho(出力)されるということがわかると思います。すなわち、佐藤、田中、小林が出力されます。

これだけでも良いのですが、これでは佐藤田中小林とくっついて出力されてしまうため、
if文の処理でループの最終回以外は名前の後ろで「,(カンマ)」をecho(出力)しています。

このような処理になります。

以上3つの処理を組み合わせてプログラムは書かれています。
どんなに複雑なプログラムでもこの法則に漏れることはありません。
そう思うと少し、プログラミングって難しくないってことがわかってくる気がしませんか?

まとめ:プログラミングの基礎はデータ構造とアルゴリズムを押さえる

まとめ:プログラミングの基礎はデータ構造とアルゴリズムを押さえる

本記事ではPHPのコードで例示をしながら、解説してきましたが、
大事なことなので、改めて要点をまとめておきます。

データ構造の種類は主に以下の3つ。

  • 変数・・・1箱の値の入れ物
  • 配列・・・1箱だけど中に複数の箱がある入れ物
  • 構造体(多次元連想配列)・・・エクセルのようなデータ構造

アルゴリズムの種類は以下の3つ。

  • 順次処理・・・上から下に処理
  • 分岐処理・・・条件で処理を分岐
  • 繰返処理・・・処理を(条件を満たす間)繰り返す

上記がプログラミングの基礎になります。
より詳しく学びたい方は、プログラミングスクールや実戦で学んでいくと良いと思います。
参考記事を貼っておきます。