メールのときは:
画像(「スクショ」?)主義から脱却
コマンドプロンプトで Ctrl-A Enter すべて選択 ー> コピー (文字としてコピーする)
スマホ依存生活の危険性
「察してください」型のコミュニケーションの危険性
結果報告においても、「こういう出力が得られました」で終わらずに、 これは何だろう、と考える習慣をつけるといい。
(提出物を見て成績評価をする立場としては)「ちゃんとやってるかな?」ではなく、 「この人は何を学んだか」を読み取ろうとしている、と伝えておきます。
前回説明を十分できなかったネットワークの基礎について補足しておく。
ネットワーク上で動くプログラムの多くはクライアント/サーバ型の動作。
すでにネットワークが幅広く使われている中で、我々がプログラムを作るとしたら、以下の
2つのいずれかになるだろう。
当面は1. を意識して進めていく。ところで、
インターネットで最も普及している通信は、Web(World-wide Web)であることに異論はないだろう。
Webは(アプリケーション層の)HTTPプロトコルで動作する。
これはTCP/IPの4階建の階層構造に基づいて理解されたい。
(「TCP/IP 階層」などで画像検索すると解説の図は沢山見つかるだろう)。
TCPが、図のように双方向の通信路を確保する(HTTPの通信が1つ発生する毎にこの通信路が作られる)。
HTTPを理解するための補助手段として、ブラウザの開発ツールがある(下図)。これをこれから活用していくことにしよう。
右図は よくあるプログラミング入門で作らされがちな、
不必要に対話的なプログラムの例(と、Rubyだとそれは簡単に作れるねという赤字での記入)。
コマンドラインパラメータは、プログラム起動時に
ruby xxxx.rb abcde.txt
のように与える。
与えた文字列は、プログラム上では、配列 として参照する。
(こういう簡単なプログラムも試してみて下さい。 なお、ARGVは $* とも書けます(例))
なお、以下のコマンド(ヘルプの表示)で、rubyコマンドの使い方を確認しておくといいだろう。
ruby -h
[ ]
で囲まれている部分は、省略可能な要素。
[ ]
(ブラケット)は、プログラム内では(多くの言語で)
配列を表すために使われる記号でもある(右図の下)。filename = ARGV.shift || "xxx.txt"
ARGV.each do |s| puts s*3 +s.reverse*3 end
配列を a としたとき、以下のような方法で繰り返し(配列の要素に対して)を行うことができる。
for e in a do
puts e
end
# ↑と↓はプログラムとして同等
a.each do |e|
puts e
end
配列の各要素について同じ操作を行った結果を、さらに配列として保持したいときは、以下のようにプログラムする
a.map{|e| e**2}
配列は p メソッドで印字できるが、その他に、 連結して1つの文字列にする方法もよく使われる
a.join(',')
デフォルト値は(特に指定されなかった(省略された)ときにとるべき値)
一般には以下のようなコードで扱う(制御構造 を参照)
filename = "abcde.txt" # これがデフォルト値
filename = ARGV[0] if ARGV.size > 0
イディオムとして、以下の書き方がある(orを参照)
このイディオムは先に 使用例 2 として提示したものと同じ
filename = ARGV.shift || "abcde.txt"
課題1,2に沿って各自でプログラムを作ってみて下さい。 (書けたら提出)
=> 以下は次回扱いますが、
正規表現については(初めての人は)ざっと読んで予習しておいてください。