【ISSUE】C言語入門(FizzBuzz書いてみた)

0

2024年12月23日 22:38

はじめに

こんにちは!ばーんです。
今回はC言語でFizzBuzz書いてみたのでその経緯などと、C言語初めて触った所感などを書いていきます。

ちなみにC言語は

  • 自身が低レイヤの学びを大切にしており、もっと学んでいきたい
  • 基本情報午後で書くタイミングがある
  • アルゴリズム大好きでC++はいつか覚えたいと思っていた

といった理由で今回取り組みました。
初めての言語はとりあえずhello world書いてFizzBuzz書けばふんわり掴めるでしょー!
という安易な発想で進めていきました。

準備

http://www9.plala.or.jp/sgwr-t/c/sec01.html

今回はこちらのサイトを中心に進めていきました。内部仕様にも触れられており大変参考になりました。

環境構築

Windowsはいくつか手順踏むみたいです。

Macは1工程のみなので優しいですね^^(僕はXcode元々入れてたので0でした)

こちらの記事(↓)が見易かったですね

https://qiita.com/N_Matsukiyo/items/464594d1fd3e6ef576a4

基本的な書き方(まずはhello world)

img

実行方法

img

node.jsで慣れてたのでコンパイルの処理と実行の処理分かれてるのはビックリしました。
(最初何回もコンパイルしてましたw)

ccとgccの違いについてはこちら(↓)
(http://zorinos.seesaa.net/article/458565453.html)

本題のFizzBuzz

img

img

何箇所か詰まったのが、

  • 変数の宣言の場所
  • 改行コード
  • 変換指定子

といったところです。下記でさらっと説明していきます。

所感

変数宣言

変数を宣言する際に型の指定が必要。
これによってメモリの確保領域を変更しています。
グローバル / ローカル変数の概念もありますが今回JSライクに書こうとしたら詰まりましたw
(forの外側で変数宣言したものが値変わらずにそのままだった)

コンパイラの判断

コンパルした時にerrorだとコンパイルされません。
warningだと動きます。中の文章はどちらもちゃんと読む。

全部が全部型指定しなくても動いてくれます。が、一定のアルゴリズムで変換するので現代のモダンな言語みたいに「いい具合に」はやってくれませんでした

変換指定子 / エスケープシーケンス

"FizzBuzz: %d\n", i のところでは
%d が変換指定子
\n がエスケープシーケンスです。

https://webkaru.net/clang/variable-printf/

標準(入)出力を自分が理解し切れていないのでうまく説明できないのですが、
\n書かないと改行されないとは思ってなかった…

VScodeの拡張機能

Screen Shot 2020-08-21 at 21.39.06.png

これがおすすめ(らしい)です。エラーも書いてる段階で表示されるし、入力補完もあったので使い易かったです。

ポインタ

入門サイトでもここがむずかしい!と書かれていたのですが、要は参照渡しなのか?値渡しなのか?ということかと(違ったらすいませんw)

構造体

変数宣言時に型を指定しますが、中に混ざっていてもOKというものみたい。
これもざっくりオブジェクトのようなもの(メソッドは入れれない)であってるはず…

標準ライブラリのinclude

JSでいうとこのrequireみたいなものですね(多分)。
C言語が低レイヤの言語なのでかなり簡単な処理でも関数の宣言が必要だったりします。
(例)文字と文字を結合する関数など

その数が中々多いので、使う関数をincludeする必要があります。

さいごに

最後までみていただいてありがとうございましたm_ m
全然ちゃうわ!みたいな自分の認識齟齬があれば言っていただけると大変助かりますm
_m

次に何を作るか決めていないので「こんなのオススメやで」みたいなのあれば教えてください^^
[cv:issue_marketplace_engineer]

0

診断を受けるとあなたの現在の業務委託単価を算出します。今後副業やフリーランスで単価を交渉する際の参考になります。また次の単価レンジに到達するためのヒントも確認できます。