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
960
Brainf*ckで15パズル
hn410
0
670
Android入門
hn410
0
1.1k
計算量理論
hn410
0
1.3k
Deeplearning from almost scratch
hn410
0
1.4k
Other Decks in Programming
See All in Programming
3 Effective Rules for Using Signals in Angular
manfredsteyer
PRO
1
110
エンジニアとして関わる要件と仕様(公開用)
murabayashi
0
320
レガシーシステムにどう立ち向かうか 複雑さと理想と現実/vs-legacy
suzukihoge
15
2.3k
RubyLSPのマルチバイト文字対応
notfounds
0
120
見せてあげますよ、「本物のLaravel批判」ってやつを。
77web
7
7.9k
Welcome JSConf.jp 2024
yosuke_furukawa
PRO
0
2k
Modular Monolith Monorepo ~シンプルさを保ちながらmonorepoのメリットを最大化する~
yuisakamoto
10
2.6k
Kaigi on Rails 2024 〜運営の裏側〜
krpk1900
1
290
AI時代におけるSRE、 あるいはエンジニアの生存戦略
pyama86
6
1.2k
DoctrineとPostgreSQLの便利な機能、どっちも諦めたくない!
77web
0
140
Hotwire or React? ~アフタートーク・本編に含めなかった話~ / Hotwire or React? after talk
harunatsujita
1
120
OnlineTestConf: Test Automation Friend or Foe
maaretp
0
130
Featured
See All Featured
Building Applications with DynamoDB
mza
90
6.1k
Fashionably flexible responsive web design (full day workshop)
malarkey
405
65k
Mobile First: as difficult as doing things right
swwweet
222
8.9k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
665
120k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
280
13k
How to Think Like a Performance Engineer
csswizardry
20
1.1k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
26
2.1k
Facilitating Awesome Meetings
lara
50
6.1k
Writing Fast Ruby
sferik
627
61k
Unsuck your backbone
ammeep
668
57k
Stop Working from a Prison Cell
hatefulcrawdad
267
20k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
232
17k
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} その内容は、「終了」 テストを表示する
待機する 終了がクリックされた時の手順 テストを閉じる 終わり
まとめ ▪ プロデルはオブジェクト指向の言語を日本語化したようなもの ▪ 日本語の感覚に合わせているので、プログラミング特有の仕様は修正 されている ▪ プロデルがお勧めなのは… ・プログラミング未修者に短いアルゴリズムの説明をしたいとき ・英語未修者で本格的にプログラミングをやるつもりはないが、
ちょっとしたソフトを作りたい人