プログラミングの学習において、重要なことは何か。
実際に動かす?もちろん重要だ。
ただインプットしただけでは使えない。アウトプットしてみるのが大切。
その言語で何か作ってみる?これもめちゃくちゃ重要。
学習したものを応用して、何か作ると、よりその基礎が定着する。
…だが、もう一つ大事なことがある。
本講座では、そこに重きを置いて解説を行っていこう。
プログラミング考え方講座、開始だ。
本講座の前提事項
想定読者
この講座は、主に初めてプログラミングをするという方から、なんとか1言語は書けるようになったかなくらいの方までを対象とする。
2言語以上を使いこなしている方については、恐らく本講座で言いたいことはなんとなく理解できていると思う。
解説する言語と範囲
実際に解説するのは以下の3言語。
- Java
- C
- JavaScript
この選択は、ただ単に私が学習したというだけの理由。深い意味はそんなにない。
だから、「この言語でもやって」というのがあれば、多少は増やせると思う。
要望があったら増やすことにしよう。是非コメントにて教えていただきたい。
で、解説する範囲なのだが…基本的な変数宣言や条件分岐、繰り返し等と、ポインタ、関数、オブジェクト(構造体)あたりまでとしよう。
今のところ、下線一個につき一記事で考えている。この記事含め、全7記事想定だ。
以下の目的に詳細は書くが、実は具体的な言語習得が本講座の目的ではない。
本講座の目的
「言語習得が目的じゃないなら、なんでこんな解説するの?」と思われるだろう。
プログラミングを行う上では、大体どの言語にも共通した「考え方」というものがある。
そもそも、どの言語も最終的にはコンピュータに処理させるために書くもの。
ということは、同じことを処理させるのに、それぞれの言語で表記が異なるだけ、ということになる。
細かく見れば異なる部分は確かにあり、それぞれの言語で得意なものも異なる。
が、共通した考え方も多く、逆に言えばその考え方を身に付けておけば新しい言語の習得コストが非常に軽くなる。
その差分だけ学習すればいいからだ。
というわけで、本講座の目的は…
プログラミングの基本的な考え方を身に付ける
ことだ。言語習得ではないというのは、これを意味している。
さあ、目的は理解できただろうか。問題なければ、早速内容に入っていこう。
各言語の処理開始
まずはこれ。それぞれの言語が、どこから処理開始になるか。
Javaの処理開始
Javaでは、以下のようになる。
class Sample01 {
public static void main(String args[]){
// 処理
}
}
色々とくっついたmain
というやつの中に処理を書く。初めてみる方は、そんなもんなんだと思ってくれればいい。
これを厳密に理解するためには、この講座で解説予定の内容が色々と必要になる。
ちょっとJava特化の解説。
1行目のclass
の後ろにあるSample01
の部分は、そのファイル名のドット前と同じでなければならない。Java特化の解説終わり。
ちなみに、ダブルスラッシュは、その行の以降の部分がコメントであることを表している。
コメントとは、プログラム中に書いても処理には一切影響がないもののこと。
また、もう一つ書き方があり、/*
と*/
で囲った部分もこのコメントというやつになる。この中には改行も入れることができる。
これは、C言語、JavaScriptでも共通なので覚えておこう。
C言語の処理開始
C言語では以下の通り。
int main(){
// 処理
return 0;
}
Javaと同じく、なんかmain
というやつの中に入っている。これはわかりやすいだろう。
Java言語とC言語の共通点
JavaとC言語では、通常コンパイルと呼ばれる、ソースコードを実行可能なファイルに変換する処理が入る。
…Javaは使い方によってはコンパイルが不要な場合もあるが、ここではコンパイルする場合で考えておく。
で、コンパイルするときに、どこから処理開始かというのを探す。
その目印が、main
というやつというイメージだ。
わざわざこんなことを書くということは…そう、JavaScriptは異なる。
JavaScriptの処理開始
JavaScriptは以下の通り。
// 処理
…そう、そのまま書き始めることができる。
JavaScriptはインタプリタという、コードを1行ずつ読み込みながら処理する形式になっている。
だから、いきなり書き始めることができるのだ。
文字列出力
文字列を出力する処理を見ていこう。ここからのサンプルソースは、該当部分のみ書いていく。
上の// 処理
というところに入れてみよう。
共通している考え方は、元々用意されている処理に、表示する文字列を渡すということだ。
また、文字列はダブルクォーテーションで囲んであげる必要がある。
今回、プログラミング定番のHello World!
という文字列を表示してみよう。
Javaの文字列出力
Javaでは、以下のように書く。
System.out.print("Hello World!");
これで表示できる…でもいいのだが、軽く詳細に踏み込んでみよう。
まず、Javaでは基本的に、オブジェクトと呼ばれるモノに様々な値や処理が定義されている。
今回、大元になっているSystem
というモノがある。
で、その中のモノや処理を呼び出す時は、ドットでつなげる。
つまり、文字列を出力するためには、
System
というモノ- の中に入っている、
out
というモノ - に定義されている
print
という処理
を呼び出してあげる必要がある。だから、System.out.print
という表記になる。
で、処理の場合は、モノと区別するために、小括弧をつけてあげる。
更に、今回の処理は文字列を表示するという内容。
つまり、その文字列を渡してあげないといけない。
このように、何かを処理に渡す場合は、その小括弧の中に渡すモノを入れてあげる。
だから、System.out.print("Hello World!")
と書いてあげればいい。
最後に、一つ一つの処理がどこまでか、を明確に書いてあげる必要がある。それが、セミコロンだ。
というわけで、結果的にSystem.out.print("Hello World!");
と書けば、「Hello World!」と表示される。
C言語の文字列出力
次に、C言語を見てみよう。
printf("Hello World!");
C言語では、Javaとは違って直接表示の処理を書く。
…のだが、この処理が別の中身に定義されているのは同じだ。
では、何をどこに書くか…というと、ファイルの先頭に、以下を追加する。
#include<stdio.h>
このstdio.hというモノの中に、文字を出力するprintf
という処理が定義されている。
だから、インクルードと書いてある通り、読み込んであげる。
異なるのは、直接処理を呼び出せる形で定義されているという点だ。だから、処理名をそのまま書ける。
処理の小括弧周りと、末尾のセミコロンはJavaと同じ考え方。
JavaScriptの文字列出力
JavaScriptの場合、複数の出力先があるのだが…今回はコンソールに出力する場合で見てみよう。
このどこに出力するかは、それぞれ呼び出す処理が変わるだけだ。
console.log("Hello World!");
考え方は、Javaと同じ。
元々用意されているconsole
というモノがあり、その中のlog
という処理を呼び出してあげている。
まとめ:講座の目的と文字列出力
いきなり本編にも入ってしまったので、再掲しておこう。
この講座での目的は、
プログラミングの基本的な考え方を身に付ける
ということだ。これをしっかりと押さえておいて欲しい。
また、文字列を出力をするためには、事前に用意されている処理を、それぞれ定義されている場所から呼び出す、という考え方になる。
この流れは文字列出力に限らず、どの言語にも様々なものがあらかじめ定義されている。
この基本は覚えておこう。
次回は、変数を扱う。データを保持しておく考え方だ。
更新情報はTwitterでも呟いている。よかったら、ページ下部のTwitterアイコンから覗いていってほしい。
それでは。
コメント