MMGamesロゴ  MMGames
Twitterシェアボタン  Facebookシェアボタン   
 English 

日本語命令が使える C言語実行環境
概要
ABOUT
C言語のキーワードや関数名を日本語に対応付けているため、日本語でのプログラミングができます。
日本語キーワードでプログラミングできるため、入門者にとってわかりやすくなっています。

しかし、文法や機能はC言語そのものです。
本環境で習得したプログラミング技術は、そのまま本格的なプログラミングに応用できます。
類似アプリ
OTHER
日本語命令に非対応の、一般的なC言語環境であるブラウザで動く C言語実行環境も用意しております。
Windows専用の完全なC言語プログラミング環境である学習用C言語開発環境も用意しております。
プログラミングエリア
INPUT

ファイル
FILE

普通のC言語から日本語C言語へ変換
TO JP

サンプルプログラム
SAMPLE
すべて動作確認済みです

何もしないプログラム
整数 開始(空) { 戻る 0; }


「こんにちは世界」を表示するプログラム
#プラグイン <入出力>

整数 開始(空)
{
    表示("こんにちは世界");
    戻る 0;
}


数値の「100」を表示するプログラム
#プラグイン <入出力>

整数 開始(空)
{
    表示("%d", 100);
    戻る 0;
}


加減乗除を計算するプログラム
#プラグイン <入出力>

整数 開始(空)
{
    表示("%d\n", 10 + 3);
    表示("%d\n", 10 - 3);
    表示("%d\n", 10 * 3);
    表示("%d\n", 10 / 3);
    表示("%d\n", 10 % 3);
    戻る 0;
}


実数で加減乗除を計算するプログラム
#プラグイン <入出力>

整数 開始(空)
{
    表示("%f\n", 10.0 + 3.0);
    表示("%f\n", 10.0 - 3.0);
    表示("%f\n", 10.0 * 3.0);
    表示("%f\n", 10.0 / 3.0);
    戻る 0;
}


変数に10を代入して表示するプログラム
#プラグイン <入出力>

整数 開始(空)
{
    整数 value; /* 変数宣言の部分 */
    value ← 10; /* 代入の部分 */
    表示("%d\n", value); /* 表示の部分 */
    戻る 0;
}


変数に代入した値で加減乗除を計算するプログラム
#プラグイン <入出力>

整数 開始(空)
{
    整数 left;
    整数 right;
    left ← 10;
    right ← 3;
    表示("%d\n", left + right);
    表示("%d\n", left - right);
    表示("%d\n", left * right);
    表示("%d\n", left / right);
    表示("%d\n", left % right);
    戻る 0;
}


実数の変数に代入した値で加減乗除を計算するプログラム
#プラグイン <入出力>

整数 開始(空)
{
    実数 left, right;
    left ← 10;
    right ← 3;
    表示("%f\n", left + right);
    表示("%f\n", left - right);
    表示("%f\n", left * right);
    表示("%f\n", left / right);
    戻る 0;
}


キーボードから入力した数値を表示するプログラム
#プラグイン <入出力>

整数 開始(空)
{
    整数 data;
    キーボード入力("%d", &data); /* 入力部分 */
    表示("%d\n", data);
    戻る 0;
}


キーボードから入力した2つの数値の範囲の合計値を計算して表示するプログラム
#プラグイン <入出力>

整数 開始(空)
{
    整数 min, max, sum;

    /* 入力部分 */
    表示("最小値と最大値を , で区切って入力して下さい。:");
    キーボード入力("%d , %d", &min, &max);

    /* 計算部分 */
    sum ← (min + max) * (max - min + 1) / 2;

    /* 表示部分 */
    表示("%d~%d の合計は %d です。\n", min, max, sum);
    戻る 0;
}


キーボードから入力した点数が100点を超えるなら修正するプログラム
#プラグイン <入出力>

整数 開始(空)
{
    整数 score;
    表示("点数を入力して下さい:");
    キーボード入力("%d", &score);

    もし(score > 100)
    {
        表示("入力が 100 より大きいので修正します。\n");
        score ← 100;
    }

    表示("点数は %d 点です。\n", score);
    戻る 0;
}


キーボードから入力した年齢に応じた入場料を表示するプログラム
#プラグイン  <入出力>
 
整数 開始(空) 
{
    整数 age;
    表示("年齢:");
    キーボード入力("%d", &age);

    もし(age <= 3) {
        表示("幼児:無料\n");
    } ではなくて (age <= 12) {
        表示("子供:250円\n");
    }違う{
        表示("大人:400円\n");
    }

    戻る 0;
}


キーボードから入力した出席番号に応じた生徒名を表示するプログラム
#プラグイン  <入出力>
 
整数 開始(空) 
{
    整数  no;
    キーボード入力( "%d", &no);

    場合分け(no) {
    場合  1:
        表示( "野比のび太\n");
        ブロック脱出; 
    場合  2:
        表示( "源静香\n");
        ブロック脱出; 
    場合  3:
        表示( "剛田武\n");
        ブロック脱出; 
    場合  4:
        表示( "骨川スネ夫\n");
        ブロック脱出; 
    その他: 
        表示( "そんな番号の人はいない\n");
        ブロック脱出; 
    }

    戻る  0;
}


キーボードから入力した金額の1割引から9割引までを計算して表示するプログラム
#プラグイン  <入出力>
 
整数 開始(空) 
{
    整数  i, price;

    キーボード入力( "%d", &price);

    回数繰り返し(i ← 1; i <= 9; i++) {
        表示( "%d割引 = %d\n", i,  (整数) (price * ((10.0 - i) / 10)));
    }

    戻る  0;
}


毎月倍額のお小遣いをもらったときに何ヶ月目で100万円を超えるか計算して表示するプログラム
#プラグイン <入出力>

整数 開始(空) 
{
    実数 money ← 1;
    整数 month ← 1;

    条件繰り返し(money < 1000000) {
        表示( "%02d 月目 : %7.0f 円\n", month, money);
        money *= 2;
        month++;
    }

    表示( "%02d 月目 に %7.0f 円となり、100万円を超える。\n", month, money);

    戻る 0;
}


キーボードから入力した半径の入力チェックを行ってから円の面積を計算して表示するプログラム
#プラグイン  <入出力>
 
整数 開始(空) 
{
    整数  r;
    実数  s;

    最低1回繰り返し{
        表示( "半径?:");
        キーボード入力( "%d", &r);
    }条件繰り返し(r < 0);

    s  ←  r * r * 3.14;
    表示( "面積は %f です。\n", s);

    戻る  0;
}


1%の金利を何回貰えば15000円を超えるか計算して表示するプログラム
#プラグイン <入出力>
 
整数 開始(空) 
{
    整数 year ← 0;
    実数 money ← 10000;

    条件繰り返し(money < 15000) {
        year++;
        money *= 1.01;
    }

    表示("%d , %f\n", year, money);

    戻る 0;
}


2つの文字列を結合して表示するプログラム
#プラグイン <入出力>
#プラグイン <文字列>
 
整数 開始(空)
{
    字 str1[12] ← "DRAGON";
    字 str2[] ← "QUEST";
    文字列連結(str1, str2);
    表示("%s\n", str1);
    戻る 0;
}


生徒のデータを表示するプログラム
#プラグイン <入出力>
#プラグイン <文字列>
 
型定義 データ
{
    整数 year;/* 学年 */
    整数 clas;/* クラス */
    整数 number;/* 出席番号 */
    字 name[64];/* 名前 */
    実数 stature;/* 身長 */
    実数 weight;/* 体重 */
} student;

空 student_print(student *data);
 
整数 開始(空)
{
    student data;

    data.year ← 3;
    data.clas ← 4;
    data.number ← 18;
    文字列コピー(data.name, "MARIO");
    data.stature ← 168.2;
    data.weight ← 72.4;

    student_print(&data);/* アドレスで呼び出す */

    戻る 0;
}

空 student_print(student *data)
{
    表示("[学年]:%d\n", data->year);/* ->記号でアクセス */
    表示("[クラス]:%d\n", data->clas);
    表示("[出席番号]:%d\n", data->number);
    表示("[名前]:%s\n", data->name);
    表示("[身長]:%f\n", data->stature);
    表示("[体重]:%f\n", data->weight);
    戻る;
}


ファイル「test.txt」に「こんにちは世界」と書き込むプログラム
#プラグイン <入出力>
#プラグイン <文字列>
 
型定義 データ
{
    整数 year;/* 学年 */
    整数 clas;/* クラス */
    整数 number;/* 出席番号 */
    字 name[64];/* 名前 */
    実数 stature;/* 身長 */
    実数 weight;/* 体重 */
} student;

空 student_print(student *data);
 
整数 開始(空)
{
    student data;

    data.year ← 3;
    data.clas ← 4;
    data.number ← 18;
    文字列コピー(data.name, "MARIO");
    data.stature ← 168.2;
    data.weight ← 72.4;

    student_print(&data);/* アドレスで呼び出す */

    戻る 0;
}

空 student_print(student *data)
{
    表示("[学年]:%d\n", data->year);/* ->記号でアクセス */
    表示("[クラス]:%d\n", data->clas);
    表示("[出席番号]:%d\n", data->number);
    表示("[名前]:%s\n", data->name);
    表示("[身長]:%f\n", data->stature);
    表示("[体重]:%f\n", data->weight);
    戻る;
}

対応表
TABLE
現時点で、動作未確認の命令も含まれています。
日本語命令 本来のC言語 使用例
#プラグイン #include #プラグイン <文字列>
表示 printf 表示("%d", 100);
= 整数 score ← 123;
もし if もし(score > 100) {}
整数 int 整数 score ← 123;
戻る return 戻る 0;
#置換 #define #置換 PI 3.14
ブロック脱出 break ブロック脱出;
場合 case case 5;
char 字 c ← 'A';
継続 continue 継続;
その他 default その他:
最低1回繰り返し do 最低1回繰り返し {} 条件繰り返し( i == 0 );
実数 double 実数 f = 1.2345678;
違う else もし (i == 0) {} 違う {};
リスト enum リスト COLOR { RED , BLUE , YELLOW };
公開 extern 公開 整数 value ← 123;
半精度実数 float 半精度実数 f ← 1.2f;
回数繰り返し for 回数繰り返し(i ← 1; i <= 9; i++) {}
例外処理 goto 例外処理 ERROR;
長整数 long 長整数 score ← 123;
短整数 short 短整数 short ← 1;
符号有 signed 符号有 整数 value ← -100;
符号無 unsigned 符号無 整数 value ← 100;
サイズ sizeof サイズ(array);
静的 static 静的 整数 value ← 1;
データ struct 型定義 データ { 整数 year; } student;
場合分け switch 場合分け(no) {}
型定義 typedef typedef 整数 tYen;
共用体 union 共用体 tUnion { 実数 x; 整数 y; };
void 整数 開始(空){}
条件繰り返し while 条件繰り返し(money < 1000000) {}
ではなくて else if もし(age <= 3) {} ではなくて (age <=12) {}違う{};
キーボード stdin ファイルから文字列を読む(buf, サイズ(buf), キーボード);
画面 stdout ファイルに文字を保存('A' , 画面);
エラー画面 stderr ファイルに文字を保存('E' , エラー画面);
ファイルを開く fopen file ← ファイルを開く("test.txt", "w");
ファイルを閉じる fclose ファイルを閉じる(file);
ファイルから文字を読む fgetc 整数 value ← ファイルから文字を読む( file );
ファイルから文字列を読む fgets ファイルから文字列を読む(buf, サイズ(buf), file);
ファイルに文字を保存 fputc ファイルに文字を保存('A',file);
ファイルに文字列を保存 fputs ファイルに文字列を保存("ABCDEF",file);
ファイルから数値を読む fread ファイルから数値を読む(buf, サイズ(整数), 10, file);
ファイルに数値を保存 fwrite ファイルに数値を保存(buf, サイズ(整数), 10, file);
ファイルに書式で文字列を保存 fprintf ファイルに書式で文字列を保存(file,"%d,%d",a,b);
ファイルから書式で文字列を読む fscanf ファイルから書式で文字列を読む(file, "%d,%d",&a,&b);
ファイルの位置を取得 ftell 整数 pos ← ファイルの位置を取得(file);
ファイルの位置を変更 fseek ファイルの位置を変更(file,0,SEEK_SET);
ファイルの最後を判定 feof もし(ファイルの最後を判定(file)) {}
ファイルのエラーを判定 ferror もし(ファイルのエラーを判定(file)) {}
ファイルのエラーを初期化 clearerr ファイルのエラーを初期化(file);
ファイルを強制保存 fflush ファイルを強制保存(file);
ファイルを開き直す freopen ファイルを開き直す(filename, "w", 画面);
ファイルの名前を変更 rename ファイルの名前を変更(oldfilename, newfilename);
ファイルを削除 remove ファイルを削除(filename);
キーボードから文字を読む getchar 字 c ← キーボードから文字を読む();
画面に文字を表示 putchar 画面に文字を表示(c);
キーボードから文字列を読む gets キーボードから文字列を読む(buf);
画面に文字列を表示 puts 画面に文字列を表示("こんにちは世界");
画面にエラーを表示 perror 画面にエラーを表示("エラー");
キーボード入力 scanf キーボード入力("%d", &data);
動的配列作成 malloc 字 *str ← (字 *)動的配列作成(100);
動的配列作成して0入れる calloc 字 *array ← (字 *)動的配列作成して0入れる(100);
動的配列のサイズ変更 realloc *array ← realloc(NULL, 100);
動的配列解放 free 動的配列解放(array);
絶対値 abs abs(-100);
文字列を実数値化 atof 実数 f ← 文字列を実数値化("123.45");
乱数 rand 戻る 1 + (整数)(rand() * (100 - 1 + 1.0) / (1.0 + RAND_MAX));
終了 exit 終了(0);
エラー終了 abort エラー終了();
終了処理登録 atexit atexit(funcexit);
環境変数 getenv 字* str ← 環境変数("PATH");
検索 bsearch 整数* result ← 検索( &target, array, サイズ(array)/サイズ(array[0]), サイズ(array[0]), funccompare );
ソート qsort ソート( array, サイズ(array)/サイズ(array[0]), サイズ(array[0]), funccompare );
コマンド実行 system コマンド実行("DIR");
アルファベット判定 isalpha もし(アルファベット判定('a'))
大文字判定 isupper もし(大文字判定('A'))
小文字判定 islower もし(小文字判定('a'))
数字判定 isdigit もし(数字判定('6'))
空白判定 isspace もし(空白判定(' '))
英数字判定 isalnum もし(英数字判定('d'))
制御文字判定 iscntrl もし(制御文字判定('\t'))
印刷文字判定 isprint もし(印刷文字判定('G'))
区切り文字判定 ispunct もし(区切り文字判定('['))
16進数判定 isxdigit もし(16進数判定('D'))
文字列コピー strcpy 文字列コピー(stra,strb);
指定文字数だけ文字列コピー strncpy 指定文字数だけ文字列コピー(stra,strb,4);
文字列連結 strcat 文字列連結(str1, str2);
指定文字数だけ文字列連結 strncat 指定文字数だけ文字列連結(str1, str2, 3);
文字数 strlen 整数 len ← 文字数(str);
同じ文字列か判定 strcmp もし (同じ文字列か判定(str1, str2) == 0) {}
指定文字数まで同じ文字列判定 strncmp もし (指定文字数まで同じ文字列判定(str1, str2 , 5 ) == 0) {}
文字列から文字検索 strchr 字 *c ← 文字列から文字検索(str, 'A');
文字列の後ろから文字検索 strrchr 字 *c ← 文字列の後ろから文字検索(str, 'A');
文字列から文字列検索 strstr 字 *str ← 文字列から文字列検索(str1, str2);
配列コピー memcpy 配列コピー(array1, array2, サイズ(array2));
安全な配列コピー memmove 安全な配列コピー(array1, array2, サイズ(array2));
配列に連続代入 memset 配列に連続代入(array, 0 , サイズ(array));
配列から検索 memchr 字 p ← 配列から検索(str, 'h', サイズ(str));
実数絶対値 fabs 実数 f ← 実数絶対値(-123.45);
平方根 sqrt 実数 value ← sqrt(4);
累乗 pow 実数 value ← 累乗(2.0, 3.0)
余り fmod 実数 value ← 余り(9,2);
サイン sin 実数 value ← サイン(1.2);
コサイン cos 実数 value ← コサイン(90);
タンジェント tan 実数 value ← タンジェント(10);
アークコサイン acos 実数 value ← アークコサイン(1);
アークサイン asin 実数 value ← アークサイン(1);
アークタンジェント atan 実数 value ← アークタンジェント(1);
ハイパボリックサイン sinh 実数 value ← ハイパボリックサイン(0);
ハイパボリックコサイン cosh 実数 value ← ハイパボリックコサイン(0);
ハイパボリックタンジェント tanh 実数 value ← ハイパボリックタンジェント(0);
実数を切り上げ ceil 実数 value ← 実数を切り上げ(123.4);
実数を切り捨て floor 実数 value ← 実数を切り捨て(123.4);
自然指数 exp 実数 value ← 自然指数(1);
自然対数 log 実数 value ← 自然対数(4);
常用対数 log10 実数 value ← 常用対数(100);
1970年からの経過秒数 time 長整数 sec ← 1970年からの経過秒数(NULL);
CPU時間 clock 長整数 cputime ← CPU時間();
時刻の引き算 difftime 実数 diff ← difftime(time2,time1);
現地時刻に変換 localtime time_t jptm ← 現地時刻に変換(1970年からの経過秒数(NULL));
国際時刻に変換 gmtime time_t gmtm ← 国際時刻に変換(1970年からの経過秒数(NULL));
時刻を文字列に変換 ctime 表示("%s", 時刻を文字列に変換(1970年からの経過秒数(NULL)));
条件で強制終了 assert 条件で強制終了(value < 1);
<入出力> #プラグイン <文字列>
<診断> #プラグイン <診断>
<文字> #プラグイン <文字>
<エラーチェック> #プラグイン <エラーチェック>
<実数情報> #プラグイン <実数情報>
<実数情報> #プラグイン <実数情報>
<言語> #プラグイン <言語>
<数学> #プラグイン <数学>
<可変引数> #プラグイン <可変引数>
<環境依存値> #プラグイン <環境依存値>
<便利> #プラグイン <便利>
<文字列> #プラグイン <文字列>
<時間> #プラグイン <時間>
Downloading...
技術概要
IMPLEMENTATION
ソースコードを置換してからコンパイラにわたすことにより、日本語命令を実装しています。
注意点
WARNING
現在は、ソースコードを置換するときに、正確なパースは行っておりません。
そのため、書き方によっては正しく置換されないことがあります。

現在は、変数名、関数名、の日本語での指定には対応していません。
権利表記
LICENCE
Powered by Emscripten https://emscripten.org/

Powered by Monaco Editor https://microsoft.github.io/monaco-editor/

picoc is published under the "New BSD License".
http://www.opensource.org/licenses/bsd-license.php
Copyright (c) 2009-2011, Zik Saleeba
All rights reserved.
https://gitlab.com/zsaleeba/picoc
オススメアプリ
RECOMMENDATION
シェア
SHARE
もしツールを気に入っていただけた場合、シェアしていただけるととても励みになります。
       

コメント
COMMENT

💬 コメント投稿欄を開く