0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

c#で、なでしこ その17

Last updated at Posted at 2024-12-24

概要

c#で、なでしこ、やってみた。
c#な、なでしこ、見つけたので、msbuildでコンパイルしてみた。
練習問題やってみた。

練習問題

Forthインタープリタを書け。

方針

  • ユーザー関数使う。
  • 関数にglobal変数を持ち回りで実行する。
  • 数9を4個つかって1から15までの数を表す式を実行する。

サンプルコード



●実行(Sをspとstackで)
 Sを「 」で区切るしてAに代入。
 b = Aの配列要素数
 iを0からb - 1まで繰り返す
  もし、A[i]が「+」に等しいならば
   stack[sp - 1] = stack[sp - 1] + stack[sp]
   sp = sp - 1
  もし、A[i]が「-」に等しいならば
   stack[sp - 1] = stack[sp - 1] - stack[sp]
   sp = sp - 1
  もし、A[i]が「*」に等しいならば
   stack[sp - 1] = stack[sp - 1] * stack[sp]
   sp = sp - 1
  もし、A[i]が「/」に等しいならば
   stack[sp - 1] = stack[sp - 1] / stack[sp]
   sp = sp - 1
  もし、A[i]が「dup」に等しいならば
   sp = sp + 1
   stack[sp] = stack[sp - 1]
  もし、A[i]が「drop」に等しいならば
   sp = sp - 1
  もし、A[i]が「.」に等しいならば
   stack[sp]を表示
  もし、A[i]が「9」に等しいならば
   sp = sp + 1
   stack[sp] = 9


sp = 0
stack[0] = 0
「9 9 - 9 9 / .」をspとstackで実行
「9 9 / 9 9 / + .」をspとstackで実行
「9 9 + 9 + 9 / .」をspとstackで実行
「9 9 9 + 9 / dup + .」をspとstackで実行
「9 9 9 + 9 / dup + - .」をspとstackで実行
「9 dup 9 + 9 + 9 / - .」をspとstackで実行
「9 9 9 + 9 / - .」をspとstackで実行
「9 9 9 drop 9 / - .」をspとstackで実行
「9 9 - 9 * 9 + .」をspとstackで実行
「9 9 / 9 dup 9 / + .」をspとstackで実行
「9 9 9 + 9 / + .」をspとstackで実行
「9 dup 9 9 + + 9 / + .」をspとstackで実行
「9 9 9 + 9 / dup + + .」をspとstackで実行
「9 dup 9 9 + 9 / dup + - + .」をspとstackで実行
「9 dup dup 9 + 9 + 9 / - + .」をspとstackで実行




実行結果

なんで、これで、動くんだろ。

>cnako2 forth.nako
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

以上。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?