PG0 - チュートリアル

はじめに

プログラミング学習を目的としたプログラミング言語です。

プログラミングに最低限必要となる基本構造(順次、分岐、反復)の理解を目的としています。
そのため非常に割り切った言語仕様となっています。
分岐や反復の方式は一種類ずつとし、扱える型は整数のみとしています。

プログラミングが初めての方は「PG0でプログラミング入門」でプログラミングの基礎を学ことができます。

PG0の使い方

PG0の実行画面
エディタ
変数
コンソール

PG0の実行画面(スマホ)
エディタ
変数
コンソール

エディタ

プログラムを書く部分となります。
プログラム実行中は実行している行が水色になります。
プログラム実行中は編集することはできません。

変数

プログラム実行中の変数と変数の中の値を表示します。
実行している行により変更された値は赤くなります。
配列の場合は配列の中身を開閉することができます。

コンソール

実行に関する情報(実行、停止、終了)を表示します。
exitで変数を指定した場合はコンソールに実行結果として内容が表示されます。
プログラムにエラーがある場合はコンソールに赤字で表示されます。

実行

エディタに書かれたプログラムを一行ずつ自動実行します。

ステップ実行

エディタに書かれたプログラムをステップ実行します。
再度ステップ実行を選択すると次の行を実行します。
この機能を使うと手動でプログラムを一行ずつ実行することができます。

カーソル行まで実行

エディタのカーソルがある行までプログラムを実行します。

停止

実行中のプログラムを停止します。停止したプログラムの再開はできません。
実行中のプログラムを一時停止したい場合は、ステップ実行を選択してください。

実行速度

プログラムを一行ずつ自動実行するときの速度を選択します。
「待ち無し」を選択するとプログラム終了まで一気に実行します。

変数

変数は数値を代入するための入れ物です。
変数には = を使用して数値、変数、計算結果を入れます。


a = 10 //変数aに10を代入

変数は使うときに用意されますが、var を使って変数を明示的に用意することもできます。


var i, j = 100 //「,」で複数指定可能

上記をエディタに入力して実行した結果は以下になります。

配列

配列は変数を連続的に並べた入れ物です。
配列を扱うには変数の後に[]を指定します。


a[0] = 100 //先頭
a[1] = 200 //2番目
i = 5
b[i] = 10 //インデックスに変数を指定

上記をエディタに入力して実行した結果は以下になります。

配列の初期化を行うには {値1,値2,値3,...} を代入します。


a[] = {1,2,3} //a[0] = 1;a[1] = 2;a[2] = 3; と同じ意味
b[] = {1,2,{10,20,{100,200,300}},3} //多次元の初期化

上記をエディタに入力して実行した結果は以下になります。

基本構造

順次

一つの文は一行で記述します。
文は上から順番に実行されます。
文では変数や数値の計算や、変数への代入を行います。

計算式説明
c = a + ba と b の合計を c に代入
c = a - ba から b を引いた残りを c に代入
c = a * ba と b の積を c に代入
c = a / ba と b の商を c に代入
c = a % ba を b で割った余りを c に代入



a = 1 //1番目に実行、変数aに1を代入
b = a + 2 //2番目に実行、変数bにa + 2の結果である3を代入

上記をエディタに入力して実行した結果は以下になります。
ブロックは {~} で括って複数の文をまとめて一つの文として扱う事ができます。


{
	a = 1
	b = a + 2
}

ブロックの中で用意された変数はブロックを抜ける時に解放されます。


{
	var a = 1
}
b = a	//ブロック内のaは解放されているため、bには0が入る

解放されないようにするにはブロックの外で変数を用意します。


var a
{
	a = 1
}
b = a	//aはブロックの外で用意されているため、bには1が入る

分岐

if

if文は条件により文の実行を制御します。


if (式) {}

式の条件が一致する場合に文を実行し、一致しない場合は文を実行しません。
式では変数や数値を比較します。

説明
a == ba と b が等しい時に一致
a != ba と b が等しくない場合に一致
a < ba が b より小さい時に一致
a > ba が b より大きい時に一致
a <= ba が b より小さいか等しい時に一致
a >= ba が b より大きいか等しい時に一致
a && ba と b の両方が一致している時に一致
a || ba か b のどちらかが一致している時に一致



a = 2
b = 1
if (a > b) {
	b = a //aがbより大きい時に実行
}

上記をエディタに入力して実行した結果は以下になります。

else

if文で条件が一致しない場合の文を指定します。
if文で文が実行された場合はelse文に続く文は実行されません。


a = 1
b = 2
if (a > b) {
	b = a  //aがbより大きい時に実行
} else {
	a = b  //aがbより小さいか等しい時に実行
}

上記をエディタに入力して実行した結果は以下になります。

反復

while

while文は式によりループを行います。


while (式) {}

式の結果が一致する間、文を実行し続けます。


i = 1
while (i <= 10) { //1から10までループ
	i = i + 1
}

上記をエディタに入力して実行した結果は以下になります。

その他

実行中のプログラムを終了する場合は exit を書きます。


exit

exit には変数を設定でき、設定した変数の内容は実行結果としてコンソールに表示されます。


i = 100
exit i

上記をエディタに入力して実行した結果は以下になります。

pg0.txt」にPG0の言語仕様について記載してあります。

pg0.5.txt」にPG0.5の言語仕様について記載してあります。
PG0.5はPG0を拡張して通常のプログラミング言語と同等の機能を持ったプログラミング言語です。
メニューの設定で実行モードに「PG0.5」を選択するとPG0.5のモードでプログラムを実行します。

PG0.5用のライブラリを利用すると画面描画、サウンド再生や数値計算を行うことができるようになります。
ライブラリ リファレンス

サンプル

PG0用のサンプルプログラムです。PG0で実行する事ができます。

1_var.pg0

変数を使ったサンプルです。


a = 1
b = 2
c = a + b
exit c

2_array.pg0

配列を使ったサンプルです。


a[] = {1,2,3}
a[3] = 4
b[] = {5,6,7}
c[] = a + b
exit c

3_if.pg0

if文を使ってうるう年を判定するサンプルです。


// うるう年判定
var year = 2018
var leapYear
if (year % 400 == 0 ||
	(year % 4 == 0 && year % 100 != 0)) {
	// うるう年
	leapYear = 1
} else {
	leapYear = 0
}
exit leapYear

4_while.pg0

while文を使って1から10までの足し算をするサンプルです。


// 1から10までの足し算
cnt = 0
i = 1
while (i <= 10) {
	cnt = cnt + i
	i = i + 1
}
exit cnt

5_max.pg0

配列の中から最大の値を探すサンプルです。


// 最大値の検索
num[] = {3,4,56,25,47,72,2,23,25,9}
size = 10
max = num[0]
i = 1
while (i < size) {
	if (max < num[i]) {
		max = num[i]
	}
	i = i + 1
}
exit max

6_sort.pg0

配列の中身を小さい順に並べ替えるサンプルです。


// 配列のソート
num[] = {3,4,56,25,47,72,2,23,25,9}
size = 10
i = 0
while (i < size - 1) {
	j = size - 1
	while (j > i) {
		if (num[j - 1] > num[j]) {
			tmp = num[j]
			num[j] = num[j - 1]
			num[j - 1] = tmp
		}
		j = j - 1
	}
	i = i + 1
}
exit num

リンク


閉じる
Copyright © 1996- by Ohno Tomoaki. All rights reserved.