情報・知能工学系 山本一公 kyama@tut.jp プログラミング演習Ⅱ 第3回 配列(1) 情報・知能工学系 山本一公 kyama@tut.jp.

Slides:



Advertisements
Similar presentations
プログラミング演習Ⅱ 第1回 ガイダンス 情報・知能工学系 山本一公 本演習の概要(1) C 言語の「基礎知識」の習得 – プログラミング演習Ⅰの続き – 配列、関数、ポインタ等 – プログラミング演習Ⅰの内容だけでは、 とてもじゃないが「 C 言語を勉強した」とは 言えない.
Advertisements

プログラミング演習Ⅱ 第 11 回 ポインタ(2) 情報・知能工学系 山本一公
第 2 章 数値の入力と変数 scanf と変数をやります 第 2 章 数値の入力と変数 1. 以下のプログラムを実行してみよう  C 言語では文の最後に「 ; 」(セミコロン)が付きます 第 2 章 数値の入力と変数 2 #include int main() { int x; x = 3; printf("x.
プログラミング演習Ⅱ 第 8 回 マクロ・列挙体等 情報・知能工学系 山本一公
プログラミング演習( 2 組) 第 9 回
1 第5回 配列. 2 今回の目標 マクロ定義の効果を理解する。 1次元配列を理解する。 2次元配列を理解する。 ☆2 × 2の行列の行列式を求めるプログラ ムを作成する.
プログラミング実習 1 ・ 2 ク ラス 第 2 週目 担当教員 : 渡邊 直樹. 課題 2 ● 2 × 2型行列の固有値, 固有ベクトルを求め る EigMatrix.java というプログラムを作成せ よ。 ● 行列の各要素はコマンド・プロンプトから入力 ● 計算した結果もコマンド・プロンプトに表示.
情報・知能工学系 山本一公 プログラミング演習Ⅱ 第5回 関数(1) 情報・知能工学系 山本一公
初年次セミナー 第8回 データの入力.
配列(2) 第10回目 [6月22日、H.16(‘04)] 本日のメニュー 1)前回の課題について 2)前回の宿題について 3)課題
関数(1) 第11回 [6月29日、H.16(‘04)] 今日のメニュー 1 前回の課題 2 前回の宿題 3 いろいろな関数の演習 4 課題
情報・知能工学系 山本一公 プログラミング演習Ⅱ 第4回 配列(2) 情報・知能工学系 山本一公
プログラミング入門2 第4回 配列 for文 変数宣言 初期化
プログラミング言語としてのR 情報知能学科 白井 英俊.
情報基礎演習B 後半第5回 担当 岩村 TA 谷本君.
初年次セミナー 第4回 整数と実数の取り扱い.
数理情報工学演習第一C プログラミング演習 (第3回 ) 2014/04/21
ファーストイヤー・セミナーⅡ 第8回 データの入力.
配列(2) 第10回[平成15年6月26日(木)]:PN03-10.ppt 今日の内容 1 素数を求める(教科書の例):復習
情報・知能工学系 山本一公 プログラミング演習Ⅱ 第7回 データの基本型 情報・知能工学系 山本一公
6/19 前回復習 for文による繰り返し計算 演習1:1から10まで足して画面に結果を表示する 提出者: 1人
プログラミング入門2 第10回 構造体 情報工学科 篠埜 功.
プログラミング入門2 第10回 構造体 情報工学科 篠埜 功.
システムプログラミング 第5回 情報工学科 篠埜 功 ヒアドキュメント レポート課題 main関数の引数 usageメッセージ
プログラミング演習Ⅱ 第12回 文字列とポインタ(1)
C言語 配列 2016年 吉田研究室.
第8回 プログラミングⅡ 第8回
プログラミング実習 1・2 クラス 第 1 週目 担当教員:  渡邊 直樹.
第6章 2重ループ&配列 2重ループと配列をやります.
構造体.
配列の扱い、探索 有効範囲と記憶域期間 第12回 [7月10日、H.15(‘03)] 今日のメニュー 1 前回の課題の復習
精密工学科プログラミング基礎 第9回資料 (12/11 実施)
配列(1) 第9回目 [6月15日、H.16(‘04)] 本日のメニュー 1)前回の課題について 2)前回の宿題について 3)配列 4)課題
精密工学科プログラミング基礎Ⅱ 第3回資料 今回の授業で習得してほしいこと: 2次元配列の使い方 (前回の1次元配列の復習もします.)
第10回 プログラミングⅡ 第10回
第7回 条件による繰り返し.
岩村雅一 知能情報工学演習I 第8回(後半第2回) 岩村雅一
情報工学科 3年生対象 専門科目 システムプログラミング 第5回、第6回 ヒアドキュメント レポート課題 情報工学科 篠埜 功.
C言語講座 第3回 ポインタ、配列.
プログラミング演習(2組) 第8回
情報・知能工学系 山本一公 プログラミング演習Ⅱ 第2回 ファイル処理 情報・知能工学系 山本一公
前回の練習問題.
第7回 条件による繰り返し.
第7回 プログラミングⅡ 第7回
第11回 プログラミングⅡ 第11回
地域情報学 C言語プログラミング 第1回 導入、変数、型変換、printf関数 2016年11月11日
岩村雅一 知能情報工学演習I 第9回(後半第3回) 岩村雅一
精密工学科プログラミング基礎Ⅱ 第4回資料 今回の授業で習得してほしいこと: 文字列の扱い ファイル入出力の方法 コマンドライン引数の使い方
C言語 はじめに 2016年 吉田研究室.
プログラミング演習I 2003年7月2日(第11回) 木村巌.
知能情報工学演習I 第7回(後半第1回) 課題の回答
復習 Cにおけるループからの脱出と制御 break ループを強制終了する.if文と組み合わせて利用するのが一般的. continue
精密工学科プログラミング基礎 第7回資料 (11/27実施)
プログラミング入門2 第5回 配列 for文 変数宣言 初期化
情報工学科 3年生対象 専門科目 システムプログラミング 第3回 makeコマンド 動的リンクライブラリ 情報工学科 篠埜 功.
プログラミング 4 文字列.
情報工学科 3年生対象 専門科目 システムプログラミング 第3回 makeコマンド 動的リンクライブラリ 情報工学科 篠埜 功.
プログラミング入門2 第6回 関数 情報工学科 篠埜 功.
精密工学科プログラミング基礎Ⅱ 第2回資料 今回の授業で習得してほしいこと: 配列の使い方 (今回は1次元,次回は2次元をやります.)
プログラミング演習II 2003年11月19日(第6回) 木村巌.
プログラミング演習II 2003年12月10日(第7回) 木村巌.
プログラミング演習II 2004年11月 2日(第3回) 理学部数学科・木村巌.
湘南工科大学 2013年10月22日 情報理論2 湘南工科大学情報工学科 准教授 小林 学.
プログラミング入門2 第5回 配列 変数宣言、初期化について
第4回 配列.
C言語講座第5回 2017 構造体.
第5回 配列.
プログラミング演習I 補講用課題
岩村雅一 知能情報工学演習I 第7回(後半第1回) 岩村雅一
オブジェクト指向言語論 第六回 知能情報学部 新田直也.
Presentation transcript:

情報・知能工学系 山本一公 kyama@tut.jp プログラミング演習Ⅱ 第3回 配列(1) 情報・知能工学系 山本一公 kyama@tut.jp

前回の課題の解説・ポイント 課題1-1 課題1-2 入力は scanf 関数 fprintf 関数で出力 cat コマンドで確認 入力は fscanf 関数 “バイナリ形式で”と指定されているので、fwrite 関数で出力 List 13-10をそのまま正しく打ち込んで実行

今日の内容 教科書 p.87~ 配列 1次元配列 配列の初期化 配列のコピー オブジェクト形式マクロ 代入式 式の評価と値、評価の順序

配列とは(1) 同じ型のオブジェクトの集まりを、番号により管理できるようにしたデータ型 どういうときに使うのか? 例えば テストの成績を出したい 合計点や平均点を出したい 学生は何人?

配列とは(2) 学生が5人だけだったら 学生が300人いたら 他には 変数は5個 プログラムで書いても、苦ではない 変数が300個! 300個の変数名を考えないといけない! ある変数名を別の変数名と間違えてはいけない! プログラムで書くのは大変 ⇒ 配列の出番! 他には 「ベクトル」を表すために使う

配列の宣言(1) 普通の変数の宣言は「型名 変数名」 配列は「型名 変数名[要素数]」 注意:使える要素は0~要素数-1まで 普通の変数の宣言は「型名 変数名」 配列は「型名 変数名[要素数]」 注意:使える要素は0~要素数-1まで 言語によって違います /* int型で、変数名が vx だったら */ int vx; vc[0] /* int型で、配列名が vc で、要素数が 5 だったら */ int vc[5]; vc[1] vc[2] vc[3] vc[4]

配列の宣言(2) 要素数は定数でなければいけない! こういう宣言はできない! ……ことになっている 最近のコンパイラ(gcc等)だとOKな場合も 処理系(コンパイラ)に依存するので、 なるべく書かないように int n = 5; int a[n]; /* エラー:要素数は定数でなければならない */

配列とfor文(1) 配列の各要素に、順番に数値を代入することを考える 配列の要素数が少ないときは、力技でプログラムが書ける p.90, List 5-2 for文を使えば、効率良く書ける p.90, List 5-3 要素数が300になっても、同じように書ける

配列とfor文(2) List 5-3から抜粋 順番に数値が代入されている iが0のとき、vc[0] = 0 + 1 = 1 for (i = 0; i < 5; i++) vc[i] = i + 1;

配列の初期化(1) 配列に最初から数値を入れておきたい 順番に要素を並べる! 全体を“{“, “}”で囲む! 要素数は書かなくても良い! 要素数は自動的に初期化のデータ数になる! /* List 5-3で代入したものを最初から入れておきたい */ int vc[5] = {1, 2, 3, 4, 5}; /* List 5-3で代入したものを最初から入れておきたい */ int vc[] = {1, 2, 3, 4, 5};

配列の初期化(2) 初期化のデータ数は少なくても良い 多いのはダメ!エラーになる vc[3]とvc[4]は自動的に0に初期化される (そういう決まりになっている) 多いのはダメ!エラーになる /* List 5-3で代入したものを最初から入れておきたい */ int vc[5] = {1, 2, 3}; /* {1, 2, 3, 0, 0}と同じ */ /* List 5-3で代入したものを最初から入れておきたい */ int vc[5] = {1, 2, 3, 4, 5, 6, 7}; /* これはエラー */

配列の初期化(3) 要素数が多い配列で、要素を全部0.0に初期化したい!というような場合 p.91, List 5-4のようにすべき for文を使って全ての要素に同じ数値を入れる int i; double vd[300]; for (i = 0; i < 300; i++) vd[i] = 0.0;

配列のコピー 配列 va を配列 vb にコピーしたい というようなことは、できない! for文で要素ごとにコピーしましょう p.93, List 5-6を参照のこと int va[5], vb[5]; vb = va; int va[5], vb[5], i; for (i = 0; i < 5; i++) vb[i] = va[i];

オブジェクト形式マクロ(1) p.96, List 5-9のようなプログラムを作った 作ったときの学生の数は5人 学生の人数が増えた!8人になった! 「5」を「8」に変更したい! でも、printf文の中の”5”は”8”に変えてはいけないから、エディタの一括置換は使えない 全部目で見てチェックしなきゃいけない! プログラムが何千行もあったら、すごく大変だ!

オブジェクト形式マクロ(2) こんなときにマクロを使おう! “#define”で定義する 大文字で定義する(慣習) 利点 ”#”で始まるものは全部コンパイラへの命令(”#include”も) 大文字で定義する(慣習) プログラムの中で使える変数みたいなもの 利点 何の数値か分かりやすくなる! 変更が容易になる! プログラムの間違いが減る! #define STUDENTNUMBER 5 int tensu[STUDENTNUMBER];

式の評価、式の値 式はその値を評価することができる 代入式でも評価できる 代入式の値は左辺の変数の型と値 int x = 2; int x = 2, y; y = x; ⇒ 式の値は? ⇒ y の型と値 ⇒ 2

評価の順序 それぞれの変数の値はいくらになる? 式の評価は右から 最初eに10が代入される ”e=10”という式の値は10 その式の値がdに代入されて、d=10になる 以下繰り返しで、全ての変数の値は10になる! int a = 1, b = 2, c = 3, d = 4, e = 5; a = b = c = d = e = 10; int a = 1, b = 2, c = 3, d = 4, e = 5; a = (b = (c = (d = (e = 10))));

今週の課題 教科書 p.93, 演習5-4のプログラムを作成せよ。 2つの n 次元ベクトル x, y をキーボードから入力し、それらの内積を求めて表示するプログラムを作成せよ。次元数 n は”#define”を使って適当な値をプログラム内で定義すること。なお、内積の定義は以下の通り。

レポートについて 電子メールで提出 提出先は prog2@slp.cs.tut.ac.jp Subjectを「プログラミング演習2 課題2提出 学籍番号・氏名 」とすること C言語ソースファイルを添付する メールの本文には何も書かなくて良いです ソースファイルの頭にコメントで以下の情報を入れる 学籍番号・氏名 プログラムの説明(どのように動くのか、工夫した点等) 実行結果(長い場合は一部)を貼る 提出締切は、10月24日(水) 12:00 (1週間後)

授業用Webサイト URL: http://www.slp.cs.tut.ac.jp/~kyama/programming2/ 課題のpdfファイルが置いてあります。 授業で使ったpptファイルを置いていきます。 質問メールは、以下のどちらかのアドレスまで kyama@tut.jp prog2@slp.cs.tut.ac.jp C-515へ直接質問しに来ても構いません