C言語は難しい?そんな訳がない!現役高校生が書くC言語

Linuxと電子部品と音楽のブログ

C言語は難しい?そんな訳がない!現役高校生が書くC言語

こんにちは。管理人のときえのき (jikantoki)です。
タイトルを見て頂ければわかるのですが、私は現在高校生なんですよね…
公立高校の二年生です。もうすぐ三年生になります。

そして自慢話ではないのですが私はプログラミング言語の中で一番有名で定番でおすすめの言語であるC言語のプログラムを少しばかり書けます。
これがどういうことかと言うと、C言語はとても簡単で誰にでも書けるということです!
ぱっと見では難しそうにも見えますがC言語の性格がわかればそこから先は一瞬です。
ここではC言語の最低限の知識 (printfとscanfができるくらいで大丈夫です)がわかるということを前提としてC言語を英語感覚でペラペラと覚えていく方法を紹介します。

まずは基本をおさらいしよう

先ほどの文章にてprintfとscanfがわかればいい、なんてことを言ってしまったのでここでおさらい(予習?)としてif文とfor文とポインタについて軽く紹介します。
わかる人は各自飛ばしていただいて結構です。


if文

#include<stdio.h>
int main(void){
    int a=0;       //aは0です
    if(a==0){      //同じかどうかの比較は==です
        printf("aは0です\n");
    }else{
        printf("aは0ではなく%dです\n",a);  //%dと書いて文章の後に変数名を書くと変数の値がわかります
    }
    return 0;
}

凄くシンプルなif文です。


for文

#include<stdio.h>
int main(void){
    int i;
    for(i=1;i<=10;i++){
    /*    iは1から始まります;
          iが10以下なら繰り返します;
          ループ毎にiを1ずつ増やします;   */
        printf("%d回目です\n",i);   //1から10まで数えます
    }
    return 0;
}

凄くシンプルなfor文です。


ポインタ

#include<stdio.h>

int main(){
    int a=0;      //aは0です
    int* p;       //これはポインタです
    p=&a;         //pが呼び出されたらaの値を出します
    *p=1;         //pは1です、つまりaを呼び出してaは1です
    printf("a=%d",*p);  //a=1と出てきます
    return 0;
}

凄くシンプルなポインタの文です。
私自身、ポインタの使い方なんて知りません。(´・ω・`)

ですが次の章からは、これがわかることを前提に記事を書いていきます。
(ワイ「えっ」)


結局、C言語にできることは本を読むことだけ

ここからは本格的にC言語の性格について書いていきます。
そうです、C言語(もしくはコンパイラ)にできるたった一つの処理って本を読むことだけなんです。

例えば、あなたがHelloworldを打ったとしましょう。

#include<stdio.h>
int main(void){
    printf("Hello world!\n");
    return 0;
}

この時に一行目の#include<stdio.h>が何をしているかって?
その通りです、コンパイラに
 「stdio.hに書いてある内容を使うから把握しとけよ!」
と言ってるだけです。
二行目のint main(void){}は、コンパイラに
 「ここから読んでね!」
と、しおりの役割を果たしています。
三行目のprintf(“Hello world!\n”);は、コンパイラに
 「#includeの時に読ませた本に書いてあるprintfって命令をやってくれ!
  使う材料は”Hello world!\n”でよろしく!」
と言っています。
これに対してコンパイラ側は、
 「printfか…さっき読んだstdio.hって本に書いてあったね。
  どれどれ、”Hello world!”までは普通に流すのか。
  最後の”\n”は改行しろとか書いてある…しゃーない、やってやるか」
という感じです。ただ本を読んでそのまま動いてるだけです。
四行目のreturn 0;に関しては、コンパイラに対して
 「最後まで言う通りやってくれてえらい!お疲れ様!」
と言ってるだけです。

ここで再度本題に戻りますが、C言語にできることなんて本を読むことだけなんです。実際どう処理すればいいのかなんてわかりませんしそれを知ってるのはstdio.hやstdlib.hなどです。
C言語ってそういう奴なんです。はい。
でもそれがシンプルさと簡潔さの理由であって長所なんですけどね!


英語のHello world?

文字だけをだらだら見るのもつまらないので、ここで少し話を変えて英語でHello worldというプログラムを書いてみましょう。

Please say "Hello world!".

わかりますでしょうか?
この英語の「Please say」という部分と、C言語の「printf」という部分、意味合いが完全に一致しています。
「”Hello world!”」なんてもうそのままです。
「. (ピリオド)」は「; (セミコロン)」と同じ意味合いです。

こんな簡単な言語がほかにもあるでしょうか。
あるにしても、C言語よりも簡潔で自由な言語はないと思います。
ここで、試しに他の代表的なC言語の命令と対応する英語を見比べてみましょう。
ちなみに、私は英検三級ですので英語に間違いがあるかもしれません…


英語を短縮しただけのC言語

  • scanf
    • write
  • if
    • if(そのまま!)
  • for
    • loop
  • atoi
    • from string for integer
  • system
    • call host
  • fopen
    • open the file
  • strcpy
    • string copy
  • perror
    • printf with error
  • more…

ほとんど英語ですし命令の意味が分からなくても本(stdio.hやstdlib.h)を読めば意味が全てわかる内容となっておりますので、非常に簡単な言語であることがわかると思います。

次ページでは、「この英語の意味もわかんないしC言語の本なんて読みたくない!」という人向けに、自分で本を作ってしまう方法を紹介します。

 

4件の返信

  1. それを言うならシェルスクリプトめっちゃ簡単やんって言いたい
    でもこの記事見てCを再挑戦しようって思った

    • jikantoki より:

      確かにシェルも簡単ですねw
      シェルはまだ勉強中なのである程度基礎が固まってから書いていきます!
      ありがとうございます!本当にCは単純で簡単なので!

  2. これ大体の言語に言える気がする…
    特にBetter C++として作られたRustだったらこの記事の文章でCと書いてある部分をRustに書き換えてコード部分をRustのものにすればほぼ違和感ない記事が出来上がるし()

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

Please note that posts that do not contain Japanese are ignored. (Spam measures) (コメントには日本語を含めてください)