ྫ4XJGU
w ܕใΛॻ͔ͳͯ͘ܕΛਪͯ͠ίϯύΠϧͯ͘͠ΕΔ
w ͋͘·Ͱ੩తܕ͚ͳͷͰpC/VNCFSͷܕ*OU
func fib(number: Int) -> Int {
if number <= 1 {
return number
} else {
return fib(number - 1) + fib(number - 2)
}
}
var fibNumber = fib(8)
Slide 10
Slide 10 text
ܕਪΛ࣋ͭݴޠ
w 4DBMB
w )BTLFMM
w 0$BNM
w 4XJGU
w શͯ੩తܕ͚ͷݴޠ
Slide 11
Slide 11 text
ಈతܕ͚ݴޠͰ
w 1)1ಈతܕ͚ݴޠ
w ίϯύΠϧ࣌ʹܕ͕ܾ·Δඞཁͳ͍
w ܕਪΛॻ͘ඞཁͳΜͯͳ͍ͷͰ
Slide 12
Slide 12 text
w ಈతܕ͚ͷݴޠͰܕਪͷϝϦοτ
͋Δ
w ͱ͍͏͔ɺ͢ͰʹΈͳ͞Μ࣮ܕਪͷԸ
ܙΛҰ෦त͔͍ͬͯΔ
Slide 13
Slide 13 text
ಈతݴޠͰͷϝϦοτ
w ίϯύΠϧ࣌࠷దԽ
w ΤσΟλ*%&Ͱͷิ
w ࣄલͷΤϥʔݕ
Slide 14
Slide 14 text
ίϯύΠϧ࣌࠷దԽ
w ಈతݴޠͰɺ࣮ߦ࣌ʹͲͷܕ͕ೖͬͯ
ͳ࣮͘ߦͰ͖ΔΑ͏ʹઃܭ͞Ε͍ͯΔ
w ͦͷͨΊ࣮ߦ࣌ͷ੩తܕ͚ݴޠʹൺΔ
ͱΦʔόʔϔου͕େ͖͍
Slide 15
Slide 15 text
ྫ1)1ͷԋࢉࢠͷॲཧ
Slide 16
Slide 16 text
IUUQTHJUIVCDPNQIQQIQTSDCMPCNBTUFS;FOE[FOE@PQFSBUPSTD-
w ࣮ߦ࣌ʹͲͷܕͷΈ߹Θ͔ͤΛTXJUDIจͰذ
Slide 17
Slide 17 text
ܕਪΛ͑
w ྫ͑zBCzͷBͱCͷܕ͕ܕਪͰΘ͔Ε
ɺίϯύΠϧ࣌ʹͦΕઐ༻ͷߴͳॲཧ
ʹࠩ͠ସ͑Δ͜ͱ͕Ͱ͖Δͣ
w ֦ுϥΠϒϥϦͰΦϓςΟϚΠβॻ࣌͘ʹ
ཱͪͦ͏
Slide 18
Slide 18 text
+4ͰͷྫIUUQSGSOPSHdTIVESBGUTUJQEG
Slide 19
Slide 19 text
*%&Ͱͷϝιουͷิ
w *%& 1IQ4UPSNͱ͔
Ͱɺ͋ΔมͷΠϯελϯεϝιου
͕ิ͞ΕΔͷɺܕਪ͞Ε͍ͯΔ͔ΒʹଞͳΒͳ͍
Slide 20
Slide 20 text
Τϥʔݕɾ-JOU
w ܕਪͰܕͷໃ६͕ݟ͔ͭΕɺ࣮ߦલʹ
ΤϥʔΛग़͢͜ͱ͕Ͱ͖Δ
w *%&ΤσΟλͷΤϥʔݕɺ-JOUπʔϧ
ͳͲͰԠ༻Ͱ͖Δ
Slide 21
Slide 21 text
༻్·ͱΊ
w ิMJOUπʔϧͳͲɺ։ൃऀΛࢧԉ͢Δ੩
తղੳπʔϧͷ࣮ʹཱͯΒΕΔ
w ֦ுϥΠϒϥϦͰ͕ΜΕɺ࠷దԽ͞Ε
ͨPQDPEFΛు͘ࣄՄೳ
Slide 22
Slide 22 text
1)1Ͱͷػӡ
Slide 23
Slide 23 text
1)1Ͱͷػӡ
w 4DBMBS5ZQF)JOUT͕ಋೖ͞Εͨ
w ؔͷฦΓͷܕΛࢦఆ͕Մೳʹ
w ݫີͳܕνΣοΫͷಋೖ
w "45 நߏจ
ͷಋೖ
Slide 24
Slide 24 text
4DBMBS5ZQF)JOUT
w JOUqPBUTUSJOHCPPMͳͲͷεΧϥͷܕ͕5ZQF)JOUͰ
ࢦఆͰ͖Δ
w ࣗಈతʹΩϟετ͞ΕΔΏΔ͍λΠϓνΣοΫ
9
square(4.1); // => 16
Slide 25
Slide 25 text
ؔͷΓܕ
w ؔͷΓͷܕࢦఆͰ͖ΔΑ͏ʹͳͬ
ͨ
Slide 26
Slide 26 text
ݫ֨ͳܕࢦఆ
w એݴͨ͠ϑΝΠϧͰܕ͕ݫ֨ʹѻΘΕΔ
w ҉ͷΩϟετ͕ߦΘΕͳ͍Ϟʔυʹ
Slide 27
Slide 27 text
1)1Ͱͷܕͷѻ͍ͷมԽ
w ΓͷܕνΣοΫΛએݴͰ͖ΔΑ͏ʹͳͬͨ
w ݫີʹએݴͰ͖ΔΑ͏ʹͳͬͨ
w ϓϦϛςΟϒͳͷܕ͕ࢦఆͰ͖ΔΑ͏ʹͳͬ
ͨ
w ੩తղੳ͘͢͠ͳͬͨ
Slide 28
Slide 28 text
1)1ͷ"45
w ैདྷͰɺ"45ੜͤͣʹ;FOE&OHJOF
༻ͷ໋ྩΛίϯύΠϧ͍ͯͨ͠
w 1)1ͰɺίϯύΠϧ࣌ʹ"45Λੜ͢Δ
Α͏ʹͳͬͨ
Slide 29
Slide 29 text
"45 நߏจ
ͱ
w ύʔεͨ͠ίʔυͷநతͳπϦʔߏͷσʔλ
IUUQTpSFCFBSTUVEJPDPNCMPHIPXUPHFUSFBEZGPSQIQIUNM
for ($i = 0; $i < 4; $i++) {
...
}
Slide 30
Slide 30 text
ࣈ۟ղੳ
ߏจղੳίϯύΠϧ
࣮ߦ
w 1)1Ͱɺߏจղੳ͠ͳ͕Β7.༻ίʔυΛੜ
w CJTPOͷηϚϯςΟοΫΞΫγϣϯͰ݁
τʔΫϯͷϦετΛੜ
ύʔεͭͭ͠7.༻ͷ໋ྩΛੜ
෦7.Ͱ࣮ߦ
1)1Ͱͷ࣮ߦͷྲྀΕ
Slide 31
Slide 31 text
τʔΫϯͷϦετΛੜ
நߏจ "45
ͷੜ
෦7.༻ͷ໋ྩΛੜ
෦7.Ͱ࣮ߦ
ࣈ۟ղੳ
ߏจղੳ
ίϯύΠϧ
࣮ߦ
w 1)1Ͱɺߏจղੳ࣌ʹ"45Λੜ
w 7.༻ͷίʔυੜͦͷޙʹߦ͏Α͏ʹͳͬͨ
1)1Ͱͷ࣮ߦͷྲྀΕ
Slide 32
Slide 32 text
1)1"45֦ுϥΠϒϥϦ
w ैདྷίϯύΠϧ͕ऴΘΕ"45ࣺͯΒΕΔ
w 1)1͔ΒͰநߏจΛѻ͏͜ͱ͕Ͱ͖
ΔΑ͏ʹ͢Δ֦ுϥΠϒϥϦ
w நߏจΛऔΓग़ͯ͠੩తղੳͰ͖Δ
IUUQTHJUIVCDPNOJLJDQIQBTU
Slide 33
Slide 33 text
ྫ
Slide 34
Slide 34 text
ग़ྗ
w WBSͱ͍͏ίʔυͷߏจ͕औΕ͍ͯΔ
w ͜ΕͰ੩తղੳ͠์ͩʂ
AST_STMT_LIST
0: AST_ASSIGN
var: AST_VAR
name: "var"
expr: 42
Slide 35
Slide 35 text
ܕਪͷ֓ཁ
Slide 36
Slide 36 text
ܕਪثͷجຊతͳಈ͖
w ͱ͍͏දݱΛܕਪثʹ༩͑Δ߹
w ܕਪثɺநߏจͷܭࢉએݴΛਫ਼ࠪͯ͠ਪنଇ
ΛݩʹܕใΛܭࢉ͍ͯ͘͠
JOUFHFS
JOUFHFS JOUFHFS
Slide 37
Slide 37 text
ޡΓ͕͋Δ߹
w OFX0CKFDU
ͱ͍͏ίʔυΛਪثʹ͢߹
w ܕϨϕϧͰޡΓ͕͋Ε࣮ߦલʹΤϥʔΛग़͢
OFX
0CKFDU
&3303
0CKFDU JOUFHFS
OFX
0CKFDU
Slide 38
Slide 38 text
ਪͷϙΠϯτ
w &YQSFTTJPOͷߏจͷ͔ΒਪΛ࢝ΊΔ
w ਪنଇʹԠͯ͡ਪ͍ͯ͘͠
w Θ͔Βͳ͍߹ʹܕมΛՃ
w ੍ݶʹԠͯ͡ϢχϑΟέʔγϣϯΛߦ͏
w ܕมͷೖɾΤϥʔͷݕ
w ਪ͕Ͱ͖ͨ߹ʹܕڥʹө͍ͯ͘͠
Slide 39
Slide 39 text
͔Βਪ͢Δ
w ͋ΔܭࢉΛਪ͢Δ߹ʹɺԼ෦ͷϊʔυ͔Βਪ͍ͯ͘͠
w ߏจΛ࠶ؼతʹḷͬͯߦ͘͜ͱͰՄೳ
JOUFHFS JOUFHFS
JOUFHFS
JOUFHFS JOUFHFS
Slide 40
Slide 40 text
ਪنଇʹΑͬͯਪ͍ͯ͘͠
w ྫF
ͱF
ͷܕ͕JOUͰ͋Δ࣌ɺ F
F
ͷܕJOUͰ͋Δ
w ྫF
ͱF
ͷܕ͕BSSBZͰ͋Δ࣌ɺ F
F
ͷܕBSSBZͰ͋Δ
w ྫF
ͷܕ͕0CKFDUͱF
ͷܕ͕JOUͰ͋Δ࣌ɺλΠϓΤϥʔͰ͋Δ
w ߏจΛͨͲ͍ͬͯ࣌͘ʹਪنଇΛద༻
w نଇ۪ʹίʔυΛॻ͍͍ͯ͘
w ܕ͕Θ͔ͬͨΒܕڥʹө͍ͯ͘͠
Slide 41
Slide 41 text
ܕڥ
w ؔΫϥεͳͲͷܕใΛొ͢Δॴ
w ΈࠐΈؔͷܕใ༧Ίొ
w ίʔυΛղੳͯ͠ਪͰ͖ͨ݁ՌΛ֨ೲ
w ܕਪثͷ࣮ߦίϯςΩετΈ͍ͨͳͷ
Slide 42
Slide 42 text
ܕ͕Θ͔Βͳ͍߹
w Bͷܕ͕Θ͔Βͳ͍
w ܕมΛׂΓͯͯɺஅΛԆͤ͞Δ
B
JOUFHFS
Slide 43
Slide 43 text
ܕม
w ܕͱͯ͠ѻ͑ΔೖΕɻޙͰதʹ࣮ࡍͷܕΛೖͰ͖Δ
w ܕ͕Θ͔Βͳ͍߹ʹܕมΛׂΓͯΔ
JOU
TUSJOH
'PP
Slide 44
Slide 44 text
ׂΓͯΔྫ
w ྫ͑ؔͷԾҾฦΓʹܕ͕ࢦఆ͞
Ε͍ͯͳ͍߹
Slide 45
Slide 45 text
ܕมͷೖ
w ϢχϑΟέʔγϣϯΛ௨ͯ͡ೖ͢Δ
JOU
=
Slide 46
Slide 46 text
ϢχϑΟέʔγϣϯ ୯ҰԽ
w ܕਪதʹํͷೖΛߦ͏ͨΊͷΈ
w ࣦഊͨ͠߹ܕϨϕϧͰؒҧ͍͕͋ΔͱΈͳ
ͯ͠Τϥʔ
w ܕͷ੍ݶ͕͋ΔՕॴͰϢχϑΟέʔγϣϯΛߦ
͏
Slide 47
Slide 47 text
ϢχϑΟέʔγϣϯܕͷ੍
ݶ͕͔͔ΔՕॴͰ࣮ߦ͢Δ
Slide 48
Slide 48 text
ԾҾͷܕͱҾͷܕ
w OVNͷܕͱBҾͷܕಉ͡Ͱͳ͚ΕͳΒͳ͍
Slide 49
Slide 49 text
SFUVSOͷܕͱฦΓͷܕએݴ
w SFUVSOͷදݱͷܕͱฦΓͷܕએݴಉ͡Ͱͳ
͚ΕͳΒͳ͍
Slide 50
Slide 50 text
ྫ
w Կ͠ͳ͍ɻܕ͕͋ͬͯΔͷͰେৎ
function foobar(): int {
return 1;
}
JOUJOU
ޭ
Slide 51
Slide 51 text
ྫ
function foobar(): int {
return “hoge”;
}
JOUTUSJOH
Τϥʔ
w ܕ͕͋ͬͯͳ͍ͷͰΤϥʔΛग़͢
Slide 52
Slide 52 text
ྫ
w GPPCBSؔͷฦΓͷܕมBʹJOU͕ೖ͞ΕΔ
function foobar() {
return 1;
}
BJOU
BʹJOUΛೖ
ฦΓͷܕʹܕมBΛׂΓͯ
Slide 53
Slide 53 text
ྫ
w ͠ܕมʹผͷܕ͕͢Ͱʹೖ͍ͬͯΔ߹ʹ
Τϥʔ
function foobar(): int {
return $globalNum;
}
JOUC
ܕมCʹJOUΛ࣮
ܕมCΛׂΓͯ
Slide 54
Slide 54 text
ྫ
w ҾͷܕͱฦΓͷܕ͕ಉ͡Ͱ͋Δ͜ͱ͕ਪ
Ͱ͖Δ
function foobar($a) {
return $a;
}
ED
ܕมDΛܕมEʹׂΓͯΔ
ܕมDΛׂΓͯ
ฦΓͷܕʹܕมEΛׂΓͯ
Slide 55
Slide 55 text
ؔద༻ͰਪͰ͖Δྫ
w JODؔͷΓͷܕɺؔຊମΛݟ͚ͨͩͰΘ͔Βͳ͍
w ؔద༻ͰҾͷܕݟΔͱॳΊͯ໌͢Δ
w ؔద༻ͷࣜΛਪ͢Δͱ͖ʹɺҾͷܕͱJODؔͷத
Λਪ͢͜͠ͱͰJOD
ͷܕ͕Θ͔Δ
function inc($a) { return $a + 1; };
$n = inc(3);
Slide 56
Slide 56 text
ͱΓ͋͑ͣҎ্
w ಈతܕ͚ͳͷͰɺਪͰ͖Δͱ͜Ζ͚ͩ
෦తʹਪͯ͠ऴΘΓͰͳ͍
w ੩తܕ͚ͷݴޠͱҧͬͯશʹͯ͢
ܕ͚͠ͳͯ͘ྑ͍
w ϝιουิͳͲͷతͷͨΊʹᘳʹਪ
͠Α͏ͱ͢Ε͢Δ΄Ͳ͘͠ͳΔ
Slide 57
Slide 57 text
·ͱΊ
w 1)1Ͱ"45ͷಋೖͰ੩తղੳ͕͘͢͠
ͳͬͨ
w ಈతܕ͚ͰܕਪΛߦ͏ϝϦοτ͋Δ
w ࣮ߦલΤϥʔݕ
w ίϯύΠϧ࣌࠷దԽ
w ิࢧԉ
Slide 58
Slide 58 text
·ͱΊ
w ܕਪ"45ΛḷͬͯਪنଇΛݩʹਪ͍ͯ͘͠
w ؔϝιουͷܕܕڥʹొ͍ͯ͘͠
w ͦͷͰΘ͔Βͳ͍ܕɺܕมΛׂΓͯΔ
w ΤϥʔͷݕܕมͷೖϢχϑΟέʔγϣ
ϯΛ༻͍Δ
w ϢχϑΟέʔγϣϯܕͷ੍ݶ͕͋ΔՕॴͰద༻͢
Δ
Slide 59
Slide 59 text
Γ͍ͨ͜͠ͱ
w ΑΓৄࡉͳΞϧΰϦζϜ
w ଟ૬ܕ OVMMcJOUFHFS
Έ͍ͨͳܕͷѻ͍
w ಈతܕ͚ͷ߹ͷΞϧΰϦζϜͷௐ
w FWBM͕͋Δͱແ͠ͳ
w ίϯτϩʔϧϑϩʔΛղੳ͢Δ
w ͰෆՄೳ