高度プログラミング演習 (11).

Slides:



Advertisements
Similar presentations
C 言語講座第 5 回 構造体. 構造体とは ... 異なる型の値をまとめて新しい型とする 機能がある . つまり , 複数の変数を 1 つのまとまりにできる . 配列と違って同じ型でデータをまとめるのではな く違った型のデータをまとめられる .
Advertisements

情報基礎演習B 後半第5回 担当 岩村 TA 谷本君.
数理情報工学演習第一C プログラミング演習 (第3回 ) 2014/04/21
第13回構造体.
第12回構造体.
プログラミング入門2 第10回 構造体 情報工学科 篠埜 功.
プログラミング入門2 第10回 構造体 情報工学科 篠埜 功.
基礎プログラミングおよび演習 第9回
第2回ネットワークプログラミング 中村 修.
プログラミング序論演習.
OSとコマンド OS:コンピュータを使うための基本プログラム コマンド:OS上で使用できる命令 OS本体であるカーネルの内部コマンド
コンピュータープログラミング (C言語)(6) 1.条件分岐2(switch文、復習) 2.繰り返し処理(for文、while文)
第8回 プログラミングⅡ 第8回
構造体.
精密工学科プログラミング基礎 第9回資料 (12/11 実施)
関数 関数とスタック.
構造体 構造体, 構造体とポインタの組み合わせ,.
Cプログラミング演習 中間まとめ2.
Cプログラミング演習.
関数の定義.
第11回 宿題 出題日:12月21日 締切日:1月7日(木).
Cプログラミング演習 第7回 メモリ内でのデータの配置.
精密工学科プログラミング基礎 第10回資料 (12/18実施)
プログラミング演習I 2003年6月25日(第10回) 木村巌.
プログラミング序論 2. n人のインディアン.
プログラミング 3 構造体(2).
プログラミング入門2 第11回 情報工学科 篠埜 功.
第13章 文字の取り扱い方 13.1 文字と文字型変数 13.2 文字列 13.3 文字型配列への文字列の代入
知能情報工学演習I 第9回(後半第3回) 課題の回答
第13章 文字の取り扱い方 13.1 文字と文字型関数 13.2 文字列 13.3 文字型配列への文字列の代入
岩村雅一 知能情報工学演習I 第10回(後半第4回) 岩村雅一
復習 前回の関数のまとめ(1) 関数はmain()関数または他の関数から呼び出されて実行される.
高度プログラミング演習 (08).
地域情報学 C言語プログラミング 第5回 ポインタ、関数、ファイル入出力 2017年11月17日
第11回 プログラミングⅡ 第11回
高度プログラミング演習 (05).
高度プログラミング演習 (05).
プログラミング基礎B 文字列の扱い.
岩村雅一 知能情報工学演習I 第9回(後半第3回) 岩村雅一
精密工学科プログラミング基礎Ⅱ 第4回資料 今回の授業で習得してほしいこと: 文字列の扱い ファイル入出力の方法 コマンドライン引数の使い方
疑似乱数, モンテカルロ法によるシミュレーション
演習07-0 “Hello\n” “World!\n”と
精密工学科プログラミング基礎Ⅱ 第5回資料 今回の授業で習得してほしいこと: 構造体 (教科書 91 ページ)
プログラミング序論演習.
オブジェクト指向 プログラミング 第六回 知能情報学部 新田直也.
高度プログラミング演習 (09).
第13章 文字の取り扱い方 13.1 文字と文字型変数 13.2 文字列 13.3 文字型配列への文字列の代入
情報基礎演習B 後半第2回 担当 岩村 TA 谷本君.
ファイルの読み込み, ファイルからのデータの取り出し, ファイルの書き出し
情報処理Ⅱ 第2回 2006年10月13日(金).
計算機プログラミングI 第4回 2002年10月31日(木) 問題解決とアルゴリズム クラスメソッドと手続きの抽象化 最大公約数
地域情報学 C言語プログラミング 第4回 while文、do~while文、switch文、 2次元配列、ポインタ 2017年11月10日
ネットワーク・プログラミング Cプログラミングの基礎.
C言語講座 制御(選択) 2006年 計算技術研究会.
高度プログラミング演習 (11).
cp-15. 疑似乱数とシミュレーション (C プログラミング演習,Visual Studio 2019 対応)
モジュール分割.
演習00-0 “Hello\n” “World!\n”と
岩村雅一 知能情報工学演習I 第10回(後半第4回) 岩村雅一
高度プログラミング演習 (07).
プログラミング演習I 2003年6月11日(第9回) 木村巌.
モバイルプログラミング第2回 C言語の基礎 (1).
プログラミング序論演習.
知能情報工学演習I 第9回(後半第3回) 課題の回答
C言語講座 四則演算  if ,  switch 制御文.
岩村雅一 知能情報工学演習I 第13回(後半第7回) 岩村雅一
分岐(If-Else, Else if, Switch) ループ(While, For, Do-while)
プログラミング演習I 補講用課題
高度プログラミング演習 (10).
プログラミング 2 静的変数.
Presentation transcript:

高度プログラミング演習 (11)

演習問題 曲名、時間をメンバにした構造体を作り、ある音楽CDの曲情報を入力、出力できるプログラムを作成せよ。

void main() { struct my_cd cd; int i; int len; printf("曲の数を入力して下さい: "); my_cd_i_n(&cd); for(i=0;i<my_cd_o_n(cd);i++){ printf("曲名: "); my_cd_i_title(&cd,i); printf("時間: "); my_cd_i_len(&cd,i); } printf("%-16s %5d)\n",my_cd_o_title(cd,i),my_cd_o_len(cd,i)); len = len + my_cd_o_len(cd,i); printf("このCDの長さは %d 分です。\n",len);

struct my_song { char title[128]; int len; }; struct my_cd { int n; struct my_song song[128]; } ;

void my_cd_i_n(struct my_cd *cd) { scanf("%d",&cd->n); } void my_cd_i_title(struct my_cd *cd,int i) scanf("%s",cd->song[i].title); void my_cd_i_len(struct my_cd *cd,int i) scanf("%d",&cd->song[i].len);

int my_cd_o_n(struct my_cd cd) { return cd.n; } char *my_cd_o_title(struct my_cd cd,int i) return cd.song[i].title; int my_cd_o_len(struct my_cd cd,int i) return cd.song[i].len;

復習 変数 プログラミング環境になれる 表示と入力 繰り返し 条件分岐・場合わけ 関数・再帰関数 色々な型 配列 ポインタ、文字型 構造体 数値計算 繰り返し計算 配列 条件分岐と場合分け 関数 再帰関数 ポインタ 文字列 構造体 ファイル処理

変数 色々な型 配列 ポインタ・文字型 構造体 int, double, char int data[100], char name[100] ポインタ・文字型 int *data, char *name 構造体 struct xxxinfo { int id; char *name; int data1; int data2; }

データの出力と入力 出力 入力 printf write (ファイル書き込み) scanf getchar(文字), gets(文字列) read (ファイル読み込み)

繰り返し for 文、while 文 配列との併用 ポインタとの併用 条件を満たすまで処理が繰り返される。 int data1[100]; int i; for(i=0;i<100;i++) data[i]= ....; char data2[100]; char *p; p=data2; while(*p!=‘ ‘){ .....; p = p +1; }

条件分岐と場合分け 条件分岐 if 文 場合分け case 文 こういう時には if 文を使えとか、case 文を使えというのは特にない。

条件分岐と場合わけ ..... .... ...... } else { .. } switch (変数){ if (条件) { case A: .... break; case B: case C: case D: ..... break case E: case F: ...... } if (条件) { ..... .... ...... } else { .. }

関数 プログラム中で何度も同じ処理を書くくらいなら、関数にしてしまう。 → 構造体が使われた変数固有の処理(変数への入力、出力など) → 構造体が使われた変数固有の処理(変数への入力、出力など) 引数を扱う場合の注意 関数の中で引数の内容を変更したい場合 ポインタを使う。

再帰関数 再帰 再帰関数 動作の対象が動作主そのもの。 彼は自分のことが好きだ。 He loves himself. 主語 = 目的語 彼は自分のことが好きだ。 He loves himself. 再帰関数 自分の中で自分自身を呼び出している関数。 void foo() { ………… foo(); }

演習問題 カレンダーを作成するプログラムを作成せよ。

月日から曜日を求める int dayOfWeek(int year, int month, int day) { if (month == 1 || month == 2)         year--;         month += 12;        } return (year + year/4 - year/100 + year/400 + (13*month+8)/5 + day) % 7; } 引数  year 西暦で表される年号 month 月の値 (1 ~ 12) day 日の値 関数値  曜日に対応する 0 ~ 6 の値  0: 日、1: 月、2: 火、3: 水、4: 木、5: 金、6: 土

その年のある月が何日あるか求める。 int daysOfMonth(int year, int month) {   static int days[12] = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};   if (month < 1 || month > 12)     month = 1; if (month == 2)    return days[1] + (year % 4 == 0 && year % 100 != 0 || year % 400 == 0);   else return days[month-1]; }