sironekotoroの日記

Perl と Mac の初心者の備忘録

Perl入学式 in 東京 第3回 〜配列/ハッシュ編〜 の練習問題&復習問題の解答例

Perl入学式 in 東京 第3回 〜配列/ハッシュ編〜

昨日、「Perl入学式 in 東京 第3回 〜配列/ハッシュ編〜」の後半の講師を担当したものです。 みなさま本当にお疲れさまでした。

練習問題、復習問題の解答例

講義資料中にある練習問題、復習問題の解答例です。 うまく解けない時とかに参考にしてください。 うまく動かない時はご連絡ください。

練習問題

Perl入学式 2018 第3回 練習問題 array_pop_shift.pl — Bitbucket

Perl入学式 2018 第3回 練習問題 array_push_unshift.pl — Bitbucket

Perl入学式 2018 第3回 練習問題 hash_profile.pl — Bitbucket

Perl入学式 2018 第3回 練習問題 hash_func.pl — Bitbucket

Perl入学式 2018 第3回 練習問題 array_ref.pl — Bitbucket

Perl入学式 2018 第3回 練習問題 hash_ref.pl — Bitbucket

最終問題

Perl入学式 2018 第3回 最終問題 region_ref.pl — Bitbucket

復習問題

github.com

Perl入学式 2018 第3回 復習問題 vote.pl — Bitbucket

Perl入学式 2018 第3回 復習問題 score.pl 2-1 — Bitbucket

Perl入学式 2018 第3回 復習問題 score.pl 2-2 — Bitbucket

Perl入学式 2018 第3回 復習問題 score.pl 2-3 — Bitbucket

Perl入学式 2018 第3回 復習問題 score.pl 2-4 — Bitbucket

Perl入学式 2018 第3回 復習問題 score.pl 2-5 — Bitbucket

リファレンス、さっぱりわからないというあなた

第3回の後半っていうと、Perlのデータ構造、リファレンスについてやるんですが、まぁー、初学者殺しですよねー
うちもそうでした。やられた口です。リファレンスわかりませんでした。
でも大丈夫です。わからなくてもプログラムは書けます。

うちがPerl入学式受講生だった2013年、講師をしていたpapixさんが
リファレンスは、繰り返し何回もやって体で覚えるしかない!
と言っていて、プログラミングでそんな脳筋理論が出てくるとは・・・って思ったもんですが、今ならわかります。
リファレンスは脳筋です。

繰り返し何回もやって体で覚えるしかない

リファレンスの数をこなす・・・?
でも問題集の設問は限られているし・・・?
大丈夫です。講師をしている途中でも言いましたが、自分の身の回りにある情報をPerlのデータ構造にしてみるのが良いです。

  • 都道府県名をkeyに、県庁所在地をvalueにしたハッシュを、北から順に配列に入れてみたらどのような構造になるか?
  • 都道府県名をkeyに、その県で見られる民放のテレビ局(おそらく複数?)をvalueに入れ、北から順に配列に入れてみたらどのような構造になるか?
  • 将棋の棋譜をデータ構造で再現するには?
  • 年度別に、各月の給料支給額を格納するには?そして格納した給与支給額を年度別に合計したり平均値を出すには?
  • 株価の時系列データから、特定の日時だけ抜き出すのに楽そうなデータ構造は?

などなど。
そして、自分が作ったデータ構造からデータを引き出せなかったり、そもそも、どのようなデータ構造にすれば良いかわからない・・・というときは、どうぞPerl入学式のslackやtwitterハッシュタグ #Perl入学式 でつぶやいてみると、教えてくれる人が現れるはずです。多分。

適切な参考書はありますか?

これに関しては自信を持って深澤千尋さんの「すぐわかる オブジェクト指向Perl」をおすすめします。

タイトルにはリファレンスの文字もないのですが、Perlオブジェクト指向を学ぶためにはリファレンスが必要、そのためにリファレンスについて勉強しましょう!と始まって、書籍全体の半分くらいのページを割いて懇切丁寧にリファレンスを解説してます。

うちだけではなく、他の方もオススメしている本です。ぜひ参考にしてください。

gihyo.jp

あと、ごくごくわずかな一部の方に好評だった、いらすとやさんを利用したスライドを載せておきます。成仏してくれ・・・
でも楽しかったんで、また作るかも!

docs.google.com