Watch videos with subtitles in your language, upload your videos, create your own subtitles! Click here to learn more on "how to Dotsub"

EIWL28AVTake2

0 (0 Likes / 0 Dislikes)
Wolframによる「はじめてのWolfram言語」のセクション28では, 判定式を取り上げる. 判定式とは,何かが真であるか偽であるかを判定する関数のことである. また,条件式についても取り上げる. 条件式とは,判定結果によって別々のことを行う関数を意味する. 判定式と条件式はどのコンピュータプログラムにおいても,基本的で低レベルの部分である. 判定式の簡単な例として,2つのものが等しいか等しくないかというものが挙げられる. これはWolfram言語では「==」を使って入力できる. 例えばこの判定式は 2+2 が4に等しいかどうかを判定する. 一方がもう一方より大きいか小さいかの判定には キーボードの >,< の記号が使える. 例として,2+2 が 5 より大きいかどうかを確認する. 2+2 は 5 より大きくないので,結果として「False」が返される. 判定結果によって異なる結果を返す関数がある. それがこのセクションのタイトルにもある「条件式」である. このような条件式の一つに If 関数がある. 例えばこの If 関数は, 判定結果がTrueの場合は x を, Falseの場合は y を返す. If 関数を純関数で使うと,もっと複雑なことが行える. これは引数が 4 未満の場合は x, 引数が 4 未満ではない場合は y を返す純関数である. この純関数をリストにマップすると, 4 未満の要素がすべて x で, 4 未満ではない要素がすべて y で置き換えられる. 等号否定 ≠ の判定もある. これは「!=」とタイプして入力する. 以下であるかどうかの判定のための ≦ は「<=」とタイプし, 以上の判定のための ≧ は「>=」とタイプして入力する. この例では,純関数と等号否定 ≠ をリストのすべての要素に適用して, 4 以外の要素を x で,4 を y で置き換える. これらの文字の組合せの中には, タイプすると自動的に通常の数学表記に置き換えられるものがある. 例えば「<=」と入力すると, この入力の外に移動した瞬間に, 「≦」に自動的に変換される. これによって入力が従来の数学表記に近い形となる. 判定結果によって異なることを行う条件式には,この他に Select関数がある. Select関数はリストの中から判定式を満足するものを選び出すのに使用できる. 例えば,これは 3 より大きいものについてTrueを返す判定式で, これはSelect関数の中で判定式を使って,リスト内で 3 より大きい要素を選び出す. Wolfram言語には判定を行う関数がたくさんある. 数学や他のプログラミング言語の慣例に従って, Wolfram言語でのこれらの関数の名前は通常最後に「Q」が付く. 例えばEvenQ関数は数が偶数であるかどうかを判定し, PrimeQ関数は数が素数であるかどうかを判定する. 例えばこれはSelect関数を使ってリストから偶数を取り出す. ANDやOR等の論理演算子を判定式と組み合せて使うこともできる. 論理積AND演算は,この例のように「&&」で入力する. 2+2 は偶数かつ 3 より大きいのでTrueが返される. 論理和OR演算は「||」で入力する. この例では,5は「偶数または4より大」を満たすので,Trueが返される. 論理否定NOT演算は「!=」と入力する. 例えばこの判定式では,引数が偶数または 4 より大きい数である場合にTrueが返される. この判定式で「!=」を使うと 引数が偶数でも4より大きい数でも「ない」場合にTrueが返される. ここにカッコを挿入したのは,NOT演算子「!」がEvenQ判定式だけでなく, 判定式全体に確実に適用されるようにするためである. 入力の意味が曖昧なら,明確にするためにカッコを入れるに越したことはない. ここで純関数が使える. 例えばSelect関数で偶数でも 4 より大きくもない要素を取り出す. Wolfram言語には,さまざまな判定を行う関数がたくさんある. 例えばIntegerQは整数であるかどうかを判定し, LetterQは文字列内のすべてが文字であるかどうかを判定する. MemberQという関数は要素がリストに属しているかどうかを判定する. この例では,5 はリスト {1, 3, 5, 7} に属しているので,Trueが返される. ImageInstanceQという関数もある. MemberQがリストに対して作用するのに対し,ImageInstanceQは画像に対して作用する. これは,猫の画像だと判定するとTrueを返すImageInstanceQ関数の例である. これは画像が猫の画像である場合にTrueを返す判定式で, Select関数の中でこの判定を使って猫の画像を選び出す. これでセクション28のビデオでの例は終りである. このセクションで使用した関数をまとめる. Wolfram言語には判定を行う関数がたくさんあり, If やSelectのように判定関数を使う条件式もたくさんある. このセクションではこれらの関数の使い方を簡単に紹介した. Wolfram言語の判定と条件のための関数についての詳細情報は, 「ヘルプ」メニューから「Wolframドキュメントセンター」を選び, 現れたドキュメントセンターで「条件文」を検索し, 条件文のガイドページを選ぶと開く, If やSelect,その他の条件式へのリンクを含むページで見られる. このページには判定式というページのリンクもあり, ここにはこのセクションで出てきた判定式や, ANDやOR等の演算子へのリンクがすべて含まれている. セクション28の最後に練習問題がある. 練習問題 28.2 を見てみよう. 「100までの数で桁数字の和が 5 未満の数のリストを求めなさい.」 Rangeを使って100までの数のリストを作り, Selectでリストの中からこの練習問題に適した数を選び出す. 各桁の数字の合計が 5 未満の場合にTrueを返す判定式が必要である. まずこの判定式を構築する. IntegerDigits関数は数の各桁の数を返す. 例えばこれで数31の各桁の数が求められる. Total関数を使ってこれらの数を足す. 最後に合計が 5 未満の場合にTrueを返す判定式である. これを純関数に変え,31だけでなく,どのような数でも判定できるようにしてみよう. 31を「#」で置き換え,純関数のスロットにする. 最後に & を置いて,これが純関数であることをシステムに伝える. これで,各桁の数を足すと 5 未満になる数に対してTrueを返し, それ以外はFalseを返す判定式ができた. 最後にSelectと Range[100] を使い,希望の要素を取り出す判定式を挿入すると, 解が得られる. 通常,このような論理判定と条件式を使ったタスクは,目的のものを得るために 基本的なツールをどのように組み立てるのかを系統立てて考える必要がある. 練習あるのみなので,練習問題をぜひ試していただきたい.

Video Details

Duration: 7 minutes and 41 seconds
Country:
Language: English
License: Dotsub - Standard License
Genre: None
Views: 14
Posted by: wolfram on Aug 31, 2020

EIWL28AVTake2

Caption and Translate

    Sign In/Register for Dotsub above to caption this video.