基礎プログラミング

基礎プログラミング
第2回(2007年4月11日)
計算機の基礎知識:計算機の構成と入出力
計算機内部の仕組みに迫る!!
プログラミングを行う上で,最低限
計算機について知っておくべきこと,
用語を理解します
プログラムを書くのに計算機のことを
少し知っておいたほうが,後々悩まなくて
済む
1
見えるものと見えないもの
見えるもの


出力装置:ディスプレイ
入力装置:キーボード,マウス
(外からは)見えないもの



メモリ
ハードディスク(HDD)
CPU
見えない部分がプログラミングには重要


見えない部分をいかに「想像」するか?
見えない部分を想像するには,現実世界のモノや現
象と結びつけよう(メタファの利用)
2
パソコン,OSを調理場に例えてみる
(キッチンメタファ)
CPU=料理人
HDD=冷蔵庫・食料棚
メモリ=シンク・調理台
料理人が,冷蔵庫や食料棚から食材をだして,
シンク・調理台で洗ったり切ったり,火をとおした
りして,加工する

加工したものを皿に盛って食べたり,また冷蔵庫に入
れたりする
CPUが,HDDからデータを取り出して,メモリに展
開し,計算する

計算したものを画面上のウィンドウで表示したり,また
3
HDDに入れたりする
Operating System=キッチン
計算機の電源を入れると,HDDから
OS(Operating System)が起動する

仮設キッチンを倉庫から取り出して設営
OSが起動したら,やっと作業開始

仮設キッチンが組みあがったら,調理開始
開発用ソフトなどもHDDからメモリに展開さ
れる

包丁や鍋などの道具も棚から調理場に出して
使う
必要なものはすべて「HDD」から取り出し,
4
メモリに展開して使う
アルゴリズム=調理手順
料理にいろんな作り方があるように,プロ
グラミングでもいろんなデータ処理の仕方
がある


洗い場を占領する洗い方
メモリを占有する計算,処理
料理における調理手順=プログラミングに
おけるアルゴリズム
手慣れた人ほど,段取り&手際がよい

料理にもプログラミングにも共通
5
今日の重要なポイント
メモリ(調理場の広さ)は有限なので,
できるだけ節約して使うプログラムを書くべき

適度な占有量で動くプログラムは他のプログラムやOSの
動作にやさしい
最近はメモリが十分あるので,がちがちに節約しなく
ても動くが,ちょっと大きめのデータを同時に扱おうと
すると,すぐに身動きがとれなくなる

破綻しにくいプログラムを書くのは実は結構難しい
手慣れた人は,与えられた課題と現状のリソースを
瞬時に見極め,最適に利用して課題をこなしていける
6
ファイルの種類
テキストファイル

テキストエディタで編集できる(人間が読みやすい)
 メモ帳で書いた文書ファイル,メール文書
 Webページ(HTML),CSV,Postscript(ページ記述言語)
 プログラムのソースコード
バイナリファイル

テキストエディタ以外の特別なソフトをつかわないと
作成や編集が困難 (計算機が読みやすい)
 画像(JPEG, PNG, GIF)
 圧縮ファイル(zip, lzh, jar)
 実行ファイル(exe)
7
ファイル名
(ファイルの中身を表す文字列).(拡張子)



拡張子:ファイルの種類を表す文字列
MS-DOS(Windowsの前身のOS)では,
(8文字).(3文字)の制限があった
その歴史的な「なごり」で,拡張子は3文字以内が使
われている (特にWindowsではその傾向)
 例:index.html → index.htm


Windowsでは,今でも拡張子によって表示するアイコ
ンや,ダブルクリック時の起動ソフトを決定している
Unix系OSでは,拡張子は単なるファイル名の一部
 例:hogehoge.tar.gz (tarという複数ファイルを結合したファ
イルを,GNU zip 形式で圧縮したもの)
8
いろんな拡張子
.txt
.html, .htm
.zip
.cs
.exe
.sln
.csproj
9
隠したいファイル・フォルダはドット
で始まる名前
フォルダ名(ディレクトリ名)


フォルダには「拡張子」の概念は無い
. (dot)で始まるフォルダは隠しフォルダ
 Windowsではフォルダオプションを設定しないと,表示されな
い

. (dot)で始まるファイルは隠しファイル
. (dot)で始めるのはUnix系の流れ
隠しファイル,フォルダといっても中身がみえない
わけではなく,ユーザに存在を意識させないよう
にするだけ(開けばまる見え)
10
Windowsのフォルダオプションで
拡張子,隠しフォルダを表示する設定
(強く推奨!!)
「マイドキュメント」を開く(ダブルクリック)
「ツール」「フォルダオプション」を選ぶ
「表示」タブを選ぶ
(1)「ファイルとフォルダの表示」の「すべて
のファイルとフォルダを表示する」に◎
(2)「登録されている拡張子は表示しない」
のチェックを外す
最後に,上の「すべてのフォルダに適用」
ボタンを押す
11
Any Question?
12
ソースコードから実行ファイルを生成
人間が読み書きしやすいソースコードをコ
ンパイラ等でビルドすると,実行ファイル
(プログラム)ができる
Program
Program
SourceCode
Program
SourceCode
File
SourceCode
File
(.cs)
File
(.cs)
(.cs)
Program
File
(.exe)
13
C#(シーシャープ)
Microsoftが開発したオブジェクト指向プログラミン
グ言語

中間コード(MSIL:Microsoft Intermediate Language)
を一旦作り,それを各OS(プラットフォーム) 個別の実行
環境CLR (Common Language Runtime,.NET
Frameworkの一部) がネイティブコードに変換して実行
文法や概念が,Sunが開発したJavaに非常に似て
いる


(Java) Javaバイトコードを実行するJRE(Java Runtime
Environment)
(C#) MSIL形式のファイルを実行するCLR
14
Visual Studio .NET 2005
統合開発環境(IDE:Integrated
Development Environment)


プログラムの編集,ビルド,デバッグの機能が
統合された便利なプログラミング環境
無料版も存在(Express Edition)
 http://www.microsoft.com/japan/msdn/vstudio/
express/ からダウンロードできる
C#, Visual Basic, Visual C++ などの複数
のプログラミング言語に対応
15
VS2005における概念
プロジェクト:プログラムファイルを管理する入れ物


1つのプロジェクトは,1つの実行ファイルを作る
スタートアッププロジェクト:デバッグ実行時に起動する実
行ファイルを作るためのプロジェクト(通常は1つ)
ソリューション:複数のプロジェクトを管理する入れ物
ソリューション
Hello.sln
プロジェクト1
プロジェクト2
プロジェクト3
Hello.csproj
Hello.cs
Umi.csproj
Umi.cs
Yama.csproj
Yama.cs
16
VS2005 プログラミング手順
(3)
(2)編集
ボタンでデバッグ実行
(1)編集したい
.csファイルを
[DBLClick]
で選択
17
VS2005に関連するファイル
Hello.sln (ソリューションファイル)
Hello.csproj (プロジェクトファイル)
Hello.cs (C#プログラムファイル)
Hello.exe (実行ファイル)

ダブルクリックで実行できる
Hello.pdb (プログラム・データベースファイル)
Hello.suo (Solution User Options)

VS2005が内部で使用するファイル
18
SVN4Lec とは何か?
Subversion(SVN)を使って講義演習ファイルの取
得と,作業後の演習ファイルやレポートの提出を
簡単に行うためのツール


三浦がJava言語で作った
Subversion,Tracは他の人が作った既存のツール
従来:Webブラウザからダウンロード~圧縮ファ
イルを展開~演習~メール送信
SVN4Lec:ボタン1つでダウンロード~演習
~ボタン1つで更新ファイルのみ送信

面倒な操作が減り,その分演習に集中できる(はず)
19
SVN4Lec の入手
http://css.jaist.ac.jp/~miuramo/svnlecture/
からログイン


アカウント情報(アカウント名,パスワード)はメールの
手順に従って,自分が設定したもの
忘れた場合は,「パスワードの再発行」を押し,Eメー
ルアドレスの@より左の文字列(s075####) を入力
し,届いたメールに従う
リンク「講義ファイルマネージャ SVN4Lecのダウ
ンロード」をクリック (kisoPro.zip)
ダウンロード~ダブルクリックで展開~フォルダ
“kisoPro” を自分の好きな場所に移動
(ex. デスクトップ, マイドキュメント, etc.)
20
SVN4Lec の起動
(kisoPro\) SVN4Lec.jar をダブルクリック
下のようなウィンドウが開く
21
(1)ファイルの取得・更新(Update)
一番左のボタン

を押す
初回のみ,アカウント名,パスワードを入力
 パスワードは .svnuserpass に保存される
22
(2)作業開始
(kisoPro\01Hello\) Hello.sln を[DBLClick]

“ソリューションエクスプローラ”のProgram.csを
[DBLClick]~左側の領域でプログラムを編集
23
(3)作業済みファイルの差分提出
左から2番目のボタン
を押す
24
(3)作業済みファイルの差分提出
Commit Log (作業内容に関する一言メモ)を必ず
入力し,“Apply State Changes, and Commit “を
押す
修正したファイル
が,modified
として表示され
チェックがついて
いることを確認
25
提出済みファイルの確認
“Committed to revision ###. Done” が
表示されていれば,送信成功
ちゃんと差分送信されたか調べるには,




(1)
を押す(Webブラウザが起動する)
(2)右上の“Login”~アカウント情報入力
(3)“コミットログ”~Chgset (チェンジセット)の
[###]
(4)変更点のみ表示される
26
取り消し:Revert
編集作業内容(差分)を取り消して,
取得したときの状態(Revision)に戻す
27
履歴(Log):タイムマシン的利用
差分をサーバで管理しているので,フォルダ内を
過去の状態(Revision)に戻ることが可能

(Operation->ShowLog) を押す~戻りたい
Revision上でダブルクリック
過去のRevisionを取得し戻ったところから編集し,
再度差分提出(コミット)することも可能
注意1:過去に戻ると,“kisoPro”以下の全フォル
ダに影響します
注意2:過去に戻る前には,必ず現状を差分提出
(コミット)しておくことをおすすめします

コミットしないと修正点が取り消される(Revert)
28
作業コピー (Working Copy)を
複数の計算機(A,B)に置いた場合
Aでコミットしたら,Bで作業する前に更新 (Update)
しないとBは古いまま作業してしまうことになるので
注意

この点に注意すれば,いくつでもWCを作れます
 USBメモリに入れても使えます
作業前に,まず一度Updateする習慣を

教員がメッセージやコメントを直接書き込む可能性有り
作業がひと段落したら,適宜コミットすることを
おすすめします
 サーバ側で差分ベースで管理しているので,万一パソコンが
固まったり壊れたりしてもダメージが少なくて済む
29
今回の実習課題
SVN4Lec をダウンロードし実行~ファイル取得
~01Hello\Hello.slnからVS2005起動~プログラ
ム編集~CommitLog(作業内容コメント)を適切
につけてコミット
課題:”…”(double quote)で囲まれた文字列を
変更し,自己紹介文を表示するプログラムを作
成してください



複数の文字列を表示したいときは,
Console.WriteLine(” … ”);を複数書く.
文字列内で改行したいとき
は ”Line1\nLine2\nLine3”のように \n を入れる
文字列をつなげるときは ”Line1”+”\n”+”Line2”のよ
うに+をはさむ
締切:4月14日(土) 23:59までにコミットすること
30
次回の予定
はじめてのプログラミング


定数と変数
キーボードからの入力をプログラム内で利用
する
31
オフィスアワー
月曜3限(13:30-15:00)
(特に授業に関する)質問,相談にこたえま
す
知識1棟5F
メールはいつでもかまいません

miuramo@jaist.ac.jp
32
アナウンス(宣伝)
!
研究室紹介(4/16-5/11) @中講義室



18:30~20:00
4月18日(水) 宮田,國藤,三浦,羽山
遅い時間帯ですが,ぜひ聴いてください!!
アイデアマラソンのセミナー @中講義室

4月27日(金) 15:10-18:00頃
 C411 知識創造論(國藤教授)の一貫

特別講師:樋口健夫先生
 http://www.idea-marathon.net/
 当日参加も可ですが,三浦にメールで参加表明しておくと,よ
いことがあるかも.
33
(右上のマークについて)
...重要!!
...設定しておいてください
...紙にかいてみる,振り返って
みる
...実演で説明
34