開始43日目〜超初心者、文系、30代のスタート〜

今日学んだこと:

Ruby

def register_data(data)

  puts '名前を入力してください'

  name = gets.chomp

  puts '年齢を入力してください'

  age = gets.chomp

  puts '身長を入力してください(m単位)'

  tall = gets.to_f

  puts '体重を入力してください'

  weight = gets.to_f

  person = { name: name, age: age, tall: tall, weight: weight, bmi: calculate_bmi(tall, weight)}

  data << person

end

 

def calculate_bmi(tall, weight)

  bmi = weight / tall / tall

end←2、この計算式は上記の1連の流れが終わった後に表示されるのか。

 

def show_data_list(data)

  puts '見たい人の番号を選択してください'

  data.each_with_index do |person, index|

    puts "#{index + 1}: #{person[:name]}"

  end

  input = gets.to_i - 1

  show_data(data[input])

end

 

def show_data(data)

  puts data[:name]

  puts data[:age]

  puts data[:tall]

  puts data[:weight]

  puts data[:bmi]

end←1、この部分はこの書き方以外正解無いのか?

 

data = []

 

問1この部分は、この書き方のみ正解。何故なら、配列から取り出したハッシュを表示する為である。

問2 この部分は、person = {}の中で定義されている為、計算後の値が表示されるので計算式が表示される訳ではない。

bmi(tall.weight)は、{}で表記されているので同じように表記する。

 

def show_data(car)

  # 一覧から選択された車の全ての情報を表示する関数を完成させなさい

  puts car[:type]

  puts "1時間あたりの走行可能距離:#{car[:fuel_economy]}km/h"

  puts "乗車人数:#{car[:capacity]}"

 

  puts "これから走る距離(km)を入力して下さい。"

  input_distance = gets.to_f

 

  puts "これから乗る人数を入力して下さい。"

  input_capacity = gets.to_i

 

  # 目的地までの時間を計算する関数と乗車人数を計算する関数を呼び出して下さい

  car_distance(car, input_distance)

  car_capacity(car, input_capacity)

end

 

 

def car_distance(car, distance)

  # 目的地までの時間を計算する関数を完成させなさい

  elapsed_time = distance / car[:fuel_economy]

  puts "その目的地までは、#{elapsed_time.round(1)}時間かかります。"

end

 

def car_capacity(car, capacity)

  # 車に乗ることが出来る人数について、後何人乗ることが出来るのか、丁度乗ることが出来る人数なのか、もしくは何人定員オーバーなのかを出力する関数を完成させなさい

  capacity = car[:capacity] - capacity←1.このcar[:capacity]配列carから取り出している、また-capacitycar_capacity(car, input_capacity)を表示するであっているか

  if capacity == 0

    puts "車の定員丁度です。"

  elsif capacity > 0

    puts "後、車には#{capacity}人乗ることができます。"

  else

    puts "#{capacity.abs}人定員オーバーです。"

  end

end

1:合っている。- capacityinput_capacityは仮引数と引数の関係なので、input_capacityと記載しても良い、但しその場合- capacity- input_capacityと書き直す必要がある。

 

Ruby

def show_student_name(students)

  # 登録された生徒の名前を番号を振って表示しなさい

  i = 0

  students.each do |student|

    puts "#{i}: #{student[:name]}"

    i += 1

  end

  puts '見たい生徒の番号を入力してください'

  num = gets.to_i

 

この表記で、i0が代入され、代入された値を+1する。

そうすることで、生徒の名前を番号に振るところまで表示される。

エラーを直しても改善されない場合は、一度終了して、再度実行すると改善されるケースもある。

 

each doとeach withの違いは、配列番号から取り出せるかどうか。

配列名.each_with_index do |値, index|は定型文。

Rubyは上から順番に、表示させたい値、代入させたい値が表示されていく。

 

HTMLCSS

positionプロパティ

Static:配置指定なし。通常の位置に配置される。(初期値)

Relative:相対位置。本来その要素が配置される場所を基準に配置される。

Absolute:絶対位置。ウィンドウ、または親要素を基準に配置される。

Fixed:absoluteと同じく絶対位置。だが、スクロールしても位置が変わらない。(固定配置)

padding-top: が必要なのは、ヘッダーの下に潜ってしまうのを防ぐため。

よってヘッダーと同じ高さを指定してあげる必要がある。

ちなみにmarginとの違いは以下の通り

padding:小要素の位置を動かす

margin:対象の要素を動かす

 

Rails

findメソッド:

各モデルのidを検索キーとしてデータを取得するメソッド

id以外の条件で検索不可、取得したいデータのidの値が、110と具体的に分かっている場合に使用する。

 

find_byメソッド:

各モデルをid以外の条件で検索するメソッド(idでも検索可能)

複数の検索条件を指定可能

返ってくる結果は、最初にヒットした1件のみ

id及びid以外の条件が分かっている場合、その条件に該当する最初のデータを取得したい場合に使用する。

 

whereメソッド:

各モデルをid以外の条件で検索する場合

該当するデータ全てが返ってくる。

つまり、params[:id]の場合、findメソッドを使う。

 

・明日やること

模試の再受講と復習でわからない箇所を確実に潰しておく。

明後日再々試験を受けるために万全の状態にしておく。

 

・感想

Rubyが現状一番不安になっている。

Railsに関しては何とかなりそうな気がしてきた。

一番はしっかりと動くかどうかが気がかり。

明日は模試を一通り再受講して 明後日に挑もう!!