11/14~11/20 学習時間
※この日記は人に見せるものではなく、1週間の学習時間の記録としてつけていくものである。
再度、プログラミング関係の勉強がしたくて、侍に入塾した。
週25時間の勉強時間の確保が難しく、振り返りのために再度、1週間に一度日記をつけていこうと思う。
目標学習時間:25時間
11/14~11/20 学習時間 → 24時間 目標未達成
原因
11/14 に友達と1日遊んだため
11/17 に遊びに行ってしまったため
学習目標:HTML完成+Javascript着手
結果:未達成
原因
XDを使った画像作成に手間取った
HTMLの構成考えに時間がかかった
CSSの作用が思ったようにいかなかった←これが一番
来週の目標:週25時間
学習目標:HTML完成+Javascript着手
今週学習した内容として
XDのリードグリッドを使って似た画像を作成する方法
CSSで斜め線を利用する方法
→ transform: skew(X軸 ,Y軸); 斜め
→overflow: hidden; 親要素に設定してはみ出た部分は見えなくする
遊びながら(悪戯的なものを作りながら)学んでいきたい
技術を詰め込んだ遊び心系と真面目系、2種類作って自身の力量を紹介していきたい→それに必要なのは、
WEBデザインの構造の理解
HTML、CSS、Javascriptの知識
本日は以上
PHPもやってみよう 9月2日
関数
関数とは
あるまとまった処理を行い、値を返すもの
Rubyでいうところのメソッド
- Rubyの場合
# 文字数を数える puts "PHP".length # =>3 # 代入した場合 a ="PHP" puts a.length # =>3
- PHPの場合
// 文字数を数える echo strlen("PHP"); //=>3 # 代入した場合 $a ="PHP"; echo strlen($a); # =>3
私から見た違い
Rubyは対象にメソッドをくっつける形
PHPは対象を関数の引数にする
関数の作り方 => function 関数名(){ 処理 }
- 引数なしの場合
function test(){ echo "Hello,world"; } test(); //=>Hello,world
↓ Rubyメソッド(引数なし)を作る場合
def test puts "Hello,world" end test #=>Hello,world
- 引数ありの場合
function test($test1,$test2){ echo $test1*$test2; } // ↓わかりやすくしてみた // function test($test1,$test2){ ↓ ↓ // echo $test1 * $test2; // } test(2,3); //=>6
↓ Rubyメソッド(引数あり)を作る場合
def test(test1,test2) puts test1*test2 end #↓わかりやすくしてみた # def test(test1,test2) # ↓ ↓ # puts test1 * test2 # end test(2,3)
return(戻り値)
関数によって返された値のことを「戻り値」という
function test($test1,$test2){ return $test1*$test2; } $get = test(2,3) echo $get //=>6
↓ Rubyの場合
def test(test1,test2) test1*test2 end a = test(2,3) puts a
私から見た違い
PHPもRubyも処理内容を上に記述、実際の処理は下
Rubyの場合は、戻り値がメソッド内の最後の部分(endの前)に記述されていれば、returnを書かなくても戻り値になるが、PHPはreturnが必要
Cherry本勉強中 9月1日
メソッド 定義
デフォルト値付き引数
メソッドを呼び出す際、引数の数は基本同じでないとエラーになる
<例>
def fruit_cake(fruit) if fruit == "いちご" "#{fruit}パフェ" else "チョコパフェ" end end puts fruit_cake #=>`fruit_cake': wrong number of arguments (given 0, expected 1) (ArgumentError)(引数少ない) puts fruit_cake("みかん") #=>チョコパフェ(引数一緒) puts fruit_cake("いちご") #=>いちごパフェ(引数一緒) puts fruit_cake("みかん","いちご") #=>`fruit_cake': wrong number of arguments (given 2, expected 1) (ArgumentError)(引数多い)
引数少ない場合のエラー解消方法の一つ => デフォルト値付き引数
def メソッド(引数1= デフォルト値1,引数2=デフォルト値2) 必要な処理 end
引数にデフォルト値を付けると、引数の数が少なくても、デフォルト値がそこを補填してくれる
def fruit_cake(fruit = "いちご") if fruit == "いちご" "#{fruit}パフェ" else "チョコパフェ" end end puts fruit_cake #=>いちごパフェ(引数がなかったからデフォルト値で補填されている) puts fruit_cake("みかん") #=>チョコパフェ puts fruit_cake("いちご") #=>いちごパフェ
- 引数のデフォルト値は使うとなったときに、必ず全ての引数に付ける必要はない
def number(a,b,c = 0,d = 0) "one=#{a},second=#{b},third=#{c},fourth=#{d}" end puts number(1,2) #=> one=1,second=2,third=0,fourth=0 puts number(1,2,3) #=> one=1,second=2,third=3,fourth=0 puts number(1,2,3,4) #=> one=1,second=2,third=3,fourth=4
- 引数はメソッドの戻り値にすることも可能
require "date" def argument(day=Date.today,day_message = message) "本日は#{day}。今日一日メッセージは#{day_message}" end def message "洗濯日和" end puts argument
Date.todayはrequire "date"をした状態でないとエラーが出るので注意
末尾が「?」のメソッド
例えば
valid? #=>バリデーションを通りますか?(通る=>true/通らない=>false) include? ("abc")#=>引数の文字を含んでいますか?(含んでいる=>true/含んでない=>false) nil? #=>nilですか?(nil =>true/nilじゃない=>false)
「?」で終わるメソッドは「〜〜ですか?」の質問メソッドで、その通りであるならtrue/その通りでないならfalseを返す
末尾が「!」のメソッド(注意が必要なメソッド)
使用する時は注意が必要なメソッド
例えば
a = "abc" puts a.upcase #=> ABC puts a #=>abc(ここに注目!) puts a.upcase! #=> ABC puts a #=> ABC(ここに注目!)
upcase!の場合はupcaseとは違い、元のデータまで大文字にしてしまった(こういう元のデータまで変えてしまうメソッドを破壊的メソッドという)
「!」の場合、破壊的メソッドだから「!」が付くわけではない。
あくまで末尾「!」メソッドは使用する時は注意が必要なメソッドなだけであり、使用する際は注意しよう。
参考 「プロを目指す人のためのRuby入門」
PHPもやってみよう 8月31日
繰り返し処理
for文
for ($i = 1;$i<= 100;$i++){ echo $i; } $i = 1; //初期値 $i<= 100; //ループの条件(この場合は100以下) $i++ //変数の更新 echo $i; //繰り返す処理
for ($i = 1;$i<= 100;$i++){ echo $i.<br>; } echo $i.<br>; //これをしないと数字が改行してくれない //例 1 2 3 4...
while文
s = 1 while s <= 100 do puts s s +=1 end
PHPの場合
$s = 1 while ($s <= 100){ echo $s; $s++; }
条件が2つあるときは、while文内にif文に入れてやることもある
break文
ループを強制的に中断する命令文
for ($i = 1;$i<= 100;$i++){ if ($i >5){ break; //$iが6になった時点で終了 } echo $i; } // 12345まで表示される
continue文
breakは完全にそのループを終わらせてしまうが、continueは条件があったものをスキップさせてそのままループを続ける
for ($i = 1;$i<= 100;$i++){ if ($i %5==0){ continue; //$iが5の倍数のみループを終了し、次のループへ(つまりスキップする) } echo $i; } //5の倍数の数字だけ表示されない
foreach文
Rubyのeach文に似たもの
Rubyの場合
cities= ["新宿","池袋","渋谷"] cities.each do |city| puts city end
PHPの場合
$cities = array("新宿","池袋","渋谷"); foreach($cities as $city){ echo $city; }
連想配列の場合
$cities = array( "新宿"=>"歌舞伎町", "池袋"=>"サンシャイン", "渋谷"=>"109" ); foreach($cities as $key =>$value){ echo $key.":".$value.""; } //$keyは"新宿","池袋","渋谷" //$valueは"歌舞伎町","サンシャイン","109"
Cherry本勉強中 8月31日
真偽値と条件分岐
&& ||
-Rubyは左から順に式を評価する
左から評価していって、式全体が真か偽かを判断する(判断できたところでストップ)
puts "①" puts 4 && 5 && 6 puts "②" puts 4 && nil && 6 puts "③" puts 4 && false && 6 puts "④" puts nil && 5 && 6 puts "⑤" puts nil || false puts "⑥" puts false || nil puts "⑦" puts nil || false || 4 || 5
① 6 ② ③ false ④ ⑤ false ⑥ ⑦ 4
わかったこと
&&は偽が出るまで式を評価し続け、||は真が出るまで式を評価し続ける
出ない場合は、最後に評価したものを表示する
コンソールには、falseは表示されるが、nilの場合は「nil」と表示されず、空白で表示される
&&と||の使い方
上でのことを利用した活用方法
# A、B、C の順に検索し、最初に見つかったグループ(nil又はfalse以外の値)を変数に格納する group =find_group("A") || find_group("B") || find_group("C") # 正常なユーザーであれば、メールを送信する user.valid? && send_email_to(user)
if文以外でも使用できることを改めて知りました。
優先順位が低いand/or/not
- 似たような働き
and => &&
or => ||
not => !
注意点
似たような働きをするが、and/or/notは&&/||/!よりも優先順位が低い
優先順位 高い ! && || not and or 優先順位 低い
注意点
rbファイルで確かめた結果、andもorも聞かない、cherry本に書いているように表示されませんね
t1 = true t2 = true f1 = false puts t1 || t2 && f1 # t1 || (t2 && f1) puts t1 or t2 and f1 # (t1 or t2) and f1 puts t1 || (t2 && f1) puts (t1 or t2) and f1 puts true and false puts true && false
true true true true true false
cherry本を見ると、&&だけだと優先順位の兼ね合いで括る場所が異なるため、andを使用することがあると書いてありますが、同様に&&と()を使用すれば同じ処理ができるということだったので、私はそっちでやっていこうと思います。
基本、and/or/notは制御フローで使用するとのことです。
unless文
if文の否定版「〜ではないなら」=>falseであれば表示する
elseにはtrueだった場合を記述する
elsifはunless文にはない
case文
case文は「case when else」を使用する
country = "italy" # if文 greeting = if country == "japan" "こんにちは" elsif country == "us" "Hello" elsif country == "italy" "ciao" end puts greeting # case文 greeting = case country #case 対象のオブジェクトや式 when "japan" #when 値1 "こんにちは" # 値1だった場合の処理 when "us" #when 値2 "Hello" # 値2だった場合の処理 when "italy" #when 値3 "ciao" # 値3だった場合の処理 else "???" end puts greeting
case文は条件(when)のところに複数条件をつけることが可能
country = "日本" greeting = case country when "japan" ,"日本" #when 値1-1,値1-2 "こんにちは" # 値1-1又は値1-2だった場合の処理 when "us" ,"アメリカ" "Hello" when "italy" ,"イタリア" "ciao" # 値3だった場合の処理 else "???" end puts greeting # 日本と表示される
?を使った条件分岐
式? trueの処理 : falseの処理
if文と比べると
#if文 n = 11 if n>10 puts "10より上" else puts "10より下" end # ?を使った条件分岐 puts n > 10 ? "10より上": "10より下"
参考 「プロを目指す人のためのRuby入門」
PHPもやってみよう 8月27日
配列について
- Rubyの場合
a = ["カレーライス","オムライス","ハヤシライス"] puts a[0] # カレーライスが表示される
- PHPの場合
$a = array("カレーライス","オムライス","ハヤシライス"); echo [0]; // カレーライスが表示される
arrayの意味はそのまま「配列」 Rubyの方が配列は簡単なんだなぁ...
配列の追加・上書き
- Rubyの場合
a = ["カレーライス","オムライス","ハヤシライス"] # 追加の場合 a << "カツカレー" puts a # 上書きの場合 a[0] = "カツカレー" puts a
# 追加の場合 カレーライス オムライス ハヤシライス カツカレー #上書きの場合 カツカレー オムライス ハヤシライス
- PHPの場合
$a = array("カレーライス","オムライス","ハヤシライス"); //追加の場合 $a[]="カツカレー"; echo $a[3]; // カツカレー //上書きの場合 $a[0] = "カツカレー"; echo $a[0]; // カツカレー
$a[]これで配列の末尾を表すらしい...
連想配列
私は今、Rubyのハッシュが連想配列ということを知りました。←
- Rubyの場合
#どちらも連想配列 b = {"fruit"=> "果物","juice"=> "飲み物"} puts b["fruit"] b = {fruit: "果物",juice: "飲み物"} puts b[:fruit]
果物 果物
- PHPの場合
$b = array( "fruit"=> "果物", "juice"=> "飲み物" ); echo $b["fruit"]; // 果物 と表示される
ハッシュもarrayでまとめてしまうんだなぁ...
progateで配列がひと段落したので、この記事もここまでにします
Cherry本勉強中 8月26日
フォーマットを指定して文字列作成
- sprintfメソッド
指定されたフォーマットの文字列を作成することができます
puts sprintf('%0.3f',1.5) puts sprintf('%0.4f',1.5) puts sprintf('%0.5f',1.5)
下記のように表示される
1.500 1.5000 1.50000
オブジェクトを複数渡すことも可能
puts sprintf('%0.3f+%0.4f',1.5,1.2)
下記のように表示される
1.500+1.2000
知らなかった文字列作成方法
cherry本の現在勉強しているページに載っている文字列作成が知らなかった方法なので、載せます
- 配列を連結して一つの文字列にする
[11,22,33].join # 112233 と表示される "hello"*5 # hellohellohellohellohello と表示される
数値
一言に数値と言っても、クラスが4つもあるので、その数値にあったメソッドを使用する必要がある
|ー整数(integer) 数値ー|ー実数、小数(float) |ー有理数(rational) |ー複素数(complex)
参考 「プロを目指す人のためのRuby入門」