Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Produire
Search
HN410
October 09, 2020
Programming
0
2.6k
Produire
HN410
October 09, 2020
Tweet
Share
More Decks by HN410
See All by HN410
Lex, YACC講習会
hn410
0
1k
Brainf*ckで15パズル
hn410
0
700
Android入門
hn410
0
1.1k
計算量理論
hn410
0
1.4k
Deeplearning from almost scratch
hn410
0
1.4k
Other Decks in Programming
See All in Programming
Monixと常駐プログラムの勘どころ / Scalaわいわい勉強会 #4
stoneream
0
300
AppRouterを用いた大規模サービス開発におけるディレクトリ構成の変遷と問題点
eiganken
1
200
Оптимизируем производительность блока Казначейство
lamodatech
0
770
今年一番支援させていただいたのは認証系サービスでした
satoshi256kbyte
1
260
Go の GC の不得意な部分を克服したい
taiyow
3
890
KMP와 kotlinx.rpc로 서버와 클라이언트 동기화
kwakeuijin
0
240
【re:Growth 2024】 Aurora DSQL をちゃんと話します!
maroon1st
0
830
rails statsで大解剖 🔍 “B/43流” のRailsの育て方を歴史とともに振り返ります
shoheimitani
2
980
PHPカンファレンス 2024|共創を加速するための若手の技術挑戦
weddingpark
0
100
KubeCon NA 2024の全DB関連セッションを紹介
nnaka2992
0
100
短期間での新規プロダクト開発における「コスパの良い」Goのテスト戦略」 / kamakura.go
n3xem
2
190
暇に任せてProxmoxコンソール 作ってみました
karugamo
2
760
Featured
See All Featured
StorybookのUI Testing Handbookを読んだ
zakiyama
28
5.4k
GraphQLの誤解/rethinking-graphql
sonatard
67
10k
jQuery: Nuts, Bolts and Bling
dougneiner
61
7.6k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
171
50k
The Invisible Side of Design
smashingmag
299
50k
Producing Creativity
orderedlist
PRO
342
39k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
28
2.1k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
28
9.2k
Being A Developer After 40
akosma
89
590k
Rebuilding a faster, lazier Slack
samanthasiow
79
8.7k
Speed Design
sergeychernyshev
25
690
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
44
9.3k
Transcript
プロデル超入門 19 HN_410
インストール方法 ▪ Windows…https://rdr.utopiat.net/files/index.htmlから、インストー ラかZipファイルのどちらかお好きなほうをダウンロード→インス トールor解凍 ▪ Mac Linux …Monoというフレームワーク(https://www.mono- project.com/)上で動作する。https://rdr.utopiat.net/files/mono.html
からダウンロード
プロデルとは…? ▪ C++やJava,PHPなどの一般的なプログラミング言語にある文 法を、日本語文法に沿って当てはめて、仕様書のような文章 でプログラムを書けることが特徴です。 ▪ 「日本語プログラミング言語」というと、一部で教育向け・ 初心者向けと思われる方もいらっしゃいますが、プロデルは これにあたりません。 以上
よくある質問より
コード例:Javaの(疑似)コード Mail notifyingMail = new Mail(); notifyingMail.subject = “定例会議の開催”; notifyingMail.address
= “
[email protected]
”; notifyingMail.contents = “来週月曜日の会議は午前10時からです。”; notifyingMail.setHeader(REPLYTO, “
[email protected]
”); sendMail(notifyingMail, mailAccount);
コード例:プロデルのコード …公式リファレンスより お知らせメールという送信メールを作る お知らせメールの件名は、「定例会議の開催」 お知らせメールの宛先は、「
[email protected]
」 お知らせメールの本文は、「来週月曜日の会議は午前10時からです。」 お知らせメールで「Reply-To」というヘッダ情報へ「
[email protected]
」を設定する お知らせメールをメールアカウントから送る
プロデルの特徴 (私の主観) 長所 ▪ 前述のように、日本語に近い構文でプログラミングができ、プログラミングや英語未修 者でもコードを理解しやすい。 ▪ GUIソフトが簡単に作れる ▪ 環境構築が楽(Windows)
短所 ▪ プログラミングに慣れた人は ・いちいち日本語で書くのが煩わしい ・一般的なプログラミングの仕様の中で日本語の感覚に合わないものが修正されている ので、逆に紛らわしいし、打ちにくい ▪ 構造が複雑になると上のメリットが薄れる ▪ 利用者人口が少ない →資料が少ない →……
例のやつ ▪ Designer.exe を起動 ▪ エディタに 「Hello, world!」を表示 と書く。 ▪
上のツールバーの実行ボタン(▶)を押す
基本の構造 ▪ プロデルの文 「Hello, world!」 を 表示する ▪ 引数は適切な助詞とのペアでなくてはならない。 ▪
引数と助詞のペアは複数でもよいが、動詞の後ろには置けない。 ▪ 動詞の送り仮名は(ほかに解釈の余地がなければ)なんでも可 (「~しない」にすると…)。 ▪ 文の終わりは改行か句点。 引数 助詞 動詞
代入文、変数宣言文 ▪ 基本データ型は宣言の必要がなく、勝手に解析して変数の型を決めてくれ る。 ▪ 変数名は漢字、カタカナ、全角英数字も使えるが、一部制約あり。 また、全角半角、大文字小文字を区別しない。 ▪ 「は」の後ろには読点を入れることをお勧めします(正しく解析してくれ ない…)
▪ 宣言したいときは以下のようにする。 【値:整数】 (例) 値は、2.72 メッセージ=「Hello」
データ型 ▪ 数値型…整数、長整数など ▪ 文字列型 (例) 2, 3, 3.14, 33.4
// (全角半角問わない) (例) 「Hello」 番号は,410 「HN_[番号]です。」を表示
データ型 ▪ 配列型 …インデックスに注意。1から始まる ▪ 辞書型 (例) 初心者向き言語は、{「Brainf*ck」,「Whitespace」,「プロデル」} 初心者向き言語(3)を表示 (例)
逆評定は、{物理実験=「大鬼」,化学実験=「仏」} 逆評定(「物理実験」)を表示
繰り返し文 ※公式リファレンスより引用 その他、While文、For文、For-each文に相当するものを含め、たくさん 用意されている。 (例) 3回、繰り返す 「わん」を表示する 繰り返し終わり
判断文、条件式 ▪ 使う記号、処理順序に注意 (例) もし点数が80以上なら、 「優」を表示 他でもし、点数≧65なら、 「良」を表示 他でもし、点数が50より大きいまたは(出席回数=12かつ点数≠0)なら、 「可」を表示
そうでなければ、 「不可」を表示 もし終わり
真偽値型 ▪ 条件式は真偽値型という特殊な型を返す。 ▪ 真偽値型は文字列型にしかキャスト(逆は不可?)できず、比較なども できない。 (例) もし〇なら、 「これは絶対表示される」を表示 もし終わり
(例) ×を表示 もし〇=〇なら、 「コンパイルエラーで動かない」を表示 もし終わり
手順 ▪ 関数のことを手順とよぶ。 ▪ 引数を受け取る際は、組となる助詞も書く。 (例) 「日本語」に翻訳 [言語]に翻訳する手順 「[言語]は非対応です」を表示 終わり
種類 ▪ クラスに相当するもの。※インスタンスはそのまま呼ぶ ▪ 変数、関数のほか、設定項目、イベント手順なども持つ(今回は省略) ▪ 「とは」のあとに読点は入れないこと。変数の宣言、代入と勘違いされる。 (例) ソフトとは ウィンドウであるメインウィンドウを持つ
自分が[言語]に対応する手順 「[言語]は非対応です」を表示 終わり 終わり
種類 ▪ インスタンスの生成、変数や手順へのアクセス例 (例) テストウィンドウというウィンドウを作る hogeソフトというソフトを作る hogeソフトのメインウィンドウは、テストウィンドウ hogeソフトが「日本語」に対応しない // 対応する
と同じ動作をする // 別の生成方法 hogeソフトというソフト(メインウィンドウ テストウィンドウ)を作る
設定項目 ▪ オブジェクト変数にエイリアスとしてセッターゲッターを定義する (例) ソフトとは ウィンドウであるメインウィンドウを持つ 画面という属性 設定する手順 メインウィンドウは、設定値 終わり
取得する手順 メインウィンドウを返す 終わり 終わり hogeソフトというソフトを作る hogeソフトの画面は、テストウィンドウ hogeソフトの画面を表示 hogeソフトのメインウィンドウを表示
コンストラクタ ▪ 作る文でインスタンスが作られる際に実行される、()で入力を 受け取ることもできる。 ▪ 同様に、「終わりの手順」でデストラクタも定義できる。 (例) hogeソフトというソフト(テストウィンドウ)を作る ソフトとは メインウィンドウを持つ
はじめ(入力)の手順 メインウィンドウは入力 終わり 終わり
イベント手順 ▪ あるイベントが起こった時の手順を定義できる ▪ 書式は、 《変数名》の《イベント手順名》時 《変数名》が《イベント手順名》時 ▪ 「この時の《変数名》」と書くことで、情報を入力として受け取 れる
(例) テストソフトというソフトを作る ソフトとは ウィンドウを継承する その位置と大きさは、{200,100,500,400} 終わり テストソフトがマウスのボタンが押された時の手順 この時のボタンを表示 終わり
種類の継承 ▪ 種類を定義する際に「《もとの種類の名前》を継承する」と書けば、 その種類を継承した種類ができる。 ▪ 継承できる種類は一つの種類につき1つまで。 (例) 自作ソフトを表示 待機 自作ソフトとは
ウィンドウを継承する その位置と大きさは、{200,100,500,400} 終わり
メンバのアクセス範囲 ▪ 以下の識別子を変数や手順に付けることで、アクセス範囲の制限ができる。 ・ + 変数へ設定・取得できる範囲は制限されません。(Public) ・ - 同じ種類にある手順からのみ利用することが可能です。(Private) ・
# 同じ種類にある手順や継承された種類にある手順からのみ利用す ることが可能です。(Protected) ・ (なし) 通常は + と同じ 公式リファレンスより (例) 自作ソフトとは +メインウィンドウ -OKボタン: ボタン 終わり
それ ▪ 「それ」は、直前に実行された手順の戻り値を指す。 ▪ 「それの」を省略して「その」も使える。 ▪ 戻り値がない手順が実行された場合は、「それ」が指す値は変わらな い。 (例) 自作ソフトというソフトを作る
そのメインウィンドウは、無 それが「日本語」に対応しする
実践例 ▪ 簡単な終了ボタン付きのウィンドウ (例) テストというウィンドウを作る その位置と大きさは、{200,100,500,400} それへ終了というボタンを作る その位置と大きさは、{200、300、100,30} その内容は、「終了」 テストを表示する
待機する 終了がクリックされた時の手順 テストを閉じる 終わり
まとめ ▪ プロデルはオブジェクト指向の言語を日本語化したようなもの ▪ 日本語の感覚に合わせているので、プログラミング特有の仕様は修正 されている ▪ プロデルがお勧めなのは… ・プログラミング未修者に短いアルゴリズムの説明をしたいとき ・英語未修者で本格的にプログラミングをやるつもりはないが、
ちょっとしたソフトを作りたい人