-
C言語のトークンとは?種類と基本構成要素をサンプルコード付きで解説
C言語のプログラムは命令文(ステートメント)の集まりであり、さらにその命令文一つひとつは、より小さな単位の集合によって構成されています。このように、Cプログラムを構成する個々の小さな単位のことを「トークン(token)」と呼びます。つまり、Cプログラム内のすべての命令文は、複数のトークンが集まってできているということです。トークンはCプログラムを作り上げるための材料であり、「プログラムの基本的な構成要素(ビルディングブロック)」とも表現されます。Cプログラムにおけるトークンの種類Cプログラムの中で扱われるトークンには、主に以下の7種類があります。キーワード(予約語):int、if、for、re
-
C言語の演算子の優先順位と結合性とは?基本をわかりやすく解説
Cプログラミングにおいて、式を正しく評価するためには「演算子の優先順位」と「結合性」の理解が不可欠です。まずは、この2つの基本的な概念について詳しく見ていきましょう。 演算子の優先順位とは 演算子の優先順位とは、1つの式の中に複数の演算子が含まれている場合に、どの演算子から先に評価するかを決めるルールです。C言語ではすべての演算子に優先度が割り当てられており、優先順位の高い演算子ほど先に評価され、優先順位の低い演算子は後から評価されます。 例えば、5 + 3 * 2 という式では、乗算(*)の方が加算(+)よりも優先順位が高いため、まず 3 * 2 = 6 が計算され、その結果に対して 5 +
-
C言語のstrtok()関数とは?文字列をトークンに分割する方法を解説
strtok()関数とは strtok()関数は、C言語の標準ヘッダーファイル <string.h> に含まれる文字列操作関数の一つです。使用する際は、ソースコードの先頭で以下のようにインクルードします。 #include <string.h> 構文 strtok()関数の構文は以下のとおりです。 char* strtok(char* string, const char* limiter); 第1引数には分割対象の入力文字列 string を、第2引数には区切り文字(デリミタ)limiter を指定します。strtok()は、指定された区切り文字に基づいて文字列を「
-
C言語のstrtok_r関数とは?strtokとの違いと使い方を解説
C言語のstrtok_r()関数は、文字列を区切り文字で分割するための標準ライブラリ関数です。従来のstrtok()関数とよく似た機能を持っていますが、両者には決定的な違いがあります。それが関数名に付いている「_r」の部分で、これは「リエントラント(re-entrant:再入可能)」であることを意味しています。 リエントラント関数とは何か リエントラント関数とは、実行中に割り込みが発生しても安全に処理を中断でき、後から中断した箇所から実行を再開できる関数のことです。この特性により、リエントラント関数は「スレッドセーフ」であると言われます。つまり、複数のスレッドから同時に呼び出されても、互いに
-
C言語による深さ優先探索(DFS)の実装方法をわかりやすく解説
深さ優先探索(DFS)とは深さ優先探索(Depth First Search:DFS)は、グラフ上のすべてのノードを訪問するためのアルゴリズムです。ある頂点から出発し、行き止まりに達するまで可能な限り深く探索を進め、その後ひとつ前の頂点に戻って未訪問の経路を順に調べていきます。また、2つのノード間にパス(経路)が存在するかどうかを判定することにも利用できます。つまりDFSは、グラフや木構造を「深さ方向」に沿って探索していく手法です。アルゴリズム以下は、深さ優先探索(DFS)を実装するための基本的な手順です。ステップ1 − 最初に、スタックは空の状態です。ステップ2 − 訪問対象のノードがスタッ
-
分子と分母を文字列形式で表現するCプログラムの書き方
問題概要実行時にユーザーが入力した2つの整数(分子と分母)を受け取り、動的メモリ割り当て(malloc・realloc)を活用しながら、その分数を小数として計算し、結果を文字列形式で表現するCプログラムを作成します。特に、割り切れない場合に発生する循環小数(例:0.571428571428...)を「0.(571428)」のように括弧付きで表現できる点がこのプログラムのポイントです。解決策分子と分母を文字列形式で表現するための基本的なアプローチは以下の通りです。筆算の要領で余りを10倍しながら商を順に求め、小数部分の各桁を導出します。同じ余りが再び現れたら、そこから先が循環すると判断し、該当部
-
指定された列番号からExcelの列タイトルを出力するCプログラムの解説
問題概要本記事では、指定された列番号(整数値)に対応するExcelの列タイトルを出力するCプログラムを紹介します。ユーザーが整数値を入力すると、その数値に基づいて対応するExcelの列名が画面に表示される仕組みです。Excelでは、列は以下のようにアルファベットで表現されます。1 -> A 2 -> B ... 26 -> Z 27 -> AA 28 -> AB ...このように、26を超えると桁が繰り上がり、2文字以上の組み合わせになります。これは一見26進数のように見えますが、実際には「0」が存在しない特殊な26進法(バイアス付き26進数)である点がポイントで
-
【C言語】階乗の末尾に連続するゼロ(後続ゼロ)の個数を求めるプログラム
階乗の後続ゼロとは与えられた階乗(n!)の計算結果において、末尾に連続して並ぶ0(後続ゼロ・トレーリングゼロ)の個数を求める方法を、具体的な例を挙げながら解説します。例1入力:4出力:0解説:4! = 24 となり、末尾にゼロは存在しません。4! = 4 × 3 × 2 × 1 = 24 であり、一の位には「4」が来るため、後続ゼロは0個です。例2入力:6出力:1解説:6! = 720 となり、末尾のゼロは1個です。6! = 6 × 5 × 4 × 3 × 2 × 1 = 720 であり、一の位が「0」になるため、後続ゼロは1個となります。例3入力は以下の通りです。n = 4n = 5出力は以
-
C言語で単方向リンクリストを使って数値を逆順に表示する方法
リンクリスト(連結リスト)とは リンクリストは動的メモリ割り当てを利用するデータ構造で、複数の「ノード」が連なった集合体です。各ノードはデータ部分とリンク部分(次のノードへのポインタ)の2つの要素で構成されています。 リンクリストの種類 C言語で扱われる主なリンクリストには、以下の4種類があります。 単方向リンクリスト 双方向リンクリスト 循環単方向リンクリスト 循環双方向リンクリスト 単方向リンクリストの構造 下の図は、単方向リンクリストの構造を示したものです。各ノードがデータと次ノードへのポインタを持ち、末尾ノードのポインタはNULLを指します。 数値を逆順に表示するCプログラム 以
-
【C言語】双方向リンクリストで任意の位置にノードを挿入する方法
リンクリストとはリンクリストは動的なメモリ確保(動的メモリ割り当て)を利用するデータ構造で、複数のノードがつながった集合体です。各ノードは「データ部」と「リンク部(ポインタ)」という2つの要素で構成されており、ポインタによって次のノード(双方向リンクリストの場合は前のノードも)と接続されています。リンクリストの種類C言語で扱われる主なリンクリストには、以下の4種類があります。単方向リンクリスト(Singly Linked List)双方向リンクリスト(Doubly Linked List)循環単方向リンクリスト(Circular Singly Linked List)循環双方向リンクリスト(C
-
サイズ別のコンピューターの種類とは?マイクロからスーパーコンピューターまで徹底解説
コンピューターは、データを保存し、さまざまな処理を実行するために使われる電子機器です。その大きさ(規模)に基づいて、コンピューターは主に以下の4つのタイプに分類されます。マイクロコンピューター(小型)ミニコンピューター(中型)メインフレームコンピューター(大型)スーパーコンピューター(超大型)マイクロコンピューターマイクロコンピューターに搭載されるCPUは「マイクロプロセッサ」と呼ばれ、1970年代後半に登場しました。最初期のマイクロコンピューターには、8ビットのマイクロプロセッサチップが使用されていました。8ビットのチップは、記憶装置からデータや命令を一度に取り出し、処理・演算することができ
-
C言語のデータ型とは?種類・使い方・サイズの確認方法を解説
データ型(datatype)とは、メモリ上の領域や変数の宣言を定義するためのものです。コンピュータが扱うデータにはさまざまな種類があり、C言語で扱われる主なデータの例は以下の通りです。整数、有理数、自然数、実数、複素数、ベクトル、文字などコンピュータのハードウェアの観点から見ると、すべてのデータは有限長の0と1からなるビット列(バイナリデータ)として符号化されます。マシン内部では、整数データは演算論理装置(ALU)によって処理され、小数データは浮動小数点演算装置(FPU)によって処理されます。この仕組みは、高水準言語が備える組み込み型(プリミティブ型)にもそのまま反映されています。C言語の組み
-
C言語で2進数を16進数に変換する方法をわかりやすく解説
2進数と16進数の基本2進数は「1」と「0」の2種類の数字だけで表現される記数法です。一方、16進数は16種類の数字を使う記数法で、{0, 1, 2, 3 … 9, A(10), B(11), … F(15)} のように表されます。2進数から16進数への変換手順2進数を16進数に変換するには、ビット列を最下位桁側から4ビットずつに区切ります。この4ビットのまとまりは「ニブル(nibble)」と呼ばれ、各ブロックを対応する16進数の1桁に置き換えることで変換が完了します。以下の例で、2進数と16進数の対応関係を確認してみましょう。0011 1110 0101 1011 0001 1101 3
-
C言語のトークンとは?6つの種類とサンプルコードでわかりやすく解説
トークンとはトークン(token)とは、コンパイラにとって意味を持つ、プログラムを構成する最小単位のことです。コンパイラはソースコードをこの最小単位へと分割し、生成されたトークンを基にコンパイルの各段階へと処理を進めていきます。トークンの種類C言語のトークンは、主に以下の6種類に分類されます。キーワード(予約語):int、return など、言語仕様によって意味が定められた語識別子:変数名や関数名など、開発者が自由に命名できる名前定数:10、3.14 など、プログラム中で値が変わらない固定値文字列:ダブルクォート( )で囲まれた文字の並び特殊記号:{ }、( )、; など、構文を区切るための記
-
C言語のキーワードとは?32種類の予約語一覧と使い方を実例で解説
C言語のキーワード(予約語)とはキーワードとは、プログラミング言語においてあらかじめ意味が定義された「予約語」のことです。C言語の各キーワードは、プログラムの中でそれぞれ固有の役割を果たします。キーワードは変数名として使用できないキーワードの意味は固定されており、変更することはできないキーワードはCプログラムの基本的な構成要素であるC言語には32個のキーワードが用意されているすべてのキーワードは小文字で記述するC言語の32個のキーワード一覧C言語で定義されているキーワードは、以下の32種類です。autodoubleintstructbreakelselongswitchcaseenumregi
-
C言語の識別子とは?命名規則と具体例をわかりやすく解説
識別子(Identifier)は、C言語で使用されるトークンの一つです。変数、定数、関数、配列、さらにユーザー定義型のデータなどを識別するために付ける「名前」のことを指します。 キーワード(if、while、intなどの予約語)は言語仕様上、特別な用途のために確保されているため、識別子として利用することはできません。一方、宣言済みの識別子は、以降のプログラム文中で対応する値を参照するために自由に使用できます。 また、文ラベル(statement label)と呼ばれる特殊な種類の識別子も存在し、こちらはgoto文でジャンプ先を指定する際に使用されます。 識別子の命名規則 識別子に名前を付ける
-
C言語の定数(const)とは?基本構文から種類・実行例まで徹底解説
定数(Constant)とは、一度値を定義するとプログラムの実行中にその値が一切変わらないものを指します。固定値を参照するために、変数を定数として宣言することができます。定数は「リテラル」と呼ばれることもあります。C言語では、const キーワードを使用して定数を定義します。定数の基本構文C言語で定数を宣言する際の基本的な構文は以下の通りです。const 型 変数名; または const 型 *ポインタ変数名;定数の主な種類C言語で扱われる定数には、以下のような種類があります。整数定数 … 例:1、0、34、4567浮動小数点定数 … 例:0.0、156.89、23.4568進数・16進数定数
-
C言語の特殊記号とは?それぞれの意味と使い方を徹底解説
C言語には、特別な意味を持つ「特殊記号」が数多く存在します。これらの記号はコンパイラによって特定の役割として解釈されるため、本来の用途以外の目的で使用することはできません。 C言語で使われる主な特殊記号 Cプログラミングで頻繁に登場する代表的な特殊記号は以下の通りです。 [] () {} , ; * = # 各記号の意味と役割 角括弧 [ ]:配列の要素を参照する際に使用します。1次元配列はもちろん、多次元配列の添字指定にも用いられます。 丸括弧 ( ):関数の呼び出しや、関数に渡す引数(パラメータ)を囲むために使用します。 波括弧 { }:複数の実行文からなるコードブロック(処理のかたまり
-
C言語で文字・文字列・文(空白を含む文字列)を読み書きするプログラム
C言語でプログラミングをしていると、「1文字」「文字列」「そして空白を含む文」の3種類の入力を受け取りたい場面があります。本記事では、これら3つの入力を受け取って、そのまま同じ内容を出力する方法を解説します。なお、文字列の最大サイズは500とします。入力例と出力例たとえば、入力が以下のようになっている場合を考えてみましょう。character = T string = ProgrammingLanguage sentence = I love programming through Cこのとき、期待される出力は次の通りです。Your character: T Your string: Prog
-
Cプログラムで整数と浮動小数点数の合計を求める方法
この記事では、整数型の2つの数値 a、b と、浮動小数点型の2つの数値 c、d が与えられたとき、それぞれの合計を求めるCプログラムの書き方を解説します。具体的には、「a と b の合計」「c と d の合計」に加えて、「a と c の合計」も計算します。データ型が異なる数値を足し合わせる場合、printf関数の書式指定子を正しく選ぶことが重要で、指定の仕方によって出力結果が変わります。例として、a = 5、b = 58、c = 6.32、d = 8.64 が入力された場合、出力は次のようになります。a + b = 63c + d = 14.960001a + c = 11.320000解き方