基礎プログラミング

基礎プログラミング
第3回(2007年4月16日)
はじめてのプログラミング
プログラムを少しずつ実行する方法
プログラム実行の流れ
プログラムを指定した時間一時停止する
数値の記述と計算
ユーザからの入力を受け付ける
文字列の長さを得る
文字列を数値に変換する
1
前回のおさらい
「拡張子」は重要

(#02-p2-s11)
Windowsの場合,拡張子が起動するアプリ
ケーションを決定する
Visual Studio .NET 2005でプログラム作成
1. Hello.sln から起動
2. VS2005内からProgram.cs ファイルを開いて,
編集する
3. ビルド>デバッグ開始 で実行
SVN4Lec (課題提出用SVNクライアント)

更新 (Update), 差分提出 (Commit)
2
コンソール(Console)とは
テキストによる入出力を行うための仕組み



キーボードからの入力を受け付けたり,処理結果
を画面に表示したりする
元々の意味は,(大型)計算機に直接接続された
入出力装置,制御卓
遠隔地から接続する入出力装置は「ターミナル
(端末)」と呼ぶ
3
コンソールアプリケーションとは
テキスト中心(Character-based User
Interface:CUI)のアプリケーション
ウィンドウアプリケーション(Graphical
User Interface:GUI)
画面にはテキストしか表示できない
短いプログラムで簡単に書ける


プログラミングの基礎を学ぶには最適
「基礎プログラミング」ではコンソールアプリケー
ションを作りながら学んでいく
4
コメント (//… , /* … */ ) をつけよう
コメント:ソースコード内に記す覚え書き
自分がプログラムを修正するときに,どこを直
せばよいか思い出しやすい

自分で書いたプログラムでも,時間が経つと「さっ
ぱり分からない」ということがよくある
他の人に,プログラムの中身を理解してもら
いやすくする
コメントをつける2つの理由:(1)未来の自分
のため,(2)他人のため
5
少しずつ実行(ステップ実行)
プログラムを1行ずつ実行するには,[F10]を押しま
す.

ウィンドウが重なるので並べて配置してください
VS2005ウィンドウがアクティブになっているときに,
[F10]をおすと,1行実行し,次の行に移動する
以下を調べてください



最初は,どこからスタートしていますか?(どこが黄色く
なっていますか?)
Console.ReadLine();で止まったときは,コンソールで
キー入力(+Enter)すれば,×ボタンに頼らずに [F10]の
みで最後まで実行・終了できます.
6
最後(終了する直前)に黄色くなるのはどこですか?
プログラム「実行」の流れ
プログラムを実行すると,
Program.Main(){…} の ...(中身)を,1行
ずつ実行する
; (セミコロン)で区切られた内容が「1行」
上から下へ
() の中から順番に実行される
コメント部分は無視される
7
実行途中での一時停止と,終了
Console.ReadLine(); と書くと,Enterが押されるま
で一時停止
System.Threading.Thread.Sleep(ミリ秒数);と書く
と,指定したミリ秒だけ一時停止
Environment.Exit(0);と書くと,プログラムの
途中でも終了
8
数値の記述と計算
「文字列」以外にも,計算結果を表示できる

「3割る5」は0.6だが,3と書くと小数点切り捨て
 3.0 と書けば小数点以下も計算してくれる

( ) で囲まないと,エラーとなる
9
計算結果を使った待ち秒数指示
Thread.Sleep() メソッドの引数に,計算結果
を入れる
(メソッド=よく使う,便利な処理をひとかたま
りにして,少しの記述で使えるようにしたもの)10
これまでに作ったプログラムの欠点
あらかじめプログラムに書いておいた文字列
や,計算の結果しか表示できなかった


自己紹介の表示
計算結果の表示
ユーザの反応によって振る舞いを変えたい
ユーザからの入力を受け取るにはどうしたら
よいか?
11
キーボード入力文字列を受け取る
Console.ReadLine()を使うと,ユーザがキー
ボードで入力した文字列に置き換えられる
12
文字列に含まれる「文字の数」
[文字列].Length と書くと,文字列の文字数
を表す「数値」に置き換わる
13
文字列を数値に変換
int.Parse([文字列]);と書くと,数字を表す文
字列を数値(整数)に変換できる

int は Integer の略
int.Parse(”100”); → 100
int.Parse(”-30”); → -30
14
提出課題A (第1回),課題1
(課題1)以下の内容をすべて盛り込んだプ
ログラムを作れ(Hello.csに追記で作成)
1. 自己紹介文の表示(前回課題のままでよい)
2. 1日24時間は「何秒」かを「計算して」表示
3. ユーザに名前を入力してもらい,それを使って
「こんにちは、○○さん」と表示
4. ユーザの名前をもう一度尋ね,その名前に含ま
れる文字数を表示

1~2の間と,4の後で,それぞれ3秒待つこと

ユーザに入力させる場所では,入力を促すメッ
セージを表示し,親切なプログラムにすること
15
提出課題A (第1回),課題2
02WaitSecを配布します(Updateしてください)
(課題2)ユーザに数値(整数)を入力してもら
い,その秒数だけ待ってから終了するプログ
ラムを作れ



ユーザに待ち秒数の入力を促すメッセージを表
示すること
待った後,「指定した秒数が過ぎました」といった
メッセージを表示すること
02WaitSec\WaitSec.sln を開き,WaitSec.cs の
// (write your code here)
の部分にプログラムを書いてコミットすること
16
コミット時のログメッセージ
2つの課題を,それぞれコミットする場合は


Report-A(1)
Report-A(2)
2つの課題をまとめてコミットする場合,

Report-A(1)(2)
という半角英数文字列をログメッセージに
含めてコミットすること
(例:Report-A(1) 案内メッセージをわかりやすく修正)
締切前であれば再提出(コミット)可能.ただし
上記の半角英数文字列を毎回含めること 17
Report-A(1)(2) 締切
4月17日(火曜日) 23:59
提出課題(A~F)の締切日を過ぎ
て提出した場合,超過日数を減
点します

4月18日に提出した場合,-1点
不明点はなるべく授業時間中に
18
解決するようにしてください
今日のポイント
プログラムが動く順番



Main(){…} の中
上から下,1行ずつ
() の中を先に計算
プログラムの一時停止

Thread.Sleep() メソッド
文字列の長さ,文字→数値の変換


文字数を得る: ”hoge”.Length
数値に変換する: int.Parse(”100”)
19
次回(4/18)予定
演算子,変数の導入
入力された文字列の「保持」と「再利用」の方
法
データ型の種類と,取り扱い方法の違い
20
21
SVN4Lec過去に戻るときの注意
02WaitSecを編集中に,“distribute
02WaitSec” よりも前の過去に戻らないこと
02WaitSecが存在しなかった過去に戻ると,SVN
の管理下から外れる
 一旦管理下から外れた状態で,現在に戻ろうと
すると,フォルダが既にあるため
Failed to add directory '02WaitSec': object of
the same name already exists
というエラーになる
 エラーから復旧するには,(1)VS2005終了(2)
02WaitSecフォルダを削除(3)Update で復活 22

フォルダ毎に過去に戻りたいとき
(例えば,01Helloの配布時に戻るとき)
01Helloフォルダに,SVN4Lec.jar をコピーす
るか,もしくはショートカットを作成し,そこから
実行する

ショートカットを作成した場合は,ファイルのプロ
パティの作業フォルダを”…\01Hello”に変更して
おく
下のように,Directory:表示が個別フォルダ
になっていることを確認してから,過去に戻る
23
(再掲)拡張子,隠しフォルダを
表示する設定
「マイドキュメント」を開く(ダブルクリック)
「ツール」「フォルダオプション」を選ぶ
「表示」タブを選ぶ
(1)「ファイルとフォルダの表示」の「すべての
ファイルとフォルダを表示する」に◎
(2)「登録されている拡張子は表示しない」の
チェックを外す
最後に,上の「すべてのフォルダに適用」ボタ
ンを押す
24