最近、危機感に追われて英語を勉強してるんですが、同じく英語を勉強している友達から、少し意外な事を言われた。
「プログラム言語ができる人は、英語もチョロいだろう」
だって・・・
プログラムって確かに言語って言うけど、英語などのコミュニケーション言語とは違うだろ!と思ってたら、その友達が、
「だって、プログラムもコンピュータとのコミュニケーション言語だろ!」
と言ってた。
・・・ホントだ、上手いこと言うなあ。
今回はプログラム初心者用の記事なので、仕事でプログラム構築を行っている人は部下や後輩などにどのように教育すればいいかという視点で御覧ください。
プログラム初心者はfor文がうまく使えない?!
会社のエンジニア初心者の後輩達にプログラムを教えて数年経つが、プログラムという言語を覚えられる人と覚えられない人は何故かキッパリ分かれる。
覚えられる人は「エンジニア」系の人なんだろうけど、今やどんな仕事でも殆どの人がパソコンを使わなければいけない時代なので、誰もがプログラムを覚えたいと考えているようだ。
もちろん、エンジニアというレベルになりたいという人もいれば、自分が困らない程度にITの知識を付けたいと考えている人もいるようだ。
そんな後輩たちを見ていると、どうやら、プログラムの基本である「for」文と「if」文が、思った通り使えないという事を言っていた。
はじめはどういう事なのか理解できなかったが、どうやらそれは、for文が「繰り返し処理」という事は理解できているんだが、何も書かれていないテキストファイルにプログラム構成を組み立てていき、そこにfor文を入れるべきポイントというのがイマイチ頭に浮かんでこないのだ荘だ。
これを聞いた時に、英語の勉強をしていて、構文が浮かんでこないあの感覚と同じだと思った。
やはりプログラムも、コミュニケーション言語であると考えてもいいかもしれないと感じた瞬間だ。
for文を使う感覚
プログラマーの人には当たり前の「for」文は「繰り返し文」という事はそんなに覚えるのに難しくはない。
それでは、どのようにfor文を使えば良いのだろうか?
これは英語の勉強と同じで、繰り返し感覚を覚えていくしか無いでしょう。
ただ、理論から覚えても言語なんて習得できないので、例題をいくつかこなしていき、実際に自分でプログラムを組んで行くことで、上手に使いこなせるようになるんでしょうね。
for文を使うレベル感
まず最初に自分のfor文に対してどのくらい理解できているかを考えてみましょう。
1. for文の構文が理解できている
2. 繰り返し箇所をfor文に置き換えられる
3. 配列をfor文で処理する事ができる
4. 定数ではなく可変の値でのfor文が構築できる
5. 多重のfor文を使うことができる
初心者の人は、1番に◯が付くかどうかというレベルだと思うが、for文を使いこなせると思えるのは5つ全てに◯が付けられるようになる事なので、関連する配列や変数や多次元loopなども同時に理解しながらススメなければ行けないので、一気に覚えることは難しい為、いかにたくさんのfor文環境に出会えるかという事を主眼に置いて勉強するようにしましょう。
初心者用勉強サンプル
お題 #01「1から10までの数字を全て足した答えを表示」
ちなみに、for文を使わないプログラムは以下のとおり。
var number = 0;
number = number + 1;
number = number + 2;
number = number + 3;
number = number + 4;
number = number + 5;
number = number + 6;
number = number + 7;
number = number + 8;
number = number + 9;
number = number + 10;
document.write(number);
お題 #02「事前に用意された配列データを全部足した数を集計」
配列サンプル
var data = [1,3,5,7,11,13,17];
これもfor文を使わない場合は以下のプログラム
var number = 0;
var data = [1,3,5,7,11,13,17];
number += data[0];
number += data[1];
number += data[2];
number += data[3];
number += data[4];
number += data[5];
number += data[6];
document.write(number);
お題 #03「1〜10の数で偶数のみを表示する」
偶数のみの表示は非常にシンプルで基本的なfor文で記述できるのだが、ベタに書くと下記の通りだ。
document.write(2);
document.write(4);
document.write(6);
document.write(8);
document.write(10);
お題 #04「2つの変数間の合計数」
少しややこしいお題だが、fromからtoまでの数字を順番に足すというお題だ。
これもfor文を使わないと以下のようになる。
//開始数
var from = 5;
//終了数
var to = 10;
//計算結果の変数定義
var number = 0;
//計算
number += 5;
number += 6;
number += 7;
number += 8;
number += 9;
number += 10;
document.write(number);
答えあわせ
どれも基本だけど、初心者はこうした事ができなくて悩んでいるらしい。
正解は1つだけではないが、あくまで答えを参考にして自分のプログラムを書いて欲しい
お題 #01
var number = 0;
for(var i=1; i<=10; i++){
number += i;
}
document.write(number);
お題 #02
var number = 0;
var data = [1,3,5,7,11,13,17];
for(var i=0; i<data.length; i++){
number += data[i];
}
document.write(number);
お題 #03パターン1
お題3は、if文を使うと簡単に実行できるのだが、forの構文だけでも可能なので、2パターン記述しておいた。
for(var i=2; i<=10; i+=2){
document.write(i +"<br>");
}
お題 #03パターン2
こっちはif文パターンね。
for(var i=1; i<=10; i++){
if(i%2){continue}
document.write(i +"<br>");
}
お題 #04
//開始数
var from = 5;
//終了数
var to = 10;
//計算結果の変数定義
var number = 0;
//計算
for(var i=from; i<=to; i++){
number += i;
}
document.write(number);
プログラム習得に必要なプチコメント
プログラム初心者の人は、大きなプログラムを作りたがる傾向がありますが、当たり前ですが、いきなり大きなプログラムなど無理です。
プログラムスキルは1つのプログラム構成で何行書くことができるかという事が、一つの指標になります。
プログラムのスキルが高ければ高いほど、同じプログラム構造を作った時に短く書くことができるのですが、その分膨大な広がりのあるプログラムを構築する事ができるというのがスキルの高い証拠であるという事なのです。
単純にプログラムの行数を書くのではなく、いかに考え抜かれたプログラムを、効率のいい書き方で、機能数やシステム対応エリアを増やすことが出来るか、
不思議と、膨大なプログラムを構築した人って、その全ての構成を隅々まで覚えているもんなんですね。
なので、そういう人は、スキルが高いんでしょうね。
0 件のコメント:
コメントを投稿