~ある日の出来事(2)~昨日は大学に泊まってしまったので、遅めの朝ごはんを食べに第2食堂に向かいました。すると、第2食堂の片隅で囲碁大会が開かれています。14人程度の参加者でしょうか。カメラを持っていないので、その場は食事をして立ち去りました。今日はオープンキャンパスもあるので、食事の後はシャワールームに向かいました。カメラを持って第2食堂に戻りました。すると、もう対局が終わってしまった組み合わせもあるようです。第2食堂そばのPCステーションでカタログを読んでいる先生がいます。PCステーション前でカタログを見ている先生です一昨年前退職なされ、現在は名誉教授ですこれはまずいと思い、慌てたのですが、後の祭りです。時間も昼時に近くなったため、食事をしている学生が増えました。囲碁大会を開いているようには、全く見えません。今日は、他にも色々行事があります。他の記事でお楽しみください。オープンキャンパス11月26日(土曜日)は、今年度5回目のオープンキャンパスでした。今回も天候に恵まれ、訪問された方も寒さを感じなかったのではないでしょうか。~入試直前、本番に備えよう!」でした。情報学部棟12階メディアホールで、大学概要ガイダンス、自己推薦入試ガイダンス、一般・センター方式入試ガイダンス等が行われました。相談コーナー、ソフト作成体験講座も開催されました。大学概要ガイダンスでは、大学の施設や現状、将来像などが説明されました。自己推薦入試ガイダンスでは、手続きなどの説明が行われました。適性検査の過去3年分の問題集が配布されました。一般・センター方式入試ガイダンスでは,入試日程などの説明が行われ「赤本」が配布されました。情報工学科に関するあらゆる相談の窓口が設けられました。今回の研究室公開は8階の松本研究室です。「データマイニングにより無限の可能性を発見しよう!」と題して,研究が公開されました。研究内容の説明の他に、高校生からは「研究室の数は?、食堂の数や内容は?、体育の授業はある?、大学生活の雰囲気は?、研究室はいつ頃決める?、通学バスの時間や本数は?、毎日学校に来なければいけない?、入学案内のパンフレットの研究室紹介は役に立つ?、履修する授業はどのように決める?サークル・部活動はある?」など、多数の質問がありました。1階ソフトウエア工房では、大学院生・4年生が4つの研究テーマを説明しました。「MIDI楽器の演奏情報を用いた楽器検索システム」、「自己組織化マップを用いたバイオメトリクス認証」、「スマートフォンを利用した屋内での位置情報取得システム」、「QRコードを使ったナビゲーションシステム」が紹介されました。高校生からは、「演奏の音がはずれた場合は認識できる?、どのような就職先がある?、コンピュータグラフィックは何科?、情報メディア科との違いは?」などの質問がありました。バイオメトリクス認証・自己組織化マップを説明する大学院生。音声をフーリエ変換し特徴を抽出して本人確認する(生体認証)のだそうです。高校生からは「カゼをひいた場合は?」などの質問がありました。﻿﻿5階ソフト実験室では、稲葉先生によるソフト作成体験講座が行われました。題目は、ビジュアルプログラミングによるアプリケーション作成体験講座~ビジュアルプログラミングでストップウオッチを作ってみよう~でした。保護者の方にも一緒に受講していただきました。体験講座の前の空き時間には、「授業の内容や雰囲気、通学方法や学校の様子」などの質問がありました。講義は、実際にパソコンを操作しながら行います。作成したプログラムは、特製CD-ROMに焼いて配布されました。本日は、神奈川工科大学オープンキャンパスへ御来校いただきありがとうございました。~ある日の出来事(1)~グラウンドにたくさんの年配の方がいました。ゲートボール大会のようです。少年野球開会式」(リンク)でも書かせていただきましたが、神奈川工科大学は地域の人に場所を提供しています。以下の写真は、全体像です。たくさんの人が来ています。遠くから見たところです.下の写真は、その一部をアップで撮ったものです。真剣勝負している感じですね。地域の皆さんの役に立っているのでしたら、幸いです。今日は、他にも色々行事があります。他の記事でお楽しみください。「宿題の解答」の解説ある朝、私の部屋の前に問題が貼られていた話をブログで書かせていただきました(リンク)。この記事は色々反響を呼んでいます。承認制ですが、コメントが書けるようになりました「最後の計算結果を返り値とする」のはRubyの仕様です。Rubyじゃあるまし、何故?とtwitterで話題に(リンク)前回の記事は、情報工学科の1年生の授業であるC言語の採点をしているTAの疑問からでした。同様に、情報メディア科の1年生の授業であるC言語の採点をしているTAから、同じような現象にあい、答えを知りたいという、質問があるそのため、解説記事を書かせていただきます。以前の貼紙(リンク)よりも丁寧に説明させていただきます。説明を貼り付けた状態です(再掲)■必要な知識1(レジスタとCPUの命令セットの知識)コンピュータはメモリ上にある値を直接計算することができません。レジスタと呼ばれるCPUの中にあるメモリに一旦コピーしてから計算します。以下の3段階の手順を踏んで計算します。■制限されたC言語でアセンブラ(レジスタ)の知識を学ぶx86の命令セットを、C言語の世界の代入文で表現すると、以下の制約を持っているC言語と解釈することができます。EAX;」の2行で表されます。EAX;」という3行の文で表されます。3;」という1行で表されます。レジスタには値が何も入りません。■必要な知識2(関数の返り値の受け渡し方)以下の話は、正確にはコンパイラ依存です。大体、以下のようになっています。関数に引数を渡すときは、スタックに値を積みます。関数の計算結果はレジスタを使って受け取ります。以下のような約束事で関数の値を受け取ります。関数が呼び出された側は、関数の終了直後に、計算結果をEAXレジスタに格納しておく関数を呼び出した側は、関数呼び出しから返ってきたら、すぐにEAXレジスタから値を取得する■ソースコードを読み解くソースコードとアセンブル結果とコメントを載せておきます。(EAXレジスタに入っている値を、呼び出し側が受け取る処理をする)■上記の予備知識を踏まえて解説つまり本来ならば「returnで渡す値はEAXレジスタに書き込んで置き」、そして、呼び出し側が受け取るわけです。returnがないので、EAXへの書き込みは、今回ありません。計算にも同じEAXレジスタを使うので、最後の計算結果が残ってしまっています。今回たまたま、「最後の計算結果の値」と「返す値」が同じなので、実際には値を返していないのに、返したのと同じ結果になっている、ということです。幾つか類題(?)を出しておきます。関数の中で、以下のようにローカル変数に代入したときは、a(b)の値が返ってきます。関数の中で、以下のようにローカル変数や引数に値を直接代入したときは、値は返しません。EAXレジスタを使わずに代入できるからです。関数の中で、以下のように比較して大きい値を返そうとしたときは、値を返します。比較するために、値をEAXレジスタに格納するためです。Cでは、return文が無いのでエラーになる。Studioと同様の結果を返す。地方入試に行って来ました神奈川工科大学は、推薦入試も地方会場があります。私は今年は、郡山(福島県)の担当でした。入試のことは皆さんも興味がおありでしょう。