プログラミング言語論 - o.pptVIP

  1. 1、本文档共20页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
プログラミング言語論 - o

プログラミング言語論 第4回 抽象データ型 担当:犬塚 今日の講義 データ抽象に関する事柄を見る。 データ抽象とは 抽象データ型とは 抽象データ型の諸概念、利点 ADTのバリエーション 引数つきの抽象データ型 モジュール単位のカプセル化 データ不変条件 抽象 abstract, abstraction 抽象 =抽出=何かを取り出すこと =捨象=いくつかを捨て去ること 反対語は、具体的、具象 concrete ものを抽象的に表すというのは、その本質(あるいは注目点)のみを残してそれ以外を捨てること。 工学ではものを「作る」のに、その本質(機能、性質)のみに注目して、他を忘れる(忘れても大丈夫な仕掛けを用意する)ことで大規模な構築物を得る。 プログラミングでの2つの抽象 抽象はプログラミングで2つの側面から使われる =具体的な実現方法を捨象して、機能に注目。 プロセスの抽象 process abstraction データ(型)の抽象 data abstraction プロセスの抽象 process abstraction 一連の手続きを括りだして、抽象化する。  =サブルーチン、手続き、関数 そのルーチンの実現方法(=実装)を抽象し(気にせずに)次のことのみに注目: そのルーチンの機能 そのルーチンの呼出し方:プロトコル、インターフェース 例 sortのルーチン  機能:リストを順番に並べる  呼出し方:sort(リスト,リストの長さ)  順番に並べるための方法は気にしない。 データ抽象 data abstraction データの情報内容と情報内容の操作のみを気にすればよい仕掛け。 どのようにメモリー内で記憶されているか、 どのような型定義によって実現されているか、  は気にしない。 これを実現するための考え方: 抽象データ型  Abstract data type オブジェクト指向プログラミング Object-oriented programming 抽象データ型 ADT:abstract data type 抽象データ型は次の2組からなる: データ型(その型の変数の取りうる値の範囲) そのデータ型のデータに対する操作(手続き、関数) 抽象データ型を定めると、 クライアントはそのデータ型を宣言することができる。 与えられた手続きによってデータを操作できる。 ADTをサポートする言語は、 ADTの具体的な実現方法(=その抽象データ型の実装)を記述できる。 ADTの実装を隠蔽することができる。 ※クライアント=ADTを利用する側のルーチン 抽象データ型の例 スタックを扱うADT stack型を考える。 クライアントは、stack型の変数を宣言できる。  var stk1: stack; stack型のデータを操作する手続きがある:    create(stk1); stk1を新たなスタックとして用意し、初期化する。 destroy(stk1); stk1の使用をやめる(メモリーを解放する) empty(stk1); stk1を空のスタックに初期化する。 push(stk1,elm); 要素elmをstk1に積む。 elm := pop(stk1) stk1に積まれている最上位の要素を取り出す。 スタック型の実現(1) type stack = record top : integer; content : array[1..maxsize] of element end; proc create(s : stack); prepare memory for s; s.top :=0; proc destroy(s : stack); release memory for s; proc empty(s: stack); s.top :=0; proc push(s:stack; e:element); if top=maxsize then error else s.top:=s.top+1; s.content[s.top]:=e; func top(s:stack):element; if s.top=0 then error else s.top:=s.top-1; return s.content[s.top+1]; スタック型の実現(2) type cell = record content : element; next : pointer to cell end; stack = pointer to cell proc create(s : stack); s

文档评论(0)

maritime5 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档