勉強会の状況
・100人以上のプログラミング学習コミュニティで勉強会開催。
・初学者の方向け
・集まったのは5~8人
工夫したこと
・講義形式ではなく名指しで答えてもらう
理由は話しているだけだと眠くなってしまうため
・問題集を作成
あえて学んでない内容などを問題に出し調べながらやってもらう
調べて試行錯誤してもらうことを大切にした
大変だったこと
・間違ったことを教えられないというプレッシャー
・参加者に飽きさせない工夫が必要だった。
変数
変数とは
名前をつけて一時的に数字や文字などのデータを記憶しておく格納庫のようなものです。
例えば平均点のプログラムと言われて時間が経ったらわかりますか。
puts (60 + 40 + 30 + 70 + 40)/5
わかりづらいですよね。
でもこれならわかるはず。
japanese = 60
puts japanese
#追加すると
japanese = 60
english = 40
science = 30
history = 70
math = 40 #これならわかりやすい
#これで平均点はわかります
puts (60 + 40 + 30 + 70 + 40)/5
# これも平均点はわかります。
puts (japanese + english + science + history + math)/5
文字でもできます。
name = "のり"
message = "エンジニアです。"
puts name + "さんは"+ message
一度ラベル付けをすると何回も使いまわせます。
me = "僕"
puts me + "は" + message
配列
簡単にいうとデータのかたまりのことです。
つまりデータをたくさん詰められる箱のような役割をしています。
そして、データ1つ1つは箱のようなもので、要素
と呼んでいます。
例えば、それぞれ名前(文字列)を格納するようなイメージ*になります。
箱1つ1つには番号が振られていて、
この番号を添字
と呼んでいます。添字は0から始まります
。
#平均点を求めたい
a = 50
b = 40
c = 30
d = 70
e = 80
f = 40
g = 90
h = 60
puts (a + b + c + d + e + f + g + h )/10
# ただこれだと何をやっているのかわかりづらいそこで配列を使います。
scores = [50,40,30,70,80,40,90,60]
puts scores
#添字注目 1番目と最後
puts scores[-]
#文字でも同じ
names = ["ルフィ","ゾロ", "悟空","ベジータ","炭治郎"]
puts names[-1]
配列の追加 更新 削除
# scores = [10,20,30,40,50]
#追加
scores.push(20) #*rubyは()を省略してもok
print scores << 100
#更新
scores[1] = 10
# => [10, 10, 30, 40, 50, 20]
#削除
scores.delete_at(2) #*3つ目の要素を削除
# => [10, 20, 40, 50]
#他にも
# push pop shift unshift
# insert
# size count length
# uniq
# compact
# reverse
# sort sort_by
配列問題集
問1 ライオンとワニを最後を追加してください. ただしputsは使わない。
おまけ ライオンとワニを先頭に追加してください。
animal = ["犬","猫","鳥","象","猿"]
問2 trueの数を出力してください。
number = [10,20,30,40,50,true,false,nil,true,nil,false]
問3 やや難問 下の数字の小数点を切り上げて出力させてください。
a = 5.4
問4 下のコードを変えずに
name = "SOCCER"
name = name.downcase
puts name
SOCCER
SOCCER
と出力されるように変えてください。メソッドは1回しか使いません
問5 下の呼吸をランダムに出力させてください
hashira = ["水の呼吸","炎の呼吸","風の呼吸","岩の呼吸"]
問6 配列の2番目から8番目の要素を出力させてください
number = [3,5,6,8,40,20,1,5,7,6,3,9]
問7 難 スーパーサイヤ人と出力させてください。
animal = "サイヤ人"
animal.prepend("スーパー")
puts animal
問8 やや難 下のレベルの最大値と最小値を1つのメソッドで出力させてください
level = [5,60,80,100,90,30]
puts level.minmax
問9 先頭から1番目から3番目の要素を捨てて配列を出力させてください。
ただし[..]を使わないこと
score = [10,20,30,40,50,60]
問10 難 下の配列を変えずに40と50を最後に追加してください。
ただしpushは使わないこと
p [10,20,30].
配列問題集解答
問1
animal = ["犬","猫","鳥","象","猿"]
print animal.push "猿","ワニ"
print animal.unshift "猿", "ワニ"
#ポイント
#答えあ1つではないことがポイントです。
#puts 以外が使えるかポイントです。
問2
number = [10,20,30,40,50,true,false,nil,true,nil,false]
puts number.count(true)
#ポイント
#lengthやsizeと混同しないことがポイント
問3 やや難問
a = 5.4
puts a.ceil
#ポイント
#Ruby 四捨五入で検索するのがポイント
#やりたいことを言語化できるかがポイント
*補足 floor小数点きりすて 小数点ceil 切り上げ round 四捨五入
このサイトがURLです。
https://uxmilk.jp/43388
問4
name = "soccer"
puts name.upcase!
puts name
#ポイント
#upcaseと downcaseの理解ができているかどうか
#!は破壊的メソッドでnameの中のものを大文字に書き換えてしまう。
問5 下の呼吸をランダムに出力させてください
hashira = ["水の呼吸","炎の呼吸","風の呼吸","岩の呼吸"]
kimetsu = hashira.sample
puts kimetsu
#ポイント
#Ruby ランダムで言語化できるかがポイント
URL
https://www.sejuku.net/blog/72965
問6
number = [3,5,6,8,40,20,1,5,7,6,3,9]
print number[3..9]
問7
doragonball = "サイヤ人"
doragonball.prepend("スーパー")
puts doragonball
#ポイント
#初学者にとってマニアックなのでメソッドを調べて試行錯誤できるかが重要
問8
level = [5,60,80,100,90,30]
puts level.minmax
問9
score = [10,20,30,40,50,60]
puts score.drop(3)
#ポイント
# 先頭の 要素を捨てて、残りの要素を出力
問10
p [10,20,30].concat([40,50])
# 文字列や配列同士を結合できます。
# 文字列オブジェクト.concat(連結する文字列オブジェクト)
# 配列オブジェクト.concat(連結する配列オブジェクト)