atoi(),itoa()にて演習
N進数・文字列・数値の範囲・文字コードとデータの基本が理解出来たところで、 文字列から整数値を取り出すatoi() , 数値を文字列に変換する itoa() のプログラムにて、 演習を行う。 演習用の雛形プログラムを示し、そのプログラムの挙動を示し、以下の課題とする。
int my_atoi( char s[] ) { int ans = 0 , i ; for( i = 0 ; s[i] != 'int my_atoi( char s[] ) { int ans = 0 , i ; for( i = 0 ; s[i] != '\0' && s[i] >= '0' && s[i] <= '9' ; i++ ) { ans = ans * 10 + (s[i] - '0' ) ; } return ans ; } char* my_itoa( char ans[] , int x ) { int i ; ans[ 5 ] = '\0' ; for( i = 0 ; i < 5 ; i++ ) { int d = x % 10 ; ans[ 4 - i ] = '0' + d ; x /= 10 ; } return ans ; }' && s[i] >= '0' && s[i] <= '9' ; i++ ) { ans = ans * 10 + (s[i] - '0' ) ; } return ans ; } char* my_itoa( char ans[] , int x ) { int i ; ans[ 5 ] = 'int my_atoi( char s[] ) { int ans = 0 , i ; for( i = 0 ; s[i] != '\0' && s[i] >= '0' && s[i] <= '9' ; i++ ) { ans = ans * 10 + (s[i] - '0' ) ; } return ans ; } char* my_itoa( char ans[] , int x ) { int i ; ans[ 5 ] = '\0' ; for( i = 0 ; i < 5 ; i++ ) { int d = x % 10 ; ans[ 4 - i ] = '0' + d ; x /= 10 ; } return ans ; }' ; for( i = 0 ; i < 5 ; i++ ) { int d = x % 10 ; ans[ 4 - i ] = '0' + d ; x /= 10 ; } return ans ; }
課題
my_atoi() については、 (a) 8進数・2進数・16進数で動くように、 (b) より一般的にN進数で動くように、 (c) 小数点を含む値が処理できるように (d) C言語の定数のように先頭の"0x(16進数)","0(8進数)"で 自動的に基数を判別するように、といった改良のいずれかを行うこと。 また、my_itoa については、同様に、(e) 8,2,16進数、(f) N進数、(g) 浮動小数 といったテーマより、それぞれ1つづつを選んで取り組むこととした。
レポートには、プログラム・説明・動作検証(異常動作の検証)・異常動作についての考察 を記載することとする。
課題に取り組んでもらっている中で、関数のプロトタイプ宣言を説明を行う。
2010年5月16日(第164回)
- メールテーマ:我が家のオリジナル料理
- 沖縄高専のひがさんリミックス音楽をご紹介
- 英語の囃子 第35回 吉田三先生、電子情報5年丸山さん
英語 でかぐや姫を読んでみよう
eng100516.mp3
- ブラックサンダーにあうものを探そう! 第3弾
とび辛スパイス、塩、タルタルソース、納豆、からし、フィッシュソーセージ
このあと、やまもと君が試食をしました。
インターンシップ(夏季実習)依頼中
4年担任として、インターンシップの受入れを企業にお願いする作業を、連日行っています。 現在、20名分(4EI=38名)の企業から、OKもしくはたぶんOKといった内諾をもらえている。 豊橋や長岡のオープンキャンパスの申し込みもたぶんOKとなるだろうし、 検討中のところも含めれば、山場を越えたあたりかな。
企業を選ぶにあたって、楽そうな雰囲気で選んでいる人もいるけど、 報告会だったり、実際に就職の際には、楽なインターンシップを選んだ人は、 ちょっと後悔するんじゃないかと思うのだが….
どちらにしろ、数社からはお断りだったり、寮無し自己負担だったりで、 受入れを再検討してもらっている人も出てきている。まだまだ調整は大変だけど、 慣れない電話仕事をもう少しがんばろう。
薬物乱用防止講習会
近年、大学生による大麻などによる逮捕といった事例として、 身近なところでも薬物乱用が広がっており、数年前より全4年を対象に 「薬物乱用防止講習会」が行われている。
今日は、保護師の方が、取り扱った人の事例を交えながら、薬物乱用の 怖さを語ってくれた。 当初、PRビデオの上映を予定していたが、事前動作確認はされていたものの、 年期の入った古いビデオであるためか、急に動かなくなってしまった。 このため、お話し主体の講演となった。
# おかげで話の繋がりが分かりにくかったかな…
隠蔽化(Complex)の解説+演算子オーバライド
例年どおり、複素数のクラスを直交座標系で記述して、 隠蔽化を考慮してプログラムを書けば、後でデータ構造を極座標系に変更しても 利用者側のプログラムは一切変更不要…というネタで解説する。
今年度は、すでに受講者が電子情報のみになっているので、 例年説明をしていない演算子オーバーライドや"cout<<…<<endl" といった、iostream系の紹介(詳しい解説はしない)を行った。
途中にて、Complex::add( Complex& ) といった宣言で、「引数を参照宣言するのはなぜ?」 といった質問がでる。例で示した複素数といったオブジェクトであれば、関数呼び出しで コピーを伴う「値渡し」でも実行効率は悪くならないが、巨大オブジェクトではコピーを避けるために 「参照渡し」が一般的であるため、実務で見かける機会の多い「参照渡し記述」をしていると説明する。
創造工学:グループ決め&具体化
先週のアイデア草稿について、 全体の講評をした後、 アイデアの具体化に向けたグループ討議をしてもらう。
アイデア草稿では、具体的な方法については考えていなかったが、 その実装方法の問題点ということで、 先週紹介した電子ブロックのネタを実際に使った際に、 具体的にどんな機能が必要だったりその実装の方法を検討した内容を 説明し、同様の検討を時間内に行った。
しかしながら、グループ討議や後半の実装方法検討の際に、 Webで調べて画面を見ているだけで、何のメモも取らない人が多い。 インターンシップでも上司に質問をする際にも、メモを取らずに 質問をしたら相手がどう思うのか?、具体的な資料を作成するときに、 何をキーワードに文書を作るのかも記録が残っていないと… といった注意点を説明する。
浮動小数点、文字、文字列、真偽値
浮動小数点型(float,double)の説明として、小数点のあるN進数の説明の後、0.1が2進数となると無限小数になったり、それにともなうトラブルを紹介。 暗黙の型変換によるトラブルの説明や型キャストの説明を行いながら、浮動小数点に伴うトラブルの事例を紹介する。
次に、ASCIIコード表や文字コードの値について説明し、特殊文字'\n','\r','\f','\a','\t' や'\8進数' , '\x16進数'といった表記法などの説明と、ASCZ文字列の説明。
2010年5月9日(第163回)
誠市、ご縁市開催中でした
- メールテーマ:母の日の贈り物
- 英語の囃子 第34回 吉田三先生、電子情報5年丸山さん
英語 で浦島太郎を読んでみよう
eng100509.mp3
- ブラックサンダーにあうものを探そう!好評(?)につき、第2弾
誠市、ご縁市に出ているものの中から たこ焼き、玄米コロッケ、五平餅、パンなど・・・