C言語は少し休止。

 少し間が空いてしまいましたが、「豚と一緒にC言語」はもう少しお休みを頂きます。
 レジュメを作る時間が取れないのと、講座の方針を少し変更しようと思っているので、その準備や資料を集めるのに時間がかかっています。
 まだ詳細は決定していませんが、普通の講義方式では無く、練習問題を中心に講座を進めていこうと考えています。あれこれ知識を詰め込むだけでは退屈するし、問題解決の技術も身に付かないので……。豚が教員時代に作成した提出課題を保存してあれば良かったのですが、離婚したときに何もかも投げやりになって、PC関連の資料を洗いざらい処分してしまいました。ですので、市販の問題集を豚なりにアレンジして、例題とその解説、そして実際の出題と言う感じで進めていければと思います。

 もう暫くお待ちください。

 午前11時56分

豚と始めるC言語 第0.5回

 前回はこの講座を始める下準備としてVisual Studio Community 2019をインストールして頂きましたが、皆さんの環境では上手く行きましたでしょうか?
 Visual Studioは統合開発環境と言って、エディタ・コンパイラ・デバッガなどのツールが一つにまとまったプラットフォームです。
 エディタというのは前回実際にプログラムを書き換えて頂いたと思いますが、あのツールの事です。プログラムを実際に記述していくためのツールで、誤解を恐れずに言えばワープロのプログラミング専用版ですね。

 コンパイラは、書いたプログラムをコンピュータにわかる言葉(機械語、マシン語とも言う)に翻訳するツールのことです。前回使用したのはVisual C++と言うもので、C/C++で書かれたプログラムを機械語に変換するものです。

 デバッガと言うのは、プログラムのミス(バグ)を見つけるためのツールで、プログラミングには必須のツールと言っても良いでしょう。この講座でも後々使っていくことになります。

 さて、前回作って頂いたプログラムのフォルダ(ファイル)を開いてみてください。最初の手続きのところで指定した場所(憶えていますか?)に、test0と言う名前のフォルダが有ると思います。どうしても見つからない方は、お手数ですが前回の記事を参考に、再度作成してください。

 test0のフォルダの中には
.vs(隠しフォルダなので、Windowsの設定によっては見えない場合がある)

Debug (デバッグ用のフォルダ)

test0 (各種ファイルが作成されるフォルダ)

test0.sln (プロジェクトファイル)

 の各種ファイルやフォルダが作成されていると思います。
 test0.slnとファイルを開いてみてください。Visual Studioが起動して、前回書いたプログラムが表示されたと思います。
 このtest0.slnと言うファイルは、作業の全てを管理するファイルで、プロジェクトファルと呼ばれます。通常はこのファイルを起動して、作業の続きをする事になります。間違って消してしまうと非常に面倒ですので、気をつけてください。

 では前回作成したプログラムを見てください。

#include <stdio.h>

int main()
{
    printf (“Hello World!\n”);
}

 このプログラムは「Hello World!」という文字列を、単純に画面に表示するだけのプログラムです。
 ここでお断りですが、このブログ上に書かれているプログラムをコピー&ペーストして使用することは絶対に止めてください。
 ブログの整形のために色々と加工してありますので、そのままエディタにペースとしても実行できません。エラーが大量に発生しますので、必ず面倒でも手入力して下さい。

 さてプログラムの内容ですが、最初から訳が分からない文で溢れかえっていますね。
 今回はこのプログラムの詳細は勉強しません。そこに至るまでに学んでおかなければならない基礎知識が沢山あるからです。いきなり#includeはプリプロセッサと言って……と解説されても混乱するだけだと思うので、今後時間を掛けてゆっくり勉強していきます。

 わからないなりにプログラムを見ていくと、printfと言う単語が目に付きます。英語のprintと言う単語に似ていますね。印刷とか印刷物という意味です。
 そして( )の中には実際に表示した文字列「Hello World!」があります。勘のいい人は気が付くと思いますが、printfと言うのは( )内の文字列を画面に印刷せよという命令(厳密には違いますが、今はそう憶えて下さい)です。

 では、「こんにちは!」と画面に表示するにはどうすれば良いでしょうか?

    printf(“こんにちは!\n”);

 と書き換えて実行して下さい。実行の手順は前回の記事を参考にして下さい。ビルド(この講座ではコンパイルと呼びます。)して画面下部のウィンドウに

========== ビルド: 1 正常終了、0 失敗、0 更新不要、0 スキップ ==========

 と表示されたのを確認してから、デバッグから実行して下さい。画面には

こんにちは!

 と表示されていると思います。
 ただこれだけのプログラムです。だからなんだという話ですが、このプログラムに至るまでには本当に色々な知識が必要になります。次回以降、その基礎知識について勉強していきます。

 このブログを読んでいる人は豚がコンピュータ専門学校の教員だったことはご存じだとは思いますが、そこで学んだ2年間と教員になってからの知識と技術を、惜しみなくこの講座で公開していこうと考えています。
 学校にはホワイトボードと実際にプログラムを書きながら指導する環境があるのでやりやすいですが、このブログという一方通行の環境で、しかも図表を使うこと無く解説するには相当の無理が生じてきます。
 ですが、出来るだけわかりやすく詳細にお伝えできるように、精一杯頑張っていくつもりです。

 この講座には強みもあります。実際の学校とは違ってコマ数に縛られること無く、のんびりと詳細に講座を続けていけます。
 正直言って、ここまでの知識はどの書籍でも最初に扱っているところです。ですので、わかりにくければ手頃な入門書を参考に環境構築からHello Worldまでを理解して頂くのが良いと思います。その際の注意としては、内容がVisual C++に対応していること。でないと、環境構築などの話はすっ飛ばされて、いきなりprintfがどうの~と言う解説から始まってしまいます。

 しかし、豚の講座の強みはむしろ環境に左右されなくなってから、C言語の内容に本格的に触れてからです。他の入門書では触れない内容にまで突っ込んで解説をしていこうと思っています。

 それでは、今回はこの辺で終わります。
 お疲れ様でした。

 午後0時00分

昨夜はレトロゲームを……。

 昨夜はレトロゲーム関連の作業を、4時間ぶっ通しでやっていました。今はスーパーファミコンに関する作業ですが、まだまだ10分の3程度終わっただけです。先月の終わりあたりから始めたこの作業、まだ当分かかりそうです。

 メルカリで書籍を2冊、購入しました。いずれもC言語関連の書籍です。一つはポインタに特化した書籍で、一冊丸ごとポインタの解説に占められています。
 もう一つは基本情報技術者の国家試験対策の書籍です。豚がこれから受験しようというわけでは無く、ブログで始めた「豚と一緒にC言語」で取り扱う課題のサンプルにならないかなと思っています。実際教員時代にも提出課題を作成するのに、本当に色々な書籍を参考にしていました。課題は解くよりも作る方が何倍も難しいです。
 しかしこの本、思っていたのと少しばかり内容が違っていました。問題集かと思って購入したのですが、内容はC言語講座を小難しい言葉を多用して国家試験の威厳を持たせたような書籍でした。確かに多少は問題も掲載されているのですが、C言語を知っている豚が読んでも眠くなってくるような書籍です。著者はC言語の入門書などを多く著している有名な方なのですが、ちょっと失敗したかな……。

 そんな感じで昨日は長時間PCにどっぷりと浸かっていたので、今日は反動でモチベーションが上がりません。C言語講座は週に3回ぐらいのペースでアップしようかと考えていたのですが、実際の業務でも無ければそこまでこなすのは難しいですね。実際に口とホワイトボードを使って講義できるのなら、そのくらいのペースは余裕でこなせるのですが、読者(居るのか居ないのかわからないですが)の方の理解度を測る目安が何も無いので、独りよがりになってしまわないか常に気を配る必要があります。
 そう言う事で少しペースは落ちるかも知れませんが、続けて行きたいと思いますので、少しでもC言語に興味のある方は読んでみてください。
(このページの右端の項目の中から「C/C++」を選んで頂くと、C言語関連の記事がまとめて読めます。)

 午後2時54分

豚と一緒にC言語 第0回

<C言語を使える様にしよう>
 今回始める講座は、Windows環境でC言語を基礎から一緒に学んでいく講座となります。「一緒に」と言うからには、豚も一から復習するつもりで勉強します。
 この講座に必要な機器は、Windows10のOSが動いているパソコンだけです。必要な開発環境は、フリーで公開されている「Microsoft Visual Studio 2019 Community」です。

 いきなり他力本願になるのですが、Vsiual Studioのインストールは、後々利用予定の「DXライブラリ」が公開されている「DXライブラリ置き場」内の「Visual Studio Community 2019 を使用した場合のDXライブラリの使い方」を参照し、各自でインストールしてください。「DXライブラリ」本体は、まだインストールしなくても結構です。
 かなり大きな開発環境になるので、インストールにはそれなりの時間がかかると思います。また事前にマイクロソフト アカウントを取得しておくと良いでしょう。(恐らくWindowsを使っている段階で、ほぼ全員が取得していると思います。)

 これから豚と勉強していくのは、所謂「Windowsアプリ」ではなく、「コンソールアプリ」と呼ばれる種類になります。講座が進んでいくと先程の「DXライブラリ」を用いて「Win32アプリ」と呼ばれる物も作っていきますが、それはまだまだ遠い先のお話です。

<お決まりの “Hello World!” を
 私たちがこれから使っていくプログラミング言語は、C言語です。ですが、Visual Studio 2019に組み込まれている言語はVisual C++と言う、C++言語を処理するためのものです。
 C++言語はC言語をまるっと包括しているので、C言語でプログラムを書いても問題は起こりません。頭の片隅にでもその事を覚えておいて下さい。
 それでは、コンソール画面に Hello World! と表示するプログラムを書いてみましょう。

 先ずはVisual Studio 2019を起動してみて下さい。暫くするとメニュー画面が表示されると思います。
 そのメニュー画面で[作業の開始]の中の[新しいプロジェクトの作成(N)]を選びます。

 次に進むとまたメニュー画面が表示され、どんなタイプのプロジェクトを作成するかを選択する様に促されます。
そこで「コンソールアプリ Windowsターミナルでコードを実行します。既定では”Hello World”を出力します。」
と書かれた物を選択し、次へ。

 プロジェクト名や場所を設定する画面が表示されるので、

プロジェクト名:test0
場所:任意の場所を指定

 以上を設定して[作成]ボタンを押します。すると画面が変わり、何やらプログラムが表示されます。
 今表示されているのも、実は Hello World! とコンソール画面に表示するプログラムなのですが、これはC++言語で書かれたもので、C言語ではありません。
この講座でもいずれはC++言語を扱っていきますが、今は必要ないので以下の部分を書き換えます。(\は¥と読み替えて下さい。)

#include <iostream>

int main()
{
   std::cout << “Hello World!\n”;
}

 の部分を削除して、以下のように書き換えます。

#include <stdio.h>

int main()
{
  printf(“Hello World!\n”);
}

 書き換えが終わったら、画面上部のメニューバーから[ビルド(B)]を選択し、更にメニュー内の[ソリューションのビルド]を選択します。

 画面下部の出力ウィンドウに、

========== ビルド: 1 正常終了、0 失敗、0 更新不要、0 スキップ ==========

 と表示されているのを確認して下さい。もし 1 失敗 とかになっていたら、どこか書き間違いがあると思われるので、もう一度よくプログラムを見直して下さい。

 メニューバーの[デバッグ(D)]を選択します。更にメニューの[デバッグ無しで開始]を選択します。

 すると自動的にコンソールウィンドウが開き、一番上の行に

Hello World!

 と表示されているはずです。

 さて、今日はC言語のプログラミングと言うより、Visual Studio 2019 Communityと言うツールの使い方が主になってしまいましたね。
 次回以降は、ここまでの作業が出来ている状態と仮定して進めていきますので、今回作成した test0 と言うプロジェクトを、フォルダ毎幾つかコピーを作っておくと良いですね。

 Visual Studio 2019 Community の操作方法がややこしく、初めての人にはわかりにくいと思います。豚もまだ慣れていませんので、一緒に勉強しているあなたと同じレベルだと思って下さい。頼りない講師で申し訳ありませんが、一緒に暗中模索しつつ楽しんで勉強していきましょう。

 それでは今回はこれで。次回以降、プログラムの詳細と今日の作業の意味について解説していきます。
 お疲れ様でした。

 午後4時23分

30年前のテキスト。

 閉鎖していたパソコン部屋(腐海に没しているため)のドアをさつきに突破されたので、久しぶりに足を踏み入れてみました。
 書棚を眺めているとC言語の入門書があり、そのうちの一冊に豚の旧姓のゴム印が押してありました。書名は「入門C言語」と「実習C言語」で、「入門C言語」の方には今の姓のシャチハタ印と、何故か鉛筆で教え子の署名が……。豚が貸し出したテキストに勝手に名前を書かれたのか、それとも元々その生徒の持ち物だったのが何らかの経緯で豚の手元に来て、豚の物になったのか……。27年前の出来事なので全く記憶にありませんが、豚の印を押してあるという事は、正規に豚の物になったと言う事でしょう。

「実習C言語」の方は、紛れもなく豚が生徒だった頃に配本されたテキストで、1990年初版発行の印刷がありました。当時から豚はテキストや教科書に書き込みをする癖は全くなくて、テキストは結構ボロボロになっていますが中身は綺麗な物でした。ノートに書いていたのか、いや豚はノートもまともに取っていなかったので、先生がホワイトボードで解説した事柄はその場で記憶していたんでしょう。自負になりますが、当時はそれくらいやってのけていました。(プログラミング言語に限りますが)
 フローチャートも、普通は先にフローを書いてからコーディングに移るのが正しい手順ですが、豚は先にコードを書いてから後でフローチャートを書いて提出していました。これが後々プログラマに転職したときに、大きな仇となったのですが、それは別のお話。

 テキストを眺めていると、30年前の生徒だった頃の思い出や、卒業してその学校の教員となってからの思い出が、走馬灯のように頭の中を流れてきました。人生で最も充実していた期間で、高校生~専門学校教諭時代は、本当に毎日が楽しかったです。社会人になってからも、勿論嫌な仕事もありましたが、物を教えるという喜びを知り得てからは、毎日が本当に楽しかったです。
 出来ることならまた教育現場へと戻りたいと、心から思っています。そう言う意味でも「C」の様な今となっては時代遅れの言語から、Pythonの様な今流行の言語まで、広く触っておきたいという気持ちがあります。
また、誰かに教えるという作業を、自己満足でも良いので再開したいと思いました。以前はYoutubeでプログラミング講座でもやろうかと思ったことがありましたが、未だ精神状態がその段階では無くて、余りに負担が大きいので断念しました。画質を求めなければ安価なカメラとマイクで始められるのですが、多分中途半端で挫折するでしょう。
 今考えているのは、以前少しだけこのブログで書いた「Macで始めるC言語」をWindows対応に変更して、再度始めから書いてみようかと思っています。Macの続きを書いても良いのですが、キャラクタコードが若干違っているので、Windowsで学習しようとする人向けに一々対応しなければいけない面倒さがあります。

 C言語も各社が色々と拡張していて、30年前のテキストをそのまま入力したのではコンパイラエラーを起こしてしまう状態です。(特にマイクロソフトの処理系は、独自仕様率が高いです。)
 VisualStudioで何らかの設定をすればANSIの規格でコンパイルできるんでしょうけど、方法がわかりません(と言うか調べる気も起きませんでした)。その辺を解決できたら、またブログで本当の初歩の初歩からCの講座を始めようと思います。と言っても読者は1~2名しか居ませんが。でも、どうやら検索エンジンで引っかかる様なので、たまたま見つけてくれた人に対していい加減なことは書けません。一冊の書籍を書くつもりで、編み続けて行きたいと思っています。

 午後3時38分

C++の復習終わり。

「やさしいC++ 第5版」を読了しました。やっぱり殆ど知っている内容だったので退屈ではありましたが、意外と忘れていたり当時勉強していない所もあり、今更ながら勉強になりました。ただ、クラスの組み方とか詳細に解説していたわけでは無く、その辺りは自分で工夫して書いて下さいみたいな感じだったので、少し物足りなかった面もありました。
 この書籍は1冊目に読むのに最も適している書籍として人気でしたので、この書籍を読んだ後、次に読むべき書籍も既に入手してあります。しかし、また初めから読み直すというのもしんどい話ですので、そろそろリビングPCで実際にコードを書きながらPC-98ではVisual C++6.0にてWindowsアプリを書く勉強に移っていこうと思います。

 同時にPythonも少しずつ同時進行に入ろうと思います。「都は一日にしてならず」。気長に続けて行くことが大事だと思いますので、途中で投げ出すこと無く続けて行こうと思います。

 午後1時00分

VC++6.0の本。

 例のトラウマになった本のVC++6.0版の書籍をメルカリで購入しました。

トラウマになった本のVC++6.0版

 トラウマ本はVC++2.0用の書籍だったので、VC++6.0版を購入しました。送料込みで680円でした。ブックオフオンラインなんかで有れば198円で買えるんでしょうけど、仕方が有りません。メルカリでも1,980円で売っている人も居たので、まぁ安く買えたかなと思います。程度はどうかわかりませんが、添付CDも揃っているので良いと思います。ちなみに定価は4,000円を軽く超えます。

 実は手元にもう一冊、同じものがあります。これはVC++6.0に添付されていたバージョンで、表紙がモノクロです。豚はMSDNで送られてきた物なので書籍は添付していませんでしたが、市販版と間違って先にメルカリで購入してしまいました。これにはCDも添付されて居らず、程度も余り良くないです。こちらは普段読みする用に使おうと思います。これらの書籍も、もう二度と入手出来ない物なので、読んだ後は大事に保存しておこうと思います。

 最近はよく古本を買うので、リビングに書籍の山が出来てしまいました。これらもボチボチと片付けていかなければいけませんね。

 午後6時52分

勉強に使うテキスト等……。

 基本となるC++を勉強するテキストは「やさいいC++ 第5版」(高橋麻奈)です。この書籍はC++の入門書の中ではダントツに人気が高く、非常に丁寧に解説していると言われる一冊です。
 Windowsプログラミングを勉強するテキストは「Visual C++プログラミング入門」(絶版です)です。このテキストはプログラマに転職した時、この書籍だけ一冊渡されて「これでWindowsプログラミングは勉強して」と言われた物です。誰が教えてくれるわけでも無く、自力で勉強しなければなりませんでした。未だにこの本を手に取ると、当時のことが思い出されてしまって、軽いトラウマに襲われます。1994年に出版の書籍ですので、今は書店では入手出来ません。豚もネットの古本を探し回って入手しました。多少書き込みは有りますが、程度の良い物が入手出来たと思います。300円位で買いました。
 綺麗なソースを書くためのテキストは「C Magazine」の連載や掲載リストを読んで、人が書いたソースに多く触れることと、「美しいC++プログラミング見本帳」(柏原正三)を使います。この本は初見ですが、綺麗なコードを書くことに特化された書籍のようです。今は絶版で新品では手に入りません。豚は198円で古本を購入しました。

 以上の3冊+Cマガを回して、勉強していくことになります。今月中に一回りできればなと思っていますが、どうなる事やら……。

 また途中経過はここで発表していきます。

 午後11時39分

PC-9821RaⅡ23、CF化成功。

 今日届いたCF化キットの2GBのCGを外して、別途購入した4GBのCFをセットし、本体に実装しました。最初は認識しないトラブルが有ったものの、基板にIDEケーブルがきっちり刺さっていなかったというケアレスミスでした。
 後はWindows95のセットアップ起動ディスクでfdiskをかけ、領域を確保。再起動後にformatコマンドでフォーマット。そしてWindows98起動ディスク(フロッピー)から起動して、CD-ROMドライブにはWindows98のCD-ROMをセットして再起動。後は手順に従って普通にインストールが完了しました。
 やはりHDDでインストール出来なかったのは、不良セクタが有ったためだと断定出来ました。

 次にWindows2000のCD-ROMをセットして、Windows上からセットアップしました。しかし、ブルースクリーンが出て断念。Windows98でVisual Studio 6.0をインストールして使うことにしました。
 で、VS6.0のインストールですが、肝心のプロダクトIDが見つかりません。21年前にマイクロソフトから送られてきたMSDNのVS6.0だったのですが、納戸やら腐海に没しているパソコン部屋を引っかき回して、ようやく発見しました。

 やっとの思いでVS6.0をインストールを完了し、PC-98でVC++6.0が使える環境が整いました。
 早速プロジェクトを作成して、Hello C++ World!を表示するコードを書いてみました。ちゃんと「using namespace std;」が使えるかどうかも確認し、無事にコンパイルも通りました。

 もう21年も前にリリースされたコンパイラです。豚が27歳の頃ですから、離婚した次の年ですね。丁度プログラマも辞めて、無職のプー太郎になった年です。いや、実際には親の会社の取締役と言う役職に就いていましたが、まぁ鬱真っ盛りで、自殺未遂なんかもやらかしたりしていた頃です。もうプログラムを書くことは無いと、持っていた資料や開発環境なんかを処分してしてしまった頃でもあります。よくVS6.0が残っていたなと思います。そのお陰で、今、資料を集めるのに苦労している訳ですが……。自業自得ですね。

 取り敢えずこれで、先日購入したMFCのリファレンスやC++の書籍を有効に活用することが出来ます。
 ちなみにPC-98RaⅡ23は、標準でLANポートが搭載されています。ですが、Windows98のサポートが切れて久しい今、敢えてネットには繋がない様にスタンドアロン環境で使っていくつもりです。新しいC++の規格に対応さえしていれば、DOS環境でも良かった位です。リビングのPCとソースをやりとりするときにはフロッピーディスク経由になってしまいますが、それで十分でしょう。

 と言うわけで、これからC++とMFCプログラミングを本格的に勉強していきます。

 午後11時03分

限界か……?

 PC-9821でBorland C++3.1を使ってC++の問題集を解いていましたが、コンパイラ自体が1992年の物なので言語仕様が古く、解答の通りに入力してもコンパイルが通らないと言う事が頻発しています。
 念のためソースをフロッピーディスク経由でリビングPCに移して、最新のコンパイラでコンパイルすると正常に通ります。多分、フリーで公開されているBorland C++5.5位なら、namespaceの問題もTemplateの二重定義も問題なく通るのではないかと思いますが、PC-98のMS=DOS版の最新コンパイラはBorland C++3.2だったと思うので、DOS環境で最新のC++を勉強するのは厳しいかも知れません。
 やっぱりPC-98ではC言語の復習とアセンブラの復習に止めておいた方が良いのかな……。

 豚の勉強も、C++からいきなり入るのでは無くて、C言語で綺麗なコードを書ける様に方向転換するべきではないかと思う様になりました。C言語は今日復習した「再帰」以外はほぼ完璧に使いこなせる自信はありますが、綺麗なコードが書けるかと言われれば全く自信がありません。プログラマ時代の末期に、上司から「ようこれで動いてたな……。」と言わせてしまうほどの複雑怪奇なコードを書いてしまうので、PC-98ではアルゴリズムの勉強を中心にしながら理想的なコードを書く練習、Windows環境では今更ながらプログラマ時代のトラウマであるMFCを使ったWindowsアプリを書く勉強をやっていこうと思います。MFCはプログラマを辞めてから全く使ったことが無いクラスライブラリなので、超入門書を一冊読み込んで触りだけでもマスターしたいと思います。
 アルゴリズムと綺麗なコードを書く練習は、今は廃刊となった「C Magazine」のバックナンバーを創刊号から順を追って読みながら、掲載されているコードを読むことで身につけていこうと思います。100冊以上あるので中々骨の折れる作業になりますが、人の書いたコードを沢山読めるので良い方法かなと思います。

 先日ブックオフに注文していた書籍が、たった今届きました。プログラマ時代に持っていた書籍ですが、辞めたときに「もう二度とプログラムは書くまい」と思って、当時所属していた大学の図書館に寄贈してしまった物です。かなり古いバージョンですが、MFCのリファレンスなのですが、電話帳みたいな書籍が6冊組みと言う構成です。今は書籍化されて居らず、MFCはヘルプで参照して使うというのがデフォルトになっていると思います。使い込まれた古本ですが、手元に置いておきたかったので買い直しました。

 本当は早くDXライブラリでドラクエもどきのコーディングに取りかかりたいのですが、基礎から勉強し直して綺麗なコードが書ける様になってから、改めて取りかかりたいと思います。

 取り敢えずKindleでダウンロードしたCマガのバックナンバーから読んでいこうと思います。週に2冊くらい読み終えれば良いかなと言うペースで読んでいこうと思います。

 午後7時51分