zillionプロジェクト開発ブログ C++の落とし穴にはまらないための講座① 忍者ブログ

×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

僕の後輩に、C++を教えてくれと言われて教えたことがあります。
教えたとき、参考書を見て、わからないところを教えていたのですが、参考書の記述上わかりにくいところが多々あったのです。
初心者だから気づくこともあるんですね。
そんなときのための、講座、というか、ここには気を付けて覚えろよ?ってものです。
ではでは、始めましょう。

※実際にあった話をアレンジしています。
後輩A,後輩B,僕が登場します。

(´Д`),<-後輩A
( ゚д゚ )<-後輩B
" 'ζ_,`"<-僕(うざい顔してますねw)
[1]制御文の落とし穴?

(´Д`) 「なんで、while(true){~~}って無限ループになるんですか?」

" 'ζ_,`"「そりゃあ、trueだからだろう」

( ゚д゚ )「でも、本には、while(条件式){~~~}って書いてありますよ?trueって条件式じゃなくて値じゃないんですか?」

" 'ζ_,`"「意味的に考えてみよう。trueって日本語訳で真、falseって日本語訳で偽。つまり、trueというのは、正しい。falseというのは正しくない。という意味だね。条件式は、正しいときはtrue、間違っているときはfalseを返すと考えたらわかるかな?」

( ゚д゚ )「ってことは、whileって()の中身がtrueなのか、falseなのかを見ているんですね。」

(´Д`)「本の条件式って記述だけではわかりにくいな。多くの解説サイトでも、if(条件式){~~~}とか、while(条件式){~~~}ってなってますね。」

" 'ζ_,`"「そうだね。注意しなきゃいけないね。当たり前の話だと思っている人も多いだろうからね。」

( ゚д゚ )「ということは、if(true){~~~}なら、かっこの中が絶対に実行され、while(false){~~~}なら、かっこの中が絶対に実行されないんですね。」

" 'ζ_,`"「そうだよ。だけど、それって条件分岐とも、ループとも言わないんじゃないか?」

( ゚д゚ )「・・・・」

[2]三項演算子って?

( ゚д゚ )「なんか、プログラム中に?とかなんか出てきてるんですけど・・・」

" 'ζ_,`"「あの、それだけじゃ俺が?なんだけど・・・」

(´Д`)「あ~、なんか俺の本には書いてあったよ。三項演算子でしょ?」

" 'ζ_,`"「そういうことか。確かに、解説書によっては乗ってなかったりよくある話だよな。でも、お前ら日頃俺のソース見てるから、よく見てたはずだろ?」

( ゚д゚ )「見ても、理解できない。コメント挟めし。」

" 'ζ_,`"「・・・ごめんなさい」

( ゚д゚ )「んで、結局?なんなの、このサンコウエンザンシって?しっかり説明してもらえる?」

" 'ζ_,`"「は、はい。わかりました。(汗)」
「三項演算子は、?演算子と、:演算子を利用するよ。 真か偽(条件式) ?  結果A:結果Bという文法を使うよ。条件式側が、真ならば結果A,偽ならば結果Bを返すんだ。
つまり、そうだなぁ、ifの代わりみたいな使われ方だね。
だけど、読みにくくなるから、使わなくてもいいよ」

(´Д`)「読みにくくなるのに使うなんて優しくないですね。ドS~~」

" 'ζ_,`"「教えてる時点で、優しいじゃないか。」

( ゚д゚ )「先輩として当たり前でしょ~」

" 'ζ_,`"「はいはい、すいませんね」

[3]メモリリーク(・∀・)
" 'ζ_,`"「さて、君らもずいぶん発達したね。」

( ゚д゚ )「ずいぶん、時間割きましたからね。おかげで試験壊滅的でしたけど、どうしてくれるんですか?」

(´Д`)「そんなことこの人に言っても仕方ないぞ、お前とは違ってalways壊滅的なんだから。」

" 'ζ_,`"「悪かったな。んで、なんか聞きたいことがあると言ったね。」

( ゚д゚ )「メモリリークってどんな時に起きますか?」

" 'ζ_,`"「動的に確保したメモリを解放できないときだね。」

(´Д`)「そのほかには?」

" 'ζ_,`"「ん?メモリリークの定義がそれなんだからそれしかないんだよ。」

( ゚д゚ )「でも、確保したメモリはOSが後処理してくれるんじゃないんですか?」

" 'ζ_,`"「動的確保した領域は、必ずdeleteしないとダメだよ。クセつけとくといいよ。」

( ゚д゚ )「ちゃんとdeleteしてますよ。ナメるなし」

" 'ζ_,`"「ん~?delete二回呼び出したりとかしてない?」

( ゚д゚ )「え、ダメなの?deleteは多い分には大丈夫かなって思って・・・」

" 'ζ_,`"「まあ、参考書とかには必ずdeleteしましょうとしか書かれてないもんね。」

(´Д`)「死んだやつをもう一回殺すことはできないもんね。」

" 'ζ_,`"「そうだね。ほかにもいろいろメモリリークを起こす原因はあるはずだよ。チェックしようね。だけど、まず基本はどの変数がメモリリークしているのか探ることが最初だね。」

( ゚д゚ )「でも、ほっといてもエラー出ないしいいか。」

" 'ζ_,`"「プログラムが大きくなればなるほど、探すのが大変になってしまうよ。今のうちに捜しておくべきだな。」

(´Д`)「ざまぁ」

( ゚д゚ )「いいし、直すし」

" 'ζ_,`"「メモリリークは探すの大変だぞ~。俺は帰るから頑張ってな」

( ゚д゚ )「なあ、二人でdeleteしたらメモリリーク起こすかな?」

(´Д`)「何を?」

( ゚д゚ )「あいつ・・・」

以上、次回はリファレンスを読み解くコツについて話した時の話があります~

リファレンス読む力は非常に重要なので、是非読んでほしいです。

それでは、読んでくださりありがとうございました。




拍手[3回]

PR

◎ Post your Comment
Name
Title
E-mail
URL
Comment
Pass   Vodafone絵文字 i-mode絵文字 Ezweb絵文字
◎ おもろい!

はじめまして、こんばんは。
プログラミングを昔、かじったことがありまして。なついし、おもしろいし。またやろうかな…。
あ、そうそう。作ってるゲームってどんなゲームなんですか?FPSとかどっかに書いてあったような気がしたんですが。
オンラインでやるとなると色々大変でしょうけど頑張ってくださいね。応援してます。
ではでは。

むらたりょう 2010/06/29(Tuesday)21:32:02 Edit
◎ この記事へのトラックバック
Trackback URL
◎ カウンター
◎ カレンダー
06 2017/07 08
S M T W T F S
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31
◎ 最新CM
[10/24 名無しの権兵衛]
[08/30 名無しの権兵衛]
[08/14 no name no future]
[08/05 ゲームサークルEaSt]
[07/28 リオウ]
◎ プロフィール
HN:
kyasbal
年齢:
22
性別:
男性
誕生日:
1994/09/22
職業:
人間
趣味:
趣味ねぇ~~う~ん・・・
◎ ブログ内検索
◎ バーコード
◎ アクセス解析
◎ フリーエリア
◎ フリーエリア
Script: Ninja Blog 
Design by: タイムカプセル
忍者ブログ 
[PR]