> For the complete documentation index, see [llms.txt](https://kurohasu.gitbook.io/fsharpabout/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://kurohasu.gitbook.io/fsharpabout/basic/var-expr.md).

# 変数と式

変数は処理を行うために使うものでプログラムを作成する上で絶対必要になります\
(前ページの<値>は変数を指しています)\
値には\
・変更出来ない「定数」\
・変更できる「変数」\
の２種類があります\
定数はいわゆる「e」とか「π」みたいなものです\
Console.ReadLine()を使用すると変数に値を入力します

```fsharp
// 定数の宣言
//構文:let <定数名>=<値>
let teisuu=3.14

//変数の宣言
//構文:let mutable <変数名>=<値>
let mutable hennsuu=4

//変更する時は,<変数名> <- <値> で出来ます
hennsuu<-9

//定義前にsystemモジュールを宣言する必要があります(open Systemと記述)
//構文:<変数> <-Console.ReadLine()|> <データ型>
open System
hennsuu<-Console.ReadLine()|>int
```

### 変数の型

変数にはint,floatのような種類がいくつかあります\
F#には型推論機能があり、Cのように型指定する必要はありませんがプログラムを作っていると混乱\
する可能性があるので明記をオススメします

```fsharp
// 構文:<変数名>:<型>=<値>
let x:int=10
//この場合int型の変数xを宣言し、10を代入しました
```

主な型は下記の通りです

| 型名     | 種類                     |
| ------ | ---------------------- |
| bool   | ブール値(trueかfalseのみ)     |
| byte   | 8bit符号なし整数(0\~255)     |
| char   | UTF-16の1文字(0000\~ffff) |
| int    | 32bit整数                |
| uint   | 符号なし32bit整数            |
| bigint | 制限なし整数                 |
| float  | 64bit実数                |
| char   | １文字                    |
| string | 文字列                    |
| unit   | 実際の値が無い(voidとは少し違います)  |

その他のデータ型は[こちら](https://learn.microsoft.com/ja-jp/dotnet/api/system?view=net-7.0)の「構造体」より確認することが出来ます

{% hint style="info" %}
型変換を行う場合はfloat(x)のように、<データ型>(<変数>) と記述すると変換できます
{% endhint %}

### 式

変数を使用して四則演算や論理式の作成を行えます

| 種類   | 意味(使い方)                     |
| ---- | --------------------------- |
| +    | 加算(a+b)                     |
| -    | 減算(a-b)                     |
| \*   | 乗算(a\*b)                    |
| \*\* | べき乗(a\*\*b(aのb乗))　※a,bともに実数 |
| /    | 除算(a/b)                     |
| %    | 剰余(a%b(a/bの余り))             |

| 種類   | 意味(使い方)          |
| ---- | ---------------- |
| <    | 小なり(a\<b)        |
| <=   | 小なりイコール(a<=b)    |
| >    | 大なり(a>b)         |
| >=   | 大なりイコール(a>=b)    |
| =    | 等しい(a=b)         |
| <>   | 等しくない(a<>b)      |
| &&   | 論理積(a=0&\&b=0)   |
| \|\| | 論理和(a\<b\|\|a=0) |

### 変数の出力

変数の表示には「書式指定文字列」を使用する必要があります

| 種類 | 対象のデータ型 | 表示のされ方       |
| -- | ------- | ------------ |
| %B | 整数型     | 2進数          |
| %x | 整数型     | 16進進数        |
| %d | 整数型     | 符号付き10進数整数   |
| %f | 実数型     | 浮動小数(小数6桁まで) |
| %c | 文字      | 1文字          |
| %s | 文字列     | 文字列          |
| %A | 全てのデータ型 | 文字列          |

以下はx(=16)を様々なデータ型で出力するコードです

```fsharp
let x=16
//①整数で表示
printfn "%d\n" x

//②2進数で表示
printfn "%B\n" x

//③16進数で表示
printfn "%x\n" x 

//出力->16 10000 10
```

他にもPythonのように補間文字列を使用して変数を出力することが出来ます

```fsharp
//printfn $"{変数名}"と記述する
let x=16

printfn %"the val of x is{x}"
//出力->the val of x is 16
```

{% hint style="info" %}
文字列には更に改行やタブを空ける「文字列リテラル」があります\
(与力が無かったため詳しくは[こちらのリンク](https://learn.microsoft.com/ja-jp/dotnet/fsharp/language-reference/strings)をご覧ください....！)
{% endhint %}
