ブログ「サイバー少年」

ブログ「サイバー少年」へようこそ!
小学六年生ごろからプログラミングを趣味にしている高校生のブログです。
勉強したことについての記事などを書いています。フリーソフトも制作、公開しています。
(当ブログについて詳しくは「ブログ概要紹介」を参照)

サイバー少年が作ったフリーソフトは「サイバー少年の作品展示場」へ

近況報告&C言語学習の目標

姉妹ブログにも書きましたが、この前、記事「Windowsタブレットが欲しい話」を書いたあとWindowsタブレットを購入してもう届きました。

しかし、ゴールデンウィーク中は旅行に行っていて、平日は学校が地味に忙しく自由時間が少ないので、まだあまり使用できていないんですよね…。

そのため、早いとこWindowsタブレットのレビューを書こうと思っていたのですが、まだレビューを書ける状態ではありません。

というわけで、時間稼ぎ記事の定番、近況報告をしようと思います。


今、書きましたが、本当に時間が足りないですね。

C言語も四月に開発環境について少し調べたっきりで、まだ進展がありません。

まあ、これから休日に進展させたり、せっかくWindowsタブレットを買ったので、小さな空き時間を利用してちょこちょこC言語をやっていこうと思います。


…さて、今回は特別に書くことといったらこれくらいで、もうネタがないのですが(笑)




それでは、C言語を今後、どのように勉強していくか書きましょうか。

最近、久しぶりに少しだけC言語でプログラムを書いたのですが、
C#の知識の流用がだいぶ効くだろうと高をくくって書いていたらエラーだらけになりました。

for文内で変数宣言できなかったり、様々な構文が微妙に異なります。

あと大きかったのが、文字列処理のやり辛さですね。

文字列結合が言語の機能として提供されていないので、とても不便です。

C#では文字列結合を行うというのは日常茶飯事ですからね。


printfでは最初の引数に%dだとかを含んだ文字列を与えて、2つ目以降の引数が%dとかに反映される仕様になっていますが、なんで直接やらないのかと疑問に思っていました。

直接というのは、たとえば数値型の変数を出力に埋め込みたいなら、数値を文字列に変換させて、他の出力文字列と結合させて、それを引数に与えるということです。

しかし、よく考えたらC言語では文字列結合が面倒なので、このような仕様になるのは仕方ないことなのかもしれませんね。

ちなみにC#などのConsole.WriteLineにもprintfの名残なのか、
最初の引数に{0}とか{1}とかを含んだ文字列を与えて、2番目以降の引数がそれに反映されるという機能がありますが、これは要らないんじゃないかと思います。


まあ、こういうC#との細かな違いを身体に馴染ませるというのが今後の一番の課題ですね。

それができたら、いくつか簡単なプログラムを組んでみて、その次は今まで勉強してきたデータ構造やソートアルゴリズムを実装してみようと思います。


仕組みは覚えたものの、ほとんど実装したことがありませんでしたからね。

いざ実装するとなると結構、難しいので、勉強になるのではないかと。


大掛かりなソフトウェアをC言語で作ろうとは考えていませんね。

サイバー少年の作品展示場」やVectorで公開している自作ソフトウェアをC言語で作ることは無いと思います。


しかし最近、C#というのは便利な言語だったんだなと、気付かされますね~。

これからMicrosoftの方針転換によって、C#とVisual StudioでiOSやAndroidなどのクロスコンパイル開発が可能になるらしいので、C#のシェアが上がっていくんじゃないでしょうか。

私もひとまずC#から離れましたが、なにか公開用のソフトウェアを作るという際は、積極的にC#を使っていきたいです。


というわけで、あまりにもネタがなかったので、非常に無理矢理な記事ですが、近況報告ということで。

いつになるか分かりませんが、次回の記事はWindowsタブレットのレビューを書く予定です。

tag: 近況報告 C言語

コメント

C言語

やっぱり文字列の扱いが難しいですね。
C#が便利すぎるので、少し使ってみたら、もうC#が手放せませんわww
ワタシ的にはフォーマット指定子は
C言語のほうが好きですが、C#の変数値と文字列の連結もいいですね。
基本的にC言語では+演算子で文字列連結できないので
C#では+演算子に機能のオーバーロードをさせているわけですね。
Cでの文字列の扱いには
本当に苦労させられますわ。
私もC#を今月から本気で勉強します。
それでは頑張って!!

  • 2015/05/12(火) 04:32:06 |
  • URL |
  • aridai #-
  • [ 編集 ]

Re: C言語

返信めちゃくちゃ遅れてしまった…、申し訳ありません。
C#が便利っていうより、C言語が不便すぎるだろという感じもありますね(笑)

古い言語なので早く世代交代したほうがいいと思うのですが、実行速度が売りの他の言語でまともなシェアを得ている言語が皆無なので、C言語しかないんですよね~。
まあ、C++はありますが。

printfは数値等から文字列へ変換するという処理と、文字列を画面に出力するという処理が一つの関数になってしまっているところも宜しくないと思います。
変換の仕様を変えたいとなったときに、変換関数と出力関数が分かれていれば変換関数を変えるだけですが、一緒になっていると出力関数としての仕様も変わってしまい、影響が大きいです。

まあ、C言語を勉強していくというのにC言語の愚痴を言っても仕方ないのですが(笑)

C#の+で文字列結合ができるのって、演算子のオーバーロードなんですかね。
stringはC#に言語レベルで埋め込まれている原始型なので、オーバーロードじゃないのかもしれませんが、調べてみないと分かりませんね。

そちらもC#の勉強、頑張ってください!

コメントの投稿

トラックバック

トラックバック URL
http://cyberboy6.blog.fc2.com/tb.php/411-da2d9656
この記事にトラックバックする(FC2ブログユーザー)

当ブログをご利用(閲覧等)になる場合は必ず「当ブログの利用規定」をお守りください。