文字列の扱いと、文字列数値変換
文字列の扱いについて説明するために、NULターミネータ・文字コード などの説明のあと、文字コードによる演算例を説明する。 配列名は、配列の先頭アドレスを示すことを説明し、文字列演算での 初歩的なミスの事例などの説明を行う。
先週までの説明に、N(2,8,10,16)進法の説明などが多かったので、 文字列を扱うプログラム例として文字列を数値に変換するプログラム 例を見せて説明する。来週は10進法のプログラムを課題として 2,8,16進に拡張させるテーマに取り組む予定。
int my_atoi( char s[] ) { int i , v = 0 ; /* エラーチェック無し */ for( i = 0 ; i != 'int my_atoi( char s[] ) { int i , v = 0 ; /* エラーチェック無し */ for( i = 0 ; i != '\0' ; i++ ) v = v * 10 + s[i] - '0' ; return v ; } char* my_itoa( char s[] , int x ) { int i ; /* short int 程度を限定 */ s[ 5 ] = '\0' ; for( i = 4 ; i >= 0 ; i-- ) { int d = x % 10 ; s[ i ] = d + '0' ; x /= 10 ; } return s ; }' ; i++ ) v = v * 10 + s[i] - '0' ; return v ; } char* my_itoa( char s[] , int x ) { int i ; /* short int 程度を限定 */ s[ 5 ] = 'int my_atoi( char s[] ) { int i , v = 0 ; /* エラーチェック無し */ for( i = 0 ; i != '\0' ; i++ ) v = v * 10 + s[i] - '0' ; return v ; } char* my_itoa( char s[] , int x ) { int i ; /* short int 程度を限定 */ s[ 5 ] = '\0' ; for( i = 4 ; i >= 0 ; i-- ) { int d = x % 10 ; s[ i ] = d + '0' ; x /= 10 ; } return s ; }' ; for( i = 4 ; i >= 0 ; i-- ) { int d = x % 10 ; s[ i ] = d + '0' ; x /= 10 ; } return s ; }
具体的に取り組む?
先週までの設計に必要な情報と概要・予定を考えてくるという 提出物は、ほとんど完成度のないものであった。 準備不足のグループは、反省させるべく冷たくあしらう。 自分たちの作りたい物に必要とされる知識が不足していることを 自覚していないグループが多い。
バッティング練習機を作りたいグループ
仮想的な球をバットで打つシステムを作りたいというグループは、 自分たちで作れそうなセンサーの検討からスピードガンみたいな ものを作れないかと方向転換ぎみ。
ナビゲーションの補助をする画像処理装置を作りたいグループ
最初は車外風景を撮影し、目的地の通過を画像処理でドライバーに 伝えるシステムを考えていたグループ。 一昨年度のデジQシステムの画像処理プログラムの例などを見せて 簡単なシステムの話をする。
QRコードなどを使った観光地案内システムを作りたいグループ
最も実現性の高い目標を設定しているグループであるが、プロコン 予選を通過のためにはアイディアを一ひねりする必要性を説明。 実際のプログラム開発への第1段階として、HTML,PHPの例を 実演して説明する。