2020年度都市環境学科プログラミング言語
2020年度都市環境学科プログラミング言語
担当教員: 姫野賢治
スタッフ: 岡本大史・干場希乃・八木笙太
1
ひめの けんじ
e-mail: [email protected]研究室: 2416室 / 内線: 1796
2020年度都市環境学科プログラミング言語
• 目標はプログラミング言語C#でプログラムが組めるようになること(一部Fortran90も紹介予定).
• 講義はパワーポイントを用い,pdfを配布.
• 講義で用いたスライドは今回や前回の演習課題(manabaではレポートと呼ぶ)の解答などとともに速やかにmanabaとwebに掲載の予定.
• 講義時間の一部を実際のプログラミングの作成等にも充て,演習課題と一体化した形式とする.
• 評価は中間・到達度確認試験,出席点,講義中の小テストおよび演習課題レポートの総合評価.
• 他人のプログラムの丸写し(コピペ)は減点の対象.
2
講義の進め方(1)
2020年度都市環境学科プログラミング言語
• 毎回座席を変更する.←ITセンター入口に掲示
• 出席は毎回の着席位置で確認する.
• 講義時間の終了間際に比較的基礎的な小テストの他,やや高度な演習課題(宿題)を付与する.
• 小テストは,その日のうちにmanabaから提出する.
• 演習課題は,次回の講義の開始時(10:50) までに,manabaから提出する.
• 自習中はC#の学習に無関係なことをしないで集中すること.←無意味なNetサーフィングなどはしない.
3
講義の進め方(2)
http://chuoprogram.web.fc2.com/
2020年度都市環境学科プログラミング言語
加工データ(出力データ)
生データ(入力データ)
プログラム
市販アプリ: Word, Excelなど
自作コンソールアプリ: C,C#言語など自作Windowsアプリ: Visual C#など
プログラムを用いて情報(生データ)を加工して,別の形のデータ(加工データ)に形を変えること
4
情報(データ)処理とは
2020年度都市環境学科プログラミング言語
• コンピュータにおけるプログラムとは,コンピュータにさせる仕事の手順書のこと
• プログラミングとは,コンピュータに実行させる処理(プログラム)を記述すること.
5
プログラミング言語とは
• そこでプログラミング言語を使用する
コンピュータは人間の言葉をそのままでは理解できない.
2020年度都市環境学科プログラミング言語
• 低水準言語 機械語
• 高水準言語
– 事務処理用言語 COBOL
– 技術計算用言語 Fortran90
– 汎用言語 BASIC,Pascal,C,C++,Java,C#
– Python(AI開発用によく利用される)
– 人工知能開発用言語 LISP,PROLOG
– 教育用言語 LOGO
– Web用言語 PHP,JavaScript
• Windowsアプリ用言語
Visual BASIC, Visual C#
6
プログラミング言語の種類
主にこれを学習する
一部これも学習する
一部これにも紹介する
2020年度都市環境学科プログラミング言語 7
プログラミング言語の歴史
手続き型言語
オブジェクト指向型言語(クラスを持つ)
Visual C++
Delphi
Visual C#年
1957
195858
19601960
1964
1970 1972
1972
1977
1983
19801991
1995
2002
19951995
2002
1987
1967
2001
2020年度都市環境学科プログラミング言語
• C#言語の優れている点
– 処理系が無料で提供される
– C++言語の特長を受け継いでいる
– Java言語の特長をほぼそのまま受け継いでいる
– 文法が厳密で実行時のエラーが起きにくい
– オブジェクト指向でWindows用ソフト開発可能
– 豊富なクラスライブラリ
– ガーベジコレクションによる記憶管理
– 例外処理
8
なぜC#言語を取りあげるか
実社会で広く支持されていることが主因
C++ → C++++
→ C#
2020年度都市環境学科プログラミング言語
・.NET Framework付属のコンパイラ
・CPad for C# .NET
ITセンターの各PCに導入済み.個人用PCにも導入可能.
9
練習問題・演習課題で使用する処理系
プログラムのソースコードを記述
処理系からのメッセージ
2020年度都市環境学科プログラミング言語
• .NET Framework付属のコンパイラ
10
C#の処理系の入手方法(無償)
C:¥Windows¥Microsoft.NET¥Framework64¥v4.0.30319¥csc.exe
• CPad for C# .NET
http://cpad.michikusa.jp/
http://chuoprogram.web.fc2.com/
にもURLと説明を示してある.自宅のPCにも容易にインストールが可能であるので,推奨.
数値は,バージョンにより異なる
2020年度都市環境学科プログラミング言語
• デスクトップ
– PC(コンピュータ)
– ローカルディスク(U:)
– MyDocuments
11
CPadの起動の前に
[ファイル]→[新規作成]→[フォルダ]で「CSharp」
という名称の新規フォルダを作成する.
※自宅等でも作業できるようにUSBメモリなどを利用すると良い.⇒この場合,F:¥CSharpなどのフォルダを作成する.
2020年度都市環境学科プログラミング言語 12
推奨するディレクトリ構成
MyDocuments
pl28Apr20
pl05May20
Hello.cs
HowAreYou.cs
pl12May20
HomeWorkA.cs
HomeWorkD.cs
4月28日講義分
CSharp 2020年の意味
・復習問題・演習課題などのサブフォルダを作るのも可
2020年度都市環境学科プログラミング言語 13
ITセンターでのCPadの起動
すべてのプログラム
09_開発
cpad for C#.NET
個人用のPCにcpadを導入した場合などは,デスクトップに,cscpad.exeという実行ファイルのショートカットを作成すると良い.
2020年度都市環境学科プログラミング言語
[実行]→[設定]から[基本設定]タブを選び図のように設定
14
CPadの設定のtips(1)
¥pl28Apr20
毎回
のようにこの下に新しいサブフォルダを作成する
USBメモリの場合,F:¥CSharp¥pl28Apr20
2020年度都市環境学科プログラミング言語
[実行]→[設定]から[フォント]タブを選び図のように設定
15
CPadの設定のtips(2)
2020年度都市環境学科プログラミング言語
[実行]→[設定]から[表示]タブを選び図のように設定
16
CPadの設定のtips(3)
2020年度都市環境学科プログラミング言語 17
CPadの設定のtips(4)
前ページの設定で改行コード,全角の空白,タブ,[EOF]がすべて見えるようになる.
: 改行コード, : 全角の空白: タブ, : [EOF](ファイルの終端記号)
2020年度都市環境学科プログラミング言語
• プログラムは,内部にメソッドをいくつか含むクラスで構成される.
• すべて半角英数字で書き,文の終わりはセミコロン.• [Tab],半角空白は使用可.全角文字は使用不可.• 大文字と小文字は厳密に区別される.• Console.WriteLine()メソッドで画面に表示.• 上記プログラムで表示されるのは" "ではさまれた文字列.• //以降はコメントで,プログラムの動作には影響しない.
18
文字列を1行出力するプログラム
usingディレクティブ
クラス
メソッド
2020年度都市環境学科プログラミング言語 19
CPadの操作画面
エディタ: ここにプログラムを記述
コンパイルの結果(エラーメッセージなど)
はここに表示される
コンパイルおよび実行のためのボタン
ファイル名の入力:Display.cs
2020年度都市環境学科プログラミング言語
• ソースプログラムの実体は,ハードディスクドライブなどにテキストファイルとして記録される.ファイル名は自由につけられるが,クラス名と同じにするとよい.ファイル名の拡張子は必ず".cs"とする.
using System;
class Display {public static void Main(string[] args) {
// Hello, C#と出力する.Console.WriteLine("Hello, C#");
}
}
ファイル名="Display.cs"
20
プログラミング言語C#のファイル名
クラス名
2020年度都市環境学科プログラミング言語
• クラス名は,クラスの名前を簡潔に表す英語の名詞とし,単語の先頭文字のみを大文字とする.
• ファイル名には半角英数字と下線(頻度低)のみ使用可
• ファイル名(クラス名)はPascal形式※で記述する.– ◎: Sample.cs, HomeWork2.cs
– △: sample.cs, homework2.cs
– ×: 例題01.cs, It's a pen.cs
• プログラムおよびデータファイルの格納場所は,たとえば,講義の日が2020年4月28日であればフォルダ:
"U:¥MyDocuments¥CSharp¥pl28Apr20"などとすると良い.
21
ファイル名についての注意事項
Pascal形式※: 識別子の最初の文字と,後に続く各単語の最初の文字を大文字にして連結する形式.
2020年度都市環境学科プログラミング言語
出力結果として,コマンドプロンプトには,この赤枠内の1行が出力されている(その前の行は,ファイルDisplay.exe
を実行するためのコマンドの実行結果).
22
実行結果
この背景が黒く,文字が白く表示される画面を,コマンドプロンプト,DOS窓などと呼ばれる.今後,本講義では,コンソール画面と称する.
2020年度都市環境学科プログラミング言語
• エディタでソースプログラムを編集
• コンパイル(CPadの ボタンを押すとcsc.exeが起動され,
ソースプログラム(.cs)→マシン語(機械語)コード(.exe)になる)
• コンパイルエラーが発生したらやり直し
• マシン語コードをそのまま実行する
• 実行エラーが発生したらやり直し
• 完成
23
C#でのプログラム作成手順
CPadで処理をしている部分
2020年度都市環境学科プログラミング言語 24
プログラミング言語C#の構造
実行は,必ずMain()メソッドから始まる.
実行されるのはこの部分.
クラスHelloの宣言 Main()メソッドの宣言
2020年度都市環境学科プログラミング言語 25
usingディレクティブ
名前空間 クラス名 メソッド名
usingディレクティブを用いると名前空間を省略できる
完全修飾名
2020年度都市環境学科プログラミング言語
• 名前空間とは,ファイルをフォルダ単位で管理するように,クラスを名前で分類/管理するしくみ.ただし,フォルダのように物理的な入れものがある訳ではなく,論理的な概念.階層的に用いる場合も多い.
• 本講義では,基本的に名前空間は用いない.Visual C#を用いてコンソールアプリを作成すると,プロジェクト名が名前空間名になる.
26
名前空間(namespace)
2020年度都市環境学科プログラミング言語
• 文の終わりはセミコロン(;)
• プログラミング言語C#には,コメント行を除いて行の概念がない
using System;
class Dispaly {public static void Main(string[] args) {// Hello, C#と出力する.Console.WriteLine("Hello, C#!");
}}
a = 10;b = 20;
a = 10; b = 20;同じ
27
文の区切り
文1文2
文1 文2
2020年度都市環境学科プログラミング言語 28
パンチカードと紙テープ
FORTRAN77用パンチカード(1枚のカードに1
つの文を記述)
Algol系言語用の
紙テープと読み取り装置(1巻の紙
テープに複数の文を連続して記述)
2020年度都市環境学科プログラミング言語
• キーボードからデータを入力し,ディスプレイ(コンソール画面)のコマンドプロンプト(DOS窓,MS-DOSプロンプト)に出力することを基本とするプログラム
29
コンソールアプリケーション
入力 出力
Windowsアプリケーション
Windows画面
コンソール画面キーボード
2020年度都市環境学科プログラミング言語
• C#言語で記述したプログラムの起動時には,System名前空間のConsoleクラスに,– 標準入力=キーボード
– 標準出力=コンソール画面
というストリームが自動的に割り当てられている.
• これ以外の記憶装置への入出力では明示的にプログラムでファイルをオープンしなければならない
プログラム
コンソール画面
ディスク(記憶装置)
プリンタ
キーボード
ディスク(記憶装置)
30
標準入力と標準出力
標準入力 標準出力
計測装置
2020年度都市環境学科プログラミング言語 31
コンソール画面への出力
外部への出力はストリーム(文字の流れる川)を通じて行う.
System.Console:標準出力ストリーム
Syetem.Console.WriteLine("ABC");
2020年度都市環境学科プログラミング言語 32
標準出力ストリームのメソッド
System.Console.Write():
()内の文字列を改行せずに出力System.Console.WriteLine():
()内の文字列を出力して改行
2020年度都市環境学科プログラミング言語 33
改行文字
文字列リテラルに改行文字「¥n」を埋め込むことができる
改行文字「¥n」は,エスケープシーケンス(Escape Sequence)
と呼ばれる通常の文字では表示できない特殊文字の1つ
改行コード
2020年度都市環境学科プログラミング言語
----+----1----+----2----+-
1: Hello C#!
----+----1----+----2----+-
Console.WriteLine("Hello C#!");
Console.Write("Hello C#!¥n");
Console.Write("Hello C#!"+"¥n");
Console.Write("Hello C#!");
Console.WriteLine();
改行コードの記述方法
34
改行をさせる方法
改行コード
これらはみな同
一
の結果を示す
2020年度都市環境学科プログラミング言語
using System;
class CarrageReturn {public static void Main(string[] args) {
Console.Write("abc"); // ¥nがないConsole.Write("def¥n"); // ¥nがあるConsole.Write("123¥n456¥n¥n789¥n");
// ¥nがいくつもあるConsole.WriteLine();
// WriteLine()がある}
}
35
複数行の文字列の出力
• WriteLine()または"¥n"によって出力が改行される.
2020年度都市環境学科プログラミング言語
----+----1----+----2----+
1: abcdef
2: 123
3: 456
4:
5: 789
6:
----+----1----+----2----+
改行は,Write()メソッドの個数とは無関係.WriteLine()メソッドおよび"¥n"の個数で決まる.
36
その実行結果
2020年度都市環境学科プログラミング言語
• 改行記号と空白とタブ[Tab]はプログラムの実行文中では区別されない.
37
自由記述形式
using System;
class Display {public static void Main(string[] args) {
// Hello, C#!と出力する. ⇚この行のみ例外Console.WriteLine("Hello, C#!");
}}
using System;
class Display { public static voidMain(string[]args) {
// Hello, C#!と出力する. ⇚この行のみ例外Console.WriteLine("Hello, C#!");}}
どちらも正しい
2020年度都市環境学科プログラミング言語
• コメント=プログラマのメモ書
/*
文字列を出力するプログラム
2020年4月28日作成
*/
using System;
class Display {
public static void Main(string[] args) {
// Hello, C#!と出力する.Console.WriteLine("Hello, C#!");
}
}//以降もコンパイル時に無視される(行単位).
/*と*/にはさまれた部分は注釈としてコ
ンパイル時に無視される.漢字も書ける.
38
コメント(注釈)
2020年度都市環境学科プログラミング言語
using System;
class Calculation {public static void Main(string[] args) {
// 演算結果の出力Console.Write(3 + 12);Console.Write(13 - 24);Console.Write(3 * 4);Console.Write(12 / 4) ;Console.Write(12 % 9);
}}
39
演算結果の出力
• " - "は引き算の記号," * "は掛け算の記号• " / "はわり算の記号," % "は剰余算の記号
定数の出力
演算結果の数値が文字列に変換されて出力される
足し算
2020年度都市環境学科プログラミング言語
----+----1----+----2----+
1: 15-111233
----+----1----+----2----+
Write()メソッドを用いると,余計な0や空白を出力せず,1
行に横並びに詰めて隙間なく出力される.
• 出力に空白やタブを出力させてすき間を作ったり改行させたりするのはプログラマが行う.
• 指示しなければ隙間なく出力され,改行もされない.
• さらにWrite()メソッドで出力を続けると,改行されず,この行の末尾に続けて出力される.
40
その実行結果
2020年度都市環境学科プログラミング言語
• " "は,空白1文字を内容とする文字列をあらわす.
41
空白の文字列を挿入した改良版
using System;
class Calculation {public static void Main(string[] args) {
// 演算結果の出力Console.Write(3 + 12 + " ");Console.Write(13 - 24 + " ");Console.Write(3 * 4 + " ");Console.Write(12 / 4 + " ");Console.WriteLine(12 % 9);
}} 「+」の前が数値,後が文字列の場合
2020年度都市環境学科プログラミング言語
• 隙間で区切られて出力され,行末に改行コードが出力される(空白は˽,改行コードは で表記).
• この場合,さらに出力を続けると,次の行から出力される.
42
その実行結果
----+----1----+----2----+
1: 15˽-11˽12˽3˽3
----+----1----+----2----+
Write()メソッドを用いて,末尾に空白文字を出力する
と,その空白により隙間を空けて横並びに出力される.
2020年度都市環境学科プログラミング言語 43
文字列の連結
複数の文字列リテラルを「+」で結ぶと連結される
「+」の前後が文字列の場合
「+」の前が文字列,後が数値の場合
こんにちは!23
こんにちは!5
+
++
実行結果
こんにちは!元気ですか?実行結果
+
2020年度都市環境学科プログラミング言語 44
演算結果の出力
Console.WriteLine("57 + 32 =" + (57 + 32));
Console.WriteLine("57 + 32 =" + 89 );
Console.WriteLine("57 + 32 =" + "89" );
Console.WriteLine( "57 + 32 = 89" );
整 数
文字列
整数の加算文字列の連結
1
2
3
まず,( )で囲まれた57 + 32の演算が行われる.
数値89が文字列"89"に変換される.
文字列"57 + 32 = "と"89"が連結されて,"57 + 32 = 89"
となる.
1
2
3
Top Related