lambda

Size: px
Start display at page:

Download "lambda"

Transcription

1 計算モデル特論 型なし λ 計算 国立情報学研究所所長補佐 / 教授佐藤一郎 ichiro@ii.ac.jp ( 型なし ) ラムダ計算. はじめに. 関数と型 3. ラムダ記法 4. ラムダ計算 5. 変換例 6. チャーチロッサ性 7. 正規形の求め方 8. ラムダ計算の計算能力

2 ラムダ計算 (Lambda Calculus) 930 年代に数学基礎論の研究から生まれた (A.Church) 一般に数学で扱われる関数概念に伴う計算的要素を抽出して作られる計算体系 関数型プログラミング言語の基礎理論 Lisp Scheme ML Haskell など プログラムの意味論 型理論の基礎の一つ Java のプロジェクトラムダ JDK 8 に導入されたラムダ計算風の記述 ic = #(it x) (x+); (λ 計算の場合 λx:it.(x+)) Java にラムダ式を導入するメリット クラス単位のモジュールから 細粒度のコードの再利用が可能になる 細粒度な ( 関数型 ) コードによる並列処理

3 Java ラムダ式 関数型インターフェース ( つのインターフェースに実装が必要なメソッドを つだけ持つインターフェース ) のメソッドを容易に実装 従来記法 Butto butto = ew Butto(); butto.addactiolisteer(ew ActioListeer(){ public void actioperformed(actioevet e) { } }); System.out.pritl(" ボタンが押された "); Java ラムダ式による記法 Butto butto = ew Butto(); butto.addactiolisteer(e -> System.out.pritl(" ボタンが押された ")); Java ラムダ式の例 Javaラムダ式の例 (it ) -> { retur + ; } (it ) -> + () -> + -> + (it, it ) -> { retur + ; } (it, it ) -> + (, ) -> + 備考 引数が 個の場合の基本形 文が つだけの場合 波括弧 ( と retur) を省略可能 引数の型を省略 引数が 個の場合は丸括弧を省略可能 引数が 個の場合の基本形 文が つだけの場合 波括弧 ( と retur) を省略可能 引数の型を省略 3

4 関数と型 関数 : 与えられた引数に適用して値を得るための操作 f(x): 関数 f を x に適用して得られた値 x のとりうる値の領域 A( 定義域と呼ぶ ) f(x) のとりうる領域 B( 値域と呼ぶ ) このような関数の集合は A B と書き f の型と呼ぶ 例 : square(x) = x * x x のとりうる領域は自然数 N のとき square の型は N N である これを square N N とかく 疑問 N (N N) はどんな関数か? つの自然数を与えると関数が得られる関数 f x (y)=x y で x をある値 k に決めれば f k (y)=k y で N N の型を持つ関数となる (N N) (N N) はどんな関数か? 関数を引数として 関数が得られる関数 twice f(x)=f(f(x)) なる関数 twice を考える f(x) のところに square を引数として与えれば twice square(x)=square(square(x)) として関数を作り出す f: (N N m ) (M M k ) に関数名 f はいるのか 関数名がなくても関数 4

5 高階関数 (higher-order fuctio) 関数を引数とする関数や関数を結果とする関数 例 : twice (f (x)) = f(f(x)) 関数を引数とする関数 関数の関数などを取り扱っていくうえで 関数を値と同様に取り扱えると便利 例 : 関数の関数 twice f(x)=f(f(x)) を考える f(x) のところに square を引数として与えれば twice square(x)=square(square(x))=x x x x 従って 値域は N の型を持つ f(x) のところに f x (y)=x y を引数として与えれば twice f x (y)=f x f x (y)=(x y) y 従って 値域は N N の型を持つ... 5

6 例 :Google MapReduce Google の検索エンジンを支える超大規模分散処理技術 関数型計算モデルがベース 大規模データを多数のサーバーで処理 入力ファイルと map(), reduce() の二つの関数を定義して MapReduce システムに処理を依頼 MapReduce が入力ファイルに対して複数サーバーに分散させて map() reduce() を処理 実装は C++ で記述された並列分散システム ( 関数型言語ではない ) Hadoop (MapReduce 互換システム ) は Java で記述 MapReduce は Web 検索 DNA 解析では極めて有効 ( 関数型 ) 計算モデルの考え方を理解できないと MapReduce は使えない Amazo の MapReduce サービスならサーバ 000 台 時間でも 万円強 ラムダ記法の必要性 関数として計算を扱うため 余計なものは取り除く 例 :f(x) = x * x とするとき f(x) とは x を変数とする関数 f を表すのか それとも 関数 f の x における値を表しているのかが不明確 関数に名前を付けず 関数も一つのモノ (first class object) として扱う λx.(x*x) ここで λx とは x が (x*x) の引数であることを示す 6

7 ラムダ式 ラムダ式 λx.m を関数とみると x は仮引数 M が関数本体 ラムダ式 N M (N と M ラムダ式 例えば N は例えば λx.m ) を N M は N の仮引数を M に置き換える (N を M に適用する読む ) 例 : (λx.x+) は (λx.x+) を に適用する となり + となる ラムダ記法の例 例 :f(x) = x +y+ のラムダ記法 λx.(x +y+) 関数 (x +y+) の引数は x であり y は固定値と扱う c.f. λy.(x +y+) 関数 (x +y+) の引数はyであり xは固定値と扱う λx.(λy.(x +y+)) 関数 (x +y+) の引数はxとyであること 7

8 ラムダ抽象 (Lambda Abstractio) 式 M の中の固定値を表す名前を変数にすること λx.m M は x を変数とする関数となる ( ラムダ抽象 ) ラムダ抽象の逆操作 ラムダ適用 部分計算 定数畳み込み ラムダ適用 (Lambda Applicatio) 関数 M 中の変数 x に値 ( または関数 ) d を代入すること ((λx.m)d) 引数 N に関数 M を適用する ( ラムダ適用 ) (M N) 例 : ((λx.(x +y+))3) 3 +y+ ((λy.(x +y+))4) x + 4+ ((λx.(λy.(x+y+))4)3)

9 関数の自己適用 関数 twice のラムダ記法 twice=λf.(λx.f(f x)) 関数 twice に関数 g を引数として適用すると twice g =(λf.(λx.f(f x))g) =(λx.g(g x)) = g(g ) g を twice に置き換えてみる twice twice g =((twice twice)g) =(twice(twice g))=(twice g)((twice g)) =(g(g((twice g))))=g(g(g(g ))) ラムダ式 BNF 文法による定義 M ::= x (λx.m) (M M ) ラムダ抽象 ラムダ適用 ラムダ計算とは規則に従って ラムダ式を順次変形していくこと 9

10 ラムダ式の例 x (λx.x) (λx.y) (λx. (λy.x)) ((λx.(x x)) y) ((λx.(x x)) (λy.y)) ラムダ式 ラムダ式の定義 () 変数 x,y,z..., 定数,,3,... はラムダ式 ()M がラムダ式 x が変数なら λx.m もラムダ式 ( ラムダ抽象 ) (3)M,N がラムダ式なら MN もラムダ式 ( 関数適用 ) 表記 ( 括弧の省略 ) λx x x.m=λx.(λx.( (λx.m) )) M M M 3 M =( ((M M )M 3 ) )M ( 括弧表記が自然に補えるようになる頃には ラムダ計算は詳しくなっているはず ) 0

11 ラムダ式の省略形 省略の規則 : 一番外側の括弧は外してよい (λx.(λx...(λx.m)...)) はλx x...x.mと書いてよい (...(M M )...M ) はM M... M と書いてよい 例題 : (λx.(λy.((xy)(zu)))) = λx.(λy.((xy)(zu))) = λxy.((xy)(zu)) = λxy.xy(zu) 自由変数 ラムダ式 Mに含まれる自由変数の集合 FV(M) FV(x) = {x} FV(M M ) = FV(M ) FV(M ) FV(λx.M) = FV(M) - {x} 自由変数でない変数を束縛変数

12 変数 束縛変数 ラムダ式の x を変数としてラムダ抽象 自由変数 式に含まれる変数と抽象化の対象が結びついているかどうか x(λxy.xyz)xy このとき 青字変数は自由変数 赤字変数は束縛変数 ラムダ式 M,M, M で それらの束縛変数と自由変数が重ならないように置き換えができる 重なりがない状態 = 変数条件を満たす という 変換規則 α- 規則 ( 束縛変数の名前を置換 ) (λx.m)=(λy.[y/x]m) ただし y が M の自由変数ではないとする β- 規則 ( ラムダ式における計算 ) ((λx.m) N) [N/x]M ここで [b/a]m とは M 中の自由変数 a を b で置き換える β 変換によるラムダ式の書き換えをリダクションという リダクションが可能な部分をリデックスと呼ぶ リデックスが含まれていないとき そのラムダ式は正規形であるという

13 α 変換の例 (λx.x) = (λy.y) ((λx.x) (λx.xy)) = ((λy.y) (λz.zw)) (λx. (λx.x)) = (λy. (λz.z)) リダクションの練習問題 ()(λxy.y)3 ()(λxy.xy)(λw.w w)9 (3)(λxy.x)(λx.xx)(λz.z) (4)(λxy.y)(λx.xx)(λz.z) (5)(λx.x(λxy.x))(λx.x) (6)(λx.x(λxy.x))(λx.x(λxy.y))(λx.x) 3

14 リダクションの練習問題 ( 解答 ) ()(λxy.y)3 (λy.y) ()(λxy.xy)(λw.w w)9 (λy.(λw.w w)y)9 (λy.y y)9 9 9 (3)(λxy.x)(λx.xx)(λz.z) (λy.(λx.xx))(λz.z) λx.xx (4)(λxy.y)(λx.xx)(λz.z) (λy.y)(λz.z) λz.z リダクションの練習問題 ( 解答 ) (5)(λx.x(λxy.x))(λx.x) (λx.x)(λxy.x) (λxy.x) (6)(λx.x(λxy.x))(λx.x(λxy.y))(λx.x) (λx.x(λxy.y))(λxy.x)(λx.x) (λxy.x)(λxy.y)(λx.x) (λy.(λxy.y))(λx.x) (λxy.y) 4

15 変換 ( リダクション ) の例 () 自由変数と束縛変数が衝突する場合は 書き換えておく (λxy.x)yz (λy.y)z z ( 誤り ) (λxy.x)yz (λxy.x)yz (λy.y)z y () リダクションを行うと複雑になってしまう例 (λx.xxx)(λx.xxx) (λx.xxx)(λx.xxx)(λx.xxx) (λx.xxx)(λx.xxx)(λx.xxx)(λx.xxx) 変換 ( リダクション ) の例 ( 続き ) (3) 自分に戻ってしまうリダクション (λx.xx)(λx.xx) (λx.xx)(λx.xx) (4) 異なる部分から始めて同じ結果が出るリダクション I λx.x とする I(I x) は二つのリデックス I(I x) と I x を持つ I(I x) I x x I(I x) I x x 5

16 正規形の求め方 正規形を計算する戦略 つのリデックスがあるとき どちらを選ぶか? M (λx.y)((λx.xx)(λx.xx)) では M M の無限のリダクションが続く では M y となり 回で完了 リダクション戦略 () ラムダ式が M 正規形を持つならば 最も左側のリデックスを常にリダクションすることで 必ず正規形が得られる () 最も左側のリデックスとは 最も外側のリデックスのうちで 最も左側のものであること チャーチ ロッサ性 ラムダ式にリデックスが複数あるとき そのどれに注目するかにより 何通りかのリダクションの可能性がある 場合によっては 正規形にならないリダクションもある 複数のリダクション列ができるとき その結果得られる正規形は途中のリダクションの道筋によらず一意に決まる N * * M Q * * P M N * M P * のとき (0 回以上のリダクションで MからNに到達する意味 ) (MからP) 適当なリダクションで Qに合流できる 6

17 チャーチ ロッサ性の利点 リダクションの順序に気を使う必要がない どんな方法でリダクションを行っても 得られた結果 ( 正規形 ) が唯一であることが保証される ( 通常の並列計算や 非決定的な計算では 計算の順序を保つため 同期が必要となる ) コード化 : 論理値 論理値の真 (true) と偽 (false) は次のようなラムダ式に対応 true λxy.x (T と略記することもある ) false λxy.y (F と略記することもある ) 条件判定式に対応するラムダ式 (A と B はプログラム分に相当 ) cod λb λa. λb.bab 例 : 任意の A と B に対して Cod true A B A Cod false A B B 7

18 コード化 : 論理値の例 定義 : true = λxy.x (λx.(λy.x)) false = λxy.y (λx.(λy.y)) if cod the P else Q = cod P Q 例 :if true the A else B = (λxy.x) A B (λy.a) B A 例 :if false the A else B = (λxy.y) A B (λy.y) B B コード化 : 論理値の取り扱い AND (λxy.xy)false OR (λxy.y True x) NOT 例 :AND True False (λx.x False True) ((λxy.xy)false)true False True False False = (λxy.x)false False False 参考 : ゼロ判定 ( 自然数についてはこのあと ) ISZERO: λ. (λx.true) False 8

19 コード化 : 自然数 自然数 に対応する λ 式 0 と 次の自然数 という概念からコード化 0 λf.λz.z λf.λz.f z λf.λz.f (f z)... N λf. λz.f z 次の自然数を求める関数のコード化 Succ λ. λf. λz.f( f z) コード化 : 自然数演算 自然数演算に対応する λ 式 足し算のコード化 Add λm. λ.m Succ かけ算のコード化 Mul λm. λ.m (Add ) 0 ゼロ判定関数のコード化 IsZero λ. (λ. false ) true 9

20 不動点定理 任意の λ 項 H に対して HX=X これを満たす X として H (λx.h (x x)) (λx.h (x x)) をとると X は H X となる H を X に作用させて X となることから X を H の不動点という f = g (f) となるような関数を g の不動点と呼ぶ 不動点は不動点コンビネータとして知られるものによってラムダ計算で表現することができる 不動点オペレータ ループは再帰呼び出しとして表現 ただし 再帰呼び出し構文がないので 不動点コンビネータ Y を導入 Y λf.(λx.f (x x)) (λx.f (x x)) 例 : Y を任意のラムダ式 F に適用すると YF (λx.f(x x))(λx.f(x x)) F((λx.F(x x))(λx.f(x x))) F(YF) β 変換を等式とみなすと F(YF)=YF ラムダ式 F の不動点は YF となる ( 関数 f の不動点とは f(x)=x となる x のこと ) 0

21 ループと再帰 ループは基本的に再帰呼出しで書く ただし 再帰呼出しの構文は無いことから 不動点コンビネータ (fixed-poit combiator) を使う 不動点コンビネータの例 :Y コンビネータ Y = λf.(λx.f (x x)) (λx.f (x x)) 再帰関数は第 引数に自分自身が渡されるとして定義 F = λf.λx.... (f x)... # (f x) は再帰呼出し (Y F) とすると f が (Y F) 自身に置き換わった再帰関数となる (Y F) を引数に適用したものを簡約して正規形が得られるならば, F (Y F) を引数に適用したものも同じ正規形に簡約される性質を利用 再帰計算と Y コンビネータ fac() :=, if = 0; ad fac( - ), if > 0 を λ 式に基づくと fac = λ. If (IZERO ) (Mult (fac (Sub ))) fac を未知とする λ 式に変えると H = λf. If (IZERO ) (Mult (f (Sub ))) H を抽象化した λ 式を導入する 不動点コンビニネータ Y を利用して Y = λg. (λx. g (x x)) (λx. g (x x)) をおくと g (Y g) は Y g となる 上述の fac は fac = Y H 不動点は不動点コンビネータとして知られるものによってラムダ計算で表現することができる

22 ラムダ計算の計算能力 ラムダ計算モデルによるプログラム 各自然数 k を正規形のラムダ式 k で表す g:n N に対して g(k,k,,k )=k G k k k k を満たすラムダ式 G を 関数 g を計算するためのプログラムとみなす k, k,, k はこのプログラムの入力とみなす このプログラム G を入力 k, k,, k に対して β 変換を次々と行うことを 計算過程としてとらえる 変換が終結して k が得られたとき プログラムの計算結果が k であると考える 変換が終結しない場合 プログラムの計算結果は未定義となる 計算モデル特論 型つき λ 計算 国立情報学研究所所長補佐 / 教授佐藤一郎 ichiro@ii.ac.jp

23 型とは プログラミングにおけるデータ型 Pascal: var x,y: iteger, a:real 型の必要性 プログラム設計を明確化 プログラムの誤り防止 関数やモジュールの仕様 コンパイラ最適化への補助情報 プログラム停止性への補助保証 可読性の向上 3

24 プログラミング言語の型 基本データ型 整数 浮動小数点 文字 真偽値 構造データ型 配列 直積型 直和型 レコード型 ストラクチャ型 ユーザ定義型 型付プログラミング言語 型なしプログラミング言語 プロトタイピング インタープリタ実行 弱い型付プログラミング言語 手っ取り早く設計 記述 信頼性が低い 強い型付プログラミング言語 安全なプログラム 慎重な設計と冗長な記述 型検査 静的検査 動的検査 4

25 型推論 強い型付プログラミング言語を利用しながら簡潔な記述を実現するには 型は文面から推定可能 例 : f(x) = if x == 0 the else x * f(x-) 推定により冗長な記述を現象 形式的な体型により型を厳密に決定 型推論の例 式要素の型と式全体の型 例 : if e 0 the e else e もし e 0 が真偽値型 (bool 型 ) で e と e が T という型を持つことが示されれば if e 0 the e else e は T という型を持つ ( ことがわかる ) 型推論の目的 与えられた式がある型を持つことを証明する 与えられた式がもつ型を求める 推論規則 e 0 : bool 型かつ e :T 型かつ e :T 型 (if e 0 the e else e ):T 型 仮定 結論 5

26 型理論体系 項 (term) 型 (type) 判定 (judgmet) 推論規則 (iferece) 型付ラムダ式 ( 基本 ) BNF 文法による型 ::= b ( ) ここで b は基底型 は組 は関数 BNF 文法による型付ラムダ式 M ::= c x (λx:.m) (M M ) 6

27 型付ラムダ式 型 ::= b ( ) ( ) ここで b は基底型 は組 は関数 型付ラムダ式 M ::= c x (λx:.m) (M M ) (M,...,M ) M.i 型付ラムダ式 BNF 文法による型 基本型 : b 直積型 : 関数型 : ( ) ( ) 括弧の省略 型における矢印は右結合 例 : ( ( ( 3 4 ) = 3 4 7

28 型付ラムダ式の直感的意味 基本式 : (M M ) 関数 M に引数 M を与えたときの値 (λx:.m) 型が である仮引数 x をもつ 関数本体を M と定義される関数 型付きラムダ式の例 f(x)=x+ なる関数 f は λx:it.x+ f に実引数 3 を与えた式 f(3) は (λx:it.x+)(3 it ) 8

29 自由変数 ラムダ式 Mに含まれる自由変数の集合 FV(M) FV(c) = 0 FV(x) = {x} FV(M M ) = FV(M ) FV(M ) FV(λx:t.M) = FV(M) - {x} FV((M,..,M )) = FV(M ).. FV(M ) FV(M.i) = FV(M) 自由変数でない変数を束縛変数と呼ぶ 型付ラムダの計算 簡約規則 [N/x]c = c [N/x](M,...,M ) = ([N/x]M,...,[N/x]M ) [N/x](M.i) = ([N/x]M).I (λx:.m)=(λy:.[y/x]m) ((λx:.m) N:) [N/x]M 9

30 記法 前提 (assumptio): e:t ある式 e が型 t を持つこと 判定 (judgemet): A e:t (0 個以上の ) 前提 A( 型環境 ) から ある式 e が型 t を持つことが示される 推論 (iferece): A M : A M : A M: 式 M i がそれぞれの前提 A i において型 を持つならば 結論が示される 型推論規則 (var) 型推論規則 (cost) Γ c : Γ x : ( Γ( x) = ) (abs) Γ + { x : } M : Γ λx :. M : (app) Γ M (prod) : Γ M M Γ M :! Γ ( M,", M (proj) Γ M : : Γ M : ):! Γ M :! ( i ) Γ M. i : i 30

31 型推論規則の記法 前提への操作と表記 Γ+{x:} 前提 Γ に x: を追加 ただし Γ に変数 x に関する勝たし体があった場合は もっとも右側を優先する Γ(x)= 前提 Γ のもとで 定数あるいは変数 x が型 を持つことをあわす 型推論規則 ( 詳細 ) 型推論規則 (cost) (var) Γ c : Γ x : ( Γ( x) = ) (abs) Γ + { x : } M : Γ λx :. M : 関数 λx:.m が関数型 を持つのは 仮引数の型 と仮定したとき 関数 M が型 をもつときである 3

32 3 型推論規則 ( 詳細 ) 型推論規則 : : : M M M M Γ Γ Γ M M M M Γ Γ Γ! "! ):,, ( : : ) ( :. : i M i M i Γ Γ! (app) (prod) (proj) 関数は 関数がその定められた値にのみ適用可能であり その結果は関数の値の型を持つこと関数の組 (M,...,M ) は M,...,M の直積となる関数の組 (M,...,M ) から I 番目の要素を取り出したときは M の型となる 型推論の例 型推論では推論規則により変形していく 型付ラムダ式 K=λx.(λy.x) ) ( ):. :.( : :. : } : { : } : { λ λ λ Γ x y x x y x x x

33 型推論の性質 健全性 型推論できるならば その結果が正しい ( 型安全 ) ことを意味する 完全性 正しいことはすべての型において推論することができる 有用性 決定可能かつ効率がよいこと 多相型 プログラム中に現れる同一の式やデータが複数の型をもつこと L.Cardelli と P.Weger による分類 アドホックな多相型 文脈によって型を決定 例 等号 オーバーローディング演算子 系統的な多相型 共通の性質をもった型に作用 例 : パラメトリック多相型 パラメトリック多相型の例 : twice 関数 (twice f(3)) = f(f(3)) f が it 型ときの twice 関数の型 : (it it) it it f が float 型ときの twice 関数の型 : (float float) float float 33

構造化プログラミングと データ抽象

構造化プログラミングと データ抽象 計算の理論 後半第 3 回 λ 計算と型システム 本日の内容 λ 計算の表現力 ( 前回のつづき ) 前回の復習 不動点演算子と再帰 λ 計算の重要な性質 チャーチ ロッサー性 簡約戦略 型付き λ 計算 ブール値 組 ブール値と組の表現 ( 復習 ) true, false を受け取り 対応する要素を返す関数 として表現 T = λt.λf.t F = λt.λf.f if e 1 then e

More information

PowerPoint Presentation

PowerPoint Presentation 言語モデル論 (4) ー λ 計算その 1 ー 米澤明憲 始めに 関数について 持つ個々の数学的領域 ( 型等 ) に依存しない 関数の一般的な性質を調べる目的 1940 年代にA. Churchが始めた計算の理論体系 作用型プログラミングの基礎 式はλ 式 (λexpression, λterm) と呼ばれ 関数を表す (denoteする) 基本的に文字列の書き換え ( 簡約 ) が計算とみなされる体系であるが

More information

構造化プログラミングと データ抽象

構造化プログラミングと データ抽象 計算の理論 後半第 3 回 λ 計算と型システム 本日の内容 λ 計算の表現力 ( 前回の復習 ) データの表現 不動点演算子と再帰 λ 計算の重要な性質 チャーチ ロッサー性 簡約戦略 型付き λ 計算 ブール値 組 ブール値と組の表現 true, false を受け取り 対応する要素を返す関数 として表現 T = λt.λf.t F = λt.λf.f if e 1 then e 2 else

More information

オートマトンと言語

オートマトンと言語 オートマトンと言語 回目 4 月 8 日 ( 水 ) 章 ( 数式の記法, スタック,BNF 記法 ) 授業資料 http://ir.cs.yamanashi.ac.jp/~ysuzuki/public/automaton/ 授業の予定 ( 中間試験まで ) 回数月日 内容 4 月 日オートマトンとは, オリエンテーション 4 月 8 日 章 ( 数式の記法, スタック,BNF) 3 4 月 5 日

More information

Functional Programming

Functional Programming PROGRAMMING IN HASKELL プログラミング Haskell Chapter 7 - Higher-Order Functions 高階関数 愛知県立大学情報科学部計算機言語論 ( 山本晋一郎 大久保弘崇 2013 年 ) 講義資料オリジナルは http://www.cs.nott.ac.uk/~gmh/book.html を参照のこと 0 Introduction カリー化により

More information

PowerPoint Presentation

PowerPoint Presentation 言語モデル論 (5) ー λ 計算その 2 ー λ 計算が帰納的関数を計算でき ることを示してゆきたい λ 計算で数を表現する データ構造を表現する 数の表現 A. Church は 自然数 n を関数 f の変数 ( または関数 ) x への n 回の適用として表現した 0 λfλxx 1 λfλx(fx) 2 λfλx(f(fx)) n λfλx(f( (fx) )) この表現に合わせると SUCC

More information

Microsoft PowerPoint - ProD0107.ppt

Microsoft PowerPoint - ProD0107.ppt プログラミング D M 講義資料 教科書 :6 章 中田明夫 nakata@ist.osaka-u.ac.jp 2005/1/7 プログラミング D -M- 1 2005/1/7 プログラミング D -M- 2 リスト 1 リスト : 同じ型の値の並び val h=[10,6,7,8,~8,5,9]; val h = [10,6,7,8,~8,5,9]: int list val g=[1.0,4.5,

More information

Functional Programming

Functional Programming PROGRAMMING IN HASKELL プログラミング Haskell Chapter 10 - Declaring Types and Classes 型とクラスの定義 愛知県立大学情報科学部計算機言語論 ( 山本晋一郎 大久保弘崇 2011 年 ) 講義資料オリジナルは http://www.cs.nott.ac.uk/~gmh/book.html を参照のこと 0 型宣言 (Type Declarations)

More information

PowerPoint プレゼンテーション

PowerPoint プレゼンテーション コンパイラとプログラミング言語 第 3 4 週 プログラミング言語の形式的な記述 2014 年 4 月 23 日 金岡晃 授業計画 第 1 週 (4/9) コンパイラの概要 第 8 週 (5/28) 下向き構文解析 / 構文解析プログラム 第 2 週 (4/16) コンパイラの構成 第 9 週 (6/4) 中間表現と意味解析 第 3 週 (4/23) プログラミング言語の形式的な記述 第 10 週

More information

(1) プログラムの開始場所はいつでも main( ) メソッドから始まる 順番に実行され add( a,b) が実行される これは メソッドを呼び出す ともいう (2)add( ) メソッドに実行が移る この際 add( ) メソッド呼び出し時の a と b の値がそれぞれ add( ) メソッド

(1) プログラムの開始場所はいつでも main( ) メソッドから始まる 順番に実行され add( a,b) が実行される これは メソッドを呼び出す ともいう (2)add( ) メソッドに実行が移る この際 add( ) メソッド呼び出し時の a と b の値がそれぞれ add( ) メソッド メソッド ( 教科書第 7 章 p.221~p.239) ここまでには文字列を表示する System.out.print() やキーボードから整数を入力する stdin.nextint() などを用いてプログラムを作成してきた これらはメソッドと呼ばれるプログラムを構成する部品である メソッドとは Java や C++ などのオブジェクト指向プログラミング言語で利用されている概念であり 他の言語での関数やサブルーチンに相当するが

More information

Programming D 1/15

Programming D 1/15 プログラミング D ML 大阪大学基礎工学部情報科学科中田明夫 nakata@ist.osaka-u.ac.jp 教科書 プログラミング言語 Standard ML 入門 6 章 2005/12/19 プログラミング D -ML- 1 2005/12/19 プログラミング D -ML- 2 補足 : 再帰関数の作り方 例題 : 整数 x,y( ただし x

More information

2-1 / 語問題 項書換え系 4.0. 準備 (3.1. 項 代入 等価性 ) 定義 3.1.1: - シグネチャ (signature): 関数記号の集合 (Σ と書く ) - それぞれの関数記号は アリティ (arity) と呼ばれる自然数が定められている - Σ (n) : アリ

2-1 / 語問題 項書換え系 4.0. 準備 (3.1. 項 代入 等価性 ) 定義 3.1.1: - シグネチャ (signature): 関数記号の集合 (Σ と書く ) - それぞれの関数記号は アリティ (arity) と呼ばれる自然数が定められている - Σ (n) : アリ 2-1 / 32 4. 語問題 項書換え系 4.0. 準備 (3.1. 項 代入 等価性 ) 定義 3.1.1: - シグネチャ (signature): 関数記号の集合 (Σ と書く ) - それぞれの関数記号は アリティ (arity) と呼ばれる自然数が定められている - Σ (n) : アリティ n を持つ関数記号からなる Σ の部分集合 例 : 群 Σ G = {e, i, } (e Σ

More information

プログラミングD - Java

プログラミングD - Java プログラミング D 講義資料 中田明夫 nakata@ist.osaka-u.ac.jp ML 教科書 プログラミング言語 Standard ML 入門 :1,2 章 講義のねらい 関数型プログラムを知る 関数型プログラムを知る利点 プログラムを統一的, 抽象的に捕らえる リスト処理, 高階関数, 再帰関数定義 リストやツリーなどのデータ構造は再帰的に定義 再帰関数で扱うとプログラミングが容易 数学的な裏付け

More information

プログラミング実習I

プログラミング実習I プログラミング実習 I 05 関数 (1) 人間システム工学科井村誠孝 m.imura@kwansei.ac.jp 関数とは p.162 数学的には入力に対して出力が決まるもの C 言語では入出力が定まったひとまとまりの処理 入力や出力はあるときもないときもある main() も関数の一種 何かの仕事をこなしてくれる魔法のブラックボックス 例 : printf() 関数中で行われている処理の詳細を使う側は知らないが,

More information

プログラミングD - Java

プログラミングD - Java プログラミング D ML 大阪大学基礎工学部情報科学科中田明夫 nakata@ist.osaka-u.ac.jp 教科書 プログラミング言語 Standard ML 入門 1,2 章 講義のねらい 関数型プログラムを知る 関数型プログラムの特徴 利点 : 数学的な裏づけ プログラムの正しさの証明が容易 リスト処理, 高階関数, 再帰関数定義 リストやツリーなどのデータ構造は再帰的に定義 再帰関数で扱うとプログラミングが容易

More information

Functional Programming

Functional Programming PROGRAMMING IN HASKELL プログラミング Haskell Chapter 12 Lazy Evaluation 遅延評価 愛知県立大学情報科学部計算機言語論 ( 山本晋一郎 大久保弘崇 2011 年 ) 講義資料オリジナルは http://www.cs.nott.ac.uk/~gmh/book.html を参照のこと 0 用語 評価 (evaluation, evaluate)

More information

オートマトン 形式言語及び演習 1. 有限オートマトンとは 酒井正彦 形式言語 言語とは : 文字列の集合例 : 偶数個の 1 の後に 0 を持つ列からなる集合 {0, 110, 11110,

オートマトン 形式言語及び演習 1. 有限オートマトンとは 酒井正彦   形式言語 言語とは : 文字列の集合例 : 偶数個の 1 の後に 0 を持つ列からなる集合 {0, 110, 11110, オートマトン 形式言語及び演習 1 有限オートマトンとは 酒井正彦 wwwtrscssinagoya-uacjp/~sakai/lecture/automata/ 形式言語 言語とは : 文字列の集合例 : 偶数個の 1 の後に 0 を持つ列からなる集合 {0, 110, 11110, } 形式言語 : 数学モデルに基づいて定義された言語 認識機械 : 文字列が該当言語に属するか? 文字列 機械 受理

More information

Microsoft PowerPoint - 09.pptx

Microsoft PowerPoint - 09.pptx 情報処理 Ⅱ 第 9 回 2014 年 12 月 22 日 ( 月 ) 関数とは なぜ関数 関数の分類 自作関数 : 自分で定義する. ユーザ関数 ユーザ定義関数 などともいう. 本日のテーマ ライブラリ関数 : 出来合いのもの.printf など. なぜ関数を定義するのか? 処理を共通化 ( 一般化 ) する プログラムの見通しをよくする 機能分割 ( モジュール化, 再利用 ) 責任 ( あるいは不具合の発生源

More information

Microsoft PowerPoint - 3.ppt [互換モード]

Microsoft PowerPoint - 3.ppt [互換モード] 3. プッシュダウンオートマトンと文脈自由文法 1 3-1. プッシュダウンオートマトン オートマトンはメモリがほとんど無かった この制限を除いた機械を考える 理想的なスタックを利用できるようなオートマトンをプッシュダウンオートマトン (Push Down Automaton,PDA) という 0 1 入力テープ 1 a 1 1 0 1 スタッb 入力テープを一度走査したあと ク2 入力テプを度走査したあと

More information

プログラミング入門1

プログラミング入門1 プログラミング入門 1 第 9 回 メソッド (3) 授業の前に自己点検 以下の質問に答えられますか? メソッドの宣言とは 起動とは何ですか メソッドの宣言はどのように書きますか メソッドの宣言はどこに置きますか メソッドの起動はどのようにしますか メソッドの仮引数 実引数 戻り値とは何ですか メソッドの起動にあたって実引数はどのようにして仮引数に渡されますか 戻り値はどのように利用しますか 変数のスコープとは何ですか

More information

プログラミング基礎I(再)

プログラミング基礎I(再) 山元進 クラスとは クラスの宣言 オブジェクトの作成 クラスのメンバー フィールド 変数 配列 メソッド メソッドとは メソッドの引数 戻り値 変数の型を拡張したもの 例えば車のデータベース 車のメーカー 車種 登録番号などのデータ データベースの操作 ( 新規データのボタンなど ) プログラムで使う部品の仕様書 そのクラスのオブジェクトを作ると初めて部品になる 継承 などの仕組みにより カスタマイズが安全

More information

情報工学実験 C コンパイラ第 2 回説明資料 (2017 年度 ) 担当 : 笹倉 佐藤

情報工学実験 C コンパイラ第 2 回説明資料 (2017 年度 ) 担当 : 笹倉 佐藤 情報工学実験 C コンパイラ第 2 回説明資料 (2017 年度 ) 担当 : 笹倉 佐藤 2017.12.7 前回の演習問題の解答例 1. 四則演算のできる計算機のプログラム ( 括弧も使える ) 2. 実数の扱える四則演算の計算機のプログラム ( 実数 も というより実数 が が正しかったです ) 3. 変数も扱える四則演算の計算機のプログラム ( 変数と実数が扱える ) 演習問題 1 で行うべきこと

More information

JavaプログラミングⅠ

JavaプログラミングⅠ Java プログラミング Ⅰ 12 回目クラス 今日の講義で学ぶ内容 クラスとは クラスの宣言と利用 クラスの応用 クラス クラスとは 異なる複数の型の変数を内部にもつ型です 直観的に表現すると int 型や double 型は 1 1 つの値を管理できます int 型の変数 配列型は 2 5 8 6 3 7 同じ型の複数の変数を管理できます 配列型の変数 ( 配列変数 ) クラスは double

More information

プログラミング入門1

プログラミング入門1 プログラミング入門 1 第 8 回メソッド (2) 授業開始前に自己点検 前回までの必須課題はすべてできていますか 前回までの学習項目であいまいな所はありませんか 理解できたかどうかは自分自身の基準をもとう Java 1 第 8 回 2 前回のテーマ メソッドとは いくつかの命令の列を束ねて 一つの命令として扱えるようにしたもの 今回学ぶメソッドの役割は その他のプログラミング言語では関数またはサブルーチンと呼ばれることがある

More information

Microsoft PowerPoint - logic ppt [互換モード]

Microsoft PowerPoint - logic ppt [互換モード] 述語論理と ( 全称 ) ( 存在 ) 回の講義の概観 : 命題論理 ( 真理値 ) 2 述語論理 ( モデルと解釈 ) 意味論 semantics 命題論理 ( 公理と推論規則 ) 述語論理 ( 公理と推論規則 ) syntax 構文論 preview 述語論理は命題論理よりも複雑 例題 : 次の文は真か偽か? ( 曖昧な文です ) すべての自然数 x に対して x < y を満たすような自然数

More information

Prog1_6th

Prog1_6th 2019 年 10 月 31 日 ( 木 ) 実施配列同種のデータ型を有する複数のデータ ( 要素 ) を番号付けして, ひとまとまりの対象として扱うものを配列と呼ぶ 要素 point[0] point[1] point[2] point[3] point[4] 配列 配列の取り扱いに関して, 次のような特徴がある 1. プログラム中で用いる配列変数 ( 配列の本体を参照する参照型の変数 ) は必ず宣言しておく

More information

プログラミング基礎

プログラミング基礎 C プログラミング Ⅰ 条件分岐 : if 文, if~else 文 条件分岐 条件分岐とは ある条件が成立したときとしないときで処理の内容を変更する場合に応じた, 複雑な処理を行うことができる 条件分岐 yes 成績が良かったか? no ご褒美に何か買ってもらう お小遣いが減らされる C 言語では,if 文,if~else 文,if~else if~else 文,switch 文で条件分岐の処理を実現できる

More information

JavaプログラミングⅠ

JavaプログラミングⅠ Java プログラミング Ⅰ 6 回目 if 文と if else 文 今日の講義で学ぶ内容 関係演算子 if 文と if~else 文 if 文の入れ子 関係演算子 関係演算子 ==,!=, >, >=,

More information

Microsoft Word - no11.docx

Microsoft Word - no11.docx 3. 関数 3.1 関数関数は数学の関数と同じようなイメージを持つと良いでしょう 例えば三角関数の様に一つの実数値 ( 角度 ) から値を求めますし 対数関数の様に二つの値から一つの値を出すものもあるでしょう これをイメージしてもらえば結構です つまり 何らかの値を渡し それをもとに何かの作業や計算を行い その結果を返すのが関数です C 言語の関数も基本は同じです 0 cos 1 cos(0) =

More information

メソッドのまとめ

メソッドのまとめ メソッド (4) 擬似コードテスト技法 http://java.cis.k.hosei.ac.jp/ 授業の前に自己点検以下のことがらを友達に説明できますか? メソッドの宣言とは 起動とは何ですか メソッドの宣言はどのように書きますか メソッドの宣言はどこに置きますか メソッドの起動はどのようにしますか メソッドの仮引数 実引数 戻り値とは何ですか メソッドの起動にあたって実引数はどのようにして仮引数に渡されますか

More information

Microsoft PowerPoint - 2.ppt [互換モード]

Microsoft PowerPoint - 2.ppt [互換モード] 0 章数学基礎 1 大学では 高校より厳密に議論を行う そのために 議論の議論の対象を明確にする必要がある 集合 ( 定義 ) 集合 物の集まりである集合 X に対して X を構成している物を X の要素または元という 集合については 3 セメスタ開講の 離散数学 で詳しく扱う 2 集合の表現 1. 要素を明示する表現 ( 外延的表現 ) 中括弧で 囲う X = {0,1, 2,3} 慣用的に 英大文字を用いる

More information

Microsoft PowerPoint - mp11-02.pptx

Microsoft PowerPoint - mp11-02.pptx 数理計画法第 2 回 塩浦昭義情報科学研究科准教授 shioura@dais.is.tohoku.ac.jp http://www.dais.is.tohoku.ac.jp/~shioura/teaching 前回の復習 数理計画とは? 数理計画 ( 復習 ) 数理計画問題とは? 狭義には : 数理 ( 数学 ) を使って計画を立てるための問題 広義には : 与えられた評価尺度に関して最も良い解を求める問題

More information

I: 2 : 3 +

I: 2 : 3 + I: 1 I: 2008 I: 2 : 3 + I: 3, 3700. (ISBN4-00-010352-0) H.P.Barendregt, The lambda calculus: its syntax and semantics, Studies in logic and the foundations of mathematics, v.103, North-Holland, 1984. (ISBN

More information

Microsoft PowerPoint - 10.ppt [互換モード]

Microsoft PowerPoint - 10.ppt [互換モード] 第 10 回関数と再帰 1 今回の目標 再帰的な考え方に慣れる C 言語における再帰関数を理解する 階乗を求める再帰的な関数を作成し その関数を利用するプログラムを作成する 2 階乗 n! の 2 つの数学的表現 (1) 繰り返しによる表現 n! = 1 2 i n n = ii i= 1 ( n 1 のとき ) ( なお 0!=1) (2) 漸化式による表現 n! = 1 n = 0のとき n (

More information

プログラミング実習I

プログラミング実習I プログラミング実習 I 03 変数と式 人間システム工学科井村誠孝 m.imura@kwansei.ac.jp 3.1 変数と型 変数とは p.60 C 言語のプログラム中で, 入力あるいは計算された数や文字を保持するには, 変数を使用する. 名前がついていて値を入れられる箱, というイメージ. 変数定義 : 変数は変数定義 ( 宣言 ) してからでないと使うことはできない. 代入 : 変数には値を代入できる.

More information

Microsoft PowerPoint - 3.pptx

Microsoft PowerPoint - 3.pptx 条件分岐 ( if 文 ) 第 2 回の講義資料で出題した練習問題や演習問題の計算は, 勿論電卓でもでき, わざわざプログラムを作ってまでするほどの計算ではありませんでした. プログラムによる計算と電卓の計算の きな違いの つが, プログラムには, 条件による処理の分岐, 繰り返しがあることです. まず今回は, 条件による処理の分岐 ( 処理の切り替え と う が適切かもしれません ) の書き について学んでいきます.

More information

02: 変数と標準入出力

02: 変数と標準入出力 C プログラミング入門 基幹 7 ( 水 5) 13: 構造体 Linux にログインし 以下の講義ページを開いておくこと http://www-it.sci.waseda.ac.jp/ teachers/w483692/cpr1/ 2016-07-06 1 例題 : 多角形の面積 n = 5 (5 角形 ) の例 n 1 n 1 1 p 1 T 0 S = i=0 p 0 T i = i=0 2

More information

add1 2 β β - conversion (λx.x + 1(2 β x + 1 x λ f(x, y = 2 x + y 2 λ(x, y.2 x + y 1 λy.2 x + y λx.(λy.2 x + y x λy.2 x + y EXAMPLE (λ(x, y.2

add1 2 β β - conversion (λx.x + 1(2 β x + 1 x λ f(x, y = 2 x + y 2 λ(x, y.2 x + y 1 λy.2 x + y λx.(λy.2 x + y x λy.2 x + y EXAMPLE (λ(x, y.2 output: 2011,11,10 2.1 λ λ β λ λ - abstraction λ λ - binding 1 add1 + add1(x = x + 1 add1 λx.x + 1 x + 1 add1 function application 2 add1 add1(2 g.yamadatakahiro@gmail.com 1 add1 2 β β - conversion (λx.x

More information

論理と計算(2)

論理と計算(2) 情報科学概論 Ⅰ アルゴリズムと計算 亀山幸義 http://logic.cs.tsukuba.ac.jp/~kam 計算とは? コンピュータが計算できることは? 1 2 関数 = 計算? NO 部分関数と計算 入力 1 入力 2 関数 出力 入力 1 入力 2 部分関数 出力 停止しない 入力 1 入力 2 コンピュータ 止まらないことがある出力 3 入力 1 入力 2 コンピュータ 出力 停止しない

More information

Microsoft PowerPoint - 計算機言語 第7回.ppt

Microsoft PowerPoint - 計算機言語 第7回.ppt 計算機言語第 7 回 長宗高樹 目的 関数について理解する. 入力 X 関数 f 出力 Y Y=f(X) 関数の例 関数の型 #include int tasu(int a, int b); main(void) int x1, x2, y; x1 = 2; x2 = 3; y = tasu(x1,x2); 実引数 printf( %d + %d = %d, x1, x2, y);

More information

Java Scriptプログラミング入門 3.6~ 茨城大学工学部情報工学科 08T4018Y 小幡智裕

Java Scriptプログラミング入門 3.6~ 茨城大学工学部情報工学科 08T4018Y  小幡智裕 Java Script プログラミング入門 3-6~3-7 茨城大学工学部情報工学科 08T4018Y 小幡智裕 3-6 組み込み関数 組み込み関数とは JavaScript の内部にあらかじめ用意されている関数のこと ユーザ定義の関数と同様に 関数名のみで呼び出すことができる 3-6-1 文字列を式として評価する関数 eval() 関数 引数 : string 式として評価する文字列 戻り値 :

More information

program7app.ppt

program7app.ppt プログラム理論と言語第 7 回 ポインタと配列, 高階関数, まとめ 有村博紀 吉岡真治 公開スライド PDF( 情報知識ネットワーク研 HP/ 授業 ) http://www-ikn.ist.hokudai.ac.jp/~arim/pub/proriron/ 本スライドは,2015 北海道大学吉岡真治 プログラム理論と言語, に基づいて, 現著者の承諾のもとに, 改訂者 ( 有村 ) が加筆修正しています.

More information

Microsoft PowerPoint - prog08.ppt

Microsoft PowerPoint - prog08.ppt プログラミング言語 2 第 07 回 (2007 年 06 月 25 日 ) 1 今日の配布物 片面の用紙 1 枚 今日の課題が書かれています 本日の出欠を兼ねています 2/27 1 今日やること http://www.tnlab.ice.uec.ac.jp/~s-okubo/class/language/ にアクセスすると 教材があります 2007 年 06 月 25 日分と書いてある部分が 本日の教材です

More information

4 月 東京都立蔵前工業高等学校平成 30 年度教科 ( 工業 ) 科目 ( プログラミング技術 ) 年間授業計画 教科 :( 工業 ) 科目 :( プログラミング技術 ) 単位数 : 2 単位 対象学年組 :( 第 3 学年電気科 ) 教科担当者 :( 高橋寛 三枝明夫 ) 使用教科書 :( プロ

4 月 東京都立蔵前工業高等学校平成 30 年度教科 ( 工業 ) 科目 ( プログラミング技術 ) 年間授業計画 教科 :( 工業 ) 科目 :( プログラミング技術 ) 単位数 : 2 単位 対象学年組 :( 第 3 学年電気科 ) 教科担当者 :( 高橋寛 三枝明夫 ) 使用教科書 :( プロ 4 東京都立蔵前工業高等学校平成 30 年度教科 ( 工業 ) 科目 ( プログラミング技術 ) 年間授業計画 教科 :( 工業 ) 科目 :( プログラミング技術 ) 単位数 : 2 単位 対象学年組 :( 第 3 学年電気科 ) 教科担当者 :( 高橋寛 三枝明夫 ) 使用教科書 :( プログラミング技術 工業 333 実教出版 ) 共通 : 科目 プログラミング技術 のオリエンテーション プログラミング技術は

More information

模擬試験問題(第1章~第3章)

模擬試験問題(第1章~第3章) 基本情報技術者試験の練習問題 - 第 8 回 この問題は平成 19 年度秋期の問題から抜粋しています 問 1 次のプログラムの説明及びプログラムを読んで, 設問 1,2 に答えよ プログラムの説明 スタックを使って, 実数値を 10 進数字列 ( 文字列 ) に変換する副プログラム FloatFormat である (1) FloatFormat は, 実数 Float の値を 10 進数字列に変換し,

More information

Information Theory

Information Theory 前回の復習 講義の概要 chapter 1: 情報を測る... エントロピーの定義 確率変数 X の ( 一次 ) エントロピー M H 1 (X) = p i log 2 p i (bit) i=1 M は実現値の個数,p i は i 番目の実現値が取られる確率 実現値 確率 表 裏 0.5 0.5 H 1 X = 0.5 log 2 0.5 0.5log 2 0.5 = 1bit 1 練習問題の解答

More information

…J…−†[†E…n…‘†[…hfi¯„^‚ΛžfiüŒå

…J…−†[†E…n…‘†[…hfi¯„^‚ΛžfiüŒå takuro.onishi@gmail.com II 2009 6 11 [A] D B A B A B A B DVD y = 2x + 5 x = 3 y = 11 x = 5 y = 15. Google Web (2 + 3) 5 25 2 3 5 25 Windows Media Player Media Player (typed lambda calculus) (computer

More information

02: 変数と標準入出力

02: 変数と標準入出力 C プログラミング入門 総機 1 ( 月 1) 13: 構造体 Linux にログインし 以下の講義ページを開いておくこと http://www-it.sci.waseda.ac.jp/ teachers/w483692/cpr1/ 2015-07-06 1 例題 : 多角形の面積 n = 5 (5 角形 ) の例 n 1 n 1 p 1 S = T i = 1 2 p i p i+1 i=0 i=0

More information

目次 研究目的 背景システム開発について実験および評価結論

目次 研究目的 背景システム開発について実験および評価結論 Swift 言語を用いた関数型プログラミングの学習支援環境 宮城大学事業構想学研究科博士前期課程情報デザイン領域青木唯一 指導教員 須栗裕樹 目次 研究目的 背景システム開発について実験および評価結論 研究背景 関数型言語とは 関数 を組み合わせてプログラミングを行う言語 ( 関数型プログラミングを行うに適した仕様の言語 ) 関数 = 数学的な意味での関数 参照透過性があり 副作用がない 参照透過性

More information

1

1 2 章 1 整数を一つ読み込み, その階乗を計算する RAM プログラムを書け f (n) = n! ( n 0) 何でもよい ( n

More information

An Automated Proof of Equivalence on Quantum Cryptographic Protocols

An Automated Proof of Equivalence on Quantum Cryptographic Protocols 量子暗号のための プロトコル等価性検証ツール 久保田貴大 *, 角谷良彦 *, 加藤豪, 河野泰人, 櫻田英樹 * 東京大学情報理工学系研究科, NTT コミュニケーション科学基礎研究所 背景 暗号安全性証明の検証は難しい 量子暗号でもそうである 検証のための形式体系が提案されているが, 実際には, 形式体系の適用は手作業では非常に煩雑である 形式検証のためには, 検証ツールが開発されることが望ましい

More information

Microsoft PowerPoint - 12.ppt [互換モード]

Microsoft PowerPoint - 12.ppt [互換モード] 第 12 回構造体 1 今回の目標 構造体を理解する 構造体の定義の仕方を理解する 構造体型を理解する 構造体型の変数 引数 戻り値を理解する 複素数同士を足し算する関数を作成し その関数を利用するプログラムを作成する 2 複素数の足し算 複素数は実部と虚部の2つの実数で 表現される 表現される z = a+ bi 2 つの複素数 z 1 = a 1+ bi 1 と z2 = a2 + b2i の和

More information

Java講座

Java講座 ~ 第 1 回 ~ 情報科学部コンピュータ科学科 2 年竹中優 プログラムを書く上で Hello world 基礎事項 演算子 構文 2 コメントアウト (//, /* */, /** */) をしよう! インデントをしよう! 変数などにはわかりやすい名前をつけよう! 要するに 他人が見て理解しやすいコードを書こうということです 3 1. Eclipse を起動 2. ファイル 新規 javaプロジェクト

More information

経済数学演習問題 2018 年 5 月 29 日 I a, b, c R n に対して a + b + c 2 = a 2 + b 2 + c 2 + 2( a, b) + 2( b, c) + 2( a, c) が成立することを示しましょう.( 線型代数学 教科書 13 ページ 演習 1.17)

経済数学演習問題 2018 年 5 月 29 日 I a, b, c R n に対して a + b + c 2 = a 2 + b 2 + c 2 + 2( a, b) + 2( b, c) + 2( a, c) が成立することを示しましょう.( 線型代数学 教科書 13 ページ 演習 1.17) 経済数学演習問題 8 年 月 9 日 I a, b, c R n に対して a + b + c a + b + c + a, b + b, c + a, c が成立することを示しましょう. 線型代数学 教科書 ページ 演習.7 II a R n がすべての x R n に対して垂直, すなわち a, x x R n が成立するとします. このとき a となることを示しましょう. 線型代数学 教科書

More information

微分方程式 モデリングとシミュレーション

微分方程式 モデリングとシミュレーション 1 微分方程式モデリングとシミュレーション 2018 年度 2 質点の運動のモデル化 粒子と粒子に働く力 粒子の運動 粒子の位置の時間変化 粒子の位置の変化の割合 速度 速度の変化の割合 加速度 力と加速度の結び付け Newtonの運動方程式 : 微分方程式 解は 時間の関数としての位置 3 Newton の運動方程式 質点の運動は Newton の運動方程式で記述される 加速度は力に比例する 2

More information

Prog1_3rd

Prog1_3rd 2019 年 10 月 10 日 ( 木 ) 実施 プログラムの制御構造 1960 年代後半にダイクストラが提唱した構造化プログラミングという考え方では, 手続き型のプログラムを記述する際には, 順次, 選択, 反復という標準的な制御構造のみを用い, 先ずプログラムの概略構造を設計し, その大まかな単位を段階的に詳細化して処理を記述していく 順次構造順次構造とは, プログラム中の文を処理していく順に記述したものである

More information

Microsoft Word - Javacc.docx

Microsoft Word - Javacc.docx JavaCC 実習レポート課題について以下の実習のために コンパイラのページ http://www.info.kindai.ac.jp/compiler/ から javacc.zip をダウンロードしてください javacc.zip は以下のファイルから成ります javacc/ sample0.k, sample1.k, samplell2.k : k 言語の例プログラム sample0.asm,

More information

Microsoft PowerPoint - 09re.ppt [互換モード]

Microsoft PowerPoint - 09re.ppt [互換モード] 3.1. 正則表現 3. 正則表現 : 正則表現 ( または正規表現 ) とは 文字列の集合 (= 言語 ) を有限個の記号列で表現する方法の 1 つ 例 : (01)* 01 を繰り返す文字列 つまり 0(0+1)* 0 の後に 0 か 1 が繰り返す文字列 (01)* = {,01,0101,010101,01010101, } 0(0+1)*={0,00,01,000,001,010,011,0000,

More information

講習No.10

講習No.10 2 次元配列 復習 float d[3][4]; 2 次元配列 d[i][j] 2 つのインデックス i と j でデータが指定される 縦が 3 行横が 4 列の float 型の表 4 列 横のインデックスは 3 まで j = 0 j = 1 j = 2 j = 3 3 行 i = 0 i = 1 i = 2 d[0][0] d[0][1] d[0][2] d[0][3] d[1][0] d[1][1]

More information

Microsoft PowerPoint - PLT3.ppt

Microsoft PowerPoint - PLT3.ppt プログラミング言語論 第 3 回状態モデルと命令型言語 (2) データ型 担当 : 犬塚 今日の講義 データ型に関する事柄を見る 変数を確保する時期静的 / 動的変数 データ型 基本データ型 ユーザ定義 ( 構造 ) データ型 データ型と集合の対応 データ型と制御構造の対応 抽象データ型 オブジェクト 1 2 変数領域を確保する時期 コンパイルの際 static variable 実行時間効率がよい

More information

Microsoft PowerPoint - enshu4.ppt [äº™æ‘łã…¢ã…¼ã…›]

Microsoft PowerPoint - enshu4.ppt [äº™æ‘łã…¢ã…¼ã…›] 4. リスト, シンボル, 文字列 説明資料 本日の内容 1. リストとは 2. Scheme プログラムでのリストの記法 list 句 3. リストに関する演算子 first, rest, empty?, length, list-ref, append 4. 数字, シンボル, 文字列を含むリスト 1. Scheme でのシンボルの記法 2. Scheme での文字列の記法 リストとは 15 8

More information

C プログラミング演習 1( 再 ) 2 講義では C プログラミングの基本を学び 演習では やや実践的なプログラミングを通して学ぶ

C プログラミング演習 1( 再 ) 2 講義では C プログラミングの基本を学び 演習では やや実践的なプログラミングを通して学ぶ C プログラミング演習 1( 再 ) 2 講義では C プログラミングの基本を学び 演習では やや実践的なプログラミングを通して学ぶ 今回のプログラミングの課題 次のステップによって 徐々に難易度の高いプログラムを作成する ( 参照用の番号は よくわかる C 言語 のページ番号 ) 1. キーボード入力された整数 10 個の中から最大のものを答える 2. 整数を要素とする配列 (p.57-59) に初期値を与えておき

More information

Microsoft PowerPoint - prog04.ppt

Microsoft PowerPoint - prog04.ppt プログラミング言語 3 第 04 回 (2007 年 10 月 15 日 ) 1 今日の配布物 片面の用紙 1 枚 今日の課題が書かれています 本日の出欠を兼ねています 2/33 1 今日やること http://www.tnlab.ice.uec.ac.jp/~s-okubo/class/java06/ にアクセスすると 教材があります 2007 年 10 月 15 日分と書いてある部分が 本日の教材です

More information

離散数学

離散数学 離散数学 ブール代数 落合秀也 前回の復習 : 命題計算 キーワード 文 複合文 結合子 命題 恒真 矛盾 論理同値 条件文 重条件文 論法 論理含意 記号 P(p,q,r, ),,,,,,, 2 今日のテーマ : ブール代数 ブール代数 ブール代数と束 そして 順序 加法標準形とカルノー図 3 今日のテーマ : ブール代数 ブール代数 ブール代数と束 そして 順序 加法標準形とカルノー図 4 ブール代数の法則

More information

Microsoft PowerPoint - 13.ppt [互換モード]

Microsoft PowerPoint - 13.ppt [互換モード] 第 13 回構造体 1 今回の目標 構造体を理解する 構造体の定義の仕方を理解する 構造体型を理解する 構造体型の変数 引数 戻り値を理解する 複素数同士を足し算する関数を作成し その関数を利用するプログラムを作成する 2 複素数の足し算 複素数は実部と虚部の2つの実数で 表現される z = a+ bi z = a + bi z = a + b i 2 つの複素数 1 1 1 と 2 2 2 の和

More information

コンピュータ工学講義プリント (7 月 17 日 ) 今回の講義では フローチャートについて学ぶ フローチャートとはフローチャートは コンピュータプログラムの処理の流れを視覚的に表し 処理の全体像を把握しやすくするために書く図である 日本語では流れ図という 図 1 は ユーザーに 0 以上の整数 n

コンピュータ工学講義プリント (7 月 17 日 ) 今回の講義では フローチャートについて学ぶ フローチャートとはフローチャートは コンピュータプログラムの処理の流れを視覚的に表し 処理の全体像を把握しやすくするために書く図である 日本語では流れ図という 図 1 は ユーザーに 0 以上の整数 n コンピュータ工学講義プリント (7 月 17 日 ) 今回の講義では フローチャートについて学ぶ フローチャートとはフローチャートは コンピュータプログラムの処理の流れを視覚的に表し 処理の全体像を把握しやすくするために書く図である 日本語では流れ図という 図 1 は ユーザーに 0 以上の整数 n を入力してもらい その後 1 から n までの全ての整数の合計 sum を計算し 最後にその sum

More information

講習No.9

講習No.9 日本語は通常 2 バイトの文字コード.JIS コード, シフト JIS コード, Unicode (UTF-8) 等の様々な文字コードがある. アスキーコード表 (ASCII code) アスキーコード ( 値 ) 漢字変換無しでキーボードから直接入力できる半角文字 32 48 0 64 @ 80 P 96 ` 112 p 33! 49 1 65 A 81 Q 97 a 113 q 34 " 50

More information

gengo1-11

gengo1-11 関数の再帰定義 自然数 n の階乗 n! を計算する関数を定義してみる 引数は整数 返却値も整数 n! = 1*2*3*... * (n 1)*n である ただし 0! = 1 とする int factorial(int n) int i, tmp=1; if( n>0 ) for(i=1; i

More information

Microsoft PowerPoint - 03BNFScanner.ppt [互換モード]

Microsoft PowerPoint - 03BNFScanner.ppt [互換モード] コンパイラ理論 3 BNF と EBNF そして構文解析へ 3 章ステップ 1: 問題の把握 櫻井彰人 と文法 と EBNF 言語仕様 プログラムと言語仕様との関係 コンパイラ入門 C# で学ぶ理論と実践 より 3.2 BNF(Backus Naur Form) 文法 を記述する表記法 コンピュータ言語を表す為に使われることが多い 英文法 単語と単語の構成 関係を表す 5 文型は単語の品詞から英文の型を表現している

More information

第8回 関数

第8回 関数 1 関数型プログラミング 第 8 回関数 萩野達也 hagino@sfc.keio.ac.jp 2 関数定義 square n = n * n 与えられた数の 2 乗を計算する square 関数を定義している. 変数 square に 2 乗を計算する関数を束縛 (bind) したい. a = 10 変数 a に定数 10 を束縛する. square =... 3 高階関数 関数も値の一つである.

More information

不偏推定量

不偏推定量 不偏推定量 情報科学の補足資料 018 年 6 月 7 日藤本祥二 統計的推定 (statistical estimatio) 確率分布が理論的に分かっている標本統計量を利用する 確率分布の期待値の値をそのまま推定値とするのが点推定 ( 信頼度 0%) 点推定に ± で幅を持たせて信頼度を上げたものが区間推定 持たせた幅のことを誤差 (error) と呼ぶ 信頼度 (cofidece level)

More information

Microsoft PowerPoint - C4(反復for).ppt

Microsoft PowerPoint - C4(反復for).ppt C 言語プログラミング 繰返し ( for 文と while 文 ) 例題 (10 個のデータの平均を求める ) 手順 入力データをx1,x2,,x10 として, (x1+x2+x3+x4+x5+x6+x7+x8+x9+x10)/10 を計算する データ数が,1000 個,10000 個, となったらどうする? データ数個分の 変数の宣言, scanf 関数の呼出し, 加算式の記述 が必要 1 総和を求めること

More information

Microsoft PowerPoint - 10.pptx

Microsoft PowerPoint - 10.pptx m u. 固有値とその応用 8/7/( 水 ). 固有値とその応用 固有値と固有ベクトル 行列による写像から固有ベクトルへ m m 行列 によって線形写像 f : R R が表せることを見てきた ここでは 次元平面の行列による写像を調べる とし 写像 f : を考える R R まず 単位ベクトルの像 u y y f : R R u u, u この事から 線形写像の性質を用いると 次の格子上の点全ての写像先が求まる

More information

PowerPoint プレゼンテーション

PowerPoint プレゼンテーション オブジェクト指向 プログラミング演習 第 4 回継承 オーバーライド ポリモルフィズム 今日のお題 継承 オーバーライド ポリモルフィズム 継承 (inherit) あるクラス c のサブクラス s を定義する : このとき s は c を継承していると言う 何かの下位概念を表すクラスは その上位概念を表すクラスの属性や機能を ( 基本的には ) 使える 継承の例 大学生 長崎県立大学の学生 大学生を継承する概念

More information

Microsoft PowerPoint Java基本技術PrintOut.ppt [互換モード]

Microsoft PowerPoint Java基本技術PrintOut.ppt [互換モード] 第 3 回 Java 基本技術講義 クラス構造と生成 33 クラスの概念 前回の基本文法でも少し出てきたが, オブジェクト指向プログラミングは という概念をうまく活用した手法である. C 言語で言う関数に似ている オブジェクト指向プログラミングはこれら状態と振る舞いを持つオブジェクトの概念をソフトウェア開発の中に適用し 様々な機能を実現する クラス= = いろんなプログラムで使いまわせる 34 クラスの概念

More information

Microsoft PowerPoint - ruby_instruction.ppt

Microsoft PowerPoint - ruby_instruction.ppt Ruby 入門 流れ Ruby の文法 画面に出力 キーボードから入力 数値 文字列 変数 配列 ハッシュ 制御構造 ( 分岐 繰り返しなど ) if while case for each 関数 クラス Ruby とは プログラミング言語 インタプリタ言語 オブジェクト指向 国産 ウェブアプリケーションフレームワーク RubyOnRails で注目 弊社での Web アプリケーション開発に利用 画面に出力

More information

オートマトン 形式言語及び演習 3. 正規表現 酒井正彦 正規表現とは 正規表現 ( 正則表現, Regular Expression) オートマトン : 言語を定義する機械正規表現 : 言語

オートマトン 形式言語及び演習 3. 正規表現 酒井正彦   正規表現とは 正規表現 ( 正則表現, Regular Expression) オートマトン : 言語を定義する機械正規表現 : 言語 オートマトン 形式言語及び演習 3. 酒井正彦 www.trs.css.i.nagoya-u.ac.jp/~sakai/lecture/automata/ とは ( 正則表現, Regular Expression) オートマトン : 言語を定義する機械 : 言語を記号列で定義 - 記述しやすい ( ユーザフレンドリ ) 例 :01 + 10 - UNIX の grep コマンド - UNIX の

More information

Microsoft PowerPoint - prog03.ppt

Microsoft PowerPoint - prog03.ppt プログラミング言語 3 第 03 回 (2007 年 10 月 08 日 ) 1 今日の配布物 片面の用紙 1 枚 今日の課題が書かれています 本日の出欠を兼ねています 2/33 今日やること http://www.tnlab.ice.uec.ac.jp/~s-okubo/class/java06/ にアクセスすると 教材があります 2007 年 10 月 08 日分と書いてある部分が 本日の教材です

More information

オートマトン 形式言語及び演習 4. 正規言語の性質 酒井正彦 正規言語の性質 反復補題正規言語が満たす性質 ある与えられた言語が正規言語でないことを証明するために その言語が正規言語であると

オートマトン 形式言語及び演習 4. 正規言語の性質 酒井正彦   正規言語の性質 反復補題正規言語が満たす性質 ある与えられた言語が正規言語でないことを証明するために その言語が正規言語であると オートマトン 形式言語及び演習 4. 正規言語の性質 酒井正彦 www.trs.css.i.nagoya-u.ac.jp/~sakai/lecture/automata/ 正規言語の性質 正規言語が満たす性質 ある与えられた言語が正規言語でないことを証明するために その言語が正規言語であると仮定してを使い 矛盾を導く 閉包性正規言語を演算により組み合わせて得られる言語が正規言語となる演算について調べる

More information

スライド 1

スライド 1 ブール代数 ブール代数 集合 { 0, 1 } の上で演算 AND, OR, NOT からなる数学的体系 何のため? ある演算をどのような回路で実現すればよいのか? どうすれば回路が小さくなるのか? どうすれば回路が速く動くのか? 3 復習 : 真理値表とゲート記号 真理値表 A B A B 0 0 0 0 1 0 1 0 0 1 1 1 A B A+B 0 0 0 0 1 1 1 0 1 1 1

More information

文法と言語 ー文脈自由文法とLR構文解析2ー

文法と言語 ー文脈自由文法とLR構文解析2ー 文法と言語ー文脈自由文法とLR 構文解析 2 ー 和田俊和資料保存場所 http://vrl.sys.wakayama-u.ac.jp/~twada/syspro/ 前回までの復習 最右導出と上昇型構文解析 最右導出を前提とした場合, 上昇型の構文解析がしばしば用いられる. 上昇型構文解析では生成規則の右辺にマッチする部分を見つけ, それを左辺の非終端記号に置き換える 還元 (reduction)

More information

Scilab 勉強会 ( 第 3 回 ) 高橋一馬, 十文字俊裕, 柏倉守 平成 17 年 11 月 15 日 関数 ファイルはエディタを用いて作成する.Scilab にはエディタ SciPad が附属している.SciPad では なく他のエディタを利用してもよい. 作成した関数は Scilab に

Scilab 勉強会 ( 第 3 回 ) 高橋一馬, 十文字俊裕, 柏倉守 平成 17 年 11 月 15 日 関数 ファイルはエディタを用いて作成する.Scilab にはエディタ SciPad が附属している.SciPad では なく他のエディタを利用してもよい. 作成した関数は Scilab に Scilab 勉強会 ( 第 3 回 ) 高橋一馬, 十文字俊裕, 柏倉守 平成 17 年 11 月 15 日 関数 ファイルはエディタを用いて作成する.Scilab にはエディタ SciPad が附属している.SciPad では なく他のエディタを利用してもよい. 作成した関数は Scilab にロードすることで ( 関数に誤りがなけ れば )Scilab 標準関数と同じように使用することができる.

More information

Microsoft PowerPoint L07-Imperative Programming Languages-4-students ( )

Microsoft PowerPoint L07-Imperative Programming Languages-4-students ( ) プログラミング言語論 A (Concepts on Programming Languages) 趙建軍 (Jianjun Zhao) 1 第 7 回 命令型言語 (4) (Imperative Programming Languages) 手続き ( 関数 ) の呼び出し 2019.05.30 2 1 今日の講義 手続きとは 手続きの定義 引数渡し スコープ規則 3 今日の講義 手続きとは 手続きの定義

More information

コンパイラ演習第 11 回 2006/1/19 大山恵弘 佐藤秀明 今回の内容 バリアント / レコード 表現方法 型付け パターンマッチ 型付け switch 文への変換 簡単な最適化 マッチング漏れ 以降のフェーズでの処理 発展 exhaustivenessinformation の利用 パター

コンパイラ演習第 11 回 2006/1/19 大山恵弘 佐藤秀明 今回の内容 バリアント / レコード 表現方法 型付け パターンマッチ 型付け switch 文への変換 簡単な最適化 マッチング漏れ 以降のフェーズでの処理 発展 exhaustivenessinformation の利用 パター コンパイラ演習第 11 回 2006/1/19 大山恵弘 佐藤秀明 今回の内容 バリアント / レコード 表現方法 型付け パターンマッチ 型付け switch 文への変換 簡単な最適化 マッチング漏れ 以降のフェーズでの処理 発展 exhaustivenessinformation の利用 パターン式の拡張 バリアント / レコード バリアントのメモリレイアウト 先頭にタグを追加したタプルのように配置

More information

様々なミクロ計量モデル†

様々なミクロ計量モデル† 担当 : 長倉大輔 ( ながくらだいすけ ) この資料は私の講義において使用するために作成した資料です WEB ページ上で公開しており 自由に参照して頂いて構いません ただし 内容について 一応検証してありますが もし間違いがあった場合でもそれによって生じるいかなる損害 不利益について責任を負いかねますのでご了承ください 間違いは発見次第 継続的に直していますが まだ存在する可能性があります 1 カウントデータモデル

More information

アスペクトの相互作用を解消するアスペクトの提案

アスペクトの相互作用を解消するアスペクトの提案 アスペクトの相互作用を解消する アスペクトの提案 武山文信千葉滋東京工業大学大学院情報理工学研究科数理 計算科学専攻 2009/03/11 武山文信, 千葉滋, アスペクトの相互作用を解消するアスペクトの提案 @PPL2009 in 高山 1/21 アスペクト指向プログラミング (AOP) 横断的関心事をアスペクトとしてモジュール化 オブジェクト指向 (OOP) では上手く分離できない クラス階層に

More information

人工知能入門

人工知能入門 藤田悟 黄潤和 探索とは 探索問題 探索解の性質 探索空間の構造 探索木 探索グラフ 探索順序 深さ優先探索 幅優先探索 探索プログラムの作成 バックトラック 深さ優先探索 幅優先探索 n 個の ueen を n n のマスの中に 縦横斜めに重ならないように配置する 簡単化のために 4-ueen を考える 正解 全状態の探索プログラム 全ての最終状態を生成した後に 最終状態が解であるかどうかを判定する

More information

JavaプログラミングⅠ

JavaプログラミングⅠ Java プログラミング Ⅰ 2 回目 ようこそ Java へ 今日の講義で学ぶ内容 画面へのメッセージの表示 文字や文字列 数値を表現するリテラル 制御コードを表すエスケープシーケンス 画面出力の基本形 ソースファイル名 : クラス名.java class クラス名 System.out.println(" ここに出力したい文字列 1 行目 "); System.out.println(" ここに出力したい文字列

More information

コンパイラ演習 第 7 回

コンパイラ演習 第 7 回 コンパイラ演習 第 7 回 (2010/11/18) 秋山茂樹池尻拓朗前田俊行鈴木友博渡邊裕貴潮田資秀小酒井隆広山下諒蔵佐藤春旗大山恵弘佐藤秀明住井英二郎 今日の内容 Type Polymorphism ( 型多相性 ) の実現について Polymorphism 大きく分けて 3 種類ある Parametric polymorphism Subtyping polymorphism Ad-hoc polymorphism

More information

Microsoft PowerPoint - 5.ppt [互換モード]

Microsoft PowerPoint - 5.ppt [互換モード] 5. チューリングマシンと計算 1 5-1. チューリングマシンとその計算 これまでのモデルでは テープに直接書き込むことができなかった また 入力テープヘッドの操作は右方向だけしか移動できなかった これらの制限を取り除いた機械を考える このような機械をチューリングマシン (Turing Machine,TM) と呼ぶ ( 実は TMは 現実のコンピュータの能力を持つ ) TM の特徴 (DFA との比較

More information

Microsoft PowerPoint - Prog05.ppt

Microsoft PowerPoint - Prog05.ppt 本日の内容 プログラミング言語第五回 担当 : 篠沢佳久櫻井彰人 平成 20 年 5 月 19 日 制御構造 条件式 論理式 ( 復習 ) if 式 繰り返し (1) 無限の繰り返し 1 2 Ruby vs. Excel 浮動小数点数の計算能力は同じ 整数の計算能力は Ruby が上 Ruby なら何桁でも計算できる Excel には 整数計算だけやって! ということができない欠点がある 使いやすさは

More information

Microsoft PowerPoint - 08LR-conflicts.ppt [互換モード]

Microsoft PowerPoint - 08LR-conflicts.ppt [互換モード] 属性文法 コンパイラ理論 8 LR 構文解析補足 : 属性文法と conflicts 櫻井彰人 Racc (Yacc 系のcc) は属性文法的 非終端記号は 値 (semantic value) を持つ パーザーは パーザースタックをreduceするとき ( 使う規則を X ::= s とする ) s に付随する semantic value (Racc では配列 valueにある ) を用いて action

More information

Microsoft PowerPoint - qcomp.ppt [互換モード]

Microsoft PowerPoint - qcomp.ppt [互換モード] 量子計算基礎 東京工業大学 河内亮周 概要 計算って何? 数理科学的に 計算 を扱うには 量子力学を計算に使おう! 量子情報とは? 量子情報に対する演算 = 量子計算 一般的な量子回路の構成方法 計算って何? 計算とは? 計算 = 入力情報から出力情報への変換 入力 計算機構 ( デジタルコンピュータ,etc ) 出力 計算とは? 計算 = 入力情報から出力情報への変換 この関数はどれくらい計算が大変か??

More information

プログラミング入門1

プログラミング入門1 プログラミング入門 1 第 5 回 繰り返し (while ループ ) 授業開始前に ログオン後 不要なファイルを削除し て待機してください Java 1 第 5 回 2 参考書について 参考書は自分にあったものをぜひ手元において自習してください 授業の WEB 教材は勉強の入り口へみなさんを案内するのが目的でつくられている これで十分という訳ではない 第 1 回に紹介した本以外にも良書がたくさんある

More information

nlp1-04a.key

nlp1-04a.key 自然言語処理論 I. 文法 ( 構文解析 ) その 構文解析 sytctic lysis, prsig 文の構文的な構造を決定すること句構造文法が使われることが多い文法による構文木は一般に複数ある 構文木の違い = 解釈の違い 構文解析の目的 句構造文法の規則を使って, 文を生成できる構文木を全て見つけだすこと 文法が入力文を生成できるかどうかを調べるだけではない pro I 構文解析とは 構文木の違い

More information

C 言語の式と文 C 言語の文 ( 関数の呼び出し ) printf("hello, n"); 式 a a+4 a++ a = 7 関数名関数の引数セミコロン 3 < a "hello" printf("hello") 関数の引数は () で囲み, 中に式を書く. 文 ( 式文 ) は

C 言語の式と文 C 言語の文 ( 関数の呼び出し ) printf(hello, n); 式 a a+4 a++ a = 7 関数名関数の引数セミコロン 3 < a hello printf(hello) 関数の引数は () で囲み, 中に式を書く. 文 ( 式文 ) は C 言語復習 C 言語の基礎 来週もこの資料を持参してください C 言語, ソースファイルの作成, コンパイル, 実行 1 C 言語 C 言語プログラミングの手順 とは, 計算機を動かす手順を記述したもの. 計算機に命令を与えて動かすには を作成する ことになる. C 言語はプログラミング言語の 1 個 手続き型言語に分類される. C/C++ は非常に多くの場面で使われる言語 C++ は C 言語をオブジェクト指向に拡張したもの

More information

融合規則 ( もっとも簡単な形, 選言的三段論法 ) ll mm ll mm これについては (ll mm) mmが推論の前提部になり mmであるから mmは常に偽となることがわかり ll mmはllと等しくなることがわかる 機械的には 分配則より (ll mm) mm (ll mm) 0 ll m

融合規則 ( もっとも簡単な形, 選言的三段論法 ) ll mm ll mm これについては (ll mm) mmが推論の前提部になり mmであるから mmは常に偽となることがわかり ll mmはllと等しくなることがわかる 機械的には 分配則より (ll mm) mm (ll mm) 0 ll m 知識工学 ( 第 5 回 ) 二宮崇 ( ninomiya@cs.ehime-u.ac.jp ) 論理的エージェント (7 章のつづき ) 証明の戦略その 3 ( 融合法 ) 証明の戦略その 1 やその 2 で証明できたときは たしかにKKKK ααとなることがわかるが なかなか証明できないときや 証明が本当にできないときには KKKK ααが成り立つのか成り立たないのかわからない また どのような証明手続きを踏めば証明できるのか定かではない

More information

4 ソフトウェア工学 Software Engineering 抽象データ型 ABSTRACT DATA TYPE データ抽象 (data abstraction) 目的 : データ構造を ( 実装に依存せずに ) 抽象的に定義 方法 : データにアクセス (read, write) する関数の仕様

4 ソフトウェア工学 Software Engineering 抽象データ型 ABSTRACT DATA TYPE データ抽象 (data abstraction) 目的 : データ構造を ( 実装に依存せずに ) 抽象的に定義 方法 : データにアクセス (read, write) する関数の仕様 4 ソフトウェア工学 Software Engineering 抽象データ型 STRT DT TYPE データ抽象 (data abstraction) 目的 : データ構造を ( 実装に依存せずに ) 抽象的に定義 方法 : データにアクセス (read, write) する関数の仕様のみを記述 スタック (stack) の例 D push(d,s) S) pop(s) top(s)= top(s)=

More information

このルールをそのまま正規表現として書くと 下記のようになります ^A[0-9]{2}00[0-9]{3}([0-9]{2})?$ ちょっと難しく見えるかもしれませんが 下記のような対応になっています 最初 固定 年度 固定 通番 ( 枝番 ) 最後 ルール "A" 数字 2 桁 0 を 2 桁 数字

このルールをそのまま正規表現として書くと 下記のようになります ^A[0-9]{2}00[0-9]{3}([0-9]{2})?$ ちょっと難しく見えるかもしれませんが 下記のような対応になっています 最初 固定 年度 固定 通番 ( 枝番 ) 最後 ルール A 数字 2 桁 0 を 2 桁 数字 正規表現について 作成日 : 2016/01/21 作成者 : 西村 正規表現? 正規表現 (Regular Expression Regex) というと難しいもののように感じますが 正規表現 というのは 文字のパターンを表したもの です ( 例 ) これはソエルで使用している見積書の番号です A1500033 この番号は 下記のルールで付けられています 固定 年度 固定 通番 ( 枝番 ) ルール

More information

CプログラミングI

CプログラミングI C プログラミング I Swap 関数を作る Stack データ構造のための準備 整数変数 x と y の値を取り替える関数 swap を作る 最初の試み : swap-01.c #include void swap(int a, int b) { int tmp; tmp = a; a = b; b = tmp; int main(void) { int x=10, y=30;

More information