プログラミングI 数理物理,総合理学等向け

Slides:



Advertisements
Similar presentations
1 情報基礎 A 第 9 週 プログラミング入門 VBA の基本文法 1 準備・変数・データの入出力 徳山 豪・全 眞嬉 東北大学情報科学研究科 システム情報科学専攻 情報システム評価学分野.
Advertisements

プログラミング入門 ガイダンス.
情報処理3 アプリケーション プログラミング 今井孝明.
プログラミングとは Q.プログラムとは何か? A.コンピュータを制御するための,コンピュータに対する命令(指示)の集まり.
アルゴリズムとデータ構造 第2回 線形リスト(復習).
情報・知能工学系 山本一公 プログラミング演習Ⅱ 第3回 配列(1) 情報・知能工学系 山本一公
東京工科大学 コンピュータサイエンス学部 亀田弘之
応用理工学情報処理 第1回(2015年10月 5日) 月曜日担当 前島展也 Manaba
情報・知能工学系 山本一公 プログラミング演習Ⅱ 第4回 配列(2) 情報・知能工学系 山本一公
Java I 第2回 (4/18)
プログラミング入門 (教科書1~3章) 2005/04/14(Thu.).
ファイルやフォルダを検索する ①「スタート」→「検索」→「ファイルとフォルダ」とクリックする。
知識情報演習Ⅲ(後半第1回) 辻 慶太(水)
情報塾( ) CPUとメモリがどんなふうに動くのだろう。 レジスタやI/O プログラムの実行、マシン語。
情報工学基礎(改訂版) 岡崎裕之.
実行時のメモリ構造(1) Jasminの基礎とフレーム内動作
プログラミング入門2 第1回 導入 情報工学科 篠埜 功.
プログラミング基礎I(再) 山元進.
Java I 第2回 (9/22).
IT入門B2 (木曜日1限) 第一回 講義概要 2004年月9日30日.
プログラミングとは Q.プログラムとは何か? A.コンピュータを制御するための,コンピュータに対する命令(指示)の集まり.
プログラミング演習II 2004年10月19日(第1回) 理学部数学科・木村巌.
応用情報処理V 第1回 プログラミングとは何か 2004年9月27日.
情報科学1(G1) 2016年度.
経済情報処理ガイダンス 神奈川大学 経済学部.
プログラミングIII演習 第1回目.
情報工学科 二宮 洋・鈴木 誠 小林 学・高畠俊徳 火曜日 1コマ目
①データ構造 ②アルゴリズム ③プログラム言語 ④マークアップ言語
応用情報処理V 第1回 プログラミングとは何か 2003年9月29日.
心理学情報処理法Ⅰ コンピュータ言語の歴史.
プログラムはなぜ動くのか.
プログラミング言語論 プログラミング言語論 ガイダンス 水野 嘉明 ガイダンス 1 1.
コンピュータ基礎実習上級 #1 概要説明と基礎体力テスト
Flyingware : バイトコード変換による 安全なエージェントの実行
基礎プログラミング演習 第1回.
【プログラミング応用】 必修2単位 通年 30週 授業形態:演習.
ネットワークプログラミング 中村 修.
プロジェクト演習Ⅱ インタラクティブゲーム制作 イントロダクション2
ソフトウェア情報学総論 基盤ソフトウェア学講座
データ構造とアルゴリズム論 終章 専門科目におけるプログラミング
Shimatterシステムの トップダウン分析
地域情報学 C言語プログラミング 第1回 導入、変数、型変換、printf関数 2016年11月11日
2013年度 プログラミングⅡ ~ はじめてのプログラミング ~.
プロジェクト演習Ⅱ インタラクティブゲーム制作
環境システム科学演習(後半) FORTRAN & C(以降FORTRANと省略して呼びます)は富士通
情報処理Ⅱ 第2回:2003年10月14日(火).
プログラミングI 付録 プログラム実習の手順
ガイダンス 情報システム管理 ガイダンス 水野 嘉明 情報システム管理 1.
第5章 計算とプログラム 本章で説明すること ・計算の概観と記述法 ・代表的な計算モデル ・プログラムとプログラム言語.
先週の復習: CPU が働く仕組み コンピュータの構造 pp 制御装置+演算装置+レジスタ 制御装置がなければ電卓と同様
2014年度 プログラミングⅡ ~ はじめてのプログラミング ~.
第1章 いよいよプログラミング!! ~文章の表示 printf~
東京工科大学 コンピュータサイエンス学部 亀田弘之
コンパイラ 2012年10月1日
プログラミング演習I 2003年7月2日(第11回) 木村巌.
情報基礎Ⅱ (第1回) 月曜4限 担当:北川 晃.
vc-3. ダンプリスト,配列 (Visual Studio C++ の実用知識を学ぶシリーズ)
プログラムが実行されるまで 2002年4月14日 海谷 治彦.
vc-2. Visual Studio C++ のデバッガー (Visual Studio C++ の実用知識を学ぶシリーズ)
計算機プログラミングI 木曜日 1時限・5時限 担当: 増原英彦 第1回 2002年10月10日(木)
演習1に関する講評 ~ 業務仕様を書く難しさ ~
vc-1. Visual Studio C++ の基本操作 (Visual Studio C++ の実用知識を学ぶシリーズ)
vc-3. ダンプリスト,配列 (Visual Studio C++ の実用知識を学ぶシリーズ)
Visual Studio 2013 の起動と プロジェクトの新規作成 (C プログラミング演習,Visual Studio 2019 対応) 金子邦彦.
コンパイラ 2012年10月11日
Cp-1. Microsoft Visual Studio 2019 C++ の使い方 (C プログラミング演習,Visual Studio 2019 対応) 金子邦彦.
プログラミング演習II 2004年11月 2日(第3回) 理学部数学科・木村巌.
岩村雅一 知能情報工学演習I 第7回(後半第1回) 岩村雅一
プログラミング言語Ⅰ(実習を含む。), 計算機言語Ⅰ・計算機言語演習Ⅰ, 情報処理言語Ⅰ(実習を含む。)
第1章 文字の表示と計算 printfと演算子をやります.
Presentation transcript:

プログラミングI 数理物理,総合理学等向け 2018年9月24日 海谷 治彦

目次 まえおき コンピュータプログラムの動作原理 プログラムの開発手順 Cygwinを用いた実際の開発

本授業の対象者 基本,数理物理学科の一年生. 情報科2010年度以前の入学者でかつ プログラミング演習Iの単位未修得者 プログラムの授業はコレだけの学生. 生物や化学等.

他の授業を受けるべき学生 情報科学科の2011以降の学生 プログラミングI演習(2コマのもの)を受講予定 or し たいもの. I演習(2コマもの),演習I(1コマもの)のどちらをとる べきかは,教職等の関係を踏まえて,各自,調べ てください. 演習受講予定でない総合理学の学生は,講師側 の指示で海谷 or 桑原先生の授業のどちらかを とってください. 部屋のサイズの関係です.

対応する演習科目 プログラミング演習I by 木下,武山,森本,韓先生 同時に受講しなければならないわけではないが, 火曜日 五限の一コマのみ 「プログラミングI演習」(2コマもの,桑原先生)とは異な ります. 同時に受講しなければならないわけではないが, なるだけ,演習I(I演習ではない)も同時に受講する ことをお勧めします. 「とりあえず授業科目(本科目)だけとって,演習は いいや.」という学生の判断も認めてはいる. とりあえず,演習だけでいいやってのは?

評価 授業での演習の提出 + 期末テスト 演習の提出: 期末テスト: 配分については口頭にて. 基本,出席点ですが,白紙や努力の跡が見られないも のは未提出扱いします. たとえ,完成しなくても,わかるとこまで,何かを書いて ください. 期末テスト: 普通にテストします.

本授業の目標・背景・顛末 プログラミング言語 C の初歩的なプログラムを各 受講生が読み書きできるようになること. C言語の背景 代表的なプログラミング言語である. およそ40年前に開発され,25年ほど前に今の形となった. 他の数多くの実用的な言語の祖先とも言える. C++, Java, Ruby, JavaScript, PHP, Perl, C# 今日でも広く利用されている現役の言語である. おそらく,今後の寿命も長いと思われる. JavaやPHP等は数年後でも大きく変化していると思われる. C言語ができないのは情報系としてはモグリだ!

授業のやり方 講義60分くらい 演習30分くらい 教科書 基本スライドで行い,ときどき教科書を参照する. その場で出してください,簡単なので. 教科書 参考書,辞書程度というスタンスです. なんか本があったほうがいいので,どっちか買って下さい. [レ] 新版C言語プログラミングレッスン入門編 以下は参考書とします. [明] 新・明解 C言語

さて本題

何故,プログラミングしないと いけないのか? 根本原因 コンピュータは人語を解さないため. 我々人間もコンピュータの言葉(マシン語)を直接,読み 書きできないため. プログラミング言語 コンピュータの言語と人間の言語の妥協点として開発 された言語. 人間も訓練すれば読み書きできる. マシン語に自動翻訳できる. 日本語や英語を直接にマシン語に翻訳するのは今の技術で は無理.

例題によるコンピュータ動作の説明 コンピュータは, 作業手順とデータを読み込み, 手順に従い値を読み込んで, 計算を遂行する. この「作業手順」がプログラムであるが,日本語で 指示しても,当然,コンピュータは理解できない. 以降のページ群で説明のため,作業手順の各ス テップを日本語で書いているが, 実際には,この手順を0と1の羅列であるマシン語 で与えないといけないことも示す.

簡易な例題 ~ 二値の平均 CPU メモリ 50 51 52 ・ 100番地の数値を読め 101番地の数値を読め 数値を合計せよ 数値を2で割れ 102番地の数値を書け 100 101 102 5 3

簡易な例題 ~ 二値の平均 CPU メモリ 50 51 52 ・ 100番地の数値を読め 101番地の数値を読め 5 数値を合計せよ 数値を2で割れ 102番地の数値を書け 100 101 102 5 3

簡易な例題 ~ 二値の平均 CPU メモリ 50 51 52 ・ 100番地の数値を読め 101番地の数値を読め 5, 3 数値を合計せよ 数値を2で割れ 102番地の数値を書け 100 101 102 5 3

簡易な例題 ~ 二値の平均 CPU メモリ 100番地の数値を読め 50 51 52 ・ 101番地の数値を読め 5+3 ⇒ 8 数値を合計せよ 数値を2で割れ 102番地の数値を書け 100 101 102 5 3

簡易な例題 ~ 二値の平均 CPU メモリ 100番地の数値を読め 50 51 52 ・ 101番地の数値を読め 8 ÷ 2 ⇒ 4 数値を合計せよ 数値を2で割れ 102番地の数値を書け 100 101 102 5 3

簡易な例題 ~ 二値の平均 CPU メモリ 100番地の数値を読め 50 51 52 ・ 101番地の数値を読め 4 数値を合計せよ 数値を2で割れ 102番地の数値を書け 100 101 102 5 3 4

プログラムの実際 CPU メモリ 50 51 52 ・ 100番地の数値を読め 101番地の数値を読め 4 数値を合計せよ 数値を2で割れ 01010101 10001001 11100101 10000011 11101100 00010000 10001011 01000101 00001100 10001011 01010101 00001000 10001101 00000100 00000010 10001001 01000101 11111100 10001011 01000101 11111100 10001001 11000010 11000001 11101010 00011111 11010001 11111000 11001001 11000011 CPU メモリ 50 51 52 ・ 100番地の数値を読め 101番地の数値を読め 4 数値を合計せよ 数値を2で割れ 102番地の数値を書け // Cで書くとこんな感じ int avl(int a, int b){ int av; av=a+b; av= av/2; return av; } 100 101 102 5 3 4

プログラミング言語への要件 人間が読み書きできる程度に意味あるフレーズじゃないと 困る. 英語や日本語に近い表記だとうれしい. コンピュータへの命令に変換できる程度にあいまい性が無 いものでないと困る. コンピュータは「空気」よめない.「ヤバイ」の一言で全てやりすごせない. メモリとCPUを用いた現代のコンピュータ(ノイマン型コン ピュータ)の構造を想定したものだとうれしい. 値の読み書き 基本,並んでる順番で命令を実行する 条件によって命令を取捨選択する 繰り返しを行う 等 結果として,教科書にあるようなC言語になりました.

Cプログラムの開発の流れ プログラミング 手作業 エディタを使用 コンパイル 自動変換 コンパイラを使用 実行 生成された 実行ファイルを使用 hoge.c a.out ソースプログラム (ソースコード hoge.c 等) 実行ファイル (ロードモジュール a.exe 等)

本授業での実習環境 本端末室のPCを使います. Cygwinと呼ばれるWndows上でUNIXを模倣する 環境を用います. 自分が作成したプログラム等はバックアップしてく ださいね. 誤って消したりすると単位的に死にますし. 基本,クラウド(Dropbox等)やUSBメモリ等にコピーを残 す.

テキストエディタについて ソースプログラムを書くためのワープロ. UNIXでは vi (実際にはvimと呼ばれるviクローン) というエディタが一般的ですが,とても癖が強いで す. Cygwinではnotepad(Windowsのメモ帳)も利用でき るので,面倒な方はnotepadの利用で結構です. Cygwinでも emacs はありますが,なぜか,非常に 重いです.

エディタ色々

コレ notepadを使う場合の & メモ帳(notepad)を使う場合は,コマンドとファイル 名の後に & をつけてください. & をつけないと,メモ帳を終了するまで,ターミナ ルを使うことができません. コレ

日本語の扱いについて ファイル内において日本語は使わないでください. ファイル名に日本語を使わないでください. Latin1の拡張部分も使わないで! ドイツ語等にある ë みたいなの. ファイル名に日本語を使わないでください. ファイルの中身(ソースプログラム内)に記述しないでく ださい. 「日本語の空白文字」等,つまらないトラブルの原因に なるので,本授業ではファイルでの日本語利用を禁止 します. 質問等は日本語でも結構です.

Cygwinの起動 スタートメニュー中に左図 のようにあるはずです. 下図のような「端末」が表 記されるはずです.

警告等が文字化けしたら コンパイラのエラー等 の警告が左記の図の ように,文字化けしたら, 以下のコマンドをうって ください. export LANG=C 警告は英語になります が,文字化けは解消さ れます.

バグについて バグとはプログラムの誤りです. Defect とも呼ばれ,プログラムが意図した振る舞 いをしない原因のことです. 以下の二種類のバグが典型的です. 構文的なバグ プログラムの文法が誤っているため,プログラムがコンパイル できない,もしくは,意図と異なる動作をすること. 比較的,発見はたやすい.だって,動かないし. 意味的なバグ プログラムが意図した振る舞いと異なること. 構文はあってるけど,結果がおかしいこと. 数列の足し算をしてるつもりなのに,結果が合わない等 これを発見するのは容易ではない.

参考: バックアップについて USBメモリにその日の内容をバックアップするのがよいと思いま す.(dropbox等のネットストレージでもよいですが・・・) 以下の例では,USBメモリはEドライブにあるものとして, 0902.zip というファイルにその日作成した .c で終わるファイルを 保存しています. zip –r /cygdrive/e/0902.zip *.c

以上,次に続く