Upgrade to Pro — share decks privately, control downloads, hide ads and more …

C Lecture 2013.09.19

masawada
September 19, 2013

C Lecture 2013.09.19

masawada

September 19, 2013
Tweet

More Decks by masawada

Other Decks in Technology

Transcript

  1. ϓϩάϥϛϯάߨश
    2013.09.19 by @masawada, @alstamber

    View Slide

  2. Έͳ͞Μ
    ͓͸Α͏͍͟͝·͢

    View Slide

  3. ߨࢣ

    View Slide

  4. masawada

    View Slide

  5. alstamber

    View Slide

  6. ΑΖ͓͘͠ئ͍͠·͢

    View Slide

  7. View Slide

  8. ॾ࿈བྷ

    View Slide

  9. • ձ৔͕12:00·Ͱ͔͠࢖͑·ͤΜ
    • MMAͷΠϕϯτͰ͸ͳ͍ͨΊڭࣨͱΕͣ
    • ۭ͍ͯͨΒ13:00-15:00͕ͱΕ·͢
    • னٳܜΛ12:00-13:00Ͱ͸͞Έ·͢

    View Slide

  10. • ๻͸৯ਆʹ͍͖·͢(ଟ෼)
    • ॏཁͳ෦෼͸12:00·ͰʹऴΘΒͤ·͢
    • 13:00͔Β͸໰୊Λղ͖·͢
    • ͍ΘΏΔԋश
    • ్தୀࣨՄͰ͢

    View Slide

  11. • શһ͍ͳ͘ͳͬͨΒ΍Ί·͢
    • ॾ஫ҙ௕͍Ͱ͢Ͷ
    • ͜Μͳײ͡ͰਐΊ·͢
    • Θ͔Βͳ͍͜ͱ͋ͬͨΒਵ࣭࣌໰Λ
    ͱ͹͍ͯͩ͘͠͞

    View Slide

  12. ߨशͷର৅

    View Slide

  13. ޙظ͔Β
    ϓϩάϥϛϯά௨࿦
    ͕࢝·Δ

    View Slide

  14. ϓϩάϥϛϯά
    Α͘Θ͔ΒΜ

    View Slide

  15. ͍ͬͯ͏ਓ޲͚

    View Slide

  16. ܭࢉػ௨࿦
    ͱͬͯͳ͍ͻͱ޲͚

    View Slide

  17. ຊ೔ͷ໨త

    View Slide

  18. ޙظͷतۀʹ
    ଱͑͏Δ஌ࣝΛ͚ͭΔ

    View Slide

  19. View Slide

  20. ຊ೔ͷ͓͠ͳ͕͖
    • ϓϩάϥϛϯάͱ͸
    • Cͷجૅ
    • ม਺
    • ੍ޚߏจ
    • ഑ྻ/ߏ଄ମ
    • ϙΠϯλ
    • ؔ਺
    • ԋश

    View Slide

  21. ϓϩάϥϛϯάͱ͸

    View Slide

  22. Scratch

    View Slide

  23. ͜Ε΋
    ϓϩάϥϛϯά

    View Slide

  24. ͻͱͱ͓Γͷཧղ

    View Slide

  25. •ม਺/഑ྻ
    •੍ޚߏจ
    •ؔ਺

    View Slide

  26. + ݴޠಛ༗ͷػೳ

    View Slide

  27. •ϙΠϯλ
    •ߏ଄ମ

    View Slide

  28. ͦ΋ͦ΋ͳΜͰ
    CΛษڧ͢Δͷʁ

    View Slide

  29. Rubyͱ͔Pythonͱ͔
    φ΢͍ݴޠ΍Γ͍ͨ

    View Slide

  30. ౦େͩͬͯΞϧΰͰ
    Ruby࢖ͬͯΔ͡ΌΜ

    View Slide

  31. •×ίϯϐϡʔλΛಈ͔͢
    •○ίϯϐϡʔλΛཧղ͢Δ

    View Slide

  32. View Slide

  33. ܭࢉػͷ࢓૊ΈΛ
    ཧղ͢Δ

    View Slide

  34. ਖ਼௚ͦ͜·Ͱ
    ਂ͘΍Βͳͯ͘Α͍

    View Slide

  35. • ϓϩάϥϛϯάݴޠҰൠͷߟ͑ํ
    • Cݴޠಛ༗ͷॻ͖ํ
    • ͱ͔Λ͞Βͬͱ΍Γ·͢

    View Slide

  36. Cݴޠͷجૅ

    View Slide

  37. •ίʔυΛॻ͘
    •ίϯύΠϧ͢Δ
    •࣮ߦ͢Δ
    Cݴޠͷجૅ

    View Slide

  38. $ emacs hello.c
    ---
    #include
    int main() {
    printf(“Hello, world!\n”);
    return 0;
    }

    View Slide

  39. $ gcc hello.c -o hello
    $ ./hello
    Hello, world!

    View Slide

  40. #include
    int main() {
    printf(“Hello, world!\n”);
    return 0;
    }

    View Slide

  41. ࣮͸ͳͯ͘΋ྑ͍

    View Slide

  42. stdio.h
    = st(andar)d I(n/)O(ut).h(eader)

    View Slide

  43. ඪ४ೖग़ྗ

    View Slide

  44. •printf
    •scanf

    View Slide

  45. #include
    int main() {
    printf(“Hello, world!\n”);
    return 0;
    }

    View Slide

  46. #include
    int main() {
    printf(“Hello, world!\n”);
    return 0;
    }

    View Slide

  47. #include
    int main() {
    printf(“Hello, world!\n”);
    return 0;
    }

    View Slide

  48. $ gcc hello.c -o hello
    ɹ

    View Slide

  49. $ [gcc] hello.c -o hello
    ίϯύΠϧ༻ίϚϯυ

    View Slide

  50. $ gcc [hello.c] -o hello
    ίϯύΠϧ͢Διʔείʔυ

    View Slide

  51. $ gcc hello.c [-o] hello
    outfile Φϓγϣϯ

    View Slide

  52. $ gcc hello.c -o [hello]
    ϑΝΠϧ໊

    View Slide

  53. $ ./hello
    Hello, World

    View Slide

  54. Ҏ্ɺCͷجૅ

    View Slide

  55. ม਺ͷ࿩

    View Slide

  56. ͻͱͱ͓Γͷཧղ

    View Slide

  57. •ม਺/഑ྻ
    •੍ޚߏจ
    •ؔ਺

    View Slide

  58. + ݴޠಛ༗ͷػೳ

    View Slide

  59. •ϙΠϯλ
    •ߏ଄ମ

    View Slide

  60. • ৘ใͷอଘํ๏(σʔλߏ଄)
    • ੍ޚ/ؔ਺

    View Slide

  61. • ৘ใͷอଘ(σʔλߏ଄)
    • ม਺ɺ഑ྻɺ(ϙΠϯλ)ɺߏ଄ମ
    • ੍ޚ/ؔ਺
    • ੍ޚߏจɺؔ਺

    View Slide

  62. ม਺

    View Slide

  63. x = 10
    y = 20

    View Slide

  64. int x = 10;
    int y = 20;

    View Slide

  65. ܭࢉػ

    View Slide

  66. ON
    1
    OFF
    0

    View Slide

  67. 0100101001010100...

    View Slide

  68. View Slide

  69. •int ੔਺
    •float, double ුಈখ਺఺(খ਺)
    •char จࣈ

    View Slide

  70. • ม਺: 1ͭͷσʔλΛอଘ͢Δ΋ͷ
    • ≒σʔλʹ໊લΛ෇͚͓ͯ࣋ͬͯ͘
    • ܕ͸σʔλͷछྨΛද͢
    ·ͱΊ

    View Slide

  71. ੍ޚߏจͷ࿩

    View Slide

  72. ϓϩάϥϜ͸্͔Β
    ॱ൪ʹॲཧ

    View Slide

  73. ॱ൪Λม͍͑ͨʂ

    View Slide

  74. ൺֱԋࢉࢠ

    View Slide

  75. <ͱ͔>ͱ͔==ͱ͔

    View Slide

  76. ཭ࢄ਺ֶ

    View Slide

  77. a b a < b
    0 0 0
    0 1 1
    1 0 0
    1 1 0

    View Slide

  78. 0ͳΒِ
    0Ҏ֎ͳΒਅ

    View Slide

  79. ੍ޚߏจ

    View Slide

  80. •if - else - ৚݅Ͱ෼ذ
    •while - ಉ͡ॲཧΛ·ͱΊΔ
    •for - whileͷ্Ґ൛

    View Slide

  81. if - else

    View Slide

  82. ΋͠ʙͳΒ
    Ͱͳ͚Ε͹

    View Slide

  83. aͱbͰେ͖͍ํΛ
    ग़ྗ͍ͨ͠

    View Slide

  84. int a = 10;
    int b = 20;
    if ( a < b ) {
    printf(“%d\n”, b);
    } else {
    printf(“%d\n”, a);
    }

    View Slide

  85. int a = 10;
    int b = 20;
    if ( a > b ) {
    printf(“%d\n”, b);
    } else {
    printf(“%d\n”, a);
    }

    View Slide

  86. while

    View Slide

  87. ʙͷؒ

    View Slide

  88. 10͔Β1·Ͱ
    Χ΢ϯτμ΢ϯ͍ͨ͠

    View Slide

  89. int i = 10;
    printf(“%d\n”, i);
    i = i - 1;
    printf(“%d\n”, i);
    i = i - 1;
    ...

    View Slide

  90. 10 9 8 7 6 5 4 3 2 1

    View Slide

  91. i = i - 1;

    View Slide

  92. int i = 10; // i: 10
    int tmp = i - 1; // i: 10
    i = tmp; // i: 9

    View Slide

  93. int i = 10;
    printf(“%d\n”, i);
    i = i - 1;
    printf(“%d\n”, i);
    i = i - 1;
    ...

    View Slide

  94. int i = 10;
    while ( 0 < i ) {
    printf(“%d\n”, i);
    i = i - 1;
    }

    View Slide

  95. for

    View Slide

  96. whileͷ্Ґ൛

    View Slide

  97. int i = 10;
    while ( 0 < i ) {
    printf(“%d\n”, i);
    i = i - 1;
    }

    View Slide

  98. int i;
    for (i = 10; 0 < i; i = i - 1) {
    printf(“%d\n”, i);
    }

    View Slide

  99. int i;
    for (i = 10; 0 < i; i = i - 1) {
    printf(“%d\n”, i);
    }

    View Slide

  100. int i;
    for (i = 10; 0 < i; i = i - 1) {
    printf(“%d\n”, i);
    }

    View Slide

  101. int i;
    for (i = 10; 0 < i; i = i - 1) {
    printf(“%d\n”, i);
    }
    10

    View Slide

  102. int i;
    for (i = 10; 0 < i; i = i - 1) {
    printf(“%d\n”, i);
    }
    10

    View Slide

  103. int i;
    for (i = 10; 0 < i; i = i - 1) {
    printf(“%d\n”, i);
    }
    10

    View Slide

  104. int i;
    for (i = 10; 0 < i; i = i - 1) {
    printf(“%d\n”, i);
    }
    10 9

    View Slide

  105. int i;
    for (i = 10; 0 < i; i = i - 1) {
    printf(“%d\n”, i);
    }
    10 9

    View Slide

  106. int i;
    for (i = 10; 0 < i; i = i - 1) {
    printf(“%d\n”, i);
    }
    10 9

    View Slide

  107. int i;
    for (i = 10; 0 < i; i = i - 1) {
    printf(“%d\n”, i);
    }
    10 9 8

    View Slide

  108. int i;
    for (i = 10; 0 < i; i = i - 1) {
    printf(“%d\n”, i);
    }
    10 9 8

    View Slide

  109. int i;
    for (i = 10; 0 < i; i = i - 1) {
    printf(“%d\n”, i);
    }
    10 9 8

    View Slide

  110. int i;
    for (i = 10; 0 < i; i = i - 1) {
    printf(“%d\n”, i);
    }
    10 9 8 7

    View Slide

  111. int i;
    for (i = 10; 0 < i; i = i - 1) {
    printf(“%d\n”, i);
    }
    10 9 8 7

    View Slide

  112. int i;
    for (i = 10; 0 < i; i = i - 1) {
    printf(“%d\n”, i);
    }
    10 9 8 7

    View Slide

  113. int i;
    for (i = 10; 0 < i; i = i - 1) {
    printf(“%d\n”, i);
    }
    10 9 8 7 6

    View Slide

  114. int i;
    for (i = 10; 0 < i; i = i - 1) {
    printf(“%d\n”, i);
    }
    10 9 8 7 6

    View Slide

  115. int i;
    for (i = 10; 0 < i; i = i - 1) {
    printf(“%d\n”, i);
    }
    10 9 8 7 6

    View Slide

  116. int i;
    for (i = 10; 0 < i; i = i - 1) {
    printf(“%d\n”, i);
    }
    10 9 8 7 6 5

    View Slide

  117. int i;
    for (i = 10; 0 < i; i = i - 1) {
    printf(“%d\n”, i);
    }
    10 9 8 7 6 5

    View Slide

  118. int i;
    for (i = 10; 0 < i; i = i - 1) {
    printf(“%d\n”, i);
    }
    10 9 8 7 6 5

    View Slide

  119. int i;
    for (i = 10; 0 < i; i = i - 1) {
    printf(“%d\n”, i);
    }
    10 9 8 7 6 5 4

    View Slide

  120. int i;
    for (i = 10; 0 < i; i = i - 1) {
    printf(“%d\n”, i);
    }
    10 9 8 7 6 5 4

    View Slide

  121. int i;
    for (i = 10; 0 < i; i = i - 1) {
    printf(“%d\n”, i);
    }
    10 9 8 7 6 5 4

    View Slide

  122. int i;
    for (i = 10; 0 < i; i = i - 1) {
    printf(“%d\n”, i);
    }
    10 9 8 7 6 5 4 3

    View Slide

  123. int i;
    for (i = 10; 0 < i; i = i - 1) {
    printf(“%d\n”, i);
    }
    10 9 8 7 6 5 4 3

    View Slide

  124. int i;
    for (i = 10; 0 < i; i = i - 1) {
    printf(“%d\n”, i);
    }
    10 9 8 7 6 5 4 3

    View Slide

  125. int i;
    for (i = 10; 0 < i; i = i - 1) {
    printf(“%d\n”, i);
    }
    10 9 8 7 6 5 4 3 2

    View Slide

  126. int i;
    for (i = 10; 0 < i; i = i - 1) {
    printf(“%d\n”, i);
    }
    10 9 8 7 6 5 4 3 2

    View Slide

  127. int i;
    for (i = 10; 0 < i; i = i - 1) {
    printf(“%d\n”, i);
    }
    10 9 8 7 6 5 4 3 2

    View Slide

  128. int i;
    for (i = 10; 0 < i; i = i - 1) {
    printf(“%d\n”, i);
    }
    10 9 8 7 6 5 4 3 2 1

    View Slide

  129. int i;
    for (i = 10; 0 < i; i = i - 1) {
    printf(“%d\n”, i);
    }
    10 9 8 7 6 5 4 3 2 1

    View Slide

  130. ·ͱΊ
    • ॲཧͷॱ൪Λม͑Δͷʹ੍ޚจΛ࢖͏
    • ৚݅Ͱ෼ذ͢Δ
    • ifͱ͔whileͱ͔͍Ζ͍Ζ͋Δ
    • for͸whileͷ্Ґ൛Έ͍ͨͳײ͡

    View Slide

  131. ·ͱΊ
    • ଞʹ΋do-whileͱ͔switchͱ͔͋Δ
    • άάͬͯ(͋Μ·Γ࢖Θͳ͍ؾ͕͢Δ)

    View Slide

  132. View Slide

  133. ഑ྻͷ࿩

    View Slide

  134. ม਺·ͱΊͨ΍ͭ

    View Slide

  135. ม਺·ͱΊͯ
    ਺ࣈॱʹͳΒ΂ͨ΍ͭ

    View Slide

  136. a͞ΜͷମॏΛ
    ೥ྸॱʹه࿥͍ͨ͠

    View Slide

  137. int a0 = 3;
    ...
    int a6 = 22;
    int a7 = 24;
    int a8 = 27;

    View Slide

  138. ໊લ෇͚Δͷ͕
    ͱͯ΋ΊΜͲ͍͘͞

    View Slide

  139. int a[100];
    a[0] = 3;
    ...
    a[6] = 22;
    a[7] = 24;
    a[8] = 27;

    View Slide

  140. ศརʂʂʂ

    View Slide

  141. int a[100];
    ܕ ഑ྻ໊[ ֬อ͢Δ਺ ];
    a[0] = 3;
    ഑ྻ໊[ ఴࣈ ] = ஋;

    View Slide

  142. จࣈ char

    View Slide

  143. จࣈྻ char[]

    View Slide

  144. char name[8] = “haru067”;

    View Slide

  145. ཉ͍͠จࣈ਺+1
    Ͱ֬อ

    View Slide

  146. char name[8] = “haru067”;

    View Slide

  147. char name[8] = “haru067\0”;

    View Slide

  148. • ഑ྻΛ࢖͏ͱม਺Λ·ͱΊΒΕΔ
    • จࣈྻ͸จࣈܕ(char)ͷ഑ྻ
    ·ͱΊ

    View Slide

  149. ߏ଄ମͷ࿩

    View Slide

  150. ߏ଄ମ͸
    දͷΑ͏ͳ΋ͷ

    View Slide

  151. ͪΐͬͱ͚ͩ
    ഑ྻʹࣅͯΔ

    View Slide

  152. ໊લ ೥ྸ ਎௕ ମॏ
    Ұ࿠ 19 165 59
    ೋ࿠ 20 172 64
    ࡾ࿠ 21 183 72
    ࢛࿠ 16 159 53

    View Slide

  153. struct brother {
    int age;
    double height;
    double weight;
    }; // ηϛίϩϯΘ͢Εͣʹ

    View Slide

  154. struct brother ichiro;
    ichiro.age = 19;
    ichiro.height = 165;
    ichiro.weight = 59;
    printf(“%d\n”, ichiro.age);
    // 19

    View Slide

  155. struct brother ichiro;
    ichiro.age = 19;
    ichiro.height = 165;
    ichiro.weight = 59;
    printf(“%d\n”, ichiro.age);
    // 19

    View Slide

  156. brother ichiro;
    ichiro.age = 19;
    ichiro.height = 165;
    ichiro.weight = 59;
    printf(“%d\n”, ichiro.age);
    // 19

    View Slide

  157. ͍͍ͪͪstructॻ͘ͷ
    ΊΜͲ͏

    View Slide

  158. ܕͷΑ͏ʹѻ͍͍ͨ

    View Slide

  159. struct brother {
    char name[20];
    int age;
    double height;
    double weight;
    };

    View Slide

  160. typedef struct {
    char name[20];
    int age;
    double height;
    double weight;
    } brother;

    View Slide

  161. ·ͱΊ
    • ߏ଄ମ͸ؔ࿈͢ΔσʔλΛ·ͱΊΔ
    • දΈ͍ͨͳײ͡
    • ޙظͷߨٛͰׂͱॏཁͬΆ͍

    View Slide

  162. ؔ਺ͷ࿩

    View Slide

  163. View Slide

  164. ؔ਺

    View Slide

  165. f(x) = x * x

    View Slide

  166. ͍͍ͩͨ͋ͬͯΔ

    View Slide

  167. int sq (int num) {
    return num * num;
    }
    int main(){
    int a = 3;
    printf(“%d\n”, sq(a));
    return 0;
    }

    View Slide

  168. Math:
    f(x) = x * x
    C:
    int sq (int num) {
    return num * num;
    }

    View Slide

  169. Math:
    f(x) = x * x
    C:
    int sq (int num) {
    return num * num;
    }

    View Slide

  170. Math:
    f(x) = x * x
    C:
    int sq (int num) {
    return num * num;
    }

    View Slide

  171. Math:
    f(x) = x * x
    C:
    int sq (int num) {
    return num * num;
    }

    View Slide

  172. Math:
    f(x) = x * x
    C:
    int sq (int num) {
    return num * num;
    }

    View Slide

  173. int sq (int num) {
    return num * num;
    }
    ܕ ؔ਺໊ ( ܕ Ҿ਺ ) {
    ॲཧ
    ؔ਺ͷܕʹ߹ͬͨฦΓ஋
    }

    View Slide

  174. int sq (int num) {
    return num * num;
    }
    ܕ ؔ਺໊ ( ܕ Ҿ਺, ܕ Ҿ਺ ) {
    ॲཧ
    ؔ਺ͷܕʹ߹ͬͨฦΓ஋
    }

    View Slide

  175. int sq (int num) {
    return num * num;
    }
    int main(){
    int a = 3;
    printf(“%d\n”, sq(a));
    return 0;
    }

    View Slide

  176. f(x) = x * x
    b = 3
    f(b) = 9

    View Slide

  177. Ҿ਺पΓͰ
    ೰Ή͜ͱ͸ͳ͍

    View Slide

  178. ฦΓ஋

    View Slide

  179. ϙΠϯλ

    View Slide

  180. View Slide

  181. ϙΠϯλ͸”ࢀর”

    View Slide

  182. • ม਺ͷ”৔ॴ(ΞυϨε)”ΛೖΕΔม਺
    • ม਺: ࣗൢػͷ্ͷϘλϯ
    • ϙΠϯλม਺: ࣗൢػͷԼͷϘλϯ
    ্ͷϘλϯͷ”৔ॴ”Λ֮͑Δ
    ͭ·Γɺ”த਎”Λ֮͑ΔͷͰ͸ͳ͍
    ϙΠϯλ

    View Slide

  183. // ϙΠϯλͷએݴ
    // “৔ॴ”ΛೖΕΔม਺
    int *b_button;

    View Slide

  184. // ϙΠϯλͷએݴ
    // “৔ॴ”ΛೖΕΔม਺
    int *b_button;
    b_button = &button;
    // &͸ม਺ͷ”৔ॴ”Λࣔ͢

    View Slide

  185. // ϙΠϯλͷએݴ
    // “৔ॴ”ΛೖΕΔม਺
    int *b_button;
    b_button = &button;
    button = 1;

    View Slide

  186. // ϙΠϯλͷએݴ
    // “৔ॴ”ΛೖΕΔม਺
    int *b_button;
    b_button = &button;
    button = 1;
    printf(“%d\n”, *b_button); // 1

    View Slide

  187. ϙΠϯλ͸”ࢀর”

    View Slide

  188. ϙΠϯλ͸ࢦఆ͞Εͨ
    ৔ॴͷม਺ͷ஋Λݟʹߦ͘

    View Slide

  189. 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);

    View Slide

  190. ·ͱΊ
    • ಉ͡ॲཧΛผͷ৔ॴͰߦ͍ͬͯΔͱ͖
    ؔ਺ʹ·ͱΊΔͱݟ௨͕͠Α͘ͳΔ
    • ฦΓ஋͕ෳ਺ͩͬͨΓɺ഑ྻͷ৔߹͸
    ϙΠϯλΛ࢖͏

    View Slide

  191. ·ͱΊ
    • ϙΠϯλ͸ࢀর

    View Slide