プログラミング演習II 2003年11月19日(第6回) 木村巌.

Slides:



Advertisements
Similar presentations
第 10 回 宿題 出題日: 12 月 14 日 締切日: 12 月 21 日. 提出について 以下の場合は、出題日の出席を欠席とする 締切日を過ぎた場合 正解率が 7 割未満の場合 提出は、 PDF ファイルを印刷して、それに答 えを書いて提出すること。
Advertisements

情報・知能工学系 山本一公 プログラミング演習Ⅱ 第3回 配列(1) 情報・知能工学系 山本一公
情報・知能工学系 山本一公 プログラミング演習Ⅱ 第5回 関数(1) 情報・知能工学系 山本一公
プログラミング演習II 2004年11月 30日(第6回) 理学部数学科・木村巌.
コンピュータープログラミング(C言語)(3) 1.関数と分割コンパイル (復習) 2.キーボード入力
情報・知能工学系 山本一公 プログラミング演習Ⅱ 第4回 配列(2) 情報・知能工学系 山本一公
情報基礎演習B 後半第5回 担当 岩村 TA 谷本君.
数理情報工学演習第一C プログラミング演習 (第3回 ) 2014/04/21
第12回新しい型と構造体.
第13回構造体.
データ構造とアルゴリズム 第10回 mallocとfree
第12回構造体.
プログラミング入門2 第10回 構造体 情報工学科 篠埜 功.
画像ファイル(ppm)の読み書き 画像データ用のメモリ確保・解放
プログラミング演習Ⅱ 第12回 文字列とポインタ(1)
プログラミング演習I 2004年4月14日(第1回) 木村巌.
プログラミング演習II 2004年10月19日(第1回) 理学部数学科・木村巌.
第8回 プログラミングⅡ 第8回
構造体.
プログラミング演習II 2004年12月 21日(第8回) 理学部数学科・木村巌.
配列の扱い、探索 有効範囲と記憶域期間 第12回 [7月10日、H.15(‘03)] 今日のメニュー 1 前回の課題の復習
配列の扱い、探索 有効範囲と記憶域期間 第12回 [7月6日、H.16(‘04)] 今日のメニュー 1 前回の課題の復習
画像ファイル(ppm)の読み書き 画像データ用のメモリ確保・解放
精密工学科プログラミング基礎Ⅱ 第3回資料 今回の授業で習得してほしいこと: 2次元配列の使い方 (前回の1次元配列の復習もします.)
第10回 プログラミングⅡ 第10回
補足説明.
岩村雅一 知能情報工学演習I 第8回(後半第2回) 岩村雅一
関数の定義.
精密工学科プログラミング基礎 第10回資料 (12/18実施)
プログラミング演習I 2003年6月25日(第10回) 木村巌.
2005年度 データ構造とアルゴリズム 第3回 「C言語の復習:再帰的データ構造」
プログラミング演習I 2003年5月7日(第4回) 木村巌.
プログラミング入門2 第11回 情報工学科 篠埜 功.
プログラミング入門2 第11回 情報工学科 篠埜 功.
第7回 プログラミングⅡ 第7回
高度プログラミング演習 (02).
第11回 プログラミングⅡ 第11回
地域情報学 C言語プログラミング 第1回 導入、変数、型変換、printf関数 2016年11月11日
岩村雅一 知能情報工学演習I 第12回(C言語第6回) 岩村雅一
プログラミング演習I 2004年5月19日(第5回) 理学部数学科・木村巌.
オブジェクト指向言語論 第六回 知能情報学部 新田直也.
プログラミング言語論 第六回 理工学部 情報システム工学科 新田直也.
精密工学科プログラミング基礎Ⅱ 第5回資料 今回の授業で習得してほしいこと: 構造体 (教科書 91 ページ)
プログラミング序論演習.
プログラミング演習I 2003年4月30日(第3回) 木村巌.
プログラミング演習I 2003年7月2日(第11回) 木村巌.
ポインタとポインタを用いた関数定義.
プログラミング演習I 2003年4月15日(第一回) 木村巌.
ネットワーク・プログラミング Cプログラミングの基礎.
extern の意味 (C プログラミング演習,Visual Studio 2019 対応)
情報工学科 3年生対象 専門科目 システムプログラミング 第3回 makeコマンド 動的リンクライブラリ 情報工学科 篠埜 功.
岩村雅一 知能情報工学演習I 第12回(後半第6回) 岩村雅一
情報工学科 3年生対象 専門科目 システムプログラミング 第3回 makeコマンド 動的リンクライブラリ 情報工学科 篠埜 功.
全体の流れ 画像ファイルを開き,画像データをメモリ上にロード メモリ上にロードした画像データに処理を加える
プログラミング言語論 第九回 理工学部 情報システム工学科 新田直也.
プログラミング演習I 2003年6月11日(第9回) 木村巌.
2005年度 データ構造とアルゴリズム 第2回 「C言語の復習:配列」
オブジェクト指向言語論 第七回 知能情報学部 新田直也.
プログラミング言語論 第九回 理工学部 情報システム工学科 新田直也.
オブジェクト指向言語論 第七回 知能情報学部 新田直也.
情報処理Ⅱ 2005年11月25日(金).
プログラミング演習II 2004年11月 16日(第5回) 理学部数学科・木村巌.
プログラミング言語Ⅰ(実習を含む。), 計算機言語Ⅰ・計算機言語演習Ⅰ, 情報処理言語Ⅰ(実習を含む。)
プログラミング演習II 2003年12月10日(第7回) 木村巌.
プログラミング演習II 2004年11月 2日(第3回) 理学部数学科・木村巌.
プログラミング入門2 第5回 配列 変数宣言、初期化について
情報処理Ⅱ 小テスト 2005年2月1日(火).
プログラミング演習II 2003年10月29日(第2,3回) 木村巌.
岩村雅一 知能情報工学演習I 第7回(後半第1回) 岩村雅一
オブジェクト指向言語論 第六回 知能情報学部 新田直也.
Presentation transcript:

プログラミング演習II 2003年11月19日(第6回) 木村巌

今日やること 複数のファイルから成るプログラム 乗算に備えて、データ型の実装の拡張 構造体、構造体のポインタ、typedef

復習 前回は、正負の整数の加減算を実装した

プログラムの分割 実際に処理を行うmain()関数と、それに密接に関連した関数群 Mpiの乗除算などを行う関数群 のように、分割した方が便利 変更していない部分をコンパイルし直さないでよい

プログラムの分割 たとえば、main()関数を含むmain.c Mpi関連の関数は、mpilib.cなどとする Mpi関連の関数のプロトタイプ宣言、定数のdefineなどは、ヘッダーファイルにする

コンパイルの仕方 二つのファイルを同時にコンパイル、リンクしてmainを得る gcc –o main main.c mpilib.c gcc –c main.c gcc –c mpilib.c gcc –o main main.o mpilib.o

コンパイルの仕方(続き) main.cのみ変更した場合は gcc –c main.c gcc –o main main.o mpilib.o のように、mpilib.cのコンパイルを省いてよい あるいは、 gcc –o main main.c mpilib.o でもよい(main.cのコンパイルとリンクを同時に)

Main.c #include <stdio.h> #include <stdlib.h> #include “mpilib.h” /* ダブルクォーテーションはコンパイラのデフォルト以外のヘッダファイルを読み込ませる */ Int main (int ac, char *av[]) { … }

mpilib.h #define DIM 4 #define BASE 10 /* prototypes */ Long *mpi_add (long *a, long *b); などなど

mpilib.c プログラム本体 #include <stdio.h> #include <stdlib.h> #include “mpilib.h” ...

なぜヘッダファイルが必要か? 変数には、「スコープ」(可視範囲)があった 関数についても同様だが、関数名は自動的に外部へ輸出される しかし関数のプロトタイプは明示的に宣言しなければ行けない 前期(6月11日の回)の、「変数のスコープ」を参照 一つのファイル内で宣言された変数名は、そのファイル内で可視 ほかのファイルでも「見える」ようにするためには、外部へ「輸出」しなくてはならない

構造体(structure) 教科書11章 異なる型を一つに集約する 配列は、同じ型の値のみ保持できた

構造体の宣言 struct tag名 { 型名 メンバ1; 型名 メンバ2; ……. };

構造体の例 struct mpi { int dim; long *digits; }; struct mpi a;

構造体のメンバへのアクセス struct mpi a; /* の時は */ a.dim; a.digits;

型宣言、構造体へのポインタ 教科書11.2, 11.3 プログラム例mpistruct.c

レポート課題 Webに掲示したmpi3.cを、 main.c (main()関数のみを含む) mpilib.h (プロトタイプ宣言やdefineを含む) mpilib.c (実際の関数定義などを含む) に分割せよ.ただし、従来のlong *によるmpiではなく、今日説明したmpi_tに変更すること コンパイルして、実行した様子も示せ

レポート課題提出要領 2003年11月25日(火)一杯に、木村までメールで送ること.アドレスはiwao@sci.toyama-u.ac.jp 添付ファイルではなく、できるだけメール本文にレポート本文を記載してください. 文献や友人のレポートを参考にした場合は、それを明記のこと.

レポートについての注意 資料や他の人のレポートを参考にした場合は、それを理解すること 間違ったレポートを引き写したとしかいえないものが散見されます 自分で考えてもわからず、人のレポートも十分に理解できないのでは、全く意味がない 十分理解できないなら、授業に出席して質問してください.