paiza開発日誌paiza開発日誌IT/Webエンジニア向け総合求人・学習サービス「paiza」の開発者が、プログラミングやITエンジニアの転職などについて書いています。ITエンジニア向け総合求人・学習サービス「paiza」の開発者が、プログラミングやITエンジニアの転職などについて書いています。プログラミング-プログラミング学習Tweetこんにちは、吉岡(@yoshiokatsuneo)です。Swift...などなど、現在は非常に多くのプログラミング言語が使われていますが、多くの言語の源流となっているのがC言語です。Xの源流となるUNIXの開発のために作られた言語で、今でもLinuxはC言語で書かれていますし、多くのOSがCやC++で開発されています。mbed等)などの用途でも広く使われています。C言語の文法は、多くのプログラミング言語の文法に影響を与えています。JavaScriptとも文法が非常に似ていますし、構造としては、Ruby、Python、Swiftなどの手続き型言語とも似ている部分が多いです。これらのプログラミング言語自身がC言語で書かれている場合も多く、C言語と同時に利用できる言語も多いです。C言語は1972年頃に開発された歴史のある言語で、現代のプログラミング言語に比べると機能が限られている部分もありますが、逆に歴史がある分、C言語は学習するのに向いているとも言えます。C言語自身、互換性をほぼ保ちながら改善が続いており、最新規格は2011年に公開されたC11となります。現在、ほとんどの開発環境はこのC11に対応しています。ここでは、最新の仕様(C11)に従ったC言語の基本を5分でわかるように簡単にまとめてみます。ポインタ入力マクロまとめC言語の開発方法C言語のプログラムは、そのまま実行することはできません。実行するにはコンパイルをして、実行ファイルに変換する必要があります。通常、コンパイラや開発環境は別途インストールする必要があります。ここでは、C言語自体の学習が目的ですので、環境設定の必要がなく、ウェブ上からプログラムを実行できるpaiza.IOを利用します。プログラミング言語として「C」を選択し、プログラムを入力後、「実行」ボタンを押すと、実行結果が出力エリアに表示されます。paiza.IOはじめてのC言語プログラムそれではC言語プログラムを書いてみましょう。World"を表示するプログラムです。以下のように書いてみましょう。"printf(メッセージ)"がメッセージを表示する、肝心の部分です。他の部分は、とりあえず今はおまじないと思っておきましょう。World"と表示されました。表示されない場合は、エラーメッセージを確認してみましょう。World"のように直接表示する文を書くこともできますが、繰り返して利用したり、足し算などの結果を保存するためには、変数を使います。変数には名前(変数名)をつけておきます。変数は使う前に宣言する必要があります。C言語では値の種類(型)によって宣言方法が違い、以下のようになります。数字には、小数を使わない整数型と、小数を使える実数型があります。-2など)には"int"(整数型)を使います。整数型の"i"という名前の変数は以下のようになります。-12.3など)は"double"(実数型)を使います。'c'...)は"char"(文字型)を使います。文字型は、一重引用符('')で囲って表し、一文字のみ表せることに注意してださい。c;それでは、変数を宣言して表示してみましょう。1"と書くと、iには1が設定されます。変数を参照する場合は、単純に"i"と書きます。i)」のように"%d"を使って表示します。1"と書くこともできます。0;}実数(double)の表示には、"%lf"を使います。0;}文字(char)の表示には、"%c"を使います。0;}"printf"では複数の値を表示することもできます。"%c"などをprintfの最初の部分(引数)に書き、後の部分(引数)に対応する値を書きます。0;}演算C言語では、足し算などの計算ができます。(当然ですが・・・)普通の数式と同じように書けます。10);変数で計算をしたあとに同じ変数に代入することもできます。iに1を加える場合、以下のように書きます。1;これは、以下のようにも書けます。1;i++;iを1減らす場合は以下のように書きます。/」は複数行のコメントに使います。複数行コメント*/条件文(if)変数の値によって処理をわける場合などは条件文を使います。条件文は"if(条件式){}"と書き、条件式を満たした場合にブロック("{}")が実行されます。条件式では、例えば"X==Y"と書くとXとYが等しい場合に条件式が満たされ、ブロックが実行されます。0;}条件を満たさない場合の動作を指定するには、if文の後に"else"を指定します。0;}if/else文を繰り返すと、複数の条件を書くことができます。0;}条件式は以下のような演算が利用できます。値が多くなると、まとめて扱えると便利です。値を順番に並べたものを配列といいます。配列を使うには、かっこ("[]")を使います。配列の宣言では、配列の長さを指定します。整数型(int)で、3つの値を保存できる配列は以下のように書きます。apples[3];配列の中の値(要素)を使うには、配列の中を位置(インデックス)を指定します。インデックスは0からはじまります。この場合、1番目の要素は"apple[0]"、2番目の要素は"apple[1]"、3番目(最後)の要素は"apple[2]"となります。0;}配列の宣言と代入はまとめて行うこともできます。120};この場合、カッコの中の長さを省略することもできます。for)配列の中身を全て表示するときなど、printf文を繰り返すのは大変です。for)を使えば、動作を繰り返すことができます。while文では、かっこ("()")の中の条件式を満たしている間、繰り返して実行します。以下の場合、while文の中を5回実行します。0;}例えば、以下の場合、while文の中を5回実行します。for文を使えば、同じ繰り返しを簡単に書けます。繰り返し式)"のように書き、初期化を実行後、条件式を満たしている間繰り返します。繰り返しの最後に繰り返し式を実行します。上のwhile文と同じように5回繰り返すには以下のように書きます。文字列は"hello"のように書きますが、C言語では文字列型というものはありません。それでは、文字列はどのように表現するのでしょうか。文字列は文字を繰り返した配列として表します。配列の最後には、文字の終わりを示すため、ヌル文字('\0')と呼ばれる特殊な文字を追加します。'\n']という配列としてあらわします。"(文字型の配列)と書きます。""の中には、変数に保存する文字列の長さの最大値より1大きい数を設定します。s[100];文字列を表示するにはprintfで"%s"を指定します。同じ処理を繰り返して利用できるように、処理をまとめられると便利です。関数を使えば、複数の処理(文)に名前をつけてまとめることができます。"ppap"という名前の関数を作るには、以下のように宣言します。printf("pen\n");}関数を呼び出すには、「関数名()」と書きます。0;}よく見ると「main()」も関数と同じ書き方ですね。実はこのmainも関数です。プログラムを実行すると、最初に"main"という名前の関数が実行されます。関数は、引数という値をつけて、引数によって動作を変えることができます。引数は関数名の後のかっこ"()"の中で指定します。1〜nまでの合計を計算するsumという関数を使うには、引数nを使って以下のように書きます。配列は単純に値を並べるだけでしたが、複数の値に名前をつけてまとめた構造を作ると便利です。このような、複数の値に名前をつけてまとめたものを構造体といいます。構造体を作るには"struct"を使います。文字列のモデル名(model)と、整数の製造年(year)を持つ構造体は以下のように宣言します。year;};構造体の中の値(メンバ)を利用するには、ドット(".")を使い、"構造体名.メンバ名"として指定します。0;}なお、構造体を使った変数は以下のように初期値を設定しながら宣言することもできます。2007};ポインタ変数は、実際にはコンピュータのメモリに保存されます。メモリは配列のようなものですので、変数が保存されているメモリ上の位置を、その変数のアドレスと言います。変数のアドレスを保存した変数のことをポインタといいます。変数の変数といってもいいです。ポインタを宣言するには、"*"を使います。整数型のポインタは以下のように書きます。*p;変数のアドレスは"&"を使います。ポインタpに変数iのアドレスを設定するには以下のように書きます。;配列の場合、[]をつけずに変数名と書くと、その配列のアドレスを表します。文字列は文字の配列ですので、文字列はポインタとしてもあらわせます。str;ポインタが示す変数は「*ポインタ名」として表します。引数のポインタが示す変数に値10を設定する関数"set10"は以下のように書きます。0;}入力キーボードやファイルなど、標準入力から値を読み込むにはscanfを利用します。scanfはprintfのように"%"で型を指定して読み込みます。printfと異なり、引数にポインタを使います。整数を読み込むには以下のようにします。mに設定するには以下のようになります。0;}文字列を読み込むには"%s"を使います。0;}マクロC言語では、マクロを利用して値に名前をつけることもできます。マクロは変数と異なり書き換えることができませんが、宣言した後、ほとんどどこでも利用できる特徴があります。ONEで1を、HELLOが"hello"をあらわすには以下のように書きます。0;}まとめC言語は古くから現在まで幅広く使われている言語ですが、特に最近ではIoTで使われるケースもあります。C言語はコンピュータの構造に沿ったシンプルな言語ですので、深く勉強することが、プログラム原理の理解にもつながります。C言語がある程度習得できると、他の言語も理解しやすくなります。プログラムは、実際に書いて試してみることで理解が深まります。動画でプログラミングが学べる「paizaラーニング」には、C言語のレッスンもあります。動画を見ながらブラウザ上でC言語のコードを書いたり、演習問題を解いたりすることで気軽にプログラムを学べます。プログラミング学習ならpaizaラーニングC言語コースや無料のC#コースなど多数公開中!プログラミング学習動画paizaでは、未経験者でも動画を通してプログラミング等が学べる「paizaラーニング」を公開中です。C言語の学習動画はもちろんのこと、Ruby、Python、Java、PHP、JavaScriptなどなど......多数のプログラミング言語が学べるレッスンがございます。2017年1月31日から公開となりました「C#入門編」は無料で見放題となっております。paizaラーニングでは、paizaの人気美少女キャラクター霧島京子(cv:上間江望)が、かわいい声で優しく・楽しく・わかりやすくプログラミングを教えてくれます。「霧島京子による1本3分程度のレッスン動画」に加え、「ブラウザ上でコードを書いて実行できるオンライン実行環境」「複数の練習問題」で、初心者でも無理なくプログラミングを習得することができます。paizaは、技術を追い続けることが仕事につながり、スキルのある人がきちんと評価される場を作ることで、日本のITエンジニアの地位向上を目指したいと考えています。自分のスキルを磨いていきたいと考えている方におすすめなのが「paizaラーニング」。オンラインでプログラミングしながらスキルアップできる入門学習コンテンツです。初心者でも楽しくプログラミングの基本を学ぶことができます。paizaでは、Webサービス開発企業などで求められるコーディング力や、テストケースを想定する力などが問われるプログラミングスキルチェック問題も提供しています。スキルチェックに挑戦した人は、その結果によってS・A・B・C・D・Eの6段階のランクを取得できます。必要なスキルランクを取得すれば、書類選考なしで企業の求人に応募することも可能です。「自分のプログラミングスキルを客観的に知りたい」「スキルを使って転職したい」という方は、ぜひチャレンジしてみてください。15:18Tweet関連記事2020-05-21【C言語】データ構造の基本を学ぼう!スタックとキューを配列で実装するこんにちは。プログラムでデータを効率よく扱うため...2020-04-02【Java】初心者が少し複雑なプログラミング問題を解くための無料講座こんにちは。プログラミング学習中の方で、言語の基...2019-12-30初心者がつまずきやすいC言語のポインタを理解できる講座が新登場こんにちは。動画でプログラミングが学べるpaizaラー...2019-09-04初心者でもJavaでプログラミング問題を解けるようになる無料講座こんにちは。