基礎情報技術 ー第3日目ー 平成27年4月24日(金) 担当:亀田.

Slides:



Advertisements
Similar presentations
情報処理基礎 A ・ B 第 5 回 プログラミング入門 操作の自動化を実現する仕組み. 2004/11/16 ・ 17 情報処理基礎 A ・ B 2 本日の内容 処理の自動化~プログラムの概念 ハードウェアとソフトウェア プログラミング言語 Excel における処理の自動化 入力支援の機能 分析ツール.
Advertisements

オブジェクト指向 言語 論 知能情報学部 新田直也. 講義概要  私の研究室: 13 号館 2 階 (13-206)  講義資料について :  参考図書 : 河西朝雄 : 「原理がわかる プログラムの法則」,
情報・知能工学系 山本一公 プログラミング演習Ⅱ 第3回 配列(1) 情報・知能工学系 山本一公
C言語によるプログラミングスタイル 制御システム工学科 山北 昌毅.
東京工科大学 コンピュータサイエンス 亀田弘之
プログラミング入門 (教科書1~3章) 2005/04/14(Thu.).
知識情報演習Ⅲ(後半第1回) 辻 慶太(水)
オブジェクト指向言語論 知能情報学部 新田直也.
基礎情報技術 ー第3日目ー 平成23年4月29日(金) 担当:亀田.
シミュレーション物理5 運動方程式の方法: サブルーチンの使い方.
プログラミング言語論 理工学部 情報システム工学科 新田直也.
プログラミング言語論 理工学部 情報システム工学科 新田直也.
オブジェクト指向 プログラミング 第一回 知能情報学部 新田直也.
プログラミング言語論 プログラミング言語論 ガイダンス 水野 嘉明 ガイダンス 1 1.
SS2009 形式手法の適用ワーキング グループの報告
UML入門 UML PRESS vol.1 より 時松誠治 2003年5月19日.
基礎情報技術 ー第2日目ー 平成20年5月9日(金) 担当:亀田.
基礎プログラミング演習 第1回.
人工知能特論2007 東京工科大学 亀田弘之.
東京工科大学 コンピュータサイエンス学部 亀田弘之
シミュレーション論 Ⅱ 第15回 まとめ.
形式言語とオートマトン Formal Languages and Automata 第4日目
形式言語とオートマトン Formal Languages and Automata 第4日目
その他の図 Chapter 7.
ソフトウェア情報学総論 基盤ソフトウェア学講座
形式言語とオートマトン Formal Languages and Automata 第4日目
Structured programming
岩村雅一 知能情報工学演習I 第10回(後半第4回) 岩村雅一
社会シミュレーションのための モデル作成環境
~新たなソフトウェア開発の手法~ 発表 土屋俊介
データ構造とアルゴリズム論 第1章 アルゴリズムの表現-流れ図
ソフトウェア設計検証 研究室の紹介 知能情報学部 准教授 新田直也.
プログラミング基礎a 第1回 ハードウェアとソフトウェア プログラミング総論 ~プログラミング言語とは~
基礎情報技術 平成27年7月3日(金) 担当:亀田.
教師にとっての「生の質」 青木直子(大阪大学).
Fortranについて 高エネルギー加速器研究機構 平山 英夫.
東京工科大学 コンピュータサイエンス学部 亀田弘之
プログラミング言語論 第四回 理工学部 情報システム工学科 新田直也.
岩村雅一 知能情報工学演習I 第11回(後半第5回) 岩村雅一
第5章 計算とプログラム 本章で説明すること ・計算の概観と記述法 ・代表的な計算モデル ・プログラムとプログラム言語.
先週の復習: CPU が働く仕組み コンピュータの構造 pp 制御装置+演算装置+レジスタ 制御装置がなければ電卓と同様
東京工科大学 コンピュータサイエンス学部 担当 亀田弘之
UMLの概要とオブジェクト指向の基本概念
INTRODUCTION TO SOFTWARE ENGINEERING
プロジェクト演習 知能情報学部 新田直也.
ソフトウェア工学 知能情報学部 新田直也.
人を幸せにするアプリケーションの開発 2004年度春学期 大岩研究プロジェクト2 2004年4月8日(木) 発表:武田林太郎.
プログラミング言語論 第十一回 理工学部 情報システム工学科 新田直也.
情報基礎Ⅱ (第1回) 月曜4限 担当:北川 晃.
ガイダンス 電子計算機 電気工学科 山本昌志 1E
東京工科大学 コンピュータサイエンス学部 亀田弘之
東京工科大学 コンピュータサイエンス学部 亀田弘之
自然言語処理2015 Natural Language Processing 2015
ソフトウェア工学 知能情報学部 新田直也.
ソフトウェア工学 理工学部 情報システム工学科 新田直也.
第6回放送授業.
ソフトウェア工学 知能情報学部 新田直也.
情報数学Ⅲ 5,6 (コンピュータおよび情報処理)
オブジェクト指向言語論 第二回 知能情報学部 新田直也.
情報ネットワークと コミュニケーション 数学領域3回 山本・野地.
オブジェクト指向言語論 第一回 知能情報学部 新田直也.
形式言語とオートマトン Formal Languages and Automata 第5日目
プログラミング言語論 第九回 理工学部 情報システム工学科 新田直也.
自然言語処理2016 Natural Language Processing 2016
オブジェクト指向言語論 第七回 知能情報学部 新田直也.
プログラミング言語論 第九回 理工学部 情報システム工学科 新田直也.
オブジェクト指向言語論 第七回 知能情報学部 新田直也.
オブジェクト指向言語論 第三回 知能情報学部 新田直也.
オブジェクト指向メトリクスを用いた 開発支援に関する研究 --- VC++とMFCを用いた開発を対象として ---
アルゴリズム ~すべてのプログラムの基礎~.
Presentation transcript:

基礎情報技術 ー第3日目ー 平成27年4月24日(金) 担当:亀田

© 2015年 東京工科大学 Hiroyuki Kameda 確認 授業で使用した資料は授業終了後に Web(http://kameken.clique.jp/)にて 公開します。 授業中はノートにメモを取ってください。 (キーワードや図だけでも結構です。) レポート課題や小テストがある? © 2015年 東京工科大学 Hiroyuki Kameda

© 2015年 東京工科大学 Hiroyuki Kameda それでは始めましょう © 2015年 東京工科大学 Hiroyuki Kameda

© 2015年 東京工科大学 Hiroyuki Kameda ウォーミングアップ問題 問題:プログラミングに必要な才能は何? 3つ以上答えなさい。 © 2015年 東京工科大学 Hiroyuki Kameda

© 2015年 東京工科大学 Hiroyuki Kameda 本講義のポイントの確認 ITのプロになるためには何が必要か? これを考えるための素材をお話します。 © 2015年 東京工科大学 Hiroyuki Kameda

© 2015年 東京工科大学 Hiroyuki Kameda 前回のポイントの確認 SEの仕事はプログラミングだけではない ソフトウェアのライフサイクル オブジェクト指向 モデリング言語 UML など (これらは回を追ってさらに詳しく話します。) © 2015年 東京工科大学 Hiroyuki Kameda

© 2015年 東京工科大学 Hiroyuki Kameda 授業概要(確認) ITエンジニアのプロフェッショナルになるためには、プロとしての嗜み(たしなみ)と作法を身につけることも大切である。本授業では、今後プロとしてソフトウェアかかわる人たちにとって避けて通ることのできない嗜み・作法を簡単な演習を通じて紹介するとともに、学生の皆さんにそれらの必要性・重要性を身を持って理解してもらうことを目指す。 具体的には、ソフトウェア開発を上流工程から下流工程へ向けて実際に体験してもらいながら、UML(Unified Modeling Language)やプロジェクト管理等の紹介を行う。 ITシステム ≠ プログラミング であることや、ソフトウェア開発におけるコミュニケーションの意義、プロジェクト管理の重要性についてなど、多くのことを学生の皆さん自らが気づくことを期待する。 © 2015年 東京工科大学 Hiroyuki Kameda

© 2015年 東京工科大学 Hiroyuki Kameda 今日の内容 イントロの続き プログラミング言語 プログラミング プログラミング工学 ソフトウェア開発 ソフトウェア工学 © 2015年 東京工科大学 Hiroyuki Kameda

© 2015年 東京工科大学 Hiroyuki Kameda ソフトウェア開発過程の概要 「ソフトウェアは実際にどのような作業工程を 経て作れば良いのか?」 ということ。 © 2015年 東京工科大学 Hiroyuki Kameda

© 2015年 東京工科大学 Hiroyuki Kameda ソフトウェア開発過程の確立 これは未解決問題の1つです! © 2015年 東京工科大学 Hiroyuki Kameda

よいプログラムは どうやって作れば良いのか? “よいプログラム”とはどんなプログラムのことでしょうか? (質的に) こんなプログラムってどうやって作る のだろうか? © 2015年 東京工科大学 Hiroyuki Kameda

よいプログラムは どうやって作れば良いのか? バグのない 動作効率のよい 開発コストがかからない メンテナンスがしやすい 急な修正・変更にも対応できる 拡張性のある 汎用性のある などなど こんなプログラムってどうやって作る のだろうか? © 2015年 東京工科大学 Hiroyuki Kameda

例えば、プログラミング言語 事務処理計算向き言語 科学技術計算向き言語 これにもいろいろな工夫がなされてきた 事務処理計算向き言語 科学技術計算向き言語 人工知能研究向き言語 など (こんな分類のもと、さまざまな言語が考案されてきた。) 疑問:プログラミング言語の分類は今後もこれでいいのだろうか? © 2015年 東京工科大学 Hiroyuki Kameda

© 2015年 東京工科大学 Hiroyuki Kameda 要求仕様としては… 対象としている処理(機能・サービス)を記述・実現することができなければならない。 人間にとって使いやすく、分かりやすいものであって欲しい。 Fortran:計算式をそのまま書ける Cobol:自然言語に近い表現が可能 Pascal: ____________________ C: ________________________ Java: ______________________ 考えてみてください。 © 2015年 東京工科大学 Hiroyuki Kameda

© 2015年 東京工科大学 Hiroyuki Kameda よりよいプログラムをもとめて… 機能の整理 モジュール化/階層化 構造化プログラミング モジュールの独立性 (関数型言語、データ抽象化、  =>オブジェクト指向) ソフトウェア開発法 プログラミング言語側から 開発法側から © 2015年 東京工科大学 Hiroyuki Kameda

© 2015年 東京工科大学 Hiroyuki Kameda 具体的に見てみよう プログラミングの側面から 開発手法の側面から © 2015年 東京工科大学 Hiroyuki Kameda

工学部情報工学科での講義資料より 担当:亀田弘之(東京工科大学) プログラム工学Ⅲ (ダイジェスト版) 工学部情報工学科での講義資料より 担当:亀田弘之(東京工科大学)

© 2015年 東京工科大学 Hiroyuki Kameda C言語の歴史 1972年 誕生(Dennis M. Ritchie) UNIX開発用言語として使用(K & R 規格) ハードウェアの発達により新しい機能追加 方言(dialect)の発生 1989年 ANSI規格制定(ANSI C89) 1990年 ISO規格制定(ISO C89) 1993年 JIS C制定(JIS X3010-1993) © 2015年 東京工科大学 Hiroyuki Kameda

© 2015年 東京工科大学 Hiroyuki Kameda 問題 C言語は今後どのような発展の道をたどるか論じなさい。 BASIC、PASCAL、FORTRAN、COBOL、LISP、PROLOGなどの他の言語の歴史を調べ、各言語がどのような背景・目的で誕生し、どのような道をたどっているか論ぜよ。 © 2015年 東京工科大学 Hiroyuki Kameda

© 2015年 東京工科大学 Hiroyuki Kameda C言語の特徴 構造化プログラミング向き ハードウェアが透けて見える高水準言語 豊富なデータタイプ コンパクトな言語仕様 関数形式によるモジュール化 移植性が比較的高い © 2015年 東京工科大学 Hiroyuki Kameda

© 2015年 東京工科大学 Hiroyuki Kameda 構造化プログラミングとは 処理手続きをいくつかの単位に分割し、主となる処理は大まかに記述とし、細部はサブルーチンとして記述していく方法。 エドガー・ダイクストラらによって提唱された。ダイクストラは、大規模化したプログラムを効率よく記述しプログラム設計上のミスが起きにくいようにするための方法論を検討した。 その結果1960年代後半に、構造化定理を証明し、構造化プログラミングを提唱した。 © 2015年 東京工科大学 Hiroyuki Kameda

© 2015年 東京工科大学 Hiroyuki Kameda 構造化定理 1つの入り口と1つの出口を持つようなプログラムは、「順次・反復・分岐」の3つの基本的な論理構造によって記述できる(Dijikstra)。 順次 反復 分岐 © 2015年 東京工科大学 Hiroyuki Kameda

© 2015年 東京工科大学 Hiroyuki Kameda 分岐 順次 反復 S = S + 1 X = f(S, 5) S = g(X) + S © 2015年 東京工科大学 Hiroyuki Kameda

© 2015年 東京工科大学 Hiroyuki Kameda 問題 C言語の特徴を、Javaなどの他の言語と比較して述べよ。 © 2015年 東京工科大学 Hiroyuki Kameda

© 2015年 東京工科大学 Hiroyuki Kameda 3.プログラムの基本的なパターン #include <stdio.h> main( ) { } 本体 © 2015年 東京工科大学 Hiroyuki Kameda

© 2015年 東京工科大学 Hiroyuki Kameda 3.プログラムの基本的なパターン #include <stdio.h> main( ) { double fahrenheit; /* 華氏 */ double celsius; /* 摂氏 */ scanf(“%f”, &fahrenheit); celsius = ( fahrenheit – 32 )*5.0/9.0; printf(“%f”, celsius); } © 2015年 東京工科大学 Hiroyuki Kameda

© 2015年 東京工科大学 Hiroyuki Kameda 3.プログラムの基本的なパターン Cのプリプロセッサ用 #include <stdio.h> main( ) { double fahrenheit; /* 華氏 */ double celsius; /* 摂氏 */ scanf(“%f”, & fahrenheit); celsius = ( fahrenheit – 32 )*5.0/9.0; printf(“%f”, celsius); } Cのプログラム © 2015年 東京工科大学 Hiroyuki Kameda

© 2015年 東京工科大学 Hiroyuki Kameda 3.プログラムの基本的なパターン #include <stdio.h> main( ) { double fahrenheit; /* 華氏 */ double celsius; /* 摂氏 */ scanf(“%f”, &fahrenheit); celsius = ( fahrenheit – 32 )*5.0/9.0; printf(“%f”, celsius); } © 2015年 東京工科大学 Hiroyuki Kameda

© 2015年 東京工科大学 Hiroyuki Kameda 中略 © 2015年 東京工科大学 Hiroyuki Kameda

© 2015年 東京工科大学 Hiroyuki Kameda 5.構造化プログラミングと制御構造 © 2015年 東京工科大学 Hiroyuki Kameda

© 2015年 東京工科大学 Hiroyuki Kameda 分岐 順次 反復 S = S + 1 X = f(S, 5) S = g(X) + S 構造化プログラミング © 2015年 東京工科大学 Hiroyuki Kameda

© 2015年 東京工科大学 Hiroyuki Kameda 5.構造化プログラミングと制御構造 順次 反復 for文 while文 do-while文 分岐 goto文 break文 continue文 switch文 & case文 © 2015年 東京工科大学 Hiroyuki Kameda

© 2015年 東京工科大学 Hiroyuki Kameda For文 Syntax: for(式1; 式2; 式3) 文 例: for( i=1; i <= 100; i++) s = s + i; s=s+i i++ i<=100 i=1 Flow Chart © 2015年 東京工科大学 Hiroyuki Kameda

© 2015年 東京工科大学 Hiroyuki Kameda こんな具合でした... Javaの話と似ていませんでしたか? © 2015年 東京工科大学 Hiroyuki Kameda

© 2015年 東京工科大学 Hiroyuki Kameda 今度は、… プログラミングの側面から 開発手法の側面から © 2015年 東京工科大学 Hiroyuki Kameda

© 2015年 東京工科大学 Hiroyuki Kameda ソフトウェアのライフサイクル(1) 要求分析 設計 プログラミング デバッグ 評価 運用 ⇒再び1へ戻る © 2015年 東京工科大学 Hiroyuki Kameda

© 2015年 東京工科大学 Hiroyuki Kameda ソフトウェアのライフサイクル(2) 何(どんなもの)を作ればいいの? どう作ればいの? 作成作業そのもの(デバッグもやりながら) 本当にちゃんとできたのかな? 実際に使おう! ちょっと変更したいな。 © 2015年 東京工科大学 Hiroyuki Kameda

© 2015年 東京工科大学 Hiroyuki Kameda ソフトウェア開発モデル ウォーターフォール(water fall)モデル プロトタイピングによるソフトウェア開発 インクリメンタルモデルとイテラティブモデル スパイラルモデル データフローモデル アジャイルモデル モデル駆動型 =>一長一短あり 自主問題:  ウォーターフォールモデル , スパイラルモデルおよび  モデル駆動型アーキテクチャ(MDA)について調べよ。 © 2015年 東京工科大学 Hiroyuki Kameda

© 2015年 東京工科大学 Hiroyuki Kameda ソフトウェア開発過程の確立 現時点では、経験的・体験的にtry! 銀の弾丸はあるのだろうか? © 2015年 東京工科大学 Hiroyuki Kameda

© 2015年 東京工科大学 Hiroyuki Kameda 問題 「銀の弾丸」とはソフトウェア工学の分野では何を意味しているのでしょうか?調べてみてください。 © 2015年 東京工科大学 Hiroyuki Kameda

© 2015年 東京工科大学 Hiroyuki Kameda 銀の弾丸とは ソフトウェア開発の現場における諸問題に対して、あまねく通用する万能解決策のこと。 このような「万能な解決策(銀の弾丸)は存在しない」という表現で、ソフトウェア開発の難しさを表現することがある。 © 2015年 東京工科大学 Hiroyuki Kameda

© 2015年 東京工科大学 Hiroyuki Kameda 銀の弾丸はなくても… あきらめてはいけない! 1つの提案が「モデリング」とそれを記述・表現するための「モデル記述言語」である。  (以下、その話をしましょう) © 2015年 東京工科大学 Hiroyuki Kameda

© 2015年 東京工科大学 Hiroyuki Kameda クールダウン問題 問題:プログラミングに必要な才能は何? 優れた数学者の論理性 エジソンのような工学(エンジニア)の才能 銀行員のような作業の正確さ 推理作家のような発想力 ビジネスマンの実務性 協働作業をいとわない性格 経営的な関心も理解できる能力 その他(具体的に:            ) © 2015年 東京工科大学 Hiroyuki Kameda

© 2015年 東京工科大学 Hiroyuki Kameda ウォームアップ問題 “オブジェクト指向”という言葉を見ると何が思い浮かびますか? 思い浮かんだものを順に5つ書き下しなさい。 _____________ © 2015年 東京工科大学 Hiroyuki Kameda