Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
「PG0」触ってみた / debut PG0
Search
tobi00604
March 22, 2024
18
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
「PG0」触ってみた / debut PG0
tobi00604
March 22, 2024
More Decks by tobi00604
See All by tobi00604
PAST の過去問やってみた。 / practice PAST
tobi00604
0
38
ProjectEuler.netを少しだけ遊んでみた / debut ProjectEuler
tobi00604
0
20
MicrosoftのAI製品がCopilotに改名した件 / microsoft copilot brand
tobi00604
0
24
砂糖には防腐効果がある / preservative effect of sugar
tobi00604
0
60
Featured
See All Featured
[Rails World 2026] Durable orchestration on Rails: from continuation to workflow
palkan
1
410
世界の人気アプリ100個を分析して見えたペイウォール設計の心得
akihiro_kokubo
PRO
74
42k
How Software Deployment tools have changed in the past 20 years
geshan
2
34k
Measuring Dark Social's Impact On Conversion and Attribution
stephenakadiri
2
290
Between Models and Reality
mayunak
4
480
Bridging the Design Gap: How Collaborative Modelling removes blockers to flow between stakeholders and teams @FastFlow conf
baasie
0
710
Exploring anti-patterns in Rails
aemeredith
4
520
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
234
18k
brightonSEO & MeasureFest 2025 - Winning Strategies for Black Friday CRO & PPC - Christian Goodrich
cargoodrich
3
860
HTML-Aware ERB: The Path to Reactive Rendering @ RubyCon 2026, Rimini, Italy
marcoroth
5
750
Hiding What from Whom? A Critical Review of the History of Programming languages for Music
tomoyanonymous
3
1.3k
Building an army of robots
kneath
307
47k
Transcript
「PG0」触ってみた 学習用にピッタリなプログラミング言語だった! 2024/03/22
PG0とは • プログラミング言語のひとつ • 最大の特徴はとにかくシンプルな文法 • 初心者がつまづきがちな要素がとことん省かれている • プログラミング教室・新人研修・学校の授業などでの 活用を想定している、とのこと
• 本格的なシステム開発に使える言語ではないことに注意
PG0にある要素・ない要素 • 初心者の学習用に特化していることがよく分かる ある要素 ない要素 • 整数型 • 配列 •
If/else文による分岐 • while文による反復 など • 小数型、文字列型 • クラス • 関数 • ビット演算 など
順次・分岐・反復 • PG0はできることが限定的だからこそ、 構造化プログラミングを習得しやすい • 構造化プログラミングとは… • 3種類の基本制御、順次・分岐・反復を 組み合わせた構造でプログラミングしよう、 という考え方のことを指す言葉
• 計算機科学者のダイクストラが 1968年ごろに提唱したとされている
PG0を触ってみよう • Webブラウザ版が手軽で便利 ⇒ https://nakka.com/pg0/ • 余談だが、PG0を拡張させたPG0.5というものもある • 機能が豊富なのでプログラミング経験者向け •
画面描画APIを使えば簡単なゲーム制作もできる
PG0専用の実行ツールがすごい • 処理の進行状況が分かりやすいインターフェース • いわゆるステップ実行、変数のウォッチ、 ブレークポイントの設置といった操作ができる
さっそくなにかコーディングしてみる • JOI(日本情報オリンピック)2023/2024 二次予選 A問題 「カードゲーム 2」を解くコードを実装してみる • JOI公式サイト 問題文ページ
• https://www2.ioi-jp.org/joi/2023/2024-yo2/2024-yo2-t1.html
簡単に問題の紹介 • 数字が書かれているカードがいくつかある • 「数字が3ずつ離れている」ような3枚を選びたい • 選ぶことが可能かどうか判定するプログラムを実装せよ • 例えばカードが5枚あって 2,
4, 5, 7, 10 が書かれている場合 ⇒ 4, 7, 10 を選べるので “可能” (4と7の差は3で、7と10の差も3だから)
アルゴリズムの方針 • カード保持状況を管理する配列 b を用意する • 例えばカードが5枚あって 2, 4, 5,
7, 10 が書かれている場合 ⇒b[2], b[4], b[5], b[7], b[10] だけを 1 にする • この配列を使って、「i番目」「i+3番目」「i+6番目」を 変数 i をインクリメントしながらチェックしていけばOK b[0] b[1] b[2] b[3] b[4] b[5] b[6] b[7] b[8] b[9] b[10] 0 0 1 0 1 1 0 1 0 0 1
PG0特有の仕様に合わせる • 本来は、手持ちカードの情報を標準入力で受け取り、 判定結果の文字列(“Yes”/”No”)を標準出力するのだが… • PG0には標準入力や標準出力がない! • 今回は入力するデータをコード内にベタ書きした • 今回は判定結果の値をexit文で返すことにした
• PG0では文字列を扱えない! • 今回は “Yes”/”No” の代わりに整数 1/0 を使うことにした
None
入力データは ベタ書き 変数の中身を確認可能 ※今回の場合は、i=8 と なっていることから、 8, 11, 14 のカードが
選ばれたことが分かる exitされた結果は ここに表示される
オンライン上に保存 • 今回のコードをオンライン上に保存してみた • 固有のURLが割り当てられ、 誰でも参照可能、実行可能な状態となった • https://nakka.com/pg0/?cid=d231eeab-b968-4b90-bfc3-33aec2229925 • このコード公開機能は、研修や授業などの参加者同士が
お互いのコードをレビューしたりするとき役立ちそう!
終わりに • とにかくとっつきやすかった • 実際触ってみて「これ何だろう」と悩む場面が全くなかった • 言語仕様はもちろん、開発ツールが使いやすくて嬉しい • ビジュアルプログラミング(Scratchなど)を経験した子供が 自由研究の題材として使うのも良いかもしれない
• 皆様も触ってみてはいかがでしょうか? 以上