Microsoft PowerPoint - handout09.ppt

Size: px
Start display at page:

Download "Microsoft PowerPoint - handout09.ppt"

Transcription

1 応用プログラミング第 9 回 ~ プログラミングの応用画像処理その 2~ 本日の内容 1. まずは課題 2. 画像処理の色々 3. 色々とプログラムを手直ししよう 4. 上下左右の入れ替え 回転 5. 縮小 6. 拡大 7. 拡大するのは難しい 電気通信大学電子工学専攻 Intelligent Electronic Systems Group 長井隆行 課題 bitmap.bmpをコンソールに表示してみましょう! ビットマップのフォーマットに注意 各画素がある条件を満たせば特定の文字を表示する ( 例えば (255,0,0) なら " 赤 " など ) ヒントプログラムp9-0forInt.c or p9-0formot.cをdl 可能 表示する (printfを使う) だけなので プログラム中で画像を保存する必要はない 茶 (R,G,B)=(127,127,0) 橙 (R,G,B)=(255,127,0) 課題続き 注意点 ビットマップのフォーマットに注意 左下からデータが並んでいる RGB ではなく BGR の順番 全角か半角かを気にする ( 特にスペース ) 文字はアスキーでもよい bitmap.bmp 赤 (R,G,B)=(255,0,0) サイズ :16 16 各画素 :24bit (R,G,B) ( 但し bitmapはbgrの順で並んでいる ) 各自で試してみる提出しなくてよい うまくいけばこんな感じで表示できます

2 画像処理とは何か? 画像をみやすくする 明るさ コントラスト 色調などの補正 回転 サイズの変更 ノイズを除去する 画像を圧縮する JPEG MPEG 画像を合成する CG 画像を認識する 文字認識 (OCR) 物体認識 ロボットビジョン ( 立体視など ) さっそく画像処理 と その前に大事な事 1. 画像の入出力はいつも同じなので関数にしておこう! 2. その際にBGRをRGBに入れ替えよう! 3. さらにピクセルが左下からのものを左上からに並べ替えよう! 4. カラー画像を処理するためには RGBそれぞれについて同じ処理をする必要がある R G Bそれぞれを別の箱にしまった方が便利! 関数化 ( ビットマップの読み込み ) unsigned char* LoadBitmap(char* filename, int* width, int* height) int i, size; FILE *fp; unsigned char *buffer; /* 入力画像用メモリのポインタ */ unsigned char tmp_pix; BITMAPFILEHEADER bmfh; BITMAPINFOHEADER bmih; fp = fopen( filename, "rb" ); /* ファイルを開く */ fread ( &bmfh, sizeof(bitmapfileheader), 1, fp ); /* ビットマップのヘッダーを読み込む */ fread ( &bmih, sizeof(bitmapinfoheader), 1, fp ); *width = bmih.biwidth; *height = bmih.biheight; size = (*width) *( *height); /* ビットマップのサイズを算出 */ buffer = (unsigned char*)malloc( 3*size ); /* 必要なサイズのメモリを確保 */ for ( i = (*height) - 1; i >= 0; i-- ) /* 上下を入れ替えながら読み込む */ fread( buffer + (*width) * 3 * i, 1, (*width) * 3, fp ); fclose( fp ); /* 読み終わったのでファイルを閉じる */ 関数化 ( ビットマップの書き込み ) void SaveBitmap(char* filename, unsigned char* buffer, int width, int height) int i; FILE *fp; BITMAPFILEHEADER bmfh; BITMAPINFOHEADER bmih; char *tmp; unsigned char tmp_pix; /* ファイルを書き込み用で開く */ fp = fopen( filename, "wb" ); /* 出力画像のヘッダを生成する */ memset(&bmfh,0, sizeof(bmfh)); memset(&bmih,0, sizeof(bmih)); tmp = (char*) &(bmfh.bftype); tmp[0]='b'; tmp[1]='m'; bmfh.bfoffbits = BMP_HEADER_SIZE; bmfh.bfsize = width*height*3 + BMP_HEADER_SIZE; p9-1.c for ( i = 0; i < size; i++ ) /*BGRをRGBへ変換( 入れ替え )*/ tmp_pix = buffer[ i * 3 ]; buffer[ i * 3 ] = buffer[ i * ]; buffer[ i * ] = tmp_pix; return buffer; p9-1.c 次のページに続く

3 関数化 ( ビットマップの書き込み ) 続き 関数化 (main 関数 ) bmih.bisize=bmp_header_size - 14; bmih.biwidth = width; bmih.biheight = height; bmih.biplanes = 1; bmih.bibitcount = 24; bmih.bicompression = 0; bmih.bisizeimage = width*height*3; /*RGB を BGR に変換する */ for ( i = 0; i < width * height; i++ ) tmp_pix = buffer[ i * 3 ]; buffer[ i * 3 ] = buffer[ i * ]; buffer[ i * ] = tmp_pix; fwrite( &bmfh, sizeof(bitmapfileheader), 1, fp ); /* ヘッダを書き込む */ fwrite( &bmih, sizeof(bitmapinfoheader), 1, fp ); /* ビットマップを開く関数のプロトタイプ宣言 */ unsigned char* LoadBitmap(char* filename, int* width, int* height); /* ビットマップを保存する関数 */ void SaveBitmap(char* filename, unsigned char* buffer, int width, int height); /* メイン関数 */ int width, height; int n, x, y; unsigned char *buffer; /* 入力画像用メモリのポインタ */ /* ファイルを開く */ buffer = LoadBitmap("girl.bmp", &width, &height); /* 今はとりあえず何もしない */ /******************* ここまで *********************************/ for ( i = height - 1; i >= 0; i-- ) /* 上下を入れ替えながら書き込む */ fwrite( buffer + width * 3 * i, 1, width * 3, fp ); fclose( fp ); /* ファイルを閉じる */ return; p9-1.c /* ここでは入力画像をそのまま書き出す */ /* メモリを解放する */ free( buffer ); return 0; p9-1.c RGB をそれぞれ別の箱にしまう! int width, height; int n, x, y; BYTE *buffer; /* 入力画像用メモリのポインタ */ BYTE *Rbuffer, *Gbuffer, *Bbuffer; /* ファイルを開く */ buffer = LoadBitmap("girl.bmp", &width, &height); Rbuffer = (BYTE*)malloc( width*height ); /* メモリ確保 */ Gbuffer = (BYTE*)malloc( width*height ); Bbuffer = (BYTE*)malloc( width*height ); RGB2Plane(buffer, Rbuffer, Gbuffer, Bbuffer, width, height); /*RGB を色平面に分解 */ /* 今はとりあえず何もしない */ Plane2RGB(buffer, Rbuffer, Gbuffer, Bbuffer, width, height); /* 色平面を RGB に合成 */ /* メモリを解放する */ free( buffer ); free( Rbuffer ); free( Gbuffer ); free( Bbuffer ); return 0; p9-2.c ミニテスト ( 問 1) 空欄を埋めましょう /*RGB を R,G,B に分解 */ void RGB2Plane(BYTE* buffer, BYTE* R, BYTE* G, BYTE* B, int width, int height) int i; /*RGB を各色平面へ変換 (R,G,B はアドレス渡しになっていることに注意 )*/ for (i=0; i<width*height; i++) /*R,G,B に分解したものを RGB に合成 */ void Plane2RGB(BYTE* buffer, BYTE* R, BYTE* G, BYTE* B, int width, int height) int i; /*RGB を各色平面へ変換 (R,G,B はアドレス渡しになっていることに注意 )*/ for (i=0; i<width*height; i++) buffer[3*i] = R[i]; buffer[3*i+1] = G[i]; buffer[3*i+2] = B[i];

4 エラー処理をする ファイルを読み込む や メモリを確保する などの処理は 仮に失敗すると後に続く処理ができなくなるという問題がある もし ファイルの読み込みに失敗したら どうするか? もし メモリが足りなくて確保できなかったら どうするか? を考えておく必要がある fp = fopen( "bitmap.bmp", "rb" ); if(fp==null) printf(" ファイルの読み込みに失敗! n"); return 0; /* 処理を継続できないので終了する */ プリントで示すプログラムには スペースの関係でエラー処理を入れていないので注意してください ヘッダファイル (.h) にしてしまう main 関数以外を mybmp.h というファイルに移動する main 関数のあるファイルの先頭に #include mybmp.h を追加 #include <stdio.h> #include <stdlib.h> #include <memory.h> #include "mybmpi.h" /* 自分で作ったヘッダーは "" で囲む */ /* メイン関数 */ 全く同じなので省略 p9-3.c ( 注 )mybmpi.h がインテル用 mybmpm.h がモトローラ用 結局どうなったかというと? #include mybmp.h とすることで 特に何もしなくても以下のようにすることが可能 buffer = LoadBitmap( xxx.bmp", &width, &height); buffer[i] 左上から RGB 順 Rbuffer Gbuffer さあ処理してみよう 画像の左右反転 Rbuffer = (BYTE*)malloc( width*height );/* メモリ確保 */ Gbuffer = (BYTE*)malloc( width*height ); Bbuffer = (BYTE*)malloc( width*height ); RGB2Plane(buffer, Rbuffer, Gbuffer, Bbuffer, width, height); /* 本当はこの間で処理をする */ /* 色平面を RGB に合成 */ Plane2RGB(buffer, Rbuffer, Gbuffer, Bbuffer, width, height); Bbuffer 入力画像 どうすればよいでしょう? 出力画像

5 各画素にどのようにアクセスするか 色々ありえますが ここでは2 重ループを使って次のように考えます Rbuffer[0] height x width y Rbuffer[height*width-1] 横が x 縦が y のとき Rbuffer[y*width+x]; ここまでで width がいくつあるか? for(y=0; y<height; y++) for(x=0; x<width; x++) Rbuffer2[y*width+x] = Rbuffer[y*width+x]; 実際のメモリ y*width+x y x 画像の左右反転 LoadBmp(); ファイルから読み込み Rbuffer[i] Rbuffer2[i] Rbuffer2[0] Rbuffer[0] 左右反転しながらコピー R,G,B それぞれ行う height height Rbuffer2[(height-1)*width] Rbuffer[1] Rbuffer[2] width 横が x 縦が y のとき Rbuffer[y*width+x]; Rbuffer2[width-1-x] 横が width-1-x 縦が y Rbuffer2[??]; width Rbuffer[x] Rbuffer[width-1] Rbuffer[2*width-1] Rbuffer[height*width-1] Rbuffer2[width-3] Rbuffer2[width-2] Rbuffer2[width-1] 指定したファイル名で保存される SaveBitmap(); 左右反転プログラム 上下の入れ替えも同じ様に 同じ行の最後まで進める :((y+1)*width-1) x 個だけ前に戻る :-x /* 出力用 */ Rbuffer2 = (BYTE*)malloc( width*height ); /* メモリ確保 */ Gbuffer2 = (BYTE*)malloc( width*height ); Bbuffer2 = (BYTE*)malloc( width*height ); for(y=0; y<height; y++) for(x=0; x<width; x++) Rbuffer2[(y+1)*width-1-x] = Rbuffer[y*width+x]; Gbuffer2[(y+1)*width-1-x] = Gbuffer[y*width+x]; Bbuffer2[(y+1)*width-1-x] = Bbuffer[y*width+x]; Plane2RGB(buffer, Rbuffer2, Gbuffer2, Bbuffer2, width, height); /*buffer は入力のものを転用する */ /* 以下省略 */ p9-4.c /* 出力用 */ Rbuffer2 = (BYTE*)malloc( width*height ); /* メモリ確保 */ Gbuffer2 = (BYTE*)malloc( width*height ); Bbuffer2 = (BYTE*)malloc( width*height ); for(y=0; y<height; y++) for(x=0; x<width; x++) Rbuffer2[(height-y-1)*width+x] = Rbuffer[y*width+x]; Gbuffer2[(height-y-1)*width+x] = Gbuffer[y*width+x]; Bbuffer2[(height-y-1)*width+x] = Bbuffer[y*width+x]; Plane2RGB(buffer, Rbuffer2, Gbuffer2, Bbuffer2, width, height); /*buffer は入力のものを転用する */ /* 以下省略 */ p9-5.c

6 x 方向y方向x方向ミニテスト ( 問 2) カメラをたてにして撮った次の画像を90 度回転したい幅と高さの関係は? Rbuffer2[0] Rbuffer[0] Rbuffer[width-1] ミニテスト ( 問 2) 続き int width2, height2; width2=height; height2=width; for(y=0; y<height; y++) for(x=0; x<width; x++) Plane2RGB(buffer, Rbuffer2, Gbuffer2, Bbuffer2, width2, height2);/*buffer は入力のものを転用する */ SaveBitmap("result.bmp", buffer, width2, height2); 入れ替わる Rbuffer2[width2*(height2-1)] y 方向 /* 以下省略 */ 画像を縮小する 画像を縮小する ( 続き ) 画像を小さくするにはどうすればよいでしょう? 例えば 1/2 のサイズ ( 縦横それぞれ 1/2) にするには? 本当はフィルタをかける必要がある ( サンプリング定理 ) 2/3 倍などはちょっと難しいのでここでは扱わない 一つおきに画素を取り出す ( 残りは捨てる ) 本当はフィルタをかける必要がある ( サンプリング定理 ) 2/3 倍などはちょっと難しいのでここでは扱わない

7 画像を縮小するプログラム int ratio; ratio=2; /* 倍率 */ height2=height/ratio; width2=width/ratio; /* 出力用 */ Rbuffer2 = (BYTE*)malloc( width2*height2 ); /* メモリ確保 */ Gbuffer2 = (BYTE*)malloc( width2*height2 ); Bbuffer2 = (BYTE*)malloc( width2*height2 ); 画像を拡大する 画像を拡大するにはどうすればよい? for(y=0; y<height2; y++) for(x=0; x<width2; x++) Rbuffer2[y*width2+x] = Rbuffer[y*width*ratio+x*ratio]; Gbuffer2[y*width2+x] = Gbuffer[y*width*ratio+x*ratio]; Bbuffer2[y*width2+x] = Bbuffer[y*width*ratio+x*ratio]; p9-7.c 縮小の逆をやればいいのでは? 画像を拡大する ( 続き ) 画素を一つおきに埋めてゆく 補間の仕方 同じ画素値をコピーする ( 画素を膨らませる ) あれれ 足りない 白いところはどうしよう? 白いところの埋め方は色々な方法がある 間を埋めることを補間という 補間したきりんちゃん オリジナルのきりんちゃん

8 補間の仕方 ( 線形補間 ) 周りの画素の情報を使う 画像は滑らかなので 周りの画素に近い値をとる可能性が高い 周囲 4 画素の平均 補間のプログラム 同じ画素値を埋める方法のプログラム int ratio; (int) という明示的なキャストは ratio=2; なくてもOK 分かりやすいように height2=height/ratio; つけてある ( この丸めが実はポイント ) width2=width/ratio; /* 出力用 */ buffer2 = (BYTE*)malloc( width2*height2*3 );/* メモリ確保 */ Rbuffer2 = (BYTE*)malloc( width2*height2 ); Gbuffer2 = (BYTE*)malloc( width2*height2 ); Bbuffer2 = (BYTE*)malloc( width2*height2 ); 線形補間の結果 a c q b p 1-q 1-p d 画素値 =(1-p)(1-q)a+ qb +p(1-q)c+qd a,b,c,d: 小さな画像の画素値 for(y=0; y<height2; y++) for(x=0; x<width2; x++) Rbuffer2[y*width2+x] = Rbuffer[((int) (y/ratio))*width + (int) (x/ratio)]; Gbuffer2[y*width2+x] = Gbuffer[((int) (y/ratio))*width + (int) (x/ratio)]; Bbuffer2[y*width2+x] = Bbuffer[((int) (y/ratio))*width + (int) (x/ratio)]; p9-8.c

untitled

untitled 1. 2. 3. 4. 5. 6. 7. Intelligent Electronic Systems Group 4 PC bitmap.bmp (255,0,0)"" p8-2forint.c or p8-2formot.cdl (printf) (R,G,B)=(127,127,0) (R,G,B)=(255,127,0) viewer bitmap.bmp 1616 24bit (R,G,B)

More information

Microsoft PowerPoint - handout09.ppt [互換モード]

Microsoft PowerPoint - handout09.ppt [互換モード] Outline プログラミング演習第 9 回画像処理の基本その 1 on 2013.01.10 電気通信大学情報理工学部知能機械工学科長井隆行 画像処理入門 ~ 画像を知る~ CCDカメラの仕組み グレースケール画像 カラー画像 画像ファイルのフォーマット 画像の入出力 本日の課題 2 CCD カメラの仕組みを簡単に いよいよ画像 白黒濃淡画像 ( グレースケール画像 ) CCD カメラでは 受光面に映し出された光の情報

More information

Microsoft PowerPoint - handout08.ppt

Microsoft PowerPoint - handout08.ppt 応用プログラミング第 8 回 ~ プログラミングの応用画像処理入門 1~ 本日の内容 1. 画像処理入門 ~ 画像を知る ~ 1. CCD カメラの仕組み 2. グレースケール画像 3. カラー画像 4. 画像ファイルのフォーマット 5. 画像の入出力 2. 課題 3 電気通信大学電子工学専攻 Intelligent Electronic Systems roup 長井隆行 FILE 構造体とは?(

More information

02: 変数と標準入出力

02: 変数と標準入出力 C プログラミング入門 基幹 7 ( 水 5) 10: ファイル入出力 Linux にログインし 以下の講義ページを開いておくこと http://www-it.sci.waseda.ac.jp/ teachers/w483692/cpr1/ 2016-06-15 1 標準ライブラリ関数によりファイルの出力を行う 画像ファイルの生成を例題として 配列の作成を復習する 今日の内容 関数を作ってプログラムを構造化する

More information

02: 変数と標準入出力

02: 変数と標準入出力 C プログラミング入門 基幹 7 ( 水 5) 1 10: ファイル入出力 Linux にログインし 以下の講義ページを開いておくこと http://www-it.sci.waseda.ac.jp/teachers/w48369 2/CPR1/ 2016-06-15 今日の内容 2 標準ライブラリ関数によりファイルの出力を行う画像ファイルの生成を例題として 配列の作成を復習する 文字列の扱いを復習する

More information

Microsoft PowerPoint - handout10.ppt

Microsoft PowerPoint - handout10.ppt 応用プログラミング第 10 回 ~ プログラミングの応用画像処理その 3~ 電気通信大学電子工学専攻 Intellgent Electronc Systems Group 本日の内容 1. typedefと #defne 2. カラーからグレースケールへ 3. 輝度の変換 4. 画像の2 値化 5. 画像を認識する 画像認識 文字認識 パターン ( テンプレート ) マッチング 6. 数字認識の例

More information

画像ファイルを扱う これまでに学んだ条件分岐, 繰り返し, 配列, ファイル入出力を使って, 画像を扱うプログラムにチャレンジしてみよう

画像ファイルを扱う これまでに学んだ条件分岐, 繰り返し, 配列, ファイル入出力を使って, 画像を扱うプログラムにチャレンジしてみよう 第 14 回 応用 情報処理演習 ( テキスト : 第 10 章 ) 画像ファイルを扱う これまでに学んだ条件分岐, 繰り返し, 配列, ファイル入出力を使って, 画像を扱うプログラムにチャレンジしてみよう 特定色の画素の検出 ( テキスト 134 ページ ) 画像データが保存されているファイルを読み込んで, 特定色の画素の位置を検出するプログラムを作成しなさい 元画像生成画像 ( 結果の画像 )

More information

計算機プログラミング

計算機プログラミング プログラミング言語 C 第 8 講 システム標準関数 ( 入出力関数 ) システム標準関数 システムに備え付けの関数 例 ) printf( ); scanf( ); 標準出力関数 標準入力関数 A. 入出力用の関数 高水準入出力関数 高水準言語 (OS に依存しない ) 低水準入出力関数 機械語レベル (OS に依存 ) B. それ以外の関数 引数と関数の型 ( 戻り値 ) に注目しましょう 例

More information

Microsoft PowerPoint - adi05.ppt [互換モード]

Microsoft PowerPoint - adi05.ppt [互換モード] 画像情報処理論 画像処理プログラミングの基礎 1 画像クラス PNM 画像フォーマット 2 レポートについて 3 演習 : 入出力 2 値化 多値化 Hue 疑似カラー ヒストグラム作成 大学院情報システム科学専攻張暁華 1 2 C++ クラスの基礎 多重ポインターから多次元配列を作る方法 class クラス名 { /* 設計図の様なものでクラス = 新しい型 */ public: /* パブリックの場合は

More information

C言語講座 ~ファイル入出力編~

C言語講座 ~ファイル入出力編~ C 言語講座 ~ ファイル入出力編 ~ ポインタ使います 例 2 練習問題 3 初めに プログラムを組む上での話と今回の演習について 例えばこの画面の場合 背景の動画の描写 ノーツを流れてくるようにする ボタンを押したら違反亭ライン近くのノーツは消えるようにする処理 曲の難易度ごとに判定を追加とか残りの処理 完成 演習 1 クリア 演習 2 クリア 過程は各自で考えてください 演習 3 クリア ファイルの出入力でこれからやること

More information

情報処理演習 B8クラス

情報処理演習 B8クラス 予定スケジュール ( 全 15 回 ) 1 1. 終了 プログラミング言語の基礎 2. 終了 演算と型 3. 終了 プログラムの流れの分岐 (if 文,switch 文など ) 4. 終了 プログラムの流れの繰返し (do, while, for 文など ) 5. 終了 中間レポート1 6. 終了 配列 7. 終了 関数 8. 終了 文字列 ( 文字列の配列, 文字列の操作 ) 9. 終了 ポインタ

More information

Microsoft PowerPoint - prog06.ppt

Microsoft PowerPoint - prog06.ppt プログラミング言語 2 第 06 回 (2007 年 06 月 11 日 ) 今日の配布物 片面の用紙 1 枚 今日の課題が書かれています 本日の出欠を兼ねています 1 今日やること http://www.tnlab.ice.uec.ac.jp/~s-okubo/class/language/ にアクセスすると 教材があります 2007 年 06 月 11 日分と書いてある部分が 本日の教材です 本日の内容

More information

Microsoft PowerPoint - kougi8.ppt

Microsoft PowerPoint - kougi8.ppt C プログラミング演習 第 8 回構造体とレコードデータファイル 1 例題 1. バイナリファイル形式のファイル からのデータ読み込み 次のような名簿ファイル ( バイナリファイル形式 ) を読み込んで, 画面に表示するプログラムを作る name Ken Bill Mike age 20 32 35 address NewYork HongKong Paris 名簿ファイル 2 #include "stdafx.h"

More information

Microsoft PowerPoint - 14th.ppt [互換モード]

Microsoft PowerPoint - 14th.ppt [互換モード] 工学部 6 7 8 9 10 組 ( 奇数学籍番号 ) 担当 : 長谷川英之 情報処理演習 第 14 回 2011 年 1 月 20 日 1 今日のテーマ ファイル入出力 ですが, キーボード入力などもおさらいします 2 標準入力 キーボードで入力 : 標準入力という例 )scanf( %d,&i) 前回までの講義でファイルからデータを読み込む場合に使用した関数 : fscanf 例 )fscanf(fin,

More information

Microsoft Word - Cプログラミング演習(10)

Microsoft Word - Cプログラミング演習(10) 第 10 回 (6/25) 3. ファイルとその応用 (3) ファイルの更新 シーケンシャルファイルの更新 シーケンシャルファイルでは, 各レコードが可変長で連続して格納されており, その中の特定のレコードを変更することができない そこで一般的には, マスタファイルからデータを取り出し, 更新処理を行ったあとに新マスタファイルに書き込む 注 ) マスタファイル : 主ファイル, 基本ファイルと呼ばれるファイルで内容は比較的固定的であり,

More information

C プログラミング演習 1( 再 ) 2 講義では C プログラミングの基本を学び 演習では やや実践的なプログラミングを通して学ぶ

C プログラミング演習 1( 再 ) 2 講義では C プログラミングの基本を学び 演習では やや実践的なプログラミングを通して学ぶ C プログラミング演習 1( 再 ) 2 講義では C プログラミングの基本を学び 演習では やや実践的なプログラミングを通して学ぶ 今回のプログラミングの課題 次のステップによって 徐々に難易度の高いプログラムを作成する ( 参照用の番号は よくわかる C 言語 のページ番号 ) 1. キーボード入力された整数 10 個の中から最大のものを答える 2. 整数を要素とする配列 (p.57-59) に初期値を与えておき

More information

memo

memo 数理情報工学演習第一 C プログラミング演習 ( 第 5 回 ) 2015/05/11 DEPARTMENT OF MATHEMATICAL INFORMATICS 1 今日の内容 : プロトタイプ宣言 ヘッダーファイル, プログラムの分割 課題 : 疎行列 2 プロトタイプ宣言 3 C 言語では, 関数や変数は使用する前 ( ソースの上のほう ) に定義されている必要がある. double sub(int

More information

Microsoft PowerPoint - prog04.ppt

Microsoft PowerPoint - prog04.ppt プログラミング言語 2 第 04 回 (2007 年 05 月 14 日 ) 今日の配布物 片面の用紙 1 枚 今日の課題が書かれています 本日の出欠を兼ねています 1 今日やること http://www.tnlab.ice.uec.ac.jp/~s-okubo/class/language/ にアクセスすると 教材があります 2007 年 05 月 14 日分と書いてある部分が 本日の教材です 本日の内容

More information

Microsoft PowerPoint - comprog11.pptx

Microsoft PowerPoint - comprog11.pptx Outline プログラミング演習第 回エッジを検出する on 3..4 電気通信大学情報理工学部知能機械工学科長井隆行 画像の本質 輝度の境目に情報あり! 画像の微分と 階微分 エッジ検出 画像をぼかす 本日の課題 画像の本質 エッジ抽出 画像の情報は境目にあり! エッジ 輝度が大きく変化しているところ ( 境界 ) 画像の情報はエッジにあり 輝度 人間の視覚系でも特定のエッジの方向に発火するニューロンが見つかっている

More information

PowerPoint Presentation

PowerPoint Presentation 工学部 6 7 8 9 10 組 ( 奇数学籍番号 ) 担当 : 長谷川英之 情報処理演習 第 7 回 2010 年 11 月 18 日 1 今回のテーマ 1: ポインタ 変数に値を代入 = 記憶プログラムの記憶領域として使用されるものがメモリ ( パソコンの仕様書における 512 MB RAM などの記述はこのメモリの量 ) RAM は多数のコンデンサの集合体 : 電荷がたまっている (1)/ いない

More information

Microsoft Word - Cプログラミング演習(9)

Microsoft Word - Cプログラミング演習(9) 第 9 回 (6/18) 3. ファイルとその応用 外部記憶装置に記録されたプログラムやデータを, ファイルと呼ぶ シーケンシャルファイルやランダムファイルへのデータの記録や読み出し, 更新の手順について学習する (1) ファイルとレコードファイル複数の関連したデータを一つに集めたり プログラムを外部記憶装置に保存したものレコードファイルを構成する一塊のデータ ex. 個人カードフィールドレコードを構成する個別の要素

More information

演算増幅器

演算増幅器 ファイルこれまでにデータの入力方法として キーボードからの入力を用いてきた 構造体を習った際に実感してもらえたと思うが 入力データ量が多いときにはその作業は大変なものとなり 入力するデータを間違えた場合には最初からやり直しになる そこで今回はこれらの問題を解決するため あらかじめ入力データをテキストエディタなどで編集し ファイルとして保存したものを入力データとして用いる方法を習っていく さらにプログラムで作成したデータをファイルに出力する方法も併せて習っていく

More information

AquesTalk2 Win マニュアル

AquesTalk2 Win マニュアル 株式会社 AQUEST http://www.a-quest.com/ AquesTalk2 Win Manual 1. 概要 本文書は 規則音声合成ライブラリ AquesTalk2 Win をアプリケーションに組み込んで使用するためのプログラミングに関しての方法および注意点を示したものです AquesTalk2 は 簡単に小型機器への組み込みが出来る音声合成ミドルウェアです このライブラリを用いることで

More information

講習No.10

講習No.10 2 次元配列 復習 float d[3][4]; 2 次元配列 d[i][j] 2 つのインデックス i と j でデータが指定される 縦が 3 行横が 4 列の float 型の表 4 列 横のインデックスは 3 まで j = 0 j = 1 j = 2 j = 3 3 行 i = 0 i = 1 i = 2 d[0][0] d[0][1] d[0][2] d[0][3] d[1][0] d[1][1]

More information

Microsoft PowerPoint - kougi7.ppt

Microsoft PowerPoint - kougi7.ppt C プログラミング演習 第 7 回メモリ内でのデータの配置 例題 1. 棒グラフを描く 整数の配列から, その棒グラフを表示する ループの入れ子で, 棒グラフの表示を行う ( 参考 : 第 6 回授業の例題 3) 棒グラフの1 本の棒を画面に表示する機能を持った関数を補助関数として作る #include "stdafx.h" #include void draw_bar( int

More information

FORTRAN( と C) によるプログラミング 5 ファイル入出力 ここではファイルからデータを読みこんだり ファイルにデータを書き出したりするプログラムを作成してみます はじめに テキスト形式で書かれたデータファイルに書かれているデータを読みこんで配列に代入し 標準出力に書き出すプログラムを作り

FORTRAN( と C) によるプログラミング 5 ファイル入出力 ここではファイルからデータを読みこんだり ファイルにデータを書き出したりするプログラムを作成してみます はじめに テキスト形式で書かれたデータファイルに書かれているデータを読みこんで配列に代入し 標準出力に書き出すプログラムを作り FORTRAN( と C) によるプログラミング 5 ファイル入出力 ここではファイルからデータを読みこんだり ファイルにデータを書き出したりするプログラムを作成してみます はじめに テキスト形式で書かれたデータファイルに書かれているデータを読みこんで配列に代入し 標準出力に書き出すプログラムを作ります FORTRAN の場合 OPEN 文でファイルを開いた後 標準入力の場合と同様に READ 文でデータを読みこみます

More information

Taro-ファイル処理(公開版).jtd

Taro-ファイル処理(公開版).jtd ファイル処理 0. 目次 1. はじめに 2. ファイル内容の表示 3. ファイル内容の複写 3. 1 文字単位 3. 2 行単位 4. 書式付き入出力 5. 文字配列への入出力 6. 課題 6. 1 課題 1 ( ファイル圧縮 復元 ) - 1 - 1. はじめに ファイル処理プログラムの形は次のようになる #include main() { FILE *fp1,*fp2; ファイルポインタの宣言

More information

AquesTalk プログラミングガイド

AquesTalk プログラミングガイド AquesTalk プログラミングガイド ( 株 ) アクエスト 1. 概要 本文書は 規則音声合成ライブラリ AquesTalk をアプリケーションに組み込んで使用するためのプログラミングに関して 方法および注意点を示したものです AquesTalk には 2 種類のライブラリがあります 音声データをメモリ上に生成するものと サウンドデバイスに出力する 2 種類があります 使用するアプリケーションに応じて選択してください

More information

AquesTalk Win Manual

AquesTalk Win Manual AquesTalk Win マニュアル 株式会社アクエスト http://www.a-quest.com/ 1. 概要 本文書は 規則音声合成ライブラリ AquesTalk をアプリケーションに組み込んで使用するためのプログラミングに関して 方法および注意点を示したものです AquesTalk には 2 種類のライブラリがあります 音声データをメモリ上に生成するものと サウンドデバイスに出力する 2

More information

PowerPoint Presentation

PowerPoint Presentation ファイルの入出力 芝浦工業大学情報工学科 青木義満 今回の講義内容 ファイル入出力 ファイルからのデータ読込み ファイルと配列 2 1 ファイルへのデータ書き込み ( 復習 ) ソースファイル名 :fileio1.c データをファイルに書き込み #include int main(void) { ファイルポインタ宣言 int student_id = 100; char name[

More information

Microsoft PowerPoint ppt

Microsoft PowerPoint ppt 基礎演習 3 C 言語の基礎 (5) 第 05 回 (20 年 07 月 07 日 ) メモリとポインタの概念 ビットとバイト 計算機内部では データは2 進数で保存している 計算機は メモリにデータを蓄えている bit 1bit 0 もしくは 1 のどちらかを保存 byte 1byte 1bitが8つ集まっている byte が メモリの基本単位として使用される メモリとアドレス メモリは 1byte

More information

gengo1-12

gengo1-12 外部変数 関数の外で定義される変数を外部変数 ( 大域変数 ) と呼ぶ 外部変数のスコープは広域的 ( プログラム全体 ) 全ての関数で参照可能 int a=10; double x=3.14159; printf( a = %d\n, a); sample(); printf( %f\n, x); void sample(void) printf( %f\n, x); x += 1.0; 外部変数

More information

Microsoft PowerPoint - kougi2.ppt

Microsoft PowerPoint - kougi2.ppt C プログラミング演習 第 2 回 Microsoft Visual Studio.NET を使ってみよう 説明 例題 1. プログラム実行の体験 コンピュータを役に立つ道具として実感する 次ページのプログラムを使って, Microsoft Visual Studio.NETでの C++ ソースファイル編集, ビルド, テスト実行の一連の過程を体験する 例題 1 のプログラムの機能 計算の繰り返し

More information

ディジタル信号処理

ディジタル信号処理 信号処理論 ディジタル画像処理 C 言語におけるファイル入出力 テキスト バイナリの取り扱い ( )..[4]% gcc Wall o hoge hoge.c..[5]%./hoge 1 : 1 2 : 2 3 : 3 4 : 0 6..[6]% (! )..[4]% gcc Wall o hoge hoge.c..[5]%!g gcc Wall o hoge hoge.c..[6]%!! gcc

More information

ファイル入出力

ファイル入出力 C プログラミング Ⅱ の基礎 とは ファイルへデータを書き込んだり ( 出力 ), ファイルからデータを読み込んだり ( 入力 ) する C 言語では キーボードからの入力 画面への出力と同じようなコードで 処理を実現できる プログラム 入力 出力 ファイル 出力 入力 2 入出力の基本 ストリーム プログラム上で様々な装置への入出力を行う機構様々な入出力装置を統一的な方法で扱うことができる ハードディスクなどではファイルデータによって入出力が行われる

More information

プログラミング基礎

プログラミング基礎 C プログラミング 演習 アルゴリズム基礎論 演習 第 10 回 今後の予定 12/22( 月 ) 期末試験 (60 分間 ) 場所 :A1611 時間 :16:20~17:20 課題の最終提出締切 :12/19( 金 ) これ以降の新規提出は評価されない 12/22までに最終状況を提示するので, 提出したのに や になってる人は自分の提出内容や提出先を再確認した上で12/26までに問い合わせること

More information

PowerPoint プレゼンテーション

PowerPoint プレゼンテーション 講座準備 講座資料は次の URL から DL 可能 https://goo.gl/jnrfth 1 ポインタ講座 2017/01/06,09 fumi 2 はじめに ポインタはC 言語において理解が難しいとされる そのポインタを理解することを目的とする 講座は1 日で行うので 詳しいことは調べること 3 はじめに みなさん復習はしましたか? 4 & 演算子 & 演算子を使うと 変数のアドレスが得られる

More information

情報画像工学実験I-1

情報画像工学実験I-1 情報画像工学実験 I-1 第二週 : 画像ファイル レポートについて ( 概要 ) 情報画像工学実験レポート 実験項目 : 実験 1 提出先 :1 号棟 501 室前ポスト 期 限 : 次の実験の開始前まで 表 紙 : 学科所定の表紙 実験実施日 : レポート提出日 : 提出者 : http://www.tj.chiba-u.jp/jikken.html サイズ : A4レポート用 ( 印刷の場合は白紙

More information

02: 変数と標準入出力

02: 変数と標準入出力 C プログラミング入門 基幹 2 ( 月 4) 11: 動的メモリ確保 Linux にログインし 以下の講義ページを開いておくこと http://www-it.sci.waseda.ac.jp/ teachers/w483692/cpr1/ 2014-06-22 1 まとめ : ポインタを使った処理 内容 説明 呼び出し元の変数を書き換える第 9 回 文字列を渡す 配列を渡す 第 10 回 ファイルポインタ

More information

ディジタル信号処理

ディジタル信号処理 http://www.cfme.chiba-u.jp/~yama// C 言 語 におけるファイル 入 出 力 テキスト バイナリの 取 り 扱 い ( )..[4]% gcc Wall o hoge hoge.c..[5]%./hoge 1 : 1 2 : 2 3 : 3 4 : 0 6..[6]% (! )..[4]% gcc Wall o hoge hoge.c..[5]%!g gcc Wall

More information

gengo1-12

gengo1-12 外部変数 関数の外で定義される変数を外部変数 ( 大域変数 ) と呼ぶ 外部変数のスコープは広域的 ( プログラム全体 ) 全ての関数で参照可能 int a=10; double x=3.14159; printf( a = %d\n, a); sample(); printf( %f\n, x); void sample(void) printf( %f\n, x); x += 1.0; 外部変数

More information

PowerPoint プレゼンテーション

PowerPoint プレゼンテーション プログラミング応用演習 第 4 回再帰的構造体 前回の出席確認演習 #include int main() { FILE *fp; int c, linecount, length, maxlength; fp=fopen("/usr/share/dict/words","r"); if (fp == NULL) return 1; linecount=0; length=0;

More information

AquesTalk2 Win マニュアル&ライセンス規定

AquesTalk2 Win マニュアル&ライセンス規定 AQUEST Corp. http://www.a-quest.com/ AquesTalk2 Win 版 Manual & Licence 規定 1. 概要 本文書は 規則音声合成ライブラリ AquesTalk2 Win 版をアプリケーションに組み込んで使用するためのプログラミングに関しての方法および注意点および ライセンスに関して示したものです AquesTalk2 は AquesTalk の後継として開発されました

More information

ファイル入出力

ファイル入出力 C プログラミング Ⅱ の基礎 とは ファイルへデータを書き込んだり ( 出力 ), ファイルからデータを読み込んだり ( 入力 ) する C 言語では キーボードからの入力 画面への出力と同じようなコードで 処理を実現できる プログラム 入力 出力 ファイル 出力 入力 2 入出力の基本 ストリーム プログラム上で様々な装置への入出力を行う機構様々な入出力装置を統一的な方法で扱うことができる ハードディスクなどではファイルデータによって入出力が行われる

More information

gengo1-12

gengo1-12 外部変数 関数の外で定義される変数を外部変数 ( 大域変数 ) と呼ぶ 外部変数のスコープは広域的 ( プログラム全体 ) 全ての関数で参照可能 int a=10; double x=3.14159; printf( a = %d\n, a); sample(); printf( %f\n, x); void sample(void) printf( %f\n, x); x += 1.0; 外部変数

More information

AquesTalk2 Linux マニュアル

AquesTalk2 Linux マニュアル AQUEST Corp. http://www.a-quest.com/ 1. 概要 AquesTalk2 Linux Manual 本文書は 規則音声合成ライブラリ AquesTalk2 Linux をアプリケーションに組み込んで使用するためのプログラミングに関しての方法および注意点を示したものです AquesTalk2 は AquesTalk の後継として開発されました 合成音声の声質を規定するデータとして

More information

1. ファイルにアクセスするには ファイルにアクセスするには 1. ファイルを開く 2. アクセスする 3. ファイルを閉じるという手順を踏まなければなりません 1.1. ファイルを読み込む まずはファイルの内容を画面に表示させるプログラムを作りましょう 開始 FILE *fp char fname

1. ファイルにアクセスするには ファイルにアクセスするには 1. ファイルを開く 2. アクセスする 3. ファイルを閉じるという手順を踏まなければなりません 1.1. ファイルを読み込む まずはファイルの内容を画面に表示させるプログラムを作りましょう 開始 FILE *fp char fname ファイル入出力 三池克明 ファイルのデータを読込む あるいは書込む方法と CSV 形式のファイル処理 について解説します 目次 1. ファイルにアクセスするには... 1 1.1. ファイルを読み込む...1 1.2. ソースコードを簡潔にする...9 1.3. ファイルに書き込む...11 2. CSV ファイルにアクセスする... 14 2.1. CSV ファイルを作成する...14 2.2.

More information

PowerPoint プレゼンテーション

PowerPoint プレゼンテーション プログラミング応用演習 第 4 回再帰的構造体 プログラミングを 余談 : 教えることの難しさ 丁寧に説明しないと分かってもらえない 説明すると 小難しくなる学生が目指すべきところプログラム例を説明されて理解できる違うやり方でも良いので自力で解決できる おっけー 動けば良い という意識でプログラミング 正しく動くことのチェックは必要 解答例と自分のやり方との比較が勉強になる 今日のお題 再帰的構造体

More information

プログラミング実習I

プログラミング実習I プログラミング実習 I 05 関数 (1) 人間システム工学科井村誠孝 m.imura@kwansei.ac.jp 関数とは p.162 数学的には入力に対して出力が決まるもの C 言語では入出力が定まったひとまとまりの処理 入力や出力はあるときもないときもある main() も関数の一種 何かの仕事をこなしてくれる魔法のブラックボックス 例 : printf() 関数中で行われている処理の詳細を使う側は知らないが,

More information

slide4.pptx

slide4.pptx ソフトウェア工学入門 第 4 回ライブラリ関数 ライブラリ関数 stdio stdio : 標準入出力ライブラリ カーネルレベルのストリームに API を追加し インタフェースを提供する カーネル fd read(2) write(2) stdio バッファ BUFSIZ プログラム BUFSIZ ごと 小さい単位 バッファ : 一時的にデータを保存しておく場所のことバッファリング : バッファを経由してデータをやり取りすること

More information

02: 変数と標準入出力

02: 変数と標準入出力 C プログラミング入門 総機 1 ( 月 1) 11: 動的メモリ確保 Linux にログインし 以下の講義ページを開いておくこと http://www-it.sci.waseda.ac.jp/ teachers/w483692/cpr1/ 2015-06-22 1 まとめ : ポインタを使った処理 内容 説明 呼び出し元の変数を書き換える第 9 回 文字列を渡す 配列を渡す 第 10 回 ファイルポインタ

More information

Microsoft PowerPoint - 計算機言語 第7回.ppt

Microsoft PowerPoint - 計算機言語 第7回.ppt 計算機言語第 7 回 長宗高樹 目的 関数について理解する. 入力 X 関数 f 出力 Y Y=f(X) 関数の例 関数の型 #include int tasu(int a, int b); main(void) int x1, x2, y; x1 = 2; x2 = 3; y = tasu(x1,x2); 実引数 printf( %d + %d = %d, x1, x2, y);

More information

Microsoft PowerPoint - 第3回目.ppt [互換モード]

Microsoft PowerPoint - 第3回目.ppt [互換モード] 第 3 回プログラミング応用 目的ファイル入出力 1. ファイルの概念 2. ファイルの読み込み 3. ファイルの書き込み CPU 演算 判断 ファイルの概念 内部記憶装置 OS 機械語プログラム 入力装置 キーボード 出力装置 ディスプレイ ファイル 外部記憶装置ハードディスク CD-ROM CPU が外部とデータをやり取りするための媒介 printf 関数や scanf 関数でもうすでにファイルのやり取りの基本は学んでいる

More information

Microsoft PowerPoint - kougi6.ppt

Microsoft PowerPoint - kougi6.ppt C プログラミング演習 第 6 回ファイル処理と配列 1 ファイル処理 2 ファイル読み込み ファイル プログラム ファイルの中身は変わらない 3 ファイル書き出し ファイル プログラム ファイルの中身が変わる ファイルは伸び縮みすることがある 4 例題 1. テキストファイル形式の ファイルからのデータ読み込み 次のような名簿ファイル ( テキストファイル形式 ) を読み込んで,1 列目の氏名と,3

More information

Microsoft PowerPoint pptx

Microsoft PowerPoint pptx 情報処理 Ⅱ 第 12 13回 2011 年 1 月 31 17 日 ( 月 ) 本日学ぶこと ファイル入出力, 標準入力 標準出力 記憶域管理関数 (malloc など ) 問題 ファイルを入力にとり, 先頭に行番号をつけて出力できる? 行列の積を, ファイルを介して読み書き 計算できる? Wakayama University./line 1:Wakayama 2:University 3 2

More information

Microsoft Word - no15.docx

Microsoft Word - no15.docx 7. ファイルいままでは プログラムを実行したとき その結果を画面で確認していました 簡単なものならそれでもいいのですか 複雑な結果は画面で見るだけでなく ファイルに保存できればよいでしょう ここでは このファイルについて説明します 使う関数のプロトタイプは次のとおりです FILE *fopen(const char *filename, const char *mode); ファイルを読み書きできるようにする

More information

一方, 物体色 ( 色や光を反射して色刺激を起こすもの, つまり印刷物 ) の表現には, 減法混色 (CMY) が用いられる CMY の C はシアン (Cyn),M はマゼンタ (Mgent),Y はイエロー (Yellow) であり, これらは色の 3 原色と呼ばれるものである なお, 同じシア

一方, 物体色 ( 色や光を反射して色刺激を起こすもの, つまり印刷物 ) の表現には, 減法混色 (CMY) が用いられる CMY の C はシアン (Cyn),M はマゼンタ (Mgent),Y はイエロー (Yellow) であり, これらは色の 3 原色と呼ばれるものである なお, 同じシア 第 4 章デジタル画像の処理 デジタル画像処理の基礎について理解し,Jv によるフィルタリング処理や座標変換のプログラムを作成する 4.1 RGB 表色系と CMY 表色系 TV やコンピュータのディスプレイ, デジタルカメラでの色の表現には, 加法混色 (RGB) が用いられる RGB の R は赤 (Red),G は緑 (Green),B は青 (Blue) であり, これらは光の 3 原色と呼ばれるものである

More information

memo

memo 計数工学プログラミング演習 ( 第 3 回 ) 2017/04/25 DEPARTMENT OF MATHEMATICAL INFORMATICS 1 内容 ポインタの続き 引数の値渡しと参照渡し 構造体 2 ポインタで指されるメモリへのアクセス double **R; 型 R[i] と *(R+i) は同じ意味 意味 R double ** ポインタの配列 ( の先頭 ) へのポインタ R[i]

More information

PowerPoint プレゼンテーション

PowerPoint プレゼンテーション プログラミング応用演習 第 3 回構造体, ファイル入出力 先週の出席確認へのコメント 暗号を破りたいが 平文の候補が多すぎる 人間の目で確認する代わりに どんなプログラムがあればよいか? 辞書を挙げた人が多かった 正しい着眼です 何億個もの平文候補が想定されるので 形態素解析や品詞判別を挙げた人もいます 辞書に近い回答で悪くはないのですが 平文候補ごとにあまり高機能なものを呼び出すと時間がかかる

More information

ゲームエンジンの構成要素

ゲームエンジンの構成要素 cp-3. 計算 (C プログラムの書き方を, パソコン演習で学ぶシリーズ ) https://www.kkaneko.jp/cc/adp/index.html 金子邦彦 1 本日の内容 例題 1. 自由落下距離四則演算例題 2. 三角形の面積浮動小数の変数, 入力文, 出力文, 代入文例題 3. sin 関数による三角形の面積ライブラリ関数 2 今日の到達目標 プログラムを使って, 自分の思い通りの計算ができるようになる

More information

PowerPoint プレゼンテーション

PowerPoint プレゼンテーション プログラミング応用演習 第 5 回演習 前回までのお話 ポインタ ポインタを用いた文字列処理 構造体 ファイル 再帰的構造体 リスト構造 動的メモリ管理 今日のお題 ポインタやファイルなど これまでの内容の練習 教材 以前 以下に単語を収録したファイルがあることを紹介した : /usr/share/dict/words この中からランダムに単語を取り出したファイルを用意した http://sun.ac.jp/prof/yamagu/2019app/

More information

プログラミング演習3 - Cプログラミング -

プログラミング演習3 - Cプログラミング - プログラミング演習 3 - C プログラミング - 第 1 回資料 & 課題花泉弘 この回の目標 1. テキストファイルからのデータの読み出し ファイルの open と close 1 文字ずつの入力 1 行ずつの入力 C 言語に限らず ファイルからデータを読み込む場合 必要になるのは ファイル名と場所 ( どのディレクトリにあるか ) プログラム上でデータを受け取るバッファ ( 変数の型に注意 )

More information

Microsoft PowerPoint - 11.pptx

Microsoft PowerPoint - 11.pptx ポインタと配列 ポインタと配列 配列を関数に渡す 法 課題 : 配列によるスタックの実現 ポインタと配列 (1/2) a が配列であるとき, 変数の場合と同様に, &a[0] [] の値は配列要素 a[0] のアドレス. C 言語では, 配列は主記憶上の連続領域に割り当てられるようになっていて, 配列名 a はその配列に割り当てられた領域の先頭番地となる. したがって,&a[0] と a は同じ値.

More information

02: 変数と標準入出力

02: 変数と標準入出力 C プログラミング入門 基幹 7 ( 水 5) 11: 動的メモリ確保 Linux にログインし 以下の講義ページを開いておくこと http://www-it.sci.waseda.ac.jp/ teachers/w483692/cpr1/ 2016-06-22 1 まとめ : ポインタを使った処理 内容呼び出し元の変数を書き換える文字列を渡す 配列を渡すファイルポインタ複数の値を返す大きな領域を確保する

More information

Microsoft Word - Training10_プリプロセッサ.docx

Microsoft Word - Training10_プリプロセッサ.docx Training 10 プリプロセッサ 株式会社イーシーエス出版事業推進委員会 1 Lesson1 マクロ置換 Point マクロ置換を理解しよう!! マクロ置換の機能により 文字列の置き換えをすることが出来ます プログラムの可読性と保守性 ( メンテナンス性 ) を高めることができるため よく用いられます マクロ置換で値を定義しておけば マクロの値を変更するだけで 同じマクロを使用したすべての箇所が変更ができるので便利です

More information

Microsoft PowerPoint - kougi9.ppt

Microsoft PowerPoint - kougi9.ppt C プログラミング演習 第 9 回ポインタとリンクドリストデータ構造 1 今まで説明してきた変数 #include "stdafx.h" #include int _tmain(int argc, _TCHAR* argv[]) { double x; double y; char buf[256]; int i; double start_x; double step_x; FILE*

More information

1 C STL(1) C C C libc C C C++ STL(Standard Template Library ) libc libc C++ C STL libc STL iostream Algorithm libc STL string vector l

1 C STL(1) C C C libc C C C++ STL(Standard Template Library ) libc libc C++ C STL libc STL iostream Algorithm libc STL string vector l C/C++ 2007 6 18 1 C STL(1) 2 1.1............................................... 2 1.2 stdio................................................ 3 1.3.......................................... 10 2 11 2.1 sizeof......................................

More information

Ⅰ. 外枠の作成 JTrim ファイルを起動しておきます 1)100*100 の黒を新規作成して背景を白にしますそして 50 でフェードアウトします 1 ファイル 新規作成 横 縦 (100) キャンバスの色 ( 黒 ) OK 2 表示 背景色 白 3 加工 フェードアウト フェードアウト画面が表示

Ⅰ. 外枠の作成 JTrim ファイルを起動しておきます 1)100*100 の黒を新規作成して背景を白にしますそして 50 でフェードアウトします 1 ファイル 新規作成 横 縦 (100) キャンバスの色 ( 黒 ) OK 2 表示 背景色 白 3 加工 フェードアウト フェードアウト画面が表示 NPO 法人いきいきネットとくしま第 114 回定例勉強会 森の日県南 平成 30 年 1 月 11 日担当 : 岸艶子 外枠付き模様枠作成 模様枠に 立体枠 をつけて作成していましたが 今回は 別に 外枠 を作って模様枠と合成する方法で作成します 外枠 模様枠 外枠をつけた模様枠文字入 内容 Ⅰ. 外枠の作成 Ⅱ. 模様枠の作成 Ⅲ. 外枠と模様枠の合成 Ⅳ. 文字入れ 1 Ⅰ. 外枠の作成 JTrim

More information

第2回

第2回 第 4 回基本データ構造 1 明星大学情報学科 2 3 年前期 アルゴリズムとデータ構造 Ⅰ 第 4 回 Page 1 配列 スタック キューとその操作 4-1. 配列とその操作 配列型 同じ型の変数を並べたもの 配列にする型は 基本型 配列型 構造体 ポインタいずれでもよい 要素の並べ方を 次元 という 1 次元配列 ( 直線状 ) 2 次元配列 ( 平面状 ) 3 次元配列 ( 立体状 ) a[5]

More information

講習No.9

講習No.9 日本語は通常 2 バイトの文字コード.JIS コード, シフト JIS コード, Unicode (UTF-8) 等の様々な文字コードがある. アスキーコード表 (ASCII code) アスキーコード ( 値 ) 漢字変換無しでキーボードから直接入力できる半角文字 32 48 0 64 @ 80 P 96 ` 112 p 33! 49 1 65 A 81 Q 97 a 113 q 34 " 50

More information

PowerPoint プレゼンテーション

PowerPoint プレゼンテーション 構造体 (struct) 構造体の宣言 typedef 宣言 配列では 複数のデータをひとまとまりにして操作することが出来る しかし それぞれのデータは同じ型 ( 例えば整数 あるいは浮動小数点数 ) 出なければならない 型の違うデータをひとまとまりにして扱う方法に 構造体がある 構造体 文文文文名前字 ( 文字列字字 ) 字 整数学籍番号 ( 整数 ) 身長 ( 浮動小数点数 ) 文字 配列 3

More information

AquesTalk for WinCE プログラミングガイド

AquesTalk for WinCE プログラミングガイド AquesTalk for WinCE プログラミングガイド ( 株 ) アクエスト 1. 概要 本文書は 規則音声合成ライブラリ AquesTalk for WinCE ( 以下 AquesTalk) をアプリケーションに組み込んで使用するためのプログラミングに関して 方法および注意点を示したものです AquesTalk には 2 種類のライブラリがあります 音声データをメモリ上に生成するものと

More information

全体ロードマップ インターネット電話 音の符号化 ( 信号処理 ) 今日 音の録音 再生 ネットワーク ( ソケット ) プログラミング ファイル入出力 インターネットの基礎 C プログラミング基礎

全体ロードマップ インターネット電話 音の符号化 ( 信号処理 ) 今日 音の録音 再生 ネットワーク ( ソケット ) プログラミング ファイル入出力 インターネットの基礎 C プログラミング基礎 ファイル入出力 全体ロードマップ インターネット電話 音の符号化 ( 信号処理 ) 今日 音の録音 再生 ネットワーク ( ソケット ) プログラミング ファイル入出力 インターネットの基礎 C プログラミング基礎 今日のロードマップ 波形として可視化 (gnuplot) 課題 2.13, 2.15 音を自分のプログラムに読み込む (rec + read) 音を作って鳴らす (write + play)

More information

02: 変数と標準入出力

02: 変数と標準入出力 C プログラミング入門 基幹 7 ( 水 5) 1 11: 動的メモリ確保 Linux にログインし 以下の講義ページを開いておくこと http://www-it.sci.waseda.ac.jp/teachers/w48369 2/CPR1/ 2017-06-28 まとめ : ポインタを使った処理 2 内容呼び出し元の変数を書き換える文字列を渡す 配列を渡すファイルポインタ複数の値を返す大きな領域を確保する

More information

Microsoft PowerPoint - CproNt11.ppt [互換モード]

Microsoft PowerPoint - CproNt11.ppt [互換モード] 第 11 章入出力関数とライブラリ関数 CPro:11-01 概要 getchar putchar gets puts scanf printf strcat strcmp strcpy strlen atoi atof sprint sscanf 11.1 コンソール入出力関数 11-02 入力 出力 getchar putchar 一文字 gets puts 文字列 ( 一行 ) scanf printf

More information

もう少し詳しい説明 1. アルゴリズムを構築するための 4 枚のサンプル画像を次々と読み込むここで重要なことは画像を順番に読み込むための文字列操作 for 文の番号 i を画像の番号として使用している strcpy は文字列のコピー,sprinf は整数を文字列に変換,strcat は文字列を繋げる

もう少し詳しい説明 1. アルゴリズムを構築するための 4 枚のサンプル画像を次々と読み込むここで重要なことは画像を順番に読み込むための文字列操作 for 文の番号 i を画像の番号として使用している strcpy は文字列のコピー,sprinf は整数を文字列に変換,strcat は文字列を繋げる サンプルプログラムの概要 1. アルゴリズムを構築するための 4 枚のサンプル画像を次々と読み込む 2. RGB 分離を行い,R 画像を用いて閾値 40 で 2 値化 3. ラベリングを行う ( ここで対象物の数を数えることになる ) 4. ラベル付された対象の重心を計算 5. ラベル値と重心位置を 2 値画像に表示 ( 赤い数字がラベル値, 緑色の点が重心位置を表している ) 6. テキストファイルに結果を書き出し

More information

Microsoft PowerPoint - kougi4.ppt

Microsoft PowerPoint - kougi4.ppt C の実行モデル 自由落下距離 前回の授業の 例題 1 の復習と重要事項 の確認 地上で物を落とし始めた後の自由落下距離を 求める 重力加速度 g は 9.8 とする 自由落下距離を求めるために, プログラム中に, 計算式 y = ( 9.8 / 2.0 ) * x * x を書く C++ ソースファイルの編集 編集画面 編集中のファイル名 関係するファイルなどが表示される ビルド結果などが表示される画面

More information

memo

memo 計数工学プログラミング演習 ( 第 3 回 ) 2016/04/26 DEPARTMENT OF MATHEMATICAL INFORMATICS 1 内容 ポインタ malloc 構造体 2 ポインタ あるメモリ領域 ( アドレス ) を代入できる変数 型は一致している必要がある 定義時には値は不定 ( 何も指していない ) 実際にはどこかのメモリを指しているので, #include

More information

Microsoft PowerPoint - 12.ppt [互換モード]

Microsoft PowerPoint - 12.ppt [互換モード] 第 12 回構造体 1 今回の目標 構造体を理解する 構造体の定義の仕方を理解する 構造体型を理解する 構造体型の変数 引数 戻り値を理解する 複素数同士を足し算する関数を作成し その関数を利用するプログラムを作成する 2 複素数の足し算 複素数は実部と虚部の2つの実数で 表現される 表現される z = a+ bi 2 つの複素数 z 1 = a 1+ bi 1 と z2 = a2 + b2i の和

More information

※ ポイント ※

※ ポイント ※ 4S-RO ロボティクス実験 参考資料 ファイル入出力 : ファイルの読み込み 1 周目に計測した生体情報データを読み込み プログラムにより信号処理を行うが その際にファイルの 入出力が必要となる 実験前半ですでに学習しているが必要に応じて本資料を参考にすること 以下のようにすると指定したファイルを読み込むことができる ( 詳細は後から記述 ) int i; double --------; char

More information

講習No.12

講習No.12 前回までの関数のまとめ 関数は main() 関数または他の関数から呼び出されて実行される. 関数を呼び出す側の実引数の値が関数内の仮引数 ( 変数 ) にコピーされる. 関数内で定義した変数は, 関数の外からは用いることができない ( ローカル変数 ). 一般に関数内で仮引数を変化しても, 呼び出し側の変数は変化しない ( 値渡し ). 関数内で求めた値は return 文によって関数値として呼び出し側に戻される.

More information

プログラミング演習3 - Cプログラミング -

プログラミング演習3 - Cプログラミング - プログラミング演習 3 - 集中講義版 - 1 日目資料 & 課題花泉弘 この回の目標 1. テキストファイルからのデータの読み出し ファイルの open と close 1 文字ずつの入力と 1 行ずつの入力とを行う readnext( ) を作成する C 言語に限らず ファイルからデータを読み込む場合 必要になるのは ファイル名と場所 ( どのディレクトリにあるか ) プログラム上でデータを受け取るバッファ

More information

格子点データの解析 1 月平均全球客観解析データの解析 客観解析データや衛星観測データのような格子点データは バイナリ形式のデータファイルに記録されていることが多いです バイナリ形式のデータファイルは テキスト形式の場合とは異なり 直接中身を見ることができません プログラムを書いてデータを読み出して

格子点データの解析 1 月平均全球客観解析データの解析 客観解析データや衛星観測データのような格子点データは バイナリ形式のデータファイルに記録されていることが多いです バイナリ形式のデータファイルは テキスト形式の場合とは異なり 直接中身を見ることができません プログラムを書いてデータを読み出して 格子点データの解析 1 月平均全球客観解析データの解析 客観解析データや衛星観測データのような格子点データは バイナリ形式のデータファイルに記録されていることが多いです バイナリ形式のデータファイルは テキスト形式の場合とは異なり 直接中身を見ることができません プログラムを書いてデータを読み出して解析するのが普通です ここでは 全球客観解析データを用いてバイナリ形式のファイルに記録された格子点データの解析について学びたいと思います

More information

Microsoft Word - Cプログラミング演習(12)

Microsoft Word - Cプログラミング演習(12) 第 12 回 (7/9) 4. いくつかのトピック (5)main 関数の引数を利用したファイル処理 main 関数は, 起動する環境から引数を受け取ることができる 例えば 次に示すように,main 関数に引数を用いたプログラムを作成する 01 /* sample */ 02 /* main 関数の引数 */ 03 #include 04 05 main(int argc, char

More information

AquesTalk Mac マニュアル

AquesTalk Mac マニュアル AquesTalk Mac マニュアル 2010/1/6 ( 株 ) アクエスト http://www.a-quest.com/ 1. 概要 本文書は 規則音声合成ライブラリ AquesTalk Mac( 以下 AquesTalk ) をアプリケーションに組み込んで使用するためのプログラミングに関して 方法および注意点を示したものです AquesTalk Mac は Win 版の AquesTalk

More information

コマンドラインから受け取った文字列の大文字と小文字を変換するプログラムを作成せよ 入力は 1 バイトの表示文字とし アルファベット文字以外は変換しない 1. #include <stdio.h> 2. #include <ctype.h> /*troupper,islower,isupper,tol

コマンドラインから受け取った文字列の大文字と小文字を変換するプログラムを作成せよ 入力は 1 バイトの表示文字とし アルファベット文字以外は変換しない 1. #include <stdio.h> 2. #include <ctype.h> /*troupper,islower,isupper,tol コマンドラインから受け取った文字列の大文字と小文字を変換するプログラムを作成せよ 入力は 1 バイトの表示文字とし アルファベット文字以外は変換しない 1. #include 2. #include /*troupper,islower,isupper,tolowerを使うため宣言*/ 3. 4. int get_n(char *); 5. void replace(char

More information

メンバ変数とインスタンス

メンバ変数とインスタンス 第 1 章まずはメニューを表示しよう 実習編第一回ということで今後ゲームを 作っていく準備をします あと ソースを書いていくよー 第 1 章まずはメニューを表示しよう 1 プロジェクトの作成 ゲームを作成するにはとりあえずプロジェクトを作らないとね ゲームプログラミング講習 0.2. プロジェクトの準備 を参考にプロジェクトを準備しよう ファイル名は半角英数をお勧めします 必要な画像ファイルをダウンロードしよう

More information

Microsoft PowerPoint - 13.ppt [互換モード]

Microsoft PowerPoint - 13.ppt [互換モード] 第 13 回構造体 1 今回の目標 構造体を理解する 構造体の定義の仕方を理解する 構造体型を理解する 構造体型の変数 引数 戻り値を理解する 複素数同士を足し算する関数を作成し その関数を利用するプログラムを作成する 2 複素数の足し算 複素数は実部と虚部の2つの実数で 表現される z = a+ bi z = a + bi z = a + b i 2 つの複素数 1 1 1 と 2 2 2 の和

More information

Prog1_12th

Prog1_12th 2013 年 7 月 4 日 ( 木 ) 実施 ファイル処理ファイルとはファイル (file) は日常用語では紙などを綴じたものを表すが, コンピュータ用語ではデータの集合体を指す言葉である ファイルは例えば, 文書ファイルやプログラムファイルのように, 用途によって分類されることもあれば, また, テキストファイルやバイナリファイルのように, ファイルの作り方によって分類されることもある なお,

More information

02InDesign_img.indd

02InDesign_img.indd プリント画像データ作成時のディスプレイ調整 メニューバーのアップルマーク --- システム環境設定 --- ディスプレイ --- カラーボタン --- 補正ボタン 詳細モードにチェックを入れ 説明どおりに進み 19 zoso_print2009a プロファイルに zoso_print2009a と名前を付ける ガンマ値を 2.2 にする ホワイトポイントを 65D にする zoso_print2009a

More information

第1回 プログラミング演習3 センサーアプリケーション

第1回 プログラミング演習3 センサーアプリケーション C プログラミング - ポインタなんて恐くない! - 藤田悟 fujita_s@hosei.ac.jp 目標 C 言語プログラムとメモリ ポインタの関係を深く理解する C 言語プログラムは メモリを素のまま利用できます これが原因のエラーが多く発生します メモリマップをよく頭にいれて ポインタの動きを理解できれば C 言語もこわくありません 1. ポインタ入門編 ディレクトリの作成と移動 mkdir

More information

Microsoft PowerPoint - Lec04 [互換モード]

Microsoft PowerPoint - Lec04 [互換モード] 画像情報処理論及び演習 I 第 4 回講義水曜日 1 限教室 6218 情報処理実習室 情報デザイン専攻 - デジタル画像の表現と応用 - 画像処理プログラミングの基礎 吉澤信 shin@riken.jp, 非常勤講師 大妻女子大学社会情報学部 今日の授業内容 1 レポートについて. 2 www.riken.jp/brict/yoshizawa/lectures/index.html www.riken.jp/brict/yoshizawa/lectures/lec04.pdf

More information

Microsoft Word - no204.docx

Microsoft Word - no204.docx 2. ファイル処理 2.1 ファイル処理の基本いままでは プログラムを実行したとき 入力はキーボードから入れていました また その結果を画面で確認していました 簡単なものならそれでもいいのですが 複雑な入力はファイルから読み込んだり 結果は画面で見るだけでなくファイルに保存できればよいでしょう ここでは ファイル処理について説明します 使う関数のプロトタイプは次のとおりです FILE *fopen(const

More information

バイオプログラミング第 1 榊原康文 佐藤健吾 慶應義塾大学理工学部生命情報学科

バイオプログラミング第 1 榊原康文 佐藤健吾 慶應義塾大学理工学部生命情報学科 バイオプログラミング第 1 榊原康文 佐藤健吾 慶應義塾大学理工学部生命情報学科 ポインタ変数の扱い方 1 ポインタ変数の宣言 int *p; double *q; 2 ポインタ変数へのアドレスの代入 int *p; と宣言した時,p がポインタ変数 int x; と普通に宣言した変数に対して, p = &x; は x のアドレスのポインタ変数 p への代入 ポインタ変数の扱い方 3 間接参照 (

More information

C言語入門

C言語入門 1 C 言語入門 第 7 週 プログラミング言語 Ⅰ( 実習を含む ), 計算機言語 Ⅰ 計算機言語演習 Ⅰ, 情報処理言語 Ⅰ( 実習を含む ) 2 吐き出し法 ( ガウスの消去法 ) のピボッティング 前回の復習 3 連立一次方程式を行列で計算する 吐き出し法 ( ガウスの消去法 ) ステップ 1: 前進消去 ( 上三角行列の作成 ) gaussian_elimination1.c // step1

More information

Microsoft Word - no11.docx

Microsoft Word - no11.docx 3. 関数 3.1 関数関数は数学の関数と同じようなイメージを持つと良いでしょう 例えば三角関数の様に一つの実数値 ( 角度 ) から値を求めますし 対数関数の様に二つの値から一つの値を出すものもあるでしょう これをイメージしてもらえば結構です つまり 何らかの値を渡し それをもとに何かの作業や計算を行い その結果を返すのが関数です C 言語の関数も基本は同じです 0 cos 1 cos(0) =

More information

ポインタ変数

ポインタ変数 プログラミング及び実習 7 馬青 1 文字列処理 文字列 文字列は " ( ダブルクォーテーション ) で囲んで表現される 文字列というデータ型が存在しないので 文字列は文字の配列 あるいはポインタ変数として扱われる また 文字の配列あるいはポインタ変数を宣言するときのデータ型は char を用いる 従って char s[]="ryukoku Uni."; あるいは char *s="ryukoku

More information

PowerPoint Presentation

PowerPoint Presentation プログラミング基礎 第 2 週 (4,5,6 回 ) 2011-10-07 出村公成 この資料の再配布を禁止します 予定 プログラミング入門 (45 分 ) 変数 入出力 分岐 演習 (90 分 ) タッチタイプ練習 統合開発環境 Codeblocksの使い方 教科書例題の打ち込みと実行 プログラミング入門 C 言語の簡単な例を体験 変数 入出力 分岐 プログラムの例リスト 2.1 改 #include

More information

Taro-ポインタ変数Ⅰ(公開版).j

Taro-ポインタ変数Ⅰ(公開版).j 0. 目次 1. ポインタ変数と変数 2. ポインタ変数と配列 3. ポインタ変数と構造体 4. ポインタ変数と線形リスト 5. 問題 問題 1 問題 2-1 - 1. ポインタ変数と変数 ポインタ変数には 記憶領域の番地が格納されている 通常の変数にはデータが格納されている 宣言 int *a; float *b; char *c; 意味ポインタ変数 aは 整数型データが保存されている番地を格納している

More information

AquesTalk10 Win マニュアル

AquesTalk10 Win マニュアル AquesTalk10 Win マニュアル 株式会社アクエスト www.a-quest.com 概要 本文書は 音声合成ライブラリ AquesTalk10 Win をアプリケーションに組み込んで使用するためのプログラミングの方法 注意点を示したものです AquesTalk10 は かな表記の音声記号列から WAV 音声データを生成するライブラリです AquesTalk10 は 声質パラメータを指定することで様々な声質の音声を生成できる特徴があります

More information