いまから始めるアルゴリズム

新人編集者のJava学習物語 初級編

第2回 a=a+bなんてあり得なくない?

荒井亜子
2007/11/08

演習問題でつまずく

先生

それでは、演習問題を解いてみましょう。分からないところがあったらいつでも手を挙げて呼んでくださいね〜


演習問題

以下の結果が表示されるように、プログラムを作成してください。

********
*******
******
*****
****
***
**
*


荒井

これはさっき勉強したfor文を使って解けそうだなぁ


class Sankaku{
	public static void main(String[] args){
		for(int a = 8; a > 0; -a-){
			for(int b= 1; b <= a; b++){
				System.out.print("*");
			}
			System.out.println();
		}
	}
}

ソースコード8


荒井

できた! コンパイルするのが楽しみ(ソースコード8)

 ソースコード8をコンパイル、実行する。

C:\Java2\S8>javac Sankaku.java
Sankaku.java:3: 式の開始が不正です。
                for(int a = 8; a > 0; -a-){
                                         ^
Sankaku3.java:3: 文ではありません。
                for(int a = 8; a > 0; -a-){
                                        ^
Sankaku3.java:9: ')' がありません。
        }
        ^
エラー 3 個

ソースコード8の実行結果


荒井

コ、コンパイルエラー!? 何でできないんだろう。公式どおりにカウンタ変数の初期値を設定してから、繰り返しの条件の式を書いて、カウンタの増え方もちゃんと書けているのに

 すると、悩んでいる新人編集者の背後から先生が、

先生 -a-で本当にいいのかな?
荒井 そういうの、まったく意識してなかったです。--aかa--にすればいいですかね?
先生 今回の場合は、どちらでもコンパイル・実行できるけど、--aとa--の違いは大丈夫? デクリメント演算子の前置型・後置型といって、それぞれ違うものなんですよ

 デクリメント演算子に対し、インクリメント演算子というものもある(ソースコード9)。

int x, y = 1;
x = ++y;  // yの値に1足してからxに値を代入。xの値は2

int x, y = 1;
x = y++;  /* xにyの値を代入した後、yに1を足す。xの値はyに1を足す前の1のまま */

ソースコード9


荒井

Javaのプログラミングは、文字や記号を書く順番がすごく大事なんですね

 こうして、新人編集者の初めてのプログラミング講習1日目が無事終了した。

1日目にして「私向いてないかも」。早くも弱気

 会社に戻ると、編集部の先輩の長谷川さんが心配そうに話し掛けてきた。

長谷川 今日はどうだった? ついていけた?
荒井 えーと、なんとか
長谷川

今日は、入門だからね。次回以降ぐっと難しくなるからしっかり!

荒井 ……先輩、プログラミングって向き不向きあるんでしょうか
長谷川 難しい数学を使うわけでもないし、コンピュータは自分が入力した処理手順どおりにしか動かないものだから、勉強さえすれば誰でもできるようになると思うよ
荒井 そうですか、予想以上に難しかったので、ちょっと自信がなくなってきちゃって。でも、頑張ります!
長谷川 まずは、文法や規則をきっちり覚えることが大事かな。あきらめないで頑張ってね!

 先輩に励まされ、次回の講習会も頑張ろう、と心に決めた新人編集者。次回の講義に備え、復習をしようと机に向かうのであった。(連載第3回へつづく)

今回お世話になった富士通ラーニングメディアの講師、吉田有沙先生より、プログラミング入門者へのアドバイス

手を動かすことほど大切なことはない

 プログラミング言語を学習する方法として一番やってはいけないことは、参考書を読むだけで理解しようとすることです。

 できる限り自分の手を動かしてソースを書くようにしてください。コンパイルエラーを修正するなど、確かに時間がかかってしまいますが、本を読むだけよりもはるかに学習効果が高く、内容の定着率も高くなります。
 
  また、エラーを修正することも学習となりますので一石二鳥です。「急がば回れ」の精神で学習していきましょう。


 

今回のインデックス
 新人編集者のJava学習物語 初級編(2) (1ページ)
 新人編集者のJava学習物語 初級編(2) (2ページ)

@IT自分戦略研究所の関連記事
では、Javaをどうやって覚える?
オブジェクト指向、本当に分かってる?
Javaの世界、イメージできる?
なぜJavaを学ぶのか
Javaをモノから学ぶ

@IT自分戦略研究所の関連サービス
ITトレメ(Sun Certified Programmer for the Java 2 Platform)

自分戦略研究所、フォーラム化のお知らせ

@IT自分戦略研究所は2014年2月、@ITのフォーラムになりました。

現在ご覧いただいている記事は、既掲載記事をアーカイブ化したものです。新着記事は、 新しくなったトップページよりご覧ください。

これからも、@IT自分戦略研究所をよろしくお願いいたします。