Home > Program -プログラム言語- > C言語 ブログ記事 一覧

C言語 ブログ記事 一覧

今が旬!iPhone

  • Posted by: kenschool
  • 2010年2月18日 15:05
  • C言語

iPhoneがアメリカで2007年に初めて発売されたから早3年目、
海を越えた日本でもとても身近な携帯電話となりました。


ipodに当初搭載されていた『タッチパネル』機能を採用した携帯電話として注目され、
2010年現在、全世界での普及台数も2000万台を超えています。


これほどまでにiPhoneが流行っている要因の1つとして
iPhoneアプリがあります。


iPhoneアプリが従来の携帯電話搭載アプリと決定的に違う点は
エンジニア向けのメディアで盛んにアプリ開発言語の特集が
組まれている点でしょう。
 

『Objective-C』


iPhoneアプリ開発用の言語で、名前から想像できるとおり
C言語をベースとして作られた言語です。
 

約1年前、2009年の春ごろからプログラマ向けの書籍に
Objective-Cの名前が浸透し始めたのは、まだ記憶に新しいです。


とiPhoneアプリと開発言語について簡単に触れましたが
非常に似た技術として同時期に誕生したライバルに
Androidアプリがあります。


Androidについてはこちら↓

Android紹介ブログ


この両者、携帯電話というモバイル環境用の言語としては共通ですが
開発環境や言語はもちろん違います。


そのような諸々の違いはあるものの
最も注目すべきポイントは今後の将来性でしょう。

iphoneの注目利点

  • 独創的かつ圧倒的なデザイン力
  • Macユーザからの購買促進

Androidの注目利点

  • 既存の言語Javaで開発できる
  • Java用超有名開発環境、Eclipseで開発可能
  • 結果、オールライセンスフリー

と、エンジニア目線での将来性(とっつきやすさ)は
ややAndroidに軍配が上がるような気もします。


iPhoneの開発元Apple社やAndroidの開発元Google社の
企業ビジョンにも相違がある以上単純な比較は厳禁ですが、
エンジニアとしてこれからのIT動向を探る上で、
両者の相違点に注目しつつ両方のプラットフォーム上で
開発できるのが理想です。

この記事で触れたC言語、Java、Objective-C等々、
様々な言語やそれらを取り巻く開発環境が入り乱れている昨今ですが、
エンジニアとして重要なことは何を使うか?ではなく何を作るのか?という
目線を持つことなのでしょう。

--------------------------------------------------------------------------------

パソコンスクール KENスクール池袋校 Programインストラクター
http://www.kenschool.jp/school/ikebukuro/index.html

KENスクールでJavaやC言語を学びたい方は、Program講座へ!
http://www.kenschool.jp/Program/index.html

--------------------------------------------------------------------------------

KEN School 関西方面オープンしました!!

【関西ブログ】
http://www.kenschool.jp/info/contents/blog_kansai.html

【関西オープンページ】
http://www.kenschool.jp/info/contents/op_kansai.html
 

プログラムの可読性

  • Posted by: kenschool
  • 2009年4月 6日 18:46
  • C言語

プログラムの可読性とは、
文字通り「プログラムの読みやすさ」の事です。


プログラマとして業務につく場合は、
他者にチェックしてもらうためにプログラムの体裁を整えなければ
理解してもらう以前に見てもらえません。


では、個人なら自由にプログラムを書いても良いかというと、

例えば、数ヵ月後に見直した時に、
自分が「何を考えて、このプログラムを組んだのか」が分からない
非常に切ない思いをしてしまいます。


このように可読性は、単純に改行・インデント・スペースといった見栄えの他に
ちょっとしたプログラムのテクニックでも大きく変わってきます。


例えば、以下のプログラム(C言語)があったとしましょう。
----------------------------------------------
#include<stdio.h>

int  funcA(int num){
    int ret;
 
    if(num >= 0){
        ret = 1;
    }else{
        ret = 0;
    }
 
    return ret;
}

int  main(void){
    int  number, chk;
 
    scanf("%d", &number);

    chk = funcA(number);
 
    if(chk == 1){
        printf("正の値です。\n");
    }else{
        printf("負の値です。\n");
    }

    return 0;
}
----------------------------------------------

Javaを学習されている方も、classの囲いが無いと考えれば、
何となく内容は分かると思います。
(乱暴な表現ですが)


ちなみに scanf("%d", &number); は、ユーザに整数を入力させて、
変数 number に格納する命令です。


まず、注目するのは main()関数の中の条件分岐文です。

直前で funcA() 関数を呼び出し、戻り値を chk で受け取り、
その値を判断しています。


この「戻り値を一度変数に格納する」という行為を省略し、
直接、条件式に組み込むと、以下のようになります。

(main() 関数のみ抜粋)
----------------------------------------------
int main(void){
    int number;
 
    scanf("%d", &number);

    if(funcA(number) == 1){
        printf("正の値です。\n");
    }else{
        printf("負の値です。\n");
    }

    return 0;
}
----------------------------------------------

変数の宣言が一つ減って、スッキリしました。


さらにC言語では、if文の条件式が
0以外なら「True」、0なら「False」と判断します。


funcA() 関数の戻り値は、0か1か決まっているので、
いちいち 1 と比較するのは、野暮ったいです。


よって、
----------------------------------------------
int main(void){
    int number;
 
    scanf("%d", &number);

    if(funcA(number)){
        printf("正の値です。\n");
    }else{
        printf("負の値です。\n");
    }

    return 0;
}
----------------------------------------------

この記述で十分です。


次に funcA() 関数ですが、引数が正か負かによって
変数に 0 または 1 を代入していますが、
この変数を最初から 0で初期化しておけば else の記述は不要です。


よって、最終的に
----------------------------------------------
#include<stdio.h>

int funcA(int num){
    int ret = 0;
 
    if(num >= 0){
        ret = 1;
    }
 
    return ret;
}

int main(void){
    int number;
 
    scanf("%d", &number);

    if(funcA(number)){
        printf("正の値です。\n");
    }else{
        printf("負の値です。\n");
    }

    return 0;
}
----------------------------------------------

こんな風になりますね。


あとは、funcA()関数の概要などをコメントで記述しておけば
後から見直しても問題ない記述になるでしょう。
( funcA() という関数名も問題ですね…)


最後に同じプログラムを可読性の低いものに書き換える
----------------------------------------------
#include<stdio.h>
int abc(int z){
int y;
if(z>=0) y=1;
else if(z<0) y=0;
return y;
}
int main(void){
int a,b;
scanf("%d",&a);
b=abc(a);
if(b==1) printf("正の値です。\n");
else if(b == 0) printf("負の値です。\n");
return 0;
}

----------------------------------------------

どうですか?
これでも結果は変わりません。


どんなプログラムでも動けば良いと思っていませんか?
インデントだけでも印象は大きく異なるのです。


プログラムに慣れてきたら、是非、
可読性を意識してみてくださいね。

--------------------------------------------------------------------------------

パソコンスクール KENスクール蒲田校 Programインストラクター
http://www.kenschool.jp/school/kamata/index.html

KENスクールでプログラムを学びたい方は、Program講座へ!
http://www.kenschool.jp/Program/index.html

大人の数学

  • Posted by: kenschool
  • 2009年2月16日 19:20
  • C言語

最近、なぜか数学関連の書籍を読んでおり、
学生の頃には感じなかった楽しさを発見しています。

でも余り難しい内容にはついて行けないんですけどね…。


ある書籍の冒頭にある内容を一部見てみると
1
1
2
3
5
という数字が並んでいて、次に何が来るか?
…と。
まぁ「8」なんですけどね。


これは数値の並びの前に「0」が隠れているとすると、
0
1
1←前2つ数値(0と1)を加算
2←前2つ数値(1と1)を加算
3←前2つ数値(1と2)を加算
5←前2つ数値(2と3)を加算
8←前2つ数値(3と5)を加算
このように説明できます。


ということで、2つ目以降の結果はパターン化されます。
パターン化できれば、プログラムでは「繰返し処理」を用いて
処理をまとめられる
ということです。


C言語で記述すると以下のようになりますね。
(クリックで拡大します)
ソースと結果


因みにint型で扱うと、わずか47回目でオーバフローしてしまいます。
 

それから answer の初期値を1にして、繰返しの処理順を変えると
もっとスッキリしますね。
その辺は…まぁいいか。


プログラムを学習する上で「物事をパターン化して把握する」
というのは結構重要
な位置を占める考え方だと思うんです。


そういった意味では、数学の勉強を振り返るというのも
プログラムのスキル向上に一役買うかもしれませんね。
 

数値の計算は、ルール付けがきちんとされているので、
正解を見抜きやすいので。


ちなみに今回扱った数字の並びはフィボナッチ数列という有名な数列で、
黄金比(バランスのとれた形)を求めるときにも使われています。

--------------------------------------------------------------------------------

パソコンスクール KENスクール蒲田校 Programインストラクター
http://www.kenschool.jp/school/kamata/index.html

KENスクールでC言語を学びたい方は、プログラム講座へ!
http://www.kenschool.jp/Program/index.html

BCpadでウィンドウ作成

  • Posted by: kenschool
  • 2008年12月 6日 21:03
  • C言語

ブログの記事は、広く一般に読まれる事を前提に書くと思うのですが、
今回は、
KEN Schoolの受講生…しかも「C言語講座」を受講している方
を中心にお話したいと思います。

C言語でプログラムを打っても
「結果が黒い画面に文字で出るだけなんて、何か寂しい」
と思われている方も多いと思います。
「VisualBasicを受講している人は、画面が簡単に出来て楽しそう」
と思われている方も多いと…


なんて、泣く必要は無いんです。
C言語は「何でも出来る」のですから。


今回は教室で使用している開発環境「BCpad」を使って、
GUIプログラムに挑戦しましょう!!


以下に添付したファイルを右クリックし「対象をファイルに保存」を選択して
ご自分のPCにダウンロードしましょう。

hellowindow.cpp

準備が出来たらBCpadから、そのファイルを開きます。
実行はアイコンではなく、以下の操作で行います。

1. 「実行」メニューから「コマンドプロンプトを起動」を選択
(クリックで拡大します)
CPad操作

2. 以下のコンパイル命令を入力
bcc32 -W hellowindow.cpp
コンパイルコマンド
警告は無視してしまいましょう。

3. 以下の実行命令を入力
hellowindow
実行コマンド

4. 実行結果の確認
実行結果

表示の結果は文字ですが「ウィンドウが出来た」事は、感動ですね!
この感動は、C言語を勉強しないと分からないですよね!
やっぱりC言語って楽しい!!

コードの内容は詳しく触れませんが、33と34行目を見てみましょう。
ここで、作成するウィンドウの幅と高さを指定しています。
この記述を

320, // 幅
640, // 高さ

というように、高さの値を大きくして、コンパイル・実行してみましょう。

縦方向に長ーくなりました。
実行結果

好評なら、画像の描画方法も公表しようかな。
お後がよろしいようで。

C言語が今も使われているのは

  • Posted by: kenschool
  • 2008年11月 2日 12:26
  • C言語

C言語は1972年にAT&Tベル研究所で
開発された言語です。


歴史がありますが、今も使われているのは
ハードウェアに極めて近いソフトウェアを
作る為に作られたので組込み機器には
かかせないものだからです。


C言語は仕組みがコンパクトで別のコンピュータ
への移植が容易な言語です。


さらにオブジェクト指向という仕組みが
出来る前の言語なので
オブジェクト指向を理解しなくても大丈夫なんです!


・・・と、いうことは覚えることも少なくて済む
ということですねっ^^


さらに組込みソフトウェアとなると
「Enterキーを押すと処理が確定するんだ」
と当たり前に使っているキーボードも、実は
電源がはいっている前提でプログラムが
組まれていて入力を待ってる♪

なんていう考え方が必要になってくるなんて
何気なく使っている電化製品の見方が
劇的に変わってしまう
不思議な世界が待っているんです!


プログラム言語はほとんどが
「これを考えた人ってすごいなぁ」
「仕組みってどうなってるんだろう?」
という興味から生まれて、色々な発想から
作られています。

実は、すごい話題になった「iPhone

プログラム言語は「Objective-C」という言語
ではありますが、元になったのがSmalltalkと
「C言語」だというじゃないですか!


「C言語」を知らないなぁというあなたっ
この先気付かないうちに損をしてしまうかもしれませんよ~(笑)
 

煩悩は万能なり~Cの未来~

  • Posted by: kenschool
  • 2008年9月29日 12:19
  • C言語

みなさんは、今現在世界に存在するプログラム言語
何種類あるかご存知でしょうか?

その数は、数え方によっても違いますが
5000
とも8000とも言われています!
膨大なですね!!


数ある言語の中でも一番有名で、
言語を扱うプログラマの数が多い言語といえば
やはりC言語ではないでしょうか。


C言語と言えば1972年生まれの36歳です。

最近人気のJavaPHPと比べると歴史は古く、
同時期に誕生したライバル言語、Pascal
すでに現役を引退しています。


そんなC言語を一言で表すと
『何も特徴が無い』言語だといえます。


JavaPHPはショッピングサイトやネットバンキングなど、
WEB上で動くシステムを作るのが得意ですし、
統一された社内環境で使うシステムであれば
VisualBasicが向いています。


最近人気の言語は
どれもこれも他の言語に勝る特徴があるのにも関わらず・・・


『何も特徴が無い』C言語

これは、視点を変えると

『なんでも出来る』自由度の高いC言語

といえます。


今回は、C言語自由度を証明する画像を
2つお見せしましょう。

C言語迷路ソース

一見迷路のような画像ですが、
よく見るとC言語のコードが記述されています。

そしてこのコードを実行すると

C言語迷路アプリケーション

このように、迷路アプリケーションが動きます。
(※実行環境はLinuxです。他にMakeFileが必要になります。)


今回はC言語のコード記述の自由度をご紹介しました。

C言語自由度特徴としていたおかげで、
様々な言語が混在する今日でも、
ゲーム業界組込みの分野活躍をしているのです。

ブログ記事 一覧へ

Home > Program -プログラム言語- > C言語 ブログ記事 一覧

Search
Feeds

ページトップへ