LoginSignup
0

More than 1 year has passed since last update.

初学者向けのRuby勉強会で使った資料 (変数と配列,配列問題集)

Last updated at Posted at 2021-10-22

勉強会の状況

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(連結する配列オブジェクト)

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0