ホチキス先生の「プログラマーと呼ばれたい」

InfoPath & SQL Server !

Posts Tagged ‘Visual Studio

C# – 文字列を比較するアルゴリズムについて考える(1) – 2つの文字列を前から順に比較し、違いがあった位置を見つけるアルゴリズム

leave a comment »

学校の授業で文字入力のトレーニングをするために、効果的なアプリケーションを作っている。ここで必要な実装として文字列比較がある。

仕様、というか、個人で作るアプリケーションなので厳密な仕様は決めないが、イメージ的にはこうだ。入力トレーニングの元になる文がある。この文は、フォントやポイント、文字飾りなどは無視し、単にテキスト文字列だけのものとする。つまり単なるテキスト文とする。この文と同じ文をキーボードから入力するトレーニングとし、入力にかかった時間と入力できた文字数をカウントしてスコアとする。このとき、入力を間違ったことを評価に加えたい、というものだ。

すぐに思いつくのは、文字列を前から順番に比較し、違いがあったら位置を見つけ出すアルゴリズムだ。2つの文字列が myStr1 と myStr2 に入っており、2つの文字列の長さが同じだとする。

——————————————————————

for (int i = 0; i < myStr1.Length; i++)
{
if (myStr1[i] != myStr2[i])
{
myStrDiff = i;
break;
}
}

——————————————————————

前から順に比較し、違いがあった文字でループを抜ける。前から何文字目であったかが myStrDiff に数字として入る。この数字は 0 から始まるので、実際は +1 文字目に違いがあった、となる。これだと、たとえば次のようになるだろう。

myStr1 = “あいうえおかきくけこ”;
myStr2 = “あいうえおまきくけこ”;

このとき、myStrDiff の値は 5となる。前から 6文字目に違いがあるからだ。しかし、「か」を「ま」と間違えてはいるが、そのあとはちゃんと入力できている。つまり「5文字目までしか間違いなく入力できなかった」のではなく「6文字目だけ間違えたが、それ以外はちゃんと入力できた」はずだ。つまり、このように評価すべきだろう。

入力すべき文字列 ・・・ あいうえおかきくけこ
実際の入力1 ・・・・・ あいうえおかきくけこ (評価10点:満点)
実際の入力2 ・・・・・ あいうえおまきくけこ (評価9点:1文字だけ間違った)
実際の入力3 ・・・・・ あいうえおまみむめも (評価5点:5文字間違った)

つまり、間違った文字以降をどう再判定するか、を考えなければならない。このアルゴリズムについて引き続き考えていきたい。

2017年4月7日

松本 吉生(まつもとよしお)
Microsoft MVP Data Platform

1961年京都に生まれ、神戸で幼少期を過ごす。大学で応用化学を学んだのち、理科教諭として高等学校に勤務する。教育の情報化が進む中で校内ネットワークの構築運用に従事し、兵庫県立明石高等学校で文部科学省の「光ファイバー網による学校ネットワーク活用方法研究開発事業」に携わる。兵庫県立西宮香風高等学校では多部制単位制の複雑な教育システムを管理する学籍管理データベースシステムをSQL ServerとInfoPath、AccessなどのOfficeソフトウエアによるOBA開発で構築・運用する。現在は兵庫県立神戸工業高等学校でC#プログラミング、IoTなどのコンピュータ教育を行う。2004年からマイクロソフトMVP(Microsoft Most Valuable Professional)を受賞し、現在14回目の連続受賞。2016年にマイクロソフト認定教育者(Microsoft Innovative Educator Experts : MIEE)を受賞。

広告

マイクロソフトは世界中の人々をみなプログラマーにする。プログラミング革命。世界が変わる。

leave a comment »

このタイトルを見て、同意できない人もいるだろう。テクノロジーやプログラミングに習熟している人ほどそう思うかもしれない。しかし間違いなくプログラミングは身近なものになっており、その速度は加速度を増している。そしてこのことが、世界を大きく変えるに違いない。そしてそれはもはや始まっている。

思い出してみよう。私の世代はコンピュータの誕生とともに歩んできたといえる。中学生のとき、私は初めてコンピュータに出会った。それは当時「マイコン」と呼ばれることが通常で、今から比べると貧弱で扱いにくく弱弱しいものだった。しかし私はそのコンピュータに出会ったとき、生まれて初めてのBASICプログラミングを夢中でやり、気が付けば空が明るくなり朝を迎えたという経験をした。

高校生の頃、ウォークマンが世の中に出た。それはカセットテープを使った持ち運びのできる、しかしスピーカーを持たない、イヤホンで自分だけが聴くためのマシンだった。ロックに目覚めた私はウォークマンの初代機を買い、ヘッドフォンをつけて町に出て音楽を聴いた。両親は嘆いた。そんなおかしな恰好をして外に出るな、と。だが今はどうだ。誰もが町で自分だけの音楽を聴いている。

大学生の頃、ようやく実用的なパソコンが庶民にも使える時代になった。就職したとき、勤務先の学校には NEC の 9800 シリーズのマシンがあった。しかしそれは予算がついて購入されたものの、誰も使える人はいなかった。使おうと考える人もいなかった。そこで私は Multiplan の表計算ソフトで成績処理のコンピュータ処理をはじめた。当時パソコンで表計算をすることは、特別な技能を持った人間のすることだった。

就職してしばらくし、ノートパソコンを買った。それは今のように軽量で小型のものではなく、バッテリーの持ちも極めて悪かったが、うれしくて毎日持ち歩き電車の中で物を書いたりした。周囲から奇異な目で見られた。あの人は何をやっているのだ、といったかんじだ。会議でもノートパソコンを使い始めた。ある教育セミナーに出席したとき、講演をノートパソコンでメモしていると隣の席の人から「キーボードの音がうるさいのでやめてくれ」と言われた。ノートパソコンを持ち歩き外出先で何かする、ということは変人のすることだった。今ではどうか。誰もがノートパソコンやタブレット、スマートフォンを外出先で使っている。

ウォークマンで外出先で音楽を聴いたり、表計算ソフトを使ったりモバイルデバイスを使うことは、最初はマニアックな変人のすることであったかもしれない。しかしそれが便利なものなら、必ず真似をする人が出てきて、そのうちに当たり前のことになってくる。プログラミングはどうか。確かにプログラミングは敷居が高い。しかし今では、デスクワーカーのほとんどが Excel の表計算ソフトウエアを使い、多くの人がマクロプログラミングをやっている。なぜか。マクロを使うと定型業務あ楽になるからだ。それがわかると人はマクロを学ぼうとする。マクロを教えるセミナーもある。

Excel でマクロを組めるようになれば、もはや一般のプログラミングも、ほんの目の前にある。Microsoft Visual Studio のようなプログラミングツールは革命的に進化し、とても簡単にプログラミングができる時代になっている。誰もが自分に必要な、仕事上の、家庭の、ホビーでのプログラミングをカジュアルにする時代になるだろう。それは、自動車の運転のように私たちの生活に浸透するだろう。今でも車の運転をしない人がいるが、ほとんどの人が運転免許を取得し、マイカーを運転して買い物へ、職場へ、旅行に行く。それと同様のことがコンピュータやプログラミングの世界でおこるに違いない。

(・・・続く)

yocface_MVP_SQLserver_936_936.png

Windows PhoneサンプルプログラムをXAPファイルにして実機にアプリケーション配置する

leave a comment »

IMG_3642_mid_640_480

Windows 7上のエミュレーターで作ったアプリケーションの動作確認をすることもできるのだが、やはり実機で確かめたい。Windows Phoneのプログラムは原則としてApp Hubからのダウンロードしか方法がないのだが、App Hubへ開発者として登録すれば、端末のロックを解除することができ、開発用のPCから直接アプリケーションを配置することができる。

Windows Phoneに開発用PCから作ったアプリケーションを直接配置するには、まWindows PhoneをPCに接続する際にZUNEクライアントが必要になる。MicrosoftのサイトからZune Softwareをインストールするのだ。Zune SoftwareはZUNE端末が米国カナダなど一部の国でしか発売されていないことから、以前は日本語版Windowsにはインストールできなかったが今は全く問題なくインストールできるようになっている。

Zune SoftwareをインストールしてWindows Phoneを認識させたら、Windows Phone SDKの「Windows Phone Developer Registration」を起動してApp Hubを介してデバイスを登録する。そしてVisual StudioやExpression Blendで作ったプロジェクトをビルドする。ビルドするとプロジェクトフォルダの「Bin」-「Debug」フォルダに.XAPファイルが生成する。これがアプリケーションのパッケージだ。これをWindows Phone実機に転送するには「Application Deployment」を使う。

写真は雑誌に載っていたサンプルコードを参考にしてとりあえず作ってみた時計アプリケーションだ。簡単なプログラムでもこうして実機で動くことが確かめられると嬉しい。作ったという実感が持てる。