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.5k
Produire
HN410
October 09, 2020
Tweet
Share
More Decks by HN410
See All by HN410
Lex, YACC講習会
hn410
0
790
Brainf*ckで15パズル
hn410
0
580
Android入門
hn410
0
1k
計算量理論
hn410
0
1.2k
Deeplearning from almost scratch
hn410
0
1.3k
Other Decks in Programming
See All in Programming
DDDを志して3年経ったら「DDDの皮を被ったクリーンアーキテクチャ」になった話【デブサミ2024夏】
texmeijin
1
620
しくじり先生 Image Matching Challenge 2024 編
goosehaaan
0
810
CSC307 Lecture 12
javiergs
PRO
0
220
CSC307 Lecture 14
javiergs
PRO
0
220
継続的な活動で築く地方エンジニアの道
myamashii
2
350
Xcode 16のPreviewModifierと@Previewableを活用した効率的なプレビュー方法の考察
ojun9
2
160
AWS CDKにおける「再利用性」を考える / aws-cdk-reusability
gotok365
6
1.3k
Rustのweb開発を助ける 便利なツール紹介
yuki0418
1
190
CSC307 Lecture 10
javiergs
PRO
0
310
最古の関数型言語「Lisp」ことはじめ / lisp_in_kamiyama
uhooi
1
190
Composing an API the *right* way (Droidcon Berlin 2024)
zsmb
1
450
なぜ宣言的 UI は壊れにくいのか / Why declarative UI is less fragile
uenitty
29
13k
Featured
See All Featured
Designing with Data
zakiwarfel
96
5k
StorybookのUI Testing Handbookを読んだ
zakiyama
15
4.9k
Fashionably flexible responsive web design (full day workshop)
malarkey
399
65k
The MySQL Ecosystem @ GitHub 2015
samlambert
248
12k
Put a Button on it: Removing Barriers to Going Fast.
kastner
58
3.3k
How to Think Like a Performance Engineer
csswizardry
4
590
YesSQL, Process and Tooling at Scale
rocio
166
14k
The Mythical Team-Month
searls
217
43k
Robots, Beer and Maslow
schacon
PRO
157
8.1k
Building a Scalable Design System with Sketch
lauravandoore
458
32k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
224
21k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
16
1.6k
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} その内容は、「終了」 テストを表示する
待機する 終了がクリックされた時の手順 テストを閉じる 終わり
まとめ ▪ プロデルはオブジェクト指向の言語を日本語化したようなもの ▪ 日本語の感覚に合わせているので、プログラミング特有の仕様は修正 されている ▪ プロデルがお勧めなのは… ・プログラミング未修者に短いアルゴリズムの説明をしたいとき ・英語未修者で本格的にプログラミングをやるつもりはないが、
ちょっとしたソフトを作りたい人