PyPENの文法

戻る

数は整数と実数が区別される。小数部分を含まない数は整数とする。例:3.0は実数

文字列は""または''または「」で囲む(""中の"は\",''中の'は\'と表記する)。

真偽値はTrueとFalseのどちらかである。

[1,2,3]のような配列も使える。

{"x":3, "y":4}のような辞書も使える。

変数

変数を宣言することはできない。値を代入した時点で変数は生成される。

変数名の後に番号や文字列をいれた[ ]をつけて配列や辞書を使うことができる。 二次元以上の配列の要素はa[1,2]またはa[1][2]などのように使う。

計算

計算の演算子

+,-,*,/,//,%,**が使える。*は掛け算,/と//は割り算,%は割り算の余り(整数どうしに限る)を表す。 ただし/の割り算は余りを出さない割り算(結果は実数)で,//の割り算は商の整数部分(結果は整数)を表す。 また,**はべき乗を表す。

ビット演算は&,|,^,~,<<,>>が使える。

「《整数》個の《値》」で配列をつくることもできる。
例:a=10個の0

条件式

2つの値を==,≠,!=,>,<,≧,>=,≦,<=で比べることができる。 !=は≠,>=は≧,<=は≦とそれぞれ同じである。 条件式を"and","or"でつないだり,"not"を前置することで否定することができる。 "not","and","or"の順に優先的に結合され,同じものどうしは左から順に評価される。 3つ以上の値を比べる場合は,たとえばa<b<cをa<b and b<cのように評価する。

配列の中にある値が含まれるかどうかを"《配列》の中に《値》"で調べることができる。

文字列結合

"と"で文字列を結合することができる。数値は文字列に変換してから結合される。 例:"こん"と"にちは"→"こんにちは"。1と2→12

関数

次のような関数を使うことができる。文字列の位置や番号は0から始まる。

関数意味使用例
abs(《値》)絶対値abs(-3)→3
random()乱数random()→0以上1未満の乱数(実数)
random(《整数》)乱数random(5)→0以上5以下の乱数(整数)
ceil(《実数》)小数部分切り上げceil(3.5)→4
floor(《実数》)小数部分切り捨てfloor(3.5)→3
round(《実数》)小数部分四捨五入round(3.5)→4
sin(《実数》)三角関数のサイン(単位はラジアン)sin(0)→0
cos(《実数》)三角関数のコサイン(単位はラジアン)cos(0)→1
tan(《実数》)三角関数のタンジェント(単位はラジアン)tan(0)→0
asin(《実数》)逆三角関数のアークサイン(単位はラジアン)asin(1)→1.5707963267948966
acos(《実数》)逆三角関数のアークコサイン(単位はラジアン)acos(0)→1.5707963267948966
atan(《実数》)逆三角関数のアークタンジェント(単位はラジアン)atan(1)→0.7853981633974483
atan2(《実数》,《実数》)逆三角関数のアークタンジェント(単位はラジアン)atan(1,0)→1.5707963267948966
sqrt(《実数》)ルートsqrt(2)→1.414…
log(《実数》)自然対数log(10)→2.302…
exp(《実数》)指数関数(底は自然対数の底)exp(1)→2.718…
pow(《実数》,《実数》)累乗pow(2,3)→8
length(《文字列》)文字列の長さ(文字数)length("こんにちは")→5
length(《配列》)配列の長さlength([1,2,3,4,5])→5
append(《文字列》,《文字列》)文字列結合append("Wa","PEN")→"WaPEN"
substring(《文字列》,《開始位置》)部分文字列(最後まで)substring("こんにちは",2)→"にちは"
substring(《文字列》,《開始位置》,《長さ》)部分文字列(長さ指定)substring("こんにちは",2,1)→"に"
split(《文字列》)文字列分割split("abcd")→["a","b,"c","d"](配列)
split(《文字列》,《区切文字列》)文字列分割split("a:b:c:d",":")→["a","b,"c","d"](配列)
extract(《文字列》,《区切文字列》,《番号》)文字列分割(番号指定)extract("a:b:c:d",":",2)→"c"
insert(《文字列》,《位置》,《文字列》)文字列挿入insert("こんは",2,"にち")→"こんにちは"
replace(《文字列》,《位置》,《長さ》,《文字列》)文字列置換replace("こんにちは",2,2,"ばん")→"こんばんは"
整数(《値》)整数への変換整数(3.5)→3,整数("3.14")→3
実数(《値》)実数への変換実数(3)→3.0,実数("3.14")→3.14
文字列(《値》)文字列への変換文字列(3.5)→"3.5",文字列(1=1)→"true"
真偽(《値》)真偽への変換真偽(0)→false,整数(1)→true

代入

《変数》=《値》
        

代入

"《配列変数》に《値》を追加する","《配列変数》に《配列値》を連結する"という構文も用意されている。

a=[0,1,2,3,4,5]
aに6を追加する
aに[7,8]を連結する
        

+=や&=のような複合代入演算子も使える。

入力

《変数》に整数を入力する
        

代入

"整数"の部分は"実数""文字列""真偽"にすることもできる。

出力

表示する(《値》)
《値》を表示する
        

表示

改行無しで表示する(《値》)
《値》を改行無しで表示する
        

表示

《値》に配列を指定すると,配列の全要素が表示される。値をコンマ区切りで複数指定すると,それらが空白区切りで表示される。

分岐(選択)

もし《条件》ならば:
    《命令》
        
もし《条件》ならば:
    《命令》
そうでなければ:
    《命令》
        
「そうでなくもし」を使うこともできるが,これを使うとフローチャートの表示は行わない。
もし《条件》ならば:
    《命令》
そうでなくもし《条件》ならば:
    《命令》
そうでなければ:
    《命令》
        

分岐

ループ

〜の間

《条件》の間:
    《命令》
        

ループ

増やしながら・減らしながら

《変数》を《値》から《値》まで《値》ずつ増やしながら:
    《命令》
        

ループ

《変数》を《値》から《値》まで《値》ずつ減らしながら:
    《命令》
        

ループ

配列の要素を取り出しながら

《配列》の要素《変数》について繰り返す:
    《命令》
        

ループ

"繰り返しを抜ける"命令で繰り返しから抜けることができる。

ファイル操作

関数・命令意味
openr(《ファイル名》)ファイルを読込用にオープンする。戻り値はファイル番号
openw(《ファイル名》)ファイルを書込用にオープンする。戻り値はファイル番号
opena(《ファイル名》)ファイルを追記用にオープンする。戻り値はファイル番号
getline(《ファイル番号》)ファイルから1行読み込む。戻り値は文字列(改行含む)
getchar(《ファイル番号》)ファイルから1文字読み込む。戻り値は文字列
putline(《ファイル番号》,《文字列》)ファイルに文字列と改行を書き込む
putstr(《ファイル番号》,《文字列》)ファイルに文字列と改行を書き込む
close(《ファイル番号》)ファイルをクローズする

書込・追記用ファイルはクローズしないと保存しないことに注意。

グラフィック関係などの命令

命令英語表記補足
描画領域開く(《幅》,《高さ》)gOpenWindow1つしか開けない
描画領域閉じる()gCloseWindow
描画領域全消去()gClearWindow
線色設定(《赤》,《緑》,《青》)gSetLineColor各色の数は0〜255
塗色設定(《赤》,《緑》,《青》)gSetFillColor
文字色設定(《赤》,《緑》,《青》)gSetTextColor
線太さ設定(《太さ》)gSetLineWidth
文字サイズ設定(《サイズ》)gSetTextSize
文字描画(《文字列》,《x》,《y》)gDrawText(x,y)は文字列の左下の座標
点描画(《x》,《y》)gDrawPoint
線描画(《x1》,《y1》,《x2》,《y2》)gDrawLine
矩形描画(《x》,《y》,《幅》,《高さ》)gDrawBox(x,y)は矩形の左上の座標
矩形塗描画(《x》,《y》,《幅》,《高さ》)gFillBox
円描画(《x》,《y》,《半径》)gDrawCircle(x,y)は中心の座標
円塗描画(《x》,《y》,《半径》)gFillCircle
楕円描画(《x》,《y》,《幅》,《高さ》)gDrawOval(x,y)は楕円に外接する長方形の左上の座標
楕円塗描画(《x》,《y》,《幅》,《高さ》)gFillOval
弧描画(《x》,《y》,《幅》,《高さ》,《開始角》,《終了角》,《閉じ方》)gDrawArc(x,y)は楕円に外接する長方形の左上の座標
角度の単位は度
閉じ方は0:閉じない,1:弦,2:半径
弧塗描画(《x》,《y》,《幅》,《高さ》,《開始角》,《終了角》,《閉じ方》)gFillArc
棒グラフ描画(《幅》,《高さ》,《値の配列》)gBarplot棒グラフ描画(100,100,[30,10,20])→棒グラフ
線グラフ描画(《幅》,《高さ》,《値の配列》)gLineplot線グラフ描画(100,100,[[30,10,20],[10,30,20]])→棒グラフ
グラフ描画(《レイアウト情報》,《値の配列》)gDrawGraph使い方が難しいので別マニュアルで説明する
グラフ消去()gClearGraphgDrawGraphで表示したグラフを消去する
《ミリ秒数》 ミリ秒待つ(今はタイミングがおかしい)
変数を確認する全変数を表示する
何もしない何もしない

棒グラフ描画,線グラフ描画の《値の配列》は《値の配列の配列》でも良い。

関数・手続きの定義

注意:関数や手続きを定義したプログラムについては,フローチャートの実装がまだできていない。 この状態で間違ってフローチャートを変更するとプログラムがごそっと消えてしまうので, 関数や手続きを定義するプログラムではフローチャートの表示をしないことをお勧めします。

関数 hoge(x):
     …
    《値》を返す
    
手続き hoge(x):
    …
    手続きを抜ける
    …
    

関数は値を返さないとエラーになる。手続きは値を返すことができない。 関数・手続きともに,引数を取らない場合であってもカッコが必要(定義するときも呼び出すときも)。

Python風のインデントが合ってないとエラーになります。インデントする前の行末は":"が必要です。