CSharp講座第二回
の編集
http://ehime-csr-new.sakura.ne.jp/csr/index.php?CSharp%E8%AC%9B%E5%BA%A7%E7%AC%AC%E4%BA%8C%E5%9B%9E
[
トップ
] [
編集
|
差分
|
バックアップ
|
添付
|
リロード
] [
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
]
-- 雛形とするページ --
(゜∀゜)
2007/04/01トップページ
2013年末うどんどんツアー
2013春合宿企画
ARK
ASP.NETを使って1行もコーディングせずに作る蔵書管理システム
AVRマイコンなページ
BracketName
C++STL解説
C++STL解説 part01 コンテナ
C.S.R.
C.S.R. OB会のページ
C.S.R. Wiki トップページ
C.S.R.%20Wiki%20%E3%83%88%E3%83%83%E3%83%97%E3%83%9A%E3%83%BC%E3%82%B8
C.S.R.の歴史
C.S.Rゲーム強化週間
CSRオリジナルパーカーをつくろう
CSRプログラミングコンテスト
CSRプロコン第1回
CSRポケモン大会
CSR海外旅行
CSR週末卓ゲー部(TRPG)
CSharp講座
CSharp講座第一回
CSharp講座第三回
CSharp講座第二回
CSharp講座第五回
CSharp講座第四回
C言語における文字列の扱いについて
C言語講座
C言語講座第ニ回
C言語講座第ニ回課題
C言語講座第一回
C言語講座第七回
C言語講座第三回
C言語講座第三回演習
C言語講座第三回演習 解答例
C言語講座第二回 解答例
C言語講座第五回
C言語講座第五回演習
C言語講座第六回
C言語講座第六回演習
C言語講座第六回演習 解答例
C言語講座第四回
D.T.M.
EJBの作成
Eclipseのインストール
Entityの作成
FAQ
FAST
FTP
FizzBuzz
FormatRule
FormattingRules
FrontPage
GlassFish(Ubuntu)
GlassFishの設定
HEAVENS KITCHEN
HIKKY_J
Hawke
Help
IRC
IS01のページ
InterWiki
InterWikiName
InterWikiSandBox
InterWikiテクニカル
JSF-Ajax
JSF-Faceletsの作成
JSF-ManagedBeanの作成
Java
Java EE
Java EEのプロジェクト
Java EEの開発環境
Java EEアプリケーションの実行
Java(Ubuntu)
Java2SDKのインストール
Jupe
KOUJI
KWGJ9
KY cafe
Kuma
LIC
Ledah
Link
Low
MARIKO
MIZUKAZE
Marishi Bank
Marishi Co. Ltd.
MenuBar
Merry X'mas
MySQL
MySQL(Ubuntu)
NAO
NAOのおしえてP・I・C(ぴーあいしー)
NOMAD
Nabe
NetBeansからMySQLに接続
NetBeansでHelloWorld
OB一覧
OpenCV
PCデポ
PHP
Plamo
Processing講座
Processing講座 第一回
Processing講座 第三回
Processing講座 第二回
Processing講座 第五回
Processing講座 第六回
Processing講座 第四回
PukiWiki
PukiWiki/1.4
PukiWiki/1.4/Manual
PukiWiki/1.4/Manual/Plugin
PukiWiki/1.4/Manual/Plugin/A-D
PukiWiki/1.4/Manual/Plugin/E-G
PukiWiki/1.4/Manual/Plugin/H-K
PukiWiki/1.4/Manual/Plugin/L-N
PukiWiki/1.4/Manual/Plugin/O-R
PukiWiki/1.4/Manual/Plugin/S-U
PukiWiki/1.4/Manual/Plugin/V-Z
QRコード
RecentDeleted
Rogi
Rupy
SEN
SandBox
Subversionのすすめ
TOM
TechTalk
TechTalk 運営委員会
Test
Toku
T村氏
UDとは?
UD導入ガイド
URALU
Ubuntu(VirtualBox)
VB-オブジェクトのプロパティ
Velxot
VirtualBox
WEB担当の仕事の仕方まとめ
WikiEngines
WikiName
WikiWikiWeb
Wikiって何?
XONY
Y
Yama
YukiWiki
ZECHS
appli
formula
ika
inatyu
iqm
iアプリエミュレータのインストール
justice
kei.K
kepa
maeda
misaki
mojyack(仮)
msnメッセンジャーを使おう
neko
newsky
nginx(Ubuntu)
rariru
rian
s-cat
skipjack
taka
takuto
tano
tanoさんbot
tetra
twitterをはじめよう
uraluさんbot
winbrem
zawawa
zoo
…
あっぴり
あるけい
いろはす
うえさん
うずしお
おかま
おかゆ
おっさん化現象
おんまく寿司
お店
お湯
お知らせ
お花見
かいりょう
かきべえ
かつてないほどてきとーなにくにく
かとそ
かなめ
かまどや
かんきつ
かんきつの好きな曲
がじら
がっきー
がんば亭
くら寿司
ぐぴー
ころん
こんちゃん
さくら
さらし孤
さらし狐
しおかぜ
しおかぜ旅行まとめ
しおかぜ98号
しゃどう
しゃも
じゃんけん(JSF)
すき家
すずっち
すぽんじ
ずんだくん
そのほかの人たち
たおる
たけぞう
だんだん茶屋
ちかさん
つぼ八
つむ
とあるけみすと
とある宴の酒池肉林
とっくん
ともぴー
とらねこ
とりかわ
どーなつ先輩の亡骸.JPG
なかじ
なめくじ
にくにく
にくにくテンプレfor幹事さん
にたも
にゃおぬあ
にゃー
はぃから亭
はいから亭
はいから亭 メニュー.txt
はいから邸
はかいり亭
はだかの王様
はにわ
はま寿司
はゐから亭
ひーこー
ふよごい
ぷりちーなマリシきゅんと何かしよう2008
ほいから亭
ほっかほっか亭
ほっともっと
まぁ
まっつん
まつい
まつい(仮)
まぴょそ
まりしきゅんのおうち
みったん
むしくん
もっとも単純なランレングス圧縮
もな
ゆめタウン
ゆーゆ
ゆーろー
よしすけ
よーむ
よーむ → MY
りふれ
ろぎ
ろくめいかん
わかば
わっさ家
ゑくれあ
アクアパッツァ大会
アザミ
アプライド
アラバスタ
アリオ倉敷
アルミ−
アーカイブ
イオン
イオンモール倉敷
イオンモール岡山
イチ
イブソン
イベント
エディオン
エミフルMASAKI
エルノーツ
エンケラドス
オッパオ
カシテル
カチコール
カーくん
ガスト
キャデン
キリン
クラスタ(GlassFish)
クロミル
ケンタッキー
ケーズデンキ
ゲーム一覧
ゲーム製作集会
ココス
コジマ
コメント/TechTalk
コメント/inatyu
コンパス
サークルK
ジュエリー・F・スミス
スカイ
スシロー
スマブラ大会
スライドパズル(JSF)
スーパー日東
セブンイレブン
セレイン
センチュリオン
タイマーに関係するレジスタ
タイマー・PWM
タックス
タマノ
タワーディフェンス リリィガーディアン
ダムダム Dame dam
ツゾ
テンプレート
ディスプレイ
デオデオ
デスラー
データ圧縮
ドスパラ
ドン・キホーテ
ニートの日
ネット
ハィカラ亭
ハイカラ亭
ハイ力ラ亭
ハッカソン的なものを企画したい。
バルサン
バースデイきっぷ
パイン
パクパク
パソコン講習
パソ工
パムパムくん
ビアガーデン
ファミリーマート
フク
フジ
フジグラン
プラグインのテスト
プラス
プログラミング
プログラム講習会
プーの森
ヘルプ
ベスト電器
ペンペンについて
マイコン勉強会
マクドナルド
マサ
マッキー
ママピス
マリシ
マリシとNAOのネット界の超時空スーパーアイドル(笑)を目指すページ
マリシライナー
マリシ容疑者(ジョーク)
ミカン
ミスタードーナツ
ミニクイズ(JSF)
メーリングリスト
モスバーガー
ヤマダ電機
ヤムキン
ユウ
ユウメ
ユースケ・サンタ
ラジオ会館
ラピュタガーデン
ランレングス圧縮
リズム天国(parody)
リッチドーナツ
リヨ
レイジ
ロッテリア
ロボット講座
ローグライクゲームを作ろう
ローゼ
ローソン
ローソン(コンビニ)
ワングー
ワールドキッチン
ヴィロット
一天張
一気コール
七厘や本店
七面鳥ぅ
万帳
両津
之達磨
企画/CSR Blog Rally
企画まとめ
個人で購入すべきパーツ
元帥
入力の使い方
入部希望の皆様へ
冷蔵庫
処分予定の雑誌リスト
初級シスアド
勝山協食
半塩
卒業生追い出しコンパ
協同ゲーム制作
単位取ったら負けかなと思ってる
単位取得率
合宿
合宿 2010/9
吉野家
喫茶マウンテンを現地指導
四国再発見きっぷネットワーク
四国再発見きっぷネットワーク(β)
四川飯店
回数券をみんなでわけて使おう
図書館のグループ学習室
圧縮を行うプログラムをつくるところについて思う所
坊ちゃん
坐・和民
埋蔵金
基数ソート
夏合宿
夏合宿の反省点2013
多恋人(だれと)
大宇宙拡大大帝国絶対永久皇帝大帝国大元帥★
大街道
大街道歯科
大阪行き移動案
学生祭2009
学生祭2012
学生祭2013
学生祭2014
学生祭2015
学生祭2016
学生祭2017
学祭
学祭2008まとめ
学祭2010
学祭2010作品
学祭2011作品
学祭2012作品
学祭2013作品
学祭2014作品
学祭2015作品
学祭2016作品
学祭2017作品
学祭用電光掲示板をつくろーの会
学際2011
宇和島の美味しいもの巡り旅
安価に旅行
定期購読雑誌
山田
島根県
市駅
幹部のおしごと
幻の春合宿
庄屋
忘年会
忠孝
情報処理技術者試験
情報処理試験
愛媛大学
手作業でやってみるエラトステネスの篩
振り子式車両傾斜角度計算
整形ルール
新入生M
新入生歓迎コンパ
新入生歓迎合宿
新勧ビラ-2009- 作成黒歴史
新年会
旅に出よう
明治ブルガリアヨーグルト
映画化アニメに対する一般人の認識
時間割表のひな形
晴れたり曇ったり
書式文字列について
書籍購入
村さ来大街道店
村さ来本店
松屋
松山−伊予上灘の時刻表
松山−大阪間の移動手段についての考察
松山市駅
松山駅
柚木
栗林公園
業務スーパー
歴代の役員
毀襲
汚物
沢庵
海洋堂ホビー館への旅
清まる
漣
炉談
焼きプリン
生協食堂
白木屋
白虎
神崎
簡易BBS
簡易BBS・過去ログ1
簡易BBS・過去ログ2
簡易BBS・過去ログ3
簡易BBS・過去ログ4
簡易BBS・過去ログ5
簡易BBS・過去ログ6
簡易BBS・過去ログ7
簡易BBS・過去ログ8
簡易BBS・過去ログ9
粋人
純歩
翔
能三食堂
自宅警備イン
自宅警備基金
自宅警備委員会
花いちもんめ
萬楽塩田屋
西条ビール工場・四国鉄道文化館の旅
要出典
説明会
講座一覧
讃岐うどんツアー
讃岐うどんツアー(高松市内コース)
豆蔵
資格をとろう
資格をとろう2006
軍曹
連絡船うどん
部則
部品のページ
部員のMSNアドレス
部員一覧
金曜日
銀
銀天街
鍵当番
関数ポインタ
青めがね
A.
JR栗林駅
O
SLやまぐち号と津和野
64
#highlight() #mathjax [[C.S.R. Wiki トップページ]] #markdown{{ 一部Wikiの仕様により全角文字を使っていますが、プログラムはすべて半角文字で書いてください。 # 変数と式 プログラムはデータとそれを操作する命令から成り立っています。 プログラミング言語ではたいていの場合データを変数で表し命令を式で表します。 変数や式は数学でなじみのあるものですがプログラミング言語ではよりコンピュータに親和性の高い別の概念となっています。 (本来の数学に近い意味での変数と式を持つ言語もありますが) ## 変数 たいていのプログラムにおいてデータを一時的に記憶しておかなければならない状況が発生します。 プログラミング言語における変数とは何かを記憶しておくための入れ物のことを指します。 しかしここで一つ問題があります。それはデータごとに必要な記憶容量、できる操作が違うことです。 例えば整数×整数はできますが、文字×文字はできません。なので変数になんでも入れることができるようにすることはできません。 そこで変数に何が入るのかを決めることにしました。これが型と呼ばれるものです。 変数にはその変数が何を入れることができるのかを表す型をつけなければなりません。 また変数には名前をつけておかなければなりません。 さて変数を構成する要素のうち変数がどういうものであるかを説明する型と名前が決まりました。 次はこの組み合わせで使用することをプログラムに書きましょう。これを変数の宣言といいます。 ### 変数の宣言 変数の宣言は式ではなく文ですこの違いについては後で説明します。 変数の宣言は ``` 型 変数名; ``` と書きます。 ### 変数の代入 次に変数に入っている値を更新する、代入を行ってみましょう。 変数への代入は ``` 変数名 = 式; ``` と書きます。 #### 演習1 変数を使う LinqPadのLanguageをC#Stetment(s)にしておきましょう。 以下の文字を入力し実行しましょう。 ``` int a; a = 10; a.Dump(); ``` このプログラムではintが型、aが変数名です。 ところで変数を宣言して代入をしていない状態、つまり変数の中身がわからない場合はどうなるでしょう。 (この状態を未初期化といいます。) #### 演習2 未初期化変数の使用 LinqPadのLanguageをC#Stetment(s)にしておきましょう。 以下の文字を入力し実行しましょう。 ``` int a; a.Dump(); ``` エラーコード(CSXXXXとなっているところです)を検索してみましょう。 ### 変数の初期化 変数の宣言と代入は一緒に行われることが多いです。 そのために2つを一緒にできる初期化という機能があります。 変数の初期化は ``` 型 変数名 = 初期値; ``` と書きます。 初期値には式を書くことができます。 #### 演習3 変数の初期化 LinqPadのLanguageをC#Stetment(s)にしておきましょう。 以下の文字を入力し実行しましょう。 ``` int a = 10; a.Dump(); ``` ### 数字を扱う型 ところで今までint型ばかり使ってきましたが型は他にもあります 以下はC#における整数を表す型です。 型名|表せる範囲|バイトサイズ ----|---------|--- byte|0~255|1 sbyte|-128~127|1 ushort|0~65535|2 short|-32768~32767|2 uint|0~4294967295|4 int|-2147483648~2147483647|4 ulong|0~18446744073709551615|8 long|-9223372036854775808~9223372036854775807|8 以下はC#における浮動小数点数を表す型です。(コンピュータでは無限にある実数を表すことができないのである程度妥協した数を使います) 型名|表せる範囲|バイトサイズ|精度 ----|---------|---|- float|$\pm 1.5 * 10^{-45} ~ 3.4*10^{38} $|4|7桁 double|$\pm 5.0 * 10^{-324} ~ 1.7*10^{308} $|4|15桁 #### 演習4 様々な変数 LinqPadのLanguageをC#Stetment(s)にしておきましょう。 以下のプログラムのようにしてすべての変数を試してみましょう。 また初期値を変えてどうなるか見てみましょう。 ``` byte a = 10; a.Dump(); sbyte b = 10; b.Dump(); ``` ## 式 式とは演算子とオペランドの列と仕様書では説明されています。 オペランドとは変数、式、リテラル(定数)演算子とはそれらを操作する記号のことです。 変数は説明済みなので、リテラルについて説明します。といっても難しいことはなくプログラムを書いたときに決まっている値のことです。 例えば演習1では10はプログラムを実行中は変更できない(無理やりできないこともないですが)値なのでリテラルです。 ``` 1+1 ``` ここで1と1がリテラルのオペランド、+が演算子です。+演算子は数学と同じように右のリテラルと左のリテラルの合計を返します。 オペランドに式が含まれているということは式の中に式を組み込めるということです 例えば ``` 1+2+3 ``` は1+2と3がオペランドで+が演算子ということができます。 ###基本式 基本式で行っている内容については後の項で説明します。 式 |説明 ------------|----- x.m |メンバー アクセス x(…) |メソッド呼び出し x[…] |インデックス アクセス ### 二項演算子 二項演算子とは2つのオペランドから結果を作り出す演算子です。 例えば+は ``` 1+2 ``` のように1,2という式を取り3という結果を返します #### 演習5 二項演算子 次の通りにプログラムを書いて実行してみてください。 ``` (1+2).Dump(); ``` また以下の演算子も試してみましょう 記号|説明 -|- +|加算 -|減算 *|乗算 /|除算 %|あまり <<|左シフト >>|右シフト &|ビットAND \||ビットOR ^|ビットXOR ###単項演算子 単項演算子とは1つの式から結果を作り出す演算子です。 例えば-は ``` -2 ``` のように2という式を取り-2という結果を返します #### 演習6 単項演算子 次の通りにプログラムを書いて実行してみてください。 ``` (-2).Dump(); ``` また以下の演算子も試してみましょう(キャストと論理否定は除きます) 記号|説明 -|- +|加算 !|論理否定 ~|補数 ++|インクリメント --|デクリメント (型)|キャスト ### 条件 プログラミングをしていると真と偽の2つの値が重要な場面があります。 例えばこの式が真の時はこうする、偽の時はこうするといったようにです。 真はtrue、偽はfalseで表します。 #### 演習7 条件 次の通りにプログラムを書いて実行してみてください。 ``` (2<3).Dump(); ``` 次の通りにプログラムを書いて実行してみてください。 ``` (2<3&&4>2).Dump(); ``` また以下の演算子も試してみましょう。 記号|説明 ----|---- < |左の式が右の式より小さければ真 > |左の式が右の式より大きければ真 <= |左の式が右の式以下ならば真 >= |左の式が右の式以上ならば真 && |左の式と右の式が真なら真 |||左の式か右の式が真なら真 ### 代入演算子 代入演算子は文字どうり左の変数に右の式の結果を代入し代入した値を返します。 この時にどのように変数に代入するかを選ぶことができます。 #### 演習8 代入演算子 次の通りにプログラムを書いて実行してみてください。 ``` int x; (x=2).Dump(); x.Dump(); ``` また以下の演算子も試してみましょう(シフトと論理は除きます) 記号|説明 ----|---- = |代入 += |変数と式の合計を代入 -= |変数と式の差を代入 \*= |変数と式の乗数を代入 /= |変数と式の徐数を代入 %= |変数と式のあまりを代入 <<= |変数と式の左シフトを代入 >>= |変数と式の右シフトを代入 &= |変数と式の論理 ANDを代入 ^= |変数と式の論理 XORを代入 |= |変数と式の論理 ORを代入 ### 優先順位と結合規則 数学で1+2\*3とした時どの順番で計算するでしょうか。 普通は2\*3の後に1+をします。よって+よりも*のほうが優先されるわけです。 プログラムにもこの関係がありこれを優先順位といいます。 優先順位の高い方から順に並べています。 カテゴリ|演算子 --------|------ 基本式 |x.y f(x) a[x] x++ x-- new typeof checked unchecked 単項式 |+ - ! ~ ++x --x \(T\)x 乗法式 |* / % 加法式 |+ - シフト |<< >> 関係式と型検査| < > <= >= is as 等値式 |== != 論理 AND|& 論理 XOR|^ 論理 OR || 条件 AND|&& 条件 OR ||| 条件 |?: 代入 |= *= /= %= += -= <<= >>= &= ^= |= また1+2+3はどの順番で実行されるでしょうか。 ふつうは1+2をしてから+3とします。 このように演算子によってどの方向から計算していくかが決まっています。 これを結合規則といいます。 代入演算子と条件演算子は右から左です。たとえば、x = y = z は x = \(y = z\) と評価されます。 それ以外の2項演算子は左からです。たとえば、x + y + z は \(x + y\) + z と評価されます。 優先順位と結合規則はかっこで制御することができます。たとえばx+y\*zはy\*zが先に計算されますが、 (x+y)\*zとするとx+yが先に計算されます。 }} #comment
タイムスタンプを変更しない
#highlight() #mathjax [[C.S.R. Wiki トップページ]] #markdown{{ 一部Wikiの仕様により全角文字を使っていますが、プログラムはすべて半角文字で書いてください。 # 変数と式 プログラムはデータとそれを操作する命令から成り立っています。 プログラミング言語ではたいていの場合データを変数で表し命令を式で表します。 変数や式は数学でなじみのあるものですがプログラミング言語ではよりコンピュータに親和性の高い別の概念となっています。 (本来の数学に近い意味での変数と式を持つ言語もありますが) ## 変数 たいていのプログラムにおいてデータを一時的に記憶しておかなければならない状況が発生します。 プログラミング言語における変数とは何かを記憶しておくための入れ物のことを指します。 しかしここで一つ問題があります。それはデータごとに必要な記憶容量、できる操作が違うことです。 例えば整数×整数はできますが、文字×文字はできません。なので変数になんでも入れることができるようにすることはできません。 そこで変数に何が入るのかを決めることにしました。これが型と呼ばれるものです。 変数にはその変数が何を入れることができるのかを表す型をつけなければなりません。 また変数には名前をつけておかなければなりません。 さて変数を構成する要素のうち変数がどういうものであるかを説明する型と名前が決まりました。 次はこの組み合わせで使用することをプログラムに書きましょう。これを変数の宣言といいます。 ### 変数の宣言 変数の宣言は式ではなく文ですこの違いについては後で説明します。 変数の宣言は ``` 型 変数名; ``` と書きます。 ### 変数の代入 次に変数に入っている値を更新する、代入を行ってみましょう。 変数への代入は ``` 変数名 = 式; ``` と書きます。 #### 演習1 変数を使う LinqPadのLanguageをC#Stetment(s)にしておきましょう。 以下の文字を入力し実行しましょう。 ``` int a; a = 10; a.Dump(); ``` このプログラムではintが型、aが変数名です。 ところで変数を宣言して代入をしていない状態、つまり変数の中身がわからない場合はどうなるでしょう。 (この状態を未初期化といいます。) #### 演習2 未初期化変数の使用 LinqPadのLanguageをC#Stetment(s)にしておきましょう。 以下の文字を入力し実行しましょう。 ``` int a; a.Dump(); ``` エラーコード(CSXXXXとなっているところです)を検索してみましょう。 ### 変数の初期化 変数の宣言と代入は一緒に行われることが多いです。 そのために2つを一緒にできる初期化という機能があります。 変数の初期化は ``` 型 変数名 = 初期値; ``` と書きます。 初期値には式を書くことができます。 #### 演習3 変数の初期化 LinqPadのLanguageをC#Stetment(s)にしておきましょう。 以下の文字を入力し実行しましょう。 ``` int a = 10; a.Dump(); ``` ### 数字を扱う型 ところで今までint型ばかり使ってきましたが型は他にもあります 以下はC#における整数を表す型です。 型名|表せる範囲|バイトサイズ ----|---------|--- byte|0~255|1 sbyte|-128~127|1 ushort|0~65535|2 short|-32768~32767|2 uint|0~4294967295|4 int|-2147483648~2147483647|4 ulong|0~18446744073709551615|8 long|-9223372036854775808~9223372036854775807|8 以下はC#における浮動小数点数を表す型です。(コンピュータでは無限にある実数を表すことができないのである程度妥協した数を使います) 型名|表せる範囲|バイトサイズ|精度 ----|---------|---|- float|$\pm 1.5 * 10^{-45} ~ 3.4*10^{38} $|4|7桁 double|$\pm 5.0 * 10^{-324} ~ 1.7*10^{308} $|4|15桁 #### 演習4 様々な変数 LinqPadのLanguageをC#Stetment(s)にしておきましょう。 以下のプログラムのようにしてすべての変数を試してみましょう。 また初期値を変えてどうなるか見てみましょう。 ``` byte a = 10; a.Dump(); sbyte b = 10; b.Dump(); ``` ## 式 式とは演算子とオペランドの列と仕様書では説明されています。 オペランドとは変数、式、リテラル(定数)演算子とはそれらを操作する記号のことです。 変数は説明済みなので、リテラルについて説明します。といっても難しいことはなくプログラムを書いたときに決まっている値のことです。 例えば演習1では10はプログラムを実行中は変更できない(無理やりできないこともないですが)値なのでリテラルです。 ``` 1+1 ``` ここで1と1がリテラルのオペランド、+が演算子です。+演算子は数学と同じように右のリテラルと左のリテラルの合計を返します。 オペランドに式が含まれているということは式の中に式を組み込めるということです 例えば ``` 1+2+3 ``` は1+2と3がオペランドで+が演算子ということができます。 ###基本式 基本式で行っている内容については後の項で説明します。 式 |説明 ------------|----- x.m |メンバー アクセス x(…) |メソッド呼び出し x[…] |インデックス アクセス ### 二項演算子 二項演算子とは2つのオペランドから結果を作り出す演算子です。 例えば+は ``` 1+2 ``` のように1,2という式を取り3という結果を返します #### 演習5 二項演算子 次の通りにプログラムを書いて実行してみてください。 ``` (1+2).Dump(); ``` また以下の演算子も試してみましょう 記号|説明 -|- +|加算 -|減算 *|乗算 /|除算 %|あまり <<|左シフト >>|右シフト &|ビットAND \||ビットOR ^|ビットXOR ###単項演算子 単項演算子とは1つの式から結果を作り出す演算子です。 例えば-は ``` -2 ``` のように2という式を取り-2という結果を返します #### 演習6 単項演算子 次の通りにプログラムを書いて実行してみてください。 ``` (-2).Dump(); ``` また以下の演算子も試してみましょう(キャストと論理否定は除きます) 記号|説明 -|- +|加算 !|論理否定 ~|補数 ++|インクリメント --|デクリメント (型)|キャスト ### 条件 プログラミングをしていると真と偽の2つの値が重要な場面があります。 例えばこの式が真の時はこうする、偽の時はこうするといったようにです。 真はtrue、偽はfalseで表します。 #### 演習7 条件 次の通りにプログラムを書いて実行してみてください。 ``` (2<3).Dump(); ``` 次の通りにプログラムを書いて実行してみてください。 ``` (2<3&&4>2).Dump(); ``` また以下の演算子も試してみましょう。 記号|説明 ----|---- < |左の式が右の式より小さければ真 > |左の式が右の式より大きければ真 <= |左の式が右の式以下ならば真 >= |左の式が右の式以上ならば真 && |左の式と右の式が真なら真 |||左の式か右の式が真なら真 ### 代入演算子 代入演算子は文字どうり左の変数に右の式の結果を代入し代入した値を返します。 この時にどのように変数に代入するかを選ぶことができます。 #### 演習8 代入演算子 次の通りにプログラムを書いて実行してみてください。 ``` int x; (x=2).Dump(); x.Dump(); ``` また以下の演算子も試してみましょう(シフトと論理は除きます) 記号|説明 ----|---- = |代入 += |変数と式の合計を代入 -= |変数と式の差を代入 \*= |変数と式の乗数を代入 /= |変数と式の徐数を代入 %= |変数と式のあまりを代入 <<= |変数と式の左シフトを代入 >>= |変数と式の右シフトを代入 &= |変数と式の論理 ANDを代入 ^= |変数と式の論理 XORを代入 |= |変数と式の論理 ORを代入 ### 優先順位と結合規則 数学で1+2\*3とした時どの順番で計算するでしょうか。 普通は2\*3の後に1+をします。よって+よりも*のほうが優先されるわけです。 プログラムにもこの関係がありこれを優先順位といいます。 優先順位の高い方から順に並べています。 カテゴリ|演算子 --------|------ 基本式 |x.y f(x) a[x] x++ x-- new typeof checked unchecked 単項式 |+ - ! ~ ++x --x \(T\)x 乗法式 |* / % 加法式 |+ - シフト |<< >> 関係式と型検査| < > <= >= is as 等値式 |== != 論理 AND|& 論理 XOR|^ 論理 OR || 条件 AND|&& 条件 OR ||| 条件 |?: 代入 |= *= /= %= += -= <<= >>= &= ^= |= また1+2+3はどの順番で実行されるでしょうか。 ふつうは1+2をしてから+3とします。 このように演算子によってどの方向から計算していくかが決まっています。 これを結合規則といいます。 代入演算子と条件演算子は右から左です。たとえば、x = y = z は x = \(y = z\) と評価されます。 それ以外の2項演算子は左からです。たとえば、x + y + z は \(x + y\) + z と評価されます。 優先順位と結合規則はかっこで制御することができます。たとえばx+y\*zはy\*zが先に計算されますが、 (x+y)\*zとするとx+yが先に計算されます。 }} #comment
テキスト整形のルールを表示する