Top Banner
プログラミング演習 I Exercise on Programming I http://bit.ly/OITprog1 小林 裕之 大阪工業大学 ロボティクス&デザイン工学部 システムデザイン工学科 1, 2 of 14 小林 裕之 (工大 RD 学部 S ) プログラミング演習 I 1, 2 of 14 1 / 44
44

プログラミング演習Iこの授業でやること プログラミングの基礎・基本的な概念を演習 を通じて学ぶ。プログラミング言語としてRuby を使う(が、

Mar 01, 2020

Download

Documents

dariahiddleston
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: プログラミング演習Iこの授業でやること プログラミングの基礎・基本的な概念を演習 を通じて学ぶ。プログラミング言語としてRuby を使う(が、

プログラミング演習IExercise on Programming I

http://bit.ly/OITprog1

小林裕之

大阪工業大学ロボティクス&デザイン工学部システムデザイン工学科

1, 2 of 14

小林裕之 (工大 RD 学部 S 科) プログラミング演習 I 1, 2 of 14 1 / 44

Page 2: プログラミング演習Iこの授業でやること プログラミングの基礎・基本的な概念を演習 を通じて学ぶ。プログラミング言語としてRuby を使う(が、

この授業でやること

プログラミングの基礎・基本的な概念を演習を通じて学ぶ。プログラミング言語として Rubyを使う(が、Rubyであることはあまり重要ではない)。

小林裕之 (工大 RD 学部 S 科) プログラミング演習 I 1, 2 of 14 2 / 44

Page 3: プログラミング演習Iこの授業でやること プログラミングの基礎・基本的な概念を演習 を通じて学ぶ。プログラミング言語としてRuby を使う(が、

『プログラミング的』思考

7 5 9

2 9 3

3 2 6 5

1 3 2

5 6

4 7 8

4 5 2 7

9 6 4

7 1 3

どうやれば確実に解ける?

小林裕之 (工大 RD 学部 S 科) プログラミング演習 I 1, 2 of 14 3 / 44

Page 4: プログラミング演習Iこの授業でやること プログラミングの基礎・基本的な概念を演習 を通じて学ぶ。プログラミング言語としてRuby を使う(が、

『プログラミング的』思考で「アルゴリズム」を作る

たったの3ステップで:::::::::::::::::::::::::誰でも、確実に、

:解ける!

秘伝《数独 qの解》手順書

q =7 5 9

2 9 33 2 6 5

1 3 25 64 7 8

4 5 2 79 6 4

7 1 3

1, 2, · · · , 9

1 qが間違いだったら解なし。2 qが全マス埋まっていればqが解。3 qの最初の空きマスに1から9まで順に埋めた問題q1, q2, · · · , q9を作成し、それぞれについて《数独qiの解》を求める。

小林裕之 (工大 RD 学部 S 科) プログラミング演習 I 1, 2 of 14 4 / 44

Page 5: プログラミング演習Iこの授業でやること プログラミングの基礎・基本的な概念を演習 を通じて学ぶ。プログラミング言語としてRuby を使う(が、

『プログラミング的』思考から本当の『プログラム』へ

solveSdk q =

if chkSdk q == False then []

else if zp == 81 then q

else concat (map (\i -> let q' = (take zp q) ++ [i] ++ drop (zp + 1) q

in solveSdk q') [1..9])

where zp = index q 0

間違いだったら解なし

全 (81)マス埋まっていれば qが解

最初の空きマスに順に数字を入れてq’とし、q’の解を求める

小林裕之 (工大 RD 学部 S 科) プログラミング演習 I 1, 2 of 14 5 / 44

Page 6: プログラミング演習Iこの授業でやること プログラミングの基礎・基本的な概念を演習 を通じて学ぶ。プログラミング言語としてRuby を使う(が、

その他少々加えて完成! (言語は Haskell)

q0 = [7, 0, 0, 0, 0, 5, 9, 0, 0,0, 2, 0, 0, 9, 0, 0, 3, 0,0, 0, 3, 2, 0, 6, 0, 0, 5,1, 3, 0, 0, 0, 0, 2, 0, 0,0, 0, 5, 0, 0, 0, 6, 0, 0,0, 0, 4, 0, 0, 0, 0, 7, 8,4, 0, 0, 5, 0, 2, 7, 0, 0,0, 9, 0, 0, 6, 0, 0, 4, 0,0, 0, 7, 1, 0, 0, 0, 0, 3]

main = mapM_ (\i -> print (take 9 (drop i ans))) [0,9..72] where ans = solveSdk q0chkDup a = foldl (&&) True (map (\i -> length (filter (== i) a) <= 1) [1..9])chkSdk x =

foldl (&&) True (map (\i -> chkDup (take 9 (drop i x))) [0,9..72]) &&foldl (&&) True (map (\i -> chkDup (map (\j -> x!!(i + j)) [0,9..72])) [0..8]) &&foldl (&&) True (map (\i -> chkDup (map (\j -> x!!(i + j)) box)) tl)wherebox = [0, 1, 2, 9, 10, 11, 18, 19, 20]tl = [0, 3, 6, 27, 30, 33, 54, 57, 60]

index [] _ = 0index (x:xs) tgt = if x == tgt then 0 else 1 + index xs tgt--solveSdk q = if chkSdk q == False then []

else if zp == 81 then qelse concat (map (\i -> let q' = (take zp q) ++ [i] ++ drop (zp + 1) q

in solveSdk q') [1..9])where zp = index q 0

小林裕之 (工大 RD 学部 S 科) プログラミング演習 I 1, 2 of 14 6 / 44

Page 7: プログラミング演習Iこの授業でやること プログラミングの基礎・基本的な概念を演習 を通じて学ぶ。プログラミング言語としてRuby を使う(が、

同じものを別言語 (この授業でやるRuby)で14回の授業が終わった後でもう一度眺めてみると多少は理解できる…かも!?

q0 = [7, 0, 0, 0, 0, 5, 9, 0, 0,0, 2, 0, 0, 9, 0, 0, 3, 0,0, 0, 3, 2, 0, 6, 0, 0, 5,1, 3, 0, 0, 0, 0, 2, 0, 0,0, 0, 5, 0, 0, 0, 6, 0, 0,0, 0, 4, 0, 0, 0, 0, 7, 8,4, 0, 0, 5, 0, 2, 7, 0, 0,0, 9, 0, 0, 6, 0, 0, 4, 0,0, 0, 7, 1, 0, 0, 0, 0, 3,

]

def chk9(ary) # dup test (1 line)(1..9).inject(true) {|a, i| ary.count(i) > 1 ? false : a

}end

def chk_all(ary) # dup test (all)9.times {|i|return false unless chk9(ary[i*9,9])return false unless chk9((0..8).map{

|j| ary[i + j * 9]})

}

[0,3,6,27,30,33,54,57,60].each {|i|return false unless chk9(

ary[i,3] + ary[i+9,3] + ary[i+18,3])

}true

end

def solve_sdk(q)return nil unless chk_all(q)return q unless tgt = q.index(0)ans = nil(1..9).each {|i|q[tgt] = ireturn ans if ans = solve_sdk(q)

}q[tgt] = 0nil

endans = solve_sdk(q0)9.times {|i|p ans[i * 9, 9]

}

小林裕之 (工大 RD 学部 S 科) プログラミング演習 I 1, 2 of 14 7 / 44

Page 8: プログラミング演習Iこの授業でやること プログラミングの基礎・基本的な概念を演習 を通じて学ぶ。プログラミング言語としてRuby を使う(が、

評価方法『◯◯演習』の授業は、出席して、授業に参加すること自体がとても重要です。

演習出席点=3点/回 (遅刻=2点,途中無断退出=0点)出席管理システムで採点するので必ずカードを通すこと。

レポート点=3点/回 (第 1回の分は出席者全員 3点)

期末演習点=16点

以下はその都度適宜減点:

動画・音楽の視聴,ヘッドフォンの使用 (聴覚の補助等を除く),私的なゲーム,指定席

以外への移動,飲食 (飲み物もダメ),睡眠,その他常識の範囲で明らかに演習の授業を

受けることに対して不適当な行為全般小林裕之 (工大 RD 学部 S 科) プログラミング演習 I 1, 2 of 14 8 / 44

Page 9: プログラミング演習Iこの授業でやること プログラミングの基礎・基本的な概念を演習 を通じて学ぶ。プログラミング言語としてRuby を使う(が、

今日の内容

学内Wi-Fiに接続sshクライアントの準備サーバにログイン最初のプログラムの作成と実行

小林裕之 (工大 RD 学部 S 科) プログラミング演習 I 1, 2 of 14 9 / 44

Page 10: プログラミング演習Iこの授業でやること プログラミングの基礎・基本的な概念を演習 を通じて学ぶ。プログラミング言語としてRuby を使う(が、

この授業の開発環境クラウドぽい環境です。

梅田キャンパス

edu1edu2

edu3大宮キャンパス

自分の PCを端末にして、大宮のサーバにログインして作業小林裕之 (工大 RD 学部 S 科) プログラミング演習 I 1, 2 of 14 10 / 44

Page 11: プログラミング演習Iこの授業でやること プログラミングの基礎・基本的な概念を演習 を通じて学ぶ。プログラミング言語としてRuby を使う(が、

学内Wi-Fiに接続これは、もうやってますね。

Windowsの人は右下、macOSの人は右上のWi-FiあるいはネットワークのアイコンをクリックしてOIT-AirLAN.1xに接続。

▶ IDは学生番号の前にe1をつけたもの。全部小文字。(例:e1x19123)

▶ パスワードは情報センターが発行したもの。

▶ OIT-AirLAN.1xにどうしてもつながらなければOIT-AirLANを試す。

小林裕之 (工大 RD 学部 S 科) プログラミング演習 I 1, 2 of 14 11 / 44

Page 12: プログラミング演習Iこの授業でやること プログラミングの基礎・基本的な概念を演習 を通じて学ぶ。プログラミング言語としてRuby を使う(が、

sshクライアントWindowsの人のみ。mac, Linuxの人は不要です。

Windowsの人のみ追加でソフトをひとつインストール。https://gitforwindows.orgを開き [Download]。ダウンロードしたら『実行』でインストール。インストール中の質問にはすべてデフォルトで答える。

小林裕之 (工大 RD 学部 S 科) プログラミング演習 I 1, 2 of 14 12 / 44

Page 13: プログラミング演習Iこの授業でやること プログラミングの基礎・基本的な概念を演習 を通じて学ぶ。プログラミング言語としてRuby を使う(が、

プログラミング言語とは

プログラムを作成するために作られた形式言語。

用途や思想により様々なものがある。

最近ではビジュアルプログラミング言語も人気。

小林裕之 (工大 RD 学部 S 科) プログラミング演習 I 1, 2 of 14 13 / 44

Page 14: プログラミング演習Iこの授業でやること プログラミングの基礎・基本的な概念を演習 を通じて学ぶ。プログラミング言語としてRuby を使う(が、

0 + 1 + . . .+ 9 in C

#include <stdio.h>int main(){int sum;int i;for (i = 0, sum = 0; i < 10; i++) {

sum = sum + i;}printf("%d\n", sum);return 0;

}小林裕之 (工大 RD 学部 S 科) プログラミング演習 I 1, 2 of 14 14 / 44

Page 15: プログラミング演習Iこの授業でやること プログラミングの基礎・基本的な概念を演習 を通じて学ぶ。プログラミング言語としてRuby を使う(が、

0 + 1 + . . .+ 9 in Java

public class Sum {public static void main(String[] args) {int i;int sum;for (i = 0, sum = 0; i < 10; i++) {

sum = sum + i;}System.out.println(sum);

}}

小林裕之 (工大 RD 学部 S 科) プログラミング演習 I 1, 2 of 14 15 / 44

Page 16: プログラミング演習Iこの授業でやること プログラミングの基礎・基本的な概念を演習 を通じて学ぶ。プログラミング言語としてRuby を使う(が、

0 + 1 + . . .+ 9 in JavaScript

let sum = 0for (let i = 0; i < 10; i++) {

sum = sum + i}console.log(sum)

小林裕之 (工大 RD 学部 S 科) プログラミング演習 I 1, 2 of 14 16 / 44

Page 17: プログラミング演習Iこの授業でやること プログラミングの基礎・基本的な概念を演習 を通じて学ぶ。プログラミング言語としてRuby を使う(が、

0 + 1 + . . .+ 9 in Python

sum = 0for i in range(10):

sum = sum + iprint(sum)

小林裕之 (工大 RD 学部 S 科) プログラミング演習 I 1, 2 of 14 17 / 44

Page 18: プログラミング演習Iこの授業でやること プログラミングの基礎・基本的な概念を演習 を通じて学ぶ。プログラミング言語としてRuby を使う(が、

0 + 1 + . . .+ 9 in Ruby

sum = 0(0..9).each {|i|

sum = sum + i}puts sum

小林裕之 (工大 RD 学部 S 科) プログラミング演習 I 1, 2 of 14 18 / 44

Page 19: プログラミング演習Iこの授業でやること プログラミングの基礎・基本的な概念を演習 を通じて学ぶ。プログラミング言語としてRuby を使う(が、

0 + 1 + . . .+ 9 in Swift

var sum = 0(1...9).forEach{(i) in

sum = sum + i}print(sum)

小林裕之 (工大 RD 学部 S 科) プログラミング演習 I 1, 2 of 14 19 / 44

Page 20: プログラミング演習Iこの授業でやること プログラミングの基礎・基本的な概念を演習 を通じて学ぶ。プログラミング言語としてRuby を使う(が、

0 + 1 + . . .+ 9 in Haskell

main = print $ mysum [0..9]

mysum [a] = amysum (car:cdr) = car + mysum cdr

小林裕之 (工大 RD 学部 S 科) プログラミング演習 I 1, 2 of 14 20 / 44

Page 21: プログラミング演習Iこの授業でやること プログラミングの基礎・基本的な概念を演習 を通じて学ぶ。プログラミング言語としてRuby を使う(が、

0 + 1 + . . .+ 9 in (old) BASIC

10 S=020 FOR I=0 TO 930 S=S+I40 NEXT I50 PRINT S

小林裕之 (工大 RD 学部 S 科) プログラミング演習 I 1, 2 of 14 21 / 44

Page 22: プログラミング演習Iこの授業でやること プログラミングの基礎・基本的な概念を演習 を通じて学ぶ。プログラミング言語としてRuby を使う(が、

0 + 1 + . . .+ 9 in Scratch

小林裕之 (工大 RD 学部 S 科) プログラミング演習 I 1, 2 of 14 22 / 44

Page 23: プログラミング演習Iこの授業でやること プログラミングの基礎・基本的な概念を演習 を通じて学ぶ。プログラミング言語としてRuby を使う(が、

classroomに参加 (1 of 2)

1 ブラウザでhttps://classroom.google.comを開く。2 OIT組織アカウント以外でGoogleにログイン中の場合は組織アカウントでログインし直す。

ログイン中のアカウント。ここをクリックしてOIT組織アカウントかどうか確認。

小林裕之 (工大 RD 学部 S 科) プログラミング演習 I 1, 2 of 14 23 / 44

Page 24: プログラミング演習Iこの授業でやること プログラミングの基礎・基本的な概念を演習 を通じて学ぶ。プログラミング言語としてRuby を使う(が、

classroomに参加 (2 of 2)

3 アカウントアイコンの左側のプラス(+)をクリックして生徒としてクラスに参加する。(クラスコードは1nmp0c9)

以上。課題等は基本的にこちらに提出することになります。

小林裕之 (工大 RD 学部 S 科) プログラミング演習 I 1, 2 of 14 24 / 44

Page 25: プログラミング演習Iこの授業でやること プログラミングの基礎・基本的な概念を演習 を通じて学ぶ。プログラミング言語としてRuby を使う(が、

サーバにログイン (Windows,学内ネットワークのみ)

1 【スタートメニュー】→【Git】→【Git Bash】2 以下のように (学科別の)コマンドを打ち込む。($は最初から表示されている「プロンプト」なので入力する必要はない。)

$ ssh [email protected]$ ssh [email protected]$ ssh [email protected]

3 初回は鍵を確認されるので “(yes/no)”に yesと答える。4 パスワードを入力する。(パスワードは画面に表示されない。)

小林裕之 (工大 RD 学部 S 科) プログラミング演習 I 1, 2 of 14 25 / 44

Page 26: プログラミング演習Iこの授業でやること プログラミングの基礎・基本的な概念を演習 を通じて学ぶ。プログラミング言語としてRuby を使う(が、

サーバにログイン (macOS,学内ネットワークのみ)

1 【Launcher】→【その他】→【ターミナル】2 以下のように (学科別の)コマンドを打ち込む。(mac~$は最初から表示されている「プロンプト」なので入力する必要はない。)

mac:˜ someone$ ssh [email protected]:˜ someone$ ssh [email protected]:˜ someone$ ssh [email protected]

3 初回は鍵を確認されるので “(yes/no)”に yesと答える。4 パスワードを入力する。(パスワードは画面に表示されない。)

小林裕之 (工大 RD 学部 S 科) プログラミング演習 I 1, 2 of 14 26 / 44

Page 27: プログラミング演習Iこの授業でやること プログラミングの基礎・基本的な概念を演習 を通じて学ぶ。プログラミング言語としてRuby を使う(が、

サーバにログイン (その他,学内ネットワークのみ)Windows/macOSで前のページでうまくいかない場合もこちら

1 ブラウザで以下のいずれかの URLを開く。▶ https://edu2.rd.oit.ac.jp:3000▶ https://edu2.rd.oit.ac.jp:3001▶ https://edu2.rd.oit.ac.jp:3002▶ https://edu2.rd.oit.ac.jp:3003▶ https://edu3.rd.oit.ac.jp:3000▶ https://edu3.rd.oit.ac.jp:3001▶ https://edu3.rd.oit.ac.jp:3002▶ https://edu3.rd.oit.ac.jp:3003

2 ユーザ名 (e1w1???? みたいなもの)、パスワードを使ってログイン。

小林裕之 (工大 RD 学部 S 科) プログラミング演習 I 1, 2 of 14 27 / 44

Page 28: プログラミング演習Iこの授業でやること プログラミングの基礎・基本的な概念を演習 を通じて学ぶ。プログラミング言語としてRuby を使う(が、

サーバからログアウト授業が終わったら必ずやること!

作業 (授業)が終わったらいきなりウィンドウを閉じない。

まずは logoutコマンド (もしくはexitコマンド)を実行してサーバからログアウトする。

その後でウィンドウを閉じるなり電源を切るなりする。

logoutコマンド

小林裕之 (工大 RD 学部 S 科) プログラミング演習 I 1, 2 of 14 28 / 44

Page 29: プログラミング演習Iこの授業でやること プログラミングの基礎・基本的な概念を演習 を通じて学ぶ。プログラミング言語としてRuby を使う(が、

ターミナル(端末)

コマンドを入力して応答が返ってくるようなものを「ターミナル(端末)」という 1。ターミナルにはさまざまなソフトがあるが、この授業ではWindowsの場合はGit Bashのターミナルを使う。

1もともとは遠隔にある大型のコンピュータを操作するための文字通り「端末」、という意味だったが、今ではコマンドを入れてコンピュータを操作するある種のアプリを総じてターミナルという。

小林裕之 (工大 RD 学部 S 科) プログラミング演習 I 1, 2 of 14 29 / 44

Page 30: プログラミング演習Iこの授業でやること プログラミングの基礎・基本的な概念を演習 を通じて学ぶ。プログラミング言語としてRuby を使う(が、

UNIXターミナル演習

calコマンドを試してみよう。

edu2:˜ e1x19999$ cal4月 2019

日 月 火 水 木 金 土1 2 3 4 5 6

7 8 9 10 11 12 1314 15 16 17 18 19 2021 22 23 24 25 26 2728 29 30

cal 2020や cal 9 1752もどうぞ。

解説calコマンドはカレンダーを表示するもの。edu2:˜ e1x19999$の部分はプロンプトといい、『はい、ご用件はなんでしょう』程度の意味の目印。「w」、「date」、「pi 1000」などのコマンドも試してみよう。

小林裕之 (工大 RD 学部 S 科) プログラミング演習 I 1, 2 of 14 30 / 44

Page 31: プログラミング演習Iこの授業でやること プログラミングの基礎・基本的な概念を演習 を通じて学ぶ。プログラミング言語としてRuby を使う(が、

『プログラム』とは?

ある仕事をさせるための手順等を定義したもの。コンピュータの「プログラム」も、広義には運動会の「プログラム」、卒業式の「プログラム」と同じ意味。広辞苑第六版:プログラム【program(me)】1. 番組。予定。計画。2. 目録。計画表。また、演劇・音楽会などの内容を解説した小冊子。3. コンピューターに対して、どのような手順で仕事をすべきかを、機械が解読できるような特別の言語などで指示するもの。→プログラム‐カウンター【program(me) counter】

小林裕之 (工大 RD 学部 S 科) プログラミング演習 I 1, 2 of 14 31 / 44

Page 32: プログラミング演習Iこの授業でやること プログラミングの基礎・基本的な概念を演習 を通じて学ぶ。プログラミング言語としてRuby を使う(が、

プログラムの作り方

program (source code)

editor

1 プログラムはファイルとして作る。2 それをソース(ソースコードあるいはソースファイルなどとも)という。

3 ソースを編集するにはエディタというソフト(アプリ)を使う。

小林裕之 (工大 RD 学部 S 科) プログラミング演習 I 1, 2 of 14 32 / 44

Page 33: プログラミング演習Iこの授業でやること プログラミングの基礎・基本的な概念を演習 を通じて学ぶ。プログラミング言語としてRuby を使う(が、

はじめての Rubyスクリプト

1 buf = []2 while true do3 buf.unshift(" " * rand(40) + "#")4 puts(buf[0])5 sleep(0.03)6 end

これを、全員でいっしょに、一行ずつ入力していく。まだ意味は全くわからなくていい (実はけっこう難しいプログラムです)。とにかく入力の体験をするだけ。小林裕之 (工大 RD 学部 S 科) プログラミング演習 I 1, 2 of 14 33 / 44

Page 34: プログラミング演習Iこの授業でやること プログラミングの基礎・基本的な概念を演習 を通じて学ぶ。プログラミング言語としてRuby を使う(が、

エディタ (editor)ソースコードを編集するためのアプリ

エディタは数え切れないほどいろいろあるが、この授業ではnanoというものを使う。サーバにログインした状態でnano game.rbとしてエディタを起動しよう。

▶ game.rbはプログラムのファイル名。『.rb』で終わっているのは rubyプログラムの意味。

▶ 画面下の方にある【ˆX終了】は [Control]キーを押しながら [X]を押す、の意味。

小林裕之 (工大 RD 学部 S 科) プログラミング演習 I 1, 2 of 14 34 / 44

Page 35: プログラミング演習Iこの授業でやること プログラミングの基礎・基本的な概念を演習 を通じて学ぶ。プログラミング言語としてRuby を使う(が、

~1行目

1 buf = []

エディタで一番左上から書き始める。[]は角括弧。()(丸括弧)や {}(波括弧)ではないので注意。=(イコール)の左右にはスペースを入れた方がいい。

小林裕之 (工大 RD 学部 S 科) プログラミング演習 I 1, 2 of 14 35 / 44

Page 36: プログラミング演習Iこの授業でやること プログラミングの基礎・基本的な概念を演習 を通じて学ぶ。プログラミング言語としてRuby を使う(が、

~2行目

1 buf = []2 while true do

一行目の下に、左端を揃えて書くのが良い。while、true、doの間にはスペースを入れる。

小林裕之 (工大 RD 学部 S 科) プログラミング演習 I 1, 2 of 14 36 / 44

Page 37: プログラミング演習Iこの授業でやること プログラミングの基礎・基本的な概念を演習 を通じて学ぶ。プログラミング言語としてRuby を使う(が、

~3行目

1 buf = []2 while true do3 buf.unshift(" " * rand(40) + "#")

3行目は先頭に 2文字スペースを入れる。(インデント (字下げ)という。)『" "』の部分はダブルクォート ([SHIFT]を押しながら [2])の間にスペースを一つ入れる。*(アスタリスク)は [SHIFT]を押しながら [L]の 2つ右。小林裕之 (工大 RD 学部 S 科) プログラミング演習 I 1, 2 of 14 37 / 44

Page 38: プログラミング演習Iこの授業でやること プログラミングの基礎・基本的な概念を演習 を通じて学ぶ。プログラミング言語としてRuby を使う(が、

~4, 5行目

1 buf = []2 while true do3 buf.unshift(" " * rand(40) + "#")4 puts(buf[0])5 sleep(0.03)

インデントを 3行目に合わせる。4行目の[0]は角括弧。5行目の(0.03)は丸括弧。小林裕之 (工大 RD 学部 S 科) プログラミング演習 I 1, 2 of 14 38 / 44

Page 39: プログラミング演習Iこの授業でやること プログラミングの基礎・基本的な概念を演習 を通じて学ぶ。プログラミング言語としてRuby を使う(が、

~6行目 (完成! )

1 buf = []2 while true do3 buf.unshift(" " * rand(40) + "#")4 puts(buf[0])5 sleep(0.03)6 end

インデント量を 0にして (一番左に寄せて)endを入力以上でプログラムがひとまず完成!小林裕之 (工大 RD 学部 S 科) プログラミング演習 I 1, 2 of 14 39 / 44

Page 40: プログラミング演習Iこの授業でやること プログラミングの基礎・基本的な概念を演習 を通じて学ぶ。プログラミング言語としてRuby を使う(が、

保存して終了する

1 『ˆX』 (← [Control]+[X]の意)として終了する。

2 保存するか聞かれるので yを押し…

3 ファイル名の確認はそのまま[Enter] (や [Return])。 “Y”を選んで次の質問は

そのまま [Enter]

小林裕之 (工大 RD 学部 S 科) プログラミング演習 I 1, 2 of 14 40 / 44

Page 41: プログラミング演習Iこの授業でやること プログラミングの基礎・基本的な概念を演習 を通じて学ぶ。プログラミング言語としてRuby を使う(が、

プログラム実行前に…

ファイル一覧を表示する “ls”コマンド

e1w19999@edu1:˜$ lsgame.rbe1w19999@edu1:˜$ ls

lsは listの省略形と言われている。「そこ 2」にあるファイルの一覧を表示するコマンド。

2ってどこよ? という問の答はなかなか奥深くて難しい…。小林裕之 (工大 RD 学部 S 科) プログラミング演習 I 1, 2 of 14 41 / 44

Page 42: プログラミング演習Iこの授業でやること プログラミングの基礎・基本的な概念を演習 を通じて学ぶ。プログラミング言語としてRuby を使う(が、

さあ、いよいよ実行!

Rubyプログラムは “ruby”コマンドで実行する。今回は以下のとおり。e1w19999@edu1:˜$ ruby game.rb(何が起こるかな!?)

小林裕之 (工大 RD 学部 S 科) プログラミング演習 I 1, 2 of 14 42 / 44

Page 43: プログラミング演習Iこの授業でやること プログラミングの基礎・基本的な概念を演習 を通じて学ぶ。プログラミング言語としてRuby を使う(が、

スクリーンショットの撮り方課題提出に必要です。

毎回の課題として、作ったプログラムの実行結果のスクリーンショットを提出してもらう。以下撮り方。

▶ Windows[Windows]を押しながら[Print Screen (Prt Sc)]を押す。→ピクチャフォルダの中のスクリーンショットフォルダに保存される。

▶ macOS[Shift]+[command]を押しながら[3]を押す。(デスクトップに保存される)

小林裕之 (工大 RD 学部 S 科) プログラミング演習 I 1, 2 of 14 43 / 44

Page 44: プログラミング演習Iこの授業でやること プログラミングの基礎・基本的な概念を演習 を通じて学ぶ。プログラミング言語としてRuby を使う(が、

課題今回はこれだけ!

課題

game.rbを実行した結果の画面のスクリーンショットをGoogle classroom(https://classroom.google.com)に提出せよ。締め切りは月曜正午。

小林裕之 (工大 RD 学部 S 科) プログラミング演習 I 1, 2 of 14 44 / 44