20
基基基基基基基基基 基 13 基

基礎プログラミング

Embed Size (px)

DESCRIPTION

基礎プログラミング. 第 13 回. メニュー. 前回の復習 文字列の置換 正規表現 レポートの解答 応用プログラミング まとめ. 前回の復習. 文字列の置換  $a =~ s/ 変換前の文字列 / 変換後の文字列 /; $a の中身にある「変換前の文字列」を「変換後の文字列」に置き換える オプション. 前回の復習( 2 ). もうひとつの置換  tr $a =~ tr/ 元の文字列 / 置き換える文字列 /; 元の文字列の文字を 1 文字づつ順番に置き換える. $a =~ tr/ a b c d / 1 2 3 4 /; - PowerPoint PPT Presentation

Citation preview

Page 1: 基礎プログラミング

基礎プログラミング

第 13 回

Page 2: 基礎プログラミング

2

メニュー• 前回の復習

– 文字列の置換• 正規表現• レポートの解答• 応用プログラミング• まとめ

Page 3: 基礎プログラミング

3

前回の復習• 文字列の置換 

$a =~ s/ 変換前の文字列 / 変換後の文字列 /;– $a の中身にある「変換前の文字列」を「変換後の

文字列」に置き換える• オプション

オプション

意味

g 対応するすべての文字列を置換

i 大文字と小文字を区別しない

Page 4: 基礎プログラミング

4

前回の復習( 2 )• もうひとつの置換  tr

$a =~ tr/ 元の文字列 / 置き換える文字列 /;

元の文字列の文字を 1 文字づつ順番に置き換える.

  $a =~ tr/abcd/1234/;

a を 1 に, b を 2 に, c を 3 に, d を 4 に置き換える

Page 5: 基礎プログラミング

5

正規表現• パターンマッチング:

– 特定の文字列がある文字列の中にあるかどうか• 正規表現

– 特定の文字列を便利に指定する方法正規表現は, / / で囲む$a =~ / ライス /  は「ライス」が $a にあるかど

うかを調べる表現– 直接文字列を書くだけでなく別の指定もできる

Page 6: 基礎プログラミング

6

正規表現(2)• メタ文字の利用メタ文字

意味 例

^ 文字列の先頭 /^Abc/ Abc

Abcdefg

$ 文字列の末尾 /xyz$/ xyz

abcdxyz

\b 単語の境界 /man\b/ man

superman

\B 単語の境界以外

/man\B/ manage

romanism

Page 7: 基礎プログラミング

7

正規表現(3)• メタ文字の利用例をチェック

– p1205.pl をダウンロードして実行– 動きをたしかめよ.

$title[$i] =~ /\Bpar/ の/\Bpar/  を /par\B/ に換えるとどうなる?

Page 8: 基礎プログラミング

8

正規表現(4)• マッチングの条件を示すメタ文字

メタ 意味 例 マッチ例. 任意の 1 文字 /mo./ monday

mon

? 直前のものがあってもなくてもよい

/colou?r/ colour

color

* 直前の文字の 0 回以上の繰り返し

/goo*d/ good

gooooood

+ 直前の文字の 1 回以上の繰り返し

/goo+d/ goood

gooooood

Page 9: 基礎プログラミング

9

正規表現(5)• 利用例をチェック  p1206.pl をダウンロードして実行

動きを確かめよ.

 いろいろ試してみよ.

Page 10: 基礎プログラミング

10

正規表現(6)• つづきメタ 意味 例 マッチ例{m} 直前の文字が m

回繰り返す/ すも {6}/ すももももも

も{m,} 直前の文字が m

回以上繰り返す/ いも ){2},/ いもいも

{m,n} 直前の文字が m回以上 n 回以下繰り返す

/( いも ){3,5}/ いもいもいもいもいもいもいも

()で囲むとそれが繰り返しの単位になる!

Page 11: 基礎プログラミング

11

正規表現(7)• 利用例をチェック

p1207.pl  をダウンロードして実行

動きを確かめる

Page 12: 基礎プログラミング

12

正規表現( 7 )• 指定した文字内での任意の1文字へのマッチ  (  [   ] を使う )メタ表現

意味 例 マッチ例

[a-z] 小文字 a から z までアルファベットすべて

/[a-z]/ a とか y

[A-Z] 大文字 A から Z すべて

/[A-Z]/ D とかX

[0-9] 数字 0 から 9 すべて /[0-9]/ 5 とか9

[0-9a-z] 数字 0 から 9 ,小文字a-z

/[0-9a-z]/ c とか 3

Page 13: 基礎プログラミング

13

正規表現( 8 )• 指定した文字列のどれかに一致する. () と |を使う

メタ表現 意味 例 マッチ(chr1|chr2) char1

かchar2のどちらかに一致

/(good|bad)/ good one

bad one

Page 14: 基礎プログラミング

14

レポートの解答• WWW 上で

Page 15: 基礎プログラミング

15

まとめ• プログラムとは?• コンピュータプログラムとは?• 演算子

– 算術演算子,比較演算子,論理演算子• 条件分岐• 繰り返し

Page 16: 基礎プログラミング

16

まとめ• 変数• 配列

– 配列,連想配列• 組み込み関数

– 主に split

• 置換• 正規表現

Page 17: 基礎プログラミング

17

まとめ• これらの個別の意味を問う+プログラム全体の意図,処理内容を読む

Page 18: 基礎プログラミング

18

応用プログラミング辞書びきプログラムの簡単な実装• 辞書データの準備:ここから臨時にダウンロード

• 本来は...PrepTutorEJDIC から PrepTutorEJDIC10.lzhlha で圧縮されているので,解凍する.PrepTutorEJDIC というフォルダの中に展開される.PrepTutorEJDIC.txt が辞書ファイル

  しかし,このままでは Mac 形式で都合が良くない. TeraPad で PrepTutorEJDIC.txt を読み込む. [ ファイル ]→[ 漢字 / 改行コード指定保存 ]→漢字コード SHIFT-JIS ,改行コード CR+LF ,上書き保

Page 19: 基礎プログラミング

19

辞書引きソフトウェアの簡単な実装

• 辞書データの構造を観察 • TeraPad で開いて,どのような構造をしている

かを確かめる. • 半角スペース,全角スペース,タブの違いがわ

からない. → TeraPad の [ 表示 ]→[ オプション ]→[ 表示 ] の「マーク/色別表示/フォント」の 中の個別の項目を設定 ( チェックボックスをチェック )

• どのような構造をしているか?

Page 20: 基礎プログラミング

20

辞書引きソフトウェアの簡単な実装

• 簡単な検索プログラムの実装 さきほど構造を調べた辞書データを検索することを考える.

   kanidicsearch.pl

  挑戦課題  kanidicsearch.pl では見出し語だけを正確に検索することができない. そこで,

(1)  見出し語だけを検索できるようにせよ. (2)  見出し語以外を検索できるようにせよ. (3)  両方ともを検索できるようにせよ. (4)  メニューを作成して, (1)-(3) どれで検索するか指定できるようにせよ.