第一回初級プログラミング講座2. 自己紹介
• 安井 慎一郎
• 情報システム工学科1年
• 音楽 サイクリング
• C# Java node.js Ruby on Rails
• 普段はゲームとか作ってる人
2
10. 標準出力 1
• コンピュータに文字を書けという命令をします。
• まずエディタにこう書いて下さい。
• 実行ボタンを押すとコンソール画面に・・・・
• 確認したら中止ボタンを押して終了します。
10
print(“I am here.”);
I am here.
↓だぶるこーてーしょん(Shift + 「2」)
せみころん↑
code1.1
out1.1
1
11. 解説 1.1
• 「print(“I am here.”);」と入力したらコンソール画面に
I am here.と表示されました。
• 「print」というのは先ほど行ったように「文字を書け!」という命令で、
「()」の中の内容をコンソール画面に書いてくれます。「””」は文字列を示
す記号で囲まれた中身をそのままの状態で保持してくれます。「;」は文
の区切りをコンピュータに教えてあげられます。
• 「;」は日本語で言うところの「、」とか「。」のようなものです。
これがないとコンピュータが意味を読み間違えちゃうのでエラーが出て
きます。
• ちなみに「;」は英語では強い文の区切りを表します。
11
12. 標準出力 2
• こう書いて下さい。赤いところを追加します。
• どう書こうが自由だろ!って思うかもしれませんが、同じ命令を使う
ので、コピーアンドペーストを使って””の中身だけ編集するなどコー
ディング効率を上げましょう。
• 実行してみると・・・・
• 2つの文がつながって出てきちゃった。
12
print(“I am here.”);
print(“You are there.”);
I am here.You are there.
code1.2
out1.2
1
2
14. 解説 1.2 1.3
• 「println(”I am here.”);」と入力したら出力後に改行してくれます。
• 「print」のあとについている「ln」は「line」の略で、
「()の内容の行を書け!」という命令です。
• 基本的には「println」のほうが使用頻度が高いですが、両方使うの
で「printlnはprintの派生なんだ」ということを合わせて憶えましょう。
• また、上の行の処理から順番に表示されました。プログラムは上の
行から進行するというルールをよく憶えておきましょう。
14
16. 解説 1.4
• 同じ内容が2つ出力されましたが内部での意味は全く異なります。
• 「println(“123456”);」は123456という数字を表しています。
• 「println(123456);」は123456という数値を表しています。
• 言語ではあまり区別されませんが、数値と数字は全く異なるもので
す。数字は数という概念を表す文字、数値は数で示される量や内容
です。
• 本講では詳しくやりませんが、今後この違いを理解する必要がある
ので一応触れておきます。
• また、本講で扱ったプログラムで「()」内に入っている値は直接書き
換えなければ内容が変わらないので定数といいます。
16
18. 解答例 1
• 例えばこんな感じです。
• 最後の行は「println」と「print」のどちらでも可とします。
18
println(“恒河沙”);
println(“阿僧祇”);
println(“那由他”);
1
2
3
恒河沙
阿僧祇
那由他
code1.5
out1.5
21. 解説 2.1
• 出力では「xを出力しろ」と書いたのに数字が出力されました。
• 順を追って説明します。
• まず、1行目の「int x;」です。これは「x」という変数を宣言しています。
少しわかりづらいですね。
• 変数を使うときには予めコンピュータにこういう数を使いたいと教え
ておいてあげる必要があるのです。数学を例に取ると「xを自然数と
する」とか「xを実数とする」などと同じです。
• 「int」というのは整数型といいます。要するに「int x;」とは
「xを整数とする」ということなのです。
• 「int」は「integer(整数)」という英単語に由来します。
• そして2行目の「x = 2;」。これは「代入文」と言います。プログラミング
では「=」という演算子は「代入演算子」といい、「左辺を右辺とす
る。」というようなニュアンスです。
• そして3行目の「println(x);」、「println」は変数の内容を表示できます。
なので変数としての「x」を渡して内容を表示させたのです。
21
30. 解答 2
• 解答は以下のとおりです。
• 定義を2行に分けても正解とします。
• また「x = 4;」は「4」が数値なのでエラーになっちゃいます。
30
String x = “Lazy dog”;
println(x);
x = “4”;
println(x); code2.5
1
2
3
4
Lazy dog
4 out2.5
33. 算術演算子 コード
• 少し長いです。コピペをうまく使って下さい。
• 実行すると・・・・
• すいません、入りきらなかったのでページまたぎます。
33
println(6 + 3);
println(6 - 3);
println(6 * 3);
println(6 / 3);
println(6 % 3); code3.1
1
2
3
4
5
35. 解説 3.1
• まず「+」は加算「-」は減算「*」は乗算「/」は除算です。
• そしてよくわからない結果を吐いた「%」です。
• これは剰余算という計算をしています。これは割った余りを求める計
算のことです。
• 今回は「6」を「3」で割ったので「2」余り「0」になります。
• この剰余算というのは今まで聞き慣れない言葉だったかもしれませ
んが、プログラミングにおいてはすごく大切です。
憶えておきましょう。例は後ほど挙げていきます。
35
45. 解説 3.4
• プログラムにおいて「//」のあとはコメントと解釈されます。
• この後にはなにを書いてもコンピュータは読むことができません。
• 今回の例では(code3.3)の3行目をコメントアウトして読めないようにしたので
「xに2加算しろ」と書いてあることがコンピュータはわからなかったから加算
されなかったのです。
• つまりここには、コンピュータの悪口を書いてもいいし、コンピュータにはひ
みつな好きな子の名前とかを書いてもコンピュータにはバレません。しかし
多分大抵のことは「//」を外すとめちゃくちゃ怒られるので気をつけて下さい。
• 冗談はさておき、これから結構複雑なコードを書くことになりますが、なにを
しているかわかりやすくするためにメモを書いたり、修正の必要がある場所
とかを書いておくことができます。
45
48. 解答例 3-1
• 難しかったですかね。
• このように()を用いて代入文を使わずに数値を操ります。
48
int x = 4;
x %= 3;
println(x);
println(x + 1);
println((x + 1) * 2); code3.7
1
2
3
4
5
1
2
4 out3.7
52. if文 1
• このように記述します。
• 実行するとこうなります。
• 出力がなんかおかしいですね。
52
int x = 3;
print(“I eat dinner”);
if(x == 2)
println(“ on the table.”); code4.1
1
2
3
4
I eat dinner out4.1
53. 解説 4.1
• 今回、「println(“ on the table.”)」という一文が実行されませんでした。
• これは「if(英語で「もし」という意味)」が強く働いています。
• (code4.1)では、まずはじめに「xを3で初期化」しています。
• 「if文」では「if (x == 2)」という風に記述しています。
• これは「もしxが2だったら」と解釈できます。
• また、その直後の行を「then節」といい、論理式が真であるときにこ
こを実行します。
つまり、「もしxが2だったら“ on the table.”と出力せよ」という意味に
なります。
• 今回は、論理式が偽であるので「println(“ on the table.”)」は実行さ
れなかったのです。
53
54. if文 2
• それではこう書き換えてみてはどうでしょう。
• 実行するとこうなります。
• しっかり書いたコードが動きました。
54
int x = 2;
print(“I eat dinner”);
if(x == 2)
println(“ on the table.”); code4.2
1
2
3
4
I eat dinner on the table. out4.2
56. else節 1
• こう書き加えてください。
• 実行するとこうなります。
• これでは変化がわかりませんね。
56
int x = 2;
print(”I eat dinner”);
if(x == 2)
println(“ on the table.”);
else
println(“ on the floor.”); code4.3
1
2
3
4
5
6
I eat dinner on the table. out4.3
57. else節 2
• 書き換えてみましょう。
• 実行すると。
• 「晩ごはんを床の上で食べる。」と出力されました。
57
int x = 3;
print(“I eat dinner”);
if(x == 2)
println(“ on the table.”);
else
println(“ on the floor.”); code4.4
1
2
3
4
5
6
I eat dinner on the floor. out4.4
58. 解説 4.3 4.4
• 「else」は「そのほか」というような意味になります。
• 「if文」に対して「else節」を記述するとその「if文」を通った時、必ず
「then節」か「else節」の何れかを通過します。
• なので、「if文」内の論理式に従い、
(out4.3)では”I eat dinner on the table.”、
(out4.4)では”I eat dinner on the floor.”と表示されたのです。
• このプログラムのif部分を日本語にするとこうなります。
「xが2の時は” on the table.”と出力せよ。そうでないときには” on
the floor.”と出力せよ。」
「if文」は論理式を日本語のように読めるようになるだけで動作の流
れを汲みやすくなります。
58
62. while文 1 コード
• while文はif文と少し似ています。
• いろいろ新しいものが出てきましたが順番に解説します。
まず、出力を見てみましょう。
62
int x = 0;
while(x < 5) {
if(x % 2 == 0)
println(“Johannes”);
else
println(“Gerda”);
x += 1;
} code5.1
1
2
3
4
5
6
7
8
↓ちゅうかっこ
↑ちゅうかっことじ
63. while文 1 出力
• こうなります。
• 少し忙しいですが解説していきます。
63
Johannes
Gerda
Johannes
Gerda
Johannes out5.1
64. 解説 5.1-1
• まず、2行目に突然現れた「while」ですよね。
• whileとは英語で「〜の間に」という意味です。
• 「while文」は直後の「()」内に書いた論理式が真である間後ろ1行を繰り返し
ます。
• しかし、今回は動作させたい行が複数行でした。
このような場合「if文」や「while文」では「{}」(中括弧)を使います。
• これにより、「if文」とか「while文」の操作の対象の行を複数にすることがで
きます。
• 次に突然「<」が出てきました。
数学と同様に、「左辺が右辺”より”小さいとき」に真です。
• それでは演算子と命令の確認ができたのでプログラムを見ていきます。
64
65. 解説 5.1-2
• まず、「while(x < 5)」を一回目に通過するとき、「x==0」
なので論理式は真、「if(x % 2 == 0)」を通ります。この時も、「x==0」で
真なので”Johannes”を出力します。最後に
「x += 1」を通って中括弧の最後に到達したので「while」
に戻ります。
• 次に、「while(x < 5)」を二回目に通過するとき、「x==1」
なので論理式は真、「if(x % 2 == 0)」を通るときは今度は
論理式が偽になるので「else節」を通り、”Gerda”を出力します。そし
てxが5になるまでこれが続き。
• 「x==5」になったときに「while(x < 5)」を通過すると論理式が偽になり
ます。この時、ループをぬけ出すことになります。
• つまり日本語にすると「xが5より小さいとき、偶数なら”Johannes”と
出力し、奇数なら”Gerda”と出力せよ」
と解釈できます。
65
66. while文 2 コード
• 不等号を使うためにこう書き換えてください。
• これで実行してみましょう。 66
int x = 0;
while(x <= 5) {
print(x + “:”);
if(x < 3)
println(“Johannes”);
else
println(“Gerda”);
x += 1;
} code5.2
1
2
3
4
5
6
7
8
9
67. while文 2 出力
• 出力が単調になるのが難点ですね。
• それでは解説しますね。
67
0:Johannes
1:Johannes
2:Johannes
3:Gerda
4:Gerda
5:Gerda out5.2
68. 解説 5.2
• まず、while文の論理式を見ると「<=」小なりイコールが使われていま
すよね。
• これは以下という意味です。つまり、この「while(x <= 5)」は0から5の
時に6回繰り返されます。
• そしてループ内のif文を見ると「x < 3のとき”Johannes”と出力し、そ
うでないとき”Gerda”と出力せよ。」と書いてあります。
• この時、xの値は連続しているので3回連続で”Johannes”が
出力されたあと、3回連続で”Gerda”が出力されました。
• そして気になっていることがあるんじゃないでしょうか
3行目ですね。これはループ回数を表示させているのですが、変数
と文字列を加算させています。このようにすると文字列と数値を結
合して表示させられるのです。今回は”:”を間に入れて読みやすくし
てみました。また、文字列同士も繋がります。
68
70. 解答例 5
• 解答例は以下の通りです。
• 実行すると4回”Amanojaku”と出力されるはずです。
70
int x = 0;
while(x <= 10) {
if(x % 3 == 0)
println(“Amanojaku”);
x += 1;
} code5.3
1
2
3
4
5
6