<?xml version="1.0" encoding="utf-8" ?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
<channel>
<title>プログラミングの道も一歩から</title>
<link>https://ameblo.jp/0428takasun/</link>
<atom:link href="https://rssblog.ameba.jp/0428takasun/rss20.xml" rel="self" type="application/rss+xml" />
<atom:link rel="hub" href="http://pubsubhubbub.appspot.com" />
<description>エセ情報工のプログラミング日記。C++を中心に勉強しています。</description>
<language>ja</language>
<item>
<title>夏だ！</title>
<description>
<![CDATA[ 備忘録も兼ねて<br><br>授業でブートストラップを用いたHTMLを習いまして、<br>いろいろと調べているうちにホームページを作りたいなというところに達しました。<br><br>身内だけで楽しむのもアレだし、どうせ作るなら金になるものがいいというところまで達しています。<br><br><br>そこで、どんなページを作ろうかと考えた時に、誰もが楽しめるページだなと。<br><br>個人的に大喜利が好きなんですけど、これって人を選ぶじゃないですか。<br>有名なところでボケてがありますしね。なんか発想がパクり。<br>それに誰しもが楽しめるわけではない。<br><br><br>誰もが楽しめるっていうことで、「人間の習性」に着目します。はい。<br>人間の生物的なところで考えていくと、需要がなくならないような気がしたんです。<br><br>例えば性行為とか極端な例ですが、生物学的には誰しもが好むことですよね（何言ってんだ<br>エロいじゃないですか、人って。※個人差あります<br><br>かといってアダルトサイトって男性にしか需要ないんですよね。不思議ですよね。<br><br><br>とまぁ、そんなアホみたいなこと考えて過ごしています最近。<br><br><br>誰もが楽しめるサイトっていうかアプリっていうかを探してみると身近にありました。<br>Twitter Facebook instagram<br><br>なんとなく法則性が見えてきました。そうです。<br>自分のことを話すってのが誰しもが好きなところなんです！！<br><br>Facebookとか、見ているとしょうもないですよね？（何言ってんだpart2<br>Twitterもinstagramもしょうもない。<br><br>でも、需要がなくならないのは、みんな自分のことをアピールしたくてたまらないんですよね。<br><br><br>そこに注目して私が考えたサイトがコレです！！<br><br>「tellmyself(仮)」<br>http://tksn0.web.fc2.com/index.html<br><br><br>instagramみたいなオシャレな造語を作ろうとして失敗した例がこちらです。<br>でも語呂はいいですよね。テルマイセルフ。うん。<br><br>概要としては自分のことを語るホームページです。<br>まだ未完成です。<br><br>お題「夏祭り」<br>とかで、お題に即した出来事を自分語りしてもらうって雰囲気かな。<br><br>正直、公開するまで時間と労力がかかると思うんですが、<br>自分よりスキルのある人がこのアイデア持ってちゃって公開されると非常に困ります(笑)<br><br>自分のモチベを上げる意味でも積極的に晒あげていきますけどね。<br><br>んで、まだこれからやるべきことはたくさんあり・・・<br>ページ構成でまだまだCSSやらJavascriptやらBootstrapを学ぶ必要がありますね。<br><br>ユーザー投稿型にしたいので、データベースも必要です。<br>dotinstallでmysqlについて学びたいとも思っています。<br><br>あとは、検索機能とか、PV数が多い話をトップに持って来たり、<br>報酬なんかも必要かな。考えるとキリがないね。<br><br>あと、お金を稼ぐ意味ではアフェリエイトにも挑戦しようかなと。<br>人気の話をまとめてYouTubeにアップするのもアリ。<br>Youtuberじゃないけど、そういう方法でお金を稼ぐこともできますね。<br><br>すごい人間味のあふれた記事になってしまいました。今日はこの辺にします。。<br><br>ちなみに自分を語ることって性行為と同等の快楽が得られるらしいですよ！<br>結局、みんなエロいじゃねぇか！
]]>
</description>
<link>https://ameblo.jp/0428takasun/entry-12185116128.html</link>
<pubDate>Thu, 28 Jul 2016 23:07:45 +0900</pubDate>
</item>
<item>
<title>Ｃ＋＋勉強８日目　コンストラクタと静的メンバ</title>
<description>
<![CDATA[ <p>いつも３日坊主の私ですが、珍しく８回目の更新になります。</p><p>独習Ｃ＋＋、やさしいＣ＋＋、ウェブサイトと、</p><p>いろいろ飛んで勉強しているので、話題が前後したりします。</p><p>&nbsp;</p><p>今回はコンストラクタと静的メンバの仕組みについて。</p><p>&nbsp;</p><p>**コンストラクタ</p><p>オブジェクトの作成時に自動的に宣言されるもの。</p><p>返り値をもたないのも特徴の１つでしょう。</p><p>&nbsp;</p><p>**静的メンバ</p><p>staticですね。グローバル関数扱いできるというやつでした。</p><p>ローカル関数と違って、そのクラス自体に紐づけられるので、</p><p>値がリセットされたり、オブジェクトによって変わることがない共通のものって感じですかね。</p><p>&nbsp;</p><p>&nbsp;</p><p>今回のプログラムは、</p><p>オブジェクト作成時にコンストラクタが呼び出されて初期化</p><p>⇒ setCarで値をセット（ナンバーとガソリン量）</p><p>⇒ staticでsumをもつ。オブジェクトができる毎に増えていく</p><p>&nbsp;</p><p>クラス類の説明って車を例にすることが多いですよね。</p><p>分かりやすいからかね。</p><p>&nbsp;</p><p>&nbsp;</p><blockquote><p>#include &lt;iostream&gt;</p><p>using namespace std;</p><p>class Car{<br>private:<br>&nbsp;&nbsp; &nbsp;int num;<br>&nbsp;&nbsp; &nbsp;double gas;<br>public:<br>&nbsp;&nbsp; &nbsp;static int sum;<br>&nbsp;&nbsp; &nbsp;Car();<br>&nbsp;&nbsp; &nbsp;void setCar(int n, double g);<br>&nbsp;&nbsp; &nbsp;void show();<br>&nbsp;&nbsp; &nbsp;static void showSum();<br>};</p><p>Car::Car()<br>{<br>&nbsp;&nbsp; &nbsp;num=0;<br>&nbsp;&nbsp; &nbsp;gas=0.0;<br>&nbsp;&nbsp; &nbsp;sum++;<br>&nbsp;&nbsp; &nbsp;cout &lt;&lt; "車を作成しました。" &lt;&lt; endl;<br>}</p><p>void Car::setCar(int n, double g)<br>{<br>&nbsp;&nbsp; &nbsp;num=n;<br>&nbsp;&nbsp; &nbsp;gas=g;<br>&nbsp;&nbsp; &nbsp;cout &lt;&lt; "ナンバーを" &lt;&lt; num &lt;&lt; "に、ガソリン量を" &lt;&lt; gas &lt;&lt; "にしました。" &lt;&lt; endl;<br>}</p><p>void Car::showSum()<br>{<br>&nbsp;&nbsp; &nbsp;cout &lt;&lt; "車は全部で" &lt;&lt; sum &lt;&lt; "台あります。" &lt;&lt; endl;<br>}</p><p>void Car::show()<br>{<br>&nbsp;&nbsp; &nbsp;cout &lt;&lt; "車のナンバーは" &lt;&lt; num &lt;&lt; "です。" &lt;&lt; endl;<br>&nbsp;&nbsp; &nbsp;cout &lt;&lt; "ガソリン量は" &lt;&lt; gas &lt;&lt; "です。" &lt;&lt; endl;<br>}</p><p>int Car::sum=0;</p><p>int main()<br>{<br>&nbsp;&nbsp; &nbsp;Car::showSum();</p><p>&nbsp;&nbsp; &nbsp;Car car1;<br>&nbsp;&nbsp; &nbsp;car1.setCar(1234,20.5);</p><p>&nbsp;&nbsp; &nbsp;Car::showSum();</p><p>&nbsp;&nbsp; &nbsp;Car car2;<br>&nbsp;&nbsp; &nbsp;car2.setCar(4567,30.5);</p><p>&nbsp;&nbsp; &nbsp;Car::showSum();</p><p>&nbsp;&nbsp; &nbsp;return 0;<br>}</p></blockquote><p>&nbsp;</p><p>実行結果は、車の台数が0,1,2と増えていきます。</p><p>ただstatic関数はクラスに紐づけられているため、</p><p>特定のオブジェクトに関連したメンバにアクセスすることはできませーん。</p><p>&nbsp;</p><p>&nbsp;</p><p>はい。以上！</p><p>卒論発表練習やんねーと。</p>
]]>
</description>
<link>https://ameblo.jp/0428takasun/entry-12130689227.html</link>
<pubDate>Sun, 21 Feb 2016 00:10:00 +0900</pubDate>
</item>
<item>
<title>Ｃ＋＋勉強７日目　文字列とオーバーロード</title>
<description>
<![CDATA[ <p>更新が１日おきになってるな・・・。</p><p>勉強は毎日してるんだけどね。</p><p>ま、そんな言い訳はよくて、苦手分野であることが発覚した文字列行きましょう。今日は。</p><p>&nbsp;</p><p>「独習Ｃ＋＋」の第１章理解度チェックにもあった、</p><p>関数のオーバーロード兼文字列を逆順に返す関数を作成します。</p><p>&nbsp;</p><blockquote><p>char s1[80], s2[80];</p><p>strcpy(s1,"hello");</p><p>rev_str(s1,s2); // 逆順にした文字列をs2に格納</p><p>rev_str(s1); //逆順にした文字列をs1に返す</p></blockquote><p>&nbsp;</p><p>これが前提条件どす。</p><p>もう分からなくなって答えみちゃった(笑)</p><p>終了するために'\0'とNULL文字を加えるところで詰んでました。</p><p>この１文ないだけで、出力が↓こうなって恐怖でした。</p><p><a href="http://stat.ameba.jp/user_images/20160219/23/0428takasun/90/92/p/o0692051213571760654.png"><img width="420" height="311" alt="" src="https://stat.ameba.jp/user_images/20160219/23/0428takasun/90/92/p/o0692051213571760654.png"></a></p><p>&nbsp;</p><blockquote><p>#include &lt;iostream&gt;</p><p>using namespace std;</p><p>void rev_str(char *s1);<br>void rev_str(char *s1, char *s2);</p><p>int main()<br>{<br>&nbsp;&nbsp; &nbsp;char s1[80], s2[80];</p><p>&nbsp;&nbsp; &nbsp;strcpy(s1,"hello world");</p><p>&nbsp;&nbsp; &nbsp;rev_str(s1);<br>&nbsp;&nbsp; &nbsp;rev_str(s1,s2);</p><p>&nbsp;&nbsp; &nbsp;return 0;<br>}</p><p>void rev_str(char *s1)<br>{<br>&nbsp;&nbsp; &nbsp;char tmp[80];<br>&nbsp;&nbsp; &nbsp;int i,j;<br>&nbsp;&nbsp; &nbsp;for(i=strlen(s1)-1,j=0;i&gt;=0;i--,j++){<br>&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;tmp[j]=s1[i];<br>&nbsp;&nbsp; &nbsp;}<br>&nbsp;&nbsp; &nbsp;tmp[j]='\0';</p><p>&nbsp;&nbsp; &nbsp;cout &lt;&lt; tmp &lt;&lt; endl;<br>}</p><p>void rev_str(char *s1, char *s2)<br>{<br>&nbsp;&nbsp; &nbsp;int i,j;<br>&nbsp;&nbsp; &nbsp;for(i=strlen(s1)-1, j=0; i&gt;=0; i--, j++){<br>&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;s2[j]=s1[i];<br>&nbsp;&nbsp; &nbsp;}<br>&nbsp;&nbsp; &nbsp;s2[j]='\0';<br>&nbsp;&nbsp; &nbsp;<br>&nbsp;&nbsp; &nbsp;cout &lt;&lt; s2 &lt;&lt; endl;</p><p>}</p></blockquote><p>&nbsp;</p><p>文字列の復習にも時間を費やさなければ。</p><p>はい。以上！</p>
]]>
</description>
<link>https://ameblo.jp/0428takasun/entry-12130665954.html</link>
<pubDate>Sat, 20 Feb 2016 00:04:46 +0900</pubDate>
</item>
<item>
<title>Ｃ＋＋勉強6日目　クラス</title>
<description>
<![CDATA[ <p>iOSアプリ開発をしてる友達２人組がいるんですが、</p><p>彼らがアプリを作る理由は「モテたいから」だそうです。</p><p>&nbsp;</p><p>なんか、かっこいいなと思ってしまったのは置いといて今日はクラスです。</p><p>&nbsp;</p><p>オブジェクト指向言語ならではの機能じゃないでしょうか。</p><p>「やさしいＣ＋＋」の１２章練習問題からピックアップしてきました。</p><p>&nbsp;</p><p>x,y座標を指定するプログラムです。</p><p>クラス（設計図）では、</p><p>座標x,y　・・・　ともに0～10で設定し、それを超える場合は0に</p><p>ほかのメンバ関数では、座標の設定（set）と、座標の獲得(get)です。</p><p>&nbsp;</p><blockquote><p>class Point{<br>private:<br>&nbsp;&nbsp; &nbsp;int x;<br>&nbsp;&nbsp; &nbsp;int y;<br>public:<br>&nbsp;&nbsp; &nbsp;void setX(int a);<br>&nbsp;&nbsp; &nbsp;void setY(int b);<br>&nbsp;&nbsp; &nbsp;int getX(){return x;}<br>&nbsp;&nbsp; &nbsp;int getY(){return y;}<br>};</p><p>void Point::setX(int a)<br>{<br>&nbsp;&nbsp; &nbsp;if(a&gt;=0 &amp;&amp; a&lt;=10){<br>&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;x=a;<br>&nbsp;&nbsp; &nbsp;}else{<br>&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;x=0;<br>&nbsp;&nbsp; &nbsp;}<br>}</p><p>void Point::setY(int b)<br>{<br>&nbsp;&nbsp; &nbsp;if(b&gt;=0 &amp;&amp; b&lt;=10)<br>&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;y=b;<br>&nbsp;&nbsp; &nbsp;else<br>&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;y=0;<br>}</p></blockquote><p>&nbsp;</p><p>private関数に座標を指定することで、外部からの下手な操作の影響を受けないようにカプセル化しています。（オブジェクト指向ならでは？？）</p><p>そのため、privateをいじるには、同じクラスに指定されているメンバ関数を経由する必要があります。</p><p>&nbsp;</p><p>次にメイン関数です。</p><blockquote><p>int main()<br>{<br>&nbsp;&nbsp; &nbsp;Point p;<br>&nbsp;&nbsp; &nbsp;int x, y;</p><p>&nbsp;&nbsp; &nbsp;cout &lt;&lt; "X座標を入力してください。" &lt;&lt; endl;<br>&nbsp;&nbsp; &nbsp;cin &gt;&gt; x;<br>&nbsp;&nbsp; &nbsp;p.setX(x);</p><p>&nbsp;&nbsp; &nbsp;cout &lt;&lt; "Y座標を入力してください。" &lt;&lt; endl;<br>&nbsp;&nbsp; &nbsp;cin &gt;&gt; y;<br>&nbsp;&nbsp; &nbsp;p.setY(y);</p><p>&nbsp;&nbsp; &nbsp;cout &lt;&lt; "座標は(" &lt;&lt; p.getX() &lt;&lt; "," &lt;&lt; p.getY() &lt;&lt; ")です。" &lt;&lt; endl;</p><p><br>&nbsp;&nbsp; &nbsp;return 0;<br>}</p></blockquote><p>set関数でprivateにアクセスして、</p><p>get関数でprivateから値を拾ってきています。</p><p>&nbsp;</p><p>&nbsp;</p><p>個人的に、publicと比較して手間がすごいなと思ったんですが。</p><p>特に、cin&gt;&gt;x;からのp.set(x);これ。</p><p>cin&gt;&gt;から直接渡したいのにそれはできないのか。</p><p>まぁ、この手間を覆すほどの見返りはあると思いますが、まだ腑に落ちない部分です。</p><p>&nbsp;</p><p>今後、クラスを多様していけば見方が変わるのだろうか。</p><p>&nbsp;</p><p>はい。以上です。</p>
]]>
</description>
<link>https://ameblo.jp/0428takasun/entry-12129617093.html</link>
<pubDate>Wed, 17 Feb 2016 01:24:14 +0900</pubDate>
</item>
<item>
<title>Ｃ＋＋勉強５日目　メモリの確保と解放</title>
<description>
<![CDATA[ <p><br>プログラマたるものメモリの扱いには注意しろ　とか、<br>メモリ考えずにプログラミングしてるやつ見ると腹立つ　とか、<br>なんか、周りでよくそんなことを気にしますが・・・。</p><p>&nbsp;</p><p>あんま気にしたことないんだよなぁ。</p><p>でも大型のプログラムになってくると避けては通れない道です。</p><p>研究でディープニューラルネットワークを扱っているんですが、</p><p>メモリ確保がうまくいかないと「セグメント例外」とかいう悪魔のメッセージを吐き出しますね。</p><p>&nbsp;</p><p>じゃあ早速やってみます。</p><p>簡単に、人数分を聞いてテストの点数を入力し、出力するだけのプログラムです。</p><p>メモリの確保はnewを、解放はdeleteを使います。</p><p>&nbsp;</p><blockquote><p>int main(void)<br>{<br>&nbsp;&nbsp; &nbsp;int num;<br>&nbsp;&nbsp; &nbsp;int* pT;</p><p>&nbsp;&nbsp; &nbsp;cout &lt;&lt; "何人のテストの点数を入力しますか？" &lt;&lt; endl;<br>&nbsp;&nbsp; &nbsp;cin &gt;&gt; num;</p><p>&nbsp;&nbsp; &nbsp;pT=new int[num];</p><p>&nbsp;&nbsp; &nbsp;cout &lt;&lt; "人数分の点数を入力してください。" &lt;&lt; endl;</p><p>&nbsp;&nbsp; &nbsp;for(int i=0;i&lt;num;i++){<br>&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;cin &gt;&gt; pT[i];<br>&nbsp;&nbsp; &nbsp;}</p><p>&nbsp;&nbsp; &nbsp;for(int j=0;j&lt;num;j++){<br>&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;cout &lt;&lt; j+1 &lt;&lt; "番目の人の点数は" &lt;&lt; pT[j] &lt;&lt; "です。" &lt;&lt; endl;<br>&nbsp;&nbsp; &nbsp;}</p><p>&nbsp;&nbsp; &nbsp;delete[] pT;</p><p>&nbsp;&nbsp; &nbsp;return 0;</p><p>}</p></blockquote><p>&nbsp;</p><p>int* pTでポインタを作成し、</p><p>pT=new int[num]</p><p>でnum分のメモリを配列で確保します。</p><p>あとは配列の扱いですね。</p><p>&nbsp;</p><p>最後には</p><p>delete[] pT</p><p>と解放するのを忘れないようにしましょう。</p><p>はい。以上です。</p>
]]>
</description>
<link>https://ameblo.jp/0428takasun/entry-12128898009.html</link>
<pubDate>Mon, 15 Feb 2016 00:39:31 +0900</pubDate>
</item>
<item>
<title>Ｃ＋＋勉強４日目　グローバル変数とローカル変数</title>
<description>
<![CDATA[ <p>卒論のスライド作りとバイトな一日でした。<br>早く卒論終えて１日中Ｃ＋＋の勉強してたいなと思う今日このころです。<br>ま、卒論終わったら遊ぶけどな！！！</p><p>&nbsp;</p><p><br>ってことで、今日はグローバル変数とローカル変数です。</p><p><br>簡単に言えば、関数の中で宣言するか、外で宣言するかの違いです。</p><p>&nbsp;</p><p>外で宣言した場合は、どの関数内でも使えます（グローバル変数）</p><p>中で宣言した場合は、その関数内でしか使えません（ローカル変数）</p><p>&nbsp;</p><p>グローバル変数とローカル変数を同じ変数名にして宣言し、</p><p>何かしらの操作をした場合どちらが優先されるのでしょうか。</p><p>&nbsp;</p><p>関数内ではローカル変数に上書き（？）されるようです。</p><p>そこでローカル変数を扱いたい場合は「::」というグローバル解決演算子を使用します。</p><p>&nbsp;</p><p>そこでひとつ検証してみました。</p><p>自分の中でいまいち腑に落ちていなかった「a++」と「++a」の解決もできました。</p><p>&nbsp;</p><blockquote><p>#include &lt;iostream&gt;</p><p>using namespace std;</p><p>int a=2;</p><p>&nbsp;</p><p>int main(void)<br>{<br>&nbsp;&nbsp; &nbsp;int a=4;</p><p>&nbsp;&nbsp; &nbsp;cout &lt;&lt; ++a &lt;&lt; endl;<br>&nbsp;&nbsp; &nbsp;cout &lt;&lt; ::a++ &lt;&lt; endl;</p><p>&nbsp;&nbsp; &nbsp;return 0;</p><p>}</p></blockquote><p>&nbsp;</p><p>実行結果は、5と2が出てきます。</p><p>前置インクリメント「++a」は1増やしてからcoutする</p><p>後置インクリメント「a++」はcoutしてから1増やす</p><p>という違いがあります。</p><p>&nbsp;</p><p>そのため、::a++は2と表示されたわけですね～。</p><p>&nbsp;</p><p>&nbsp;</p><p>Ｃ言語で理解してたつもりでしたけど、意外と盲点？な気がします(笑)</p><p>しませんか。はい。以上です。</p>
]]>
</description>
<link>https://ameblo.jp/0428takasun/entry-12128891548.html</link>
<pubDate>Mon, 15 Feb 2016 00:16:56 +0900</pubDate>
</item>
<item>
<title>Ｃ＋＋勉強３日目　ポインタ</title>
<description>
<![CDATA[ <p>「やさしいＣ＋＋」も９章まで来ました。<br>ここからが難しいところですが・・・。</p><p><br>今回はポインタについて勉強していきます。</p><p>簡単に言えば、アドレスを直接扱うものとして考えられたのがポインタですね。</p><p>&nbsp;</p><p>関数を使うときには、値渡しと参照渡しとがありますが、気を付けなければなりません。</p><p>&nbsp;</p><p>試しに数値を入れ替えるswap関数について。<br> </p><blockquote><p>void swap(int a,int b)</p><p>{</p><p>int tmp=a;</p><p>a=b;</p><p>b=tmp;</p><p>}</p></blockquote><p>はい。この関数は一時的な変数tmpを用意してint型変数aとbの数値を交換するものです。</p><p>しかし、このような値渡しでは、aとbの数値交換はこの関数でのみ終結してしまい、</p><p>呼び出したとしても値が変更しないという問題が生じます。</p><p>&nbsp;</p><p>ここでは、ポインタを使ってアドレス操作することにより、</p><p>数値を交換する参照渡しをする必要があります。</p><p>&nbsp;</p><blockquote><p>void swap(int* pA, int* pB)</p><p>{</p><p>int tmp=*pA;</p><p>*pA=*pB;</p><p>*pB=tmp;</p><p>}</p></blockquote><p>&nbsp;</p><p>ちなみにmain関数では、</p><p>&nbsp;</p><blockquote><p>swap(&amp;a, &amp;b);</p></blockquote><p>&nbsp;</p><p>というようにアドレスを渡します。</p><p>ポインタの基本なので、応用がきくともっと便利さが伝わってくるのかなと期待しています。。</p><p>&nbsp;</p><p>全体の関係性は、</p><p>a　と *pA</p><p>&amp;a　と　pA</p><p>のようになっています。</p><p>&nbsp;</p><p>ポインタはある数値のアドレスを扱うことができるってことですね～</p><p>&nbsp;</p><p>&nbsp;</p><p>はい。以上！</p>
]]>
</description>
<link>https://ameblo.jp/0428takasun/entry-12128453735.html</link>
<pubDate>Sat, 13 Feb 2016 23:11:03 +0900</pubDate>
</item>
<item>
<title>Ｃ＋＋勉強2日目　キュー</title>
<description>
<![CDATA[ <p>バイト先から「独習Ｃ＋＋」を借りてきました。</p><p>「やさしいＣ＋＋」で学んだ内容を強化するために使っていこうと思っています。</p><p>&nbsp;</p><p>&nbsp;</p><p>今回は、演習問題からキューについて見ていきます。</p><p>数年前に学校の課題でやった覚えがあります。</p><p>当時は、頭のいい友達に呆れられながら教えてもらった覚えがあります。</p><p>&nbsp;</p><p>&nbsp;</p><p>うろ覚えでしたが、構造を考えながら書いてみたら、</p><p>案外すんなり書けました（汚いプログラムが）。</p><p>&nbsp;</p><blockquote><p>#include &lt;iostream&gt;</p><p>using namespace std;</p><p>#define N 100</p><p>class queue{<br>&nbsp;&nbsp; &nbsp;int q[N];<br>&nbsp;&nbsp; &nbsp;int head,tail;<br>public:<br>&nbsp;&nbsp; &nbsp;void init();<br>&nbsp;&nbsp; &nbsp;void enqueue(int num);<br>&nbsp;&nbsp; &nbsp;int dequeue();<br>};</p><p>void queue::init()<br>{<br>&nbsp;&nbsp; &nbsp;head=0;<br>&nbsp;&nbsp; &nbsp;tail=0;<br>&nbsp;&nbsp; &nbsp;for(int i=0;i&lt;N;i++)<br>&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;q[i]=0;<br>}</p><p>void queue::enqueue(int num)<br>{<br>&nbsp;&nbsp; &nbsp;if(tail==N-1)<br>&nbsp;&nbsp; &nbsp;{<br>&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;cout &lt;&lt; "キューはいっぱいです。" &lt;&lt; endl;<br>&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return;<br>&nbsp;&nbsp; &nbsp;}<br>&nbsp;&nbsp; &nbsp;q[tail]=num;<br>&nbsp;&nbsp; &nbsp;tail++;<br>}</p><p>int queue::dequeue()<br>{<br>&nbsp;&nbsp; &nbsp;if(tail==head)<br>&nbsp;&nbsp; &nbsp;{<br>&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;cout &lt;&lt; "キューは空です。" &lt;&lt; endl;<br>&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return 0;<br>&nbsp;&nbsp; &nbsp;}<br>&nbsp;&nbsp; &nbsp;tail--;<br>&nbsp;&nbsp; &nbsp;<br>&nbsp;&nbsp; &nbsp;int a;<br>&nbsp;&nbsp; &nbsp;a=q[head];<br>&nbsp;&nbsp; &nbsp;<br>&nbsp;&nbsp; &nbsp;for(int i=1;i&lt;=tail;i++){<br>&nbsp;&nbsp; &nbsp;q[i-1]=q[i];<br>&nbsp;&nbsp; &nbsp;}</p><p>&nbsp;&nbsp; &nbsp;return a;<br>}</p><p>int main(void)<br>{<br>&nbsp;&nbsp; &nbsp;queue q1;</p><p>&nbsp;&nbsp; &nbsp;q1.init();</p><p>&nbsp;&nbsp; &nbsp;q1.enqueue(1);<br>&nbsp;&nbsp; &nbsp;q1.enqueue(2);<br>&nbsp;&nbsp; &nbsp;q1.enqueue(3);<br>&nbsp;&nbsp; &nbsp;q1.enqueue(4);</p><p>&nbsp;&nbsp; &nbsp;cout &lt;&lt; q1.dequeue() &lt;&lt;endl;<br>&nbsp;&nbsp; &nbsp;cout &lt;&lt; q1.dequeue() &lt;&lt;endl;<br>&nbsp;&nbsp; &nbsp;cout &lt;&lt; q1.dequeue() &lt;&lt;endl;<br>&nbsp;&nbsp; &nbsp;cout &lt;&lt; q1.dequeue() &lt;&lt;endl;</p><p>&nbsp;&nbsp; &nbsp;return 0;</p><p>}<br> </p></blockquote><p>&nbsp;</p><p>何年後かに見たら笑えるプログラムなんでしょうな。</p><p>スタックと違うところは、先入れ先出しのところで、</p><p>キューの先頭の値を変更（詰める）する部分ですかね。</p><p>&nbsp;</p><p>独習のほうでは、循環させるリングバッファー型でしたが、</p><p>ふつうのキュー作りました。</p><p>&nbsp;</p><p>はい。以上です。</p>
]]>
</description>
<link>https://ameblo.jp/0428takasun/entry-12127995334.html</link>
<pubDate>Fri, 12 Feb 2016 19:37:59 +0900</pubDate>
</item>
<item>
<title>C++勉強1日目</title>
<description>
<![CDATA[ 情報工学科に入学して4年経ちました。<br>大学4年生のtakasunです。<br><br><br><br>去年の4月に研究室配属があり、<br>なんちゃって情報工の私でしたが、<br>プログラミングから逃げられないことを悟り勉強を決意しました（あたりまえ<br><br><br><br>学部時代はＣ言語やJAVAを勉強していましたが、<br>参考書を読んで演習が少し解ける程度で、<br>応用がきいたプログラムは組んだことがありませんでした。<br><br><br>何がきっかけか、<br>研究室の先輩からの紹介で実装アルバイトをすることになりました。<br>言語はやったことのないＣ＋＋。<br><br><br>先輩いわく、ググれば分かるようになるよ。とのことでしたが・・・<br>どうやら私の実力を知らないようだ（悪い意味で<br><br><br>お金もらう以上、適当な仕事はできないので、<br>本気でＣ＋＋を学ぶことにしました。<br><br><br>そのバイトを始めて1か月経ちましたが、<br>ツールの使い方に慣れるのに精いっぱいで、<br>社員さんが10分で終わるような作業を何日もかけて行っています。<br><br><br>社長からは、<br>「君の将来に投資する」<br>とか大それた恐れ多い言葉をいただきましたが・・・。<br><br><br>周囲からの謎の期待を裏切るわけにはいかないので、<br>必死で勉強を。<br>そこで、今現在は「やさしいC++」を読んでいる最中です。<br><br><br>6章まではＣ言語と変わりない内容だったので楽に進みましたが、<br>この先は関数やクラスなどの考え方が入ってきて大変そうだ。<br><br><br>言語を覚えるのは大変だが、<br>千里の道も一歩から。<br>難しいことに挑戦せずに、今できることを精いっぱい頑張っていこうと思っています。<br><br><br>そんな私の挑戦をこのブログには綴っていきます。
]]>
</description>
<link>https://ameblo.jp/0428takasun/entry-12127755484.html</link>
<pubDate>Fri, 12 Feb 2016 01:16:12 +0900</pubDate>
</item>
</channel>
</rss>
