ϓϩάϥϛϯάߨश2013.09.19 by @masawada, @alstamber
View Slide
Έͳ͞Μ͓Α͏͍͟͝·͢
ߨࢣ
masawada
alstamber
ΑΖ͓͘͠ئ͍͠·͢
ॾ࿈བྷ
• ձ͕12:00·Ͱ͔͑͠·ͤΜ• MMAͷΠϕϯτͰͳ͍ͨΊڭࣨͱΕͣ• ۭ͍ͯͨΒ13:00-15:00͕ͱΕ·͢• னٳܜΛ12:00-13:00Ͱ͞Έ·͢
• ৯ਆʹ͍͖·͢(ଟ)• ॏཁͳ෦12:00·ͰʹऴΘΒͤ·͢• 13:00͔ΒΛղ͖·͢• ͍ΘΏΔԋश• ్தୀࣨՄͰ͢
• શһ͍ͳ͘ͳͬͨΒΊ·͢• ॾҙ͍Ͱ͢Ͷ• ͜Μͳײ͡ͰਐΊ·͢• Θ͔Βͳ͍͜ͱ͋ͬͨΒਵ࣭࣌Λͱ͍ͯͩ͘͠͞
ߨशͷର
ޙظ͔Βϓϩάϥϛϯά௨͕࢝·Δ
ϓϩάϥϛϯάΑ͘Θ͔ΒΜ
͍ͬͯ͏ਓ͚
ܭࢉػ௨ͱͬͯͳ͍ͻͱ͚
ຊͷత
ޙظͷतۀʹ͑͏ΔࣝΛ͚ͭΔ
ຊͷ͓͠ͳ͕͖• ϓϩάϥϛϯάͱ• Cͷجૅ• ม• ੍ޚߏจ• ྻ/ߏମ• ϙΠϯλ• ؔ• ԋश
ϓϩάϥϛϯάͱ
Scratch
͜Εϓϩάϥϛϯά
ͻͱͱ͓Γͷཧղ
•ม/ྻ•੍ޚߏจ•ؔ
+ ݴޠಛ༗ͷػೳ
•ϙΠϯλ•ߏମ
ͦͦͳΜͰCΛษڧ͢Δͷʁ
Rubyͱ͔Pythonͱ͔φ͍ݴޠΓ͍ͨ
౦େͩͬͯΞϧΰͰRubyͬͯΔ͡ΌΜ
•×ίϯϐϡʔλΛಈ͔͢•○ίϯϐϡʔλΛཧղ͢Δ
ܭࢉػͷΈΛཧղ͢Δ
ਖ਼ͦ͜·Ͱਂ͘Βͳͯ͘Α͍
• ϓϩάϥϛϯάݴޠҰൠͷߟ͑ํ• Cݴޠಛ༗ͷॻ͖ํ• ͱ͔Λ͞ΒͬͱΓ·͢
Cݴޠͷجૅ
•ίʔυΛॻ͘•ίϯύΠϧ͢Δ•࣮ߦ͢ΔCݴޠͷجૅ
$ emacs hello.c---#include int main() {printf(“Hello, world!\n”);return 0;}
$ gcc hello.c -o hello$ ./helloHello, world!
#include int main() {printf(“Hello, world!\n”);return 0;}
࣮ͳͯ͘ྑ͍
stdio.h= st(andar)d I(n/)O(ut).h(eader)
ඪ४ೖग़ྗ
•printf•scanf
$ gcc hello.c -o helloɹ
$ [gcc] hello.c -o helloίϯύΠϧ༻ίϚϯυ
$ gcc [hello.c] -o helloίϯύΠϧ͢Διʔείʔυ
$ gcc hello.c [-o] hellooutfile Φϓγϣϯ
$ gcc hello.c -o [hello]ϑΝΠϧ໊
$ ./helloHello, World
Ҏ্ɺCͷجૅ
มͷ
• ใͷอଘํ๏(σʔλߏ)• ੍ޚ/ؔ
• ใͷอଘ(σʔλߏ)• มɺྻɺ(ϙΠϯλ)ɺߏମ• ੍ޚ/ؔ• ੍ޚߏจɺؔ
ม
x = 10y = 20
int x = 10;int y = 20;
ܭࢉػ
ON1OFF0
0100101001010100...
•int •float, double ුಈখ(খ)•char จࣈ
• ม: 1ͭͷσʔλΛอଘ͢Δͷ• ≒σʔλʹ໊લΛ͚͓ͯ࣋ͬͯ͘• ܕσʔλͷछྨΛද͢·ͱΊ
੍ޚߏจͷ
ϓϩάϥϜ্͔Βॱ൪ʹॲཧ
ॱ൪Λม͍͑ͨʂ
ൺֱԋࢉࢠ
<ͱ͔>ͱ͔==ͱ͔
ࢄֶ
a b a < b0 0 00 1 11 0 01 1 0
0ͳΒِ0Ҏ֎ͳΒਅ
੍ޚߏจ
•if - else - ݅Ͱذ•while - ಉ͡ॲཧΛ·ͱΊΔ•for - whileͷ্Ґ൛
if - else
͠ʙͳΒͰͳ͚Ε
aͱbͰେ͖͍ํΛग़ྗ͍ͨ͠
int a = 10;int b = 20;if ( a < b ) {printf(“%d\n”, b);} else {printf(“%d\n”, a);}
int a = 10;int b = 20;if ( a > b ) {printf(“%d\n”, b);} else {printf(“%d\n”, a);}
while
ʙͷؒ
10͔Β1·ͰΧϯτμϯ͍ͨ͠
int i = 10;printf(“%d\n”, i);i = i - 1;printf(“%d\n”, i);i = i - 1;...
10 9 8 7 6 5 4 3 2 1
i = i - 1;
int i = 10; // i: 10int tmp = i - 1; // i: 10i = tmp; // i: 9
int i = 10;while ( 0 < i ) {printf(“%d\n”, i);i = i - 1;}
for
whileͷ্Ґ൛
int i;for (i = 10; 0 < i; i = i - 1) {printf(“%d\n”, i);}
int i;for (i = 10; 0 < i; i = i - 1) {printf(“%d\n”, i);}10
int i;for (i = 10; 0 < i; i = i - 1) {printf(“%d\n”, i);}10 9
int i;for (i = 10; 0 < i; i = i - 1) {printf(“%d\n”, i);}10 9 8
int i;for (i = 10; 0 < i; i = i - 1) {printf(“%d\n”, i);}10 9 8 7
int i;for (i = 10; 0 < i; i = i - 1) {printf(“%d\n”, i);}10 9 8 7 6
int i;for (i = 10; 0 < i; i = i - 1) {printf(“%d\n”, i);}10 9 8 7 6 5
int i;for (i = 10; 0 < i; i = i - 1) {printf(“%d\n”, i);}10 9 8 7 6 5 4
int i;for (i = 10; 0 < i; i = i - 1) {printf(“%d\n”, i);}10 9 8 7 6 5 4 3
int i;for (i = 10; 0 < i; i = i - 1) {printf(“%d\n”, i);}10 9 8 7 6 5 4 3 2
int i;for (i = 10; 0 < i; i = i - 1) {printf(“%d\n”, i);}10 9 8 7 6 5 4 3 2 1
·ͱΊ• ॲཧͷॱ൪Λม͑Δͷʹ੍ޚจΛ͏• ݅Ͱذ͢Δ• ifͱ͔whileͱ͔͍Ζ͍Ζ͋Δ• forwhileͷ্Ґ൛Έ͍ͨͳײ͡
·ͱΊ• ଞʹdo-whileͱ͔switchͱ͔͋Δ• άάͬͯ(͋Μ·ΓΘͳ͍ؾ͕͢Δ)
ྻͷ
ม·ͱΊͨͭ
ม·ͱΊͯࣈॱʹͳΒͨͭ
a͞ΜͷମॏΛྸॱʹه͍ͨ͠
int a0 = 3;...int a6 = 22;int a7 = 24;int a8 = 27;
໊લ͚Δͷ͕ͱͯΊΜͲ͍͘͞
int a[100];a[0] = 3;...a[6] = 22;a[7] = 24;a[8] = 27;
ศརʂʂʂ
int a[100];ܕ ྻ໊[ ֬อ͢Δ ];a[0] = 3;ྻ໊[ ఴࣈ ] = ;
จࣈ char
จࣈྻ char[]
char name[8] = “haru067”;
ཉ͍͠จࣈ+1Ͱ֬อ
char name[8] = “haru067\0”;
• ྻΛ͏ͱมΛ·ͱΊΒΕΔ• จࣈྻจࣈܕ(char)ͷྻ·ͱΊ
ߏମͷ
ߏମදͷΑ͏ͳͷ
ͪΐͬͱ͚ͩྻʹࣅͯΔ
໊લ ྸ ମॏҰ 19 165 59ೋ 20 172 64ࡾ 21 183 72࢛ 16 159 53
struct brother {int age;double height;double weight;}; // ηϛίϩϯΘ͢Εͣʹ
struct brother ichiro;ichiro.age = 19;ichiro.height = 165;ichiro.weight = 59;printf(“%d\n”, ichiro.age);// 19
brother ichiro;ichiro.age = 19;ichiro.height = 165;ichiro.weight = 59;printf(“%d\n”, ichiro.age);// 19
͍͍ͪͪstructॻ͘ͷΊΜͲ͏
ܕͷΑ͏ʹѻ͍͍ͨ
struct brother {char name[20];int age;double height;double weight;};
typedef struct {char name[20];int age;double height;double weight;} brother;
·ͱΊ• ߏମؔ࿈͢ΔσʔλΛ·ͱΊΔ• දΈ͍ͨͳײ͡• ޙظͷߨٛͰׂͱॏཁͬΆ͍
ؔͷ
ؔ
f(x) = x * x
͍͍ͩͨ͋ͬͯΔ
int sq (int num) {return num * num;}int main(){int a = 3;printf(“%d\n”, sq(a));return 0;}
Math:f(x) = x * xC:int sq (int num) {return num * num;}
int sq (int num) {return num * num;}ܕ ໊ؔ ( ܕ Ҿ ) {ॲཧؔͷܕʹ߹ͬͨฦΓ}
int sq (int num) {return num * num;}ܕ ໊ؔ ( ܕ Ҿ, ܕ Ҿ ) {ॲཧؔͷܕʹ߹ͬͨฦΓ}
f(x) = x * xb = 3f(b) = 9
ҾपΓͰΉ͜ͱͳ͍
ฦΓ
ϙΠϯλ
ϙΠϯλ”ࢀর”
• มͷ”ॴ(ΞυϨε)”ΛೖΕΔม• ม: ࣗൢػͷ্ͷϘλϯ• ϙΠϯλม: ࣗൢػͷԼͷϘλϯ্ͷϘλϯͷ”ॴ”Λ֮͑Δͭ·Γɺ”த”Λ֮͑ΔͷͰͳ͍ϙΠϯλ
// ϙΠϯλͷએݴ// “ॴ”ΛೖΕΔมint *b_button;
// ϙΠϯλͷએݴ// “ॴ”ΛೖΕΔมint *b_button;b_button = &button;// &มͷ”ॴ”Λࣔ͢
// ϙΠϯλͷએݴ// “ॴ”ΛೖΕΔมint *b_button;b_button = &button;button = 1;
// ϙΠϯλͷએݴ// “ॴ”ΛೖΕΔมint *b_button;b_button = &button;button = 1;printf(“%d\n”, *b_button); // 1
ϙΠϯλࢦఆ͞ΕͨॴͷมͷΛݟʹߦ͘
void sq (int *num1, int *num2) {num1 = &a;num2 = &b;*num1 = *num1 * *num1;*num2 = *num2 * *num2;}int main(){int a = 3, b = 6;sq(&a, &b);printf(“%d, %d\”, a, b);
·ͱΊ• ಉ͡ॲཧΛผͷॴͰߦ͍ͬͯΔͱ͖ؔʹ·ͱΊΔͱݟ௨͕͠Α͘ͳΔ• ฦΓ͕ෳͩͬͨΓɺྻͷ߹ϙΠϯλΛ͏
·ͱΊ• ϙΠϯλࢀর