プログラミング言語Ⅰ(実習を含む。), 計算機言語Ⅰ・計算機言語演習Ⅰ, 情報処理言語Ⅰ(実習を含む。)

Slides:



Advertisements
Similar presentations
画像処理 05A1027 後藤航太. 研究課題は openLDAP についてでしたが 今回から画像処理に変更しました。 変更した理由 自分が持っていたイメージと実際の openLDAP が違ったので変更を決 めま した。 画像処理に興味を持ったので これからは画像処理を研究課題として やっていきます。
Advertisements

山元進.  for 文  while 文  do ~ while 文  文のネスト  break 文  continue 文.
コンピュータ演習 Excel 入門 岡田孝・山下雅啓 Excel の機能は膨大 その中のごく一部を紹介 表計算機能 – データの入力、表の作成、計算など グラフ機能 – 棒グラフ、円グラフなどグラフ作成 データベース機能 – 並べ替え(ソート)、検索、抽出など マクロ機能 – VBA で自動化したマクロを作成可能.
画像情報処理1 ~画像処理プログラミング~ 2015/05/01 知的画像処理研究室 M1 吉原寛樹
初年次セミナー 第13回 2次元グラフィックス(1).
情報・知能工学系 山本一公 プログラミング演習Ⅱ 第3回 配列(1) 情報・知能工学系 山本一公
本日のスケジュール 14:45~15:30 テキストの講義 15:30~16:15 設計レビュー 16:15~16:30 休憩
エクセル(1)の目次 起動法、ブック、シート、セル ブックの開き方 エクセル画面 マウスポインターの種類 シート数の調節 データの入力法
第3回:ボールを上下に動かそう! (オブジェクトの移動、一次元)
プログラミング入門 電卓番外編 ~エクセルで関数表示~.
情報・知能工学系 山本一公 プログラミング演習Ⅱ 第4回 配列(2) 情報・知能工学系 山本一公
4章 制御の流れ-3.
情報理論2 注意!! 11月26日(火)は休講 (小林が学会出張のため) 湘南工科大学情報工学科 准教授 小林 学 湘南工科大学
C言語 配列 2016年 吉田研究室.
6/19 前回復習 for文による繰り返し計算 演習1:1から10まで足して画面に結果を表示する 提出者: 1人
6/26 前回復習 for文、while文による繰り返し計算
システムプログラミング 第5回 情報工学科 篠埜 功 ヒアドキュメント レポート課題 main関数の引数 usageメッセージ
プログラミング言語Ⅰ(実習を含む。), 計算機言語Ⅰ・計算機言語演習Ⅰ, 情報処理言語Ⅰ(実習を含む。)
多重ループ 繰り返し構造:補足事項 第8回目 [6月8日、H.16(‘04)] 本日のメニュー 1)前回の課題について
多重ループ 繰り返し構造:補足事項 第8回目 [6月12日、H.15(‘03)] 本日のメニュー 1)前回の課題について
15分でわかる RefWorks 基本操作.
軌跡とジオメトリー表示プログラム CGVIEW(Ver2.2)の改良
第6章 2重ループ&配列 2重ループと配列をやります.
問題 1 キーボードから入力した数の合計を計算するプログラムを 作成せよ。最初に、何個の数を入力するかその数を入力 するようにする。
スクリプト言語を用いたPHITSの連続実行
10: ファイル入出力 C プログラミング入門 基幹2 (月4) Linux にログインし、以下の講義ページ を開いておくこと
第7回 条件による繰り返し.
プログラミング言語Ⅰ(実習を含む。), 計算機言語Ⅰ・計算機言語演習Ⅰ, 情報処理言語Ⅰ(実習を含む。)
情報工学科 3年生対象 専門科目 システムプログラミング 第5回、第6回 ヒアドキュメント レポート課題 情報工学科 篠埜 功.
岩村雅一 知能情報工学演習I 第11回(後半第5回) 岩村雅一
Cプログラミング演習 第6回 ファイル処理と配列.
繰り返し計算 while文, for文.
第10回関数 Ⅱ (ローカル変数とスコープ).
Cプログラミング演習 第7回 メモリ内でのデータの配置.
後期中間試験練習問題 12月3日(月)9:00~ 第3演習室.
プログラミング演習I 2003年6月25日(第10回) 木村巌.
画像処理プログラムの説明.
プログラミング演習I 2003年5月7日(第4回) 木村巌.
第7回 条件による繰り返し.
岩村雅一 知能情報工学演習I 第10回(後半第4回) 岩村雅一
Nakano School of Business 経営情報ビジネス科 【 C言語入門(Test2)】
デジタル画像とC言語.
情報処理概論Ⅰ 2007 第10回 2007/6/27 情報処理概論Ⅰ 第10回.
地域情報学 C言語プログラミング 第1回 導入、変数、型変換、printf関数 2016年11月11日
プログラミング言語論 第四回 理工学部 情報システム工学科 新田直也.
C言語 はじめに 2016年 吉田研究室.
高度プログラミング演習 (01).
先週の復習 2重ループを用いた、 表の記入と読み込み.
プログラミング演習I 2003年7月2日(第11回) 木村巌.
プログラミングⅡ 第2回.
プログラミング基礎a 第4回 C言語によるプログラミング入門 条件判断と反復
地域情報学 C言語プログラミング 第4回 while文、do~while文、switch文、 2次元配列、ポインタ 2017年11月10日
プログラム分散化のための アスペクト指向言語
地域情報学 C言語プログラミング 第3回 入力、if文、for文 2016年11月25日
プログラミング基礎演習 第4回.
ループだよ!難しいよ! 第5章 while(ループ);.
標準入出力、変数、演算子、エスケープシーケンス
プログラミング基礎a 第3回 C言語によるプログラミング入門 データ入力
コンパイラ 2012年10月11日
地域情報学 C言語プログラミング 第3回 入力、if文、for文 2017年11月1日
プログラミング言語Ⅰ(実習を含む。), 計算機言語Ⅰ・計算機言語演習Ⅰ, 情報処理言語Ⅰ(実習を含む。)
プログラミング基礎a 第3回 C言語によるプログラミング入門 データ入力
プログラミング入門2 第3回 条件分岐(2) 繰り返し文 篠埜 功.
情報処理Ⅱ 第3回 2004年10月19日(火).
情報処理Ⅱ 2006年10月20日(金).
プログラミング演習I 補講用課題
岩村雅一 知能情報工学演習I 第7回(後半第1回) 岩村雅一
プログラミング言語Ⅰ(実習を含む。), 計算機言語Ⅰ・計算機言語演習Ⅰ, 情報処理言語Ⅰ(実習を含む。)
第1章 文字の表示と計算 printfと演算子をやります.
= 55 課題6-1 #define _CRT_SECURE_NO_WARNINGS
Presentation transcript:

プログラミング言語Ⅰ(実習を含む。), 計算機言語Ⅰ・計算機言語演習Ⅰ, 情報処理言語Ⅰ(実習を含む。) C言語入門 第5週 プログラミング言語Ⅰ(実習を含む。), 計算機言語Ⅰ・計算機言語演習Ⅰ, 情報処理言語Ⅰ(実習を含む。)

入れ子の繰り返し(多重ループ)

多重ループとは? ループの中に別のループを入れた 入れ子構造のループ mul99_ex1.c mintty + bash 7 8 9 10 11 12 for (i = 1; i <= 9; i++) { //行ループ for (j = 1; j <= 9; j++) {//列ループ printf(" %2d", i * j); //掛算九九 } printf("\n"); //行末尾で改行 $ gcc mul99_ex1.c && ./a 1 2 3 4 5 6 7 8 9 2 4 6 8 10 12 14 16 18 3 6 9 12 15 18 21 24 27 4 8 12 16 20 24 28 32 36 5 10 15 20 25 30 35 40 45 6 12 18 24 30 36 42 48 54 7 14 21 28 35 42 49 56 63 8 16 24 32 40 48 56 64 72 9 18 27 36 45 54 63 72 81 上記は掛算九九を計算して表を作成する例

掛算九九の例 見出し行と見出し列、見出し区切り(-+|)を付けた例 mul99_ex2.c mintty + bash 7 8 9 10 11 12 13 14 15 16 17 printf(" |"); //見出しの区切り for (j = 1; j <= 9; j++) { printf(" %2d", j); //見出し } printf("\n"); //見出しの改行 printf("--+"); //見出しの区切り printf("---"); //見出しの区切り printf("\n"); //見出しの区切りの改行 $ gcc mul99_ex2.c && ./a | 1 2 3 4 5 6 7 8 9 --+--------------------------- 1| 1 2 3 4 5 6 7 8 9 2| 2 4 6 8 10 12 14 16 18 3| 3 6 9 12 15 18 21 24 27 4| 4 8 12 16 20 24 28 32 36 5| 5 10 15 20 25 30 35 40 45 6| 6 12 18 24 30 36 42 48 54 7| 7 14 21 28 35 42 49 56 63 8| 8 16 24 32 40 48 56 64 72 9| 9 18 27 36 45 54 63 72 81

掛算九九の例 見出し行と見出し列、見出し区切り(-+|)を付けた例 mul99_ex2.c mintty + bash 19 20 21 22 23 24 25 for (i = 1; i <= 9; i++) {//行ループ printf("%2d|", i); //見出しと区切り for (j = 1; j <= 9; j++) {//列ループ printf(" %2d", i * j); //掛算九九 } printf("\n"); //行末尾で改行 $ gcc mul99_ex2.c && ./a | 1 2 3 4 5 6 7 8 9 --+--------------------------- 1| 1 2 3 4 5 6 7 8 9 2| 2 4 6 8 10 12 14 16 18 3| 3 6 9 12 15 18 21 24 27 4| 4 8 12 16 20 24 28 32 36 5| 5 10 15 20 25 30 35 40 45 6| 6 12 18 24 30 36 42 48 54 7| 7 14 21 28 35 42 49 56 63 8| 8 16 24 32 40 48 56 64 72 9| 9 18 27 36 45 54 63 72 81

while 文の2重ループの例 2重ループ while (条件式1) { // 処理1-1 while (条件式2) { // 処理2 // ... } // 処理1-2 条件式1 条件式2 偽 偽 真 真 処理1-1 処理2 1 2 2 処理1-1 ループは基本的にいくつでも 入れ子に出来る。

while 文の3重ループの例 3重ループ while (条件式1) { // 処理1-1 while (条件式2) { // 処理2-1 // 処理3 } // 処理2-2 // 処理1-2 条件式1 条件式2 条件式2 偽 偽 偽 真 真 真 処理1-1 処理2-1 処理2 1 2 3 4 3 処理1-1 処理2-1 入れ子があまり深くなると 分かり辛くなるので注意 4

異なるループ文で多重ループ do-while, while, for ループを必要に応じて組み合わせて入れ子にする 異なるループ文で3重ループ 異なるループ文で3重ループ for (式1-1; 式1-2; 式1-3) { // 処理1-1 while (条件式2) { // 処理2-1 do { // 処理3 } while (条件式3); // 処理2-2 } // 処理1-2 do { // 処理1-1 for (式2-1; 式2-2; 式2-3){ // 処理2-1 while (条件式3) { // 処理3 } // 処理2-2 // 処理1-2 } while (条件式1);

多重ループの例題 掛算九九の表

演習: 掛算九九(範囲指定) 標準入力から掛算九九の表の表示範囲 i1 i2 j1 j2 を読み取り、指定された範囲のみ表示する mul99_practice_1.c を作成せよ(/*WYCH*/ の個所を修正すれば良い)。 mintty + bash $ gcc mul99_practice_1.c && ./a i1 i2 j1 j2 = 2 5 4 8 | 4 5 6 7 8 --+--------------- 2| 8 10 12 14 16 3| 12 15 18 21 24 4| 16 20 24 28 32 5| 20 25 30 35 40 値が3桁やマイナスになると 表示が破綻する場合があるが、 以下で行う一連の演習では 3桁やマイナスの値は考慮しなくて良い。

演習: 掛算九九(行の反転) 完成した mul99_practice_1.c をコピーしてファイル名を mul99_practice_2.c とし、行の見出しが逆順となるよう修正せよ。 mintty + bash $ gcc mul99_practice_2.c && ./a i1 i2 j1 j2 = 2 5 4 8 | 4 5 6 7 8 --+--------------- 5| 20 25 30 35 40 4| 16 20 24 28 32 3| 12 15 18 21 24 2| 8 10 12 14 16

演習: 掛算九九(見出しの移動) 完成した mul99_practice_2.c をコピーしてファイル名を mul99_practice_3.c とし、列の見出しを表の下に表示するよう修正せよ。 mintty + bash $ gcc mul99_practice_3.c && ./a i1 i2 j1 j2 = 2 5 4 8 5| 20 25 30 35 40 4| 16 20 24 28 32 3| 12 15 18 21 24 2| 8 10 12 14 16 --+--------------- | 4 5 6 7 8

演習: 掛算九九(表示値の制限) 完成した mul99_practice_3.c をコピーしてファイル名を mul99_practice_4.c とし、i*j<=99の場合以外は結果を "##" と表示するよう修正せよ。 mintty + bash $ gcc mul99_practice_4.c && ./a i1 i2 j1 j2 = 8 14 5 15 14| 70 84 98 ## ## ## ## ## ## ## ## 13| 65 78 91 ## ## ## ## ## ## ## ## 12| 60 72 84 96 ## ## ## ## ## ## ## 11| 55 66 77 88 99 ## ## ## ## ## ## 10| 50 60 70 80 90 ## ## ## ## ## ## 9| 45 54 63 72 81 90 99 ## ## ## ## 8| 40 48 56 64 72 80 88 96 ## ## ## --+--------------------------------- | 5 6 7 8 9 10 11 12 13 14 15

多重ループの例題 画像の生成

BMP, DIB Wikipedia / Windows bitmap Windows 標準の画像形式 書くのは比較的簡単 例: 第1週の bmptest.c 等 読むのは、フォーマットがいくつもあるので、全部対応するのは面倒

PNM(Portable aNyMap) Wikipedia / PNM (画像フォーマット) シンプルなフォーマットで読み書きが簡単 ファイル識別子 画像形式 データ形式 P1 PBM: Portable Bit Map テキスト P2 PGM: Portable Gray Map P3 PPM: Portable Pix Map P4 バイナリ P5 P6 f.pbm P1 # f.pbm 6 7 0 0 0 0 0 0 0 1 1 1 1 0 0 1 0 0 0 0 0 1 1 1 0 0

テキスト形式の PBM Format 2値(白黒)画像用 feep.pbm P1 # feep.pbm 24 7 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 0 0 1 1 1 1 0 0 1 1 1 1 0 0 1 1 1 1 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 1 0 0 1 1 1 0 0 0 1 1 1 0 0 0 1 1 1 0 0 0 1 1 1 1 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 1 1 1 0 0 1 1 1 1 0 0 1 0 0 0 0 ファイル識別子 コメント 画像サイズ(幅と高さ) 2値画像データ本体 0または1のデータ

テキスト形式の PGM Format 濃淡値(グレイスケール)画像用 濃淡値画像データ本体 数値が大きいものほど明るい feep.pgm 24 7 15 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 3 3 3 0 0 7 7 7 7 0 0 11 11 11 11 0 0 15 15 0 3 0 0 0 0 0 7 0 0 0 0 0 11 0 0 0 0 0 15 0 0 3 3 3 0 0 0 7 7 7 0 0 0 11 11 11 0 0 0 15 15 0 3 0 0 0 0 0 7 7 7 7 0 0 11 11 11 11 0 0 15 0 ファイル識別子 コメント 画像サイズ(幅と高さ) 明るさの最大値

テキスト形式の PPM Format カラー画像用 feep.ppm ファイル識別子 P3 # feep.ppm コメント 4 4 15 0 0 0 0 0 0 0 0 0 15 0 15 0 0 0 0 15 7 0 0 0 0 0 0 0 0 0 0 0 0 0 15 7 0 0 0 15 0 15 0 0 0 0 0 0 0 0 0 ファイル識別子 コメント 画像サイズ(幅と高さ) 明るさの最大値 カラー画像データ本体 RGBを1組にして書く

PNMからBMPへの変換 netpbm または ImageMagick を使うと楽 インストールは以下 Wikipedia / netpbm Wikipedia / ImageMagick インストールは以下 mintty + bash apt-cyg install netpbm apt-cyg install ImageMagick

PNMからBMPへの変換 ImageMagick を使った場合 $ ./a | convert - image.bmp パイプした結果を 標準入力から読み込む mintty + bash $ ./a | convert - image.bmp pnm を テキスト出力する プログラム 変換結果を保存する BMP ファイル名

演習: 円の描画(1/2) pbm_practice_1.c の /*WYCH*/ の箇所を修正し、中心座標(0,0)半径rの円の内部を0外部を1とし x1,x2,y1,y2 の範囲について P1 形式の PBM 画像を出力するプログラムを作成せよ。 ここでは円の内部を x 2 + y 2 < r 2 を定義し、境界部分は内部に含めない事とする。またx座標は右向き、y座標は下向きを正の方向とする。

演習: 円の描画(2/2) 出力結果の例 x1 x2 y1 (0,0) y2-y1+1 r y2 mintty + bash $ gcc pbm_practice_1A.c && ./a x1 x2 y1 y2 r = -5 5 -5 5 4 P1 11 11 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 1 1 1 1 1 0 0 0 0 0 0 0 1 1 $ gcc pbm_practice_1A.c && ./a | convert - result.bmp x1 x2 y1 y2 r = -5 5 -5 5 4

発展問題 pbm_practice_1.c を改造して■▲★等を描いてみよう

参考文献 [1] B.W.カーニハン/D.M.リッチー著 石田晴久 訳、プログラミング言語C 第2版 ANSI 規格準拠、共立出版(1989)