日本語プログラミング言語「なでしこ」公式サイト |
日本語でプログラミングできる「なでしこ」を使って、プログラミングを身につけましょう。プログラミングができれば、いろいろな仕事を自動化することができます。今回は、ユーザーと対話する方法について学びましょう。単位変換ツールを作って、プログラミングに親しみましょう!
ユーザーと対話しよう
なでしこのプログラムでは、プログラム側で用意した数字をただ計算したりするだけではなく、ユーザーから値を入力してもらうこともできます。
ユーザーからデータを入力してもらう方法は、いくつかあるのですが、最も簡単なのが「尋ねる」命令を使うことです。例えば、ユーザーの名前を入力してもらって、それを表示するだけの簡単なプログラムは、以下のようになります。
「お名前は?」と尋ねる。
それを表示。
今回も、Web上のエディタで、プログラムを実行してみることができます。PCでなくても、タブレットやスマートフォンで実行することができます。
なでしこ簡易エディタ
Webブラウザによって異なりますが、尋ねる命令を実行すると、以下のようなダイアログが出て、ユーザーは値を入力することができます。
そして、値を入力すると、変数「それ」に入力した値が代入されます。変数というのは、コンピューターのメモリ上に用意された値を記憶しておく箱のようなものです。つまり「尋ねる」命令を実行すると、その結果が、メモリ上の「それ」という箱に代入されるということです。
ちなみに、なぜ変数「それ」に入るのかというと、なでしこの命令を実行すると、命令の実行結果は全て変数「それ」に代入されるという仕組みになっています。
単位変換のプログラムを作ろう - 坪の計算
それでは、「尋ねる」命令を使って、単位変換のプログラムを作ってみましょう。 ここでは、日本で土地や建物の広さを表すのに使う「坪」という単位を変換する単位変換ツールを作ってみます。「坪(つぼ)」は、尺貫法による面積の単位です。1坪は、1辺が6尺(1間)の正方形の面積のことであり、約3.305㎡です。
それで、坪から㎡への変換プログラムは以下のようになります。
「何坪ですか?」と尋ねる。
結果=それ×3.305
結果を表示。
簡易エディタに貼り付けて実行してみましょう。すると、入力ボックスが現れるので、そこに30と入力してみました。すると、以下のように、結果の99.15が表示されます。
それでは、次に㎡から坪に変換してみましょう。今度はかけるのではなく割れば良いことになります。今度は、変換結果を表示するときに、分かりやすく説明も一緒に表示するように工夫してみます。
「何㎡ですか?」と尋ねる。
m2=それ
坪数=m2÷3.305
「{m2}㎡→{坪数}坪です」と表示。
再び、簡易エディタに貼り付けて実行してみましょう。すると、入力ボックスが現れるので、そこに90と入力します。すると、以下のように「90㎡→27.23146747352496坪です」と説明付きで結果が表示されます。
説明が表示されると分かりやすいですね。これは、新しい書き方なので、少し説明します。なでしこで文字を表示するときには、『「***」と表示』のように書きます。このとき、『「**{変数名}**」と表示』のように、波括弧で変数を書くと、そこに変数の値が展開されます。もう少し、簡単なプログラムで試してみましょう。
名前=「ポチ」
年齢=7
「我が家の{名前}は、{年齢}才です」と表示。
このプログラムを実行すると、『我が家のポチは、7才です』と表示されます。
インチの変換をするツールを作ろう
次に、インチの計算プログラムを作ってみましょう。インチは、アメリカやイギリスなどの英語圏で使用される単位です。日本でも、テレビやタブレットなどの工業製品でインチを見かけることが多いことでしょう。例えば、Apple社のiPad Proのサイズには、9.7インチと12.9インチがあります。
1インチは2.54cmです。それでは、作ってみましょう。
「何インチですか?」と尋ねる。
それをインチに代入。
インチに2.54を掛けてセンチに代入。
「{インチ}インチは{センチ}cmです!」と表示。
プログラムを実行し、12.9を入力すると「12.9インチは32.766cmです!」と表示されます。無事、単位変換プログラムを作ることができました。
ここでは、変数に値を代入するのに、「代入」命令を使ってみました。「A=10」と書くのと「10をAに代入」と書くのは同じ意味です。日本語っぽくプログラムを書きたい時には、「代入」命令を使うと良いでしょう。
値を丸めて計算結果を見やすくしよう
さて、先ほどの㎡から坪への単変換など、計算結果によっては、小数点以下が長くなり、結果が見づらいこともありました。そこで、小数点以下の2桁だけ表示しようと思うのですが、どうしたら良いでしょうか。
ここでは、実数の小数点以下を四捨五入する「ROUND(数値)」関数を使ってみましょう。この関数は、以下のように使います。以下のプログラムを実行すると3が表示されます。
ROUND(3.14)を表示。# 結果→3
ROUND(2.72)を表示。 # 結果→3
そして、小数点以下を2桁分だけ表示するためには、100をかけてROUND関数を通し、100で割れば良いことになります。以下のようになります。
V = 3.141592653589793
(ROUND(V*100)/100)を表示。 # 結果→3.14
このテクニックを使って、㎡から坪に変換するには、以下のようなプログラムを作れば良いでしょう。
「何㎡ですか?」と尋ねる。
それをm2に代入。
m2を3.305で割って坪数に代入。
坪数2=ROUND(坪数 * 100) / 100
「{m2}㎡は{坪数2}坪です!」と表示。
「正確な値: {坪数}坪」と表示。
数値の切り上げや切り捨て、丸めについては、以下のような関数が用意されています。以下の関数はいずれも、小数点以下を処理して整数を返します。
- FLOOR(数値) --- 数値を切り捨てる
- CEIL(数値) --- 数値を切り上げる
- ROUND(数値) --- 数値を丸める
ちなみに、なでしこで使える関数や命令の一覧は、以下にまとまっています。
なでしこの関数・命令の一覧
まとめ
今回は、「尋ねる」命令を使ったユーザーとの対話方法を紹介しました。これを利用すれば、プログラムの作成時だけでなく、プログラムを実行する段階で、値を入力することができます。実行時に値が入力できれば、プログラムの使い回しがしやすくなり、また、プログラムを別の人に使ってもらうこともできるようになります。ぜひ、オリジナルの単位変換ツールを作ってみてください。
自由型プログラマー。くじらはんどにて、プログラミングの楽しさを伝える活動をしている。代表作に、日本語プログラミング言語「なでしこ」 、テキスト音楽「サクラ」など。2001年オンラインソフト大賞入賞、2005年IPAスーパークリエイター認定、2010年 OSS貢献者章受賞。技術書も多く執筆している。