1 T HE U NIVERSITY OF T OKYO D EPARTMENT OF M ATHEMATICAL I NFORMATICS 数理情報工学演習第一C プログラミング演習 ( 第1回 ) 2014/04/07.

Slides:



Advertisements
Similar presentations
1 T HE U NIVERSITY OF T OKYO D EPARTMENT OF M ATHEMATICAL I NFORMATICS 数理情報工学演習第一C プログラミング演習 ( 第1回 ) 2015/04/06.
Advertisements

第 2 章 数値の入力と変数 scanf と変数をやります 第 2 章 数値の入力と変数 1. 以下のプログラムを実行してみよう  C 言語では文の最後に「 ; 」(セミコロン)が付きます 第 2 章 数値の入力と変数 2 #include int main() { int x; x = 3; printf("x.
初年次セミナー 第8回 データの入力.
UNIX利用法.
UNIX利用法 情報ネットワーク特論資料.
応用理工学情報処理 第1回(2015年10月 5日) 月曜日担当 前島展也 Manaba
Java I 第2回 (4/18)
プログラミング入門 (教科書1~3章) 2005/04/14(Thu.).
情報基礎演習B 後半第5回 担当 岩村 TA 谷本君.
初年次セミナー 第4回 整数と実数の取り扱い.
1.1 C/C++言語 Hello.ccを作りコンパイルしてa.outを作り出し実行する
数理情報工学演習第一C プログラミング演習 (第3回 ) 2014/04/21
第2章 数値の入力と変数 scanfと変数をやります.
リダイレクト パイプ 標準入出力プログラム コマンド行引数 関数 system()
システムプログラミング 第5回 情報工学科 篠埜 功 ヒアドキュメント レポート課題 main関数の引数 usageメッセージ
岩村雅一 知能情報工学演習I 第9回(C言語第3回) 岩村雅一
プログラミング入門2 第1回 導入 情報工学科 篠埜 功.
第6章 2重ループ&配列 2重ループと配列をやります.
情報工学科 二宮 洋・鈴木 誠 小林 学・高畠俊徳 火曜日 1コマ目
プログラミング演習Ⅰ 課題2 10進数と2進数 2回目.
精密工学科プログラミング基礎 第9回資料 (12/11 実施)
初年次セミナー 第2回 文字の出力.
第10回 プログラミングⅡ 第10回
第7回 条件による繰り返し.
岩村雅一 知能情報工学演習I 第8回(後半第2回) 岩村雅一
【プログラミング応用】 必修2単位 通年 30週 授業形態:演習.
ネットワークプログラミング 中村 修.
九州大学キャンパスクラウド 利用法 情報ネットワーク特論 講義資料.
ちょっとした練習問題① 配列iroを['R', 'W', 'R', 'R', 'W' , 'W' , 'W']を宣言して、「W」のときの配列の番号をprintfで表示するようなプログラムを記述しなさい。
情報・知能工学系 山本一公 プログラミング演習Ⅱ 第2回 ファイル処理 情報・知能工学系 山本一公
Cプログラミング演習 第7回 メモリ内でのデータの配置.
リダイレクト パイプ 標準入出力プログラム コマンド行引数 関数 system()
知能情報工学演習I 第9回( C言語第3回) 課題の回答
岩村雅一 知能情報工学演習I 第9回(後半第3回) 岩村雅一
知能情報工学演習I 第9回(後半第3回) 課題の回答
第7回 条件による繰り返し.
岩村雅一 知能情報工学演習I 第10回(後半第4回) 岩村雅一
第11回 プログラミングⅡ 第11回
デジタル画像とC言語.
実践ロボットプログラミング LEGO Mindstorms EV3 で目指せロボコン!
プログラミング基礎a 第7回 C言語によるプログラミング入門 ファイル入出力
地域情報学 C言語プログラミング 第1回 導入、変数、型変換、printf関数 2016年11月11日
UNIX演習 情報ネットワーク特論.
岩村雅一 知能情報工学演習I 第9回(後半第3回) 岩村雅一
精密工学科プログラミング基礎Ⅱ 第4回資料 今回の授業で習得してほしいこと: 文字列の扱い ファイル入出力の方法 コマンドライン引数の使い方
岩村雅一 知能情報工学演習I 第9回(C言語第3回) 岩村雅一
B演習(言語処理系演習)第2回 田浦.
C言語 はじめに 2016年 吉田研究室.
岩村雅一 知能情報工学演習I 第9回(後半第3回) 岩村雅一
UNIX演習 情報ネットワーク特論資料.
UNIX演習 情報ネットワーク特論資料.
UNIX演習 情報ネットワーク特論資料.
プログラミング演習I 2003年4月30日(第3回) 木村巌.
地域情報学 C言語プログラミング 第1回 導入、標準出力、変数 2017年10月13日
プログラミング入門2 第13回、14回 総合演習 情報工学科 篠埜 功.
ネットワーク・プログラミング Cプログラミングの基礎.
ネットワーク・プログラミング Linuxシステムとソフトウェア開発.
C言語講習 第0章 Hello, world!.
標準入出力、変数、演算子、エスケープシーケンス
Visual Studio 2013 の起動と プロジェクトの新規作成 (C プログラミング演習,Visual Studio 2019 対応) 金子邦彦.
プログラミング基礎a 第7回 C言語によるプログラミング入門 ファイル入出力
Cp-1. Microsoft Visual Studio 2019 C++ の使い方 (C プログラミング演習,Visual Studio 2019 対応) 金子邦彦.
岩村雅一 知能情報工学演習I 第10回(後半第4回) 岩村雅一
printf・scanf・変数・四則演算
第2章 数値の入力と変数 scanfと変数をやります.
知能情報工学演習I 第9回(後半第3回) 課題の回答
岩村雅一 知能情報工学演習I 第7回(後半第1回) 岩村雅一
第1章 文字の表示と計算 printfと演算子をやります 第1章 文字の表示と計算.
第1章 文字の表示と計算 printfと演算子をやります.
岩村雅一 知能情報工学演習I 第9回(C言語第3回) 岩村雅一
Presentation transcript:

1 T HE U NIVERSITY OF T OKYO D EPARTMENT OF M ATHEMATICAL I NFORMATICS 数理情報工学演習第一C プログラミング演習 ( 第1回 ) 2014/04/07

2 T HE U NIVERSITY OF T OKYO 1.PC 配布(借用書) 2. 電源、ネットワーク接続確認 3. ソフトウェアのインストール 4. コンパイル 5. おためしプログラミング 6. アンケート(レベル、経験) 資料は の資料公開にあります. アジェンダ

3 T HE U NIVERSITY OF T OKYO  担当: – 担当教員: 定兼(数理 7 研) – 補佐:松島 (数理 6 研) – 学生アシスタント:家入,貝ヶ石,宮口  担当へのコンタクト e メールアドレス (演習についての一般的な相談): 担当メンバー :

4 T HE U NIVERSITY OF T OKYO  各自: PC 1台、アダプター1個、各種書類  PC 貸与の用紙を記入してください – シリアルナンバーは裏側のサービスタグにある 7 文字 – 貸与期間は本日~平成 27 年 3 月 31 日 – 連絡のつくメールアドレス、電話  OS は Windows 7 と Linux ( Ubuntu )の 2 種 – 本演習では Ubuntu を用いる PC の配布 ( まだの人のみ ):

5 T HE U NIVERSITY OF T OKYO  PC はリース品です、扱いには十分に注意 – 原状復帰可能な形で返却 ステッカー等を貼らない (情報理工マークを隠さない) 「キレイに」使う – 最悪、実費負担の可能性もあります – 原則、構内での使用  セキュリティ/コンプライアンスに十分な注意を – P2P (危険度にかかわらず)全面禁止 情報理工ネットワーク、貸与 PC の両方において – ソフトウェアライセンスのないものは絶対に使わない – 無線 LAN のキーは部外者に教えない PC の扱いについての注意 :

6 T HE U NIVERSITY OF T OKYO  評価基準 – 提出課題 – 出席 (指示のないかぎり 13:00-16:00 の間は在室する) – 出席態度 評価 :

7 T HE U NIVERSITY OF T OKYO  狙い:プログラミングに親しむ – 卒論や実験等にむけたプログラミングの練習  初心者:プログラミングに慣れてもらう – 本演習はこちらを主に想定  中上級者: 別途上級の課題を用意 演習のねらい :

8 T HE U NIVERSITY OF T OKYO  前半にその回の基礎的な内容を説明 – プログラミング言語そのものの説明はしない  後半は実際に貸与 PC を用いてプログラミング – 使用言語は C  課題の提出(当日の17:00) – 提出方法については来週説明 演習の形式 :

9 T HE U NIVERSITY OF T OKYO  電源を入れる  Ubuntu を選択(一番上の選択肢)  ログイン ( )  ネットワークへの接続  ソフトウェアの更新 – パスワードを聞かれたときは上のものを入れる さわってみよう :

10 T HE U NIVERSITY OF T OKYO  テキストエディタ – Dash ホームにあるものを使う(他のものでも可)  コンパイラ – gcc (インストール済)  デバッガ – gdb (インストール済) – valgrind (Ubuntu ソフトウェアセンターからインストール ) – valkyrie (valgrind の詳細情報から ) ソフトウェア :

11 T HE U NIVERSITY OF T OKYO  デスクトップの “ 端末 ” を起動  ホームディレクトリ: /home/mistpc/ – 画面左上の “ ホームフォルダ ” でもアクセス可能 端末の起動 :

12 T HE U NIVERSITY OF T OKYO  ディレクトリ(フォルダ)を作る – mkdir 1 ( 今回の作業フォルダをつくる ) – cd 1 ( 「 1 」ディレクトリに移動 )  テキストエディタで新規作成して test.c という名前で保存 – 保存場所はホームの 1 というディレクトリ ファイルの作成 :

13 T HE U NIVERSITY OF T OKYO  「 test.c 」を入力  入力後、保存( Ctrl+S ) プログラムの入力 : /* test.c */ #include int main() { printf("Hello.  ∖ n I am. ∖ n ”) ; return 0; } 名前 入出力関連ヘッダの読み込み コメント 本体 画面に文字列を 表示 改行 ∖ はバックスラッシュ ( キーボードの右下 ) . \ では駄目 行の終わり 正常終了時には 0 を返す

14 T HE U NIVERSITY OF T OKYO プログラムの書き方の作法  プログラムは基本的に入れ子 (nested) 構造をしている  入れ子のレベルに従って字下げ ( インデント ) をする #include int main() { int i, j, x; x = 0; for (i=0; i<100000; i++) { for (j=0; j<100000; j++) { x += j; } インデント i のループの中 j のループの中 j のループの終わり i のループの終わり main関数の終わり

15 T HE U NIVERSITY OF T OKYO  プログラムをコンピュータの実行形式に変換(コンパイル) – gcc test.c  ls ( 現在のフォルダの中身を見る ) すると、実行ファイル a.out ができているはず  「./a.out 」で実行 – 「. 」は現在のフォルダを表す – 「./a.out > out.txt 」も試してみる コンパイルと実行 : 標準出力の出力先を ファイルにする

16 T HE U NIVERSITY OF T OKYO  「 test2.c 」を入力  生成される実行ファイルの名前は変えられる – gcc –o test2.out test2.c printf の書式 : /* test2.c */ #include int main() { printf(”I am %s. ∖ n ”, ” ”) ; printf(”I was born in %d. ∖ n ”, ) ; return 0; } 文字列の書式 名前 年 整数の書式 文字列 整数

17 T HE U NIVERSITY OF T OKYO  「 test3.c 」を入力 変数を使用する : /* test3.c */ #include int main() { int year = ; char name[] = ” ”; printf(”I am %s.\n ”,name) ; printf(”I was born in %d.\n ”,year ) ; return 0; } 整数型変数の宣言 名前 年 変数名 文字型 配列

18 T HE U NIVERSITY OF T OKYO コンパイルの最適化  -O オプションをつける – gcc –O3 test.c – 数字は最適化レベル.大きいほど実行速度が速くなる. -O0 ( ゼロ ) は最適化無し  プログラムの実行時間を測定するときは必ず最適化し たものを使う – –O3 をつける

19 T HE U NIVERSITY OF T OKYO デバッグの仕方 :  コンパイル時に –g をつける – gcc test.c –g  デバッグ時は最適化をしない方がいい – 最適化により不要な命令が消去されることがある – ステップ実行をしにくい – (最適化したときのみバグが発生することもあるので難しい)  デバッグ実行には gdb を用いる  gdb では分からないエラーを見つけるには valgrind を使う – 具体的な使い方は次回以降

20 T HE U NIVERSITY OF T OKYO デバッグ実行 :  gdb./a.out  ソースの表示 : list [ 行番号 ]  実行 : run  ブレイクポイントの設定 : break [ 行番号 ]  ステップ実行 : step, next – step は関数の中も 1 行ずつ実行 – next は関数の実行後に停止  変数の表示 : print [ 変数名 ]

21 T HE U NIVERSITY OF T OKYO  「 test32.c 」を入力 どこにバグがあるでしょう : /* test32.c */ #include int main() { int year = ; char name[] = ” ”; printf(”I am %s.\n ”,year) ; printf(”I was born in %d.\n ”,name ) ; return 0; } 名前 年

22 T HE U NIVERSITY OF T OKYO gdb でステップ実行してみる  gdb./a.out  break 7 ( 7行目で一旦停止 )  run (a.out を実行 )  step で1行ずつ実行すると,どこで異常終了するか分かる  最初から1行ずつ実行すると時間がかかるので,バグが発生する 条件が分かっているならそこまでは通常実行する if (i > 10000) { printf(“break ∖ n”); ← ここにブレイクポイントを設定 }

23 T HE U NIVERSITY OF T OKYO プログラミングの練習のできるサイト  Aizu Online Judge(AOJ) Aizu Online Judge(AOJ) – まずアカウントを作成する – 問題セットのところに各種演習問題がある – プログラムを入力すると正常に動作するかテストしてくれる  参考 「競技プログラミング入門」

24 T HE U NIVERSITY OF T OKYO  PC の使用経験  PC の利用用途  プログラミングの経験(年数、使用言語、アルバイト内容など)  その他 アンケート(第一回の出席を兼ねます) : 学籍番号: 氏名: へメールする