Return to Video

01ps-01 General Concepts Solution

  • 0:00 - 0:03
    こんにちは ピーター・チャップマンです
  • 0:03 - 0:08
    プログラミング言語のコース中
    “Webブラウザ作成”のアシスタント講師です
  • 0:08 - 0:11
    フォーラムで私を見た方もいらっしゃるでしょう
  • 0:11 - 0:14
    コースの全般的なマネジメントをしていますが
  • 0:14 - 0:18
    主に宿題の答え合わせで
    皆さんのお手伝いをしていきます
  • 0:18 - 0:22
    それでは最初の宿題から始めましょう
  • 0:22 - 0:28
    これは最初の講義で学んだ
    一般概要の選択問題でした
  • 0:28 - 0:33
    問題1は“Webページは埋め込まれた
    JavaScriptを通して”
  • 0:33 - 0:35
    “その動作や外観をコントロールできる”
  • 0:35 - 0:38
    これは間違いなく正しいですね
  • 0:38 - 0:42
    あらゆるWebページには
    たくさんのJavaScriptが使われており
  • 0:42 - 0:46
    そのおかげでページがインタラクティブになり
    処理速度が速くなります
  • 0:46 - 0:49
    JavaScriptが作動していない
    Webサイトを訪問しても
  • 0:49 - 0:51
    ほとんど何もできないでしょう
  • 0:51 - 0:54
    何も読み込まれずインタラクティブにもなりません
  • 0:54 - 0:58
    JavaScriptが
    現代のWebアプリケーションの基本といっても
  • 0:58 - 1:00
    過言ではありません
  • 1:00 - 1:04
    問題2“英語の文は単語に分けられるが”
  • 1:04 - 1:06
    “HTMLとJavaScriptは分けられない”
  • 1:06 - 1:08
    これは誤りです
  • 1:08 - 1:12
    HTMLの一例を使って説明します
  • 1:12 - 1:17
    このHTMLは小さい部分に分けることができます
  • 1:17 - 1:20
    つまり太字の開始タグ<b>
  • 1:20 - 1:24
    テキストのIrvin
    そして太字の終了タグ</b>です
  • 1:24 - 1:27
    これら1つ1つそれぞれに意味があります
  • 1:27 - 1:34
    それと同様にこの文章では単語の“and”が
  • 1:34 - 1:40
    “HTML”と“JavaScript”を“cannot”に
    関連づけています
  • 1:40 - 1:42
    これらの単語はセマンティックなものと
  • 1:42 - 1:44
    シンタックス的構造を持つものがあります
  • 1:44 - 1:50
    いずれにしてもこれらはすべて単語で
    言語が違うだけのことです
  • 1:50 - 1:55
    問題3“re.findall()を呼び出す
    Pythonプログラムと同じ結果になるが”
  • 1:55 - 1:59
    “re.findall()を呼び出さない
    Pythonプログラム存在する”
  • 1:59 - 2:01
    これは正しいです
  • 2:01 - 2:06
    re.findall()の説明をする前に
    別の例で考えてみましょう
  • 2:06 - 2:10
    findallではなくfindONEで1つだけ探すとします
  • 2:10 - 2:14
    ここに正規表現とテキストが入ります
  • 2:14 - 2:20
    この文字が正規表現に一致するかを調べます
  • 2:20 - 2:23
    講義で学んできたツールを使います
  • 2:23 - 2:25
    fsmsim関数を使って
  • 2:25 - 2:29
    この正規表現の有限状態機械表現を作成します
  • 2:29 - 2:33
    単純なことですね
  • 2:33 - 2:37
    この文字をfsmsim関数を使って
    有限状態機械で処理します
  • 2:37 - 2:40
    講義で説明したマップを使って状態機械を描き
  • 2:40 - 2:44
    結果としてテキストが受理状態に行き着けば
  • 2:44 - 2:48
    一致したと言えます
  • 2:48 - 2:53
    これがfmssimを使って
    正規表現の一致を見つける方法です
  • 2:53 - 2:55
    しかしfindall関数は
    これとは少し違うことをします
  • 2:55 - 2:57
    このコードがあったとしましょう
  • 2:57 - 3:00
    この構文には正規表現とマップ番号および
  • 3:00 - 3:04
    2つの数字12と34を含む入力文字列があります
  • 3:04 - 3:07
    findall関数は次のように返します
  • 3:07 - 3:10
    2つの文字列12と34を返します
  • 3:10 - 3:13
    つまりfsmsimを使うと1つの一致ができるわけです
  • 3:13 - 3:16
    もし文字列12だけを使えばそれができます
  • 3:16 - 3:20
    しかしfindall関数で少し違ったスタイルの
    変換をしてみます
  • 3:20 - 3:23
    少し手を加えればfsmsim関数も使うことができます
  • 3:23 - 3:27
    fsmsimというブラックボックスがあったとします
  • 3:27 - 3:31
    そしてそれがこの正規表現を表します
  • 3:31 - 3:34
    また5つの文字でできた文字列があります
  • 3:34 - 3:38
    ここではこの最初の文字を
  • 3:38 - 3:41
    正規表現シミュレータに送り込みます
  • 3:41 - 3:44
    1は正規表現に一致しました
  • 3:44 - 3:48
    今のところ1について一致しています
  • 3:48 - 3:52
    より大きな文字列を一致させるため
    もう1文字足してみます
  • 3:52 - 3:55
    12を正規表現シミュレータに送り込みます
  • 3:55 - 3:58
    12も一致しました いいですね
  • 3:58 - 4:00
    では次は12+でやってみます
  • 4:00 - 4:06
    12+は一致しませんので
    この正規表現に一致する最大のプレフィックスは
  • 4:06 - 4:10
    12となることがわかりました
    これが1つの結果になります
  • 4:10 - 4:14
    では戻って+だけでやってみましょう
  • 4:14 - 4:16
    +は一致しません
  • 4:16 - 4:18
    +3でやってみます これもダメです
  • 4:18 - 4:22
    これは数字ではないので+34もダメです
  • 4:22 - 4:25
    +は諦めて3だけでやってみます
  • 4:25 - 4:28
    3は一致しました では4をやってみましょう
  • 4:28 - 4:32
    34は一致します これが文字列に残された
    最後の文字なのでこれで終了です
  • 4:32 - 4:36
    これがfindall関数とまったく同じように
  • 4:36 - 4:38
    fsmsim関数を使う方法です
  • 4:38 - 4:42
    問題4“+も*も含まない正規表現は”
  • 4:42 - 4:47
    “文字列の有限集合に一致する”
  • 4:47 - 4:49
    これは正しいです
  • 4:49 - 4:51
    講義で説明した正規表現の中では
  • 4:51 - 4:56
    反復は+と*がある場合だけでした
  • 4:56 - 5:03
    or演算子や任意の文字で
    手の込んだこともできますが
  • 5:03 - 5:08
    これらの反復演算子でできることの
    足下にも及びません
  • 5:08 - 5:10
    違うタイプの正規表現や
  • 5:10 - 5:14
    別の文字列を挙げられますが
    それらは決して無限にはなりません
  • 5:14 - 5:17
    そしてもし+や*がなければ
  • 5:17 - 5:19
    有限文字列の集合で行き止まってしまいます
  • 5:19 - 5:23
    大きな有限集合にはなり得ますが
    無限ではなく有限なのです
Title:
01ps-01 General Concepts Solution
Description:

dummy description

more » « less
Video Language:
English
Team:
Udacity
Project:
CS262 - Programming Languages
Duration:
05:24

Japanese subtitles

Revisions